.rpt-dek{color:var(--muted);font-size:var(--fs-3);max-width:720px;line-height:var(--lh-body)}.rpt-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0 6px}@media(max-width:640px){.rpt-kpis{grid-template-columns:repeat(2,1fr)}}.rpt-kpi{background:var(--panel);border:1px solid var(--line);border-radius:0;padding:15px 16px}.rpt-kpi b{display:block;font-family:var(--disp);font-size:var(--fs-6);line-height:var(--lh-tight);color:var(--accent)}.rpt-kpi span{display:block;color:var(--muted);font-size:var(--fs-1);margin-top:7px;line-height:var(--lh-snug)}.rpt-cmp{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0}@media(max-width:640px){.rpt-cmp{grid-template-columns:1fr}}.rpt-card{border:1px solid var(--line);border-radius:0;padding:16px 18px;background:var(--panel)}.rpt-card h3{font-size:var(--fs-2);margin:0 0 4px;color:var(--text)}.rpt-card .big{font-family:var(--disp);font-size:var(--fs-5);color:var(--accent)}.rpt-card.warn .big{color:var(--flag)}.rpt-card p{color:var(--muted);font-size:var(--fs-1);margin:6px 0 0}.rpt-wrap-x{overflow-x:auto;margin-top:10px;max-width:100%}.cmp-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.rpt-table{width:100%;border-collapse:collapse;font-size:var(--fs-2);min-width:560px}.rpt-table th,.rpt-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line)}.rpt-table th{color:var(--muted);font-weight:var(--w-bold);font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.04em}.rpt-table td.num,.rpt-table th.num{text-align:right;font-variant-numeric:tabular-nums}.rpt-table a{color:var(--accent);font-weight:var(--w-bold);text-decoration:none}.rpt-zero{color:var(--flag);font-weight:700}.rpt-hi{color:var(--flag);font-weight:700}.rpt-neg{color:var(--flag);font-weight:var(--w-bold)}.rpt-note{color:var(--muted);font-size:var(--fs-3);margin:14px 0 0;line-height:var(--lh-body)}.rpt-method{background:var(--mist);border-radius:0;padding:16px 18px;color:var(--muted);font-size:var(--fs-2);margin-top:24px;line-height:var(--lh-body)}.rpt-method b{color:var(--text)}.rpt-chip{cursor:pointer;user-select:none;border:none}.rpt-chip.on{background:var(--accent);color:#fff}.rpt-nomatch{display:none;color:var(--muted);padding:18px 0;text-align:center}.hub-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:8px}@media(max-width:640px){.hub-grid{grid-template-columns:1fr}}.hub-card{display:block;border:1px solid var(--line);border-radius:0;padding:20px 22px;background:var(--panel);text-decoration:none;color:inherit;transition:border-color var(--ease),transform var(--ease)}.hub-card:hover{border-color:var(--terracotta);transform:translateY(-2px)}.hub-card .tag{font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.04em;color:var(--accent);font-weight:700}.hub-card h3{font-family:var(--disp);font-weight:var(--w-bold);font-size:var(--fs-4);margin:8px 0 5px;color:var(--text)}.hub-card p{color:var(--muted);font-size:var(--fs-2);margin:0}.hub-soon{opacity:.6}.hub-soon .tag{color:var(--muted)}
.path-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:8px}@media(max-width:820px){.path-grid{grid-template-columns:1fr!important}}@media(max-width:700px){.two-col-latest{grid-template-columns:1fr!important}}.path-card{background:var(--base);border:1px solid var(--line);border-radius:var(--r-lg);padding:26px 24px;display:flex;flex-direction:column;box-shadow:var(--sh);transition:border-color var(--ease),transform var(--ease)}.path-card:hover{border-color:var(--terracotta);transform:translateY(-2px)}.path-card h3{font-family:var(--disp);font-size:var(--fs-5);font-weight:var(--w-bold);margin:0 0 8px;color:var(--green-dk)}.path-card p{color:var(--muted);font-size:var(--fs-2);margin:0;flex:1}.path-card .go{margin-top:16px;font-weight:700;color:var(--green-dk);text-decoration:none;font-size:var(--fs-2);display:inline-flex;align-items:center;gap:5px}.path-card .go:after{content:"92";transition:transform var(--ease)}.path-card .go:hover:after{transform:translateX(4px)}.stage-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:8px}@media(max-width:820px){.stage-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.stage-grid{grid-template-columns:1fr}}.stage-card{background:var(--mist);border:1px solid var(--line);border-radius:var(--r);padding:20px 20px 22px;transition:border-color var(--ease)}.stage-card:hover{border-color:var(--line-2)}.stage-card .sn{font-size:var(--fs-1);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--accent-text)}.stage-card h3{font-family:var(--disp);font-size:var(--fs-4);font-weight:var(--w-bold);margin:8px 0 6px;color:var(--green-dk)}.stage-card p{color:var(--muted);font-size:var(--fs-2);margin:0 0 10px}.stage-card a{font-size:var(--fs-2);font-weight:700;color:var(--green-dk);text-decoration:none}.stage-card a:hover{text-decoration:underline}.trust-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 20px;margin-top:18px}@media(max-width:640px){.trust-grid{grid-template-columns:1fr}}.trust-item{display:flex;gap:10px;align-items:flex-start;font-size:var(--fs-3);color:var(--ink)}.trust-item .ck{flex:none;width:22px;height:22px;border-radius:0;background:var(--green);color:#fff;display:grid;place-items:center;font-size:var(--fs-1);margin-top:1px}.trust-box{background:var(--mist);border:1px solid var(--line);border-radius:var(--r-xl);padding:clamp(22px,4vw,34px);margin-top:20px}.ctype{display:inline-block;font-size:var(--fs-1);font-weight:800;letter-spacing:.07em;text-transform:uppercase;padding:4px 10px;border-radius:0;background:var(--mist2);color:var(--green-dk);margin-bottom:8px}.disclaimer-block{background:var(--mist);border:1px solid var(--line);border-radius:0;padding:24px 26px;color:var(--muted);font-size:var(--fs-3);line-height:var(--lh-body);margin-top:16px}.disclaimer-block b{color:var(--soft);font-family:var(--mono);font-size:var(--fs-1);letter-spacing:.12em;text-transform:uppercase;font-weight:var(--w-medium)}.cta-group{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}.cta-group a{font-weight:700;font-size:var(--fs-3);text-decoration:none;padding:13px 22px;border-radius:var(--r-btn);transition:background var(--ease),transform var(--ease),border-color var(--ease)}.cta-group a.primary{background:var(--accent-fill);color:#fff!important}.cta-group a.primary:hover{background:var(--accent-fill-hover);transform:translateY(-1px)}.cta-group a.secondary{background:var(--base);color:var(--green-dk)!important;border:1px solid var(--line-2)}.cta-group a.secondary:hover{background:var(--mist);border-color:var(--green)}
.btn-outline{margin-top:16px;background:transparent;color:var(--green-dk);border:1.5px solid var(--green-dk);border-radius:var(--r-btn);font-family:var(--body);font-weight:700;font-size:var(--fs-3);padding:12px 20px;cursor:pointer;transition:background var(--ease),color var(--ease)}.btn-outline:hover{background:var(--green-dk);color:#fff}.src-table{display:flex;flex-direction:column;gap:2px;margin-top:8px}.src-row{padding:9px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:3px}.src-row a{font-weight:var(--w-bold);text-decoration:none;font-size:var(--fs-2)}.src-row a:hover{text-decoration:underline}.src-meta{font-size:var(--fs-1);color:var(--muted)}.guide-meta{display:flex;flex-wrap:wrap;gap:2px 17px;font-size:var(--fs-1);line-height:var(--lh-body);color:var(--text-3);margin:8px 0 20px;clip-path:inset(-6px -6px -6px 0)}.guide-meta>*{position:relative}.guide-meta>*::before{content:"";position:absolute;left:-10px;top:50%;width:3px;height:3px;margin-top:-1px;background:currentColor}.guide-meta a{color:inherit}.key-points{background:var(--green-tint);border:1px solid #CBD8D0;border-radius:0;padding:26px 28px;margin:18px 0 26px}.key-points b{color:var(--green);font-family:var(--mono);font-size:var(--fs-1);letter-spacing:.12em;text-transform:uppercase;font-weight:var(--w-medium)}.key-points ul{margin:8px 0 0;padding-left:20px}.key-points li{margin:4px 0}.guide-toc{background:var(--base);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 22px;margin:18px 0 30px}.guide-toc h2{font-size:var(--fs-2);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 10px}.guide-toc ol{margin:0;padding-left:20px}.guide-toc li{margin:5px 0}.guide-toc a{font-weight:var(--w-bold);text-decoration:none}.guide-toc a:hover{text-decoration:underline}.guide-section{margin-top:44px;padding-top:6px;scroll-margin-top:calc(var(--hdr-h) + 16px)}.worked-example{background:var(--base);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;margin:18px 0}.worked-example h3{font-family:var(--disp);font-weight:var(--w-bold);font-size:var(--fs-4);margin:0 0 10px;color:var(--green-dk)}.common-mistake{background:var(--terracotta-tint);border:none;border-left:3px solid var(--terracotta);border-radius:0;padding:20px 24px;margin:18px 0;color:#4A342B}.common-mistake b{color:var(--accent-text);font-family:var(--mono);font-size:var(--fs-1);letter-spacing:.12em;text-transform:uppercase;font-weight:var(--w-medium)}.decision-rule{background:var(--ink);color:#fff;border-radius:var(--r);padding:20px 22px;margin:18px 0}.decision-rule a{color:#fff;text-decoration:underline}.decision-rule .lbl{font-size:var(--fs-1);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--meta);margin-bottom:6px}.decision-rule p{margin:0;font-family:var(--disp);font-size:var(--fs-3);font-weight:700;line-height:var(--lh-snug)}.plain-checklist{margin:16px 0;padding-left:20px;color:var(--muted)}.plain-checklist li{margin:6px 0}.review-meta{border-top:1px solid var(--line);margin-top:36px;padding-top:16px;font-size:var(--fs-1);color:var(--muted);display:grid;grid-template-columns:repeat(2,1fr);gap:6px 20px}@media(max-width:560px){.review-meta{grid-template-columns:1fr}}.evidence-pack{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:18px 0}@media(max-width:640px){.evidence-pack{grid-template-columns:1fr}}.evidence-card{background:var(--mist);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}.evidence-card .ek{font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}.evidence-card .ev{font-family:var(--disp);font-weight:800;font-size:var(--fs-4);margin-top:4px}.interpretation-list{display:flex;flex-direction:column;gap:12px;margin:16px 0}.interpretation{background:var(--mist);border-radius:var(--r);padding:14px 18px}.interpretation b{color:var(--green-dk)}.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.chip{background:var(--mist2);color:var(--green-dk);font-size:var(--fs-1);font-weight:700;padding:6px 13px;border-radius:0}.checklist-cat{margin-top:34px}.checklist-cat h2{font-family:var(--disp);font-size:var(--fs-4);font-weight:var(--w-bold);margin:0 0 4px;color:var(--green-dk)}.checklist-items{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}.checklist-items li{display:flex;gap:10px;align-items:flex-start;padding:9px 6px;font-size:var(--fs-2);border-bottom:1px solid var(--line)}.checklist-items input{margin-top:3px;flex:none}.badge-live{display:inline-block;font-size:var(--fs-1);font-weight:800;letter-spacing:.05em;text-transform:uppercase;background:var(--green);color:#fff;padding:3px 9px;border-radius:0}.src-cite{font-size:var(--fs-1);color:var(--muted);text-decoration:none;font-weight:var(--w-bold)}.reform-callout-dark .src-cite{color:#B8B5B3}.src-cite:hover{color:var(--green-dk);text-decoration:underline}.src-missing{font-size:var(--fs-1);color:var(--coral);font-weight:700}.calc-panel{background:var(--base);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px 26px;margin:20px 0;box-shadow:var(--sh)}.calc-row{display:grid;grid-template-columns:1fr 140px;gap:10px 16px;align-items:center;margin-bottom:12px}.calc-row label{font-size:var(--fs-2);font-weight:var(--w-bold);color:var(--ink)}.calc-row input,.calc-row select{padding:10px 12px;border:1.5px solid var(--line-2);border-radius:0;font-size:var(--fs-3);font-family:var(--body);background:var(--base);color:var(--ink);width:100%}.calc-results{background:var(--mist);border-radius:var(--r);padding:18px 20px;margin-top:18px}.calc-out-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:var(--fs-2)}.calc-out-row:last-child{border-bottom:none}.calc-out-row b{font-family:var(--disp);font-size:var(--fs-3)}.calc-out-row.total{border-top:2px solid var(--line);margin-top:4px;padding-top:12px}.calc-out-row.total b{font-size:var(--fs-5);color:var(--green-dk)}.calc-methodology{margin-top:16px;background:var(--base);border:1px dashed var(--line);border-radius:var(--r);padding:14px 16px;font-size:var(--fs-1);color:var(--muted)}.calc-methodology summary{cursor:pointer;font-weight:700;color:var(--ink)}.stress-scenario{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:var(--fs-2)}.stress-scenario:last-child{border-bottom:none}.stress-scenario b{font-family:var(--disp)}@media(max-width:560px){.calc-row{grid-template-columns:1fr}}@media print{.checklist-items input{-webkit-print-color-adjust:exact}}.g2-shell{display:grid;grid-template-columns:200px minmax(0,1fr);gap:48px;align-items:start}.g2-toc{position:sticky;top:calc(var(--hdr-h) + 24px);max-height:calc(100vh - var(--hdr-h) - 48px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.g2-toc-label{font:var(--w-medium) var(--fs-1)/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--meta);padding-bottom:10px;border-bottom:1px solid var(--line)}.g2-toc ul{margin:8px 0 0;display:grid;gap:0;list-style:none;padding:0}.g2-toc li{list-style:none;margin:0}.g2-toc a{display:block;padding:7px 0 7px 12px;font-size:var(--fs-2);line-height:var(--lh-snug);color:var(--soft);border-left:2px solid var(--line);text-decoration:none}.g2-toc a:hover{color:var(--accent-text);text-decoration:underline}.g2-toc a.on{color:var(--ink);border-left-color:var(--terracotta)}.g2-article{min-width:0;max-width:74ch}.g2-article h2[id]{scroll-margin-top:calc(var(--hdr-h) + 24px)}.evidence-box{margin-top:26px;border:1px solid var(--line);background:var(--mist);padding:22px}.evidence-box .lbl{font:var(--w-medium) var(--fs-1)/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--green);padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:14px}.evidence-box .review-meta{border-top:0;margin-top:0;padding-top:0}.ds-callout .review-meta{border-top:0;margin-top:0;padding-top:0}@media(max-width:900px){.g2-shell{grid-template-columns:minmax(0,1fr);gap:0}.g2-toc{position:static;top:auto;max-height:none;overflow:visible;display:flex;align-items:center;gap:10px;margin:-10px 0 14px;border-bottom:1px solid var(--line)}.g2-toc-label{flex:none;padding:0;border:0}.g2-toc ul{flex:1 1 auto;min-width:0;display:flex;gap:6px;margin:0;padding:6px 28px 6px 0;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,black calc(100% - 28px),transparent);mask-image:linear-gradient(to right,black calc(100% - 28px),transparent)}.g2-toc ul::-webkit-scrollbar{display:none}.g2-toc li{flex:none}.g2-toc a,.g2-toc a.on{display:flex;align-items:center;min-height:var(--tap);padding:0 12px;white-space:nowrap;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink)}.g2-toc a:hover{color:var(--ink);background:var(--surface-2)}}
.ctb-answer{border-left:3px solid var(--terracotta);background:var(--base);padding:18px 22px;margin:18px 0 26px}.ctb-answer p{margin:0 0 8px;font-size:var(--fs-3)}.ctb-answer p:last-child{margin:0}.ctb-answer .ctb-w{display:block;font-size:var(--fs-2);color:var(--muted);margin-top:2px}.ctb-calc{background:var(--mist);border:1px solid var(--line);padding:22px 24px;margin:22px 0 30px}.ctb-calc h2{margin-top:0}#ctb-result{outline:none}.ctb-empty{background:#fff;border:1px dashed var(--line);padding:18px 20px;color:var(--muted)}.ctb-summary{font-size:var(--fs-2);color:var(--muted);margin:0 0 8px}.ctb-table{width:100%;border-collapse:collapse;background:#fff;font-size:var(--fs-3)}.ctb-table th,.ctb-table td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.ctb-table td.num,.ctb-table th.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.ctb-table tbody th{font-weight:var(--w-bold)}.ctb-kind{display:block;font-size:var(--fs-1);letter-spacing:.08em;text-transform:uppercase;color:var(--meta);font-weight:700}.ctb-table .ctb-concession td,.ctb-table .ctb-exemption td,.ctb-table .ctb-grant td{color:var(--green-pos)}.ctb-table .ctb-total th,.ctb-table .ctb-total td{border-top:2px solid var(--ink);font-weight:800;font-size:var(--fs-3)}.ctb-table .ctb-net th,.ctb-table .ctb-net td{font-weight:700}.ctb-working{margin-top:6px;font-weight:400}.ctb-working summary{cursor:pointer;font-size:var(--fs-1);color:var(--muted);min-height:24px}.ctb-working ol{margin:6px 0 0;padding-left:20px;font-size:var(--fs-2);color:var(--soft)}.ctb-warnings{margin:12px 0 0;padding-left:20px;font-size:var(--fs-2);color:var(--soft)}.ctb-rates caption,.ctb-cmp caption{caption-side:top;text-align:left;font-size:var(--fs-2);color:var(--muted);padding:0 0 6px}.ctb-cmp td,.ctb-cmp th{white-space:nowrap}.ctb-states{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0}.ctb-states a{display:block;padding:12px 14px;border:1px solid var(--line);background:var(--base);font-weight:700;text-decoration:none;min-height:44px;box-sizing:border-box}.ctb-states a[aria-current]{background:var(--ink);color:#fff}.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(max-width:640px){.ctb-calc{padding:16px 14px;margin-left:-4px;margin-right:-4px}.ctb-states{grid-template-columns:repeat(2,minmax(0,1fr))}.ctb-table{font-size:var(--fs-2)}.ctb-table th,.ctb-table td{padding:10px 8px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media print{.ctb-noprint{display:none!important}.ctb-calc{border:0;background:none;padding:0}.ctb-working{display:block}.ctb-working>*{display:block}.ctb-table{font-size:var(--fs-1)}.src-cite::after{content:" " attr(href);font-size:var(--fs-1);word-break:break-all}}
.ctp{max-width:var(--container);margin:0 auto;padding-bottom:var(--s-7)}.ctp-head{margin:var(--s-4) 0 var(--s-5)}.ctp-head h1{margin:0 0 var(--s-2)}.ctp-sub{margin:0;font-size:var(--fs-4);line-height:var(--lh-snug);color:var(--text-2);max-width:62ch}.ctp-meta{display:flex;flex-wrap:wrap;gap:2px 14px;margin:var(--s-3) 0 0;padding:0;list-style:none;font-size:var(--fs-1);color:var(--text-3)}.ctp-meta a{color:inherit}.ctp .src-cite{font-weight:var(--w-regular);color:var(--text-3)}.ctp>.tool{background:var(--surface);border:2px solid var(--text);padding:0;margin:0 0 var(--s-6)}.ctp>.tool>.sec-h{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:0}.ctp>.tool>.tool-form{margin:0;padding:var(--s-5);gap:var(--s-4);align-content:start}.ctp>.tool>.tool-form .tool-actions{margin:0}.ctp>.tool>.tool-answer-wrap{background:var(--surface-2);padding:var(--s-5);border-top:2px solid var(--text)}.ctp>.tool>.tool-stale-note{margin:0}.ctp>.tool>.tool-actions{margin:0;padding:var(--s-3) var(--s-5) var(--s-4);border-top:1px solid var(--line)}.ctp>.tool>.tool-working{padding:0 var(--s-5);border-top:1px solid var(--line)}.ctp>.tool>.tool-nojs{padding:var(--s-4) var(--s-5)}@media(min-width:960px){.ctp>.tool{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto 1fr}.ctp>.tool>*{grid-column:1}.ctp>.tool>.tool-form{grid-row:1/span 2}.ctp>.tool>.tool-stale-note{grid-column:2;grid-row:1}.ctp>.tool>.tool-answer-wrap{grid-column:2;grid-row:2/span 8;border-top:0;border-left:2px solid var(--text)}.ctp>.tool>.tool-answer-wrap>[data-answer-body]{position:sticky;top:calc(var(--hdr-h,0px) + var(--s-4))}.ctp>.tool>.tool-nojs{grid-column:1/-1}}.ctp-opts{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.ctp-opts>summary{list-style:none;cursor:pointer;min-height:var(--tap);display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;padding:10px 28px 10px 0;position:relative}.ctp-opts>summary::-webkit-details-marker{display:none}.ctp-opts>summary::after{content:"+";position:absolute;right:2px;top:50%;transform:translateY(-50%);font-size:var(--fs-5);font-weight:var(--w-bold);color:var(--accent-text)}.ctp-opts[open]>summary::after{content:"\2212"}.ctp-opts-t{font-weight:var(--w-bold);font-size:var(--fs-3)}.ctp-opts-h{font-size:var(--fs-2);color:var(--text-3)}.ctp-opts-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4) var(--s-5);padding:var(--s-2) 0 var(--s-4)}.ctb-hl{margin:0 0 var(--s-4)}.ctp .ctb-hl-fig{font-size:var(--fs-7);margin:2px 0 4px}.ctp .ctb-summary{margin:0 0 var(--s-3);color:var(--text-2)}.ctb-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5em,1fr));gap:1px;margin:0;background:var(--line);border:1px solid var(--line)}.ctb-kv>div{background:var(--surface);padding:10px 12px}.ctb-kv dt{font-size:var(--fs-1);color:var(--text-3);font-weight:var(--w-bold)}.ctb-kv dd{margin:2px 0 0;font-size:var(--fs-4);font-weight:var(--w-display);font-variant-numeric:tabular-nums}.ctp .ctb-table{font-size:var(--fs-2)}.ctp .ctb-table th,.ctp .ctb-table td{padding:8px 10px}.ctp .ctb-table thead th{font-size:var(--fs-1);color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.ctp .ctb-cites{display:block;font-weight:var(--w-regular);line-height:var(--lh-snug)}.ctp .ctb-kind{display:none}.ctp .ctb-label{display:block}.ctp-h2{font-size:var(--fs-5);line-height:var(--lh-snug);margin:0 0 var(--s-3)}.ctp-block{margin:0 0 var(--s-6)}.ctp-lede{margin:0 0 var(--s-3);color:var(--text-2);max-width:var(--measure)}.ctp-note{font-size:var(--fs-1);color:var(--text-3);margin:var(--s-2) 0 0;max-width:var(--measure-wide)}.ctp-secs{border-top:2px solid var(--text);margin:0 0 var(--s-6)}.ctp-sec{border-bottom:1px solid var(--line)}.ctp-sec>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:14px;min-height:56px;padding:var(--s-2) 0}.ctp-sec>summary::-webkit-details-marker{display:none}.ctp-sec>summary::after{content:"+";flex:none;font-size:var(--fs-5);font-weight:var(--w-bold);line-height:1;color:var(--accent-text)}.ctp-sec[open]>summary::after{content:"\2212"}.ctp-sec-h{font-size:var(--fs-4);margin:0;line-height:var(--lh-snug)}.ctp-sec-b{padding:0 0 var(--s-5);max-width:var(--measure-wide)}.ctp-sec-b>p,.ctp-sec-b li{font-size:var(--fs-3)}.ctp-sec-b>p:first-child{margin-top:0}.ctp-sec-b .worked-example{padding:var(--s-3) var(--s-4)}.ctp-sec-b .worked-example h3{font-size:var(--fs-3)}.ctp-sec-b .plain-checklist,.ctp-sec-b .review-meta{margin-top:var(--s-2)}.ctp-links{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:0;padding:0;list-style:none}.ctp-links a{display:inline-flex;align-items:center;min-height:var(--tap);padding:0 14px;border:1px solid var(--line-strong);background:var(--surface);font-size:var(--fs-2);font-weight:var(--w-bold);text-decoration:none;color:var(--text)}.ctp-links a:hover{border-color:var(--text)}.ctp .ctb-states{grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;margin:0}.ctp .ctb-states a{text-align:center;padding:10px 4px;background:var(--surface);border-color:var(--line-strong);display:flex;align-items:center;justify-content:center}.ctp .ctb-states a[aria-current]{background:var(--text);border-color:var(--text);color:var(--on-accent)}.ctp .faq{margin-top:0;gap:8px}.ctp .faq details{padding:0 16px}.ctp .faq summary{padding:12px 0;font-size:var(--fs-3)}.ctp .faq details p{margin:0 0 14px;font-size:var(--fs-3)}.ctp-t{width:100%;border-collapse:collapse;background:var(--surface);font-size:var(--fs-2);font-variant-numeric:tabular-nums}.ctp-t caption{caption-side:bottom;text-align:left;font-size:var(--fs-1);color:var(--text-3);padding:8px 0 0}.ctp-t th,.ctp-t td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.ctp-t thead th{font-size:var(--fs-1);color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--text);vertical-align:bottom}.ctp-t .num{text-align:right;white-space:nowrap}.ctp-t tbody th{font-weight:var(--w-bold)}.ctp-t small{display:block;font-size:var(--fs-1);color:var(--text-3);font-weight:var(--w-regular)}.ctp-cf{margin:6px 0 0;font-size:var(--fs-1);color:var(--text-3)}.ctp-cf summary{cursor:pointer;min-height:var(--tap);display:inline-flex;align-items:center;font-weight:var(--w-bold)}.ctp-cf p{margin:0;line-height:var(--lh-body)}.ctp .table-wrap{overflow-x:auto;max-width:100%}.ctp .tool-field:has(.tool-err:not([hidden])) .tool-help{display:none}@media(max-width:959px){.ctp>.tool>.tool-answer-wrap{min-height:0!important}}@media(max-width:640px){.ctp-head{margin:var(--s-3) 0 var(--s-4)}.ctp-sub{font-size:var(--fs-3)}.ctp>.tool>.tool-form,.ctp>.tool>.tool-answer-wrap{padding:var(--s-4)}.ctp>.tool>.tool-actions{padding:var(--s-3) var(--s-4)}.ctp>.tool>.tool-working{padding:0 var(--s-4)}.ctp-opts-g{grid-template-columns:1fr}.ctp>.tool{margin-left:0;margin-right:0}.ctp .ctb-states{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:959px){.ctp-stack{max-width:640px}.ctp-stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.ctp-stack,.ctp-stack tbody,.ctp-stack tr,.ctp-stack th,.ctp-stack td{display:block;width:auto}.ctp-stack caption{display:block;caption-side:bottom}.ctp-stack tr{border-bottom:1px solid var(--line);padding:8px 0}.ctp-stack tbody th,.ctp-stack td{border:0;padding:3px 0}.ctp-stack td{display:flex;justify-content:space-between;gap:12px;text-align:right}.ctp-stack td::before{content:attr(data-label);text-align:left;color:var(--text-3);font-size:var(--fs-1);font-weight:var(--w-bold)}.ctp-stack td.ctp-wide{display:block;text-align:left}.ctp-stack td.ctp-wide::before{display:block}.ctp-stack .num{white-space:normal}}.ctp-peek{display:none}@media(max-width:959px){.ctp-peek{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:8px 16px;background:var(--text);color:var(--on-accent);text-decoration:none;font-size:var(--fs-2);font-weight:var(--w-bold)}.ctp-peek b{font-size:var(--fs-5);font-weight:var(--w-display);font-variant-numeric:tabular-nums}.ctp-peek[hidden]{display:none}}#answer-h~.table-wrap{max-width:760px}@media print{.ctp-sec>*{display:block}.ctp-sec-b{display:block}.ctp-peek{display:none!important}}
.tc-figures{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:1px;margin:0 0 14px;background:var(--line);border:1px solid var(--line)}.tc-fig{background:var(--surface);padding:14px 16px}.tc-fig--main{container-type:inline-size;container-name:tc-main}.tc-fig--main .tool-answer__figure{font-size:var(--fs-6)}@container tc-main (min-width:400px){.tc-fig--main .tool-answer__figure{font-size:var(--fs-7)}}.tc-fig:not(.tc-fig--main) .tool-answer__figure{font-size:var(--fs-5);margin-top:8px}.tc-fig .tool-answer__line{font-size:var(--fs-2);color:var(--text-2);margin:4px 0 0}.tc-h{font-size:var(--fs-1);margin:16px 0 4px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3)}.tc-table{margin:0 0 6px}.tc-note{display:block;font-weight:400;font-size:var(--fs-1);color:var(--text-3)}.tc-cites{display:block;font-weight:400;font-size:var(--fs-1)}.tc-cites .src-cite{font-weight:400}.tc-jump{margin:0 0 10px;font-size:var(--fs-2)}.tc-miss-h{font-size:var(--fs-2);font-weight:700;margin:8px 0 2px}.tc-miss,.tc-notes{margin:0 0 8px;padding-left:20px;font-size:var(--fs-2);color:var(--text-2)}.tc-miss li,.tc-notes li{margin:0 0 4px}.tc-small,.tc-none{font-size:var(--fs-2);color:var(--text-3);margin:4px 0 8px}.tc-empty{background:var(--surface);border:1px dashed var(--line);padding:18px 20px;color:var(--text-3)}.tc-working{padding-left:20px;font-size:var(--fs-2)}.tc-every tbody th{min-width:9em}@media(min-width:960px){.ctp .tc-jump{display:none}}@media(max-width:640px){.tc-figures{grid-template-columns:1fr}}
/* The shared look of every calculator (PM slice 06.1). Uses only tokens the site already defines, each
   with a fallback, so a later change to the token values needs no edit here. Inlined into tool pages by
   deploy/tool_shell.py (one <style>, no extra request). Controls are 16 px type and 48 px high at every
   width: below 16 px iOS Safari zooms the page on focus, and 48 px clears the 44 px tap target.
   Dense by design: fields sit in a responsive grid sized by the tool's own width (container query, with
   a media-query fallback), labels and help text are compact, and the answer figure is the loudest thing
   in the tool. */
.tool{margin:22px 0 30px;container-type:inline-size;container-name:tool}
.tool .vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.tool>.sec-h{margin-bottom:6px}

/* ---- fields ---- */
.tool-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;margin:18px 0;align-items:start}
.tool-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.tool-field--wide{grid-column:1/-1}
.tool-field[hidden]{display:none}
.tool-field label{font-weight:var(--w-bold,700);font-size:var(--fs-2);line-height:var(--lh-snug,1.3);color:var(--ink,#201E1D)}
.tool input:not([type=checkbox]):not([type=radio]):not([type=hidden]),.tool select,.tool textarea{
  font:inherit;font-size:max(var(--fs-3),1em);line-height:var(--lh-snug,1.3);min-height:48px;padding:10px 12px;border:2px solid var(--line-2,#7A7673);
  border-radius:0;width:100%;box-sizing:border-box;background:var(--surface,#fff);color:var(--ink,#201E1D);
  font-variant-numeric:tabular-nums;transition:border-color var(--ease,120ms ease)}
.tool input:not([type=checkbox]):not([type=radio]):not([type=hidden]):hover,.tool select:hover,.tool textarea:hover{border-color:var(--ink,#201E1D)}
.tool input:not([type=checkbox]):not([type=radio]):not([type=hidden]):focus,.tool select:focus,.tool textarea:focus{border-color:var(--ink,#201E1D)}
/* One chevron for every select, drawn with currentColor so it follows the text colour. */
.tool select{-webkit-appearance:none;appearance:none;padding-right:40px;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px,6px 6px;background-repeat:no-repeat}
.tool input[type=date]{min-width:0;-webkit-appearance:none;appearance:none}
.tool-help{color:var(--muted,#4B4846);font-size:var(--fs-1);line-height:var(--lh-snug,1.3)}
.tool-err{color:var(--negative,#962E20);font-size:var(--fs-2);font-weight:var(--w-bold,700);line-height:var(--lh-snug,1.3)}
.tool-err[hidden]{display:none}
.tool input[aria-invalid=true],.tool select[aria-invalid=true]{border-color:var(--negative,#962E20);background-color:var(--negative-bg,#F9E9E4)}
.tool-checks{gap:0}
.tool-check{display:flex;gap:12px;align-items:center;min-height:48px;padding:6px 0;font-size:var(--fs-2);line-height:var(--lh-snug,1.3);cursor:pointer}
.tool-check[hidden]{display:none}
.tool-check input{width:24px;height:24px;margin:0;flex:none;accent-color:var(--ink,#201E1D);cursor:pointer}
/* The form's submit is the tool's one primary action: the accent fill, at least 12em wide. Placed straight
   in the form it spans the grid, so it never sits half-width. */
.tool-form>.tool-btn,.tool-form>button[type=submit]{grid-column:1/-1;justify-self:start}
.tool-form button[type=submit]{min-width:12em;background:var(--accent-fill,#D12B10);border-color:var(--accent-fill,#D12B10);color:var(--on-accent,#fff)}
.tool-form button[type=submit]:hover{background:var(--accent-fill-hover,#B8240D);border-color:var(--accent-fill-hover,#B8240D)}
.tool-form .tool-actions{margin:4px 0 0}

/* ---- buttons and actions ---- */
.tool-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:16px 0}
.tool-btn{min-height:48px;padding:10px 20px;font:inherit;font-size:var(--fs-3);font-weight:var(--w-bold,700);line-height:var(--lh-snug,1.3);cursor:pointer;
  border:2px solid var(--ink,#201E1D);background:var(--ink,#201E1D);color:var(--on-accent,#fff);border-radius:0;
  transition:background-color var(--ease,120ms ease),color var(--ease,120ms ease)}
.tool-btn:hover{background:var(--text-2,#4B4846);border-color:var(--text-2,#4B4846)}
.tool-btn--ghost{background:transparent;color:var(--ink,#201E1D)}
.tool-btn--ghost:hover{background:var(--surface-2,#EAE9E9);border-color:var(--ink,#201E1D);color:var(--ink,#201E1D)}
.tool-actions .tool-btn[data-action]{font-size:var(--fs-2);padding:10px 16px;white-space:nowrap}
.tool-actions .tool-btn[data-action]:not(.tool-btn--ghost){background:transparent;color:var(--ink,#201E1D)}
.tool-actions .tool-btn[data-action]:not(.tool-btn--ghost):hover{background:var(--surface-2,#EAE9E9)}
.tool-copy-field{max-width:34em}

/* ---- answer ---- */
.tool-answer{border:2px solid var(--ink,#201E1D);border-top:6px solid var(--accent-fill,#D12B10);padding:16px 20px 18px;background:var(--surface,#fff)}
.tool-answer__kicker{margin:0;font-size:var(--fs-1);font-weight:var(--w-bold,700);letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#4B4846)}
.tool-answer__figure{margin:2px 0 6px;font-weight:var(--w-display,800);font-size:var(--fs-6);line-height:var(--lh-tight,1.1);
  letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink,#201E1D)}
.tool-answer__line{margin:0;font-size:var(--fs-2);line-height:var(--lh-snug,1.3);color:var(--text-2,#4B4846);max-width:62ch}
.tool-badge{display:inline-block;padding:2px 8px;border:1px solid currentColor;font-size:var(--fs-1);font-weight:700}
.tool-stale-note{margin:0 0 10px;padding:10px 14px;border:2px solid var(--negative,#962E20);background:var(--negative-bg,#F9E9E4);
  color:var(--ink,#201E1D);font-size:var(--fs-2);font-weight:var(--w-bold)}
.tool-stale-note[hidden]{display:none}
/* Greyed, not faded: opacity would drop the text below contrast; the note above says why it is grey. */
.tool[data-state=stale] [data-slot=answer],.tool[data-state=stale] [data-slot=working]{filter:grayscale(1)}
.tool[data-state=stale] [data-slot=answer]{outline:2px dashed var(--line-2,#7A7673);outline-offset:4px}
.tool-failure{border:2px solid var(--negative,#962E20);padding:16px 18px;background:var(--surface,#fff)}
.tool-failure h3{margin:0 0 6px}
.tool-failure p{margin:0}

/* ---- working, assumptions, next steps ---- */
.tool-working{border-top:2px solid var(--ink,#201E1D);margin-top:16px}
.tool-working summary{min-height:48px;display:flex;align-items:center;cursor:pointer;font-weight:var(--w-bold,700)}
.tool-assumptions-wrap{font-size:var(--fs-2)}
.tool-assumptions-wrap h3{font-size:var(--fs-3);margin:20px 0 8px}
.tool-assumptions-list{display:grid;grid-template-columns:minmax(0,14em) 1fr;gap:6px 16px;margin:0}
.tool-assumptions-list dt{font-weight:700}
.tool-assumptions-list dd{margin:0}
.tool-next ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.tool-next a{display:block;min-height:48px;padding:12px 14px;border:1px solid var(--line-2,#7A7673);box-sizing:border-box}
.tool-back{display:inline-block;min-height:48px;padding:12px 0}
.tool-inputs-summary,.tool-print-source{display:none}
.tool-nojs{display:none}
.tool :focus-visible{outline:3px solid var(--focus,#201E1D);outline-offset:2px}

/* ---- widths: the tool's own width decides the field grid ---- */
@media (max-width:640px){
  .tool-form{grid-template-columns:1fr}
  .tool-form>.tool-btn,.tool-form>button[type=submit],.tool-form button[type=submit]{justify-self:stretch;width:100%}
  .tool-actions .tool-btn[data-action]{flex:1 1 auto}
  .tool-assumptions-list{grid-template-columns:1fr}
}
@container tool (min-width:400px){
  .tool-form{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@container tool (max-width:399px){
  .tool-form{grid-template-columns:1fr}
  .tool-form>.tool-btn,.tool-form>button[type=submit],.tool-form button[type=submit]{justify-self:stretch;width:100%}
}
/* The answer figure is sized by the box it sits in, not the window: --fs-6 by default, the display size
   only when that box is wide enough for an eight-figure amount. A box that holds a figure (the shell's
   answer card, or a page's own figure card) becomes a size container for this. */
:where(.tool) :has(>.tool-answer__figure){container-type:inline-size;container-name:tool-fig}
@container tool-fig (min-width:480px){
  .tool-answer__figure{font-size:var(--fs-7)}
}
/* Fields in the same row line up their controls even when one label wraps to two lines: each field
   takes three rows of the form's grid through subgrid (label, control, note). Help and error share the
   note row, and the error replaces the help while it shows, so an empty row costs at most one gap. */
@supports (grid-template-rows:subgrid) and selector(:has(a)){
  .tool-form>.tool-field:not(.tool-field--wide):not([hidden]){display:grid;grid-row:span 3;grid-template-rows:subgrid;row-gap:5px;align-content:start}
  .tool-form>.tool-field:not(.tool-field--wide):not([hidden])>label{align-self:end}
  .tool-form>.tool-field:not(.tool-field--wide)>.tool-help,.tool-form>.tool-field:not(.tool-field--wide)>.tool-err{grid-row:3}
  .tool-form>.tool-field:not(.tool-field--wide)>.tool-help:has(~.tool-err:not([hidden])){display:none}
}
@media (prefers-reduced-motion:reduce){.tool *{transition:none!important;scroll-behavior:auto!important}}
@media print{
  .tool{container-type:normal}
  .tool-form,.tool-actions,.tool-next,.tool-stale-note,.tool-back,.tool-copy-field{display:none!important}
  .tool-inputs-summary{display:block;margin:0 0 12px;padding-left:18px;font-size:var(--fs-1)}
  .tool-print-source{display:block;margin:12px 0 0;font-size:var(--fs-1);word-break:break-all}
  .tool-answer,.tool-assumptions-list{break-inside:avoid}
  details.tool-working>*{display:block}
  .tool [data-slot]{min-height:0!important}
}
