.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)}
.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)}}
/* 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}
}

.dc-group{grid-column:1/-1;border:0;margin:6px 0 0;padding:0}.dc-group legend{font-weight:700;font-size:var(--fs-4);padding:0;margin:0 0 4px}.dc-group .tool-help{display:block;margin:0 0 6px}.dc-group[hidden],.dc-state[hidden],.dc-nt[hidden]{display:none}.dc-nt{border-left:4px solid var(--negative,#962E20);padding:8px 12px;margin:0}.dc-status{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:6px}.dc-status li{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;padding:8px 10px;border:1px solid var(--line)}.dc-status li.is-missing{border:2px solid var(--negative,#962E20)}.dc-pill{font-size:var(--fs-1);font-weight:700;padding:2px 8px;border:1px solid currentColor;white-space:nowrap}.dc-status li.is-missing .dc-pill{color:var(--negative,#962E20)}.dc-h{font-size:var(--fs-4);margin:22px 0 8px}.dc-rules{padding-left:18px;margin:0;display:grid;gap:8px}.dc-tag{color:var(--muted);font-size:var(--fs-2)}.dc-all details{border-top:1px solid var(--line);padding:6px 0}.dc-all summary{cursor:pointer;min-height:48px;display:flex;align-items:center;font-weight:700;font-size:var(--fs-4)}