@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f3f5f2;--card:#fff;--surface-2:#eef2ee;--text:#15201b;--muted:#5d6b64;--border:#e2e8e3;--primary:#0b7a5c;--primary-ink:#fff;--primary-soft:#dcefe6;--pos:#12804c;--neg:#c03a27;--neg-ink:#fff;--warn:#a66300;--hero-from:#0a6b51;--hero-to:#14956f;--hero-ink:#fff;--nav-bg:#ffffffdb;--backdrop:#101c1661;--shadow:0 1px 2px #14281e0d, 0 6px 20px #14281e0f;--shadow-lg:0 18px 48px #14281e2e;--radius:18px;--radius-sm:12px;--font:"Manrope", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ease:cubic-bezier(.2, .8, .2, 1);--nav-h:64px;--cat-1:#2a78d6;--cat-2:#eb6834;--cat-3:#1f9e74;--cat-4:#c2418b;--cat-5:#8a63d2;--cat-6:#c99512;--cat-7:#85928c;--cat-8:#0f8f99;font-family:var(--font);color:var(--text);background:var(--bg)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0c1210;--card:#141c19;--surface-2:#1a2420;--text:#e6eee9;--muted:#93a39b;--border:#24302b;--primary:#3fcf9f;--primary-ink:#052419;--primary-soft:#173a2e;--pos:#4fd18b;--neg:#ff7b68;--neg-ink:#2a0905;--warn:#f1b54a;--hero-from:#0d4a3a;--hero-to:#12775b;--hero-ink:#f1fbf6;--nav-bg:#141c19db;--backdrop:#0000008c;--shadow:0 1px 2px #0000004d;--shadow-lg:0 18px 48px #00000080;--cat-1:#3987e5;--cat-2:#f07a45;--cat-3:#33b886;--cat-4:#db5aa3;--cat-5:#9d7ce6;--cat-6:#e8b630;--cat-7:#7d8c85;--cat-8:#2fbfc9;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0c1210;--card:#141c19;--surface-2:#1a2420;--text:#e6eee9;--muted:#93a39b;--border:#24302b;--primary:#3fcf9f;--primary-ink:#052419;--primary-soft:#173a2e;--pos:#4fd18b;--neg:#ff7b68;--neg-ink:#2a0905;--warn:#f1b54a;--hero-from:#0d4a3a;--hero-to:#12775b;--hero-ink:#f1fbf6;--nav-bg:#141c19db;--backdrop:#0000008c;--shadow:0 1px 2px #0000004d;--shadow-lg:0 18px 48px #00000080;--cat-1:#3987e5;--cat-2:#f07a45;--cat-3:#33b886;--cat-4:#db5aa3;--cat-5:#9d7ce6;--cat-6:#e8b630;--cat-7:#7d8c85;--cat-8:#2fbfc9;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-size:16px;line-height:1.45}h1,h2,h3{letter-spacing:-.01em;text-wrap:balance;margin:0 0 .5rem;line-height:1.2}h1{font-size:1.5rem;font-weight:800}h2{font-size:1.08rem;font-weight:700}p{margin:0}a{color:var(--primary)}code{background:var(--surface-2);border-radius:6px;padding:.05rem .35rem;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.9em}.center{text-align:center;margin-top:20vh}.muted{color:var(--muted)}.pos{color:var(--pos)}.neg{color:var(--neg)}.warn,small.warn{color:var(--warn)}.error{color:var(--neg);margin:0;font-weight:600}.ok{color:var(--pos);margin:0;font-weight:600}.nowrap{white-space:nowrap}.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.stack{flex-direction:column;gap:1rem;display:flex}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;display:flex}.grid2{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:1rem;display:grid}.grid3{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:.75rem;display:grid}.icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;padding:1.1rem}.card>h2:first-child{margin-bottom:.75rem}.kpi{flex-direction:column;gap:.2rem;display:flex}.kpi strong{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.45rem;font-weight:800;display:block}.kpi .muted{font-size:.85rem;font-weight:600}input,select,textarea,button{font:inherit;color:var(--text)}input,select,textarea{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);min-width:0;max-width:100%;min-height:44px;padding:.55rem .8rem;transition:border-color .15s,box-shadow .15s,background .15s}input[type=checkbox],input[type=radio]{width:1.15rem;height:1.15rem;min-height:0;accent-color:var(--primary)}input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb, var(--primary) 35%, var(--border))}input:focus,select:focus,textarea:focus{border-color:var(--primary);background:var(--card);box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 22%, transparent);outline:none}textarea{width:100%;font-family:ui-monospace,monospace;font-size:.9rem}button{background:var(--primary);min-height:44px;color:var(--primary-ink);cursor:pointer;transition:transform .12s var(--ease), background .15s, box-shadow .15s, opacity .15s;touch-action:manipulation;border:none;border-radius:999px;padding:.55rem 1.1rem;font-weight:700}button:hover{box-shadow:0 4px 14px color-mix(in srgb, var(--primary) 30%, transparent)}button:active{transform:scale(.97)}button:focus-visible,a:focus-visible{outline:3px solid color-mix(in srgb, var(--primary) 45%, transparent);outline-offset:2px}button:disabled{opacity:.5;cursor:default;box-shadow:none;transform:none}button.secondary{background:var(--primary-soft);color:var(--primary)}button.secondary:hover{box-shadow:none;background:color-mix(in srgb, var(--primary) 22%, var(--card))}button.danger{background:var(--neg);color:var(--neg-ink)}button.danger-soft{background:color-mix(in srgb, var(--neg) 13%, var(--card));color:var(--neg);justify-content:center;align-items:center;gap:.4rem;display:inline-flex}button.danger-soft:hover{background:var(--neg);color:var(--neg-ink);box-shadow:none}button.danger-soft.small{min-height:32px;margin-left:.35rem;padding:.2rem .75rem;font-size:.85rem}button.link{min-height:0;color:var(--primary);background:0 0;border-radius:6px;padding:.2rem .1rem;font-weight:700;text-decoration:none}button.link:hover{box-shadow:none;text-decoration:underline}label{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.88rem;font-weight:600;display:flex}label>input,label>select,label>textarea{color:var(--text);font-size:1rem;font-weight:500}.inline{flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.85rem;display:flex}.inline>input:not([type=checkbox]):not(.narrow),.inline>select{flex:11rem}.inline-label{flex-direction:row;align-items:center;gap:.45rem}input.narrow{width:4.75rem}.filters{margin:0 0 .75rem}.actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.4rem;display:flex}.icon-button{min-width:40px;min-height:40px;color:var(--muted);background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:.4rem;padding:.4rem .6rem;display:inline-flex}.icon-button:hover{background:var(--surface-2);color:var(--text);box-shadow:none}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}th{text-align:left;border-bottom:1px solid var(--border);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:.55rem .5rem;font-size:.75rem;font-weight:700}td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:.7rem .5rem}th.num,td.num{text-align:right}tbody tr{transition:background .15s}tbody tr:hover{background:color-mix(in srgb, var(--primary) 4%, transparent)}tbody tr:last-child td{border-bottom:none}tfoot td{border-bottom:none;border-top:1px solid var(--border)}tr.editing td{background:color-mix(in srgb, var(--primary) 10%, transparent)}.warn-row td{color:var(--warn)}.badge{color:var(--pos);background:color-mix(in srgb, var(--pos) 12%, transparent);vertical-align:.1em;white-space:nowrap;border-radius:999px;margin-left:.25rem;padding:.05rem .45rem;font-size:.72rem;font-weight:700;display:inline-block}.badge.muted{color:var(--muted);background:var(--surface-2)}.pill{background:var(--primary-soft);color:var(--primary);white-space:nowrap;border-radius:999px;padding:.2rem .65rem;font-size:.8rem;font-weight:700}ul.plain{margin:0;padding:0;list-style:none}ul.plain li{border-bottom:1px solid var(--border);padding:.55rem 0}ul.plain li:last-child{border-bottom:none}ul.checklist li{border-bottom:none;padding:.15rem 0}small.hint{color:var(--muted);margin-top:.15rem;display:block}small.hint.warn{color:var(--warn)}.layout{min-height:100vh}.logo{background:linear-gradient(135deg, var(--hero-from), var(--hero-to));width:36px;height:36px;color:var(--hero-ink);letter-spacing:-.02em;border-radius:11px;flex:none;place-items:center;font-size:.85rem;font-weight:800;display:inline-grid}.logo.small{border-radius:9px;width:30px;height:30px;font-size:.72rem}.brand{color:var(--text);letter-spacing:-.02em;font-size:1.1rem;font-weight:800}.nav-brand{align-items:center;gap:.6rem;padding:.25rem .5rem 1.25rem;display:flex}button.tab{width:100%;color:var(--muted);text-align:left;background:0 0;border-radius:12px;align-items:center;gap:.75rem;padding:.55rem .75rem;font-weight:600;display:flex}button.tab:hover{background:var(--surface-2);color:var(--text);box-shadow:none}button.tab.active{background:var(--primary-soft);color:var(--primary);font-weight:700}.tab-label-full,.sheet-head,.sheet-backdrop{display:none}.nav-user{border-top:1px solid var(--border);color:var(--text);align-items:center;gap:.6rem;margin-top:.75rem;padding:.75rem .5rem 0;display:flex}.nav-user-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.92rem;overflow:hidden}.avatar{background:var(--surface-2);width:34px;height:34px;color:var(--primary);border-radius:50%;flex:none;place-items:center;font-weight:800;display:inline-grid}.icon-button.logout span{font-size:.85rem}.topbar{top:env(safe-area-inset-top,0px);z-index:5;padding:.75rem max(16px, env(safe-area-inset-right,0px)) .6rem max(16px, env(safe-area-inset-left,0px));background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(14px);backdrop-filter:saturate(1.4)blur(14px);align-items:center;gap:.6rem;display:flex;position:sticky}.page-title{margin:0;font-size:1.35rem}.shell-main{min-width:0}.shell-main main{max-width:1100px;padding:.5rem max(16px, env(safe-area-inset-right,0px)) 2rem max(16px, env(safe-area-inset-left,0px));margin:0 auto}.page{animation:page-in .32s var(--ease) backwards}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (width>=900px){.layout{grid-template-columns:248px minmax(0,1fr);display:grid}.shell-nav{border-right:1px solid var(--border);background:var(--card);flex-direction:column;gap:.15rem;height:100vh;padding:1.25rem .85rem;display:flex;position:sticky;top:0;overflow-y:auto}.nav-primary,.nav-secondary{flex-direction:column;gap:.15rem;display:flex}.nav-sheet{flex-direction:column;flex:1;gap:.15rem;display:flex}.nav-user{margin-top:auto}button.tab.more,.tab[aria-label] .tab-label{display:none}.tab[aria-label] .tab-label-full{display:inline}.topbar{-webkit-backdrop-filter:none;background:0 0;padding-top:1.5rem;padding-bottom:.75rem;position:static}.topbar .logo{display:none}.page-title{font-size:1.75rem}.card{padding:1.35rem}}@media (width<=899.98px){.shell-main main{padding-bottom:calc(var(--nav-h) + 6rem + env(safe-area-inset-bottom,0px))}.nav-brand{display:none}.nav-primary{z-index:30;padding:.35rem max(6px, env(safe-area-inset-right,0px)) calc(.35rem + env(safe-area-inset-bottom,0px)) max(6px, env(safe-area-inset-left,0px));background:var(--nav-bg);border-top:1px solid var(--border);-webkit-backdrop-filter:saturate(1.4)blur(16px);backdrop-filter:saturate(1.4)blur(16px);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.nav-primary button.tab{text-align:center;border-radius:14px;flex-direction:column;justify-content:center;gap:.15rem;min-height:54px;padding:.3rem .1rem;font-size:.7rem;font-weight:700}.nav-primary button.tab:hover{background:0 0}.nav-primary button.tab.active{color:var(--primary);background:0 0}.nav-primary button.tab .icon{width:44px;height:28px;transition:background .2s var(--ease);border-radius:999px;padding:3px 11px}.nav-primary button.tab.active .icon{background:var(--primary-soft)}.tab-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.sheet-backdrop{z-index:40;background:var(--backdrop);opacity:0;pointer-events:none;transition:opacity .25s var(--ease);display:block;position:fixed;inset:0}.nav-sheet{z-index:41;max-height:85vh;padding:.6rem max(16px, env(safe-area-inset-right,0px)) calc(1rem + env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px));background:var(--card);box-shadow:var(--shadow-lg);border-radius:24px 24px 0 0;flex-direction:column;gap:.25rem;display:none;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.nav-sheet:before{content:"";background:var(--border);border-radius:4px;align-self:center;width:40px;height:4px;margin-bottom:.4rem}.more-open .nav-sheet{animation:sheet-up .3s var(--ease) both;display:flex}.more-open .sheet-backdrop{opacity:1;pointer-events:auto}.sheet-head{justify-content:space-between;align-items:center;padding:0 .25rem .25rem;display:flex}.nav-secondary{grid-template-columns:repeat(3,1fr);gap:.5rem;display:grid}.nav-secondary button.tab{text-align:center;background:var(--surface-2);min-height:84px;color:var(--text);border-radius:16px;flex-direction:column;justify-content:center;gap:.35rem;padding:.6rem .3rem;font-size:.82rem}.nav-secondary button.tab .icon{color:var(--primary)}.nav-secondary button.tab.active{background:var(--primary-soft);color:var(--primary)}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}.banner,.demo-banner{margin:0 max(16px, env(safe-area-inset-right,0px)) .75rem max(16px, env(safe-area-inset-left,0px));background:color-mix(in srgb, var(--warn) 13%, var(--card));border:1px solid color-mix(in srgb, var(--warn) 25%, var(--border));border-radius:14px;flex-wrap:wrap;align-items:center;gap:.35rem .6rem;padding:.65rem .9rem;font-size:.9rem;display:flex}.shell-main>.banner,.shell-main>.demo-banner{margin-left:max(16px, env(safe-area-inset-left,0px), calc((100% - 1068px) / 2));margin-right:max(16px, env(safe-area-inset-right,0px), calc((100% - 1068px) / 2))}.readonly-banner,.demo-banner{background:var(--primary-soft);border-color:color-mix(in srgb, var(--primary) 22%, var(--border))}.notice{border:1px solid color-mix(in srgb, var(--warn) 45%, var(--border))}a.alert{color:var(--text);border-color:color-mix(in srgb, var(--warn) 45%, var(--border));background:color-mix(in srgb, var(--warn) 8%, var(--card));transition:transform .15s var(--ease);flex-wrap:wrap;align-items:center;gap:.25rem .5rem;text-decoration:none;display:flex}a.alert:active{transform:scale(.99)}a.alert .link-text{color:var(--primary);font-weight:700}.hero{isolation:isolate;color:var(--hero-ink);background:linear-gradient(140deg, var(--hero-from), var(--hero-to));box-shadow:0 14px 34px color-mix(in srgb, var(--hero-from) 35%, transparent);border-radius:24px;flex-direction:column;gap:.2rem;padding:1.4rem 1.3rem 1.2rem;display:flex;position:relative;overflow:hidden}.hero:after{content:"";z-index:-1;background:radial-gradient(circle,#ffffff38,#0000 70%);border-radius:50%;width:220px;height:220px;position:absolute;top:-70px;right:-60px}.hero-label{opacity:.85;font-size:.85rem;font-weight:600}.hero-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:clamp(2rem,9vw,2.7rem);font-weight:800;line-height:1.1}.hero-stats{grid-template-columns:1fr 1fr;gap:.6rem;margin-top:.9rem;display:grid}.hero-stats div{background:#ffffff24;border-radius:14px;flex-direction:column;gap:.1rem;min-width:0;padding:.65rem .8rem;display:flex}.hero-stats span{opacity:.85;font-size:.75rem;font-weight:600}.hero-stats strong{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:1.05rem;font-weight:800}.budget-row,.budget-edit{margin:.85rem 0}.budget-row{align-items:center;gap:.75rem;display:flex}.budget-body{flex:1;min-width:0}.budget-label{flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;font-weight:600;display:flex}.budget-label .muted{font-size:.88rem;font-weight:500}.bar{background:var(--surface-2);border-radius:999px;height:10px;margin-top:.35rem;overflow:hidden}.fill{background:var(--pos);height:100%;transition:width .6s var(--ease);border-radius:999px}.fill.warning{background:var(--warn)}.fill.over{background:var(--neg)}.preview{border:1px dashed var(--border);background:var(--surface-2);border-radius:14px;padding:.85rem}.preview p{margin:0}table.sample{margin-top:.5rem;font-size:.85rem}table.sample th.mapped{color:var(--primary)}.demo-links{flex-wrap:wrap;margin:0;display:flex}.export-preview{background:var(--surface-2);border:1px solid var(--border);white-space:pre;border-radius:12px;max-height:18rem;margin:0;padding:.7rem;font-size:.8rem;overflow:auto}.codes{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.4rem;margin:.6rem 0 0;padding:0;list-style:none;display:grid}.codes code{font-family:ui-monospace,monospace}.qr{background:#fff;border-radius:12px;width:180px;height:180px;padding:6px}.auth{max-width:400px;padding:8vh max(16px, env(safe-area-inset-right,0px)) 2rem max(16px, env(safe-area-inset-left,0px));animation:page-in .4s var(--ease) both;flex-direction:column;gap:1rem;margin:0 auto;display:flex}.auth-brand{align-items:center;gap:.7rem;display:flex}.auth-brand h1{margin:0;font-size:1.7rem}.auth-brand .logo{border-radius:14px;width:46px;height:46px;font-size:1rem}.auth form button[type=submit]{width:100%}.dialog-backdrop{z-index:60;background:var(--backdrop);place-items:center;padding:1rem;animation:.2s both fade-in;display:grid;position:fixed;inset:0}.dialog{width:min(26rem,100%);box-shadow:var(--shadow-lg);animation:pop-in .25s var(--ease) both;border-radius:22px}.dialog p{margin:0}.dialog-actions{justify-content:flex-end;margin-top:0}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:scale(.94)translateY(8px)}}.viz-root,.chart{--series-1:#2a78d6;--series-2:#eb6834;--grid:#e5ebe6;--axis:#66736c}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .viz-root,:root:not([data-theme=light]) .chart{--series-1:#3987e5;--series-2:#d95926;--grid:#24302b;--axis:#93a39b}}:root[data-theme=dark] .viz-root,:root[data-theme=dark] .chart{--series-1:#3987e5;--series-2:#d95926;--grid:#24302b;--axis:#93a39b}.chart,.chart h2{margin:0}.chart-wrap{position:relative}.chart svg{width:100%;height:auto;margin-top:.5rem;display:block}.chart .grid{stroke:var(--grid);stroke-width:1px}.chart .baseline{stroke:var(--axis);stroke-width:1px}.chart .axis{fill:var(--axis);font-size:11px;font-family:var(--font)}.chart .bar.s1{fill:var(--series-1)}.chart .bar.s2{fill:var(--series-2)}.chart .bar{transition:opacity .15s}.legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.75rem;font-size:.85rem;display:flex}.legend span{align-items:center;gap:.3rem;display:inline-flex}.swatch{border-radius:3px;width:10px;height:10px;display:inline-block}.swatch.s1{background:var(--series-1)}.swatch.s2{background:var(--series-2)}.tooltip{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-lg);pointer-events:none;border-radius:12px;flex-direction:column;gap:.15rem;padding:.55rem .7rem;font-size:.85rem;display:flex;position:absolute;top:0;right:0}.tooltip span{align-items:center;gap:.35rem;display:inline-flex}.hbars{flex-direction:column;gap:.6rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.hbars li{grid-template-columns:8.5rem 1fr auto;align-items:center;gap:.6rem;display:grid}.hbar-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hbar-track{height:10px}.hbar-fill{background:var(--series-1);border-radius:0 999px 999px 0;min-width:2px;height:100%;display:block}.hbar-value{white-space:nowrap;font-variant-numeric:tabular-nums}@media (width<=520px){.hbars li{grid-template-columns:minmax(0,1fr) auto;row-gap:.3rem}.hbar-label{grid-area:1/1}.hbar-value{grid-area:1/2}.hbar-track{background:var(--surface-2);border-radius:999px;grid-area:2/1/auto/-1;overflow:hidden}}@media (width<=720px){.card{padding:1rem;overflow-x:auto}.inline>button{flex:auto}.card table:not(.sample) thead{display:none}.card table:not(.sample) tbody tr{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto;grid-auto-flow:dense;gap:.1rem .75rem;padding:.8rem .1rem;display:grid}.card table:not(.sample) tbody tr:last-child{border-bottom:none}.card table:not(.sample) tbody tr:hover{background:0 0}.card table:not(.sample) tbody td{color:var(--muted);overflow-wrap:anywhere;border:none;grid-column:1;padding:0;font-size:.88rem}.card table:not(.sample) tbody td.title{color:var(--text);order:-1;font-size:1rem;font-weight:700}.card table:not(.sample) tbody tr:not(:has(td.title)) td:first-child{color:var(--text);order:-1;font-size:1rem;font-weight:700}.card table:not(.sample) tbody td:not(:first-child):not(.title):not(.num)[data-label]:not([data-label=""]):before{content:attr(data-label) " · ";font-weight:600}.card table:not(.sample) tbody td.num{text-align:right;color:inherit;grid-column:2;font-size:.95rem;font-weight:700}.card table:not(.sample) tbody td.num.neg{color:var(--neg)}.card table:not(.sample) tbody td.num.pos{color:var(--pos)}.card table:not(.sample) tbody tr:has(td.num:not([data-label=""])~td.num:not([data-label=""])) td.num[data-label]:not([data-label=""]):before{content:attr(data-label);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem;font-weight:600;display:block}.card table:not(.sample) tbody td[data-label=""]:not(:first-child){text-align:right;flex-wrap:wrap;grid-column:1/-1;justify-content:flex-end;gap:.4rem .9rem;margin-top:.4rem;display:flex}.card table:not(.sample) tbody td[data-label=""] button:not(.link){min-height:38px;padding:.35rem .9rem}.card table:not(.sample) tfoot tr{justify-content:space-between;gap:1rem;display:flex}.card table:not(.sample) tfoot td{padding:.75rem .1rem 0}.card table:not(.sample) tfoot td:empty{display:none}.warn-row td.title,.warn-row td:first-child{color:var(--warn)!important}.card table.tx-table tbody tr.tx-line{cursor:pointer;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:.05rem .75rem;padding:.65rem .1rem}.card table.tx-table tbody tr.tx-line td{order:0!important}.card table.tx-table tbody td.tx-icon{grid-area:1/1/span 2;margin:0;display:block}.card table.tx-table tbody td.title{grid-area:1/2/auto/4;font-size:.98rem}.card table.tx-table tbody td.num:not(.row-actions){grid-area:1/4}.card table.tx-table tbody td.num:before{display:none!important}.card table.tx-table tbody td.tx-cat{white-space:nowrap;grid-area:2/2;font-size:.82rem}.card table.tx-table tbody td.tx-acc{white-space:nowrap;text-overflow:ellipsis;grid-area:2/3/auto/5;margin-left:-.75rem;font-size:.82rem;overflow:hidden}.card table.tx-table tbody td.tx-cat:before{content:none!important}.card table.tx-table tbody td.tx-acc:before{font-weight:400;content:" · "!important}.card table.tx-table tbody td.tx-date,.card table.tx-table tbody td.row-actions{display:none!important}.card table.tx-table tbody tr.tx-line:active{background:var(--surface-2)}.card table.tx-table tbody tr.day-row{border-bottom:none;padding:1.1rem .1rem .15rem;display:block}.card table.tx-table tbody tr.day-row:first-child{padding-top:.2rem}.card table.tx-table tbody tr.day-row td{border:none;justify-content:space-between;gap:1rem;padding:0;display:flex;color:var(--muted)!important;font-size:.74rem!important;font-weight:700!important}.card table.tx-table tbody tr.day-row td>span:last-child{white-space:nowrap}}.toolbar{flex-direction:column;gap:.6rem;display:flex}.month-switch{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.month-switch strong{text-align:center;flex:1;font-size:1.05rem}.month-switch .icon-button{background:var(--card);border:1px solid var(--border);color:var(--text)}.search-row{align-items:center;gap:.5rem;display:flex}label.search{background:var(--card);border:1px solid var(--border);min-width:0;min-height:44px;color:var(--muted);border-radius:999px;flex-direction:row;flex:1;align-items:center;gap:.5rem;padding:0 .85rem}label.search:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 22%, transparent)}label.search input{min-height:40px;box-shadow:none;background:0 0;border:none;flex:1;padding:0}label.search input:focus{box-shadow:none;background:0 0}button.chip{background:var(--card);color:var(--text);border:1px solid var(--border);flex:none;align-items:center;gap:.4rem;padding:.5rem .95rem;font-weight:600;display:inline-flex}button.chip:hover{box-shadow:none;border-color:color-mix(in srgb, var(--primary) 40%, var(--border))}button.chip.active{background:var(--primary-soft);color:var(--primary);border-color:#0000}.chip .count{background:var(--primary);min-width:1.25rem;height:1.25rem;color:var(--primary-ink);border-radius:999px;place-items:center;font-size:.72rem;display:inline-grid}.filter-panel{animation:page-in .25s var(--ease) both;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:.75rem;display:grid}.filter-actions{grid-column:1/-1;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.summary-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;display:grid}.summary-strip div{background:var(--card);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:.1rem;min-width:0;padding:.65rem .75rem;display:flex}.summary-strip span{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:700}.summary-strip strong{font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.01em;font-size:clamp(.8rem,3.5vw,1rem);font-weight:800}.summary-strip div{padding-inline:clamp(.5rem,2.5vw,.75rem)}.list-card{padding-top:.4rem;padding-bottom:.4rem}.list-foot,.empty{padding:.6rem .1rem;font-size:.85rem}.list-foot{border-top:1px solid var(--border)}.card-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}.card-head h2{margin:0}button.small{align-items:center;gap:.3rem;min-height:36px;padding:.35rem .85rem;font-size:.9rem;display:inline-flex}body.sheet-lock{overflow:hidden}.sheet-layer{z-index:50;background:var(--backdrop);justify-content:center;align-items:flex-end;animation:.2s both fade-in;display:flex;position:fixed;inset:0}.sheet{background:var(--card);width:100%;max-height:92vh;color:var(--text);box-shadow:var(--shadow-lg);padding:.9rem max(16px, env(safe-area-inset-right,0px)) calc(1.1rem + env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px));animation:sheet-up .3s var(--ease) both;border-radius:24px 24px 0 0;overflow-y:auto}.sheet-title{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.sheet-title h2{margin:0;font-size:1.2rem}@media (width>=900px){.sheet-layer{align-items:center;padding:1.5rem}.sheet{width:min(32rem,100%);animation:pop-in .25s var(--ease) both;border-radius:24px;padding:1.25rem 1.4rem 1.4rem}}.sheet-form{flex-direction:column;gap:.85rem;display:flex}.sheet-form label>input,.sheet-form label>select{width:100%}.field-row{grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));gap:.75rem;display:grid}.amount-field input{letter-spacing:-.02em;font-variant-numeric:tabular-nums;min-height:58px;font-size:1.6rem;font-weight:800}.segmented{background:var(--surface-2);border-radius:999px;grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.segmented button{min-height:40px;color:var(--muted);background:0 0}.segmented button:hover{box-shadow:none;color:var(--text)}.segmented button.on{background:var(--card);color:var(--text);box-shadow:var(--shadow)}.segmented button.on.expense{color:var(--neg)}.segmented button.on.income{color:var(--pos)}button.wide{width:100%;min-height:50px;font-size:1.02rem}button.link.danger-link{color:var(--neg);align-self:center}.fab{z-index:25;right:max(16px, env(safe-area-inset-right,0px));bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom,0px));min-height:56px;box-shadow:0 10px 26px color-mix(in srgb, var(--primary) 40%, transparent);animation:pop-in .3s var(--ease) both;border-radius:18px;align-items:center;gap:.5rem;padding:0 1.25rem 0 1rem;display:inline-flex;position:fixed}.fab .icon{stroke-width:2.4px;width:24px;height:24px}@media (width<=899.98px){.fab{border-radius:20px;justify-content:center;width:58px;height:58px;padding:0}.fab span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (width>=900px){.fab{bottom:calc(24px + env(safe-area-inset-bottom,0px));right:max(24px, env(safe-area-inset-right,0px))}}.segmented.mini{gap:2px;padding:3px;display:inline-grid}.segmented.mini button{min-height:32px;padding:.25rem .8rem;font-size:.82rem}.chart .row-between{align-items:flex-start}.chart{container-type:inline-size}.donut{grid-template-columns:1fr;align-items:center;gap:1rem;margin-top:.75rem;display:grid}.donut svg{justify-self:center;width:100%;max-width:210px;height:auto;display:block}@container (width>=620px){.donut{grid-template-columns:200px minmax(0,1fr);gap:1.5rem}}.donut-track{fill:none;stroke:var(--grid);stroke-width:22px}.donut-slice{fill:none;stroke-width:22px;transform-origin:90px 90px;cursor:pointer;transition:opacity .15s;transform:rotate(-90deg)}.donut-center{fill:var(--text);font-size:17px;font-weight:800;font-family:var(--font);font-variant-numeric:tabular-nums}.donut-sub{fill:var(--muted);font-size:10.5px;font-family:var(--font)}.donut-legend{flex-direction:column;gap:.1rem;min-width:0;margin:0;padding:0;list-style:none;display:flex}.donut-legend li{cursor:pointer;border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.55rem;padding:.4rem .5rem;display:grid}.donut-legend li.on,.donut-legend li:hover{background:var(--surface-2)}.donut-legend .swatch{border-radius:4px;width:12px;height:12px}.donut-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.donut-value{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600}.chip-list.month-chips{scrollbar-width:none;flex-wrap:nowrap;margin-top:.75rem;padding-bottom:2px;overflow-x:auto}.month-chips::-webkit-scrollbar{display:none}.month-chips .chip{min-height:34px;padding:.3rem .8rem;font-size:.85rem}.hint-line{margin:-.15rem 0 .5rem;font-size:.88rem}.intro{padding:0 .2rem;font-size:.92rem}.tap-list{flex-direction:column;display:flex}button.tap-row{text-align:left;width:100%;color:var(--text);background:0 0;border-radius:14px;width:calc(100% + 1.2rem);margin:0 -.6rem;padding:.15rem .6rem;font-weight:400;display:block}button.tap-row:hover{background:var(--surface-2);box-shadow:none}button.tap-row .budget-row{margin:.6rem 0}.chip-list{flex-wrap:wrap;gap:.5rem;display:flex}.goal-actions{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.rule-list{margin:0;padding:0;list-style:none}.rule-list li{border-bottom:1px solid var(--border);align-items:center;gap:.6rem;padding:.6rem 0;display:flex}.rule-list li:last-child{border-bottom:none}.rule-text{flex-direction:column;flex:1;min-width:0;display:flex}.rule-text strong{overflow-wrap:anywhere}button.action-row{border-radius:16px;justify-content:center;align-items:center;gap:.5rem;width:100%;min-height:50px;display:flex}.pay-with{margin-bottom:.25rem;font-size:.9rem}.status-pill{background:var(--surface-2);color:var(--muted);border-radius:999px;padding:.12rem .55rem;font-size:.75rem;font-weight:700;display:inline-block}.status-pill.open{background:var(--primary-soft);color:var(--primary)}.status-pill.closed{background:color-mix(in srgb, var(--warn) 15%, var(--card));color:var(--warn)}.status-pill.overdue{background:color-mix(in srgb, var(--neg) 14%, var(--card));color:var(--neg)}.only-mobile{display:none}details.disclosure>summary{cursor:pointer;flex-direction:column;gap:.2rem;padding-right:2rem;list-style:none;display:flex;position:relative}details.disclosure>summary::-webkit-details-marker{display:none}details.disclosure>summary:after{content:"";border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);width:.6rem;height:.6rem;transition:transform .2s var(--ease);position:absolute;top:.35rem;right:.3rem;transform:rotate(45deg)}details.disclosure[open]>summary:after{top:.6rem;transform:rotate(-135deg)}details.disclosure>summary h2{margin:0}details.disclosure[open]>summary{margin-bottom:.5rem}.entry-list{margin:0;padding:0;list-style:none}.entry-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem 0;display:flex}.entry-list li:last-child{border-bottom:none}.entry-list li>span:first-child{flex-direction:column;min-width:0;display:flex}.entry-list strong{overflow-wrap:anywhere;font-weight:600}.entry-list small{font-size:.8rem}.entry-list .num{font-weight:700}.toast-zone{z-index:70;pointer-events:none;left:0;right:0;bottom:calc(var(--nav-h) + 88px + env(safe-area-inset-bottom,0px));justify-content:center;padding:0 16px;display:flex;position:fixed}.toast{background:var(--text);max-width:100%;color:var(--bg);box-shadow:var(--shadow-lg);animation:toast-in 2.6s var(--ease) both;border-radius:14px;align-items:center;gap:.5rem;padding:.7rem 1rem;font-size:.92rem;font-weight:600;display:inline-flex}.toast .icon{color:var(--primary-soft)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}10%,85%{opacity:1;transform:none}to{opacity:0;transform:translateY(6px)}}@media (width>=900px){.toast-zone{padding-left:248px;bottom:32px}}@media (width<=720px){.only-mobile{display:inline}.card table.invoice-table tbody td:nth-child(2),.card table.invoice-table tbody td:nth-child(5){display:none}.card table.invoice-table tbody td:before,.card table.no-labels tbody td:before{display:none!important}.card table.invoice-table tbody tr{grid-template-columns:minmax(0,1fr) auto auto;align-items:center}.card table.invoice-table tbody td.title{grid-area:1/1}.card table.invoice-table tbody td:nth-child(4){grid-area:1/2/span 2}.card table.invoice-table tbody td:nth-child(3){grid-area:2/1}.card table.invoice-table tbody td:nth-child(6){grid-area:1/3/span 2;font-size:1rem}.card table.invoice-table tbody td:nth-child(7){grid-area:3/1/auto/-1}.card table.invoice-table tbody td:nth-child(7):empty{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.tx-table tbody tr.tx-line{cursor:pointer}.tx-table tbody tr.day-row td{border-bottom:1px solid var(--border);color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:.9rem .5rem .35rem;font-size:.78rem;font-weight:700;display:table-cell}.tx-table tbody tr.day-row td>span:last-child{float:right;font-variant-numeric:tabular-nums}.tx-table tbody tr.day-row td .neg{color:var(--neg)}.tx-table tbody tr.day-row td .pos{color:var(--pos)}.tx-table tbody tr.day-row:hover{background:0 0}.tx-table td.tx-icon{width:44px;padding-right:0}.tx-table tr.tx-line+tr.day-row td{padding-top:1.2rem}.cat-icon{--c:var(--muted);width:36px;height:36px;color:var(--c);background:color-mix(in srgb, var(--c) 15%, transparent);border-radius:12px;flex:none;place-items:center;display:inline-grid}.cat-icon .icon{stroke-width:2px}.suggest{border-radius:var(--radius-sm);background:var(--surface-2);align-items:center;gap:.6rem;margin:0;padding:.55rem .7rem;font-size:.92rem;display:flex}.suggest .cat-icon{border-radius:10px;width:30px;height:30px}.suggest>span:not(.cat-icon){flex:1;min-width:0}.suggest .chip{min-height:34px}button.card.spend-left{text-align:left;width:100%;font:inherit;color:var(--text);background:var(--card);border:1px solid var(--border);flex-direction:column;align-items:stretch;gap:.2rem;min-height:0;padding:1rem 1.1rem;display:flex}button.card.spend-left:hover{box-shadow:var(--shadow)}.spend-left-label{color:var(--muted);font-size:.85rem;font-weight:700}.spend-left-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--pos);font-size:clamp(1.6rem,7vw,2rem);font-weight:800}.spend-left-value.neg{color:var(--neg)}.spend-left[data-status=warning] .spend-left-value{color:var(--warn)}.spend-left .bar{margin-top:.5rem;display:block}.spend-left .fill{display:block}.spend-left small{font-size:.8rem}.entry-list li>.cat-icon{order:-1}.entry-list li>span:nth-child(2){flex-direction:column;flex:1;min-width:0;display:flex}.spend-alerts{border-top:1px solid var(--border);flex-direction:column;gap:.35rem;margin-top:.6rem;padding-top:.6rem;display:flex}.spend-alert{align-items:center;gap:.5rem;font-size:.86rem;font-weight:600;display:flex}.spend-alert .cat-icon{border-radius:8px;width:24px;height:24px}.spend-alert.over{color:var(--neg)}.spend-alert.warning{color:var(--warn)}.theme-switch{border-top:1px solid var(--border);flex-direction:column;gap:.4rem;margin-top:.75rem;padding:.75rem .5rem 0;display:flex}.theme-switch-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.78rem;font-weight:700}.segmented.three{grid-template-columns:repeat(3,1fr)}.segmented.three button{min-height:36px;padding:0 .3rem;font-size:.85rem}.theme-switch+.nav-user{margin-top:.5rem}@media (width>=900px){.shell-nav .theme-switch{margin-top:auto}}.install-hint{align-items:center;gap:.8rem;padding:.85rem .9rem;display:flex}.install-hint img{border-radius:10px;flex:none}.install-hint p{flex-direction:column;flex:1;gap:.15rem;min-width:0;margin:0;font-size:.9rem;display:flex}button.secondary.wide{justify-content:center;align-items:center;gap:.4rem;display:inline-flex}
