/* jid-v13.css — v13.2.0 skin. Defines NO :root. base.css remains the token definer. */

/* jid-v13.css — skin only. Defines NO :root. base.css remains the token definer. */
:where(body.ai-chrome){
  --brand:var(--accent,#0f766e);
  --fam-access:#2563eb; --fam-digital:#7c3aed; --fam-infra:#0891b2;
  --fam-scheme:#b45309; --fam-market:#4d7c0f; --fam-enforce:#be123c; --fam-consumer:#0369a1;
  --pane:var(--surface,#fff); --line:color-mix(in oklab, currentColor 12%, transparent);
  --muted:color-mix(in oklab, currentColor 62%, transparent);
  font-family:var(--font-body, ui-sans-serif, system-ui, sans-serif);
  color:var(--text,#14161a); background:var(--bg,#f6f6f4);
}
body.ai-chrome{margin:0;line-height:1.55}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;z-index:60;background:var(--pane);padding:.5rem .75rem;border-radius:8px}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}

.topbar{position:sticky;top:0;z-index:40;display:flex;gap:.75rem;align-items:center;
  padding:.6rem 1rem;background:var(--pane);border-bottom:1px solid var(--line)}
.topbar .b{font-weight:700;letter-spacing:-.02em}.topbar .b i{color:var(--brand);font-style:normal}
.topbar .cr{color:var(--muted);font-size:.85rem}.topbar .sp{flex:1}
.topbar button{min-height:36px;padding:.35rem .7rem;font-size:.82rem;border:1px solid var(--line);
  border-radius:8px;background:transparent;color:inherit;cursor:pointer}
.topbar button:hover{background:color-mix(in oklab,var(--brand) 8%,transparent)}

.trustbar{display:flex;flex-wrap:wrap;gap:.5rem;padding:.6rem 1rem;background:var(--pane);
  border-bottom:1px solid var(--line);position:sticky;top:53px;z-index:30}
.tbadge{display:inline-flex;gap:.4rem;align-items:baseline;font-size:.78rem;color:var(--muted);
  border:1px solid var(--line);border-radius:999px;padding:.25rem .6rem}
.tbadge b{color:var(--text,#14161a);font-weight:600}
.tbadge .tdot{width:7px;height:7px;border-radius:50%;background:var(--fam-market);align-self:center}
.tbadge.warn .tdot{background:var(--fam-scheme)}

.shell{display:grid;grid-template-columns:210px minmax(0,1fr) 300px;gap:1rem;padding:1rem;
  max-width:1600px;margin-inline:auto;align-items:start}
.sidenav{position:sticky;top:110px;display:flex;flex-direction:column;gap:2px;max-height:80vh;overflow:auto}
.sidenav .lead{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:.6rem 0 .2rem}
.sidenav a{display:flex;gap:.45rem;align-items:center;padding:.3rem .4rem;border-radius:6px;
  font-size:.78rem;text-decoration:none;color:inherit}
.sidenav a:hover,.sidenav a.on{background:color-mix(in oklab,var(--brand) 10%,transparent)}
/* Module names are 30-45 characters and the rail is 168px, so a single
   nowrap line ellipsised almost every entry ("W1a Licensing, Authorisatio…")
   while the full text sat in the title attribute -- readable only on hover,
   and not at all on touch. Two clamped lines fit the longest name in the
   spine without changing the rail width. */
.sidenav .nl{flex:1;min-width:0;overflow:hidden;white-space:normal;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  line-height:1.25;word-break:break-word}
.sidenav a{align-items:flex-start}
.sidenav a .dot{margin-top:.32rem;flex:0 0 auto}
/* Scroll position feedback: aria-current is set by the observer in
   jid-v13.js so assistive tech and sighted users get the same signal. */
.sidenav a[aria-current="true"]{background:color-mix(in oklab,var(--brand) 16%,transparent);
  box-shadow:inset 2px 0 0 var(--brand);font-weight:600}
.sidenav .nc{color:var(--muted);font-variant-numeric:tabular-nums}
.dot{width:8px;height:8px;border-radius:2px;background:var(--fam-access);flex:none}
[data-fam=digital] .dot,.sidenav a[data-fam=digital] .dot{background:var(--fam-digital)}
[data-fam=infra] .dot,.sidenav a[data-fam=infra] .dot{background:var(--fam-infra)}
[data-fam=scheme] .dot,.sidenav a[data-fam=scheme] .dot{background:var(--fam-scheme)}
[data-fam=market] .dot,.sidenav a[data-fam=market] .dot{background:var(--fam-market)}
[data-fam=enforce] .dot,.sidenav a[data-fam=enforce] .dot{background:var(--fam-enforce)}
[data-fam=consumer] .dot,.sidenav a[data-fam=consumer] .dot{background:var(--fam-consumer)}
.modnav{display:none}

.cmd{background:var(--pane);border:1px solid var(--line);border-radius:14px;padding:1rem}
.cmd .top{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.cmd .flag{font-size:1.6rem}
.cmd h1{font-size:clamp(1.3rem,1rem+1.2vw,1.9rem);margin:0}
.cmd h1 .ab{color:var(--muted);font-weight:500}
.chips{display:flex;gap:.35rem;flex-wrap:wrap}
.chip{font-size:.72rem;border:1px solid var(--line);border-radius:999px;padding:.15rem .5rem;color:var(--muted)}
.thesis{margin:.6rem 0 0;max-width:78ch;color:color-mix(in oklab,currentColor 88%,transparent)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem;margin-top:.9rem}
.kpi{text-align:left;background:color-mix(in oklab,var(--pane) 70%,var(--bg,#f6f6f4));
  border:1px solid var(--line);border-radius:10px;padding:.6rem .7rem;display:block;color:inherit}
button.kpi{cursor:pointer}button.kpi[aria-pressed=true]{outline:2px solid var(--brand)}
.kpi .n{display:block;font-size:1.45rem;font-weight:650;font-variant-numeric:tabular-nums}
.kpi .l{display:block;font-size:.8rem}
/* KPI provenance stays in the DOM (the render contract requires every KPI
   to name its JID source path) but stops shouting `baseline.modules[]` at a
   reader who wants the number. Reserved space, zero layout shift, revealed
   on hover or keyboard focus. */
.kpi .src{display:block;font-size:.68rem;color:var(--muted);font-family:var(--mono,monospace);
  opacity:0;transition:opacity .12s ease}
.kpi:hover .src,.kpi:focus .src,.kpi:focus-within .src{opacity:1}
@media (hover:none){.kpi .src{opacity:.62}}
.confmix{display:flex;height:10px;border-radius:999px;overflow:hidden;gap:2px}
.confmix span{display:block}.cm1{background:var(--fam-market)}.cm2{background:var(--fam-infra)}
.cm3{background:var(--fam-scheme)}
.confmixL{display:flex;gap:.6rem;flex-wrap:wrap;font-size:.7rem;color:var(--muted);margin-top:.35rem}
.confmixL i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:.25rem}

.briefs{margin-top:1rem;background:var(--pane);border:1px solid var(--line);border-radius:14px;padding:1rem}
.briefs h2{margin:0 0 .6rem;font-size:1rem}
.btabs{display:flex;gap:.4rem;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:.5rem}
.btabs button{min-height:36px;padding:.3rem .65rem;border:1px solid var(--line);border-radius:8px;
  background:transparent;color:inherit;font-size:.8rem;cursor:pointer}
.btabs button[aria-selected=true]{background:color-mix(in oklab,var(--brand) 12%,transparent);border-color:var(--brand)}
.btabs .tn{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:.35rem}
.prose{max-width:74ch;font-size:.92rem}
.prose h3{font-size:1rem;margin:1.1rem 0 .3rem}.prose h4{font-size:.9rem;margin:.9rem 0 .25rem}
.prose p,.prose li{max-width:74ch}.prose table{width:100%;border-collapse:collapse;font-size:.82rem;margin:.6rem 0}
.prose th,.prose td{border:1px solid var(--line);padding:.3rem .45rem;text-align:left;vertical-align:top}
.prose thead th{background:color-mix(in oklab,var(--brand) 8%,transparent)}
.xjid{display:flex;gap:.7rem;align-items:flex-start;margin-top:.8rem;padding:.7rem;
  border:1px dashed var(--line);border-radius:10px}
.xjid .xflag{font-size:1.3rem}.xjid .xb{font-weight:600;font-size:.85rem}
.xjid p{margin:.2rem 0 0;font-size:.82rem;color:var(--muted)}
.xgo{align-self:center;white-space:nowrap;font-size:.78rem;text-decoration:none;color:var(--brand);
  border:1px solid var(--line);border-radius:8px;padding:.35rem .6rem}
.mergednote{margin-top:.6rem;font-size:.75rem;color:var(--muted)}

.findbar{position:sticky;top:110px;z-index:20;margin-top:1rem;background:var(--pane);
  border:1px solid var(--line);border-radius:12px;padding:.6rem;display:grid;gap:.5rem}
.fbrow{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.searchwrap{position:relative;flex:1;min-width:220px;display:flex}
#q{flex:1;min-height:38px;padding:.4rem .6rem;border:1px solid var(--line);border-radius:8px;
  background:transparent;color:inherit;font-size:.85rem}
.clearq{position:absolute;right:.3rem;top:50%;translate:0 -50%;border:0;background:none;color:var(--muted);
  font-size:1.1rem;cursor:pointer;min-width:32px;min-height:32px}
.fgroup{display:flex;gap:.3rem;align-items:center;flex-wrap:wrap}
.glab{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.fgroup button,.resetf,.evbtn{min-height:34px;font-size:.78rem;padding:.25rem .55rem;border:1px solid var(--line);
  border-radius:999px;background:transparent;color:inherit;cursor:pointer}
.fgroup button[aria-pressed=true]{background:color-mix(in oklab,var(--brand) 14%,transparent);border-color:var(--brand)}
.fgroup .n{color:var(--muted);margin-left:.3rem;font-variant-numeric:tabular-nums}
.note{font-size:.75rem;color:var(--muted);margin-left:auto}

.grid{display:grid;gap:.7rem;margin-top:.8rem}
.mcard{background:var(--pane);border:1px solid var(--line);border-radius:12px;padding:.75rem .85rem;
  content-visibility:auto;contain-intrinsic-size:220px}
.mcard h3{margin:0}
.mtoggle{display:flex;gap:.5rem;align-items:center;width:100%;text-align:left;background:none;border:0;
  color:inherit;cursor:pointer;padding:.15rem 0;font:inherit;min-height:44px}
.code{font-family:var(--font-mono,ui-monospace,monospace);font-size:.72rem;border-radius:6px;padding:.15rem .4rem;
  color:#fff;background:var(--fam-access)}
[data-fam=digital] .code{background:var(--fam-digital)}[data-fam=infra] .code{background:var(--fam-infra)}
[data-fam=scheme] .code{background:var(--fam-scheme)}[data-fam=market] .code{background:var(--fam-market)}
[data-fam=enforce] .code{background:var(--fam-enforce)}[data-fam=consumer] .code{background:var(--fam-consumer)}
.mname{font-weight:600;font-size:.92rem;flex:1}
.fl{font-size:.66rem;border-radius:999px;padding:.1rem .45rem;border:1px solid var(--line);color:var(--muted)}
.mvf{border-color:var(--fam-scheme);color:var(--fam-scheme)}
.kjf{border-color:var(--fam-enforce);color:var(--fam-enforce)}
.gpf{border-color:var(--fam-infra);color:var(--fam-infra)}
.confp{font-size:.68rem;color:var(--muted)}.caret{transition:rotate .18s ease}
.mtoggle[aria-expanded=true] .caret{rotate:180deg}
.sp{margin:.35rem 0 0;font-size:.86rem;color:color-mix(in oklab,currentColor 85%,transparent);max-width:80ch}
.mbody{margin-top:.55rem;display:grid;gap:.5rem}
/* `.mbody` sets display:grid, which outranks the UA default [hidden]{display:none},
   so collapsing a module card flipped aria-expanded and set the hidden attribute
   while the body stayed fully visible. Attribute selector restores the intent at
   higher specificity than the class alone -- no !important needed. Same guard for
   any other grid/flex panel in this bundle that relies on [hidden]. */
.mbody[hidden],.grid[hidden],[hidden]{display:none}
.blk{border:1px solid var(--line);border-radius:10px;padding:.5rem .6rem;font-size:.85rem;
  background:color-mix(in oklab,var(--pane) 60%,var(--bg,#f6f6f4))}
.blk .bk{display:block;font-size:.66rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:.2rem}
.blk em{display:block;margin-top:.25rem;font-size:.76rem;color:var(--muted);font-style:normal}
.brief{border-top:1px solid var(--line);padding-top:.5rem}
.bhead{display:flex;gap:.5rem;align-items:center}.bn{font-size:.7rem;color:var(--muted)}
.rdbtn{margin-left:auto;min-height:34px;font-size:.75rem;border:1px solid var(--line);border-radius:999px;
  background:transparent;color:inherit;cursor:pointer;padding:.2rem .55rem}
.mfoot{display:flex;gap:.4rem;margin-top:.55rem}
.evbtn{text-decoration:none;display:inline-flex;gap:.35rem;align-items:center}
.evn{font-variant-numeric:tabular-nums;color:var(--muted)}
.zero{display:none;text-align:left;border:1px dashed var(--line);border-radius:12px;padding:1.2rem;margin-top:.8rem}
.zero p{color:var(--muted);font-size:.85rem;max-width:60ch}
.prov{margin:1rem 0 2rem;font-size:.75rem;color:var(--muted);max-width:80ch}
.prov code{font-family:var(--font-mono,ui-monospace,monospace)}

.rail{position:sticky;top:110px;display:grid;gap:.7rem;max-height:82vh;overflow:auto}
.rcard{background:var(--pane);border:1px solid var(--line);border-radius:12px;padding:.7rem .8rem}
.rcard h2{font-size:.82rem;margin:0 0 .5rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.rcard ul{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}
.rcard li{font-size:.8rem;border-bottom:1px solid var(--line);padding-bottom:.5rem}
.rcard li:last-child{border-bottom:0;padding-bottom:0}
.rcard p{margin:.2rem 0}.hz,.gd,.imp{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.hm{display:block;font-size:.7rem;color:var(--muted);margin-top:.2rem}
.rempty{font-size:.78rem;color:var(--muted);margin:0}
.famkey{display:grid;gap:.25rem}
.famkey button{display:flex;gap:.45rem;align-items:center;width:100%;min-height:34px;font-size:.76rem;
  border:1px solid transparent;border-radius:8px;background:none;color:inherit;cursor:pointer;padding:.2rem .35rem}
.famkey button[aria-pressed=true]{border-color:var(--brand);background:color-mix(in oklab,var(--brand) 10%,transparent)}
.fcount{margin-left:auto;color:var(--muted);font-variant-numeric:tabular-nums}
.famnote{font-size:.7rem;color:var(--muted);margin:.5rem 0 0}

.scrim{position:fixed;inset:0;background:#0008;opacity:0;pointer-events:none;transition:opacity .2s;z-index:50}
.scrim.on{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;height:100dvh;width:min(560px,94vw);background:var(--pane);
  border-left:1px solid var(--line);translate:100% 0;transition:translate .24s cubic-bezier(.16,1,.3,1);
  z-index:55;display:flex;flex-direction:column}
.drawer.on{translate:0 0}
.dhead{display:flex;gap:.6rem;align-items:flex-start;padding:.9rem;border-bottom:1px solid var(--line)}
.dhead h2{font-size:1rem;margin:0}.dsub{font-size:.75rem;color:var(--muted)}
.dcode{font-family:var(--font-mono,ui-monospace,monospace);font-size:.72rem;color:#fff;background:var(--brand);
  border-radius:6px;padding:.15rem .4rem}
.dclose{margin-left:auto;min-width:44px;min-height:44px;border:0;background:none;font-size:1.3rem;color:inherit;cursor:pointer}
.dnav{display:flex;gap:.4rem;align-items:center;padding:.5rem .9rem;border-bottom:1px solid var(--line);font-size:.75rem}
.dnav button{min-height:34px;border:1px solid var(--line);border-radius:999px;background:none;color:inherit;
  cursor:pointer;padding:.2rem .6rem;font-size:.75rem}
#dpos{margin-left:auto;color:var(--muted)}
.dbody{overflow:auto;padding:.9rem;display:grid;gap:.6rem}
.tierkey{display:flex;gap:.4rem;flex-wrap:wrap;font-size:.68rem;color:var(--muted)}
.tierkey span{border:1px solid var(--line);border-radius:999px;padding:.15rem .5rem}
.ev{border:1px solid var(--line);border-radius:10px;padding:.6rem}
.ev .t{font-size:.86rem}.ev .m{font-size:.72rem;color:var(--muted);margin-top:.3rem;display:flex;gap:.4rem;flex-wrap:wrap}
.ev a{color:var(--brand)}
.copycite{min-height:32px;font-size:.7rem;border:1px solid var(--line);border-radius:999px;background:none;
  color:inherit;cursor:pointer;padding:.15rem .5rem}

body[data-density=comfortable] .mcard{padding:1rem 1.1rem}
body[data-density=comfortable] .grid{gap:1rem}

@media (max-width:1180px){.shell{grid-template-columns:minmax(0,1fr)}.sidenav,.rail{position:static;max-height:none}
 .sidenav{display:none}.modnav{display:flex;gap:.35rem;overflow:auto;padding-bottom:.4rem}
 .modnav a{display:flex;gap:.3rem;align-items:center;font-size:.72rem;text-decoration:none;color:inherit;
  border:1px solid var(--line);border-radius:999px;padding:.25rem .55rem;white-space:nowrap;min-height:34px}
 .findbar{top:0}.trustbar{position:static}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

@media print{
  .topbar,.sidenav,.rail,.findbar,.modnav,.drawer,.scrim,.mfoot,.rdbtn,.zero{display:none!important}
  .shell{display:block;padding:0}.mcard{break-inside:avoid;border-color:#999}
  .caret{display:none}
  /* Print expands disclosure only. .paywall stays hidden — entitlement wins. */
  [data-pexpand]{display:block!important}
  .paywall,[data-entitlement=locked]{display:none!important}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:.7em;color:#555}
}

/* ---- v13.2: evidence drawer + progressive disclosure ---- */

.drawer{position:fixed;top:0;right:0;height:100vh;width:min(760px,96vw);background:var(--pane);
 border-left:1px solid var(--line);transform:translateX(101%);transition:transform .22s ease;z-index:60;
 display:flex;flex-direction:column;box-shadow:-18px 0 40px #0002}
.drawer.on{transform:none}
.dhead{padding:.9rem 1rem;border-bottom:1px solid var(--line);border-left:4px solid var(--fam-access);display:flex;gap:.6rem;align-items:flex-start}
.dhead[data-fam=digital]{border-left-color:var(--fam-digital)}.dhead[data-fam=infra]{border-left-color:var(--fam-infra)}
.dhead[data-fam=scheme]{border-left-color:var(--fam-scheme)}.dhead[data-fam=market]{border-left-color:var(--fam-market)}
.dhead[data-fam=enforce]{border-left-color:var(--fam-enforce)}.dhead[data-fam=consumer]{border-left-color:var(--fam-consumer)}
#dtitle{font-weight:650;margin-left:.4rem}#dsub{display:block;font-size:.75rem;color:var(--muted);margin-top:.2rem}
.dclose{margin-left:auto}
.dtools{padding:.55rem 1rem;border-bottom:1px solid var(--line);display:flex;gap:.35rem;flex-wrap:wrap;align-items:center}
#dpos{margin-left:auto;font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}
.dbody{flex:1;overflow:auto;padding:.9rem 1rem}
.tierkey{display:flex;gap:.7rem;flex-wrap:wrap;font-size:.68rem;color:var(--muted);margin-bottom:.7rem}
.dbody .sp{font-size:.82rem;padding:.6rem .7rem;border:1px solid var(--line);border-radius:10px;
 background:color-mix(in oklab,var(--pane) 60%,var(--bg,#f6f6f4));margin:0 0 .7rem}
.ev{border:1px solid var(--line);border-radius:10px;padding:.6rem .7rem;margin-bottom:.55rem}
.ev .t{font-size:.85rem}
.ev .m{display:flex;gap:.45rem;flex-wrap:wrap;align-items:center;margin-top:.4rem;font-size:.7rem;color:var(--muted)}
.ev .m span{border:1px solid var(--line);border-radius:999px;padding:.1rem .45rem}
.ev .m a{color:var(--brand)}
.copycite{border:1px solid var(--line);border-radius:999px;background:transparent;color:inherit;
 font-size:.7rem;padding:.15rem .5rem;cursor:pointer;min-height:30px}
.dnav{padding:.7rem 1rem;border-top:1px solid var(--line);display:flex;gap:.4rem}
.dnav button{min-height:38px;border:1px solid var(--line);border-radius:999px;background:transparent;
 color:inherit;cursor:pointer;padding:.25rem .7rem;font-size:.78rem}
.rdbtn[aria-pressed=true]{background:color-mix(in oklab,var(--brand) 14%,transparent);border-color:var(--brand)}
.rempty{font-size:.8rem;color:var(--muted)}
.prose.teaser{position:relative}
.prose.teaser::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2.2rem;
 background:linear-gradient(transparent,var(--pane));pointer-events:none}
.brief .rdbtn{margin-top:.4rem}
.buildchip{font-family:var(--font-mono,ui-monospace,monospace);font-size:.7rem;border:1px solid var(--brand);
 color:var(--brand);border-radius:999px;padding:.1rem .5rem;margin-left:.4rem}
.banner{margin:1rem 1rem 0;padding:.7rem .9rem;border:1px solid var(--fam-enforce);border-radius:12px;
 background:color-mix(in oklab,var(--fam-enforce) 8%,transparent);font-size:.82rem}
.banner b{color:var(--fam-enforce)}
body[data-density=compact] .sp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body[data-density=compact] .mcard{padding:.5rem .65rem}
.gate table{width:100%;border-collapse:collapse;font-size:.78rem}.gate td{border-bottom:1px solid var(--line);padding:.25rem}
.bad{color:var(--fam-enforce)}.good{color:var(--fam-market)}
@media(max-width:1200px){.shell{grid-template-columns:1fr}.sidenav,.rail{position:static;max-height:none}}
@media print{.drawer,.scrim{display:none!important}.prose.teaser::after{display:none}}

.tbadge.info .tdot{background:var(--muted)}
.tbadge.info{opacity:.85}

/* --- WPM attribution chip (port 2026-08-04) --------------------------------
   The firm logo is an SVG with no intrinsic pixel size, so an unconstrained
   <img> expands to fill the flex line and blows the whole trustbar into giant
   ellipses. Constrain it explicitly and keep the attribution on one line. */
.tbadge{align-items:center}
.tbadge .tlogo{height:26px;width:auto;max-width:44px;flex:0 0 auto;margin-right:7px;border-radius:3px;display:block}
.tbadge.ok{white-space:nowrap}

/* WPM 2026-08-04: attribution chip sized for the Ramparts stacked lockup */
.tbadge.ok{padding-top:3px;padding-bottom:3px;line-height:1.25}

/* v13.3.0: the topbar plus the trustbar at top:53px otherwise obscure
   every hash-scroll target, so a shared #sec-mod-* deep link landed the
   reader on a card header hidden behind the sticky chrome. */
.mcard[id^="sec-mod-"]{scroll-margin-top:112px}
@media (max-width:768px){.mcard[id^="sec-mod-"]{scroll-margin-top:96px}}

/* v13.3.0 batch 2: module permalink affordance, kept quiet until hover
   or keyboard focus so it does not compete with the card header. */
.mcard h3{display:flex;align-items:center;gap:6px}
.plink{opacity:0;flex:none;font:600 12px/1 ui-monospace,monospace;color:var(--muted);text-decoration:none;padding:2px 6px;border-radius:4px;transition:opacity .12s}
.mcard:hover .plink,.plink:focus-visible{opacity:1;outline-offset:2px}
.plink:hover{color:var(--fg);background:var(--surface2,rgba(127,127,127,.12))}
.nojs{margin:12px 16px;padding:10px 12px;border:1px solid var(--line);border-radius:6px;font-size:13px;color:var(--muted)}
@media print{.plink{display:none}}

/* ---- v13.3.0 batch 4: quick filters, currency, back-to-top, print ---- */

/* Hero quick row. "Moved" existed only inside the filter bar ~1,400px down. */
.quickrow{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-top:.55rem}
.movedq{font:inherit;font-size:.82rem;font-weight:600;padding:.28rem .6rem;cursor:pointer;
 border:1px solid var(--sig-moved,var(--brand));border-radius:999px;background:transparent;
 color:var(--sig-moved,var(--brand))}
.movedq:hover{background:color-mix(in srgb,var(--brand) 12%,transparent)}
.movedq[aria-pressed=true]{background:var(--sig-moved,var(--brand));color:var(--pane,#fff)}
.movedq:focus-visible,.srcall:focus-visible,.totop:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.sincechip{font-size:.78rem;color:var(--muted);border:1px dashed var(--line);
 border-radius:999px;padding:.24rem .55rem}
.sincechip[hidden]{display:none}

/* Expand/collapse every source panel at once (14 panels per page). */
.srcall{font:inherit;font-size:.8rem;padding:.24rem .55rem;cursor:pointer;
 border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--muted)}
.srcall:hover{color:var(--fg)}
.srcall[aria-pressed=true]{color:var(--fg);border-color:var(--fg)}

/* Retrieval date on every source row. Retrieval, not publication. */
.srclist .sret{margin-left:.4rem;font-size:.72rem;color:var(--muted);white-space:nowrap}
.mconf{margin-left:auto;padding-left:.5rem;font-size:.72rem;color:var(--muted);white-space:nowrap;font-weight:400}
@media (max-width:768px){.mconf{display:none}}
@media print{.mconf{color:#555}}

/* The one table on the page now has a caption and row/column headers. */
table.meta2{width:100%;border-collapse:collapse}
table.meta2 caption{text-align:left;font-size:.78rem;color:var(--muted);padding-bottom:.35rem}
table.meta2 thead th{text-align:left;font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;
 color:var(--muted);border-bottom:1px solid var(--line);padding:.25rem .5rem .25rem 0;font-weight:700}
table.meta2 th[scope=row]{text-align:left;font-weight:400;padding:.25rem .5rem .25rem 0;vertical-align:top}

/* Back to top: these pages run 11,000-18,000px. */
.totop{position:fixed;right:1rem;bottom:1rem;z-index:55;font:inherit;font-size:.82rem;
 font-weight:600;padding:.5rem .7rem;cursor:pointer;border:1px solid var(--line);
 border-radius:8px;background:var(--pane);color:var(--fg);box-shadow:0 6px 18px #0002}
.totop:hover{border-color:var(--fg)}
.totop[hidden]{display:none}
@media (max-width:768px){.totop span{display:none}.totop{right:.7rem;bottom:.7rem}}

/* PRINT (rewritten). The batch-3 disclosure work made .mbody[hidden] and the
   closed <details class="srcs"> the default, so a printed page lost the module
   bodies and every citation -- the two things a printed monitor page is for.
   jid-v13.js also force-opens both on beforeprint; this is the CSS half. */
@media print{
  .totop,.srcall,.movedq,.sincechip,.quickrow,.jall,.jpager,.confmixL,.clearq,.searchwrap{display:none!important}
  .mcard .mbody[hidden]{display:block!important}
  .mcard details.srcs{display:block!important}
  .mcard details.srcs>*{display:block!important}
  .mcard details.srcs summary{list-style:none;color:#000;font-weight:700}
  .srclist{display:block!important}
  .srclist li{break-inside:avoid}
  .crumbs{font-size:.7rem;color:#555}
  table.meta2 caption{color:#555}
}


/* ---- v13.3.0 batch 3: breadcrumb, dated metadata line, filterable
   confidence mix, sibling pager, server-rendered sources ---- */

/* The page already emitted BreadcrumbList structured data with nothing on the
   page to correspond to it. */
.crumbs{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;font-size:.78rem;
  color:var(--muted);margin:0 0 .5rem}
.crumbs a{color:var(--muted);text-decoration:none;border-bottom:1px solid transparent}
.crumbs a:hover{color:var(--fg);border-bottom-color:currentColor}
.crumbs .csep{opacity:.5}
.crumbs [aria-current=page]{color:var(--fg);font-weight:600}

/* Freshness is the product for a regulatory monitor, and the page carried no
   visible date and no <time> element at all. */
.metaline{margin:.15rem 0 .55rem;font-size:.82rem;color:var(--muted)}
.metaline time{color:var(--fg);font-weight:600;font-variant-numeric:tabular-nums}
.chip.mono{font-family:var(--mono,monospace);letter-spacing:.02em}

.confmixL{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin-top:.6rem;
  font-size:.8rem;color:var(--muted)}
.confmixL .cml{font-weight:600;color:var(--fg)}
.confmixL .note{margin:0}
.cbtn{display:inline-flex;gap:.3rem;align-items:center;padding:.16rem .5rem;border-radius:999px;
  border:1px solid var(--line);background:var(--card);color:var(--fg);font:inherit;cursor:pointer}
.cbtn:hover{border-color:var(--brand)}
.cbtn .cbn{font-weight:700;font-variant-numeric:tabular-nums}
.cbtn[aria-pressed=true]{background:color-mix(in oklab,var(--brand) 18%,transparent);
  border-color:var(--brand);color:var(--fg)}

/* 155 sibling pages with no server-rendered path between them: before JS ran,
   every jurisdiction page was an orphan. */
.jpager{display:grid;grid-template-columns:1fr auto 1fr;gap:.6rem;align-items:center;
  margin-top:1.1rem;padding-top:.9rem;border-top:1px solid var(--line)}
.jpager .jprev,.jpager .jnext{display:flex;flex-direction:column;gap:.1rem;
  text-decoration:none;color:var(--fg);font-size:.82rem;min-width:0}
.jpager .jnext{text-align:right}
.jpager .jdir{color:var(--muted);font-size:.72rem}
.jpager .jnm{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jpager .jmid{display:flex;flex-direction:column;gap:.2rem;font-size:.72rem;color:var(--muted)}
.jpager .jmid select{font:inherit;font-size:.8rem;padding:.25rem .4rem;border:1px solid var(--line);
  border-radius:6px;background:var(--card);color:var(--fg);max-width:15rem}
.jall{grid-column:1/-1;margin-top:.3rem;font-size:.8rem}
.jall summary{cursor:pointer;color:var(--muted)}
.jall summary:hover{color:var(--fg)}
.jlist{list-style:none;margin:.55rem 0 0;padding:0;columns:4;column-gap:1.1rem}
.jlist li{margin:0 0 .18rem;break-inside:avoid}
.jlist a{color:var(--fg);text-decoration:none}
.jlist a:hover{text-decoration:underline}
@media (max-width:900px){.jpager{grid-template-columns:1fr}.jpager .jnext{text-align:left}
  .jlist{columns:2}}

/* The citation list was JS-only; it is the most valuable content on the page. */
.srcs{margin-top:.5rem;font-size:.8rem;border-top:1px dashed var(--line);padding-top:.45rem}
.srcs summary{cursor:pointer;color:var(--muted)}
.srcs summary:hover{color:var(--fg)}
.srclist{margin:.5rem 0 0;padding-left:1.2rem;display:grid;gap:.35rem}
.srclist li{line-height:1.4}
.srclist a{color:var(--fg)}
.stier{display:inline-block;margin-right:.35rem;padding:0 .32rem;border-radius:4px;
  font-size:.68rem;font-weight:700;border:1px solid var(--line);color:var(--muted)}
.stier.t1{color:var(--ok,#1a7f4b);border-color:currentColor}
.stier.t2{color:var(--brand);border-color:currentColor}
.srclist .sfind{color:var(--muted)}
