*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #faf8f6;--bg2: #f3eff0;--card: #ffffff;--card-solid: #ffffff;--border: rgba(0, 0, 0, .07);--text: #2c2433;--text2: #8a8094;--accent: #e07a95;--pink: #f06088;--orange: #e8976a;--danger: #e05050;--green: #52b068;--radius: 14px}html{font-size:16px;-webkit-text-size-adjust:100%;touch-action:manipulation;overscroll-behavior:none}html,body{height:100%;overflow:auto}input,textarea,select{font-size:16px!important;touch-action:manipulation}.anniversary-bar,.dq-section,.quick-stare,.score-section,.achievements-section,.temp-section,.insights-section,.form-card,.user-card,.ch-card,.wish-item,.cap-item,.fb-item,.fb-admin-item,.confirm-box,.feedback-box,.notif-panel,.dropdown-menu{box-shadow:0 1px 4px #0000000f}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#faf8f6;background-image:radial-gradient(ellipse at 20% 0%,rgba(224,122,149,.12) 0%,transparent 50%),radial-gradient(ellipse at 80% 100%,rgba(232,151,106,.08) 0%,transparent 45%);color:var(--text);min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased}.app{max-width:480px;margin:0 auto;padding:12px 16px calc(68px + env(safe-area-inset-bottom,8px));min-height:100vh;min-height:100dvh}.app.UCNightMode_ColorWhite,.app.UCNightMode_ColorWhite *{color:var(--text)!important}.app.UCNightMode_transparentBkg{background:transparent!important}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;align-items:center;background:var(--card-solid);border-top:1px solid var(--border);padding:6px 0 env(safe-area-inset-bottom,6px);z-index:40;box-shadow:0 -2px 8px #0000000d;-webkit-transform:translateZ(0);transform:translateZ(0)}.bnav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 8px;text-decoration:none;color:var(--text2);-webkit-tap-highlight-color:transparent;transition:color .15s;min-width:52px;position:relative}.bnav-item.active{color:var(--accent)}.bnav-icon{font-size:20px;line-height:1;position:relative}.bnav-label{font-size:10px;font-weight:500}.bnav-badge{position:absolute;top:-4px;right:-8px;min-width:16px;height:16px;padding:0 4px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:8px;display:flex;align-items:center;justify-content:center;pointer-events:none}.loading{text-align:center;padding:4rem 0;color:var(--text2)}@keyframes skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}.skeleton{background:var(--bg2);border-radius:var(--radius);animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-dashboard{display:flex;flex-direction:column;gap:16px;padding-top:20px}.skeleton-header{height:32px;width:40%}.skeleton-card{height:120px}.skeleton-card-sm{height:60px}.skeleton-line{height:16px;width:70%}.refresh-hint{text-align:center;padding:8px;color:var(--text2);font-size:12px;opacity:0;transition:opacity .2s}.refresh-hint.visible{opacity:1}.auth-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80vh;min-height:80dvh;text-align:center;padding:20px}.auth-logo{font-size:48px;margin-bottom:12px;animation:auth-float 3s ease-in-out infinite}@keyframes auth-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.auth-page h1{font-size:1.8rem;font-weight:300;letter-spacing:.05em;margin-bottom:4px}.auth-page .subtitle{color:var(--text2);margin-bottom:2rem;font-size:14px}.auth-page form{width:100%;max-width:320px}.auth-page input{width:100%;padding:14px 16px;margin-bottom:12px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:16px;outline:none;transition:border-color .2s}.auth-page input:focus{border-color:var(--accent)}.auth-page button[type=submit]{width:100%;padding:14px;background:var(--accent);color:#111;font-weight:600;border:none;border-radius:var(--radius);font-size:16px;cursor:pointer}.auth-page button[type=submit]:active{transform:scale(.98)}.auth-page button:disabled{opacity:.5;cursor:not-allowed}.auth-page .switch{margin-top:1.5rem;color:var(--text2);font-size:14px}.auth-page .switch a{color:var(--accent);text-decoration:none}.pwd-input-wrap{position:relative;width:100%}.pwd-input-wrap input{width:100%;padding-right:40px}.pwd-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:16px;cursor:pointer;padding:4px}.error{color:var(--danger);font-size:14px;margin:8px 0}.btn-small{padding:6px 14px;background:transparent;border:1px solid var(--border);border-radius:20px;color:var(--text2);font-size:13px;cursor:pointer;-webkit-tap-highlight-color:transparent}.btn-small:active{border-color:var(--text2)}.btn-primary{padding:12px 20px;background:var(--accent);color:#111;font-weight:600;border:none;border-radius:var(--radius);font-size:15px;cursor:pointer}.btn-primary:active{transform:scale(.97)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-text{padding:8px 12px;background:none;border:none;color:var(--text2);font-size:14px;cursor:pointer}.dash-score-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.dash-score-pair{display:flex;align-items:baseline;gap:6px}.dash-score{font-size:13px;color:var(--text2)}.dash-score strong{font-size:20px;font-weight:700}.dash-score.leading strong{color:var(--accent)}.dash-score-sep{font-size:16px;color:var(--border);font-weight:300}.dash-header-actions{display:flex;gap:8px;align-items:center}.dash-header-actions .btn-small{text-decoration:none}.header-actions{display:flex;gap:8px;align-items:center}.header-actions .btn-small{text-decoration:none}.quick-stare{margin-bottom:20px}.balance-prompt{background:#f0608814;border:1px solid rgba(240,96,136,.15);border-radius:var(--radius);padding:12px 16px;margin-bottom:16px;font-size:13px;color:var(--text);line-height:1.6}.section-label{font-size:13px;color:var(--text2);margin-bottom:10px}.tags-dropdown{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:8px;margin-bottom:8px;animation:tags-slide .15s ease-out}@keyframes tags-slide{0%{opacity:0;max-height:0}to{opacity:1;max-height:200px}}.tags-grid{display:flex;flex-wrap:wrap;gap:6px}.quick-tag{padding:8px 14px;background:var(--card);border:1px solid var(--border);border-radius:20px;color:var(--text);font-size:13px;cursor:pointer;transition:all .15s;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.quick-tag:hover,.quick-tag.active{border-color:var(--accent);color:var(--accent)}.quick-tag.fav{border-color:var(--orange);background:#e8976a14}.fav-star{font-size:10px;margin-right:3px}.quick-tag:active{background:var(--accent);color:#111;border-color:var(--accent);transform:scale(.95)}.stare-input{width:100%;padding:14px 16px;margin-bottom:10px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:16px;outline:none}.stare-input:focus{border-color:var(--accent)}.stare-input-row{display:flex;gap:8px;margin-bottom:10px}.stare-input-row .stare-input{flex:1;margin-bottom:0}.voice-btn{width:44px;height:44px;flex-shrink:0;border-radius:var(--radius);border:1px solid var(--border);background:var(--card);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.voice-btn.active{background:#e0505026;border-color:var(--danger);animation:voice-pulse .8s ease-in-out infinite}@keyframes voice-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.voice-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;display:flex;align-items:center;justify-content:center;background:#0006;pointer-events:none;-webkit-user-select:none;user-select:none}.voice-popup{background:#282828eb;border-radius:16px;padding:28px 36px;min-width:160px;display:flex;flex-direction:column;align-items:center;gap:14px;transition:background .2s}.voice-popup.cancel{background:#b42828eb}.voice-wave-box{display:flex;align-items:center;justify-content:center;height:50px}.voice-waves{display:flex;align-items:center;gap:4px;height:40px}.voice-wave-bar{width:4px;border-radius:2px;background:#52c41a;animation:voice-wave .6s ease-in-out infinite}.voice-wave-bar:nth-child(1){height:10px;animation-delay:0s}.voice-wave-bar:nth-child(2){height:18px;animation-delay:.12s}.voice-wave-bar:nth-child(3){height:28px;animation-delay:.24s}.voice-wave-bar:nth-child(4){height:18px;animation-delay:.36s}.voice-wave-bar:nth-child(5){height:10px;animation-delay:.48s}@keyframes voice-wave{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}.voice-cancel-icon{width:60px;height:60px;border-radius:50%;background:#ffffff26;display:flex;align-items:center;justify-content:center;font-size:28px;color:#fff;font-weight:700}.voice-timer{color:#fff;font-size:24px;font-weight:600;margin:0}.voice-timer.warning{color:#ff4d4f;animation:timer-blink .5s ease-in-out infinite}@keyframes timer-blink{0%,to{opacity:1}50%{opacity:.5}}.voice-status{color:#ffffffb3;font-size:13px;margin:0}.voice-popup.cancel .voice-status{color:#fff}.stare-audio-attached{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;margin-bottom:10px;background:#e07a951a;border:1px solid rgba(224,122,149,.2);border-radius:var(--radius);font-size:13px;color:var(--text2)}.stare-audio-attached button{background:none;border:none;color:var(--text2);cursor:pointer;font-size:16px;padding:2px 6px;line-height:1}.voice-bubble{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-top:6px;background:#e07a951f;border:1px solid rgba(224,122,149,.2);border-radius:20px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s}.voice-bubble:active{background:#e07a9538}.voice-bubble-bars{display:flex;align-items:center;gap:2px;height:18px}.vb-bar{width:3px;border-radius:1.5px;background:var(--accent);transition:height .15s}.vb-bar:nth-child(1){height:7px}.vb-bar:nth-child(2){height:12px}.vb-bar:nth-child(3){height:18px}.voice-bubble.playing .vb-bar{animation:vb-play .5s ease-in-out infinite alternate}.voice-bubble.playing .vb-bar:nth-child(1){animation-delay:0s}.voice-bubble.playing .vb-bar:nth-child(2){animation-delay:.15s}.voice-bubble.playing .vb-bar:nth-child(3){animation-delay:.3s}@keyframes vb-play{0%{height:4px}to{height:18px}}.voice-bubble-dur{font-size:14px;color:var(--text)}.tl-video{display:block;max-height:200px;max-width:100%;border-radius:8px;margin-top:6px;border:1px solid var(--border)}.stare-btn{width:100%;padding:16px;margin-bottom:8px;background:var(--accent);color:#111;border:none;border-radius:var(--radius);font-size:18px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;-webkit-tap-highlight-color:transparent;transition:transform .1s}.stare-btn:not(:disabled):active{transform:scale(.97)}.stare-btn:disabled{opacity:.35;cursor:default}.stare-btn-emoji{font-size:22px}.floating-hearts{position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:1000;overflow:hidden}@keyframes float-up{0%{transform:translateY(0) scale(1);opacity:1}50%{opacity:1}to{transform:translateY(-80vh) scale(.3);opacity:0}}.float-heart{position:absolute;bottom:30%;font-size:24px;animation:float-up ease-out forwards}.stare-btn-text{letter-spacing:.5px}.more-levels-btn{display:block;width:100%;padding:8px;margin-bottom:6px;background:none;border:none;color:var(--text2);font-size:12px;cursor:pointer;text-align:center;-webkit-tap-highlight-color:transparent}.more-levels-btn:active,.more-levels-btn.active{color:var(--accent)}.level-expand{display:flex;gap:8px;margin-top:8px}.level-pill{flex:1;padding:10px 8px;text-align:center;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:13px;cursor:pointer;-webkit-tap-highlight-color:transparent}.level-pill:disabled{opacity:.3;cursor:default}.level-pill.level-big:not(:disabled):active{border-color:var(--orange);color:var(--orange)}.level-pill.level-super:not(:disabled):active{border-color:var(--pink);color:var(--pink)}.level-remaining{display:block;font-size:10px;color:var(--text2);margin-top:2px}.level-pill.level-deduct{border-color:var(--border);color:var(--text2)}.level-pill.level-deduct:active{border-color:var(--danger);color:var(--danger)}.deduction-inline{padding:12px;background:var(--bg2);border-radius:var(--radius);margin-top:8px}.deduct-hint{font-size:13px;color:var(--text2);margin-bottom:8px}.deduction-inline input{width:100%;padding:10px 14px;margin-bottom:8px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none}.deduction-inline input:focus{border-color:var(--danger)}.deduct-actions{display:flex;gap:8px}.deduction-toggle{display:block;width:100%;padding:10px;background:none;border:1px dashed var(--border);border-radius:var(--radius);color:var(--text2);font-size:13px;cursor:pointer;text-align:center;margin-bottom:16px;-webkit-tap-highlight-color:transparent;transition:all .15s}.deduction-toggle:active{border-color:var(--danger);color:var(--danger)}.deduction-card{background:var(--card);border-radius:var(--radius);padding:16px;margin-bottom:16px;border:1px solid var(--border)}.deduction-card h3{font-size:14px;font-weight:500;margin-bottom:4px}.deduction-card .hint{font-size:12px;color:var(--text2);margin-bottom:10px}.deduction-card input{width:100%;padding:10px 14px;margin-bottom:10px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none}.deduction-card input:focus{border-color:var(--danger)}.deduction-card .form-actions{display:flex;gap:8px}.btn-danger{padding:10px 20px;background:var(--danger);color:#fff;font-weight:600;border:none;border-radius:var(--radius);font-size:14px;cursor:pointer}.btn-danger:active{transform:scale(.97)}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.toast{position:fixed;top:env(safe-area-inset-top,16px);left:50%;transform:translate(-50%);padding:10px 24px;background:var(--green);color:#fff;border-radius:24px;font-size:14px;font-weight:600;z-index:100;animation:toastIn .3s ease;max-width:calc(100vw - 40px)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.confirm-box{background:var(--card);border-radius:var(--radius);padding:28px 20px;max-width:320px;width:100%;text-align:center}.confirm-emoji{font-size:36px;margin-bottom:8px}.confirm-title{font-size:17px;font-weight:600;margin-bottom:8px}.confirm-msg{font-size:14px;color:var(--text2);margin-bottom:12px;line-height:1.5}.confirm-item{background:var(--bg);padding:10px 14px;border-radius:8px;margin-bottom:16px;font-size:14px;color:var(--accent)}.confirm-btns{display:flex;gap:8px;justify-content:center}.bottom-sheet{position:fixed;bottom:0;left:50%;transform:translate(-50%);max-width:480px;width:100%;background:var(--card);border-radius:20px 20px 0 0;padding:12px 24px calc(24px + env(safe-area-inset-bottom,8px));text-align:center;box-shadow:0 -4px 20px #0000001f;animation:sheet-slide-up .25s ease-out}@keyframes sheet-slide-up{0%{transform:translate(-50%) translateY(100%)}to{transform:translate(-50%) translateY(0)}}.sheet-handle{width:36px;height:4px;background:var(--border);border-radius:2px;margin:0 auto 16px}.sheet-confirm-btn{width:100%;margin-top:12px;font-size:16px;padding:14px}.level-btn-big{background:var(--orange)}.level-btn-super{background:var(--pink);color:#fff}.achievement-popup{background:var(--card);border-radius:var(--radius);padding:32px 24px;max-width:280px;width:100%;text-align:center;animation:ach-pop .4s cubic-bezier(.34,1.56,.64,1)}@keyframes ach-pop{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.ach-popup-emoji{font-size:56px;margin-bottom:12px;animation:ach-bounce .6s ease .3s both}@keyframes ach-bounce{0%{transform:scale(0)}50%{transform:scale(1.3)}to{transform:scale(1)}}.ach-popup-title{font-size:18px;font-weight:700;color:var(--accent);margin-bottom:6px}.ach-popup-name{font-size:15px;color:var(--text2);margin-bottom:20px}.achievement-milestone{background:linear-gradient(135deg,var(--card) 0%,#fff5f7 50%,#fef3e2 100%);box-shadow:0 8px 32px #e07a9540}.ach-popup-actions{display:flex;gap:8px;width:100%}.ach-popup-actions .btn-primary{flex:1}.btn-share{flex:0 0 auto;padding:8px 16px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:14px;cursor:pointer}.btn-share:active{background:var(--border)}.score-section{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:16px}.score-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px}.score-current{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.sc-badge{font-size:13px;color:var(--text2)}.sc-badge strong{color:var(--text);font-size:17px;margin-left:3px}.sc-badge.leading strong{color:var(--accent)}.sc-sep{font-size:11px;color:var(--text2)}.range-tabs{display:flex;gap:2px;background:var(--bg);border-radius:6px;padding:2px;flex-shrink:0}.range-tab{padding:4px 8px;font-size:11px;background:none;border:none;border-radius:4px;color:var(--text2);cursor:pointer;-webkit-tap-highlight-color:transparent}.range-tab.active{background:var(--border);color:var(--text);font-weight:600}.chart-wrap{margin-top:4px}.chart-mode-toggle{display:flex;justify-content:flex-end;gap:4px;margin-bottom:4px}.chart-mode-btn{padding:3px 10px;font-size:11px;background:var(--bg2);border:1px solid var(--border);border-radius:10px;color:var(--text2);cursor:pointer;-webkit-tap-highlight-color:transparent}.chart-mode-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.chart-tooltip{background:#fff;border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:12px;box-shadow:0 2px 8px #0000001a}.chart-tooltip-date{color:var(--text2);margin-bottom:4px}.chart-legend{display:flex;justify-content:center;gap:16px;margin-top:6px}.legend-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text2)}.legend-dot{width:8px;height:8px;border-radius:50%}.timeline{margin-top:4px}.timeline h3{font-size:14px;color:var(--text2);margin-bottom:10px}.timeline.empty{text-align:center;color:var(--text2);padding:2rem 0;font-size:14px}.timeline-item{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.timeline-item:last-child{border-bottom:none}.tl-emoji{font-size:18px;flex-shrink:0;margin-top:1px}.tl-content{flex:1;min-width:0;font-size:14px;line-height:1.4}.tl-header{display:flex;justify-content:space-between;align-items:center}.tl-actor{font-weight:600;font-size:13px}.tl-points{font-weight:700;color:var(--green);font-size:13px}.tl-points.negative{color:var(--danger)}.tl-desc{color:var(--text2);font-size:12px;margin-top:2px;word-break:break-word}.tl-time{font-size:11px;color:var(--text2);flex-shrink:0}.tl-actions{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap}.tl-action-btn{padding:3px 10px;background:none;border:1px solid var(--border);border-radius:6px;color:var(--text2);font-size:11px;cursor:pointer;-webkit-tap-highlight-color:transparent}.tl-action-btn:active{border-color:var(--text2);color:var(--text)}.tl-action-btn.danger:active{border-color:var(--danger);color:var(--danger)}.tl-countdown{font-size:10px;color:var(--text2);opacity:.6}.tl-edit input{width:100%;padding:8px 10px;font-size:14px;margin-top:4px;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);outline:none}.tl-edit input:focus{border-color:var(--accent)}.tl-confirm-delete{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:12px;color:var(--danger)}.invite-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;text-align:center;padding:20px}.invite-emoji{font-size:48px;margin-bottom:16px}.invite-bounce{animation:auth-float 3s ease-in-out infinite}.invite-page h2{margin-bottom:8px;font-weight:500}.invite-page p{color:var(--text2);margin-bottom:16px;font-size:14px}.invite-from strong{color:var(--accent)}.invite-gen-btn{width:100%;max-width:280px}.invite-link-box{width:100%;max-width:360px}.invite-link-display{padding:14px;background:var(--bg2);border:1px dashed var(--accent);border-radius:var(--radius);margin-bottom:12px;cursor:pointer;transition:background .15s}.invite-link-display:active{background:#e07a951a}.invite-link-text{display:block;font-size:12px;color:var(--accent);word-break:break-all;margin-bottom:6px;line-height:1.4}.invite-copy-badge{font-size:12px;color:var(--text2)}.invite-actions{display:flex;gap:8px;margin-bottom:12px}.invite-actions .btn-primary{flex:1}.invite-share-btn{background:var(--orange)!important}.invite-accept-btn{width:100%;max-width:280px;font-size:16px;padding:16px}.invite-auth-btns{display:flex;flex-direction:column;gap:8px;align-items:center}.invite-auth-btns button{min-width:200px}.invite-link-box .hint{font-size:13px}.export-section{text-align:center;padding:20px 0;margin-top:8px;border-top:1px solid var(--border)}.export-btn{display:inline-block;padding:10px 24px;background:transparent;border:1px solid var(--border);border-radius:24px;color:var(--text2);font-size:13px;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent}.export-btn:active{border-color:var(--accent);color:var(--accent)}.export-inline{padding:3px 10px;background:none;border:1px solid var(--border);border-radius:10px;color:var(--text2);font-size:10px;cursor:pointer}.export-inline:active{border-color:var(--accent);color:var(--accent)}.chart-footer{display:flex;justify-content:space-between;align-items:center;margin-top:6px}.timeline-more{text-align:center;padding:16px 0}.load-more-btn{padding:10px 28px;background:transparent;border:1px solid var(--border);border-radius:24px;color:var(--text2);font-size:13px;cursor:pointer}.load-more-btn:active{border-color:var(--accent);color:var(--accent)}.load-more-btn:disabled{opacity:.5}.admin-page{padding-bottom:40px}.admin-page .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.admin-page .header h2{font-size:1.2rem;font-weight:500}.admin-page .header a{text-decoration:none}.admin-stats{display:flex;gap:16px;margin-bottom:14px;font-size:13px;color:var(--text2)}.user-list{display:flex;flex-direction:column;gap:8px}.user-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:10px}.user-info{flex:1;min-width:0}.user-main{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.user-nickname{font-weight:600;font-size:14px}.user-username{font-size:12px;color:var(--text2)}.admin-badge{padding:2px 8px;background:var(--accent);color:#111;font-size:10px;font-weight:600;border-radius:10px}.user-meta{display:flex;gap:8px;margin-top:3px;font-size:11px}.couple-badge{color:var(--pink)}.single-badge,.user-date{color:var(--text2)}.user-actions{display:flex;gap:4px;flex-shrink:0;flex-direction:column}.user-actions .tl-action-btn{white-space:nowrap}.user-actions .tl-action-btn:disabled{opacity:.3;cursor:not-allowed}.admin-tabs{display:flex;gap:2px;background:var(--bg);border-radius:8px;padding:3px;margin-bottom:16px}.admin-tab{flex:1;padding:8px;text-align:center;font-size:13px;background:none;border:none;border-radius:6px;color:var(--text2);cursor:pointer}.admin-tab.active{background:var(--border);color:var(--text);font-weight:600}.admin-section h3{font-size:15px;margin-bottom:14px;color:var(--text2)}.admin-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.stat-card{background:var(--bg2);border-radius:10px;padding:12px 8px;text-align:center}.stat-card.accent{background:#e07a951a}.stat-num{font-size:20px;font-weight:700;color:var(--text)}.stat-card.accent .stat-num{color:var(--accent)}.stat-label{font-size:10px;color:var(--text2);margin-top:2px}.admin-daily{margin-top:8px}.admin-daily h4{font-size:13px;color:var(--text2);margin-bottom:8px}.daily-bars{display:flex;gap:6px;height:80px;align-items:flex-end}.daily-bar-item{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end}.daily-bar-fill{width:100%;background:var(--accent);border-radius:4px 4px 0 0;min-height:2px;transition:height .5s}.daily-bar-label{font-size:9px;color:var(--text2);margin-top:4px}.daily-bar-count{font-size:10px;color:var(--text);font-weight:600}.admin-active{margin-top:12px}.admin-active h4{font-size:13px;color:var(--text2);margin-bottom:6px}.admin-active-row{display:flex;justify-content:space-between;font-size:13px;padding:4px 0}.admin-alert{background:#e07a951a;color:var(--accent);padding:10px;border-radius:var(--radius);text-align:center;font-size:13px;margin-top:12px}.config-item{margin-bottom:14px}.config-label{display:block;font-size:12px;color:var(--text2);margin-bottom:4px}.config-input{width:100%;padding:10px 12px;font-size:14px;background:var(--card);border:1px solid var(--border);border-radius:8px;color:var(--text);outline:none;resize:vertical}.config-input:focus{border-color:var(--accent)}.config-saving{font-size:11px;color:var(--accent);margin-left:8px}.more-tag{color:var(--text2);border-style:dashed}.time-bar{display:flex;gap:4px;margin-bottom:10px;background:var(--card);border-radius:8px;padding:3px}.time-btn{flex:1;padding:7px 4px;text-align:center;font-size:12px;background:none;border:none;border-radius:6px;color:var(--text2);cursor:pointer;-webkit-tap-highlight-color:transparent}.time-btn.active{background:var(--border);color:var(--text);font-weight:600}.custom-time-row{display:flex;align-items:center;gap:8px;margin-bottom:12px}.custom-time-row input{flex:1;padding:8px;font-size:13px;background:var(--card);border:1px solid var(--border);border-radius:8px;color:var(--text);outline:none;color-scheme:light}.custom-time-row span{color:var(--text2);font-size:13px}.menu-wrap{position:relative}.dropdown-menu{position:absolute;right:0;top:100%;margin-top:4px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;z-index:20;min-width:160px;box-shadow:0 4px 16px #0000001a;animation:menu-slide .15s ease-out}@keyframes menu-slide{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.menu-group{padding:4px 0}.menu-divider{height:1px;background:var(--border);margin:2px 0}.menu-icon{margin-right:8px;font-size:15px}.dropdown-menu button{display:flex;align-items:center;width:100%;padding:11px 16px;text-align:left;background:none;border:none;color:var(--text);font-size:14px;cursor:pointer}.dropdown-menu button:active{background:var(--bg2)}.tl-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;gap:8px}.tl-toolbar h3{font-size:14px;color:var(--text2);flex-shrink:0}.tl-toolbar h3 small{font-weight:400;color:var(--text2)}.tl-search{flex:1;max-width:180px}.tl-search input{width:100%;padding:6px 10px;font-size:13px;background:var(--card);border:1px solid var(--border);border-radius:6px;color:var(--text);outline:none}.tl-search input:focus{border-color:var(--accent)}.tl-date-header{font-size:12px;color:var(--text2);font-weight:500;padding:8px 0 4px;margin-top:4px;border-bottom:1px solid var(--border)}.tl-time-pills{display:flex;gap:4px;margin-bottom:6px}.tl-filters{display:flex;gap:4px;margin-bottom:10px;flex-wrap:wrap}.filter-btn{padding:4px 10px;font-size:11px;background:none;border:1px solid var(--border);border-radius:12px;color:var(--text2);cursor:pointer;-webkit-tap-highlight-color:transparent}.filter-btn.active{border-color:var(--accent);color:var(--accent)}.keywords-bar{display:flex;align-items:center;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border);flex-wrap:wrap}.kw-label{font-size:11px;color:var(--text2)}.kw-tag{padding:3px 10px;background:var(--bg);border-radius:10px;font-size:11px;color:var(--text)}.kw-tag small{color:var(--text2);margin-left:2px}.stats-chips{display:flex;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border);flex-wrap:wrap}.stat-chip{padding:4px 12px;background:var(--bg2);border-radius:12px;font-size:12px;color:var(--text);white-space:nowrap}.feedback-box{background:var(--card);border-radius:var(--radius);padding:20px;max-width:400px;width:100%;max-height:80vh;overflow-y:auto}.fb-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.fb-header h3{font-size:16px}.fb-tabs{display:flex;gap:2px;background:var(--bg);border-radius:6px;padding:2px;margin-bottom:14px}.fb-tab{flex:1;padding:6px;text-align:center;font-size:13px;background:none;border:none;border-radius:4px;color:var(--text2);cursor:pointer}.fb-tab.active{background:var(--border);color:var(--text);font-weight:600}.fb-form textarea{width:100%;padding:12px;font-size:14px;margin-bottom:10px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);outline:none;resize:vertical;font-family:inherit}.fb-form textarea:focus{border-color:var(--accent)}.fb-form .btn-primary{width:100%}.fb-hint{font-size:13px;color:var(--text2);line-height:1.5;margin-bottom:10px}.pull-refresh-indicator{text-align:center;padding:8px;font-size:12px;color:var(--accent);animation:ptr-spin .8s linear infinite}@keyframes ptr-spin{0%{opacity:.5}to{opacity:1}}.offline-banner{background:var(--danger);color:#fff;text-align:center;padding:6px;font-size:12px;border-radius:var(--radius);margin-bottom:8px}.diag-btn{position:fixed;top:8px;right:8px;z-index:100;width:28px;height:28px;border-radius:50%;background:var(--bg2);border:1px solid var(--border);font-size:12px;cursor:pointer;opacity:.5;display:flex;align-items:center;justify-content:center}.diag-btn:active{opacity:1}.version-tag-inline{font-size:10px;color:var(--border);font-weight:400;vertical-align:middle;margin-left:4px}.feedback-prompt{text-align:center;padding:14px;margin-top:12px;background:var(--card);border:1px dashed var(--border);border-radius:var(--radius);cursor:pointer;-webkit-tap-highlight-color:transparent}.feedback-prompt span{font-size:13px;color:var(--text2)}.feedback-prompt:active span{color:var(--accent)}.fb-empty{color:var(--text2);font-size:13px;text-align:center;padding:20px 0}.fb-list{display:flex;flex-direction:column;gap:10px}.fb-item{padding:10px;background:var(--bg);border-radius:8px}.fb-content{font-size:14px;margin-bottom:4px}.fb-time{font-size:11px;color:var(--text2)}.fb-reply{margin-top:8px;padding:8px;background:var(--card);border-radius:6px;border-left:3px solid var(--accent)}.fb-reply-label{font-size:11px;color:var(--accent);font-weight:600}.fb-reply p{font-size:13px;margin-top:2px}.fb-admin-list{display:flex;flex-direction:column;gap:10px}.fb-admin-item{padding:12px;background:var(--bg);border-radius:8px}.fb-admin-header{display:flex;justify-content:space-between;margin-bottom:6px}.fb-admin-user{font-size:13px;font-weight:600}.fb-reply-form{display:flex;gap:6px;margin-top:8px}.fb-reply-form input{flex:1;padding:6px 10px;font-size:13px;background:var(--card);border:1px solid var(--border);border-radius:6px;color:var(--text);outline:none}.fb-reply-form input:focus{border-color:var(--accent)}.anniversary-bar{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px;background-image:linear-gradient(135deg,#e07a950f,#e8976a0a)}.anni-main{display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent}.anni-days{font-size:14px;color:var(--text2)}.anni-days strong{color:var(--accent);font-size:18px;font-weight:700}.anni-next{font-size:12px;color:var(--pink);font-weight:500}.anni-next.today{color:var(--danger);font-weight:700;animation:dq-pulse 1.5s ease-in-out infinite}.anni-manage{margin-top:10px;border-top:1px solid var(--border);padding-top:10px}.anni-together-setting{margin-bottom:8px}.anni-together-setting label{font-size:12px;color:var(--text2);display:block;margin-bottom:4px}.anni-together-row{display:flex;gap:6px;align-items:center}.anni-together-row input{flex:1;padding:6px 8px;font-size:13px;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);outline:none;color-scheme:light}.anni-hint{font-size:11px;color:var(--text2);margin-top:4px}.anni-divider{height:1px;background:var(--border);margin:10px 0}.anni-section-label{font-size:12px;color:var(--text2);margin-bottom:6px}.anni-item{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:13px}.anni-add{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.anni-add input,.anni-add select{padding:6px 8px;font-size:13px;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);outline:none}.anni-add input{flex:1;min-width:80px}.anni-add select{width:50px;color-scheme:light}.anni-add input[type=date]{color-scheme:light}.achievements-section{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;margin-bottom:14px}.ach-header{display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent}.ach-title{font-size:14px;color:var(--text2)}.ach-title small{font-weight:400}.ach-toggle{font-size:12px;color:var(--text2)}.ach-badges-inline{display:flex;gap:6px;margin-top:8px;align-items:center}.ach-badges-inline .ach-badge{font-size:20px}.ach-more{font-size:11px;color:var(--text2)}.ach-detail{margin-top:10px}.ach-group{margin-bottom:10px}.ach-group-label{font-size:12px;color:var(--text2);margin-bottom:6px}.ach-badges{display:flex;flex-wrap:wrap;gap:6px}.ach-badge{display:inline-flex;flex-direction:column;align-items:center;padding:8px 10px;background:var(--bg);border-radius:8px;font-size:20px;min-width:60px;text-align:center}.ach-badge small{font-size:10px;color:var(--text2);margin-top:2px}.ach-badge.unlocked{border:1px solid var(--accent)}.ach-badge.unlocked small{color:var(--accent)}.ach-badge.locked{opacity:.4}.ach-empty{font-size:12px;color:var(--text2)}.recap-page{padding-bottom:40px}.recap-page .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.recap-page .header h2{font-size:1.2rem;font-weight:500}.recap-page .header a{text-decoration:none}.recap-period{display:flex;gap:4px;margin-bottom:16px;background:var(--card);border-radius:8px;padding:3px}.recap-hero{text-align:center;padding:24px 0;margin-bottom:16px}.recap-days{font-size:14px;color:var(--text2);margin-bottom:4px}.recap-days strong{font-size:32px;color:var(--accent)}.recap-total{font-size:13px;color:var(--text2)}.recap-total strong{color:var(--text)}.recap-vs{display:flex;align-items:center;gap:12px;margin-bottom:16px}.recap-person{flex:1;text-align:center;padding:14px 8px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.recap-name{font-size:15px;font-weight:600;margin-bottom:4px}.recap-stat{font-size:12px;color:var(--text2)}.recap-divider{font-size:20px;flex-shrink:0}.recap-stat strong{color:var(--text);font-weight:600}.ratio-bar-wrap{margin-bottom:16px}.ratio-bar{display:flex;height:8px;border-radius:4px;overflow:hidden}.ratio-left,.ratio-right{transition:width .8s ease-out}.ratio-labels{display:flex;justify-content:space-between;margin-top:4px;font-size:11px;font-weight:600}.recap-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:12px}.recap-card-minor{opacity:.7}.recap-card-title{font-size:13px;color:var(--text2);margin-bottom:8px}.recap-card-value{font-size:20px;font-weight:700;color:var(--accent)}.recap-card-sub{font-size:12px;color:var(--text2);margin-top:4px}.recap-top-list{display:flex;flex-direction:column;gap:6px}.recap-top-item{display:flex;align-items:center;gap:8px;font-size:14px}.recap-rank{color:var(--accent);font-weight:700;width:24px}.recap-item-name{flex:1}.recap-item-cnt{color:var(--text2);font-size:12px}.recap-highlight{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}.recap-highlight:last-child{border-bottom:none}.recap-hl-desc{color:var(--text2);flex:1}.recap-hl-date{font-size:11px;color:var(--text2)}.recap-monthly{display:flex;align-items:center;gap:12px;margin:8px 0}.recap-month-col{flex:1;text-align:center}.recap-month-label{font-size:12px;color:var(--text2);margin-bottom:4px}.recap-month-value{font-size:20px;font-weight:700;color:var(--accent)}.recap-month-sub{font-size:12px;color:var(--text2)}.recap-month-vs{color:var(--border);font-size:14px}.recap-month-trend{text-align:center;font-size:13px;color:var(--text2);margin-top:4px}.dropdown-menu a{display:flex;align-items:center;width:100%;padding:11px 16px;text-align:left;color:var(--text);font-size:14px;text-decoration:none}.dropdown-menu a:active{background:var(--bg2)}.dq-section{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px;background-image:linear-gradient(135deg,#e07a950a,#e8976a0a)}.dq-header{display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent}.dq-label{font-size:14px;font-weight:500}.dq-done{font-size:11px;color:var(--green);background:#52b0681a;padding:2px 8px;border-radius:8px}.dq-new{font-size:10px;color:#fff;background:var(--pink);padding:2px 8px;border-radius:8px;font-weight:600;animation:dq-pulse 2s ease-in-out infinite}@keyframes dq-pulse{0%,to{opacity:1}50%{opacity:.6}}.dq-body{margin-top:12px}.dq-question{font-size:15px;font-weight:500;margin-bottom:14px;line-height:1.6;padding:10px 14px;background:var(--bg);border-radius:10px;border-left:3px solid var(--accent)}.dq-answer-form textarea{width:100%;padding:12px;font-size:14px;margin-bottom:10px;background:var(--bg);border:1px solid var(--border);border-radius:10px;color:var(--text);outline:none;resize:vertical;font-family:inherit}.dq-answer-form textarea:focus{border-color:var(--accent)}.dq-answer-form .btn-primary{width:100%}.dq-answers{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dq-my-answer,.dq-partner-answer{padding:12px;background:var(--bg);border-radius:10px;min-height:60px}.dq-my-answer{border-top:3px solid var(--accent)}.dq-partner-answer{border-top:3px solid var(--orange)}.dq-my-answer p,.dq-partner-answer p{font-size:14px;line-height:1.5}.dq-who{font-size:11px;color:var(--text2);display:block;margin-bottom:6px;font-weight:500}.dq-hidden{color:var(--text2);font-style:italic;font-size:13px}.dq-waiting{font-size:13px;color:var(--text2);text-align:center;padding:12px 0;grid-column:span 2}.wishes-page{padding-bottom:40px}.wishes-page .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.wishes-page .header h2{font-size:1.2rem;font-weight:500}.wishes-page .header a{text-decoration:none}.wish-tabs{display:flex;gap:2px;background:var(--card);border-radius:8px;padding:3px;margin-bottom:14px}.wish-tab{flex:1;padding:8px;text-align:center;font-size:13px;background:none;border:none;border-radius:6px;color:var(--text2);cursor:pointer}.wish-tab.active{background:var(--border);color:var(--text);font-weight:600}.wish-add{display:flex;gap:8px;margin-bottom:14px}.wish-add input{flex:1;padding:12px;font-size:14px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none}.wish-add input:focus{border-color:var(--accent)}.wish-list{display:flex;flex-direction:column;gap:8px}.wish-item{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);transition:all .3s ease}.wish-item.done{opacity:.6;background:var(--bg2)}.wish-item.done .wish-content span:first-child{text-decoration:line-through;color:var(--text2)}.wish-content{flex:1;font-size:14px}.wish-planned{display:inline-block;margin-left:6px;font-size:10px;color:#fff;background:var(--pink);padding:2px 8px;border-radius:8px;font-weight:600;animation:wish-plan-pulse 2s ease-in-out infinite}@keyframes wish-plan-pulse{0%,to{opacity:1}50%{opacity:.7}}.wish-actions{display:flex;gap:4px;flex-shrink:0}.wish-empty{color:var(--text2);font-size:13px;text-align:center;padding:20px 0}.empty-guide{text-align:center;padding:28px 16px}.empty-emoji{font-size:36px;display:block;margin-bottom:10px}.empty-guide p{color:var(--text2);font-size:14px;margin-bottom:4px}.empty-hint{font-size:12px!important;color:var(--text2);opacity:.7}.capsules-page{padding-bottom:40px}.capsules-page .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.capsules-page .header h2{font-size:1.2rem;font-weight:500}.capsules-page .header a{text-decoration:none}.cap-tabs{display:flex;gap:2px;background:var(--card);border-radius:8px;padding:3px;margin-bottom:14px}.cap-list{display:flex;flex-direction:column;gap:10px}.cap-item{padding:14px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);transition:all .3s ease}.cap-item.unlocked{border-color:var(--accent);background:linear-gradient(135deg,#e07a950d,#e8976a0d);animation:cap-reveal .5s ease-out}@keyframes cap-reveal{0%{opacity:0;transform:scale(.95)}50%{transform:scale(1.02)}to{opacity:1;transform:scale(1)}}.cap-item.unlocked .cap-message{position:relative}.cap-item.unlocked .cap-message:before{content:"💌";position:absolute;left:-6px;top:-6px;font-size:16px;animation:cap-bounce 2s ease-in-out infinite}@keyframes cap-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.cap-message{font-size:14px;line-height:1.5;padding-left:18px}.cap-date{font-size:11px;color:var(--text2);margin-top:6px;display:block;padding-left:18px}.cap-item.locked{background:repeating-linear-gradient(-45deg,var(--card),var(--card) 8px,var(--bg2) 8px,var(--bg2) 10px);border-style:dashed}.cap-locked{display:flex;align-items:center;gap:10px;font-size:22px}.cap-locked span:first-child{animation:cap-shake 3s ease-in-out infinite}@keyframes cap-shake{0%,90%,to{transform:rotate(0)}93%{transform:rotate(-5deg)}96%{transform:rotate(5deg)}}.cap-condition{font-size:12px;color:var(--text2)}.cap-meta{display:flex;justify-content:space-between;margin-top:6px;font-size:11px}.cap-status-open{color:var(--green)}.cap-status-locked{color:var(--text2)}.cap-form textarea{width:100%;padding:12px;font-size:14px;margin-bottom:10px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);outline:none;resize:vertical;font-family:inherit}.cap-form textarea:focus{border-color:var(--accent)}.cap-unlock-row{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.cap-unlock-row label{font-size:13px;color:var(--text2)}.cap-unlock-row select,.cap-unlock-row input{padding:8px;font-size:13px;background:var(--card);border:1px solid var(--border);border-radius:6px;color:var(--text);outline:none;color-scheme:light}.cap-form .btn-primary{width:100%}.insights-section{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px}.insights-label{font-size:14px;font-weight:500;margin-bottom:10px}.insights-list{display:flex;flex-direction:column;gap:8px}.insight-item{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.5;padding:10px 12px;background:var(--bg2);border-radius:10px}.insight-emoji{flex-shrink:0;font-size:18px}.insight-text{color:var(--text)}.temp-section{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px;background-image:linear-gradient(135deg,#e07a9508,#e8976a08)}.temp-main{display:flex;align-items:center;gap:12px}.temp-emoji{font-size:32px;flex-shrink:0;animation:temp-glow 2s ease-in-out infinite}@keyframes temp-glow{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.temp-info{flex:1}.temp-bar-wrap{height:10px;background:var(--bg2);border-radius:5px;overflow:hidden;margin-bottom:6px;position:relative}.temp-bar{height:100%;border-radius:5px;transition:width .8s cubic-bezier(.25,.46,.45,.94);background:linear-gradient(90deg,#47bfff,#52b068,#e8976a 60%,#e07a95,#f06088);background-size:300% 100%}.temp-label{font-size:14px;font-weight:500}.temp-label small{color:var(--text2);font-weight:400}.temp-breakdown{display:flex;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.temp-factor{flex:1;text-align:center;font-size:11px;color:var(--text2);padding:6px 4px;background:var(--bg2);border-radius:8px}.notif-wrap{position:relative}.notif-btn{position:relative;font-size:14px}.notif-badge{position:absolute;top:-4px;right:-4px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px}.notif-panel{position:absolute;right:0;top:100%;margin-top:4px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);width:280px;max-height:360px;overflow-y:auto;z-index:30}.notif-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border);font-size:14px;font-weight:600}.notif-header-actions{display:flex;gap:4px}.notif-list{padding:4px 0}.notif-item{display:flex;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border)}.notif-item:last-child{border-bottom:none}.notif-item.unread{background:#e07a950f}.notif-type-icon{font-size:18px;flex-shrink:0;margin-top:1px}.notif-content{flex:1;min-width:0}.notif-title{font-size:13px;font-weight:500}.notif-body{font-size:12px;color:var(--text2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notif-time{font-size:10px;color:var(--text2);margin-top:4px;display:block}.notif-empty{color:var(--text2);font-size:13px;text-align:center;padding:20px}.challenges-page{padding-bottom:40px}.challenges-page .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.challenges-page .header h2{font-size:1.2rem;font-weight:500}.challenges-page .header a{text-decoration:none}.ch-generate{text-align:center;padding:24px 0}.ch-generate p{color:var(--text2);margin-bottom:12px}.ch-list{display:flex;flex-direction:column;gap:12px}.ch-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.ch-card.completed{border-color:var(--green)}.ch-card.expired{opacity:.5}.ch-head{display:flex;gap:10px;align-items:flex-start;margin-bottom:12px}.ch-emoji{font-size:28px;flex-shrink:0}.ch-titles{flex:1}.ch-title{display:block;font-size:15px;font-weight:600}.ch-desc{display:block;font-size:12px;color:var(--text2);margin-top:2px}.ch-date{font-size:11px;color:var(--text2);flex-shrink:0}.ch-progress{display:flex;flex-direction:column;gap:6px}.ch-user{display:flex;align-items:center;gap:8px;font-size:12px}.ch-user span:first-child{width:20px;color:var(--text2)}.ch-bar-wrap{flex:1;height:6px;background:var(--bg);border-radius:3px;overflow:hidden}.ch-bar{height:100%;background:var(--accent);border-radius:3px;transition:width .3s}.ch-bar.partner{background:var(--pink)}.ch-count{font-size:11px;color:var(--text2);width:30px;text-align:right}.ch-checkin{margin-top:10px;width:100%}.ch-done-label{display:block;text-align:center;margin-top:8px;font-size:13px;color:var(--green)}.ch-both-done{display:block;text-align:center;margin-top:4px;font-size:14px;font-weight:600;color:var(--green)}.ch-expired-toggle{display:block;width:100%;padding:12px;margin-top:12px;background:none;border:1px dashed var(--border);border-radius:var(--radius);color:var(--text2);font-size:13px;cursor:pointer;text-align:center}.ch-expired-toggle:active{border-color:var(--text2);color:var(--text)}.confetti-container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden;z-index:10}.ch-card{position:relative;overflow:hidden}@keyframes confetti-fall{0%{transform:translateY(-20px) rotate(0);opacity:1}to{transform:translateY(200px) rotate(720deg);opacity:0}}.confetti-piece{position:absolute;top:-10px;border-radius:2px;animation:confetti-fall ease-out forwards}.my-page{padding-bottom:16px}.my-header{text-align:center;padding:24px 16px 20px;background:linear-gradient(135deg,#e07a951f,#e8976a1a);border-radius:var(--radius);margin-bottom:16px}.my-names{display:flex;align-items:center;justify-content:center;gap:8px;font-size:18px;font-weight:700;color:var(--text)}.my-heart{font-size:20px}.my-together{margin-top:6px;font-size:14px;color:var(--text2)}.my-together strong{color:var(--accent);font-size:18px}.my-section-title{font-size:15px;font-weight:700;color:var(--text);margin-bottom:10px}.my-achievements{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:16px;box-shadow:0 1px 4px #0000000f}.my-ach-summary{font-size:12px;color:var(--text2);margin-bottom:10px}.my-ach-grid{display:flex;flex-wrap:wrap;gap:8px}.my-ach-item{display:flex;flex-direction:column;align-items:center;gap:3px;width:64px;padding:8px 4px;border-radius:10px;background:var(--bg);text-align:center;transition:opacity .2s}.my-ach-item.unlocked{background:#e07a951a}.my-ach-item.unlocked.partner{background:#f060881a}.my-ach-item.locked{opacity:.45}.my-ach-emoji{font-size:22px;line-height:1}.my-ach-label{font-size:10px;color:var(--text2);line-height:1.2;word-break:break-all}.my-links{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:16px;box-shadow:0 1px 4px #0000000f}.my-link-grid{display:flex;gap:10px}.my-link-card{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 8px;background:var(--bg);border-radius:10px;text-decoration:none;color:var(--text);border:none;cursor:pointer;font-family:inherit;font-size:inherit;-webkit-tap-highlight-color:transparent;transition:background .15s}.my-link-card:active{background:var(--bg2)}.my-link-icon{font-size:24px}.my-link-label{font-size:12px;font-weight:500;color:var(--text2)}.my-stats{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:16px;box-shadow:0 1px 4px #0000000f}.my-stats-grid{display:flex;gap:10px}.my-stat-card{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;background:var(--bg);border-radius:10px;text-align:center}.my-stat-value{font-size:18px;font-weight:700;color:var(--accent)}.my-stat-label{font-size:11px;color:var(--text2)}.my-settings{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:16px;box-shadow:0 1px 4px #0000000f}.my-setting-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--border);cursor:pointer;-webkit-tap-highlight-color:transparent;font-size:14px}.my-toggle{width:40px;height:22px;background:var(--bg2);border-radius:11px;position:relative;transition:background .2s}.my-toggle.on{background:var(--accent)}.my-toggle-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 3px #00000026}.my-toggle.on .my-toggle-knob{transform:translate(18px)}.my-logout-btn{width:100%;margin-top:12px;padding:12px;background:none;border:1px solid var(--danger);border-radius:var(--radius);color:var(--danger);font-size:14px;font-weight:500;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:inherit}.my-logout-btn:active{background:#e050500f}.my-notifications{margin-top:16px}.my-notif{padding:8px 0;border-bottom:1px solid var(--border)}.my-notif.unread{font-weight:500}.my-notif-title{font-size:13px;display:block}.my-notif-body{font-size:12px;color:var(--text2);display:block;margin-top:2px}.my-notif-time{font-size:10px;color:var(--text2)}.my-empty{font-size:13px;color:var(--text2);text-align:center;padding:16px 0}.my-mark-read-btn{background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;padding:4px 8px;font-family:inherit}.stare-media-btn,.stare-image-btn{flex-shrink:0;width:40px;height:40px;border:1px solid var(--border);border-radius:10px;background:var(--card);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;transition:border-color .15s}.stare-media-btn.has-media,.stare-image-btn.has-image{border-color:var(--accent);background:#e07a9514}.stare-media-btn:active,.stare-image-btn:active{transform:scale(.95)}.stare-image-preview-row{display:flex;align-items:flex-start;gap:6px;margin-bottom:10px}.stare-image-preview{width:60px;height:60px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.stare-image-remove{width:20px;height:20px;border-radius:50%;border:none;background:var(--danger);color:#fff;font-size:12px;line-height:20px;text-align:center;cursor:pointer;flex-shrink:0;padding:0;-webkit-tap-highlight-color:transparent}.tl-image{display:block;max-height:120px;max-width:100%;border-radius:8px;margin-top:6px;cursor:pointer;border:1px solid var(--border);object-fit:cover}.beian-footer{text-align:center;margin-top:24px;padding:12px 16px calc(env(safe-area-inset-bottom) + 12px);font-size:12px;color:var(--text2);opacity:.7}.beian-footer a{color:inherit;text-decoration:none}.beian-footer a:hover{text-decoration:underline}.my-page .beian-footer{margin-bottom:80px}
