:root{--bg: #0f1424;--bg-elev: #151b31;--bg-deep: #0a0e1c;--surface: #ffffff;--surface-soft: #f6f7fb;--surface-sunken: #ecedf3;--text-inv: #f7f8fb;--text-inv-dim: #b0b6c9;--text-inv-mute: #737a94;--text: #1a2138;--text-dim: #4a516a;--text-mute: #8890a4;--line-on-dark: rgba(255, 255, 255, .08);--line-on-light: #eaeaf0;--accent: #ff6b5b;--accent-hover: #ff8577;--accent-press: #e85647;--accent-soft: #ffe4e0;--accent-tint: rgba(255, 107, 91, .14);--accent-glow: rgba(255, 107, 91, .28);--success: #4ade80;--success-soft: #dcfce7;--danger: #ff4757;--danger-soft: #ffe0e3;--warn: #ffb547;--font-display: "Fraunces", "Georgia", serif;--font-body: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;--font-numeric: "Space Grotesk", "Geist", sans-serif;--r-sm: 10px;--r-md: 16px;--r-lg: 22px;--r-xl: 28px;--shadow-card: 0 1px 2px rgba(0,0,0,.4), 0 10px 30px rgba(0,0,0,.25);--shadow-pop: 0 20px 40px rgba(0,0,0,.35);--shadow-fab: 0 14px 30px rgba(255, 107, 91, .4);--tabbar-h: 68px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text-inv);font-family:var(--font-body);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}body{min-height:100vh;min-height:100dvh;overflow-x:clip}.capacitor-native,.capacitor-native body{height:100%;overflow:hidden;overscroll-behavior:none}.capacitor-native #root{height:100%}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:400;font-variation-settings:"opsz" 144,"SOFT" 60;line-height:1.05;letter-spacing:-.015em;margin:0}.italic{font-style:italic;font-variation-settings:"opsz" 144,"SOFT" 40}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}img{display:block;max-width:100%}button,input,textarea,select{font-family:inherit}::selection{background:var(--accent);color:#fff}:where(button,a,input,textarea,select):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}@keyframes dd-spin{to{transform:rotate(360deg)}}@keyframes dd-fadein{0%{opacity:0}to{opacity:1}}@keyframes dd-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes dd-scale{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes dd-glow{0%,to{opacity:.85}50%{opacity:1}}.auth-page{min-height:100vh;min-height:100dvh;padding:40px 20px 60px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:32px;position:relative;background:radial-gradient(600px 400px at 85% -5%,var(--accent-glow),transparent 60%),radial-gradient(700px 500px at 10% 100%,rgba(80,120,220,.18),transparent 60%),var(--bg)}.capacitor-native .auth-page{position:fixed;top:0;right:0;bottom:0;left:0;min-height:0;padding:calc(40px + env(safe-area-inset-top)) 20px calc(40px + env(safe-area-inset-bottom));overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.auth-brand-mark{display:inline-flex;align-items:center;gap:10px;color:var(--text-inv);font-family:var(--font-display);font-variation-settings:"opsz" 144,"SOFT" 60;font-weight:400;font-size:22px;letter-spacing:-.01em}.auth-brand .mark{width:34px;height:34px;border-radius:12px;background:linear-gradient(135deg,var(--accent),var(--accent-press));color:#fff;font-family:var(--font-display);font-weight:600;display:inline-flex;align-items:center;justify-content:center;font-size:17px;box-shadow:0 8px 22px var(--accent-glow)}.auth-card{width:min(420px,100%);background:var(--surface);color:var(--text);border-radius:var(--r-xl);padding:32px clamp(24px,5vw,40px);display:flex;flex-direction:column;gap:18px;box-shadow:var(--shadow-pop);animation:dd-rise .5s cubic-bezier(.22,.9,.25,1) both}.auth-card>h1{font-family:var(--font-display);font-variation-settings:"opsz" 144,"SOFT" 60;font-weight:400;font-size:clamp(28px,4vw,34px);color:var(--text);letter-spacing:-.02em;margin:0}.auth-brand{font-family:var(--font-display);font-variation-settings:"opsz" 144,"SOFT" 60;font-weight:400;letter-spacing:-.015em}.auth-card>p.lede{margin:0;color:var(--text-dim);font-size:15px}.auth-alt{margin:4px 0 0;text-align:center;font-size:14px;color:var(--text-dim)}.auth-alt a{color:var(--accent);font-weight:600}.auth-alt a:hover{color:var(--accent-press)}.auth-foot{margin:4px 0 0;text-align:center;font-size:12px;color:var(--text-mute)}.form-row{display:flex;flex-direction:column;gap:7px}.form-row label{font-size:11px;font-weight:700;color:var(--text-mute);text-transform:uppercase;letter-spacing:.08em}.form-row .hint{font-size:12px;color:var(--text-mute)}.input,.form-row input[type],.form-row textarea,.form-row select{width:100%;padding:13px 14px;border:1.5px solid var(--line-on-light);border-radius:var(--r-md);font-size:15px;background:var(--surface-soft);color:var(--text);transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.input:hover:not(:focus),.form-row input:hover:not(:focus),.form-row select:hover:not(:focus){border-color:#d3d5e0}.input:focus,.form-row input:focus,.form-row textarea:focus,.form-row select:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 4px var(--accent-tint)}.input-with-icon{position:relative;display:flex;align-items:center}.input-with-icon>svg{position:absolute;left:14px;width:18px;height:18px;color:var(--text-mute);pointer-events:none;transition:color .15s ease}.input-with-icon input[type]{padding-left:44px;padding-right:44px}.input-with-icon:focus-within>svg{color:var(--accent)}.pw-toggle{position:absolute;right:6px;width:34px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--text-mute);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s ease,color .15s ease}.pw-toggle:hover{background:var(--surface-sunken);color:var(--text)}.pw-toggle svg{width:18px;height:18px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 22px;border:0;border-radius:14px;font-family:inherit;font-weight:700;font-size:15px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background .15s ease,color .15s ease;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.btn svg{width:16px;height:16px}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 10px 22px var(--accent-glow)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 14px 28px var(--accent-glow)}.btn-primary:active:not(:disabled){transform:translateY(0);background:var(--accent-press)}.btn-secondary{background:var(--surface);color:var(--text);border:1.5px solid var(--line-on-light)}.btn-secondary:hover:not(:disabled){background:var(--surface-soft);border-color:#d3d5e0}.btn-ghost{background:transparent;color:var(--text-inv-dim);border:1.5px solid var(--line-on-dark)}.btn-ghost:hover:not(:disabled){background:var(--bg-elev);color:var(--text-inv);border-color:#ffffff29}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn-sm{padding:8px 14px;font-size:13px;border-radius:10px}.btn-block{width:100%}.btn-hero{padding:16px 22px;border-radius:16px;font-size:16px;width:100%}.alert{display:flex;align-items:center;gap:10px;padding:12px 14px;margin:0;border-radius:14px;font-size:13.5px;font-weight:600;border:1px solid transparent}.alert svg{width:18px;height:18px;flex:none}.alert.error{background:var(--danger-soft);color:#a51d29;border-color:#f5c1c6}.alert.success{background:var(--success-soft);color:#14532d;border-color:#bbf7d0}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:dd-spin .8s linear infinite}.spinner.on-light{border-color:#00000026;border-top-color:var(--accent)}.app-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg)}.capacitor-native .app-shell{position:fixed;top:0;right:0;bottom:0;left:0;min-height:0}.app-topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:20px;padding:14px clamp(16px,4vw,32px);background:color-mix(in srgb,var(--bg) 84%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line-on-dark);min-width:0}.app-topbar>*{min-width:0}.capacitor-native .app-topbar{position:static;flex:none;padding-top:calc(14px + env(safe-area-inset-top))}.app-brand{display:inline-flex;align-items:center;gap:10px;color:var(--text-inv);font-family:var(--font-display);font-variation-settings:"opsz" 144,"SOFT" 60;font-size:20px;font-weight:400;letter-spacing:-.015em}.app-brand:hover{color:var(--accent-hover)}.app-brand .mark{width:30px;height:30px;border-radius:10px;background:linear-gradient(135deg,var(--accent),var(--accent-press));color:#fff;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:600;font-size:15px;box-shadow:0 4px 12px var(--accent-glow)}.app-nav{display:none;gap:2px;margin-left:12px}.app-nav a{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:999px;font-weight:600;font-size:14px;color:var(--text-inv-dim);transition:background .15s ease,color .15s ease}.app-nav a:hover{background:var(--bg-elev);color:var(--text-inv)}.app-nav a.active{background:var(--accent-tint);color:var(--accent)}.app-nav a svg{width:16px;height:16px}.app-topbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.app-add-desktop{display:none;align-items:center;gap:8px;padding:10px 18px;border:0;border-radius:999px;background:var(--accent);color:#fff;font-weight:700;font-size:14px;cursor:pointer;box-shadow:0 6px 14px var(--accent-glow);transition:transform .12s ease,box-shadow .12s ease,background .15s ease;font-family:inherit}.app-add-desktop:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 10px 20px var(--accent-glow)}.app-add-desktop svg{width:16px;height:16px}.user-menu{position:relative}.user-badge{display:inline-flex;align-items:center;gap:10px;padding:5px 12px 5px 5px;border-radius:999px;border:1px solid var(--line-on-dark);background:var(--bg-elev);color:var(--text-inv-dim);cursor:pointer;font-size:13px;font-weight:600;font-family:inherit;transition:background .15s ease,border-color .15s ease,color .15s ease}.user-badge:hover{background:#1e2540;color:var(--text-inv);border-color:#ffffff29}.user-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent-press));color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;flex:none;font-family:var(--font-body)}.user-name{max-width:160px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-badge svg{width:14px;height:14px;flex:none;opacity:.7}.user-menu-pop{position:absolute;top:calc(100% + 8px);right:0;min-width:240px;background:var(--surface);color:var(--text);border-radius:16px;padding:8px;box-shadow:var(--shadow-pop);z-index:60;animation:dd-rise .15s ease-out}.user-menu-header{display:flex;align-items:center;gap:12px;padding:10px 12px 14px;border-bottom:1px solid var(--line-on-light);margin-bottom:6px}.user-menu-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:var(--text);font-size:13.5px;font-weight:600;background:transparent;border:0;width:100%;text-align:left;cursor:pointer;transition:background .15s ease;font-family:inherit}.user-menu-item:hover{background:var(--surface-soft)}.user-menu-item.danger{color:var(--danger)}.user-menu-item.danger:hover{background:var(--danger-soft)}.user-menu-item svg{width:16px;height:16px;flex:none}.app-main{flex:1;width:100%;max-width:720px;margin:0 auto;padding:24px clamp(16px,4vw,24px) calc(var(--tabbar-h) + 96px);color:var(--text-inv)}.capacitor-native .app-main{min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-top:1px solid var(--line-on-dark);padding:6px 8px calc(6px + env(safe-area-inset-bottom));height:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}.tabbar .tabbar-tab{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 4px;border-radius:12px;color:var(--text-inv-mute);font-size:11px;font-weight:700;letter-spacing:.02em;transition:color .15s ease,background .15s ease}.tabbar .tabbar-tab svg{width:22px;height:22px}.tabbar .tabbar-tab.active{color:var(--accent)}.tabbar .tabbar-tab:hover{color:var(--text-inv)}.tabbar-add{justify-self:center;width:56px;height:56px;margin-top:-22px;border:4px solid var(--bg);border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-fab);transition:transform .12s ease,box-shadow .12s ease,background .15s ease}.tabbar-add:hover{background:var(--accent-hover);transform:translateY(-2px)}.tabbar-add:active{transform:translateY(0);background:var(--accent-press)}.tabbar-add svg{width:26px;height:26px}@media (min-width: 900px){.app-nav{display:flex}.app-add-desktop{display:inline-flex}.tabbar{display:none}.app-main{padding-bottom:48px}}.page-head{margin:8px 0 18px}.page-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--accent);margin:0 0 8px;font-family:var(--font-mono)}.page-head h1{font-family:var(--font-display);font-size:clamp(30px,4.6vw,40px);font-weight:400;font-variation-settings:"opsz" 144,"SOFT" 60;color:var(--text-inv);letter-spacing:-.02em;margin:0}.page-head p.subtitle{margin:10px 0 0;color:var(--text-inv-dim);font-size:15px;max-width:44em}.card{background:var(--surface);color:var(--text);border-radius:var(--r-xl);padding:22px;box-shadow:var(--shadow-card)}.card.spaced{margin-bottom:16px}.card h2,.card h3{color:var(--text)}.card-eyebrow{font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--text-mute);text-transform:uppercase;letter-spacing:.12em;margin:0 0 10px}.empty-state{padding:42px 24px;background:var(--bg-elev);border:1.5px dashed var(--line-on-dark);border-radius:var(--r-xl);text-align:center;color:var(--text-inv-dim);display:flex;flex-direction:column;align-items:center;gap:8px}.empty-state .empty-icon{width:64px;height:64px;border-radius:18px;background:var(--accent-tint);color:var(--accent);display:flex;align-items:center;justify-content:center;margin-bottom:4px}.empty-state .empty-icon svg{width:28px;height:28px}.empty-state h3{margin:0;font-family:var(--font-display);color:var(--text-inv);font-size:22px}.empty-state p{margin:4px 0 0;font-size:14px;color:var(--text-inv-dim);max-width:32em}.page-loader{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;color:var(--text-inv-dim);font-size:14px;gap:12px;background:var(--bg)}.page-loader .dot{width:22px;height:22px;border-radius:50%;border:3px solid var(--bg-elev);border-top-color:var(--accent);animation:dd-spin .9s linear infinite}.week-card{background:#fff;color:var(--text);border-radius:var(--r-xl);padding:22px 24px 20px;margin-bottom:16px;box-shadow:var(--shadow-card);position:relative;overflow:hidden}.week-card .card-eyebrow{color:var(--accent);margin-bottom:6px}.week-amount{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:clamp(38px,7.5vw,52px);font-weight:500;line-height:1;letter-spacing:-.03em;color:var(--text);margin:2px 0 12px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.week-amount .cur{font-family:var(--font-body);font-size:12px;font-weight:700;color:var(--text-mute);letter-spacing:.1em;text-transform:uppercase;align-self:center}.week-meta{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--text-mute);margin-bottom:8px;font-weight:600}.week-meta strong{color:var(--text);font-weight:700}.money-story-row{display:flex;align-items:baseline;gap:12px;margin:6px 0 4px;flex-wrap:wrap}.money-story-row>div{display:flex;flex-direction:column}.money-story-row .ms-label{font-family:var(--font-mono);font-size:10px;color:var(--text-mute);text-transform:uppercase;letter-spacing:.14em;font-weight:700}.money-story-row .ms-label.accent{color:var(--accent)}.money-story-row .ms-val{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:24px;font-weight:500;color:var(--text);line-height:1;margin-top:4px;letter-spacing:-.02em}.money-story-row .ms-val.accent{color:var(--accent)}.money-story-row .ms-op{font-family:var(--font-numeric);font-size:22px;color:var(--text-mute);align-self:center;font-weight:500}@media (max-width: 380px){.money-story-row .ms-val{font-size:20px}.money-story-row{gap:8px}}.budget-bar{height:10px;border-radius:999px;background:var(--surface-sunken);overflow:hidden;position:relative}.budget-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-press));border-radius:999px;transition:width .35s cubic-bezier(.22,.9,.25,1)}.budget-bar-fill.over{background:linear-gradient(90deg,var(--danger),#d9302a)}.day-heading{display:flex;align-items:baseline;gap:10px;margin:22px 4px 10px;color:var(--text-inv-dim)}.day-heading .day-label{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.14em;font-weight:700;color:var(--text-inv-mute)}.day-heading .day-total{margin-left:auto;font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:13px;font-weight:600;color:var(--text-inv);letter-spacing:-.01em}.expense-list{background:var(--surface);color:var(--text);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-card);display:flex;flex-direction:column}.expense-item{display:grid;grid-template-columns:1fr auto;align-items:stretch;background:transparent}.expense-item+.expense-item{border-top:1px solid var(--line-on-light)}.expense-item:hover{background:var(--surface-soft)}.expense-row{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;padding:14px 4px 14px 16px;cursor:pointer;transition:background .12s ease;background:transparent;border:0;text-align:left;font:inherit;color:inherit;min-width:0}.expense-row .emoji{width:40px;height:40px;border-radius:12px;background:var(--surface-sunken);display:flex;align-items:center;justify-content:center;font-size:20px;flex:none}.expense-row .info{min-width:0}.expense-row .cat{font-weight:600;font-size:14.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expense-row .note{color:var(--text-mute);font-size:12.5px;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expense-row .amt{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:600;font-size:15px;color:var(--text);white-space:nowrap;letter-spacing:-.01em}.expense-del{display:flex;align-items:center;justify-content:center;width:44px;border:0;background:transparent;color:var(--text-mute);cursor:pointer;transition:color .12s ease,background .12s ease;border-left:1px solid transparent}.expense-del:hover{color:var(--danger);background:var(--danger-soft)}.expense-del svg{width:16px;height:16px}.diary{max-width:480px;margin:0 auto;padding:20px clamp(20px,5vw,32px) 28px;color:var(--text-inv);text-align:center}.diary-amount{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:500;color:var(--text-inv);line-height:1;letter-spacing:-.04em;margin:8px auto 28px;display:inline-flex;align-items:baseline;justify-content:center;gap:10px}.diary-amount .cur{font-family:var(--font-body);font-size:12px;color:var(--text-inv-mute);font-weight:700;letter-spacing:.1em;text-transform:uppercase;align-self:center;line-height:1}.diary-amount .value{font-size:clamp(76px,18vw,128px);font-weight:500;line-height:1}.diary-amount .value.zero{color:var(--text-inv-mute)}.diary-line{font-family:var(--font-body);font-size:15px;color:var(--text-inv-dim);margin:4px 0 0;line-height:1.4;font-weight:500;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}.diary-line .sep{color:var(--text-inv-mute);font-weight:400}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px 5px;border-radius:999px;background:var(--bg-elev);border:1.5px solid var(--line-on-dark);color:var(--text-inv);font-family:var(--font-body);font-style:normal;font-size:15px;font-weight:600;cursor:pointer;transition:background .12s ease,border-color .12s ease;vertical-align:-2px}.pill:hover{background:#1e2540;border-color:#ffffff2e}.pill.accent{background:var(--accent-tint);border-color:var(--accent);color:var(--accent)}.pill .em{font-size:17px}.pill svg{width:12px;height:12px;opacity:.7}.pill-inline-note{display:inline-block;min-width:180px;padding:6px 12px 5px;border-radius:999px;background:var(--bg-elev);border:1.5px solid var(--accent);color:var(--text-inv);font-family:var(--font-body);font-style:normal;font-size:14.5px;font-weight:500}.pill-inline-note:focus{outline:none}.diary-note-add{display:inline-flex;align-items:center;gap:6px;margin-top:22px;padding:8px 16px;border-radius:999px;border:1.5px dashed var(--line-on-dark);color:var(--text-inv-mute);background:transparent;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:color .15s ease,border-color .15s ease}.diary-note-add:hover{color:var(--accent);border-color:var(--accent)}.diary-note-add svg{width:14px;height:14px}.picker-cat-list{display:flex;flex-wrap:wrap;gap:8px;max-height:320px;overflow-y:auto;padding:4px 2px}.picker-cat{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:14px;background:var(--surface-soft);border:1.5px solid var(--line-on-light);color:var(--text);font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:background .12s ease,border-color .12s ease}.picker-cat:hover{background:var(--surface-sunken);border-color:#d3d5e0}.picker-cat.active{background:var(--accent);color:#fff;border-color:var(--accent)}.picker-cat .em{font-size:18px}.add-page{min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--text-inv);padding-bottom:calc(120px + env(safe-area-inset-bottom))}.capacitor-native .add-page{position:fixed;top:0;right:0;bottom:0;left:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding-bottom:0}.capacitor-native .add-page>.diary{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-bottom:calc(140px + env(safe-area-inset-bottom))}.add-topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line-on-dark)}.capacitor-native .add-topbar{position:static;flex:none;padding-top:calc(14px + env(safe-area-inset-top))}.add-topbar .close-x{width:40px;height:40px;border:0;border-radius:12px;background:var(--bg-elev);color:var(--text-inv);display:flex;align-items:center;justify-content:center;cursor:pointer;font-family:inherit}.add-topbar .close-x:hover{background:#1e2540}.add-topbar .close-x svg{width:18px;height:18px}.add-topbar button.link{background:transparent;border:0;color:var(--text-inv-dim);font-family:inherit;font-size:15px;font-weight:600;cursor:pointer;padding:8px 6px;border-radius:8px;display:inline-flex;align-items:center;gap:6px}.add-topbar button.link:hover{color:var(--text-inv)}.add-topbar h1{font-family:var(--font-display);font-size:18px;color:var(--text-inv);font-weight:500}.add-body{max-width:480px;margin:0 auto;padding:32px 20px 24px}.amount-display{text-align:center;margin:20px 0 44px}.amount-display .cur{font-family:var(--font-mono);font-size:18px;color:var(--text-inv-mute);font-weight:600;margin-right:8px;vertical-align:middle}.amount-display .value{font-family:var(--font-display);font-size:clamp(58px,14vw,82px);font-weight:400;line-height:1;letter-spacing:-.02em;color:var(--text-inv)}.amount-display .value.zero{color:var(--text-inv-mute)}.amount-display .caret{display:inline-block;width:2px;margin-left:4px;background:var(--accent);animation:dd-glow 1.2s ease-in-out infinite}.section-label{font-family:var(--font-mono);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--text-inv-mute);margin:0 0 12px}.chip-grid{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:8px;padding:10px 14px 10px 10px;border-radius:999px;background:var(--bg-elev);border:1.5px solid var(--line-on-dark);color:var(--text-inv);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .12s ease}.chip:hover{background:#1e2540;border-color:#ffffff29}.chip.active{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-1px)}.chip .emoji{font-size:18px}.chip.new{color:var(--text-inv-dim)}.chip.new svg{width:14px;height:14px}.quick-amounts{display:flex;gap:8px;justify-content:center;margin:22px auto 0;max-width:380px;flex-wrap:wrap}.quick-chip{flex:1 1 0;min-width:68px;padding:10px 14px;background:transparent;color:var(--text-inv);border:1.5px solid var(--line-on-dark);border-radius:999px;font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:600;font-size:15px;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.quick-chip:hover{border-color:var(--accent);color:var(--accent)}.quick-chip:active{background:var(--accent);color:#fff}.numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:24px auto 0;max-width:380px}.numpad button{padding:18px 0;border:0;border-radius:18px;background:var(--bg-elev);color:var(--text-inv);font-family:var(--font-display);font-variation-settings:"opsz" 144,"SOFT" 60;font-size:28px;font-weight:400;cursor:pointer;transition:background .12s ease,transform .05s ease;border:1px solid var(--line-on-dark);line-height:1}.numpad button:hover{background:#1e2540}.numpad button:active{transform:scale(.96)}.numpad button.dot{font-size:40px;line-height:.6;padding-top:12px;padding-bottom:24px}.numpad button.back svg{width:22px;height:22px}.add-save{position:fixed;left:0;right:0;bottom:0;padding:16px 20px calc(16px + env(safe-area-inset-bottom));background:linear-gradient(180deg,transparent,var(--bg) 40%);z-index:30}.add-save-inner{max-width:480px;margin:0 auto;display:flex;flex-direction:column;gap:8px}.add-body .form-row input,.add-body .form-row textarea,.add-body .form-row select{background:var(--bg-elev);color:var(--text-inv);border-color:var(--line-on-dark)}.add-body .form-row input:focus,.add-body .form-row textarea:focus,.add-body .form-row select:focus{background:#1e2540;border-color:var(--accent)}.add-body .form-row label{color:var(--text-inv-mute)}.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.cat-tile{aspect-ratio:1;background:var(--surface);color:var(--text);border-radius:var(--r-lg);padding:14px;display:flex;flex-direction:column;justify-content:space-between;cursor:pointer;border:0;font-family:inherit;text-align:left;box-shadow:var(--shadow-card);transition:transform .12s ease,box-shadow .12s ease;position:relative;overflow:hidden}.cat-tile:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0006,0 16px 36px #0000004d}.cat-tile .emoji{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:26px;background:var(--surface-sunken)}.cat-tile .name{font-weight:700;font-size:15px}.cat-tile .color-strip{position:absolute;right:0;top:0;width:6px;height:100%}.cat-tile.new{background:var(--bg-elev);color:var(--text-inv-dim);border:1.5px dashed var(--line-on-dark);align-items:center;justify-content:center;gap:6px;text-align:center;box-shadow:none}.cat-tile.new:hover{color:var(--accent);border-color:var(--accent);background:var(--bg-elev)}.cat-tile.new .plus{width:44px;height:44px;border-radius:50%;background:var(--accent-tint);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:500}.picker-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;max-height:240px;overflow-y:auto;padding:4px;background:var(--surface-soft);border-radius:12px}.picker-grid button{aspect-ratio:1;border:0;border-radius:10px;background:transparent;font-size:20px;cursor:pointer;transition:background .12s ease,transform .12s ease}.picker-grid button:hover{background:#fff;transform:scale(1.1)}.picker-grid button.selected{background:var(--accent);transform:scale(1.1)}.icon-picker{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:14px;background:var(--surface-soft);border-radius:12px;padding:12px}.icon-picker-group{display:flex;flex-direction:column;gap:8px}.icon-picker-label{font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--text-mute);text-transform:uppercase;letter-spacing:.12em}.icon-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px}.icon-picker-grid button{aspect-ratio:1;border:0;border-radius:10px;background:#fff;cursor:pointer;transition:background .12s ease,transform .12s ease;display:flex;align-items:center;justify-content:center}.icon-picker-grid button:hover{background:var(--surface-sunken);transform:scale(1.08)}.icon-picker-grid button.selected{background:var(--accent);transform:scale(1.08)}.color-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.onboarding-card{background:linear-gradient(135deg,#fff,#fff4f0);color:var(--text);border-radius:var(--r-xl);padding:22px 22px 20px;margin-bottom:18px;border:1.5px solid color-mix(in srgb,var(--accent) 22%,transparent);box-shadow:var(--shadow-card)}.onboarding-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.onboarding-title{font-family:var(--font-display);font-variation-settings:"opsz" 144,"SOFT" 60;font-weight:400;font-size:24px;color:var(--text);margin:6px 0 0;line-height:1.15;letter-spacing:-.01em}.onboarding-skip{background:transparent;border:0;color:var(--text-mute);font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.12em;font-weight:700;cursor:pointer;padding:4px 8px;border-radius:8px}.onboarding-skip:hover{color:var(--text);background:#0000000d}.onboarding-steps{display:flex;gap:8px;margin:16px 0 6px}.onboarding-step-dot{width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#0000000f;color:var(--text-mute);font-family:var(--font-mono);font-size:12px;font-weight:700}.onboarding-step-dot.active{background:var(--accent);color:#fff}.onboarding-step-dot.done{background:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--accent)}.onboarding-body{margin-top:14px;display:flex;flex-direction:column;gap:12px}.onboarding-lead{font-family:var(--font-display);font-style:italic;font-size:18px;color:var(--text);margin:0;line-height:1.3}.onboarding-hint{font-size:12.5px;color:var(--text-mute);margin:0;line-height:1.5}.onboarding-inline{display:flex;align-items:center;gap:8px;padding:12px 14px;border-radius:14px;background:#fff;border:1.5px solid var(--line-on-light)}.onboarding-inline:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.onboarding-cur{font-family:var(--font-mono);font-size:12px;color:var(--text-mute);text-transform:uppercase;letter-spacing:.12em;font-weight:700}.onboarding-inline input{flex:1;min-width:0;border:0;outline:none;background:transparent;font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:22px;font-weight:500;color:var(--text);padding:0}.onboarding-cats{display:flex;flex-wrap:wrap;gap:8px}.onboarding-cat{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;background:#fff;border:1.5px solid var(--line-on-light);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:transform .1s ease}.onboarding-cat:hover{transform:translateY(-1px)}.onboarding-cat.active{color:#fff!important}.onboarding-actions{display:flex;flex-direction:column;gap:8px;margin-top:4px}.today-hero{margin:4px 0 18px;padding:4px 2px 6px}.today-hero-greeting{font-family:var(--font-mono);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--text-inv-mute);margin:0 0 10px}.today-hero-greeting .today-date{color:var(--accent)}.today-hero-greeting .today-name{color:var(--text-inv-mute)}.today-hero-value{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:500;font-size:clamp(40px,8vw,56px);color:var(--text-inv);letter-spacing:-.03em;line-height:1;margin:0 0 10px;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.today-hero-value .today-hero-suffix{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:22px;color:var(--text-inv-mute);letter-spacing:0}.today-hero-pace{margin:0;font-size:14px;color:var(--text-inv-dim);line-height:1.4}.today-hero-pace strong{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:600;color:var(--text-inv)}.today-hero-pace.over{color:var(--danger)}.today-hero-pace.muted{color:var(--text-inv-mute);font-style:italic;font-family:var(--font-display);font-size:15px}.situation-card{background:#fff;color:var(--text);border-radius:var(--r-xl);padding:18px 20px 20px;margin-bottom:16px;box-shadow:var(--shadow-card)}.situation-top{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:flex-start}.situation-slot{display:flex;flex-direction:column;gap:4px;padding:4px 0;background:transparent;border:0;text-align:left;cursor:default;font-family:inherit;color:inherit}.situation-slot.savings{cursor:pointer;transition:opacity .12s ease}.situation-slot.savings:hover{opacity:.7}.situation-slot .ms-label{font-family:var(--font-mono);font-size:10px;color:var(--text-mute);text-transform:uppercase;letter-spacing:.14em;font-weight:700}.situation-slot.savings .ms-label{color:var(--accent)}.situation-slot .ms-val{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:500;font-size:26px;color:var(--text);line-height:1;letter-spacing:-.02em}.situation-slot.savings .ms-val{color:var(--accent)}.situation-slot.spent{text-align:right;align-items:flex-end}.situation-formula{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:16px 0 4px;padding-top:14px;border-top:1px dashed var(--line-on-light);font-family:var(--font-body);font-size:12.5px;color:var(--text-mute)}.situation-formula em{font-style:normal;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--text-mute);margin-right:4px}.situation-formula strong{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:600;color:var(--text);font-size:14px}.situation-formula .op{color:var(--text-mute);font-size:14px}.situation-formula .accent strong{color:var(--accent)}.situation-cta{display:block;width:100%;margin-top:14px;padding:12px 14px;border:1.5px dashed var(--line-on-light);border-radius:12px;background:transparent;color:var(--accent);font-family:inherit;font-weight:600;font-size:13.5px;cursor:pointer;transition:background .12s ease,border-color .12s ease;text-align:center}.situation-cta:hover{background:var(--accent-tint);border-color:var(--accent)}.rollover-card{background:linear-gradient(135deg,var(--bg-elev) 0%,#1e2540 100%);border:1.5px solid var(--accent);color:var(--text-inv);border-radius:var(--r-xl);padding:20px;margin-bottom:16px;display:flex;flex-direction:column;gap:14px;box-shadow:0 8px 24px var(--accent-glow)}.rollover-card .card-eyebrow{color:var(--accent)}.identity-strip{display:flex;align-items:center;gap:12px;padding:8px 4px 14px;margin-bottom:8px;border-bottom:1px solid var(--line-on-dark)}.identity-name{font-family:var(--font-display);font-size:18px;color:var(--text-inv);line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.identity-email{font-size:12px;color:var(--text-inv-mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.tab-strip{display:inline-flex;padding:4px;background:var(--bg-elev);border:1px solid var(--line-on-dark);border-radius:999px;margin:4px 0 16px;gap:2px}.tab-btn{padding:8px 16px;border:0;background:transparent;color:var(--text-inv-dim);font-family:inherit;font-weight:600;font-size:13px;border-radius:999px;cursor:pointer;transition:background .12s ease,color .12s ease}.tab-btn:hover{color:var(--text-inv)}.tab-btn.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000004d}.lbl-hint{font-weight:500;text-transform:none;letter-spacing:0;color:var(--text-mute)}.position-line{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line-on-light);font-size:12.5px;color:var(--text-mute)}.position-line strong{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;color:var(--text);font-weight:700}.color-swatch{aspect-ratio:1;border:3px solid transparent;border-radius:12px;cursor:pointer;padding:0;transition:transform .12s ease,border-color .12s ease}.color-swatch:hover{transform:scale(1.08)}.color-swatch.selected{border-color:var(--text);transform:scale(1.08)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0a0e1cb3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:flex-end;justify-content:center;padding:20px 16px;animation:dd-fadein .18s ease-out}@media (min-width: 700px){.modal-backdrop{align-items:center}}.modal{background:var(--surface);color:var(--text);border-radius:24px;padding:24px;width:min(480px,100%);max-height:calc(100vh - 40px);overflow-y:auto;box-shadow:var(--shadow-pop);animation:dd-scale .2s cubic-bezier(.22,.9,.25,1) both;display:flex;flex-direction:column;gap:16px}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-head h2{font-family:var(--font-display);font-size:22px;color:var(--text)}.modal-close{width:34px;height:34px;border:0;border-radius:10px;background:var(--surface-soft);color:var(--text-dim);display:flex;align-items:center;justify-content:center;cursor:pointer;font-family:inherit}.modal-close:hover{background:var(--surface-sunken);color:var(--text)}.modal-close svg{width:18px;height:18px}.modal-actions{display:flex;gap:8px;justify-content:flex-end}.toast-stack{position:fixed;left:0;right:0;bottom:calc(var(--tabbar-h) + 20px + env(safe-area-inset-bottom));z-index:90;display:flex;flex-direction:column;gap:8px;align-items:center;padding:0 16px;pointer-events:none}@media (min-width: 900px){.toast-stack{bottom:20px}}.toast{display:flex;align-items:center;gap:14px;padding:12px 16px;border-radius:14px;background:#1e2540;color:var(--text-inv);font-weight:600;font-size:14px;box-shadow:0 14px 30px #0006;animation:dd-rise .25s cubic-bezier(.22,.9,.25,1);pointer-events:auto;min-width:260px;max-width:min(420px,100%);justify-content:space-between}.toast.success{background:#1a3d29}.toast.error{background:#4a1f24}.toast button.undo{padding:4px 12px;border:0;border-radius:999px;background:var(--accent);color:#fff;font-weight:700;font-size:12px;cursor:pointer;font-family:inherit}.toast button.undo:hover{background:var(--accent-hover)}.story-deck{margin-bottom:18px}.story-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;padding-bottom:8px;margin:0 -2px}.story-track::-webkit-scrollbar{display:none}.story-slide{flex:0 0 100%;scroll-snap-align:center;scroll-snap-stop:always;padding:0 2px}.story-card{background:var(--surface);color:var(--text);border-radius:var(--r-xl);padding:22px 20px;box-shadow:var(--shadow-card);min-height:210px;display:flex;flex-direction:column;gap:10px}.story-headline{display:flex;align-items:baseline;gap:8px;margin-top:4px}.story-big{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:36px;font-weight:500;color:var(--text);letter-spacing:-.03em;line-height:1}.story-small{font-family:var(--font-display);font-style:italic;font-size:14px;color:var(--text-mute)}.story-delta{font-size:14px;font-weight:600;color:var(--text-mute);display:flex;align-items:center;gap:6px}.story-delta.up{color:var(--danger)}.story-delta.down{color:#10b981}.story-delta .arrow{font-size:18px;line-height:1}.story-foot{margin-top:auto;padding-top:12px;border-top:1px dashed var(--line-on-light);display:flex;justify-content:space-between;align-items:baseline;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-mute);font-weight:700}.story-foot .mono{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:13px;font-weight:600;color:var(--text);letter-spacing:0;text-transform:none}.story-toplist{list-style:none;padding:0;margin:4px 0 0;display:flex;flex-direction:column;gap:10px}.story-toplist li{display:grid;grid-template-columns:22px 30px 1fr auto 44px;align-items:center;gap:10px;font-size:14px}.story-toplist .rank{font-family:var(--font-mono);font-size:11px;color:var(--text-mute);font-weight:700}.story-toplist .swatch{width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center}.story-toplist .name{font-weight:600}.story-toplist .amt{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:600}.story-toplist .share{text-align:right;font-family:var(--font-mono);font-size:11px;color:var(--text-mute);font-weight:700}.streak-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 0 4px}.streak-row .mini-num{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:24px;font-weight:600;color:var(--accent);line-height:1}.streak-row .mini-lbl{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-mute);margin-top:6px;font-weight:700}.story-dots{display:flex;gap:6px;justify-content:center;margin:6px 0 0}.story-dot{width:6px;height:6px;border-radius:50%;border:0;background:var(--line-on-dark);padding:0;cursor:pointer;transition:width .18s ease,background .18s ease}.story-dot.active{width:20px;border-radius:4px;background:var(--accent)}.stat-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.stat-card{background:var(--surface);color:var(--text);padding:20px;border-radius:var(--r-lg);box-shadow:var(--shadow-card)}.stat-card .label{font-family:var(--font-mono);font-size:11px;color:var(--text-mute);text-transform:uppercase;letter-spacing:.12em;font-weight:700}.stat-card .value{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:32px;font-weight:500;margin:6px 0 0;line-height:1;color:var(--text);letter-spacing:-.03em}.stat-card .value .cur{font-family:var(--font-body);font-size:.36em;color:var(--text-mute);vertical-align:.55em;margin-right:4px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.stat-card .sub{color:var(--text-mute);font-size:12px;margin-top:6px}.chart-card{padding:24px 20px}.chart-bars{display:flex;align-items:flex-end;gap:8px;height:140px;margin:12px 0 6px}.chart-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%}.chart-bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end}.chart-bar{width:100%;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,var(--accent),var(--accent-press));min-height:3px;transition:height .3s cubic-bezier(.22,.9,.25,1)}.chart-bar.zero{background:var(--surface-sunken)}.chart-x{font-family:var(--font-mono);font-size:10px;color:var(--text-mute);font-weight:700;text-transform:uppercase}.cat-breakdown{display:flex;flex-direction:column;gap:10px}.cat-line{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;padding:10px 12px;background:var(--surface);color:var(--text);border-radius:var(--r-md);box-shadow:var(--shadow-card)}.cat-line .swatch{width:30px;height:30px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px}.cat-line .name{font-weight:600;font-size:14px}.cat-line .pct{font-family:var(--font-body);font-size:11px;color:var(--text-mute);font-weight:600}.cat-line .amt{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:600;font-size:15px;letter-spacing:-.01em}.cat-budget-bar{margin-top:6px;height:4px;border-radius:999px;background:var(--surface-sunken);overflow:hidden}.cat-budget-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .3s cubic-bezier(.22,.9,.25,1)}.cat-budget-fill.over{background:var(--danger)}.filter-bar{margin:12px 0 16px}.filter-search{position:relative;display:flex;align-items:center;background:var(--bg-elev);border:1.5px solid var(--line-on-dark);border-radius:14px;padding:0 12px 0 42px;transition:border-color .12s ease,background .12s ease}.filter-search:focus-within{border-color:var(--accent);background:#1e2540}.filter-search>svg{position:absolute;left:14px;width:18px;height:18px;color:var(--text-inv-mute)}.filter-search input{flex:1;padding:12px 0;background:transparent;border:0;color:var(--text-inv);font-family:inherit;font-size:14.5px}.filter-search input:focus{outline:none}.filter-search input::placeholder{color:var(--text-inv-mute)}.filter-clear{width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:var(--text-inv-mute);cursor:pointer;display:flex;align-items:center;justify-content:center}.filter-clear:hover{background:#ffffff14;color:var(--text-inv)}.filter-clear svg{width:14px;height:14px}.filter-chip-strip{display:flex;gap:6px;margin-top:10px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.filter-chip-strip::-webkit-scrollbar{display:none}.filter-chip{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;padding:6px 12px;border-radius:999px;background:var(--bg-elev);border:1.5px solid var(--line-on-dark);color:var(--text-inv-dim);font-family:inherit;font-weight:600;font-size:12.5px;cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .1s ease;white-space:nowrap}.filter-chip:hover{background:#1e2540;color:var(--text-inv)}.filter-chip.active{transform:translateY(-1px)}.badge-auto{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:999px;background:var(--accent-tint);color:var(--accent);font-family:var(--font-mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;vertical-align:1px}.voice-bar{display:flex;align-items:center;justify-content:center;gap:12px;margin:-12px 0 20px;min-height:40px}.voice-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;background:var(--bg-elev);border:1.5px solid var(--line-on-dark);color:var(--text-inv-dim);font-family:inherit;font-weight:600;font-size:13px;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.voice-btn:hover{background:#1e2540;color:var(--text-inv);border-color:#ffffff29}.voice-btn svg{width:15px;height:15px}.voice-btn.listening{background:var(--accent);border-color:var(--accent);color:#fff;animation:dd-pulse 1.4s ease-in-out infinite}@keyframes dd-pulse{0%,to{box-shadow:0 0 0 0 var(--accent-glow)}50%{box-shadow:0 0 0 10px transparent}}.voice-hint{font-family:var(--font-display);font-style:italic;font-size:13px;color:var(--text-inv-mute);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.voice-lang{width:34px;height:34px;border-radius:50%;background:var(--bg-elev);border:1.5px solid var(--line-on-dark);color:var(--text-inv-dim);font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.06em;cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease}.voice-lang:hover{background:#1e2540;color:var(--text-inv);border-color:#ffffff2e}.goal-list{display:flex;flex-direction:column;gap:12px;margin-top:12px}.goal-row{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:12px;border-radius:14px;background:var(--surface-soft);border:1px solid var(--line-on-light)}.goal-row.complete{background:color-mix(in srgb,var(--accent) 8%,var(--surface-soft))}.goal-body{min-width:0}.goal-name{font-weight:600;font-size:15px;color:var(--text);display:flex;align-items:center;gap:6px;margin-bottom:4px}.goal-meta{font-size:12.5px;color:var(--text-mute)}.goal-meta .mono{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-weight:600;color:var(--text)}.goal-meta .muted{color:var(--text-mute)}.goal-actions{display:flex;gap:6px;align-items:center}.progress-ring{position:relative;display:inline-flex;align-items:center;justify-content:center}.progress-ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:18px}.year-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;padding:18px 20px;background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-card);margin-bottom:16px}.year-summary>div{display:flex;flex-direction:column;gap:4px}.year-summary .ms-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--text-mute);font-weight:700}.year-summary .ms-val{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:22px;font-weight:500;color:var(--text);letter-spacing:-.02em}.year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.year-month{background:var(--surface);color:var(--text);padding:14px;border-radius:14px;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:8px}.year-month-head{display:flex;justify-content:space-between;align-items:baseline}.year-month-lbl{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.14em;font-weight:700;color:var(--text-mute)}.year-month-val{font-family:var(--font-numeric);font-feature-settings:"tnum" 1,"lnum" 1;font-size:14px;font-weight:600;color:var(--text)}.year-month-val.over{color:var(--danger)}.year-spark{width:100%;height:42px;display:block}.year-month-foot{display:flex;justify-content:flex-end;font-family:var(--font-mono);font-size:10px;color:var(--text-mute);font-weight:700}.bell-root{position:relative;display:inline-flex}.bell-btn{width:40px;height:40px;border-radius:12px;border:0;background:transparent;color:var(--text-inv-mute);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .15s ease,color .15s ease;position:relative}.bell-btn:hover{background:var(--bg-elev);color:var(--text-inv)}.bell-btn.has-unread{color:var(--accent)}.bell-btn svg{width:20px;height:20px}.bell-count{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--accent);color:#fff;font-family:var(--font-mono);font-size:10px;font-weight:800;line-height:16px;text-align:center;box-shadow:0 0 0 2px var(--bg)}.bell-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:transparent;border:0;padding:0;cursor:default}.bell-tray{position:fixed;z-index:100;top:calc(env(safe-area-inset-top) + 60px);right:12px;width:min(360px,calc(100vw - 24px));max-height:min(70vh,520px);background:var(--surface);color:var(--text);border-radius:16px;box-shadow:0 24px 60px #00000080,0 0 0 1px var(--line-on-light);display:flex;flex-direction:column;animation:dd-tray-in .18s ease-out;overflow:hidden}@keyframes dd-tray-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.bell-tray-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line-on-light);font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.14em;font-weight:700;color:var(--text-mute)}.bell-tray-close{background:transparent;border:0;color:var(--text-mute);padding:4px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.bell-tray-close:hover{color:var(--text);background:#0000000d}.bell-tray-close svg{width:14px;height:14px}.bell-tray-body{overflow-y:auto;flex:1}.bell-empty{padding:40px 20px;text-align:center;color:var(--text-mute)}.bell-empty-glyph{font-size:30px;margin-bottom:8px}.bell-empty p{margin:0;font-family:var(--font-display);font-style:italic}.bell-item{display:flex;gap:10px;align-items:flex-start;width:100%;padding:12px 16px;background:transparent;border:0;border-bottom:1px solid color-mix(in srgb,var(--line-on-light) 60%,transparent);text-align:left;cursor:pointer;font-family:inherit;color:var(--text);transition:background .12s ease}.bell-item:last-child{border-bottom:0}.bell-item:hover{background:var(--surface-soft)}.bell-item-icon{width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px}.bell-item-body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.bell-item-text{font-size:13.5px;line-height:1.4}.bell-item-text strong{font-weight:700}.bell-item-text em{font-style:normal;color:var(--accent);font-weight:600}.bell-item-time{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-mute);font-weight:700}.nav-icon-wrap{position:relative;display:inline-flex}.unread-badge{position:absolute;top:-6px;right:-10px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--accent);color:#fff;font-family:var(--font-mono);font-size:10px;font-weight:800;line-height:16px;text-align:center;box-shadow:0 0 0 2px var(--bg)}.list-card.unread{border:1px solid color-mix(in srgb,var(--accent) 40%,transparent)}.list-card-emoji{position:relative}.list-card-dot{position:absolute;top:-3px;right:-3px;width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--surface)}.list-card-muted{margin-left:6px;font-size:12px;opacity:.7}.notify-toggle{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--surface-soft);border-radius:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.notify-toggle input{display:none}.notify-toggle-track{position:relative;flex-shrink:0;width:42px;height:24px;border-radius:999px;background:var(--line-on-light);transition:background .15s ease}.notify-toggle-thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .15s ease}.notify-toggle input:checked+.notify-toggle-track{background:var(--accent)}.notify-toggle input:checked+.notify-toggle-track .notify-toggle-thumb{transform:translate(18px)}.notify-toggle-label{font-size:13.5px;color:var(--text)}.year-jump{display:flex;align-items:center;gap:12px;padding:18px 20px;margin-top:22px;background:linear-gradient(135deg,var(--bg-elev) 0%,#1e2540 100%);border:1.5px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:var(--r-xl);color:var(--text-inv);text-decoration:none;transition:transform .12s ease,border-color .12s ease}.year-jump:hover{transform:translateY(-1px);border-color:var(--accent)}.year-jump-body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.year-jump-eyebrow{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--accent);font-weight:700}.year-jump-title{font-family:var(--font-display);font-style:italic;font-size:20px;color:var(--text-inv);line-height:1.2}.year-jump-sub{font-size:13px;color:var(--text-inv-dim)}.year-jump-arrow{font-size:24px;color:var(--accent);transition:transform .15s ease}.year-jump:hover .year-jump-arrow{transform:translate(4px)}.list-grid{display:flex;flex-direction:column;gap:10px}.list-card{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:14px 16px;border-radius:14px;background:var(--surface);border:0;cursor:pointer;box-shadow:var(--shadow-card);text-align:left;color:var(--text);font-family:inherit;transition:transform .12s ease}.list-card:hover{transform:translateY(-1px)}.list-card-emoji{width:40px;height:40px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;font-size:20px}.list-card-body{min-width:0;display:flex;flex-direction:column;gap:2px}.list-card-name{font-weight:600;font-size:15px}.list-card-meta{font-size:12px;color:var(--text-mute)}.list-card-role{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:700;color:var(--text-mute);padding:2px 8px;border-radius:999px;background:var(--surface-soft)}.list-add-row{display:flex;gap:8px;margin:8px 0 12px;padding:10px;border-radius:14px;background:var(--bg-elev);border:1px solid var(--line-on-dark)}.list-add-row input{flex:1;min-width:0;padding:10px 12px;border-radius:10px;border:1.5px solid transparent;background:color-mix(in srgb,#fff 4%,transparent);color:var(--text-inv);font-family:inherit;font-size:15px;outline:none}.list-add-row input:focus{border-color:var(--accent);background:#ffffff0d}.list-items{display:flex;flex-direction:column;gap:4px}.list-item{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:10px 12px;background:var(--surface);border-radius:12px;color:var(--text);transition:opacity .15s ease}.list-item.checked{opacity:.55}.list-item.checked .list-item-name{text-decoration:line-through;color:var(--text-mute)}.list-check{width:26px;height:26px;border-radius:8px;border:2px solid var(--line-on-light);background:transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:transparent;transition:background .12s ease,border-color .12s ease,color .12s ease}.list-check:disabled{cursor:not-allowed;opacity:.5}.list-check.on{background:var(--accent);border-color:var(--accent);color:#fff}.list-check svg{width:16px;height:16px}.list-item-body{min-width:0}.list-item-name{font-size:15px;font-weight:500}.list-item-meta{font-size:12px;color:var(--text-mute);margin-top:2px}.list-item-del{background:transparent;border:0;color:var(--text-mute);cursor:pointer;padding:6px;border-radius:8px;transition:color .12s ease,background .12s ease}.list-item-del:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}.list-item-del svg{width:16px;height:16px}.list-done-header{display:flex;justify-content:space-between;align-items:center;padding:14px 4px 6px;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-inv-mute);font-weight:700}.member-row{display:flex;gap:10px;align-items:center;padding:8px 10px;background:var(--surface-soft);border-radius:10px}.member-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0}.member-role{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:700;color:var(--text-mute);padding:2px 8px;border-radius:999px;background:#0000000d}.invite-row{display:flex;gap:8px;align-items:center;padding:6px 8px;background:var(--surface-soft);border-radius:8px}.pin-gate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:24px}.pin-gate-inner{width:min(320px,100%);display:flex;flex-direction:column;align-items:center;gap:18px}.pin-brand{display:flex;align-items:center;gap:10px;color:var(--text-inv);font-family:var(--font-display);font-size:22px;font-weight:500}.pin-brand .mark{width:30px;height:30px;border-radius:8px;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-body);font-weight:700;font-size:15px}.pin-lead{margin:0;color:var(--text-inv-mute);font-size:15px;font-family:var(--font-display);font-style:italic}.pin-dots{display:flex;gap:10px;margin:6px 0}.pin-dot{width:12px;height:12px;border-radius:50%;background:transparent;border:1.5px solid var(--line-on-dark);transition:background .1s ease,transform .1s ease}.pin-dot.filled{background:var(--accent);border-color:var(--accent);transform:scale(1.15)}.pin-dot.muted{opacity:.4}.pin-error{margin:0;color:var(--danger);font-size:13px;font-weight:600;min-height:16px}.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}.pin-pad button{padding:18px 0;border:1px solid var(--line-on-dark);border-radius:18px;background:var(--bg-elev);color:var(--text-inv);font-family:var(--font-display);font-size:24px;cursor:pointer;transition:background .1s ease,transform .05s ease}.pin-pad button:hover{background:#1e2540}.pin-pad button:active{transform:scale(.96)}.pin-pad button.pin-pad-ghost{font-family:var(--font-body);font-size:13px;font-weight:600;color:var(--text-inv-mute);background:transparent;border-color:transparent}.pin-pad button.pin-pad-ghost:hover{color:var(--text-inv);background:var(--bg-elev)}.pin-bio-btn{margin-top:16px;display:inline-flex;align-items:center;gap:10px;padding:12px 22px;border-radius:999px;border:1.5px solid color-mix(in srgb,var(--accent) 40%,transparent);background:transparent;color:var(--accent);font-family:inherit;font-weight:600;font-size:14px;cursor:pointer;transition:background .12s ease,border-color .12s ease}.pin-bio-btn:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:var(--accent)}.pin-bio-btn:disabled{opacity:.5;cursor:not-allowed}.pin-bio-btn svg{width:22px;height:22px}
