/* Self-hosted IBM Plex Mono (PQ-19): latin subsets at 400/500/600,
   ~15 KB per weight. No third-party request; the family stack keeps
   ui-monospace/SFMono/Menlo as metric-compatible local fallbacks. */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'Bebas Neue';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/bebas-neue-latin-400-normal.woff2) format('woff2')}
:root{--ink:#0b0b0a;--graphite:#17160f;--line:#2c2b22;--signal:#ff4f00;--signal-dim:#7a2600;--parchment:#ede7d8;--brass:#a9824f;--bone:#cfc9bb;--ash:#8e8878}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--ink);color:var(--bone);font-family:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace}
:focus-visible{outline:2px solid var(--signal)!important;outline-offset:3px}
/* Radio inputs are visually hidden; put the keyboard focus ring on the visible label. */
.opts input:focus-visible + label,.gate-opts input:focus-visible + label,.pick input:focus-visible + label{outline:2px solid var(--signal);outline-offset:3px}
.skip-link{position:fixed;left:1rem;top:1rem;z-index:9999;padding:.65rem 1rem;background:var(--parchment);color:var(--ink);transform:translateY(-200%)}
.skip-link:focus{transform:none}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.site-legal{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;margin-top:1rem}.site-legal a{color:var(--bone)}
.notice{border:1px solid var(--line);border-left:3px solid var(--signal);padding:12px 14px;margin:12px 0;color:var(--bone);background:var(--graphite);font-size:12px}
.hold-status-notice{border:1px solid var(--line);border-left:3px solid var(--signal);padding:12px 14px;margin:12px 0;color:var(--parchment);background:var(--graphite);font-size:12px;line-height:1.55}
.analytics-consent{position:fixed;z-index:9998;left:1rem;right:1rem;bottom:1rem;max-width:760px;margin:0 auto;padding:14px 16px;background:var(--graphite);color:var(--bone);border:1px solid var(--line);box-shadow:0 8px 32px #0009;font-size:12px;line-height:1.55}
.analytics-consent p{margin:0 0 10px}.analytics-consent a{color:var(--parchment)}
.analytics-consent-controls{display:flex;gap:10px;flex-wrap:wrap}
.analytics-consent button{font:inherit;color:var(--parchment);background:var(--ink);border:1px solid var(--line);padding:7px 11px;cursor:pointer}
.analytics-consent button:hover{border-color:var(--signal);color:var(--signal)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Shared thin-page styles (P2-13: annex-14, attribute-check, drift-14, settle-14) */
body.tool-thin{margin:0;line-height:1.6}
body.tool-thin main{max-width:760px;margin:auto;padding:48px 20px}
body.tool-thin .eyebrow{color:var(--signal);font-size:12px;letter-spacing:.15em}
body.tool-thin h1{color:var(--parchment);font-size:clamp(30px,7vw,54px);margin:.3rem 0}
body.tool-thin .intro{color:var(--ash)}
body.tool-thin fieldset{border:1px solid var(--line);margin:12px 0;padding:16px}
body.tool-thin legend{padding:0 8px}
body.tool-thin label{display:inline-block;margin-right:24px}
body.tool-thin button{background:var(--signal);color:var(--parchment);border:0;padding:14px 22px;font:inherit;cursor:pointer}
body.tool-thin button.submit{width:100%;margin-top:16px;padding:16px;letter-spacing:.12em;text-transform:uppercase}
body.tool-thin .progress{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--ash);letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px}
body.tool-thin .ruler{display:flex;gap:5px;align-items:flex-end;height:16px;margin-bottom:24px;border-bottom:1px solid var(--line);padding-bottom:3px}
body.tool-thin .ruler i{flex:1;max-width:16px;height:12px;background:var(--line);transition:background .15s ease}
body.tool-thin .ruler i.done{background:var(--signal)}
body.tool-thin #result{display:none;border:1px solid var(--brass);margin-top:24px;padding:24px}
body.tool-thin #result h2{font-size:15px;letter-spacing:.1em;text-transform:uppercase;color:var(--parchment);margin:0 0 14px}
body.tool-thin .scoreline{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:8px}
body.tool-thin #score{font-size:20px;font-weight:600;color:var(--parchment)}
body.tool-thin .tier{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--parchment);border:1px solid var(--brass);padding:4px 10px}
body.tool-thin #guidance{font-size:13px;color:var(--ash);line-height:1.65}
body.tool-thin .score-row{display:flex;justify-content:space-between;font-size:12px;color:var(--ash);margin:24px 0 4px;letter-spacing:.06em;text-transform:uppercase}
body.tool-thin .fields{list-style:none;margin:0;padding:0}
body.tool-thin .fields li{display:grid;grid-template-columns:3ch 1fr auto;gap:12px;font-size:12.5px;color:var(--bone);padding:8px 0;border-bottom:1px solid var(--line);align-items:baseline}
body.tool-thin .fields li .f-idx{color:var(--ash);font-variant-numeric:tabular-nums}
body.tool-thin .fields li .f-status{color:var(--ash);white-space:nowrap;font-size:11px;letter-spacing:.06em;text-transform:uppercase}
body.tool-thin .fields li.critical .f-status{color:var(--signal)}
body.tool-thin footer{margin-top:48px;border-top:1px solid var(--line);padding-top:20px;font-size:12px;color:var(--ash)}
body.tool-thin footer a{color:var(--bone)}

/* Seasonal palettes. The home page sets <html data-season> (see assets/home.js);
   the default block is autumn so pages without JS render the same palette.
   --fx-* feed the canvas particles, so the drawing code never hard-codes colors. */
:root{
  --season-accent:#d9822b;
  --season-accent-dim:#8a4a1c;
  --season-secondary:#3d5a2e;
  --season-terracotta:#b5532f;
  --season-glow:rgba(217,130,43,.28);
  --fx-1:#d9822b;--fx-2:#b5532f;--fx-3:#e9b949;--fx-4:#6b3a1f;
  --glass-bg:rgba(23,22,15,.46);
  --glass-line:rgba(237,231,216,.14);
  --scrim:rgba(11,11,10,.55);
}
:root[data-season="autumn"]{
  --season-accent:#d9822b;
  --season-accent-dim:#8a4a1c;
  --season-secondary:#3d5a2e;
  --season-terracotta:#b5532f;
  --season-glow:rgba(217,130,43,.28);
  --fx-1:#d9822b;--fx-2:#b5532f;--fx-3:#e9b949;--fx-4:#6b3a1f;
}
:root[data-season="winter"]{
  --season-accent:#9fd6ef;
  --season-accent-dim:#2f5b72;
  --season-secondary:#5f7f99;
  --season-terracotta:#7fa9c4;
  --season-glow:rgba(159,214,239,.26);
  --fx-1:#e8f6ff;--fx-2:#9fd6ef;--fx-3:#c9e7f7;--fx-4:#ffffff;
}
:root[data-season="spring"]{
  --season-accent:#9cd08f;
  --season-accent-dim:#3f6e3c;
  --season-secondary:#e9b8c4;
  --season-terracotta:#e9b8c4;
  --season-glow:rgba(156,208,143,.24);
  --fx-1:#f4c9d4;--fx-2:#fbe3ea;--fx-3:#9cd08f;--fx-4:#e9f3c4;
}
:root[data-season="summer"]{
  --season-accent:#e9b949;
  --season-accent-dim:#8a6417;
  --season-secondary:#2f7f86;
  --season-terracotta:#d98a3a;
  --season-glow:rgba(233,185,73,.26);
  --fx-1:#f6d36b;--fx-2:#e9b949;--fx-3:#fff1b8;--fx-4:#d98a3a;
}
