:root{--surface-page:#fff;--surface-primary:#fff;--surface-secondary:#f5f5f5;--surface-tertiary:#ececec;--surface-depth-1:#fafafa;--surface-depth-2:#f6f6f6;--surface-depth-3:#f3f3f3;--surface-depth-4:#ececec;--text-primary:#111;--text-body:#333;--text-secondary:#666;--text-muted:#999;--border-light:#eee;--border-medium:#ddd;--border-strong:#ccc;--shadow-card:0 2px 8px #00000012;--shadow-popup:0 4px 16px #0000001f;--shadow-modal:0 8px 30px #0000002e;--overlay-backdrop:#0006;--overlay-heavy:#0009;--color-primary:#1976d2;--color-primary-light:#64b5f6;--color-primary-lighter:#90caf9;--color-primary-bg:#1976d20d;--color-success:#43a047;--color-success-dark:#2e7d32;--color-success-bg:#e8f5e9;--color-error:#e53935;--color-warning:#c47f00;--color-warning-bg:#fff8ec;--color-warning-border:#f0c060;--color-gold:#ffd54f;--color-gold-light:#ffe082;--color-gold-dark:#d4a017;--color-gold-glow:#ffd54f80;--color-goldenrod:#daa520;--color-incomplete:#eee;--color-maintain-bg:#fff3e0;--color-toggle-off:#ccc;--color-skeleton-base:#eee;--color-skeleton-shine:#f5f5f5;--league-bronze-bg:#f5e6d3;--league-bronze-text:#8b5e3c;--league-silver-bg:#ebebeb;--league-silver-text:#555;--league-gold-bg:#fff8e1;--league-gold-text:#b45309;--league-diamond-bg:#e0f7fa;--league-diamond-text:#00695c;--league-platinum-bg:#ede9fe;--league-platinum-text:#5b21b6}[data-theme=dark]{--surface-page:#121212;--surface-primary:#1e1e1e;--surface-secondary:#2a2a2a;--surface-tertiary:#333;--surface-depth-1:#1e1e1e;--surface-depth-2:#232323;--surface-depth-3:#282828;--surface-depth-4:#2e2e2e;--text-primary:#e8e8e8;--text-body:#d0d0d0;--text-secondary:#a0a0a0;--text-muted:#707070;--border-light:#2a2a2a;--border-medium:#3a3a3a;--border-strong:#4a4a4a;--shadow-card:0 2px 8px #0000004d;--shadow-popup:0 4px 16px #0006;--shadow-modal:0 8px 30px #00000080;--overlay-backdrop:#0009;--overlay-heavy:#000000bf;--color-primary:#42a5f5;--color-primary-light:#90caf9;--color-primary-lighter:#bbdefb;--color-primary-bg:#42a5f51a;--color-success:#66bb6a;--color-success-dark:#43a047;--color-success-bg:#43a04733;--color-error:#ef5350;--color-warning:#e5a100;--color-warning-bg:#e5a1001a;--color-warning-border:#f0c0604d;--color-gold:#ffd54f;--color-gold-light:#ffe082;--color-gold-dark:#d4a017;--color-gold-glow:#ffd54f59;--color-goldenrod:#daa520;--color-incomplete:#2a2a2a;--color-maintain-bg:#ffb4321f;--color-toggle-off:#555;--color-skeleton-base:#2a2a2a;--color-skeleton-shine:#333;--league-bronze-bg:#f5e6d326;--league-bronze-text:#d4a574;--league-silver-bg:#ebebeb1f;--league-silver-text:#b0b0b0;--league-gold-bg:#fff8e11f;--league-gold-text:#e5a100;--league-diamond-bg:#e0f7fa1f;--league-diamond-text:#4db6ac;--league-platinum-bg:#ede9fe1f;--league-platinum-text:#b39ddb;color-scheme:dark}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff;background:var(--surface-page);color:#333;color:var(--text-body);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.recharts-surface{overflow:visible!important;overflow-clip-margin:unset!important}.group-level{padding-left:8px;position:relative}.group-level:before{background:#ddd;background:var(--border-medium);bottom:0;content:"";left:4px;opacity:.9;position:absolute;top:0;width:1px}.group-level[data-level="1"]:before{display:none}.group-level[data-level="2"]{background:#fafafa;background:var(--surface-depth-1);padding-left:12px}.group-level[data-level="3"]{background:#f6f6f6;background:var(--surface-depth-2);padding-left:18px}.habit-name-input::placeholder{color:#666!important;color:var(--text-secondary)!important;opacity:1!important}.habit-name-input::-webkit-input-placeholder{color:#666!important;color:var(--text-secondary)!important;opacity:1!important}.habit-name-input::-moz-placeholder{color:#666!important;color:var(--text-secondary)!important;opacity:1!important}.habit-name-input:-ms-input-placeholder{color:#666!important;color:var(--text-secondary)!important;opacity:1!important}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:.7;transform:translateY(0)}}@keyframes tagPillIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.tag-input-container{animation:slideInFromLeft .3s ease}@keyframes slideInFromLeft{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}.frequency-slider{-webkit-appearance:none;appearance:none;background:#ddd;background:var(--border-medium);background-clip:content-box;border-radius:4px;height:8px;margin:-12px 0;outline:none;padding:12px 0;touch-action:none}.frequency-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#1976d2;background:var(--color-primary);border-radius:50%;box-shadow:0 2px 6px #00000040;cursor:pointer;height:28px;-webkit-transition:all .15s ease;transition:all .15s ease;width:28px}.frequency-slider::-moz-range-thumb{background:#1976d2;background:var(--color-primary);border:none;border-radius:50%;box-shadow:0 2px 6px #00000040;cursor:pointer;height:28px;-moz-transition:all .15s ease;transition:all .15s ease;width:28px}.frequency-slider.dragging::-webkit-slider-thumb{box-shadow:0 3px 10px #00000059;height:32px;width:32px}.frequency-slider.dragging::-moz-range-thumb{box-shadow:0 3px 10px #00000059;height:32px;width:32px}.group-level[data-level="4"]{background:#f3f3f3;background:var(--surface-depth-3);padding-left:22px}[data-theme=dark] ::-webkit-scrollbar{width:8px}[data-theme=dark] ::-webkit-scrollbar-track{background:#f5f5f5;background:var(--surface-secondary)}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#ccc;background:var(--border-strong);border-radius:4px}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#666}::selection{background:#1976d2;background:var(--color-primary);color:#fff}.effective-bar{box-sizing:border-box;display:flex;flex-direction:column;gap:2px;padding:0 16px 10px;transition:opacity .2s ease;width:100%}.effective-bar--loading{opacity:.5;pointer-events:none}.effective-bar__tier-row{align-items:center;display:flex;gap:5px;position:relative}.effective-bar__tier-current{align-items:center;display:inline-flex;font-size:15px;font-weight:700;gap:4px;white-space:nowrap}.effective-bar__tier-current--clickable{-webkit-tap-highlight-color:transparent;cursor:pointer}.effective-bar__league-popup{background:var(--surface-primary);border:1px solid var(--border-medium);border-radius:8px;box-shadow:var(--shadow-popup);left:0;margin-top:4px;min-width:150px;padding:8px 12px;position:absolute;top:100%;white-space:nowrap;z-index:10}.effective-bar__league-popup-title{border-bottom:1px solid var(--border-light);color:var(--text-body);font-size:12px;font-weight:700;margin-bottom:4px;padding-bottom:4px}.effective-bar__league-popup-row{color:var(--text-secondary);display:flex;font-size:12px;gap:16px;justify-content:space-between;padding:2px 0}.effective-bar__league-popup-row span:last-child{color:var(--text-body);font-weight:600}.league-icon{display:inline-block;flex-shrink:0;vertical-align:middle}.effective-bar__tier-arrow{color:var(--text-muted);font-size:13px}.effective-bar__tier-next{font-size:14px;font-weight:600;opacity:.6;white-space:nowrap}.effective-bar__detail-row{align-items:center;display:flex;min-height:18px;position:relative}.effective-bar__breakdown{align-items:center;display:flex;gap:4px}.effective-bar__percent{color:var(--text-body);font-size:15px;font-weight:700;white-space:nowrap}.effective-bar__percent--clickable{-webkit-tap-highlight-color:transparent;cursor:pointer}.effective-bar__percent--clickable:hover{opacity:.7}.effective-bar__stat-core{color:var(--text-secondary);font-size:14px;font-weight:600;white-space:nowrap}.effective-bar__stat-sep{color:var(--border-strong);font-size:13px}.effective-bar__stat-reach{color:var(--color-primary-light);font-size:14px;font-weight:600;white-space:nowrap}.effective-bar__threshold-labels{height:20px;position:relative}.effective-bar__threshold-label{align-items:center;color:var(--text-muted);display:inline-flex;font-size:14px;font-weight:500;gap:2px;letter-spacing:.3px;position:absolute;transform:translateX(-50%);transition:color .3s ease,font-weight .3s ease}.effective-bar__threshold-label--demote{transform:translateX(0)}.effective-bar__threshold-label--active{color:var(--text-secondary);font-weight:800}.effective-bar__bar{border-radius:9px;height:18px;overflow:hidden;position:relative}.effective-bar__zones{bottom:0;display:flex;left:0;position:absolute;right:0;top:0}.effective-bar__zone--safe{background:var(--color-incomplete)}.effective-bar__zone--maintain{background:var(--color-maintain-bg)}.effective-bar__zone--promote{background:var(--color-success-bg)}.effective-bar__fills{border-radius:9px;display:flex;height:100%;left:0;overflow:hidden;position:absolute;top:0;transition:width .4s ease;z-index:1}.effective-bar__fills:after{animation:effective-bar-shimmer 2.5s ease-in-out infinite;background:linear-gradient(90deg,#0000,#ffffff1a 35%,#fff6 50%,#ffffff1a 65%,#0000);content:"";height:100%;left:-100%;pointer-events:none;position:absolute;top:0;width:80%}.effective-bar__fill{height:100%}.effective-bar__fill--core{background:var(--color-primary);border-radius:9px 0 0 9px}.effective-bar__fill--reach{background:var(--color-primary-light);border-radius:0 9px 9px 0}.effective-bar__fill--solid{background:var(--color-primary);border-radius:9px}.effective-bar__fills--complete{box-shadow:0 0 10px var(--color-gold-glow)}.effective-bar__fills--complete .effective-bar__fill--core,.effective-bar__fills--complete .effective-bar__fill--segment,.effective-bar__fills--complete .effective-bar__fill--solid{background:var(--color-gold)}.effective-bar__fills--complete .effective-bar__fill--reach{background:var(--color-gold-light)}.effective-bar__marker{background:#0000002e;border-radius:1px;bottom:-2px;pointer-events:none;position:absolute;top:-2px;transform:translateX(-1px);width:2px;z-index:2}.effective-bar__marker--promote{background:#00000059}.effective-bar__fill--segment{align-items:center;background:var(--color-primary);border-right:1px solid #ffffff4d;box-sizing:border-box;display:flex;height:100%;justify-content:center;min-width:0;position:relative}.effective-bar__fill--segment:last-of-type{border-right:none}.effective-bar__seg-label{color:#ffffffd9;font-size:10px;font-weight:600;line-height:1;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap}@keyframes effective-bar-shimmer{0%{left:-100%}60%{left:200%}to{left:200%}}@keyframes beatBounce{0%,80%,to{opacity:.4;transform:translateY(0)}40%{opacity:1;transform:translateY(-6px)}}.loading-screen{align-items:center;background:var(--surface-page);display:flex;flex-direction:column;height:100vh;justify-content:center}.loading-logo{height:120px;margin-bottom:20px;width:120px}.loading-mantra{align-items:center;display:flex;flex-direction:column;gap:2px;margin-bottom:36px}.loading-mantra-line{color:var(--text-muted);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.loading-text-row{align-items:center;display:flex;gap:4px}.loading-label{color:var(--text-muted);font-size:17px;font-weight:500}.loading-dots{align-items:center;display:flex;gap:4px;height:20px}.loading-dot{animation:beatBounce 1.2s ease-in-out infinite;background:var(--text-muted);border-radius:50%;height:5px;width:5px}.loading-dot:first-child{animation-delay:0s}.loading-dot:nth-child(2){animation-delay:.2s}.loading-dot:nth-child(3){animation-delay:.4s}.habits-skeleton__section{display:flex;flex-direction:column;gap:2px}.habits-skeleton__header{animation:habits-skel-pulse 1.4s ease-in-out infinite;background:var(--color-skeleton-base);border-radius:4px;height:20px;margin-bottom:8px;width:80px}.habits-skeleton__row{align-items:center;display:flex;gap:10px;height:40px;padding:0 8px}.habits-skeleton__checkbox{border-radius:50%;height:22px;width:22px}.habits-skeleton__checkbox,.habits-skeleton__name{animation:habits-skel-pulse 1.4s ease-in-out infinite;background:var(--color-skeleton-base);flex-shrink:0}.habits-skeleton__name{border-radius:4px;height:14px}.habits-skeleton__dots{display:flex;gap:6px;margin-left:auto}.habits-skeleton__dot{animation:habits-skel-pulse 1.4s ease-in-out infinite;background:var(--color-skeleton-base);border-radius:50%;height:18px;width:18px}@keyframes habits-skel-pulse{0%,to{opacity:.4}50%{opacity:1}}.habit-stats-row{border-bottom:1px solid var(--border-light);display:flex;justify-content:space-around;margin-bottom:4px;padding:10px 0}.habit-stat{align-items:center;display:flex;flex-direction:column;gap:2px}.habit-stat__value{color:var(--text-body);font-size:15px;font-weight:700}.habit-stat__label{color:var(--text-muted);font-size:11px;font-weight:500;letter-spacing:.3px;text-transform:uppercase}.toast-container{align-items:center;bottom:80px;display:flex;flex-direction:column;gap:8px;left:50%;pointer-events:none;position:fixed;transform:translateX(-50%);z-index:2000}.toast{animation:toast-in .25s ease;border-radius:8px;box-shadow:var(--shadow-popup);color:#fff;font-size:14px;font-weight:500;line-height:1.4;max-width:340px;padding:10px 20px;pointer-events:auto;text-align:center}.toast--error{background:var(--color-error)}.toast--success{background:var(--color-success)}.toast--info{background:var(--text-body)}.toast--exit{animation:toast-out .2s ease forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(12px)}}.settings-modal-backdrop{align-items:center;background:var(--overlay-backdrop);display:flex;inset:0;justify-content:center;position:fixed;z-index:2000}.settings-modal{background:var(--surface-primary);border-radius:12px;box-shadow:var(--shadow-modal);max-width:90vw;width:340px}.settings-modal-header{align-items:center;border-bottom:1px solid var(--border-light);color:var(--text-primary);display:flex;font-size:17px;font-weight:600;justify-content:space-between;padding:16px 20px}.settings-modal-close{background:none;border:none;border-radius:4px;color:var(--text-muted);cursor:pointer;font-size:18px;line-height:1;padding:4px 6px;transition:background .15s}.settings-modal-close:hover{background:var(--surface-secondary)}.settings-modal-body{padding:16px 20px}.settings-section-title{color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.08em;margin-bottom:12px;text-transform:uppercase}.settings-row{align-items:center;display:flex;gap:16px;justify-content:space-between;padding:8px 0}.settings-row-label{display:flex;flex-direction:column;gap:3px}.settings-row-name{color:var(--text-primary);font-size:15px;font-weight:500}.settings-row-desc{color:var(--text-muted);font-size:12px;line-height:1.4}.settings-toggle{background:var(--color-toggle-off);border:none;border-radius:12px;cursor:pointer;flex-shrink:0;height:24px;padding:0;position:relative;transition:background .2s;width:44px}.settings-toggle:after{background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;content:"";height:18px;left:3px;position:absolute;top:3px;transition:transform .2s;width:18px}.settings-toggle--on{background:var(--color-primary)}.settings-toggle--on:after{transform:translateX(20px)}.settings-section-title--spaced{margin-top:20px}.settings-segmented{border:1px solid var(--border-medium);border-radius:8px;display:flex;flex-shrink:0;overflow:hidden}.settings-segmented-btn{background:var(--surface-primary);border:none;color:var(--text-secondary);cursor:pointer;flex:1 1;font-size:13px;font-weight:500;padding:5px 14px;transition:background .15s,color .15s}.settings-segmented-btn+.settings-segmented-btn{border-left:1px solid var(--border-medium)}.settings-segmented-btn--active{background:var(--color-primary);color:#fff}.settings-segmented--disabled{opacity:.45;pointer-events:none}.settings-row-lock-icon{height:13px;margin-left:5px;position:relative;top:-1px;vertical-align:middle;width:13px}.settings-row-desc--locked{color:var(--color-warning)}.settings-week-confirm{background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:8px;display:flex;flex-direction:column;gap:10px;margin-top:4px;padding:12px 14px}.settings-week-confirm-text{color:var(--color-warning);font-size:13px;line-height:1.45}.settings-week-confirm-range{font-weight:600}.settings-week-confirm-actions{display:flex;gap:8px;justify-content:flex-end}.settings-week-confirm-btn{border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;padding:6px 12px}.settings-week-confirm-btn--cancel{background:var(--surface-primary);border:1px solid var(--color-gold-dark);color:var(--color-warning)}.settings-week-confirm-btn--confirm{background:var(--color-gold-dark);color:#fff}.settings-support-link{border:1px solid var(--border-medium);border-radius:8px;color:var(--color-primary);flex-shrink:0;font-size:13px;font-weight:600;padding:5px 14px;text-decoration:none;transition:background .15s}.settings-support-link:hover{background:var(--surface-secondary)}@media (max-width:640px){.settings-modal{border-radius:12px;max-width:100%;width:100%}}.scroll-to-top{align-items:center;animation:scroll-to-top-fade-in .2s ease;background:#1976d2e6;border:none;border-radius:50%;bottom:48px;box-shadow:var(--shadow-popup);color:#fff;cursor:pointer;display:flex;height:40px;justify-content:center;position:fixed;right:20px;width:40px;z-index:100}[data-theme=dark] .scroll-to-top{background:#42a5f5e6}.scroll-to-top:active{transform:scale(.92)}@keyframes scroll-to-top-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.week-transition-backdrop{align-items:center;background:var(--overlay-heavy);display:flex;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:10000}.week-transition-card{border-radius:12px;box-shadow:var(--shadow-modal);overflow-y:auto;text-align:center}.week-transition-badge{align-items:center;display:flex;font-size:16px;font-weight:700;gap:6px;justify-content:center;letter-spacing:.5px;margin-bottom:8px;text-transform:uppercase}.week-transition-badge-symbol{font-size:14px}.week-transition-effective{font-size:48px;font-weight:800;line-height:1;margin-bottom:4px}.week-transition-breakdown{font-size:14px;font-weight:500;margin-bottom:12px}.week-transition-date{font-size:13px;margin-bottom:16px}.week-transition-league{align-items:center;display:flex;gap:16px;justify-content:center;margin-bottom:16px}.week-transition-league-item{align-items:center;display:flex;flex-direction:column;gap:4px}.week-transition-league-name{font-size:13px;font-weight:600;white-space:nowrap}.week-transition-league-arrow{font-size:20px;font-weight:700}.week-transition-gap{font-size:13px;font-style:italic;margin-bottom:8px}.week-transition-message{font-size:14px;margin-bottom:20px}.week-transition-button{border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:15px;font-weight:700;padding:12px 20px;width:100%}.week-transition-button:active{opacity:.85}.onboarding-backdrop{align-items:center;background:var(--overlay-heavy);display:flex;height:100dvh;inset:0;justify-content:center;overflow:hidden;padding:16px;position:fixed;width:100vw;z-index:1200}.onboarding-panel{background:var(--surface-primary);border-radius:16px;box-shadow:var(--shadow-modal);display:flex;flex-direction:column;height:min(560px,calc(100dvh - 32px));max-width:500px;outline:none;overflow:hidden;position:relative;width:100%}.onboarding-skip{background:#0000;border:none;border-radius:6px;color:var(--text-secondary);cursor:pointer;font-size:14px;font-weight:500;padding:8px 10px;position:absolute;right:10px;top:10px;z-index:2}.onboarding-skip:hover{background:var(--surface-secondary);color:var(--text-body)}.onboarding-skip:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.onboarding-skip:disabled{cursor:not-allowed;opacity:.5}.onboarding-panel-body{-webkit-overflow-scrolling:touch;display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow-x:hidden;overflow-y:auto;padding:48px 28px 20px}.onboarding-card{display:flex;flex:1 1 auto;flex-direction:column;gap:16px;justify-content:center}.onboarding-card-title{color:var(--text-primary);font-size:24px;font-weight:700;line-height:1.25;margin:0}.onboarding-card-body{color:var(--text-body);display:flex;flex-direction:column;font-size:16px;gap:14px;line-height:1.5}.onboarding-tagline{color:var(--text-primary);font-size:18px;font-weight:600;margin:0}.onboarding-welcome-body{font-size:18px;gap:18px}.onboarding-welcome-body .onboarding-tagline{font-size:22px}.onboarding-welcome-body .onboarding-list{font-size:18px;gap:12px}.onboarding-welcome-body .onboarding-badge{font-size:14px;margin-right:10px;padding:4px 12px}.onboarding-list{display:flex;flex-direction:column;gap:8px;margin:0;padding-left:18px}.onboarding-list-ordered{padding-left:22px}.onboarding-list li{color:var(--text-body)}.onboarding-badge{border-radius:999px;color:#fff;display:inline-block;font-size:12px;font-weight:700;margin-right:8px;padding:2px 8px;vertical-align:middle}.onboarding-badge-core{background:var(--color-primary)}.onboarding-badge-reach{background:var(--color-primary-lighter);color:#0d3b66}.onboarding-kbd{background:var(--surface-secondary);border:1px solid var(--border-strong);border-radius:6px;display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;min-width:22px;padding:1px 6px;text-align:center}.onboarding-add-demo{align-items:center;display:flex;flex-direction:column;gap:10px;padding:12px 0 4px}.onboarding-add-demo-bar{align-items:center;background:var(--surface-primary);border:1px solid var(--border-medium);border-radius:12px;box-shadow:var(--shadow-popup);display:flex;gap:8px;padding:8px 12px}.onboarding-add-demo-slot{background:var(--surface-secondary);border:1px solid var(--border-light);border-radius:6px;height:32px;width:32px}.onboarding-add-demo-slot--wide{width:140px}.onboarding-add-demo-plus{align-items:center;animation:onboarding-add-demo-pulse 1.6s ease-in-out infinite;background:var(--color-primary);border-radius:6px;color:#fff;display:flex;font-size:22px;font-weight:700;height:40px;justify-content:center;line-height:1;width:40px}@keyframes onboarding-add-demo-pulse{0%,to{box-shadow:0 0 0 0 #1976d200}50%{box-shadow:0 0 0 8px #1976d259}}.onboarding-add-demo-caption{color:var(--text-muted);font-size:13px;font-style:italic;text-align:center}@media (prefers-reduced-motion:reduce){.onboarding-add-demo-plus{animation:none;box-shadow:0 0 0 2px var(--color-primary)}}.onboarding-progress-wrap{margin:0 -12px}.onboarding-cta-hint{color:var(--text-secondary);font-size:13px;font-style:italic;margin:0;text-align:center}.onboarding-habit-rows{display:flex;flex-direction:column;gap:4px}.onboarding-habit-rows.pulse-hint>:first-child div:has(>input[type=checkbox]){position:relative}.onboarding-habit-rows.pulse-hint>:first-child div:has(>input[type=checkbox]):before{animation:onboarding-checkbox-pulse 1.1s ease-in-out infinite;border-radius:3px;content:"";height:22px;left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(calc(-50% + 1px),calc(-50% + 1px));width:22px}@keyframes onboarding-checkbox-pulse{0%,to{box-shadow:0 0 0 0 #1976d200}50%{box-shadow:0 0 0 3px #1976d2e6}}@media (prefers-reduced-motion:reduce){.onboarding-habit-rows.pulse-hint>:first-child div:has(>input[type=checkbox]):before{animation:none;box-shadow:0 0 0 2px var(--color-primary)}}.onboarding-staircase{grid-gap:8px;align-items:start;display:grid;gap:8px;grid-template-columns:repeat(5,1fr);padding:16px 8px}.onboarding-stair-cell{align-items:center;display:flex;flex-direction:column;gap:8px}.onboarding-stair-cell:first-child{padding-top:96px}.onboarding-stair-cell:nth-child(2){padding-top:72px}.onboarding-stair-cell:nth-child(3){padding-top:48px}.onboarding-stair-cell:nth-child(4){padding-top:24px}.onboarding-stair-cell:nth-child(5){padding-top:0}.onboarding-stair-name{color:var(--text-secondary);font-size:13px;font-weight:600}.onboarding-dots{display:flex;gap:8px;justify-content:center;padding:8px 0 4px}.onboarding-dot{background:var(--border-medium);border-radius:50%;height:8px;transition:background .2s ease,transform .2s ease;width:8px}.onboarding-dot.active{background:var(--color-primary);transform:scale(1.2)}.onboarding-nav{align-items:center;display:flex;gap:12px;justify-content:space-between;padding:12px 20px 20px}.onboarding-nav-back,.onboarding-nav-next{border:1px solid #0000;border-radius:8px;cursor:pointer;font-size:15px;font-weight:600;min-height:40px;padding:10px 18px}.onboarding-nav-back{background:#0000;border-color:var(--border-medium);color:var(--text-secondary)}.onboarding-nav-back:hover:not(:disabled){background:var(--surface-secondary);color:var(--text-body)}.onboarding-nav-back:disabled,.onboarding-nav-back[aria-hidden=true]{visibility:hidden}.onboarding-nav-next{background:var(--color-primary);border-color:var(--color-primary);color:#fff;margin-left:auto}.onboarding-nav-next:hover:not(:disabled){filter:brightness(1.05)}.onboarding-nav-next.accent{background:var(--color-success);border-color:var(--color-success)}.onboarding-nav-next:disabled{cursor:not-allowed;opacity:.6}.onboarding-nav-back:focus-visible,.onboarding-nav-next:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media (max-width:640px){.onboarding-backdrop{padding:0}.onboarding-panel{height:min(560px,calc(100dvh - 24px));max-width:100%;width:100%}.onboarding-panel-body{padding:44px 20px 12px}.onboarding-nav{padding:12px 16px 20px}.onboarding-card-title{font-size:22px}}.add-habit-pulse{animation:add-habit-pulse 1.8s ease-in-out infinite}@keyframes add-habit-pulse{0%,to{box-shadow:0 0 0 0 #1976d200}50%{box-shadow:0 0 0 8px #1976d259}}@media (prefers-reduced-motion:reduce){.add-habit-pulse{animation:none;box-shadow:0 0 0 2px var(--color-primary)}}.username-prompt{align-items:flex-start;display:flex;justify-content:center;padding:40px 16px}.username-prompt__card{background:var(--surface-primary);border-radius:12px;box-shadow:var(--shadow-card);max-width:380px;padding:32px 24px;text-align:center;width:100%}.username-prompt__title{color:var(--text-body);font-size:20px;font-weight:700;margin:0 0 8px}.username-prompt__subtitle{color:var(--text-muted);font-size:14px;line-height:1.4;margin:0 0 24px}.username-prompt__input-wrapper{margin-bottom:6px;position:relative}.username-prompt__input{background:var(--surface-primary);border:1px solid var(--border-strong);border-radius:8px;box-sizing:border-box;color:var(--text-body);font-size:16px;outline:none;padding:10px 12px;transition:border-color .15s ease;width:100%}.username-prompt__input:focus{border-color:var(--color-primary)}.username-prompt__input--error{border-color:var(--color-error)}.username-prompt__input--valid{border-color:var(--color-success)}.username-prompt__meta-row{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px;min-height:20px}.username-prompt__counter,.username-prompt__hint{color:var(--text-muted);font-size:12px}.username-prompt__status{font-size:13px;margin-bottom:16px;min-height:20px}.username-prompt__status--available{color:var(--color-success)}.username-prompt__status--error,.username-prompt__status--taken{color:var(--color-error)}.username-prompt__status--checking{color:var(--text-muted)}.username-prompt__button{background:var(--color-primary);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px;transition:opacity .15s ease;width:100%}.username-prompt__button:disabled{cursor:not-allowed;opacity:.5}.username-prompt__current{color:var(--text-secondary);font-size:14px;margin-bottom:20px}.username-prompt__current strong{color:var(--text-body)}.username-prompt__cancel{background:none;border:none;border-radius:8px;color:var(--text-secondary);cursor:pointer;font-size:14px;font-weight:500;margin-top:8px;padding:10px;width:100%}.username-prompt__cancel:hover{background:var(--surface-secondary)}.buddy-card{background:var(--surface-primary);border-radius:12px;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:10px;padding:14px;position:relative}.buddy-card__header{align-items:center;display:flex;gap:6px;justify-content:space-between}.buddy-card__header-right{align-items:center;display:flex;flex-shrink:0;gap:4px}.buddy-card__username{color:var(--text-body);font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buddy-card__tier-badge{align-items:center;border-radius:4px;display:inline-flex;font-size:11px;font-weight:600;gap:3px;padding:2px 6px;white-space:nowrap}.buddy-card__menu-btn{background:none;border:none;border-radius:4px;color:var(--text-muted);cursor:pointer;flex-shrink:0;font-size:16px;line-height:1;padding:2px 4px}.buddy-card__menu-btn:hover{background:var(--surface-secondary)}.buddy-card__menu-popup{background:var(--surface-primary);border:1px solid var(--border-strong);border-radius:8px;box-shadow:var(--shadow-popup);overflow:hidden;position:absolute;right:10px;top:38px;z-index:10}.buddy-card__menu-item{background:none;border:none;color:var(--color-error);cursor:pointer;display:block;font-size:14px;padding:10px 16px;text-align:left;white-space:nowrap;width:100%}.buddy-card__menu-item:hover{background:var(--surface-secondary)}.buddy-card__bar-track{background:var(--color-incomplete);border-radius:5px;display:flex;height:10px;overflow:hidden}.buddy-card__bar-core{background:var(--color-primary);height:100%;transition:width .4s ease}.buddy-card__bar-reach{background:var(--color-primary-lighter);height:100%;transition:width .4s ease}.buddy-card__bar-track--complete{box-shadow:0 0 8px var(--color-gold-glow)}.buddy-card__bar-track--complete .buddy-card__bar-core{background:var(--color-gold)}.buddy-card__bar-track--complete .buddy-card__bar-reach{background:var(--color-gold-light)}.buddy-card__stats{align-items:center;display:flex;font-size:12px;justify-content:space-between}.buddy-card__stat-core{color:var(--text-secondary);font-weight:500}.buddy-card__stat-reach{color:var(--color-primary-light);font-weight:500}.buddy-card__league-row{align-items:center;display:flex;flex-wrap:nowrap;gap:8px}.buddy-card__trajectory{align-items:center;display:inline-flex;font-size:11px;font-weight:700;gap:3px;line-height:1;white-space:nowrap}.buddy-card__trajectory--ascending{color:var(--color-success-dark)}.buddy-card__trajectory--holding{color:var(--color-goldenrod)}.buddy-card__day-count{color:var(--text-muted);font-size:11px;font-weight:500;margin-left:auto;white-space:nowrap}.buddy-card__stat-percent{color:var(--text-body);font-size:13px;font-weight:600}.buddy-card__daily-graph{align-items:flex-end;display:flex;gap:3px;height:28px}.buddy-card__day-bar{border-radius:2px;flex:1 1;min-height:2px;transition:height .3s ease}.buddy-card--admin-only{border:1px dashed var(--border-strong);opacity:.85}.buddy-card__admin-tag{color:var(--text-muted);font-size:9px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.buddy-card--skeleton{min-height:100px}.buddy-card__skel-header{align-items:center;display:flex;gap:8px}.buddy-card__skel-line{animation:buddy-skel-pulse 1.4s ease-in-out infinite;background:var(--color-skeleton-base);border-radius:4px}.buddy-card__skel-line--name{height:14px;width:60%}.buddy-card__skel-line--badge{height:14px;width:32px}.buddy-card__skel-bar{animation:buddy-skel-pulse 1.4s ease-in-out infinite;animation-delay:.15s;background:var(--color-skeleton-base);border-radius:5px;height:10px}.buddy-card__skel-stats{display:flex;justify-content:space-between}.buddy-card__skel-line--stat{animation-delay:.3s;height:12px;width:36%}@keyframes buddy-skel-pulse{0%,to{opacity:.4}50%{opacity:1}}.friends-page__root{display:flex;height:100vh;overflow:hidden}.friends-page__scroll{-webkit-overflow-scrolling:touch;background:var(--surface-primary);flex-grow:1;margin:0 auto;max-width:100%;overflow-y:auto}.friends-page__sticky{background:var(--surface-primary);position:-webkit-sticky;position:sticky;top:0;z-index:10}.friends-page__toolbar{align-items:center;border-bottom:1px solid var(--border-strong);display:flex;gap:8px;min-height:40px;padding:8px 12px}.friends-page__your-username{color:var(--text-body);flex:1 1;font-size:16px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.friends-page__toolbar-actions{align-items:center;display:flex;flex-shrink:0;gap:2px}.friends-page__toolbar-icon{align-items:center;background:none;border:none;border-radius:8px;color:var(--text-secondary);cursor:pointer;display:inline-flex;flex-shrink:0;height:36px;justify-content:center;transition:background .15s ease,color .15s ease;width:36px}.friends-page__toolbar-icon:hover{background:var(--surface-secondary);color:var(--color-primary)}.friends-page__username-edit{padding:0 16px 8px}.friends-page__add-section{margin-bottom:4px;padding:0 16px}.friends-page__add-row{align-items:stretch;display:flex;gap:8px}.friends-page__add-input{background:var(--surface-primary);border:1px solid var(--border-strong);border-radius:6px;color:var(--text-body);flex:1 1;font-size:16px;margin-bottom:8px;min-width:0;outline:none;padding:6px 12px}.friends-page__add-input:focus{border-color:var(--color-primary)}.friends-page__add-btn{background:var(--color-primary);border:none;border-radius:6px;color:#fff;cursor:pointer;flex-shrink:0;font-size:14px;font-weight:600;margin-bottom:8px;padding:6px 14px;white-space:nowrap}.friends-page__add-btn:disabled{cursor:not-allowed;opacity:.5}.friends-page__add-status{font-size:13px;margin-bottom:4px;margin-top:-4px;min-height:20px}.friends-page__add-status--success{color:var(--color-success)}.friends-page__add-status--error{color:var(--color-error)}.friends-page__content{padding:0 16px 80px}.friends-page__section-title{color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.08em;margin:20px 0 12px;text-transform:uppercase}.friends-page__section-title:first-child{margin-top:12px}.friends-page__section-title--toggle{align-items:center;cursor:pointer;display:flex;gap:6px;-webkit-user-select:none;user-select:none}.friend-request-item{align-items:center;border-bottom:1px solid var(--border-light);display:flex;gap:12px;justify-content:space-between;padding:12px 0}.friend-request-item:last-child{border-bottom:none}.friend-request-item__info{display:flex;flex-direction:column;gap:2px;min-width:0}.friend-request-item__username{color:var(--text-body);font-size:15px;font-weight:500}.friend-request-item__label{color:var(--text-muted);font-size:12px}.friend-request-item__actions{display:flex;flex-shrink:0;gap:8px}.friend-request-item__btn{border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;padding:6px 14px;transition:background .15s ease}.friend-request-item__btn:disabled{cursor:not-allowed;opacity:.5}.friend-request-item__btn--accept{background:var(--color-primary);border:none;color:#fff}.friend-request-item__btn--decline{background:var(--surface-primary);border:1px solid var(--border-strong);color:var(--text-secondary)}.friend-request-item__btn--decline:hover{background:var(--surface-secondary)}.friend-request-item__btn--cancel{background:var(--surface-primary);border:1px solid var(--border-strong);color:var(--text-secondary)}.friend-request-item__btn--cancel:hover{background:var(--surface-secondary)}.friends-page__grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr}.friends-page__load-more{background:none;border:1px solid var(--border-strong);border-radius:8px;color:var(--color-primary);cursor:pointer;display:block;font-size:14px;font-weight:500;margin-top:12px;padding:10px;text-align:center;transition:background .15s ease;width:100%}.friends-page__load-more:hover{background:var(--surface-secondary)}.friends-page__empty{line-height:1.5}.friends-page__empty,.friends-page__loading{color:var(--text-muted);font-size:14px;padding:32px 16px;text-align:center}.friends-page__admin-row{align-items:center;border-bottom:1px solid var(--border-light);display:flex;padding:10px 0}.friends-page__admin-row-bar{align-self:stretch;background:var(--color-primary);border-radius:2px;flex-shrink:0;margin-right:8px;width:4px}.friends-page__admin-row-body{flex:1 1;min-width:0}.friends-page__admin-row-name{color:var(--text-primary);font-size:14px;font-weight:600;margin-bottom:2px}.friends-page__admin-row-detail,.friends-page__admin-row-fraction{color:var(--text-muted);font-size:12px}.friends-page__admin-row-fraction{font-feature-settings:"tnum";flex-shrink:0;font-variant-numeric:tabular-nums;font-weight:600;letter-spacing:-.3px;margin-left:8px}@media (max-width:640px){.friends-page__grid{gap:10px;grid-template-columns:1fr 1fr}}.error-boundary{align-items:center;color:var(--text-primary);display:flex;flex-direction:column;justify-content:center;min-height:60vh;padding:24px;text-align:center}.error-boundary h2{font-size:1.5rem;margin-bottom:8px}.error-boundary p{color:var(--text-secondary);font-size:1rem;margin-bottom:24px}.error-boundary-btn{background:var(--color-primary);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;padding:10px 24px}