:root{color-scheme:dark}*{box-sizing:border-box}html{background:var(--sv-bg);color:var(--sv-bone);scroll-behavior:smooth}body{margin:0;background:var(--sv-bg);font-family:var(--sv-font-body);line-height:var(--sv-leading);overflow-x:hidden}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:var(--fs-space-1)}.grain,.coordinate-grid{position:fixed;inset:0;pointer-events:none;z-index:-2}.grain{background:url('/assets/site-v2/paper-charcoal.webp') center/500px;opacity:.12}.coordinate-grid{inset:var(--fs-space-5);z-index:-1;border:1px solid var(--sv-line);background:url('/assets/site-v2/paper-bone.webp') center/420px;opacity:.12;mix-blend-mode:soft-light}.case-masthead,.case-footer{width:var(--sv-shell);margin:0 auto}.case-masthead{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--fs-space-4);align-items:center;padding:var(--fs-space-5) 0;border-bottom:1px solid var(--sv-line);font:var(--fs-text-xs) var(--sv-font-mono);letter-spacing:.09em}.case-mark{color:var(--sv-bone);text-decoration:none;font:500 var(--fs-text-md) var(--sv-font-display);letter-spacing:.12em}.case-mark span{margin-left:var(--fs-space-1);font-family:var(--sv-font-cjk-display);color:var(--sv-noted)}.case-masthead>p{margin:0;color:var(--sv-compass);text-align:center}.case-masthead nav{display:flex;justify-content:flex-end;gap:var(--fs-space-4)}.proof-file{width:var(--sv-shell);margin:0 auto;padding:clamp(var(--fs-space-8),11vw,9rem) 0 clamp(var(--fs-space-8),9vw,7rem)}.proof-intake{display:grid;grid-template-columns:minmax(130px,1fr) minmax(0,6fr);gap:var(--fs-space-6);padding-bottom:clamp(var(--fs-space-8),9vw,7rem)}.docket{margin:0;padding-right:var(--fs-space-4);border-right:1px solid var(--sv-line);font:var(--fs-text-2xs)/1.7 var(--sv-font-mono);letter-spacing:.1em;color:var(--sv-compass)}.docket p{margin:0 0 var(--fs-space-4)}.case-kicker,.case-index,.confidence{font:var(--fs-text-xs) var(--sv-font-mono);letter-spacing:.1em}.case-kicker{margin:0 0 var(--fs-space-5);color:var(--sv-noted)}.proof-title{max-width:760px;margin:0;font:500 clamp(3.7rem,9vw,8.25rem)/.84 var(--sv-font-display);letter-spacing:-.055em}.proof-title .brush{display:block;margin-top:var(--fs-space-4);font:clamp(2rem,4.5vw,4.4rem)/1 var(--sv-font-cjk-display);letter-spacing:.04em;color:var(--sv-noted)}.proof-deck{max-width:620px;margin:var(--fs-space-6) 0 0;font:var(--fs-text-xl)/1.38 var(--sv-font-display)}.proof-boundary{grid-column:2;max-width:500px;margin:var(--fs-space-5) 0 0;padding-left:var(--fs-space-3);border-left:2px solid var(--sv-clear);font:var(--fs-text-xs)/1.6 var(--sv-font-mono);letter-spacing:.04em;color:var(--sv-compass)}.map-register{margin:0 0 clamp(var(--fs-space-8),9vw,7rem);padding:var(--fs-space-4);border-top:1px solid var(--sv-divider);border-bottom:1px solid var(--sv-line);background:var(--sv-deep-indigo)}.map-register-head{display:flex;justify-content:space-between;gap:var(--fs-space-4);margin-bottom:var(--fs-space-4);font:var(--fs-text-xs) var(--sv-font-mono);letter-spacing:.1em;color:var(--sv-noted)}.map-register-head p{margin:0}.map-register-head span{color:var(--sv-compass)}.map-register picture,.map-register img{display:block;width:100%;height:auto}.map-register img{border:1px solid var(--sv-divider);background:var(--sv-ink)}.map-register figcaption{margin-top:var(--fs-space-3);font:var(--fs-text-xs)/1.55 var(--sv-font-mono);letter-spacing:.04em;color:var(--sv-compass)}.attribution{margin:calc(var(--fs-space-3) * -1) 0 clamp(var(--fs-space-8),9vw,7rem);font:var(--fs-text-xs)/1.55 var(--sv-font-mono);color:var(--sv-compass)}.factor-record{display:grid;grid-template-columns:minmax(180px,2fr) minmax(0,5fr);gap:clamp(var(--fs-space-5),7vw,6rem);padding:clamp(var(--fs-space-6),7vw,5rem) 0;border-top:1px solid var(--sv-line)}.factor-record.offset{margin-left:8%}.factor-record.reverse{grid-template-columns:minmax(0,5fr) minmax(180px,2fr);margin-right:8%}.factor-record.reverse .record-label{grid-column:2;grid-row:1}.factor-record.reverse .record-copy{grid-column:1;grid-row:1;justify-self:end}.record-label{align-self:start}.case-index{margin:0 0 var(--fs-space-2);color:var(--sv-compass)}.confidence{display:inline-block;margin:0 0 var(--fs-space-4);color:var(--sv-noted)}.confidence.high{color:var(--sv-clear)}.confidence.medium{color:var(--sv-watch)}.record-label h2,.limitation h2{margin:0;font:500 var(--fs-text-2xl)/1.05 var(--sv-font-display);letter-spacing:-.035em}.record-copy{max-width:650px;font:var(--fs-text-md)/1.7 var(--sv-font-body)}.record-copy p{margin:0 0 var(--fs-space-5)}.record-copy p:last-child{margin-bottom:0}.record-copy strong{font-weight:500;color:var(--sv-bone)}.evidence{padding-left:var(--fs-space-4);border-left:1px solid var(--sv-divider);color:var(--sv-compass);font:var(--fs-text-sm)/1.6 var(--sv-font-mono)}.limitation{width:min(740px,86%);margin:0 0 0 auto;padding:var(--fs-space-4) 0 var(--fs-space-4) var(--fs-space-5);border-left:2px solid var(--sv-watch)}.limitation h2{margin-bottom:var(--fs-space-3)}.limitation p{margin:0;max-width:620px;font:var(--fs-text-sm)/1.65 var(--sv-font-body)}.case-footer{padding:var(--fs-space-5) 0;border-top:1px solid var(--sv-line);font:var(--fs-text-xs)/1.55 var(--sv-font-mono);letter-spacing:.07em;color:var(--sv-compass)}.footer-links{margin:0}.footer-links a{color:var(--sv-bone)}.footer-creed{margin:var(--fs-space-3) 0 0}.lang-zh{font-family:var(--sv-font-cjk-body)}.lang-zh .proof-title,.lang-zh .record-label h2,.lang-zh .limitation h2{font-family:var(--sv-font-cjk-display);letter-spacing:.02em}.lang-zh .proof-deck,.lang-zh .record-copy,.lang-zh .limitation p{font-family:var(--sv-font-cjk-body)}@media (max-width:699px){.coordinate-grid{inset:var(--fs-space-3)}.case-masthead,.case-footer,.proof-file{width:86vw}.case-masthead{grid-template-columns:1fr auto}.case-masthead>p{display:none}.case-masthead nav{gap:var(--fs-space-3)}.proof-intake{display:block;padding-top:clamp(var(--fs-space-8),16vw,7rem)}.docket{display:flex;gap:var(--fs-space-3);padding:0 0 var(--fs-space-4);border-right:0;border-bottom:1px solid var(--sv-line)}.docket p{margin:0}.proof-title{font-size:clamp(3.1rem,15vw,5rem)}.proof-title .brush{font-size:clamp(1.8rem,9vw,3rem)}.map-register-head{display:block}.map-register-head span{display:block;margin-top:var(--fs-space-2)}.factor-record,.factor-record.offset,.factor-record.reverse{display:block;margin-left:0;margin-right:0;padding:var(--fs-space-6) 0}.record-label{margin-bottom:var(--fs-space-5)}.factor-record.reverse .record-label,.factor-record.reverse .record-copy{grid-column:auto;grid-row:auto;justify-self:auto}.limitation{width:100%;padding-left:var(--fs-space-4)}.case-footer{padding-bottom:var(--fs-space-6)}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* ── SECTION SPINE — site review 2026-07-29, C1 + C2 ─────────────────────────────
   C1: .factor-record.reverse flipped the label to the right column (§03 Facing) and
   .offset pushed alternating records 8% sideways, so the page swung side to side and
   left a half-empty column on every flip. Both modifiers are dropped for the one rail +
   content-column grid the rest of the site now uses. C2: the between-record gap is cut
   to --sv-section-y and each record break carries the brass register tick. */
.proof-intake, .factor-record, .proof-file > * { width:min(100%, var(--sv-spine)); margin-inline:auto; }
.proof-file { padding:clamp(var(--fs-space-8),8vw,6.5rem) 0 clamp(var(--fs-space-8),7vw,5.5rem); }
.proof-intake { grid-template-columns:var(--sv-rail) minmax(0,1fr); gap:var(--sv-rail-gap); }
.factor-record, .factor-record.offset, .factor-record.reverse {
  position:relative; grid-template-columns:var(--sv-rail) minmax(0,1fr);
  column-gap:var(--sv-rail-gap); row-gap:0; margin-left:auto; margin-right:auto;
  padding:var(--sv-section-y) 0;
}
.factor-record::before { content:""; position:absolute; left:0; top:-1px; width:var(--sv-rail); height:1px; background:var(--sv-divider); }
.factor-record .record-label, .factor-record.reverse .record-label { grid-column:1; grid-row:1; align-self:start; }
.factor-record .record-copy, .factor-record.reverse .record-copy { grid-column:2; grid-row:1; justify-self:stretch; max-width:var(--sv-measure); }
@media (max-width:699px) {
  .proof-intake { display:block; }
  .factor-record, .factor-record.offset, .factor-record.reverse { display:block; padding:clamp(var(--fs-space-6),9vw,3.5rem) 0; }
  .factor-record::before { width:4rem; }
}
/* The record label carries a number, a confidence stamp AND the factor term at display
   size; in a mono rail the term wrapped mid-word. `display:contents` folds the label
   into the section grid so the stamps stay in the rail and the term heads the content
   column — the same reading order as method / factor / mitigations. */
.factor-record .record-label, .factor-record.reverse .record-label { display:contents; }
.factor-record .case-index { grid-column:1; grid-row:1; align-self:start; margin:0; padding-top:.4rem; }
.factor-record .confidence { grid-column:1; grid-row:2; align-self:start; margin:0; padding-top:.15rem; }
.factor-record .record-label h2, .factor-record h2 { grid-column:2; grid-row:1; margin:0 0 var(--fs-space-4); }
.factor-record .record-copy, .factor-record.reverse .record-copy { grid-column:2; grid-row:2; }
@media (max-width:699px) { .factor-record .record-label, .factor-record.reverse .record-label { display:block; margin-bottom:var(--fs-space-4); } }
