/* Honest Figures — Component Kit v1
   Depends on tokens.css (import tokens.css FIRST). Framework-agnostic, SSR-friendly.
   Prefix: .hf-  ·  Every component: AA contrast, keyboard-operable, reduced-motion safe. */

/* ---------- base ---------- */
/* HF-LEDGER-GRID · site-wide background texture: composited dot (existing) + thin
   horizontal ledger rules every 32px. Both layers use theme-aware tokens
   (--hf-dot / --hf-grid-line) so the texture stays legible on the darker dark
   surface (--hf-surface #060607) and on the light cream surface without change.
   Alpha stays <=0.06 so body text on the page keeps its AA contrast; the ledger
   rule is a background-image, so it does not affect layout (CLS-safe). */
.hf-root{background-color:var(--hf-surface);
  background-image:
    radial-gradient(var(--hf-dot) 1px,transparent 1.6px),
    repeating-linear-gradient(to bottom,transparent 0 31px,var(--hf-grid-line) 31px 32px);
  background-size:26px 26px, 100% 32px;
  background-position:-1px -1px, 0 0;
  color:var(--hf-ink);font-family:var(--hf-font-sans);
  font-size:var(--hf-fs-body);line-height:1.55;font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased}
/* the "signature" graph-paper grid, used only in a hero band; fades out at the bottom edge */
.hf-gridfield{position:relative}
.hf-gridfield::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background-image:
    repeating-linear-gradient(to right,var(--hf-grid-strong) 0 1px,transparent 1px 96px),
    repeating-linear-gradient(to bottom,var(--hf-grid-strong) 0 1px,transparent 1px 96px),
    repeating-linear-gradient(to right,var(--hf-grid-line) 0 1px,transparent 1px 24px),
    repeating-linear-gradient(to bottom,var(--hf-grid-line) 0 1px,transparent 1px 24px);
  -webkit-mask-image:linear-gradient(180deg,#000 40%,transparent);mask-image:linear-gradient(180deg,#000 40%,transparent)}
.hf-gridfield > *{position:relative;z-index:1}
/* --- ad slots: labelled, reserved-height, CLS-safe placeholders (no live network yet) --- */
.hf-ad-slot{display:block;margin:30px auto;max-width:100%;contain:layout size;position:relative;overflow:hidden;
  background:color-mix(in srgb,var(--hf-ink) 3%,var(--hf-canvas));border:1px dashed var(--hf-hairline);border-radius:var(--hf-radius-md)}
.hf-ad-slot__label{position:absolute;top:6px;left:10px;font-family:var(--hf-font-mono);font-size:10px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--hf-muted);opacity:.7;pointer-events:none}
.hf-ad-slot__frame{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:inherit}
.hf-ad-slot[data-ad-status="filled"]{background:none;border:0}
.hf-ad-slot[data-ad-format="rectangle"]{min-height:250px;max-width:300px}
.hf-ad-slot[data-ad-format="leaderboard"]{min-height:250px;max-width:300px}
.hf-ad-slot[data-ad-format="halfpage"]{min-height:600px;max-width:300px}
@media(min-width:768px){
  .hf-ad-slot[data-ad-format="rectangle"]{min-height:280px;max-width:336px}
  .hf-ad-slot[data-ad-format="leaderboard"]{min-height:90px;max-width:728px}
}
.hf-ad-rail{position:sticky;top:96px}
@media(max-width:1023px){.hf-ad-rail,.hf-ad-slot[data-ad-format="halfpage"]{display:none}}
/* touch devices: guarantee >=44px interactive targets (WCAG 2.5.8 / mobile usability) */
@media (pointer:coarse){
  .hf-btn,.hf-navcta,.hf-seg button{min-height:44px}
  .hf-themebtn,.hf-burger{min-width:44px;min-height:44px}
}
/* visually-hidden utility (screen-reader-only text; used for section headings + skip link) */
.hf-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hf-skip{position:absolute;left:8px;top:-48px;z-index:100;background:var(--hf-teal-btn);color:#fff;
  padding:10px 16px;border-radius:var(--hf-radius-md);font-weight:600;text-decoration:none;transition:top .15s}
.hf-skip:focus{top:8px}
/* house-unit mode: the internal infographic is the visual, so drop the dashed empty box */
.hf-ad-slot--house{background:none;border:0;overflow:visible}
/* --- house units: internal infographic cards that fill the reserved slots until AdSense --- */
.hf-house{display:flex;flex-direction:column;width:100%;height:100%;min-height:inherit;box-sizing:border-box;
  padding:18px 20px;gap:10px;text-decoration:none;color:var(--hf-ink);background:var(--hf-canvas);
  border:var(--hf-border);border-radius:var(--hf-radius-md);position:relative;overflow:hidden;
  transition:border-color var(--hf-dur-fast) var(--hf-ease-out),box-shadow var(--hf-dur-fast) var(--hf-ease-out),transform var(--hf-dur-fast) var(--hf-ease-out)}
.hf-house:hover{border-color:color-mix(in srgb,var(--hf-teal) 40%,var(--hf-hairline));box-shadow:var(--hf-shadow-md);transform:translateY(-2px)}
.hf-house:focus-visible{outline:2px solid var(--hf-focus);outline-offset:2px}
.hf-house__eyebrow{font-family:var(--hf-font-mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--hf-teal)}
.hf-house__body{flex:1;display:flex;flex-direction:column;justify-content:center;gap:6px;min-height:0}
.hf-house__big{font-family:var(--hf-font-mono);font-weight:600;font-size:40px;line-height:1;color:var(--hf-teal);letter-spacing:-.02em}
.hf-house__cap{font-size:var(--hf-fs-sm);color:var(--hf-ink);font-weight:500;line-height:1.25}
.hf-house__madeof{font-size:var(--hf-fs-xs);color:var(--hf-muted);margin:6px 0 0;line-height:1.45}
.hf-house__title{font-family:var(--hf-font-display);font-size:19px;letter-spacing:-.01em;color:var(--hf-ink);line-height:1.15}
.hf-house__text{font-size:var(--hf-fs-sm);color:var(--hf-muted);margin:0;line-height:1.5}
.hf-house__eg{font-family:var(--hf-font-mono);font-size:var(--hf-fs-xs);color:var(--hf-teal);margin:2px 0 0}
.hf-house__foot{font-size:var(--hf-fs-xs);color:var(--hf-muted);margin:4px 0 0;line-height:1.4}
.hf-house__bars{display:flex;flex-direction:column;gap:9px;margin:4px 0 0}
.hf-house__barhead{display:flex;justify-content:space-between;font-size:var(--hf-fs-xs);color:var(--hf-ink);margin-bottom:3px}
.hf-house__barhead .hf-num{color:var(--hf-muted)}
.hf-house__track{height:8px;border-radius:5px;background:color-mix(in srgb,var(--hf-ink) 8%,transparent);overflow:hidden}
.hf-house__track > span{display:block;height:100%;border-radius:5px;min-width:4px}
.hf-house__cta{font-family:var(--hf-font-mono);font-size:var(--hf-fs-xs);font-weight:600;color:var(--hf-teal);letter-spacing:.02em;margin-top:auto;padding-top:10px}
/* leaderboard: on desktop the slot is short + wide (90px), so lay the unit out as a row */
@media(min-width:768px){
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house{flex-direction:row;align-items:center;gap:20px;padding:12px 22px}
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__eyebrow{flex-shrink:0}
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__body{flex:1;min-width:0;flex-direction:row;align-items:baseline;justify-content:flex-start;gap:12px}
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__big{font-size:26px;flex-shrink:0}
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__title{flex-shrink:0}
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__cap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* drop the long descriptive lines in the short row so the figure + CTA always fit */
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__text,
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__madeof,
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__eg,
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__foot{display:none}
  .hf-ad-slot[data-ad-format="leaderboard"] .hf-house__cta{margin:0 0 0 auto;padding:0;white-space:nowrap;flex-shrink:0}
}
/* halfpage: tall sidebar rail — give the figure more room */
.hf-ad-slot[data-ad-format="halfpage"] .hf-house{padding:28px 24px;gap:16px}
.hf-ad-slot[data-ad-format="halfpage"] .hf-house__body{justify-content:center;gap:12px}
.hf-ad-slot[data-ad-format="halfpage"] .hf-house__big{font-size:52px}
.hf-ad-slot[data-ad-format="halfpage"] .hf-house__title{font-size:23px}
@media(prefers-reduced-motion:reduce){.hf-house{transition:none}.hf-house:hover{transform:none}}
.hf-num{font-family:var(--hf-font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1,"zero" 1}
.hf-h1,.hf-h2,.hf-h3{font-family:var(--hf-font-display);font-weight:var(--hf-fw-semibold);letter-spacing:var(--hf-ls-display);line-height:1.1;margin:0}
.hf-h1{font-size:var(--hf-fs-display-l)} .hf-h2{font-size:var(--hf-fs-display-m)} .hf-h3{font-size:var(--hf-fs-title)}
.hf-eyebrow{font-family:var(--hf-font-mono);font-size:var(--hf-fs-xs);letter-spacing:var(--hf-ls-eyebrow);
  text-transform:uppercase;color:var(--hf-teal);margin:0 0 var(--hf-space-2)}
.hf-muted{color:var(--hf-muted)}
:where(.hf-root) :focus-visible{outline:2px solid var(--hf-focus);outline-offset:2px;border-radius:var(--hf-radius-sm)}

/* ---------- logo lockup ---------- */
.hf-lockup{display:inline-flex;align-items:center;gap:10px}
.hf-lockup .hf-mark{width:32px;height:32px;border-radius:8px;flex:none}
.hf-lockup .hf-word{font-family:var(--hf-font-display);font-weight:var(--hf-fw-semibold);font-size:19px;letter-spacing:-.01em}
.hf-lockup .hf-word b{color:var(--hf-teal)}

/* ---------- buttons ---------- */
.hf-btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--hf-font-sans);font-weight:var(--hf-fw-semibold);
  font-size:var(--hf-fs-sm);border-radius:var(--hf-radius-md);padding:11px 18px;border:1px solid transparent;cursor:pointer;
  transition:background var(--hf-dur-micro) var(--hf-ease-standard),transform var(--hf-dur-micro) var(--hf-ease-standard)}
.hf-btn:active{transform:translateY(1px)}
.hf-btn--primary{background:var(--hf-teal-btn);color:#fff}
.hf-btn--primary:hover{background:var(--hf-teal-dark)}
.hf-btn--ghost{background:transparent;color:var(--hf-teal);border-color:var(--hf-hairline)}
.hf-btn--ghost:hover{background:color-mix(in srgb,var(--hf-teal) 8%,transparent)}

/* ---------- inputs ---------- */
.hf-field{display:flex;flex-direction:column;gap:var(--hf-space-2)}
.hf-label{font-size:var(--hf-fs-sm);color:var(--hf-muted)}
.hf-input{font-family:var(--hf-font-sans);font-size:var(--hf-fs-body);color:var(--hf-ink);background:var(--hf-canvas);
  border:var(--hf-border);border-radius:var(--hf-radius-md);padding:10px 12px;min-height:44px}
.hf-input:focus-visible{outline:2px solid var(--hf-focus);outline-offset:1px;border-color:var(--hf-teal)}
.hf-input--num{font-family:var(--hf-font-mono);font-variant-numeric:tabular-nums;text-align:right}
/* slider + number-field pair (the calculator input pattern) */
.hf-slider-pair{display:flex;align-items:center;gap:12px}
.hf-slider-pair input[type=range]{flex:1;accent-color:var(--hf-teal);height:24px}
.hf-slider-pair .hf-pill{font-family:var(--hf-font-mono);font-variant-numeric:tabular-nums;font-size:var(--hf-fs-sm);
  border:var(--hf-border);border-radius:var(--hf-radius-sm);padding:8px 10px;min-width:104px;text-align:right;
  color:var(--hf-ink);background:var(--hf-surface)}
/* segmented control */
.hf-seg{display:flex;border:var(--hf-border);border-radius:var(--hf-radius-md);overflow:hidden}
.hf-seg button{flex:1;border:0;background:var(--hf-canvas);padding:9px;font-family:var(--hf-font-sans);
  font-size:var(--hf-fs-sm);color:var(--hf-muted);cursor:pointer;min-height:40px}
.hf-seg button[aria-pressed="true"],.hf-seg button.is-on{background:var(--hf-teal-btn);color:#fff}
.hf-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235B6B6A' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}

/* ---------- card ---------- */
.hf-card{background:var(--hf-canvas);border:var(--hf-border);border-radius:var(--hf-radius-lg);padding:var(--hf-space-5)}
.hf-card--raised{box-shadow:var(--hf-shadow-md)}

/* ---------- THE SIGNATURE: result + reconciled breakdown ("the shown figure") ---------- */
.hf-tool{border:var(--hf-border);border-radius:var(--hf-radius-xl);overflow:hidden;box-shadow:var(--hf-shadow-md);max-width:var(--hf-tool-maxw);
  background:linear-gradient(180deg,color-mix(in srgb,var(--hf-teal) 8%,var(--hf-canvas)) 0,var(--hf-canvas) 190px)}
.hf-tool__bar{display:flex;align-items:center;gap:9px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--hf-teal) 12%,var(--hf-hairline))}
.hf-tool__bar .hf-mark{width:24px;height:24px;border-radius:6px}
.hf-tool__bar .hf-t{font-family:var(--hf-font-display);font-weight:var(--hf-fw-semibold);font-size:15px}
.hf-result{padding:18px 20px 6px}
.hf-result__amt{font-family:var(--hf-font-mono);font-weight:var(--hf-fw-semibold);font-size:var(--hf-fs-result-xl);
  color:var(--hf-teal);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.hf-result__lab{font-size:var(--hf-fs-sm);color:var(--hf-muted)}
.hf-inputs{padding:6px 20px 16px;display:flex;flex-direction:column;gap:var(--hf-space-4)}
/* the reconciled breakdown — the mark, made real */
.hf-breakdown{border-top:var(--hf-border);padding:10px 20px 18px}
.hf-breakdown__row{display:flex;justify-content:space-between;align-items:baseline;padding:7px 0;font-size:var(--hf-fs-sm);border-bottom:var(--hf-border-dashed,1px dashed var(--hf-hairline))}
.hf-breakdown__row:last-child{border-bottom:0}
.hf-breakdown__k{color:var(--hf-muted)} .hf-breakdown__v{font-family:var(--hf-font-mono);font-variant-numeric:tabular-nums}
.hf-breakdown__v--neg{color:var(--hf-loss)}
.hf-breakdown__row--total{border-top:var(--hf-border-total);margin-top:3px;padding-top:11px;border-bottom:0}
.hf-breakdown__row--total .hf-breakdown__k{color:var(--hf-ink);font-weight:var(--hf-fw-semibold)}
.hf-breakdown__row--total .hf-breakdown__v{color:var(--hf-teal);font-weight:var(--hf-fw-semibold)}
/* reconcile bar viz (the logo motif as a data element) */
.hf-reconcile{display:flex;gap:3px;height:12px;margin:10px 0 4px}
.hf-reconcile i{display:block;border-radius:var(--hf-radius-pill);background:var(--hf-teal)}
.hf-reconcile i.is-ded{opacity:.42}

/* ---------- data table (schedules) ---------- */
.hf-table-wrap{overflow-x:auto;border:var(--hf-border);border-radius:var(--hf-radius-lg)}
.hf-table{width:100%;border-collapse:collapse;font-size:var(--hf-fs-sm)}
.hf-table th,.hf-table td{padding:10px 14px;text-align:right;border-bottom:var(--hf-border)}
.hf-table th:first-child,.hf-table td:first-child{text-align:left}
.hf-table thead th{font-family:var(--hf-font-mono);font-size:var(--hf-fs-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--hf-muted);background:var(--hf-surface)}
.hf-table td.hf-num{font-family:var(--hf-font-mono);font-variant-numeric:tabular-nums}
.hf-table tbody tr:last-child td{border-bottom:0}

/* ---------- answer-first block (GEO citation lever) ---------- */
.hf-answer{background:var(--hf-surface);border-left:3px solid var(--hf-teal);border-radius:0 var(--hf-radius-md) var(--hf-radius-md) 0;
  padding:14px 16px;font-size:var(--hf-fs-body)}
.hf-answer .hf-num{color:var(--hf-teal);font-weight:var(--hf-fw-semibold)}

/* ---------- methodology / source note (E-E-A-T + citation trust) ---------- */
.hf-source{font-size:var(--hf-fs-xs);color:var(--hf-muted);font-family:var(--hf-font-mono)}
.hf-source a{color:var(--hf-teal);text-decoration:underline}
.hf-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--hf-font-mono);font-size:var(--hf-fs-xs);
  letter-spacing:.04em;text-transform:uppercase;color:var(--hf-muted);border:var(--hf-border);border-radius:var(--hf-radius-pill);padding:4px 10px}
.hf-badge--verified{color:var(--hf-teal);border-color:color-mix(in srgb,var(--hf-teal) 40%,var(--hf-hairline))}
.hf-badge[hidden]{display:none}  /* the class display must not override the hidden attribute */

/* (legacy .hf-ad placeholder removed — tool pages now use the AdSlot house-unit frame) */

/* ---------- ledger texture ---------- */
.hf-ledger{background-image:repeating-linear-gradient(to bottom,transparent 0 23px,var(--hf-hairline) 23px 24px)}
