/* APTAVIA 2.0 · public street · error sheet (run 5, part p1b). GENERATED by scripts/dev/public/build-p1b-sheets.mjs from walk/error-page/error.css, verbatim; never hand-edit. */
/* spine.css §15 (R7 reading tokens) · her reading material is serif */
:root { --r7-w-read: 400; --r7-w-body: 500; --r7-w-label: 650; --r7-w-title: 760; --r7-ui: var(--pub-font); --r7-serif: 'Newsreader', 'Newsreader Fallback', Georgia, serif; }
:where([data-reading]:not([data-reading="sans"])) { font-family: var(--r7-serif); font-weight: var(--r7-w-read); }
:where([data-reading="sans"]) { font-family: var(--r7-ui); }
/* =============================================================================
   APTAVIA 2.0 · walk · round 12 (D6) · trust-page + error-page — on top of shared/public-shell.css.
   THE PLAQUE ON THE GATEPOST: a stone pillar with its lamp, a low wall, a brass-rimmed glass plaque set into it. The plaque's
   tabs are the house's public record; its face carries the one thing the page must prove. The reading column below is the
   kit's (serif, contents rail). Dark first; light = the same street by day, in ink. Tokens + oklch only; motion plays once
   (opacity + translate), never a loop or a scale.
   ============================================================================= */

/* ---------------------------------------------------------------- 0 · tokens */
.tp {
  --tp-stone: oklch(0.320 0.013 62); --tp-stone-lo: oklch(0.285 0.012 58); --tp-course: oklch(0.16 0.012 50 / .55); --tp-stone-hi: oklch(0.52 0.02 72 / .45);
  --tp-cap: oklch(0.40 0.016 66); --tp-iron: oklch(0.17 0.01 60); --tp-lglass: oklch(0.93 0.09 86 / .92); --tp-bulb: oklch(0.97 0.07 90);
  --tp-glass: linear-gradient(160deg, oklch(0.34 0.03 285 / .62), oklch(0.22 0.022 280 / .74) 55%, oklch(0.20 0.02 278 / .80));
  --tp-rim: var(--pub-brass); --tp-rim-soft: oklch(0.74 0.085 82 / .22);
  --tp-screw: radial-gradient(circle at 40% 35%, oklch(0.9 0.08 86), oklch(0.62 0.08 78) 60%, oklch(0.42 0.05 70));
  --tp-ok: oklch(0.82 0.15 152); --tp-ok-glow: 0 0 0 3px oklch(0.82 0.15 152 / .16), 0 0 14px oklch(0.82 0.15 152 / .55);
  --tp-amber: oklch(0.83 0.12 75); --tp-amber-wash: oklch(0.83 0.12 75 / .12);
  --tp-tab-on: oklch(0.20 0.02 60);
  --tp-ui: 600 13px/1.3 var(--pub-font);
}
html:not(.dark) .tp {
  --tp-stone: oklch(0.925 0.008 80); --tp-stone-lo: oklch(0.89 0.009 78); --tp-course: color-mix(in srgb, var(--sp-ink) 22%, transparent); --tp-stone-hi: oklch(1 0 0);
  --tp-cap: oklch(0.96 0.006 82); --tp-iron: color-mix(in srgb, var(--sp-ink) 88%, transparent); --tp-lglass: oklch(0.97 0.01 85); --tp-bulb: oklch(0.99 0.004 85);
  --tp-glass: linear-gradient(160deg, oklch(1 0 0), oklch(0.985 0.004 85));
  --tp-rim: color-mix(in srgb, var(--sp-ink) 70%, transparent); --tp-rim-soft: color-mix(in srgb, var(--sp-ink) 10%, transparent);
  --tp-screw: radial-gradient(circle at 40% 35%, oklch(1 0 0), color-mix(in srgb, var(--sp-ink) 45%, transparent));
  --tp-ok: oklch(0.52 0.14 152); --tp-ok-glow: 0 0 0 3px oklch(0.52 0.14 152 / .14);
  --tp-amber: oklch(0.50 0.12 62); --tp-amber-wash: oklch(0.60 0.12 70 / .10);
  --tp-tab-on: oklch(1 0 0);
}

/* ---------------------------------------------------------------- 1 · the hero: copy left, the gatepost right */
.tp-hero .pub-hero-copy { align-self: center; }
@media (min-width: 900px) { .tp-hero[data-pub-arrive] { min-height: max(640px, 100svh); grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); } }
.tp-arrow { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

.tp-pic { display: grid; grid-template-columns: clamp(80px, 8vw, 124px) minmax(0, 1fr); align-items: end; column-gap: 0; max-width: 800px; }
.tp-pillar { grid-column: 1; width: 100%; height: auto; display: block; overflow: visible; position: relative; z-index: 2; }
.tp-stone { fill: var(--tp-stone); } .tp-course { fill: none; stroke: var(--tp-course); stroke-width: 1.4; } .tp-stone-hi { fill: none; stroke: var(--tp-stone-hi); stroke-width: 1.2; }
.tp-cap { fill: var(--tp-cap); } .tp-cap-face { fill: var(--tp-stone-lo); }
.tp-iron { fill: var(--tp-iron); } .tp-lglass { fill: var(--tp-lglass); } .tp-bulb { fill: var(--tp-bulb); }
.tp-s-h0 { stop-color: var(--pub-lamp); stop-opacity: .55; } .tp-s-h1 { stop-color: var(--pub-lamp); stop-opacity: .16; } .tp-s-h2 { stop-color: var(--pub-lamp); stop-opacity: 0; }
html:not(.dark) .tp-halo { display: none; }
html:not(.dark) .tp-lglass { stroke: var(--tp-iron); stroke-width: 1.4; }

.tp-mount { grid-column: 2; position: relative; padding: 46px clamp(14px, 2vw, 26px) clamp(40px, 7svh, 72px) 22px; margin-left: -10px; }
.tp-wall { position: absolute; left: 0; right: -40px; bottom: 0; top: 120px; width: calc(100% + 40px); height: calc(100% - 120px); display: block; z-index: 0;
  -webkit-mask-image: linear-gradient(90deg, black 78%, transparent); mask-image: linear-gradient(90deg, black 78%, transparent); }
.tp-wall-face { fill: var(--tp-stone-lo); } .tp-wall-cap { fill: var(--tp-cap); } .tp-wall-hi { stroke: var(--tp-stone-hi); stroke-width: 1.5; }
html:not(.dark) .tp-wall-face { fill: var(--tp-stone); }
/* the lamp's light raking across the wall (dark only) */
.tp-mount::before { content: ""; position: absolute; z-index: 0; left: -80px; top: 40px; width: 70%; height: 90%; pointer-events: none; border-radius: 50%;
  background: radial-gradient(closest-side, oklch(0.86 0.11 78 / .20), oklch(0.86 0.11 78 / .05) 65%, transparent); }
html:not(.dark) .tp-mount::before { display: none; }

/* the plaque: liquid glass in a brass rim, four screws, the lamp's warmth across its top-left */
.tp-plaque { position: relative; z-index: 1; border-radius: 18px; padding: 14px clamp(16px, 1.8vw, 24px) 16px; background: var(--tp-glass);
  -webkit-backdrop-filter: blur(14px) saturate(140%); backdrop-filter: blur(14px) saturate(140%);
  box-shadow: inset 0 0 0 1.5px var(--tp-rim), inset 0 0 0 6px var(--tp-rim-soft), inset 1px 2px 0 6px var(--pub-spec), 0 30px 60px -30px oklch(0.03 0.01 280 / .95), 0 3px 10px -4px oklch(0.03 0.01 280 / .6); }
html:not(.dark) .tp-plaque { box-shadow: inset 0 0 0 1.5px var(--tp-rim), inset 0 0 0 6px var(--tp-rim-soft), 0 1px 1px color-mix(in srgb, var(--sp-ink) 12%, transparent), 0 18px 34px -22px color-mix(in srgb, var(--sp-ink) 50%, transparent); }
.tp-plaque::before { content: ""; position: absolute; inset: 9px; pointer-events: none; border-radius: 12px;
  background: var(--tp-screw) left top / 9px 9px no-repeat, var(--tp-screw) right top / 9px 9px no-repeat, var(--tp-screw) left bottom / 9px 9px no-repeat, var(--tp-screw) right bottom / 9px 9px no-repeat; opacity: .85; }
.tp-glow { position: absolute; left: -60px; top: -70px; width: 360px; height: 300px; pointer-events: none; border-radius: 50%;
  background: radial-gradient(closest-side, oklch(0.86 0.11 78 / .22), oklch(0.86 0.11 78 / .06) 60%, transparent); }
html:not(.dark) .tp-glow { display: none; }
.tp-screw { display: none; }

.tp-tabs { position: relative; display: flex; flex-wrap: wrap; gap: 4px; padding: 0 6px 12px; border-bottom: 1px solid var(--pub-edge); }
.tp-tab { display: inline-flex; align-items: center; min-height: 38px; padding: 0 14px; font-size: 14px !important; border-radius: 999px; font: var(--tp-ui); letter-spacing: .01em; color: var(--pub-muted); text-decoration: none; transition: color .2s, background-color .2s; }
.tp-tab:hover { color: var(--pub-ink); background: var(--pub-field); }
.tp-tab[aria-current="page"] { color: var(--tp-tab-on); background: var(--tp-rim); box-shadow: inset 0 1px 0 oklch(1 0 0 / .35); }
html:not(.dark) .tp-tab[aria-current="page"] { background: var(--sp-ink); }
.tp-face { position: relative; padding: 14px 6px 0; }
.tp-title { margin: 0 0 4px; font: 650 12px/1.3 var(--pub-font); letter-spacing: .14em; text-transform: uppercase; color: var(--pub-brass); }
.tp-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 12px 0 0; font: 500 13px/1.35 var(--pub-font); color: var(--pub-muted); }
.tp-mono { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: .92em; }

/* engraved rows */
.tp-rows { margin: 0; }
.tp-row { display: grid; grid-template-columns: minmax(84px, 140px) minmax(0, 1fr) auto; align-items: baseline; column-gap: 14px; padding: 12px 0; border-bottom: 1px dashed var(--pub-edge); color: inherit; text-decoration: none; }
.tp-row:last-child { border-bottom: 0; }
.tp-k { font: 650 12px/1.3 var(--pub-font); letter-spacing: .12em; text-transform: uppercase; color: var(--pub-brass); }
.tp-v { margin: 0; font: 620 19px/1.35 var(--pub-font); color: var(--pub-ink); letter-spacing: -.005em; }
.tp-v a { color: inherit; text-decoration: underline; text-decoration-color: var(--pub-lamp); text-underline-offset: 3px; }
.tp-row .tp-arrow { width: 16px; height: 16px; color: var(--pub-muted); align-self: center; transition: translate .2s var(--pub-ease), color .2s; }
a.tp-row:hover .tp-v { text-decoration: underline; text-decoration-color: var(--pub-lamp); text-underline-offset: 4px; }
a.tp-row:hover .tp-arrow { color: var(--pub-lamp); translate: 3px 0; }
.tp-rows--record .tp-row { grid-template-columns: minmax(96px, 140px) minmax(0, 1fr); }
.tp-row:has(> .tp-k:empty) { grid-template-columns: minmax(0, 1fr) auto; }
.tp-row > .tp-k:empty { display: none; }

/* calibration: three published figures as instruments */
.tp-figs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding-top: 4px; }
.tp-fig { display: flex; flex-direction: column; gap: 4px; padding: 12px 12px 8px; border-radius: 14px; color: inherit; text-decoration: none; background: var(--pub-field); box-shadow: inset 0 0 0 1px var(--pub-edge); transition: box-shadow .2s; }
.tp-fig:hover { box-shadow: inset 0 0 0 1px var(--pub-lamp); }
.tp-fig-v { font: 760 36px/1 var(--pub-font); letter-spacing: -.02em; color: var(--pub-ink); font-variant-numeric: tabular-nums; }
.tp-fig-k { min-height: 2.6em; font: 600 13px/1.3 var(--pub-font); color: var(--pub-body); }
.tp-ins { width: 100%; height: auto; display: block; margin-top: 2px; }
.tp-ins-axis { stroke: var(--pub-edge-strong); stroke-width: 1.5; fill: none; }
.tp-ins-tick { stroke: var(--pub-muted); stroke-width: 1.4; fill: none; opacity: .7; } .tp-ins-tick--0 { stroke: var(--pub-lamp); opacity: 1; }
.tp-ins-band { stroke: var(--pub-lamp); stroke-width: 7; stroke-linecap: round; opacity: .28; fill: none; }
.tp-ins-dot { fill: var(--pub-lamp); } .tp-ins-dot--b { fill: var(--pub-brass); }
.tp-ins-ghost { fill: none; stroke: var(--pub-lamp); stroke-width: 1.4; opacity: .7; }
.tp-ins-sq { fill: var(--pub-lamp); opacity: .85; } .tp-ins-sq--off { fill: none; stroke: var(--pub-muted); stroke-width: 1; opacity: .9; }
.tp-amber { display: inline-flex; align-items: center; min-height: 28px; padding: 0 10px; border-radius: 999px; font: 650 12px/1 var(--pub-font); letter-spacing: .06em; text-transform: uppercase; color: var(--tp-amber); background: var(--tp-amber-wash); box-shadow: inset 0 0 0 1px var(--tp-amber); text-decoration: none; }

/* calibration · practice questions: the band */
.tp-band-wrap { padding: 2px 0 2px; }
.tp-bandfig { width: 100%; height: auto; display: block; }
.tp-band { fill: oklch(0.86 0.11 78 / .30); stroke: var(--pub-lamp); stroke-width: 1.5; }
.tp-band-wide { fill: none; stroke: var(--pub-lamp); stroke-width: 1.2; stroke-dasharray: 4 4; opacity: .65; }
.tp-band-pin { stroke: var(--pub-lamp); stroke-width: 1.5; }
html:not(.dark) .tp-band { fill: color-mix(in srgb, var(--sp-ink) 8%, transparent); }

/* engine */
.tp-eng-top { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 4px 0 10px; border-bottom: 1px dashed var(--pub-edge); }
.tp-eng-name { font: 760 28px/1.15 var(--pub-font); letter-spacing: -.02em; color: var(--pub-ink); }
.tp-delta { display: inline-flex; align-items: center; min-height: 26px; padding: 0 9px; border-radius: 999px; font: 650 12px/1 var(--pub-font); color: var(--tp-ok); background: color-mix(in srgb, var(--tp-ok) 13%, transparent); }
.tp-row--seats { grid-template-columns: minmax(96px, 150px) minmax(0, 1fr) auto; align-items: center; }
.tp-seats { display: flex; flex-wrap: wrap; gap: 6px; }
.tp-seat { display: inline-flex; align-items: center; min-height: 28px; padding: 0 11px; border-radius: 999px; font: 600 13px/1 var(--pub-font); color: var(--pub-ink); background: var(--pub-field); box-shadow: inset 0 0 0 1px var(--pub-edge-strong); }

/* status: the lamps */
.tp-lamp { display: inline-block; flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--tp-ok); box-shadow: var(--tp-ok-glow); }
.tp-lamp--big { width: 14px; height: 14px; }
.tp-lampline { display: inline-flex; align-items: center; gap: 8px; color: var(--pub-ink); font-weight: 650; }
.tp-overall { display: flex; align-items: center; gap: 12px; margin: 2px 0 6px; font: 720 26px/1.2 var(--pub-font); letter-spacing: -.015em; color: var(--pub-ink); }
.tp-row--lamp { grid-template-columns: 10px minmax(0, 1fr) auto auto; align-items: center; }
.tp-row--lamp .tp-v { font-size: 16px; }
.tp-state { font: 650 13px/1.2 var(--pub-font); color: var(--tp-ok); }

/* arrival: the lamp lights, then the plaque's lines are set in, one by one — once */
html.pub-arrive [data-pub-arrive] :is(.tp-row, .tp-fig, .tp-eng-top, .tp-overall, .tp-band-wrap, .tp-glow, .tp-halo) { opacity: 0; }
html.pub-arrive [data-pub-arrive] :is(.tp-row, .tp-fig, .tp-eng-top, .tp-overall, .tp-band-wrap) { translate: 0 6px; }
html.pub-arrive.pub-go [data-pub-arrive] :is(.tp-row, .tp-fig, .tp-eng-top, .tp-overall, .tp-band-wrap) { opacity: 1; translate: 0 0;
  transition: opacity .6s var(--pub-ease), translate .6s var(--pub-ease); transition-delay: calc(.7s + var(--i, 0) * .12s); }
html.pub-arrive.pub-go [data-pub-arrive] :is(.tp-glow, .tp-halo) { opacity: 1; transition: opacity 1.1s var(--pub-ease) .35s; }
html.pub-arrive [data-pub-arrive] .tp-band { opacity: 0; }
html.pub-arrive.pub-go [data-pub-arrive] .tp-band { opacity: 1; transition: opacity .8s var(--pub-ease) 1.2s; }

/* ---------------------------------------------------------------- 2 · the reading column (kit's .pub-read) */
.tp-read { position: relative; }
.tp-crumbs { margin-bottom: 18px; }
.tp-kick { margin: 0 0 10px; font: 650 12px/1.3 var(--pub-font); letter-spacing: .16em; text-transform: uppercase; color: var(--pub-brass); }
.tp-stand { font-size: 21px; line-height: 1.6; color: var(--pub-ink); }
.tp-small { font: 500 15px/1.6 var(--pub-font); color: var(--pub-muted); }
.tp-vh { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; margin: 0 !important; }
.tp-article :is(h2, h3, [id]) { scroll-margin-top: calc(var(--pub-head-h) + 24px); }
.tp-article h2:target { box-shadow: -18px 0 0 -14px var(--pub-lamp); }
.tp-article :is(.tp-stat, li, .tp-notice, .tp-floors, .tp-head-card):target { box-shadow: inset 0 0 0 1.5px var(--pub-lamp), var(--pub-drop); }
.tp-apps { display: flex; gap: 12px; align-items: center; margin: 0 0 1.4em; padding: 12px 16px; border-radius: 14px; font: 600 15px/1.45 var(--pub-font); color: var(--pub-ink); background: var(--pub-field); box-shadow: inset 0 0 0 1px var(--pub-edge); }
.tp-apps svg { width: 26px; height: 26px; flex: none; fill: none; stroke: var(--pub-brass); stroke-width: 1.5; stroke-linejoin: round; }
.tp-reg { margin: 0 0 12px; border-radius: 18px; overflow: hidden; background: var(--pub-card); box-shadow: inset 0 0 0 1px var(--pub-edge), var(--pub-drop); font-family: var(--pub-font); }
.tp-reg > div { display: grid; grid-template-columns: minmax(120px, 200px) minmax(0, 1fr); gap: 4px 24px; padding: 14px 20px; border-bottom: 1px solid var(--pub-edge); }
.tp-reg > div:last-child { border-bottom: 0; }
.tp-reg dt { font: 500 15px/1.4 var(--pub-font); color: var(--pub-muted); }
.tp-reg dd { margin: 0; font: 620 16px/1.4 var(--pub-font); color: var(--pub-ink); }
.tp-bounds { display: grid; gap: 12px; margin: 0 0 1em; }
.tp-bound { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 14px; padding: 18px 20px; border-radius: 18px; background: var(--pub-card); box-shadow: inset 0 0 0 1px var(--pub-edge), inset 1px 1px 0 var(--pub-spec); }
.tp-bound p { margin: 0; font-size: 17px; line-height: 1.65; }
.tp-bound-h { margin-bottom: 4px !important; font: 680 17px/1.35 var(--pub-font) !important; color: var(--pub-ink); }
.tp-bound-n { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; font: 700 13px/1 var(--pub-font); color: var(--pub-brass); box-shadow: inset 0 0 0 1.5px var(--pub-brass); }
.tp-card { margin: 1.4em 0; padding: 18px 20px; border-radius: 18px; background: var(--pub-card); box-shadow: inset 0 0 0 1px var(--pub-edge), inset 1px 1px 0 var(--pub-spec); }
.tp-card p { margin: 0; font-size: 17px; line-height: 1.6; }
.tp-card-h { margin: 0 0 6px !important; font: 680 17px/1.35 var(--pub-font) !important; color: var(--pub-ink); }
.tp-more { display: inline-flex; align-items: center; gap: 8px; margin-top: 12px; font: 650 15px/1.3 var(--pub-font); }
.tp-article a.tp-more { text-decoration: none; color: var(--pub-ink); }
.tp-article a.tp-more:hover { text-decoration: underline; text-decoration-color: var(--pub-lamp); }
.tp-notice { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 12px; margin: 1.6em 0; padding: 16px 18px; border-radius: 18px; background: var(--tp-amber-wash); box-shadow: inset 0 0 0 1px var(--tp-amber); font-family: var(--pub-font); }
.tp-notice svg { width: 22px; height: 22px; fill: none; stroke: var(--tp-amber); stroke-width: 1.8; stroke-linejoin: round; stroke-linecap: round; }
.tp-notice p { margin: 0; font-size: 15.5px; line-height: 1.6; color: var(--pub-ink); }
.tp-notice-h { font-weight: 680; margin-bottom: 4px !important; }
.tp-notice--quiet { background: var(--pub-field); box-shadow: inset 0 0 0 1px var(--pub-edge); }
.tp-notice--quiet svg { stroke: var(--pub-brass); }
.tp-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 1.4em 0 .4em; font-family: var(--pub-font); }
.tp-stat { padding: 18px; border-radius: 18px; background: var(--pub-card); box-shadow: inset 0 0 0 1px var(--pub-edge), inset 1px 1px 0 var(--pub-spec); }
.tp-stat p { margin: 0; }
.tp-stat-v { font: 760 34px/1 var(--pub-font); letter-spacing: -.02em; color: var(--pub-ink); font-variant-numeric: tabular-nums; }
.tp-stat-k { margin-top: 10px !important; font: 650 15px/1.3 var(--pub-font); color: var(--pub-ink); }
.tp-stat-sub { margin-top: 6px !important; font: 500 13.5px/1.55 var(--pub-font); color: var(--pub-muted); }
.tp-floors { margin: 1.4em 0; padding: 18px 20px; border-radius: 18px; background: var(--pub-field); box-shadow: inset 0 0 0 1px var(--pub-edge); }
.tp-floors ul { margin: 0; padding-left: 1.1em; font-size: 16.5px; line-height: 1.6; }
.tp-end { display: flex; flex-wrap: wrap; gap: 12px; margin: 1.8em 0 0; }
.tp-article .tp-end a { text-decoration: none; }
.tp-article .tp-end .pub-btn--go { color: var(--pub-on-action); }
.tp-planote { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-radius: 14px; font: 600 16px/1.4 var(--pub-font); color: var(--pub-ink); background: var(--pub-field); box-shadow: inset 0 0 0 1px var(--pub-edge-strong); }
.tp-planote svg { width: 22px; height: 22px; flex: none; fill: none; stroke: var(--pub-brass); stroke-width: 1.6; stroke-linecap: round; }
.tp--legal .tp-article h2 { font-size: 24px; }
.tp--legal .tp-article { font-size: 18px; }
.tp--legal .pub-toc a { font-size: 13.5px; padding-block: 6px; }
/* engine */
.tp-ecards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 1.4em 0; font-family: var(--pub-font); }
.tp-ecard { display: flex; flex-direction: column; gap: 10px; padding: 18px; border-radius: 18px; background: var(--pub-card); box-shadow: inset 0 0 0 1px var(--pub-edge), inset 1px 1px 0 var(--pub-spec); }
.tp-ecard p { margin: 0; font-size: 15px; line-height: 1.6; }
.tp-ecard-h { display: flex; align-items: center; gap: 10px; font: 650 12px/1.2 var(--pub-font) !important; letter-spacing: .12em; text-transform: uppercase; color: var(--pub-muted); }
.tp-ecard-h svg { width: 30px; height: 30px; padding: 6px; border-radius: 10px; fill: none; stroke: var(--pub-brass); stroke-width: 1.7; stroke-linejoin: round; background: var(--pub-field); }
.tp-ecard .tp-seats { padding-top: 10px; border-top: 1px solid var(--pub-edge); }
.tp-capsule { display: inline-flex; align-self: flex-start; align-items: center; gap: 8px; min-height: 30px; padding: 0 12px; border-radius: 999px; font: 650 13px/1 var(--pub-font); color: var(--pub-ink); background: var(--pub-field); box-shadow: inset 0 0 0 1px var(--pub-edge-strong); }
.tp-capsule b { font-weight: 700; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--tp-ok); }
.tp-releases { list-style: none; margin: 1.2em 0 1.6em; padding: 0; display: grid; gap: 12px; font-family: var(--pub-font); }
.tp-release { padding: 18px 20px; border-radius: 18px; background: var(--pub-card); box-shadow: inset 0 0 0 1px var(--pub-edge), inset 1px 1px 0 var(--pub-spec); }
.tp-release--now { box-shadow: inset 0 0 0 1.5px var(--pub-brass), inset 1px 1px 0 var(--pub-spec), var(--pub-drop); }
.tp-rel-top { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin-bottom: 10px; }
.tp-rel-v { font: 720 17px/1.2 var(--pub-font); color: var(--pub-ink); }
.tp-rel-d { margin-left: auto; font: 500 13px/1 ui-monospace, "SF Mono", Menlo, monospace; color: var(--pub-muted); }
.tp-now { font: 650 12px/1 var(--pub-font); letter-spacing: .1em; text-transform: uppercase; color: var(--pub-brass); }
.tp-release ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.tp-release li { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 10px; margin: 0 !important; font-size: 15px; line-height: 1.55; }
.tp-rel-foot { margin: 12px 0 0 !important; padding-top: 10px; border-top: 1px solid var(--pub-edge); font-size: 13.5px; line-height: 1.55; color: var(--pub-muted); }
.tp-scope { justify-self: start; align-self: start; display: inline-flex; align-items: center; min-height: 22px; padding: 0 8px; border-radius: 999px; font: 700 12px/1 var(--pub-font); letter-spacing: .06em; text-transform: uppercase; color: var(--pub-muted); background: var(--pub-field); box-shadow: inset 0 0 0 1px var(--pub-edge); }
.tp-scope[data-scope="ultra"] { color: var(--pub-brass); box-shadow: inset 0 0 0 1px var(--pub-brass); }
.tp-milestones { list-style: none; margin: 1em 0 1.6em; padding: 0 0 0 20px; border-left: 1px solid var(--pub-edge-strong); font-family: var(--pub-font); }
.tp-milestones li { position: relative; margin: 0 0 14px !important; }
.tp-milestones li::before { content: ""; position: absolute; left: -24.5px; top: 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--pub-brass); }
.tp-milestones p { margin: 0; font-size: 15px; line-height: 1.55; }
.tp-ms-top { display: flex; gap: 10px; align-items: center; color: var(--pub-muted); margin-bottom: 2px !important; }
/* status */
.tp-head-card { margin: 0 0 1.2em; padding: 20px 22px; border-radius: 18px; background: var(--pub-card); box-shadow: inset 0 0 0 1px var(--pub-edge), var(--pub-drop); font-family: var(--pub-font); }
.tp-head-card p { margin: 0; font-size: 15.5px; line-height: 1.6; }
.tp-overall-h { display: flex; align-items: center; gap: 12px; margin-bottom: 10px !important; font: 720 21px/1.2 var(--pub-font) !important; color: var(--tp-ok) !important; }
.tp-checks { list-style: none; margin: 1em 0 1.6em; padding: 0; border-radius: 18px; overflow: hidden; background: var(--pub-card); box-shadow: inset 0 0 0 1px var(--pub-edge); font-family: var(--pub-font); }
.tp-checks li { display: grid; grid-template-columns: 12px minmax(0, 1fr) auto; gap: 14px; align-items: start; margin: 0 !important; padding: 16px 20px; border-bottom: 1px solid var(--pub-edge); }
.tp-checks li:last-child { border-bottom: 0; }
.tp-checks .tp-lamp { margin-top: 7px; }
.tp-checks p { margin: 0; font-size: 15px; line-height: 1.55; }
.tp-check-h { font-weight: 680; color: var(--pub-ink); }
.tp-check-t { margin-top: 4px !important; font-size: 13px !important; color: var(--pub-muted); }

/* ---------------------------------------------------------------- 3 · the rest of the record: six papers along the wall */
.tp-record { padding-block: clamp(48px, 6vw, 80px); }
.tp-record-h { margin: 0 0 18px; font: 650 12px/1.3 var(--pub-font); letter-spacing: .16em; text-transform: uppercase; color: var(--pub-brass); }
.tp-papers { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; }
.tp-paper { display: flex; flex-direction: column; gap: 8px; height: 100%; min-height: 128px; padding: 16px; border-radius: 16px; color: inherit; text-decoration: none; background: var(--pub-card);
  box-shadow: inset 0 0 0 1px var(--pub-edge), inset 1px 1px 0 var(--pub-spec), var(--pub-drop); transition: box-shadow .2s, translate .25s var(--pub-ease); }
.tp-paper:hover { translate: 0 -3px; box-shadow: inset 0 0 0 1px var(--pub-lamp), inset 1px 1px 0 var(--pub-spec), var(--pub-drop); }
.tp-papers li[aria-current="page"] .tp-paper { box-shadow: inset 0 0 0 1.5px var(--pub-brass), inset 0 3px 0 var(--pub-brass), var(--pub-drop); }
.tp-p-k { font: 650 12px/1.2 var(--pub-font); letter-spacing: .12em; text-transform: uppercase; color: var(--pub-brass); }
.tp-p-h { font: 650 16px/1.3 var(--pub-font); color: var(--pub-ink); text-wrap: balance; }

/* review bar */
.tp-rv { display: inline-flex; align-items: center; gap: 8px; font: var(--tp-ui); }
.tp-rv select { min-height: 32px; border-radius: 8px; padding: 0 8px; font: inherit; }

/* ---------------------------------------------------------------- 4 · sizes */
@media (max-width: 1239px) { .tp-papers { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 899px) {
  .tp-pic { grid-template-columns: 60px minmax(0, 1fr); max-width: 560px; justify-self: stretch; }
  .tp-mount { padding: 40px 0 26px 10px; margin-left: -6px; }
  .tp-wall { right: calc(-1 * var(--pub-gut)); width: calc(100% + var(--pub-gut)); }
  .tp-plaque { padding: 12px 14px 14px; border-radius: 16px; }
  .tp-tabs { gap: 2px; padding: 0 0 10px; }
  .tp-tab { min-height: 32px; padding: 0 9px; font-size: 12px; }
  .tp-face { padding: 10px 2px 0; }
  .tp-row, .tp-rows--record .tp-row, .tp-row--seats { grid-template-columns: minmax(0, 1fr) auto; row-gap: 3px; padding: 8px 0; }
  .tp-row > .tp-k { grid-column: 1 / -1; }
  .tp-row--lamp { grid-template-columns: 10px minmax(0, 1fr) auto; }
  .tp-row--lamp .tp-state { display: none; }
  .tp-row--lamp .tp-arrow { display: none; }
  .tp-v { font-size: 15px; }
  .tp-row--lamp .tp-v { font-size: 14px; }
  .tp-figs { gap: 6px; }
  .tp-fig { padding: 8px 8px 6px; border-radius: 12px; }
  .tp-fig-v { font-size: 22px; }
  .tp-fig-k { font-size: 12px; min-height: 3.9em; }
  .tp-eng-name { font-size: 19px; }
  .tp-overall { font-size: 18px; }
  .tp-stats, .tp-ecards { grid-template-columns: minmax(0, 1fr); }
  .tp-stand { font-size: 19px; }
  .tp-reg > div { grid-template-columns: minmax(0, 1fr); padding: 12px 16px; }
  .tp-release li { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .tp-papers { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .tp-paper { min-height: 104px; padding: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  html.pub-arrive [data-pub-arrive] :is(.tp-row, .tp-fig, .tp-eng-top, .tp-overall, .tp-band-wrap, .tp-glow, .tp-halo, .tp-band) { opacity: 1 !important; translate: none !important; transition: none !important; }
}
/* phone: the three figures read as three engraved lines (value · label · instrument) */
@media (max-width: 899px) {
  .tp-figs { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .tp-fig { display: grid; grid-template-columns: 62px minmax(0, 1fr) 66px; align-items: center; column-gap: 10px; padding: 8px 10px; }
  .tp-fig-k { min-height: 0; font-size: 13px; } .tp-fig-v { font-size: 20px; }
  .tp-ins { margin: 0; }
}

/* =============================================================================
   error-page · the signpost at the end of her street (on top of trust.css's tokens). Arms are the links; the lit arm under
   the lamp is the way home. 500: the lamp is out until she tries again. Tokens + oklch only; motion plays once.
   ============================================================================= */
.ep { --ep-wood: oklch(0.34 0.03 58); --ep-wood-hi: oklch(0.52 0.04 70 / .6); --ep-plate: linear-gradient(180deg, oklch(0.30 0.026 62), oklch(0.25 0.022 58)); --ep-plate-ink: oklch(0.93 0.02 85); }
html:not(.dark) .ep { --ep-wood: oklch(0.80 0.03 70); --ep-wood-hi: oklch(1 0 0); --ep-plate: linear-gradient(180deg, oklch(1 0 0), oklch(0.975 0.006 85)); --ep-plate-ink: var(--sp-ink); }
@media (min-width: 900px) { .ep-hero.tp-hero[data-pub-arrive] { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); } }
.ep-lede { max-width: 30ch; }
.ep-lede-wrap .ep-lede + .ep-lede { margin-top: 6px; }
.ep-wood { fill: var(--ep-wood); } .ep-wood-hi { stroke: var(--ep-wood-hi); stroke-width: 2; fill: none; }
.ep-shadow { fill: oklch(0.05 0.01 280 / .45); }
html:not(.dark) .ep-shadow { fill: color-mix(in srgb, var(--sp-ink) 12%, transparent); }
html:not(.dark) .ep-halo { display: none; }

.ep-pic { position: relative; display: block; height: clamp(460px, 62svh, 580px); max-width: 640px; }
.ep-post { position: absolute; left: 50%; bottom: 0; height: 100%; width: auto; aspect-ratio: 200 / 560; translate: -50% 0; overflow: visible; }
.ep-arms { position: absolute; inset: 0; }
.ep-arm { position: absolute; display: inline-flex; align-items: center; gap: 10px; min-height: 54px; white-space: nowrap; text-decoration: none;
  font: 650 17px/1.2 var(--pub-font); color: var(--ep-plate-ink); background: var(--ep-plate);
  box-shadow: inset 0 0 0 1.5px var(--pub-brass), inset 0 2px 0 oklch(1 0 0 / .14); filter: drop-shadow(0 10px 14px oklch(0.03 0.01 280 / .55)); transition: translate .25s var(--pub-ease), filter .2s; }
html:not(.dark) .ep-arm { box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--sp-ink) 70%, transparent); filter: drop-shadow(0 6px 8px color-mix(in srgb, var(--sp-ink) 18%, transparent)); }
.ep-arm--left { right: calc(50% - 8px); padding: 0 24px 0 34px; border-radius: 0 6px 6px 0; clip-path: polygon(24px 0, 100% 0, 100% 100%, 24px 100%, 0 50%); }
.ep-arm--right { left: calc(50% - 8px); padding: 0 34px 0 24px; border-radius: 6px 0 0 6px; clip-path: polygon(0 0, calc(100% - 24px) 0, 100% 50%, calc(100% - 24px) 100%, 0 100%); }
a.ep-arm--left:hover { translate: -4px 0; } a.ep-arm--right:hover { translate: 4px 0; }
.ep-arm:focus-visible { outline: none; filter: drop-shadow(0 0 0 var(--pub-lamp)) drop-shadow(0 0 3px var(--pub-lamp)); }
.ep-arm.pub-btn--go { min-height: 58px; border-radius: 0 6px 6px 0; color: var(--pub-on-action); background: var(--pub-action); box-shadow: inset 0 1px 0 oklch(1 0 0 / .28); filter: drop-shadow(0 12px 18px oklch(0.45 0.2 295 / .55)); font-size: 18px; }
.ep-i { width: 20px; height: 20px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.ep-a1 { top: 112px; } .ep-a2 { top: 190px; } .ep-a3 { top: 262px; }
/* the snapped arm: hanging by one nail, the distractor */
.ep-broken { top: 338px; left: calc(50% + 4px); min-height: 48px; padding: 0 30px 0 20px; rotate: 32deg; transform-origin: 6px 12px; background: transparent;
  box-shadow: inset 0 0 0 1.5px var(--pub-muted); color: var(--pub-muted); filter: none; border-radius: 4px 0 0 4px; }
.ep-broken b { font: 760 26px/1 var(--pub-font); letter-spacing: .06em; }
.ep-nail { position: absolute; top: 344px; left: calc(50% + 6px); width: 8px; height: 8px; border-radius: 50%; background: var(--tp-screw); }
/* arrival: the lamp, then the arms set out one by one; the snapped arm swings to rest (rotate, once) */
html.pub-arrive [data-pub-arrive] .ep-arm { opacity: 0; translate: 0 8px; }
html.pub-arrive.pub-go [data-pub-arrive] .ep-arm { opacity: 1; translate: 0 0; transition: opacity .55s var(--pub-ease), translate .55s var(--pub-ease); }
html.pub-arrive.pub-go [data-pub-arrive] .ep-a1 { transition-delay: .7s; } html.pub-arrive.pub-go [data-pub-arrive] .ep-a2 { transition-delay: .85s; }
html.pub-arrive.pub-go [data-pub-arrive] .ep-a3 { transition-delay: 1s; } html.pub-arrive.pub-go [data-pub-arrive] .ep-broken { transition-delay: 1.15s; }
html.pub-arrive [data-pub-arrive] .ep-halo { opacity: 0; }
html.pub-arrive.pub-go [data-pub-arrive] .ep-halo { opacity: 1; transition: opacity 1.1s var(--pub-ease) .35s; }
/* 500: the lamp is out until she tries again */
.ep--err .ep-halo { opacity: 0 !important; }
.ep--err .ep-lglass { fill: oklch(0.32 0.02 270 / .9); } .ep--err .ep-bulb { fill: oklch(0.42 0.02 270); }
html:not(.dark) .ep--err .ep-lglass { fill: color-mix(in srgb, var(--sp-ink) 18%, transparent); }
html.ep-lit .ep--err .ep-halo { opacity: 1 !important; transition: opacity .9s var(--pub-ease); }
html.ep-lit .ep--err .ep-lglass { fill: var(--tp-lglass); transition: fill .5s; } html.ep-lit .ep--err .ep-bulb { fill: var(--tp-bulb); transition: fill .5s; }
.ep--err .ep-a1 { top: 150px; } .ep--err .ep-a2 { top: 232px; }
/* more ways in (the live page's last two links) */
.ep-more { padding-block: 34px; }
.ep-more-in { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.ep-more-a { display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 20px; border-radius: 999px; font: 600 16px/1 var(--pub-font); color: var(--pub-ink); text-decoration: none; background: var(--pub-field); box-shadow: inset 0 0 0 1px var(--pub-edge-strong); }
.ep-more-a:hover { box-shadow: inset 0 0 0 1px var(--pub-lamp); }
@media (max-width: 899px) {
  .ep-pic { height: 400px; max-width: 100%; justify-self: stretch; }
  .ep-arm { font-size: 15px; min-height: 48px; gap: 8px; }
  .ep-arm.pub-btn--go { font-size: 16px; min-height: 52px; }
  .ep-arm--left { padding: 0 16px 0 28px; } .ep-arm--right { padding: 0 28px 0 16px; }
  .ep-a1 { top: 92px; } .ep-a2 { top: 158px; } .ep-a3 { top: 220px; }
  .ep-broken { top: 288px; } .ep-nail { top: 294px; }
  .ep--err .ep-a1 { top: 120px; } .ep--err .ep-a2 { top: 192px; }
}
@media (prefers-reduced-motion: reduce) { html.pub-arrive [data-pub-arrive] .ep-arm { opacity: 1 !important; translate: none !important; transition: none !important; } }
.pub-hero-pic.ep-pic > svg.ep-post { width: auto; height: 100%; }
/* phone: the post stands at the left of the street and every arm points on, toward the right (nothing leaves the screen) */
@media (max-width: 899px) {
  .pub-hero-pic.ep-pic > svg.ep-post { left: 16%; }
  .ep-arm--left, .ep-arm--right { left: calc(16% - 8px); right: auto; padding: 0 30px 0 16px; border-radius: 6px 0 0 6px; clip-path: polygon(0 0, calc(100% - 22px) 0, 100% 50%, calc(100% - 22px) 100%, 0 100%); }
  .ep-arm.pub-btn--go { border-radius: 6px 0 0 6px; }
  a.ep-arm--left:hover { translate: 4px 0; }
  .ep-broken { left: calc(16% + 4px); } .ep-nail { left: calc(16% + 6px); }
}
/* Round 32 · run 27 (frame designer, 24 Oct 2026) · SQ-194 + SQ-58 · THE STREET'S BAR FOR A STUDENT WHO IS SIGNED IN.
   A signed-in student who lands on the 404, the 500 or the crash page is not a visitor: she is not offered "Sign in" or
   "Start free". The end of the bar is one door home, "Your Today": the bar's quiet glass pill (the header's quiet Start free,
   kit §3), carrying the house's own small roof with its window lit, the same warm lamp as the signpost's. Never violet: the
   page's one violet stays the sign's arm (Back to Today / Try again). On a phone the door stays in the bar (Sign in hides at
   < 600 px, the door does not) and the menu's foot carries the same door. Arrival, once: the window's lamp catches (opacity,
   0.5 s after the bar, 0.9 s); reduced motion = the lit resting frame. Ported into the app's error sheet by
   scripts/dev/public/build-p1b-sheets.mjs (ADD.error) and drawn by components/public/v2/PublicHeader.tsx (signedIn). */
.pub-door { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px 0 12px; border-radius: 999px; white-space: nowrap;
  font: 650 14px/1 var(--pub-font); text-decoration: none; color: var(--pub-ink); background: var(--pub-field);
  box-shadow: inset 0 0 0 1px var(--pub-edge-strong), inset 1px 1px 0 var(--pub-spec); transition: background-color .3s, box-shadow .3s; }
.pub-door:hover { background: var(--pub-wash); box-shadow: inset 0 0 0 1px var(--pub-edge-strong), inset 1px 1px 0 var(--pub-spec), 0 0 18px -6px var(--pub-lamp); }
.pub-door:focus-visible { outline: 2px solid var(--pub-ink); outline-offset: 2px; }
.pub-door svg { display: block; flex: none; width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; overflow: visible; }
.pub-door .pub-door-glow { fill: var(--pub-lamp); stroke: none; opacity: .32; animation: pub-door-lamp .9s .5s both; }
.pub-door .pub-door-lamp { fill: var(--pub-lamp); stroke: none; animation: pub-door-lamp .9s .5s both; }
@keyframes pub-door-lamp { from { opacity: 0; } }
.pub-menu-acts .pub-door { min-height: 48px; padding: 0 14px; border-radius: 14px; font-size: 16px; background: transparent; box-shadow: none; }
.pub-menu-acts .pub-door:hover { background: var(--pub-wash); box-shadow: none; }
@media (max-width: 599px) { .pub-door { padding: 0 14px 0 10px; } }
@media (prefers-reduced-motion: reduce) { .pub-door .pub-door-glow, .pub-door .pub-door-lamp { animation: none; } }
