:root { --bg:#090c10; --surface:#10161d; --surface-2:#151d26; --line:#283540; --muted:#95a3ae; --text:#e9eff3; --accent:#55d2e5; --danger:#ff7280; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; background:var(--bg); }
body { margin:0; min-width:320px; overflow-x:hidden; background:var(--bg); color:var(--text); font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace; line-height:1.5; }
a { color:inherit; text-decoration-color:#3d8490; text-underline-offset:.22em; } a:hover,a:focus-visible { color:var(--accent); }
.masthead, main, footer { width:min(1180px,calc(100% - 40px)); margin:auto; }
.masthead { min-height:82px; display:flex; align-items:center; justify-content:space-between; gap:24px; border-bottom:1px solid var(--line); }
.wordmark { display:inline-flex; align-items:center; min-height:44px; gap:9px; font-weight:800; letter-spacing:.14em; text-decoration:none; font-size:14px; } .wordmark span { display:grid; place-items:center; width:24px; height:24px; background:var(--accent); color:#061116; letter-spacing:0; }
nav { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:18px; font-size:12px; color:var(--muted); } nav a { text-decoration:none; display:inline-flex; align-items:center; min-height:44px; }
.section { padding:clamp(64px,11vw,150px) 0; border-bottom:1px solid var(--line); }.kicker { margin:0 0 12px; color:var(--accent); font-size:11px; font-weight:700; letter-spacing:.13em; }
.hero { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(400px,.9fr); gap:clamp(40px,7vw,96px); align-items:center; min-height:calc(100vh - 82px); padding-top:48px; }
h1,h2,p { margin-top:0; } h1 { max-width:11ch; margin-bottom:28px; font-size:clamp(3.1rem,7.3vw,6.5rem); letter-spacing:-.075em; line-height:.9; } h2 { margin-bottom:15px; font-size:clamp(2rem,4.3vw,4.15rem); letter-spacing:-.06em; line-height:.95; }.lede { max-width:59ch; font-family:system-ui,sans-serif; font-size:clamp(1rem,1.3vw,1.18rem); line-height:1.65; color:#ccd6dc; }.secondary { color:var(--muted); font-size:.98rem; }
    .measured-control { max-width:59ch; min-height:258px; margin:0 0 32px; padding:18px; border:1px solid var(--accent); background:linear-gradient(145deg,#101d24,var(--surface)); box-shadow:inset 0 0 0 1px rgba(85,210,229,.08); }.measured-control h2 { margin-bottom:18px; font-size:clamp(1.65rem,2.5vw,2.55rem); }.control-figures { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }.control-figure { min-width:0; padding:10px; border:1px solid #3c5360; background:#0b1117; }.control-figure b,.control-figure small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.control-figure b { color:var(--accent); font-size:clamp(1.1rem,2vw,1.65rem); line-height:1.1; font-variant-numeric:tabular-nums; }.control-figure small,.control-ratio,.control-explanation { font-family:system-ui,sans-serif; }.control-figure small { margin-top:5px; color:var(--muted); font-size:10px; line-height:1.35; }.control-ratio { min-height:24px; margin:14px 0 10px; color:var(--text); font-size:14px; font-weight:700; }.control-explanation { margin:0; color:var(--muted); font-size:12px; line-height:1.5; }
    .revocation-claim { max-width:59ch; margin:0 0 32px; padding:18px; border:1px solid #2f7f8f; background:linear-gradient(145deg,#0f1f28,var(--surface)); }.revocation-claim h2 { margin-bottom:18px; font-size:clamp(1.25rem,2vw,2.2rem); line-height:1.02; } .revocation-figures { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; margin:16px 0 12px; }.revocation-figure { min-width:0; padding:10px; border:1px solid #335969; background:#0b1218; }.revocation-figure b,.revocation-figure small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#f0f6fa; }.revocation-figure b { color:var(--accent); font-size:clamp(1.05rem,1.8vw,1.5rem); line-height:1.1; font-variant-numeric:tabular-nums; }.revocation-figure small,.revocation-explanation { font-family:system-ui,sans-serif; }.revocation-figure small { margin-top:5px; color:var(--muted); font-size:10px; line-height:1.35; }.revocation-explanation { margin:0; color:var(--muted); font-size:12px; line-height:1.5; }
    .derivation { padding:18px; border:1px solid var(--line); background:linear-gradient(145deg,var(--surface),#0d1218); }.derivation-head,.code-title { display:flex; justify-content:space-between; gap:14px; color:var(--muted); font-size:10px; letter-spacing:.1em; }.baseline { margin:30px 0 17px; }.witness { position:relative; min-width:0; display:flex; align-items:center; gap:10px; border:1px solid #3c5360; background:#121b23; padding:12px; }.node { flex:0 0 auto; display:grid; place-items:center; width:25px; height:25px; border:1px solid var(--accent); color:var(--accent); font-size:11px; }.identity { display:grid; grid-template-columns:repeat(4,1fr); flex:1; gap:6px; text-transform:uppercase; font-size:10px; }.identity b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.tag { color:var(--accent); font-size:9px; letter-spacing:.08em; }.witness-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; position:relative; }.variant { min-height:64px; flex-wrap:wrap; align-content:center; font-size:12px; }.variant small { width:100%; padding-left:35px; color:var(--muted); font-size:9px; letter-spacing:.08em; }.derivation-note { margin:17px 0 0; color:var(--muted); font-size:11px; line-height:1.55; }
/* Stacked, not split. Side by side, a two-word kicker wrapped to two lines in a
   narrow left column while the heading ran wide beside it, which read as a
   layout accident rather than a label. */
.section-heading { display:block; margin-bottom:22px; }
.section-heading .kicker { margin-bottom:14px; }.section-intro { max-width:68ch; color:var(--muted); font-family:system-ui,sans-serif; line-height:1.65; }.app-gallery { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; min-height:137px; margin-top:32px; }.gallery-loading,.gallery-fallback { grid-column:1/-1; display:grid; place-items:center; margin:0; border:1px solid var(--line); background:var(--surface); color:var(--muted); font-size:12px; }.app-card { position:relative; min-width:0; border:1px solid var(--line); background:var(--surface); }.app-card.is-selected { border-color:var(--accent); box-shadow:inset 0 0 0 1px rgba(85,210,229,.16); }.app-card.is-control { border-color:#41616a; background:linear-gradient(145deg,#101a20,var(--surface)); }.app-select { display:block; width:100%; min-height:135px; padding:15px 14px 35px; border:0; background:transparent; color:var(--text); font:inherit; text-align:left; cursor:pointer; }.app-select:hover { background:#141e26; }.app-select:focus-visible,.app-live:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; }.app-name,.app-count { display:block; }.app-name { font-size:13px; font-weight:800; letter-spacing:.04em; }.app-count { margin-top:7px; color:var(--accent); font-size:11px; font-variant-numeric:tabular-nums; }.app-kinds { display:block; margin-top:8px; color:var(--muted); font-size:10px; line-height:1.45; }.app-control-note { display:block; margin-top:7px; color:#b7d4da; font-size:10px; line-height:1.35; }.app-live { position:absolute; right:13px; bottom:12px; color:var(--muted); font-size:10px; text-decoration:none; }.app-live:hover { color:var(--accent); }.wall-frame { margin-top:18px; border:1px solid var(--line); background:#070a0d; padding:8px; box-shadow:0 28px 75px rgba(0,0,0,.25); }.wall-frame iframe { display:block; width:100%; height:min(880px,86vw); min-height:510px; border:0; background:#090d12; }.feed-status,.table-note { margin:13px 0 0; color:var(--muted); font-size:11px; }.feed-status code,.table-note code { color:var(--accent); }
.scoreboard-wrap { overflow-x:auto; border:1px solid var(--line); background:var(--surface); margin-top:33px; } table { width:100%; min-width:630px; border-collapse:collapse; text-align:left; } th,td { padding:20px; border-bottom:1px solid var(--line); } th { color:var(--muted); font-size:10px; letter-spacing:.1em; font-weight:600; } td { font-size:13px; } td:first-child { font-weight:700; } td:not(:first-child) { font-variant-numeric:tabular-nums; } .not-run { color:var(--muted); font-size:11px; }.control { color:var(--accent); }
    .code-panel { margin-top:32px; border:1px solid var(--line); background:#0b1015; overflow:hidden; }.code-title { padding:13px 16px; border-bottom:1px solid var(--line); } pre { margin:0; overflow:auto; padding:20px; color:#d6e3e8; font:12px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; } code { font-family:inherit; }
    .generated-spec-summary { margin-top:26px; border:1px solid var(--line); background:linear-gradient(145deg,#0d151d,var(--surface)); padding:14px; } .generated-spec-figures { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; margin-bottom:12px; } .generated-spec-figure { min-width:0; padding:10px; border:1px solid #314856; background:#0b1117; } .generated-spec-figure b,.generated-spec-figure small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#f0f6fa; } .generated-spec-figure b { color:var(--accent); font-size:clamp(.98rem,1.6vw,1.35rem); line-height:1.1; font-variant-numeric:tabular-nums; } .generated-spec-figure small { margin-top:5px; color:var(--muted); font-size:10px; line-height:1.35; } .generated-spec-figure, .generated-spec-summary .section-intro { font-family:system-ui,sans-serif; }
footer { display:flex; align-items:flex-end; justify-content:space-between; gap:32px; padding:46px 0 58px; }.footer-links { display:flex; flex-wrap:wrap; gap:12px 20px; font-size:12px; }.repo-link { flex:0 0 auto; color:var(--accent); font-size:12px; }
    @media (max-width:820px) { .hero { grid-template-columns:1fr; min-height:0; }.hero-copy { max-width:720px; }.app-gallery { grid-template-columns:repeat(2,minmax(0,1fr)); }.wall-frame iframe { height:650px; }.masthead { min-height:72px; }.section { padding-block:78px; } .revocation-figures { grid-template-columns:repeat(2,minmax(0,1fr)); } .generated-spec-figures { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:520px) { .masthead,main,footer { width:min(100% - 28px,1180px); }.masthead { align-items:flex-start; flex-direction:column; padding:17px 0; gap:13px; } nav { justify-content:flex-start; gap:13px; }.hero { padding-top:45px; }.section { padding-block:62px; } h1 { font-size:clamp(2.9rem,16vw,4.3rem); }.measured-control { min-height:294px; padding:14px; }.control-figures { gap:6px; }.control-figure { padding:8px; }.control-figure small { font-size:9px; white-space:normal; }.witness { flex-wrap:wrap; }.identity { grid-template-columns:repeat(2,1fr); }.tag { flex:1 0 100%; padding-inline-start:35px; }.witness-grid { grid-template-columns:1fr; }.app-gallery { grid-template-columns:1fr; }.app-select { min-height:120px; }.wall-frame { margin-inline:-14px; }.wall-frame iframe { height:560px; min-height:0; }.section-heading { display:block; } th,td { padding:15px; } footer { align-items:flex-start; flex-direction:column; gap:28px; } pre { font-size:10px; padding:14px; } }
@media (prefers-reduced-motion:no-preference) { .variant { animation:pulse-axis 8s ease-in-out infinite; } .variant:nth-child(2){animation-delay:1.3s}.variant:nth-child(3){animation-delay:2.6s}.variant:nth-child(4){animation-delay:3.9s}.variant:nth-child(5){animation-delay:5.2s}.variant:nth-child(6){animation-delay:6.5s} @keyframes pulse-axis { 0%,13%,100% { border-color:#3c5360; box-shadow:none; } 4%,9% { border-color:var(--accent); box-shadow:0 0 0 1px rgba(85,210,229,.25),0 0 25px rgba(85,210,229,.11); } } }


/* Every interactive target reaches the 44px minimum Parallax itself enforces.
   Its own front page failed that check at 390px — fifteen links between 15 and
   24 pixels tall — which is the one defect a tool that reports it cannot have.
   The boxes grow; the type and spacing do not move. */
.app-live { display:inline-flex; align-items:center; min-height:44px; }
.footer-links a, .repo-link { display:inline-flex; align-items:center; min-height:44px; }
/* A target 43px wide fails by one pixel, which is the same failure as 20. */
nav a, .footer-links a, .repo-link { min-width:44px; justify-content:center; }


/* ------------------------------------------------------------------ hero CTA */
.hero-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:34px; }
.button { display:inline-flex; align-items:center; justify-content:center; min-height:48px; padding:0 22px;
  border:1px solid var(--accent); background:var(--accent); color:#04252b; font:800 12px/1 ui-monospace,monospace;
  letter-spacing:.08em; text-decoration:none; }
.button:hover,.button:focus-visible { background:#6fdcec; color:#04252b; }
.button.ghost { background:transparent; color:var(--accent); }
.button.ghost:hover,.button.ghost:focus-visible { background:#12242c; color:var(--accent); }

/* --------------------------------------------------------------- 02 evidence */
.evidence-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-top:38px; align-items:start; }
.evidence-card { display:flex; flex-direction:column; min-width:0; padding:20px; border:1px solid var(--line);
  background:linear-gradient(160deg,var(--surface),#0c1116); }
/* The two multi-session cards are the argument; the border says so without a
   badge that would have to be explained. */
.evidence-card.is-key { border-color:#3d7f8d; background:linear-gradient(160deg,#101f27,#0c1116); }
.evidence-card h3 { margin:0 0 12px; font-size:clamp(1.15rem,1.7vw,1.5rem); letter-spacing:-.03em; line-height:1.15; }
.evidence-card p { margin:0 0 14px; color:#c3d0d8; font-family:system-ui,sans-serif; font-size:13.5px; line-height:1.62; }
.evidence-card code { color:var(--accent); }
.finding { margin:0 0 14px; padding:13px; border:1px solid #2c3d49; border-left:3px solid var(--accent);
  background:#080d12; overflow-x:auto; }
.finding code { display:block; color:#cfe6ec; font:11.5px/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  white-space:pre; }
.evidence-note { margin-top:auto; color:var(--muted) !important; font-size:12.5px !important; }
.evidence-note b { color:var(--accent); font-variant-numeric:tabular-nums; }
.evidence-links { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 0 !important; }
.evidence-links a { display:inline-flex; align-items:center; min-height:44px; padding:0 12px; border:1px solid #33505d;
  color:var(--muted); font:700 10.5px/1 ui-monospace,monospace; letter-spacing:.06em; text-decoration:none; }
.evidence-links a:hover,.evidence-links a:focus-visible { border-color:var(--accent); color:var(--accent); }

/* ------------------------------------------------------- 03 measured control */
.measured-control { max-width:none; min-height:0; margin:34px 0 0; }
.measured-control h3 { margin:0 0 18px; font-size:clamp(1.4rem,2.2vw,2rem); letter-spacing:-.04em; }

/* ------------------------------------------------------------ 04 revocation */
.plane-row { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:34px 0 26px; }
.plane { min-width:0; padding:16px; border:1px solid #2c4450; background:#0b1218; }
.plane b { display:block; font-size:15px; letter-spacing:-.01em; }
.plane small { display:block; margin-top:8px; color:var(--muted); font-family:system-ui,sans-serif; font-size:11.5px; line-height:1.5; }
.plane.is-pass b { color:#7fd8a4; }
.plane.is-pass::after,.plane.is-fail::after { display:block; margin-top:12px; font:700 10px/1 ui-monospace,monospace; letter-spacing:.1em; }
.plane.is-pass::after { content:"PASSED"; color:#7fd8a4; }
/* The one that fails is the whole section, so it is the only thing coloured
   like a finding. */
.plane.is-fail { border-color:var(--danger); background:linear-gradient(150deg,#1d0f13,#0b1218); }
.plane.is-fail b { color:var(--danger); }
.plane.is-fail::after { content:"FAILED"; color:var(--danger); }

/* ---------------------------------------------------------------- 05 gallery */
/* Sweeps of real applications sit beside the demo fleet and are marked, because
   "found this on a site nobody built for us" is a different claim. */
.app-card.is-external { border-color:#5a4a2e; background:linear-gradient(150deg,#1a1509,var(--surface)); }
.app-card.is-external .app-count { color:#e0b969; }
.app-badge { display:block; margin-top:8px; color:#e0b969; font-size:10px; letter-spacing:.06em; }

@media (max-width:1040px) {
  .evidence-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .plane-row { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:820px) {
  .evidence-grid { grid-template-columns:1fr; }
}
@media (max-width:520px) {
  .plane-row { grid-template-columns:1fr; }
  .hero-actions .button { flex:1 1 100%; }
}


/* Parallax reported this against its own front page: the label naming the
   baseline row was display:none under 520px, so a phone was told less than a
   desktop. The row wraps and keeps the label instead — hiding content is the
   defect, and shrinking it would only have moved the threshold. */

.host-note { max-width:64ch; margin:14px 0 0; color:var(--muted); font-family:system-ui,sans-serif; font-size:12px; line-height:1.6; }
.host-note code { color:var(--accent); }
/* Inline links in the note are still tap targets; 16px tall failed the same
   rule this page advertises, on this page. */
.host-note a { color:var(--accent); display:inline-flex; align-items:center; min-height:44px; }

.hero-note { max-width:62ch; margin:16px 0 0; color:var(--muted); font-family:system-ui,sans-serif; font-size:12.5px; line-height:1.6; }
