*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;background:#fff7f8;color:#3b3034}button,input,textarea,select{font:inherit}input,textarea,select{font-size:16px}button{border:0;cursor:pointer}body{padding-bottom:env(safe-area-inset-bottom)}.hidden{display:none!important}.main-view{min-height:100vh;padding-bottom:84px}.topbar{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:18px 18px 14px;background:rgba(255,247,248,.94);backdrop-filter:blur(14px)}.topbar h2{margin:3px 0 0;font-size:24px}.eyebrow{font-size:10px;letter-spacing:2px;color:#b28b95}.top-actions{display:flex;gap:8px}.icon-btn{width:40px;height:40px;border-radius:50%;background:#fff;box-shadow:0 5px 18px #e8d8dc;color:#c98091;font-size:19px}.page{display:none;padding:4px 18px 24px;max-width:720px;margin:auto}.page.active{display:block}.hero-card{position:relative;overflow:hidden;padding:28px;border-radius:28px;background:radial-gradient(circle at 15% 20%,rgba(255,255,255,.85),transparent 28%),radial-gradient(circle at 90% 80%,rgba(244,190,187,.35),transparent 30%),linear-gradient(145deg,#f8dedd,#f7e9e4);text-align:center;box-shadow:0 16px 40px rgba(188,117,135,.13)}.hero-card p{margin:0;color:#8f6972}.hero-card strong{font-family:Georgia,serif;font-size:55px;line-height:1.1;font-weight:500;color:#a95d70}.hero-card span{font-size:17px}.hero-date{margin-top:9px;font-size:12px;color:#96727a}.hero-sparkle{position:absolute;right:20px;top:14px;color:#c98294}.section-head{display:flex;justify-content:space-between;align-items:end;margin:24px 2px 12px}.section-head h3,.page-intro h3{margin:0;font-size:18px}.section-head p,.page-intro p{margin:5px 0 0;color:#987b82;font-size:12px}.text-btn{background:none;color:#b26778;font-size:12px}.mood-row{display:flex;gap:8px;overflow:auto;padding:2px 0 6px}.mood-btn{flex:0 0 62px;padding:9px 4px;border-radius:16px;background:#fff;box-shadow:0 5px 15px #eddde0;font-size:20px}.mood-btn span{display:block;font-size:10px;margin-top:3px;color:#7f676d}.mood-btn.selected{outline:2px solid #e3a6b4;background:#fff0f3}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-top:18px}.quick-card{padding:16px;text-align:left;border-radius:20px;background:#fff;box-shadow:0 7px 22px #ecdfe1}.quick-card span{display:block;font-size:22px;color:#c17688;margin-bottom:8px}.quick-card b{display:block;font-size:14px}.quick-card small{display:block;margin-top:4px;color:#a28a90;font-size:11px}.page-intro{display:flex;justify-content:space-between;align-items:center;margin:10px 0 18px}.primary-mini{padding:9px 13px;border-radius:14px;background:#c9788b;color:#fff;font-size:12px}.primary-btn{width:100%;padding:13px;border-radius:15px;background:#bd6b7e;color:#fff;font-weight:700;box-shadow:0 8px 20px rgba(189,107,126,.22)}.diary-card{background:#fff;border-radius:22px;padding:15px;margin-bottom:15px;box-shadow:0 7px 22px #ecdfe1}.diary-meta{display:flex;justify-content:space-between;align-items:center;color:#9a7c84;font-size:11px}.author{display:flex;align-items:center;gap:7px}.mini-avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#f7dce2;color:#ae6173;font-size:11px}.mini-avatar-blue{background:#b2e3ff}.diary-content{font-size:14px;line-height:1.75;margin:12px 0}.tag-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.tag{padding:4px 8px;border-radius:10px;background:#fff0f3;color:#b06d7c;font-size:10px}.diary-images{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}.diary-images img{width:100%;aspect-ratio:1;border-radius:12px;object-fit:cover}.comment-box{margin-top:13px;border-top:1px solid #f2e7e9;padding-top:10px}.comment{font-size:12px;margin:7px 0;color:#65565b}.comment b{color:#a55e70}.comment-form{display:flex;gap:6px;margin-top:8px}.comment-form input{min-width:0;flex:1;border:1px solid #eadde0;border-radius:11px;padding:8px 10px;outline:none}.comment-form button{padding:8px 11px;border-radius:11px;background:#f4dce2;color:#a55e70}.form-card,.setting-card{background:#fff;border-radius:22px;padding:17px;margin-bottom:13px;box-shadow:0 7px 22px #ecdfe1}.form-card label,.modal-panel label{display:block;font-size:12px;color:#806a70;margin-bottom:13px}.form-card textarea,.modal-panel textarea,.modal-panel input,.modal-panel select{width:100%;margin-top:7px;border:1px solid #eadde0;border-radius:13px;padding:11px;outline:none;background:#fff;resize:vertical}.form-card textarea{min-height:80px}.repair-card{background:#fff;border-radius:20px;padding:15px;margin-bottom:12px;box-shadow:0 7px 20px #ecdfe1}.repair-status{display:inline-block;padding:4px 8px;border-radius:9px;background:#fff1f3;color:#ae6474;font-size:10px}.repair-status.done{background:#edf7ef;color:#63916b}.resolve-btn{margin-top:10px;padding:8px 11px;border-radius:10px;background:#f5e2e6;color:#a35f70;font-size:11px}.diary-actions{display:flex;justify-content:flex-end;margin-top:10px;gap:8px}.delete-diary-btn{padding:7px 12px;border-radius:10px;background:#fbeeef;color:#c05f6f;font-size:11px}.edit-diary-btn{padding:7px 12px;border-radius:10px;background:#eef4fb;color:#5a7ba0;font-size:11px}.on-this-day-year{font-size:14px;color:#a05f72;margin:18px 2px 8px}.backup-btn{margin-top:8px}.couple-card{padding:28px 20px;text-align:center;border-radius:28px;background:linear-gradient(135deg,#fff,#f9e5ea);box-shadow:0 12px 30px #eadcdf}.avatar{display:inline-grid;place-items:center;width:58px;height:58px;border-radius:50%;background:#e9bbc7;color:#9e5367;font-weight:700}.avatar.second{background:#efd9c8;color:#9b6d4d}.heart-line{display:inline-block;margin:0 13px;color:#c97688}.couple-card h3{margin:16px 0 5px}.couple-card p{margin:0;color:#947b82;font-size:12px}.menu-card{margin-top:15px;background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 7px 22px #ecdfe1}.menu-card button{width:100%;display:flex;align-items:center;text-align:left;gap:13px;padding:15px 16px;background:#fff;border-bottom:1px solid #f4e9eb}.menu-card button:last-child{border-bottom:0}.menu-card button>span{width:32px;height:32px;display:grid;place-items:center;border-radius:11px;background:#fff0f3;color:#b26778}.menu-card button div{flex:1}.menu-card b{display:block;font-size:13px}.menu-card small{display:block;color:#9a8288;margin-top:3px;font-size:10px}.menu-card i{font-style:normal;color:#c1aeb3}.collection-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.collection-item{background:#fff;border-radius:20px;padding:17px;box-shadow:0 7px 20px #ecdfe1;min-height:125px}.collection-icon{font-size:25px;color:#c47788}.collection-item h4{margin:10px 0 4px}.collection-item p{margin:0;color:#9a8389;font-size:11px}.stats-hero{padding:25px;border-radius:25px;background:#fff;text-align:center;box-shadow:0 7px 22px #ecdfe1}.stats-hero span,.stats-hero small{color:#9a8087}.stats-hero strong{display:inline-block;margin:0 4px;color:#af6375;font-size:48px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-top:13px}.stats-grid div{padding:18px;background:#fff;border-radius:18px;text-align:center;box-shadow:0 6px 18px #eee0e2}.stats-grid b{display:block;font-size:25px;color:#b26778}.stats-grid span{font-size:11px;color:#927b82}.insight-card{margin-top:13px;padding:18px;background:#fff;border-radius:20px;box-shadow:0 7px 20px #ecdfe1}.insight-card h3{margin:0}.insight-card p{font-size:12px;color:#866e75;line-height:1.7}.profile-card{display:flex;align-items:center;gap:12px;padding:20px;background:#fff;border-radius:22px;box-shadow:0 7px 20px #ecdfe1}.profile-avatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#f3d6dd;color:#b06577;font-size:22px}.profile-card b{font-size:15px}.profile-card p{margin:4px 0 0;color:#9a8087;font-size:11px}.logout-btn{width:100%;margin-top:14px;padding:13px;border-radius:15px;background:#fff;color:#a84f62;border:1px solid #efcbd3}.safe-tip{text-align:center;color:#b09a9f;font-size:10px}.setting-card{display:flex;justify-content:space-between;align-items:center}.setting-card span{color:#9a8087;font-size:12px}.danger-btn{width:100%;padding:12px;border-radius:14px;background:#fff0f2;color:#a95365}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:20;height:70px;padding-bottom:env(safe-area-inset-bottom);display:flex;justify-content:space-around;background:rgba(255,255,255,.96);box-shadow:0 -5px 20px rgba(80,45,55,.08)}.bottom-nav button{flex:1;background:none;color:#9b858b}.bottom-nav button.active{color:#b86175}.bottom-nav span{display:block;font-size:20px}.bottom-nav small{font-size:10px}.modal{position:fixed;inset:0;z-index:50;background:rgba(49,32,37,.35);display:flex;align-items:flex-end}.modal-panel{width:100%;max-height:90vh;overflow:auto;background:#fff9fa;border-radius:26px 26px 0 0;padding:18px 18px 30px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.modal-head h3{margin:0}.close-modal{width:34px;height:34px;border-radius:50%;background:#f4e3e7;color:#9f5c6e;font-size:20px}.modal-panel textarea{min-height:130px}.image-preview{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:8px 0 14px}.image-preview img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px}.login-view{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at top,#ffeef2,#fff7f8 55%)}.login-card{width:min(420px,100%);padding:30px 24px;border-radius:30px;background:#fff;box-shadow:0 20px 60px #eadcdf;text-align:center}.brand-heart{font-size:44px;color:#c76f83}.login-card h1{margin:5px 0 7px}.login-card>p{margin:0 0 25px;color:#9a7f86;font-size:12px}.login-card input{width:100%;padding:13px;margin-bottom:10px;border:1px solid #eadde0;border-radius:14px;outline:none}.demo-tip{margin-top:12px;font-size:10px;color:#a18b90}.error-text{height:18px;margin-top:8px;color:#b34e61;font-size:11px}.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:rgba(64,42,48,.92);color:#fff;padding:10px 18px;border-radius:22px;font-size:13px;z-index:120;opacity:0;pointer-events:none;transition:opacity .3s}.toast.show{opacity:1}@media(min-width:700px){.modal{align-items:center;justify-content:center}.modal-panel{width:620px;border-radius:26px}.bottom-nav{left:50%;right:auto;transform:translateX(-50%);width:620px;border-radius:20px 20px 0 0}.main-view{max-width:760px;margin:auto}.topbar{border-radius:0 0 18px 18px}}.partner-mood-card{display:flex;flex-direction:column;gap:6px;margin-top:16px;padding:15px 16px;border-radius:18px;background:#fff;box-shadow:0 7px 20px #ecdfe1}.partner-mood-head{font-size:12px;color:#9a7c84}.partner-mood-content{font-size:15px;color:#65565b}.partner-mood-emoji{font-size:22px;margin-right:8px;vertical-align:middle}.partner-mood-label{color:#a95d70;font-weight:600}.weather-toggle{display:flex;gap:8px;margin:6px 0 16px}.weather-btn{flex:1;padding:10px;border-radius:14px;background:#fff;color:#9a8087;box-shadow:0 5px 15px #eddde0;font-size:13px}.weather-btn.selected{background:#f7dce2;color:#ae6173}.weather-list{display:flex;flex-direction:column;gap:10px}.weather-card{display:flex;align-items:center;gap:13px;padding:14px 16px;background:#fff;border-radius:18px;box-shadow:0 7px 20px #ecdfe1}.weather-icon{font-size:30px}.weather-body{flex:1}.weather-title{display:flex;justify-content:space-between;align-items:center}.weather-title b{font-size:14px;color:#a95d70}.weather-title span{font-size:11px;color:#9a8087}.weather-moods{display:flex;gap:14px;margin-top:6px;font-size:12px;color:#65565b}.weather-empty{padding:28px 16px;text-align:center;color:#9a8087;font-size:13px}.month-stats{margin-top:16px;background:#fff;border-radius:20px;padding:16px;box-shadow:0 7px 20px #ecdfe1}.month-stats-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.month-stats-head b{font-size:14px;color:#a95d70}.month-stats-head span{font-size:11px;color:#9a8087}.stats-kpi{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stats-kpi div{padding:12px 6px;background:#fff7f8;border-radius:14px;text-align:center}.stats-kpi b{display:block;font-size:20px;color:#b26778}.stats-kpi span{font-size:10px;color:#927b82}.month-charts{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px}.chart-block{flex:1 1 45%;min-width:200px;background:#fffafb;border-radius:14px;padding:12px}.chart-title{font-size:12px;color:#a05f72;margin-bottom:6px}.chart-legend{display:flex;flex-wrap:wrap;gap:5px 10px;margin-top:8px}.chart-legend span{font-size:10px;color:#6a5a5e}.chart-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:middle}.diary-location{margin-top:10px;font-size:11px;color:#a28a90}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.filter-bar input{flex:1 1 120px;min-width:0;border:1px solid #eadde0;border-radius:12px;padding:9px 10px;outline:none;background:#fff}.filter-bar .text-btn{padding:0 4px}.pager{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-top:16px}.pager-btn{min-width:38px;padding:8px 11px;border-radius:11px;background:#fff;color:#9a8087;box-shadow:0 4px 12px #eddde0;font-size:12px}.pager-btn.active{background:#c9788b;color:#fff}.pager-btn:disabled{opacity:.45;cursor:not-allowed}.pager-ellipsis{display:inline-flex;align-items:center;color:#b09a9f;font-size:12px;padding:0 2px}.time-row{display:flex;gap:8px;align-items:center;margin:7px 0 13px}.time-row input{flex:1;min-width:0;margin-top:0}.time-action-btn{flex:0 0 auto;padding:9px 12px;border-radius:12px;background:#f4dce2;color:#a55e70;font-size:12px}.diary-img{cursor:zoom-in}.lightbox{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.88);display:flex;align-items:center;justify-content:center;cursor:zoom-out}.lightbox img{max-width:92vw;max-height:92vh;object-fit:contain;border-radius:8px}
.meta-right{display:flex;align-items:center;gap:6px}
.unread-dot{width:9px;height:9px;border-radius:50%;background:#e5484d;box-shadow:0 0 0 3px rgba(229,72,77,.16)}
.diary-time{cursor:pointer}
.diary-time.no-toggle{cursor:default}
#personalPage .subscribe-email{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:10px}
#personalPage .subscribe-email>span{font-size:12px;color:#806a70}
#personalPage .subscribe-email input,#personalPage .subscribe-email select{flex:1 1 auto;min-width:150px;width:100%;box-sizing:border-box;border:1px solid #eadde0;border-radius:12px;padding:7px 9px;background:#fff}
.subscribe-email input[type=date]{color:#4a4a4a}
.key-days{margin-top:12px;border-top:1px solid #f4e9eb;padding-top:12px}
.key-days-head{font-size:12px;color:#a05f72;margin-bottom:8px}
.key-days-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.key-days-grid div{background:#fff7f8;border-radius:12px;padding:10px 4px;text-align:center}
.key-days-grid b{display:block;font-size:11px;color:#927b82;margin-bottom:4px}
.key-days-grid span{font-size:13px;color:#b26778;font-weight:700}
.album-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.album-item{margin:0;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 4px 12px #eddde0}
.album-img{width:100%;aspect-ratio:1;object-fit:cover;display:block;cursor:zoom-in;background:#f6e9ec}
.album-item figcaption{font-size:10px;color:#9a8087;padding:5px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.filter-unread-btn{padding:9px 12px;border-radius:12px;background:#fff;color:#9a8087;box-shadow:0 4px 12px #eddde0;font-size:12px}
.filter-unread-btn.active{background:#e5484d;color:#fff}
.comment-reminder{background:#fff;border-radius:16px;box-shadow:0 4px 14px #eddde0;padding:14px;margin:14px 0}
.comment-reminder-empty{color:#9a8087;font-size:13px;text-align:center;padding:8px}
.comment-reminder-head{font-size:15px;color:#5c3a45;margin-bottom:10px}
.comment-reminder-head b{color:#e5484d;font-size:18px}
.comment-reminder-list{display:flex;flex-direction:column;gap:8px}
.comment-reminder-item{display:flex;align-items:center;gap:10px;width:100%;background:#fff6f6;border:1px solid #f6dfe2;border-radius:12px;padding:10px 12px;text-align:left;cursor:pointer}
.comment-reminder-item:hover{background:#ffeef0}
.comment-reminder-item>i{color:#d8b7bc;font-style:normal;font-size:18px;flex:none}
.cr-badge{flex:none;min-width:22px;height:22px;line-height:22px;text-align:center;background:#e5484d;color:#fff;border-radius:11px;font-size:12px;font-weight:700;padding:0 6px;box-sizing:border-box}
.cr-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.cr-text b{font-size:14px;color:#5c3a45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cr-text small{font-size:12px;color:#9a8087;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.focus-panel{animation:focusflash 1.6s ease;margin-bottom:14px}
.focus-panel .diary-card{box-shadow:0 0 0 2px #e5484d}
@keyframes focusflash{0%{background:#ffe9eb}100%{background:transparent}}
.comment-img{width:24px;height:24px;vertical-align:middle;object-fit:cover;border-radius:6px;cursor:zoom-in;margin:0 2px}
.comment-del-btn{flex:none;width:16px;height:16px;line-height:14px;text-align:center;font-size:10px;color:#c98a94;background:#fff1f2;border:0;border-radius:50%;cursor:pointer;margin-right:6px;vertical-align:middle}
.comment-del-btn:hover{background:#ffdfe2;color:#e5484d}
.comment-file{display:none}
.filter-toggle-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 13px;margin-bottom:12px;border-radius:12px;background:#fff;color:#9a8087;box-shadow:0 4px 12px #eddde0;font-size:12px}
.filter-toggle-arrow{font-size:10px;color:#b09a9f}
.restore-btn{padding:7px 12px;border-radius:10px;background:#edf7ef;color:#63916b;font-size:11px;margin-right:8px}
.trash-note{margin-top:12px;font-size:11px;color:#a28a90}
.mini-avatar[data-category-diary]{padding:0;cursor:pointer;border:0}
.category-emoji{font-size:13px;line-height:1}
.category-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;background:#f6f0f2;color:#9a8087;border-radius:10px;font-size:11px;cursor:pointer}
.category-filter-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff;border:1px solid #f0dde1;border-radius:12px;padding:9px 12px;margin-bottom:12px;font-size:13px;color:#5c3a45}
.category-filter-bar button{border:0;background:transparent;font-size:18px;color:#b09a9f;cursor:pointer;line-height:1}
.category-pick-list{display:flex;flex-direction:column;gap:8px}
.category-pick-item{display:flex;align-items:center;gap:10px;width:100%;background:#fff6f6;border:1px solid #f6dfe2;border-radius:12px;padding:12px;text-align:left;cursor:pointer;font-size:14px;color:#5c3a45}
.category-pick-item.selected{background:#ffe9eb;border-color:#e5484d}
.category-pick-item i{margin-left:auto;font-style:normal;color:#e5484d}
.collection-item{width:100%;text-align:left;border:0;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}
.collection-empty{display:flex;align-items:center;justify-content:center;color:#9a8087;min-height:80px}
.emoji-preset{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 12px}
.emoji-opt{width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:18px;background:#fff6f6;border:1px solid #f6dfe2;border-radius:10px;cursor:pointer}
.emoji-opt.selected{border-color:#e5484d;background:#ffe9eb}
.partner-active{flex:none;align-self:center;font-size:11px;color:#9a8087;background:#fff;padding:5px 10px;border-radius:999px;box-shadow:0 4px 12px #eddde0;white-space:nowrap}
.setting-usage{background:#fff;border-radius:22px;padding:17px;margin-bottom:13px;box-shadow:0 7px 22px #ecdfe1}
.setting-usage-head{font-size:14px;color:#5c3a45;margin-bottom:6px}
.setting-usage-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:#806a70;padding:7px 0;border-bottom:1px solid #f4e9eb}
.setting-usage-row:last-child{border-bottom:0}
.setting-usage-row b{color:#b26778;font-weight:600}
.setting-usage-row.small{font-size:11px;color:#9a8288}

/* ===== 心情历史（天气预报顶部横向滚动时间轴） ===== */
.mood-history{margin:2px 0 14px}
.mood-history-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:0 2px 8px}
.mood-history-head b{font-size:14px;color:#5c3a45}
.mood-history-head span{font-size:11px;color:#a28a90;white-space:nowrap}
.mood-history-scroll{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;padding:3px 2px 9px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.mood-history-scroll::-webkit-scrollbar{height:0;display:none}
.mood-history-scroll{scrollbar-width:none}
.mood-history-item{flex:0 0 74px;display:flex;flex-direction:column;align-items:center;gap:1px;padding:9px 4px 8px;border-radius:16px;background:#fff;box-shadow:0 5px 16px #eddde0;scroll-snap-align:start}
.mood-history-item.me{background:linear-gradient(160deg,#fff3f5,#ffe6ea);box-shadow:0 5px 16px rgba(201,128,145,.22)}
.mood-history-item.ta{background:linear-gradient(160deg,#f2f6ff,#e7efff);box-shadow:0 5px 16px rgba(127,150,200,.2)}
.mh-date{font-size:10px;color:#a28a90;line-height:1.2}
.mh-time{font-size:11px;font-weight:700;color:#5c3a45;letter-spacing:.3px;line-height:1.2}
.mh-emoji{font-size:22px;line-height:1.2;margin:1px 0}
.mh-label{font-size:11px;color:#5c3a45;line-height:1.2}
.mh-who{margin-top:3px;padding:1px 8px;border-radius:9px;font-size:10px;line-height:1.5;background:#f3dde2;color:#a95d70;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mood-history-item.ta .mh-who{background:#dfe8fb;color:#5d77ab}
.mood-history-empty{flex:0 0 100%;text-align:center;color:#9a8087;font-size:12px;padding:24px 0}
@media (max-width:360px){.mood-history-item{flex:0 0 68px}.mh-emoji{font-size:20px}}

/* ===== 设置页：账户订阅（开关 + 收件邮箱） ===== */
.setting-card.stacked{display:block}
.subscribe-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.subscribe-info{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0;margin-right:12px}
.subscribe-info b{font-size:14px;color:#5c3a45}
.subscribe-info small{font-size:11px;color:#a28a90;line-height:1.5}
.subscribe-info small.warn{color:#b26778}
.subscribe-check{position:relative;flex:none;width:26px;height:26px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.subscribe-check input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}
.subscribe-check i{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1.6px solid #e6ccd2;background:#fff;color:transparent;font-style:normal;font-size:15px;font-weight:700;line-height:1;pointer-events:none;transition:background .15s ease,border-color .15s ease,color .15s ease}
.subscribe-check input:checked+i{background:linear-gradient(145deg,#e08a9d,#c96a80);border-color:#c96a80;color:#fff}
.subscribe-check input:focus-visible+i{box-shadow:0 0 0 3px rgba(201,106,128,.25)}
.subscribe-check input:disabled{cursor:default}
.subscribe-check input:disabled+i{opacity:.6}
.subscribe-email{display:flex;flex-direction:column;gap:5px;margin-top:13px}
.subscribe-email span{font-size:12px;color:#806a70}
.subscribe-email input{width:100%;padding:10px 12px;border-radius:12px;border:1px solid #eddde0;background:#fffafb;color:#3b3034}
.subscribe-email input:focus{outline:none;border-color:#e0aab6;box-shadow:0 0 0 3px rgba(201,106,128,.12)}
.subscribe-email input::placeholder{color:#c3aeb4}
.report-sub-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.report-sub-item{display:flex;align-items:center;justify-content:center;gap:6px;padding:11px 4px;border-radius:12px;background:#fff7f8;border:1px solid #f3e4e7;font-size:12px;color:#65565b;cursor:pointer;-webkit-tap-highlight-color:transparent}
.report-sub-item:active{background:#ffeef2}
.report-sub-item input{width:16px;height:16px;accent-color:#c9788b;cursor:pointer;flex:none}
.report-sub-item span{white-space:nowrap}
.report-send-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.report-send-btn{padding:9px 4px;border-radius:11px;background:#fff0f3;color:#a95d70;font-size:11px;cursor:pointer;border:0}
.report-send-btn:active{background:#ffe4ea}
.report-send-btn:disabled{opacity:.5;cursor:default}

/* ===== 校花的贴身高手：经期日历 ===== */
.cycle-hero{background:radial-gradient(circle at 88% 12%,rgba(255,255,255,.8),transparent 30%),linear-gradient(150deg,#fbe9ec,#f7e4e8);border-radius:22px;padding:18px;margin-bottom:13px;box-shadow:0 12px 30px rgba(188,117,135,.15)}
.cycle-hero-main{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.cycle-hero-label{font-size:12px;color:#96727a}
.cycle-hero-main strong{font-family:Georgia,serif;font-size:30px;font-weight:500;color:#a95d70}
.cycle-phase{padding:2px 10px;border-radius:999px;background:#fff;color:#b26778;font-size:12px}
.cycle-late{padding:2px 10px;border-radius:999px;background:#e5484d;color:#fff;font-size:12px}
.cycle-hero-sub{margin-top:9px;font-size:11px;color:#96727a;line-height:1.6}
.cycle-hero-empty{color:#96727a;font-size:13px;text-align:center;padding:12px 0}
.cycle-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-bottom:16px}
.cycle-card{background:#fff;border-radius:16px;padding:13px;box-shadow:0 5px 16px #eddde0;display:flex;flex-direction:column;gap:3px}
.cycle-card.wide{grid-column:1/-1}
.cycle-card span{font-size:11px;color:#a28a90}
.cycle-card b{font-size:15px;color:#5c3a45}
.cycle-card small{font-size:11px;color:#a28a90}

.cycle-calendar{background:#fff;border-radius:22px;padding:14px;box-shadow:0 7px 22px #ecdfe1;margin-bottom:18px}
.cycle-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.cycle-cal-head b{font-size:15px;color:#5c3a45}
.cycle-nav{width:32px;height:32px;border-radius:50%;background:#fff6f6;color:#b26778;font-size:18px;line-height:1;border:0;cursor:pointer}
.cycle-nav:active{background:#ffe9eb}
.cycle-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:6px}
.cycle-weekdays span{text-align:center;font-size:11px;color:#b09a9f}
.cycle-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cycle-grid>.cycle-empty{grid-column:1/-1}
.cycle-cell{position:relative;aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#fdf8f9;font-size:12px;color:#5c3a45;cursor:pointer}
.cycle-cell.other-month{opacity:.35}
.cycle-cell.is-fertile{background:#fbeaf0}
/* 预测经期：浅粉底 + 点阵纹理。易孕期是纯色浅粉底，两者色差在手机上几乎看不出来，
   加一层点阵让「预测」一眼可辨（图例色块同步用点阵） */
.cycle-cell.is-predicted{background-color:#fff7f8;background-image:radial-gradient(#e9b3c6 1px,transparent 1px);background-size:6px 6px;box-shadow:inset 0 0 0 1.4px #edb6c3}
.cycle-cell.is-period{background:#ed93b1;color:#fff}
.cycle-cell.is-ovulation{box-shadow:inset 0 0 0 2px #993556}
.cycle-cell.is-period.is-ovulation{box-shadow:inset 0 0 0 2px #72243e}
/* 今天：浅蓝色描边。必须排在 is-predicted / is-ovulation 之后，否则特异度相同时会被它们覆盖掉 */
.cycle-cell.today{box-shadow:inset 0 0 0 1.8px #6cb2e8}
/* 今天恰好也是预测经期 / 排卵日时叠两层描边：蓝色在外、状态色在内，两种信息都不丢 */
.cycle-cell.today.is-predicted{box-shadow:inset 0 0 0 1.8px #6cb2e8,inset 0 0 0 3.4px #edb6c3}
.cycle-cell.today.is-ovulation{box-shadow:inset 0 0 0 1.8px #6cb2e8,inset 0 0 0 3.6px #993556}
.cycle-cell.today.is-period.is-ovulation{box-shadow:inset 0 0 0 1.8px #6cb2e8,inset 0 0 0 3.6px #72243e}
.cycle-cell .mdot{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:#993556}
.cycle-cell .mdot.medium{background:#f0ccd6}
.cycle-cell.is-period .mdot{background:#fff}
.cycle-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;font-size:11px;color:#a28a90}
.cycle-legend span{display:flex;align-items:center;gap:4px}
.cycle-legend .lg{width:11px;height:11px;border-radius:3px;display:inline-block}
.lg-period{background:#ed93b1}
/* 图例色块只有 11px，点阵比格子里的更密一点才看得出是纹理 */
.lg-predicted{background-color:#fff7f8;background-image:radial-gradient(#e9b3c6 1px,transparent 1px);background-size:4px 4px;box-shadow:inset 0 0 0 1.4px #edb6c3}
.lg-ovulation{background:#fff;box-shadow:inset 0 0 0 2px #993556}
.lg-fertile{background:#fbeaf0}
.lg-today{background:#fff;box-shadow:inset 0 0 0 1.8px #6cb2e8}

.prob-strip{display:flex;align-items:stretch;gap:2px;height:130px;padding:12px 10px 20px;background:#fff;border-radius:18px;box-shadow:0 5px 16px #eddde0}
.prob-col{position:relative;flex:1 1 0;min-width:0;display:flex;align-items:flex-end;justify-content:center;border-radius:4px}
.prob-col.in-window{background:rgba(237,147,177,.15)}
.prob-col.is-ov::after{content:"";position:absolute;left:50%;top:0;bottom:0;width:1.5px;background:#993556;transform:translateX(-50%)}
.prob-bar{display:block;width:100%;max-width:14px;border-radius:4px 4px 0 0}
.prob-tick{position:absolute;bottom:-16px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:400;color:#b09a9f}
/* 概率分布图的图例。色点必须与 .prob-bar 实际用的三种颜色一致
   （High #993556 / Medium #D4537E / Low #F4C0D1），不要照抄月历圆点的配色 */
.prob-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;font-size:11px;color:#a28a90}
.prob-legend span{display:flex;align-items:center;gap:4px}
.prob-legend i{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}
.prob-legend .pd-high{background:#993556}
.prob-legend .pd-medium{background:#D4537E}
.prob-legend .pd-low{background:#F4C0D1}
/* 要比压缩块里的 .hidden 更具体，否则同特异度下会被上面的 display:flex 盖掉 */
.prob-legend.hidden{display:none}
/* 登录卡与重置弹窗里的文字按钮 / 说明文字 */
.link-btn{display:block;margin:12px auto 0;padding:4px 6px;border:0;background:transparent;font-family:inherit;font-size:12px;color:#b26778;text-decoration:underline;cursor:pointer;-webkit-tap-highlight-color:transparent}
.link-btn:active{color:#8f4a5c}
.reset-tip{margin:0 0 12px;font-size:12px;color:#a28a90;line-height:1.7}

.cycle-records{background:#fff;border-radius:18px;padding:4px 14px;box-shadow:0 5px 16px #eddde0}
.cycle-record{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid #f7ecee;font-size:13px;cursor:pointer}
.cycle-record:last-child{border-bottom:0}
.cr-date{color:#5c3a45;font-weight:500;flex:none;white-space:nowrap}
.cr-gap{flex:none;font-size:11px;color:#5f8fb8;background:#eef6fd;border-radius:9px;padding:1px 8px;white-space:nowrap}
.cr-meta{font-size:11px;color:#a28a90;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cr-note{flex:none;padding:1px 8px;border-radius:9px;background:#fff1f3;color:#b26778;font-size:10px}
.cr-del{margin-left:auto;flex:none;width:26px;height:26px;border-radius:50%;background:#fff6f6;color:#c08a94;font-size:16px;line-height:1;border:0;cursor:pointer}
.cycle-more{padding:9px 0;font-size:11px;color:#a28a90;text-align:center}
/* 「查看更多」按钮：最后一条 .cycle-record 没有下边框，所以分隔线画在按钮的上边 */
.cycle-more-btn{display:block;width:100%;padding:12px 0 10px;margin:0;border:0;border-top:1px solid #f7ecee;background:transparent;font-family:inherit;font-size:12px;color:#b26778;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cycle-more-btn:active{color:#8f4a5c}
.cycle-empty{padding:22px 0;text-align:center;color:#9a8087;font-size:13px}

/* ===== 恋爱日历（数据中心：日记/心情/维修 汇总到月历） ===== */
.love-calendar-card{margin-top:16px;background:#fff;border-radius:20px;padding:16px;box-shadow:0 7px 20px #ecdfe1}
.love-calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.love-calendar-head b{font-size:15px;color:#5c3a45}
.cal-nav{display:flex;align-items:center;gap:6px;position:relative}
.cal-nav button{width:32px;height:32px;border-radius:50%;background:#fff6f6;color:#b26778;font-size:18px;line-height:1;border:0;cursor:pointer}
.cal-nav button:active{background:#ffe9eb}
/* 选中按钮：月份选择输入框透明盖在 📅 上，点击即弹原生年月选择器 */
#calPick{position:relative}
#calPickInput{position:absolute;inset:0;z-index:2;width:32px;height:32px;opacity:0;cursor:pointer;border:0;padding:0;background:transparent}
#calPickInput::-webkit-calendar-picker-indicator{width:100%;height:100%;margin:0;padding:0;cursor:pointer;opacity:0}
.cal-nav span{min-width:74px;text-align:center;font-size:13px;color:#5c3a45;font-weight:600}
.cal-legend{display:flex;flex-wrap:wrap;gap:12px;margin:2px 2px 10px;font-size:11px;color:#a28a90}
.cal-legend span{display:flex;align-items:center;gap:4px}
.cal-legend i{width:9px;height:9px;border-radius:50%}.cal-legend .dot-diary{background:#d8a7b4}.cal-legend .dot-mood{background:#f0c36a}.cal-legend .dot-repair{background:#8499c9}
.cal-weekday{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}
.cal-weekday span{text-align:center;font-size:11px;color:#b09a9f}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-cell{position:relative;aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#fdf8f9;font-size:12px;color:#5c3a45;cursor:pointer;flex-direction:column}
.cal-cell.cal-empty{background:transparent;cursor:default}
.cal-cell.cal-has{background:#fff1f3;color:#a95d70}
.cal-cell.cal-today{box-shadow:inset 0 0 0 1.8px #6cb2e8}
.cal-cell.cal-sel{background:#e8a8ba;color:#fff;box-shadow:inset 0 0 0 1.8px #c8708a}
.cal-marks{display:flex;justify-content:center;gap:2.5px;margin-top:1px}
.cal-marks i{width:5px;height:5px;border-radius:50%;display:inline-block}
.cal-grid .dot-diary{background:#d8a7b4}.cal-grid .dot-mood{background:#f0c36a}.cal-grid .dot-repair{background:#8499c9}
.cal-cell.cal-sel .cal-marks i{background:#fff}
.cal-day-detail{margin-top:12px;border-top:1px solid #f2e7e9;padding-top:10px;display:flex;flex-direction:column;gap:8px}
.cal-detail-empty{color:#9a8087;font-size:12px;text-align:center;padding:6px 0}
.cal-item{border-radius:12px;padding:9px 12px;font-size:13px;line-height:1.6;color:#65565b}
.cal-item b{font-size:12px;color:#5c3a45}
.cal-item .cal-time{font-size:10px;color:#b09a9f;font-weight:400;margin-left:6px;vertical-align:1px}
.cal-mood .cal-time{margin-left:6px}
.cal-item div{min-width:0;overflow:hidden;text-overflow:ellipsis}
.cal-diary{background:#fff1f3}
.cal-mood{background:#fff7ec;display:flex;align-items:center;gap:8px}
.cal-mood .cal-author{font-size:12px;color:#a95d70;margin-right:6px}
.cal-repair{background:#eef1fa}

/* ===== 恋爱报告 ===== */
.report-entry{margin-top:13px;width:100%;display:flex;align-items:center;gap:13px;padding:15px 16px;background:#fff;border-radius:20px;box-shadow:0 7px 22px #ecdfe1;text-align:left;cursor:pointer;border:0}
.report-entry>span{width:36px;height:36px;display:grid;place-items:center;border-radius:12px;background:#ffeef2;color:#c47084;font-size:18px;flex:none}
.report-entry div{flex:1;min-width:0}
.report-entry b{display:block;font-size:14px;color:#5c3a45}
.report-entry small{display:block;color:#9a8288;margin-top:3px;font-size:10px}
.report-entry i{font-style:normal;color:#c1aeb3}
.report-days{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:13px;padding:12px;background:#fff;border-radius:16px;box-shadow:0 5px 16px #eddde0}
.report-days button{flex:1;min-width:64px;padding:9px 6px;border-radius:12px;background:#fff6f6;color:#b26778;font-size:13px}
.report-days button:active{background:#ffe9eb}
.report-days.hidden{display:none}
.ai-toggle{margin-top:14px;display:flex;align-items:center;gap:8px;font-size:12px;color:#9a8288;padding:12px 14px;background:#fff;border-radius:14px;box-shadow:0 5px 16px #eddde0;cursor:pointer}
.ai-toggle input{width:16px;height:16px;accent-color:#c9788b;cursor:pointer;flex:none}
.report-empty{padding:40px 18px;text-align:center;color:#9a8087;font-size:13px}
.rp-summary{padding:16px 18px;border-radius:20px;background:linear-gradient(145deg,#fff,#fdeef2);box-shadow:0 8px 22px #eddfe1;font-size:14px;line-height:1.8;color:#5c3a45}
.rp-hero{position:relative;display:flex;align-items:center;gap:14px;margin:13px 0;padding:16px;border-radius:20px;background:linear-gradient(145deg,#fff,#f9e5ea);box-shadow:0 8px 22px #eadcdf}
.rp-hero .rp-rule-btn{position:absolute;top:12px;right:12px}
.rp-score{flex:none;font-family:Georgia,serif;font-size:44px;font-weight:600;color:#af6375;line-height:1}
.rp-hero b{display:block;font-size:15px;color:#5c3a45}
.rp-hero span{font-size:12px;color:#9a8288}
.rp-card{margin-bottom:13px;background:#fff;border-radius:18px;padding:15px 16px;box-shadow:0 6px 18px #eee0e2}
.rp-card h4{margin:0 0 10px;font-size:14px;color:#5c3a45}
.rp-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.rp-card-head h4{margin:0}
.rp-rule-btn{padding:5px 11px;border-radius:999px;background:#fff0f3;color:#a95d70;font-size:11px;border:0;cursor:pointer}
.rp-rule-btn:active{background:#ffe9eb}
.rp-rule-tip{margin:0 0 12px;font-size:12px;color:#a28a90;line-height:1.7}
.rp-rule-table{width:100%;border-collapse:collapse;font-size:13px}
.rp-rule-table th,.rp-rule-table td{padding:8px 6px;text-align:center;border-bottom:1px solid #f4e9eb}
.rp-rule-table thead th{color:#9a7c84;font-weight:600;font-size:11px}
.rp-rule-table tbody td:last-child{color:#b26778;font-weight:600}
.rp-rule-table tbody tr:last-child td{border-bottom:0}
.rp-kv{margin:4px 0;font-size:13px;color:#65565b;line-height:1.7}
.rp-kv em{font-style:normal;color:#c1aeb3}
.rp-warn{margin:8px 0;padding:8px 12px;border-radius:12px;background:#fff4ec;color:#c05f2f;font-size:12px;line-height:1.6}
.rp-slotwrap{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.rp-slot{display:flex;align-items:center;gap:8px;font-size:12px;color:#7b686d}
.rp-slot span{flex:0 0 34px;text-align:right}
.rp-slot b{flex:0 0 22px;text-align:right;color:#b26778;font-weight:700}
.rp-bar{flex:1;height:8px;border-radius:5px;background:#f6e9ec;overflow:hidden}
.rp-bar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#f0c0cc,#da92a6)}
.rp-bar i.mood{background:linear-gradient(90deg,#f7d9a0,#eeb877)}
.rp-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.rp-chip{padding:4px 10px;border-radius:999px;background:#fff0f3;color:#a95d70;font-size:11px}
.rp-chip.topic{background:#eef4fb;color:#5d77ab}
.rp-profile{margin:6px 0;padding:9px 12px;border-radius:12px;background:#fffafb;border:1px solid #f3e4e7}
.rp-profile-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.rp-profile-head b{font-size:13px;color:#5c3a45}
.rp-chip.role{background:#eaf1fb;color:#5d77ab}
.rp-chip.role.meh{background:#f2ecee;color:#a28a90}
.rp-golden{margin:6px 0;padding:8px 12px;border-left:2px solid #e0aab6;background:#fffafb;color:#8a6a70;font-size:13px;line-height:1.7}

/* ===== 任务列表 ===== */
.task-list{display:flex;flex-direction:column;gap:11px}
.task-empty{padding:40px 18px;text-align:center;color:#9a8087;font-size:13px}
.task-card{background:#fff;border-radius:18px;padding:14px 15px;box-shadow:0 6px 18px #eee0e2}
.task-card.done{opacity:.75}
.task-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.task-head b{font-size:14px;color:#5c3a45}
.task-status{flex:none;padding:2px 9px;border-radius:999px;font-size:10px;white-space:nowrap}
.task-status.open{background:#fdf3e3;color:#b07a2d}
.task-status.accepted{background:#eaf1fb;color:#5d77ab}
.task-status.submitted{background:#fff0f3;color:#a95d70}
.task-status.done{background:#edf7ef;color:#63916b}
.task-meta{margin-top:4px;font-size:10px;color:#a28a90}
.task-desc{margin-top:7px;font-size:13px;color:#65565b;line-height:1.65}
.task-reward,.task-penalty{margin-top:7px;font-size:12px;line-height:1.5}
.task-reward{color:#a0622e}
.task-penalty{color:#a9525f}
.task-reward.hidden-val,.task-penalty.hidden-val{color:#b09a9f;font-style:italic}
.task-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.task-act{padding:7px 12px;border-radius:10px;background:#fff1f3;color:#a95d70;font-size:11px;cursor:pointer;border:0}
.task-act.primary{background:#c9788b;color:#fff}
.task-act.danger{background:#fbeeef;color:#c05f6f}
.task-act:active{opacity:.85}
.modal-input{width:100%;margin-top:7px;border:1px solid #eadde0;border-radius:13px;padding:11px;outline:none;background:#fff;resize:vertical;font:inherit;font-size:16px}
.form-label{display:block;font-size:12px;color:#806a70;margin:13px 0 0}
#taskModal .primary-btn{margin-top:16px}

/* ===== 帮助页 ===== */
.help-list{display:flex;flex-direction:column;gap:11px}
.help-card{background:#fff;border-radius:18px;padding:14px 16px;box-shadow:0 6px 18px #eee0e2}
.help-head{display:flex;align-items:center;gap:9px;margin-bottom:8px}
.help-head span{font-size:18px}
.help-head b{font-size:14px;color:#5c3a45}
.help-items{margin:0;padding:0;list-style:none}
.help-items li{position:relative;padding:4px 0 4px 14px;font-size:13px;color:#65565b;line-height:1.65}
.help-items li::before{content:"";position:absolute;left:2px;top:12px;width:5px;height:5px;border-radius:50%;background:#e3b3bf}

/* ===== 视频（后端 Features.VideoEnabled 打开时才会出现） ===== */
/* 日记正文里的视频：整行显示，按自身比例（手机竖屏视频也能看全），不裁切。 */
.diary-videos{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.diary-videos video{width:100%;height:auto;max-height:70vh;object-fit:contain;background:#000;border-radius:12px;display:block}
/* 写日记时的视频预览：与图片预览同尺寸的方形格子。 */
.image-preview video{width:100%;aspect-ratio:1;object-fit:cover;background:#000;border-radius:10px;display:block}
/* 纪念册里的视频：方形格子里完整显示，点击播放（不吃灯箱的 zoom-in 光标）。 */
.album-img.album-video{object-fit:contain;background:#000;cursor:default}