
  .rcard{--iris-deep:#5448B5;max-width:560px;margin:18px auto 40px;background:#FBFAF7;border:2px solid #2A2540;
    border-radius:16px;box-shadow:6px 6px 0 #7C6BF0;overflow:hidden;color:#2A2540;}
  .rbar{background:#2A2540;color:#B9B2D4;font-family:monospace;font-size:12px;padding:9px 16px;}
  .rpad{padding:20px;}
  .stamp{float:right;transform:rotate(-5deg);border:2.5px solid #5448B5;color:#5448B5;
    font-weight:700;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;
    padding:4px 10px;border-radius:8px;background:#F0EDFB;}
  /* A3 receipt versioning: the "updated <date>" line, and the withdrawn tombstone. */
  .rupd{clear:right;font-family:monospace;font-size:10px;letter-spacing:0.06em;
    text-transform:uppercase;color:#8B84A0;margin-top:10px;}
  .rtomb{box-shadow:6px 6px 0 #B9B2D4;}
  .rtomb-stamp{float:right;transform:rotate(-5deg);border:2.5px solid #8B84A0;
    color:#8B84A0;font-weight:700;font-size:11px;letter-spacing:0.06em;
    text-transform:uppercase;padding:4px 10px;border-radius:8px;background:#F2F0EC;}
  .rtomb-note{margin-top:14px;font-size:15px;line-height:1.6;color:#2A2540;
    border-left:3px solid #8B84A0;padding-left:12px;}
  .mast{font-size:15px;font-weight:700;color:#2A2540;}
  .mast-big{font-size:clamp(23px,5.5vw,29px);font-weight:800;letter-spacing:-0.5px;
    line-height:1.15;margin-top:1px;color:#2A2540;}
  .mast-big .hl-r{background:linear-gradient(180deg,transparent 58%,#D9D3FB 58%);padding:0 2px;}
  .kick{font-size:10px;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;
    color:#8B84A0;font-family:monospace;}
  .cvgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;
    align-items:stretch;}
  .ccell{background:#fff;border:2px solid #2A2540;border-radius:12px;
    box-shadow:3px 3px 0 #2A2540;padding:14px 16px;}
  .claim{font-size:16px;font-weight:600;line-height:1.45;color:#2A2540;
    background:linear-gradient(180deg,transparent 60%,#D9D3FB 60%);}
  .ccell .kick,.vhero .kick{margin-bottom:6px;}
  .vhero{border:2px solid #2A2540;border-radius:12px;box-shadow:3px 3px 0 #2A2540;
    padding:14px 16px;}
  .vhero .kick{color:#2A2540;opacity:0.55;}
  .vword{font-size:clamp(21px,5vw,26px);font-weight:800;letter-spacing:0.01em;line-height:1.05;}
  .vgloss{font-size:12px;color:#2A2540;opacity:0.78;font-style:italic;margin-top:3px;}
  .vmeter{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap;}
  .vtrack{flex:1;min-width:70px;height:11px;background:#FBFAF7;border:2px solid #2A2540;
    border-radius:7px;overflow:hidden;}
  .vfill{height:100%;}
  .vnum{font-family:monospace;font-size:10px;font-weight:700;color:#2A2540;white-space:nowrap;}
  /* THE SCALES OF JUDGMENT. Centre-anchored: against grows left, for grows right, from a
     hard zero line. Two halves of one track so the DISTRIBUTION is visible rather than
     netted away into a single number. */
  /* AS REPORTED. Subordinate to the verdict by construction: small, outlined, no fill
     colour of its own, because it qualifies the verdict rather than competing with it.
     NB an em dash in THIS comment fails test_voice_gate - the stylesheet ships inside
     every rendered page, so a CSS comment is rendered copy like any other. */
  .asrep{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 8px;}
  .asrep-chip{font-family:monospace;font-size:10px;font-weight:700;letter-spacing:.06em;
              color:#2A2540;border:2px solid #2A2540;border-radius:5px;padding:2px 6px;
              background:#FBFAF7;white-space:nowrap;}
  .asrep-gloss{font-size:12px;color:#5B5470;line-height:1.35;}
  /* THE PROCEEDING STAGE, under the person chip. Same weight as the gloss it continues,
     because it is the same sentence carried on: what the sources describe, and what that
     does not amount to. NB the chip's own words are deliberately NOT spelled out in this
     comment: the stylesheet ships inside every rendered page, so a CSS comment naming the
     chip would put those words on receipts that carry no chip. Same trap as the em dash
     the comment two rules up warns about. */
  .asrep-stage{font-size:12px;color:#5B5470;line-height:1.35;margin:0 0 8px;}
  /* THE STANDING NOTE on a person receipt. Quiet, inside the card, and typographically
     below everything it qualifies: it is a disclosure, not a finding. */
  .rpnote{font-size:12px;color:#5B5470;line-height:1.55;margin:14px 0 0;padding-top:10px;
    border-top:1.5px dashed #ECE8DF;}
  .scales{margin-top:10px;}
  /* The axis in words; card ink, not the side hues (reasons in receipt._scales_bar,
     which is where every rule below is argued out. This stylesheet ships inside every
     rendered page, so the argument stays in the docstring and the note stays short). */
  .scsides{display:flex;justify-content:space-between;font-family:monospace;
           font-size:9.5px;font-weight:700;letter-spacing:0.05em;color:#2A2540;
           margin-bottom:4px;}
  /* Unclipped, so the pivot stands proud and the track hangs off the lower edge. */
  .scwrap{position:relative;padding:4px 0 8px;}
  .sctrack{display:flex;align-items:stretch;height:13px;background:#FBFAF7;
           border:2px solid #2A2540;border-radius:7px;overflow:hidden;}
  .schalf{flex:1;display:flex;}
  .schalf-l{justify-content:flex-end;}
  .schalf-r{justify-content:flex-start;}
  /* border-box: the end cap is drawn INSIDE the computed width, so the bar on screen
     is the ratio the arithmetic produced rather than that plus 2px. */
  .scfill{height:100%;box-sizing:border-box;}
  /* THE PIVOT, not a seam: thick, proud top and bottom, and ringed in the track's own
     paper because bare ink measures 2.4:1 on the deepest green. */
  .sczero{position:absolute;left:50%;top:0;transform:translateX(-50%);width:4px;
          height:25px;background:#2A2540;border-radius:1px;
          box-shadow:0 0 0 1.5px #FBFAF7;}
  /* THE TICK TRACK: one mark per source, growing outward as the fill does. */
  .scticks{position:absolute;left:0;right:0;top:22px;height:7px;display:flex;
           overflow:hidden;}
  .sctickhalf{flex:1;position:relative;}
  .sctick{position:absolute;top:0;width:1.5px;height:4px;}
  .sctick-maj{height:7px;}
  .scmore{position:absolute;top:2.5px;width:7px;height:1.5px;}
  /* THE LABEL, then the literal counts beneath it. Two lines, because the label names
     what the bar is and the counts state what it is made of, and one line ran them
     together into a single unreadable monospace string. */
  .sclabel{font-family:monospace;font-size:10px;font-weight:700;color:#2A2540;
           margin-top:5px;letter-spacing:0.04em;text-transform:lowercase;}
  .scnum{font-family:monospace;font-size:10px;font-weight:700;color:#5B5470;
         margin-top:2px;letter-spacing:0.01em;}
  .rsum{font-size:15px;color:#2A2540;line-height:1.65;margin:16px 0 4px;
    padding-left:12px;border-left:3px solid #D9D3FB;border-radius:0;}
  /* OVERSTATED's narrower claim (TRACKS_CONTRACT 7.3). Amber rule to match the badge, and
     the same subordinate weight as .rsum -- it is our sentence about their evidence, so
     it must never out-typeset the sourced rows below it. */
  .rnarrow{margin:12px 0 4px;padding:10px 12px;border-left:3px solid #E0A868;
    background:#FDF6EC;}
  .rnarrow p{font-size:15px;color:#2A2540;line-height:1.55;margin:2px 0 0;}
  .rnarrow-missing{color:#A32D3A;font-size:13px;}

  .egrid{display:grid;grid-template-columns:1fr;column-gap:12px;margin-top:2px;
    align-items:start;}
  .egrid-2{grid-template-columns:1fr 1fr;}
  .ehead{display:inline-block;font-size:10px;font-weight:800;text-transform:uppercase;
    letter-spacing:0.06em;border:1.5px solid #2A2540;border-radius:14px;padding:3px 9px;
    margin:12px 0 0;}
  .ehead-for{background:#C9F7E6;color:#0F6E56;}
  .ehead-against{background:#FBD2D7;color:#A32D3A;}
  .ehead-neutral{background:#ECE8DF;color:#5A5568;}
  .scard{background:#fff;border:1.5px solid #2A2540;border-radius:12px;padding:12px 14px;
    margin-top:10px;}
  .stitle{font-size:13px;font-weight:700;color:#2A2540;line-height:1.35;}
  .smeta{font-size:11px;color:#8B84A0;font-family:monospace;margin-top:4px;}
  .smeta b{color:#5448B5;}
  .snote{font-size:12px;color:#5A5568;line-height:1.45;margin-top:6px;}
  .nonote{margin-top:12px;border:2px dashed #8B84A0;border-radius:12px;padding:12px 14px;
    font-size:13px;color:#5A5568;background:#fff;}
  /* THE ANALYSIS and THE LEDGER, both inside the drawer. Engine prose and engine
     bookkeeping: subordinate to the sourced rows above them by construction (no card
     chrome, smaller type, muted ink), per TRACKS_CONTRACT 7.1 rule 6. */
  .ranalysis{margin-top:12px;padding-left:12px;border-left:3px solid #D9D3FB;}
  .ranalysis p{font-size:13px;color:#5A5568;line-height:1.6;margin:4px 0 0;
    white-space:pre-wrap;}
  .xref{color:#5448B5;text-decoration:none;font-weight:700;font-family:monospace;
    font-size:11px;}
  .rexam{margin-top:16px;}
  .rexam-list{list-style:none;margin:6px 0 0;padding:0;}
  .xrow{display:flex;flex-wrap:wrap;align-items:baseline;gap:7px;font-size:12px;
    color:#2A2540;line-height:1.5;padding:5px 0;border-bottom:1px solid #F1EEE7;}
  .xrow a{color:#5448B5;}
  /* GREYED, NOT HIDDEN. An excluded source is still something we looked at, and the
     reader is owed both the item and the reason it is not on the receipt. */
  .xout{color:#8B84A0;}
  .xout a{color:#8B84A0;}
  .xtier{font-family:monospace;font-size:9px;font-weight:700;text-transform:uppercase;
    letter-spacing:0.05em;border:1.5px solid #C9C3DA;border-radius:5px;padding:1px 5px;
    color:#5B5470;white-space:nowrap;}
  .xstance{font-size:11px;color:#5A5568;font-family:monospace;}
  .xwhy{font-size:11px;color:#8B84A0;font-style:italic;}
  /* LINEAGE (B1) and COVERAGE (B2). Both are facts about the RECORD rather than about
     any one source, so both sit as chrome: the chip is quieter than the tier badge it
     stands beside, and the coverage line is engine prose above the list. */
  .xlin{font-family:monospace;font-size:9px;font-weight:700;text-transform:uppercase;
    letter-spacing:0.05em;border:1.5px dashed #C9C3DA;border-radius:5px;padding:1px 5px;
    color:#8B84A0;white-space:nowrap;}
  .xcover{font-size:11px;color:#5A5568;font-style:italic;margin:4px 0 2px;}
  .drawer{margin-top:14px;border-top:2px dashed #ECE8DF;padding-top:10px;}
  .drawer>summary{cursor:pointer;font-size:13px;font-weight:800;color:#5448B5;
    list-style:none;}
  .drawer>summary::before{content:"+ ";}
  .drawer[open]>summary::before{content:"\2212  ";}
  .ctarow{display:flex;gap:8px;margin-top:8px;align-items:flex-start;}
  .ctarow>*{flex:1;min-width:0;}
  .rcta,.dpbtn{display:block;text-align:center;text-decoration:none;background:#fff;
    color:#5448B5;border:2px solid #2A2540;border-radius:11px;font-weight:700;
    font-size:13px;padding:11px;cursor:pointer;list-style:none;}
  .dpbtn::-webkit-details-marker{display:none;}
  .cbtn,.gbtn{border:1.5px solid #2A2540;border-radius:7px;padding:3px 10px;
    font-size:10px;font-weight:700;font-family:inherit;cursor:pointer;
    margin-top:8px;display:inline-block;}
  .cbtn{background:#7C6BF0;color:#fff;}
  .gbtn{background:#fff;color:#5448B5;}
  .fmtrow{display:flex;justify-content:flex-end;align-items:center;gap:6px;
    margin-top:10px;font-size:10px;font-weight:700;color:#8B84A0;
    font-family:monospace;text-transform:uppercase;letter-spacing:0.08em;}
  .fmtrow select{border:1.5px solid #2A2540;border-radius:7px;padding:2px 6px;
    font-size:11px;font-family:inherit;color:#2A2540;background:#fff;}
  .fbrow{display:flex;justify-content:center;margin-top:16px;border-top:2px dashed #ECE8DF;
    padding-top:14px;}
  .rfoot{font-size:11px;color:#8B84A0;text-align:center;margin-top:12px;}
  .dp-opt{font-size:12px;color:#2A2540;display:block;cursor:pointer;}
  .dp-opt input{margin-right:7px;}
  @media(max-width:520px){
    .ctarow{flex-direction:column;align-items:stretch;}
    .egrid-2{grid-template-columns:1fr;}
    .cvgrid{grid-template-columns:1fr;}
  }
