:root{--bg: #f4f6f8;--surface: #ffffff;--surface-2: #eceff3;--border: #d3d9e0;--border-strong: #b3bcc7;--text: #10141a;--text-muted: #4a5361;--text-faint: #6b7480;--accent: #17518f;--accent-soft: #e4eefa;--actual: #0f5940;--actual-soft: #dcefe7;--projected: #5a49ab;--warn: #7a4c00;--warn-soft: #fdf1dc;--danger: #96201f;--c1: #17518f;--c2: #0f5940;--c3: #a4551d;--c4: #5a49ab;--c5: #8d1f42;--radius: 8px;--gap: 20px;--shadow: 0 1px 2px rgba(16, 20, 26, .07), 0 2px 10px rgba(16, 20, 26, .04);--font: Helvetica, "Helvetica Neue", Arial, system-ui, -apple-system, "Segoe UI", sans-serif;--num: var(--font);--mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--fs-page: 25px;--fs-section: 19px;--fs-body: 16px;--fs-table: 15px;--fs-small: 14px;--fs-stat: clamp(24px, 4.6vw, 33px);--control-h: 42px}@media(prefers-color-scheme:dark){:root{--bg: #12161c;--surface: #1a1f27;--surface-2: #232935;--border: #333b48;--border-strong: #4a5464;--text: #f0f3f7;--text-muted: #b3bdca;--text-faint: #8b95a3;--accent: #7db4f0;--accent-soft: #1b2c40;--actual: #6ed3ae;--actual-soft: #14332b;--projected: #b3a6f7;--warn: #edbe63;--warn-soft: #322817;--danger: #f0908c;--c1: #7db4f0;--c2: #6ed3ae;--c3: #e8a86a;--c4: #b3a6f7;--c5: #f08aa2;--shadow: 0 1px 2px rgba(0, 0, 0, .5)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-body);line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:700;line-height:1.3}h1{font-size:var(--fs-page);letter-spacing:-.015em}h2{font-size:var(--fs-section)}h3{font-size:var(--fs-body)}a{color:var(--accent)}.app{display:flex;flex-direction:column;min-height:100%}.topbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.brand{font-weight:700;font-size:17px;letter-spacing:-.01em;white-space:nowrap}.nav{display:flex;gap:4px;flex-wrap:wrap;overflow:visible}.nav a{padding:9px 15px;border-radius:var(--radius);color:var(--text-muted);text-decoration:none;font-weight:700;font-size:var(--fs-small);white-space:nowrap}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a[aria-current=page]{background:var(--accent-soft);color:var(--accent)}.nav-group{position:relative}.nav-trigger{display:inline-flex;align-items:center;gap:6px;padding:9px 15px;height:auto;min-height:0;border:none;background:none;border-radius:var(--radius);color:var(--text-muted);font-weight:700;font-size:var(--fs-small);white-space:nowrap;cursor:pointer}.nav-trigger:hover{background:var(--surface-2);color:var(--text)}.nav-trigger[aria-current=page]{background:var(--accent-soft);color:var(--accent)}.nav-caret{font-size:11px;line-height:1;opacity:.7}.nav-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:210px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px #10141a29;padding:6px;z-index:40;display:flex;flex-direction:column;gap:2px}.nav-menu a{padding:10px 12px;font-weight:400}.nav-menu a[aria-current=page]{font-weight:700}.rangebar{background:var(--surface-2);border-bottom:1px solid var(--border);padding:10px var(--gap)}.rangebar>*{max-width:1400px;margin:0 auto}.range-control{display:flex;align-items:center;gap:8px;min-width:0}.range-label{margin:0;font-size:var(--fs-small);font-weight:700;white-space:nowrap}.range-control select,.range-control input{height:36px;min-height:0;padding:0 32px 0 10px;font-size:var(--fs-small);width:auto;max-width:230px}.range-control input{padding-right:10px}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:var(--fs-small);color:var(--text-muted)}main{flex:1;padding:var(--gap);max-width:1400px;width:100%;margin:0 auto;min-width:0}.page-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:18px}.page-head p{margin:0;color:var(--text-muted);font-size:var(--fs-small)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px;min-width:0}.card+.card{margin-top:var(--gap)}.card>h2{margin-bottom:14px}.grid{display:grid;gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}.grid .card+.card{margin-top:0}.grid-2{display:grid;gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,400px),1fr))}.grid-2 .card+.card{margin-top:0}.stat-label{font-size:var(--fs-small);color:var(--text-muted);font-weight:700}.stat-value{font-family:var(--num);font-size:var(--fs-stat);font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:4px;overflow-wrap:anywhere}.stat-note{font-size:var(--fs-small);color:var(--text-muted);margin-top:6px}.table-wrap{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}table{width:100%;border-collapse:collapse;font-size:var(--fs-table)}thead th{position:sticky;top:0;background:var(--surface-2);text-align:left;font-weight:700;font-size:var(--fs-small);color:var(--text-muted);padding:12px;border-bottom:2px solid var(--border-strong);z-index:1}tbody td{padding:11px 12px;border-bottom:1px solid var(--border);overflow-wrap:anywhere}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--surface-2)}td.num,th.num{text-align:right;font-family:var(--num);font-variant-numeric:tabular-nums}td.num{white-space:nowrap}th.num{white-space:normal}td.date,th.date{white-space:nowrap}td.actions,th.actions,td.right,th.right{width:1%;text-align:right;white-space:nowrap}tr.is-actual td,tr.is-actual:hover td{background:var(--actual-soft)}tr.year-start td{border-top:2px solid var(--border-strong)}.badge{display:inline-block;padding:3px 10px;border-radius:100px;font-size:var(--fs-small);font-weight:700;white-space:nowrap}.badge-actual{background:var(--actual-soft);color:var(--actual)}.badge-est{background:var(--surface-2);color:var(--text-muted)}.badge-warn{background:var(--warn-soft);color:var(--warn)}label{display:block;font-size:var(--fs-small);font-weight:700;color:var(--text-muted);margin-bottom:5px}input,select,textarea,button{height:var(--control-h);min-height:var(--control-h)}textarea{height:auto;min-height:calc(var(--control-h) * 2)}input,select,textarea{width:100%;padding:0 12px;font:inherit;font-size:var(--fs-body);line-height:normal;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius)}textarea{padding:10px 12px}select{padding-right:38px;text-overflow:ellipsis}.adorned{position:relative;display:block;min-width:0}.adorned input{width:100%}.adorned-prefix input{padding-left:26px}.adorned-suffix input{padding-right:26px}.adornment{position:absolute;top:0;height:var(--control-h);display:flex;align-items:center;color:var(--text-muted);font-size:var(--fs-body);pointer-events:none}.adorned-prefix .adornment{left:11px}.adorned-suffix .adornment{right:11px}input[type=number],input.num{font-family:var(--num);text-align:right;font-variant-numeric:tabular-nums}input:focus,select:focus,textarea:focus{outline:3px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}input[type=checkbox]{width:22px;height:22px;min-height:22px;flex:none;padding:0;margin:9px 11px;accent-color:var(--accent);cursor:pointer}label.tap{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin:0;cursor:pointer}.field{min-width:0}.person-block+.person-block{margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}.person-block h3{margin-bottom:10px}.field-row{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));align-items:end}button{font:inherit;font-size:var(--fs-body);font-weight:700;padding:0 18px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer}button:hover{background:var(--surface-2)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{filter:brightness(1.1)}button.danger{color:var(--danger);border-color:var(--danger);background:transparent}button.link{border:none;background:none;color:var(--accent);padding:4px 6px;height:auto;min-height:0;font-size:inherit;text-decoration:underline}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.btn-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.toolbar{display:flex;gap:14px;flex-wrap:wrap;align-items:end;margin-bottom:var(--gap);padding:16px 18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.toolbar .field{flex:1 1 180px;min-width:0}.explain{position:relative;cursor:help;text-decoration:underline;text-decoration-style:dotted;text-decoration-thickness:1px;text-decoration-color:var(--text-faint);text-underline-offset:4px}.explain:hover{text-decoration-color:var(--text-muted)}.explain:focus-visible{outline:2px solid var(--accent, var(--text));outline-offset:3px;border-radius:3px}.explain-right>.help-bubble{left:auto;right:0;transform:none}.explain-right>.help-bubble:after{left:auto;right:14px;transform:none}.help-bubble{position:absolute;bottom:calc(100% + 8px);left:0;transform:none;width:max-content;max-width:min(320px,78vw);background:var(--text);color:var(--bg);border-radius:var(--radius);padding:10px 13px;font-size:var(--fs-small);font-weight:400;line-height:1.5;text-align:left;white-space:normal;box-shadow:0 4px 16px #00000040;z-index:60;pointer-events:none}.help-bubble:after{content:"";position:absolute;top:100%;left:14px;transform:none;border:6px solid transparent;border-top-color:var(--text)}.notice{padding:14px 16px;border-radius:var(--radius);font-size:var(--fs-body);border:1px solid;border-left-width:5px;margin-bottom:14px}.notice-warn{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.notice-info{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.notice-error{background:var(--warn-soft);border-color:var(--danger);color:var(--danger)}.notice ul{margin:8px 0 0;padding-left:22px}.notice li+li{margin-top:6px}.chart{width:100%;height:clamp(280px,44vw,380px);position:relative}.chart-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:var(--fs-small);color:var(--text-muted);margin-top:12px}.chart-legend span{display:inline-flex;align-items:center;gap:7px}.swatch{width:13px;height:13px;border-radius:3px;flex:none}.tooltip{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow);font-size:var(--fs-small)}.tooltip .t-date{font-weight:700;margin-bottom:8px}.tooltip .t-row{display:flex;justify-content:space-between;gap:20px}.tooltip .t-row b{font-family:var(--num);font-variant-numeric:tabular-nums;font-weight:700}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.mono{font-family:var(--num);font-variant-numeric:tabular-nums}.right{text-align:right}td .link,th .link{line-height:1.4;padding:0;min-height:0;height:auto}.nowrap{white-space:nowrap}.stack{display:flex;flex-direction:column;gap:var(--gap);min-width:0}.stack>*{min-width:0}.spacer{flex:1}.empty{padding:32px;text-align:center;color:var(--text-muted);font-size:var(--fs-body)}.loading{display:grid;place-items:center;min-height:50vh;color:var(--text-muted);font-size:var(--fs-body)}.login-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 18px;gap:18px}.login-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:32px 30px}.login-card h1{font-size:24px}.login-foot{font-size:var(--fs-small);color:var(--text-muted);margin:0;text-align:center}.perm-group+.perm-group{margin-top:22px}.perm-group h3{font-size:var(--fs-small);color:var(--text-muted);margin-bottom:10px}.perm-row{display:flex;gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;font-size:var(--fs-body)}.perm-row+.perm-row{margin-top:8px}.perm-row:hover{background:var(--surface-2)}.perm-row input{margin:0}.perm-row .perm-label{font-weight:700}.invite-link{font-family:var(--mono);font-size:var(--fs-small);word-break:break-all;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-top:10px;color:var(--text)}.table-wrap.stacked{overflow-x:visible}.table-wrap.stacked table,.table-wrap.stacked tbody,.table-wrap.stacked tr,.table-wrap.stacked td{display:block;width:100%}.table-wrap.stacked thead{display:none}.table-wrap.stacked tbody tr{padding:12px 14px;border-bottom:1px solid var(--border-strong)}.table-wrap.stacked tbody tr:last-child{border-bottom:none}.table-wrap.stacked tbody td{display:grid;grid-template-columns:minmax(0,40%) minmax(0,1fr);gap:12px;align-items:baseline;padding:5px 0;border:none;text-align:left;white-space:normal}.table-wrap.stacked tbody td:before{content:attr(data-label);color:var(--text-muted);font-size:var(--fs-small);font-weight:700}.table-wrap.stacked tbody td[data-label=""]:before{display:none}.table-wrap.stacked tbody td[data-label=""]{grid-template-columns:1fr}.table-wrap.stacked td.num,.table-wrap.stacked td.right,.table-wrap.stacked td.actions{width:auto;text-align:left}.table-wrap.stacked td>button+button{margin-left:0}.table-wrap.stacked tbody tr:hover td{background:none}@media(max-width:760px){:root{--gap: 14px;--fs-page: 23px;--fs-section: 18px;--fs-body: 16px;--fs-table: 15px;--fs-small: 14px}main{padding:14px}.topbar{padding:10px 14px;gap:10px}.nav{width:100%;order:3;flex-wrap:wrap}.topbar-right{order:2;flex-wrap:wrap;gap:10px}.range-control{width:100%;order:4}.range-control select{flex:1 1 auto;max-width:none}.card{padding:16px}thead th,tbody td{padding:10px 11px}.help-bubble{max-width:78vw}}.contents{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px 18px;min-width:0}.contents a{font-size:var(--fs-small);min-width:0}.prose{max-width:78ch;min-width:0}.prose p{margin:0 0 12px;line-height:1.65}.prose p:last-child{margin-bottom:0}.prose ul{margin:0 0 12px;padding-left:20px}.prose ul:last-child{margin-bottom:0}.prose li{margin-bottom:7px;line-height:1.6}.prose li:last-child{margin-bottom:0}.ask-thread{margin-bottom:14px;min-width:0}.ask-you{border-left:3px solid var(--border-strong);padding-left:12px;margin-bottom:12px;color:var(--text-muted)}.ask-you p{margin:0}.ask-reply{margin-bottom:18px;min-width:0}.ask-reply:last-child{margin-bottom:0}.ask-box{width:100%;min-width:0;resize:vertical}.ask-toggle{display:flex;align-items:center;gap:7px;font-size:var(--fs-small);white-space:nowrap;margin:0}.ask-toggle input{width:auto;height:auto;min-height:0}.help-rule{display:block;height:1px;margin:10px 0;background:currentColor;opacity:.25}.guide-intro{color:var(--text-muted);margin:0 0 14px}.guide-steps{margin:0 0 14px;padding:12px 16px 12px 14px;border-left:3px solid var(--border-strong);background:var(--surface-2);border-radius:0 var(--radius) var(--radius) 0;min-width:0}.guide-steps:last-child{margin-bottom:0}.guide-steps h4{margin:0 0 8px;font-size:var(--fs-small);font-weight:700;color:var(--text-muted)}.prose ol{margin:0;padding-left:20px}.prose ol li{margin-bottom:7px;line-height:1.6;padding-left:2px}.prose ol li:last-child{margin-bottom:0}.guide-columns{min-width:0}@media(min-width:1100px){.guide-columns{column-count:2;column-gap:var(--gap)}.guide-columns>section{break-inside:avoid;-webkit-column-break-inside:avoid;display:block;margin-bottom:var(--gap)}.guide-columns .prose{max-width:none}}.notice details summary{cursor:pointer;list-style:revert}.notice details summary::marker{color:currentColor}.notice details[open] summary{margin-bottom:8px}.notice details ul{margin:0}.field-error{margin-top:6px;font-size:var(--fs-small);font-weight:700;color:var(--danger)}td>button+button,th>button+button{margin-left:14px}.seg{display:flex;flex-wrap:wrap;gap:2px;margin-bottom:14px;padding:3px;border:1px solid var(--border);border-radius:8px;background:var(--surface-sunken, var(--bg));width:fit-content;max-width:100%}.seg button{flex:0 1 auto;padding:7px 14px;border:none;border-radius:6px;background:none;color:var(--text-muted);font-size:var(--fs-small);font-weight:700;cursor:pointer}.seg button:hover{color:var(--text)}.seg button.seg-on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000001f}.seg .explain{border-bottom:none;cursor:inherit}
