/* Embedded tools (docs/CONTRACTS.md 11.4). Structure only: every color, font and radius comes from the site
   tokens in /assets/css/site.css, so one file serves errcscheck, bdacheck and whenleads. Light theme only.
   .t-js shows only once the tool's script is running (.is-live on the tool root); .t-nojs is the fallback. */

.tool.wl-tool { position: relative; margin: 1.75rem 0 2.5rem; padding: clamp(1rem, 3vw, 1.75rem); border: 1px solid var(--line); border-radius: var(--radius); background: var(--card, #fff); display: grid; gap: 1rem 3rem; grid-template-columns: minmax(0, 1fr); box-shadow: 0 1px 0 var(--line), 0 12px 32px -24px rgba(10, 20, 40, .35); }
.tool.wl-tool::before { content: ""; position: absolute; left: -1px; right: -1px; top: -1px; height: 4px; background: var(--accent-ink); border-radius: var(--radius) var(--radius) 0 0; }
@media (min-width: 900px) { .tool.wl-tool--split { grid-template-columns: minmax(220px, 4fr) 8fr; } }
.wl-tool > * { min-width: 0; }
.wl-tool__head > :last-child { margin-bottom: 0; }
.wl-tool__head .eyebrow { margin-bottom: .5rem; }
.wl-tool__title { font-size: clamp(1.25rem, 2.4vw, 1.6rem); margin: 0 0 .5rem; }
.wl-tool__body > :last-child { margin-bottom: 0; }
.wl-tool:not(.is-live) .t-js, .wl-tool.t-js:not(.is-live) { display: none !important; }
.wl-tool.is-live .t-nojs { display: none !important; }
.wl-tool [tabindex="-1"]:focus { outline: none; }
.wl-tool h4, .wl-tool h5 { font-family: var(--font-head); color: var(--ink); }
.wl-tool input[type="search"] { width: 100%; min-height: 44px; padding: .6rem .75rem; font: inherit; color: var(--ink); background: #fff; border: 1px solid var(--line-strong, var(--line)); border-radius: var(--radius-sm, 6px); }

/* segmented buttons and tabs */
.seg { display: flex; flex-wrap: wrap; gap: .4rem; margin: .75rem 0 0; }
.seg__btn { min-height: 44px; padding: .5rem .9rem; border: 1px solid var(--line-strong, var(--line)); background: #fff; color: var(--ink); border-radius: var(--radius-btn, var(--radius)); font: 600 .92rem/1.2 var(--font-body); cursor: pointer; }
.seg__btn:hover { border-color: var(--ink); }
.seg__btn[aria-pressed="true"], .seg__btn[aria-selected="true"] { background: var(--ink); color: #fff; border-color: var(--ink); }

/* big real numbers */
.dc-num, .cp-result__v, .cp-point__v, .tdc-big span, .nt-dl__n, .ff-card__n { font-family: var(--font-head); font-weight: 800; font-variant-numeric: tabular-nums; letter-spacing: -0.02em; color: var(--ink); }

/* ---------- deadline-countdown ---------- */
.dc-label { font: 600 .78rem/1.3 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--accent-ink); margin: 0 0 .35rem; }
.dc-big { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .75rem; margin: .1rem 0 .6rem; }
.dc-num { font-size: clamp(3rem, 9vw, 5.5rem); line-height: .95; }
.dc-unit { font-size: 1rem; color: var(--ink-2); max-width: 24ch; }
.dc-line { margin: 0 0 .6rem; }
.dc-flag, .bb-flag { display: inline-block; font: 700 .7rem/1 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--warn-ink, var(--warn)); border: 1px solid currentColor; padding: .2rem .4rem; border-radius: 3px; vertical-align: .1em; }
.dc-form { display: grid; gap: .75rem; margin: .5rem 0 1rem; }
.dc-class { display: grid; gap: .25rem; }
.dc-warn, .tdc-warn { color: var(--bad); font-weight: 600; }

/* ---------- check-teaser ---------- */
.ct { margin: 1.25rem 0 0; }
.ct-form { display: grid; gap: .9rem; }
.ct-kicker { margin: 0; font: 600 .85rem/1.2 var(--font-mono); letter-spacing: .04em; text-transform: uppercase; color: var(--ink-2); display: flex; align-items: center; gap: .5rem; }
.ct-step { display: inline-flex; align-items: center; justify-content: center; width: 1.6rem; height: 1.6rem; background: var(--ink); color: #fff; border-radius: var(--radius-sm, 3px); font-weight: 700; }
.ct-fields { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); }
.ct-note { margin: 0; }

/* ---------- coverage-slider ---------- */
@property --pos { syntax: "<percentage>"; inherits: true; initial-value: 50%; }
.cs-fig { margin: 0; }
.cs-stage { position: relative; width: 100%; aspect-ratio: 640 / 580; border: 1px solid var(--line); border-radius: var(--radius-sm, 4px); background: #fff; overflow: hidden; touch-action: pan-y; user-select: none; -webkit-user-select: none; }
.wl-tool.is-live .cs-stage { cursor: ew-resize; }
.cs-svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.cs-top { position: absolute; inset: 0; clip-path: inset(0 0 0 var(--pos)); }
.cs-handle { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 44px; margin-left: -22px; display: flex; align-items: center; justify-content: center; z-index: 2; }
.cs-handle::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 3px; margin-left: -1.5px; background: var(--ink); }
.cs-knob { position: relative; width: 40px; height: 40px; border-radius: 50%; background: #fff; border: 3px solid var(--ink); box-shadow: 0 4px 14px rgba(10, 20, 40, .25); }
.cs-knob::before, .cs-knob::after { content: ""; position: absolute; top: 50%; margin-top: -6px; border: 6px solid transparent; }
.cs-knob::before { left: 2px; border-right-color: var(--ink); }
.cs-knob::after { right: 2px; border-left-color: var(--ink); }
.cs-handle:focus { outline: none; }
.cs-handle:focus-visible .cs-knob { outline: 3px solid var(--focus); outline-offset: 3px; }
.wl-tool:not(.is-live) .cs-stage::after { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 3px; margin-left: -1.5px; background: var(--ink); }
.cs-hint { animation: cs-nudge 1.5s ease-in-out 1; }
@keyframes cs-nudge { 0% { --pos: 50%; } 35% { --pos: 36%; } 70% { --pos: 62%; } 100% { --pos: 50%; } }
.cs-cap { position: absolute; top: .5rem; z-index: 1; font: 700 .72rem/1 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; background: rgba(255, 255, 255, .92); padding: .3rem .45rem; border-radius: 3px; }
.cs-cap--l { left: .5rem; color: var(--bad); }
.cs-cap--r { right: .5rem; color: var(--ok); }
/* phones: the two buttons above already name both sides; the corner tags would sit on the diagram labels */
@media (max-width: 600px) { .cs-cap { display: none; } }
.cs-earth { fill: var(--panel); }
.cs-ground { stroke: var(--ink-2); stroke-width: 2; }
.cs-tower path { fill: none; stroke: var(--ink-2); stroke-width: 2.5; stroke-linejoin: round; }
.cs-tower circle { fill: var(--ink-2); }
.cs-bldg { fill: #fff; stroke: var(--ink); stroke-width: 3; }
.cs-floors path { fill: none; stroke: var(--line-strong, #999); stroke-width: 1.5; }
.cs-floors .cs-slab { stroke: var(--ink); stroke-width: 3; }
.cs-shaft { fill: var(--panel); stroke: var(--ink-2); stroke-width: 1.5; }
.cs-stairs, .cs-rooms { fill: none; stroke: var(--ink-2); stroke-width: 2; }
.cs-car { fill: var(--line); stroke: var(--ink-2); stroke-width: 1.5; }
.cs-hatch-bg { fill: #fbeceb; }
.cs-hatch-line { stroke: var(--bad); stroke-width: 3; opacity: .5; }
.cs-weak rect { fill: url(#cs-hatch); stroke: var(--bad); stroke-width: 1.5; }
.cs-waves path { fill: none; stroke: var(--ink-2); stroke-width: 2.5; stroke-linecap: round; }
.cs-x path { fill: none; stroke: var(--bad); stroke-width: 3.5; stroke-linecap: round; }
.cs-fill { fill: var(--ok); opacity: .1; }
.cs-link { fill: none; stroke: var(--ok); stroke-width: 2.5; stroke-dasharray: 7 6; }
.cs-donor path { fill: none; stroke: var(--ink); stroke-width: 3; stroke-linecap: round; }
.cs-riser { fill: none; stroke: var(--ok); stroke-width: 2.5; }
.cs-bda { fill: var(--ink); }
.cs-ant circle { fill: var(--ok); stroke: #fff; stroke-width: 2; }
.cs-pulse circle { fill: none; stroke: var(--ok); stroke-width: 2; }
.cs-svg--labels { z-index: 3; pointer-events: none; }
.cs-l rect { fill: #fff; stroke: var(--line-strong, #9aa5b5); stroke-width: 1; }
.cs-l text { font: 600 22px/1 var(--font-mono); fill: var(--ink); }
.cs-t--with .cs-l rect { stroke: var(--ok); }

/* signal pulse (coverage-slider antennas, whenleads open counties). Base CSS stops it under reduced motion. */
@keyframes wl-pulse { from { transform: scale(1); opacity: .9; } to { transform: scale(4.5); opacity: 0; } }
.cs-pulse circle, .fm-dot--ring { transform-box: fill-box; transform-origin: center; animation: wl-pulse 2.6s ease-out infinite; }
.cs-pulse circle:nth-child(2) { animation-delay: .65s; } .cs-pulse circle:nth-child(3) { animation-delay: 1.3s; } .cs-pulse circle:nth-child(4) { animation-delay: 1.95s; }
html.rm .cs-pulse circle, html.rm .fm-dot--ring { animation: none; opacity: 0; }

/* ---------- cost-picture ---------- */
.cp-head { display: grid; gap: .5rem 3rem; }
@media (min-width: 900px) { .cp-head { grid-template-columns: minmax(220px, 4fr) 8fr; align-items: end; } }
.cp .seg { margin: 0; }
.cp-panel { padding-top: .5rem; }
.cp-h { font-size: 1.05rem; margin: .25rem 0 .75rem; }
.cp-points { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); margin: 0 0 .75rem; }
.cp-point { text-align: left; display: grid; gap: .25rem; padding: .9rem 1rem; background: #fff; border: 1px solid var(--line); border-left: 4px solid var(--accent-ink); border-radius: var(--radius-sm, 4px); font: inherit; color: var(--ink); cursor: pointer; }
.cp-point:hover, .cp-point[aria-pressed="true"] { border-color: var(--ink); border-left-color: var(--accent-ink); background: var(--panel); }
.cp-point__v { font-size: clamp(1.35rem, 3vw, 1.85rem); line-height: 1.05; }
.cp-point__l { font-size: .88rem; color: var(--ink-2); }
.wl-tool:not(.is-live) .cp-point { cursor: default; }
.cp-calc { margin: 1.25rem 0 1rem; padding: 1rem 1.1rem; background: var(--panel); border-radius: var(--radius); }
.cp-result { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .75rem; margin: .75rem 0 0; }
.cp-result__v { font-size: clamp(2rem, 6vw, 3.2rem); line-height: 1; }
.cp-result__l { color: var(--ink-2); }
.cp-examples { margin: .5rem 0 .75rem; }
.cp-none { margin: .5rem 0 0; }
.cp-cta { margin-top: .5rem; }

/* ---------- notice-triage ---------- */
.nt-progress { height: 4px; background: var(--line); border-radius: 2px; overflow: hidden; margin: 0 0 1.25rem; }
.nt-progress span { display: block; height: 100%; background: var(--accent-ink); transform-origin: left center; transform: scaleX(0); transition: transform .35s ease; }
.nt-count { font: 600 .78rem/1 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--ink-2); margin: 0 0 .5rem; }
.nt-q { font-size: clamp(1.2rem, 2.6vw, 1.5rem); margin: 0 0 1rem; }
.nt-opts { display: grid; gap: .6rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 640px) { .nt-opts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.nt-opts--row { display: flex; flex-wrap: wrap; }
.nt-opt { text-align: left; min-height: 56px; padding: .9rem 1.1rem; border: 1.5px solid var(--line-strong, var(--line)); border-radius: var(--radius); background: #fff; color: var(--ink); font: 600 1rem/1.35 var(--font-body); cursor: pointer; }
.nt-opt:hover { border-color: var(--ink); background: var(--panel); }
.nt-opt--go { background: var(--accent); color: var(--accent-on, #fff); border-color: var(--accent); }
.nt-opt--go:hover { background: var(--accent-hover, var(--accent)); }
.nt-date { display: grid; gap: .35rem; max-width: 22rem; margin: .25rem 0 1rem; }
.nt-plan__grid { display: grid; gap: 1rem; grid-template-columns: minmax(0, 1fr); margin: 0 0 1rem; }
@media (min-width: 720px) { .nt-plan__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.nt-card { border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); padding: 1rem 1.1rem; }
.nt-card h5, .nt-steps-h { font-size: 1rem; margin: 0 0 .4rem; }
.nt-card > :last-child { margin-bottom: 0; }
.nt-dl { display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .5rem; margin: 0 0 .4rem; }
.nt-dl__n { font-size: 2.6rem; line-height: 1; }
.nt-steps { padding-left: 1.3rem; margin: 0 0 1rem; }
.nt-nav { display: flex; align-items: center; gap: 1rem; margin-top: 1rem; }
.nt-restart { background: none; border: 0; padding: .5rem 0; color: var(--link); font: inherit; text-decoration: underline; cursor: pointer; }

/* ---------- Florida maps (fl-rules-map, coverage-map) ---------- */
.fm { --fm-strong: var(--ink); --fm-city: #d6deeb; --fm-open: var(--accent); --fm-wait: #e6ebff; }
.fm-head { max-width: none; }
.fm-grid { display: grid; gap: 1.5rem 2.5rem; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 900px) { .fm-grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); } }
.fm-figure { margin: 0; }
.fm-svg { width: 100%; height: auto; display: block; }
.fm-c { fill: #fff; stroke: var(--line-strong, #9aa5b5); stroke-width: .8; stroke-linejoin: round; }
.fm-c--has { cursor: pointer; }
.fm-c--has:hover { stroke: var(--ink); stroke-width: 1.6; }
.fm-c:focus { outline: none; }
.fm-c:focus-visible { stroke: var(--focus); stroke-width: 3.5; }
.fm-hl { fill: none; stroke: var(--accent-ink); stroke-width: 3; stroke-linejoin: round; pointer-events: none; }
.fm--wl .fm-hl { stroke: var(--ink); stroke-width: 3.5; }
.fm-dot { fill: var(--signal, #d7ff3c); stroke: var(--ink); stroke-width: 1.5; pointer-events: none; }
.fm-dot--ring { fill: none; stroke: var(--signal, #d7ff3c); stroke-width: 3; }
.fm-legend { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; margin-top: .75rem; color: var(--ink-2); }
.fm-key { display: inline-block; width: 14px; height: 14px; margin-right: .4rem; vertical-align: -2px; border: 1px solid var(--line-strong, #9aa5b5); background: #fff; }
.fm-key--strong { background: var(--fm-strong); border-color: var(--fm-strong); }
.fm-key--hatch { background: repeating-linear-gradient(45deg, var(--fm-strong) 0 2px, var(--fm-city) 2px 6px); }
.fm-key--city { background: var(--fm-city); }
.fm-key--open { background: var(--fm-open); border-color: var(--ink); }
.fm-key--wait { background: var(--fm-wait); border: 2px dashed var(--accent); }
.fm-card { position: sticky; top: 1rem; }
.fm-card__name { font: 800 clamp(1.3rem, 2.6vw, 1.6rem)/1.15 var(--font-head); color: var(--ink); margin: 0 0 .6rem; }
.fm-list { list-style: none; padding: 0; margin: 0 0 1rem; }
.fm-list li { padding: .6rem 0; border-top: 1px solid var(--line); margin: 0; }
.fm-list__meta { display: block; margin-top: .2rem; }
.fm-meter { display: flex; gap: 4px; margin: .5rem 0; }
.fm-meter i { flex: 1; height: 10px; border-radius: 2px; background: var(--line); }
.fm-meter i.is-taken { background: var(--accent); }
.fm-table { margin-top: 1rem; }
.fm-table > summary { cursor: pointer; font-weight: 600; margin-bottom: .75rem; }

/* ---------- board-brief ---------- */
.bb-mini { padding-left: 1.1rem; margin: .5rem 0 0; }
.bb-quick { display: grid; gap: .9rem; }
.bb-layout { display: grid; gap: 1.5rem 2.5rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1100px) { .bb-layout { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } .bb-form { position: sticky; top: 1.5rem; } }
.bb-form { align-self: start; }
.bb-more summary { cursor: pointer; font-weight: 600; margin-bottom: .75rem; }
.bb-preview { background: var(--panel); border-radius: var(--radius); padding: clamp(.5rem, 2vw, 1.25rem); min-height: 18rem; }
.bb-empty { padding: 1rem; }
.bb-empty__title { font: 700 1.2rem/1.2 var(--font-head); color: var(--ink); }
.bb-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin-top: 1rem; }
.bb-doc { background: #fff; color: #111; border-top: 6px solid var(--ink); padding: 1.25rem 1.4rem; font-size: .82rem; line-height: 1.42; box-shadow: 0 12px 30px -12px rgba(10, 20, 40, .25); }
.bb-doc p { margin: 0 0 .35rem; }
.bb-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; border-bottom: 2px solid #111; padding-bottom: .6rem; margin-bottom: .75rem; }
.bb-kicker { font: 600 .68rem/1.2 var(--font-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--accent-ink); margin: 0 0 .2rem !important; }
.bb-title { font: 800 1.35rem/1.15 var(--font-head); margin: 0 0 .2rem !important; color: #111; }
.bb-meta { color: #333; margin: 0 !important; }
.bb-verdict { flex: none; font: 700 .72rem/1.1 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; border: 2px solid currentColor; padding: .4rem .55rem; border-radius: 3px; color: var(--warn-ink, #8a4800); margin: 0 !important; text-align: center; max-width: 9rem; }
.bb-verdict--likely_required, .bb-verdict--required_unless { color: var(--bad); }
.bb-open { margin-bottom: .45rem; }
.bb-sample-note { font-size: .9rem; color: var(--ink-2); margin: 0 0 .6rem; }
.bb-doc--sample { position: relative; overflow: hidden; }
.bb-doc--sample::after { content: "SAMPLE"; position: absolute; top: 42%; left: 50%; transform: translate(-50%, -50%) rotate(-24deg); font: 800 clamp(3rem, 9vw, 6rem)/1 var(--font-head); letter-spacing: .12em; color: rgba(13, 27, 46, .07); pointer-events: none; }
.bb-verdict--likely_not_required { color: var(--ok); }
.bb-grid { display: grid; gap: .65rem 1.2rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 620px) { .bb-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.bb-sec h5, .bb-sec .bb-h { font: 700 .72rem/1.2 var(--font-head); letter-spacing: .07em; text-transform: uppercase; color: #111; margin: 0 0 .3rem; padding-bottom: .2rem; border-bottom: 1px solid #c8c8c8; }
.bb-sec--wide { grid-column: 1 / -1; }
.bb-list { padding-left: 1rem; margin: 0 0 .3rem; }
.bb-list li { margin: .12rem 0; }
.bb-cite { font: .68rem/1.3 var(--font-mono); color: #555; }
.bb-small { font-size: .72rem; color: #444; }
.bb-passed { color: #555; }
.bb-steps { list-style: none; padding: 0; margin: 0; display: grid; gap: .35rem; grid-template-columns: repeat(2, minmax(0, 1fr)); counter-reset: bb; }
@media (min-width: 620px) { .bb-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .bb-steps { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
.bb-steps li { counter-increment: bb; margin: 0; border: 1px solid #bbb; border-top: 3px solid var(--ink); padding: .3rem .4rem; font-size: .72rem; line-height: 1.3; }
.bb-steps strong { display: block; }
.bb-steps strong::before { content: counter(bb) ". "; }
.bb-qr { display: flex; gap: .8rem; align-items: center; }
.bb-qr__code { flex: none; width: 104px; height: 104px; }
.bb-foot { margin-top: .7rem; border-top: 1px solid #c8c8c8; padding-top: .4rem; font-size: .66rem; color: #444; }
#wl-print-root { display: none; }

/* ---------- sample-alert ---------- */
.sa { overflow: hidden; }
.sa-ribbon { position: absolute; top: 22px; right: -46px; z-index: 3; transform: rotate(45deg); background: var(--bad); color: #fff; font: 700 .78rem/1 var(--font-mono); letter-spacing: .25em; padding: .4rem 3.2rem; margin: 0; pointer-events: none; box-shadow: 0 2px 8px rgba(0, 0, 0, .15); }
.sa-head { display: grid; gap: .5rem 3rem; padding-right: 3rem; }
@media (min-width: 900px) { .sa-head { grid-template-columns: minmax(220px, 4fr) 8fr; align-items: end; } }
.sa-head p { margin: 0; }
.sa-controls { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 1.5rem; }
.sa-controls .seg { margin: 0; }
.sa-mail { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: #fff; }
.sa-mail__bar { display: flex; flex-wrap: wrap; gap: .2rem 1rem; margin: 0; padding: .7rem 1rem; background: var(--panel); border-bottom: 1px solid var(--line); font-size: .88rem; }
.sa-mail__from { font-weight: 700; color: var(--ink); }
.sa-mail__subj { color: var(--ink-2); }
.sa-mail .table-wrap { margin: 0; border: 0; border-radius: 0; }
.sa-rowbtn { background: none; border: 0; padding: 0; font: inherit; color: var(--link); text-align: left; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.sa-table tr.is-sel td { background: var(--panel); }
.sa-detail { padding: 1rem 1.1rem; border-top: 1px solid var(--line); }
.sa-detail > :last-child { margin-bottom: 0; }
.sa-detail__b { font-weight: 700; color: var(--ink); }
.sa-instant__body { padding: 1rem 1.25rem; }
.sa-cta { margin-top: .25rem; }

/* ---------- test-due-calc ---------- */
.tdc { margin: 1.25rem 0 0; }
.tdc-form { display: grid; gap: .9rem; }
.tdc-kicker { display: flex; align-items: center; gap: .6rem; margin: 0; font: 700 1.15rem/1.2 var(--font-head); color: var(--ink); }
.tdc-tag { display: inline-block; width: 14px; height: 24px; background: var(--tag, var(--accent)); clip-path: polygon(0 18%, 50% 0, 100% 18%, 100% 100%, 0 100%); }
.tdc-row { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
.tdc-class { grid-column: 1 / -1; }
.tdc-out:empty { display: none !important; }
.tdc-out p { margin: 0 0 .4rem; }
.tdc-big { display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .5rem; }
.tdc-big span { font-size: clamp(2.4rem, 7vw, 3.4rem); line-height: 1; }
.tdc-big--late span { color: var(--bad); }
.tdc-note { margin: 0; }

/* ---------- test-day-walkthrough ---------- */
.tw-head { display: grid; gap: .5rem 3rem; }
@media (min-width: 900px) { .tw-head { grid-template-columns: minmax(220px, 4fr) 8fr; align-items: end; } }
.tw-head p { margin: 0; }
.tw-rail { display: flex; overflow-x: auto; border-bottom: 2px solid var(--line); scroll-snap-type: x proximity; scrollbar-width: thin; }
.tw-stop { flex: none; scroll-snap-align: start; display: flex; align-items: center; gap: .45rem; min-height: 48px; padding: .55rem .8rem .65rem; background: none; border: 0; border-bottom: 3px solid transparent; margin-bottom: -2px; color: var(--ink-2); font: 600 .9rem/1.2 var(--font-body); text-align: left; cursor: pointer; }
.tw-stop[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--tag, var(--accent)); }
.tw-stop__n { display: inline-flex; align-items: center; justify-content: center; width: 1.6rem; height: 1.6rem; border-radius: 50%; border: 2px solid currentColor; font-size: .8rem; font-weight: 700; flex: none; }
.tw-stop.is-done .tw-stop__n { background: var(--accent); border-color: var(--accent); color: #fff; }
.tw-panels { list-style: none; padding: 0; margin: 0; }
.tw-panel { display: grid; gap: 1.25rem 2.5rem; grid-template-columns: minmax(0, 1fr); margin: 0; padding: 1.25rem 0 0; }
.tw-panel + .tw-panel { border-top: 1px solid var(--line); margin-top: 1.25rem; }
.wl-tool.is-live .tw-panel + .tw-panel { border-top: 0; margin-top: 0; }
@media (min-width: 900px) { .tw-panel { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); } .tw--compact .tw-panel { grid-template-columns: minmax(0, 1fr); } }
.tw-when { font: 600 .78rem/1.2 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--accent-ink); margin: 0 0 .3rem; }
.tw-title { font-size: clamp(1.2rem, 2.4vw, 1.45rem); margin: 0 0 .6rem; }
.tw-ready-h { margin-bottom: .3rem; }
.tw-ready { list-style: none; padding: 0; margin: 0 0 .6rem; }
.tw-ready label { display: flex; gap: .55rem; align-items: flex-start; cursor: pointer; }
.tw-ready input { width: 20px; height: 20px; margin: .15rem 0 0; flex: none; accent-color: var(--accent); }
.tw-photo { border-radius: var(--radius); overflow: hidden; background: var(--panel); aspect-ratio: 4 / 3; }
.tw-photo picture { display: block; height: 100%; }
.tw-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tw-cta { margin-top: 1rem; }

/* ---------- failure-finder ---------- */
.ff-fig { margin: 0; }
.ff-svg { width: 100%; height: auto; display: block; border: 1px solid var(--line); border-radius: var(--radius-sm, 2px); background: #fff; }
.ff-tower, .ff-mast { fill: none; stroke: var(--ink-2); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
circle.ff-tower { fill: var(--ink-2); stroke: none; }
.ff-mast { stroke: var(--ink); stroke-width: 3; }
.ff-link { fill: none; stroke: var(--accent); stroke-width: 2.5; stroke-dasharray: 7 6; }
.ff-bldg { fill: #fff; stroke: var(--ink); stroke-width: 3; }
.ff-floor { fill: none; stroke: var(--line-strong, #999); stroke-width: 1.5; }
.ff-reno { fill: var(--panel); }
.ff-reno-studs { fill: none; stroke: var(--ink-2); stroke-width: 1.2; opacity: .6; }
.ff-riser, .ff-cable { fill: none; stroke: var(--accent); stroke-width: 3; }
.ff-box { fill: var(--ink); }
.ff-box--batt { fill: var(--ink-2); }
.ff-ground { stroke: var(--ink-2); stroke-width: 2; }
.ff-spot { cursor: pointer; }
.ff-spot:focus { outline: none; }
.ff-dot { fill: var(--tag, #f0a500); stroke: var(--ink); stroke-width: 2; }
.ff-ring { fill: none; stroke: var(--ink); stroke-width: 3; opacity: 0; }
.ff-spot.is-sel .ff-ring { opacity: 1; }
.ff-spot:focus-visible .ff-ring { opacity: 1; stroke: var(--focus); stroke-width: 4; }
.ff-spot:hover .ff-dot { stroke-width: 3; }
.ff-n { font: 800 18px/1 var(--font-head); fill: var(--ink); }
.ff-l { font: 700 15px/1 var(--font-head); fill: var(--ink); paint-order: stroke; stroke: #fff; stroke-width: 5px; stroke-linejoin: round; }
.ff-card { margin-top: 1rem; border-left: 4px solid var(--tag, var(--accent)); padding: .8rem 1rem; background: var(--panel); border-radius: 0 var(--radius) var(--radius) 0; }
.ff-card p { margin: 0 0 .45rem; }
.ff-card__n { font-size: 2rem; line-height: 1; }
.ff-card__t { font: 700 1.15rem/1.25 var(--font-head); color: var(--ink); }

/* ---------- glossary-filter ---------- */
.tool.wl-tool.gf { margin: 0 0 1rem; padding: 1rem; box-shadow: none; }
.gf-box { display: grid; gap: .4rem; }
.gf-count { margin: 0; }

/* ---------- print ---------- */
@media print {
  html.wl-print-brief body > *:not(#wl-print-root), html.wl-print-tw body > *:not(#wl-print-root) { display: none !important; }
  html.wl-print-brief #wl-print-root, html.wl-print-tw #wl-print-root { display: block !important; }
  @page { size: letter; margin: .4in; }
  #wl-print-root, #wl-print-root * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  #wl-print-root a { color: inherit; text-decoration: none; }
  #wl-print-root .bb-doc { box-shadow: none; padding: 0; border-top: 5px solid #000; font-size: 8.2pt; line-height: 1.28; color: #000; }
  #wl-print-root .bb-title { font-size: 15pt; }
  #wl-print-root .bb-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 5pt 12pt; }
  #wl-print-root .bb-steps { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  #wl-print-root .bb-steps li { font-size: 7pt; }
  #wl-print-root .bb-sec { break-inside: avoid; }
  #wl-print-root .bb-qr__code { width: 1.05in; height: 1.05in; }
  #wl-print-root .tw-panel { display: block !important; break-inside: avoid; border-top: 1px solid #999; padding: 8pt 0; }
  #wl-print-root .tw-photo { display: none !important; }
  .tw [data-tw-panel][hidden] { display: grid !important; }
  .tw-rail, .tw-cta, .tw-photo { display: none !important; }
  .wl-tool { box-shadow: none !important; break-inside: avoid; }
}
