:root{
  --ink:#0A1E2E; --ink-deep:#061520; --ink-soft:#0E2A3D;
  --line:#1E4763; --line-soft:#16384F;
  --cyan:#5FD0E8; --amber:#E8A33D; --coral:#E4644F; --good:#7BE3A8;
  --paper:#EDF1F4; --panel:#FFFFFF;
  --mute:#7FA3B8; --mute-dark:#4A6E85; --text:#EAF4F9; --text-soft:#B9D2DF;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --pad:20px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{background:var(--ink);color:var(--text);font-family:var(--sans);
  min-height:100vh;min-height:100dvh;overscroll-behavior-y:none;
  padding-bottom:env(safe-area-inset-bottom);-webkit-font-smoothing:antialiased}
body.light{background:var(--paper);color:var(--ink)}
.wrap{max-width:720px;margin:0 auto;padding:0 var(--pad)}
.wrap-wide{max-width:900px;margin:0 auto;padding:0 var(--pad)}

.eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute)}
.eyebrow.cy{color:var(--cyan)} .eyebrow.dk{color:var(--mute-dark)} .eyebrow.co{color:var(--coral)}
.mono{font-family:var(--mono)}
h1.hero{font-family:var(--mono);font-weight:500;font-size:clamp(29px,8.2vw,56px);line-height:1.06;letter-spacing:-.025em;color:var(--text)}
h1.hero .cy{color:var(--cyan)}
h2.q{font-family:var(--sans);font-weight:500;font-size:clamp(21px,5.4vw,27px);line-height:1.34;color:var(--text)}
h2.head{font-family:var(--mono);font-weight:500;font-size:clamp(22px,5.6vw,27px);line-height:1.2;letter-spacing:-.01em;color:var(--text)}
p.lede{font-family:var(--sans);font-size:17px;line-height:1.65;color:var(--text-soft)}
.tabnum{font-variant-numeric:tabular-nums}

.topbar{position:sticky;top:0;z-index:20;background:var(--ink);padding-top:calc(14px + env(safe-area-inset-top));padding-bottom:12px}
body.light .topbar{background:var(--paper)}
.topbar .row{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:900px;margin:0 auto;padding:0 var(--pad)}
.brand{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--text)}
.brand span{color:var(--cyan)}
body.light .brand{color:var(--ink)} body.light .brand span{color:var(--mute-dark)}
.crumb{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--mute-dark);text-transform:uppercase;text-align:right}
.reset{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--mute-dark);background:none;border:0;cursor:pointer;padding:8px;margin:-8px}

.btn{display:block;width:100%;font-family:var(--mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;
  background:var(--cyan);color:var(--ink-deep);border:0;padding:18px 24px;cursor:pointer;min-height:56px;text-align:center}
.btn:active{opacity:.85}
.btn[disabled]{background:transparent;color:var(--mute-dark);border:1px solid var(--line);cursor:not-allowed}
.btn-ghost{background:transparent;color:var(--mute);border:0;font-family:var(--mono);font-size:12px;padding:14px 0;cursor:pointer;display:block}
.btn-dark{background:var(--ink);color:var(--paper)}
.btn-outline{background:transparent;color:var(--ink);border:1px solid var(--ink)}
@media(min-width:640px){.btn{display:inline-block;width:auto}}

.opts{display:grid;gap:8px;margin-top:28px}
.opt{display:flex;gap:14px;align-items:flex-start;text-align:left;width:100%;
  background:transparent;border:1px solid var(--line);color:var(--text-soft);
  padding:16px;cursor:pointer;min-height:56px;font-family:var(--sans);font-size:15.5px;line-height:1.5}
.opt .k{font-family:var(--mono);font-size:11px;color:var(--mute-dark);padding-top:2px;flex-shrink:0}
.opt[aria-pressed="true"]{border-color:var(--cyan);background:rgba(95,208,232,.10);color:var(--text)}
.opt[aria-pressed="true"] .k{color:var(--cyan)}

/* domain chooser */
.dcards{display:grid;gap:10px;margin-top:22px}
.dcard{text-align:left;width:100%;background:transparent;border:1px solid var(--line);padding:20px;cursor:pointer;
  display:block;transition:border-color .15s,background .15s}
.dcard:hover,.dcard:focus-visible{border-color:var(--cyan);background:rgba(95,208,232,.05)}
.dcard .top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.dcard h3{font-family:var(--mono);font-weight:500;font-size:16px;letter-spacing:-.01em;color:var(--text)}
.dcard .ev{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;padding:3px 7px;border:1px solid;white-space:nowrap}
.dcard .ev.strong{color:var(--good);border-color:var(--good)}
.dcard .ev.solid{color:var(--cyan);border-color:var(--cyan)}
.dcard .ev.mixed{color:var(--amber);border-color:var(--amber)}
.dcard .ev.emerging{color:var(--coral);border-color:var(--coral)}

/* research scope */
.scope{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:20px}
@media(min-width:560px){.scope{grid-template-columns:repeat(2,1fr)}}
@media(min-width:820px){.scope{grid-template-columns:repeat(4,1fr)}}
.scope .s1{background:var(--ink);padding:20px 18px}
.scope b{display:block;font-family:var(--mono);font-weight:500;font-size:27px;letter-spacing:-.03em;color:var(--cyan)}
.scope span{display:block;font-family:var(--sans);font-size:13px;line-height:1.45;color:var(--text-soft);margin-top:8px}
.scope2{display:grid;gap:14px;margin-top:22px}
@media(min-width:560px){.scope2{grid-template-columns:repeat(2,1fr);gap:14px 28px}}
.scope2 > div{display:flex;gap:12px;align-items:baseline}
.scope2 b{font-family:var(--mono);font-weight:400;font-size:13px;color:var(--cyan);white-space:nowrap;min-width:74px}
.scope2 span{font-family:var(--sans);font-size:13.5px;line-height:1.5;color:#8FB0C2}

/* evidence grade chip */
.gr{display:inline-block;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;padding:2px 6px;border:1px solid currentColor;vertical-align:middle}
.gr.A{color:#1E7A4C} .gr.B{color:#1E5C82} .gr.C{color:#9A6B12} .gr.D{color:#A63A2A}
.dcard .sub{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute-dark);margin-top:8px}
.dcard p{font-family:var(--sans);font-size:14.5px;line-height:1.55;color:var(--text-soft);margin-top:12px}
.dcard .go{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin-top:14px;display:block}

.prog{height:2px;background:var(--line-soft);margin-top:12px}
.prog i{display:block;height:2px;background:var(--cyan);transition:width .35s cubic-bezier(.16,1,.3,1)}

/* Delivery screen: the PDF pending bar. Eases towards ~85% and stops, so it
   reads as work in progress rather than as a countdown that lies — the render
   takes as long as it takes, and the bar completing before the file arrives
   would be worse than no bar. Honest about being indeterminate, without
   looking like a stalled spinner. */
.prog i.pdfbar{width:0;animation:pdfwait 9s cubic-bezier(.16,1,.3,1) forwards}
@keyframes pdfwait{0%{width:4%}30%{width:46%}70%{width:72%}100%{width:85%}}

.track+.track{margin-top:26px}
.track .lab{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px}
.track .nm{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#DCEAF2}
.track .sb{font-family:var(--sans);font-size:12.5px;color:var(--mute);margin-top:2px}
.track .val{font-family:var(--mono);font-size:22px}
.track .pr{font-family:var(--mono);font-size:10.5px;color:var(--mute);margin-left:6px}
.rail{position:relative;height:22px}
.rail .base{position:absolute;top:10px;left:0;width:100%;height:1px;background:var(--line)}
.rail .band{position:absolute;top:4px;height:13px;background:rgba(95,208,232,.14);border-left:1px solid var(--line);border-right:1px solid var(--line)}
.rail .mk{position:absolute;top:0;transform:translateX(-50%);transition:left .9s cubic-bezier(.16,1,.3,1)}
.rail .mk i{display:block;width:1px;height:21px;background:currentColor}
.rail .mk b{position:absolute;top:6px;left:-4px;width:9px;height:9px;background:currentColor;transform:rotate(45deg)}
body.light .track .nm{color:var(--ink)} body.light .track .sb{color:var(--mute-dark)}
body.light .rail .base{background:#C7D6E0}
body.light .rail .band{background:rgba(10,30,46,.10);border-color:#9FB6C4}
body.light .track .pr{color:var(--mute-dark)}

.rule{height:1px;background:var(--line-soft)}
.card{border:1px solid var(--line);background:var(--ink-soft);padding:22px}
.note{font-family:var(--mono);font-size:10px;color:var(--mute-dark);line-height:1.6}
ul.ticks{list-style:none;display:grid;gap:10px;margin-top:22px}
ul.ticks li{display:flex;gap:12px;font-family:var(--sans);font-size:15px;color:var(--text-soft);line-height:1.5}
ul.ticks li::before{content:"—";color:var(--cyan);font-family:var(--mono);font-size:13px}

.field{display:block;margin-top:22px}
.field .l{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);display:block;margin-bottom:8px}
.field input,.field select{width:100%;font-family:var(--sans);font-size:16px;background:transparent;
  border:1px solid var(--line);color:var(--text);padding:15px 14px;outline:none;border-radius:0;appearance:none;min-height:52px}
.field input:focus,.field select:focus{border-color:var(--cyan)}
.field.err input,.field.err select{border-color:var(--coral)}
.field .e{font-family:var(--mono);font-size:11px;color:var(--coral);margin-top:6px;display:none}
.field.err .e{display:block}
.field input::placeholder{color:var(--mute-dark)}
.field select option{color:#000}
.chk{display:flex;gap:12px;align-items:flex-start;text-align:left;width:100%;background:none;border:0;cursor:pointer;padding:10px 0;margin-top:24px}
.chk .box{width:20px;height:20px;flex-shrink:0;margin-top:1px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:12px;color:var(--ink-deep)}
.chk[aria-pressed="true"] .box{background:var(--cyan);border-color:var(--cyan)}
.chk .t{font-family:var(--sans);font-size:13.5px;color:var(--mute);line-height:1.55}

/* ---------- report ---------- */
/* Report is a light document throughout, including the cover. Accent colours
   are darkened in light mode so tier labels and track markers stay legible on
   paper and survive greyscale printing. */
body.light{--cyan:#1B6A88;--good:#1E7A4C;--amber:#8A5E10;--coral:#A63A2A}

.rep .cover{background:var(--panel);color:var(--ink);margin:0 calc(var(--pad) * -1);padding:30px var(--pad) 40px;
  border-bottom:2px solid var(--ink)}
.rep .cover .cbrand{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.rep .cover .cbrand .b{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--ink)}
.rep .cover .cbrand .b span{color:var(--mute-dark)}
.rep .cover .cbrand .d{font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--mute-dark)}
.rep .cover .hr{height:1px;background:#C7D6E0;margin:18px 0 40px}
.rep .cover .dom{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--cyan)}
.rep .cover h1{font-family:var(--mono);font-weight:500;font-size:clamp(30px,7.6vw,46px);line-height:1.08;letter-spacing:-.03em;margin-top:14px;color:var(--ink)}
.rep .cover .huge{font-family:var(--mono);font-size:clamp(88px,29vw,168px);line-height:.8;letter-spacing:-.055em;margin-top:44px;color:var(--ink)}
.rep .cover .out{font-family:var(--mono);font-size:12px;color:var(--mute-dark);margin-top:10px;letter-spacing:.1em}
.rep .cover .tierbig{font-family:var(--mono);font-size:clamp(26px,7.4vw,40px);letter-spacing:-.02em;margin-top:22px}
.rep .cover .tline{font-family:var(--sans);font-size:16.5px;line-height:1.6;color:#33505F;margin-top:12px;max-width:28em}
.rep .cover .meta{display:grid;gap:12px;margin-top:44px;padding-top:22px;border-top:1px solid #C7D6E0}
.rep .cover .meta .r{display:flex;gap:16px}
.rep .cover .meta b{font-family:var(--mono);font-weight:400;font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute-dark);width:92px;flex-shrink:0;padding-top:3px}
.rep .cover .meta span{font-family:var(--sans);font-size:15px;color:#33505F}

/* ---------- the report as a book ---------------------------------------
   Nobody reads a compliance document for pleasure, so the structure has to do
   the work the reader will not: say why they are here, where each part sits in
   the argument, and what the numbers mean before showing more of them.

   Three devices carry that, and they are the reason the spacing below is as
   generous as it is:

   .chap    a chapter opening. Starts a page, holds a numeral, a title and a
            standfirst, then leaves a lot of air before the content. The air is
            the point — it is what makes a dense document feel finite.
   .bridge  a narrative bridge. One or two sentences between chapters saying
            what just happened and why the next thing follows from it. Set
            wider and quieter than body text so it reads as the author
            speaking rather than as more findings.
   .aside   an interpretation note. What a number means, next to the number,
            rather than in a methodology section nobody reaches.
------------------------------------------------------------------------- */
.rep .chap{margin-top:60px;padding-top:8px}
.rep .chap .num{font-family:var(--mono);font-weight:500;font-size:13px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--cyan)}
.rep .chap h2{font-family:var(--mono);font-weight:500;font-size:clamp(26px,6.4vw,34px);
  line-height:1.14;letter-spacing:-.025em;color:var(--ink);margin-top:18px;max-width:16em}
.rep .chap .stand{font-family:var(--sans);font-size:17px;line-height:1.7;color:#33505F;
  margin-top:20px;max-width:33em}
.rep .chap .hr{height:2px;background:var(--ink);margin-top:34px}

.rep .bridge{margin:44px 0 4px;padding-left:18px;border-left:2px solid var(--cyan);max-width:34em}
.rep .bridge p{font-family:var(--sans);font-size:16px;line-height:1.75;color:#33505F}

.rep .aside{margin-top:22px;padding:18px 20px;background:var(--panel);border:1px solid #C7D6E0;max-width:38em}
.rep .aside b{display:block;font-family:var(--mono);font-weight:400;font-size:9.5px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--mute-dark);margin-bottom:9px}
.rep .aside p{font-family:var(--sans);font-size:14.5px;line-height:1.7;color:#33505F}
.rep .aside p+p{margin-top:10px}

/* Contents. A book has one; it is also the fastest way to tell a reader that
   this ends, and roughly when. */
.rep .toc{margin-top:38px;max-width:34em}
.rep .toc .row{display:flex;gap:16px;align-items:baseline;padding:13px 0;border-bottom:1px solid #DCE5EB}
.rep .toc .row b{font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.16em;
  color:var(--cyan);width:26px;flex-shrink:0}
.rep .toc .row .t{font-family:var(--sans);font-size:16px;color:var(--ink);flex:1}
.rep .toc .row .w{font-family:var(--sans);font-size:13.5px;color:var(--mute-dark);text-align:right;max-width:15em}

.rep .sect{margin-top:52px}
.rep .sect > .hd{display:flex;align-items:baseline;gap:14px;padding-bottom:10px;border-bottom:2px solid var(--ink)}
.rep .sect > .hd h2{font-family:var(--mono);font-weight:500;font-size:19px;letter-spacing:-.01em}
.rep .sect > .hd .ix{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--mute-dark);margin-left:auto}
.rep .stats{display:grid;gap:22px;padding:26px 0;border-bottom:1px solid #C7D6E0;margin-top:26px}
@media(min-width:600px){.rep .stats{grid-template-columns:repeat(3,1fr)}}
.rep .stats .n{font-family:var(--mono);font-size:40px;line-height:1;margin-top:8px}
.rep .stats .n small{font-size:15px;color:var(--mute-dark)}
.rep .stats .w{font-family:var(--mono);font-size:22px;line-height:1.4;margin-top:8px}
.rep .find{display:grid;gap:1px;background:#C7D6E0;margin-top:24px}
.rep .find > div{background:var(--panel);padding:24px}
.rep .find h3{font-family:var(--mono);font-weight:500;font-size:13.5px;letter-spacing:.08em;text-transform:uppercase}
.rep .find .sc{font-family:var(--mono);font-size:20px}
.rep .find p{font-family:var(--sans);font-size:15px;line-height:1.65;color:#33505F;margin-top:16px}
.rep .move{margin-top:20px;padding-left:14px;border-left:2px solid #C7D6E0}
.rep .move .mmeta{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute-dark)}
.rep .move .mmeta span{padding:0 4px;color:#A7BCC8}
.rep .move .m{font-family:var(--sans);font-size:15.5px;line-height:1.5;margin-top:7px}
.rep .move .w{font-family:var(--sans);font-size:13.5px;color:var(--mute-dark);line-height:1.5;margin-top:4px}

.rep .secnote{font-family:var(--sans);font-size:14.5px;line-height:1.65;color:#33505F;margin-top:20px;max-width:38em}
.rep .legend{display:grid;gap:10px;margin-top:18px;padding:16px 18px;background:var(--panel);border:1px solid #C7D6E0}
.rep .legend > div{display:flex;gap:14px;align-items:baseline}
.rep .legend b{font-family:var(--mono);font-weight:400;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);width:104px;flex-shrink:0}
.rep .legend span{font-family:var(--sans);font-size:13.5px;line-height:1.5;color:var(--mute-dark)}
.rep .hz{margin-top:30px}
.rep .hz .d{display:flex;align-items:baseline;gap:14px}
.rep .hz .d b{font-family:var(--mono);font-weight:500;font-size:30px;line-height:1}
.rep .hz .d span{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute-dark)}
.rep .hz .it{padding:0 0 14px;border-bottom:1px solid #DCE5EB;margin-top:16px}
.rep .hz .it .ikick{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute-dark)}
.rep .hz .it .ikick span{padding:0 4px;color:#A7BCC8}
.rep .hz .it p{font-family:var(--sans);font-size:15px;line-height:1.55;margin-top:7px}
.rep .reg{background:var(--panel);border-left:2px solid var(--ink);padding:24px;margin-top:26px}
.rep .reg .r{display:flex;gap:18px;margin-top:16px}
.rep .reg .r b{font-family:var(--mono);font-weight:500;font-size:11px;letter-spacing:.12em;width:78px;flex-shrink:0;padding-top:3px}
.rep .reg .r p{font-family:var(--sans);font-size:14.5px;line-height:1.6;color:#33505F}
.rep .foot{border-top:1px solid #C7D6E0;margin-top:40px;padding-top:22px;font-family:var(--mono);font-size:10px;color:var(--mute-dark);line-height:1.7}

.appx table{width:100%;border-collapse:collapse;margin-top:12px}
.appx th{font-family:var(--mono);font-weight:400;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute-dark);text-align:left;padding:0 10px 8px 0;border-bottom:1px solid #C7D6E0}
.appx td{font-family:var(--sans);font-size:13px;line-height:1.5;padding:9px 10px 9px 0;border-bottom:1px solid #DCE5EB;vertical-align:top}
.appx td.n{font-family:var(--mono);font-size:13px;white-space:nowrap;text-align:right}
.appx td.s{font-family:var(--mono);font-size:10px;color:var(--mute-dark);white-space:nowrap}
.appx .src{display:flex;gap:16px;padding:12px 0;border-bottom:1px solid #DCE5EB}
.appx .src b{font-family:var(--mono);font-weight:400;font-size:10px;letter-spacing:.06em;width:120px;flex-shrink:0;padding-top:2px}
.appx .src p{font-family:var(--sans);font-size:13.5px;line-height:1.55}
.appx .src p i{color:var(--mute-dark);font-style:normal;display:block;margin-top:3px;font-size:12.5px}
.appx .src p a{color:var(--mute-dark);font-family:var(--mono);font-size:10px;word-break:break-all;text-decoration:none;display:block;margin-top:4px}

.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:44px}
.actions .btn{flex:1 1 200px}
.printhint{font-family:var(--mono);font-size:10px;color:var(--mute-dark);line-height:1.6;margin-top:12px}
.lnk{background:none;border:0;padding:0;cursor:pointer;font:inherit;color:inherit;
  text-decoration:underline;text-underline-offset:2px}
.lnk:hover{color:var(--cyan)}
body.light .lnk:hover{color:var(--ink)}
.runfoot{display:none}
.brk{break-after:page;page-break-after:always}
@media screen{.brk{display:none}}

.ghost{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}
.ghost > div{position:relative;height:1px}
.ghost i{display:block;height:1px;background:var(--line);opacity:.55;transform-origin:left;animation:draw .9s both cubic-bezier(.16,1,.3,1)}
.ghost b{position:absolute;top:-3px;width:7px;height:7px;border:1px solid var(--line);transform:rotate(45deg);opacity:.7}
@keyframes draw{from{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}

.pill{display:inline-block;font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;padding:5px 12px;border:1px solid currentColor}
.big{font-family:var(--mono);font-size:clamp(64px,20vw,104px);line-height:.86;letter-spacing:-.04em;color:var(--text)}

:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
body.light :focus-visible{outline-color:var(--ink)}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- print mode ---------------------------------------------------
   body.printmode is set by /r/{token}?print=1 for the server-side render.
   It strips every interactive affordance so the renderer captures the
   document alone, rather than duplicating report() into a second function
   that would drift from this one.

   .runfoot has to go specifically: it is a position:fixed running footer that
   only appears under print media, and the headless render IS print media, so
   left alone it would print underneath Puppeteer's own footerTemplate on
   every page. One running footer, supplied by the renderer.
------------------------------------------------------------------------- */
body.printmode .topbar,
body.printmode .no-print,
body.printmode .runfoot{display:none!important}
body.printmode{background:#fff}

@page{size:A4;margin:14mm}
@media print{
  .no-print{display:none!important}
  body{background:#fff!important}
  .topbar{display:none}
  .wrap,.wrap-wide{max-width:none;padding:0}
  .rep .cover{margin:0;padding:0 0 22mm;min-height:232mm;border-bottom:2px solid var(--ink)}
  /* The track marker is a diamond centred on its value, so a dimension
     scoring 100 puts roughly 5px of it past the right end of the rail. On
     screen .wrap's 20px padding absorbs that. Print drops the padding to use
     the full page width, which left the document 6px wider than the paper at
     ceiling scores and clipped the right-hand diamond, so the rail is inset
     instead. Both ends, so a score of 0 stays symmetrical. */
  .rail{margin-left:5px;margin-right:5px}
  .rep .find > div,.rep .reg,.track,.appx .src,.rep .move,.rep .hz{break-inside:avoid;page-break-inside:avoid}
  .rep .sect{break-inside:auto}
  /* Every chapter opens a page. This is what makes it read as a book rather
     than as a long document with headings — and the extra pages are the
     whitespace, not a cost to be optimised away. */
  .rep .chap{break-before:page;page-break-before:always;margin-top:0;padding-top:4mm}
  .rep .chap:first-of-type{break-before:auto;page-break-before:auto}
  .rep .chap,.rep .bridge,.rep .aside,.rep .toc .row{break-inside:avoid;page-break-inside:avoid}
  .runfoot{display:block;position:fixed;bottom:0;left:0;right:0;
    font-family:var(--mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;
    color:#8FA6B4;border-top:1px solid #DCE5EB;padding-top:4px}
  a{text-decoration:none;color:inherit}
}
