/* generated by contrast_sm_v2.py: link/edge colours, >= 1.5x the b.html contrast against --c-surface */
:root,[data-theme=light]{--sm-causes:#074054;--sm-depends-on:#074054;--sm-contrasts:#744408;--sm-same-segment:#45484E}
[data-theme=dark]{--sm-causes:#C3E7F2;--sm-depends-on:#C3E7F2;--sm-contrasts:#F6DFBE;--sm-same-segment:#C0C5CA}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--sm-causes:#C3E7F2;--sm-depends-on:#C3E7F2;--sm-contrasts:#F6DFBE;--sm-same-segment:#C0C5CA}}
/* Source map b2 (draft). Scoped to .smap and #smpanel; uses the site tokens (mm.css in the mock, site.css on the page). Link colours: sm2_colors.css. */
.smap{--sm-sans:var(--font-sans,"IBM Plex Sans",system-ui,sans-serif);--sm-serif:var(--font-serif,"Source Serif 4",Georgia,serif);scroll-margin-top:88px}
.smap .smcard{border:1px solid var(--c-rule);border-radius:var(--radius-lg,8px);background:var(--c-surface);padding:20px 24px}
.smap h2{font:600 22px/28px var(--sm-serif);margin:0 0 6px}
.smap .muted{color:var(--c-ink-3);font-size:14px;line-height:20px}
.smap .smfig{margin:0}
.smap .js-only{display:none}html.js .smap .js-only{display:flex}html.js .smap p.js-only{display:block}
.smap .zbar{flex-wrap:wrap;gap:8px 16px;align-items:center;margin:10px 0 6px}
.smap .fsel{display:flex;gap:8px;align-items:center;font:400 14px/20px var(--sm-sans);color:var(--c-ink-2)}
.smap .fsel select{min-height:44px;font:inherit;color:var(--c-ink);background:var(--c-surface);border:1px solid var(--c-rule-strong);border-radius:4px;padding:0 8px;max-width:100%}
.smap .chk{display:flex;align-items:center;gap:8px;min-height:44px;font:400 14px/20px var(--sm-sans);color:var(--c-ink-2)}
.smap .chk input{width:20px;height:20px;accent-color:var(--c-accent)}
.smap .smwrap{width:100%;border:1px solid var(--c-rule);border-radius:4px;background:var(--c-surface);overflow:hidden;margin-top:6px}
.smsvg{display:block;width:100%;height:auto}
.smsvg.narrow{display:none}
@media (max-width:767px){.smsvg.wide{display:none}.smsvg.narrow{display:block}.smap .smcard{padding:16px}}
.smsvg .sp{display:none}html.show-sp .smsvg .sp{display:inline}
.smsvg text,.smmini text{font-family:var(--sm-sans);fill:var(--c-ink)}
.smsvg .anc{stroke:var(--c-ink-3);stroke-width:1;stroke-dasharray:2 2}
.smsvg .axis line{stroke:var(--c-rule);stroke-width:1}
.smsvg .axis text{font-size:11px;fill:var(--c-ink-3)}
.smsvg .axis .axt{font-size:12px;fill:var(--c-ink-2)}
.smsvg .tl,.smmini .tl{font-size:12px;paint-order:stroke;stroke:var(--c-surface);stroke-width:4px;stroke-linejoin:round}
.smsvg .nid,.smmini .nid{font-weight:600;font-size:12px}
.smsvg .nd,.smmini .nd{fill:var(--c-accent-tint);stroke:var(--c-accent);stroke-width:2}
.smsvg .k-framing .nd,.smmini .k-framing .nd{fill:var(--c-surface-2);stroke:var(--c-rule-strong)}
.smsvg .k-sponsor .nd{fill:var(--c-surface);stroke:var(--c-rule-strong);stroke-dasharray:3 3}
.smsvg .tp,.smsvg .lkg,.smmini [role=button]{cursor:pointer;outline:none}
.smsvg .tp:hover .tl,.smsvg .tp:hover .nid{fill:var(--c-accent)}
.smsvg .tp:focus-visible .nd,.smmini .mtp:focus-visible .nd{stroke:var(--c-focus);stroke-width:4}
.smsvg .tp:focus-visible .tl,.smmini .mtp:focus-visible .tl{text-decoration:underline;fill:var(--c-accent)}
.smsvg .ln,.smmini .ln{fill:none;stroke-linecap:round}
.smsvg .hitl,.smmini .hitl{fill:none;stroke:transparent;stroke-width:16;pointer-events:stroke}
.ty-causes .ln,.lgl.ty-causes{stroke:var(--sm-causes)}
.ty-depends_on .ln,.lgl.ty-depends_on{stroke:var(--sm-depends-on);stroke-dasharray:8 4}
.ty-contrasts .ln,.lgl.ty-contrasts{stroke:var(--sm-contrasts);stroke-dasharray:2 4;stroke-linecap:round}
.ty-same_segment .ln,.lgl.ty-same_segment{stroke:var(--sm-same-segment)}
.lgl{stroke-width:2.5;fill:none}.lga{stroke:none}.lga.ty-causes{fill:var(--sm-causes)}.lga.ty-depends_on{fill:var(--sm-depends-on)}
.smsvg .ar-causes path,.smmini .ar-causes path{fill:var(--sm-causes)}
.smsvg .ar-depends_on path,.smmini .ar-depends_on path{fill:var(--sm-depends-on)}
.smsvg .lkg:hover .ln{stroke-width:5px!important}
.smsvg .lkg:focus-visible .ln,.smmini .mlk:focus-visible .ln{stroke:var(--c-focus);stroke-width:5px!important;stroke-dasharray:none}
.smsvg .dim{opacity:.14}
.smsvg .tp,.smsvg .lkg{transition:opacity .2s}
.smap .smleg{list-style:none;display:flex;flex-wrap:wrap;gap:6px 18px;padding:0;margin:12px 0 0;font:400 13px/18px var(--sm-sans);color:var(--c-ink-2)}
.smap .smleg li{display:flex;align-items:center;gap:8px}
.smap figcaption{margin-top:12px}
.smap .smlist{margin-top:24px}
.smap .smlist h3{font:600 18px/24px var(--sm-serif);margin:0 0 8px}
.smap .smlist h4{font:600 15px/20px var(--sm-sans);margin:16px 0 6px;color:var(--c-ink-2)}
.smap .tbl-wrap{overflow-x:auto;border:1px solid var(--c-rule);border-radius:4px}
.smap .smt{border-collapse:collapse;width:100%;font:400 14px/20px var(--sm-sans)}
.smap .smt th,.smap .smt td{text-align:left;vertical-align:top;padding:8px 10px;border-bottom:1px solid var(--c-rule)}
.smap .smt thead th{font-weight:600;color:var(--c-ink-2);background:var(--c-surface-2)}
.smap .smt tbody th{font-weight:600}
.smap .sml{list-style:none;margin:0;padding:0}
.smap .sml>li{padding:8px 0;border-bottom:1px solid var(--c-rule);font:400 15px/22px var(--sm-sans)}
.smap .sml details.more>summary{cursor:pointer;min-height:44px;display:inline-flex;align-items:center;color:var(--c-accent);font-size:14px;font-weight:500}
.smap .sml details ul{margin:4px 0 0;padding-left:18px;font-size:14px;line-height:20px}
.smap .ty{font-weight:600;color:var(--c-ink-2)}
.smap .ts,#smpanel .ts{font:500 12px/16px var(--font-mono,"IBM Plex Mono",ui-monospace,monospace);color:var(--c-ink-3)}
.smap .st{font:500 12px/16px var(--sm-sans);color:var(--c-ink-3);border:1px solid var(--c-rule);border-radius:2px;padding:1px 6px}
.smap .vh,#smpanel .vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.smap .linkbtn,#smpanel .linkbtn{background:none;border:0;padding:0 6px;min-height:44px;min-width:44px;color:var(--c-accent);font:500 14px/20px var(--sm-sans);text-decoration:underline;cursor:pointer;text-align:left}
.smap .linkbtn:hover,#smpanel .linkbtn:hover{color:var(--c-ink)}
/* dialog */
dialog#smpanel{--sm-sans:var(--font-sans,"IBM Plex Sans",system-ui,sans-serif);--sm-serif:var(--font-serif,"Source Serif 4",Georgia,serif);border:1px solid var(--c-rule-strong);border-radius:8px;background:var(--c-surface);color:var(--c-ink);padding:0;width:min(640px,calc(100vw - 32px));max-height:min(86vh,820px);font:400 15px/22px var(--sm-sans)}
dialog#smpanel::backdrop{background:rgba(15,18,21,.45)}
#smpanel .ph{position:sticky;top:0;z-index:1;background:var(--c-surface);padding:16px 20px 10px;border-bottom:1px solid var(--c-rule);display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:start}
#smpanel .overline{grid-column:1;margin:0;font:600 12px/16px var(--sm-sans);letter-spacing:.06em;text-transform:uppercase;color:var(--c-ink-3)}
#smpanel h2{grid-column:1;font:600 20px/26px var(--sm-serif);margin:0;outline:none}
#smpanel h2:focus,#smpanel h2:focus-visible{outline:none;box-shadow:none}
#smpanel .closeb{grid-column:2;grid-row:1/span 2;align-self:start;min-height:44px}
#smpanel-map{padding:10px 20px 0}
#smpanel-b{padding:8px 20px 18px}
#smpanel .dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:6px 0 10px;font-size:14px;line-height:20px}
#smpanel .dl dt{font-weight:600;color:var(--c-ink-2)}#smpanel .dl dd{margin:0}
#smpanel .cl,#smpanel .navl{margin:0;padding-left:0;list-style:none}
#smpanel .cl>li{margin:0 0 8px;padding:6px 8px;border-radius:4px}
#smpanel .navl>li{margin:0 0 6px}
#smpanel blockquote{margin:4px 0 10px;padding:4px 8px 4px 12px;border-left:3px solid var(--c-accent);border-radius:0 4px 4px 0}
#smpanel blockquote p{margin:0 0 2px;font:400 15px/22px var(--sm-serif)}
#smpanel blockquote footer{font-size:13px;color:var(--c-ink-3)}
#smpanel .jumped{background:var(--c-accent-tint);outline:2px solid var(--c-focus);outline-offset:1px}
#smpanel .tag{font-weight:600}
#smpanel .tb{display:block;font-size:13px;color:var(--c-ink-2)}
/* focused mini map */
.smmini{display:block;width:100%;height:auto;border:1px solid var(--c-rule);border-radius:4px;background:var(--c-surface)}
.smmini .ctr .nd{stroke-width:3}
.smmini .mlab{font-size:11px;fill:var(--c-ink-2)}
.smmini .tlbar{fill:var(--c-surface-2);stroke:var(--c-rule-strong);stroke-width:1}
.smmini .tlseg{fill:var(--c-accent)}
.smmini .tlax{font-size:10.5px;fill:var(--c-ink-3)}
.smmini .qt path{fill:var(--c-surface);stroke:var(--c-ink-2);stroke-width:1.5}
.smmini .qt:hover path,.smmini .qt:focus-visible path{fill:var(--c-accent);stroke:var(--c-focus);stroke-width:2.5}
.smmini .air{font-size:12px;font-weight:600}
.smchips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 4px;padding:0;list-style:none}
.smchips button{min-height:32px;padding:4px 10px;border:1px solid var(--c-rule-strong);border-radius:999px;background:var(--c-surface);color:var(--c-ink);font:500 12px/16px var(--sm-sans);cursor:pointer}
.smchips button:hover,.smchips button:focus-visible{border-color:var(--c-accent);color:var(--c-accent)}
.smchips .s-contradicted{border-color:var(--c-error);color:var(--c-error)}
.smmini-help{font-size:12px;line-height:16px;color:var(--c-ink-3);margin:6px 0 0}
@media (max-width:767px){
 dialog#smpanel{width:100vw;max-width:100vw;margin:auto 0 0 0;border-radius:12px 12px 0 0;max-height:85vh;border-bottom:0}
 #smpanel .dl{grid-template-columns:1fr}#smpanel .dl dt{margin-top:6px}
 #smpanel-map,#smpanel-b{padding-left:14px;padding-right:14px}
}
@media (prefers-reduced-motion:reduce){.smsvg .tp,.smsvg .lkg{transition:none}}

/* no-JS table + list toggle (matches the figure-table toggles) */
.smap .smdt{margin-top:8px;font:400 14px/20px var(--sm-sans,var(--font-sans,system-ui,sans-serif))}.smap .smdt>summary{cursor:pointer;color:var(--c-accent);font-weight:600;padding:12px 0;min-height:44px;box-sizing:border-box;width:max-content;max-width:100%}
/* animation slot (stays hidden until filled) */
#smpanel .sm-anim-slot{margin:12px 20px 0}#smpanel .sm-anim-slot[hidden]{display:none}
/* b3 additions (sm2.css kept): summary key-point mini map */
.kmini .kspoke{fill:none;stroke:var(--sm-same-segment);stroke-width:1.6}
.kmini .ktie{fill:none;stroke:var(--sm-causes);stroke-width:1.8}
.kmini .ar path{fill:var(--sm-causes)}
.kmini .ktl{font:italic 500 12px/1 var(--sm-sans);fill:var(--c-ink-2);paint-order:stroke;stroke:var(--c-surface);stroke-width:4px;stroke-linejoin:round}
.kmini .kpt rect{fill:var(--c-surface-2);stroke:var(--sm-same-segment);stroke-width:1.2}
.kmini .kpt text{font:400 13px/17px var(--sm-sans);fill:var(--c-ink)}
.kmini .kpt{cursor:pointer;outline:none}
.kmini .kpt:hover rect{stroke:var(--c-accent);stroke-width:2}
.kmini .kpt:focus-visible rect{stroke:var(--c-focus);stroke-width:3}
.kmini .kpt:focus-visible text{text-decoration:underline}
#smpanel .ksum{margin:0}
#smpanel .kspan{border-radius:2px}
#smpanel .kspan.jumped{background:var(--c-accent-tint);outline:2px solid var(--c-focus);outline-offset:1px}

/* slot (v1): the figure keeps the animation's 300 px minimum; below that the wrapper scrolls sideways inside itself,
   so the page never does */
#smpanel .sm-anim-scroll{margin:0 20px;min-width:0;overflow-x:auto;overflow-y:hidden}
#smpanel .sm-anim-scroll>.sm-anim-slot{margin:12px 0 0;min-width:300px;box-sizing:border-box}
#smpanel .sm-anim-slot>figcaption{margin-top:8px;font:400 14px/20px var(--font-sans,system-ui,sans-serif);color:var(--c-ink-2)}
/* source-map filter row wraps on very narrow screens (280 px) */
.smap .fsel{flex-wrap:wrap}.smap .fsel select{min-width:0;max-width:100%}
