:root{--bg: #0a0a0b;--surface: #141416;--surface-2: #1b1c1f;--surface-3: #232428;--line: rgba(255, 255, 255, .08);--line-strong: rgba(255, 255, 255, .14);--text: #f2f1ed;--text-2: rgba(242, 241, 237, .66);--text-3: rgba(242, 241, 237, .42);--gold: #d4af37;--gold-soft: rgba(212, 175, 55, .14);--gold-line: rgba(212, 175, 55, .4);--on-gold: #17130a;--good: #4fbf8f;--warn: #e0533d;--warn-soft: rgba(224, 83, 61, .16);--focus: #e9c95c;--shadow: 0 1px 0 rgba(255, 255, 255, .03) inset, 0 8px 24px rgba(0, 0, 0, .35);--radius: 14px;--sidebar: 232px;color-scheme:dark;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-feature-settings:"cv11","ss01";color:var(--text);background:var(--bg)}:root[data-theme=light]{--bg: #f6f5f1;--surface: #ffffff;--surface-2: #faf9f6;--surface-3: #f0eee8;--line: rgba(20, 18, 10, .09);--line-strong: rgba(20, 18, 10, .16);--text: #191814;--text-2: rgba(25, 24, 20, .66);--text-3: rgba(25, 24, 20, .45);--gold: #9a7614;--gold-soft: rgba(154, 118, 20, .1);--gold-line: rgba(154, 118, 20, .35);--on-gold: #ffffff;--good: #1f8a5b;--warn: #c2412d;--warn-soft: rgba(194, 65, 45, .1);--focus: #9a7614;--shadow: 0 1px 2px rgba(20, 18, 10, .05), 0 8px 24px rgba(20, 18, 10, .05);color-scheme:light}*{box-sizing:border-box}html,body{margin:0;background:var(--bg)}body{-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:1.6rem}h2{font-size:1rem}h3{font-size:.85rem}p{margin:0}a{color:var(--gold);text-decoration:none}a:hover{text-decoration:underline}.num,td,.money{font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}button,.btn{font:inherit;font-size:.875rem;font-weight:500;padding:8px 14px;border-radius:10px;cursor:pointer;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}button:hover{background:var(--surface-3)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--gold);border-color:var(--gold);color:var(--on-gold)}button.primary:hover{filter:brightness(1.06)}button.ghost{background:none;border-color:transparent;color:var(--text-2)}button.ghost:hover{color:var(--text);background:var(--surface-2)}button.danger{color:var(--warn)}button.small{padding:4px 10px;font-size:.8rem;border-radius:8px}button.icon{padding:6px;border-radius:8px}input,select,textarea{font:inherit;font-size:.9rem;width:100%;padding:8px 10px;border-radius:9px;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text)}textarea{resize:vertical;min-height:64px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold-line);box-shadow:0 0 0 3px var(--gold-soft)}label.field{display:flex;flex-direction:column;gap:6px;font-size:.8rem;color:var(--text-2)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.checkbox{display:flex;gap:8px;align-items:center;font-size:.875rem;color:var(--text)}.checkbox input{width:auto}.segmented{display:inline-flex;padding:3px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line)}.segmented button{border:none;background:none;padding:5px 12px;color:var(--text-2);border-radius:7px}.segmented button[aria-pressed=true]{background:var(--surface-3);color:var(--text);box-shadow:var(--shadow)}.shell{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:20px 14px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:24px;background:var(--bg)}.brand{display:flex;align-items:center;gap:10px;padding:0 8px;font-weight:650;font-size:1.05rem;letter-spacing:-.01em}.brand-mark{width:26px;height:26px;border-radius:8px;background:var(--gold-soft);border:1px solid var(--gold-line);display:grid;place-items:center;color:var(--gold)}.nav{display:flex;flex-direction:column;gap:2px}.nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;color:var(--text-2);text-decoration:none;font-size:.9rem;font-weight:500}.nav a:hover{background:var(--surface);color:var(--text)}.nav a[aria-current=page]{background:var(--surface-2);color:var(--text);box-shadow:inset 2px 0 0 var(--gold)}.nav kbd{margin-left:auto}.sidebar-foot{margin-top:auto;display:flex;flex-direction:column;gap:10px;font-size:.8rem;color:var(--text-3);padding:0 8px}.sidebar-foot .who{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}kbd{font:500 .7rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text-3);border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:5px;padding:2px 5px}.main{min-width:0;padding:28px clamp(16px,3vw,40px) 64px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-head .sub{color:var(--text-2);font-size:.9rem;margin-top:4px}.page-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px 0}.panel-head h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-2);font-weight:600}.panel-body{padding:16px 18px 18px}.panel-body.flush{padding:12px 0 0}.grid{display:grid;gap:16px}.cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.split{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start}.sticky{position:sticky;top:20px}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px}.stat{padding:16px 18px}.stat .label{font-size:.78rem;color:var(--text-2);display:flex;align-items:center;gap:6px}.stat .value{font-size:1.6rem;font-weight:600;letter-spacing:-.02em;margin-top:6px;font-variant-numeric:tabular-nums}.stat .foot{font-size:.78rem;color:var(--text-3);margin-top:6px;display:flex;gap:6px;align-items:center}.stat.hero .value{font-size:2.2rem}.up{color:var(--good)}.down{color:var(--warn)}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:.8rem}.gold{color:var(--gold)}.warn{color:var(--warn)}.pill{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;font-weight:500;padding:3px 9px;border-radius:999px;border:1px solid var(--line-strong);color:var(--text-2);white-space:nowrap}.pill.gold{color:var(--gold);border-color:var(--gold-line);background:var(--gold-soft)}.pill.warn{color:var(--warn);border-color:transparent;background:var(--warn-soft)}.pill.good{color:var(--good);border-color:transparent;background:color-mix(in srgb,var(--good) 14%,transparent)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.banner{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:12px;background:var(--warn-soft);color:var(--text);font-size:.875rem;margin-bottom:16px}.banner.info{background:var(--gold-soft)}table{width:100%;border-collapse:collapse;font-size:.875rem}th{text-align:left;font-weight:500;font-size:.75rem;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}th.r,td.r{text-align:right}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--surface-2)}tr.selected td{background:var(--gold-soft)}tr.group td{background:var(--surface-2);font-weight:600;font-size:.8rem;color:var(--text-2);padding-top:8px;padding-bottom:8px}tr.total td{font-weight:600;border-bottom:none}tr.inactive td{color:var(--text-3)}th:first-child,td:first-child{padding-left:18px}th:last-child,td:last-child{padding-right:18px}.panel-body:not(.flush) th:first-child,.panel-body:not(.flush) td:first-child{padding-left:0}.panel-body:not(.flush) th:last-child,.panel-body:not(.flush) td:last-child{padding-right:0}.table-scroll{overflow-x:auto}.ledger td{padding-top:9px;padding-bottom:9px}.ledger .op{width:28px;color:var(--text-3);text-align:center;padding-left:0;padding-right:0}.ledger tr.subtotal td{border-top:1px solid var(--line-strong);font-weight:600}.ledger tr.result td{font-size:1.05rem;font-weight:650;border-bottom:none;color:var(--gold)}.ledger .note{font-size:.75rem;color:var(--text-3);margin-top:2px}.sheet-wrap{overflow:auto;max-height:calc(100vh - 220px);border-radius:var(--radius)}.sheet-wrap:focus-visible{outline:none}.sheet{border-collapse:separate;border-spacing:0;font-size:.85rem;width:100%;min-width:1060px}.sheet th,.sheet td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:0;height:36px}.sheet th{position:sticky;top:0;z-index:2;background:var(--surface);text-align:right;padding:0 10px}.sheet th.cat,.sheet td.cat{position:sticky;left:0;z-index:1;background:var(--surface);text-align:left;min-width:180px;padding:0 12px 0 18px;white-space:nowrap}.sheet th.cat{z-index:3}.sheet td.cell{text-align:right;padding:0 8px;min-width:58px;cursor:cell;position:relative}.sheet td.cell.derived{color:var(--text-2);font-style:italic}.sheet td.cell.empty{color:var(--text-3)}.sheet td.cell.current{background:color-mix(in srgb,var(--gold-soft) 45%,transparent)}.sheet td.cell.active{box-shadow:inset 0 0 0 2px var(--gold)}.sheet td.cell input{border:none;border-radius:0;height:100%;padding:0 8px;text-align:right;background:var(--surface-3);box-shadow:inset 0 0 0 2px var(--gold)}.sheet td.rowtotal{text-align:right;padding:0 12px;font-weight:600;background:var(--surface-2);min-width:84px}.sheet tr.section td{background:var(--surface-2);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);height:30px}.sheet tr.foot td{font-weight:600;background:var(--surface-2);text-align:right;padding:0 10px}.sheet tr.foot td.cat{text-align:left}.sheet tr.add td{height:34px}.sheet tr.add input{border:none;background:none;padding:0;font-size:.85rem}.swatch{width:8px;height:8px;border-radius:2px;display:inline-block;margin-right:8px;vertical-align:middle}.inspector{display:flex;flex-direction:column;gap:14px}.inspector .actions{display:flex;gap:8px;justify-content:space-between;margin-top:4px}.chart{width:100%;display:block;overflow:visible}.chart text{fill:var(--text-3);font-size:11px;font-family:inherit}.chart .grid-line{stroke:var(--line)}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:.78rem;color:var(--text-2)}.legend span{display:inline-flex;align-items:center;gap:6px}.tooltip{position:absolute;pointer-events:none;background:var(--surface-3);border:1px solid var(--line-strong);border-radius:10px;padding:8px 10px;font-size:.78rem;box-shadow:var(--shadow);min-width:150px;z-index:5}.tooltip .row{display:flex;justify-content:space-between;gap:14px}.chart-box{position:relative}.bar-track{height:8px;border-radius:4px;background:var(--surface-3);overflow:hidden}.bar-fill{height:100%;border-radius:4px}.timeline{position:relative;height:54px;margin:6px 0 2px}.timeline .track{position:absolute;left:0;right:0;top:22px;height:10px;border-radius:5px;background:var(--surface-3);overflow:hidden}.timeline .fill{height:100%;background:linear-gradient(90deg,var(--gold-line),var(--gold))}.timeline .tick{position:absolute;top:18px;width:1px;height:18px;background:var(--line-strong)}.timeline .tick-label{position:absolute;top:40px;transform:translate(-50%);font-size:.68rem;color:var(--text-3);white-space:nowrap}.timeline .now{position:absolute;top:12px;width:2px;height:30px;background:var(--text);border-radius:1px}.timeline .now-label{position:absolute;top:-4px;transform:translate(-50%);font-size:.7rem;font-weight:600;white-space:nowrap}.compare th.school,.compare td.school{text-align:right}.compare th.mine,.compare td.mine{background:var(--gold-soft);color:var(--text)}.compare th.mine{color:var(--gold)}.landing{min-height:100vh;background:var(--bg)}.landing-bar{display:flex;justify-content:space-between;align-items:center;padding:20px clamp(16px,4vw,48px)}.landing-signin{margin:0 clamp(16px,4vw,48px) 16px;padding:18px;display:grid;gap:12px;max-width:520px;margin-left:auto}.landing-hero{position:relative;overflow:hidden;padding:clamp(48px,10vh,120px) clamp(16px,4vw,48px) 72px;border-bottom:1px solid var(--line);background:radial-gradient(900px 500px at 50% 0%,var(--gold-soft),transparent 65%)}.landing-hero-inner{position:relative;max-width:720px;margin:0 auto;text-align:center;display:grid;gap:20px;justify-items:center}.landing-hero h1{font-size:clamp(2rem,5vw,3.2rem);line-height:1.08;letter-spacing:-.02em;max-width:16ch}.landing-hero-inner>p{color:var(--text-2);font-size:1.1rem;line-height:1.55;max-width:52ch}.landing-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;width:100%;max-width:460px;margin-top:8px;text-align:left}.landing-form input{padding:11px 14px}.landing-form button{padding:11px 18px}.landing-form .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.landing-done{display:flex;gap:10px;align-items:center;padding:14px 18px;border-radius:12px;background:var(--gold-soft);color:var(--text)}.landing-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;max-width:1100px;margin:0 auto;padding:56px clamp(16px,4vw,48px)}.landing-feature{padding:22px;display:grid;gap:10px;align-content:start}.landing-feature h2{font-size:1rem}.landing-feature p{color:var(--text-2);font-size:.9rem;line-height:1.5}.landing-foot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:24px clamp(16px,4vw,48px) 40px;color:var(--text-3);font-size:.85rem;border-top:1px solid var(--line);max-width:1100px;margin:0 auto}.pattern{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.5;color:var(--line-strong)}.empty{padding:28px 18px;text-align:center;color:var(--text-3);font-size:.875rem}.loading{display:grid;place-items:center;min-height:60vh;color:var(--text-3)}.error{color:var(--warn);font-size:.85rem}@media(max-width:1180px){.split{grid-template-columns:1fr}.sticky{position:static}.span-3,.span-4,.span-5{grid-column:span 6}.span-7,.span-8{grid-column:span 12}}@media(max-width:760px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;align-items:center;padding:10px 16px;gap:12px;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line)}.nav{flex-direction:row}.nav kbd,.sidebar-foot{display:none}.main{padding:20px 16px 48px}.span-3,.span-4,.span-5,.span-6{grid-column:span 12}.landing-form,.field-row{grid-template-columns:1fr}}
