/* The revenue cycle worksheets under healthcare/. A worksheet is a workbench
   in two columns: its parts on the left and a readout rail on the right that
   stays in view, with a light tower for the fit band. Below 980px it is one
   column. Colors, type, buttons and the header and footer come from
   styles.css. */
.ws-page { padding: clamp(36px, 4.5vw, 60px) 0 clamp(72px, 8vw, 112px); }

.ws {
  /* The four fit bands, weakest first. Vermilion is not a status color, so
     the weakest band takes the console's neutral slate and not a red. The
     amber is the console's (--st-waiting in frontend/src/styles/tokens.css). */
  --lamp-notyet: var(--status-waiting);
  --lamp-possible: #c2710c;
  --lamp-good: var(--indigo);
  --lamp-strong: var(--completed);
  --lamp-off: var(--surface-gray);
  display: flex;
  flex-direction: column;
  gap: 24px;
  font-size: 0.94rem;
  line-height: 1.5;
}

.ws [data-band="notyet"] { --tone: var(--lamp-notyet); }
.ws [data-band="possible"] { --tone: var(--lamp-possible); }
.ws [data-band="good"] { --tone: var(--lamp-good); }
.ws [data-band="strong"] { --tone: var(--lamp-strong); }

.ws h2, .ws h3 { max-width: none; letter-spacing: -0.015em; }
.ws textarea { color: inherit; font: inherit; }
.ws :where(input[type="text"], input[type="number"], textarea) { width: 100%; min-width: 0; padding: 9px 11px; border: 1px solid var(--line-strong); border-radius: 0; background: var(--paper); color: var(--ink); font-size: 0.94rem; font-weight: 400; }
.ws :where(input[type="number"]) { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.ws :where(input)::placeholder { color: var(--ink-faint); }
.ws :where(input[type="text"], input[type="number"], textarea):focus-visible { border-color: var(--indigo); outline: 0; box-shadow: 0 0 0 3px rgba(35, 64, 122, 0.24); }
.ws-small { color: var(--ink-soft); font-size: 0.82rem; }

/* Head */
.ws-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 20px 32px; }
.ws-head h1 { max-width: 20ch; font-size: clamp(2rem, 3.3vw, 2.65rem); line-height: 1.06; }
.ws-lede { max-width: 62ch; margin-top: 1rem; color: var(--ink-soft); font-size: 1.04rem; line-height: 1.6; text-wrap: pretty; }
.ws-toolbar { display: flex; flex-wrap: wrap; gap: 8px; }
.ws-btn { display: inline-flex; min-height: 40px; align-items: center; justify-content: center; padding: 0 14px; border: 1px solid var(--line-strong); background: var(--paper-bright); cursor: pointer; font-size: 0.9rem; font-weight: 600; line-height: 1.2; transition: background 180ms ease, border-color 180ms ease, color 180ms ease; }
.ws-btn:hover { border-color: var(--indigo-line); color: var(--indigo); }
.ws-btn-primary { border-color: var(--indigo); background: var(--indigo); color: var(--paper-bright); }
.ws-btn-primary:hover { border-color: var(--indigo-hover); background: var(--indigo-hover); color: var(--paper-bright); }
.ws-banner { display: flex; align-items: flex-start; gap: 10px; padding: 12px 16px; background: var(--indigo-soft); box-shadow: inset 3px 0 0 var(--indigo); font-size: 0.9rem; }
.ws-banner b { font-weight: 700; white-space: nowrap; }

/* The two steps, drawn as the homepage draws its timeline stages: the open
   one carries the vermilion bar. */
.ws-steps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.ws-step { display: flex; min-width: 0; align-items: center; gap: 14px; padding: 14px 16px 16px; border: 1px solid var(--line); border-top: 3px solid var(--surface-gray); background: var(--paper-bright); cursor: pointer; text-align: left; transition: border-color 300ms ease; }
.ws-step:hover { border-top-color: var(--indigo-line); }
.ws-step[aria-selected="true"] { border-color: var(--line-strong); border-top-color: var(--shu); }
.ws-step-n { display: grid; width: 30px; height: 30px; flex: none; place-items: center; border: 1px solid var(--line-strong); color: var(--ink-faint); font-family: var(--mono); font-size: 0.82rem; font-weight: 500; }
.ws-step[aria-selected="true"] .ws-step-n { border-color: var(--indigo); color: var(--indigo); }
.ws-step-text { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.ws-step-label { font-size: 1.12rem; font-weight: 600; letter-spacing: -0.02em; line-height: 1.16; }
.ws-step-value { overflow: hidden; color: var(--ink-faint); font-family: var(--mono); font-size: 0.78rem; text-overflow: ellipsis; white-space: nowrap; }

/* Parts */
.ws-grid { display: grid; grid-template-columns: minmax(0, 1fr) 360px; align-items: start; gap: 24px; }
.ws-parts { display: flex; min-width: 0; flex-direction: column; gap: 20px; }
.ws-part { display: flex; min-width: 0; flex-direction: column; gap: 18px; padding: 24px; border: 1px solid var(--line); background: var(--paper-bright); }
.ws-part-wide { grid-column: 1 / -1; }
.ws-part-head { display: flex; align-items: baseline; gap: 16px; }
.ws-part-no { color: var(--indigo); font-family: var(--mono); font-size: 0.72rem; font-weight: 500; letter-spacing: 0.09em; white-space: nowrap; }
.ws-part-head h2 { font-size: 1.3rem; line-height: 1.2; }
.ws-part-head p { margin-top: 5px; color: var(--ink-soft); font-size: 0.92rem; }
.ws-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.ws-field { display: flex; min-width: 0; flex-direction: column; gap: 6px; font-size: 0.82rem; font-weight: 600; }

/* Fit criteria */
.ws-criteria { display: grid; gap: 18px; }
.ws-crit { display: flex; flex-direction: column; gap: 10px; padding-top: 18px; border-top: 1px solid var(--line); }
.ws-crit:first-child { padding-top: 0; border-top: 0; }
.ws-crit-top { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.ws-crit-top h3 { font-size: 1.02rem; line-height: 1.3; }
.ws-crit-score { color: var(--ink-faint); font-family: var(--mono); font-size: 0.8rem; white-space: nowrap; }
.ws-crit-score b { color: var(--ink); font-size: 0.94rem; font-weight: 500; }
.ws-opts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.ws-opt { position: relative; }
.ws-opt input { position: absolute; opacity: 0; pointer-events: none; }
.ws-opt label { display: flex; height: 100%; flex-direction: column; gap: 4px; padding: 10px 11px; border: 1px solid var(--line-strong); background: var(--paper); cursor: pointer; font-size: 0.82rem; line-height: 1.35; transition: background 120ms ease, border-color 120ms ease; }
.ws-opt label:hover { border-color: var(--indigo-line); }
.ws-opt-pts { color: var(--ink-faint); font-family: var(--mono); font-size: 0.75rem; font-weight: 500; }
.ws-opt input:checked + label { border-color: var(--indigo); background: var(--indigo-soft); box-shadow: inset 0 0 0 1px var(--indigo); }
.ws-opt input:checked + label .ws-opt-pts { color: var(--indigo); }
.ws-opt input:focus-visible + label { outline: 3px solid var(--shu); outline-offset: 2px; }
.ws .ws-note { font-size: 0.82rem; }

.ws-totalbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; padding: 14px 16px; background: var(--paper); }
.ws-total { font-family: var(--mono); font-size: 1.4rem; font-weight: 500; }
.ws-scale { position: relative; min-width: 0; flex: 1 1 260px; }
.ws-scale-track, .ws-scale-ticks { display: grid; grid-template-columns: 5fr 5fr 5fr 4fr; gap: 3px; }
.ws-scale-track { height: 10px; }
.ws-scale-track span { background: var(--tone); opacity: 0.3; }
.ws-scale-track span.is-on { opacity: 1; }
.ws-scale-ticks { margin-top: 5px; color: var(--ink-faint); font-family: var(--mono); font-size: 0.69rem; }
.ws-scale-marker { position: absolute; top: -4px; left: 0; width: 3px; height: 18px; background: var(--shu); transform: translateX(-50%); transition: left 250ms ease; }
.ws-bands { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; font-size: 0.82rem; }
.ws-band { display: flex; flex-direction: column; gap: 3px; padding: 10px 11px; border: 1px solid var(--line); border-top: 3px solid var(--tone); opacity: 0.6; }
.ws-band.is-on { border-color: var(--tone); background: var(--paper); opacity: 1; }
.ws-band b { color: var(--ink-soft); font-family: var(--mono); font-size: 0.75rem; font-weight: 500; }

/* Tables. The wrap is positioned so that the heading hidden from view scrolls
   with the table and does not widen the page. */
.ws-table-wrap { position: relative; overflow-x: auto; border: 1px solid var(--line); }
.ws-table { width: 100%; min-width: 640px; border-collapse: collapse; font-size: 0.88rem; }
.ws-table-wide { min-width: 900px; }
.ws-table th, .ws-table td { padding: 8px 10px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.ws-table th { background: var(--paper); color: var(--ink-faint); font-family: var(--mono); font-size: 0.66rem; font-weight: 500; letter-spacing: 0.07em; text-transform: uppercase; }
.ws-table .is-num { text-align: right; }
.ws-table td.is-num { font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ws-table td input { padding: 6px 8px; }
.ws-table td.is-num input { width: 5.5rem; text-align: right; }
.ws-table-wide td.is-num input { width: 4.75rem; }
.ws-table tfoot td { border-bottom: 0; background: var(--paper); font-weight: 600; }
.ws-table td.is-num:not(:has(input)) { font-weight: 500; }
.ws-table tr.is-pick td:first-child { box-shadow: inset 3px 0 0 var(--shu); }
.ws-name { display: flex; min-width: 200px; flex-wrap: wrap; align-items: center; gap: 6px; }
.ws-name input { flex: 1 1 150px; }
.ws-tag { display: inline-block; padding: 2px 6px; border: 1px solid var(--line); background: var(--paper); color: var(--ink-faint); font-family: var(--mono); font-size: 0.66rem; font-weight: 500; letter-spacing: 0.05em; text-transform: uppercase; white-space: nowrap; }
.ws-tag-start { border-color: transparent; background: var(--indigo-soft); color: var(--indigo); }
.ws-icon-btn { padding: 4px 8px; border: 0; background: none; color: var(--ink-faint); cursor: pointer; font-size: 1.15rem; line-height: 1; }
.ws-icon-btn:hover { background: var(--surface); color: var(--ink); }
.ws-row-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; }

/* Revenue inputs */
.ws-formula { display: flex; flex-direction: column; gap: 6px; overflow-x: auto; padding: 12px 14px; background: var(--paper); color: var(--ink-soft); font-family: var(--mono); font-size: 0.8rem; }
.ws-formula b { color: var(--ink); font-weight: 500; }
.ws-formula-note { font-family: var(--sans); font-size: 0.88rem; }
.ws-formula-note b { font-family: var(--mono); font-size: 0.8rem; }
.ws-auto-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; }
.ws-src { display: flex; min-height: 22px; flex-wrap: wrap; align-items: center; gap: 2px 6px; color: var(--ink-faint); font-size: 0.75rem; font-weight: 400; }
.ws-src button, .ws-linkbtn { padding: 0; border: 0; background: none; color: var(--indigo); cursor: pointer; text-align: left; text-decoration: underline; text-underline-offset: 3px; }
.ws-src button { font-size: 0.75rem; }
.ws-linkbtn { align-self: flex-start; font-size: 0.82rem; }
.ws-adorn { position: relative; }
.ws-adorn span { position: absolute; top: 50%; color: var(--ink-faint); font-family: var(--mono); font-size: 0.82rem; font-weight: 400; pointer-events: none; transform: translateY(-50%); }
.ws-adorn-pre { left: 11px; }
.ws-adorn-pre + input { padding-left: 24px; }
.ws-adorn-suf { right: 11px; }
.ws-adorn input.has-suf { padding-right: 30px; }
.ws-checklist { display: flex; flex-direction: column; gap: 8px; padding: 0; margin: 0; list-style: none; }
.ws-checklist label { display: flex; align-items: flex-start; gap: 10px; cursor: pointer; }
.ws-checklist input { width: 16px; height: 16px; flex: none; margin: 4px 0 0; accent-color: var(--indigo); }
.ws-pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.ws-pager .ws-btn { min-height: 48px; padding: 0 18px; font-size: 0.94rem; }

/* Readout rail */
.ws-rail { position: sticky; top: calc(var(--header-height) + 18px); display: flex; min-width: 0; flex-direction: column; gap: 16px; }
.ws-card { display: flex; flex-direction: column; gap: 14px; padding: 20px; border: 1px solid var(--line); background: var(--paper-bright); }
.ws-card h2 { color: var(--ink-faint); font-family: var(--mono); font-size: 0.72rem; font-weight: 500; letter-spacing: 0.09em; line-height: 1.4; text-transform: uppercase; }
.ws-fit { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 20px; }
.ws-tower { display: flex; flex-direction: column; align-items: center; }
.ws-tower-cap { width: 30px; height: 8px; border-radius: 4px 4px 0 0; background: var(--surface-gray); }
.ws-lamp { width: 38px; height: 24px; margin-top: 3px; border-radius: 2px; background: var(--lamp-off); transition: background 200ms ease, box-shadow 200ms ease; }
.ws-lamp.is-on { background: var(--tone); box-shadow: 0 0 10px color-mix(in srgb, var(--tone) 55%, transparent); }
.ws-tower-pole { width: 8px; height: 22px; background: var(--surface-gray); }
.ws-tower-base { width: 44px; height: 6px; border-radius: 2px; background: var(--surface-gray); }
.ws-fit-score { font-family: var(--mono); font-size: 2.5rem; font-weight: 500; line-height: 1; }
.ws-fit-score small { color: var(--ink-faint); font-size: 1rem; font-weight: 400; }
.ws-fit-band { margin-top: 8px; font-size: 1.3rem; font-weight: 600; letter-spacing: -0.02em; line-height: 1.15; }
.ws-fit-sub { margin-top: 5px; color: var(--ink-soft); font-size: 0.82rem; }
.ws-stats { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.ws-stat { display: flex; min-width: 0; flex-direction: column; gap: 2px; }
.ws-stat-k, .ws-stat-s { color: var(--ink-faint); font-size: 0.75rem; }
.ws-stat-v { overflow-wrap: anywhere; font-family: var(--mono); font-size: 1.4rem; font-variant-numeric: tabular-nums; font-weight: 500; }
.ws-stat-wide { grid-column: 1 / -1; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.ws-stat-wide .ws-stat-v { font-size: 1.75rem; }
.ws-stat-foot { grid-column: 1 / -1; padding-top: 12px; border-top: 1px solid var(--line); }
.ws-mini-fit { display: flex; align-items: center; gap: 12px; }
.ws-mini-dot { width: 14px; height: 14px; flex: none; border-radius: 2px; background: var(--tone, var(--lamp-off)); }
.ws-mini-score { font-family: var(--mono); font-size: 1.25rem; font-weight: 500; }
.ws-mini-band { font-weight: 600; }
.ws-readout { font-size: 0.92rem; line-height: 1.58; }
.ws-readout strong { font-weight: 700; }
.ws-copyrow { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.ws-toast { color: var(--completed); font-size: 0.82rem; font-weight: 600; }
.ws .ws-fallback { height: 140px; font-family: var(--mono); font-size: 0.75rem; }

/* The booking block, shown from a score of 10. It is dark, as the close of
   the homepage is, and takes that section's button. */
.ws-cta { display: flex; flex-direction: column; gap: 12px; padding: 24px; }
.ws-cta-eyebrow { color: var(--on-dark-soft); font-family: var(--mono); font-size: 0.7rem; font-weight: 500; letter-spacing: 0.09em; text-transform: uppercase; }
.ws-cta h3 { font-size: 1.4rem; line-height: 1.15; }
.ws-cta p { color: var(--on-dark-soft); font-size: 0.92rem; line-height: 1.55; }
.ws-cta .button { gap: 8px; text-align: center; white-space: normal; }
.ws-cta-fine { color: var(--on-dark-faint); font-size: 0.78rem; }
.ws-cta-inline { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 24px; }
.ws-cta-inline > div { display: flex; min-width: 0; flex: 1 1 320px; flex-direction: column; gap: 6px; }
.ws-cta.is-shown { animation: ws-cta-in 350ms ease-out; }

@keyframes ws-cta-in {
  from { opacity: 0.4; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}

.ws-footnote { max-width: 75ch; color: var(--ink-faint); font-size: 0.8rem; line-height: 1.5; }

@media screen {
  .ws [hidden] { display: none !important; }
}

@media (max-width: 980px) {
  .ws-grid { grid-template-columns: minmax(0, 1fr); }
  .ws-rail { position: static; }
}

@media screen and (max-width: 700px) {
  /* 16px keeps a phone from zooming in when a field takes focus. */
  .ws :where(input[type="text"], input[type="number"], textarea), .ws .ws-note { font-size: 1rem; }
  .ws-part { padding: 18px 16px; }
  .ws-part-head { flex-direction: column; gap: 6px; }
  .ws-fields { grid-template-columns: minmax(0, 1fr); }
  .ws-opts, .ws-bands { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ws-banner { flex-direction: column; gap: 4px; }

  /* A table row becomes a card: the name across the top, then each column
     as a labeled field, two to a line. The column heading is the label. */
  .ws-table-wrap { overflow: visible; border: 0; }
  .ws-table, .ws-table-wide { display: block; min-width: 0; }
  .ws-table thead { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; white-space: nowrap; }
  .ws-table tbody, .ws-table tfoot { display: grid; gap: 10px; }
  .ws-table tfoot { margin-top: 10px; }
  .ws-table tr { position: relative; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; gap: 12px; padding: 14px; border: 1px solid var(--line-strong); background: var(--paper-bright); }
  .ws-table tfoot tr { background: var(--paper); }
  .ws-table td, .ws-table td.is-num, .ws-table tfoot td { display: block; padding: 0; border: 0; background: none; text-align: left; }
  .ws-table td:first-child { grid-column: 1 / -1; }
  .ws-table tbody td:first-child { padding-right: 40px; }
  .ws-table td[data-label]::before { display: block; margin-bottom: 5px; color: var(--ink-faint); content: attr(data-label); font-family: var(--mono); font-size: 0.66rem; font-weight: 500; letter-spacing: 0.07em; text-transform: uppercase; }
  .ws-table td.is-num input, .ws-table-wide td.is-num input { width: 100%; padding: 9px 11px; text-align: left; }
  .ws-table td:last-child:not([data-label]) { position: absolute; top: 8px; right: 6px; }
  .ws-table tfoot td:last-child { display: none; }
  .ws-table tr.is-pick { box-shadow: inset 3px 0 0 var(--shu); }
  .ws-table tr.is-pick td:first-child { box-shadow: none; }
  .ws-name { min-width: 0; }
  .ws-icon-btn { width: 36px; height: 36px; padding: 0; }
}

@media (max-width: 520px) {
  .ws-step { padding: 10px 12px 12px; }
  .ws-step-n { display: none; }
  .ws-step-label { font-size: 0.96rem; }
  .ws-pager .ws-btn { width: 100%; }
}

/* Printed, a worksheet is a summary on one page: both steps side by side as
   two columns that fill independently. The left one has the queue, each
   criterion with the answer chosen for it, the table and the revenue numbers
   that are not in the table. The right one has the score, the results and
   the readout. Controls, instructions and booking blocks are left out, and so
   is what the readout already says: the list of what to bring and the first
   step's readout. */
@page { margin: 11mm; }

@media print {
  body { background: none; }
  .site-header, .site-footer, .skip-link, .ws-toolbar, .ws-steps, .ws-pager, .ws-cta, .ws-lede, .ws-part-head p, .ws-totalbar, .ws-bands, .ws-formula, .ws-src, .ws-row-actions, .ws-copyrow, .ws-fallback, .ws-linkbtn, .ws-icon-btn, .ws-card:has(.ws-mini-fit), .ws-card:has(#fitReadout), .ws-part:has(.ws-checklist), .ws-opt:not(:has(input:checked)), .ws-opt-pts, .ws-note:placeholder-shown, .ws-auto-fields .ws-field:has(input[data-override="0"]), .ws-field:has(input:placeholder-shown) { display: none !important; }
  .ws [hidden]:not(.ws-grid) { display: none !important; }
  .ws-page { padding: 0; }
  .wrap.ws { --rail: 2.3in; --gap: 8px; display: block; width: 100%; font-size: 8pt; line-height: 1.35; }
  .ws-head h1 { max-width: none; font-size: 14pt; }
  .ws .eyebrow { margin-bottom: 3px; font-size: 6.5pt; }
  .ws-banner { padding: 4px 8px; margin: var(--gap) 0; font-size: 7pt; }

  .ws-grid { display: block; }
  .ws-parts, .ws-part-wide { width: calc(100% - var(--rail) - var(--gap)); clear: left; float: left; }
  .ws-parts { gap: 0; }
  .ws-part, .ws-card { gap: 5px; padding: 8px 10px; margin-bottom: var(--gap); break-inside: avoid; }
  .ws-rail { position: static; display: block; margin-left: calc(100% - var(--rail)); }
  .ws-part-head { align-items: baseline; gap: 8px; }
  .ws-part-head h2 { font-size: 10pt; }
  .ws-part-no, .ws-card h2 { font-size: 6.5pt; }

  /* A field prints as its value. Where the browser can size a field to its
     value it does; elsewhere the widths below hold. */
  .ws :where(input[type="text"], input[type="number"], textarea) { padding: 0; border: 0; background: none; font-size: 8pt; }
  .ws input[type="number"] { appearance: textfield; }
  .ws input[type="number"]::-webkit-inner-spin-button { display: none; }
  .ws-fields { grid-template-columns: minmax(0, 1fr); gap: 1px; }
  .ws-fields .ws-field { display: grid; grid-template-columns: 1.5in minmax(0, 1fr); align-items: baseline; gap: 8px; }
  .ws-field { gap: 1px; color: var(--ink-faint); font-size: 7pt; }

  /* A criterion is its name, the answer and the score on one line, with the
     note under the answer. */
  .ws-criteria { gap: 0; }
  .ws-crit { display: grid; grid-template-columns: 1.5in minmax(0, 1fr) auto; gap: 0 8px; padding: 3px 0; border-top: 1px solid var(--line); }
  .ws-crit:first-child { padding-top: 0; }
  .ws-crit-top { display: contents; }
  .ws-crit-top h3 { font-size: 8pt; }
  .ws-crit-score { grid-column: 3; grid-row: 1; font-size: 7pt; }
  .ws-crit-score b { font-size: 8pt; }
  .ws-opts { display: block; grid-column: 2; grid-row: 1; }
  .ws-opt label, .ws-opt input:checked + label { padding: 0; border: 0; background: none; box-shadow: none; font-size: 8pt; }
  .ws .ws-note { grid-column: 2 / -1; color: var(--ink-soft); font-size: 7pt; }
  .ws-lamp, .ws-tag-start { print-color-adjust: exact; -webkit-print-color-adjust: exact; }

  .ws-table-wrap { overflow: visible; }
  .ws-table, .ws-table-wide { min-width: 0; font-size: 7.5pt; }
  .ws-table th, .ws-table td { padding: 2px 4px; }
  .ws-table th { font-size: 5.5pt; letter-spacing: 0.03em; }
  .ws-table td input { padding: 0; font-size: 7.5pt; }
  .ws-table td.is-num input, .ws-table-wide td.is-num input { width: 100%; }
  .ws-table th:first-child { width: 36%; }
  .ws-table-wide th:first-child { width: 31%; }
  .ws-table td:last-child, .ws-table th:last-child { display: none; }
  .ws-name { min-width: 0; flex-wrap: nowrap; gap: 4px; }
  .ws-name input { flex: 0 1 auto; }
  .ws-tag { padding: 0 3px; font-size: 5pt; }
  .ws-auto-fields { grid-template-columns: repeat(auto-fit, minmax(1.3in, 1fr)); gap: 4px 8px; }
  .ws-adorn { display: flex; align-items: baseline; gap: 2px; }
  .ws-adorn span { position: static; font-size: 8pt; transform: none; }
  .ws-adorn-pre + input, .ws-adorn input.has-suf { width: 5.5em; padding: 0; }

  .ws-fit { gap: 12px; }
  .ws-lamp { width: 26px; height: 14px; }
  .ws-tower-cap { width: 20px; height: 5px; }
  .ws-tower-pole { width: 6px; height: 10px; }
  .ws-tower-base { width: 30px; height: 4px; }
  .ws-fit-score { font-size: 20pt; }
  .ws-fit-band { margin-top: 3px; font-size: 11pt; }
  .ws-fit-sub, .ws-readout { font-size: 8pt; line-height: 1.4; }
  .ws-stats { gap: 5px 8px; }
  .ws-stat-k, .ws-stat-s { font-size: 6.5pt; }
  .ws-stat-v { font-size: 11pt; }
  .ws-stat-wide { padding-bottom: 5px; }
  .ws-stat-wide .ws-stat-v { font-size: 15pt; }
  .ws-stat-foot { padding-top: 5px; }
  .ws-footnote { clear: both; font-size: 6.5pt; }
  .ws-footnote a { text-decoration: none; }

  @supports (field-sizing: content) {
    .ws-name input, .ws-adorn-pre + input, .ws-adorn input.has-suf { width: auto; field-sizing: content; }
  }
}
