@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-opsz-normal-CfYZpDVp.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-opsz-normal-BFQXbQ-f.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-opsz-normal-BmPQvyvo.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-opsz-normal-BM0NlUE_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-opsz-normal-Ci9T9ieq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-opsz-normal-DpK-iCPk.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-opsz-normal-BwkfbSeq.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-soft-normal-DSA2Kggd.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-soft-normal-DKHvU-YN.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-soft-normal-C-lS_vzd.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--page: #f6f1e9;--surface: #fffdf9;--surface-2: #faf6f0;--surface-3: #f2ebe1;--sunken: #f0e9de;--ink: #1d1a16;--ink-2: #4e473f;--muted: #6b6358;--line: #ebe3d7;--line-2: #dcd2c3;--accent: #2d5a45;--accent-2: #234836;--accent-soft: #e3eee6;--accent-ink: #ffffff;--brick: #a8492c;--brick-soft: #f9e6dd;--gold: #e3a646;--focus: #2e6fd0;--good: #2f7346;--good-soft: #e5f1e7;--warn: #8a5a07;--warn-soft: #f9eed6;--warn-mark: #e3a646;--bad: #b0302a;--bad-soft: #fae5e1;--bad-mark: #d0493e;--info: #2e5c8f;--info-soft: #e6edf6;--series-1: #3f7c66;--series-2: #c4623d;--series-3: #b5832a;--series-muted: #c7bdae;--series-1-soft: rgba(63, 124, 102, .12);--meter-track: #e8eee9;--grid: #eee7dc;--axis: #d3c8b8;--sp-0-5: 2px;--sp-1: 4px;--sp-1-5: 6px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--gutter: clamp(16px, 2.4vw, 32px);--card-pad: 20px;--section-gap: 24px;--font-display: "Fraunces Variable", Fraunces, Georgia, "Times New Roman", serif;--font: "Inter Variable", Inter, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--text-2xs: 11px;--text-xs: 12px;--text-sm: 13px;--text-ui: 14px;--text-base: 15px;--text-md: 16px;--text-lg: 18px;--text-xl: 22px;--text-2xl: 28px;--control-h: 40px;--control-h-sm: 32px;--control-font: 14px;--field-font: 15px;--radius-xs: 6px;--radius-sm: 10px;--radius: 14px;--radius-lg: 20px;--radius-xl: 24px;--radius-2xl: 32px;--shadow-xs: 0 1px 2px rgba(74, 52, 28, .06);--shadow-sm: 0 1px 2px rgba(74, 52, 28, .05), 0 2px 6px -1px rgba(74, 52, 28, .07);--shadow: 0 1px 2px rgba(74, 52, 28, .05), 0 6px 14px -4px rgba(74, 52, 28, .09), 0 18px 36px -14px rgba(74, 52, 28, .14);--shadow-lg: 0 2px 4px rgba(74, 52, 28, .05), 0 16px 32px -8px rgba(74, 52, 28, .14), 0 40px 80px -20px rgba(74, 52, 28, .28);--ring: 0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-sheet: cubic-bezier(.32, .72, 0, 1);--dur-1: .12s;--dur-2: .2s;--dur-3: .32s;--sidebar: 264px;--topbar-h: 60px;--tabbar-h: 0px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--page: #0e1320;--surface: #161c2b;--surface-2: #1b2233;--surface-3: #232b3d;--sunken: #111727;--ink: #f3eee6;--ink-2: #c9c2b7;--muted: #9c968b;--line: #262e41;--line-2: #343d52;--accent: #86c4a3;--accent-2: #a1d4b8;--accent-soft: #1c3329;--accent-ink: #0b1912;--brick: #e8916b;--brick-soft: #3a2219;--gold: #f0c060;--focus: #7fb0f0;--good: #6fcf93;--good-soft: #17301f;--warn: #f0bd5a;--warn-soft: #33290f;--warn-mark: #f0bd5a;--bad: #f08a80;--bad-soft: #3a1d1d;--bad-mark: #e86a5f;--info: #8fb7ec;--info-soft: #1a2a40;--series-1: #6fb597;--series-2: #e07a50;--series-3: #d9a441;--series-muted: #4a5265;--series-1-soft: rgba(111, 181, 151, .16);--meter-track: #1f3029;--grid: #232b3d;--axis: #384157;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .35);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .3);--shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 6px 12px -4px rgba(0, 0, 0, .35), 0 16px 32px -12px rgba(0, 0, 0, .5);--shadow-lg: 0 2px 4px rgba(0, 0, 0, .35), 0 16px 32px -8px rgba(0, 0, 0, .5), 0 40px 80px -20px rgba(0, 0, 0, .65)}}:root[data-theme=dark]{color-scheme:dark;--page: #0e1320;--surface: #161c2b;--surface-2: #1b2233;--surface-3: #232b3d;--sunken: #111727;--ink: #f3eee6;--ink-2: #c9c2b7;--muted: #9c968b;--line: #262e41;--line-2: #343d52;--accent: #86c4a3;--accent-2: #a1d4b8;--accent-soft: #1c3329;--accent-ink: #0b1912;--brick: #e8916b;--brick-soft: #3a2219;--gold: #f0c060;--focus: #7fb0f0;--good: #6fcf93;--good-soft: #17301f;--warn: #f0bd5a;--warn-soft: #33290f;--warn-mark: #f0bd5a;--bad: #f08a80;--bad-soft: #3a1d1d;--bad-mark: #e86a5f;--info: #8fb7ec;--info-soft: #1a2a40;--series-1: #6fb597;--series-2: #e07a50;--series-3: #d9a441;--series-muted: #4a5265;--series-1-soft: rgba(111, 181, 151, .16);--meter-track: #1f3029;--grid: #232b3d;--axis: #384157;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .35);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .3);--shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 6px 12px -4px rgba(0, 0, 0, .35), 0 16px 32px -12px rgba(0, 0, 0, .5);--shadow-lg: 0 2px 4px rgba(0, 0, 0, .35), 0 16px 32px -8px rgba(0, 0, 0, .5), 0 40px 80px -20px rgba(0, 0, 0, .65)}@media(pointer:coarse){:root{--control-h: 44px;--control-h-sm: 36px;--control-font: 15px;--field-font: 16px}.input,select.input,textarea.input{font-size:16px!important}}@media(max-width:860px){:root{--text-base: 16px;--text-sm: 14px;--text-2xl: 26px;--card-pad: 16px;--section-gap: 16px;--gutter: 16px;--topbar-h: 56px;--tabbar-h: 76px}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--topbar-h) + var(--safe-top) + 16px);scroll-padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 16px)}html,body{margin:0;padding:0}html.no-scroll{overflow:hidden}body{font-family:var(--font);font-size:var(--text-base);line-height:1.5;color:var(--ink);background:radial-gradient(1100px 560px at -5% -10%,color-mix(in srgb,var(--gold) 16%,transparent),transparent 62%),radial-gradient(900px 520px at 105% -5%,color-mix(in srgb,var(--accent) 8%,transparent),transparent 60%),var(--page);background-attachment:fixed;min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-optical-sizing:auto;-webkit-tap-highlight-color:transparent}::selection{background:color-mix(in srgb,var(--accent) 24%,transparent)}a{color:var(--accent);text-decoration:none;text-underline-offset:3px}a:hover{text-decoration:underline}button,a,input,select,textarea,label{touch-action:manipulation}h1,h2,h3,h4{margin:0;line-height:1.25;font-weight:650;letter-spacing:-.017em;text-wrap:balance}h1{font-family:var(--font-display);font-variation-settings:"SOFT" 60;font-weight:600;font-size:calc(var(--text-2xl) + 4px);line-height:1.1;letter-spacing:-.02em}.display,.card-head h2,.figs-title,.drawer-head h2,.empty h3,.stat .value,.fig-value,.fig-total b,.brand>span{font-family:var(--font-display);font-variation-settings:"SOFT" 60}h2{font-size:var(--text-lg);line-height:1.33}h3{font-size:var(--text-md);line-height:1.375;letter-spacing:-.011em}p{margin:0 0 .6em;text-wrap:pretty}small,.small{font-size:var(--text-sm);line-height:1.45}code,kbd{font-family:var(--mono);font-size:.9em}.muted{color:var(--muted)}.ink-2{color:var(--ink-2)}.num{font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.right{text-align:right}.center{text-align:center}.pos{color:var(--good)}.neg{color:var(--ink)}.bad{color:var(--bad)}.warn-text{color:var(--warn)}.strong{font-weight:650}hr{border:0;border-top:1px solid var(--line);margin:var(--sp-4) 0}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--radius-xs)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);min-height:100vh;min-height:100dvh}.sidebar{position:sticky;top:0;height:100vh;height:100dvh;display:flex;flex-direction:column;background:color-mix(in srgb,var(--surface) 62%,transparent);border-right:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:var(--sp-3);height:var(--topbar-h);flex:none;padding:0 var(--sp-5);font-weight:650;letter-spacing:-.011em;color:inherit;text-decoration:none}.brand:hover{text-decoration:none}.brand img{width:32px;height:32px;border-radius:9px;flex:none}.brand>span{min-width:0;line-height:1.2;font-size:18px;font-weight:600;letter-spacing:-.01em}.brand small{font-family:var(--font);letter-spacing:0}.brand small{display:block;font-weight:450;color:var(--muted);font-size:var(--text-xs)}.nav-scroll{flex:1;overflow-y:auto;padding:var(--sp-3) var(--sp-3) var(--sp-4);scrollbar-width:thin;scrollbar-color:var(--line-2) transparent;overscroll-behavior:contain}.nav-group+.nav-group{margin-top:var(--sp-4)}.nav-group>span,.nav-group-btn{display:flex;align-items:center;gap:var(--sp-2);width:100%;height:28px;padding:0 var(--sp-3);font:inherit;font-size:var(--text-2xs);font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;background:none;border:0;border-radius:var(--radius-xs);cursor:pointer;text-align:left}.nav-group-btn svg{margin-left:auto;transition:transform var(--dur-2) var(--ease-out);opacity:.7}.nav-group-btn[aria-expanded=false] svg{transform:rotate(-90deg)}.nav-group-btn:hover{color:var(--ink)}.nav-items{display:flex;flex-direction:column;gap:1px;margin-top:var(--sp-0-5)}.nav-link{position:relative;display:flex;align-items:center;gap:var(--sp-3);height:38px;padding:0 var(--sp-3);border-radius:999px;color:var(--ink-2);font-size:var(--text-ui);font-weight:500;text-decoration:none;transition:background var(--dur-1),color var(--dur-1)}.nav-link svg{color:var(--muted);flex:none;transition:color var(--dur-1)}.nav-link:hover{background:var(--surface-3);color:var(--ink);text-decoration:none}.nav-link:hover svg{color:var(--ink-2)}.nav-link.active{background:var(--accent);color:var(--accent-ink);font-weight:600;box-shadow:0 6px 14px -8px color-mix(in srgb,var(--accent) 70%,transparent)}.nav-link.active svg{color:var(--accent-ink)!important}.nav-link.active svg{color:var(--accent)}.nav-link .count{margin-left:auto;font-size:var(--text-2xs);background:var(--surface-3);color:var(--ink-2);padding:0 7px;border-radius:999px}.sidebar-foot{flex:none;padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--line)}.main{min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--sp-2);height:calc(var(--topbar-h) + var(--safe-top));padding:var(--safe-top) var(--gutter) 0;background:color-mix(in srgb,var(--page) 78%,transparent);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid transparent;transition:border-color var(--dur-2),background var(--dur-2)}.topbar.scrolled{border-bottom-color:var(--line)}.topbar:not(.scrolled){background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.topbar .search-btn{flex:1;max-width:480px;display:flex;align-items:center;gap:var(--sp-2);height:40px;padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--muted);cursor:pointer;font:inherit;font-size:var(--text-ui);box-shadow:var(--shadow-xs);transition:border-color var(--dur-1),box-shadow var(--dur-1)}.topbar .search-btn:hover{border-color:var(--line-2);box-shadow:var(--shadow-sm)}.topbar .search-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.topbar .search-btn kbd{margin-left:auto;font-size:var(--text-2xs);font-family:var(--font);border:1px solid var(--line);background:var(--surface-2);border-radius:5px;padding:1px 6px;color:var(--muted)}.topbar .spacer{flex:1}.topbar-title{display:none}.content{padding:var(--sp-8) var(--gutter) var(--sp-16);max-width:1440px;width:100%;margin-inline:auto}.mobile-only{display:none!important}.page-head{display:flex;align-items:flex-end;gap:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-6);flex-wrap:wrap}.page-head .titles{flex:1;min-width:200px}.page-head p{margin:var(--sp-1) 0 0;color:var(--muted);font-size:var(--text-base)}.page-head .actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center}.grid{display:grid;gap:var(--section-gap)}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g-main{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.span-2{grid-column:span 2}.row{display:flex;align-items:center;gap:var(--sp-2)}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}.stack>*{min-width:0}.stack-sm{display:flex;flex-direction:column;gap:var(--sp-1-5)}.gap-lg{gap:var(--section-gap)}.mt{margin-top:var(--sp-4)}.mt-sm{margin-top:var(--sp-2)}.mb{margin-bottom:var(--section-gap)}.grow{flex:1;min-width:0}.card{overflow-wrap:break-word;min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.card-head{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--card-pad) 0;min-height:52px}.card-head h2,.card-head h3{flex:1;min-width:0;font-size:var(--text-lg);font-weight:600;letter-spacing:-.012em}.card-head .sub{color:var(--muted);font-size:var(--text-sm);font-weight:400;display:block;margin-top:var(--sp-0-5);letter-spacing:0}.card-body{padding:var(--sp-4) var(--card-pad) var(--card-pad)}.card-body.flush{padding:var(--sp-2) 0}.card-foot{padding:var(--sp-3) var(--card-pad);border-top:1px solid var(--line);font-size:var(--text-sm)}.card.pad{padding:var(--card-pad)}.card.soft{background:var(--surface-2);box-shadow:none}button.card,a.card{transition:box-shadow var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out),border-color var(--dur-2)}.callout{border-radius:var(--radius);padding:var(--sp-3) var(--sp-4);background:var(--surface-2);border:1px solid var(--line);display:flex;gap:var(--sp-3);align-items:flex-start;font-size:var(--text-ui)}.callout.info{background:var(--info-soft);border-color:transparent}.callout.info>svg{color:var(--info)}.callout.warn{background:var(--warn-soft);border-color:transparent}.callout.warn>svg{color:var(--warn)}.callout.bad{background:var(--bad-soft);border-color:transparent}.callout.bad>svg{color:var(--bad)}.callout.good{background:var(--good-soft);border-color:transparent}.callout.good>svg{color:var(--good)}.callout svg{flex:none;margin-top:2px}.stat{padding:var(--sp-4) var(--card-pad);display:flex;flex-direction:column;gap:var(--sp-1)}.stat .label{color:var(--muted);font-size:var(--text-sm);font-weight:500}.stat .value{font-size:28px;line-height:1.1;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums lining-nums}.stat .value.hero{font-size:clamp(26px,5vw,34px)}.stat .delta{font-size:var(--text-sm);color:var(--ink-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:var(--control-h);padding:0 18px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-xs);font:inherit;font-size:var(--control-font);font-weight:550;letter-spacing:-.006em;cursor:pointer;white-space:nowrap;text-decoration:none;-webkit-user-select:none;user-select:none;transition:background var(--dur-1),border-color var(--dur-1),box-shadow var(--dur-1),transform var(--dur-1) var(--ease-out)}.btn:hover{background:var(--surface-2);border-color:color-mix(in srgb,var(--line-2) 70%,var(--ink-2));text-decoration:none}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,white),var(--accent));border-color:transparent;color:var(--accent-ink);box-shadow:inset 0 1px #ffffff29,0 1px 2px color-mix(in srgb,var(--accent) 35%,transparent),0 6px 14px -6px color-mix(in srgb,var(--accent) 55%,transparent)}.btn.primary:hover{background:var(--accent-2)}.btn.primary:disabled{box-shadow:none}.btn.danger{color:var(--bad)}.btn.danger:hover{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 30%,var(--line-2))}.btn.ghost{border-color:transparent;background:transparent;box-shadow:none;color:var(--ink-2)}.btn.ghost:hover{background:var(--surface-3);color:var(--ink)}.btn.sm{height:var(--control-h-sm);padding:0 14px;font-size:var(--text-sm);border-radius:999px;gap:var(--sp-1-5)}.btn.icon{width:var(--control-h);padding:0}.btn.icon.sm{width:var(--control-h-sm)}.btn.block{width:100%}.link-btn{background:none;border:0;padding:0;font:inherit;color:var(--accent);cursor:pointer;text-underline-offset:3px;text-align:inherit}.link-btn:hover{text-decoration:underline}.field{display:flex;flex-direction:column;gap:var(--sp-1-5);min-width:0}.field>label,.field>.label{font-size:var(--text-sm);font-weight:550;color:var(--ink-2)}.field .help{font-size:var(--text-sm);color:var(--muted)}.field .error{font-size:var(--text-sm);color:var(--bad);font-weight:500}.input,select.input,textarea.input{width:100%;height:var(--control-h);padding:0 var(--sp-3);border-radius:12px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--field-font);min-width:0;box-shadow:var(--shadow-xs);transition:border-color var(--dur-1),box-shadow var(--dur-1)}.input::placeholder{color:color-mix(in srgb,var(--muted) 85%,transparent)}.input:hover:not(:focus):not([readonly]){border-color:color-mix(in srgb,var(--line-2) 60%,var(--ink-2))}.input:focus,.input:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--ring);border-radius:12px}select.input{appearance:none;-webkit-appearance:none;padding-right:34px;cursor:pointer;text-overflow:ellipsis;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888d94' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:16px}select.input[multiple]{background-image:none;padding-right:var(--sp-3);height:auto}textarea.input{height:auto;min-height:96px;padding:10px var(--sp-3);resize:vertical;line-height:1.5}.input[readonly]{background:var(--surface-2);box-shadow:none}.input.sm{height:var(--control-h-sm);font-size:var(--text-sm);border-radius:var(--radius-sm)}.input-wrap{position:relative;display:flex;align-items:center}.input-wrap .prefix{position:absolute;left:var(--sp-3);color:var(--muted);pointer-events:none}.input-wrap .input{padding-left:26px}.check{display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer;font-weight:500;min-height:32px}.check input,input[type=checkbox],input[type=radio]{accent-color:var(--accent)}.check input{width:18px;height:18px;margin:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4)}.form-grid .wide{grid-column:1 / -1}.form-section{grid-column:1 / -1;font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:650;margin-top:var(--sp-2);padding-top:var(--sp-4);border-top:1px solid var(--line)}.form-actions{display:flex;gap:var(--sp-2);justify-content:flex-end;align-items:center;margin-top:var(--sp-6)}.form-actions .left{margin-right:auto}.seg{display:inline-flex;background:var(--surface-3);border-radius:999px;padding:3px;gap:2px;max-width:100%;overflow-x:auto;scrollbar-width:none}.seg::-webkit-scrollbar{display:none}.seg button{flex:none;border:0;background:transparent;height:calc(var(--control-h-sm) - 6px);padding:0 14px;border-radius:999px;font:inherit;font-size:var(--text-sm);font-weight:550;color:var(--ink-2);cursor:pointer;white-space:nowrap;transition:background var(--dur-1),color var(--dur-1),box-shadow var(--dur-1)}.seg button:hover{color:var(--ink)}.seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.chips{display:flex;flex-wrap:wrap;gap:var(--sp-1-5)}.chip-toggle{display:inline-flex;align-items:center;gap:var(--sp-1-5);min-height:var(--control-h-sm);padding:0 var(--sp-3);border:1px solid var(--line-2);background:var(--surface);border-radius:999px;font:inherit;font-size:var(--text-sm);font-weight:500;cursor:pointer;color:var(--ink-2);transition:background var(--dur-1),border-color var(--dur-1),color var(--dur-1)}.chip-toggle:hover{border-color:color-mix(in srgb,var(--line-2) 60%,var(--ink-2));color:var(--ink)}.chip-toggle.on{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 55%,transparent);color:var(--accent);font-weight:600}.stars{display:inline-flex;gap:2px}.stars button{border:0;background:none;padding:2px;cursor:pointer;color:var(--line-2);font-size:20px;line-height:1}.stars button.on,.stars .on{color:#e9a100}.stars>span:not(.on){color:var(--line-2)}.toolbar{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin-bottom:var(--sp-4)}.toolbar .input{width:auto}.toolbar .search{flex:1;min-width:180px;max-width:360px}.toolbar .search .input{width:100%}.table-wrap{overflow-x:auto;overscroll-behavior-x:contain}table.table{width:100%;border-collapse:collapse;font-size:var(--text-ui)}.table th{text-align:left;font-size:var(--text-xs);font-weight:600;color:var(--muted);letter-spacing:.01em;padding:10px var(--sp-4);border-bottom:1px solid var(--line);white-space:nowrap;-webkit-user-select:none;user-select:none}.table th.sortable{cursor:pointer}.table th.sortable:hover{color:var(--ink)}.table td{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);vertical-align:middle}.table th:first-child,.table td:first-child{padding-left:var(--card-pad)}.table th:last-child,.table td:last-child{padding-right:var(--card-pad)}.table tr:last-child td{border-bottom:0}.table tbody tr{transition:background var(--dur-1)}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover td{background:var(--surface-2)}.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table tr.selected td{background:var(--accent-soft)}.table.compact td{padding-top:var(--sp-2);padding-bottom:var(--sp-2)}.table tfoot td{font-weight:650;border-top:1px solid var(--line-2)}.list{list-style:none;margin:0;padding:0}.list>li{display:flex;align-items:center;gap:var(--sp-3);min-height:56px;padding:10px var(--card-pad);border-bottom:1px solid var(--line);min-width:0;transition:background var(--dur-1)}.list>li:last-child{border-bottom:0}.list>li.clickable{cursor:pointer}.list>li.clickable:hover{background:var(--surface-2)}.list .main-text{flex:1;min-width:0}.list .title{font-weight:550}.list .sub{color:var(--muted);font-size:var(--text-sm)}.badge{display:inline-flex;align-items:center;gap:var(--sp-1);height:22px;padding:0 var(--sp-2);border-radius:999px;font-size:var(--text-xs);font-weight:600;background:var(--surface-3);color:var(--ink-2);white-space:nowrap;letter-spacing:.005em}.badge.good{background:var(--good-soft);color:var(--good)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.accent{background:var(--accent-soft);color:var(--accent)}.tag{display:inline-flex;align-items:center;height:20px;font-size:var(--text-xs);padding:0 7px;border-radius:var(--radius-xs);background:var(--surface-3);color:var(--ink-2);margin-right:var(--sp-1)}.avatar{width:32px;height:32px;border-radius:50%;display:inline-grid;place-items:center;font-size:15px;background:var(--surface-3);flex:none;font-weight:650;color:var(--ink-2)}button.avatar{border:0;cursor:pointer;font-family:inherit;transition:box-shadow var(--dur-1)}button.avatar:hover{box-shadow:0 0 0 3px var(--surface-3)}.avatar.sm{width:24px;height:24px;font-size:12px}.avatar.lg{width:44px;height:44px;font-size:22px}.icon-tile{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--surface-3);color:var(--ink-2);flex:none;font-size:18px}.icon-tile img{width:100%;height:100%;border-radius:10px;object-fit:cover}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.meter{height:8px;border-radius:999px;background:var(--meter-track);overflow:hidden;position:relative}.meter>span{display:block;height:100%;border-radius:999px;background:var(--series-1);transition:width var(--dur-3) var(--ease-out)}.meter.warn{background:color-mix(in srgb,var(--warn-mark) 22%,transparent)}.meter.warn>span{background:var(--warn-mark)}.meter.bad{background:color-mix(in srgb,var(--bad-mark) 20%,transparent)}.meter.bad>span{background:var(--bad-mark)}.meter.good>span{background:var(--good)}.meter .marker{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--ink-2);opacity:.55}.meter.thin{height:6px}.overlay{position:fixed;inset:0;background:#080a0c70;z-index:60;animation:fade var(--dur-2) ease-out}.drawer{--dpad: 24px;position:fixed;top:8px;right:8px;bottom:8px;width:min(600px,calc(100vw - 16px));z-index:61;display:flex;flex-direction:column;background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);animation:slide var(--dur-3) var(--ease-sheet);overflow:hidden}.drawer-head{display:flex;align-items:center;gap:var(--sp-2);min-height:64px;padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--dpad, 24px);border-bottom:1px solid var(--line);flex:none}.drawer-head h2{flex:1;min-width:0;font-size:var(--text-lg);font-weight:650}.drawer-body{padding:var(--sp-5) var(--dpad, 24px) 0;overflow-y:auto;flex:1;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}.drawer-body:after{content:"";display:block;height:calc(var(--dpad, 24px) + var(--safe-bottom))}.drawer-body:has(>form:last-child>.form-actions:last-child):after{display:none}.drawer .form-actions{position:sticky;bottom:0;z-index:2;margin:var(--sp-6) calc(-1 * var(--dpad)) 0;padding:var(--sp-3) var(--dpad) calc(var(--sp-3) + var(--safe-bottom));background:color-mix(in srgb,var(--surface) 90%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line)}.sheet-grab{display:none}.drawer:focus,.modal:focus{outline:none}.modal{--dpad: 24px;position:fixed;left:50%;top:10vh;transform:translate(-50%);width:min(560px,calc(100vw - 24px));max-height:80vh;max-height:80dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border-radius:var(--radius-xl);z-index:61;box-shadow:var(--shadow-lg);animation:pop var(--dur-2) var(--ease-out)}.modal.wide{width:min(820px,calc(100vw - 24px))}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{transform:translate(32px);opacity:0}}@keyframes pop{0%{transform:translate(-50%,8px) scale(.98);opacity:0}}@keyframes sheet-up{0%{transform:translateY(100%)}}@keyframes rise{0%{transform:translateY(8px);opacity:0}}.toasts{position:fixed;left:50%;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:var(--sp-2);align-items:center;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 16px);width:max-content;max-width:calc(100vw - 32px);pointer-events:none}.toast{display:flex;align-items:center;gap:var(--sp-2);padding:10px var(--sp-4) 10px var(--sp-3);border-radius:var(--radius);background:var(--ink);color:var(--page);box-shadow:var(--shadow-lg);font-size:var(--text-ui);font-weight:520;animation:rise var(--dur-2) var(--ease-out);pointer-events:auto}.toast svg{flex:none;color:color-mix(in srgb,var(--accent) 55%,var(--page))}.toast.error{background:var(--bad);color:#fff}.toast-action{margin-left:var(--sp-2);padding:4px 10px;border:0;border-radius:8px;font:inherit;font-weight:650;cursor:pointer;background:color-mix(in srgb,var(--page) 18%,transparent);color:inherit}.toast-action:active{transform:scale(.95)}.toast.error svg{color:#fff}.tabs{position:relative;display:flex;gap:var(--sp-1);margin-bottom:var(--sp-5);overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain;padding:4px;width:fit-content;max-width:100%;background:color-mix(in srgb,var(--surface-3) 80%,transparent);border-radius:999px}.tabs::-webkit-scrollbar{display:none}.tabs button,.tabs a{position:relative;flex:none;display:inline-flex;align-items:center;gap:var(--sp-1-5);height:36px;padding:0 16px;border:0;border-radius:999px;background:none;font:inherit;font-size:var(--text-ui);color:var(--ink-2);font-weight:550;cursor:pointer;white-space:nowrap;text-decoration:none;transition:color var(--dur-1),background var(--dur-2),box-shadow var(--dur-2)}.tabs button:hover,.tabs a:hover{color:var(--ink);text-decoration:none}.tabs button.on,.tabs a.on{color:var(--ink);font-weight:650;background:var(--surface);box-shadow:var(--shadow-sm)}.empty{text-align:center;padding:var(--sp-12) var(--sp-6);color:var(--muted);font-size:var(--text-ui)}.empty .big{width:56px;height:56px;margin:0 auto var(--sp-3);border-radius:18px;display:grid;place-items:center;font-size:26px;background:var(--surface-3);color:var(--ink-2)}.empty h3{color:var(--ink);margin-bottom:var(--sp-1)}.empty .small{max-width:44ch;margin-inline:auto}.spinner{width:20px;height:20px;border-radius:50%;border:2.5px solid var(--line-2);border-top-color:var(--accent);animation:spin .7s linear infinite;display:inline-block;flex:none}.btn.primary .spinner{border-color:color-mix(in srgb,var(--accent-ink) 35%,transparent);border-top-color:var(--accent-ink)}@keyframes spin{to{transform:rotate(360deg)}}.loading-block{display:grid;place-items:center;padding:var(--sp-12)}.is-reloading{opacity:.6;transition:opacity var(--dur-2)}.skel{display:block;border-radius:var(--radius-xs);background:linear-gradient(90deg,var(--surface-3) 25%,color-mix(in srgb,var(--surface-3) 40%,var(--surface)) 37%,var(--surface-3) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.skel-list{display:flex;flex-direction:column}.skel-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--card-pad);min-height:56px}.skel-row .skel-lines{flex:1;display:flex;flex-direction:column;gap:var(--sp-2)}.skel-page{display:flex;flex-direction:column;gap:var(--sp-3)}.skel-page .card{padding:var(--sp-2) 0}.splash{min-height:100vh;min-height:100dvh;display:grid;place-items:center}.splash img{width:48px;height:48px;animation:breathe 1.6s ease-in-out infinite}@keyframes breathe{50%{transform:scale(.92);opacity:.7}}.alert-item{display:flex;gap:var(--sp-3);align-items:flex-start;padding:var(--sp-3) var(--card-pad);border-bottom:1px solid var(--line)}.alert-item:last-child{border-bottom:0}.alert-item .ai-icon{flex:none;margin-top:2px}.alert-item.danger .ai-icon{color:var(--bad)}.alert-item.warning .ai-icon{color:var(--warn)}.alert-item.info .ai-icon{color:var(--info)}.alert-item.success .ai-icon{color:var(--good)}.alert-item .ai-text{flex:1;min-width:0}.alert-item .ai-title{font-weight:550}.alert-item .ai-detail{color:var(--muted);font-size:var(--text-sm)}.popover{position:absolute;right:0;top:calc(100% + 8px);width:min(400px,92vw);max-height:70vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:50;transform-origin:top right;animation:pop-in var(--dur-2) var(--ease-out);overscroll-behavior:contain}@keyframes pop-in{0%{transform:scale(.97) translateY(-4px);opacity:0}}.rel{position:relative}.bell-count{position:absolute;top:3px;right:3px;min-width:18px;height:18px;border-radius:9px;background:var(--bad-mark);color:#fff;font-size:10.5px;font-weight:700;display:grid;place-items:center;padding:0 5px;box-shadow:0 0 0 2px var(--page);pointer-events:none}.menu{padding:var(--sp-1-5)}.menu button,.menu a{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:40px;text-align:left;border:0;background:none;padding:0 var(--sp-3);border-radius:var(--radius-sm);font:inherit;font-size:var(--text-ui);color:var(--ink);cursor:pointer;text-decoration:none}.menu button svg,.menu a svg{color:var(--muted)}.menu button:hover,.menu a:hover{background:var(--surface-3);text-decoration:none}.menu-label{padding:var(--sp-2) var(--sp-3) var(--sp-1);font-size:var(--text-xs);color:var(--muted)}.menu hr{margin:var(--sp-1-5) 0}.menu .seg{margin:var(--sp-1) var(--sp-3) var(--sp-2);display:flex}.menu .seg button{flex:1;justify-content:center;min-height:0;padding:0 var(--sp-2)}.menu .seg button.on{background:var(--surface)}.palette{position:fixed;left:50%;top:12vh;transform:translate(-50%);width:min(640px,calc(100vw - 24px));background:var(--surface);border-radius:var(--radius-xl);z-index:71;box-shadow:var(--shadow-lg);overflow:hidden;border:1px solid var(--line);animation:pop var(--dur-2) var(--ease-out)}.palette-input{display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-5);border-bottom:1px solid var(--line);color:var(--muted)}.palette input{flex:1;min-width:0;width:100%;height:56px;border:0;padding:0;font:inherit;font-size:17px;background:transparent;color:var(--ink);outline:none}.palette ul{list-style:none;margin:0;padding:var(--sp-2);max-height:min(60vh,520px);overflow:auto;overscroll-behavior:contain}.palette li a{display:flex;gap:var(--sp-3);align-items:center;min-height:44px;padding:0 var(--sp-3);border-radius:var(--radius-sm);color:var(--ink);text-decoration:none;font-size:var(--text-ui)}.palette li a svg{color:var(--muted);flex:none}.palette li a.on,.palette li a:hover{background:var(--accent-soft);text-decoration:none}.palette li a.on svg{color:var(--accent)}.palette .section{font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:var(--sp-2) var(--sp-3) var(--sp-1);font-weight:650}.palette-foot{display:flex;gap:var(--sp-4);padding:var(--sp-2) var(--sp-5);border-top:1px solid var(--line);font-size:var(--text-xs);color:var(--muted)}.palette-foot kbd{font-family:var(--font);border:1px solid var(--line);border-radius:4px;padding:0 5px;margin-right:4px;background:var(--surface-2)}.chart{position:relative;width:100%}.chart svg{display:block;overflow:visible}.chart .tick{font-size:var(--text-2xs);fill:var(--muted);font-variant-numeric:tabular-nums}.chart .gridline{stroke:var(--grid);stroke-width:1}.chart .baseline{stroke:var(--axis);stroke-width:1}.chart .crosshair{stroke:var(--ink-2);stroke-width:1;opacity:.5}.chart .ref-line{stroke:var(--bad-mark);stroke-width:1;opacity:.7}.chart .ref-label{font-size:var(--text-2xs);fill:var(--bad)}.chart .bar-hit{fill:transparent;cursor:default}.chart .bar-hit:hover+.bar,.chart .bar.hover{filter:brightness(1.12)}.chart-tip{position:absolute;pointer-events:none;z-index:5;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--sp-2) var(--sp-3);font-size:var(--text-sm);min-width:130px;white-space:nowrap}.chart-tip .tip-title{color:var(--muted);font-size:var(--text-xs);margin-bottom:3px}.chart-tip .tip-row{display:flex;align-items:center;gap:7px}.chart-tip .tip-row b{font-variant-numeric:tabular-nums}.chart-tip .key{width:12px;height:2px;border-radius:1px;display:inline-block}.legend{display:flex;gap:var(--sp-4);flex-wrap:wrap;font-size:var(--text-sm);color:var(--ink-2)}.legend span{display:inline-flex;align-items:center;gap:var(--sp-1-5)}.legend .sw-rect{width:10px;height:10px;border-radius:3px}.legend .sw-line{width:14px;height:2px;border-radius:1px}.hbar-list{display:flex;flex-direction:column;gap:var(--sp-3)}.hbar-row{display:grid;grid-template-columns:minmax(110px,34%) 1fr auto;align-items:center;gap:var(--sp-3);font-size:var(--text-ui)}.hbar-row.clickable{cursor:pointer}.hbar-row.clickable:hover .hbar-label{color:var(--accent)}.hbar-label{display:flex;align-items:center;gap:var(--sp-1-5);min-width:0}.hbar-track{height:10px;position:relative}.hbar-fill{height:10px;border-radius:0 5px 5px 0;background:var(--series-1);min-width:2px}.hbar-value{font-variant-numeric:tabular-nums;font-weight:580;min-width:76px;text-align:right}.budget-group{margin-top:var(--sp-1-5)}.budget-group-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--card-pad) var(--sp-1-5);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:650}.budget-line{display:grid;grid-template-columns:minmax(150px,1.4fr) minmax(120px,2fr) 110px 110px 100px;gap:var(--sp-4);align-items:center;min-height:56px;padding:10px var(--card-pad);border-top:1px solid var(--line)}.budget-line:hover{background:var(--surface-2)}.budget-line .name{display:flex;align-items:center;gap:var(--sp-2);min-width:0;font-weight:550}.budget-line .amt{text-align:right;font-variant-numeric:tabular-nums}.budget-line .amt small{display:block;color:var(--muted);font-weight:400}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.cal-dow{padding:var(--sp-2);font-size:var(--text-xs);color:var(--muted);font-weight:600;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface-2)}.cal-cell{min-height:116px;padding:var(--sp-1-5);border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0;cursor:pointer;transition:background var(--dur-1)}.cal-cell:hover{background:var(--surface-2)}.cal-cell.other{background:var(--sunken);color:var(--muted)}.cal-cell .day{font-size:var(--text-sm);font-weight:600;margin-bottom:var(--sp-1);display:inline-grid;place-items:center;min-width:26px;height:26px;border-radius:13px;font-variant-numeric:tabular-nums}.cal-cell.today .day{background:var(--accent);color:var(--accent-ink)}.cal-item{display:block;font-size:var(--text-xs);padding:1px var(--sp-1-5);border-radius:5px;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--surface-3);color:var(--ink);border-left:3px solid var(--line-2)}.cal-item.event{border-left-color:var(--series-1)}.cal-item.bill{border-left-color:var(--series-2)}.cal-item.income{border-left-color:var(--good)}.cal-item.chore,.cal-item.task{border-left-color:var(--series-3)}.cal-item.birthday,.cal-item.gift{border-left-color:#d55181}.cal-item.overdue{border-left-color:var(--bad-mark)}.cal-more{font-size:var(--text-2xs);color:var(--muted);padding-left:var(--sp-1)}.agenda-day{padding:var(--sp-3) var(--card-pad) var(--sp-1);font-size:var(--text-xs);font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.type-dot{width:9px;height:9px;border-radius:3px;flex:none;background:var(--line-2)}.type-dot.event{background:var(--series-1)}.type-dot.bill{background:var(--series-2)}.type-dot.income{background:var(--good)}.type-dot.chore,.type-dot.task{background:var(--series-3)}.type-dot.birthday,.type-dot.gift{background:#d55181}.type-dot.renewal,.type-dot.document,.type-dot.vehicle,.type-dot.warranty{background:var(--warn-mark)}.type-dot.health{background:#6250d6}.type-dot.maintenance{background:#8a6d3b}.type-dot.tax{background:var(--ink-2)}.type-dot.meal{background:var(--series-muted)}.check-row{display:flex;align-items:center;gap:var(--sp-3);min-height:52px;padding:var(--sp-2) var(--card-pad);border-bottom:1px solid var(--line)}.check-row:last-child{border-bottom:0}.check-row.done .title{text-decoration:line-through;color:var(--muted)}.tick{width:24px;height:24px;border-radius:7px;border:1.5px solid var(--line-2);background:var(--surface);display:grid;place-items:center;cursor:pointer;flex:none;color:transparent;padding:0;transition:background var(--dur-1),border-color var(--dur-1),transform var(--dur-1)}.tick:hover{border-color:var(--accent)}.tick:active{transform:scale(.9)}.tick.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.tick.round{border-radius:50%}.note-card{padding:var(--sp-4) var(--card-pad);border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--surface);cursor:pointer;white-space:pre-wrap;min-height:120px;transition:box-shadow var(--dur-2)}.note-card:hover{box-shadow:var(--shadow)}.note-card h3{margin-bottom:var(--sp-1-5)}.auth{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:calc(var(--safe-top) + 24px) 16px calc(var(--safe-bottom) + 24px);background:radial-gradient(900px 480px at 15% -10%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%),radial-gradient(700px 420px at 100% 110%,color-mix(in srgb,var(--series-2) 10%,transparent),transparent 70%),var(--page)}.auth .card{width:min(420px,100%);padding:var(--sp-8);border-radius:var(--radius-2xl);box-shadow:var(--shadow-lg);border-color:color-mix(in srgb,var(--line) 70%,transparent)}.auth .card>img{border-radius:12px}.auth h1{font-size:var(--text-2xl);margin:var(--sp-5) 0 var(--sp-1)}.auth .stack{gap:var(--sp-4)}.auth .btn.primary{height:48px;font-size:var(--text-md);border-radius:var(--radius)}.bottom-nav{display:none;position:fixed;z-index:30;left:12px;right:12px;bottom:calc(var(--safe-bottom) + 10px);height:66px;padding:0 6px;border-radius:26px;background:color-mix(in srgb,var(--surface) 76%,transparent);-webkit-backdrop-filter:saturate(180%) blur(22px);backdrop-filter:saturate(180%) blur(22px);border:1px solid color-mix(in srgb,var(--line) 70%,transparent);box-shadow:var(--shadow-lg)}.bottom-nav a,.bottom-nav button{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font:inherit;font-size:var(--text-2xs);font-weight:550;color:var(--muted);padding:0;border:0;background:none;text-decoration:none;cursor:pointer;letter-spacing:.01em}.bottom-nav .tab-ico{display:grid;place-items:center;width:56px;height:30px;border-radius:999px;transition:background var(--dur-2) var(--ease-out),color var(--dur-2)}.bottom-nav a:active .tab-ico,.bottom-nav button:active .tab-ico{background:var(--surface-3)}.bottom-nav .active{color:var(--ink);font-weight:650}.bottom-nav .active .tab-ico{background:var(--accent-soft);color:var(--accent)}.menu-sheet .drawer-body{padding-top:var(--sp-2)}.more-search{display:flex;align-items:center;gap:var(--sp-2);width:100%;height:48px;padding:0 var(--sp-4);margin-bottom:var(--sp-4);border-radius:var(--radius);border:1px solid var(--line);background:var(--surface-2);color:var(--muted);font:inherit;font-size:var(--text-md);cursor:pointer}.more-group+.more-group{margin-top:var(--sp-5)}.more-group h3{font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:650;margin:0 0 var(--sp-2) var(--sp-1)}.more-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:var(--sp-2)}.more-tile{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--sp-2);min-height:88px;padding:var(--sp-3) var(--sp-1) var(--sp-2);border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--line);color:var(--ink);text-decoration:none;text-align:center;font-size:var(--text-xs);font-weight:550;line-height:1.25;transition:background var(--dur-1),transform var(--dur-1)}.more-tile:hover{text-decoration:none}.more-tile:active{transform:scale(.96);background:var(--surface-3)}.more-tile .tile-ico{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:var(--surface);color:var(--ink-2);box-shadow:var(--shadow-xs)}.more-tile.active{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,transparent);color:var(--accent)}.more-tile.active .tile-ico{color:var(--accent)}.more-foot{margin-top:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-3)}.more-row{display:flex;align-items:center;gap:var(--sp-3);min-height:48px}.more-row .grow{font-weight:550}.page{animation:page-in .26s var(--ease-out) backwards}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}.btn.fab{position:fixed;z-index:29;right:16px;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 16px);height:56px;padding:0 20px 0 18px;gap:10px;border-radius:18px;font-size:var(--text-md);font-weight:600;box-shadow:0 1px 2px #0000001f,0 8px 24px -6px color-mix(in srgb,var(--accent) 55%,transparent),inset 0 1px #ffffff24;animation:fab-in var(--dur-3) var(--ease-sheet) backwards;transition:padding var(--dur-2) var(--ease-out),gap var(--dur-2) var(--ease-out),font-size var(--dur-2),background var(--dur-1),transform var(--dur-1)}.btn.fab svg{width:22px;height:22px}.btn.fab.compact{padding:0 17px;gap:0;font-size:0}@keyframes fab-in{0%{transform:scale(.6) translateY(16px);opacity:0}}.action-sheet .drawer-body{padding-top:var(--sp-3)}.action-list{display:flex;flex-direction:column;gap:var(--sp-2)}.action-list>.btn,.action-list>a.btn{width:100%;height:52px;justify-content:flex-start;padding:0 var(--sp-4);font-size:var(--text-md);border-radius:var(--radius)}.action-list>.btn.ghost{border:1px solid var(--line-2);background:var(--surface)}.ptr{position:fixed;left:50%;top:calc(var(--topbar-h) + var(--safe-top) - 44px);z-index:25;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--surface);color:var(--muted);box-shadow:var(--shadow);pointer-events:none;transition:color var(--dur-1)}.ptr.ready,.ptr.busy{color:var(--accent)}.ptr .spinner{width:18px;height:18px}.bottom-nav .active .tab-ico{animation:pill-in var(--dur-3) var(--ease-sheet)}@keyframes pill-in{0%{transform:scaleX(.4);opacity:.4}}@media(pointer:coarse){html{overscroll-behavior-y:none}.bottom-nav,.topbar,.tabs,.seg,.btn,.more-tile,.sheet-grab,.drawer-head{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.list>li.clickable,.table.responsive tr.clickable,.a1-acct-row{position:relative;padding-right:36px!important}.list>li.clickable:after,.table.responsive tr.clickable:after,.a1-acct-row:after{content:"";position:absolute;right:14px;top:50%;width:14px;height:14px;margin-top:-7px;background:var(--line-2);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat}}.figs-section{margin-bottom:var(--section-gap)}.figs-title{font-size:var(--text-md);font-weight:600;letter-spacing:-.011em;margin:0 0 var(--sp-3) var(--sp-1)}.figs{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--sp-3)}.fig{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"ico text go" "value value value";align-items:center;gap:4px 8px;min-width:0;padding:14px 16px;overflow:hidden;border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-xs);font:inherit;color:var(--ink);text-align:left;cursor:pointer;transition:box-shadow var(--dur-2) var(--ease-out),transform var(--dur-1) var(--ease-out),background var(--dur-1)}.fig:hover{box-shadow:var(--shadow)}.fig:active{transform:scale(.98)}.fig-ico{grid-area:ico;color:var(--accent);display:grid;place-items:center}.fig-text{grid-area:text;display:flex;flex-direction:column;min-width:0}.fig-label-text{font-size:var(--text-sm);font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fig-sub{order:3;font-size:var(--text-xs);color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fig-sub b{font-weight:650}.fig-value{grid-area:value;font-size:26px;line-height:1.15;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.fig-go{grid-area:go;color:var(--muted);opacity:.6}.fig-spark{position:absolute;right:14px;bottom:14px;width:64px;opacity:.85;pointer-events:none}@media(min-width:861px){.fig{grid-template-areas:"ico text go" "value value value" "sub sub sub"}.fig-text{display:contents}.fig-label-text{grid-area:text}.fig-sub{grid-area:sub}}@media(max-width:860px){.figs{display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:hidden}.fig{grid-template-columns:36px minmax(0,1fr) auto 16px;grid-template-areas:"ico text value go";gap:12px;width:100%;min-height:64px;padding:10px 14px 10px 16px;border:0;border-radius:0;box-shadow:none;background:none}.fig+.fig{border-top:1px solid var(--line)}.fig:hover{box-shadow:none}.fig:active{transform:none;background:var(--surface-2)}.fig-ico{width:36px;height:36px;border-radius:11px;background:var(--accent-soft)}.fig-label-text{font-size:var(--text-base);font-weight:560;color:var(--ink)}.fig-sub{font-size:var(--text-sm);color:var(--muted)}.fig-value{font-size:18px;letter-spacing:-.02em;text-align:right}.fig-spark{display:none}}.fig-total{padding:2px 0 var(--sp-4)}.fig-total b{display:block;font-size:34px;line-height:1.1;font-weight:700;letter-spacing:-.03em}.fig-total p{margin:var(--sp-1) 0 0;color:var(--muted);font-size:var(--text-sm)}.fig-group{margin:var(--sp-5) 0 var(--sp-1);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:650}.fig-list{list-style:none;margin:0 calc(-1 * var(--sp-2));padding:0}.fig-list>li+li{border-top:1px solid var(--line)}.fig-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:56px;padding:10px var(--sp-2);border:0;background:none;font:inherit;color:inherit;text-align:left;border-radius:var(--radius);cursor:pointer;transition:background var(--dur-1)}.fig-row:disabled,.fig-row.static{cursor:default;opacity:1;color:inherit}.fig-row:not(:disabled):not(.static):hover{background:var(--surface-2)}.fig-row:not(:disabled):not(.static):active{background:var(--surface-3)}.fig-row .dot{width:10px;height:10px}.fig-row-title{display:block;font-weight:560}.fig-row-sub{display:block;font-size:var(--text-sm);color:var(--muted)}.fig-row-sub:first-letter,.fig-sub:first-letter{text-transform:uppercase}.fig-row .meter{margin-top:6px}.fig-row-amt{text-align:right;flex:none}.fig-row-amt b{display:block}.fig-row-amt small{display:block;color:var(--muted);font-size:var(--text-xs)}.fig-row-edit{color:var(--muted);flex:none}.fig-emoji{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--surface-3);font-size:18px;flex:none}.fig-edit{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:var(--sp-2);align-items:center;padding:var(--sp-1) var(--sp-2) var(--sp-4);animation:rise var(--dur-2) var(--ease-out)}.fig-help{grid-column:1 / -1;margin:0;font-size:var(--text-sm);color:var(--muted)}.fig-actions{display:flex;justify-content:flex-end;align-items:center;gap:var(--sp-1-5);padding:0 var(--sp-2) var(--sp-3)}.fig-actions .badge{margin-right:auto}.fig-links{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-5)}.fig-links .btn{justify-content:space-between;height:48px}.fig-none{margin:0;padding:var(--sp-1) 0}@media(hover:none){.btn:hover{background:var(--surface);border-color:var(--line-2)}.btn.primary:hover{background:var(--accent)}.btn.ghost:hover{background:transparent;color:var(--ink-2)}.btn.danger:hover{background:var(--surface)}.btn:active:not(:disabled){background:var(--surface-3)}.btn.primary:active:not(:disabled){background:var(--accent-2)}.list>li.clickable:hover,.table tbody tr.clickable:hover td,.cal-cell:hover,.budget-line:hover{background:inherit}.list>li.clickable:active,.table tbody tr.clickable:active td{background:var(--surface-2)}}@media(max-width:1100px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-main{grid-template-columns:minmax(0,1fr)}.budget-line{grid-template-columns:minmax(120px,1.3fr) minmax(100px,1.6fr) 96px 96px}.budget-line .col-hide{display:none}}@media(max-width:860px){.app{grid-template-columns:minmax(0,1fr)}.sidebar{display:none}.mobile-only{display:inline-flex!important}div.mobile-only,p.mobile-only,section.mobile-only{display:block!important}.desktop-only{display:none!important}.topbar{gap:var(--sp-1);padding-left:var(--sp-4);padding-right:var(--sp-2)}.topbar-brand{display:flex;align-items:center;gap:var(--sp-2);min-width:0;flex:1;color:inherit;text-decoration:none}.topbar-brand:hover{text-decoration:none}.topbar-brand img{width:28px;height:28px;border-radius:8px;flex:none}.topbar-brand .titles{position:relative;min-width:0;flex:1;height:24px}.topbar-brand .titles>span{position:absolute;inset:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:24px;font-size:var(--text-md);font-weight:650;letter-spacing:-.011em;transition:opacity var(--dur-2),transform var(--dur-2) var(--ease-out)}.topbar-brand .titles .t-page{opacity:0;transform:translateY(6px)}.topbar.scrolled .topbar-brand .titles .t-home{opacity:0;transform:translateY(-6px)}.topbar.scrolled .topbar-brand .titles .t-page{opacity:1;transform:none}.topbar .spacer{display:none}.content{padding:var(--sp-5) var(--gutter) calc(var(--tabbar-h) + var(--safe-bottom) + var(--sp-8))}.g2,.g3{grid-template-columns:minmax(0,1fr)}.span-2{grid-column:auto}.form-grid{grid-template-columns:minmax(0,1fr)}.page-head{align-items:flex-start;margin-bottom:var(--sp-5)}.page-head .titles{min-width:min(200px,100%);flex-basis:100%}.page-head{flex-wrap:wrap;align-items:flex-start;gap:var(--sp-2) var(--sp-3)}.page-head .titles{flex:1 1 auto;flex-basis:auto;min-width:0}.page-head p.desc{display:none}.page-head .actions{flex:0 1 auto;flex-wrap:wrap;justify-content:flex-end;gap:var(--sp-1);margin-top:-2px}.page-head .actions:empty{display:none}body:has(.fab) .content{padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 104px)}body:has(.fab) .toasts{bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 88px)}.budget-line{grid-template-columns:1fr auto;gap:var(--sp-1-5) var(--sp-3)}.budget-line .bar-col{grid-column:1 / -1;order:3}.budget-line .col-hide,.budget-line .col-hide-sm{display:none}.cal-cell{min-height:64px;padding:3px}.cal-item{font-size:10.5px;padding:0 3px}.hbar-row{grid-template-columns:minmax(90px,38%) 1fr auto}.bottom-nav{display:flex!important}.hide-sm{display:none!important}.list>li>.main-text{min-width:min(120px,40%)}.list>li:has(>.list-actions){flex-wrap:wrap;row-gap:var(--sp-2)}.list>li>.list-actions{flex:1 1 100%;justify-content:flex-end}.popover{width:auto!important}.toolbar .search{max-width:none;flex-basis:100%}.tabs{margin-left:calc(-1 * var(--gutter));margin-right:calc(-1 * var(--gutter));padding:0 var(--sp-2)}.drawer,.modal{--dpad: 16px;inset:auto 0 0;width:100%;transform:none;max-height:calc(100vh - 24px);max-height:calc(100dvh - var(--safe-top) - 12px);border-radius:var(--radius-xl) var(--radius-xl) 0 0;animation:sheet-up var(--dur-3) var(--ease-sheet)}.modal.wide{width:100%}.drawer.dragging,.modal.dragging{transition:none;animation:none}.drawer.settling,.modal.settling{transition:transform var(--dur-2) var(--ease-sheet)}.sheet-grab{display:block;flex:none;height:20px;margin-bottom:-8px;touch-action:none;cursor:grab;position:relative}.sheet-grab:before{content:"";position:absolute;left:50%;top:8px;width:36px;height:5px;margin-left:-18px;border-radius:3px;background:var(--line-2)}.drawer-head{min-height:56px;touch-action:none}.drawer-head h2{font-size:var(--text-md)}.palette{top:calc(var(--safe-top) + 8px);width:calc(100vw - 16px);border-radius:var(--radius-lg);animation:rise var(--dur-2) var(--ease-out)}.palette ul{max-height:calc(100dvh - var(--safe-top) - 180px)}.palette-foot{display:none}.popover{position:fixed;left:8px;right:8px;top:calc(var(--topbar-h) + var(--safe-top) + 4px);width:auto;max-height:70dvh}.table.responsive thead{display:none}.table.responsive,.table.responsive tbody{display:block}.table.responsive tr{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-1) var(--sp-3);padding:var(--sp-3) var(--card-pad);border-bottom:1px solid var(--line)}.table.responsive tr:last-child{border-bottom:0}.table.responsive td{display:block;padding:0!important;border:0;background:none!important;font-size:var(--text-sm);color:var(--ink-2);text-align:left}.table.responsive td:first-child{flex:1 1 100%;font-size:var(--text-base);font-weight:600;color:var(--ink)}.table.responsive td:not(:first-child):before{content:attr(data-label) " ";color:var(--muted)}.table.responsive td.is-empty,.table.responsive td:empty{display:none}.table.responsive tr.clickable:active{background:var(--surface-2)}.table th:first-child,.table td:first-child{padding-left:var(--sp-4)}.table th:last-child,.table td:last-child{padding-right:var(--sp-4)}.table th,.table td{padding:10px var(--sp-3)}}@media(max-width:860px){.grid:has(>.stat){gap:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:hidden}.grid:has(>.stat)>.card{border:0;border-radius:0;box-shadow:none;background:transparent}.grid:has(>.stat)>*+*{border-top:1px solid var(--line)}.grid.g4:has(>.stat)>*+*{border-top:0}.grid.g4:has(>.stat)>:nth-child(odd){border-right:1px solid var(--line)}.grid.g4:has(>.stat)>:nth-child(n+3){border-top:1px solid var(--line)}}@media(max-width:520px){.g4{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}.stat{padding:var(--sp-3) var(--sp-4)}.stat .value{font-size:22px}.stat .value.hero{font-size:26px}}@media print{.sidebar,.topbar,.bottom-nav,.page-head .actions,.btn{display:none!important}.app{display:block}.card{box-shadow:none;break-inside:avoid}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
