:root{
    --paper:#E9EAE4; --paper-raised:#F4F4EF; --paper-sunken:#E1E2DB;
    --ink:#191B1F; --ink-soft:#54574F;
    /* 4.6:1 on --paper. The old #84877E was 3.0:1, which fails WCAG AA for small
       text — and this colour labels every figure on the site, so it has to be
       readable rather than merely present. */
    --ink-faint:#666961;
    --rule:#CBCDC4; --rule-strong:#B4B7AD;
    --redline:#9A2117; --redline-soft:#B4463C;
    --amber:#8A5A0C; --amber-soft:#B67A12;
    --constructive:#1F5C54; --stamp-ink:#2B2D31;
    --shadow:0 1px 0 rgba(25,27,31,.04), 0 14px 34px -22px rgba(25,27,31,.55);
    --shadow-lift:0 1px 0 rgba(25,27,31,.05), 0 22px 44px -24px rgba(25,27,31,.62);
    /* One motion vocabulary for the whole site. Every hover, fade and fold uses
       these three durations and this one curve, which is what makes a set of
       small effects read as a single considered thing rather than as decoration
       added by different hands. The curve is decisive with no overshoot: paper
       does not bounce. */
    --ease:cubic-bezier(.2,.6,.2,1);
    --t-fast:120ms;
    --t:220ms;
    --t-slow:380ms;
    /* Archivo, Newsreader and Space Mono carry no Devanagari, so Noto sits
       behind each of them. Fallback is per-glyph: Latin keeps the display face,
       Hindi picks up Noto instead of an arbitrary system font. */
    --mono:"Space Mono","Noto Sans Devanagari",ui-monospace,monospace;
    --serif:"Newsreader","Noto Serif Devanagari",Georgia,serif;
    --display:"Archivo","Noto Sans Devanagari",system-ui,sans-serif;
  }
  /* Devanagari must not be tracked out: letter-spacing pulls conjuncts apart
     and the negative tracking on display type collides with its matras. */
  html[lang="hi"] *{letter-spacing:normal !important}
  /* Devanagari carries matras above and below the line, so it needs more room
     and does not survive being set as small as the Latin mono labels are. */
  html[lang="hi"] body{line-height:1.75}
  html[lang="hi"] .flag,html[lang="hi"] .eyebrow,html[lang="hi"] .lbl,
  html[lang="hi"] .mk,html[lang="hi"] .field .k,html[lang="hi"] .date,
  html[lang="hi"] .cat,html[lang="hi"] .stamp,html[lang="hi"] .est,
  html[lang="hi"] .resultline .wrap,html[lang="hi"] .yearmark .c,
  html[lang="hi"] .expandbar,html[lang="hi"] .case-share,html[lang="hi"] .chip,
  html[lang="hi"] .legenditem,html[lang="hi"] .site-nav,html[lang="hi"] footer h4,
  html[lang="hi"] .fine,html[lang="hi"] .method summary,html[lang="hi"] .source-legend,
  html[lang="hi"] .src,html[lang="hi"] .prop small,html[lang="hi"] .lang-notice,
  html[lang="hi"] .dashboard-count,html[lang="hi"] .minister-table thead th,
  html[lang="hi"] .minister-table small,html[lang="hi"] .queue-warning,
  html[lang="hi"] .resume-h2,html[lang="hi"] .resume-fold-title,
  html[lang="hi"] .resume-fold-hint,html[lang="hi"] .resume-metric-lbl,
  html[lang="hi"] .resume-contact dt,html[lang="hi"] .resume-since,
  html[lang="hi"] .resume-caveat,html[lang="hi"] .resume-comp-count,
  html[lang="hi"] .resume-share-btn,html[lang="hi"] .resume-back,
  html[lang="hi"] .resume-job-date,html[lang="hi"] .resume-job-cat,
  html[lang="hi"] .resume-job-outcome,html[lang="hi"] .resume-job-dodge-k,
  html[lang="hi"] .resume-fine,html[lang="hi"] .suggest-source,
  html[lang="hi"] .src-archive,html[lang="hi"] .tier-badge,
  html[lang="hi"] .rti-help h3,html[lang="hi"] .rti-check,
  html[lang="hi"] .more-toggle,html[lang="hi"] .to-top{font-size:12.5px;line-height:1.7}
  /* The application itself is monospaced; Devanagari cannot be read at the
     size Latin mono is comfortable at, and this is a document to be checked
     line by line before it is signed. */
  html[lang="hi"] .rti-letter{font-size:14.5px;line-height:1.95}
  html[lang="hi"] .stamp,html[lang="hi"] .resume-job-outcome{font-size:12px}
  html[lang="hi"] .est,html[lang="hi"] .tier-badge{font-size:11px}
  /* Devanagari sets optically larger than Latin at the same point size, so the
     display sizes come down rather than swallowing the screen. */
  html[lang="hi"] h1.title{font-size:clamp(30px,5vw,56px);line-height:1.28}
  html[lang="hi"] .yearmark .y{font-size:clamp(26px,3.6vw,42px);line-height:1.2}
  html[lang="hi"] .standfirst{font-size:clamp(17px,2vw,20px)}
  html[lang="hi"] .headmid h3{font-size:clamp(18px,2.2vw,23px);line-height:1.45}
  html[lang="hi"] .resume-heading .title{font-size:clamp(24px,3.6vw,36px)}
  html[lang="hi"] .resume-job-role{font-size:15.5px;line-height:1.45}
  html[lang="hi"] .docket .num,html[lang="hi"] .resume-metric-num,
  html[lang="hi"] .standing-record-num{font-size:clamp(21px,2.6vw,30px);line-height:1.2}

  /* A figure that carries a second reading. Tappable, because most readers here
     are on a phone and will never hover. */
  .fig{border-bottom:1px dotted var(--rule-strong);cursor:pointer}
  .fig:hover,.fig:focus-visible{border-bottom-color:var(--redline);color:var(--redline)}
  .fig:focus-visible{outline:2px solid var(--redline);outline-offset:2px}
  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.6;
    -webkit-font-smoothing:antialiased;background-image:radial-gradient(rgba(25,27,31,.028) 1px, transparent 1px);background-size:22px 22px;
    padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
  a{color:var(--constructive);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
  ::selection{background:var(--redline);color:#F4F4EF}
  .wrap{max-width:1080px;margin:0 auto;padding:0 28px}

  header.masthead{border-bottom:2px solid var(--ink);padding:34px 0 0}
  .flag{display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
  .flag .redtag{color:var(--redline)}
  .site-nav{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:18px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
  .nav-links{display:flex;flex-wrap:wrap;gap:8px;min-width:0}
  .site-nav a{padding:6px 9px;border:1px solid var(--rule-strong);color:var(--ink-soft);text-decoration:none}
  .site-nav a:hover,.site-nav a[aria-current="page"]{border-color:var(--redline);color:var(--redline)}
  .compact-masthead .hero{padding-bottom:34px}
  /* Generated pages carry their headline in <main>, so there is no hero to
     space the masthead off its own bottom rule. Without this the 2px black
     line hugs the nav and reads as a rendering fault. */
  .bare-masthead .wrap{padding-bottom:22px}
  .hero{padding:46px 0 40px}
  .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.18em;font-size:12.5px;color:var(--redline);margin-bottom:22px}
  h1.title{font-family:var(--display);font-weight:900;line-height:.94;letter-spacing:-.02em;font-size:clamp(42px,7.6vw,86px);margin:0 0 4px}
  h1.title .thin{font-weight:500;color:var(--ink-soft)}
  .standfirst{font-size:clamp(19px,2.4vw,23px);max-width:62ch;color:var(--ink-soft);margin:24px 0 0;line-height:1.5}
  .standfirst b{color:var(--ink);font-weight:500}

  .docket{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--rule);margin-top:40px;border-bottom:2px solid var(--ink)}
  .docket .cell{padding:20px 22px 22px;border-right:1px solid var(--rule)}
  .docket .cell:last-child{border-right:none}
  /* Sized to survive "lakh crore" without stranding a word on its own line. */
  .docket .num{font-family:var(--display);font-weight:800;font-size:clamp(23px,2.9vw,34px);line-height:1.1;letter-spacing:-.02em;text-wrap:balance}
  .docket .num.red{color:var(--redline)}
  .docket .lbl{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:var(--ink-faint);margin-top:10px;line-height:1.5}

  .standing-record{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 14px;margin:0;padding:20px 0 26px;font-size:16px;line-height:1.55;color:var(--ink-soft)}
  .standing-record-num{font-family:var(--display);font-weight:900;font-size:clamp(38px,5vw,54px);line-height:.9;letter-spacing:-.03em;color:var(--redline)}
  .standing-record span:not(.standing-record-num){flex:1 1 320px;min-width:0;max-width:70ch}
  .standing-record a{flex:0 0 auto;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--redline);text-decoration:none;border-bottom:1px solid var(--redline)}
  .standing-record a:hover,.standing-record a:focus-visible{color:var(--ink);border-bottom-color:var(--ink)}

  .method{border-bottom:1px solid var(--rule);background:var(--paper-sunken)}
  .method details{max-width:1080px;margin:0 auto;padding:0 28px}
  .method summary{list-style:none;cursor:pointer;padding:16px 0;display:flex;align-items:center;gap:12px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:12px;color:var(--ink-soft)}
  .method summary::-webkit-details-marker{display:none}
  .method summary .plus{display:inline-block;width:16px;text-align:center;color:var(--redline);font-weight:700;transition:transform .25s ease}
  .method details[open] .plus{transform:rotate(45deg)}
  .method .body{padding:0 0 26px;max-width:72ch;font-size:16px;color:var(--ink-soft);line-height:1.65}
  .method .body p{margin:0 0 12px}
  .method .body strong{color:var(--ink)}
  .legendrow{display:flex;flex-wrap:wrap;gap:16px;margin-top:6px}
  .legenditem{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .swatch{width:22px;height:12px;border:2px solid}
  .swatch.red{border-color:var(--redline)} .swatch.amber{border-color:var(--amber-soft)}

  .controls{position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:1px solid var(--rule);padding:14px 0;box-shadow:0 4px 14px -10px rgba(25,27,31,.28)}
  .controls .wrap{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
  .search{flex:1 1 220px;min-width:170px;position:relative}
  .search input{width:100%;font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;padding:11px 14px 11px 34px;border:1px solid var(--rule-strong);background:var(--paper-raised);color:var(--ink);border-radius:0}
  .search input::placeholder{color:var(--ink-faint)}
  .search input:focus{outline:2px solid var(--redline);outline-offset:-1px}
  .search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:14px;height:14px;stroke:var(--ink-faint);fill:none}
  .chips{display:flex;flex-wrap:wrap;gap:6px}
  .chip{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:11px;padding:9px 13px;border:1px solid var(--rule-strong);background:transparent;color:var(--ink-soft);cursor:pointer;transition:.15s}
  .chip:hover{border-color:var(--ink);color:var(--ink)}
  /* The fill itself is the animated ::before in the motion section; setting a
     background here too would leave nothing for it to reveal. */
  .chip.cat[aria-pressed="true"]{border-color:var(--redline);color:#F4F4EF}
  select.sort{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:11px;padding:9px 12px;border:1px solid var(--rule-strong);background:var(--paper-raised);color:var(--ink-soft);cursor:pointer}
  .resultline{padding:16px 0 0}
  .resultline .wrap{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;font-size:11px;color:var(--ink-faint)}

  main{padding:16px 0 56px}
  .yearmark{display:flex;align-items:center;gap:18px;padding:48px 0 16px}
  .yearmark .y{font-family:var(--display);font-weight:900;font-size:clamp(32px,4.6vw,54px);letter-spacing:-.03em;line-height:1}
  .yearmark .year-link{color:var(--ink);text-decoration:none}
  .yearmark .year-link:hover{color:var(--redline)}
  .yearmark .r{flex:1;height:2px;background:var(--ink)}
  .yearmark .c{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ink-faint);text-transform:uppercase}

  /* 84 cards is 6,900 DOM nodes and a 58,000px document, and scrolling it cost
     43ms a frame on a throttled phone against a 16ms budget — 155ms at worst,
     which reads as a lurch rather than a slow scroll. content-visibility lets
     the browser skip layout and paint entirely for the cards that are nowhere
     near the viewport. contain-intrinsic-size supplies a stand-in height so the
     scrollbar stays honest, and the `auto` keyword makes the browser remember
     each card's real height once it has been rendered once, so the bar stops
     drifting as you go. The reveal observer still fires: the box is laid out,
     only its contents are skipped. */
  .file{position:relative;background:var(--paper-raised);border:1px solid var(--rule-strong);border-left:4px solid var(--redline);box-shadow:var(--shadow);margin:20px 0 24px;opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease;content-visibility:auto;contain-intrinsic-size:auto 560px}
  .file.in{opacity:1;transform:none}
  @media (prefers-reduced-motion:reduce){.file{opacity:1;transform:none}}
  .file.sev-amber{border-left-color:var(--amber-soft)}

  .filehead{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:20px;align-items:start;padding:22px 24px 18px;cursor:pointer;width:100%;text-align:left;background:none;border:none;font:inherit;color:inherit}
  .caseno{font-family:var(--mono);font-weight:700;font-size:13px;color:var(--ink-faint);white-space:nowrap;padding-top:6px}
  .caseno .n{display:block;font-size:24px;color:var(--ink);letter-spacing:-.02em}
  .headmid{min-width:0}
  .headmid .cat{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:var(--redline);margin-bottom:8px;overflow-wrap:anywhere}
  .headmid h3{font-family:var(--display);font-weight:800;font-size:clamp(20px,2.6vw,26px);line-height:1.12;letter-spacing:-.01em;margin:0 0 8px}
  .headmid .date{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-faint);text-transform:uppercase}
  .stamp{justify-self:end;font-family:var(--mono);font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-size:11px;padding:7px 10px;border:2px solid var(--redline);color:var(--redline);transform:rotate(-3deg);white-space:normal;overflow-wrap:anywhere;text-align:center;line-height:1.3;max-width:min(165px,100%)}
  .stamp.amber{border-color:var(--amber-soft);color:var(--amber)}

  .metrics{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.3fr);border-top:1px dashed var(--rule-strong);margin:0 24px}
  /* Padding on both sides so the text never crowds the divider it sits next to. */
  .metric{min-width:0;padding:15px 26px;border-right:1px dashed var(--rule)}
  .metric:first-child{padding-left:0}
  .metric:last-child{border-right:none;padding-right:0}
  .metric .mk{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:var(--ink-faint);margin-bottom:6px;display:flex;align-items:center;gap:7px}
  .metric .mv{font-size:15.5px;line-height:1.35;color:var(--ink);overflow-wrap:anywhere}
  .metric .mv b{font-family:var(--display);font-weight:800;letter-spacing:-.01em}
  .est{font-family:var(--mono);font-weight:700;font-size:10.5px;letter-spacing:.1em;color:var(--amber);border:1px solid var(--amber-soft);padding:1px 4px}
  .mono{font-family:var(--mono);font-size:.9em;overflow-wrap:anywhere}
  .expandbar{display:block;width:100%;padding:12px 24px 18px;font:inherit;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;text-align:left;color:var(--ink-faint);background:none;border:0;cursor:pointer;user-select:none}
  .expandbar:hover{color:var(--redline)}
  .case-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-right:14px}
  .case-actions .expandbar{flex:1}
  .case-share{flex:0 0 auto;max-width:100%;padding:6px 8px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--constructive);background:transparent;border:1px solid var(--rule-strong);cursor:pointer}
  .case-share:hover{border-color:var(--constructive)}

  .filebody{display:grid;grid-template-rows:0fr;overflow:hidden;transition:grid-template-rows var(--t-slow) var(--ease)}
  .file.open .filebody{grid-template-rows:1fr}
  .filebody-inner{min-height:0;overflow:hidden;padding:2px 24px 22px;
    opacity:0;transform:translateY(-6px);
    transition:opacity var(--t) var(--ease),transform var(--t) var(--ease)}
  .file.open .filebody-inner{opacity:1;transform:none}
  .field{padding:18px 0;border-bottom:1px dashed var(--rule)}
  .field:last-child{border-bottom:none}
  .field .k{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:11px;color:var(--ink-faint);margin-bottom:8px;display:flex;align-items:center;gap:8px}
  .field .k::before{content:"";width:12px;height:2px;background:var(--redline)}
  .field.dodge .k{color:var(--redline)} .field.dodge .k::before{background:var(--redline)}
  .field.alt .k::before{background:var(--constructive)}
  .field .v{font-size:17px;line-height:1.62;color:var(--ink);max-width:70ch;overflow-wrap:anywhere}
  .field.alt{background:linear-gradient(0deg,rgba(31,92,84,.06),rgba(31,92,84,.06));margin:0 -24px;padding:18px 24px;border-bottom:none}
  .field.alt .k{color:var(--constructive)} .field.alt .v{color:#14413b}
  .field.alleg .v{color:var(--ink-soft)} .field.alleg .v em{color:var(--ink);font-style:normal;font-weight:500}
  .field.pos .v{color:var(--ink-soft);font-style:italic}

  .propchips{display:flex;flex-wrap:wrap;gap:8px}
  .prop{font-size:15px;background:var(--paper-sunken);border:1px solid var(--rule);padding:5px 11px}
  .prop b{font-weight:500} .prop small{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);display:block}

  .sources{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}
  .source-wrap{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;max-width:100%}
  .source-wrap.reader .src{flex-direction:column;align-items:flex-start}
  .source-legend{margin:0 0 10px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
  .tier-badge{display:inline-block;margin-right:6px;padding:1px 5px;border:1px solid var(--rule-strong);font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;vertical-align:middle}
  .tier-badge.tier-1,.source-wrap.tier-1 .tier-badge{border-color:var(--constructive);color:var(--constructive)}
  .tier-badge.tier-2,.source-wrap.tier-2 .tier-badge{border-color:var(--ink-soft);color:var(--ink-soft)}
  .tier-badge.tier-3,.source-wrap.tier-3 .tier-badge{border-color:var(--amber-soft);color:var(--amber-soft)}
  .source-wrap.tier-3 .src{border-style:dashed}
  .src-archive{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);text-decoration:none;border-bottom:1px dotted var(--rule-strong)}
  .src-archive:hover,.src-archive:focus-visible{color:var(--constructive)}
  .src{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:6px 10px;border:1px solid var(--rule-strong);color:var(--constructive);text-decoration:none;transition:.15s;display:inline-flex;align-items:center;gap:4px;max-width:100%;overflow-wrap:anywhere}
  .src:hover{border-color:var(--constructive);background:rgba(31,92,84,.06)}
  .src.todo{color:var(--redline-soft);border-style:dashed;border-color:var(--redline-soft);cursor:default}
  .src.todo:hover{background:none}
  .src.reader{display:inline-flex;flex-direction:column;gap:2px;align-items:flex-start}
  .src.reader small{font-size:10.5px;letter-spacing:.1em;color:var(--ink-faint);text-transform:uppercase}
  .suggest-source{display:inline-block;margin-top:12px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);text-decoration:none;border-bottom:1px dashed var(--rule-strong);padding-bottom:2px}
  .suggest-source:hover,.suggest-source:focus-visible{color:var(--redline);border-bottom-color:var(--redline)}

  .queue-controls{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:16px}
  .queue-controls label{display:flex;flex-direction:column;gap:5px;flex:1 1 220px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}
  .queue-warning{margin:0 0 18px;padding:11px 14px;border-left:4px solid var(--redline);background:var(--paper-sunken);font-family:var(--mono);font-size:11px;color:var(--ink-soft)}
  .queue-list{display:grid;gap:10px;margin:0 0 22px;padding:0;list-style:none}
  .queue-item{display:grid;gap:12px;padding:16px 18px;border:1px solid var(--rule-strong);border-left:4px solid var(--redline);background:var(--paper-raised)}
  .queue-item.selected{border-color:var(--redline);box-shadow:var(--shadow)}
  .queue-item-head{display:grid;gap:4px}
  .queue-item-head h3{margin:0;font-family:var(--display);font-size:18px;line-height:1.25}
  .queue-item-meta{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}
  .queue-badge{justify-self:start;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--amber);border:1px solid var(--amber-soft);padding:2px 6px}
  .queue-item-actions{display:flex;flex-wrap:wrap;gap:8px}
  .queue-empty{margin:0;padding:18px;border:1px dashed var(--rule-strong);font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);text-align:center}
  .meta-unverified{color:var(--amber)}
  .danger-action{padding:10px 14px;border:1px solid var(--redline);background:none;color:var(--redline);font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
  .danger-action:hover:not(:disabled),.danger-action:focus-visible{background:var(--redline);color:var(--paper)}
  .danger-action:disabled{opacity:.5;cursor:not-allowed}
  .danger-action[aria-busy="true"],.case-share[aria-busy="true"]{cursor:wait}

  .more-cases{opacity:0;transition:opacity var(--t-slow) var(--ease)}
  .more-cases.is-open{opacity:1}
  .more-cases[hidden]{display:none}
  .more-toggle{margin-left:6px;padding:0;border:0;background:none;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--redline);text-decoration:underline;cursor:pointer}
  .more-toggle:hover,.more-toggle:focus-visible{color:var(--ink)}

  .to-top{position:fixed;right:20px;bottom:20px;z-index:40;display:inline-flex;align-items:center;gap:6px;padding:10px 13px;border:1px solid var(--rule-strong);background:var(--paper-raised);color:var(--ink-soft);font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .18s,transform .18s,visibility .18s}
  .to-top.visible{opacity:1;visibility:visible;transform:none}
  .to-top:hover,.to-top:focus-visible{border-color:var(--redline);color:var(--redline)}

  .minister-profile{color:inherit;text-decoration:none;border-bottom:1px dotted var(--rule-strong)}
  .minister-profile:hover,.minister-profile:focus-visible{color:var(--redline);border-bottom-color:var(--redline)}

  .thread-list{display:grid;gap:12px;margin:20px 0 0;padding:0;list-style:none}
  .thread-list li{display:grid;gap:4px;padding-bottom:12px;border-bottom:1px dashed var(--rule)}
  .thread-list a{font-family:var(--display);font-size:20px;color:var(--ink);text-decoration:none}
  .thread-list a:hover,.thread-list a:focus-visible{color:var(--redline)}

  .share-landing{background:var(--paper)}
  .share-card{padding:48px 0 64px;max-width:70ch}
  .share-card h1{font-family:var(--display);font-size:clamp(28px,5vw,42px);line-height:1.08;margin:0 0 12px}

  .lang-switch{display:inline-flex;gap:6px;margin-left:auto}
  .lang-switch button{padding:4px 8px;border:1px solid var(--rule-strong);background:var(--paper);font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);cursor:pointer}
  .lang-switch button[aria-pressed="true"]{border-color:var(--redline);color:var(--redline)}
  .site-nav{align-items:center}

  .target-case{margin:0 0 20px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
  .target-case.error{color:var(--redline)}
  .review-section{margin-top:48px;padding-top:28px;border-top:2px solid var(--rule-strong)}
  .review-section h2{margin:0 0 8px;font-family:var(--display);font-size:24px}
  .suggestion-list{display:grid;gap:16px;margin:16px 0 0;padding:0;list-style:none}
  .suggestion{display:grid;gap:10px;padding:18px;border:1px solid var(--rule-strong);border-left:4px solid var(--amber-soft);background:var(--paper-raised)}
  .suggestion h3{margin:0;font-family:var(--display);font-size:17px}
  .suggestion-url{font-family:var(--mono);font-size:11px;overflow-wrap:anywhere;color:var(--constructive)}
  .suggestion-note{margin:0;color:var(--ink-soft)}
  .suggestion label{display:grid;gap:6px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .suggestion input{width:100%;padding:9px 11px;border:1px solid var(--rule-strong);border-radius:0;background:var(--paper);font:15px/1.5 var(--serif);letter-spacing:normal;text-transform:none;color:var(--ink)}
  .suggestion input:focus{outline:2px solid var(--redline);outline-offset:-1px}

  /* ---------- case pages, the claim-vs-record head-to-head, and the clock ---------- */
  .casefile-page,.claims-page{padding-top:26px;padding-bottom:64px}
  .crumbs{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:20px}
  .crumbs a{color:var(--ink-soft);text-decoration:none;border-bottom:1px dotted var(--rule-strong)}
  .crumbs a:hover,.crumbs a:focus-visible{color:var(--redline);border-bottom-color:var(--redline)}

  .casefile{background:var(--paper-raised);border:1px solid var(--rule-strong);border-left:4px solid var(--redline);box-shadow:var(--shadow);padding:32px 32px 40px}
  .casefile.sev-amber{border-left-color:var(--amber-soft)}
  .casefile-head{padding-bottom:22px;border-bottom:2px solid var(--ink)}
  .casefile-head .title{font-size:clamp(28px,4.6vw,50px);line-height:1.04;margin-bottom:10px}
  .casefile-date{margin:0 0 14px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
  .casefile-head .stamp{display:inline-block;transform:none;margin:0}

  /* The clock. A number that goes up on its own is the point, so it leads. */
  .clock{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;margin:22px 0 0;padding:16px 18px;background:var(--paper-sunken);border-left:4px solid var(--redline)}
  .clock-num{font-family:var(--display);font-weight:900;font-size:clamp(30px,4.4vw,46px);line-height:.92;letter-spacing:-.03em;color:var(--redline)}
  .clock-unit{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}
  .clock-line{flex:1 1 260px;min-width:0;font-size:16px;line-height:1.5;color:var(--ink)}

  .case-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 26px;border-bottom:1px dashed var(--rule);padding:6px 0}
  .case-metrics .metric{border-right:none;padding:16px 0}

  .case-field{padding:24px 0;border-bottom:1px dashed var(--rule)}
  .case-field:last-of-type{border-bottom:none}
  .case-field-k{margin:0 0 10px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:11px;color:var(--ink-faint);display:flex;align-items:center;gap:8px}
  .case-field-k::before{content:"";width:12px;height:2px;background:var(--redline);flex:0 0 auto}
  .case-field-v{font-size:17.5px;line-height:1.62;color:var(--ink);max-width:74ch;overflow-wrap:anywhere}
  .case-field.alleg .case-field-v{color:var(--ink-soft)}
  .case-field.alleg .case-field-v em{color:var(--ink);font-style:normal;font-weight:500}
  .case-field.alt{background:linear-gradient(0deg,rgba(31,92,84,.06),rgba(31,92,84,.06));margin:0 -32px;padding:24px 32px}
  .case-field.alt .case-field-k{color:var(--constructive)}
  .case-field.alt .case-field-k::before{background:var(--constructive)}
  .case-field.alt .case-field-v{color:#14413b}
  .case-caveat{margin:12px 0 0;font-family:var(--mono);font-size:11px;line-height:1.7;color:var(--ink-faint);max-width:74ch}

  /* Head-to-head. Two columns, equal weight, so a reader can disagree with us. */
  .headtohead{padding:26px 0;border-bottom:1px dashed var(--rule)}
  .h2h-title{margin:0 0 16px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:11px;color:var(--redline);display:flex;align-items:center;gap:8px}
  .h2h-title::before{content:"";width:12px;height:2px;background:var(--redline);flex:0 0 auto}
  .h2h-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
  .h2h-side{padding:18px 20px;border:1px solid var(--rule-strong);background:var(--paper)}
  .h2h-said{border-left:3px solid var(--ink-faint)}
  .h2h-record{border-left:3px solid var(--redline)}
  .h2h-label{margin:0 0 10px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}
  .h2h-record .h2h-label{color:var(--redline)}
  .h2h-verdict{margin:0 0 10px;font-family:var(--display);font-weight:800;font-size:17px;line-height:1.25;letter-spacing:-.01em;color:var(--redline)}
  .h2h-body{margin:0;font-size:16px;line-height:1.6;color:var(--ink-soft);overflow-wrap:anywhere}
  .h2h-said .h2h-body{font-style:italic}

  .holders{display:grid;gap:10px;margin:0;padding:0;list-style:none}
  .holder{display:grid;gap:2px;padding-bottom:10px;border-bottom:1px dashed var(--rule)}
  .holder:last-child{border-bottom:none;padding-bottom:0}
  .holder-role{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}
  .holder-name{font-size:17px;color:var(--ink)}

  .src-items{display:grid;gap:9px;margin:12px 0 0;padding:0;list-style:none}
  .src-item{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
  .case-actions-row{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 0}

  .related{max-width:1080px;margin:40px auto 0;padding:24px 0 0;border-top:1px solid var(--rule)}
  .related-title{margin:0 0 14px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--redline)}
  .related-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0;padding:0;list-style:none}
  .related-item{display:grid;gap:5px;padding:14px 16px;border:1px solid var(--rule-strong);background:var(--paper-raised)}
  .related-link{font-family:var(--display);font-weight:600;font-size:16px;line-height:1.35;color:var(--ink);text-decoration:none}
  .related-item:hover{border-color:var(--redline)}
  .related-item:hover .related-link{color:var(--redline)}
  .related-meta,.related-why{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
  .related-why{color:var(--constructive)}
  /* The permalink out of an open ledger card. Deliberately quiet: the expander
     two buttons above it is the primary action, and two loud CTAs that both say
     "open" is the redundancy this replaced. */
  .case-permalink{display:flex;flex-wrap:wrap;gap:6px 16px;justify-content:flex-end;margin:0;padding:14px 24px 20px}
  .case-permalink a{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
  .case-permalink a:hover{color:var(--redline)}
  /* Jump links on the merged corrections desk. */
  .page-jump{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 26px}
  .page-jump a{padding:6px 9px;border:1px solid var(--rule-strong);font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);text-decoration:none}
  .page-jump a:hover{border-color:var(--redline);color:var(--redline)}
  .case-prevnext{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px}
  .prevnext{display:block;padding:16px 18px;border:1px solid var(--rule-strong);background:var(--paper-raised);text-decoration:none;color:var(--ink);font-size:16px;line-height:1.35}
  .prevnext span{display:block;margin-bottom:6px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}
  .prevnext:hover,.prevnext:focus-visible{border-color:var(--redline);color:var(--redline)}
  .prevnext.next{text-align:right}

  .claim-list{display:grid;gap:22px;margin:24px 0 0;padding:0;list-style:none}
  .claim-row{padding-bottom:22px;border-bottom:1px solid var(--rule)}
  .claim-row:last-child{border-bottom:none}
  .claim-case{margin:0 0 12px;font-family:var(--display);font-weight:700;font-size:19px;line-height:1.3}
  .claim-case a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--rule-strong)}
  .claim-case a:hover,.claim-case a:focus-visible{color:var(--redline);border-bottom-color:var(--redline)}
  .claim-meta{display:block;margin-top:5px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-weight:400}

  @media (max-width:640px){
    .casefile{padding:22px 18px 30px}
    .case-field.alt{margin-left:-18px;margin-right:-18px;padding-left:18px;padding-right:18px}
    .case-prevnext{grid-template-columns:1fr}
    .prevnext.next{text-align:left}
    .clock{padding:14px 15px}
  }

  footer{border-top:2px solid var(--ink);margin-top:40px;padding:38px 0 60px;background:var(--paper-sunken)}
  footer .grid{display:grid;grid-template-columns:1.4fr 1fr;gap:40px}
  footer h4{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:var(--redline);margin:0 0 12px}
  footer p{font-size:14.5px;color:var(--ink-soft);line-height:1.6;margin:0 0 10px;max-width:62ch}
  footer .fine{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin-top:26px;line-height:1.9}
  .empty{padding:60px 0;text-align:center;font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:12px;color:var(--ink-faint)}

  .form-page,.dashboard-page{padding-top:44px;padding-bottom:64px}
  .submission-guidance{max-width:78ch;padding:20px 24px;margin-bottom:28px;border-left:4px solid var(--amber-soft);background:var(--paper-sunken)}
  .submission-guidance h2{margin:0 0 8px;font-family:var(--display);font-size:24px}
  .submission-guidance ul{margin:0;padding-left:20px;color:var(--ink-soft)}
  /* The corrections desk carries eight explanatory panels. Stacked, that is a
     very long scroll of prose nobody reaches the end of; as a two-column board
     a reader can find the one panel that applies to them. `align-items:start`
     matters: without it every panel in a row stretches to the tallest one and
     the short ones grow acres of dead space. */
  .desk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start;margin-top:8px}
  .desk-grid .submission-guidance{margin-bottom:0;height:100%}
  .submission-form{display:grid;gap:20px;max-width:860px}
  .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
  .submission-form label{display:grid;gap:7px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .submission-form input,.submission-form textarea{width:100%;padding:11px 12px;border:1px solid var(--rule-strong);border-radius:0;background:var(--paper-raised);font:16px/1.5 var(--serif);letter-spacing:normal;text-transform:none;color:var(--ink);resize:vertical}
  .submission-form input:focus,.submission-form textarea:focus{outline:2px solid var(--redline);outline-offset:-1px}
  .optional{color:var(--ink-faint);font-size:11px}
  .form-submit{justify-self:start;padding:11px 14px;background:var(--redline);border:1px solid var(--redline);color:#F4F4EF;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
  /* Two different disabled states, and they must not look alike. A wait cursor
     on a button that is merely unavailable promises something is happening when
     nothing is: only show it while a request is actually in flight. */
  .form-submit[aria-busy="true"]{cursor:wait;opacity:.65}
  .form-submit:disabled:not([aria-busy="true"]){cursor:not-allowed;opacity:.5}
  .form-note{margin:0;font-family:var(--mono);font-size:11px;line-height:1.7;letter-spacing:.04em;color:var(--ink-faint)}
  .form-note.blocked{color:var(--redline)}
  .form-note code{font-family:var(--mono);background:var(--paper-sunken);padding:1px 4px}
  #turnstile{min-height:65px}
  /* A field only a script fills in. Off-canvas rather than display:none, because
     some bots skip hidden inputs but not positioned ones. */
  .honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
  .meta-unverified{color:var(--redline)}
  .form-status{min-height:1.6em;margin:0;color:var(--constructive)}
  .form-status a{color:var(--constructive);text-decoration:underline;text-underline-offset:2px}
  .form-status a:hover,.form-status a:focus-visible{color:var(--redline)}
  .form-status.error{color:var(--redline)}

  /* Success / notice dialog (submission desk, etc.) */
  .toast-overlay{position:fixed;inset:0;z-index:100;display:flex;align-items:center;
    justify-content:center;padding:24px;background:rgba(25,27,31,.42);
    animation:toast-fade-in var(--t) var(--ease)}
  @keyframes toast-fade-in{from{opacity:0}to{opacity:1}}
  .toast-dialog{max-width:440px;width:100%;background:var(--paper-raised);
    border:1px solid var(--rule-strong);box-shadow:var(--shadow-lift);padding:28px 28px 24px;
    animation:toast-rise-in var(--t-slow) var(--ease)}
  @keyframes toast-rise-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
  .toast-dialog.unverified{border-left:4px solid var(--amber-soft)}
  .toast-dialog.verified{border-left:4px solid var(--constructive)}
  .toast-title{font-family:var(--display);font-weight:800;font-size:22px;line-height:1.15;
    letter-spacing:-.01em;margin:0 0 12px;color:var(--ink)}
  .toast-body{margin:0 0 22px;font-size:16.5px;line-height:1.55;color:var(--ink-soft)}
  .toast-ref{margin:0 0 18px;font-family:var(--mono);font-size:11px;line-height:1.7;letter-spacing:.04em;color:var(--ink-soft)}
  .toast-ref code{font-size:12px;letter-spacing:.02em;text-transform:none;color:var(--ink);background:var(--paper-sunken);padding:2px 6px;border:1px solid var(--rule)}
  .toast-dismiss{width:100%}

  /* API-only cases: live on the ledger before the next static deploy. */
  .live-badge{display:inline-block;margin-left:8px;padding:2px 7px;border:1px dashed var(--amber-soft);
    font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--amber);
    vertical-align:middle;white-space:normal;line-height:1.45}
  .live-badge.inline{display:block;margin:0 0 8px;max-width:100%}

  .submission-form select{width:100%;padding:11px 12px;border:1px solid var(--rule-strong);border-radius:0;
    background:var(--paper-raised);font:16px/1.5 var(--serif);letter-spacing:normal;text-transform:none;color:var(--ink)}
  .submission-form select:focus{outline:2px solid var(--redline);outline-offset:-1px}

  /* Password field with show/hide (review console) */
  .password-field{display:flex;gap:8px;align-items:stretch}
  .password-field input{flex:1;min-width:0}
  .password-toggle{flex:0 0 auto;font-family:var(--mono);font-size:11px;letter-spacing:.08em;
    text-transform:uppercase;padding:0 14px;border:1px solid var(--rule-strong);
    background:var(--paper-sunken);color:var(--ink-soft);cursor:pointer;
    transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),
      color var(--t-fast) var(--ease)}
  .password-toggle:hover,.password-toggle:focus-visible{border-color:var(--ink-faint);color:var(--ink)}
  .password-toggle[aria-pressed="true"]{background:var(--paper-raised);border-color:var(--redline);color:var(--redline)}

  /* ---------- RTI generator ---------- */
  .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
  .rti-case-picker{display:grid;gap:10px}
  .rti-case-picker input[type="search"]{width:100%;padding:11px 12px;border:1px solid var(--rule-strong);background:var(--paper-raised);font:16px/1.5 var(--serif);color:var(--ink)}
  .rti-case-picker input[type="search"]:focus{outline:2px solid var(--redline);outline-offset:-1px}
  .rti-case-picker select{padding:6px 4px}
  .rti-case-picker select option{padding:7px 8px;font:15.5px/1.5 var(--serif)}
  .rti-case-picker select option:checked{background:var(--redline);color:#F4F4EF}
  .rti-form select{width:100%;padding:11px 12px;border:1px solid var(--rule-strong);border-radius:0;background:var(--paper-raised);font:16px/1.5 var(--serif);letter-spacing:normal;text-transform:none;color:var(--ink)}
  .rti-form select:focus{outline:2px solid var(--redline);outline-offset:-1px}
  /* The rest of the form is a stack of grid labels; a checkbox is the one row
     that has to sit beside its text instead of above it. */
  .submission-form label.rti-check{display:flex;gap:10px;align-items:flex-start;text-transform:none;letter-spacing:normal;font-family:var(--serif);font-size:15.5px;color:var(--ink)}
  .rti-check input{width:18px;height:18px;flex:0 0 auto;margin-top:2px;accent-color:var(--redline)}
  .rti-output{max-width:860px;margin:36px 0 0}
  .rti-output-head{display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;justify-content:space-between}
  .rti-output-head h2{margin:0;font-family:var(--display);font-size:26px}
  .rti-output-head .case-actions-row{margin:0}
  .rti-output .form-status{margin:10px 0 0}
  .rti-letter{margin:14px 0 0;padding:26px 24px;border:1px solid var(--rule-strong);background:var(--paper-raised);font-family:var(--mono);font-size:13px;line-height:1.85;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;max-height:60vh;overflow-y:auto}
  .rti-letter:focus{outline:2px solid var(--redline);outline-offset:-1px}
  .rti-help{max-width:940px;margin:44px 0 0;padding-top:26px;border-top:2px solid var(--rule-strong)}
  .rti-help h2{margin:0 0 18px;font-family:var(--display);font-size:26px}
  .rti-help-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 32px}
  .rti-help h3{margin:0 0 6px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--redline)}
  .rti-help p{margin:0;font-family:var(--serif);font-size:15.5px;line-height:1.65;color:var(--ink-soft)}
  .rti-help .form-note{margin-top:24px;max-width:78ch}
  /* The one action on a case page that does something rather than links onward. */
  .case-share.act{color:var(--redline);border-color:var(--redline)}
  .case-share.act:hover{background:var(--redline);color:#F4F4EF}

  /* Printing this page means printing the application, nothing else. */
  @media print{
    .masthead,.rti-form,.submission-guidance,.rti-help,.rti-output-head,.rti-output .form-status,footer,.to-top{display:none !important}
    .rti-page{padding:0}
    .rti-letter{max-height:none;overflow:visible;border:0;padding:0;background:none;color:#000;font-size:11.5pt;line-height:1.6}
  }

  .dashboard-controls{display:flex;gap:16px;align-items:end;margin-bottom:20px}
  .dashboard-controls .search{display:grid;gap:7px;max-width:480px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .dashboard-controls .search input{padding-left:14px}
  .dash-subnav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px;font-family:var(--mono);
    font-size:11px;letter-spacing:.1em;text-transform:uppercase}
  .dash-subnav a{padding:10px 14px;border:1px solid var(--rule-strong);color:var(--ink-soft);
    text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
  .dash-subnav a:hover,.dash-subnav a:focus-visible,.dash-subnav a[aria-current="page"]{
    border-color:var(--redline);color:var(--redline)}
  .dashboard-count{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
  .table-wrap{overflow-x:auto;border:1px solid var(--rule-strong);background:var(--paper-raised)}
  .minister-table{width:100%;border-collapse:collapse;min-width:790px;font-size:15.5px;font-family:var(--serif)}
  .minister-table th,.minister-table td{padding:14px;border-bottom:1px solid var(--rule);vertical-align:top;text-align:left}
  .minister-table thead th{background:var(--paper-sunken);font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .minister-table tbody th{min-width:220px;font-family:var(--display);font-size:18px}
  .minister-table tbody th span{display:block}
  .minister-table small{display:block;margin-top:7px;font-family:var(--mono);font-size:12px;line-height:1.7;letter-spacing:.01em;font-weight:400;color:var(--ink-soft)}

  .lang-notice{margin:14px 0 0;padding:10px 13px;border-left:3px solid var(--amber-soft);background:var(--paper-sunken);font-family:var(--mono);font-size:11px;line-height:1.7;color:var(--ink-soft)}
  .lang-notice[hidden]{display:none}

  .resume-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}
  .resume-back{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);text-decoration:none;border-bottom:1px dotted var(--rule-strong)}
  .resume-back:hover,.resume-back:focus-visible{color:var(--redline);border-bottom-color:var(--redline)}
  .resume-share{display:flex;flex-wrap:wrap;gap:7px}
  .resume-share-btn{padding:8px 12px;border:1px solid var(--rule-strong);background:var(--paper-raised);font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--constructive);text-decoration:none;cursor:pointer}
  .resume-share-btn:hover,.resume-share-btn:focus-visible{border-color:var(--constructive);background:rgba(31,92,84,.06)}

  .resume{background:var(--paper-raised);border:1px solid var(--rule-strong);border-left:4px solid var(--redline);box-shadow:var(--shadow);padding:32px 32px 40px}
  .resume-head{display:flex;gap:28px;align-items:flex-start;padding-bottom:24px;border-bottom:2px solid var(--ink)}
  .resume-photo{flex:0 0 auto;width:132px;height:160px;border:1px dashed var(--rule-strong);background:var(--paper-sunken);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:10px}
  .resume-photo-initials{font-family:var(--display);font-weight:800;font-size:34px;letter-spacing:-.01em;color:var(--ink-faint)}
  .resume-photo-caption{font-family:var(--mono);font-size:10.5px;line-height:1.5;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}
  .resume-heading{min-width:0}
  .resume-heading .title{font-size:clamp(28px,4.6vw,44px)}
  .resume-verdict{margin:16px 0 0;font-size:clamp(17px,2vw,20px);line-height:1.45;color:var(--redline);font-weight:500;max-width:54ch}
  .resume-since{margin:8px 0 0;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}

  .resume-section{padding:26px 0;border-bottom:1px dashed var(--rule)}
  .resume-h2{margin:0 0 16px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:12px;color:var(--redline);display:flex;align-items:center;gap:8px}
  .resume-h2::before{content:"";width:14px;height:2px;background:var(--redline)}
  .resume-body{margin:0 0 10px;font-size:16.5px;line-height:1.62;color:var(--ink)}
  .resume-body:last-child{margin-bottom:0}

  .resume-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:20px;margin-bottom:18px}
  .resume-metric{min-width:0}
  .resume-metric-num{display:block;font-family:var(--display);font-weight:800;font-size:clamp(26px,3.4vw,38px);letter-spacing:-.02em;line-height:1;color:var(--ink);overflow-wrap:anywhere}
  .resume-metric-lbl{display:block;margin-top:8px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:11px;color:var(--ink-faint);line-height:1.55}
  .resume-caveat{margin:0;padding:12px 14px;border-left:4px solid var(--amber-soft);background:var(--paper-sunken);font-family:var(--mono);font-size:11px;line-height:1.75;color:var(--ink-soft)}

  .resume-contact{display:grid;gap:14px;margin:0}
  .resume-contact>div{display:grid;gap:3px}
  .resume-contact dt{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:var(--ink-faint)}
  .resume-contact dd{margin:0;font-size:16px;color:var(--ink);overflow-wrap:anywhere}

  .resume-folds{display:grid;gap:12px;padding-top:26px}
  .resume-fold{border:1px solid var(--rule-strong);background:var(--paper)}
  .resume-fold-summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:16px 18px}
  .resume-fold-summary::-webkit-details-marker{display:none}
  .resume-fold-summary:hover .resume-fold-title,.resume-fold-summary:focus-visible .resume-fold-title{color:var(--redline)}
  .resume-fold-title{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:11.5px;color:var(--ink)}
  .resume-fold-hint{flex:1;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink-faint);min-width:0}
  .resume-fold-plus{margin-left:auto;flex:0 0 auto;font-family:var(--mono);font-weight:700;font-size:15px;color:var(--redline);transition:transform .25s ease}
  .resume-fold[open] .resume-fold-plus{transform:rotate(45deg)}
  .resume-fold-body{padding:2px 18px 20px}

  .resume-comps{display:grid;gap:10px;margin:0;padding:0;list-style:none}
  .resume-comp{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px;padding-bottom:10px;border-bottom:1px dashed var(--rule)}
  .resume-comp:last-child{border-bottom:none;padding-bottom:0}
  .resume-comp-label{font-size:16.5px;color:var(--ink)}
  .resume-comp-count{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--redline);white-space:nowrap}

  .resume-jobs{display:grid;gap:16px;margin:0;padding:0;list-style:none}
  .resume-job{padding:18px 20px;border:1px solid var(--rule);border-left:3px solid var(--rule-strong);background:var(--paper-raised)}
  .resume-job-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-bottom:8px}
  .resume-job-role{font-family:var(--display);font-weight:700;font-size:16.5px;color:var(--ink)}
  .resume-job-date{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap}
  .resume-job-project{margin:0 0 8px;font-size:17px;line-height:1.4}
  .resume-job-cat{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}
  .resume-job-desc{margin:0 0 10px;font-size:15px;line-height:1.6;color:var(--ink-soft)}
  .resume-job-dodge{margin:0 0 10px;font-size:15px;line-height:1.6;color:var(--ink)}
  .resume-job-dodge-k{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--redline);margin-right:6px}
  .resume-job-outcome{margin:0;display:inline-block;font-family:var(--mono);font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:11px;padding:5px 9px;border:2px solid var(--redline);color:var(--redline)}
  .resume-job-outcome.amber{border-color:var(--amber-soft);color:var(--amber)}

  .resume-outcomes{margin:0;padding-left:20px;font-size:15.5px;line-height:1.7;color:var(--ink-soft)}
  .resume-fine{margin:14px 0 0;font-family:var(--mono);font-size:11px;letter-spacing:.04em;line-height:1.7;color:var(--ink-faint)}

  @media (max-width:640px){
    .resume{padding:22px 18px 30px}
    .resume-head{flex-direction:column;align-items:flex-start;gap:16px}
    .resume-photo{width:104px;height:126px}
    .resume-metrics{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:16px}
    .resume-fold-summary{flex-wrap:wrap;gap:6px 12px}
    .resume-fold-hint{flex:1 1 100%;order:3}
    .resume-fold-body{overflow-wrap:anywhere}
    /* Long date ranges ("Approved 2020. New House opened May 2023") are wider
       than a phone if kept on one line, and pushed the whole card sideways. */
    .resume-job-date,.resume-comp-count{white-space:normal}
    .resume-comp{display:grid;gap:3px;justify-items:start}
  }

  @media (max-width:760px){
    body{font-size:16px}
    .wrap,.method details{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
    .flag{align-items:flex-start;flex-direction:column;gap:4px;line-height:1.45}
    .eyebrow{letter-spacing:.2em}
    /* Five nav items wrapped to three rows on a phone and ate the top of every
       page, so they became one scrolling row. But the language switch was pinned
       sticky over the right end of that row with an opaque background, which cut
       "File an RTI" off mid-word and made the switch read as the end of the row.
       Two of five destinations were effectively invisible on a phone.

       The links now scroll inside their own box and the switch sits outside it,
       so nothing is ever occluded. The scrolling-shadow trick below is the cue
       that there is more: the right-hand shadow is painted with a `scroll`
       attachment over a `local` mask, so it appears only while there is content
       still to reach and vanishes at the end of the row. No JS, and it cannot
       lie about the state the way a fixed shadow did. */
    .site-nav{margin-top:12px;flex-wrap:nowrap;gap:8px;align-items:center}
    .nav-links{flex:1 1 auto;min-width:0;flex-wrap:nowrap;max-width:100%;
      overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:4px;
      -webkit-overflow-scrolling:touch;scrollbar-width:none;
      background:
        linear-gradient(to right,var(--paper) 40%,rgba(233,233,228,0)) left center/26px 100% no-repeat local,
        linear-gradient(to left,var(--paper) 40%,rgba(233,233,228,0)) right center/26px 100% no-repeat local,
        radial-gradient(farthest-side at 0 50%,rgba(25,27,31,.13),rgba(25,27,31,0)) left center/9px 100% no-repeat scroll,
        radial-gradient(farthest-side at 100% 50%,rgba(25,27,31,.13),rgba(25,27,31,0)) right center/9px 100% no-repeat scroll}
    .nav-links::-webkit-scrollbar{display:none}
    .site-nav a,.site-nav .lang-switch button{flex:0 0 auto;white-space:nowrap;min-height:44px;display:inline-flex;align-items:center;padding:10px 12px}
    .site-nav .lang-switch{flex:0 0 auto;white-space:nowrap}
    .related-list{grid-template-columns:1fr}
    .case-permalink{padding:12px 16px 18px}
    .page-jump{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
    .page-jump::-webkit-scrollbar{display:none}
    .page-jump a{flex:0 0 auto;white-space:nowrap}
    .docket{grid-template-columns:repeat(2,1fr)} .docket .cell:nth-child(2){border-right:none}
    .controls{padding:10px 0}
    .controls .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
    .search{min-width:0}
    select.sort{max-width:150px}
    /* min-width:0 is load-bearing: a flex scroller inside a grid item still
       takes its min-content width from the chips, so at 320px the row stretched
       the page to 344px instead of scrolling inside itself. max-width:100% does
       not help once the track has already grown. */
    .chips{grid-column:1 / -1;min-width:0;flex-wrap:nowrap;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;padding:2px 0 5px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
    .chip{flex:0 0 auto;white-space:nowrap;font-size:11px;padding:11px 14px;min-height:44px;display:inline-flex;align-items:center}
    .filehead{grid-template-columns:1fr;gap:12px}
    .caseno{display:flex;align-items:baseline;gap:10px;padding-top:0}.caseno .n{display:inline}
    .stamp{justify-self:start;transform:none}
    .metrics{grid-template-columns:1fr;margin:0 24px}
    .metric{border-right:none;border-bottom:1px dashed var(--rule);padding:12px 0}.metric:last-child{border-bottom:none}
    footer .grid{grid-template-columns:1fr}
    .form-grid{grid-template-columns:1fr}
    .rti-help-grid,.desk-grid,.data-grid{grid-template-columns:1fr}
    .rtir-dates{margin-left:0;flex-basis:100%}
    .answered-summary{grid-template-columns:1fr}
    .answered-stat{border-right:none;border-bottom:1px dashed var(--rule)}
    .answered-stat:last-child{border-bottom:none}
    .rti-output-head{align-items:stretch;flex-direction:column;gap:10px}
    .rti-output-head .case-actions-row{width:100%}
    .rti-output-head .case-share{flex:1 1 auto;text-align:center}
    .dashboard-controls{align-items:stretch;flex-direction:column}
    .table-wrap{border:none;background:none;overflow-x:visible}
    /* That override exists for .minister-table, which restacks into cards at this
       width. The field-definition table does not restack, so it must keep its own
       scroller or it stretches the whole page sideways on a 320px screen. */
    .table-wrap.data-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;
      border:1px solid var(--rule-strong);background:var(--paper-raised)}
    .table-wrap.data-wrap .data-fields{min-width:420px}
    .minister-table{display:block;min-width:0;font-size:15px}
    .minister-table thead{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
    .minister-table tbody,.minister-table tr,.minister-table tbody th,.minister-table td{display:block;width:100%}
    .minister-table tr{margin-bottom:14px;border:1px solid var(--rule-strong);border-left:4px solid var(--redline);background:var(--paper-raised);box-shadow:var(--shadow)}
    .minister-table tbody th{min-width:0;padding:16px;border-bottom:1px dashed var(--rule)}
    .minister-table td{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:11px 16px;border-bottom:1px dashed var(--rule);text-align:right;overflow-wrap:anywhere}
    .minister-table td:last-child{border-bottom:none}
    .minister-table td::before{content:attr(data-label);flex:0 0 auto;max-width:45%;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);text-align:left}
    .minister-table td.table-empty{display:block;text-align:center;border-bottom:none}
    .more-toggle{display:inline-block;margin-left:0;padding:4px 0}
    .to-top{right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));padding:11px 13px;min-height:44px}
    .toast-overlay{align-items:flex-end;padding:0;background:rgba(25,27,31,.52)}
    .toast-dialog{max-width:none;width:100%;border-left:none;border-right:none;border-bottom:none;
      padding:22px 20px calc(18px + env(safe-area-inset-bottom));animation:toast-sheet-in var(--t-slow) var(--ease)}
    @keyframes toast-sheet-in{from{opacity:0;transform:translateY(100%)}to{opacity:1;transform:none}}
    .queue-controls{align-items:stretch;flex-direction:column}
    .queue-controls .case-share{width:100%;text-align:center;padding:12px 14px;min-height:44px}
  }
  @media (max-width:480px){
    .filehead{padding:18px 16px 14px}
    .metrics{margin:0 16px}
    .expandbar{padding:12px 16px 16px;min-height:44px}
    .case-share,.case-actions .case-share.act{min-height:44px;padding:11px 14px;display:inline-flex;align-items:center;justify-content:center}
    .case-actions{padding-right:8px;gap:6px}
    .filebody-inner{padding-left:16px;padding-right:16px}
    .field.alt{margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px}
    .prop,.src{overflow-wrap:anywhere}
    .form-page,.dashboard-page{padding-top:32px;padding-bottom:calc(64px + env(safe-area-inset-bottom))}
    .submission-guidance{padding:16px 18px}
    .form-submit{justify-self:stretch;width:100%;padding:14px;min-height:48px}
    .docket .cell{padding:16px 14px 18px}
    .docket .num{font-size:clamp(20px,6.2vw,28px)}
    .docket .lbl{font-size:10.5px;line-height:1.45}
    .live-badge{display:block;margin:6px 0 0;max-width:100%}
    /* The letter is monospaced and unwrappable below a point; on a narrow phone
       it scrolls sideways inside its own box rather than pushing the page out. */
    .rti-letter{padding:16px 14px;font-size:12px;line-height:1.8;max-height:55vh}
    .rti-output-head .case-share{flex:1 1 100%}
    .minister-table small a{overflow-wrap:anywhere}
  }

  /* ---------- party and government chips ---------- */
  .party-line{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0 0}
  .party-chip{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
    padding:2px 6px;border:1px solid var(--rule-strong);color:var(--ink-soft);white-space:nowrap}
  /* A coalition is not a person's party, so it must not look like one. */
  .party-chip.gov{border-style:dashed;color:var(--ink-faint);cursor:help}
  .party-chip.none{border-color:var(--rule);color:var(--ink-faint)}

  /* ---------- the ones who answered ---------- */
  .answered-page{padding-bottom:64px}
  .answered-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;
    border-top:1px solid var(--rule);border-bottom:2px solid var(--ink);margin:8px 0 26px}
  .answered-stat{padding:18px 22px 20px;border-right:1px solid var(--rule)}
  .answered-stat:last-child{border-right:none}
  .answered-stat-num{display:block;font-family:var(--display);font-weight:900;
    font-size:clamp(34px,4.4vw,52px);line-height:1;letter-spacing:-.03em;color:var(--redline)}
  .answered-stat-lbl{display:block;margin-top:9px;font-family:var(--mono);font-size:11px;
    letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);line-height:1.5}
  .answered-group{margin-top:38px}
  .answered-heading{display:flex;align-items:baseline;gap:10px;margin:0 0 6px;
    font-family:var(--display);font-size:24px;letter-spacing:-.01em}
  .answered-count{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--redline);
    border:1px solid var(--redline);padding:2px 7px}
  .answered-note{margin:0 0 18px;max-width:70ch;font-size:15.5px;color:var(--ink-soft);line-height:1.6}
  .answered-list{list-style:none;margin:0;padding:0;display:grid;gap:14px;counter-reset:answered}
  .answered-row{position:relative;padding:16px 20px;background:var(--paper-raised);
    border:1px solid var(--rule-strong);border-left:4px solid var(--constructive)}
  .answered-who{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;margin:0}
  .answered-name{font-family:var(--display);font-weight:800;font-size:19px;letter-spacing:-.01em}
  .answered-when{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--redline)}
  .answered-office{margin:4px 0 0;font-size:15.5px;color:var(--ink-soft)}
  .answered-tags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0}
  .answered-party{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
    padding:2px 7px;border:1px solid var(--ink-faint);color:var(--ink)}
  .answered-party.answered-none{border-color:var(--rule);color:var(--ink-faint)}
  .answered-gov{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
    padding:2px 7px;border:1px dashed var(--rule-strong);color:var(--ink-faint)}
  .answered-case{margin:12px 0 0;padding-top:10px;border-top:1px dashed var(--rule);font-size:15.5px}
  .answered-case a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--rule-strong)}
  .answered-case a:hover,.answered-case a:focus-visible{color:var(--redline);border-bottom-color:var(--redline)}
  .answered-meta{display:block;margin-top:4px;font-family:var(--mono);font-size:10.5px;
    letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}

  /* ==========================================================================
     Motion
     --------------------------------------------------------------------------
     The hover states below mostly already existed; what they lacked was the
     transition between them, which is why every interaction snapped. This
     section adds the motion and nothing else, on three rules:

       1. One curve and three durations, from the tokens in :root. A set of
          small effects reads as considered only if they all move alike.
       2. Nothing travels more than 2px and nothing scales. This is a broadsheet;
          paper does not levitate or spring. Weight, colour and a widening rule
          carry the feedback instead.
       3. Pointer effects live behind (hover:hover) and (pointer:fine). On a
          phone a :hover style latches after a tap and looks like a stuck
          selection, and most readers here are on a phone.
     ========================================================================== */

  /* A custom property has to be registered before it can be interpolated;
     without this the sheen would snap on instead of fading. Unsupported
     browsers simply get the snap, which is a fine floor. */
  @property --sheen {
    syntax: "<number>";
    inherits: false;
    initial-value: 0;
  }

  /* ---------- the shared transition ---------- */
  .site-nav a,.chip,.case-share,.src,.src-archive,.suggest-source,.expandbar,
  .page-jump a,.prevnext,.related-item,.related-link,.case-permalink a,
  .crumbs a,.minister-profile,.year-link,.more-toggle,.form-submit,.to-top,
  .fig,.standing-record a,.claim-case a,.resume-back,.resume-share-btn,
  .danger-action,.h2h-all,.method summary,.docket .cell,.minister-table tbody tr,
  .desk-grid > section,.submission-guidance,.file{
    transition:color var(--t-fast) var(--ease),
      background-color var(--t) var(--ease),
      border-color var(--t-fast) var(--ease),
      box-shadow var(--t) var(--ease),
      --sheen var(--t) var(--ease);
  }

  /* Keyboard users get the same signal as the mouse, everywhere, once. */
  :where(a,button,select,input,textarea,summary,[tabindex]):focus-visible{
    outline:2px solid var(--redline);
    outline-offset:2px;
  }

  /* ---------- pointer-only ---------- */
  @media (hover:hover) and (pointer:fine){

    /* The cursor sheen. A radial highlight in the tile's own background layer,
       centred on the pointer, so it paints above the fill and below every word
       — no overlay, no stacking-context games, nothing over the text. The
       centre is set from assets/js/motion.js. */
    .file,.related-item,.prevnext,.submission-guidance,.desk-grid > section,
    .claim-case,.docket .cell{
      background-image:radial-gradient(
        280px circle at var(--mx,50%) var(--my,50%),
        rgba(255,255,255,var(--sheen,0)),
        rgba(255,255,255,0) 68%);
    }
    .file:hover,.related-item:hover,.prevnext:hover,.submission-guidance:hover,
    .desk-grid > section:hover,.claim-case:hover,.docket .cell:hover{--sheen:.85}

    /* A case card. The severity rule down the left edge is the card's identity,
       so hovering thickens it: an ::after over the border rather than a wider
       border, which would reflow the whole column. */
    .file::after{
      content:"";position:absolute;left:-4px;top:0;bottom:0;width:4px;
      background:var(--redline);transform-origin:left;transform:scaleX(1);
      transition:transform var(--t) var(--ease);pointer-events:none;
    }
    .file.sev-amber::after{background:var(--amber-soft)}
    .file:hover::after{transform:scaleX(2.1)}
    .file:hover{box-shadow:var(--shadow-lift);border-color:var(--ink-faint)}
    .file:hover .headmid h3{color:var(--redline)}
    .headmid h3{transition:color var(--t-fast) var(--ease)}

    /* The docket. Four figures at the top of the page; the number rises a
       single pixel and its label comes up out of the faint grey. */
    .docket .num,.docket .lbl{transition:transform var(--t) var(--ease),color var(--t-fast) var(--ease)}
    .docket .cell:hover .num{transform:translateY(-1px)}
    .docket .cell:hover .lbl{color:var(--ink-soft)}

    /* Buttons and chips: the fill arrives, it does not appear. */
    .chip:hover{background:var(--paper-raised)}
    .case-share:hover{background:rgba(31,92,84,.07)}
    .case-share.act:hover{background:var(--redline)}
    .site-nav a:hover{background:var(--paper-raised)}
    .page-jump a:hover{background:var(--paper-raised)}
    .prevnext:hover,.related-item:hover{box-shadow:var(--shadow)}
    .form-submit{transition:background-color var(--t) var(--ease),box-shadow var(--t) var(--ease),transform var(--t-fast) var(--ease)}
    .form-submit:hover:not(:disabled){box-shadow:var(--shadow-lift)}

    /* A rule that draws itself under a tile's headline, left to right. The one
       piece of overt motion on the site, and it is doing a job: it points at
       the link you are about to follow. */
    .related-link,.prevnext{position:relative}
    .related-link::after{
      content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;
      background:var(--redline);transform:scaleX(0);transform-origin:left;
      transition:transform var(--t) var(--ease);
    }
    .related-item:hover .related-link::after{transform:scaleX(1)}

    /* Table rows on the minister dashboard. A tint and an accent that arrives
       from the left, matching the case cards. */
    .minister-table tbody tr{box-shadow:inset 0 0 0 0 var(--redline)}
    .minister-table tbody tr:hover{background:var(--paper-raised);box-shadow:inset 3px 0 0 0 var(--redline)}

    /* The method fold and the CV folds already rotate their plus sign; give the
       summary text the same colour shift as everything else. */
    .method summary:hover{color:var(--ink)}
  }

  /* ---------- press ---------- */
  /* Tactility, on every device. One pixel, on the way down only. */
  .chip:active,.case-share:active,.form-submit:active:not(:disabled),
  .to-top:active,.more-toggle:active,.danger-action:active:not(:disabled),
  .site-nav a:active,.minister-profile:active,.resume-back:active,
  .resume-share-btn:active,.page-jump a:active,.expandbar:active{
    transform:translateY(1px);
  }

  /* ---------- folds ---------- */
  .file{transition:opacity var(--t-slow) var(--ease),transform var(--t-slow) var(--ease),
    box-shadow var(--t) var(--ease),border-color var(--t-fast) var(--ease),--sheen var(--t) var(--ease)}
  .method summary .plus,.resume-fold-plus{transition:transform var(--t) var(--ease)}

  /* ---------- the one switch that turns all of it off ---------- */
  /* A reader who has asked their system for less motion has asked once, for
     everything. Honour it in one place rather than remembering to per effect. */
  @media (prefers-reduced-motion:reduce){
    *,*::before,*::after{
      animation-duration:.01ms !important;
      animation-iteration-count:1 !important;
      transition-duration:.01ms !important;
      scroll-behavior:auto !important;
    }
  }

  /* ==========================================================================
     Motion that carries meaning
     --------------------------------------------------------------------------
     Everything here answers a question the reader would otherwise have to work
     out: did my filter apply, why is content sliding under that bar, how far
     through this case am I, how big is that number really. Driven by
     assets/js/motion.js. The global reduced-motion switch above neutralises
     every transition below it; the JS additionally declines to run at all.
     ========================================================================== */

  /* The plus on a case card's open bar becomes a minus by rotating, the same
     gesture the method fold already uses. One vocabulary for "this expands". */
  .expandbar{display:flex;align-items:center;gap:10px}
  .case-actions .expandbar{justify-content:flex-start}
  .expand-sign{display:inline-block;font-weight:700;color:var(--redline);
    transition:transform var(--t) var(--ease)}
  .file.open .expand-sign{transform:rotate(45deg)}

  /* A filter or re-sort swapping 84 cards at once looks like nothing happened.
     One beat of fade is enough to register the change without delaying it. */
  #timeline{transition:opacity var(--t-fast) var(--ease)}
  #timeline.swapping{opacity:.35}

  /* The filter bar is sticky, so cases pass beneath it. The shadow arrives only
     once it is actually stuck, which is what tells you it is a layer. */
  .controls-sentinel{height:1px;margin-bottom:-1px}
  .controls{transition:box-shadow var(--t) var(--ease),border-color var(--t) var(--ease)}
  .controls.stuck{box-shadow:0 10px 24px -18px rgba(25,27,31,.7);border-bottom-color:var(--rule-strong)}

  /* Reading position on a case page. A hairline, in the accent colour, pinned
     to the top of the viewport. */
  .read-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:60;
    background:var(--redline);transform:scaleX(0);transform-origin:left;
    will-change:transform;pointer-events:none}

  /* A selected category should look selected from across the room. The fill
     grows from the left rather than blinking on. */
  .chip{position:relative;overflow:hidden;z-index:0}
  .chip::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--redline);
    transform:scaleX(0);transform-origin:left;transition:transform var(--t) var(--ease)}
  .chip[aria-pressed="true"]::before{transform:scaleX(1)}
  .chip[aria-pressed="true"]{color:#F4F4EF;border-color:var(--redline)}

  /* Counters start from zero, so reserve their width or the docket row jumps as
     the digits grow. */
  .docket .num[data-count-up],.docket .num[data-count-figure],.answered-stat-num[data-count-up]{font-variant-numeric:tabular-nums}
  .docket .num .fig{font-variant-numeric:tabular-nums}

  /* ---------- entrance on load ----------
     The masthead is the first thing a reader sees. A short staggered rise-in
     gives the page a sense of arrival without delaying anything they need to
     tap. motion.js adds body.motion-ready once reduced motion is ruled out. */
  @keyframes rise-in{
    from{opacity:0;transform:translateY(10px)}
    to{opacity:1;transform:none}
  }
  body.motion-ready .masthead .flag{animation:rise-in var(--t-slow) var(--ease) both}
  body.motion-ready .masthead .site-nav{animation:rise-in var(--t-slow) var(--ease) 60ms both}
  body.motion-ready .masthead .hero .eyebrow{animation:rise-in var(--t-slow) var(--ease) 100ms both}
  body.motion-ready .masthead .hero .title{animation:rise-in var(--t-slow) var(--ease) 160ms both}
  body.motion-ready .masthead .hero .standfirst{animation:rise-in var(--t-slow) var(--ease) 220ms both}
  body.motion-ready .masthead .docket .cell{animation:rise-in var(--t-slow) var(--ease) both}
  body.motion-ready .masthead .docket .cell:nth-child(1){animation-delay:280ms}
  body.motion-ready .masthead .docket .cell:nth-child(2){animation-delay:340ms}
  body.motion-ready .masthead .docket .cell:nth-child(3){animation-delay:400ms}
  body.motion-ready .masthead .docket .cell:nth-child(4){animation-delay:460ms}
  body.motion-ready .masthead .standing-record{animation:rise-in var(--t-slow) var(--ease) 520ms both}

  /* ---------- year dividers ----------
     The rule beside each year draws itself in as the divider scrolls into view,
     matching the left-to-right underline on related links. */
  .yearmark .r{transform:scaleX(0);transform-origin:left center;transition:transform var(--t-slow) var(--ease)}
  .yearmark.in-view .r{transform:scaleX(1)}
  .yearmark .c{opacity:0;transition:opacity var(--t) var(--ease) 100ms}
  .yearmark.in-view .c{opacity:1}

  /* ---------- case open / close ----------
     Height follows content via grid 0fr→1fr instead of max-height, so the
     fold eases at the speed of the content rather than trailing off. Inner copy
     fades up; fields step in slightly later so the eye reads top to bottom. */
  .file.open{box-shadow:var(--shadow-lift);border-color:var(--ink-faint)}
  .filebody-inner .field{opacity:0;transform:translateY(5px);
    transition:opacity var(--t) var(--ease),transform var(--t) var(--ease)}
  .file.open .filebody-inner .field{opacity:1;transform:none}
  .file.open .filebody-inner .field:nth-child(1){transition-delay:40ms}
  .file.open .filebody-inner .field:nth-child(2){transition-delay:70ms}
  .file.open .filebody-inner .field:nth-child(3){transition-delay:100ms}
  .file.open .filebody-inner .field:nth-child(4){transition-delay:130ms}
  .file.open .filebody-inner .field:nth-child(5){transition-delay:160ms}
  .file.open .filebody-inner .field:nth-child(6){transition-delay:190ms}
  .file.open .filebody-inner .field:nth-child(n+7){transition-delay:210ms}

  /* ---------- view swap ----------
     One beat of opacity when a panel re-renders — filter, minister profile, RTI
     case list — so the change registers without feeling like a page reload. */
  .ui-swapping{opacity:.4;pointer-events:none;
    transition:opacity var(--t-fast) var(--ease)}

  /* ---------- page enter ----------
     One rise on the main column after same-origin tab navigation. Kept without
     view transitions so the page does not load twice. */
  body.page-enter main,
  body.page-enter .dashboard-page,
  body.page-enter .form-page{animation:rise-in var(--t-slow) var(--ease) both}

  /* ---------- native folds ----------
     Method block and minister CV sections: body copy fades up when opened.
     @starting-style fires only on the open transition, not on every paint. */
  .method details[open] .body,
  .resume-fold[open] .resume-fold-body{
    opacity:1;transform:none;
    transition:opacity var(--t-slow) var(--ease),transform var(--t-slow) var(--ease)}
  @starting-style{
    .method details[open] .body,
    .resume-fold[open] .resume-fold-body{opacity:0;transform:translateY(-6px)}
  }

  /* ---------- controls ----------
     Sort dropdown and RTI pickers: a soft focus ring instead of a hard snap. */
  select.sort,.rti-case-picker select,#rti-authority{
    transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
  select.sort:focus,#rti-authority:focus{
    outline:none;border-color:var(--redline);
    box-shadow:0 0 0 3px rgba(154,33,23,.1)}
  .rti-case-picker input[type="search"]{
    transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
  .rti-case-picker input[type="search"]:focus{
    outline:none;border-color:var(--redline);
    box-shadow:0 0 0 3px rgba(154,33,23,.1)}

  /* Minister profile entrance: toolbar and header step in after the page rise. */
  body.motion-ready #profile-view:not([hidden]) .resume-toolbar{animation:rise-in var(--t-slow) var(--ease) 120ms both}
  body.motion-ready #profile-view:not([hidden]) .resume-head{animation:rise-in var(--t-slow) var(--ease) 180ms both}
  body.motion-ready #profile-view:not([hidden]) .resume-section{animation:rise-in var(--t-slow) var(--ease) 240ms both}
  body.motion-ready #profile-view:not([hidden]) .resume-folds{animation:rise-in var(--t-slow) var(--ease) 300ms both}

  /* ---------- iOS-style polish ----------
     Frosted sticky bar, loading skeletons, table row reveal, letter crossfade,
     and cross-page view transitions where the browser supports them. */

  /* Frosted glass on the filter bar once it sticks — content slides beneath. */
  .controls.stuck{
    background:rgba(233,234,228,.82);
    -webkit-backdrop-filter:blur(14px) saturate(1.08);
    backdrop-filter:blur(14px) saturate(1.08);
  }

  /* Docket figures shimmer while cases.json is in flight. */
  @keyframes shimmer{
    0%{background-position:200% 0}
    100%{background-position:-200% 0}
  }
  .docket .num.loading{
    color:transparent;user-select:none;position:relative;min-width:2.5ch;
    border-radius:2px}
  .docket .num.loading::after{
    content:"";position:absolute;inset:2px 0;border-radius:2px;
    background:linear-gradient(90deg,var(--paper-sunken) 0%,var(--paper-raised) 45%,var(--paper-sunken) 90%);
    background-size:200% 100%;animation:shimmer 1.4s var(--ease) infinite}

  /* Minister table rows step in on first paint, like iOS Mail. */
  .minister-table tbody tr{opacity:0;transform:translateY(8px);
    transition:opacity var(--t-slow) var(--ease),transform var(--t-slow) var(--ease)}
  .minister-table tbody tr.in{opacity:1;transform:none}
  @media (prefers-reduced-motion:reduce){
    .minister-table tbody tr{opacity:1;transform:none}
  }

  /* RTI letter dips briefly while the draft is rewritten. */
  .rti-letter{transition:opacity var(--t) var(--ease)}
  .rti-letter.letter-swapping{opacity:.25}

  /* ---------- cite, export and the data page ----------
     The citation is selectable text, not a tooltip, because the whole point is
     that a journalist can see exactly what they are about to quote. */
  .cite{max-width:1080px;margin:32px auto 0;padding:22px 24px;border:1px solid var(--rule-strong);
    border-left:4px solid var(--constructive);background:var(--paper-raised)}
  .cite-title{margin:0 0 12px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;
    text-transform:uppercase;color:var(--constructive)}
  .cite-line{margin:0;padding:14px 16px;background:var(--paper-sunken);border:1px dashed var(--rule-strong);
    font-family:var(--mono);font-size:12.5px;line-height:1.75;color:var(--ink);overflow-wrap:anywhere;
    user-select:all}
  .cite .case-actions-row{margin-top:14px}
  .cite .form-note{margin-top:12px}
  .case-share.copied{border-color:var(--constructive);color:var(--constructive);background:rgba(31,92,84,.1)}

  .data-page{padding-bottom:64px}
  .data-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:8px 0 34px}
  .data-download{display:grid;gap:8px;align-content:start;padding:20px 22px;text-decoration:none;
    border:1px solid var(--rule-strong);border-left:4px solid var(--redline);background:var(--paper-raised)}
  .data-download:hover{border-color:var(--redline);box-shadow:var(--shadow)}
  .data-fmt{font-family:var(--display);font-weight:900;font-size:26px;letter-spacing:-.02em;color:var(--ink)}
  .data-download:hover .data-fmt{color:var(--redline)}
  .data-desc{font-family:var(--serif);font-size:15px;line-height:1.5;color:var(--ink-soft)}
  .data-section{max-width:78ch;margin-top:34px}
  .data-section h2{margin:0 0 12px;font-family:var(--display);font-size:26px;letter-spacing:-.01em}
  .data-section p,.data-section li{font-size:16px;line-height:1.65;color:var(--ink-soft)}
  .data-section ul{margin:0;padding-left:20px;display:grid;gap:10px}
  .data-section strong{color:var(--ink)}
  .data-fields{width:100%;border-collapse:collapse;font-size:15px;background:var(--paper-raised)}
  .data-fields th,.data-fields td{padding:11px 14px;border-bottom:1px solid var(--rule);text-align:left;
    vertical-align:top}
  .data-fields thead th{background:var(--paper-sunken);font-family:var(--mono);font-size:11px;
    letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .data-fields code{font-family:var(--mono);font-size:12.5px;color:var(--redline);white-space:nowrap}
  .data-fields td:last-child{color:var(--ink-soft);line-height:1.55}

  /* ---------- the timeline ----------
     A thread down the left with a marker per entry. The marker carries the
     meaning: an open ring is a promise, a filled square is something that
     actually happened, a red bar is a deadline that passed with nothing. */
  .timeline-block{padding:18px 0;border-bottom:1px dashed var(--rule)}
  .tl-list{list-style:none;margin:14px 0 0;padding:0 0 0 26px;position:relative;display:grid;gap:0}
  .tl-list::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--rule-strong)}
  .tl-item{position:relative;padding:0 0 20px}
  .tl-item:last-child{padding-bottom:0}
  .tl-item::before{content:"";position:absolute;left:-25px;top:5px;width:11px;height:11px;
    background:var(--paper-raised);border:2px solid var(--rule-strong);border-radius:50%}
  .tl-when{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
    color:var(--ink-faint)}
  .tl-what{margin:5px 0 0;font-size:16.5px;line-height:1.6;color:var(--ink);max-width:66ch}
  .tl-src{margin-left:6px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;
    text-transform:uppercase;color:var(--constructive);white-space:nowrap}
  /* The incident itself: solid, in the severity colour. */
  .tl-incident::before{background:var(--ink);border-color:var(--ink);border-radius:0}
  .tl-incident .tl-when{color:var(--ink)}
  /* A promise: an open ring, because nothing has been delivered yet. */
  .tl-promise::before{border-color:var(--amber-soft);background:var(--paper-raised)}
  .tl-promise .tl-when{color:var(--amber)}
  /* Something actually happened. */
  .tl-action::before{background:var(--constructive);border-color:var(--constructive);border-radius:0}
  .tl-action .tl-when{color:var(--constructive)}
  /* Someone answered for it. The rarest marker on the site. */
  .tl-answer::before{background:var(--constructive);border-color:var(--constructive);
    box-shadow:0 0 0 3px rgba(31,92,84,.18)}
  .tl-answer .tl-when{color:var(--constructive)}
  .tl-answer .tl-what{font-weight:500}
  /* A deadline that passed, a report never published, the file going quiet. */
  .tl-silence::before{background:var(--redline);border-color:var(--redline);border-radius:0;
    width:11px;height:3px;top:9px}
  .tl-silence .tl-when{color:var(--redline)}
  .tl-silence .tl-what{color:var(--ink-soft)}
  .tl-legend{margin:16px 0 0;font-family:var(--mono);font-size:11px;line-height:1.7;letter-spacing:.04em;
    color:var(--ink-faint);max-width:74ch}

  /* ---------- the RTI response library ----------
     Each card is one reply from a public authority. The left rule carries the
     outcome, and a refusal is deliberately not styled as a failure: a government
     naming the clause it hid behind is the most useful row on the page. */
  .rtir-list{list-style:none;margin:14px 0 34px;padding:0;display:grid;gap:14px}
  .rtir-item{padding:18px 22px;background:var(--paper-raised);border:1px solid var(--rule-strong);
    border-left:4px solid var(--rule-strong)}
  .rtir-answered{border-left-color:var(--constructive)}
  .rtir-partial{border-left-color:var(--amber-soft)}
  .rtir-refused{border-left-color:var(--redline)}
  .rtir-silent{border-left-color:var(--ink)}
  .rtir-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;margin:0}
  .rtir-outcome{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
    padding:2px 8px;border:1px solid currentColor}
  .rtir-answered .rtir-outcome{color:var(--constructive)}
  .rtir-partial .rtir-outcome{color:var(--amber)}
  .rtir-refused .rtir-outcome{color:var(--redline)}
  .rtir-silent .rtir-outcome{color:var(--ink)}
  .rtir-clause{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--redline)}
  .rtir-dates{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
    color:var(--ink-faint);margin-left:auto}
  .rtir-authority{margin:10px 0 0;font-family:var(--display);font-weight:600;font-size:17px;
    line-height:1.35;letter-spacing:-.01em}
  .rtir-summary{margin:8px 0 0;font-size:16px;line-height:1.6;color:var(--ink-soft);max-width:70ch}
  .rtir-text{margin:12px 0 0}
  .rtir-text summary{cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.08em;
    text-transform:uppercase;color:var(--constructive)}
  .rtir-text pre{margin:10px 0 0;padding:14px 16px;background:var(--paper-sunken);
    border:1px dashed var(--rule-strong);font-family:var(--mono);font-size:12.5px;line-height:1.8;
    white-space:pre-wrap;overflow-wrap:anywhere;max-height:40vh;overflow-y:auto}
  .rtir-item .case-actions-row{margin-top:14px;min-width:0}
  /* A case title is prose, not a label. `.case-share` is flex:0 0 auto so that
     short buttons never shrink, which meant a 525px title pushed the whole page
     wider than the viewport and let every other flex row lay out inside that
     extra width — the subnav appeared to overflow when it was only obeying a
     container the title had stretched. Here alone, let it wrap. */
  .rtir-item .case-share,.rtir-on-case .case-share{flex:0 1 auto;max-width:100%;
    white-space:normal;text-align:left;overflow-wrap:anywhere}
  .suggestion-authority{margin:8px 0 0;font-family:var(--display);font-weight:600;font-size:16px}
  .suggestion-meta{margin:6px 0 0;font-family:var(--mono);font-size:11px;letter-spacing:.08em;
    text-transform:uppercase;color:var(--ink-faint)}
  .rtir-review-text{margin:10px 0 0;padding:12px 14px;background:var(--paper-sunken);
    border:1px dashed var(--rule-strong);font-family:var(--mono);font-size:12px;line-height:1.75;
    white-space:pre-wrap;overflow-wrap:anywhere;max-height:34vh;overflow-y:auto}

  /* ---------- first-visit public-interest notice ---------- */
  /* A slim bar, not a modal. It states the purpose, links the page that sets out
     the rules in full, and gets out of the way for good once dismissed. */
  .pg-notice{position:fixed;left:0;right:0;bottom:0;z-index:60;
    display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;justify-content:space-between;
    padding:12px max(18px,env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));
    background:var(--paper-raised);border-top:2px solid var(--redline);
    box-shadow:0 -10px 26px -18px rgba(25,27,31,.5);
    opacity:0;transform:translateY(100%);transition:opacity .3s var(--ease),transform .3s var(--ease)}
  .pg-notice.pg-in{opacity:1;transform:none}
  .pg-notice.pg-leaving{opacity:0;transform:translateY(100%)}
  .pg-notice p{margin:0;flex:1 1 380px;min-width:0;font-size:13.5px;line-height:1.6;color:var(--ink-soft)}
  .pg-link{color:var(--redline);text-underline-offset:3px;white-space:nowrap}
  .pg-dismiss{flex:0 0 auto;padding:10px 16px;min-height:44px;
    border:1px solid var(--rule-strong);background:var(--paper);color:var(--ink);
    font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;
    transition:border-color .18s,color .18s}
  .pg-dismiss:hover,.pg-dismiss:focus-visible{border-color:var(--redline);color:var(--redline)}
  /* The to-top button lives in the same corner; lift it clear while the bar is up. */
  body.has-pg-notice .to-top{bottom:calc(96px + env(safe-area-inset-bottom))}
  @media (max-width:760px){
    .pg-notice{gap:10px;padding-top:14px}
    .pg-notice p{flex:1 1 100%;font-size:13px}
    .pg-dismiss{width:100%;text-align:center;justify-content:center}
    body.has-pg-notice .to-top{bottom:calc(140px + env(safe-area-inset-bottom))}
  }
  @media (prefers-reduced-motion:reduce){
    .pg-notice{transition:none;opacity:1;transform:none}
  }
  @media print{.pg-notice{display:none !important}}

  /* Below 360px the hero title was the only thing pushing the page sideways:
     clamp()'s 42px floor makes "Accountability" 328px wide inside a 288px
     content box, and every flex row on the page then laid out inside that extra
     width. Lower the floor for genuinely narrow screens only — 390px keeps the
     size it was designed at. */
  @media (max-width:359px){
    h1.title{font-size:clamp(30px,10vw,42px)}
    html[lang="hi"] h1.title{font-size:clamp(26px,8.4vw,38px)}
  }

  /* ---------- masthead mark ---------- */
  /* The mark sits beside the flag text, not inside it: the flag's spans are
     data-i18n nodes and apply() rewrites their textContent, which would delete
     any element placed within them. */
  /* .flag was written as justify-content:space-between for exactly two children:
     the title at the left edge, the tagline at the right. The mark made it three,
     and space-between duly pushed the title into the middle of the masthead with
     a hole where it used to start. Pack from the left instead and let the tagline
     claim the right edge on its own. */
  .flag{flex-wrap:wrap;justify-content:flex-start;gap:11px}
  .flag .redtag{margin-left:auto}
  .flag-mark{flex:0 0 auto;align-self:center;width:28px;height:28px;
    box-shadow:0 1px 0 var(--rule-strong)}
  @media (max-width:760px){
    /* Two columns rather than three stacked rows, so the mark costs no height:
       it sits to the left of both lines of the flag instead of above them. */
    .flag{display:grid;grid-template-columns:auto minmax(0,1fr);
      align-items:center;column-gap:11px;row-gap:2px}
    .flag .redtag{margin-left:0}
    .flag-mark{grid-row:1 / span 2;width:34px;height:34px;margin-right:0}
  }
