:root{--rail:#0e3b2e;--rail-ink:#cfe3da;--rail-ink-strong:#fff;--rail-active:#165a45;--paper:#f6f8f7;--surface:#fff;--ink:#14211b;--ink-2:#4a5a52;--ink-3:#74837b;--line:#dde5e1;--line-strong:#c4d1ca;--jade:#1c7a5a;--jade-hover:#16664b;--jade-tint:#e5f2ec;--amber:#a86a12;--amber-tint:#fdf4e3;--red:#b42318;--red-tint:#fdecea;--violet:#5b4bb7;--violet-tint:#efedfb;--focus:#2563eb;--radius-s:6px;--radius-m:10px;--shadow-pop:0 12px 32px #0e3b2e2e;--font:"Public Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font:400 15px/1.55 var(--font);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3{letter-spacing:-.01em;margin:0;line-height:1.25}h1{font-size:26px;font-weight:650}h2{font-size:18px;font-weight:650}h3{font-size:15px;font-weight:650}p{max-width:72ch;margin:0 0 10px}a{color:var(--jade)}.num,td.num,.figure{font-variant-numeric:tabular-nums}.muted{color:var(--ink-2)}.small{font-size:13px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.shell{grid-template-columns:240px 1fr;min-height:100%;display:grid}.rail{background:var(--rail);color:var(--rail-ink);flex-direction:column;gap:18px;height:100vh;padding:20px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{color:var(--rail-ink-strong);align-items:center;gap:10px;padding:4px 10px 8px;text-decoration:none;display:flex}.brand-mark{width:30px;height:30px;color:var(--rail);background:#2fa57c;border-radius:8px;place-items:center;font-size:13px;font-weight:700;display:grid}.brand-name{font-size:15px;font-weight:650;line-height:1.15}.brand-name small{color:var(--rail-ink);font-size:12px;font-weight:400;display:block}.nav-group h4{color:#8fb3a4;margin:0 10px 6px;font-size:12px;font-weight:500}.nav-group a{border-radius:var(--radius-s);color:var(--rail-ink);align-items:center;gap:10px;padding:7px 10px;font-size:14px;text-decoration:none;display:flex}.nav-group a:hover{color:var(--rail-ink-strong);background:#ffffff0f}.nav-group a.active{background:var(--rail-active);color:var(--rail-ink-strong);font-weight:600}.rail-foot{border-top:1px solid #ffffff1a;margin-top:auto;padding:12px 10px 0;font-size:13px}.rail-foot strong{color:var(--rail-ink-strong);font-weight:600;display:block}.rail-foot button{color:var(--rail-ink);border-radius:var(--radius-s);cursor:pointer;font:inherit;background:0 0;border:1px solid #ffffff40;margin-top:8px;padding:5px 10px}.main{min-width:0}.topbar{z-index:5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);background:#f6f8f7f0;flex-wrap:wrap;align-items:flex-end;gap:16px;padding:18px 32px 14px;display:flex;position:sticky;top:0}.topbar .titles{flex:1;min-width:220px}.topbar .titles p{color:var(--ink-2);margin:4px 0 0;font-size:14px}.content{max-width:1240px;padding:24px 32px 64px}.crumb{color:var(--ink-3);margin-bottom:4px;font-size:13px}.crumb a{color:var(--ink-2);text-decoration:none}.mobile-bar{display:none}@media (width<=900px){.shell{grid-template-columns:1fr}.rail{z-index:30;height:100%;transition:transform .2s;position:fixed;inset:0 30% 0 0;transform:translate(-102%)}.rail.open{box-shadow:var(--shadow-pop);transform:none}.mobile-bar{background:var(--rail);color:#fff;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.mobile-bar button{color:#fff;font:inherit;background:0 0;border:1px solid #ffffff4d;border-radius:6px;padding:6px 10px}.topbar{padding:16px;position:static}.content{padding:16px 16px 48px}}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m)}.panel-head{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.panel-body{padding:18px}.stack{flex-direction:column;gap:20px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}@media (width<=900px){.grid-2,.grid-3{grid-template-columns:1fr}}.spacer{flex:1}.figures{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);grid-template-columns:repeat(auto-fit,minmax(170px,1fr));display:grid}.figures>div{border-left:1px solid var(--line);padding:14px 18px}.figures>div:first-child{border-left:0}.figures dt{color:var(--ink-2);align-items:center;gap:6px;margin-bottom:4px;font-size:13px;display:flex}.figures dd{font-variant-numeric:tabular-nums;letter-spacing:-.01em;margin:0;font-size:21px;font-weight:650}.figures dd small{color:var(--ink-3);letter-spacing:0;font-size:12px;font-weight:400;display:block}@media (width<=600px){.figures>div{border-left:0;border-top:1px solid var(--line)}.figures>div:first-child{border-top:0}}.tag{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:5px;padding:1px 8px;font-size:12px;font-weight:600;line-height:18px;display:inline-flex}.tag:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}.tag.actual{background:var(--jade-tint);color:var(--jade)}.tag.forecast{background:var(--amber-tint);color:var(--amber);border:1px dashed}.tag.assumption{color:var(--ink-2);background:#eef1f0}.tag.assumption:before{background:0 0;border:1.5px solid}.tag.sandbox{background:var(--violet-tint);color:var(--violet)}.tag.illustrative{background:var(--amber-tint);color:var(--amber);border:1px dashed}.tag.plain:before{display:none}.status{border-radius:var(--radius-s);color:var(--ink-2);white-space:nowrap;background:#eef1f0;padding:1px 8px;font-size:12px;font-weight:600;display:inline-block}.status.good{background:var(--jade-tint);color:var(--jade)}.status.warn{background:var(--amber-tint);color:var(--amber)}.status.bad{background:var(--red-tint);color:var(--red)}.status.info{color:#1d4ed8;background:#e8effd}.sandbox-band{background:repeating-linear-gradient(-45deg, var(--violet-tint), var(--violet-tint) 10px, #e4e0f8 10px, #e4e0f8 20px);color:#3b2f8f;border-radius:var(--radius-m);border:1px solid #cfc8f2;padding:10px 14px;font-size:14px;font-weight:500}.forecast-band{border:1.5px dashed var(--amber);background:var(--amber-tint);color:#7a4d0b;border-radius:var(--radius-m);padding:10px 14px;font-size:14px}.notice{border-radius:var(--radius-m);border:1px solid var(--line);background:var(--surface);padding:12px 14px;font-size:14px}.notice.warn{background:var(--amber-tint);color:#6b440a;border-color:#f0d9ab}.notice.error{background:var(--red-tint);color:#7f1d16;border-color:#f5c2bd}.notice.ok{background:var(--jade-tint);color:#0f5a40;border-color:#bfe0d1}.table-wrap{overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:14px}table.data th{text-align:left;color:var(--ink-2);border-bottom:1px solid var(--line-strong);white-space:nowrap;background:#fafcfb;padding:9px 14px;font-size:13px;font-weight:600}table.data td{border-bottom:1px solid var(--line);vertical-align:top;padding:10px 14px}table.data tr:last-child td{border-bottom:0}table.data th.num,table.data td.num{text-align:right;white-space:nowrap}table.data tr.clickable{cursor:pointer}table.data tr.clickable:hover td{background:#f3f7f5}table.data td .sub{color:var(--ink-3);font-size:12.5px;display:block}table.data tfoot td{border-top:1px solid var(--line-strong);background:#fafcfb;font-weight:650}.neg{color:var(--red)}.form{gap:14px;display:grid}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;display:grid}@media (width<=700px){.form-grid{grid-template-columns:1fr}}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field.full{grid-column:1/-1}.field>span{font-size:13.5px;font-weight:600}.field .hint{color:var(--ink-3);font-size:12.5px;font-weight:400}.field .err{color:var(--red);font-size:12.5px}input,select,textarea{font:inherit;color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius-s);background:#fff;width:100%;min-height:38px;padding:8px 10px}textarea{resize:vertical;min-height:80px}input:focus,select:focus,textarea:focus{outline:2px solid var(--focus);outline-offset:0;border-color:var(--focus)}.affix{align-items:stretch;display:flex}.affix>span{border:1px solid var(--line-strong);color:var(--ink-2);background:#f1f4f2;place-items:center;padding:0 10px;font-size:13px;display:grid}.affix>span:first-child{border-radius:var(--radius-s) 0 0 var(--radius-s);border-right:0}.affix>span:last-child{border-radius:0 var(--radius-s) var(--radius-s) 0;border-left:0}.affix>input{border-radius:0}.affix>input:first-child{border-radius:var(--radius-s) 0 0 var(--radius-s)}.affix>span:first-child+input:last-child{border-radius:0 var(--radius-s) var(--radius-s) 0}.checks{flex-wrap:wrap;gap:8px;display:flex}.check{border:1px solid var(--line-strong);border-radius:var(--radius-s);cursor:pointer;background:#fff;align-items:center;gap:7px;padding:6px 10px;font-size:14px;display:inline-flex}.check input{width:auto;min-height:0;margin:0}.check.on{border-color:var(--jade);background:var(--jade-tint)}fieldset{border:1px solid var(--line);border-radius:var(--radius-m);min-width:0;margin:0;padding:14px 16px 16px}legend{padding:0 6px;font-size:14px;font-weight:650}.btn{font:inherit;border-radius:var(--radius-s);border:1px solid var(--line-strong);color:var(--ink);cursor:pointer;background:#fff;align-items:center;gap:6px;min-height:38px;padding:8px 14px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--ink-3)}.btn.primary{background:var(--jade);border-color:var(--jade);color:#fff}.btn.primary:hover{background:var(--jade-hover)}.btn.danger{color:var(--red);border-color:#f0b8b2}.btn.danger.solid{background:var(--red);color:#fff;border-color:var(--red)}.btn.ghost{color:var(--jade);background:0 0;border-color:#0000;padding-left:6px;padding-right:6px}.btn.small{min-height:30px;padding:4px 10px;font-size:13px}.btn:disabled{opacity:.55;cursor:not-allowed}.seg{border:1px solid var(--line-strong);border-radius:var(--radius-s);background:#fff;display:inline-flex;overflow:hidden}.seg button{font:inherit;cursor:pointer;color:var(--ink-2);background:0 0;border:0;padding:6px 12px;font-size:13.5px}.seg button+button{border-left:1px solid var(--line-strong)}.seg button.on{background:var(--ink);color:#fff;font-weight:600}.overlay{z-index:50;background:#0e211b73;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{width:min(640px,100%);max-height:calc(100vh - 32px);box-shadow:var(--shadow-pop);background:#fff;border-radius:14px;overflow:auto}.dialog.wide{width:min(920px,100%)}.dialog-head{padding:18px 22px 0}.dialog-body{padding:16px 22px}.dialog-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;padding:14px 22px 18px;display:flex}.empty{text-align:left;color:var(--ink-2);padding:28px 22px}.empty h3{color:var(--ink);margin-bottom:6px}.kv{grid-template-columns:minmax(140px,38%) 1fr;gap:0;font-size:14px;display:grid}.kv>div{border-bottom:1px solid var(--line);padding:8px 0}.kv>div:nth-child(odd){color:var(--ink-2);padding-right:12px}.steps{margin:0;padding:0;font-size:14px;list-style:none}.steps li{border-bottom:1px dashed var(--line);font-variant-numeric:tabular-nums;justify-content:space-between;gap:12px;padding:6px 0;display:flex}.steps li:last-child{border-bottom:0;font-weight:650}.timeline{margin:0;padding:0;font-size:14px;list-style:none}.timeline li{border-left:2px solid var(--line);padding:8px 0 8px 18px;position:relative}.timeline li:before{content:"";border:2px solid var(--jade);background:#fff;border-radius:50%;width:10px;height:10px;position:absolute;top:13px;left:-6px}.loading{color:var(--ink-3);padding:32px}.skeleton{background:linear-gradient(90deg,#eef2f0,#f7f9f8,#eef2f0) 0 0/200% 100%;border-radius:6px;height:14px;animation:1.2s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.toast{z-index:60;background:var(--ink);color:#fff;border-radius:var(--radius-s);box-shadow:var(--shadow-pop);max-width:420px;padding:10px 16px;font-size:14px;position:fixed;bottom:20px;right:20px}.toast.error{background:var(--red)}.chart-box{height:280px}code{background:#eef2f0;border-radius:4px;padding:1px 5px;font-size:13px}.signin{grid-template-columns:1fr minmax(360px,460px);min-height:100%;display:grid}.signin-side{background:var(--rail);color:var(--rail-ink);flex-direction:column;justify-content:space-between;padding:56px;display:flex}.signin-side h1{color:#fff;max-width:16ch;font-size:34px}.signin-side p{color:var(--rail-ink);font-size:16px}.signin-legend{gap:10px;max-width:360px;display:grid}.signin-legend div{align-items:center;gap:10px;font-size:14px;display:flex}.signin-form{background:#fff;flex-direction:column;justify-content:center;gap:16px;padding:56px 40px;display:flex}@media (width<=820px){.signin{grid-template-columns:1fr}.signin-side,.signin-form{padding:32px 20px}}@media print{.rail,.topbar .row,.mobile-bar,.btn{display:none!important}.shell{display:block}}.split{grid-template-columns:minmax(300px,380px) minmax(0,1fr);align-items:start;gap:20px;display:grid}@media (width<=1000px){.split{grid-template-columns:1fr}}.input-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(160px,1.3fr) minmax(120px,1fr) auto minmax(140px,1.2fr);align-items:center;gap:8px;padding:8px 0;display:grid}.input-row:last-child{border-bottom:0}.input-row .lbl{font-size:14px}.input-row.missing .lbl:after{content:" · needed";color:var(--amber);font-size:12.5px}@media (width<=760px){.input-row{grid-template-columns:1fr 1fr}.input-row .lbl{grid-column:1/-1}}.tabs{border-bottom:1px solid var(--line-strong);gap:2px;display:flex}.tabs button{font:inherit;cursor:pointer;color:var(--ink-2);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-size:14px}.tabs button.on{color:var(--ink);border-bottom-color:var(--jade);font-weight:600}@media (width<=600px){.figures{grid-template-columns:1fr 1fr}.figures dd{font-size:18px}.figures>div{border-left:0}}.copy-link{align-items:center;gap:8px;min-width:0;display:flex}.copy-link code{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;padding:6px 8px;display:block;overflow:hidden}.link-list{gap:6px;margin-top:6px;display:grid}.link-list .small{color:var(--ink-2)}.copy-link code{max-width:100%}td .link-list{max-width:420px}
