:root {
  --ink:#173f3d;
  --ink-2:#355a56;
  --muted:#687e78;
  --line:#d8ded3;
  --panel:#fffefa;
  --bg:#f4f0e6;
  --blue:#0f766e;
  --blue-dark:#174c48;
  --blue-soft:#e0f3ee;
  --green:#4f7d35;
  --green-soft:#edf6e8;
  --amber:#a76514;
  --amber-soft:#fff0d5;
  --red:#a63d43;
  --red-soft:#fff0ef;
  --economics:#b33b3b;
  --sociology:#815039;
  --politics:#315f96;
  --cross:#36755f;
  --methods:#7352a2;
  --shadow:0 10px 30px rgba(37,70,63,.09);
  --radius:18px;
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  margin:0;
  background:
    radial-gradient(circle at 1px 1px,rgba(15,118,110,.075) 1px,transparent 1.25px) 0 0/24px 24px,
    linear-gradient(180deg,#f8f5ed 0,#f1eee4 100%);
  color:var(--ink);
  font-family:Inter,Arial,Helvetica,sans-serif;
  font-size:16px;
  line-height:1.55;
}
button,input,textarea,select { font:inherit; }
button,a { transition:.16s ease; }
button { cursor:pointer; }
a { color:var(--blue); }
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible { outline:3px solid rgba(15,118,110,.35);outline-offset:3px; }
.hidden { display:none!important; }
.skip-link { position:fixed;left:12px;top:-70px;z-index:1000;background:#fff;padding:9px 13px;border-radius:9px;box-shadow:var(--shadow); }
.skip-link:focus { top:12px; }
.app-shell { min-height:100vh; }

.topbar {
  position:sticky;top:0;z-index:50;
  display:grid;grid-template-columns:auto minmax(220px,390px) auto;
  align-items:center;gap:22px;
  padding:13px 26px;
  background:rgba(255,253,247,.97);
  border-bottom:1px solid var(--line);
  backdrop-filter:blur(10px);
}
.brand { display:flex;align-items:center;gap:12px;border:0;background:transparent;color:var(--ink);padding:0;text-align:left; }
.brand:hover { transform:none; }
.brand-mark { width:52px;height:52px;border-radius:17px;display:grid;place-items:center;background:linear-gradient(145deg,#0f766e,#195f59);color:#fff;font-size:28px;box-shadow:0 7px 15px rgba(15,118,110,.2);transform:rotate(-2deg); }
.brand-grade { font:900 18px/1 Inter,Arial,sans-serif;letter-spacing:-.04em;transform:rotate(2deg); }
.brand-copy strong { display:block;font:800 25px/1.08 Georgia,"Times New Roman",serif; }
.brand-copy small { display:block;margin-top:4px;color:var(--muted);font-size:13px;font-weight:700; }
.global-progress { min-width:0; }
.progress-copy { display:flex;justify-content:space-between;gap:12px;margin-bottom:7px;color:var(--muted);font-size:13px; }
.progress-copy strong { color:var(--ink); }
.progress-track { height:10px;background:#e7edf3;border-radius:999px;overflow:hidden; }
.progress-track>span { display:block;height:100%;width:0;background:linear-gradient(90deg,#44a264,#2d7f49);border-radius:inherit;transition:width .35s ease; }
.top-actions { display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end; }
.nav-button,.action-button,.icon-button {
  border:1px solid #cad8d1;border-radius:11px;background:#fffefa;color:#28534f;
  text-decoration:none;font-weight:800;padding:9px 12px;box-shadow:0 2px 5px rgba(20,50,80,.03);
}
.nav-button:hover,.action-button:hover,.icon-button:hover { border-color:#8dbab0;transform:translateY(-1px); }
.nav-button.primary,.action-button.primary { background:var(--blue);color:#fff;border-color:var(--blue); }
.action-button.green { background:var(--green);color:#fff;border-color:var(--green); }
.action-button.danger { color:#923a35;border-color:#e0b7b3;background:#fff7f6; }
.site-return { color:#76513c;border-color:#ddcbbd;background:#fffaf4; }
.action-button:disabled,.nav-button:disabled { opacity:.48;cursor:not-allowed;transform:none; }

.main { width:min(1460px,calc(100% - 32px));margin:0 auto;padding:22px 0 48px; }
.panel,.reader,.modal-card,.side-panel,.exercise-card { background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow); }
.loading-card,.error-card { display:flex;align-items:center;gap:18px;max-width:760px;margin:80px auto;padding:28px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow); }
.loading-card h1,.error-card h1 { margin:0 0 5px;font:800 30px/1.1 Georgia,serif; }
.loading-card p,.error-card p { margin:0;color:var(--muted); }
.spinner { width:36px;height:36px;border:4px solid #dce7f0;border-top-color:var(--blue);border-radius:50%;animation:spin 1s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
.eyebrow { margin:0 0 6px;color:var(--blue);font-size:12px;font-weight:900;letter-spacing:.11em;text-transform:uppercase; }
.lead { font-size:18px;color:var(--ink-2);line-height:1.6; }
.small-note { color:var(--muted);font-size:14px;line-height:1.5; }

/* Accueil */
.home { display:grid;gap:18px; }
.home-intro { position:relative;display:grid;grid-template-columns:minmax(0,1fr) 190px 310px;gap:24px;align-items:center;padding:24px 26px;overflow:hidden;background:linear-gradient(125deg,#fffefa 0,#f6f2e5 68%,#e5f2ea 100%); }
.home-intro::after { content:"";position:absolute;right:-58px;bottom:-82px;width:190px;height:190px;border:28px solid rgba(15,118,110,.07);border-radius:50%;pointer-events:none; }
.home-intro>* { position:relative;z-index:1; }
.home-intro h1 { margin:0;font:800 clamp(32px,3.1vw,46px)/1.06 Georgia,serif;letter-spacing:-.02em; }
.home-intro p:not(.eyebrow) { margin:11px 0 0;max-width:760px;color:var(--ink-2); }
.home-actions { display:flex;gap:9px;flex-wrap:wrap;margin-top:17px; }
.home-guide { text-align:center; }
.home-guide img { width:105px;max-height:130px;object-fit:contain;filter:drop-shadow(0 7px 13px rgba(20,48,78,.12)); }
.speech { position:relative;margin:7px auto 0;padding:10px 12px;border:1px solid #d5ded4;background:#fffefa;border-radius:14px;color:#3f5f59;font-size:13px;line-height:1.4; }
.home-metrics { padding:16px;border:1px solid var(--line);border-radius:15px;background:rgba(255,254,250,.83); }
.home-metrics-head { display:flex;justify-content:space-between;gap:10px;margin-bottom:9px;color:var(--muted);font-size:14px; }
.home-metrics-head strong { color:var(--green);font-size:21px; }
.mini-metrics { display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:12px; }
.mini-metrics span { min-width:0;padding:9px 5px;border:1px solid #e0e8ef;border-radius:10px;background:#fff;text-align:center; }
.mini-metrics strong { display:block;font-size:17px; }
.mini-metrics small { display:block;margin-top:2px;color:var(--muted);font-size:11px;line-height:1.25; }
.chapter-board { padding:20px;background:rgba(255,254,250,.94); }
.board-head { display:flex;justify-content:space-between;gap:20px;align-items:end;margin-bottom:15px; }
.board-head h2 { margin:0;font:800 34px/1.1 Georgia,serif; }
.board-head p:not(.eyebrow) { margin:7px 0 0;color:var(--muted); }
.board-tip { max-width:360px;color:var(--muted);font-size:14px;text-align:right; }
.chapter-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px; }
.chapter-card {
  --family:var(--blue);
  position:relative;display:flex;flex-direction:column;min-height:238px;padding:18px;
  border:1px solid #d9ded4;border-top:5px solid var(--family);border-radius:17px;background:#fffefa;
  color:var(--ink);text-align:left;box-shadow:0 6px 18px rgba(22,50,78,.07);
}
.chapter-card:hover { transform:translateY(-3px);box-shadow:0 11px 24px rgba(22,50,78,.12); }
.chapter-card.family-economics { --family:var(--economics); }
.chapter-card.family-sociology { --family:var(--sociology); }
.chapter-card.family-politics { --family:var(--politics); }
.chapter-card.family-cross { --family:var(--cross); }
.chapter-card.family-methods { --family:var(--methods); }
.chapter-card-head { display:flex;align-items:center;justify-content:space-between;gap:10px; }
.chapter-symbol { width:62px;height:62px;border-radius:18px;display:grid;place-items:center;background:#f2f0e7;color:var(--family);box-shadow:inset 0 0 0 1px rgba(63,91,82,.06); }
.chapter-art { display:block;width:58px;height:58px;overflow:visible;color:inherit; }
.chapter-art.compact { width:54px;height:54px; }
.chapter-art .art-soft { fill:currentColor;opacity:.14; }
.chapter-art .art-paper { fill:#fff;stroke:currentColor;stroke-width:2.5; }
.chapter-art .art-line { fill:none;stroke:currentColor;stroke-width:4;stroke-linecap:round;stroke-linejoin:round; }
.chapter-art .art-thin { fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round; }
.chapter-art .art-dot { fill:currentColor; }
.chapter-art .art-leaf { fill:#69a96f;stroke:#317442;stroke-width:2; }
.chapter-art .art-coin { fill:#f4c85c;stroke:#a87410;stroke-width:2.5; }
.chapter-number { font-size:14px;color:var(--family);font-weight:900;text-transform:uppercase;letter-spacing:.06em; }
.chapter-card h3 { margin:13px 0 7px;color:var(--family);font:800 21px/1.16 Georgia,serif; }
.chapter-card p { margin:0;color:var(--muted);font-size:14px;line-height:1.45; }
.chapter-card-foot { display:flex;justify-content:space-between;gap:8px;align-items:center;margin-top:auto;padding-top:14px;font-size:13px; }
.status-pill { display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border:1px solid #d6e0e8;border-radius:999px;background:#f8fafc;color:#4c657b;font-size:12px;font-weight:800; }
.status-pill.progress { background:var(--amber-soft);color:#86540e;border-color:#eed3a5; }
.status-pill.done { background:var(--green-soft);color:#236b39;border-color:#b8ddc2; }
.chapter-card .card-arrow { color:var(--family);font-weight:900; }
.home-footer-grid { display:grid;grid-template-columns:1fr 1fr;gap:18px; }
.home-note { padding:18px 20px; }
.home-note h2 { margin:0 0 7px;font:800 23px/1.15 Georgia,serif; }
.home-note p { margin:0;color:var(--muted); }

/* Chapitre */
.chapter-layout { display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px;align-items:start; }
.reader { overflow:hidden; }
.chapter-hero { --family:var(--blue);padding:23px 26px 20px;background:linear-gradient(135deg,#fffefa,#f1eee4);border-bottom:1px solid var(--line); }
.chapter-hero.family-economics { --family:var(--economics); }
.chapter-hero.family-sociology { --family:var(--sociology); }
.chapter-hero.family-politics { --family:var(--politics); }
.chapter-hero.family-cross { --family:var(--cross); }
.chapter-hero.family-methods { --family:var(--methods); }
.breadcrumb { display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-bottom:11px;color:var(--muted);font-size:13px; }
.breadcrumb button { border:0;background:transparent;padding:0;color:var(--blue);font-weight:800; }
.chapter-title-row { display:grid;grid-template-columns:68px 1fr;gap:15px;align-items:center; }
.chapter-title-symbol { width:66px;height:66px;display:grid;place-items:center;border-radius:19px;background:#f1efe6;color:var(--family);box-shadow:inset 0 0 0 1px rgba(63,91,82,.07); }
.chapter-hero h1 { margin:0;color:var(--family);font:800 clamp(31px,3.3vw,47px)/1.06 Georgia,serif; }
.chapter-hero .question { margin:10px 0 0;color:var(--ink-2);font-size:17px;line-height:1.5; }
.chapter-meta { display:flex;gap:8px;flex-wrap:wrap;margin-top:14px; }
.tabs { display:flex;gap:4px;overflow-x:auto;padding:10px 14px;border-bottom:1px solid var(--line);background:#f7f4eb; }
.tab-button { border:1px solid transparent;border-radius:10px;background:transparent;color:#49657d;padding:8px 11px;font-size:14px;font-weight:800;white-space:nowrap; }
.tab-button:hover { background:#fffefa;border-color:#d5ded6; }
.tab-button.active { background:var(--blue);color:#fff;border-color:var(--blue); }
.chapter-content { padding:24px 26px 30px; }
.section-head { display:flex;justify-content:space-between;gap:18px;align-items:end;margin-bottom:18px; }
.section-head h2 { margin:0;font:800 31px/1.1 Georgia,serif; }
.section-head p:not(.eyebrow) { margin:7px 0 0;color:var(--muted); }
.intro-card { margin-bottom:16px;padding:18px 20px;border-left:5px solid var(--blue);border-radius:13px;background:#eaf5f1;color:var(--ink-2);font-size:17px; }
.lesson-list { display:grid;gap:14px; }
.lesson-card { border:1px solid var(--line);border-radius:16px;background:#fffefa;overflow:hidden; }
.lesson-card summary { display:grid;grid-template-columns:42px 1fr auto;gap:12px;align-items:center;padding:16px 18px;cursor:pointer;list-style:none; }
.lesson-card summary::-webkit-details-marker { display:none; }
.lesson-card summary:hover { background:#f8f6ef; }
.lesson-index { width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:var(--blue-soft);color:var(--blue);font-weight:900; }
.lesson-card summary strong { display:block;font:800 20px/1.15 Georgia,serif; }
.lesson-card summary small { display:block;margin-top:4px;color:var(--muted);font-size:14px; }
.lesson-toggle { color:var(--blue);font-weight:900; }
.lesson-card[open] .lesson-toggle { transform:rotate(90deg); }
.lesson-body { padding:2px 18px 18px 72px;border-top:1px solid #edf1f5; }
.lesson-body p { margin:14px 0 0; }
.lesson-body strong { color:#185f59; }
.summary-section .lesson-body { padding:18px 20px;border-top:0; }
.summary-section .lesson-body h3 { margin:0;font:800 24px/1.18 Georgia,serif; }
.summary-lead { padding:11px 13px;border-left:4px solid var(--blue);border-radius:8px;background:#edf6f2;font-size:17px; }
.term-list { display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:16px;padding-top:12px;border-top:1px dashed #cbded8; }
.term-list-label { display:flex;flex-direction:column;margin-right:3px;color:#315e58;font-size:12px;font-weight:900;letter-spacing:.02em;text-transform:uppercase; }
.term-list-label small { color:var(--muted);font-size:9px;font-weight:700;letter-spacing:0;text-transform:none; }
.term-chip { display:inline-flex;gap:6px;align-items:center;padding:6px 7px 6px 10px;border:1px solid #b9d7ce;border-radius:999px;background:#e8f2ee;color:#28564f;font-family:inherit;font-size:12px;font-weight:800;line-height:1.2;cursor:help; }
.term-chip:hover,.term-chip:focus-visible,.term-chip[aria-expanded="true"] { border-color:#4f9488;background:#d8ebe5;box-shadow:0 0 0 3px rgba(15,118,110,.12);outline:0; }
.term-info { width:16px;height:16px;display:grid;place-items:center;padding:0!important;border-radius:50%;background:#fff;color:#176d64;font:900 10px/1 Georgia,serif;text-transform:none; }
.term-tooltip { position:fixed;z-index:320;width:min(340px,calc(100vw - 24px));padding:12px 14px;border:1px solid #83b8ae;border-radius:12px;background:#123f3a;color:#fff;box-shadow:0 14px 34px rgba(18,45,42,.28);font-size:14px;line-height:1.45; }
.term-tooltip[hidden] { display:none; }
.term-tooltip strong,.term-tooltip span { display:block; }
.term-tooltip strong { margin-bottom:4px;color:#d9fff7;font-size:15px; }
.term-tooltip span { color:#f4fffc; }
.content-box { margin-top:13px;padding:13px 15px;border-radius:11px;overflow-wrap:normal;word-break:normal;hyphens:none; }
.content-box h4 { margin:0 0 5px;font-size:14px;line-height:1.3;letter-spacing:.015em; }
.content-box p { margin:0; }
.content-box p+p { margin-top:8px; }
.mechanism-box { background:#e8f4f1;border:1px solid #beddd5; }
.example-box { background:#f0f6e8;border:1px solid #d1e1b9; }
.pitfall-box { background:#fff4df;border:1px solid #ead0a2; }
.summary-opening { margin-bottom:16px;padding:18px 20px;border:1px solid #c9ddd6;border-radius:15px;background:linear-gradient(135deg,#eaf5f1,#fffefa); }
.summary-opening h3 { margin:0 0 8px;font:800 24px/1.2 Georgia,serif; }
.summary-opening p:not(.eyebrow) { margin:0;color:var(--ink-2); }
.summary-visual { margin:0 0 17px;padding:18px 20px;border:1px solid #c8dcd5;border-radius:16px;background:linear-gradient(145deg,#fffefa,#edf6f2);box-shadow:0 8px 24px rgba(32,72,66,.07); }
.visual-heading { display:flex;justify-content:space-between;gap:18px;align-items:end;margin-bottom:14px; }
.visual-heading h3 { margin:0;font:800 24px/1.15 Georgia,serif;text-align:right; }
.summary-visual figcaption { margin-top:14px;padding-top:11px;border-top:1px solid #cfe0da;color:#405d58;font-size:14px;line-height:1.5; }
.diagram-scroll { overflow-x:auto; }
.diagram-svg { display:block;width:100%;height:auto;min-width:510px;max-height:360px;border-radius:13px;background:rgba(255,255,255,.72); }
.diagram-axis { fill:none;stroke:#354f4b;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round; }
.diagram-growth { fill:none;stroke:#13776d;stroke-width:7;stroke-linecap:round; }
.diagram-offer { fill:none;stroke:#c46a2c;stroke-width:7;stroke-linecap:round; }
.diagram-demand { fill:none;stroke:#1a718e;stroke-width:7;stroke-linecap:round; }
.diagram-guide { fill:none;stroke:#77958f;stroke-width:2;stroke-dasharray:7 6; }
.diagram-point { fill:#fff;stroke:#174f48;stroke-width:4; }
.diagram-label { fill:#344b48;font:700 17px/1.2 system-ui,sans-serif; }
.diagram-label.annotation { fill:#29675f;font-size:15px; }
.diagram-label.emphasis { fill:#164e47;font-size:18px;font-weight:900; }
.visual-process,.visual-powers { display:flex;gap:8px;align-items:stretch;justify-content:center; }
.visual-process article,.visual-powers article { flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:112px;padding:13px;border:1px solid #bcd7cf;border-radius:13px;background:#fff;text-align:center; }
.visual-process article strong,.visual-powers article strong { font:800 16px/1.25 Georgia,serif; }
.visual-powers article small { margin-top:5px;color:var(--muted);line-height:1.35; }
.visual-step-number { width:28px;height:28px;display:grid;place-items:center;margin-bottom:8px;border-radius:50%;background:#176e65;color:#fff;font-weight:900; }
.visual-link { align-self:center;color:#176e65;font-size:24px;font-weight:900; }
.visual-side-note { margin:12px 0 0;padding:10px 12px;border-left:4px solid #bd6b2f;border-radius:8px;background:#fff5e8;color:#64462f; }
.visual-network { display:grid;grid-template-columns:180px minmax(0,1fr);gap:14px;align-items:stretch; }
.visual-center { display:flex;flex-direction:column;justify-content:center;align-items:center;padding:18px;border-radius:50%;background:#176e65;color:#fff;text-align:center;aspect-ratio:1; }
.visual-center>span { font-size:28px; }
.visual-center strong { font:800 22px/1.15 Georgia,serif; }
.visual-center small { margin-top:5px;color:#dcf6f1; }
.visual-network-nodes { display:grid;grid-template-columns:repeat(2,1fr);gap:10px; }
.visual-network-nodes article { display:grid;grid-template-columns:38px 1fr;gap:3px 9px;align-items:center;padding:12px;border:1px solid #bfd8d1;border-radius:12px;background:#fff; }
.visual-network-nodes article>span { grid-row:1/3;width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:#e5f2ee;color:#176e65;font-size:20px; }
.visual-network-nodes strong { font:800 16px/1.15 Georgia,serif; }
.visual-network-nodes small { color:var(--muted);font-size:12px; }
.summary-list { counter-reset:summary-step; }
.lesson-explanation,.summary-explanation { font-size:16.5px;line-height:1.65; }
.chapter-conclusion { margin-top:17px;padding:18px 20px;border-radius:14px;background:var(--blue-dark);color:#fff; }
.chapter-conclusion h3 { margin:0 0 6px;font:800 22px/1.15 Georgia,serif; }
.chapter-conclusion p { margin:0; }

.support-card { padding:18px;border:1px solid var(--line);border-radius:16px;background:#faf8f1; }
.support-card h3 { margin:0 0 12px;font:800 24px/1.15 Georgia,serif; }
.support-table-wrap { overflow:auto; }
.support-table { width:100%;border-collapse:collapse;background:#fffefa;font-size:15px; }
.support-table th,.support-table td { padding:10px;border:1px solid #dce5ed;text-align:left; }
.support-table th { background:#e6f1ed;color:#27554f; }
.process-flow { display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:9px;align-items:stretch; }
.process-step { position:relative;display:grid;place-items:center;min-height:82px;padding:10px;border:1px solid #cddde9;border-radius:12px;background:#fff;text-align:center;font-weight:800; }
.process-step:not(:last-child)::after { content:"→";position:absolute;right:-16px;top:50%;z-index:2;color:var(--blue);font-size:18px;transform:translateY(-50%); }
.compare-grid { display:grid;grid-template-columns:repeat(2,1fr);gap:12px; }
.compare-item { padding:16px;border:1px solid #d7e2eb;border-radius:13px;background:#fff; }
.compare-item strong { display:block;color:var(--blue);margin-bottom:5px; }
.support-comment { margin:13px 0 0;color:var(--ink-2); }
.support-analysis-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px; }
.support-analysis { display:grid;grid-template-columns:30px 1fr;gap:9px;align-items:start;padding:13px;border:1px solid #d3e0da;border-radius:12px;background:#fff; }
.support-analysis-icon { width:29px;height:29px;display:grid;place-items:center;border-radius:9px;background:#e2f1ec;color:#176e65;font-weight:900; }
.support-analysis h4 { margin:0 0 5px;color:#285a53;font-size:14px;line-height:1.25; }
.support-analysis p { margin:0;color:var(--ink-2);font-size:14px;line-height:1.5; }
.support-analysis.support-caution { border-color:#e5c99b;background:#fffaf0; }
.support-analysis.support-caution .support-analysis-icon { background:#f7e7c9;color:#85501e; }
.source-line { margin:12px 0 0;padding-top:10px;border-top:1px solid #e0e7ed;color:var(--muted);font-size:13px; }
.source-line,.program-source,.side-panel { overflow-wrap:anywhere; }

.official-list { display:grid;gap:9px;margin:0;padding:0;list-style:none; }
.official-list li { position:relative;padding:12px 14px 12px 42px;border:1px solid var(--line);border-radius:12px;background:#fbfdff; }
.official-list li::before { content:"✓";position:absolute;left:14px;top:12px;width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:var(--green-soft);color:var(--green);font-weight:900; }
.program-source { margin-top:16px;padding:13px 15px;border-radius:11px;background:#edf4fa; }

/* Exercices */
.objective-list { display:grid;gap:14px; }
.objective-card { border:1px solid var(--line);border-radius:15px;background:#fff;overflow:hidden; }
.objective-card summary { display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:15px 17px;cursor:pointer; }
.objective-card summary::-webkit-details-marker { display:none; }
.objective-card summary strong { display:block;font-size:16px;line-height:1.35; }
.objective-card summary small { display:block;margin-top:3px;color:var(--muted);font-size:13px; }
.objective-progress { min-width:78px;text-align:right;color:var(--green);font-weight:900; }
.exercise-list { display:grid;gap:8px;padding:0 14px 15px;border-top:1px solid #edf1f4; }
.exercise-row { display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 11px;border:1px solid #dfe7ed;border-radius:11px;background:#fbfdff; }
.exercise-icon { width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:#eef4f8;font-size:19px; }
.exercise-row strong { display:block;font-size:14px; }
.exercise-row small { display:block;margin-top:2px;color:var(--muted);font-size:12px; }
.exercise-row.done { background:#f1faf3;border-color:#bcdcc5; }
.exercise-row .action-button { padding:7px 9px;font-size:13px; }
.exercise-view { display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:18px;align-items:start; }
.exercise-card { overflow:hidden; }
.exercise-head { padding:20px 22px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,#f9fcff,#fff); }
.exercise-head h1 { margin:2px 0 5px;font:800 clamp(28px,3vw,40px)/1.1 Georgia,serif; }
.exercise-head p { margin:0;color:var(--muted); }
.exercise-body { padding:22px; }
.exercise-instruction { margin:0 0 17px;padding:12px 14px;border-left:4px solid var(--blue);border-radius:8px;background:#edf5fb;color:var(--ink-2); }
.exercise-controls { display:flex;gap:9px;flex-wrap:wrap;margin-top:18px; }
.exercise-feedback { margin-top:14px;padding:12px 14px;border-radius:11px;background:#edf4fa;color:var(--ink-2); }
.exercise-feedback.success { background:var(--green-soft);color:#225f35;border:1px solid #b8ddc2; }
.exercise-feedback.error { background:var(--red-soft);color:#8b302d;border:1px solid #e7c2bf; }
.exercise-side { position:sticky;top:95px;display:grid;gap:12px; }
.side-panel { padding:16px; }
.side-panel h2 { margin:0 0 10px;font:800 20px/1.15 Georgia,serif; }
.side-panel p { margin:7px 0;color:var(--muted);font-size:14px; }
.side-stat { display:flex;justify-content:space-between;gap:8px;padding:7px 0;border-bottom:1px solid #e7edf2;font-size:14px; }
.side-stat strong { color:var(--ink); }
.side-actions { display:grid;gap:7px;margin-top:12px; }
.side-actions .action-button { width:100%; }

.qcm-group { display:grid;gap:9px; }
.qcm-question { margin:17px 0 8px;font-weight:900; }
.qcm-option { display:flex;gap:10px;align-items:flex-start;width:100%;padding:11px 12px;border:1px solid #d5e0e8;border-radius:11px;background:#fff;color:var(--ink);text-align:left; }
.qcm-option:hover { background:#f6fafc;border-color:#a9bfd1; }
.qcm-option.selected { border-color:var(--blue);background:#edf5fb;box-shadow:0 0 0 2px rgba(15,86,143,.08); }
.qcm-option.correct { border-color:#83c293;background:var(--green-soft); }
.qcm-option.incorrect { border-color:#df9b96;background:var(--red-soft); }
.qcm-option-letter { flex:0 0 27px;width:27px;height:27px;display:grid;place-items:center;border-radius:8px;background:#eaf1f6;color:var(--blue);font-weight:900; }
.data-mini-table { width:100%;margin:12px 0;border-collapse:collapse;font-size:14px; }
.data-mini-table th,.data-mini-table td { padding:8px;border:1px solid #dce4ea;text-align:center; }
.data-mini-table th { background:#eef4f8; }

.fill-text { font-size:18px;line-height:2.4; }
.fill-select { min-width:150px;margin:0 5px;padding:7px 9px;border:1px solid #bfcfdb;border-radius:8px;background:#fff; }
.classification-grid { display:grid;gap:10px; }
.classification-row { display:grid;grid-template-columns:minmax(0,1fr) minmax(170px,260px);gap:12px;align-items:center;padding:10px;border:1px solid #dfe7ed;border-radius:11px;background:#fbfdff; }
.classification-row select { width:100%;padding:8px;border:1px solid #c6d4df;border-radius:8px;background:#fff; }
.memory-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px; }
.memory-card { min-height:92px;padding:10px;border:1px solid #cfdce6;border-radius:12px;background:#edf5fb;color:var(--ink);font-weight:800; }
.memory-card.flipped,.memory-card.matched { background:#fff; }
.memory-card.matched { border-color:#8bc49a;background:var(--green-soft);color:#286b3d; }
.order-list { display:grid;gap:8px; }
.order-item { display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px;border:1px solid #dbe4eb;border-radius:10px;background:#fff; }
.order-rank { width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:#edf4f8;color:var(--blue);font-weight:900; }
.order-buttons { display:flex;gap:5px; }
.order-buttons button { width:34px;height:34px;border:1px solid #cbd8e2;border-radius:8px;background:#fff;color:var(--blue);font-weight:900; }
.calculation-list { display:grid;gap:12px; }
.calculation-item label { display:block;margin-bottom:5px;font-weight:800; }
.calculation-item input,.table-input,.argument-text { width:100%;padding:10px;border:1px solid #c5d3de;border-radius:9px;background:#fff; }
.matching-list { display:grid;gap:10px; }
.matching-row { display:grid;grid-template-columns:minmax(0,1fr) minmax(190px,1fr);gap:12px;align-items:center;padding:10px;border:1px solid #dfe7ed;border-radius:11px; }
.matching-row select { width:100%;padding:8px;border:1px solid #c4d2dd;border-radius:8px;background:#fff; }
.table-complete-wrap { overflow:auto; }
.table-complete { width:100%;border-collapse:collapse;min-width:620px; }
.table-complete th,.table-complete td { padding:8px;border:1px solid #d8e2e9; }
.table-complete th { background:#edf4f8;text-align:left; }
.table-input.correct,.calculation-item input.correct { border-color:#5ba871;background:#f0faf3; }
.table-input.incorrect,.calculation-item input.incorrect { border-color:#d5726b;background:#fff3f2; }
.vf-list { display:grid;gap:12px; }
.vf-item { padding:13px;border:1px solid #dbe4eb;border-radius:12px;background:#fbfdff; }
.vf-choice { display:flex;gap:18px;margin:10px 0; }
.vf-choice label { font-weight:800; }
.vf-feedback { margin-top:8px;font-size:14px; }
.institution-map { display:grid;grid-template-columns:repeat(2,1fr);gap:12px;max-width:760px;margin:0 auto; }
.institution-node { min-height:130px;padding:16px;border:2px solid #cedde8;border-radius:15px;background:#fff;color:var(--ink);text-align:center; }
button.institution-node:hover { border-color:var(--blue);background:#f2f8fc; }
.institution-node strong { display:block;margin-top:7px;font:800 20px/1.15 Georgia,serif; }
.institution-node small { display:block;margin-top:5px;color:var(--muted); }
.institution-icon { font-size:36px; }
.assembly-visual { max-width:620px;margin:0 auto 16px;padding:20px;border:1px solid #d3e0e9;border-radius:16px;background:linear-gradient(180deg,#f5f9fc,#fff);text-align:center; }
.assembly-visual .building { font-size:70px;line-height:1; }
.assembly-visual strong { display:block;margin-top:7px;font:800 22px/1.15 Georgia,serif; }
.chart-wrap { overflow:auto;padding-bottom:5px; }
.interactive-chart { width:100%;min-width:540px;max-height:430px;border:1px solid #d8e2ea;border-radius:13px;background:#fff; }
.chart-point { cursor:pointer; }
.chart-point:hover { filter:drop-shadow(0 0 4px rgba(15,86,143,.5)); }

/* Quiz final */
.quiz-card { padding:17px;border:1px solid var(--line);border-radius:15px;background:#fff; }
.quiz-card+.quiz-card { margin-top:12px; }
.quiz-card h3 { margin:0 0 10px;font-size:17px; }
.quiz-options { display:grid;gap:7px; }
.quiz-result { margin-top:17px;padding:17px;border-radius:14px;background:#edf5fb; }
.quiz-result strong { display:block;font-size:22px; }

/* Modales */
.modal-root { display:none;position:fixed;inset:0;z-index:100;background:rgba(12,33,51,.56);padding:20px;overflow:auto; }
.modal-root.open { display:grid;place-items:start center; }
.modal-card { width:min(980px,100%);margin:3vh auto;max-height:92vh;overflow:auto; }
.modal-head { display:flex;justify-content:space-between;gap:14px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line); }
.modal-head h2 { margin:0;font:800 28px/1.1 Georgia,serif; }
.modal-close { width:39px;height:39px;border:1px solid #d1dce5;border-radius:10px;background:#fff;font-size:22px; }
.modal-body { padding:18px; }
.progress-overview { display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:15px; }
.metric-card { padding:13px;border:1px solid #dce5ed;border-radius:12px;background:#fbfdff;text-align:center; }
.metric-card strong { display:block;font-size:22px; }
.metric-card span { font-size:12px;color:var(--muted); }
.progress-table-wrap { overflow:auto; }
.progress-table { width:100%;border-collapse:collapse;min-width:720px;font-size:14px; }
.progress-table th,.progress-table td { padding:9px;border-bottom:1px solid #e1e8ee;text-align:left; }
.progress-table th { background:#edf4f9; }
.transfer-grid { display:grid;grid-template-columns:1fr 1fr;gap:13px; }
.transfer-box { padding:14px;border:1px solid #dce5ed;border-radius:13px;background:#fbfdff; }
.transfer-box h3 { margin:0 0 6px; }
.code-box { width:100%;min-height:120px;padding:10px;border:1px solid #c8d5df;border-radius:9px;font-family:ui-monospace,Consolas,monospace;font-size:12px;resize:vertical; }
.modal-actions { display:flex;gap:8px;flex-wrap:wrap;margin-top:12px; }
.file-input { display:none; }
.toast-root { position:fixed;right:16px;bottom:16px;z-index:200;display:grid;gap:8px; }
.toast { max-width:370px;padding:11px 14px;border-radius:10px;background:#173f63;color:#fff;box-shadow:var(--shadow);font-size:14px; }
.toast.success { background:#2b7741; }
.toast.error { background:#9b3b36; }
.print-source { display:none; }

@media (max-width:1220px) {
  .topbar { grid-template-columns:auto 1fr; }
  .global-progress { grid-column:1/-1; }
  .home-intro { grid-template-columns:minmax(0,1fr) 180px; }
  .home-metrics { grid-column:1/-1; }
  .chapter-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (max-width:900px) {
  .topbar { position:static;display:flex;flex-wrap:wrap;padding:12px 14px;gap:12px; }
  .brand-copy strong { font-size:22px; }
  .brand-mark { width:47px;height:47px; }
  .top-actions { width:100%;justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap; }
  .nav-button { white-space:nowrap;font-size:13px; }
  .global-progress { width:100%; }
  .main { width:min(100% - 18px,1460px);padding-top:12px; }
  .home-intro { grid-template-columns:1fr;padding:18px; }
  .home-guide { display:grid;grid-template-columns:86px 1fr;gap:10px;align-items:center;text-align:left; }
  .home-guide img { width:80px; }
  .home-guide .speech { margin:0; }
  .chapter-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .chapter-layout,.exercise-view { grid-template-columns:1fr; }
  .exercise-side { position:static;grid-template-columns:1fr 1fr; }
  .process-flow { grid-template-columns:1fr; }
  .process-step:not(:last-child)::after { content:"↓";right:auto;left:50%;top:auto;bottom:-19px;transform:translateX(-50%); }
  .support-analysis-grid { grid-template-columns:1fr; }
  .visual-process,.visual-powers { flex-direction:column; }
  .visual-process article,.visual-powers article { min-height:82px; }
  .visual-link { transform:rotate(90deg); }
  .progress-overview { grid-template-columns:1fr 1fr; }
}

@media (max-width:620px) {
  body { font-size:16px; }
  .home-intro h1 { font-size:32px; }
  .chapter-grid,.home-footer-grid,.compare-grid,.transfer-grid { grid-template-columns:1fr; }
  .chapter-card { min-height:205px; }
  .board-head,.section-head { display:block; }
  .board-tip { max-width:none;margin-top:7px;text-align:left; }
  .chapter-hero,.chapter-content,.exercise-head,.exercise-body { padding-left:15px;padding-right:15px; }
  .chapter-title-row { grid-template-columns:52px 1fr; }
  .chapter-title-symbol { width:50px;height:50px;border-radius:14px; }
  .chapter-title-symbol .chapter-art { width:46px;height:46px; }
  .chapter-hero h1 { font-size:31px; }
  .visual-heading { display:block; }
  .visual-heading h3 { margin-top:3px;text-align:left;font-size:21px; }
  .summary-visual { padding:15px; }
  .visual-network { grid-template-columns:1fr; }
  .visual-center { width:145px;margin:0 auto; }
  .visual-network-nodes { grid-template-columns:1fr; }
  .lesson-card summary { grid-template-columns:38px 1fr; }
  .lesson-toggle { display:none; }
  .lesson-body { padding:2px 14px 16px; }
  .exercise-row { grid-template-columns:36px minmax(0,1fr); }
  .exercise-row .action-button { grid-column:1/-1;width:100%; }
  .classification-row,.matching-row { grid-template-columns:1fr; }
  .memory-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .institution-map { grid-template-columns:1fr; }
  .exercise-side { grid-template-columns:1fr; }
  .progress-overview { grid-template-columns:1fr; }
  .mini-metrics { grid-template-columns:1fr 1fr; }
  .modal-root { padding:8px; }
  .modal-head,.modal-body { padding:13px; }
}

@media print {
  body { background:#fff;color:#000; }
  .topbar,.tabs,.exercise-side,.home,.action-button,.nav-button,.modal-root,.toast-root,.term-tooltip { display:none!important; }
  .main { width:100%;padding:0; }
  .chapter-layout,.exercise-view { display:block; }
  .reader,.exercise-card,.lesson-card,.support-card { box-shadow:none;border-color:#bbb; }
  .chapter-content { padding:12px 0; }
  .lesson-card,.summary-visual,.support-analysis { break-inside:avoid; }
  .lesson-card:not([open]) .lesson-body { display:block; }
  .print-source { display:block;margin-top:16px;border-top:1px solid #999;padding-top:8px;font-size:10pt; }
}
