:root{
--ink:#11212e;--ink-soft:#3b5265;--paper:#f7f9fb;--paper-deep:#eaf0f5;--oxblood:#0f6e8c;--oxblood-soft:#3d95af;--accent:#0f6e8c;--accent-soft:#3d95af;--gold:#d98c1f;--slate:#5b6b7a;--rule:#d5e0e8;--nav-active:#22a6bd;--teal:#128a7d;
--nav-bg:#0f2233;
--nav-text:#eaf2f8;
--hl-amber:#f0c452;
--hl-rose:#e2807e;
--hl-mint:#5fc9a8;
--hl-sky:#63aada;
--serif:'Inter', system-ui, -apple-system, sans-serif;
--mono:'IBM Plex Mono', monospace;
}
html.dark{
--ink:#e6eef5;--ink-soft:#a8bccb;--paper:#0e1620;--paper-deep:#16212d;--oxblood:#4fb3d1;--oxblood-soft:#7fcbe0;--accent:#4fb3d1;--accent-soft:#7fcbe0;--gold:#e0a648;--slate:#8fa3b3;--rule:rgba(180,215,235,.16);--nav-active:#3fc0d4;--teal:#3fb3a4;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;transition:background-color .25s ease,color .25s ease}

/* NAV (always dark by design) */
.book-nav{position:fixed;top:0;left:0;right:0;z-index:300;background:var(--nav-bg);display:flex;align-items:center;padding:0 18px;overflow-x:auto;scrollbar-width:none;border-bottom:2px solid var(--accent);transform:translateY(-100%);transition:transform .35s ease}
.book-nav.visible{transform:translateY(0)}
.book-nav::-webkit-scrollbar{display:none}
.nav-brand{font-family:var(--serif);font-style:italic;font-size:14px;color:var(--nav-text);padding:12px 14px 12px 0;border-right:1px solid rgba(244,241,234,.15);margin-right:8px;white-space:nowrap;flex-shrink:0}
.nav-item{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:rgba(244,241,234,.45);padding:13px 10px;text-decoration:none;white-space:nowrap;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;flex-shrink:0}
.nav-item:hover{color:var(--nav-text)}
.nav-item.active{color:var(--nav-active);border-bottom-color:var(--nav-active)}

/* THEME TOGGLE */
.theme-toggle{position:relative;width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(244,241,234,.07);border:1px solid rgba(244,241,234,.18);color:var(--nav-text);cursor:pointer;padding:0;margin-left:auto;flex-shrink:0;transition:background .2s ease,border-color .2s ease,color .2s ease}
.theme-toggle:hover{background:rgba(244,241,234,.14);border-color:rgba(201,160,84,.55);color:var(--gold)}
.theme-toggle svg{width:15px;height:15px;display:block}
.theme-toggle .ic-sun{display:none}
html.dark .theme-toggle .ic-sun{display:block}
html.dark .theme-toggle .ic-moon{display:none}
body[dir="rtl"] .theme-toggle{margin-left:0;margin-right:auto}

/* RTL */
body[dir="rtl"] .book-nav{flex-direction:row-reverse}
body[dir="rtl"] .book-chapter,body[dir="rtl"] .toc-inner{direction:rtl;text-align:right}
body[dir="rtl"] .toc-row{direction:rtl}
body[dir="rtl"] .pull{border-left:none;border-right:3px solid var(--accent);padding-left:0;padding-right:28px}
body[dir="rtl"] .toc-arrow{transform:scaleX(-1)}
body[dir="rtl"] .section-marker::after{margin-left:0}
body[dir="rtl"] .toc-part::after{margin-left:0}

/* READING-PROGRESS BAR */
.read-progress{position:fixed;top:0;left:0;height:3px;width:0%;z-index:600;background:linear-gradient(90deg,var(--accent),var(--gold));box-shadow:0 0 10px rgba(140,47,42,.45);transition:width .1s linear}
body[dir="rtl"] .read-progress{left:auto;right:0}

/* REVEAL / OPENER ANIMATIONS (IntersectionObserver-driven) */
.js-anim .reveal{opacity:0;transform:translateY(26px);transition:opacity .85s ease,transform .9s cubic-bezier(.22,.61,.36,1),filter .85s ease;will-change:opacity,transform}
.js-anim .reveal.in{opacity:1;transform:none;filter:none}
/* entrance variants — set via data-anim, only BEFORE reveal so .in always wins */
.js-anim .reveal[data-anim="scale"]:not(.in){transform:scale(.93)}
.js-anim .reveal[data-anim="left"]:not(.in){transform:translateX(-46px)}
.js-anim .reveal[data-anim="right"]:not(.in){transform:translateX(46px)}
.js-anim .reveal[data-anim="rise"]:not(.in){transform:translateY(40px)}
.js-anim .reveal[data-anim="blur"]:not(.in){filter:blur(12px);transform:translateY(14px)}
.js-anim .reveal[data-anim="fade"]:not(.in){transform:none}
.js-anim .reveal[data-anim="zoom"]:not(.in){transform:scale(1.06)}
body[dir="rtl"] .js-anim .reveal[data-anim="left"]:not(.in){transform:translateX(46px)}
body[dir="rtl"] .js-anim .reveal[data-anim="right"]:not(.in){transform:translateX(-46px)}
.js-anim .opener>*{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s cubic-bezier(.22,.61,.36,1)}
.js-anim .opener.opener-in>*{opacity:1;transform:none}
.js-anim .opener.opener-in .ch-eyebrow{transition-delay:.05s}
.js-anim .opener.opener-in .ch-number{transition-delay:.18s}
.js-anim .opener.opener-in .ch-title{transition-delay:.30s}
.js-anim .opener.opener-in .ch-standfirst{transition-delay:.44s}
.js-anim .section-marker::after{transform:scaleX(0);transform-origin:left center;transition:transform 1s cubic-bezier(.22,.61,.36,1) .15s}
.js-anim .section-marker.in::after{transform:scaleX(1)}
body[dir="rtl"] .js-anim .section-marker::after{transform-origin:right center}
.js-anim .pull{position:relative;border-left-color:transparent}
.js-anim .pull::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);transform:scaleY(0);transform-origin:top;transition:transform .85s cubic-bezier(.22,.61,.36,1) .1s}
.js-anim .pull.in::before{transform:scaleY(1)}
body[dir="rtl"] .js-anim .pull{border-right-color:transparent}
body[dir="rtl"] .js-anim .pull::before{left:auto;right:0}
.js-anim .verdict{position:relative;overflow:hidden}
.js-anim .verdict::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--gold);transform:scaleY(0);transform-origin:top;transition:transform .95s cubic-bezier(.22,.61,.36,1) .15s}
.js-anim .verdict.in::before{transform:scaleY(1)}
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1 !important;transform:none !important;transition:none}
  html{scroll-behavior:auto}
  .js-anim .opener>*{opacity:1;transform:none}
  .js-anim .section-marker::after{transform:scaleX(1)}
  .js-anim .pull::before,.js-anim .verdict::before{transform:scaleY(1)}
  .read-progress{display:none}
}

/* FULL-SCREEN COVER */
.book-cover-fs{width:100vw;height:100vh;background:#0e0e0e;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}
.cover-frame{height:100vh;width:auto;aspect-ratio:var(--cover-aspect,2/3);max-width:100vw;border:none;display:block}
/* Plein cadre : la couverture est composee pour l ecran, pas pour une affiche. */
.book-cover-fs.is-fill .cover-frame,.book-back-fs.is-fill .back-frame{width:100vw;height:100vh;aspect-ratio:auto;max-width:none}
.scroll-hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--accent);opacity:.6;animation:bob 2s ease-in-out infinite;z-index:50;pointer-events:none}
@keyframes bob{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(6px)}}
html:not(.dark) .book-cover-fs,html:not(.dark) .book-back-fs{background:#e7e3d6}

/* INTERACTIVE TOC */
.book-toc{min-height:100vh;background:var(--paper);position:relative;padding:90px 0 80px}
.toc-inner{max-width:760px;margin:0 auto;padding:0 32px}
.toc-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--accent);margin-bottom:14px;font-weight:600}
.toc-bigtitle{margin-bottom:4px}
.toc-after{display:inline-block;font-style:italic;font-weight:400;font-size:clamp(28px,5vw,44px);color:var(--ink-soft);letter-spacing:-.02em}
.toc-demo{display:block;font-weight:700;font-size:clamp(46px,9vw,82px);text-transform:uppercase;letter-spacing:-.04em;line-height:.9;color:var(--ink)}
.toc-byline{font-style:italic;font-size:17px;color:var(--slate);margin-bottom:44px}
.toc-part{font-family:var(--mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--slate);margin:34px 0 10px;display:flex;align-items:center;gap:14px}
.toc-part::after{content:'';flex:1;height:1px;background:var(--rule)}
.toc-list{position:relative}
a.toc-row{display:grid;grid-template-columns:54px 1fr 30px;gap:0 16px;align-items:center;padding:18px 16px;border-bottom:1px solid var(--rule);text-decoration:none;color:inherit;transition:background .2s,padding .2s,color .2s;border-radius:3px;position:relative}
a.toc-row:first-child{border-top:1px solid var(--rule)}
a.toc-row:hover{background:var(--ink);color:var(--paper);padding-left:24px}
a.toc-row:hover .toc-num{color:var(--gold)}
a.toc-row:hover .toc-arrow{opacity:1;transform:translateX(0);color:var(--nav-active)}
.toc-num{font-family:var(--mono);font-size:15px;font-weight:600;color:var(--accent);letter-spacing:.05em}
.toc-rowtitle{font-size:21px;font-weight:600;letter-spacing:-.01em;line-height:1.2}
.toc-arrow{font-size:18px;color:var(--accent);opacity:0;transform:translateX(-6px);transition:opacity .2s,transform .2s}

/* TOC HOVER PANEL (dark popover) */
.toc-panel{position:fixed;width:340px;background:var(--nav-bg);color:var(--nav-text);border-radius:6px;padding:26px 28px;box-shadow:0 20px 60px rgba(0,0,0,.3);z-index:400;pointer-events:none;opacity:0;transform:translateY(8px) scale(.97);transition:opacity .22s ease,transform .22s ease;border-top:3px solid var(--accent)}
.toc-panel.show{opacity:1;transform:translateY(0) scale(1)}
.tp-num{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--gold);margin-bottom:8px;font-weight:600}
.tp-title{font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:1.1;margin-bottom:14px}
.tp-blurb{font-size:15px;line-height:1.6;color:rgba(244,241,234,.85);font-style:italic;margin-bottom:18px}
.tp-egg-divider{width:32px;height:2px;background:var(--gold);margin-bottom:14px;opacity:.6}
.tp-egg{font-size:13.5px;line-height:1.55;color:rgba(244,241,234,.7)}
.tp-blurb:empty,.tp-egg:empty,.tp-egg-divider.hide{display:none}
@media(max-width:820px){.toc-panel{display:none !important}}

/* HIGHLIGHTS & NOTES */
.nav-notes{display:inline-flex;align-items:center;gap:7px}
.nav-notes-count{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:var(--gold);color:var(--nav-bg);font-size:9px;font-weight:700;letter-spacing:0;line-height:1}
.nav-notes-count[data-empty="1"]{display:none}
mark.hl{background:transparent;color:inherit;border-radius:2px;padding:.05em 0;cursor:pointer;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:filter .15s ease}
mark.hl:hover{filter:brightness(.93)}
mark.hl-amber{background:rgba(240,196,90,.50);box-shadow:inset 0 -.5em 0 -.35em rgba(176,132,40,.55)}
mark.hl-rose{background:rgba(214,120,112,.42);box-shadow:inset 0 -.5em 0 -.35em rgba(160,70,62,.5)}
mark.hl-mint{background:rgba(125,196,150,.42);box-shadow:inset 0 -.5em 0 -.35em rgba(54,120,82,.5)}
mark.hl-sky{background:rgba(126,160,214,.42);box-shadow:inset 0 -.5em 0 -.35em rgba(60,96,160,.5)}
mark.hl.has-note::after{content:'';display:inline-block;width:5px;height:5px;margin:0 1px 0 2px;border-radius:50%;background:var(--accent);vertical-align:.5em}
@keyframes hlFlash{0%{box-shadow:0 0 0 0 rgba(201,160,84,0)}18%{box-shadow:0 0 0 4px rgba(201,160,84,.55)}100%{box-shadow:0 0 0 0 rgba(201,160,84,0)}}
mark.hl-flash{animation:hlFlash 1.6s ease}
.hl-toolbar{position:fixed;z-index:560;display:flex;align-items:center;background:var(--nav-bg);border-radius:30px;padding:7px 10px;box-shadow:0 12px 34px rgba(0,0,0,.34);opacity:0;transform:translateY(6px) scale(.96);transition:opacity .16s ease,transform .16s ease;pointer-events:none}
.hl-toolbar.show{opacity:1;transform:none;pointer-events:auto}
.hl-swatch{width:22px;height:22px;border-radius:50%;margin:0 4px;cursor:pointer;border:2px solid rgba(244,241,234,0);box-shadow:0 0 0 1px rgba(0,0,0,.18) inset;transition:transform .12s ease}
.hl-swatch:hover{transform:scale(1.18)}
.hl-tool-div{width:1px;height:20px;background:rgba(244,241,234,.18);margin:0 8px}
.hl-note-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:0;cursor:pointer;color:var(--nav-text);font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:4px 6px 4px 2px}
.hl-note-btn:hover{color:var(--gold)}
.hl-note-btn svg{width:13px;height:13px}
.hl-look-btn{background:none;border:0;cursor:pointer;color:var(--nav-text);padding:4px 5px;display:inline-flex;align-items:center}
.hl-look-btn:hover{color:var(--gold)}
.hl-look-btn svg{width:16px;height:16px}
/* dictionary / wikipedia lookup panel */
.lookup-backdrop{position:fixed;inset:0;background:rgba(9,11,18,.62);z-index:600;opacity:0;pointer-events:none;transition:opacity .3s ease}
.lookup-backdrop.show{opacity:1;pointer-events:auto}
.lookup-panel{position:fixed;top:0;right:0;height:100%;width:min(400px,92vw);background:#151b2c;color:#f4f1ea;z-index:610;display:flex;flex-direction:column;transform:translateX(102%);transition:transform .36s cubic-bezier(.36,.02,.1,1);box-shadow:-22px 0 64px rgba(0,0,0,.46)}
.lookup-panel.show{transform:none}
body[dir="rtl"] .lookup-panel{right:auto;left:0;transform:translateX(-102%)}
body[dir="rtl"] .lookup-panel.show{transform:none}
.lookup-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px 14px;border-bottom:1px solid rgba(255,255,255,.1)}
.lookup-title{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)}
.lookup-close{background:none;border:0;color:#f4f1ea;font-size:26px;line-height:1;cursor:pointer;opacity:.7}
.lookup-close:hover{opacity:1}
.lookup-body{flex:1;overflow-y:auto;padding:18px 22px 40px}
.lookup-word{font-family:var(--serif);font-size:26px;font-weight:600;margin-bottom:2px}
.lookup-phon{font-family:var(--mono);font-size:13px;color:#9aa0b0;margin-bottom:14px}
.lookup-pos{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin:16px 0 6px}
.lookup-def{font-size:15px;line-height:1.55;margin:0 0 8px;padding-left:16px;position:relative}
.lookup-def:before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;background:var(--gold)}
.lookup-eg{color:#9aa0b0;font-style:italic;font-size:13.5px;margin:2px 0 0}
/* D'ou vient la definition : le chapitre qui glose le mot. Bloc, pas span,
   sinon le titre se colle au dernier mot de la definition. */
.lookup-src{display:block;color:#9aa0b0;font-style:italic;font-size:12.5px;margin:4px 0 0;opacity:.85}
.lookup-img{width:100%;border-radius:10px;margin-bottom:14px;display:block}
.lookup-extract{font-size:15px;line-height:1.6}
.lookup-link{display:inline-block;margin-top:16px;font-family:var(--mono);font-size:12px;color:var(--gold)}
.lookup-loading,.lookup-empty{color:#9aa0b0;font-size:14px;padding:10px 0}
.hl-noteedit{position:fixed;z-index:570;width:300px;background:var(--nav-bg);color:var(--nav-text);border-radius:9px;padding:15px 15px 13px;box-shadow:0 18px 50px rgba(0,0,0,.42);opacity:0;transform:translateY(8px);transition:opacity .18s ease,transform .18s ease;pointer-events:none}
.hl-noteedit.show{opacity:1;transform:none;pointer-events:auto}
.hl-ne-colors{display:flex;gap:8px;margin-bottom:11px}
.hl-ne-dot{width:20px;height:20px;border-radius:50%;cursor:pointer;box-shadow:0 0 0 1px rgba(0,0,0,.2) inset;border:2px solid transparent;transition:transform .12s ease}
.hl-ne-dot:hover{transform:scale(1.15)}
.hl-ne-dot.sel{border-color:var(--nav-text)}
.hl-noteedit textarea{width:100%;min-height:84px;resize:vertical;background:rgba(244,241,234,.06);border:1px solid rgba(244,241,234,.16);border-radius:6px;color:var(--nav-text);font-family:var(--serif);font-size:15px;line-height:1.5;padding:10px 11px;outline:none}
.hl-noteedit textarea::placeholder{color:rgba(244,241,234,.38);font-style:italic}
.hl-noteedit textarea:focus{border-color:var(--gold)}
.hl-ne-actions{display:flex;align-items:center;justify-content:space-between;margin-top:11px}
.hl-ne-del{background:none;border:0;color:rgba(244,241,234,.5);font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;padding:4px}
.hl-ne-del:hover{color:#d27870}
.hl-ne-save{background:var(--gold);border:0;color:var(--nav-bg);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;padding:8px 16px;border-radius:5px}
.hl-ne-save:hover{filter:brightness(1.08)}
.notes-backdrop{position:fixed;inset:0;background:rgba(9,11,18,.62);z-index:600;opacity:0;pointer-events:none;transition:opacity .3s ease}
.notes-backdrop.show{opacity:1;pointer-events:auto}
.notes-drawer{position:fixed;top:0;right:0;height:100%;width:min(424px,92vw);background:#151b2c;color:#f4f1ea;z-index:610;display:flex;flex-direction:column;transform:translateX(102%);transition:transform .36s cubic-bezier(.36,.02,.1,1);box-shadow:-22px 0 64px rgba(0,0,0,.46)}
.notes-drawer.show{transform:none}
body[dir="rtl"] .notes-drawer{right:auto;left:0;transform:translateX(-102%)}
body[dir="rtl"] .notes-drawer.show{transform:none}
.notes-head{display:flex;align-items:flex-start;justify-content:space-between;padding:30px 28px 22px;border-bottom:1px solid rgba(244,241,234,.1)}
.notes-kicker{font-family:var(--mono);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:9px;font-weight:600}
.notes-h1{font-family:var(--serif);font-size:25px;font-weight:600;letter-spacing:-.01em}
.notes-close{background:none;border:0;color:rgba(244,241,234,.55);font-size:26px;line-height:1;cursor:pointer;padding:0 2px;margin-top:-2px}
.notes-close:hover{color:#f4f1ea}
.notes-list{flex:1;overflow-y:auto;padding:14px 20px 40px}
.notes-empty{padding:48px 22px;text-align:center;color:rgba(244,241,234,.5);font-style:italic;font-size:16px;line-height:1.6;font-family:var(--serif)}
.note-card{position:relative;display:grid;grid-template-columns:4px 1fr;gap:15px;padding:17px 14px 16px;border-radius:8px;cursor:pointer;transition:background .18s ease;margin-bottom:4px}
.note-card:hover{background:rgba(244,241,234,.055)}
.note-bar{border-radius:3px}
.note-bar.c-amber{background:var(--hl-amber)}.note-bar.c-rose{background:var(--hl-rose)}.note-bar.c-mint{background:var(--hl-mint)}.note-bar.c-sky{background:var(--hl-sky)}
.note-excerpt{font-family:var(--serif);font-style:italic;font-size:15.5px;line-height:1.5;color:rgba(244,241,234,.92);margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.note-body{font-size:14px;line-height:1.55;color:#cdd2df;margin-bottom:10px;white-space:pre-wrap}
.note-meta{display:flex;align-items:center;gap:9px;font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:rgba(244,241,234,.42)}
.note-meta .nm-ch{color:var(--gold)}
.note-del{position:absolute;top:12px;right:8px;background:none;border:0;color:rgba(244,241,234,.32);cursor:pointer;font-size:16px;line-height:1;padding:4px;opacity:0;transition:opacity .15s ease}
body[dir="rtl"] .note-del{right:auto;left:8px}
.note-card:hover .note-del{opacity:1}
.note-del:hover{color:#d27870}
@media(max-width:600px){.hl-noteedit{width:calc(100vw - 24px)}}
@media(max-width:600px),(pointer:coarse){
  .hl-toolbar{padding:9px 12px;border-radius:34px}
  .hl-swatch{width:30px;height:30px;margin:0 5px}
  .hl-note-btn{font-size:11px;padding:8px 8px 8px 4px}
  .hl-note-btn svg{width:16px;height:16px}
  .hl-tool-div{height:24px;margin:0 9px}
  .hl-noteedit{max-height:min(72vh,420px);overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 16px 14px}
  .hl-ne-dot{width:26px;height:26px}
  .hl-noteedit textarea{font-size:16px;min-height:96px}
  .hl-ne-save{padding:11px 20px;font-size:11px}
  .hl-ne-del{padding:8px 6px;font-size:11px}
  .notes-close{font-size:32px;padding:4px 6px}
}

/* CHAPTER WRAPPER + BREAK */
.book-chapter{max-width:var(--content-width,720px);margin:0 auto;padding:0 28px;position:relative}
.chapter-break{max-width:var(--content-width,720px);margin:0 auto;padding:50px 28px;display:flex;align-items:center;justify-content:center;gap:16px}
.chapter-break::before,.chapter-break::after{content:'';flex:1;height:1px;background:var(--rule)}
.chapter-break::after{content:'◆';flex:0;color:var(--accent);font-size:11px}

/* INTERSTITIAL EMBED */
.interstitial-embed{margin:0;padding:72px 16px;background:#0e0e0e;display:flex;justify-content:center;align-items:center}
.interstitial-embed iframe{width:min(560px,90vw);aspect-ratio:3/4;border:0;display:block;background:#0e0e0e;box-shadow:0 30px 70px rgba(0,0,0,.55);color-scheme:light}

/* BACK COVER */
.book-back-fs{width:100vw;height:100vh;background:#0e0e0e;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}
.back-frame{height:100vh;width:auto;aspect-ratio:var(--cover-aspect,2/3);max-width:100vw;border:none;display:block}

/* DARK-MODE adjustments (blocks that use --ink as a *background* need a real dark fill) */
html.dark .book-toc{background:#101218}
html.dark .chapter-break::before,html.dark .chapter-break::after{background:var(--rule)}
html.dark .verdict,html.dark .arg-head,html.dark .case-head{background:#0b0c11;color:var(--ink)}
html.dark .case-stat{background:var(--paper-deep)}

/* EYE-OPENING LOADER */
.ad-loader{position:fixed;inset:0;z-index:9000;background:radial-gradient(120% 92% at 50% 42%,#1b1815 0%,#121110 56%,#0b0a09 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:36px;transition:opacity .8s ease;overflow:hidden}
.ad-loader.gone{opacity:0;pointer-events:none}
.ad-loader-custom{padding:0;gap:0;background:#0e0e0e}
.ad-loader-frame{width:100%;height:100%;border:0;display:block}
.ad-eye-wrap{position:relative;width:320px;max-width:82vw;display:flex;align-items:center;justify-content:center}
.ad-loader-logo{width:200px;max-width:64vw;height:auto;display:block;filter:drop-shadow(0 10px 30px rgba(0,0,0,.5));animation:adLogoIn 1s ease forwards,adLogoPulse 2.4s 1s ease-in-out infinite}
@keyframes adLogoIn{0%{opacity:0;transform:scale(.86)}100%{opacity:1;transform:scale(1)}}
@keyframes adLogoPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.82}}
.ad-eye2{width:100%;transform-origin:center;transform:scaleY(.04);animation:adEyeOpen 1.9s cubic-bezier(.5,.05,.2,1) forwards}
.ad-eye2 .eye-outer{width:100%;aspect-ratio:2.8/1;background:#0b0b0d;border-radius:50%;box-shadow:0 0 55px 6px rgba(150,142,124,.32);display:flex;align-items:center;justify-content:center}
.ad-eye2 .eye-white{width:68%;aspect-ratio:2.5/1;background:#f0ebe0;border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}
.ad-eye2 .eye-iris{width:44%;aspect-ratio:1;background:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;position:absolute;animation:adIrisLook 6s 1.05s ease-in-out infinite}
.ad-eye2 .eye-pupil{width:40%;aspect-ratio:1;background:#0d0d0d;border-radius:50%}
@keyframes adEyeOpen{0%{transform:scaleY(.04)}45%{transform:scaleY(1)}57%{transform:scaleY(.12)}70%{transform:scaleY(1)}100%{transform:scaleY(1)}}
@keyframes adIrisLook{0%,100%{transform:translateX(0)}22%{transform:translateX(-24%)}48%{transform:translateX(20%)}74%{transform:translateX(-8%)}}
.ad-loader-cap{font-family:var(--mono);font-size:11px;letter-spacing:.46em;text-transform:uppercase;color:rgba(244,241,234,.62);opacity:0;animation:adCapIn .9s 1.25s ease forwards;padding-left:.46em;text-align:center}
.ad-loader-sub{font-family:var(--serif);font-style:italic;font-size:15px;color:var(--accent);opacity:0;animation:adCapIn .9s 1.55s ease forwards}
@keyframes adCapIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){
  .ad-eye2{animation:none;transform:none}
  .ad-eye2 .eye-iris,.ad-loader-cap,.ad-loader-sub{animation:none;opacity:1}
}

/* COACHMARKS */
.ad-coach{position:fixed;z-index:585;width:284px;max-width:calc(100vw - 28px);background:var(--nav-bg);color:var(--nav-text);border:1px solid rgba(201,160,84,.28);border-radius:11px;padding:16px 17px 14px;box-shadow:0 20px 56px rgba(0,0,0,.5);opacity:0;transform:translateY(8px) scale(.97);transition:opacity .26s ease,transform .26s ease;pointer-events:none}
.ad-coach.show{opacity:1;transform:none;pointer-events:auto}
.ad-coach .cm-k{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:9.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);font-weight:600;margin-bottom:9px}
.ad-coach .cm-k svg{width:14px;height:14px;flex-shrink:0}
.ad-coach .cm-t{font-family:var(--serif);font-size:16px;line-height:1.52;color:rgba(244,241,234,.94)}
.ad-coach .cm-t b{color:#ecc15a;font-weight:600;font-style:italic}
.ad-coach .cm-actions{display:flex;align-items:center;justify-content:space-between;margin-top:14px}
.ad-coach .cm-step{font-family:var(--mono);font-size:9px;letter-spacing:.18em;color:rgba(244,241,234,.42)}
.ad-coach .cm-got{background:var(--gold);border:0;color:var(--nav-bg);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;padding:9px 16px;border-radius:5px}
.ad-coach .cm-got:hover{filter:brightness(1.08)}
.ad-coach .cm-arrow{position:absolute;width:13px;height:13px;background:var(--nav-bg);border:1px solid rgba(201,160,84,.28);transform:rotate(45deg)}
.ad-coach[data-place="below"] .cm-arrow{top:-7px;border-right:0;border-bottom:0}
.ad-coach[data-place="above"] .cm-arrow{bottom:-7px;border-left:0;border-top:0}

/* SHARE QUOTE CARD + EXPORT NOTES */
.notes-actions{display:flex;gap:8px;margin-top:12px}
.notes-actions .na-btn{flex:1;background:rgba(244,241,234,.06);border:1px solid rgba(244,241,234,.16);color:#f4f1ea;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:9px;border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px}
.notes-actions .na-btn:hover{border-color:var(--gold);color:var(--gold)}
.notes-actions .na-btn svg{width:13px;height:13px}
.note-share{position:absolute;top:12px;right:30px;background:none;border:0;color:rgba(244,241,234,.32);cursor:pointer;padding:4px;opacity:0;transition:opacity .15s}
body[dir="rtl"] .note-share{right:auto;left:30px}
.note-card:hover .note-share{opacity:1}
.note-share:hover{color:var(--gold)}
.note-share svg{width:15px;height:15px;display:block}
/* share modal */
.share-backdrop{position:fixed;inset:0;background:rgba(9,11,18,.78);z-index:700;display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;pointer-events:none;transition:opacity .25s ease}
.share-backdrop.show{opacity:1;pointer-events:auto}
.share-box{background:#151b2c;border-radius:14px;padding:22px;max-width:520px;width:100%;box-shadow:0 30px 80px rgba(0,0,0,.55);transform:translateY(12px) scale(.98);transition:transform .25s ease}
.share-backdrop.show .share-box{transform:none}
.share-box-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.share-box-title{font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:600}
.share-box-close{background:none;border:0;color:rgba(244,241,234,.5);font-size:26px;line-height:1;cursor:pointer}
.share-box-close:hover{color:#f4f1ea}
.share-canvas-wrap{border-radius:10px;overflow:hidden;background:#0e0e0e;margin-bottom:16px}
.share-canvas-wrap canvas{width:100%;height:auto;display:block}
.share-box-actions{display:flex;gap:10px}
.share-box-actions button{flex:1;border:0;border-radius:8px;padding:12px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.share-dl{background:var(--gold);color:#151b2c;font-weight:700}
.share-dl:hover{filter:brightness(1.08)}
.share-copy{background:rgba(244,241,234,.08);color:#f4f1ea;border:1px solid rgba(244,241,234,.18) !important}
.share-copy:hover{border-color:var(--gold) !important;color:var(--gold)}

/* NAV TOOL BUTTONS (search, font size, spread) — match the theme toggle */
.nav-tools{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0}
/* Le bouton « See for yourself » : discret dans la barre, il s'allume au survol.
   Le libellé disparaît sous 720 px et il ne reste que la marque — sur un
   téléphone la barre doit d'abord servir à lire le livre. */
.nav-sfy{display:inline-flex;align-items:center;gap:7px;text-decoration:none;color:var(--nav-text);opacity:.72;border:1px solid rgba(244,241,234,.22);border-radius:999px;padding:5px 11px 5px 9px;font-size:11.5px;letter-spacing:.02em;white-space:nowrap;transition:opacity .16s,border-color .16s,background .16s}
.nav-sfy svg{width:17px;height:17px;flex-shrink:0}
.nav-sfy:hover,.nav-sfy:focus-visible{opacity:1;border-color:var(--nav-active);background:rgba(244,241,234,.08)}
.nav-sfy:focus-visible{outline:2px solid var(--nav-active);outline-offset:2px}
@media (max-width:720px){.nav-sfy span{display:none}.nav-sfy{padding:5px 8px;gap:0}}
body[dir="rtl"] .nav-tools{margin-left:0;margin-right:auto}
.nav-tools .theme-toggle{margin-left:0}
body[dir="rtl"] .nav-tools .theme-toggle{margin-right:0}
.nav-btn{position:relative;height:34px;min-width:34px;padding:0 9px;border-radius:17px;display:inline-flex;align-items:center;justify-content:center;gap:5px;background:rgba(244,241,234,.07);border:1px solid rgba(244,241,234,.18);color:var(--nav-text);cursor:pointer;transition:background .2s,border-color .2s,color .2s;font-family:var(--mono);font-size:12px;flex-shrink:0}
.nav-btn:hover{background:rgba(244,241,234,.14);border-color:rgba(201,160,84,.55);color:var(--gold)}
.nav-btn.active{border-color:var(--nav-active);color:var(--nav-active)}
.nav-btn svg{width:15px;height:15px;display:block}
.nav-fontsize{display:inline-flex;align-items:center;background:rgba(244,241,234,.07);border:1px solid rgba(244,241,234,.18);border-radius:17px;overflow:hidden}
.nav-fontsize button{background:none;border:0;color:var(--nav-text);cursor:pointer;height:32px;width:30px;font-family:var(--serif);line-height:1;display:inline-flex;align-items:center;justify-content:center}
.nav-fontsize button:hover{color:var(--gold)}
.nav-fontsize .fs-sm{font-size:12px}.nav-fontsize .fs-lg{font-size:17px}
.nav-fontsize .fs-div{width:1px;height:18px;background:rgba(244,241,234,.18)}

/* SEARCH PANEL */
.search-panel{position:fixed;top:0;left:0;right:0;z-index:320;transform:translateY(-100%);transition:transform .28s ease;background:var(--nav-bg);box-shadow:0 12px 34px rgba(0,0,0,.34)}
.search-panel.show{transform:translateY(0)}
.search-bar{display:flex;align-items:center;gap:10px;padding:12px 16px;max-width:860px;margin:0 auto}
.search-bar svg.s-ic{width:17px;height:17px;color:rgba(244,241,234,.55);flex-shrink:0}
.search-bar input{flex:1;background:transparent;border:0;outline:none;color:var(--nav-text);font-family:var(--serif);font-size:18px}
.search-bar input::placeholder{color:rgba(244,241,234,.4)}
.search-count{font-family:var(--mono);font-size:11px;color:rgba(244,241,234,.5);letter-spacing:.08em;white-space:nowrap}
.search-bar .s-btn{background:rgba(244,241,234,.08);border:0;color:var(--nav-text);width:30px;height:30px;border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:15px}
.search-bar .s-btn:hover{color:var(--gold)}
.search-results{max-width:860px;margin:0 auto;max-height:min(56vh,520px);overflow-y:auto;padding:0 16px 14px}
.sr-group{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin:12px 4px 8px}
.sr-item{display:block;width:100%;text-align:left;background:none;border:0;border-radius:8px;padding:11px 12px;cursor:pointer;color:rgba(244,241,234,.9);font-family:var(--serif);font-size:15px;line-height:1.5}
body[dir="rtl"] .sr-item{text-align:right}
.sr-item:hover,.sr-item.current{background:rgba(244,241,234,.07)}
.sr-item .sr-ch{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--nav-active);margin-bottom:4px;display:block}
.sr-item mark{background:rgba(201,160,84,.5);color:#fff;border-radius:2px}
.sr-empty{color:rgba(244,241,234,.45);font-style:italic;padding:18px 12px;font-size:15px}
mark.search-hit{background:rgba(201,160,84,.42);color:inherit;border-radius:2px;box-shadow:inset 0 -.5em 0 -.35em rgba(201,160,84,.5)}
mark.search-hit.current{background:var(--gold);color:#1a2238;box-shadow:none}

/* TWO-PAGE SPREAD VIEW + PAGE FLIP */
body.spread-active{overflow:hidden}
body.spread-active .read-progress{display:none}
.spread-stage{position:fixed;top:48px;left:0;right:0;bottom:0;z-index:250;background:var(--paper);display:none;perspective:2400px}
.spread-stage.show{display:block}
.spread-viewport{position:absolute;inset:0;overflow:hidden}
.spread-pages{height:100%;column-fill:auto;padding:40px 56px;transition:transform .5s cubic-bezier(.4,.0,.2,1);transform:translateX(0);box-sizing:border-box}
.spread-pages .book-chapter{max-width:none;margin:0;padding:0;font-size:calc(18px * var(--reading-scale))}
.spread-pages .opener{padding:0 0 28px;break-inside:avoid}
.spread-pages .ch-title{font-size:34px}
.spread-pages .lead::first-letter{float:none;font-size:inherit;padding:0;color:var(--accent)}
.spread-pages .reveal{opacity:1 !important;transform:none !important}
.spread-pages .verdict{margin:28px 0}
.spread-pages .interstitial-embed,.spread-pages .chapter-break{display:none}
.spread-divider{position:absolute;top:0;bottom:0;left:50%;width:1px;background:var(--rule);pointer-events:none;z-index:2}
.spread-nav{position:absolute;top:0;bottom:0;width:18%;z-index:3;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s}
.spread-nav:hover{opacity:1}
.spread-prev{left:0}.spread-next{right:0}
.spread-nav .arr{width:42px;height:42px;border-radius:50%;background:var(--nav-bg);color:var(--paper);display:flex;align-items:center;justify-content:center;font-size:18px;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.spread-counter{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:4;font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--slate);background:var(--paper);padding:4px 12px;border-radius:20px;border:1px solid var(--rule)}
/* content-bearing page-flip: clones of the real pages turn around the spine */
.spread-flip{position:absolute;inset:0;z-index:5;pointer-events:none;perspective:2200px;display:none}
.flip-win{position:absolute;top:0;bottom:0;overflow:hidden;background:var(--paper)}
.flip-right{left:50%;right:0}
.flip-left{left:0;right:50%}
.flip-inner{position:absolute;top:0;bottom:0;width:200%}
.flip-right .flip-inner{left:-100%}
.flip-left .flip-inner{left:0}
.flip-cover{z-index:1}
.flip-leaf{z-index:2;backface-visibility:hidden;transform:rotateY(0deg);box-shadow:0 0 30px rgba(0,0,0,.28)}
.flip-leaf.leaf-fwd{transform-origin:left center}
.flip-leaf.leaf-back{transform-origin:right center}
/* curl shading on the turning page surface */
.flip-shade{position:absolute;inset:0;pointer-events:none;z-index:3}
.leaf-fwd .flip-shade{background:linear-gradient(90deg,rgba(255,255,255,.14),rgba(255,255,255,0) 18%,rgba(0,0,0,.04) 62%,rgba(0,0,0,.22))}
.leaf-back .flip-shade{background:linear-gradient(270deg,rgba(255,255,255,.14),rgba(255,255,255,0) 18%,rgba(0,0,0,.04) 62%,rgba(0,0,0,.22))}
@media (prefers-reduced-motion: reduce){.spread-pages{transition:none}.spread-flip{display:none !important}}
@media(max-width:720px){
  .spread-pages{column-gap:0 !important;padding:30px 26px}
  .spread-divider{display:none}
}

/* BOOKMARKS — silk ribbon + dropdown */
.nav-btn-count{position:absolute;top:-4px;right:-4px;min-width:15px;height:15px;padding:0 3px;border-radius:8px;background:var(--gold);color:var(--nav-bg);font-family:var(--mono);font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1}
.nav-btn-count[data-empty="1"]{display:none}
.bm-ribbon{position:absolute;left:-16px;width:26px;height:62px;z-index:40;cursor:pointer;background:linear-gradient(90deg,var(--accent),var(--accent-soft) 55%,var(--accent));box-shadow:2px 3px 9px rgba(0,0,0,.30);clip-path:polygon(0 0,100% 0,100% 100%,50% 76%,0 100%);transition:filter .15s ease,transform .15s ease}
.bm-ribbon::after{content:'';position:absolute;top:8px;left:50%;transform:translateX(-50%);width:3px;height:32px;border-radius:2px;background:rgba(255,255,255,.38)}
.bm-ribbon:hover{filter:brightness(1.1);transform:translateY(2px)}
.bm-ribbon.bm-new{animation:bmDrop .55s cubic-bezier(.34,1.56,.64,1)}
@keyframes bmDrop{0%{transform:translateY(-72px) rotate(-5deg);opacity:0}55%{opacity:1}100%{transform:none;opacity:1}}
.bm-ribbon.bm-leave{animation:bmLeave .35s ease forwards}
@keyframes bmLeave{to{transform:translateY(-72px) rotate(-5deg);opacity:0}}
body[dir="rtl"] .bm-ribbon{left:auto;right:-16px}
@media(max-width:760px){.bm-ribbon{left:-6px;width:20px;height:50px}body[dir="rtl"] .bm-ribbon{right:-6px;left:auto}}
.bm-panel{position:fixed;top:50px;z-index:330;width:300px;max-width:calc(100vw - 24px);background:var(--nav-bg);color:var(--nav-text);border:1px solid rgba(244,241,234,.14);border-radius:11px;box-shadow:0 18px 52px rgba(0,0,0,.46);padding:9px;opacity:0;transform:translateY(-8px) scale(.98);pointer-events:none;transition:opacity .2s ease,transform .2s ease}
.bm-panel.show{opacity:1;transform:none;pointer-events:auto}
.bm-add,.bm-resume{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;border:0;border-radius:8px;padding:11px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.bm-add{background:var(--accent);color:#fff}.bm-add:hover{filter:brightness(1.1)}
.bm-add svg{width:14px;height:14px}
.bm-resume{background:rgba(244,241,234,.08);color:var(--nav-text);border:1px solid rgba(244,241,234,.16);margin-top:7px}
.bm-resume:hover{border-color:var(--gold);color:var(--gold)}
.bm-list{max-height:46vh;overflow-y:auto;margin-top:8px}
.bm-empty{padding:18px 12px;text-align:center;color:rgba(244,241,234,.5);font-style:italic;font-size:14px;font-family:var(--serif)}
.bm-item{display:grid;grid-template-columns:7px 1fr;gap:11px;padding:10px 24px 10px 10px;border-radius:8px;cursor:pointer;position:relative}
.bm-item:hover{background:rgba(244,241,234,.07)}
.bm-item .bm-bar{border-radius:3px;background:var(--accent)}
.bm-item .bm-meta{font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--gold);margin-bottom:4px}
.bm-item .bm-snip{font-family:var(--serif);font-style:italic;font-size:14px;line-height:1.45;color:rgba(244,241,234,.9);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bm-item .bm-x{position:absolute;top:8px;right:7px;background:none;border:0;color:rgba(244,241,234,.34);cursor:pointer;font-size:15px;line-height:1;padding:2px;opacity:0}
.bm-item:hover .bm-x{opacity:1}.bm-item .bm-x:hover{color:var(--accent)}
.bm-toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(16px);background:var(--nav-bg);color:var(--nav-text);padding:11px 20px;border-radius:24px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;box-shadow:0 14px 38px rgba(0,0,0,.42);opacity:0;transition:opacity .25s ease,transform .25s ease;pointer-events:none;z-index:620;display:inline-flex;align-items:center;gap:9px}
.bm-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.bm-toast svg{width:15px;height:15px;color:var(--gold)}

/* RESPONSIVE + PRINT */
@media(max-width:600px){
  .book-chapter{padding:0 18px}
  .toc-inner{padding:0 20px}
  a.toc-row{grid-template-columns:40px 1fr 24px}
  .toc-rowtitle{font-size:18px}
}
/* the answer-key switch in the nav */
.nav-item.nav-key.on{color:var(--gold);font-weight:600}
.nav-item.nav-key.on::before{content:"✓ ";font-size:.9em}

@media print{
  .book-nav,.read-progress,.ad-loader,.ad-coach,.hl-toolbar,.hl-noteedit,.notes-drawer,.notes-backdrop,.interstitial-embed{display:none !important}
  .chapter-break{break-after:page}
  .reveal{opacity:1 !important;transform:none !important}

  /* ── paper ──────────────────────────────────────────────────────────
     A book is read on a screen and photocopied on paper. Printing keeps
     whatever state the reader is in — so the answer-key switch decides
     whether you get the worksheet or its correction out of the same file. */
  @page{margin:16mm 14mm}
  html,html.dark{
    --paper:#fff;--paper-deep:#f4f4f4;--ink:#111;--ink-soft:#333;--slate:#555;--rule:#bbb;
    background:#fff !important;color:#111 !important}
  html.dark body,body{background:#fff !important;color:#111 !important}
  .book-chapter{padding:0 !important}

  /* keep a figure, a table or a widget whole on one page where it fits */
  .iw,figure,.md-table,.evidence,.case,.argument,.stat,.notes{break-inside:avoid}
  h2,h3,.subhead,.section-marker{break-after:avoid}

  /* controls mean nothing on paper — the content they act on stays */
  .iw-btn,.iwm-qbtn,.iw3d-tools,.iw3d-hint,.iwglo-bar,.iwfc-bar,.iwfc-judge,
  .iword-btns,.iwlb-actions,.iwiq-actions,.iwiq-tip,.iwex-actions,.iwsrc-rev,
  .iwrx-actions,.iwnuc-actions,.iwm-quiz,.iwtl-quizbar,.iwtl-reset,.iwx-actions,
  .iwq-actions,.figure-nav,.iwopt-ctl,input[type=range],
  .iwwv-ctl,.iwfr-btns,.iwcj-tabs{display:none !important}

  /* answer spaces print as ruled boxes, not as browser widgets.
     Note the bare input selectors: the crossword, the posed operation and the
     numeration table use an input with maxlength and no type attribute, so
     input[type=text] never reaches them. */
  input[type=text],input[type=search],input[type=number],textarea,select,
  .iwpo-c input,.iwcw-c input,.iwpv-c input,
  .iwq-blank,.iwex-a,.iwnuc-in,.iwm-qin{
    border:1px solid #999 !important;background:#fff !important;color:#111 !important;
    box-shadow:none !important;-webkit-appearance:none;appearance:none}
  .iwcw-c input{border:0 !important}   /* the cell already has one */

  /* a ticked radio in the marking grid is drawn with a box-shadow, and browsers
     drop backgrounds when printing — give it an ink fill that survives */
  .iw-rb input:checked+i{background:#111 !important;box-shadow:inset 0 0 0 3.5px #fff !important;
    -webkit-print-color-adjust:exact;print-color-adjust:exact}

  /* the Sankey labels are white on coloured bands, so the bands have to print */
  .iw-en .iwen-svg{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  /* only the open tense of a conjugation prints; the other tabs are gone above */

  /* a flip card printed edge-on is a blank rectangle — lay both faces flat */
  .iw-fc .iwfc-card{height:auto !important;perspective:none !important}
  .iw-fc .iwfc-inner{transform:none !important;transform-style:flat !important;position:static !important}
  .iw-fc .iwfc-face{position:static !important;backface-visibility:visible !important;
    transform:none !important;border:1px solid #999;margin-bottom:6px;page-break-inside:avoid}
  .iw-fc .iwfc-front{background:#f4f4f4 !important;color:#111 !important}
  .iw-fc .iwfc-front i{display:none}

  /* anything hidden behind a disclosure opens up */
  details{display:block}
  details>summary{list-style:none;font-weight:600}
  details>*{display:block !important}
  .iwme-step.hid,.iwme-ans.hid{opacity:1 !important;display:list-item !important}
  .iwsrc-model[hidden],.iwex-sol[hidden],.iwex-hint[hidden]{display:block !important}

  /* the reader's own frame */
  .rawhtml-frame,.iw-embed-frame{border:1px solid #bbb}
  a{color:#111 !important;text-decoration:none}
}


/* reading typography lives on the chapter wrapper so it doesn't touch nav/TOC */
.book-chapter{font-size:19px;line-height:1.78;padding-bottom:130px;text-rendering:optimizeLegibility}
.book-chapter p{margin-bottom:26px}
.book-chapter em{font-style:italic}
.book-chapter strong{font-weight:600;color:var(--ink)}
.book-chapter a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}

/* chapter opener */
.opener{padding:120px 0 70px;border-bottom:1px solid var(--rule);margin-bottom:64px}
.ch-eyebrow{font-family:var(--mono);font-size:13px;letter-spacing:.32em;text-transform:uppercase;color:var(--accent);margin-bottom:28px;font-weight:500}
.ch-number{font-family:var(--mono);font-size:15px;color:var(--slate);letter-spacing:.1em;margin-bottom:10px}
.ch-title{font-size:58px;line-height:1.04;font-weight:600;letter-spacing:-.02em;margin-bottom:30px}
.ch-standfirst{font-size:23px;line-height:1.5;color:var(--ink-soft);font-weight:400;font-style:italic;max-width:92%}

/* drop cap on the lead paragraph */
.lead::first-letter{font-size:76px;line-height:.72;float:left;font-weight:600;padding:8px 14px 0 0;color:var(--accent)}
body[dir="rtl"] .lead::first-letter{float:right;padding:8px 0 0 14px}

/* section marker */
.section-marker{font-family:var(--mono);font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--slate);margin:64px 0 24px;display:flex;align-items:center;gap:16px}
.section-marker::after{content:"";flex:1;height:1px;background:var(--rule)}

/* pull quote */
.pull{font-size:30px;line-height:1.3;font-weight:500;color:var(--ink);margin:56px 0;padding-left:28px;border-left:3px solid var(--accent);letter-spacing:-.01em}

/* verdict (ink panel) */
.verdict{background:var(--ink);color:var(--paper);margin:60px -28px;padding:60px 48px;border-radius:3px}
.verdict p{font-size:29px;line-height:1.4;font-weight:500;letter-spacing:-.01em;margin-bottom:0}
.verdict .accent{color:var(--gold)}

/* evidence box */
.evidence{background:var(--paper-deep);border:1px solid var(--rule);border-top:3px solid var(--accent);border-radius:3px;padding:30px 32px 26px;margin:44px 0}
.evidence-label{font-family:var(--mono);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--slate);margin-bottom:16px}
.evidence-figure{font-family:var(--serif);font-size:46px;line-height:1.05;font-weight:600;color:var(--accent);letter-spacing:-.02em;margin-bottom:14px}
.evidence-body{font-size:18px;line-height:1.6;color:var(--ink-soft);margin-bottom:16px}
.evidence-body p{margin-bottom:14px}.evidence-body p:last-child{margin-bottom:0}
.evidence-label:first-child{margin-top:0}
.evidence-source{font-family:var(--mono);font-size:12px;color:var(--slate);letter-spacing:.04em;padding-top:14px;border-top:1px solid var(--rule)}
.evidence-source sup{color:var(--accent);font-weight:600}

/* case-study card */
.case{border:1px solid var(--rule);border-radius:3px;margin:44px 0;overflow:hidden}
.case-head{background:var(--ink);color:var(--paper);padding:22px 30px}
.case-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent-soft);margin-bottom:8px}
.case-name{font-size:26px;font-weight:600;line-height:1.15;letter-spacing:-.01em}
.case-body{padding:26px 30px 28px;background:var(--paper-deep)}
.case-body p{margin-bottom:18px;font-size:18px}
.case-body p:last-child{margin-bottom:0}
.case-stat{font-family:var(--mono);font-size:14px;color:var(--ink);font-weight:500;background:var(--paper);border:1px solid var(--rule);border-radius:2px;padding:4px 10px;display:inline-block;margin:0 6px 8px 0}

/* argument card (his vs mine) */
.argument{border:1px solid var(--rule);border-radius:3px;overflow:hidden;margin:52px 0}
.arg-head{background:var(--ink);color:var(--paper);padding:16px 28px;font-family:var(--mono);font-size:11px;letter-spacing:.26em;text-transform:uppercase;font-weight:600}
.arg-side{padding:24px 28px;border-top:1px solid var(--rule);display:grid;grid-template-columns:80px 1fr;gap:16px;align-items:start;background:var(--paper-deep)}
.arg-side:first-of-type{border-top:none}
.arg-label{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;padding-top:3px;line-height:1.4}
.arg-label.his{color:var(--slate)}
.arg-label.mine{color:var(--accent)}
.arg-text{font-size:17px;line-height:1.6;color:var(--ink-soft)}

/* footnote markers + endnotes */
sup.fn{font-family:var(--mono);font-size:.62em;color:var(--accent);font-weight:600;vertical-align:super;cursor:pointer;padding:0 1px}
.notes{margin-top:90px;padding-top:34px;border-top:1px solid var(--rule)}
.notes-title{font-family:var(--mono);font-size:12px;letter-spacing:.26em;text-transform:uppercase;color:var(--slate);margin-bottom:24px}
.note{display:grid;grid-template-columns:32px 1fr;gap:12px;font-size:14px;line-height:1.5;color:var(--ink-soft);margin-bottom:14px;font-family:var(--serif)}
.note-num{font-family:var(--mono);font-size:12px;color:var(--accent);font-weight:600;padding-top:2px}
.note a{color:var(--slate);text-decoration:underline;text-underline-offset:2px}

/* dialogue */
.dialogue{margin:44px 0;padding-left:22px;border-left:2px solid var(--rule)}
.dlg-line{display:grid;grid-template-columns:minmax(80px,140px) 1fr;gap:18px;align-items:baseline;margin-bottom:18px}
.dlg-speaker{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:600;padding-top:4px;text-align:right}
.dlg-text{font-size:19px;line-height:1.6;color:var(--ink)}
.dlg-aside{font-style:italic;color:var(--slate);font-size:16px;margin:6px 0 18px;padding-left:0}
body[dir="rtl"] .dialogue{padding-left:0;padding-right:22px;border-left:none;border-right:2px solid var(--rule)}
body[dir="rtl"] .dlg-speaker{text-align:left}
@media(max-width:600px){.dlg-line{grid-template-columns:1fr;gap:2px}.dlg-speaker{text-align:left;padding-top:0}}

/* closing line */
.closer{font-size:27px;line-height:1.42;font-weight:500;color:var(--ink);margin:70px 0 0;padding:38px 0 0;border-top:3px double var(--ink);letter-spacing:-.01em}
.closer .accent{color:var(--accent)}

/* epigraph (opening quote) */
.epigraph{margin:40px 0 52px;text-align:center;max-width:560px;margin-left:auto;margin-right:auto}
.epigraph-text{font-size:24px;line-height:1.45;font-style:italic;color:var(--ink-soft);letter-spacing:-.01em}
.epigraph-cite{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-top:18px}

/* figure (one or many images + caption) */
.figure{margin:44px 0;text-align:center}
.figure-imgs{display:flex;justify-content:center;align-items:flex-start;gap:14px;flex-wrap:wrap}
.figure-item{margin:0;display:flex;flex-direction:column;align-items:center;max-width:100%}
.figure-item img{max-width:100%;height:auto;border-radius:3px;display:block}
.figure-item-cap{font-family:var(--mono);font-size:11px;letter-spacing:.03em;color:var(--slate);margin-top:7px;line-height:1.45}
/* solo: one centred image */
.figure-single .figure-item{margin-left:auto;margin-right:auto}
/* row: side by side, equal share unless an image sets its own % */
.figure-row .figure-imgs{flex-wrap:nowrap}
.figure-row .figure-item{flex:1 1 0;min-width:0}
.figure-row .figure-item img{width:100%;object-fit:cover}
/* column: stacked vertically */
.figure-column .figure-imgs{flex-direction:column;flex-wrap:nowrap;align-items:center}
.figure-column .figure-item{width:100%}
/* grid: multi-column */
.figure-grid .figure-imgs{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.figure-grid .figure-item{width:100%}
.figure-grid .figure-item img{width:100%}
/* carousel: a draggable strip with arrows + fading edges */
.figure-carousel-wrap{position:relative}
.figure-carousel .figure-scroll{overflow-x:auto;overflow-y:hidden;cursor:grab;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}
.figure-carousel .figure-scroll::-webkit-scrollbar{display:none;height:0;width:0}
.figure-carousel .figure-scroll.drag{cursor:grabbing;scroll-behavior:auto;user-select:none}
.figure-carousel .figure-imgs{flex-wrap:nowrap;justify-content:flex-start;width:max-content;padding:2px}
.figure-carousel .figure-item{flex:0 0 auto;width:300px}
.figure-carousel .figure-item img{width:100%}
.figure-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:38px;height:38px;border-radius:50%;border:1px solid var(--rule);background:var(--paper);color:var(--ink);font-size:22px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 3px 12px rgba(0,0,0,.18);transition:opacity .25s,background .15s}
.figure-nav:hover{background:var(--paper-deep)}
.figure-nav-l{left:6px}.figure-nav-r{right:6px}
.figure-carousel-wrap.at-start .figure-nav-l,.figure-carousel-wrap.at-end .figure-nav-r,.figure-carousel-wrap.no-scroll .figure-nav{opacity:0;pointer-events:none}
.figure-small{max-width:300px;margin-left:auto;margin-right:auto}
.figure-medium{max-width:520px;margin-left:auto;margin-right:auto}
.figure-large{max-width:780px;margin-left:auto;margin-right:auto}
.figure-full{max-width:100%}
.figure-carousel.figure-small,.figure-carousel.figure-medium,.figure-carousel.figure-large{max-width:none}
.figure-cap{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--slate);margin-top:12px;line-height:1.5}
@media(max-width:600px){.figure-row .figure-imgs{flex-wrap:wrap}}

/* free-form chapter canvas (Layout mode) */
.book-chapter.canvas-chapter{max-width:none;margin:0;padding:0}
/* keep the chapter opener (title) in the centred reading column even though the canvas is full-width */
.book-chapter.canvas-chapter>.opener{max-width:var(--content-width,720px);margin:0 auto;padding:0 28px}
.ch-canvas-main{margin:0;padding:0}
.ch-canvas-fit{position:relative;width:100%;overflow:hidden}
/* the chapter's Notes, lifted out of the canvas into the reading column below it */
.ch-canvas-main>.notes{max-width:var(--content-width,720px);margin:90px auto 0;padding:34px 28px 0}
.ch-canvas{position:relative;transform-origin:top left}
.layout-item{position:absolute;box-sizing:border-box;overflow:visible;display:flex;flex-direction:column}
/* Un element masque par l'auteur. Le livre construit ne le contient jamais —
   le rendu s'arrete avant — et cette regle ne sert donc qu'a l'apercu de
   Studio, ou il faut bien pouvoir le retrouver pour le rallumer. */
.layout-item.li-masque{opacity:.28;filter:grayscale(1)}
/* tables inside a recoloured layout element follow that element's ink/rule */
.layout-item .md-table th,.layout-item table th{color:var(--ink)}
.layout-item .md-table td,.layout-item table td{color:var(--ink-soft)}
.layout-item table th,.layout-item table td,.layout-item .md-table-bordered table,.layout-item .md-table-bordered th,.layout-item .md-table-bordered td{border-color:var(--rule)}
.layout-item>*{min-height:0}
.layout-item>:first-child{margin-top:0}
.layout-item>:last-child{margin-bottom:0}
.layout-item img{max-width:100%}
.layout-item .figure{margin:0;flex:1 1 auto;display:flex;flex-direction:column;min-height:0}
.layout-item .figure-imgs{flex:1 1 auto;min-height:0;align-items:center}
.layout-item .figure-item img{max-height:100%;object-fit:contain}
.layout-item .media{margin:0}
.layout-item .media-el,.layout-item video{max-height:100%}
/* canvas content is positioned, not scroll-revealed — always show it */
.ch-canvas .reveal{opacity:1!important;transform:none!important}

/* Arabic / Quran passage */
.arabic-text{direction:rtl;text-align:right;font-family:'Amiri','Scheherazade New',serif;font-size:1.5em;line-height:2.15;color:var(--ink);margin:34px 0}
.arabic-text[data-font="quran"]{font-family:'Amiri Quran','Amiri',serif;font-size:1.7em;line-height:2.5;text-align:center}
.arabic-text[data-font="kufi"]{font-family:'Reem Kufi','Amiri',serif}

/* raw HTML — isolated in a sandboxed iframe so it can't affect the page */
.rawhtml{margin:40px 0}
.rawhtml-frame{width:100%;border:0;display:block;background:transparent;min-height:24px}
.layout-item .rawhtml{margin:0}
.layout-item .rawhtml-frame{height:100%}

/* media (audio / video) */
.media{margin:44px 0;text-align:center}
.media-el{max-width:100%;display:block;margin:0 auto;border-radius:6px}
video.media-el{width:100%;background:#000;border:1px solid var(--rule)}
.media-audio{width:100%;height:44px}

/* images inside prose tables */
.book-chapter table img{max-width:150px;height:auto;border-radius:4px;vertical-align:middle;display:inline-block}

/* callout / aside note */
.callout{background:var(--paper-deep);border-left:3px solid var(--gold);border-radius:3px;padding:22px 26px;margin:40px 0;font-size:17px;line-height:1.6;color:var(--ink-soft)}
.callout p{margin-bottom:14px}.callout p:last-child{margin-bottom:0}
.callout strong{color:var(--ink)}
body[dir="rtl"] .callout{border-left:none;border-right:3px solid var(--gold)}

/* subheading */
.subhead{font-size:27px;line-height:1.2;font-weight:600;letter-spacing:-.01em;color:var(--ink);margin:52px 0 18px}

/* verse / poem */
.verse{font-style:italic;font-size:19px;line-height:1.7;color:var(--ink);margin:40px 0;padding-left:28px;border-left:1px solid var(--rule);white-space:pre-wrap}
body[dir="rtl"] .verse{border-left:none;border-right:1px solid var(--rule);padding-left:0;padding-right:28px}

/* scene break (within a chapter) */
.scene-break{display:flex;align-items:center;justify-content:center;gap:14px;margin:54px 0;color:var(--accent);font-size:12px}
.scene-break::before,.scene-break::after{content:'';width:46px;height:1px;background:var(--rule)}

/* stat (single big figure) */
.stat{margin:44px 0;text-align:center}
.stat-figure{font-size:64px;line-height:1;font-weight:700;color:var(--accent);letter-spacing:-.03em}
.stat-label{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--slate);margin-top:12px}

/* letter / epistolary */
.letter{background:var(--paper-deep);border:1px solid var(--rule);border-radius:3px;padding:34px 38px;margin:44px 0;font-size:18px;line-height:1.7;color:var(--ink-soft)}
.letter p{margin-bottom:18px}.letter p:last-child{margin-bottom:0}

/* tables */
.book-chapter table{width:100%;border-collapse:collapse;margin:40px 0;font-size:16px}
.book-chapter th,.book-chapter td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--rule)}
.book-chapter th{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);font-weight:600}
.book-chapter td{color:var(--ink-soft)}
body[dir="rtl"] .book-chapter th,body[dir="rtl"] .book-chapter td{text-align:right}
/* table outline styles (the :::table wrapper) */
.md-table{margin:40px 0}
.md-table table{margin:0}
.md-table-bordered table{border:1px solid var(--rule)}
.md-table-bordered th,.md-table-bordered td{border:1px solid var(--rule)}
.md-table-striped th,.md-table-striped td{border-bottom:0}
.md-table-striped tbody tr:nth-child(odd) td{background:var(--paper-deep)}
.md-table-minimal th,.md-table-minimal td{border-bottom:0}
.md-table-minimal th{border-bottom:2px solid var(--rule)}
.md-table-boxed{border:1px solid var(--rule);border-radius:10px;overflow:hidden}
.md-table-boxed th,.md-table-boxed td{padding:12px 16px}
.md-table-boxed th{background:var(--paper-deep)}
.md-table-boxed td{border-bottom:1px solid var(--rule)}
.md-table-boxed tr:last-child td{border-bottom:0}

/* lists */
.book-chapter ul,.book-chapter ol{margin:0 0 26px 1.3em}
.book-chapter li{margin-bottom:9px;line-height:1.7}

@media (max-width:600px){
  .book-chapter{font-size:18px}
  .epigraph-text{font-size:20px}
  .subhead{font-size:22px}
  .stat-figure{font-size:48px}
  .letter{padding:24px 22px}
  .ch-title{font-size:40px}
  .ch-standfirst{font-size:20px;max-width:100%}
  .opener{padding:70px 0 48px}
  .pull{font-size:24px}
  .verdict{margin:48px -20px;padding:44px 28px}
  .verdict p{font-size:23px}
  .arg-side{grid-template-columns:1fr;gap:6px}
  .closer{font-size:23px}
  .lead::first-letter{font-size:62px}
}

/* ── reader font-size control: --reading-scale multiplies the prose sizes ── */
:root{--reading-scale:1}
.book-chapter{font-size:calc(19px * var(--reading-scale))}
.book-chapter .ch-standfirst{font-size:calc(23px * var(--reading-scale))}
.book-chapter .pull{font-size:calc(30px * var(--reading-scale))}
.book-chapter .verdict p{font-size:calc(29px * var(--reading-scale))}
.book-chapter .evidence-body{font-size:calc(18px * var(--reading-scale))}
.book-chapter .case-body p{font-size:calc(18px * var(--reading-scale))}
.book-chapter .dlg-text{font-size:calc(19px * var(--reading-scale))}
.book-chapter .callout{font-size:calc(17px * var(--reading-scale))}
.book-chapter .letter{font-size:calc(18px * var(--reading-scale))}
.book-chapter .closer{font-size:calc(27px * var(--reading-scale))}
.book-chapter .verse{font-size:calc(19px * var(--reading-scale))}
.book-chapter .epigraph-text{font-size:calc(24px * var(--reading-scale))}
@media (max-width:600px){ .book-chapter{font-size:calc(18px * var(--reading-scale))} }

/* look: crisp */
.book-chapter{font-size:18px;line-height:1.72;letter-spacing:-.003em}
.book-chapter p{margin-bottom:22px}
.ch-title{font-weight:700;letter-spacing:-.03em}
.ch-eyebrow{letter-spacing:.24em;font-weight:600}
.lead::first-letter{font-size:inherit;float:none;padding:0;font-weight:inherit;color:inherit}
.lead{font-weight:500}
.section-marker{font-size:11px;letter-spacing:.2em;font-weight:600;color:var(--accent);margin:52px 0 20px}
.section-marker::after{height:2px;background:var(--accent);opacity:.25}
.pull{font-size:24px;font-weight:500;border-left-width:4px;letter-spacing:-.01em}
.evidence,.iw-card,.verdict{border-radius:6px}
.iw-title{letter-spacing:.14em}

.iw{margin:44px 0}
.iw-card{background:var(--paper-deep);border:1px solid var(--rule);border-radius:6px;padding:22px 24px}
.iw-title{font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--slate);margin-bottom:16px;font-weight:600}
.iw-err{font-family:var(--mono);font-size:12px;color:var(--accent)}
.iw-btn{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;background:var(--accent);color:#fff;border:0;border-radius:6px;padding:9px 16px;cursor:pointer}
.iw-btn:hover{filter:brightness(1.08)}

/* charts */
.iw-chart{width:100%}
.iw-chart text.iw-ax{font-family:var(--mono);font-size:11px;fill:var(--slate)}
.iw-chart .iw-bar,.iw-chart .iw-dot{transition:opacity .15s}.iw-chart .iw-bar:hover,.iw-chart .iw-dot:hover{opacity:.78}
.iw-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:14px}
.iw-leg{display:inline-flex;align-items:center;gap:7px;background:none;border:0;cursor:pointer;font-family:var(--mono);font-size:11px;color:var(--ink-soft);letter-spacing:.04em}
.iw-leg span{width:12px;height:12px;border-radius:3px;display:inline-block}
.iw-leg.off{opacity:.4;text-decoration:line-through}

/* timeline — vertical rail */
.iwt-line{position:relative;margin:2px 0 0;padding-left:36px}
.iwt-line::before{content:'';position:absolute;left:11px;top:8px;bottom:8px;width:2px;background:var(--rule)}
.iwt-item{position:relative;padding-bottom:30px}
.iwt-item:last-child{padding-bottom:0}
.iwt-marker{position:absolute;left:-36px;top:1px;width:24px;display:flex;justify-content:center}
.iwt-marker span{width:15px;height:15px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--paper-deep);transition:transform .15s}
.iwt-item:hover .iwt-marker span{transform:scale(1.18)}
.iwt-date{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.iwt-h{font-size:21px;font-weight:600;margin:3px 0 0;line-height:1.25}
.iwt-b{font-size:16px;line-height:1.6;color:var(--ink-soft);margin-top:9px}
.iwt-media{margin-top:11px}
.iwt-img{display:block;max-width:100%;height:auto;border-radius:7px;border:1px solid var(--rule)}
video.iwt-img{width:100%}
.iwt-audio{width:100%;height:40px}
.iwt-frame{width:100%;height:300px;border:0;border-radius:7px;background:#fff}
@media(max-width:600px){.iwt-frame{height:220px}}
/* alternate layout: events zig-zag either side of a centred rail (wide screens) */
@media(min-width:680px){
  .iwt-alt .iwt-line{padding-left:0}
  .iwt-alt .iwt-line::before{left:50%;margin-left:-1px}
  .iwt-alt .iwt-item{width:50%;box-sizing:border-box;padding-bottom:36px}
  .iwt-alt .iwt-item:nth-child(odd){margin-right:50%;padding-right:32px;text-align:right}
  .iwt-alt .iwt-item:nth-child(even){margin-left:50%;padding-left:32px;text-align:left}
  .iwt-alt .iwt-marker{width:24px;top:2px}
  .iwt-alt .iwt-item:nth-child(odd) .iwt-marker{left:auto;right:-12px}
  .iwt-alt .iwt-item:nth-child(even) .iwt-marker{left:-12px;right:auto}
  .iwt-alt .iwt-item:nth-child(odd) .iwt-img{margin-left:auto;margin-right:0}
}
/* horizontal layout: a draggable strip of cards with fading edge shadows */
.iwt-horiz .iwt-wrap{position:relative}
.iwt-horiz .iwt-scroll{overflow-x:auto;overflow-y:hidden;cursor:grab;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}
.iwt-horiz .iwt-scroll::-webkit-scrollbar{display:none;height:0;width:0}
.iwt-horiz .iwt-scroll.drag{cursor:grabbing;scroll-behavior:auto;user-select:none}
.iwt-horiz .iwt-track{display:flex;align-items:flex-start;gap:0;padding:8px 2px 14px;width:max-content;position:relative}
.iwt-horiz .iwt-track::before{content:'';position:absolute;left:8px;right:8px;top:15px;height:2px;background:var(--rule)}
.iwt-horiz .iwt-item{position:relative;flex:0 0 260px;width:260px;padding:0 22px 0 0;box-sizing:border-box}
.iwt-horiz .iwt-marker{position:relative;left:0;top:0;width:auto;justify-content:flex-start;margin-bottom:14px}
.iwt-horiz .iwt-img{max-height:180px}
.iwt-edge{position:absolute;top:0;bottom:0;width:52px;pointer-events:none;opacity:1;transition:opacity .35s ease;z-index:2}
.iwt-edge-l{left:0;background:linear-gradient(90deg,var(--paper) 12%,transparent)}
.iwt-edge-r{right:0;background:linear-gradient(270deg,var(--paper) 12%,transparent)}
.iwt-wrap.at-start .iwt-edge-l{opacity:0}
.iwt-wrap.at-end .iwt-edge-r{opacity:0}

/* universal stat card */
.iw-statcard{--isc-accent:var(--accent)}
.iw-statcard .isc-main{display:flex;gap:18px;align-items:flex-start}
.iw-statcard .isc-img{flex:0 0 38%;max-width:210px}
.iw-statcard .isc-img img{width:100%;height:auto;border-radius:10px;display:block;border:1px solid var(--rule)}
.iw-statcard .isc-head{flex:1 1 auto;min-width:0}
.iw-statcard .isc-kicker{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--isc-accent);margin-bottom:5px}
.iw-statcard .isc-title{font-size:24px;font-weight:700;line-height:1.15;letter-spacing:-.01em}
.iw-statcard .isc-body{font-size:15px;line-height:1.6;color:var(--ink-soft);margin-top:8px}
.iw-statcard .isc-facts{margin:13px 0 0}
.iw-statcard .isc-fact{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--rule);font-size:14px}
.iw-statcard .isc-fact:last-child{border-bottom:0}
.iw-statcard .isc-fact dt{color:var(--slate);font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;margin:0}
.iw-statcard .isc-fact dd{margin:0;font-weight:600;text-align:right}
.iw-statcard .isc-stats{margin-top:16px;display:flex;flex-direction:column;gap:11px}
.iw-statcard .isc-stat-head{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}
.iw-statcard .isc-stat-head span:first-child{color:var(--ink-soft)}
.iw-statcard .isc-stat-val{font-family:var(--mono);font-weight:600;color:var(--ink)}
.iw-statcard .isc-bar{height:9px;background:var(--paper-deep);border-radius:6px;overflow:hidden}
.iw-statcard .isc-bar i{display:block;height:100%;width:0;background:var(--isc-accent);border-radius:6px;transition:width .9s cubic-bezier(.22,.61,.36,1)}
@media(max-width:540px){.iw-statcard .isc-main{flex-direction:column}.iw-statcard .isc-img{flex-basis:auto;max-width:100%}}

/* tier list */
.iw-tierlist .iwtl-board{display:flex;flex-direction:column;gap:4px;border:1px solid var(--rule);border-radius:8px;overflow:hidden}
.iw-tierlist .iwtl-row{display:flex;min-height:64px}
.iw-tierlist .iwtl-label{flex:0 0 auto;min-width:64px;max-width:150px;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:800;font-size:18px;color:#1a1a1a;padding:4px 8px;outline:none;overflow-wrap:anywhere;line-height:1.15}
.iw-tierlist .iwtl-label:focus{box-shadow:inset 0 0 0 2px rgba(0,0,0,.4)}
.iw-tierlist .iwtl-drop{flex:1 1 auto;display:flex;flex-wrap:wrap;gap:6px;padding:6px;background:var(--paper-deep);align-content:flex-start}
.iw-tierlist .iwtl-over{outline:2px dashed var(--accent);outline-offset:-2px}
.iw-tierlist .iwtl-poolh{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--slate);margin:12px 0 5px}
.iw-tierlist .iwtl-pool{border:1px dashed var(--rule);border-radius:8px;min-height:78px}
.iwtl-chip{display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--paper);border:1px solid var(--rule);border-radius:7px;padding:5px;width:66px;cursor:grab;touch-action:none;user-select:none;font-size:11px;text-align:center;line-height:1.2}
.iwtl-chip img{width:54px;height:54px;object-fit:cover;border-radius:4px;display:block;pointer-events:none}
.iw-tierlist .iwtl-chip.iwtl-dragging{opacity:.3}
.iwtl-ghost{cursor:grabbing;box-shadow:0 8px 24px rgba(0,0,0,.3)}
.iw-tierlist .iwtl-reset{margin-top:12px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;background:none;border:1px solid var(--rule);color:var(--slate);border-radius:7px;padding:6px 12px;cursor:pointer}
.iw-tierlist .iwtl-quizbar{display:flex;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap}
.iw-tierlist .iwtl-show{background:transparent;border:1px solid var(--rule);color:var(--slate);border-radius:7px;padding:8px 13px;font-family:var(--mono);font-size:11px;cursor:pointer}
.iw-tierlist .iwtl-show:hover{border-color:var(--accent);color:var(--accent)}
.iw-tierlist .iwtl-score{font-family:var(--mono);font-size:13px;font-weight:600}
.iw-tierlist .iwtl-score.ok{color:#3a8a5a}.iw-tierlist .iwtl-score.no{color:var(--accent)}
.iwtl-chip.iwtl-correct{outline:2px solid #3a8a5a;outline-offset:1px}
.iwtl-chip.iwtl-wrong{outline:2px solid var(--accent);outline-offset:1px}

/* branching path */
.iw-branch .iwb-trail{display:flex;flex-direction:column;gap:14px}
.iw-branch .iwb-text{font-size:17px;line-height:1.6}
.iw-branch .iwb-node:not(.iwb-cur){opacity:.5}
.iw-branch .iwb-node:not(.iwb-cur) .iwb-text{font-size:15px}
.iw-branch .iwb-choices{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.iw-branch .iwb-choice{font-family:var(--serif);font-size:15px;background:var(--paper-deep);border:1px solid var(--rule);color:var(--ink);border-radius:9px;padding:11px 16px;cursor:pointer;transition:.15s;text-align:left}
.iw-branch .iwb-choice:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
.iw-branch .iwb-end{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--slate);margin-top:12px}
.iw-branch .iwb-restart{margin-top:18px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;background:none;border:1px solid var(--rule);color:var(--slate);border-radius:7px;padding:7px 13px;cursor:pointer}

/* sheet music */
.iw-sheet .iwsm-staffwrap{position:relative}
.iw-sheet .iwsm-scroll{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
.iw-sheet .iwsm-scroll::-webkit-scrollbar{display:none}
.iw-sheet .iwsm-svg{display:block;max-width:none;color:var(--ink)}
.iw-sheet .iwsm-play{margin-bottom:10px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;background:var(--accent);color:#fff;border:0;border-radius:7px;padding:8px 14px;cursor:pointer}
.iw-sheet .iwsm-play:hover{filter:brightness(1.08)}
.iw-sheet .iwsm-chords{overflow-x:auto}
.iw-sheet .iwsm-cl{margin-bottom:12px}
.iw-sheet .iwsm-chord{margin:0;color:var(--accent);font-family:var(--mono);font-weight:700;font-size:14px;white-space:pre;line-height:1.2}
.iw-sheet .iwsm-lyric{margin:0;font-family:var(--serif);font-size:16px;white-space:pre;line-height:1.3}

/* cartesian grapher */
.iw-graph .iwg-plot{background:var(--paper);border:1px solid var(--rule);border-radius:8px;overflow:hidden}
.iw-graph .iwg-svg{width:100%;height:auto;display:block}
.iw-graph .iwg-grid{stroke:var(--rule);stroke-width:1;opacity:.55}
.iw-graph .iwg-axis{stroke:var(--ink-soft);stroke-width:1.4}
.iw-graph .iwg-lbl{fill:var(--slate);font-family:var(--mono);font-size:11px}
.iw-graph .iwg-legend{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:12px}
.iw-graph .iwg-leg{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:12.5px;color:var(--ink-soft)}
.iw-graph .iwg-leg i{width:16px;height:3px;border-radius:2px}
.iw-graph .iwg-leg em{color:var(--accent);font-style:normal}

/* map */
/* interactive simulation */
.iw-sim .iwsim-vars{display:flex;flex-direction:column;gap:14px}
.iw-sim .iwsim-vh{display:flex;justify-content:space-between;align-items:baseline;font-size:14px;margin-bottom:4px}
.iw-sim .iwsim-vh em{color:var(--slate);font-style:normal;font-size:12px}
.iw-sim .iwsim-vh b{font-family:var(--mono);color:var(--accent)}
.iw-sim .iwsim-var input[type=range]{width:100%;accent-color:var(--accent)}
.iw-sim .iwsim-outs{margin-top:18px;border-top:1px solid var(--rule);padding-top:14px;display:flex;flex-direction:column;gap:9px}
.iw-sim .iwsim-out{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.iw-sim .iwsim-ol{font-size:15px;color:var(--ink-soft)}.iw-sim .iwsim-ol em{color:var(--accent);font-style:normal}
.iw-sim .iwsim-ov{font-family:var(--mono);font-size:20px;font-weight:600;color:var(--ink)}
/* labeled diagram */
/* ── geometry figure ── */
.iw-geo .iwgeo-wrap{overflow-x:auto}
.iw-geo .iwgeo-svg{width:100%;max-width:620px;height:auto;display:block;margin:0 auto}
.iw-geo .iwgeo-grid line{stroke:var(--rule);stroke-width:.6;opacity:.55}
.iw-geo .iwgeo-ax line{stroke:var(--slate);stroke-width:1.2}
.iw-geo .iwgeo-l{fill:var(--ink);font-family:var(--mono);font-weight:700;paint-order:stroke fill;stroke:var(--paper-deep);stroke-width:3px}
.iw-geo .iwgeo-m{fill:var(--ink-soft);font-family:var(--mono);paint-order:stroke fill;stroke:var(--paper-deep);stroke-width:3px}
.iw-geo .iwgeo-note{margin-top:12px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}
/* Le graphique : un paragraphe avant, une legende apres. La legende porte la
   source ou la lecture a retenir — un graphique sans source ne prouve rien. */
.iwch-intro{margin:0 0 12px;font-size:14.5px;line-height:1.6;color:var(--ink-soft)}
.iwch-note{margin-top:10px;padding-top:9px;border-top:1px solid var(--rule);
  font-size:13px;line-height:1.55;color:var(--ink-soft);font-style:italic}

/* ── method (worked solution) ── */
.iw-method .iwme-head{margin-bottom:10px}
.iw-method .iwme-kick{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}
.iw-method .iwme-head h3{margin:3px 0 0;font-size:21px;line-height:1.2;font-weight:700}
.iw-method .iwme-prob{padding:11px 14px;background:var(--paper);border-left:3px solid var(--slate);border-radius:0 6px 6px 0;font-size:15px;line-height:1.55}
.iw-method .iwme-steps{margin:14px 0 0;padding-left:26px;counter-reset:none}
.iw-method .iwme-step{margin-bottom:12px;transition:opacity .25s}
.iw-method .iwme-step::marker{font-family:var(--mono);font-weight:700;color:var(--accent)}
.iw-method .iwme-step.hid{display:none}
/* overflow-y must be stated: when one axis is not visible the other computes to
   auto, and the taller MathML block then grows a stray vertical scrollbar */
.iw-method .iwme-expr{overflow-x:auto;overflow-y:hidden;padding:4px 0 9px}
.iw-method .iwme-expr math{font-size:1.15em}
.iw-method .iwme-why{font-size:14px;line-height:1.55;color:var(--ink-soft);margin-top:2px}
.iw-method .iwme-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}
.iw-method .iwme-actions .iw-btn[disabled]{opacity:.45;cursor:default}
.iw-method .iwme-ans{margin-top:14px;padding:11px 15px;border-radius:7px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:color-mix(in srgb,#2e7d32 11%,transparent);border-left:3px solid #2e7d32}
.iw-method .iwme-ans.hid{display:none}
.iw-method .iwme-ans>span{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#2e7d32}

/* ── number line ── */
.iw-nline .iwnl-wrap{overflow-x:auto}
.iw-nline .iwnl-svg{width:100%;min-width:420px;height:auto;display:block}
.iw-nline .iwnl-axis{stroke:var(--ink);stroke-width:1.6}
.iw-nline .iwnl-arrow{fill:var(--ink)}
.iw-nline .iwnl-tick{stroke:var(--ink);stroke-width:1.2}
.iw-nline .iwnl-num{fill:var(--slate);font-family:var(--mono);font-size:11px}
.iw-nline .iwnl-lab{font-family:var(--mono);font-size:11px;font-weight:700}
.iw-nline .iwnl-note{margin-top:10px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}

/* ── statistics ── */
.iw-stats .iwst-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:2px 16px;margin:0 0 14px}
/* every measure is a button, because every measure explains itself */
.iw-stats .iwst-tile{display:flex;justify-content:space-between;align-items:baseline;gap:8px;width:100%;
  padding:5px 6px;border:0;border-bottom:1px dotted var(--rule);background:none;font:inherit;text-align:left;
  cursor:help;border-radius:3px 3px 0 0;transition:background .15s,border-color .15s}
.iw-stats .iwst-tile:hover,.iw-stats .iwst-tile:focus-visible{background:var(--paper-deep);border-bottom-color:var(--accent);outline:none}
.iw-stats .iwst-tile.on{background:var(--paper-deep);border-bottom:1px solid var(--accent)}
.iw-stats .iwst-dt{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--slate)}
.iw-stats .iwst-tile.on .iwst-dt{color:var(--accent)}
.iw-stats .iwst-sym{text-transform:none}
.iw-stats .iwst-dd{font-family:var(--mono);font-weight:700;font-size:13.5px;color:var(--ink);white-space:nowrap}
.iw-stats .iwst-why{min-height:66px;padding:11px 14px;margin-bottom:16px;border-radius:6px;
  background:var(--paper-deep);border-left:2.5px solid var(--accent)}
.iw-stats .iwst-why b{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--accent);margin-bottom:4px}
.iw-stats .iwst-why span{display:block;font-size:13.5px;line-height:1.6;color:var(--ink-soft)}
.iw-stats .iwst-why i{display:block;margin-top:5px;font-style:normal;font-family:var(--mono);font-size:12.5px;
  line-height:1.6;color:var(--ink)}
.iw-stats .iwst-hint{color:var(--slate) !important;font-style:italic}
.iw-stats .iwst-box,.iw-stats .iwst-hist,.iw-stats .iwst-dot,.iw-stats .iwst-cum{width:100%;max-width:620px;height:auto;display:block;margin:6px auto 0}
.iw-stats .iwst-t{fill:var(--slate);font-family:var(--mono);font-size:10.5px}
.iw-stats .iwst-k{fill:var(--ink);font-family:var(--mono);font-size:10px;letter-spacing:.08em;font-weight:700}
/* hovering a measure lights up the part of the picture it is talking about */
.iw-stats .iwst-mk{transition:stroke-width .15s,fill-opacity .15s}
.iw-stats .iwst-mk.on{stroke:var(--gold) !important;stroke-width:4}
.iw-stats rect.iwst-mk.on{fill:var(--gold);fill-opacity:.22;stroke-width:2.4}
.iw-stats circle.iwst-out.on{stroke-width:2.4}
.iw-stats .iwst-read{opacity:.85}
.iw-stats .iwst-cap{margin-top:7px;text-align:center;font-size:12px;color:var(--slate);font-style:italic}
.iw-stats .iwst-stem{margin:14px auto 0;border-collapse:collapse;font-family:var(--mono);font-size:13px}
.iw-stats .iwst-stem caption{caption-side:top;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--slate);padding-bottom:7px}
.iw-stats .iwst-stem th{padding:3px 12px 3px 4px;text-align:right;border-right:1.5px solid var(--rule);color:var(--accent)}
.iw-stats .iwst-stem td{padding:3px 4px 3px 12px;letter-spacing:.22em;color:var(--ink)}
.iw-stats .iwst-note{margin-top:12px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}

/* ── probability tree ── */
.iw-ptree .iwpt-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:14px}
.iw-ptree .iwpt-scroll{overflow-x:auto;padding-bottom:4px}
/* the branches are SVG, the words are HTML on top of them, because an outcome
   can be a phrase and SVG text does not wrap */
.iw-ptree .iwpt-stage{position:relative}
.iw-ptree .iwpt-svg{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible}
.iw-ptree .iwpt-br,.iw-ptree .iwpt-dot{transition:opacity .18s,stroke-width .18s}
.iw-ptree .iwpt-lab{position:absolute;transform:translateY(-50%);font-family:var(--mono);font-size:12.5px;
  line-height:1.35;color:var(--ink);transition:opacity .18s,color .18s}
.iw-ptree .iwpt-lab.ev{color:var(--accent);font-weight:700}
.iw-ptree .iwpt-p{position:absolute;transform:translate(-50%,-50%);min-width:34px;text-align:center;
  font-family:var(--mono);font-size:11px;font-weight:700;color:var(--accent);
  background:var(--paper);border-radius:9px;padding:1px 5px;transition:opacity .18s}
.iw-ptree .iwpt-leafp{position:absolute;transform:translateY(-50%);font-family:var(--mono);font-size:12px;
  font-weight:700;color:var(--slate);transition:opacity .18s,color .18s}
/* a stacked fraction, so a sixth reads as a sixth */
.iw-ptree .iwpt-fr{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;
  line-height:1.05;font-size:.86em}
.iw-ptree .iwpt-fr b{font-weight:700}
.iw-ptree .iwpt-fr i{font-style:normal;font-weight:700;border-top:1.4px solid currentColor;padding-top:1px}
/* hovering any one representation dims everything not on that path */
.iw-ptree.iwpt-focus .iwpt-br,.iw-ptree.iwpt-focus .iwpt-dot,
.iw-ptree.iwpt-focus .iwpt-lab,.iw-ptree.iwpt-focus .iwpt-p,
.iw-ptree.iwpt-focus .iwpt-seg,.iw-ptree.iwpt-focus .iwpt-tab tbody tr{opacity:.24}
.iw-ptree.iwpt-focus [data-node].on,.iw-ptree.iwpt-focus [data-leaf].on{opacity:1}
.iw-ptree.iwpt-focus .iwpt-br.on{stroke-width:5.5}
.iw-ptree.iwpt-focus .iwpt-lab.on{color:var(--accent);font-weight:700}
.iw-ptree.iwpt-focus .iwpt-tab tbody tr.on{opacity:1;background:var(--paper-deep)}
.iw-ptree .iwpt-warn{margin-top:12px;padding:8px 12px;border-radius:6px;font-size:13px;
  background:color-mix(in srgb,#c0392b 11%,transparent);border-left:3px solid #c0392b}
/* the unit bar: the whole of the probability, cut into the outcomes */
.iw-ptree .iwpt-bar{display:flex;height:36px;margin-top:18px;border-radius:5px;overflow:hidden;
  box-shadow:inset 0 0 0 1px var(--rule)}
.iw-ptree .iwpt-seg{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;
  cursor:default;transition:opacity .18s,filter .18s}
.iw-ptree .iwpt-seg+.iwpt-seg{box-shadow:inset 1.5px 0 0 var(--paper)}
.iw-ptree .iwpt-seg em{font-style:normal;font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;
  color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.45);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px}
.iw-ptree .iwpt-seg.ev{box-shadow:inset 0 0 0 2px var(--gold)}
.iw-ptree .iwpt-barcap{margin-top:6px;text-align:center;font-size:12px;color:var(--slate);font-style:italic}
.iw-ptree .iwpt-event{margin-top:14px;padding:10px 14px;border-radius:6px;background:var(--paper-deep);
  border-left:2.5px solid var(--gold);font-family:var(--mono);font-size:14px;color:var(--ink)}
.iw-ptree .iwpt-event b{color:var(--gold)}
.iw-ptree .iwpt-event i{display:block;margin-top:3px;font-style:normal;font-family:var(--body);
  font-size:12.5px;color:var(--slate)}
.iw-ptree .iwpt-tab{border-collapse:collapse;width:100%;margin-top:16px;font-size:13.5px}
.iw-ptree .iwpt-tab th,.iw-ptree .iwpt-tab td{border:1px solid var(--rule);padding:6px 10px;text-align:left}
.iw-ptree .iwpt-tab thead th{background:var(--paper);font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--slate)}
.iw-ptree .iwpt-tab tbody tr{transition:opacity .18s,background .18s}
.iw-ptree .iwpt-tab tbody tr.ev{background:color-mix(in srgb,var(--gold) 9%,transparent)}
.iw-ptree .iwpt-calc,.iw-ptree .iwpt-val{font-family:var(--mono);white-space:nowrap;width:1%}
.iw-ptree .iwpt-val{text-align:right}
.iw-ptree .iwpt-tab i{font-style:normal;color:var(--slate)}
.iw-ptree .iwpt-tab tfoot th{background:var(--paper);font-family:var(--mono)}
.iw-ptree .iwpt-tab tfoot th:last-child{text-align:right}
.iw-ptree .iwpt-note{margin-top:12px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}
@media (max-width:620px){
  .iw-ptree .iwpt-seg em{display:none}
  .iw-ptree .iwpt-tab{font-size:12.5px}
  .iw-ptree .iwpt-tab th,.iw-ptree .iwpt-tab td{padding:5px 6px}
}

/* ── circuit ── */
.iw-circ .iwci-scroll{overflow-x:auto;overflow-y:hidden}
.iw-circ .iwci-svg{display:block;width:100%;min-width:400px;height:auto;margin:0 auto}
.iw-circ .iwci-g{stroke:var(--ink);stroke-width:2;fill:var(--ink);stroke-linecap:round;stroke-linejoin:round}
.iw-circ .iwci-g circle[fill="none"],.iw-circ .iwci-g path[fill="none"]{fill:none}
.iw-circ .iwci-lb{font-family:var(--mono);font-size:11px;fill:var(--ink);stroke:none;font-weight:600}
.iw-circ .iwci-in{font-family:var(--mono);font-size:11px;fill:var(--ink);stroke:none;font-weight:700}
.iw-circ .iwci-sg{font-family:var(--mono);font-size:13px;font-weight:700;fill:var(--slate);stroke:none}
.iw-circ .iwci-i{font-family:var(--mono);font-size:11px;font-style:italic;font-weight:700;fill:var(--accent);stroke:none}
.iw-circ .iwci-calc .iwci-hint{font-weight:500;color:var(--ink-soft);font-family:var(--sans);font-size:12.5px}
.iw-circ .iwci-calc{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:14px;padding-top:12px;border-top:1px solid var(--rule)}
.iw-circ .iwci-calc span{font-family:var(--mono);font-size:13px;font-weight:700}
.iw-circ .iwci-calc em{font-style:italic;color:var(--accent)}
.iw-circ .iwci-note{margin-top:10px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}

/* ── molecule ── */
.iw-mol .iwmol-wrap{overflow-x:auto}
.iw-mol .iwmol-svg{width:100%;max-width:520px;height:auto;display:block;margin:0 auto}
.iw-mol .iwmol-bg{fill:var(--paper-deep)}
.iw-mol .iwmol-el{font-family:var(--serif);font-size:20px;font-weight:700}
.iw-mol .iwmol-ch{font-family:var(--mono);font-size:11px;fill:var(--accent);font-weight:700}
.iw-mol .iwmol-lp{fill:var(--ink-soft)}
.iw-mol .iwmol-bl{font-family:var(--mono);font-size:10.5px;fill:var(--slate)}
.iw-mol .iwmol-cap{margin-top:10px;text-align:center;font-size:13px;color:var(--ink-soft);font-style:italic}

/* ── annotated scale ── */
.iw-scale .iwsc-wrap{position:relative;padding-top:6px}
/* height and --mrow are written by stackMarks(): one row per rank of labels
   that would otherwise sit on top of each other */
.iw-scale .iwsc-marks{position:relative;height:34px}
.iw-scale .iwsc-mark{position:absolute;bottom:0;transform:translateX(-50%);background:none;border:0;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;padding:0;color:var(--ink);z-index:1}
.iw-scale .iwsc-mark:hover,.iw-scale .iwsc-mark.on,.iw-scale .iwsc-mark:focus-visible{z-index:5}
.iw-scale .iwsc-mv{font-family:var(--mono);font-size:10.5px;font-weight:700;white-space:nowrap;
  background:var(--paper);border:1px solid var(--rule);border-radius:20px;padding:2px 8px}
/* the pin stays on the value; only the label rides up a row */
.iw-scale .iwsc-mark i{display:block;width:1.5px;background:var(--ink);
  height:calc(9px + var(--mrow,0) * 20px)}
.iw-scale .iwsc-mark:hover .iwsc-mv,.iw-scale .iwsc-mark.on .iwsc-mv{border-color:var(--accent);color:var(--accent)}
.iw-scale .iwsc-bar{position:relative;height:26px;border-radius:5px;overflow:hidden;background:var(--paper)}
.iw-scale .iwsc-zone{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
/* a narrow zone — the neutral band of a pH scale is only a few pixels wide —
   cuts its label cleanly instead of letting it spill over its neighbours */
.iw-scale .iwsc-zone b{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.45);white-space:nowrap;padding:0 5px;
  max-width:100%;overflow:hidden;text-overflow:ellipsis}
.iw-scale .iwsc-plain{background:var(--rule)}
.iw-scale .iwsc-axis{position:relative;height:26px;margin-top:2px}
.iw-scale .iwsc-tick{position:absolute;transform:translateX(-50%);text-align:center}
.iw-scale .iwsc-tick i{display:block;width:1px;height:5px;background:var(--rule);margin:0 auto}
.iw-scale .iwsc-tick b{display:block;font-family:var(--mono);font-size:10px;font-weight:400;color:var(--slate);white-space:nowrap}
.iw-scale .iwsc-unit{margin-top:4px;text-align:right;font-family:var(--mono);font-size:10.5px;color:var(--slate)}
.iw-scale .iwsc-detail:not(:empty){margin-top:12px;padding:11px 14px;background:var(--paper);border:1px solid var(--rule);border-radius:7px;font-size:14px;line-height:1.55}
.iw-scale .iwsc-detail b{color:var(--accent)}
.iw-scale .iwsc-detail span{font-family:var(--mono);font-size:11.5px;color:var(--slate);margin-left:6px}
.iw-scale .iwsc-note{margin-top:10px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}

/* ── cycle (circular process) ── */
.iw-cycle .iwcy-wrap{position:relative;width:100%;max-width:560px;margin:0 auto;aspect-ratio:1.5}
.iw-cycle .iwcy-svg{width:100%;height:100%;display:block;overflow:visible}
.iw-cycle .iwcy-node{cursor:pointer;transition:filter .15s}
.iw-cycle .iwcy-node:hover,.iw-cycle .iwcy-node.on{filter:brightness(1.12) drop-shadow(0 0 3px rgba(0,0,0,.3))}
.iw-cycle .iwcy-num{fill:#fff;font-family:var(--mono);font-weight:700;pointer-events:none}
.iw-cycle .iwcy-c{fill:var(--slate);font-family:var(--mono);font-size:5px;letter-spacing:.12em;text-transform:uppercase}
.iw-cycle .iwcy-lab{position:absolute;max-width:27%;background:none;border:0;
  cursor:pointer;color:var(--ink);font-family:var(--mono);font-size:11px;line-height:1.25;font-weight:600;padding:2px}
.iw-cycle .iwcy-lab:hover{color:var(--accent)}
.iw-cycle .iwcy-lab.on{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.iw-cycle .iwcy-detail:not(:empty){margin-top:14px;padding:13px 15px;background:var(--paper);border:1px solid var(--rule);border-radius:8px}
.iw-cycle .iwcy-d-h{display:flex;align-items:center;gap:9px;font-weight:700;font-size:16px}
.iw-cycle .iwcy-d-h i{flex:0 0 auto;width:21px;height:21px;border-radius:50%;color:#fff;font-family:var(--mono);font-size:11px;font-style:normal;display:flex;align-items:center;justify-content:center}
.iw-cycle .iwcy-d-b{margin-top:7px;font-size:14.5px;line-height:1.6}
.iw-cycle .iwcy-d-img{max-width:180px;float:right;margin:0 0 8px 12px;border-radius:7px;border:1px solid var(--rule)}
@media (max-width:520px){.iw-cycle .iwcy-lab{font-size:10px;width:24%}}

/* ── lab card ── */
.iw-lab{--ilab-accent:var(--accent)}
.iw-lab .ilab-head{border-bottom:2px solid var(--ilab-accent);padding-bottom:11px;margin-bottom:4px}
.iw-lab .ilab-kick{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ilab-accent)}
.iw-lab .ilab-title{margin:4px 0 0;font-size:24px;line-height:1.15;font-weight:700}
.iw-lab .ilab-metas{display:flex;flex-wrap:wrap;gap:7px 16px;margin-top:8px}
.iw-lab .ilab-meta{font-family:var(--mono);font-size:11px;color:var(--ink)}
.iw-lab .ilab-meta em{font-style:normal;color:var(--slate);letter-spacing:.08em;text-transform:uppercase;font-size:9.5px;margin-right:5px}
.iw-lab .ilab-s{margin-top:15px}
.iw-lab .ilab-s h4{margin:0 0 6px;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--slate)}
.iw-lab .ilab-s p{margin:0;font-size:15px;line-height:1.6}
.iw-lab .ilab-mats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:3px 16px;margin:0;padding:0;list-style:none}
.iw-lab .ilab-mats li{position:relative;padding-left:15px;font-size:14.5px;line-height:1.5}
.iw-lab .ilab-mats li::before{content:"";position:absolute;left:2px;top:.62em;width:5px;height:5px;border-radius:50%;background:var(--ilab-accent)}
.iw-lab .ilab-danger{padding:11px 14px;border-radius:7px;background:color-mix(in srgb,#c0392b 11%,transparent);border-left:3px solid #c0392b}
.iw-lab .ilab-danger h4{color:#c0392b}
.iw-lab .ilab-safe{margin:0;padding-left:18px;font-size:14.5px;line-height:1.55}
.iw-lab .ilab-steps{margin:0;padding-left:0;counter-reset:ilab;list-style:none}
.iw-lab .ilab-steps li{position:relative;counter-increment:ilab;padding:0 0 12px 34px;font-size:15px;line-height:1.6}
.iw-lab .ilab-steps li::before{content:counter(ilab);position:absolute;left:0;top:0;width:23px;height:23px;border-radius:50%;
  background:var(--ilab-accent);color:#fff;font-family:var(--mono);font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center}
.iw-lab .ilab-steps img{display:block;max-width:210px;margin:7px 0 0;border-radius:7px;border:1px solid var(--rule)}

/* ── data table (computed columns + stats) ── */
.iw-dtab .iwdt-intro{margin:0 0 12px;font-size:14.5px;line-height:1.55}
.iw-dtab .iwdt-scroll{overflow-x:auto}
.iw-dtab .iwdt{border-collapse:collapse;width:100%;font-size:14px}
.iw-dtab .iwdt th,.iw-dtab .iwdt td{border:1px solid var(--rule);padding:6px 9px;text-align:center}
.iw-dtab .iwdt thead th{background:var(--paper);font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;font-weight:700;vertical-align:bottom}
.iw-dtab .iwdt thead th em{display:block;font-style:normal;font-weight:400;color:var(--slate);font-size:10px}
.iw-dtab .iwdt thead th i{display:block;font-style:normal;color:var(--accent);font-size:9.5px;margin-top:2px}
.iw-dtab .iwdt td input{width:100%;min-width:56px;border:0;background:none;text-align:center;font:inherit;color:var(--ink);padding:2px;outline:none}
.iw-dtab .iwdt td input:focus{background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:4px}
.iw-dtab .iwdt .iwdt-calc{background:color-mix(in srgb,var(--gold) 12%,transparent);font-family:var(--mono);font-weight:600}
.iw-dtab .iwdt tfoot .iwdt-stat th{text-align:right;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--slate);background:none}
.iw-dtab .iwdt tfoot td{font-family:var(--mono);font-weight:700;background:var(--paper)}
.iw-dtab .iwdt-note{margin-top:10px;font-size:13px;line-height:1.5;color:var(--ink-soft)}

/* ── chemical reaction ── */
.iw-rxn .iwrx-eq{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:22px;line-height:1.5}
.iw-rxn .iwrx-sp{display:inline-flex;align-items:baseline;gap:2px}
.iw-rxn .iwrx-f sub{font-size:.62em;vertical-align:-.25em}
.iw-rxn .iwrx-f sup{font-size:.62em;vertical-align:.45em}
.iw-rxn .iwrx-c{font-weight:700;color:var(--accent);margin-right:1px}
.iw-rxn .iwrx-st{font-size:.6em;color:var(--slate);font-style:italic;margin-left:1px}
.iw-rxn .iwrx-plus{color:var(--slate)}
.iw-rxn .iwrx-arrow{display:inline-flex;flex-direction:column;align-items:center;color:var(--accent);margin:0 6px;font-size:26px;line-height:1}
.iw-rxn .iwrx-arrow em{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--slate);margin-bottom:-2px}
.iw-rxn .iwrx-coef{width:38px;font:inherit;font-size:.8em;font-weight:700;text-align:center;color:var(--accent);
  background:var(--paper);border:0;border-bottom:2px solid var(--slate);border-radius:4px 4px 0 0;padding:0 2px;outline:none}
.iw-rxn .iwrx-coef:focus{border-bottom-color:var(--accent)}
.iw-rxn .iwrx-coef.ok{border-bottom-color:#2e7d32;color:#2e7d32}
.iw-rxn .iwrx-coef.bad{border-bottom-color:#c0392b;color:#c0392b}
.iw-rxn .iwrx-bal{margin-top:16px;padding-top:13px;border-top:1px solid var(--rule)}
.iw-rxn .iwrx-atoms{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.iw-rxn .iwrx-atl{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);margin-right:4px}
.iw-rxn .iwrx-at{font-family:var(--mono);font-size:12px;padding:3px 8px;border-radius:20px;border:1px solid var(--rule)}
.iw-rxn .iwrx-at b{margin-right:6px;color:var(--ink)}
.iw-rxn .iwrx-at.ok{border-color:#2e7d32;color:#2e7d32}
.iw-rxn .iwrx-at.bad{border-color:#c0392b;color:#c0392b}
.iw-rxn .iwrx-verdict{display:inline-block;margin-top:10px;font-family:var(--mono);font-size:12px;font-weight:700}
.iw-rxn .iwrx-verdict.ok{color:#2e7d32} .iw-rxn .iwrx-verdict.bad{color:#c0392b}
.iw-rxn .iwrx-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}
.iw-rxn .iwrx-note{margin-top:12px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}

/* ── comparative timeline ── */
.iw-mtrack .iwmt-scroll{overflow-x:auto;padding-bottom:4px}
.iw-mtrack .iwmt-row{display:grid;grid-template-columns:130px 1fr;align-items:center;gap:12px;margin-bottom:7px}
.iw-mtrack .iwmt-lab{font-family:var(--mono);font-size:11px;color:var(--ink);display:flex;align-items:center;gap:7px;line-height:1.25}
.iw-mtrack .iwmt-lab i{flex:0 0 auto;width:10px;height:10px;border-radius:3px}
.iw-mtrack .iwmt-lane{position:relative;height:26px;background:var(--paper);border-radius:5px}
.iw-mtrack .iwmt-band span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.iw-mtrack .iwmt-band{position:absolute;top:3px;height:20px;border:0;border-radius:4px;cursor:pointer;overflow:hidden;
  padding:0 6px;color:#fff;font-family:var(--mono);font-size:10.5px;font-weight:600;text-align:left;white-space:nowrap;opacity:.88}
.iw-mtrack .iwmt-band:hover,.iw-mtrack .iwmt-band.on{opacity:1;box-shadow:0 0 0 2px var(--ink) inset}
.iw-mtrack .iwmt-mark{position:absolute;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;
  background:var(--mk);border:2px solid var(--paper-deep);cursor:pointer;padding:0}
.iw-mtrack .iwmt-mark:hover,.iw-mtrack .iwmt-mark.on{transform:scale(1.35)}
.iw-mtrack .iwmt-axis .iwmt-lane{background:none;height:24px;border-top:1px solid var(--rule)}
.iw-mtrack .iwmt-tick{position:absolute;top:0;transform:translateX(-50%)}
.iw-mtrack .iwmt-tick i{display:block;width:1px;height:5px;background:var(--rule);margin:0 auto}
.iw-mtrack .iwmt-tick b{display:block;font-family:var(--mono);font-size:10px;color:var(--slate);font-weight:400;white-space:nowrap}
.iw-mtrack .iwmt-detail:not(:empty){margin-top:14px;padding:12px 15px;background:var(--paper);border:1px solid var(--rule);border-radius:8px}
.iw-mtrack .iwmt-d-h{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--slate)}
.iw-mtrack .iwmt-d-h b{color:var(--accent)}
.iw-mtrack .iwmt-d-t{font-size:16px;font-weight:700;margin-top:3px}
.iw-mtrack .iwmt-d-b{margin-top:6px;font-size:14.5px;line-height:1.6}
.iw-mtrack .iwmt-d-img{max-width:180px;float:right;margin:0 0 8px 12px;border-radius:7px;border:1px solid var(--rule)}
@media (max-width:560px){.iw-mtrack .iwmt-row{grid-template-columns:88px 1fr;gap:8px}}

/* ── document study ── */
.iw-src .iwsrc-kick{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}
.iw-src .iwsrc-title{margin:4px 0 13px;font-size:22px;line-height:1.2;font-weight:700}
.iw-src .iwsrc-doc{background:var(--paper);border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:0 7px 7px 0;padding:15px 18px}
.iw-src .iwsrc-lines{margin:0;padding-left:30px;counter-reset:none}
.iw-src .iwsrc-lines li{font-size:15px;line-height:1.75;padding-left:4px}
.iw-src .iwsrc-lines li::marker{font-family:var(--mono);font-size:10.5px;color:var(--slate)}
.iw-src .iwsrc-text p{margin:0 0 .6em;font-size:15px;line-height:1.7}
.iw-src .iwsrc-fig{margin:0 0 10px}
.iw-src .iwsrc-fig img{max-width:100%;height:auto;display:block;border-radius:6px}
.iw-src .iwsrc-fig figcaption{margin-top:6px;font-size:12.5px;color:var(--slate);font-style:italic}
.iw-src .iwsrc-cite{margin-top:11px;padding-top:9px;border-top:1px dotted var(--rule);font-family:var(--mono);font-size:11px;color:var(--slate);text-align:right}
.iw-src .iwsrc-qs{margin-top:18px}
.iw-src .iwsrc-qs h4{margin:0 0 10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--slate)}
.iw-src .iwsrc-qs>ol{margin:0;padding-left:22px}
.iw-src .iwsrc-q{margin-bottom:15px}
.iw-src .iwsrc-q::marker{font-family:var(--mono);font-weight:700;color:var(--accent)}
.iw-src .iwsrc-qt{font-size:15px;line-height:1.55;font-weight:600}
.iw-src .iwsrc-pts{float:right;font-family:var(--mono);font-size:10.5px;color:var(--slate);font-weight:400}
.iw-src .iwsrc-hint{font-size:13px;color:var(--slate);font-style:italic;margin-top:2px}
.iw-src .iwsrc-ans{display:block;width:100%;margin-top:7px;padding:8px 10px;font:inherit;font-size:14px;
  background:var(--paper);color:var(--ink);border:1px solid var(--rule);border-radius:6px;resize:vertical}
.iw-src .iwsrc-ans:focus{outline:none;border-color:var(--accent)}
.iw-src .iwsrc-rev{margin-top:7px}
.iw-src .iwsrc-model{margin-top:8px;padding:10px 12px;border-radius:6px;font-size:14px;line-height:1.6;
  background:color-mix(in srgb,#2e7d32 10%,transparent);border-left:3px solid #2e7d32}

/* ── tree (dynasty / classification) ── */
.iw-tree .iwtr-scroll{overflow-x:auto;padding:4px 0 8px}
.iw-tree ul{list-style:none;margin:0;padding:0;display:flex;justify-content:center;gap:14px}
.iw-tree .iwtr>li{padding-top:0}
.iw-tree li{position:relative;display:flex;flex-direction:column;align-items:center;padding-top:20px}
.iw-tree .iwtr>li:only-child{padding-top:0}
.iw-tree li>ul{margin-top:20px;position:relative}
/* connectors: a stem up from each child, and a bar spanning the siblings */
.iw-tree li::before{content:"";position:absolute;top:0;left:50%;width:1.5px;height:20px;background:var(--rule)}
.iw-tree .iwtr>li::before{display:none}
.iw-tree li>ul::before{content:"";position:absolute;top:-20px;left:50%;width:1.5px;height:20px;background:var(--rule)}
.iw-tree li>ul>li:first-child::after,.iw-tree li>ul>li:last-child::after{content:"";position:absolute;top:0;height:1.5px;background:var(--rule)}
.iw-tree li>ul>li:first-child::after{left:50%;right:-7px}
.iw-tree li>ul>li:last-child::after{right:50%;left:-7px}
.iw-tree li>ul>li:only-child::after{display:none}
.iw-tree .iwtr-node{--itr:var(--accent);display:flex;flex-direction:column;align-items:center;gap:2px;
  background:var(--paper);border:1px solid var(--rule);border-top:3px solid var(--itr);border-radius:7px;
  padding:8px 12px;min-width:96px;max-width:150px;text-align:center}
.iw-tree .iwtr-node.iwtr-has{cursor:pointer}
.iw-tree .iwtr-node.iwtr-has:hover{border-color:var(--itr)}
.iw-tree .iwtr-node.on{box-shadow:0 0 0 2px var(--itr)}
.iw-tree .iwtr-node img{width:44px;height:44px;object-fit:cover;border-radius:50%;margin-bottom:2px}
.iw-tree .iwtr-l{font-size:14px;font-weight:700;line-height:1.2}
.iw-tree .iwtr-s{font-family:var(--mono);font-size:10px;color:var(--slate);line-height:1.25}
.iw-tree .iwtr-compact .iwtr-node{min-width:0;padding:5px 9px}
.iw-tree .iwtr-compact .iwtr-l{font-size:12.5px}
.iw-tree .iwtr-detail:not(:empty){margin-top:14px;padding:12px 15px;background:var(--paper);border:1px solid var(--rule);border-radius:8px}
.iw-tree .iwtr-d-h{font-size:16px;font-weight:700}
.iw-tree .iwtr-d-h em{font-style:normal;font-family:var(--mono);font-size:11px;color:var(--slate);margin-left:6px}
.iw-tree .iwtr-d-b{margin-top:6px;font-size:14.5px;line-height:1.6}

/* ── compare (criteria table / Venn) ── */
.iw-cmp .iwcmp-scroll{overflow-x:auto}
.iw-cmp .iwcmp-t{border-collapse:collapse;width:100%;font-size:14.5px}
.iw-cmp .iwcmp-t th,.iw-cmp .iwcmp-t td{border:1px solid var(--rule);padding:9px 12px;vertical-align:top}
.iw-cmp .iwcmp-t thead th{background:var(--paper);text-align:center;font-family:var(--mono);font-size:12px;
  letter-spacing:.08em;text-transform:uppercase;border-top:3px solid var(--sc,var(--accent));color:var(--ink)}
.iw-cmp .iwcmp-t tbody th{text-align:left;width:1%;white-space:nowrap;font-family:var(--mono);font-size:11px;
  letter-spacing:.05em;text-transform:uppercase;color:var(--slate);font-weight:600;background:var(--paper)}
.iw-cmp .iwcmp-t tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--ink) 3%,transparent)}
.iw-cmp .iwcmp-venn{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0}
.iw-cmp .iwcmp-v{padding:16px 14px;min-height:120px}
.iw-cmp .iwcmp-v h4{margin:0 0 8px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;text-align:center}
.iw-cmp .iwcmp-v ul{margin:0;padding-left:17px;font-size:14px;line-height:1.55}
.iw-cmp .iwcmp-vl,.iw-cmp .iwcmp-vr{background:color-mix(in srgb,var(--vc) 15%,transparent)}
.iw-cmp .iwcmp-vl{border-radius:120px 0 0 120px}
.iw-cmp .iwcmp-vr{border-radius:0 120px 120px 0}
.iw-cmp .iwcmp-vl h4{color:var(--vc)} .iw-cmp .iwcmp-vr h4{color:var(--vc)}
.iw-cmp .iwcmp-vm{background:color-mix(in srgb,var(--ink) 9%,transparent)}
.iw-cmp .iwcmp-note{margin-top:12px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}
@media (max-width:560px){.iw-cmp .iwcmp-venn{grid-template-columns:1fr}
  .iw-cmp .iwcmp-vl,.iw-cmp .iwcmp-vr{border-radius:10px}}

/* ── before / after slider ── */
.iw-ba .iwba-wrap{position:relative;overflow:hidden;border-radius:8px;user-select:none;touch-action:none;line-height:0;cursor:ew-resize}
.iw-ba .iwba-img{width:100%;height:auto;display:block}
/* The base image sizes the box; the top one is laid out over it at exactly the
   same size and revealed with clip-path. Sizing the top image by height (the
   obvious approach) makes images of a different aspect ratio render at a
   different width, so the two halves of the scene no longer line up. */
.iw-ba .iwba-clip{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--p)) 0 0)}
.iw-ba .iwba-clip .iwba-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.iw-ba .iwba-bar{position:absolute;top:0;bottom:0;left:var(--p);width:2px;background:#fff;box-shadow:0 0 5px rgba(0,0,0,.5);pointer-events:none}
.iw-ba .iwba-knob{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:30px;height:30px;border-radius:50%;
  background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.4)}
.iw-ba .iwba-knob::before{content:"‹ ›";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:#1a2238;font-size:14px;font-weight:700;letter-spacing:-1px}
.iw-ba .iwba-tag{position:absolute;bottom:10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;
  background:rgba(0,0,0,.62);color:#fff;padding:4px 9px;border-radius:20px;line-height:1.3;pointer-events:none}
.iw-ba .iwba-tl{left:10px} .iw-ba .iwba-tr{right:10px}
.iw-ba .iwba-range{position:absolute;inset:auto 0 0 0;width:100%;opacity:0;height:34px;margin:0;cursor:ew-resize}
.iw-ba .iwba-cap{margin-top:10px;font-size:13.5px;line-height:1.5;color:var(--ink-soft)}

/* ── population pyramid ── */
.iw-pyramid .iwpy-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);padding-bottom:9px;border-bottom:1px solid var(--rule);flex-wrap:wrap}
.iw-pyramid .iwpy-side{display:inline-flex;align-items:center;gap:7px}
.iw-pyramid .iwpy-side i{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.iw-pyramid .iwpy-side b{color:var(--ink);font-weight:700}
.iw-pyramid .iwpy-scale{opacity:.7;font-size:10px}
.iw-pyramid .iwpy-body{margin-top:7px}
.iw-pyramid .iwpy-row{display:grid;grid-template-columns:1fr minmax(64px,auto) 1fr;align-items:center;gap:8px;padding:2px 0;border-radius:5px}
.iw-pyramid .iwpy-row.iwpy-has{cursor:pointer}
.iw-pyramid .iwpy-row.iwpy-has:hover{background:color-mix(in srgb,var(--ink) 7%,transparent)}
.iw-pyramid .iwpy-row.on{background:color-mix(in srgb,var(--ink) 11%,transparent)}
.iw-pyramid .iwpy-wing{display:flex;align-items:center;gap:8px;min-width:0}
.iw-pyramid .iwpy-l{flex-direction:row-reverse}
.iw-pyramid .iwpy-bar{display:block;height:15px;width:0;border-radius:3px;transition:width .9s cubic-bezier(.22,.61,.36,1);min-width:1px}
.iw-pyramid .iwpy-v{font-family:var(--mono);font-size:11px;color:var(--slate);font-weight:600;white-space:nowrap;flex:0 0 auto}
.iw-pyramid .iwpy-ax{font-family:var(--mono);font-size:11px;font-weight:700;text-align:center;color:var(--ink);white-space:nowrap;padding:0 4px}
.iw-pyramid .iwpy-note{margin-top:12px;font-size:14px;line-height:1.55;min-height:0}
.iw-pyramid .iwpy-note:not(:empty){min-height:1.4em;padding:10px 12px;border-left:3px solid var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent);border-radius:0 5px 5px 0}
.iw-pyramid .iwpy-src{margin-top:12px;font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;color:var(--slate)}
@media (max-width:520px){.iw-pyramid .iwpy-v{display:none}.iw-pyramid .iwpy-row{gap:5px}}

/* ── historical figure panel ── */
.iw-person{--ipe-accent:var(--accent)}
.iw-person .ipe-head{display:flex;gap:20px;align-items:flex-start}
.iw-person .ipe-por{flex:0 0 34%;max-width:200px}
.iw-person .ipe-por img{width:100%;height:auto;display:block;border-radius:10px;border:1px solid var(--rule)}
.iw-person .ipe-por-cap{display:block;margin-top:6px;font-family:var(--mono);font-size:10px;letter-spacing:.05em;color:var(--slate);line-height:1.4}
.iw-person .ipe-id{flex:1;min-width:0}
.iw-person .ipe-kicker{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ipe-accent);margin-bottom:5px}
.iw-person .ipe-name{margin:0;font-size:27px;line-height:1.12;font-weight:700}
.iw-person .ipe-life{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;color:var(--slate);margin-top:5px}
.iw-person .ipe-sum{margin:11px 0 0;font-size:15px;line-height:1.6}
.iw-person .ipe-quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:2px 18px;margin:15px 0 0;padding-top:12px;border-top:1px solid var(--rule)}
.iw-person .ipe-q{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px dotted var(--rule)}
.iw-person .ipe-q dt{margin:0;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--slate)}
.iw-person .ipe-q dd{margin:0;font-weight:600;text-align:right;font-size:14px}
.iw-person .ipe-quote{margin:20px 0 0;padding:14px 18px;border-left:3px solid var(--ipe-accent);background:color-mix(in srgb,var(--ipe-accent) 8%,transparent);border-radius:0 6px 6px 0}
.iw-person .ipe-quote blockquote{margin:0;font-size:16px;line-height:1.55;font-style:italic}
.iw-person .ipe-quote figcaption{margin-top:7px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--slate)}
.iw-person .ipe-cols{display:grid;grid-template-columns:1fr;gap:20px;margin-top:20px}
.iw-person .ipe-cols:has(.ipe-secs):has(.ipe-dates){grid-template-columns:1fr 230px}
.iw-person .ipe-sec{border-top:1px solid var(--rule)}
.iw-person .ipe-sec:last-child{border-bottom:1px solid var(--rule)}
.iw-person .ipe-sec-h{display:flex;width:100%;align-items:center;justify-content:space-between;gap:10px;background:none;border:0;padding:12px 2px;cursor:pointer;color:inherit;font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;text-align:left}
.iw-person .ipe-sec-h:hover{color:var(--ipe-accent)}
.iw-person .ipe-chev{width:9px;height:9px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translate(-2px,-2px);transition:transform .2s;flex:0 0 auto}
.iw-person .ipe-sec.open .ipe-chev{transform:rotate(-135deg) translate(-2px,-2px)}
.iw-person .ipe-sec-b{display:grid;grid-template-rows:0fr;transition:grid-template-rows .28s ease}
.iw-person .ipe-sec.open .ipe-sec-b{grid-template-rows:1fr}
/* overflow:hidden is what makes the 0fr→1fr accordion animate; min-width:0 stops
   a long unbreakable run of text pushing the grid track wider than its column */
.iw-person .ipe-sec-in{overflow:hidden;min-width:0;overflow-wrap:anywhere;
  font-size:15px;line-height:1.62}
.iw-person .ipe-sec.open .ipe-sec-in{padding-bottom:14px}
.iw-person .ipe-sec-img{float:right;width:38%;max-width:170px;margin:0 0 10px 14px;border-radius:8px;border:1px solid var(--rule)}
.iw-person .ipe-dates{align-self:start}
.iw-person .ipe-dates-h{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--slate);margin-bottom:10px}
.iw-person .ipe-dates ol{list-style:none;margin:0;padding:0 0 0 15px;border-left:2px solid var(--rule)}
.iw-person .ipe-dates li{position:relative;padding:0 0 13px;font-size:14px;line-height:1.45}
.iw-person .ipe-dates li::before{content:"";position:absolute;left:-21px;top:6px;width:8px;height:8px;border-radius:50%;background:var(--ipe-accent);border:2px solid var(--paper-deep)}
.iw-person .ipe-dates li b{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ipe-accent)}
@media (max-width:640px){
  .iw-person .ipe-head{flex-direction:column}
  .iw-person .ipe-por{flex:none;max-width:170px}
  .iw-person .ipe-cols:has(.ipe-secs):has(.ipe-dates){grid-template-columns:1fr}
  .iw-person .ipe-sec-img{float:none;width:100%;max-width:none;margin:0 0 10px}
}

.iw-diagram .iwd-wrap{position:relative;display:inline-block;max-width:100%}
.iw-diagram .iwd-img{display:block;max-width:100%;height:auto;border-radius:8px}
.iw-diagram .iwd-empty{display:block;width:100%;min-height:300px;border:2px dashed var(--rule);border-radius:8px;background:var(--paper-deep)}
.iw-diagram .iwd-empty::after{content:"Image à ajouter";position:absolute;left:50%;bottom:13px;transform:translateX(-50%);font-family:var(--mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--slate);opacity:.8}
.iw-diagram .iwd-pin{position:absolute;transform:translate(-50%,-50%);width:26px;height:26px;border-radius:50%;border:2px solid #fff;background:var(--accent);color:#fff;font-family:var(--mono);font-size:12px;font-weight:700;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.4);transition:transform .15s}
.iw-diagram .iwd-pin:hover,.iw-diagram .iwd-pin.on{transform:translate(-50%,-50%) scale(1.22);background:var(--gold);color:#1a1a1a}
.iw-diagram .iwd-cap{margin-top:14px;font-size:15px;line-height:1.55;min-height:1.4em}
.iw-diagram .iwd-cap b{color:var(--accent)}
.iw-diagram .iwd-desc{color:var(--ink-soft);margin-top:3px}
.iw-diagram .iwd-pop{position:absolute;transform:translate(-50%,-115%);background:var(--paper-deep);border:1px solid var(--rule);border-radius:10px;padding:11px 30px 11px 13px;box-shadow:0 8px 26px rgba(0,0,0,.35);min-width:130px;max-width:230px;font-size:14px;z-index:5}
.iw-diagram .iwd-pop b{color:var(--accent)}
.iw-diagram .iwd-pop-x{position:absolute;top:4px;right:6px;background:none;border:0;color:var(--slate);font-size:18px;line-height:1;cursor:pointer}
/* periodic table */
.iw-periodic .iwp-scroll{overflow-x:auto;scrollbar-width:thin}
.iw-periodic .iwp-grid{display:grid;grid-template-columns:repeat(18,minmax(30px,1fr));grid-auto-rows:1fr;gap:2px;min-width:560px}
.iw-periodic .iwp-el{position:relative;aspect-ratio:1/1;border:0;border-radius:3px;cursor:pointer;color:#1a1a1a;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1px;overflow:hidden;line-height:1;transition:transform .1s}
.iw-periodic .iwp-el:hover,.iw-periodic .iwp-el.on{transform:scale(1.12);z-index:2;box-shadow:0 3px 12px rgba(0,0,0,.45)}
.iw-periodic .iwp-z{font-family:var(--mono);font-size:7px;align-self:flex-start;padding-left:2px;opacity:.8}
.iw-periodic .iwp-sym{font-weight:700;font-size:14px}
.iw-periodic .iwp-nm{font-size:5.5px;text-align:center;white-space:nowrap;overflow:hidden;max-width:100%;text-overflow:ellipsis}
@media(max-width:560px){.iw-periodic .iwp-nm{display:none}}
.iw-periodic .iwp-el.iwp-dim{opacity:.12;filter:grayscale(.7)}
.iw-periodic .iwp-el.iwp-dim:hover,.iw-periodic .iwp-el.iwp-dim.on{opacity:1;filter:none}
.iw-periodic .iwp-info{display:flex;gap:20px;align-items:center;margin-top:16px;border-top:1px solid var(--rule);padding-top:16px;min-height:64px;color:var(--ink-soft);font-size:14px;flex-wrap:wrap}
.iw-periodic .iwp-i-atom{flex:0 0 180px}
.iw-periodic .iwp-atom{width:180px;height:180px;display:block}
.iw-periodic .iwp-ring{stroke:var(--rule);stroke-width:1;opacity:.55}
.iw-periodic .iwp-nuc{fill:var(--accent,#c0392b)}
.iw-periodic .iwp-nuc-t{fill:#fff;font-family:var(--mono);font-size:13px;font-weight:700}
.iw-periodic .iwp-elec{fill:var(--accent,#c0392b)}
.iw-periodic .iwp-orbit{transform-origin:100px 100px;animation:iwptSpin linear infinite}
@keyframes iwptSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.iw-periodic .iwp-orbit{animation:none}}
.iw-periodic .iwp-i-detail{flex:1 1 260px;min-width:240px}
.iw-periodic .iwp-i-name{font-family:var(--serif);font-size:22px;font-weight:600;color:var(--ink)}
.iw-periodic .iwp-i-name span{font-family:var(--mono);font-size:15px;color:var(--ink-soft);font-weight:400}
.iw-periodic .iwp-i-cat{font-size:13px;font-weight:600;margin:2px 0 10px}
.iw-periodic .iwp-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;margin:0}
.iw-periodic .iwp-f{margin:0}
.iw-periodic .iwp-f dt{font-size:11px;text-transform:uppercase;letter-spacing:.04em;opacity:.7}
.iw-periodic .iwp-f dd{margin:1px 0 0;font-size:14px;color:var(--ink)}
.iw-periodic .iwp-f dd sup{font-size:.7em}
@media(max-width:520px){.iw-periodic .iwp-facts{grid-template-columns:1fr}}
/* region popup */
:root{--iwm-hi:#12151c;--iwm-qblank:#cfd3da;--iwm-onion-stroke:#2f4a37}
html.dark{--iwm-hi:#f4f7ff;--iwm-qblank:#4a5058;--iwm-onion-stroke:#8fc7a2}

/* ── map quiz mode ── */
  border:0;border-bottom:2px solid var(--slate);border-radius:3px 3px 0 0;padding:2px 5px;min-width:64px;outline:none}
  box-shadow:0 1px 6px rgba(0,0,0,.22)}
.iwm-qbtn{font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;
  background:none;color:var(--slate);border:1px solid var(--rule);border-radius:6px;padding:8px 13px;cursor:pointer}
.iwm-qbtn:hover{color:var(--ink);border-color:var(--slate)}
/* only un-named shapes get the lone hover tint — a named part is highlighted as a
/* legend: proportional-symbol key — nested rings + leader lines out to labels */
/* a second map opened inside one region of the first */
/* a solid accent disc with a pale plus: it has to read on land, on sea and
   through whatever proportional circle happens to sit under it */
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.45));transition:transform .18s}
/* the surrounding country stays as faint context; at this zoom a neighbouring
   region is an enormous shape, so it has to be very quiet indeed */
/* the parent's own names and overlays would be blown up several times over —
   is not decoration: without it this loses on specificity to the :not() rule
   above and the labels only fade. */
  text-transform:uppercase;cursor:pointer;padding:5px 11px;border-radius:20px;
  border:1px solid var(--rule);background:var(--paper);color:var(--ink);
  box-shadow:0 2px 8px rgba(0,0,0,.18)}
/* one crumb per level open, so three maps deep is still legible */
  background:var(--paper);padding:3px 10px;border-radius:14px;box-shadow:0 2px 8px rgba(0,0,0,.14)}
  border:0;background:none;padding:1px 2px;color:var(--slate);cursor:pointer;border-radius:4px}
  font-family:var(--mono);font-size:11px;line-height:1.2;color:var(--ink-soft)}

/* legend: optional title + category groups */

/* matching */
.iwx-grid{display:flex;flex-direction:column;gap:10px}
.iwx-col{display:flex;flex-direction:column;gap:10px}
.iwx-slot{display:flex;align-items:center;gap:14px;padding:10px 12px;border:1px solid var(--rule);border-radius:8px;background:var(--paper);cursor:pointer;transition:border-color .15s,background .15s}
.iwx-slot.ok{border-color:#3a8a5a;background:rgba(125,196,150,.14)}.iwx-slot.no{border-color:var(--accent);background:rgba(214,120,112,.12)}
.iwx-slot.over{border-color:var(--gold);background:rgba(201,160,84,.12);box-shadow:0 0 0 2px rgba(201,160,84,.25)}
.iwx-key{font-weight:600;flex:1;font-size:16px;display:flex;align-items:center;gap:10px}
.iwx-drop{flex:0 0 44%;min-height:54px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--rule);border-radius:7px;padding:6px;background:var(--paper-deep)}
.iwx-slot.over .iwx-drop{border-color:var(--gold)}
.iwx-ph{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--slate)}
.iwx-bankwrap{margin-top:18px}
.iwx-banklabel{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--slate);margin-bottom:9px}
.iwx-bank{display:flex;flex-wrap:wrap;gap:9px;min-height:58px;padding:10px;border:1px dashed var(--rule);border-radius:8px;background:var(--paper)}
.iwx-tile{display:inline-flex;align-items:center;gap:9px;font-size:15px;text-align:left;padding:9px 13px;border:1px solid var(--rule);border-radius:7px;background:var(--paper);cursor:grab;font-family:var(--serif);color:var(--ink);transition:box-shadow .12s,transform .12s,opacity .12s}
.iwx-drop .iwx-tile{margin:0;background:var(--paper);border-color:var(--accent)}
.iwx-tile.sel{border-color:var(--gold);box-shadow:0 0 0 2px rgba(201,160,84,.3)}
.iwx-tile.dragging{opacity:.45;cursor:grabbing}
.iwx-tile:active{cursor:grabbing}
.iwx-img{display:block;max-width:104px;max-height:74px;width:auto;height:auto;border-radius:5px;object-fit:cover}
.iwx-key .iwx-img{max-width:120px;max-height:80px}
.iwx-actions{margin-top:16px;display:flex;align-items:center;gap:14px}
.iwx-msg{font-family:var(--mono);font-size:12px}.iwx-msg.ok{color:#3a8a5a}.iwx-msg.no{color:var(--accent)}
@media(max-width:600px){.iwx-slot{flex-wrap:wrap}.iwx-drop{flex-basis:100%}}

/* math */
.iw-math{margin:30px 0;overflow:visible}.iw-math-display{text-align:center}
.iw-math math{font-size:1.35em;max-width:100%}

/* poll */
.iwp-opts{display:flex;flex-direction:column;gap:9px}
.iwp-opt{position:relative;text-align:left;padding:13px 16px;border:1px solid var(--rule);border-radius:7px;background:var(--paper);cursor:pointer;font-family:var(--serif);font-size:16px;color:var(--ink);overflow:hidden}
.iwp-opt:hover:not(.done){border-color:var(--accent)}
.iwp-opt.done{cursor:default}
.iwp-bar{position:absolute;left:0;top:0;bottom:0;background:rgba(140,47,42,.16);z-index:0;transition:width .5s}
.iwp-opt.mine .iwp-bar{background:rgba(140,47,42,.30)}
.iwp-l,.iwp-pct{position:relative;z-index:1}.iwp-pct{float:right;font-family:var(--mono);font-size:13px;color:var(--slate)}
body[dir="rtl"] .iwp-pct{float:left}
.iwp-foot{font-family:var(--mono);font-size:11px;color:var(--slate);margin-top:12px;letter-spacing:.06em}

/* quiz */
.iwq-q{padding:16px 0;border-bottom:1px solid var(--rule)}.iwq-q:last-of-type{border-bottom:0}
.iwq-qt{font-weight:600;font-size:18px;margin-bottom:10px}
.iwq-opt{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:16px;cursor:pointer;color:var(--ink-soft)}
.iwq-opt input{accent-color:var(--accent);width:17px;height:17px}
.iwq-q.ok .iwq-qt{color:#3a8a5a}.iwq-q.no .iwq-qt{color:var(--accent)}
.iwq-img{display:block;max-width:100%;max-height:320px;height:auto;border-radius:7px;border:1px solid var(--rule);margin:4px 0 12px}
.iwq-body{margin-top:4px}
.iwq-cloze{font-size:17px;line-height:2.15}
.iwq-blank,.iwq-cell{font-family:var(--mono);font-size:14px;padding:5px 9px;border:1px solid var(--rule);border-radius:6px;background:var(--paper);color:var(--ink);outline:none}
.iwq-blank{margin:0 3px}
.iwq-blank:focus,.iwq-cell:focus{border-color:var(--gold)}
select.iwq-blank,select.iwq-cell{font-family:var(--serif);font-size:15px}
.iwq-blank.bk-ok,.iwq-cell.bk-ok{border-color:#3a8a5a;background:rgba(125,196,150,.18)}
.iwq-blank.bk-no,.iwq-cell.bk-no{border-color:var(--accent);background:rgba(214,120,112,.16)}
.iwq-table{border-collapse:collapse;width:100%;margin:4px 0}
.iwq-table th,.iwq-table td{border:1px solid var(--rule);padding:8px 10px;text-align:left;vertical-align:middle}
.iwq-table th{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);background:var(--paper)}
.iwq-table .iwq-cell,.iwq-table select.iwq-cell{width:100%}
.iwq-explain{font-size:14px;line-height:1.55;color:var(--slate);background:var(--paper);border-left:3px solid var(--gold);padding:10px 14px;border-radius:4px;margin-top:10px}
.iwq-actions{margin-top:16px;display:flex;align-items:center;gap:14px}
.iwq-score{font-family:var(--mono);font-size:13px}.iwq-score.ok{color:#3a8a5a}.iwq-score.no{color:var(--accent)}

/* code + live preview */
.iw-code{padding:0;overflow:hidden}
.iwco-head{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;background:var(--ink);color:var(--paper)}
.iwco-lang{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;opacity:.8}
.iwco-head .iw-btn{padding:6px 12px}
.iwco-body{display:grid;grid-template-columns:1fr 1fr;min-height:240px}
.iw-code.stack .iwco-body{grid-template-columns:1fr}
.iwco-editor{position:relative;background:#0f1117;overflow:auto}
.iwco-hl,.iwco-ta{margin:0;padding:16px;font-family:var(--mono);font-size:13px;line-height:1.55;white-space:pre;tab-size:2;border:0}
.iwco-hl{color:#e6e6e6;min-height:240px}
.iwco-ta{position:absolute;inset:0;color:transparent;background:transparent;caret-color:#fff;resize:none;outline:none;overflow:hidden}
.iwco-hl .hl-k{color:#c792ea}.iwco-hl .hl-s{color:#c3e88d}.iwco-hl .hl-c{color:#6b7089;font-style:italic}
.iwco-hl .hl-n{color:#f78c6c}.iwco-hl .hl-b{color:#82aaff}
.iwco-acts{display:flex;gap:8px;align-items:center}
.iwco-head .iwco-reset{background:none;border-color:rgba(255,255,255,.28);color:inherit;opacity:.75}
.iwco-head .iwco-reset:hover{opacity:1}
iframe.iwco-out{border:0;border-left:1px solid var(--rule);background:#fff;width:100%;min-height:240px}
/* Python has no page to render, so the right-hand pane is a terminal */
.iwco-term{display:flex;flex-direction:column;min-width:0;min-height:240px;
  border-left:1px solid var(--rule);background:#0b0d13}
.iwco-termhead{padding:7px 16px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:#6b7089;border-bottom:1px solid rgba(255,255,255,.07)}
.iwco-term.bad .iwco-termhead{color:#ff8a80}
pre.iwco-out{flex:1;margin:0;padding:14px 16px;min-height:0;overflow:auto;border:0;background:transparent;
  font-family:var(--mono);font-size:13px;line-height:1.6;color:#d7dbe6;white-space:pre-wrap;word-break:break-word}
.iwco-err{margin:0;padding:10px 16px;border-top:1px solid rgba(255,138,128,.35);
  background:rgba(255,138,128,.10);color:#ff8a80;font-family:var(--mono);font-size:12.5px;line-height:1.55;
  white-space:pre-wrap}
.iw-code.stack iframe.iwco-out,.iw-code.stack .iwco-term{border-left:0;border-top:1px solid var(--rule)}
@media(max-width:600px){.iwco-body{grid-template-columns:1fr}
  iframe.iwco-out,.iwco-term{border-left:0;border-top:1px solid var(--rule)}}

/* reveal box (collapse / flip / scratch) */
.iw-reveal{overflow:visible}
.iwr-head{display:flex;align-items:center;gap:10px;width:100%;text-align:left;font-family:var(--serif);font-size:18px;font-weight:600;color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:8px;padding:14px 16px;cursor:pointer}
.iwr-head:hover{border-color:var(--accent)}
.iwr-chev{margin-left:auto;color:var(--accent);transition:transform .2s}
.iw-reveal.on .iwr-chev{transform:rotate(180deg)}
.iwr-body{font-size:16px;line-height:1.6;color:var(--ink-soft);padding:14px 16px;border:1px solid var(--rule);border-top:0;border-radius:0 0 8px 8px;background:var(--paper-deep)}
.iwr-body[hidden]{display:none}
/* flip */
.iwr-flip{perspective:1200px;cursor:pointer;min-height:150px}
.iwr-fi{position:relative;width:100%;height:100%;min-height:150px;transition:transform .55s;transform-style:preserve-3d}
.iw-reveal .iwr-flip.on .iwr-fi{transform:rotateY(180deg)}
.iwr-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;border-radius:10px;font-size:19px;line-height:1.5}
.iwr-front{background:var(--accent);color:#fff;font-weight:600}
.iwr-back{background:var(--paper-deep);color:var(--ink);border:1px solid var(--rule);transform:rotateY(180deg)}
/* scratch */
.iwr-scratch{position:relative;min-height:150px;border-radius:10px;overflow:hidden;border:1px solid var(--rule)}
.iwr-under{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;background:var(--paper-deep);color:var(--ink);font-size:19px;line-height:1.5}
.iwr-cv{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none}
.iwr-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;font-family:var(--mono);font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:#fff;transition:opacity .3s}

/* ── annotated text ── */
.iw-ann .iwann-kick{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.iw-ann .iwann-title{font-family:var(--serif);font-size:22px;margin:0 0 12px}
.iw-ann .iwann-doc{background:var(--paper-deep);border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:8px;padding:16px 20px}
.iw-ann .iwann-text p{margin:0 0 .7em;line-height:1.75}
.iw-ann .iwann-text p:last-child{margin-bottom:0}
.iw-ann .iwann-lines{margin:0;padding-left:2.2em;line-height:1.85}
.iw-ann .iwann-lines li{padding-left:4px}
.iw-ann .iwann-lines li::marker{font-family:var(--mono);font-size:11px;color:var(--slate)}
.iw-ann .iwann-cite{margin-top:12px;padding-top:9px;border-top:1px dashed var(--rule);font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;color:var(--slate)}
.iw-ann mark.iwann-m{background:color-mix(in srgb,var(--am) 22%,transparent);color:inherit;border-bottom:2px solid var(--am);
  border-radius:3px 3px 0 0;padding:1px 1px 0;cursor:pointer;transition:background .15s}
.iw-ann mark.iwann-m:hover,.iw-ann mark.iwann-m.on{background:color-mix(in srgb,var(--am) 42%,transparent)}
.iw-ann mark.iwann-m sup{font-family:var(--mono);font-size:9.5px;font-weight:700;color:var(--am);margin-left:2px;vertical-align:super}
.iw-ann .iwann-notes{margin-top:16px}
.iw-ann .iwann-notes h4{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--slate);margin:0 0 8px}
.iw-ann .iwann-notes ol{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.iw-ann .iwann-n{display:flex;gap:11px;align-items:flex-start;padding:9px 12px;border:1px solid var(--rule);
  border-left:3px solid var(--am);border-radius:7px;background:var(--paper);cursor:pointer;transition:background .15s}
.iw-ann .iwann-n:hover,.iw-ann .iwann-n.on{background:var(--paper-deep)}
.iw-ann .iwann-n>b{font-family:var(--mono);font-size:11px;font-weight:700;color:#fff;background:var(--am);
  min-width:19px;height:19px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:0 0 auto;margin-top:2px}
.iw-ann .iwann-lab{font-weight:600;font-size:14.5px}
.iw-ann .iwann-note{color:var(--ink-soft);font-size:14px;line-height:1.6;margin-top:2px}
.iw-ann .iwann-warn{margin-top:10px;font-size:13px;color:var(--accent)}
.iw-ann .iwann-foot{margin-top:12px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── Punnett square ── */
.iw-pun .iwpun-intro{font-size:14.5px;color:var(--ink-soft);margin-bottom:12px}
.iw-pun .iwpun-scroll{overflow-x:auto;overflow-y:hidden}
.iw-pun .iwpun-t{border-collapse:separate;border-spacing:4px;margin:0 auto;font-family:var(--mono)}
.iw-pun .iwpun-t th{background:var(--paper-deep);border:1px solid var(--rule);border-radius:6px;
  padding:9px 14px;font-size:15px;font-weight:700;color:var(--accent);min-width:56px}
.iw-pun .iwpun-corner{background:transparent;border:0;position:relative;min-width:104px;height:52px}
.iw-pun .iwpun-corner span{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--slate);font-weight:400;line-height:1.5;text-align:left}
.iw-pun .iwpun-corner span:first-child{text-align:right}
.iw-pun .iwpun-t td{border:1px solid var(--rule);border-radius:6px;padding:10px 14px;text-align:center;
  background:var(--paper);min-width:72px}
.iw-pun .iwpun-t td.iwpun-has{background:color-mix(in srgb,var(--pc) 16%,var(--paper));border-color:color-mix(in srgb,var(--pc) 45%,var(--rule))}
.iw-pun .iwpun-t td b{display:block;font-size:16px;letter-spacing:.03em}
.iw-pun .iwpun-t td i{display:block;font-family:var(--sans);font-style:normal;font-size:11px;
  letter-spacing:.04em;color:var(--ink-soft);margin-top:3px}
.iw-pun .iwpun-ratio{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--rule)}
.iw-pun .iwpun-rl{font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--slate)}
.iw-pun .iwpun-r{display:inline-flex;align-items:baseline;gap:6px;font-size:14px;padding:4px 11px;border-radius:20px;
  border:1px solid color-mix(in srgb,var(--pc,var(--rule)) 45%,var(--rule));background:color-mix(in srgb,var(--pc,var(--paper-deep)) 12%,var(--paper))}
.iw-pun .iwpun-r b{font-family:var(--mono);font-size:16px;color:var(--pc,var(--accent))}
.iw-pun .iwpun-r em{font-style:normal;font-size:12px;color:var(--slate)}
.iw-pun .iwpun-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── pedigree ── */
.iw-ped .iwped-scroll{overflow-x:auto;overflow-y:hidden}
.iw-ped .iwped-svg{display:block;width:100%;min-width:420px;height:auto}
.iw-ped .iwped-l{stroke:var(--ink-soft);stroke-width:1.6;fill:none}
.iw-ped .iwped-s{fill:var(--paper);stroke:var(--ink);stroke-width:2}
.iw-ped .iwped-s.aff{fill:var(--ink)}
.iw-ped .iwped-dot{fill:var(--ink)}
.iw-ped .iwped-dead{stroke:var(--accent);stroke-width:2;stroke-linecap:round}
.iw-ped .iwped-t{font-family:var(--mono);font-size:10.5px;fill:var(--ink-soft)}
.iw-ped .iwped-g{font-family:var(--serif);font-size:14px;font-weight:600;fill:var(--slate)}
.iw-ped .iwped-key{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:12px;padding-top:11px;border-top:1px solid var(--rule);
  font-size:13px;color:var(--ink-soft)}
.iw-ped .iwped-key span{display:inline-flex;align-items:center;gap:7px}
.iw-ped .iwped-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── exercise sheet ── */
.iw-ex .iwex-kick{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:5px}
.iw-ex .iwex-title{font-family:var(--serif);font-size:22px;margin:0 0 8px}
.iw-ex .iwex-intro{font-size:14.5px;color:var(--ink-soft);margin-bottom:14px}
.iw-ex .iwex-list{margin:0;padding-left:1.6em;display:grid;gap:12px}
.iw-ex .iwex-q{padding:11px 14px;border:1px solid var(--rule);border-radius:9px;background:var(--paper-deep);transition:border-color .15s,background .15s}
.iw-ex .iwex-q.ok{border-color:#5fa39b;background:color-mix(in srgb,#5fa39b 10%,var(--paper-deep))}
.iw-ex .iwex-q.no{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--paper-deep))}
.iw-ex .iwex-q::marker{font-family:var(--mono);font-size:12px;color:var(--slate)}
.iw-ex .iwex-qt{font-size:15px;line-height:1.6;display:flex;gap:10px;align-items:baseline;justify-content:space-between}
.iw-ex .iwex-pts{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--slate);white-space:nowrap}
.iw-ex .iwex-in{display:flex;align-items:center;gap:9px;margin-top:8px}
.iw-ex .iwex-a{flex:0 1 220px;font-family:var(--mono);font-size:14px;padding:7px 11px;border:1px solid var(--rule);
  border-radius:7px;background:var(--paper);color:var(--ink);outline:none}
.iw-ex .iwex-a:focus{border-color:var(--accent)}
.iw-ex .iwex-u{font-family:var(--mono);font-size:13px;color:var(--slate)}
.iw-ex .iwex-mark{width:18px;height:18px;flex:0 0 auto}
.iw-ex .iwex-q.ok .iwex-mark::before{content:"✓";color:#4d8f86;font-weight:700}
.iw-ex .iwex-q.no .iwex-mark::before{content:"✕";color:var(--accent);font-weight:700}
.iw-ex .iwex-hb{margin-top:8px}
.iw-ex .iwex-hint{margin-top:7px;font-size:13.5px;color:var(--ink-soft);border-left:2px solid var(--gold);padding-left:10px}
.iw-ex .iwex-sol,.iw-ex .iwex-shown{margin-top:9px;font-size:14px;line-height:1.6;background:var(--paper);
  border:1px dashed var(--rule);border-radius:7px;padding:9px 12px}
.iw-ex .iwex-sol b,.iw-ex .iwex-shown b{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--slate);margin-bottom:3px}
.iw-ex .iwex-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:15px}
.iw-ex .iwex-score{font-family:var(--mono);font-size:14px;font-weight:600}
.iw-ex .iwex-score.ok{color:#4d8f86}
.iw-ex .iwex-score.no{color:var(--accent)}
.iw-ex .iwex-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── glossary ── */
.iw-glo .iwglo-intro{font-size:14.5px;color:var(--ink-soft);margin-bottom:12px}
.iw-glo .iwglo-bar{display:flex;align-items:center;gap:11px;margin-bottom:13px}
.iw-glo .iwglo-in{flex:1;font-family:var(--sans);font-size:14px;padding:9px 13px;border:1px solid var(--rule);
  border-radius:8px;background:var(--paper-deep);color:var(--ink);outline:none}
.iw-glo .iwglo-in:focus{border-color:var(--accent);background:var(--paper)}
.iw-glo .iwglo-count{font-family:var(--mono);font-size:12px;color:var(--slate);white-space:nowrap}
.iw-glo .iwglo-l{margin:0}
.iw-glo .iwglo-2{columns:2;column-gap:26px}
.iw-glo .iwglo-2 .iwglo-e{break-inside:avoid}
.iw-glo .iwglo-letter{font-family:var(--serif);font-size:19px;font-weight:700;color:var(--accent);
  margin:16px 0 5px;padding-bottom:3px;border-bottom:1px solid var(--rule)}
.iw-glo .iwglo-e{padding:6px 0}
.iw-glo .iwglo-e dt{font-weight:600;font-size:15px;display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}
.iw-glo .iwglo-e dt em{font-style:italic;font-weight:400;font-size:13px;color:var(--slate)}
.iw-glo .iwglo-tag{font-family:var(--mono);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;
  background:var(--paper-deep);border:1px solid var(--rule);border-radius:4px;padding:1px 6px;color:var(--slate)}
.iw-glo .iwglo-e dd{margin:2px 0 0;font-size:14px;line-height:1.6;color:var(--ink-soft)}

/* ── flashcards ── */
.iw-fc .iwfc-card{perspective:1200px;height:210px;cursor:pointer;outline:none}
.iw-fc .iwfc-card:focus-visible .iwfc-inner{box-shadow:0 0 0 3px var(--gold)}
.iw-fc .iwfc-inner{position:relative;width:100%;height:100%;transition:transform .5s;transform-style:preserve-3d;border-radius:12px}
.iw-fc .iwfc-card.flip .iwfc-inner{transform:rotateY(180deg)}
.iw-fc .iwfc-face{position:absolute;inset:0;backface-visibility:hidden;border-radius:12px;padding:24px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:9px}
.iw-fc .iwfc-front{background:var(--accent);color:#fff}
.iw-fc .iwfc-back{background:var(--paper-deep);color:var(--ink);border:1px solid var(--rule);transform:rotateY(180deg)}
.iw-fc .iwfc-tx{font-size:19px;line-height:1.45;font-weight:500;overflow:auto;max-height:100%}
.iw-fc .iwfc-back .iwfc-tx{font-size:16.5px;font-weight:400;line-height:1.6}
.iw-fc .iwfc-front i{position:absolute;bottom:13px;font-style:normal;font-family:var(--mono);font-size:10px;
  letter-spacing:.1em;text-transform:uppercase;opacity:.62}
.iw-fc .iwfc-tag{position:absolute;top:12px;left:14px;font-family:var(--mono);font-size:9.5px;letter-spacing:.11em;
  text-transform:uppercase;background:rgba(255,255,255,.2);border-radius:4px;padding:2px 7px}
.iw-fc .iwfc-bar{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:12px}
.iw-fc .iwfc-pos{font-family:var(--mono);font-size:13px;color:var(--slate);min-width:64px;text-align:center}
.iw-fc .iwfc-judge{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:10px}
.iw-fc .iwfc-stat{text-align:center;font-family:var(--mono);font-size:12px;color:var(--slate);min-height:1.4em;margin-top:8px}
.iw-fc .iwfc-note{margin-top:8px;font-size:13.5px;color:var(--ink-soft);font-style:italic;text-align:center}

/* ── scatter plot ── */
.iw-sc .iwsc-wrap{overflow-x:auto;overflow-y:hidden}
.iw-sc .iwsc-svg{display:block;width:100%;min-width:420px;height:auto}
.iw-sc .iwsc-grid{stroke:var(--rule);stroke-width:1;opacity:.6}
.iw-sc .iwsc-ax{stroke:var(--ink-soft);stroke-width:1.6}
.iw-sc .iwsc-n{font-family:var(--mono);font-size:11px;fill:var(--slate)}
.iw-sc .iwsc-al{font-family:var(--mono);font-size:12px;letter-spacing:.06em;fill:var(--ink-soft)}
.iw-sc .iwsc-fit{stroke-width:2;stroke-dasharray:7 4;opacity:.9}
.iw-sc .iwsc-pt{stroke:var(--paper);stroke-width:1.4}
.iw-sc .iwsc-eq{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:11px;padding-top:10px;border-top:1px solid var(--rule);
  font-family:var(--mono);font-size:13.5px;color:var(--ink)}
.iw-sc .iwsc-eq em{font-style:italic;color:var(--accent)}
.iw-sc .iwsc-eq span:not(:first-child){color:var(--slate);font-size:12.5px}
.iw-sc .iwsc-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── ordering ── */
.iw-ord .iword-intro{font-size:14.5px;color:var(--ink-soft);margin-bottom:12px}
.iw-ord .iword-list{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.iw-ord .iword-li{display:flex;align-items:center;gap:11px;padding:9px 11px;border:1px solid var(--rule);
  border-radius:8px;background:var(--paper-deep);transition:border-color .15s,background .15s}
.iw-ord .iword-li.ok{border-color:#5fa39b;background:color-mix(in srgb,#5fa39b 10%,var(--paper-deep))}
.iw-ord .iword-li.no{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--paper-deep))}
.iw-ord .iword-n{font-family:var(--mono);font-size:12px;font-weight:700;color:#fff;background:var(--slate);
  min-width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.iw-ord .iword-li.ok .iword-n{background:#4d8f86}
.iw-ord .iword-li.no .iword-n{background:var(--accent)}
.iw-ord .iword-t{flex:1;font-size:14.5px;line-height:1.5}
.iw-ord .iword-btns{display:flex;gap:3px;flex:0 0 auto}
.iw-ord .iword-btns button{width:28px;height:26px;border:1px solid var(--rule);background:var(--paper);color:var(--ink);
  border-radius:6px;cursor:pointer;font-size:10px;line-height:1}
.iw-ord .iword-btns button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.iw-ord .iword-btns button:disabled{opacity:.3;cursor:default}
.iw-ord .iword-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:14px}
.iw-ord .iword-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-ord .iword-score.ok{color:#4d8f86}
.iw-ord .iword-score.no{color:var(--accent)}
.iw-ord .iword-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── climatogram ── */
.iw-clim .iwcl-place{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);margin:-6px 0 10px}
.iw-clim .iwcl-wrap{overflow-x:auto;overflow-y:hidden}
.iw-clim .iwcl-svg{display:block;width:100%;min-width:460px;height:auto}
.iw-clim .iwcl-grid{stroke:var(--rule);stroke-width:1;opacity:.55}
.iw-clim .iwcl-ax{stroke:var(--ink-soft);stroke-width:1.5}
.iw-clim .iwcl-dry{fill:var(--gold);opacity:.13}
.iw-clim .iwcl-line{stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round}
.iw-clim .iwcl-dot{stroke:var(--paper);stroke-width:1.4}
.iw-clim .iwcl-n{font-family:var(--mono);font-size:11px}
.iw-clim .iwcl-m{font-family:var(--mono);font-size:11.5px;fill:var(--ink-soft)}
.iw-clim .iwcl-al{font-family:var(--mono);font-size:11px;font-weight:700}
.iw-clim .iwcl-facts{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:12px;padding-top:11px;border-top:1px solid var(--rule)}
.iw-clim .iwcl-facts span{display:flex;flex-direction:column;font-size:11.5px;color:var(--slate);letter-spacing:.04em}
.iw-clim .iwcl-facts b{font-family:var(--mono);font-size:17px;color:var(--ink);letter-spacing:0}
.iw-clim .iwcl-key{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:11px;font-size:12.5px;color:var(--ink-soft)}
.iw-clim .iwcl-key span{margin-left:10px}
.iw-clim .iwcl-key span:first-child{margin-left:0}
.iw-clim .iwcl-kb{width:11px;height:13px;border-radius:2px;display:inline-block}
.iw-clim .iwcl-kl{width:16px;height:3px;border-radius:2px;display:inline-block}
.iw-clim .iwcl-kd{width:13px;height:13px;border-radius:2px;display:inline-block;background:var(--gold);opacity:.3}
.iw-clim .iwcl-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── force diagram ── */
.iw-frc .iwfrc-wrap{overflow-x:auto;overflow-y:hidden}
.iw-frc .iwfrc-svg{display:block;width:100%;max-width:560px;min-width:360px;height:auto;margin:0 auto}
.iw-frc .iwfrc-ax{stroke:var(--rule);stroke-width:1;stroke-dasharray:5 4}
.iw-frc .iwfrc-gnd{stroke:var(--ink-soft);stroke-width:2.4}
.iw-frc .iwfrc-body{fill:var(--paper-deep);stroke:var(--ink);stroke-width:2}
.iw-frc .iwfrc-bl{font-family:var(--mono);font-size:13px;font-weight:700;fill:var(--ink)}
.iw-frc .iwfrc-a{stroke-width:2.6;stroke-linecap:round}
.iw-frc .iwfrc-r{stroke-width:2.6;stroke-dasharray:7 4;stroke-linecap:round}
.iw-frc .iwfrc-l{font-family:var(--mono);font-size:12px;font-weight:700}
.iw-frc .iwfrc-read{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.iw-frc .iwfrc-read span{display:inline-flex;align-items:baseline;gap:7px;font-size:13px;padding:4px 11px;border-radius:20px;
  border:1px solid color-mix(in srgb,var(--fc) 42%,var(--rule));background:color-mix(in srgb,var(--fc) 10%,var(--paper))}
.iw-frc .iwfrc-read b{font-family:var(--mono);color:var(--fc)}
.iw-frc .iwfrc-read em{font-style:normal;font-size:11.5px;color:var(--slate)}
.iw-frc .iwfrc-sum{margin-top:12px;padding:11px 14px;border-radius:8px;border:1px solid var(--rule);
  border-left:3px solid var(--gold);background:var(--paper-deep);font-size:14px;line-height:1.55}
.iw-frc .iwfrc-sum.ok{border-left-color:#5fa39b}
.iw-frc .iwfrc-sum b{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--slate);margin-bottom:3px}
.iw-frc .iwfrc-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── radar ── */
.iw-rad .iwrad-wrap{overflow-x:auto;overflow-y:hidden}
.iw-rad .iwrad-svg{display:block;width:100%;max-width:560px;min-width:380px;height:auto;margin:0 auto}
.iw-rad .iwrad-web{fill:none;stroke:var(--rule);stroke-width:1}
.iw-rad .iwrad-spoke{stroke:var(--rule);stroke-width:1}
.iw-rad .iwrad-ax{font-family:var(--mono);font-size:11.5px;fill:var(--ink-soft)}
.iw-rad .iwrad-max{font-family:var(--mono);font-size:10.5px;fill:var(--slate)}
.iw-rad .iwrad-s{fill-opacity:.17;stroke-width:2.2;stroke-linejoin:round}
.iw-rad .iwrad-p{stroke:var(--paper);stroke-width:1.2}
.iw-rad .iwrad-leg{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:10px}
.iw-rad .iwrad-chip{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:13px;
  padding:4px 12px;border-radius:20px;border:1px solid var(--rule);background:var(--paper);color:var(--ink);cursor:pointer;opacity:.42}
.iw-rad .iwrad-chip.on{opacity:1;border-color:var(--ink-soft)}
.iw-rad .iwrad-chip i{width:11px;height:11px;border-radius:3px;display:inline-block}
.iw-rad .iwrad-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── mind map ── */
.iw-mm .iwmm-stage{position:relative;width:100%;max-width:680px;margin:0 auto;overflow:visible}
.iw-mm .iwmm-svg{position:absolute;inset:0;width:100%;height:100%}
.iw-mm .iwmm-e{stroke-width:2;opacity:.5;stroke-linecap:round}
/* left/top are written by relax(); the boxes are bounded so a long label wraps
   instead of growing until it collides with everything */
.iw-mm .iwmm-c,.iw-mm .iwmm-n{position:absolute;left:0;top:0;transform:translate(-50%,-50%);
  border-radius:20px;cursor:default;font-family:var(--sans);text-align:center;line-height:1.3;
  max-width:min(190px,30%);z-index:1}
.iw-mm .iwmm-c{background:var(--ink);color:var(--paper);border:0;font-size:15px;font-weight:700;
  padding:11px 18px;max-width:min(210px,34%);z-index:2}
.iw-mm .iwmm-n{background:var(--paper);font-size:13px;font-weight:600;padding:7px 13px;
  border:2px solid var(--mc);color:var(--ink)}
.iw-mm .iwmm-n.l2{font-size:12px;font-weight:500;padding:5px 11px;border-width:1.5px;opacity:.92}
.iw-mm .iwmm-n.has{cursor:pointer}
.iw-mm .iwmm-n.has:hover,.iw-mm .iwmm-n.on{background:var(--mc);color:#fff}
/* the one being read comes to the front — crowding can never hide it */
.iw-mm .iwmm-n:hover,.iw-mm .iwmm-n.on,.iw-mm .iwmm-n:focus-visible{z-index:5}
.iw-mm .iwmm-det{margin-top:14px;min-height:1.4em;font-size:14px;line-height:1.6;color:var(--ink-soft)}
.iw-mm .iwmm-det b{display:block;color:var(--ink);font-size:15px;margin-bottom:2px}
.iw-mm .iwmm-note{margin-top:8px;font-size:13.5px;color:var(--ink-soft);font-style:italic}
@media(max-width:620px){
  .iw-mm .iwmm-c{font-size:12px;padding:8px 12px}
  .iw-mm .iwmm-n{font-size:11px;padding:5px 9px}
  .iw-mm .iwmm-n.l2{font-size:10px;padding:4px 7px}
}

/* ── 3D viewer ── */
.iw-3d .iw3d-stage{position:relative;width:100%;max-width:680px;margin:0 auto;aspect-ratio:16/11;
  border:1px solid var(--rule);border-radius:10px;background:var(--paper-deep);overflow:hidden}
.iw-3d .iw3d-cv{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.iw-3d .iw3d-cv:active{cursor:grabbing}
.iw-3d .iw3d-tools{position:absolute;top:9px;right:9px;display:flex;flex-direction:column;gap:5px}
.iw-3d .iw3d-tools button{width:29px;height:29px;border-radius:7px;border:1px solid var(--rule);
  background:color-mix(in srgb,var(--paper) 88%,transparent);color:var(--ink);cursor:pointer;
  font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center}
.iw-3d .iw3d-tools button:hover{border-color:var(--accent);color:var(--accent)}
.iw-3d .iw3d-tools button.on{background:var(--accent);color:#fff;border-color:var(--accent)}
/* inset past the tool column: on a short canvas the stacked buttons reach the
   bottom edge, and a full-width hint ran underneath them */
.iw-3d .iw3d-hint{position:absolute;left:8px;right:46px;bottom:9px;text-align:center;pointer-events:none;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);
  opacity:.75;transition:opacity .3s}
@media (max-width:420px){.iw-3d .iw3d-hint{font-size:9.5px;letter-spacing:.04em}}
.iw-3d .iw3d-facts{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:13px;padding-top:11px;border-top:1px solid var(--rule)}
.iw-3d .iw3d-facts span{display:flex;flex-direction:column;font-family:var(--mono);font-size:13px;color:var(--ink)}
.iw-3d .iw3d-facts b{font-size:11px;letter-spacing:.05em;color:var(--slate);font-weight:600;margin-bottom:2px}
.iw-3d .iw3d-cap{margin-top:10px;font-size:13.5px;color:var(--ink-soft);text-align:center}
.iw-3d .iw3d-note{margin-top:9px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── tableau de variations ── */
.iw-var .iwvar-scroll{overflow-x:auto;overflow-y:hidden}
.iw-var .iwvar-t{border-collapse:collapse;width:100%;min-width:420px;font-family:var(--mono)}
.iw-var .iwvar-t th,.iw-var .iwvar-t td{border:1px solid var(--ink-soft);padding:0}
.iw-var .iwvar-lb{width:78px;min-width:78px;padding:8px 10px !important;text-align:left;
  font-size:13.5px;font-weight:700;background:var(--paper-deep);white-space:nowrap}
.iw-var .iwvar-pt{padding:7px 12px !important;font-size:14px;font-weight:700;white-space:nowrap;background:var(--paper-deep)}
.iw-var .iwvar-gap{background:var(--paper-deep)}
.iw-var .iwvar-srow td{height:38px;text-align:center;font-size:15px;font-weight:700}
.iw-var .iwvar-s.pos{color:#4d8f86}
.iw-var .iwvar-s.neg{color:var(--accent)}
.iw-var .iwvar-m{width:34px;color:var(--slate)}
.iw-var .iwvar-m.bar{background:repeating-linear-gradient(90deg,transparent 0 45%,var(--ink-soft) 45% 55%,transparent 55%)}
.iw-var .iwvar-vrow td{height:66px;position:relative}
.iw-var .iwvar-v{width:44px;text-align:center;font-size:14px;font-weight:700;vertical-align:middle}
.iw-var .iwvar-v span{display:block;position:absolute;left:0;right:0}
.iw-var .iwvar-v span.top{top:5px}
.iw-var .iwvar-v span.bot{bottom:5px}
.iw-var .iwvar-a svg{display:block;width:100%;height:56px}
.iw-var .iwvar-a line{stroke:var(--accent);stroke-width:2.2;stroke-linecap:round}
.iw-var .iwvar-a path{fill:var(--accent)}
.iw-var .iwvar-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.iw-var .iwvar-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── optics ── */
.iw-opt .iwopt-wrap{overflow-x:auto;overflow-y:hidden}
.iw-opt .iwopt-svg{display:block;width:100%;min-width:440px;height:auto}
.iw-opt .iwopt-axis{stroke:var(--ink-soft);stroke-width:1.2;stroke-dasharray:6 5}
.iw-opt .iwopt-lens{stroke:var(--teal);stroke-width:2.6;stroke-linecap:round}
.iw-opt .iwopt-lt{stroke:var(--teal);stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round}
.iw-opt .iwopt-f{fill:var(--ink-soft)}
.iw-opt .iwopt-t{font-family:var(--mono);font-size:11.5px;fill:var(--slate)}
.iw-opt .iwopt-t2{font-family:var(--mono);font-size:12.5px;font-weight:700;fill:var(--ink)}
.iw-opt .iwopt-obj{stroke:var(--ink);stroke-width:2.6}
.iw-opt .iwopt-oh{stroke:var(--ink);stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
.iw-opt .iwopt-img{stroke:var(--accent);stroke-width:2.6}
.iw-opt .iwopt-ih{stroke:var(--accent);stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
.iw-opt .iwopt-img.virt,.iw-opt .iwopt-ih.virt{stroke-dasharray:6 4;opacity:.85}
.iw-opt .iwopt-r1{stroke:#c98a2e;stroke-width:1.7}
.iw-opt .iwopt-r2{stroke:#4a6fa5;stroke-width:1.7}
.iw-opt .iwopt-r3{stroke:#5fa39b;stroke-width:1.7}
.iw-opt .iwopt-virt{stroke:var(--slate);stroke-width:1.3;stroke-dasharray:5 4;opacity:.7}
.iw-opt .iwopt-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:12px}
.iw-opt .iwopt-ctl label{font-size:13px;color:var(--ink-soft);display:flex;gap:9px;align-items:baseline}
.iw-opt .iwopt-ctl b{font-family:var(--mono);font-size:13px;color:var(--ink)}
.iw-opt .iwopt-ctl input{flex:1;min-width:180px;accent-color:var(--accent)}
.iw-opt .iwopt-read{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:12px;padding-top:11px;border-top:1px solid var(--rule)}
.iw-opt .iwopt-read span{display:flex;flex-direction:column;font-family:var(--mono);font-size:14px;font-weight:700;color:var(--ink)}
.iw-opt .iwopt-read b{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);font-weight:600}
.iw-opt .iwopt-nat{font-family:var(--sans) !important;font-weight:500 !important;font-size:13.5px !important;
  color:var(--accent) !important;justify-content:center}
.iw-opt .iwopt-read.inf{font-family:var(--sans);font-size:14px;color:var(--ink-soft)}
.iw-opt .iwopt-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── nuclear equation ── */
.iw-nuc .iwnuc-eq{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 10px;
  padding:16px 8px;background:var(--paper-deep);border:1px solid var(--rule);border-radius:9px}
.iw-nuc .iwnuc-sp{display:inline-flex;align-items:center;gap:1px}
.iw-nuc .iwnuc-az{display:inline-flex;flex-direction:column;align-items:flex-end;font-family:var(--mono);
  font-size:11.5px;line-height:1.15;color:var(--slate)}
.iw-nuc .iwnuc-az i{font-style:normal}
.iw-nuc .iwnuc-az b{font-weight:400}
.iw-nuc .iwnuc-el{font-family:var(--mono);font-size:25px;font-weight:700;color:var(--ink);letter-spacing:.01em}
.iw-nuc .iwnuc-op{font-size:19px;color:var(--slate)}
.iw-nuc .iwnuc-arrow{font-size:23px;color:var(--accent);margin:0 6px}
.iw-nuc .iwnuc-in{width:38px;font-family:var(--mono);font-size:11px;text-align:right;padding:1px 3px;
  border:1px solid var(--rule);border-radius:4px;background:var(--paper);color:var(--ink)}
.iw-nuc .iwnuc-in.ok{border-color:#5fa39b;background:color-mix(in srgb,#5fa39b 16%,var(--paper))}
.iw-nuc .iwnuc-in.bad{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--paper))}
.iw-nuc .iwnuc-bal{display:flex;flex-wrap:wrap;align-items:center;gap:7px 16px;margin-top:12px}
.iw-nuc .iwnuc-h{font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--slate)}
.iw-nuc .iwnuc-bal>span:not(.iwnuc-h){font-family:var(--mono);font-size:13.5px}
.iw-nuc .iwnuc-bal b{color:var(--slate);font-weight:600;margin-right:6px}
.iw-nuc .iwnuc-bal .ok{color:#4d8f86}
.iw-nuc .iwnuc-bal .no{color:var(--accent)}
.iw-nuc .iwnuc-ok{color:#4d8f86;font-weight:700}
.iw-nuc .iwnuc-no{color:var(--accent);font-weight:700}
.iw-nuc .iwnuc-actions{display:flex;gap:9px;margin-top:12px}
.iw-nuc .iwnuc-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── flow diagram ── */
.iw-flow .iwflow-intro{font-size:14.5px;color:var(--ink-soft);margin-bottom:12px}
.iw-flow .iwflow-stage{position:relative;width:100%;max-width:760px;margin:0 auto}
.iw-flow .iwflow-svg{position:absolute;inset:0;width:100%;height:100%;color:var(--ink-soft)}
.iw-flow .iwflow-l{stroke:var(--ink-soft);stroke-width:1.8;opacity:.72}
.iw-flow .iwflow-l.dash{stroke-dasharray:6 4}
.iw-flow .iwflow-lt{font-family:var(--mono);font-size:10.5px;fill:var(--slate)}
.iw-flow .iwflow-n{position:absolute;transform:translate(-50%,-50%);max-width:23%;
  font-family:var(--sans);font-size:12.5px;font-weight:600;line-height:1.3;text-align:center;
  padding:9px 13px;border-radius:8px;border:2px solid var(--fc);background:var(--paper);color:var(--ink);cursor:default}
.iw-flow .iwflow-n.s-round{border-radius:22px}
.iw-flow .iwflow-n.s-diamond{border-radius:6px;transform:translate(-50%,-50%) rotate(45deg)}
.iw-flow .iwflow-n.s-diamond{padding:14px 10px}
.iw-flow .iwflow-n.has{cursor:pointer}
.iw-flow .iwflow-n.has:hover,.iw-flow .iwflow-n.on{background:var(--fc);color:#fff}
.iw-flow .iwflow-det{margin-top:14px;min-height:1.4em;font-size:14px;line-height:1.6;color:var(--ink-soft)}
.iw-flow .iwflow-det b{display:block;color:var(--ink);font-size:15px;margin-bottom:2px}
.iw-flow .iwflow-note{margin-top:9px;font-size:13.5px;color:var(--ink-soft);font-style:italic}
@media(max-width:620px){
  .iw-flow .iwflow-n{font-size:10.5px;padding:6px 9px;max-width:27%}
  .iw-var .iwvar-lb{width:62px;min-width:62px;font-size:12px}
}

/* ── label the diagram ── */
.iw-lbl .iwlb-intro{font-size:14.5px;color:var(--ink-soft);margin-bottom:12px}
.iw-lbl .iwlb-stage{position:relative;width:100%;max-width:680px;margin:0 auto;line-height:0}
.iw-lbl .iwlb-stage.empty{min-height:300px;border:2px dashed var(--rule);border-radius:8px;background:var(--paper-deep)}
.iw-lbl .iwlb-img{display:block;width:100%;height:auto;border-radius:8px}
.iw-lbl .iwlb-t{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:6px;
  padding:3px;border-radius:20px;border:2px dashed var(--slate);background:color-mix(in srgb,var(--paper) 88%,transparent);
  cursor:pointer;font-family:var(--sans);line-height:1.2;max-width:44%}
.iw-lbl .iwlb-t i{font-style:normal;font-family:var(--mono);font-size:11px;font-weight:700;color:#fff;background:var(--slate);
  min-width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.iw-lbl .iwlb-t span{font-size:12px;font-weight:600;padding-right:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.iw-lbl .iwlb-t.full{border-style:solid;border-color:var(--accent);background:var(--paper)}
.iw-lbl .iwlb-t.full i{background:var(--accent)}
.iw-lbl .iwlb-t.over{border-color:var(--gold);box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 40%,transparent)}
.iw-lbl .iwlb-t.ok{border-color:#5fa39b}.iw-lbl .iwlb-t.ok i{background:#4d8f86}
.iw-lbl .iwlb-t.no{border-color:var(--accent)}.iw-lbl .iwlb-t.no i{background:var(--accent)}
.iw-lbl .iwlb-pool{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px;padding:11px;border:1px solid var(--rule);
  border-radius:9px;background:var(--paper-deep);min-height:52px}
.iw-lbl .iwlb-c{font-family:var(--sans);font-size:13px;font-weight:600;padding:6px 13px;border-radius:18px;
  border:1px solid var(--rule);background:var(--paper);color:var(--ink);cursor:grab}
.iw-lbl .iwlb-c:hover{border-color:var(--accent)}
.iw-lbl .iwlb-c.sel{background:var(--accent);color:#fff;border-color:var(--accent)}
.iw-lbl .iwlb-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:13px}
.iw-lbl .iwlb-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-lbl .iwlb-score.ok{color:#4d8f86}.iw-lbl .iwlb-score.no{color:var(--accent)}
.iw-lbl .iwlb-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── titration ── */
.iw-titr .iwtt-wrap{overflow-x:auto;overflow-y:hidden}
.iw-titr .iwtt-svg{display:block;width:100%;min-width:460px;height:auto}
.iw-titr .iwtt-grid{stroke:var(--rule);stroke-width:1;opacity:.55}
.iw-titr .iwtt-ax{stroke:var(--ink-soft);stroke-width:1.5}
.iw-titr .iwtt-n{font-family:var(--mono);font-size:11px;fill:var(--slate)}
.iw-titr .iwtt-al{font-family:var(--mono);font-size:12px;letter-spacing:.05em;fill:var(--ink-soft)}
.iw-titr .iwtt-curve{stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round}
.iw-titr .iwtt-der{stroke-width:1.8;stroke-dasharray:6 4;opacity:.85}
.iw-titr .iwtt-p{stroke:var(--paper);stroke-width:1}
.iw-titr .iwtt-ve{stroke:var(--gold);stroke-width:1.6;stroke-dasharray:5 4}
.iw-titr .iwtt-e{fill:none;stroke:var(--gold);stroke-width:2.6}
.iw-titr .iwtt-el{font-family:var(--mono);font-size:13px;font-weight:700;fill:var(--gold)}
.iw-titr .iwtt-read{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:12px;padding-top:11px;border-top:1px solid var(--rule)}
.iw-titr .iwtt-read span{display:flex;flex-direction:column;font-family:var(--mono);font-size:15px;font-weight:700}
.iw-titr .iwtt-read b{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);font-weight:600}
.iw-titr .iwtt-key{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;font-size:12.5px;color:var(--ink-soft)}
.iw-titr .iwtt-key span{margin-left:10px}
.iw-titr .iwtt-key span:first-child{margin-left:0}
.iw-titr .iwtt-kc,.iw-titr .iwtt-kd{width:16px;height:3px;border-radius:2px;display:inline-block}
.iw-titr .iwtt-kv{width:16px;height:0;border-top:2px dashed var(--gold);display:inline-block}
.iw-titr .iwtt-calc{margin-top:11px;padding:10px 13px;border-radius:8px;background:var(--paper-deep);
  border-left:3px solid var(--gold);font-family:var(--mono);font-size:13.5px}
.iw-titr .iwtt-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── periodic trends ── */
.iw-trd .iwtrd-bar{display:flex;flex-wrap:wrap;align-items:center;gap:9px 12px;margin-bottom:12px}
.iw-trd .iwtrd-bar label{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate)}
.iw-trd .iwtrd-sel{font-family:var(--sans);font-size:13.5px;padding:6px 10px;border:1px solid var(--rule);
  border-radius:7px;background:var(--paper);color:var(--ink)}
.iw-trd .iwtrd-hint{font-size:12.5px;color:var(--slate)}
.iw-trd .iwtrd-grid{display:grid;grid-template-columns:repeat(18,1fr);gap:2px;overflow-x:auto;padding-bottom:4px}
.iw-trd .iwtrd-c{aspect-ratio:1;min-width:19px;border:1px solid var(--rule);border-radius:3px;cursor:pointer;
  font-family:var(--mono);font-size:10px;font-weight:700;color:var(--ink);background:var(--paper-deep);padding:0;line-height:1}
.iw-trd .iwtrd-c:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.iw-trd .iwtrd-c.off{opacity:.22;cursor:default}
.iw-trd .iwtrd-c.on{background:var(--accent);color:#fff;border-color:var(--accent);transform:scale(1.12);z-index:1}
.iw-trd .iwtrd-c.f-alkali{background:color-mix(in srgb,#e0556b 15%,var(--paper-deep))}
.iw-trd .iwtrd-c.f-alkaline{background:color-mix(in srgb,#e8924a 15%,var(--paper-deep))}
.iw-trd .iwtrd-c.f-transition{background:color-mix(in srgb,#6aa0d8 15%,var(--paper-deep))}
.iw-trd .iwtrd-c.f-nonmetal{background:color-mix(in srgb,#7ec496 15%,var(--paper-deep))}
.iw-trd .iwtrd-c.f-halogen{background:color-mix(in srgb,#e8c84a 18%,var(--paper-deep))}
.iw-trd .iwtrd-c.f-noble{background:color-mix(in srgb,#a855c7 15%,var(--paper-deep))}
.iw-trd .iwtrd-out{margin-top:14px;min-height:2em}
.iw-trd .iwtrd-empty{font-size:13.5px;color:var(--slate);font-style:italic}
.iw-trd .iwtrd-row{display:grid;grid-template-columns:34px 1fr 2.4fr auto;align-items:center;gap:10px;margin-bottom:7px}
.iw-trd .iwtrd-row b{font-family:var(--mono);font-size:16px;color:var(--accent)}
.iw-trd .iwtrd-row i{font-style:normal;font-size:12.5px;color:var(--ink-soft)}
.iw-trd .iwtrd-track{height:11px;border-radius:6px;background:var(--paper-deep);overflow:hidden}
.iw-trd .iwtrd-track span{display:block;height:100%;background:var(--accent);border-radius:6px}
.iw-trd .iwtrd-row em{font-style:normal;font-family:var(--mono);font-size:13px;font-weight:700;white-space:nowrap}
.iw-trd .iwtrd-verdict{margin-top:10px;font-size:14px;color:var(--ink)}
.iw-trd .iwtrd-rule{margin-top:12px;padding:10px 13px;border-radius:8px;background:var(--paper-deep);
  border-left:3px solid var(--teal);font-size:13.5px;line-height:1.6;color:var(--ink-soft)}
.iw-trd .iwtrd-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── inequality ── */
.iw-ineq .iwiq-stat{font-family:var(--mono);font-size:19px;font-weight:700;text-align:center;
  padding:12px;background:var(--paper-deep);border-radius:9px;border:1px solid var(--rule)}
.iw-ineq .iwiq-intro{font-size:14.5px;color:var(--ink-soft);margin-top:11px}
.iw-ineq .iwiq-wrap{margin-top:12px;overflow-x:auto;overflow-y:hidden}
.iw-ineq .iwiq-svg{display:block;width:100%;min-width:420px;height:auto;touch-action:none;cursor:pointer}
.iw-ineq .iwiq-axis{stroke:var(--ink);stroke-width:1.8}
.iw-ineq .iwiq-arrow{fill:var(--ink)}
.iw-ineq .iwiq-tick{stroke:var(--ink-soft);stroke-width:1.2}
.iw-ineq .iwiq-num{font-family:var(--mono);font-size:11px;fill:var(--slate)}
.iw-ineq .iwiq-band{stroke:var(--accent);stroke-width:5;opacity:.85;stroke-linecap:butt}
.iw-ineq .iwiq-h{fill:var(--accent);stroke:var(--paper);stroke-width:2.4;cursor:grab}
.iw-ineq .iwiq-h.open{fill:var(--paper-deep);stroke:var(--accent);stroke-width:2.6}
.iw-ineq .iwiq-inf{fill:var(--accent);cursor:pointer}
.iw-ineq .iwiq-read{display:flex;align-items:baseline;gap:11px;margin-top:10px}
.iw-ineq .iwiq-read span{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate)}
.iw-ineq .iwiq-read b{font-family:var(--mono);font-size:17px;color:var(--ink)}
.iw-ineq .iwiq-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:12px}
.iw-ineq .iwiq-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-ineq .iwiq-score.ok{color:#4d8f86}.iw-ineq .iwiq-score.no{color:var(--accent)}
.iw-ineq .iwiq-tip{margin-top:10px;font-size:12.5px;color:var(--slate)}
.iw-ineq .iwiq-note{margin-top:9px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── conjugation ── */
.iw-conj .iwcj-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px}
.iw-conj .iwcj-verb{font-size:24px;font-weight:700;color:var(--ink);letter-spacing:.01em}
.iw-conj .iwcj-tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--slate);background:var(--paper);border:1px solid var(--rule);border-radius:20px;padding:3px 10px}
.iw-conj .iwcj-intro{margin-top:9px;font-size:14px;color:var(--ink-soft)}
.iw-conj .iwcj-one{margin-top:12px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--slate)}
.iw-conj .iwcj-tabs{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.iw-conj .iwcj-tab{font-family:var(--mono);font-size:11px;letter-spacing:.05em;background:var(--paper);
  border:1px solid var(--rule);border-radius:20px;padding:6px 13px;cursor:pointer;color:var(--ink-soft)}
.iw-conj .iwcj-tab.on{background:var(--accent);border-color:var(--accent);color:#fff}
.iw-conj .iwcj-grid{margin-top:14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:2px 26px}
.iw-conj .iwcj-r{display:flex;align-items:baseline;gap:12px;padding:7px 0;border-bottom:1px dotted var(--rule)}
.iw-conj .iwcj-p{flex:0 0 92px;text-align:right;font-size:14px;color:var(--slate);font-style:italic}
.iw-conj .iwcj-f{font-size:17px;color:var(--ink)}
.iw-conj .iwcj-f b{color:var(--accent);font-weight:700}
.iw-conj .iwcj-in{flex:1;min-width:0;font:inherit;font-size:16px;padding:4px 8px;border:0;border-bottom:1.6px solid var(--rule);
  background:transparent;color:var(--ink)}
.iw-conj .iwcj-in:focus{outline:0;border-bottom-color:var(--accent)}
.iw-conj .iwcj-in.ok{border-bottom-color:#4d8f86;color:#3f7c73}
.iw-conj .iwcj-in.no{border-bottom-color:var(--accent);color:var(--accent)}
.iw-conj .iwcj-key{margin-top:11px;font-size:12.5px;color:var(--slate)}
.iw-conj .iwcj-key b{color:var(--accent)}
.iw-conj .iwcj-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:14px}
.iw-conj .iwcj-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-conj .iwcj-score.ok{color:#4d8f86}.iw-conj .iwcj-score.no{color:var(--accent)}
.iw-conj .iwcj-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── cloze ── */
.iw-cloze .iwcz-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-cloze .iwcz-bank{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px;padding:11px;
  background:var(--paper);border:1px dashed var(--rule);border-radius:8px}
.iw-cloze .iwcz-chip{font-size:14px;background:var(--paper-deep);border:1px solid var(--rule);
  border-radius:20px;padding:4px 13px;cursor:pointer;color:var(--ink);font-family:inherit}
.iw-cloze .iwcz-chip:hover{border-color:var(--accent);color:var(--accent)}
.iw-cloze .iwcz-text{margin-top:15px;font-size:16.5px;line-height:2.35;color:var(--ink)}
.iw-cloze .iwcz-in,.iw-cloze .iwcz-sel{font:inherit;font-size:15.5px;padding:2px 7px;border:0;
  border-bottom:1.8px solid var(--slate);background:var(--paper);color:var(--ink);border-radius:4px 4px 0 0}
.iw-cloze .iwcz-sel{max-width:14em}
.iw-cloze .iwcz-in:focus,.iw-cloze .iwcz-sel:focus{outline:0;border-bottom-color:var(--accent)}
.iw-cloze .ok{border-bottom-color:#4d8f86;color:#3f7c73}
.iw-cloze .no{border-bottom-color:var(--accent);color:var(--accent)}
.iw-cloze .iwcz-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:15px}
.iw-cloze .iwcz-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-cloze .iwcz-score.ok{color:#4d8f86}.iw-cloze .iwcz-score.no{color:var(--accent)}
.iw-cloze .iwcz-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── sentence: nature et fonction ── */
.iw-sent .iwst-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-sent .iwst-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px 12px;margin-top:18px}
.iw-sent .iwst-p{display:flex;flex-direction:column;gap:5px;padding-bottom:4px}
.iw-sent .iwst-t{font-size:18px;color:var(--ink);border-bottom:3px solid var(--pc);padding-bottom:5px}
.iw-sent .iwst-l{display:flex;flex-direction:column;gap:2px;align-items:flex-start}
.iw-sent .iwst-n{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--pc);font-weight:600}
.iw-sent .iwst-fn{font-size:12.5px;color:var(--ink-soft);font-style:italic}
.iw-sent .iwst-sel{font:inherit;font-size:12.5px;padding:2px 5px;border:1px solid var(--rule);
  border-radius:5px;background:var(--paper);color:var(--ink);max-width:15em}
.iw-sent .iwst-sel.ok{border-color:#4d8f86;color:#3f7c73}
.iw-sent .iwst-sel.no{border-color:var(--accent);color:var(--accent)}
.iw-sent .iwst-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:20px;padding-top:14px;border-top:1px solid var(--rule)}
.iw-sent .iwst-lg{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;color:var(--ink-soft)}
.iw-sent .iwst-lg i{width:12px;height:12px;border-radius:3px;display:inline-block}
.iw-sent .iwst-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:14px}
.iw-sent .iwst-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-sent .iwst-score.ok{color:#4d8f86}.iw-sent .iwst-score.no{color:var(--accent)}
.iw-sent .iwst-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── crossword ── */
.iw-cw .iwcw-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-cw .iwcw-wrap{display:grid;grid-template-columns:auto 1fr;gap:26px;margin-top:16px;align-items:start}
@media(max-width:720px){.iw-cw .iwcw-wrap{grid-template-columns:1fr}}
.iw-cw .iwcw-grid{border-collapse:collapse;table-layout:fixed}
.iw-cw .iwcw-x{width:31px;height:31px;padding:0;border:0}
.iw-cw .iwcw-c{width:31px;height:31px;padding:0;border:1px solid var(--ink);position:relative;background:var(--paper)}
.iw-cw .iwcw-c i{position:absolute;top:0;left:1.5px;font-family:var(--mono);font-size:8.5px;font-style:normal;color:var(--slate);line-height:1.15;pointer-events:none}
.iw-cw .iwcw-c input{width:100%;height:100%;border:0;background:transparent;text-align:center;
  font-family:var(--mono);font-size:16px;text-transform:uppercase;color:var(--ink);padding:0}
.iw-cw .iwcw-c input:focus{outline:0;background:var(--paper-deep);box-shadow:inset 0 0 0 2px var(--accent)}
.iw-cw .iwcw-c input.ok{color:#3f7c73;background:rgba(95,163,155,.14)}
.iw-cw .iwcw-c input.no{color:var(--accent);background:rgba(140,47,42,.09)}
.iw-cw .iwcw-clues{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:20px}
.iw-cw .iwcw-side h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--slate);margin:0 0 8px;font-weight:600}
.iw-cw .iwcw-cl{list-style:none;margin:0;padding:0}
.iw-cw .iwcw-cl li{font-size:13.5px;line-height:1.55;color:var(--ink-soft);margin-bottom:6px}
.iw-cw .iwcw-cl b{font-family:var(--mono);color:var(--ink);margin-right:3px}
.iw-cw .iwcw-cl em{color:var(--slate);font-size:12px}
.iw-cw .iwcw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:16px}
.iw-cw .iwcw-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-cw .iwcw-score.ok{color:#4d8f86}.iw-cw .iwcw-score.no{color:var(--accent)}
.iw-cw .iwcw-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── fractions ── */
.iw-frac .iwfr-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-frac .iwfr-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px;margin-top:16px}
.iw-frac .iwfr-lb{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--slate);margin-bottom:7px}
.iw-frac .iwfr-shapes{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.iw-frac .iwfr-bar{display:flex;flex:1 1 150px;min-width:130px;height:42px;border:1.6px solid var(--ink);
  border-radius:5px;overflow:hidden;background:var(--paper)}
.iw-frac .iwfr-cell{flex:1;border-right:1px solid var(--rule)}
.iw-frac .iwfr-cell:last-child{border-right:0}
.iw-frac .iwfr-cell.on{background:var(--fc)}
.iw-frac .iwfr-disc{width:86px;height:86px}
.iw-frac .iwfr-sec{fill:var(--paper);stroke:var(--ink);stroke-width:1.1}
.iw-frac .iwfr-sec.on{fill:var(--fc)}
.iw-frac .iwfr-read{display:flex;flex-wrap:wrap;align-items:center;gap:11px;margin-top:11px}
.iw-frac .iwfr-read em{font-family:var(--mono);font-size:12.5px;color:var(--slate);font-style:normal}
.iw-frac .iwfr-fx{display:inline-flex;flex-direction:column;align-items:center;line-height:1.12;
  font-family:var(--mono);font-size:16px;color:var(--ink);vertical-align:middle}
.iw-frac .iwfr-fx b{font-weight:600}
.iw-frac .iwfr-fx i{border-top:1.6px solid var(--ink);font-style:normal;padding:0 3px;margin-top:1px}
.iw-frac .iwfr-btns{display:flex;gap:6px;margin-top:9px}
.iw-frac .iwfr-btns button{width:30px;height:26px;font-size:15px;line-height:1;border:1px solid var(--rule);
  border-radius:5px;background:var(--paper);color:var(--ink);cursor:pointer}
.iw-frac .iwfr-btns button:hover{border-color:var(--accent);color:var(--accent)}
.iw-frac .iwfr-cmp:not(:empty){margin-top:20px;padding-top:15px;border-top:1px solid var(--rule)}
.iw-frac .iwfr-chain{display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.iw-frac .iwfr-op{font-family:var(--mono);font-size:15px;color:var(--accent);padding:0 3px}
.iw-frac .iwfr-same{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:11px;font-size:13.5px;color:var(--ink-soft)}
.iw-frac .iwfr-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── clock ── */
.iw-clock .iwck-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-clock .iwck-wrap{margin-top:14px}
.iw-clock .iwck-one{display:flex;justify-content:center}
.iw-clock .iwck-pair{display:flex;flex-wrap:wrap;gap:24px;justify-content:center}
.iw-clock .iwck-pair figure{margin:0;text-align:center}
.iw-clock .iwck-pair figcaption{font-family:var(--mono);font-size:11.5px;color:var(--slate);margin-top:6px}
.iw-clock .iwck-face{width:236px;max-width:100%;height:auto;touch-action:none}
.iw-clock .iwck-face.drag{cursor:grab}
.iw-clock .iwck-rim{fill:var(--paper);stroke:var(--ink);stroke-width:2.4}
.iw-clock .iwck-tk{stroke:var(--slate);stroke-width:1}
.iw-clock .iwck-tk.big{stroke:var(--ink);stroke-width:2.2}
.iw-clock .iwck-n{font-family:var(--serif,inherit);font-size:19px;font-weight:600;fill:var(--ink)}
.iw-clock .iwck-mn{font-family:var(--mono);font-size:9.5px;fill:var(--slate)}
.iw-clock .iwck-hh{stroke:var(--ink);stroke-width:6;stroke-linecap:round}
.iw-clock .iwck-mh{stroke:var(--accent);stroke-width:3.6;stroke-linecap:round}
.iw-clock .iwck-pin{fill:var(--ink)}
.iw-clock .iwck-ask{margin-top:14px;text-align:center;font-size:17px;color:var(--ink)}
.iw-clock .iwck-in{font:inherit;font-family:var(--mono);font-size:19px;width:2.6em;text-align:center;
  padding:4px 6px;border:0;border-bottom:2px solid var(--rule);background:transparent;color:var(--ink)}
.iw-clock .iwck-in:focus{outline:0;border-bottom-color:var(--accent)}
.iw-clock .iwck-in.ok{border-bottom-color:#4d8f86;color:#3f7c73}
.iw-clock .iwck-in.no{border-bottom-color:var(--accent);color:var(--accent)}
.iw-clock .iwck-target{margin-top:14px;text-align:center;font-size:16px;color:var(--ink-soft)}
.iw-clock .iwck-target b{color:var(--ink)}
.iw-clock .iwck-read{margin-top:14px;display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:16px}
.iw-clock .iwck-read b{font-family:var(--mono);font-size:28px;color:var(--ink);letter-spacing:.03em}
.iw-clock .iwck-read span{font-size:16px;color:var(--ink-soft);font-style:italic}
.iw-clock .iwck-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:9px;margin-top:15px}
.iw-clock .iwck-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-clock .iwck-score.ok{color:#4d8f86}.iw-clock .iwck-score.no{color:var(--accent)}
.iw-clock .iwck-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic;text-align:center}

/* ── place value ── */
.iw-pv .iwpv-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-pv .iwpv-ask{margin-top:11px;font-size:15px;color:var(--ink)}
.iw-pv .iwpv-scroll{margin-top:14px;overflow-x:auto}
.iw-pv .iwpv-t{border-collapse:collapse;width:100%;min-width:340px}
.iw-pv .iwpv-t th,.iw-pv .iwpv-t td{border:1px solid var(--rule);text-align:center}
.iw-pv .iwpv-g{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--slate);padding:7px 4px;background:var(--paper);font-weight:600}
.iw-pv .iwpv-g.dec,.iw-pv .iwpv-k.dec{background:rgba(201,160,84,.13)}
.iw-pv .iwpv-k{font-family:var(--mono);font-size:12px;color:var(--ink-soft);padding:5px 4px;font-weight:500;cursor:help}
.iw-pv .iwpv-c{font-family:var(--mono);font-size:24px;color:var(--ink);padding:11px 4px;min-width:38px;background:var(--paper)}
.iw-pv .iwpv-c.dec{background:rgba(201,160,84,.07)}
.iw-pv .iwpv-c.pale{color:var(--rule)}
.iw-pv .iwpv-c input{width:100%;border:0;background:transparent;text-align:center;font-family:var(--mono);
  font-size:23px;color:var(--ink);padding:0}
.iw-pv .iwpv-c input:focus{outline:0;box-shadow:inset 0 0 0 2px var(--accent);border-radius:3px}
.iw-pv .iwpv-c input.ok{color:#3f7c73}.iw-pv .iwpv-c input.no{color:var(--accent)}
.iw-pv .iwpv-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:13px}
.iw-pv .iwpv-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-pv .iwpv-score.ok{color:#4d8f86}.iw-pv .iwpv-score.no{color:var(--accent)}
.iw-pv .iwpv-dec{margin-top:16px;padding:11px 13px;background:var(--paper);border-radius:8px;border-left:3px solid var(--teal)}
.iw-pv .iwpv-dec span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--slate);margin-bottom:5px}
.iw-pv .iwpv-dec b{font-family:var(--mono);font-size:14px;color:var(--ink);font-weight:500;line-height:1.7}
.iw-pv .iwpv-traps{list-style:none;margin:14px 0 0;padding:0}
.iw-pv .iwpv-traps li{font-size:13.5px;color:var(--ink-soft);padding:5px 0;border-bottom:1px dotted var(--rule)}
.iw-pv .iwpv-traps b{font-family:var(--mono);color:var(--ink)}
.iw-pv .iwpv-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── posed operation ── */
.iw-posed .iwpo-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-posed .iwpo-grid{margin:18px 0 0;display:inline-block;padding:6px 2px}
.iw-posed .iwpo-r{display:flex;align-items:stretch;min-height:34px}
.iw-posed .iwpo-c{width:30px;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:23px;color:var(--ink);line-height:1}
.iw-posed .iwpo-c.comma{width:12px;align-items:flex-end;padding-bottom:5px}
.iw-posed .iwpo-c.rule{border-top:2px solid var(--ink)}
.iw-posed .iwpo-c.pale{color:var(--slate);opacity:.55}
.iw-posed .iwpo-mark .iwpo-c{font-size:13px;color:var(--accent);align-items:flex-end;padding-bottom:2px}
.iw-posed .iwpo-r.iwpo-mark{min-height:17px}
.iw-posed .iwpo-part .iwpo-c{color:var(--ink-soft);font-size:21px}
.iw-posed .iwpo-res .iwpo-c{font-weight:600}
.iw-posed .iwpo-c input{width:100%;height:100%;border:0;background:transparent;text-align:center;
  font-family:var(--mono);font-size:22px;color:var(--ink);padding:0}
.iw-posed .iwpo-c input:focus{outline:0;background:var(--paper);box-shadow:inset 0 0 0 2px var(--accent);border-radius:3px}
.iw-posed .iwpo-c input.ok{color:#3f7c73}.iw-posed .iwpo-c input.no{color:var(--accent)}
.iw-posed .iwpo-div{display:flex;align-items:center;padding:0 14px;border-left:2px solid var(--ink);
  font-family:var(--mono);font-size:23px;color:var(--ink);min-width:70px}
.iw-posed .iwpo-div.q{border-top:2px solid var(--ink);font-weight:600}
.iw-posed .iwpo-say{margin-top:16px;font-size:14px;color:var(--ink-soft);padding:10px 13px;
  background:var(--paper);border-radius:8px;border-left:3px solid var(--teal)}
.iw-posed .iwpo-say b{font-family:var(--mono);color:var(--ink)}
.iw-posed .iwpo-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:14px}
.iw-posed .iwpo-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-posed .iwpo-score.ok{color:#4d8f86}.iw-posed .iwpo-score.no{color:var(--accent)}
.iw-posed .iwpo-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── waves ── */
.iw-wv .iwwv-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-wv .iwwv-plot{margin-top:14px;overflow-x:auto}
.iw-wv .iwwv-svg{display:block;width:100%;min-width:440px;height:auto}
.iw-wv .iwwv-ax{stroke:var(--ink);stroke-width:1.5}
.iw-wv .iwwv-gr{stroke:var(--rule);stroke-width:1;stroke-dasharray:3 4}
.iw-wv .iwwv-w{fill:none;stroke-width:2.1}
.iw-wv .iwwv-sum{fill:none;stroke:var(--ink);stroke-width:3.2;opacity:.88}
.iw-wv .iwwv-dim{stroke:var(--gold);stroke-width:1.4}
.iw-wv .iwwv-dimh{fill:var(--gold)}
.iw-wv .iwwv-dt{font-family:var(--mono);font-size:12px;fill:var(--gold);font-weight:600}
.iw-wv .iwwv-al{font-family:var(--mono);font-size:11px;fill:var(--slate)}
.iw-wv .iwwv-read{display:flex;flex-wrap:wrap;gap:9px 18px;margin-top:12px}
.iw-wv .iwwv-chip{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;color:var(--ink-soft)}
.iw-wv .iwwv-chip i{width:14px;height:3.5px;border-radius:2px;display:inline-block;background:var(--ink)}
.iw-wv .iwwv-chip.sum i{height:4.5px}
.iw-wv .iwwv-chip b{color:var(--ink);font-weight:600}
.iw-wv .iwwv-rel{width:100%;font-size:13.5px;color:var(--ink-soft);margin-top:4px}
.iw-wv .iwwv-ctl{margin-top:14px;padding-top:13px;border-top:1px solid var(--rule);display:grid;gap:9px}
.iw-wv .iwwv-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;font-family:var(--mono);font-size:12px}
.iw-wv .iwwv-row>span{min-width:74px;font-weight:600}
.iw-wv .iwwv-row label{display:inline-flex;align-items:center;gap:7px;color:var(--slate)}
.iw-wv .iwwv-row input[type=range]{width:118px}
.iw-wv .iwwv-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── unit conversion ── */
.iw-uc .iwuc-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-uc .iwuc-scroll{margin-top:14px;overflow-x:auto}
.iw-uc .iwuc-t{border-collapse:collapse;width:100%;min-width:400px}
.iw-uc .iwuc-t th,.iw-uc .iwuc-t td{border:1px solid var(--rule);text-align:center}
.iw-uc .iwuc-t th{font-family:var(--mono);font-size:12px;color:var(--ink-soft);padding:7px 4px;background:var(--paper);font-weight:600}
.iw-uc .iwuc-t th.src{background:rgba(140,47,42,.12);color:var(--accent)}
.iw-uc .iwuc-t th.dst{background:rgba(95,163,155,.16);color:#3f7c73}
.iw-uc .iwuc-t td{font-family:var(--mono);font-size:21px;color:var(--ink);padding:9px 4px;background:var(--paper)}
.iw-uc .iwuc-t td.pale{color:var(--rule)}
.iw-uc .iwuc-t td.mark{border-right:3px solid var(--teal)}
.iw-uc .iwuc-conv{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:16px}
.iw-uc .iwuc-v{font:inherit;font-family:var(--mono);font-size:17px;width:8em;padding:6px 9px;
  border:1px solid var(--rule);border-radius:6px;background:var(--paper);color:var(--ink)}
.iw-uc .iwuc-conv select{font:inherit;font-size:14px;padding:6px 8px;border:1px solid var(--rule);
  border-radius:6px;background:var(--paper);color:var(--ink)}
.iw-uc .iwuc-eq{font-family:var(--mono);font-size:19px;color:var(--slate)}
.iw-uc .iwuc-out{font-family:var(--mono);font-size:20px;color:var(--accent);min-width:5em}
.iw-uc .iwuc-say{margin-top:12px;font-size:13.5px;color:var(--ink-soft);line-height:1.7}
.iw-uc .iwuc-say b{color:var(--ink)}
.iw-uc .iwuc-drill{margin-top:18px;padding-top:14px;border-top:1px solid var(--rule)}
.iw-uc .iwuc-dh{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--slate);margin-bottom:10px}
.iw-uc .iwuc-dr{display:flex;align-items:center;gap:9px;padding:5px 0;font-family:var(--mono);font-size:15px;color:var(--ink)}
.iw-uc .iwuc-dr span{min-width:9em;text-align:right}
.iw-uc .iwuc-dr em{font-style:normal;color:var(--slate)}
.iw-uc .iwuc-dr input{font:inherit;width:7em;padding:3px 7px;border:0;border-bottom:1.8px solid var(--rule);
  background:transparent;color:var(--ink);text-align:right}
.iw-uc .iwuc-dr input:focus{outline:0;border-bottom-color:var(--accent)}
.iw-uc .iwuc-dr input.ok{border-bottom-color:#4d8f86;color:#3f7c73}
.iw-uc .iwuc-dr input.no{border-bottom-color:var(--accent);color:var(--accent)}
.iw-uc .iwuc-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:12px}
.iw-uc .iwuc-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-uc .iwuc-score.ok{color:#4d8f86}.iw-uc .iwuc-score.no{color:var(--accent)}
.iw-uc .iwuc-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── energy / Sankey, with parts inside parts ── */
.iw-en .iwen-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-en .iwen-bar{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}
.iw-en .iwen-crumbs{display:flex;align-items:center;gap:4px;flex:1;min-width:0;flex-wrap:wrap}
.iw-en .iwen-crumbs i{font-style:normal;color:var(--slate);opacity:.6}
.iw-en .iwen-cr{font:inherit;font-size:12.5px;color:var(--slate);background:none;border:0;
  padding:3px 6px;border-radius:5px;cursor:pointer;max-width:15em;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.iw-en .iwen-cr:hover{background:var(--paper);color:var(--ink)}
.iw-en .iwen-cr.now{color:var(--ink);font-weight:600;cursor:default}
.iw-en .iwen-cr.now:hover{background:none}
.iw-en .iwen-zoomer{display:flex;align-items:center;gap:2px}
.iw-en .iwen-zb{font:inherit;font-family:var(--mono);font-size:12px;line-height:1;color:var(--slate);
  background:var(--paper);border:1px solid var(--rule);border-radius:6px;padding:5px 8px;cursor:pointer;
  min-width:28px}
.iw-en .iwen-zb:hover{color:var(--ink);border-color:var(--slate)}
.iw-en .iwen-zr{min-width:52px}
.iw-en .iwen-zr.act{color:var(--accent);border-color:var(--accent)}
.iw-en .iwen-stage{position:relative;margin-top:10px;overflow:auto;max-height:72vh;
  background:var(--paper);border-radius:9px;padding:0}
.iw-en .iwen-pane{position:relative;transition:width .25s ease,height .25s ease}
.iw-en .iwen-zoom{position:absolute;top:0;left:0;transform-origin:0 0;transition:transform .25s ease}
.iw-en .iwen-svg{position:absolute;top:0;left:0;display:block;overflow:visible}
.iw-en .iwen-plates{position:absolute;top:0;left:0;right:0;bottom:0}
.iw-en .iwen-f{opacity:.5}
.iw-en .iwen-plate{position:absolute;left:0;top:0;display:flex;flex-direction:column;
  justify-content:center;gap:2px;overflow:hidden;text-align:left;font:inherit;color:#fff;
  border:0;border-radius:5px;padding:5px 9px;cursor:default;line-height:1.25;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
/* A pale plate needs dark type — but not var(--ink), which goes near-white in
   the dark theme while this background stays the colour the author chose. */
.iw-en .iwen-plate.on-pale{color:#0b0e12}
.iw-en .iwen-plate.has-parts{cursor:pointer}
.iw-en .iwen-plate.has-parts:hover{box-shadow:inset 0 0 0 2px rgba(0,0,0,.28)}
.iw-en .iwen-plate.is-focus{cursor:pointer;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
.iw-en .iwen-plate.is-sel{box-shadow:inset 0 0 0 2px var(--ink)}
.iw-en .iwen-plate:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
/* clamped to however many lines the block is tall enough for, set in draw() —
   a label is cut off cleanly with an ellipsis rather than sliced in half */
.iw-en .iwen-pl{font-size:12.5px;font-weight:600;overflow:hidden;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.iw-en .iwen-pl sub,.iw-en .iwen-pl sup{font-size:.72em}
/* the amount is set apart by weight, not by fading it — fading costs the
   contrast the ink colour was chosen to guarantee */
.iw-en .iwen-pv{font-family:var(--mono);font-size:10.5px;font-weight:400;white-space:nowrap}
.iw-en .iwen-pk{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;
  opacity:.72;white-space:nowrap}
.iw-en .iwen-plate.has-parts .iwen-pk::before{content:'▸ '}
.iw-en .iwen-plate.is-focus .iwen-pk{display:none}
.iw-en .iwen-plate.sm{padding:3px 8px}
.iw-en .iwen-plate.sm .iwen-pv,.iw-en .iwen-plate.sm .iwen-pk{display:none}
.iw-en .iwen-plate.sm .iwen-pl{font-size:11px;white-space:nowrap;text-overflow:ellipsis}
.iw-en .iwen-plate.xs .iwen-pl{display:none}
.iw-en .iwen-detail{margin-top:11px;font-size:13.5px;line-height:1.65;color:var(--ink-soft);
  padding:9px 12px;background:var(--paper);border-radius:7px}
.iw-en .iwen-detail b{color:var(--ink)}
.iw-en .iwen-eff{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:16px}
.iw-en .iwen-eff span{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--slate)}
.iw-en .iwen-track{flex:1;min-width:130px;height:9px;border-radius:5px;background:var(--paper);overflow:hidden}
.iw-en .iwen-track i{display:block;height:100%;background:var(--teal)}
.iw-en .iwen-eff b{font-family:var(--mono);font-size:14px;color:var(--ink)}
.iw-en .iwen-warn{margin-top:12px;font-size:13.5px;color:var(--accent);padding:9px 12px;
  background:rgba(140,47,42,.07);border-radius:7px;border-left:3px solid var(--accent)}
.iw-en .iwen-warn div+div{margin-top:5px}
.iw-en .iwen-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}
@media (prefers-reduced-motion: reduce){
  .iw-en .iwen-pane,.iw-en .iwen-zoom{transition:none}
}
@media print{
  .iw-en .iwen-zoomer{display:none}
  .iw-en .iwen-stage{overflow:visible;max-height:none}
  .iw-en .iwen-plate.has-parts .iwen-pk{display:none}
}

/* ── oscillogram ── */
.iw-os .iwos-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-os .iwos-set{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:13px;font-family:var(--mono);
  font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--slate)}
.iw-os .iwos-set b{color:var(--ink);font-weight:600;letter-spacing:0;text-transform:none}
.iw-os .iwos-ch{display:inline-flex;align-items:center;gap:6px;color:var(--ink);text-transform:none;letter-spacing:0}
.iw-os .iwos-ch::before{content:'';width:15px;height:3px;border-radius:2px;background:var(--cc)}
.iw-os .iwos-svg{display:block;width:100%;height:auto;margin-top:10px;touch-action:none}
.iw-os .iwos-bg{fill:var(--paper)}
.iw-os .iwos-g{stroke:var(--rule);stroke-width:.8}
.iw-os .iwos-g.mid{stroke:var(--slate);stroke-width:1.2;opacity:.6}
.iw-os .iwos-tr{fill:none;stroke-width:2.1;stroke-linejoin:round;stroke-linecap:round}
.iw-os .iwos-ax{font-family:var(--mono);font-size:10.5px;fill:var(--slate)}
.iw-os .iwos-cl{stroke:var(--accent);stroke-width:1.3;stroke-dasharray:5 4}
.iw-os .iwos-tab{fill:var(--accent)}
.iw-os .iwos-hit{stroke:transparent;stroke-width:15}
.iw-os .iwos-cur{cursor:ew-resize}
.iw-os .iwos-cur.h{cursor:ns-resize}
.iw-os .iwos-cur:hover .iwos-cl{stroke-width:2}
.iw-os .iwos-svg.scope .iwos-bg{fill:#0b1416}
.iw-os .iwos-svg.scope .iwos-g{stroke:#2b4a44}
.iw-os .iwos-svg.scope .iwos-g.mid{stroke:#4d7a70;opacity:1}
.iw-os .iwos-read{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:14px}
.iw-os .iwos-read span{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--slate)}
.iw-os .iwos-read b{font-family:var(--mono);font-size:15px;color:var(--accent);min-width:6.5em}
.iw-os .iwos-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── light spectra ── */
.iw-sp .iwsp-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-sp .iwsp-svg{display:block;width:100%;height:auto;margin-top:14px}
.iw-sp .iwsp-axl,.iw-sp .iwsp-tk{stroke:var(--rule);stroke-width:1}
.iw-sp .iwsp-tl{font-family:var(--mono);font-size:10.5px;fill:var(--slate)}
.iw-sp .iwsp-mk line{stroke:transparent;stroke-width:2.4}
.iw-sp .iwsp-mk.on line{stroke:var(--ink)}
.iw-sp .iwsp-hit{fill:transparent;cursor:pointer}
.iw-sp .iwsp-mk.on .iwsp-hit{fill:rgba(255,255,255,.14);stroke:var(--ink);stroke-width:1.2}
.iw-sp .iwsp-read{margin-top:10px;font-size:14px;color:var(--ink-soft);min-height:1.5em}
.iw-sp .iwsp-read b{font-family:var(--mono);color:var(--ink)}
.iw-sp .iwsp-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.iw-sp .iwsp-chip{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:13px;
  background:var(--paper);border:1.3px solid var(--rule);border-radius:7px;padding:4px 10px;
  cursor:pointer;color:var(--ink)}
.iw-sp .iwsp-chip i{width:11px;height:11px;border-radius:2px;flex:none}
.iw-sp .iwsp-chip.on{border-color:var(--accent);color:var(--accent)}
.iw-sp .iwsp-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── algorithm and trace table ── */
.iw-al .iwal-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-al .iwal-grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(240px,1.15fr);
  gap:16px;margin-top:14px;align-items:start}
@media (max-width:620px){.iw-al .iwal-grid{grid-template-columns:1fr}}
.iw-al .iwal-code{margin:0;padding:12px 12px 12px 40px;background:var(--paper);border-radius:9px;
  counter-reset:none;list-style:decimal;color:var(--slate)}
.iw-al .iwal-code li{font-family:var(--mono);font-size:13px;line-height:1.75;padding:0 4px;border-radius:4px}
.iw-al .iwal-code li code{color:var(--ink);white-space:pre-wrap}
.iw-al .iwal-code li.on{background:rgba(140,47,42,.1);box-shadow:-3px 0 0 var(--accent)}
.iw-al .iwal-tw{overflow-x:auto}
.iw-al .iwal-t{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:12.5px}
.iw-al .iwal-t th{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);
  text-align:left;padding:6px 9px;border-bottom:1.4px solid var(--rule);white-space:nowrap}
.iw-al .iwal-t td{padding:5px 9px;border-bottom:1px solid var(--rule);color:var(--ink)}
.iw-al .iwal-t .iwal-ln,.iw-al .iwal-t td:first-child{color:var(--slate)}
.iw-al .iwal-t .iwal-out{color:var(--accent)}
.iw-al .iwal-t tr.now td{background:rgba(140,47,42,.08)}
.iw-al .iwal-t input{font:inherit;width:5em;padding:2px 5px;border:0;border-bottom:1.6px solid var(--rule);
  background:transparent;color:var(--ink)}
.iw-al .iwal-t input:focus{outline:0;border-bottom-color:var(--accent)}
.iw-al .iwal-t input.ok{border-bottom-color:#4d8f86;color:#3f7c73}
.iw-al .iwal-t input.no{border-bottom-color:var(--accent);color:var(--accent)}
.iw-al .iwal-act{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:14px}
.iw-al .iwal-n{font-family:var(--mono);font-size:13px;color:var(--slate);min-width:4.5em;text-align:center}
.iw-al .iwal-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-al .iwal-score.ok{color:#4d8f86}.iw-al .iwal-score.no{color:var(--accent)}
.iw-al .iwal-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}
@media print{
  .iw-al .iwal-act button,.iw-al .iwal-n{display:none}
  .iw-al .iwal-code li.on{background:none;box-shadow:none}
  .iw-os .iwos-read button{display:none}
}

/* ── tableau d'avancement ── */
.iw-av .iwav-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-av .iwav-eq{font-family:var(--mono);font-size:16px;color:var(--ink);text-align:center;
  margin-top:14px;padding:10px 12px;background:var(--paper);border-radius:8px}
.iw-av .iwav-tw{overflow-x:auto;margin-top:14px}
.iw-av .iwav-t{border-collapse:collapse;width:100%;font-size:13.5px;min-width:440px}
.iw-av .iwav-t th{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--slate);text-align:left;padding:7px 10px;border-bottom:1.6px solid var(--rule);white-space:nowrap}
.iw-av .iwav-t td{padding:8px 10px;border-bottom:1px solid var(--rule);color:var(--ink);
  font-family:var(--mono);white-space:nowrap}
.iw-av .iwav-t td:first-child{font-family:inherit;color:var(--slate)}
.iw-av .iwav-x{color:var(--accent)}
.iw-av .iwav-sym{color:var(--ink-soft)}
.iw-av .iwav-final td{border-bottom:0;font-weight:600}
.iw-av .iwav-t input{font:inherit;font-family:var(--mono);width:6em;padding:2px 6px;border:0;
  border-bottom:1.7px solid var(--rule);background:transparent;color:var(--ink);text-align:right}
.iw-av .iwav-t input:focus{outline:0;border-bottom-color:var(--accent)}
.iw-av .iwav-t input.ok{border-bottom-color:#4d8f86;color:#3f7c73}
.iw-av .iwav-t input.no{border-bottom-color:var(--accent);color:var(--accent)}
.iw-av .iwav-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:14px}
.iw-av .iwav-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-av .iwav-score.ok{color:#4d8f86}.iw-av .iwav-score.no{color:var(--accent)}
.iw-av .iwav-say{margin-top:14px;font-size:14px;line-height:1.7;color:var(--ink-soft);
  padding:10px 13px;background:var(--paper);border-radius:8px;border-left:3px solid var(--teal)}
.iw-av .iwav-say.hid{display:none}
.iw-av .iwav-say b{color:var(--ink)}
.iw-av .iwav-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── sécurité : pictogrammes SGH ── */
.iw-hz .iwhz-prod{font-size:14.5px;color:var(--ink-soft);margin-top:2px}
.iw-hz .iwhz-row{display:flex;flex-wrap:wrap;gap:16px;margin-top:15px}
.iw-hz .iwhz-p{margin:0;width:96px;text-align:center;color:#1a1a1a}
.iw-hz .iwhz-p svg{display:block;width:76px;height:76px;margin:0 auto}
.iw-hz .iwhz-dm{fill:#fff;stroke:#d0021b;stroke-width:3.4}
.iw-hz .iwhz-p figcaption{font-size:11px;line-height:1.35;color:var(--slate);margin-top:5px}
.iw-hz .iwhz-st{margin:16px 0 0;display:grid;gap:7px}
.iw-hz .iwhz-st>div{display:grid;grid-template-columns:4.2em 1fr;gap:10px;align-items:baseline;
  padding:7px 11px;border-radius:7px;background:var(--paper)}
.iw-hz .iwhz-st>div.h{border-left:3px solid var(--accent)}
.iw-hz .iwhz-st>div.p{border-left:3px solid var(--teal)}
.iw-hz .iwhz-st dt{font-family:var(--mono);font-size:12.5px;font-weight:600;color:var(--ink)}
.iw-hz .iwhz-st dd{margin:0;font-size:13.5px;line-height:1.6;color:var(--ink-soft)}
.iw-hz .iwhz-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── vrai / faux / non mentionné ── */
.iw-tf .iwtf-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-tf .iwtf-list{margin:14px 0 0;padding-left:1.5em;display:grid;gap:11px}
.iw-tf .iwtf-i{padding:10px 12px;border-radius:8px;background:var(--paper);
  border-left:3px solid transparent}
.iw-tf .iwtf-i.ok{border-left-color:#4d8f86}
.iw-tf .iwtf-i.no{border-left-color:var(--accent)}
.iw-tf .iwtf-q{font-size:14.5px;line-height:1.65;color:var(--ink)}
.iw-tf .iwtf-opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.iw-tf .iwtf-o{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--ink);
  background:var(--paper-deep);border:1.3px solid var(--rule);border-radius:20px;padding:4px 12px;cursor:pointer}
.iw-tf .iwtf-o:has(input:checked){border-color:var(--accent);color:var(--accent)}
.iw-tf .iwtf-j{margin-top:9px;font-size:13.5px;line-height:1.65;color:var(--ink-soft);
  padding-top:8px;border-top:1px solid var(--rule)}
.iw-tf .iwtf-j b{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--slate);display:block;margin-bottom:3px}
.iw-tf .iwtf-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:14px}
.iw-tf .iwtf-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-tf .iwtf-score.ok{color:#4d8f86}.iw-tf .iwtf-score.no{color:var(--accent)}
.iw-tf .iwtf-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── les bons réflexes ── */
.iw-rf .iwrf-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-rf .iwrf-head{display:grid;grid-template-columns:1fr 1.6fr;gap:16px;margin-top:14px;
  font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate)}
.iw-rf .iwrf-head span{padding:5px 10px;background:var(--paper-deep);border-radius:5px}
.iw-rf .iwrf-rows{display:grid;gap:2px;margin-top:8px}
.iw-rf .iwrf-r{display:grid;grid-template-columns:1fr 1.6fr;gap:16px;padding:12px 0;
  border-top:1px solid var(--rule)}
.iw-rf .iwrf-ask{font-size:14px;line-height:1.6;color:var(--ink);font-weight:600}
.iw-rf .iwrf-badge{display:flex;flex-wrap:wrap;align-items:center;gap:10px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--accent);margin-bottom:6px}
.iw-rf .iwrf-badge i{font-style:normal;color:var(--slate);letter-spacing:0;text-transform:none;font-size:12px}
.iw-rf .iwrf-do ul{margin:0;padding-left:1.15em;display:grid;gap:5px}
.iw-rf .iwrf-do li{font-size:14px;line-height:1.6;color:var(--ink-soft)}
@media (max-width:620px){.iw-rf .iwrf-head{display:none}.iw-rf .iwrf-r{grid-template-columns:1fr;gap:8px}}
.iw-rf .iwrf-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── à chacun son rythme ── */
.iw-tt .iwtt-ctx{font-size:14.5px;line-height:1.75;color:var(--ink-soft);margin-top:2px}
.iw-tt .iwtt-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.iw-tt .iwtt-tab{font:inherit;font-size:13px;color:var(--slate);background:var(--paper);
  border:1.3px solid var(--rule);border-radius:20px;padding:5px 14px;cursor:pointer}
.iw-tt .iwtt-tab:hover{color:var(--ink)}
.iw-tt .iwtt-tab.on{background:var(--accent);border-color:var(--accent);color:#fff}
.iw-tt .iwtt-hint{margin-top:10px;font-size:13px;color:var(--slate);font-style:italic}
.iw-tt .iwtt-pane{display:none;margin-top:12px;font-size:14.5px;line-height:1.75;color:var(--ink)}
.iw-tt .iwtt-pane.on{display:block}
.iw-tt .iwtt-pane ol{margin:0;padding-left:1.4em;display:grid;gap:8px}
.iw-tt .iwtt-data{margin-top:13px;font-size:13.5px;color:var(--ink-soft);padding:9px 12px;
  background:var(--paper);border-radius:7px}
.iw-tt .iwtt-data b{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--slate);display:block;margin-bottom:3px}
.iw-tt .iwtt-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}
@media print{.iw-tt .iwtt-tabs{display:none}.iw-tt .iwtt-pane{display:block}}

/* ── prononciation et accent tonique ── */
.iw-ph .iwph-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-ph .iwph-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:11px;margin-top:14px}
.iw-ph .iwph-w{padding:11px 13px;background:var(--paper);border-radius:9px}
.iw-ph .iwph-sy{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px}
.iw-ph .iwph-sy i{font-style:normal;color:var(--slate);opacity:.5}
.iw-ph .iwph-syl{font:inherit;font-size:16px;color:var(--ink);background:none;border:0;
  border-bottom:2px solid transparent;padding:1px 3px;border-radius:3px}
.iw-ph button.iwph-syl{cursor:pointer}
.iw-ph button.iwph-syl:hover{background:var(--paper-deep)}
.iw-ph .iwph-syl.on{font-weight:700;border-bottom-color:var(--accent);color:var(--accent)}
.iw-ph .iwph-syl.ok{border-bottom-color:#4d8f86;color:#3f7c73}
.iw-ph .iwph-syl.no{border-bottom-color:var(--accent);color:var(--accent);text-decoration:line-through}
.iw-ph .iwph-ipa{font-family:var(--mono);font-size:13.5px;color:var(--teal);margin-top:4px}
.iw-ph .iwph-note-w{font-size:12.5px;color:var(--slate);margin-top:4px;line-height:1.5}
.iw-ph .iwph-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px}
.iw-ph .iwph-say{font-size:13px;color:var(--slate);font-style:italic}
.iw-ph .iwph-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-ph .iwph-score.ok{color:#4d8f86}.iw-ph .iwph-score.no{color:var(--accent)}
.iw-ph .iwph-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── formule annotée ── */
.iw-fo .iwfo-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-fo .iwfo-stage{position:relative;margin-top:14px;padding:4px 0;background:var(--paper);
  border-radius:9px;overflow:hidden}
.iw-fo .iwfo-lead{position:absolute;top:0;left:0;pointer-events:none}
.iw-fo .iwfo-p{fill:none;stroke:var(--slate);stroke-width:1.2;opacity:.65}
/* height is set from JS: one row per rank of stacked labels */
.iw-fo .iwfo-band{position:relative;height:21px}
.iw-fo .iwfo-band.up{margin-bottom:2px}
.iw-fo .iwfo-band.down{margin-top:2px}
/* a label longer than the column wraps rather than pushing the stage sideways */
.iw-fo .iwfo-l.wrap{white-space:normal;line-height:15px;height:auto}
.iw-fo .iwfo-l{position:absolute;white-space:nowrap;max-width:100%;font-family:var(--mono);font-size:11.5px;
  line-height:17px;height:17px;color:var(--slate);padding:0 5px;background:var(--paper);border-radius:4px}

.iw-fo .iwfo-eq{position:relative;display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;
  gap:0 .42em;font-size:22px;color:var(--ink);padding:6px 10px}
.iw-fo .iwfo-tk{white-space:nowrap}
.iw-fo .iwfo-orphan{margin-top:9px;font-size:13px;color:var(--accent)}
.iw-fo .iwfo-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── spectre IR / UV-visible ── */
.iw-ab .iwab-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-ab .iwab-svg{display:block;width:100%;height:auto;margin-top:14px}
.iw-ab .iwab-g{stroke:var(--rule);stroke-width:.7}
.iw-ab .iwab-g.h{stroke-dasharray:3 4}
.iw-ab .iwab-ay{stroke:var(--slate);stroke-width:1.3}
.iw-ab .iwab-ax{font-family:var(--mono);font-size:10.5px;fill:var(--slate)}
.iw-ab .iwab-al{font-family:var(--mono);font-size:11.5px;fill:var(--ink)}
.iw-ab .iwab-c{fill:none;stroke:var(--ink);stroke-width:1.9;stroke-linejoin:round}
.iw-ab .iwab-b{fill:var(--accent);opacity:.09;cursor:pointer}
.iw-ab .iwab-b:hover{opacity:.16}
.iw-ab .iwab-b.on{opacity:.22}
.iw-ab .iwab-t{font-family:var(--mono);font-size:10.5px;fill:var(--accent);pointer-events:none}
.iw-ab .iwab-mk{stroke:var(--accent);stroke-width:1.2;stroke-dasharray:4 3}
.iw-ab .iwab-mkt{font-family:var(--mono);font-size:11px;fill:var(--accent)}
.iw-ab .iwab-key{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.iw-ab .iwab-kc{font-size:13px;color:var(--ink);background:var(--paper);border:1.3px solid var(--rule);
  border-radius:7px;padding:4px 10px;cursor:pointer}
.iw-ab .iwab-kc i{font-style:normal;font-family:var(--mono);font-size:11.5px;color:var(--slate)}
.iw-ab .iwab-kc.on{border-color:var(--accent);color:var(--accent)}
.iw-ab .iwab-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── courbe d'étalonnage ── */
.iw-cb .iwcb-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-cb .iwcb-svg{display:block;width:100%;height:auto;margin-top:14px}
.iw-cb .iwcb-g{stroke:var(--rule);stroke-width:.7}
.iw-cb .iwcb-ay{stroke:var(--slate);stroke-width:1.3}
.iw-cb .iwcb-ax{font-family:var(--mono);font-size:10.5px;fill:var(--slate)}
.iw-cb .iwcb-al{font-family:var(--mono);font-size:11.5px;fill:var(--ink)}
.iw-cb .iwcb-dom{fill:var(--teal);opacity:.08}
.iw-cb .iwcb-domt{font-family:var(--mono);font-size:10.5px;fill:var(--teal)}
.iw-cb .iwcb-fit{stroke:var(--accent);stroke-width:1.9}
.iw-cb .iwcb-pt line{stroke:var(--ink);stroke-width:1.7}
.iw-cb .iwcb-read{fill:none;stroke:var(--slate);stroke-width:1.4;stroke-dasharray:5 4}
.iw-cb .iwcb-hit{fill:var(--accent)}
.iw-cb .iwcb-rt{font-family:var(--mono);font-size:11px;fill:var(--ink)}
.iw-cb .iwcb-say{margin-top:13px;font-size:14px;line-height:1.7;color:var(--ink-soft);
  padding:10px 13px;background:var(--paper);border-radius:8px;border-left:3px solid var(--accent)}
.iw-cb .iwcb-say b{font-family:var(--mono);color:var(--ink)}
.iw-cb .iwcb-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── sort into bins ── */
.iw-sb .iwsb-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-sb .iwsb-pool{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding:13px;min-height:60px;
  background:var(--paper);border:1px dashed var(--rule);border-radius:9px}
.iw-sb .iwsb-pool.over,.iw-sb .iwsb-drop.over{border-color:var(--accent);background:rgba(140,47,42,.05)}
.iw-sb .iwsb-chip{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:14px;
  background:var(--paper-deep);border:1.4px solid var(--rule);border-radius:7px;padding:6px 12px;
  cursor:grab;color:var(--ink)}
.iw-sb .iwsb-chip img{width:26px;height:26px;object-fit:cover;border-radius:4px}
.iw-sb .iwsb-chip.sel{border-color:var(--accent);box-shadow:0 0 0 3px rgba(140,47,42,.16)}
.iw-sb .iwsb-chip.ok{border-color:#4d8f86;color:#3f7c73}
.iw-sb .iwsb-chip.no{border-color:var(--accent);color:var(--accent)}
.iw-sb .iwsb-bins{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:14px}
.iw-sb .iwsb-bin{border:1.6px solid var(--bc);border-radius:9px;overflow:hidden;background:var(--paper)}
.iw-sb .iwsb-bh{background:var(--bc);color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;padding:7px 11px;font-weight:600}
.iw-sb .iwsb-drop{display:flex;flex-wrap:wrap;gap:7px;padding:11px;min-height:64px;align-content:flex-start}
.iw-sb .iwsb-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:15px}
.iw-sb .iwsb-score{font-family:var(--mono);font-size:13.5px;font-weight:600}
.iw-sb .iwsb-score.ok{color:#4d8f86}.iw-sb .iwsb-score.no{color:var(--accent)}
.iw-sb .iwsb-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── rubric ── */
.iw-rb .iwrb-intro{font-size:14.5px;color:var(--ink-soft)}
.iw-rb .iwrb-scroll{margin-top:14px;overflow-x:auto}
.iw-rb .iwrb-t{border-collapse:collapse;width:100%;min-width:520px}
.iw-rb .iwrb-t th,.iw-rb .iwrb-t td{border:1px solid var(--rule);padding:9px 11px;vertical-align:middle}
.iw-rb .iwrb-t thead th{background:var(--paper);text-align:center;vertical-align:bottom}
.iw-rb .iwrb-t thead th span{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-soft);font-weight:600;line-height:1.35}
.iw-rb .iwrb-t thead th em{display:block;font-family:var(--mono);font-size:11px;color:var(--slate);font-style:normal;margin-top:3px}
.iw-rb .iwrb-ch{text-align:left!important;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--slate)}
.iw-rb .iwrb-c{text-align:left;background:var(--paper);max-width:280px}
.iw-rb .iwrb-c b{display:block;font-size:14.5px;color:var(--ink);font-weight:600}
.iw-rb .iwrb-c span{display:block;font-size:12.5px;color:var(--ink-soft);margin-top:3px;line-height:1.5}
.iw-rb .iwrb-c i{display:inline-block;font-family:var(--mono);font-size:11px;color:var(--slate);font-style:normal;margin-top:4px}
.iw-rb .iwrb-t tbody td{text-align:center}
.iw-rb .iwrb-t tbody label{display:inline-flex;cursor:pointer}
.iw-rb .iwrb-t tbody input{position:absolute;opacity:0;width:0;height:0}
.iw-rb .iwrb-t tbody label i{width:20px;height:20px;border-radius:50%;border:2px solid var(--rule);display:block;transition:.12s}
.iw-rb .iwrb-t tbody label:hover i{border-color:var(--accent)}
.iw-rb .iwrb-t tbody input:checked+i{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3.5px var(--paper)}
.iw-rb .iwrb-t tbody input:focus-visible+i{box-shadow:0 0 0 3px rgba(140,47,42,.25)}
.iw-rb .iwrb-out{display:flex;flex-wrap:wrap;align-items:center;gap:13px;margin-top:16px}
.iw-rb .iwrb-track{flex:1;min-width:120px;height:9px;border-radius:5px;background:var(--paper);overflow:hidden}
.iw-rb .iwrb-track i{display:block;height:100%;width:0;background:var(--teal);transition:width .18s}
.iw-rb .iwrb-mark{font-family:var(--mono);font-size:19px;color:var(--ink);font-weight:600}
.iw-rb .iwrb-mark.ok{color:#4d8f86}.iw-rb .iwrb-mark.no{color:var(--accent)}
.iw-rb .iwrb-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── GIF / animation ── */
.iw-gif{margin:44px 0}
.iw-gif .iwgif-fig{margin:0;width:var(--gw,100%)}
.iw-gif .iwgif-center{margin-left:auto;margin-right:auto}
.iw-gif .iwgif-right{margin-left:auto}
.iw-gif .iwgif-stage{position:relative;border-radius:8px;overflow:hidden;background:var(--paper-deep);
  border:1px solid var(--rule);line-height:0}
.iw-gif .iwgif-hold{line-height:0}
.iw-gif .iwgif-media{display:block;width:100%;height:auto}
.iw-gif .iwgif-blank{width:100%;aspect-ratio:16/9;background:var(--paper-deep)}
.iw-gif .iwgif-empty{display:flex;align-items:center;justify-content:center;width:100%;min-height:220px;
  border:2px dashed var(--rule);border-radius:8px;background:var(--paper-deep);
  font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);line-height:1.4}
/* the big badge only while paused, the small bar only on hover or focus */
.iw-gif .iwgif-play{position:absolute;inset:0;margin:auto;width:64px;height:64px;border-radius:50%;
  border:0;cursor:pointer;background:rgba(20,20,24,.6);backdrop-filter:blur(2px);transition:.15s}
.iw-gif .iwgif-play::after{content:"";position:absolute;top:50%;left:53%;transform:translate(-50%,-50%);
  border-style:solid;border-width:12px 0 12px 19px;border-color:transparent transparent transparent #fff}
.iw-gif .iwgif-play:hover{background:var(--accent);transform:scale(1.06)}
.iw-gif .iwgif-stage.on .iwgif-play{display:none}
.iw-gif .iwgif-bar{position:absolute;right:9px;bottom:9px;display:flex;align-items:center;gap:6px;
  opacity:0;transition:opacity .15s;line-height:1}
.iw-gif .iwgif-stage:hover .iwgif-bar,.iw-gif .iwgif-stage:focus-within .iwgif-bar,
.iw-gif .iwgif-stage.on .iwgif-bar{opacity:1}
.iw-gif .iwgif-b{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;
  border:0;border-radius:5px;padding:5px 10px;cursor:pointer;background:rgba(20,20,24,.72);color:#fff}
.iw-gif .iwgif-b:hover{background:var(--accent)}
.iw-gif .iwgif-tag{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;
  padding:4px 7px;border-radius:4px;background:rgba(20,20,24,.55);color:rgba(255,255,255,.8)}
.iw-gif figcaption{margin-top:10px;font-size:13.5px;line-height:1.6;color:var(--ink-soft)}
.iw-gif figcaption em{display:block;margin-top:3px;font-size:12px;color:var(--slate);font-style:normal}
.iw-gif .iwgif-note{margin-top:10px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* imported meshes that had to be thinned to stay drawable */
.iw-3d .iw3d-facts .iw3d-warn{color:var(--accent)}
.iw-3d .iw3d-facts .iw3d-warn b{color:var(--accent)}

/* embed */
.iw-embed{margin:44px 0}
.iw-embed-frame{width:100%;border:1px solid var(--rule);border-radius:6px;display:block;background:#fff}

/* the fair test, on the lab card */
.iw-lab .ilab-vars{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.iw-lab .ilab-vars>div{border:1px solid var(--rule);border-radius:8px;padding:10px 12px;min-width:0}
.iw-lab .ilab-vars em{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--slate);font-style:normal;margin-bottom:6px;line-height:1.5}
.iw-lab .ilab-vars span{display:block;font-size:13.5px;line-height:1.6;overflow-wrap:anywhere}
.iw-lab .ilab-vars span+span{margin-top:3px;padding-top:3px;border-top:1px dotted var(--rule)}

/* ── keyboard: the piano as a ruler for pitch ── */
.iw-kb .iwkb-intro,.iw-cf .iwcf-intro,.iw-rg .iwrg-intro,.iw-cb .iwcb-intro{
  font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:14px}
.iw-kb .iwkb-stage{overflow-x:auto;padding-bottom:2px}
.iw-kb .iwkb-keys{position:relative;display:flex;height:132px;min-width:280px;
  border:1px solid var(--ink);border-radius:0 0 6px 6px;background:var(--ink)}
.iw-kb .iwkb-k{font:inherit;padding:0;cursor:pointer;border:0;display:flex;align-items:flex-end;
  justify-content:center}
.iw-kb .iwkb-k.w{flex:1;background:#fbfaf7;border-right:1px solid var(--ink);border-radius:0 0 4px 4px;
  min-width:22px}
.iw-kb .iwkb-k.w:last-child{border-right:0}
.iw-kb .iwkb-k.b{position:absolute;top:0;width:calc(100% / 14 * 0.58);max-width:34px;height:60%;
  background:#14161c;border-radius:0 0 4px 4px;z-index:2}
.iw-kb .iwkb-k.w span{font-family:var(--mono);font-size:10px;color:var(--slate);padding-bottom:7px;
  border-radius:20px;min-width:18px;line-height:1.6}
.iw-kb .iwkb-k.b span{font-family:var(--mono);font-size:8.5px;color:#fff;padding-bottom:5px}
.iw-kb .iwkb-k.on.w{background:var(--accent-soft)}
.iw-kb .iwkb-k.on.w span{background:var(--accent);color:#fff;padding:2px 6px;margin-bottom:6px}
.iw-kb .iwkb-k.on.b{background:var(--accent)}
.iw-kb .iwkb-k.ok.w{background:#cfe8d6}
.iw-kb .iwkb-k.ok.b{background:var(--teal)}
.iw-kb .iwkb-k.no{background:var(--accent) !important}
.iw-kb .iwkb-k:hover{filter:brightness(.94)}
.iw-kb .iwkb-read{margin-top:12px;font-size:14px;line-height:1.7;color:var(--ink-soft);min-height:1.8em}
.iw-kb .iwkb-read span{display:inline-block;margin-right:14px;font-family:var(--mono);font-size:12.5px}
.iw-kb .iwkb-read i{display:block;margin-top:3px;color:var(--accent);font-family:var(--mono);font-size:12.5px}
.iw-kb .iwkb-read b.ok{color:var(--teal)}
.iw-kb .iwkb-hint{color:var(--slate);font-style:italic;font-family:inherit}
.iw-kb .iwkb-note,.iw-cf .iwcf-note,.iw-rg .iwrg-note,.iw-cb .iwcb-note{
  margin-top:12px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── fifths ── */
.iw-cf .iwcf-wheel{text-align:center}
.iw-cf .iwcf-wheel svg{width:min(330px,86vw);height:auto}
.iw-cf .iwcf-seg{cursor:pointer;stroke:var(--paper);stroke-width:2;transition:fill .15s}
.iw-cf .iwcf-seg.maj{fill:var(--paper-deep)}
.iw-cf .iwcf-seg.min{fill:var(--rule);opacity:.5}
.iw-cf .iwcf-seg:hover{fill:var(--accent-soft)}
.iw-cf .iwcf-seg.on{fill:var(--accent);opacity:1}
.iw-cf .iwcf-maj{fill:var(--ink);font-size:15px;font-weight:600;text-anchor:middle;pointer-events:none}
.iw-cf .iwcf-min{fill:var(--slate);font-size:12px;text-anchor:middle;pointer-events:none}
.iw-cf .iwcf-maj.on,.iw-cf .iwcf-min.on{fill:#fff}
.iw-cf .iwcf-c1,.iw-cf .iwcf-c2{fill:var(--slate);font-family:var(--mono);font-size:9px;
  letter-spacing:.14em;text-anchor:middle;text-transform:uppercase}
.iw-cf .iwcf-read{margin-top:14px;text-align:center;font-size:14px;line-height:1.8;color:var(--ink-soft);
  min-height:1.8em;overflow-wrap:anywhere}
.iw-cf .iwcf-hint{color:var(--slate);font-style:italic}

/* ── rhythmgrid ── */
.iw-rg .iwrg-head{display:flex;align-items:center;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.iw-rg .iwrg-sig{display:flex;flex-direction:column;line-height:.95;font-family:var(--serif);
  font-size:22px;font-weight:700;color:var(--ink)}
.iw-rg .iwrg-kind{font-family:var(--mono);font-size:11px;color:var(--slate)}
.iw-rg .iwrg-bar{border:1px solid var(--rule);border-left:4px solid var(--rule);border-radius:0 8px 8px 0;
  padding:11px 14px;margin-bottom:10px}
.iw-rg .iwrg-bar.ok{border-left-color:var(--teal)}
.iw-rg .iwrg-bar.short{border-left-color:var(--gold)}
.iw-rg .iwrg-bar.over{border-left-color:var(--accent)}
.iw-rg .iwrg-notes{display:flex;align-items:flex-end;gap:3px;min-height:44px}
.iw-rg .iwrg-n{display:flex;align-items:flex-end;justify-content:center;background:var(--paper-deep);
  border-radius:4px;min-width:0;padding:4px 0}
.iw-rg .iwrg-n.rest{background:transparent;border:1px dashed var(--rule)}
.iw-rg .iwrg-n i{font-style:normal;font-size:22px;line-height:1;color:var(--ink)}
.iw-rg .iwrg-count{display:flex;gap:3px;margin-top:5px}
.iw-rg .iwrg-count span{flex:1;text-align:center;font-family:var(--mono);font-size:10px;color:var(--slate)}
.iw-rg .iwrg-sum{margin-top:7px;font-family:var(--mono);font-size:11.5px;color:var(--slate)}
.iw-rg .iwrg-bar.ok .iwrg-sum b{color:var(--teal)}
.iw-rg .iwrg-bar.short .iwrg-sum b{color:var(--gold)}
.iw-rg .iwrg-bar.over .iwrg-sum b{color:var(--accent)}

/* ── chordbuilder ── */
.iw-cb .iwcb-top{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start;margin-bottom:16px}
.iw-cb .iwcb-sym{font-family:var(--serif);font-size:38px;font-weight:700;color:var(--accent);line-height:1}
.iw-cb .iwcb-facts{flex:1;min-width:190px;display:grid;gap:5px}
.iw-cb .iwcb-facts span{display:flex;gap:10px;font-size:13.5px;line-height:1.6;min-width:0;
  overflow-wrap:anywhere}
.iw-cb .iwcb-facts i{flex:0 0 104px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--slate);font-style:normal;padding-top:3px}
.iw-cb .iwcb-kb{position:relative;display:flex;height:96px;border:1px solid var(--ink);
  border-radius:0 0 6px 6px;background:var(--ink);overflow:hidden}
.iw-cb .iwcb-k.w{flex:1;background:#fbfaf7;border-right:1px solid var(--ink);min-width:14px}
.iw-cb .iwcb-k.b{position:absolute;top:0;width:calc(100% / 15 * 0.56);height:60%;background:#14161c;z-index:2}
.iw-cb .iwcb-k.on.w{background:var(--accent)}
.iw-cb .iwcb-k.on.b{background:var(--accent);box-shadow:inset 0 0 0 1px #fff}

/* ── particles: the particle model ── */
.iw-pa .iwpa-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:16px}
.iw-pa .iwpa-states,.iw-pa .iwpa-mix{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:18px}
.iw-pa figure{margin:0;min-width:0}

/* the container: a vessel, not a plain square — open at the top for a liquid,
   sealed for a gas, because that is half of what the figure is saying */
.iw-pa .iwpa-box{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;
  background:linear-gradient(180deg,var(--paper) 0%,var(--paper-deep) 100%);
  box-shadow:inset 0 0 0 1.5px var(--rule),inset 0 14px 26px -18px rgba(0,0,0,.5)}
.iw-pa .iwpa-box.liquide{box-shadow:inset 0 0 0 1.5px var(--rule)}
.iw-pa .iwpa-box.liquide::after{content:'';position:absolute;left:0;right:0;top:0;height:38%;
  background:linear-gradient(180deg,var(--paper) 60%,transparent);pointer-events:none}
.iw-pa .iwpa-box.gaz::before{content:'';position:absolute;inset:0;
  background:radial-gradient(circle at 50% 45%,rgba(255,255,255,.05),transparent 70%)}

.iw-pa .iwpa-d{position:absolute;border-radius:50%;transform:translate(-50%,-50%);
  transition:left .55s cubic-bezier(.4,0,.2,1),top .55s cubic-bezier(.4,0,.2,1);
  box-shadow:inset -1.5px -2px 3px rgba(0,0,0,.28),inset 1.5px 2px 3px rgba(255,255,255,.35)}
.iw-pa .anim .iwpa-d{animation-duration:2.4s;animation-iteration-count:infinite;
  animation-direction:alternate;animation-timing-function:ease-in-out}
.iw-pa .anim .iwpa-d.s,.iw-pa .anim.solide .iwpa-d{animation-name:iwpaS;animation-duration:1.5s}
.iw-pa .anim .iwpa-d.l,.iw-pa .anim.liquide .iwpa-d{animation-name:iwpaL;animation-duration:3s}
.iw-pa .anim .iwpa-d.g,.iw-pa .anim.gaz .iwpa-d{animation-name:iwpaG;animation-duration:2.2s}
@keyframes iwpaS{from{margin:0 0}to{margin:-1.5px 1.5px}}
@keyframes iwpaL{from{margin:0 0}to{margin:-7px 5px}}
@keyframes iwpaG{from{margin:0 0}to{margin:-22px 26px}}
@media (prefers-reduced-motion:reduce){.iw-pa .iwpa-d,.iw-pa .iwpa-m{animation:none !important}}

.iw-pa figcaption{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);margin-top:11px;text-align:center}
.iw-pa .iwpa-st ul{list-style:none;margin:8px 0 0;padding:0}
.iw-pa .iwpa-st li{font-size:12.5px;line-height:1.7;color:var(--slate);text-align:center}
.iw-pa .iwpa-st li+li{border-top:1px dotted var(--rule)}
/* pointing at one state without losing the comparison */
.iw-pa .iwpa-states.focus .iwpa-st{opacity:.45;transition:opacity .2s,transform .2s}
.iw-pa .iwpa-states.focus .iwpa-st.on{opacity:1;transform:translateY(-3px)}
.iw-pa .iwpa-st.on figcaption{color:var(--accent)}

/* the changes of state, as arrows in the two directions they go */
.iw-pa .iwpa-arrows{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 18px;margin-top:16px;
  padding-top:14px;border-top:1px solid var(--rule)}
.iw-pa .iwpa-ar{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.06em;color:var(--slate)}
.iw-pa .iwpa-ar i{font-style:normal}
.iw-pa .iwpa-ar::before{content:'';flex:0 0 26px;height:1.5px;background:currentColor;position:relative}
.iw-pa .iwpa-ar::after{content:'▸';margin-left:-14px;font-size:12px;line-height:0}
.iw-pa .iwpa-ar.up{color:var(--accent)}
.iw-pa .iwpa-ar.dn{color:var(--teal)}
.iw-pa .iwpa-ar.sub{color:var(--gold);grid-column:1/-1}

/* heat: one substance, one temperature, the same particles throughout */
.iw-pa .iwpa-heat{display:grid;grid-template-columns:minmax(150px,240px) 1fr;gap:22px;align-items:center}
.iw-pa .iwpa-heat .iwpa-box{transition:box-shadow .4s}
.iw-pa .iwpa-heat.gaz .iwpa-box{box-shadow:inset 0 0 0 1.5px var(--accent)}
.iw-pa .iwpa-state{font-family:var(--mono);font-size:13px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--accent);margin-bottom:10px}
.iw-pa .iwpa-hfacts{list-style:none;margin:0;padding:0}
.iw-pa .iwpa-hfacts li{font-size:13.5px;line-height:1.8;color:var(--ink-soft)}
.iw-pa .iwpa-hfacts li::before{content:'▸ ';color:var(--rule)}
.iw-pa .iwpa-slider{margin-top:18px}
.iw-pa .iwpa-slider input{width:100%;accent-color:var(--accent);cursor:pointer}
.iw-pa .iwpa-scale{position:relative;height:16px;margin-top:2px}
.iw-pa .iwpa-scale span{position:absolute;transform:translateX(-50%);font-family:var(--mono);
  font-size:10px;color:var(--slate);white-space:nowrap}
.iw-pa .iwpa-scale span::before{content:'';position:absolute;left:50%;top:-6px;width:1px;height:5px;
  background:var(--rule)}
.iw-pa .iwpa-temp{margin-top:8px;text-align:center}
.iw-pa .iwpa-temp b{font-family:var(--mono);font-size:19px;color:var(--ink)}
.iw-pa .iwpa-temp i{display:block;font-size:12px;color:var(--accent);margin-top:2px}

/* mixture: real molecules, so "one element or two" can be seen */
.iw-pa .iwpa-m{position:absolute;transform:translate(-50%,-50%);line-height:0;
  transition:opacity .2s;animation-name:iwpaG;animation-duration:2.6s;
  animation-iteration-count:infinite;animation-direction:alternate;animation-timing-function:ease-in-out}
.iw-pa .iwpa-mix:not(.anim) .iwpa-m{animation:none}
.iw-pa .iwpa-m.dim{opacity:.16}
.iw-pa .iwpa-mol{overflow:visible}
.iw-pa .iwpa-mol circle{stroke:rgba(0,0,0,.35);stroke-width:.8}
.iw-pa .iwpa-bond line{stroke:var(--slate);stroke-width:2.4;stroke-linecap:round;opacity:.85}
.iw-pa .iwpa-leg{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:9px}
.iw-pa .iwpa-leg button{font:inherit;font-family:var(--mono);font-size:11.5px;cursor:pointer;
  display:inline-flex;align-items:baseline;gap:5px;border:1px solid var(--rule);border-radius:20px;
  padding:3px 10px;background:none;color:var(--ink-soft)}
.iw-pa .iwpa-leg button:hover{border-color:var(--accent);color:var(--accent)}
.iw-pa .iwpa-leg button.on{border-color:var(--accent);background:var(--accent);color:#fff}
.iw-pa .iwpa-leg em{font-style:normal;font-size:10px;opacity:.75}
.iw-pa .iwpa-verdict{margin-top:10px;text-align:center;padding-top:9px;border-top:1px solid var(--rule)}
.iw-pa .iwpa-verdict b{display:block;font-family:var(--mono);font-size:12px;color:var(--accent)}
.iw-pa .iwpa-verdict i{display:block;font-size:12px;color:var(--slate);margin-top:3px;line-height:1.5}
.iw-pa .iwpa-bn{margin-top:7px;font-size:12.5px;color:var(--ink-soft);text-align:center;line-height:1.55}
.iw-pa .iwpa-note{margin-top:14px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── instrument: read the scale ── */
.iw-in .iwin-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:14px}
.iw-in .iwin-wrap{display:flex;flex-wrap:wrap;gap:22px;align-items:flex-start}
.iw-in .iwin-stage{flex:0 0 auto}
.iw-in .iwin-stage svg{display:block;max-width:100%;height:auto}
.iw-in .iwin-ask{flex:1;min-width:210px}
.iw-in .iwin-ask label{display:block;font-size:14.5px;line-height:1.6;margin-bottom:9px}
.iw-in .iwin-in{display:flex;align-items:center;gap:8px}
.iw-in .iwin-in input{font:inherit;font-family:var(--mono);font-size:16px;width:120px;padding:7px 11px;
  border:1px solid var(--rule);border-radius:7px;background:var(--paper);color:var(--ink);outline:none;text-align:right}
.iw-in .iwin-in input:focus{border-color:var(--accent)}
.iw-in .iwin-in.ok input{border-color:var(--teal)}
.iw-in .iwin-in.no input{border-color:var(--accent)}
.iw-in .iwin-u{font-family:var(--mono);font-size:13px;color:var(--slate)}
.iw-in .iwin-mark{width:16px;font-family:var(--mono);font-size:15px}
.iw-in .iwin-in.ok .iwin-mark::before{content:'✓';color:var(--teal)}
.iw-in .iwin-in.no .iwin-mark::before{content:'✕';color:var(--accent)}
.iw-in .iwin-actions{display:flex;gap:9px;margin-top:11px;flex-wrap:wrap}
.iw-in .iwin-why{margin-top:11px;font-size:13px;line-height:1.6;color:var(--ink-soft)}
.iw-in .iwin-why b{font-family:var(--mono);color:var(--teal)}
.iw-in .iwin-shown b{font-family:var(--mono);font-size:26px;color:var(--accent)}
.iw-in .iwin-body{fill:none;stroke:var(--slate);stroke-width:2}
.iw-in .iwin-fill{fill:var(--accent);opacity:.5}
.iw-in .iwin-men{fill:none;stroke:var(--accent);stroke-width:2}
.iw-in .iwin-t{stroke:var(--slate);stroke-width:1}
.iw-in .iwin-t.big{stroke-width:1.8}
.iw-in .iwin-n{fill:var(--slate);font-family:var(--mono);font-size:9.5px;text-anchor:middle}
.iw-in .iwin-n.l{text-anchor:start}
.iw-in .iwin-arc{fill:none;stroke:var(--slate);stroke-width:2}
.iw-in .iwin-needle{stroke:var(--accent);stroke-width:2.6;stroke-linecap:round}
.iw-in .iwin-pin{fill:var(--ink)}
.iw-in .iwin-un{fill:var(--slate);font-family:var(--mono);font-size:11px;text-anchor:middle}
.iw-in .iwin-mk{fill:var(--accent)}
.iw-in .iwin-mkl{stroke:var(--accent);stroke-width:1.4;stroke-dasharray:4 3}
.iw-in .iwin-note{margin-top:13px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── keychart: a dichotomous key ── */
.iw-kc .iwkc-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:14px}
.iw-kc .iwkc-trail{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.iw-kc .iwkc-crumb{font-family:var(--mono);font-size:11px;color:var(--slate);border:1px solid var(--rule);
  border-radius:20px;padding:3px 10px}
.iw-kc .iwkc-crumb+.iwkc-crumb::before{content:'▸ ';color:var(--rule)}
.iw-kc .iwkc-ask{font-size:15px;line-height:1.6;margin-bottom:11px}
.iw-kc .iwkc-btns{display:flex;flex-wrap:wrap;gap:10px}
.iw-kc .iwkc-b{font:inherit;font-size:14px;text-align:left;cursor:pointer;flex:1;min-width:150px;
  border:1.5px solid var(--rule);border-radius:9px;padding:11px 14px;background:var(--paper);color:var(--ink);
  line-height:1.5;transition:border-color .15s,color .15s}
.iw-kc .iwkc-b:hover{border-color:var(--accent);color:var(--accent)}
.iw-kc .iwkc-sn{margin-top:10px;font-size:12.5px;color:var(--slate);font-style:italic}
.iw-kc .iwkc-result{border:1.5px solid var(--teal);border-radius:9px;padding:14px 16px;text-align:center}
.iw-kc .iwkc-result span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--slate);margin-bottom:5px}
.iw-kc .iwkc-result b{font-size:20px;color:var(--teal)}
.iw-kc .iwkc-again{margin-top:12px}
.iw-kc .iwkc-row{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:10px 0;
  border-top:1px solid var(--rule)}
.iw-kc .iwkc-list>.iwkc-row:first-child{border-top:0}
.iw-kc .iwkc-id{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--accent)}
.iw-kc .iwkc-opt{display:flex;gap:9px;align-items:baseline;font-size:14px;line-height:1.6;padding:2px 0;min-width:0}
.iw-kc .iwkc-opt i{font-family:var(--mono);font-size:11px;font-style:normal;color:var(--slate);flex:0 0 auto}
.iw-kc .iwkc-opt b{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--accent);
  white-space:nowrap;padding-left:10px}
.iw-kc .iwkc-note{margin-top:13px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── karyotype: pairs, side by side ── */
.iw-ky .iwky-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:14px}
.iw-ky .iwky-sets{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
.iw-ky .iwky-set{min-width:0;border:1px solid var(--rule);border-radius:10px;padding:12px 12px 10px}
.iw-ky .iwky-lb{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--slate);margin-bottom:10px}
.iw-ky .iwky-grid{display:flex;flex-wrap:wrap;gap:2px}
.iw-ky .iwky-cell{flex:0 0 auto;text-align:center;cursor:pointer;border-radius:7px;padding:2px 0 1px;
  transition:background .15s}
.iw-ky .iwky-cell:hover{background:var(--paper-deep)}
.iw-ky .iwky-cell.on{background:var(--paper-deep);box-shadow:inset 0 0 0 1.5px var(--accent)}
.iw-ky .iwky-cell svg{display:block;margin:0 auto;overflow:visible}
.iw-ky .iwky-c path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.iw-ky .iwky-cell span{display:block;font-family:var(--mono);font-size:10px;color:var(--slate);margin-top:1px}
.iw-ky .iwky-cell.odd span{color:var(--accent);font-weight:700}
.iw-ky .iwky-sex{font-family:var(--mono);font-size:11px;color:var(--ink-soft);margin-top:8px}
.iw-ky .iwky-sn{font-size:12.5px;color:var(--slate);font-style:italic;margin-top:6px;line-height:1.5}
.iw-ky .iwky-read{margin-top:13px;font-size:13.5px;color:var(--ink-soft);min-height:1.7em;line-height:1.7}
.iw-ky .iwky-read b{margin-right:8px}
.iw-ky .iwky-read span{display:inline-block;margin-right:14px;font-family:var(--mono);font-size:12.5px}
.iw-ky .iwky-read span.odd{color:var(--accent);font-weight:700}
.iw-ky .iwky-read i{display:block;margin-top:3px;color:var(--slate)}
.iw-ky .iwky-hint,.iw-cl .iwcl-hint{color:var(--slate);font-style:italic}
.iw-ky .iwky-note{margin-top:12px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── cladogram: shared characters, not descent ── */
.iw-cl .iwcl-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:12px}
.iw-cl .iwcl-stage{position:relative;overflow-x:auto}
.iw-cl .iwcl-stage svg{max-width:100%;height:auto;display:block}
.iw-cl .iwcl-v,.iw-cl .iwcl-h,.iw-cl .iwcl-leaf{stroke:var(--slate);stroke-width:1.5;fill:none}
.iw-cl .iwcl-v.on,.iw-cl .iwcl-h.on,.iw-cl .iwcl-leaf.on{stroke:var(--accent);stroke-width:2.6}
.iw-cl .iwcl-node{fill:var(--paper);stroke:var(--slate);stroke-width:1.5;cursor:pointer}
.iw-cl .iwcl-node:hover{stroke:var(--accent)}
.iw-cl .iwcl-node.on{fill:var(--accent);stroke:var(--accent)}
.iw-cl .iwcl-tick{stroke:var(--accent);stroke-width:2.4}
.iw-cl .iwcl-chit{fill:transparent;cursor:pointer}
.iw-cl .iwcl-lead{fill:none;stroke:var(--accent);stroke-width:1;opacity:.4}
/* Names and characters are HTML on top of the drawing, so they can wrap —
   SVG text cannot, and a character is a whole sentence. No clamp: -webkit-box
   does not wrap text the way a block does, and left the longest line hanging
   6px outside its own box. They are pushed apart after layout instead. */
.iw-cl .iwcl-ch{position:absolute;font-family:var(--mono);font-size:10px;line-height:1.5;
  color:var(--accent);text-align:right;pointer-events:none;overflow-wrap:anywhere;
  word-break:break-word}
.iw-cl .iwcl-lb{position:absolute;font-size:13px;line-height:1.3;color:var(--ink);
  display:flex;align-items:center;pointer-events:none;overflow-wrap:anywhere}
.iw-cl .iwcl-lb.on{color:var(--accent);font-weight:600}
.iw-cl .iwcl-clade{opacity:.16;rx:6}
/* the clade bracket, in the right gutter — never over the taxon names */
.iw-cl .iwcl-brk{fill:none;stroke-width:1.6;opacity:.85}
.iw-cl .iwcl-cln{position:absolute;display:flex;align-items:center;font-family:var(--mono);
  font-size:10px;line-height:1.3;letter-spacing:.04em;color:var(--ink-soft);
  pointer-events:none;overflow-wrap:anywhere}
.iw-cl .iwcl-per text{fill:#fff;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;
  text-anchor:middle;text-transform:uppercase}
.iw-cl .iwcl-perleg{display:flex;flex-wrap:wrap;gap:5px 14px;margin-top:7px;
  font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.iw-cl .iwcl-perleg span{display:inline-flex;align-items:center;gap:5px}
.iw-cl .iwcl-perleg i{width:11px;height:11px;border-radius:3px}
.iw-cl .iwcl-img{position:absolute;object-fit:contain}
.iw-cl .iwcl-read{margin-top:11px;font-size:13.5px;line-height:1.7;color:var(--ink-soft);min-height:1.7em}
.iw-cl .iwcl-read i{display:block;margin-top:3px;color:var(--slate)}
.iw-cl .iwcl-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── the niveau · durée · corrigés stamp, shared by exercise / twotier / method ── */
.iwmeta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.iwmeta span{font-family:var(--mono);font-size:10.5px;letter-spacing:.07em;color:var(--slate);
  border:1px solid var(--rule);border-radius:20px;padding:3px 10px;display:inline-flex;
  align-items:center;gap:6px;white-space:nowrap}
.iwmeta .iwmeta-lv{color:var(--accent);border-color:var(--accent)}
.iwmeta .iwmeta-lv i{width:6px;height:6px;border-radius:50%;border:1px solid var(--accent);display:inline-block}
.iwmeta .iwmeta-lv i.on{background:var(--accent)}
.iwmeta .iwmeta-lv i+i{margin-left:-2px}
.iwmeta .iwmeta-r{color:var(--slate);font-style:normal}
.iw-method .iwmeta,.iw-tt .iwmeta{margin-top:2px}
/* what a worked example teaches you to do, before it does it */
.iw-method .iwme-skills{border-left:3px solid var(--gold);background:var(--paper-deep);
  border-radius:0 8px 8px 0;padding:11px 14px;margin:0 0 14px}
.iw-method .iwme-skills b{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--slate);margin-bottom:6px}
.iw-method .iwme-skills ul{margin:0;padding-left:18px}
.iw-method .iwme-skills li{font-size:14px;line-height:1.6;margin:3px 0}

/* ── sigfig: significant figures ── */
.iw-sf .iwsf-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:14px}
.iw-sf .iwsf-row{display:grid;grid-template-columns:1fr auto;gap:10px 14px;align-items:center;
  padding:9px 0;border-top:1px solid var(--rule)}
.iw-sf .iwsf-list>.iwsf-row:first-child{border-top:0}
.iw-sf .iwsf-v{font-family:var(--mono);font-size:16px;color:var(--ink);min-width:0;overflow-wrap:anywhere}
.iw-sf .iwsf-v i{font-family:var(--sans,inherit);font-size:12.5px;color:var(--slate);font-style:italic;margin-left:6px}
.iw-sf .iwsf-in{display:flex;align-items:center;gap:8px}
.iw-sf .iwsf-in input{font:inherit;font-family:var(--mono);font-size:15px;width:150px;padding:6px 10px;
  border:1px solid var(--rule);border-radius:7px;background:var(--paper);color:var(--ink);outline:none;text-align:right}
.iw-sf .iwsf-in input:focus{border-color:var(--accent)}
.iw-sf .iwsf-mark{width:16px;font-family:var(--mono);font-size:14px;font-style:normal}
.iw-sf .iwsf-row.ok .iwsf-mark::before{content:'✓';color:var(--teal)}
.iw-sf .iwsf-row.no .iwsf-mark::before{content:'✕';color:var(--accent)}
.iw-sf .iwsf-row.ok input{border-color:var(--teal)}
.iw-sf .iwsf-row.no input{border-color:var(--accent)}
.iw-sf .iwsf-why{grid-column:1/-1;font-size:13px;line-height:1.6;color:var(--ink-soft);
  padding:2px 0 2px 2px;overflow-wrap:anywhere}
.iw-sf .iwsf-why b{font-family:var(--mono);color:var(--teal);margin-right:2px}
.iw-sf .iwsf-actions{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-top:14px}
.iw-sf .iwsf-score{font-family:var(--mono);font-size:12.5px;color:var(--slate)}
.iw-sf .iwsf-score.ok{color:var(--teal)}
.iw-sf .iwsf-score.no{color:var(--accent)}
.iw-sf .iwsf-note{margin-top:12px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── examtips: the two columns of exam advice ── */
.iw-et .iwet-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:14px}
.iw-et .iwet-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.iw-et .iwet-col{border:1px solid var(--rule);border-radius:10px;padding:14px 16px 12px;min-width:0}
.iw-et .iwet-lose{border-top:3px solid var(--accent)}
.iw-et .iwet-gain{border-top:3px solid var(--gold)}
.iw-et .iwet-h{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--slate);margin-bottom:10px;line-height:1.5}
.iw-et .iwet-col ul{list-style:none;margin:0;padding:0}
.iw-et .iwet-col li{display:flex;gap:9px;align-items:flex-start;padding:7px 0;border-top:1px solid var(--rule);
  font-size:14px;line-height:1.6;min-width:0}
.iw-et .iwet-col li:first-child{border-top:0;padding-top:0}
.iw-et .iwet-m{flex:0 0 19px;height:19px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:11px;font-weight:700;color:#fff;margin-top:2px}
.iw-et .iwet-lose .iwet-m{background:var(--accent)}
.iw-et .iwet-gain .iwet-m{background:var(--gold);color:#1a1d26}
.iw-et .iwet-t{min-width:0;overflow-wrap:anywhere}
.iw-et .iwet-ref{display:inline-block;margin-left:7px;font-family:var(--mono);font-size:10.5px;font-weight:400;
  letter-spacing:.06em;color:var(--slate);border:1px solid var(--rule);border-radius:20px;padding:1px 8px;
  white-space:nowrap;vertical-align:1px}
.iw-et .iwet-note{margin-top:13px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── checklist: the reader ticks their own work ── */
.iw-ck .iwck-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:12px}
.iw-ck .iwck-g{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--slate);margin:14px 0 6px}
.iw-ck .iwck-g:first-child{margin-top:0}
.iw-ck .iwck-row{display:flex;gap:11px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--rule);
  cursor:pointer;min-width:0}
.iw-ck .iwck-list>.iwck-row:first-child{border-top:0}
.iw-ck .iwck-row input{flex:0 0 auto;width:17px;height:17px;margin-top:2px;accent-color:var(--accent);cursor:pointer}
.iw-ck .iwck-tx{font-size:14.5px;line-height:1.6;min-width:0;overflow-wrap:anywhere}
.iw-ck .iwck-tx i{display:block;margin-top:2px;font-size:12.5px;color:var(--slate);font-style:italic}
.iw-ck .iwck-row input:checked+.iwck-tx{color:var(--slate);text-decoration:line-through;
  text-decoration-color:var(--rule)}
.iw-ck .iwck-row input:checked+.iwck-tx i{text-decoration:none}
.iw-ck .iwck-foot{display:flex;align-items:center;gap:12px;margin-top:14px;padding-top:12px;
  border-top:1px solid var(--rule);flex-wrap:wrap}
.iw-ck .iwck-bar{flex:1;min-width:110px;height:7px;border-radius:5px;background:var(--paper-deep);overflow:hidden}
.iw-ck .iwck-bar i{display:block;height:100%;width:0;background:var(--gold);border-radius:5px;transition:width .25s ease}
.iw-ck .iwck-bar i.full{background:var(--teal)}
.iw-ck .iwck-score{font-family:var(--mono);font-size:12px;color:var(--slate);white-space:nowrap}
.iw-ck .iwck-score.ok{color:var(--teal)}
.iw-ck .iwck-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── formulary: the sheet at the back of the book ── */
.iw-fy .iwfy-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:12px}
.iw-fy .iwfy-search input{width:100%;font:inherit;font-size:14px;padding:9px 13px;border-radius:8px;
  border:1px solid var(--rule);background:var(--paper);color:var(--ink);outline:none}
.iw-fy .iwfy-search input:focus{border-color:var(--accent)}
.iw-fy .iwfy-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:14px}
.iw-fy .iwfy-grp{min-width:0}
.iw-fy .iwfy-g{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent);margin-bottom:8px}
.iw-fy .iwfy-item{border:1px solid var(--rule);border-radius:9px;padding:11px 13px;margin-bottom:9px;min-width:0}
.iw-fy .iwfy-name{font-size:13px;font-weight:600;margin-bottom:5px;overflow-wrap:anywhere}
.iw-fy .iwfy-expr{font-family:var(--mono);font-size:16px;color:var(--accent);margin-bottom:7px;
  overflow-x:auto;overflow-y:hidden;white-space:nowrap;padding-bottom:2px}
.iw-fy .iwfy-sym{margin:0;display:grid;grid-template-columns:auto 1fr;gap:2px 9px;font-size:12.5px;line-height:1.5}
.iw-fy .iwfy-sym dt{font-family:var(--mono);color:var(--slate);white-space:nowrap}
.iw-fy .iwfy-sym dd{margin:0;color:var(--ink-soft);min-width:0;overflow-wrap:anywhere}
.iw-fy .iwfy-use{margin-top:7px;padding-top:7px;border-top:1px dotted var(--rule);font-size:12.5px;
  line-height:1.55;color:var(--ink-soft)}
.iw-fy .iwfy-use b{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate)}
.iw-fy .iwfy-empty{margin-top:14px;font-size:13.5px;color:var(--slate);font-style:italic}
.iw-fy .iwfy-note{margin-top:12px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── vectors: arrows on squared paper ── */
.iw-vc .iwvc-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:12px}
.iw-vc .iwvc-stage{overflow-x:auto;text-align:center}
.iw-vc .iwvc-stage svg{max-width:100%;height:auto}
.iw-vc .iwvc-grid line{stroke:var(--rule);stroke-width:1}
.iw-vc .iwvc-ax line{stroke:var(--slate);stroke-width:1.4}
.iw-vc .iwvc-cp line{stroke-width:1.2;stroke-dasharray:3 4;opacity:.55}
.iw-vc .iwvc-v{stroke-width:2.6;stroke-linecap:round;cursor:pointer}
.iw-vc .iwvc-v.on{stroke-width:4}
.iw-vc .iwvc-lb{font-family:var(--mono);font-size:12px;font-weight:600}
.iw-vc .iwvc-lb.on{font-size:13.5px}
.iw-vc .iwvc-keys{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px;justify-content:center}
.iw-vc .iwvc-key{font:inherit;font-family:var(--mono);font-size:11.5px;cursor:pointer;display:inline-flex;
  align-items:center;gap:6px;border:1px solid var(--rule);border-radius:20px;padding:4px 11px;
  background:none;color:var(--ink-soft)}
.iw-vc .iwvc-key i{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.iw-vc .iwvc-key.on{border-color:var(--accent);color:var(--ink)}
.iw-vc .iwvc-key b{font-weight:400;color:var(--slate)}
.iw-vc .iwvc-read{margin-top:10px;text-align:center;font-family:var(--mono);font-size:12.5px;color:var(--ink-soft);
  min-height:1.6em;overflow-wrap:anywhere}
.iw-vc .iwvc-read i{color:var(--slate)}
.iw-vc .iwvc-hint,.iw-fm .iwfm-hint,.iw-lv .iwlv-hint,.iw-cm .iwcm-hint{color:var(--slate);font-style:italic}
.iw-vc .iwvc-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── fieldmap: a computed field ── */
.iw-fm .iwfm-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:12px}
.iw-fm .iwfm-stage{text-align:center;overflow:hidden;border:1px solid var(--rule);border-radius:10px;
  background:var(--paper-deep)}
.iw-fm .iwfm-svg{display:block;margin:0 auto;max-width:100%;height:auto;touch-action:none;cursor:crosshair}
.iw-fm .iwfm-arr line{stroke:var(--slate);stroke-width:1.5}
.iw-fm .iwfm-arr marker path,.iw-fm marker path{fill:var(--slate)}
.iw-fm .iwfm-lines path{fill:none;stroke:var(--slate);stroke-width:1.1;opacity:.5}
.iw-fm .iwfm-src{fill:var(--accent);stroke:var(--paper);stroke-width:2}
.iw-fm .iwfm-src.neg{fill:var(--teal)}
.iw-fm .iwfm-sg{fill:#fff;font-family:var(--mono);font-size:14px;font-weight:700;text-anchor:middle;
  dominant-baseline:central;pointer-events:none}
.iw-fm .iwfm-sl{fill:var(--ink-soft);font-family:var(--mono);font-size:11px;text-anchor:middle}
.iw-fm .iwfm-p{fill:var(--gold);stroke:var(--ink);stroke-width:1.5}
.iw-fm .iwfm-pv{stroke:var(--gold);stroke-width:3;stroke-linecap:round}
.iw-fm .iwfm-legend{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:11px;
  font-family:var(--mono);font-size:11.5px;color:var(--ink-soft)}
.iw-fm .iwfm-lg{display:inline-flex;align-items:center;gap:6px}
.iw-fm .iwfm-lg i{width:12px;height:12px;border-radius:50%;background:var(--accent)}
.iw-fm .iwfm-lg i.neg{background:var(--teal)}
.iw-fm .iwfm-read{margin-top:9px;text-align:center;font-family:var(--mono);font-size:12.5px;
  color:var(--ink-soft);min-height:1.6em;overflow-wrap:anywhere}
.iw-fm .iwfm-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── colormix: light adds, pigment subtracts ── */
.iw-cm .iwcm-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:12px}
.iw-cm .iwcm-stage{border-radius:10px;padding:18px;display:flex;justify-content:center;transition:background .25s}
.iw-cm .iwcm-discs{position:relative;width:min(300px,80vw);height:min(272px,72vw)}
.iw-cm .iwcm-d{position:absolute;width:62%;height:68%;border-radius:50%;opacity:0;transition:opacity .25s ease}
.iw-cm .iwcm-d.on{opacity:1}
.iw-cm .iwcm-d.d0{left:19%;top:0}
.iw-cm .iwcm-d.d1{left:0;bottom:0}
.iw-cm .iwcm-d.d2{right:0;bottom:0}
.iw-cm .iwcm-stage.add .iwcm-d{mix-blend-mode:screen}
.iw-cm .iwcm-stage.sub .iwcm-d{mix-blend-mode:multiply}
.iw-cm .iwcm-lamps,.iw-cm .iwcm-beam{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;
  align-items:center;margin-top:14px}
.iw-cm .iwcm-lamp,.iw-cm .iwcm-fil{font:inherit;font-family:var(--mono);font-size:11.5px;cursor:pointer;
  display:inline-flex;align-items:center;gap:7px;border:1px solid var(--rule);border-radius:20px;
  padding:5px 12px;background:none;color:var(--slate)}
.iw-cm .iwcm-lamp i,.iw-cm .iwcm-fil i{width:13px;height:13px;border-radius:50%;flex:0 0 auto;
  border:1px solid rgba(0,0,0,.18);opacity:.35;transition:opacity .2s}
.iw-cm .iwcm-lamp.on,.iw-cm .iwcm-fil.on{color:var(--ink);border-color:var(--slate)}
.iw-cm .iwcm-lamp.on i,.iw-cm .iwcm-fil.on i{opacity:1}
.iw-cm .iwcm-src{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:#1a1d26;border:1px solid var(--rule);border-radius:8px;padding:8px 12px}
.iw-cm .iwcm-seg{flex:0 0 26px;height:10px;border-radius:3px;border:1px solid var(--rule)}
.iw-cm .iwcm-eye{flex:0 0 34px;height:34px;border-radius:50%;border:2px solid var(--rule)}
.iw-cm .iwcm-wheel{text-align:center}
.iw-cm .iwcm-wheel svg{width:min(300px,80vw);height:auto}
.iw-cm .iwcm-sec{cursor:pointer;stroke:var(--paper);stroke-width:2;opacity:.62;transition:opacity .18s}
.iw-cm .iwcm-sec:hover{opacity:.85}
.iw-cm .iwcm-sec.on{opacity:1;stroke:var(--ink);stroke-width:2.5}
.iw-cm .iwcm-diam{stroke:var(--ink);stroke-width:1.4;stroke-dasharray:5 4}
.iw-cm .iwcm-read{margin-top:13px;text-align:center;font-size:14px;color:var(--ink-soft);min-height:1.7em;
  overflow-wrap:anywhere}
.iw-cm .iwcm-read i{display:block;margin-top:4px;font-size:12.5px;color:var(--slate)}
.iw-cm .iwcm-sw,.iw-lv .iwcm-sw{display:inline-block;width:15px;height:15px;border-radius:4px;
  border:1px solid var(--rule);vertical-align:-3px;margin:0 6px}
.iw-cm .iwcm-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── levels: energy rungs and the jumps between them ── */
.iw-lv .iwlv-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:12px}
.iw-lv .iwlv-stage{overflow-x:auto}
.iw-lv .iwlv-stage svg{max-width:100%;height:auto;display:block;margin:0 auto}
.iw-lv .iwlv-r{stroke:var(--ink);stroke-width:2}
.iw-lv .iwlv-axis{stroke:var(--slate);stroke-width:1.3}
.iw-lv marker path{fill:var(--slate)}
.iw-lv .iwlv-v{fill:var(--ink-soft);font-family:var(--mono);font-size:11.5px;text-anchor:end}
.iw-lv .iwlv-n{fill:var(--slate);font-family:var(--mono);font-size:10.5px;text-anchor:end}
.iw-lv .iwlv-au{fill:var(--slate);font-family:var(--mono);font-size:10.5px;text-anchor:end}
.iw-lv .iwlv-t{stroke-width:2.2}
.iw-lv .iwlv-t.on{stroke-width:4}
.iw-lv .iwlv-hit{fill:transparent;cursor:pointer}
.iw-lv .iwlv-tl{font-family:var(--mono);font-size:11px}
.iw-lv .iwlv-read{margin-top:11px;text-align:center;font-family:var(--mono);font-size:12.5px;
  color:var(--ink-soft);min-height:1.7em;overflow-wrap:anywhere}
.iw-lv .iwlv-note{margin-top:11px;font-size:13.5px;color:var(--ink-soft);font-style:italic}

/* ── solar: the solar system, from the physics up ── */
.iw-sol .iwsol-intro{font-size:14.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:12px}
.iw-sol .iwsol-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;border-bottom:1px solid var(--rule)}
.iw-sol .iwsol-tabs button{background:none;border:0;border-bottom:2px solid transparent;color:var(--ink-soft);
  font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;
  padding:8px 12px;cursor:pointer;margin-bottom:-1px;transition:.15s}
.iw-sol .iwsol-tabs button:hover{color:var(--ink)}
.iw-sol .iwsol-tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}
.iw-sol .iwsol-bar{display:flex;flex-wrap:wrap;align-items:center;gap:9px 14px;margin-bottom:10px;
  font-family:var(--mono);font-size:12px;color:var(--ink-soft)}
.iw-sol .iwsol-bar button{background:var(--paper-deep);border:1px solid var(--rule);color:var(--ink);
  font-family:var(--mono);font-size:11.5px;padding:6px 11px;border-radius:7px;cursor:pointer}
.iw-sol .iwsol-bar button:hover{border-color:var(--accent);color:var(--accent)}
.iw-sol .iwsol-play{min-width:96px}
.iw-sol .iwsol-bar select{font-family:var(--mono);font-size:11.5px;padding:5px 7px;border:1px solid var(--rule);
  border-radius:7px;background:var(--paper);color:var(--ink);margin-left:5px}
.iw-sol .iwsol-sc{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.iw-sol .iwsol-date{margin-left:auto;color:var(--accent);font-weight:700;letter-spacing:.02em}
.iw-sol .iwsol-stagewrap{position:relative}
/* la grappe de zoom flotte sur la planche, comme dans toute carte */
.iw-sol .iwsol-zoom{position:absolute;top:9px;right:9px;z-index:2;display:flex;align-items:center;gap:2px;
  padding:3px;border-radius:9px;background:rgba(10,14,26,.72);border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(3px)}
.iw-sol .iwsol-zoom button{width:27px;height:27px;padding:0;background:none;border:0;border-radius:6px;
  color:#cfd9f0;font-family:var(--mono);font-size:14px;line-height:1;cursor:pointer;transition:.12s}
.iw-sol .iwsol-zoom button:hover{background:rgba(255,255,255,.14);color:#fff}
.iw-sol .iwsol-zv{min-width:38px;text-align:center;font-family:var(--mono);font-size:11px;color:#9fb0d0}
.iw-sol .iwsol-stage.grab{cursor:grabbing}
.iw-sol .iwsol-stage{cursor:grab}
/* une barre chiffrée: sans elle, « distances réelles » ne veut rien dire */
.iw-sol .iwsol-bl{stroke:var(--ink-soft);stroke-width:2;stroke-linecap:square}
.iw-sol .iwsol-bt{fill:var(--ink-soft);font-family:var(--mono);font-size:10.5px}
.iw-sol .iwsol-stage.night .iwsol-bl{stroke:#b9c8e6}
.iw-sol .iwsol-stage.night .iwsol-bt{fill:#b9c8e6}
/* les traits ne doivent pas épaissir avec le zoom, seules les distances changent */
.iw-sol .iwsol-orb,.iw-sol .iwsol-tr{vector-effect:non-scaling-stroke}
.iw-sol .iwsol-stage{text-align:center;overflow:hidden;border:1px solid var(--rule);border-radius:11px;
  background:radial-gradient(circle at 50% 50%,var(--paper-deep),var(--paper))}
/* le ciel: un vrai fond noir, quel que soit le thème du livre. Une planche
   sombre sur une page claire est une convention de manuel, et les couleurs des
   planètes ne ressortent que là-dessus. */
.iw-sol .iwsol-stage.night{background:#070a14;border-color:#1d2740}
.iw-sol .iwsol-svg{display:block;margin:0 auto;max-width:100%;height:auto}
.iw-sol .iwsol-sky circle{shape-rendering:geometricPrecision}
.iw-sol .iwsol-orb{fill:none;stroke-width:1;opacity:.24}
.iw-sol .iwsol-stage.night .iwsol-orb{opacity:.26}
.iw-sol .iwsol-orb.on{opacity:.85;stroke-width:1.6}
.iw-sol .iwsol-tr{fill:none;stroke-width:2.6;stroke-linecap:round}
.iw-sol .iwsol-pl{cursor:pointer}
.iw-sol .iwsol-hit{fill:transparent}
.iw-sol .iwsol-glow{opacity:0;transition:opacity .18s}
.iw-sol .iwsol-stage.night .iwsol-pl.on .iwsol-glow,
.iw-sol .iwsol-stage.night .iwsol-pl:hover .iwsol-glow{opacity:.20}
.iw-sol .iwsol-lab{fill:var(--ink-soft);font-family:var(--mono);font-size:10px;text-anchor:middle;
  opacity:0;transition:opacity .15s;pointer-events:none;
  paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round}
.iw-sol .iwsol-stage.night .iwsol-lab{fill:#eaf1ff;stroke:#070a14}
.iw-sol .iwsol-pl:hover .iwsol-lab,.iw-sol .iwsol-pl:focus .iwsol-lab,.iw-sol .iwsol-pl.on .iwsol-lab{opacity:1}
.iw-sol .iwsol-pl:focus{outline:none}
.iw-sol .iwsol-pl.on .iwsol-lab{font-weight:700}
/* une planche noire pleine page gâche une cartouche entière à l impression */
@media print{.iw-sol .iwsol-stage.night{background:#fff;border-color:#ccc}
  .iw-sol .iwsol-sky{display:none}
  .iw-sol .iwsol-stage.night .iwsol-lab{fill:#333;stroke:#fff}}
.iw-sol .iwsol-live{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;margin-top:11px;
  font-family:var(--mono);font-size:12.5px;color:var(--ink-soft)}
.iw-sol .iwsol-live b{color:var(--ink)}
.iw-sol .iwsol-live>b{font-size:14px;letter-spacing:.02em}
.iw-sol .iwsol-ext{color:var(--slate);font-size:11.5px}
.iw-sol .iwsol-cap{margin-top:10px;font-size:12.5px;line-height:1.65;color:var(--slate);font-style:italic}
.iw-sol .iwsol-cap b{color:var(--ink-soft);font-style:normal;font-weight:400}
.iw-sol .iwsol-note{margin-top:13px;font-size:13.5px;line-height:1.7;color:var(--ink-soft);font-style:italic}

/* sizes, to scale */
.iw-sol .iwsol-sizes{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:center;gap:6px 20px;
  padding:18px 6px;border:1px solid #1d2740;border-radius:11px;background:#070a14;color:#e8eeff}
.iw-sol .iwsol-sizes .iwsol-sz{color:#e8eeff}
.iw-sol .iwsol-sizes .iwsol-sz i{color:#93a4c8}
.iw-sol .iwsol-sizes .iwsol-rel{color:#6e7fa4}
.iw-sol .iwsol-sizes .iwsol-sz:hover{background:rgba(255,255,255,.07)}
.iw-sol .iwsol-sizes .iwsol-sz.on{background:rgba(255,255,255,.13)}
@media print{.iw-sol .iwsol-sizes{background:#fff;color:#222;border-color:#ccc}
  .iw-sol .iwsol-sizes .iwsol-sz{color:#222}}
.iw-sol .iwsol-sz{display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:0;
  padding:6px 8px;border-radius:9px;cursor:pointer;color:var(--ink)}
.iw-sol .iwsol-sz:hover{background:color-mix(in srgb,var(--accent) 9%,transparent)}
.iw-sol .iwsol-sz.on{background:color-mix(in srgb,var(--accent) 15%,transparent)}
.iw-sol .iwsol-szd{display:block;margin-bottom:5px;overflow:visible}
.iw-sol .iwsol-sz b{font-size:12.5px;font-weight:600}
.iw-sol .iwsol-sz i{font-style:normal;font-family:var(--mono);font-size:10.5px;color:var(--ink-soft)}
.iw-sol .iwsol-rel{color:var(--slate)}
.iw-sol .iwsol-suncmp{margin-top:16px;padding:13px 15px;border:1px solid var(--rule);border-radius:11px;
  background:linear-gradient(180deg,color-mix(in srgb,#f0a63c 12%,transparent),transparent)}
.iw-sol .iwsol-sunband{height:26px;border-radius:13px;overflow:hidden;
  background:linear-gradient(90deg,#e07a1f,#f7c85a 50%,#e07a1f)}
.iw-sol .iwsol-chain{display:block;width:100%;height:26px}
.iw-sol .iwsol-suncmp p{margin:10px 0 0;font-size:13.5px;line-height:1.65;color:var(--ink-soft)}
.iw-sol .iwsol-model{margin-top:16px}
.iw-sol .iwsol-mh{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent);margin-bottom:9px}
.iw-sol .iwsol-tab{width:100%;border-collapse:collapse;font-size:13.5px}
.iw-sol .iwsol-tab th{text-align:left;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--slate);padding:0 10px 7px 0;border-bottom:1px solid var(--rule);font-weight:400}
.iw-sol .iwsol-tab td{padding:7px 10px 7px 0;border-bottom:1px solid var(--rule-soft,var(--rule))}
.iw-sol .iwsol-tab td:not(:first-child){font-family:var(--mono);font-size:12.5px;color:var(--ink-soft)}
.iw-sol .iwsol-tab tr.on td{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.iw-sol .iwsol-tab td i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px}

/* compare one quantity across the system */
.iw-sol .iwsol-cmpbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;
  font-family:var(--mono);font-size:12px;color:var(--ink-soft)}
.iw-sol .iwsol-cmpbar select{font-family:var(--mono);font-size:12px;padding:6px 8px;border:1px solid var(--rule);
  border-radius:7px;background:var(--paper);color:var(--ink);margin-left:6px}
.iw-sol .iwsol-badge{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  padding:3px 8px;border-radius:20px;background:color-mix(in srgb,var(--accent) 13%,transparent);color:var(--accent)}
.iw-sol .iwsol-badge.alt{background:color-mix(in srgb,var(--teal) 15%,transparent);color:var(--teal)}
.iw-sol .iwsol-bars{display:flex;flex-direction:column;gap:2px}
.iw-sol .iwsol-brow{display:grid;grid-template-columns:minmax(88px,1.1fr) minmax(0,3fr) minmax(96px,auto);
  align-items:center;gap:12px;background:none;border:0;padding:6px 8px;border-radius:8px;cursor:pointer;
  text-align:left;color:var(--ink);font-size:13.5px}
.iw-sol .iwsol-brow:hover{background:color-mix(in srgb,var(--accent) 7%,transparent)}
.iw-sol .iwsol-brow.on{background:color-mix(in srgb,var(--accent) 13%,transparent)}
.iw-sol .iwsol-bn{display:flex;align-items:center;gap:8px;min-width:0}
.iw-sol .iwsol-bn i{flex:0 0 auto;width:10px;height:10px;border-radius:50%}
.iw-sol .iwsol-btr{height:12px;border-radius:6px;background:var(--paper-deep);overflow:hidden}
.iw-sol .iwsol-btr i{display:block;height:100%;border-radius:6px;transition:width .3s ease}
.iw-sol .iwsol-bv{font-family:var(--mono);font-size:12.5px;text-align:right;color:var(--ink-soft);white-space:nowrap}
.iw-sol .iwsol-bv em{font-style:normal;color:var(--slate);font-size:11px}

/* the fact sheet */
.iw-sol .iwsol-pick{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.iw-sol .iwsol-chip{display:inline-flex;align-items:center;gap:7px;background:var(--paper-deep);
  border:1px solid var(--rule);border-radius:20px;padding:5px 12px;font-size:12.5px;color:var(--ink);cursor:pointer}
.iw-sol .iwsol-chip i{width:9px;height:9px;border-radius:50%}
.iw-sol .iwsol-chip:hover{border-color:var(--accent)}
.iw-sol .iwsol-chip.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);font-weight:600}
.iw-sol .iwsol-card{border:1px solid var(--rule);border-radius:12px;padding:16px 17px;background:var(--paper-deep)}
.iw-sol .iwsol-ch{display:flex;align-items:center;gap:14px;margin-bottom:10px}
.iw-sol .iwsol-disc{flex:0 0 auto;overflow:visible}
.iw-sol .iwsol-ch b{display:block;font-size:19px;letter-spacing:-.01em}
.iw-sol .iwsol-ch i{display:block;font-style:normal;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--slate);margin-top:2px}
.iw-sol .iwsol-cd{margin:0 0 14px;font-size:14px;line-height:1.7;color:var(--ink-soft)}
.iw-sol .iwsol-sec{margin-top:16px;padding-top:13px;border-top:1px solid var(--rule)}
.iw-sol .iwsol-sec h4{margin:0 0 10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent);font-weight:400}
.iw-sol .iwsol-sec h4 span{color:var(--slate);letter-spacing:.06em;text-transform:none;font-style:italic}
.iw-sol .iwsol-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:9px 18px;margin:0}
.iw-sol .iwsol-dl dt{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate)}
.iw-sol .iwsol-dl dd{margin:2px 0 0;font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
.iw-sol .iwsol-calcs{display:grid;grid-template-columns:repeat(auto-fit,minmax(214px,1fr));gap:11px}
.iw-sol .iwsol-calc{padding:11px 12px;border:1px solid var(--rule);border-radius:10px;background:var(--paper)}
.iw-sol .iwsol-calc b{display:block;font-size:12.5px;font-weight:600}
.iw-sol .iwsol-calc code{display:block;margin:5px 0 7px;font-family:var(--mono);font-size:11.5px;color:var(--teal)}
.iw-sol .iwsol-val{display:block;font-size:18px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.iw-sol .iwsol-calc em{display:block;margin-top:3px;font-size:11.5px;color:var(--slate)}
.iw-sol .iwsol-green{border-top-color:var(--accent)}
.iw-sol .iwsol-tline{display:flex;align-items:baseline;justify-content:space-between;gap:14px;
  padding:7px 0;border-bottom:1px dashed var(--rule);font-size:13.5px}
.iw-sol .iwsol-tline code{display:block;font-family:var(--mono);font-size:11px;color:var(--teal);margin-top:3px}
.iw-sol .iwsol-tline b{font-family:var(--mono);font-size:16px;white-space:nowrap}
.iw-sol .iwsol-gap b{color:var(--accent)}
.iw-sol .iwsol-green p{margin:10px 0 0;font-size:13.5px;line-height:1.7;color:var(--ink-soft)}
.iw-sol .iwsol-weigh{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px}
.iw-sol .iwsol-weigh label{font-family:var(--mono);font-size:12px;color:var(--ink-soft)}
.iw-sol .iwsol-weigh input{width:82px;margin:0 4px;padding:6px 8px;border:1px solid var(--rule);
  border-radius:7px;background:var(--paper);color:var(--ink);font-family:var(--mono);font-size:13px}
.iw-sol .iwsol-wout{font-size:14px;color:var(--ink-soft)}
.iw-sol .iwsol-wout b{font-family:var(--mono);font-size:18px;color:var(--ink)}
.iw-sol .iwsol-wout em{font-style:italic;color:var(--slate);font-size:12.5px}
@media(max-width:560px){
  .iw-sol .iwsol-date{margin-left:0;width:100%}
  .iw-sol .iwsol-brow{grid-template-columns:minmax(76px,1fr) minmax(0,2fr);row-gap:2px}
  .iw-sol .iwsol-bv{grid-column:1/-1;text-align:left}
}

/* == carte ==================================================================
   Une pile d'etapes, chacune une carte complete. Rien n'est decoratif : la
   terre est un aplat neutre, la couleur appartient aux parties que l'auteur a
   coloriees, et la legende se dessine avec le meme code que la carte. */
.iw-map{--map-land:#e6e0d2;--map-stroke:rgba(0,0,0,.22)}
html.dark .iw-map{--map-land:#2a2f3a;--map-stroke:rgba(255,255,255,.15)}
.iwm-host{position:relative}

.iwm-stage{position:relative;border:1px solid var(--rule);border-radius:8px;overflow:hidden;background:var(--paper)}
.iwm-svg{display:block;width:100%;height:auto;max-height:74vh;touch-action:none}
.iwm-land path{fill:var(--map-land);stroke:var(--map-stroke);stroke-width:.5px;vector-effect:non-scaling-stroke;transition:fill .18s}
.iwm-land .iwm-named{cursor:pointer}
.iwm-land .iwm-named:hover{filter:brightness(1.06)}
/* une partie qui ouvre une seconde carte : un lisere, jamais une pastille */
.iwm-land .iwm-into{cursor:pointer;stroke:var(--accent);stroke-width:1.7px}
.iwm-land .iwm-blank{fill:var(--iwm-qblank);stroke-dasharray:3 2;cursor:pointer}
.iwm-name{font-family:var(--sans);font-weight:600;fill:var(--ink);
  paint-order:stroke;stroke:var(--paper);stroke-linejoin:round;pointer-events:none}
.iwm-lab{font-family:var(--sans);fill:var(--ink-soft);
  paint-order:stroke;stroke:var(--paper);stroke-linejoin:round;pointer-events:none}
.iwm-has{cursor:pointer}
.iwm-has:hover{opacity:.82}
/* une annotation libre : l'auteur choisit sa couleur, donc pas de fill impose */
.iwm-free{font-weight:500}
.iwm-b{font-weight:700}
.iwm-i{font-style:italic}

/* == l'habillage : quadrillage, echelle, rose des vents ==
   Discret par construction. Un quadrillage qu'on remarque avant les cotes est
   un quadrillage rate ; une echelle qu'on ne trouve pas est une echelle inutile. */
.iwm-grid path{stroke:var(--map-stroke);fill:none;opacity:.34;
  stroke-dasharray:none;vector-effect:non-scaling-stroke;pointer-events:none}
.iwm-gtx{font-family:var(--mono);fill:var(--slate);opacity:.85;
  paint-order:stroke;stroke:var(--paper);stroke-linejoin:round;pointer-events:none}
.iwm-sc0{fill:var(--ink);stroke:var(--ink);stroke-width:.4;vector-effect:non-scaling-stroke}
.iwm-sc1{fill:var(--paper);stroke:var(--ink);stroke-width:.4;vector-effect:non-scaling-stroke}
.iwm-nbg{fill:var(--paper);fill-opacity:.72;stroke:var(--rule);
  stroke-width:.8;vector-effect:non-scaling-stroke}
.iwm-nar{fill:var(--ink)}
.iwm-nn{font-weight:700;fill:var(--ink)}

/* le curseur des etapes */
.iwm-steps{display:flex;align-items:center;gap:9px;margin:0 0 10px;flex-wrap:wrap}
.iwm-steps input[type=range]{flex:1 1 140px;min-width:110px;accent-color:var(--accent)}
.iwm-nav{width:28px;height:28px;flex:none;border:1px solid var(--rule);border-radius:7px;
  background:var(--paper);color:var(--ink-soft);cursor:pointer;font-size:15px;line-height:1;transition:.14s}
.iwm-nav:hover{border-color:var(--accent);color:var(--accent)}
.iwm-steplab{font-family:var(--sans);font-size:13.5px;color:var(--ink);font-weight:600}
.iwm-stepn{font-family:var(--mono);font-size:10.5px;color:var(--slate);letter-spacing:.08em}

.iwm-zoom{position:absolute;right:8px;bottom:8px;z-index:4;display:flex;gap:4px}
/* legende a droite : les boutons de zoom passent a gauche, ils disparaissaient dessous */
.iwm-hasside .iwm-zoom{right:auto;left:8px}
.iwm-zoom button{width:26px;height:26px;border:1px solid var(--rule);border-radius:6px;
  background:var(--paper);color:var(--ink-soft);cursor:pointer;font-size:13px;line-height:1;opacity:.85}
.iwm-zoom button:hover{opacity:1;border-color:var(--accent);color:var(--accent)}

.iwm-crumb{display:flex;align-items:center;gap:10px;margin:0 0 9px}
.iwm-crumb span{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate)}
.iwm-back{border:1px solid var(--rule);border-radius:7px;background:var(--paper);color:var(--ink-soft);
  font-family:var(--mono);font-size:11px;padding:5px 10px;cursor:pointer;transition:.14s}
.iwm-back:hover{border-color:var(--accent);color:var(--accent)}

/* == la legende ==
   Groupee par categorie, et chaque pastille est dessinee avec le meme code que
   l'objet qu'elle annonce : une route en pointille rouge se montre en
   pointille rouge, une aire hachuree avec ses hachures. */
.iwm-legend{margin-top:12px;padding-top:11px;border-top:1px solid var(--rule)}
.iwm-legend-t{font-family:var(--mono);font-size:10.5px;letter-spacing:.15em;
  text-transform:uppercase;color:var(--slate);margin-bottom:7px}
.iwm-lgroup{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin-bottom:7px}
.iwm-lcat{width:100%;font-family:var(--sans);font-size:11.5px;font-weight:600;
  color:var(--ink);margin:3px 0 1px}
.iwm-lrow{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-soft)}
.iwm-lnote{font-style:italic;color:var(--slate);font-size:12.5px}
.iwm-sw{width:26px;height:16px;flex:none;overflow:visible}
.iwm-lpick{cursor:pointer;border:1px solid transparent;border-radius:6px;padding:1px 5px 1px 3px}
.iwm-lpick:hover{border-color:var(--rule)}
.iwm-lpick.on{border-color:var(--accent);background:rgba(140,47,42,.09)}
/* une legende longue tient en colonnes plutot qu'en une bande de trois metres */
.iwm-l2,.iwm-l3{column-gap:26px}
@media (min-width:620px){ .iwm-l2{columns:2} .iwm-l3{columns:3} }
.iwm-l2 .iwm-lgroup,.iwm-l3 .iwm-lgroup{break-inside:avoid;display:block}
.iwm-l2 .iwm-lrow,.iwm-l3 .iwm-lrow{display:flex;margin-bottom:4px}
/* == la gamme d'une choroplethe ==
   Ses pastilles se TOUCHENT : c'est une echelle continue, pas une liste de
   symboles, et un ecart entre deux classes ferait croire a un trou. */
.iwm-ramp{display:flex;flex-wrap:wrap;width:100%;gap:0}
.iwm-rstep{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);
  font-size:11px;color:var(--ink-soft);padding:0 9px 0 0;white-space:nowrap}
.iwm-rstep i{width:22px;height:13px;flex:none;display:block;
  border:1px solid rgba(0,0,0,.22);border-right:0}
.iwm-rstep:last-child i{border-right:1px solid rgba(0,0,0,.22)}
.iwm-lramp{margin-bottom:9px}
/* la legende sur le cote, quand la carte est haute et la place a droite libre */
@media (min-width:760px){
  /* Bornee en hauteur : une legende plus haute que la carte debordait par le bas. */
  .iwm-legend-side{position:absolute;right:10px;top:10px;z-index:3;max-width:38%;max-height:calc(100% - 20px);
    overflow:auto;margin:0;padding:10px 12px;
    border:1px solid var(--rule);border-top:1px solid var(--rule);border-radius:8px;
    background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(2px)}
  .iwm-legend-side .iwm-legend-t{margin-top:0}
}

/* == le quiz == */
.iwm-quiz{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px;font-size:13px;color:var(--ink-soft)}
.iwm-qscore{font-family:var(--mono);font-size:12px;color:var(--accent);font-weight:600}
.iwm-qin{font:inherit;font-size:12.5px;width:9.5em;padding:2px 6px;border:1px solid var(--rule-2);
  border-radius:5px;background:var(--paper);color:var(--ink)}
.iwm-qin:focus{outline:none;border-color:var(--accent)}
.iwm-qin.ok{border-color:#2f8a5b;background:rgba(47,138,91,.10)}
.iwm-qin.ko{border-color:#c0392b;background:rgba(192,57,43,.09)}

/* == la fiche au clic == */
.iwm-pop{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:5;
  max-width:min(430px,92%);background:var(--paper);border:1px solid var(--rule);border-radius:9px;
  box-shadow:0 6px 26px rgba(0,0,0,.18);padding:13px 15px;font-size:14px;line-height:1.55}
.iwm-pop h4{margin:0 0 5px;font-size:14.5px}
.iwm-pop img{display:block;max-width:100%;border-radius:6px;margin-bottom:9px}
.iwm-popx{position:absolute;top:5px;right:7px;border:0;background:none;color:var(--slate);
  font-size:17px;line-height:1;cursor:pointer}
.iwm-popx:hover{color:var(--accent)}

@media print{.iwm-zoom,.iwm-nav,.iwm-quiz,.iwm-steps input{display:none}}


html,body{margin:0;background:var(--paper)}:root{--content-width:100%}.book-chapter{padding:22px 26px 30px}.book-chapter>*:first-child{margin-top:0}