/* 白色为主的情侣界面：黑体、清淡边界，玫瑰色只用于动作与小细节。 */
:root{--paper:#fff;--canvas:#fff;--ink:#49454e;--muted:#76717b;--green:#a45d76;--line:#e9e8ec;--soft:#f6f5f7;--rose:#a45d76;--grid:#fafafa}
body{background:#f5f6f7;color:var(--ink)}
.shell{background:var(--canvas);box-shadow:0 0 70px #2d243708}
.sidebar{background:#fff;border-bottom:1px solid var(--line)}
.brand-mark{color:#b65d77;background:#fde9ee;border:1px solid #f2cfd9;box-shadow:none;transform:none;border-radius:16px}
.brand strong{font-size:20px;letter-spacing:0}.brand small{letter-spacing:.4px}.brand-mark{padding:0;border:0;background:none;overflow:hidden;border-radius:12px}.brand-app-icon{display:block;width:44px;height:44px}
.nav button{border-width:1px}.nav button.active{background:#faf4f6;border-color:#f0e5e9;color:#a04b65}.nav button:not(.active):hover{background:#f7f6f8}
.mobile-brand{color:var(--ink);letter-spacing:0}.mobile-brand .icon,.icon-button{color:#b97186}.top-actions .plain-link{color:#9e526b}
.page-intro h1{font-size:27px;letter-spacing:0}.page-intro p{color:var(--muted)}
.btn{border:1px solid #b6627c;background:#b6627c;color:#fff;box-shadow:none;border-radius:16px;font-weight:600}.btn:hover{background:#a7536c;border-color:#a7536c}
.btn.secondary{background:#fff;border:1px solid #e5dce2;color:#9c516a;box-shadow:none}.btn.secondary:hover{background:#faf7f8}.btn.danger{box-shadow:none}.btn:disabled{opacity:.66}
.panel{background:#fff;border:1px solid var(--line);border-radius:22px}.panel h2{font-size:18px}
.field input,.field select,.field textarea{border:1px solid #dedce1;background:#fff}.field input:focus,.field textarea:focus,.field select:focus{outline-color:#bc7088}
.role-buttons button{border:1px solid #e5e2e7;background:#fff}.role-buttons button.selected{background:#faf5f7;border-color:#d9b8c6;color:#97516a}
.notice{background:#faf7f8;border:1px solid #eee5e9}.inline-code{background:#f5f3f5;color:#92526a}.form-status{color:#9c526c}
.auth-tabs button.active{border-color:#b97186}.toast{background:#805462f5;border:1px solid #a97889}
dialog{border:1px solid #e7e3e8;background:#fff;box-shadow:0 18px 70px #27213026}.modal-head{background:#fff}.modal-head h2{font-size:21px}
.list-filters button{border:1px solid #e4e0e5}.list-filters button.active{background:#b6627c;border-color:#b6627c;color:white}.list-search{border:1px solid #e4e0e5}.all-list button{border-bottom:1px solid #eeecef}.all-list .list-number{font-family:var(--sans);color:#b58a98}.status-pill{background:#f4f2f5;color:#885367}.status-pill.approved{background:#f8f1f4}.status-pill.pending{background:#fff1dc;color:#8b6a39}
.story-stage{border:1px solid #e7e3e6;box-shadow:0 8px 30px #33303a0a;border-radius:22px}.story-heading h2{font-size:33px;letter-spacing:0;font-weight:600;color:#704c54}.story-heading p{color:#805c65}.story-eyebrow{color:#886875}.story-eyebrow .num{font-family:var(--sans)}.story-heading .save-mark{stroke:#b78595}.story-notes{border:1px solid var(--line);background:#fff;border-radius:22px}.story-notes:before{display:none}.progress-title{font-size:29px}.progress-track{border:0;background:#eeecef;height:6px}.progress-track>i{background:#d596aa}.notes-line{border-top:1px solid var(--line)}.mini-row{border-bottom:1px solid var(--line)}.mini-row .index,.mini-row .icon{color:#b58495}.quote{font-size:14px;letter-spacing:0;line-height:2;color:#946c7c}.quote cite{color:#9b7a87}
.stamp{border:1.5px dashed #bf8d95;color:#94606c;background:#fff8f2de;box-shadow:none}.stamp:before{border-color:#e2bbc1}.stamp strong{font-size:19px;letter-spacing:1px}.stamp.signed{border-color:#b96578;color:#a75366;background:#ffedf0e8}.stamp.signed:before{border-color:#d798a6}.signature-note,.signature-action button{color:#8b616b}.signature-action button{font-size:11px}.paper-copy{color:#ad8191}.story-paper:before{background:none}
.chat-page{background:#fff;border:1px solid var(--line)}.chat-head{background:#fff;border-bottom:1px solid #ece9ee;background-image:none}.chat-head h1{font-size:18px}.bubble{border:1px solid #e7e4e9;background:#fff;border-radius:5px 17px 17px}.mine .bubble{background:#faf2f5;border-color:#eddee4}.composer{background:#fff;border-color:#ece9ee}.compose-row textarea{border:1px solid #e2dee5;background:white}.avatar{border:1px solid #ead2d4}.avatar.fang{border-color:#d9d2e8}.badge{background:#b65c79}
.mobile-nav{background:#fffffffa;border-top:1px solid #ece9ee;backdrop-filter:blur(12px)}.mobile-nav button{color:#7b7480;border:0}.mobile-nav button.active{color:#aa4e6e;background:#faf4f6;border:0}
/* 首页只有两个内容区：双人打卡与最新消息。 */
.love-home{margin:0;min-height:0;max-width:850px;margin-inline:auto}
.love-welcome{display:flex;align-items:center;justify-content:space-between;position:relative;min-height:184px;padding:20px 30px;margin:0 0 24px;overflow:hidden;border-radius:28px;border:1px solid #eeeceb;background:#fbfbfa}
.love-welcome-copy{position:relative;z-index:1;flex:0 1 55%;min-width:0}.couple-caption{display:flex;align-items:center;gap:9px;font-size:12px;color:#a36b7e}.couple-caption .icon{width:13px;height:13px;fill:#d79cac;stroke:none}
.love-welcome h1{font:600 28px/1.5 var(--sans);letter-spacing:.5px;margin:9px 0 4px;color:#514a57}.love-welcome p{max-width:15em;font-size:13px;color:#7b7480;line-height:1.8}
.couple-illustration{width:47%;height:155px;position:relative;align-self:end}.love-welcome .hero-mascots{width:100%;max-width:300px;right:0;bottom:0;position:absolute;filter:saturate(.86)}
.floating-heart{position:absolute;color:#df9cb4;z-index:2}.floating-heart .icon{fill:currentColor;stroke:none}.heart-one{left:20%;top:12%;transform:rotate(-14deg)}.heart-one .icon{width:20px;height:20px}.heart-two{right:10%;top:0;transform:rotate(17deg)}.heart-two .icon{width:12px;height:12px;color:#edbdc7}
.love-home-content{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px;align-items:start}
.checkin-card{padding:24px;background:#fff;border:1px solid #e9e8ec;border-radius:25px;box-shadow:0 5px 25px #352c4007}
.home-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.home-section-heading h2{font:600 18px/1.4 var(--sans);margin:0;color:#514a57}.home-section-heading>span{font-size:12px;color:#7b7480}
.love-home .daily-stickers{display:grid;grid-template-columns:1fr 1fr;gap:30px;position:relative;margin:8px 0 16px}
.love-home .daily-sticker{display:flex;flex-direction:column;align-items:center;text-align:center;padding:18px 5px 15px;border:0;border-radius:20px;background:#faf9f8;gap:0}
.love-home .daily-sticker:nth-child(2){background:#f8f9fa}.love-home .daily-sticker.checked{background:#fdf8fa}
.avatar-glow{width:72px;height:72px;display:block;position:relative;border-radius:50%;background:#fff;margin-bottom:9px}.avatar-glow.fang{background:#fff}.love-home .sticker-avatar{width:65px;height:65px;display:block;margin:3px auto;overflow:hidden;border-radius:50%}
.avatar-check{position:absolute;right:-2px;bottom:2px;border:2px solid white;border-radius:50%;width:21px;height:21px;background:#c67992;color:white;display:grid;place-items:center}.avatar-check .icon{width:12px;height:12px;stroke-width:2.3}
.love-home .daily-sticker h3{font:600 15px/1.6 var(--sans);color:#57515b;margin:0 0 4px}.love-home .daily-sticker p{font-size:12px;color:#7b7480;margin:0}.love-home .daily-sticker.checked p{color:#ad617b}
.together-heart{position:absolute;left:50%;top:52px;transform:translateX(-50%);width:30px;height:30px;display:grid;place-items:center;color:#dfa9bb}.together-heart:before,.together-heart:after{content:"";position:absolute;width:16px;height:1px;background:#eed0dc;top:15px}.together-heart:before{left:-12px}.together-heart:after{right:-12px}.together-heart .icon{width:17px;height:17px;fill:#f3d0dd;stroke-width:1.3}.together-heart.both-here .icon{fill:#d88ca5;stroke:#c57390}
.checkin-sweet-note{font-size:12px;line-height:1.8;text-align:center;color:#7b7480;margin:18px 0 15px}.checkin-button{width:100%;min-height:46px;background:#b7637d;border-color:#b7637d}.checkin-button:disabled{background:#faf3f6;border-color:#faf3f6;color:#a25b76;opacity:1}
.latest-message-section{padding:24px 0 0;min-width:0}.latest-message-section .home-section-heading{margin-bottom:18px}.home-section-heading>.unread-pill{background:#faf0f4;color:#b05d79;border-radius:20px;padding:4px 9px;font-size:11px}
.latest-message-card{width:100%;display:flex;align-items:start;gap:13px;text-align:left;padding:19px 17px;border:1px solid #e9e5eb;border-radius:20px;background:#fff;color:#514a57;transition:background .15s}.latest-message-card:hover{background:#fcfafb}.latest-message-card.has-unread{border-color:#dfccd6;background:#fff}
.message-love-icon{width:40px;height:40px;flex-shrink:0;background:#f8f6f7;border-radius:13px;display:grid;place-items:center;color:#c28098}.message-love-icon .icon{width:21px;height:21px}.latest-message-card>.icon{width:16px;height:16px;color:#be97a7;align-self:center;flex-shrink:0}
.latest-message-content{min-width:0;flex:1;display:block}.latest-message-topline{display:flex;gap:10px;align-items:center;justify-content:space-between}.latest-message-topline strong{font-size:13px;font-weight:600;line-height:1.7}.latest-message-topline time{font-size:10px;color:#a68b96;white-space:nowrap}.latest-message-preview{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font-size:12px;line-height:1.85;color:#77717b;margin-top:5px;white-space:pre-wrap}.latest-message-status{display:block;font-size:11px;color:#b46c85;line-height:1.8;margin-top:9px}
@media(max-width:900px) and (min-width:721px){.love-welcome{padding:20px 26px}.love-home-content{gap:20px}.checkin-card{padding:22px}.latest-message-card{padding:17px 13px;gap:10px}.latest-message-topline{display:block}.latest-message-topline time{display:block;margin-top:3px}}
@media(max-width:720px){
 .main{padding:12px 18px calc(94px + env(safe-area-inset-bottom));max-width:540px}.topbar{margin-bottom:14px}.mobile-brand{font-size:19px;letter-spacing:0}.mobile-brand .icon{width:19px;height:19px}.top-actions .plain-link{font-size:11px}
 .love-home{margin:0;min-height:0}.love-welcome{padding:18px 20px;min-height:154px;border-radius:24px;margin-bottom:18px}.love-welcome h1{font-size:23px;margin-top:8px}.love-welcome p{font-size:12px}.couple-caption{font-size:11px;gap:7px}.couple-illustration{height:107px;width:47%;align-self:center}.love-welcome .hero-mascots{right:-18px;width:123%;max-width:none;bottom:-7px}.heart-one{left:22%;top:4%}.heart-one .icon{width:16px;height:16px}.heart-two{right:0;top:0}.heart-two .icon{width:11px;height:11px}
 .love-home-content{display:block}.checkin-card{padding:20px 18px;border-radius:23px}.home-section-heading{margin-bottom:18px}.home-section-heading h2{font-size:17px}.home-section-heading>span{font-size:11px}.love-home .daily-stickers{gap:28px;margin:0 0 12px}.love-home .daily-sticker{padding:14px 5px 13px;border-radius:18px}.avatar-glow{width:65px;height:65px}.love-home .sticker-avatar{width:60px;height:60px;margin-top:2px}.love-home .daily-sticker h3{font-size:15px}.love-home .daily-sticker p{font-size:11px}.together-heart{top:44px}.checkin-sweet-note{font-size:11px;margin:14px 0}.checkin-button{font-size:14px;min-height:44px;border-radius:14px}
 .latest-message-section{padding-top:25px}.latest-message-section .home-section-heading{margin-bottom:14px}.latest-message-card{padding:17px 15px;gap:12px;border-radius:19px}.latest-message-topline strong{font-size:13px}.latest-message-preview{font-size:12px}.latest-message-status{margin-top:6px}.message-love-icon{width:38px;height:38px}
 .story-heading h2{font-size:clamp(28px,8vw,36px);letter-spacing:0}.stamp strong{font-size:18px}.story-heading p{font-size:11px}.modal-head h2{font-size:21px}.page-intro h1{font-size:24px}.mobile-nav button{font-size:11px}.mobile-nav button svg{width:23px;height:23px}
}
@media(max-width:360px){.main{padding-left:14px;padding-right:14px}.mobile-brand{font-size:17px}.mobile-brand .icon{width:17px;height:17px}.top-actions .icon-button{width:38px;min-width:38px}.top-actions .plain-link{font-size:10px}.love-welcome{padding:17px 15px;min-height:142px}.love-welcome h1{font-size:21px}.love-welcome p{font-size:11px}.couple-illustration{width:44%;height:94px}.love-welcome .hero-mascots{right:-13px}.checkin-card{padding:18px 15px}.latest-message-card{gap:9px;padding:15px 12px}.message-love-icon{width:32px;height:35px}.latest-message-topline strong{font-size:12px}.latest-message-topline time{font-size:9px}.latest-message-card>.icon{width:13px}.stamp strong{font-size:17px}}

/* 长名称保持完整可读，手机上移除旁边的装饰图标。 */
@media(max-width:720px){.mobile-brand{font-size:17px;line-height:1.4;white-space:normal;letter-spacing:0;min-width:0;text-wrap:balance;overflow-wrap:anywhere}.topbar{gap:4px}.top-actions{flex-shrink:0}}
@media(max-width:360px){.mobile-brand{font-size:16px}.top-actions .plain-link{font-size:10px}.top-actions .icon-button{min-width:38px;width:38px}}

/* 两只小猫在首页和聊天中使用相同的完整头像，不裁切耳朵和饰品。 */
.avatar{object-fit:contain;padding:2px;background:#fff}.avatar.fang{background:#fffaf4;border-color:#ecd4bd}.message .avatar{width:40px;height:40px;flex-shrink:0}.chat-head .avatar{width:46px;height:46px;padding:3px}.avatar-glow{background:#fff}.avatar-glow.fang{background:#fff}.love-home .sticker-avatar{object-fit:contain;overflow:visible}.love-welcome .hero-mascots{filter:none}.message-love-icon{overflow:hidden;background:#faf9f7}.message-love-icon img{width:100%;height:100%;object-fit:contain;padding:2px}

/* 标题允许极长累计天数换行；插图始终完整显示。 */
.brand>span:last-child{min-width:0}.brand strong{overflow-wrap:anywhere}.love-welcome h1{white-space:nowrap}.love-welcome .hero-mascots{object-fit:contain}.love-home .daily-sticker{border:1px solid #efedef}.love-home .daily-sticker.checked{border-color:#ead8e1}.emoji-bar button:hover{background:#f4f2f5}
.story-stage{background:#fafafa}.paper-copy{color:#8c8590}
