:root,[data-theme=light]{--bg: #f2f6f3;--surface: #ffffff;--surface-2: #f4f8f5;--paper: #fbfdfc;--ink: #1f2b27;--muted: #5a6963;--line: #d9e4de;--rule: #e2ece6;--margin: #e3a091;--accent: #2f7d68;--on-accent: #ffffff;--accent-soft: #dcefe7;--highlight: #fbe3a6;--highlight-faint: #fff6e3;--highlight-line: #e2b04f;--changed: #fbe3a6;--ok: #1f7a4d;--ok-soft: #e1f3e8;--bad: #b23b3b;--bad-soft: #fbe6e3;--ad-ground: #f7f1e3;--ad-line: #e2cf9f;--ad-ink: #8f6208;--stage: #17221e;--stage-ink: #e4ece8;--stage-muted: #98aaa2;--stage-line: #2c3a34;--stage-accent: #6fd3b5;--stage-highlight: #5a4a1a;--shadow-1: 0 1px 2px rgba(31, 60, 48, .05), 0 4px 16px rgba(31, 60, 48, .06);--shadow-2: 0 2px 4px rgba(31, 60, 48, .06), 0 10px 28px rgba(31, 60, 48, .1)}[data-theme=dark]{--bg: #111916;--surface: #18231f;--surface-2: #1d2a25;--paper: #141e1a;--ink: #e4ece8;--muted: #9aaca4;--line: #2a3832;--rule: #1f2c27;--margin: #a65b57;--accent: #5cc4a6;--on-accent: #0e1714;--accent-soft: #1d3a31;--highlight: #4f4118;--highlight-faint: #2a2414;--highlight-line: #c9a03f;--changed: #4f4118;--ok: #6fd3a5;--ok-soft: #173329;--bad: #ff8a80;--bad-soft: #45231f;--ad-ground: #262116;--ad-line: #5f5130;--ad-ink: #e9be5c;--stage: #0c1411;--stage-ink: #e4ece8;--stage-muted: #98aaa2;--stage-line: #2a3832;--stage-accent: #6fd3b5;--stage-highlight: #5a4a1a;--shadow-1: 0 1px 2px rgba(0, 0, 0, .25), 0 4px 16px rgba(0, 0, 0, .18);--shadow-2: 0 2px 4px rgba(0, 0, 0, .3), 0 10px 28px rgba(0, 0, 0, .28)}:root{--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--code-line: 24px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-pill: 999px;--font-display: "Lexend", "Segoe UI", system-ui, sans-serif;--font-body: "Nunito Sans", "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace}.display-xl{font-family:var(--font-display);font-size:34px;line-height:1.1;font-weight:700;letter-spacing:-.01em}.display-l{font-family:var(--font-display);font-size:26px;line-height:1.15;font-weight:700;letter-spacing:-.01em}.heading{font-family:var(--font-display);font-size:20px;line-height:1.25;font-weight:700}.subheading{font-family:var(--font-display);font-size:15px;line-height:1.3;font-weight:600}.body{font-family:var(--font-body);font-size:15px;line-height:1.55;font-weight:400}.body-s{font-family:var(--font-body);font-size:13px;line-height:1.45;font-weight:400}.label{font-family:var(--font-body);font-size:12px;line-height:1.2;font-weight:600;letter-spacing:.08em}.caption{font-family:var(--font-body);font-size:11.5px;line-height:1.4;font-weight:400}.code{font-family:var(--font-mono);font-size:13px;line-height:24px;font-weight:400}.code-s{font-family:var(--font-mono);font-size:11.5px;line-height:20px;font-weight:500}.code-stage{font-family:var(--font-mono);font-size:22px;line-height:38px;font-weight:400}.dl-row{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.dl-btn{display:inline-flex;align-items:center;gap:var(--space-1);border-radius:var(--radius-md);padding:10px 16px;font:600 14px/1.2 var(--font-body);border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}.dl-btn:hover{border-color:var(--accent)}.dl-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dl-btn--primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.dl-btn--ghost{background:transparent;border-color:transparent;color:var(--accent)}.dl-btn:disabled{opacity:.5;cursor:not-allowed}.dl-chip{display:inline-block;font:500 11.5px/20px var(--font-mono);padding:0 7px;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent)}.dl-chip--ok{background:var(--ok-soft);color:var(--ok);font-family:var(--font-body);font-weight:600}.dl-chip--bad{background:var(--bad-soft);color:var(--bad);font-family:var(--font-body);font-weight:600}.dl-crumb{font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px}.dl-crumb a{color:var(--muted);text-decoration:none}.dl-crumb a:hover{color:var(--accent);text-decoration:underline}.dl-crumb [aria-current]{color:var(--ink);font-weight:500}.dl-module{border:1px solid var(--line);border-radius:var(--radius-lg);padding:10px 12px;background:var(--surface);display:flex;flex-direction:column;gap:var(--space-1);color:var(--ink);text-decoration:none;max-width:260px}.dl-module:hover{border-color:var(--accent)}.dl-module__name{font:600 13px/1.3 var(--font-body)}.dl-module__sim{font-size:11.5px;color:var(--muted)}.dl-element{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}.dl-element__head{display:flex;gap:10px;align-items:center;padding:9px 12px;background:var(--surface-2);font-weight:600;font-size:14px}.dl-element__letter{font:700 13px var(--font-mono);color:var(--accent)}.dl-lesson{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid var(--line);font-size:13px;color:var(--ink);text-decoration:none}.dl-lesson:hover{background:var(--surface-2)}.dl-lesson__key{font:11.5px var(--font-mono);color:var(--muted);margin-right:6px}.dl-lesson__kind{font-size:12px;color:var(--muted)}.dl-steps{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}.dl-step{display:inline-flex;gap:6px;align-items:center;font-size:12px;padding:5px 10px;border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--muted);background:var(--surface)}.dl-step b{font:700 11px var(--font-mono)}.dl-step--done{color:var(--ok);border-color:var(--ok)}.dl-step--current{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.dl-editor{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.dl-editor__head{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;border-bottom:1px solid var(--line);font-size:12px;font-weight:600;background:var(--surface-2)}.dl-code{font:13px/var(--code-line) var(--font-mono);padding:4px 0;margin:0;background-image:repeating-linear-gradient(to bottom,transparent 0 23px,var(--rule) 23px 24px);background-position:0 4px;overflow-x:auto}.dl-code>div{display:block;padding-right:10px;white-space:pre;line-height:var(--code-line)}.dl-code .dl-ln{display:inline-block;width:38px;text-align:right;padding-right:10px;margin-right:10px;color:var(--muted);border-right:2px solid var(--margin)}.dl-code .is-current{background:var(--highlight);box-shadow:inset 3px 0 0 var(--highlight-line)}.dl-code .is-visited{background:var(--highlight-faint)}.dl-kw{color:var(--accent);font-weight:700}.dl-next{font-size:13px;padding:9px 12px;background:var(--accent-soft);border-radius:var(--radius-md);color:var(--ink)}.dl-next strong{color:var(--accent)}.dl-panel{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}.dl-panel__head{padding:7px 10px;border-bottom:1px solid var(--line);background:var(--surface-2);font:600 12px/1.2 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.dl-vars{width:100%;border-collapse:collapse;font:13px var(--font-mono)}.dl-vars th,.dl-vars td{padding:6px 10px;border-top:1px solid var(--line);text-align:left}.dl-vars th{font:600 11px var(--font-body);color:var(--muted);border-top:none;text-transform:uppercase;letter-spacing:.06em}.dl-vars .is-changed{background:var(--changed)}.dl-console{font:13px/1.6 var(--font-mono);padding:10px;min-height:44px;background:var(--surface-2);margin:0;white-space:pre-wrap}.dl-console .is-error{color:var(--bad)}.dl-trace{width:100%;border-collapse:collapse;font:12px var(--font-mono);background:var(--surface)}.dl-trace th,.dl-trace td{border:1px solid var(--line);padding:4px 8px;text-align:center}.dl-trace th{background:var(--surface-2);font-weight:600}.dl-trace td:nth-child(2){text-align:left}.dl-trace tr.is-last td{background:var(--highlight)}.dl-feedback{border-radius:var(--radius-md);padding:10px 12px;font-size:13px}.dl-feedback--ok{background:var(--ok-soft);color:var(--ink)}.dl-feedback--ok strong{color:var(--ok)}.dl-feedback--bad{background:var(--bad-soft);color:var(--ink)}.dl-feedback--bad strong{color:var(--bad)}.dl-ad{background:var(--ad-ground);border:1px dashed var(--ad-line);border-radius:var(--radius-md);color:var(--ad-ink);font:600 11px var(--font-body);text-transform:uppercase;letter-spacing:.08em;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px;min-height:90px}.dl-stage{background:var(--stage);color:var(--stage-ink);padding:18px 24px;border-radius:var(--radius-xl);display:flex;flex-direction:column;gap:14px}.dl-stage__bar{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--stage-muted)}.dl-stage__bar .dl-btn{background:transparent;color:var(--stage-ink);border-color:var(--stage-line)}.dl-stage .dl-code-stage{font:22px/38px var(--font-mono)}.dl-stage .dl-code-stage div{white-space:pre;padding:0 10px;border-radius:6px}.dl-stage .dl-code-stage .is-current{background:var(--stage-highlight)}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.dl-stage .dl-kw{color:var(--stage-accent)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.6}img{max-width:100%}a{color:var(--accent)}a.dl-btn{text-decoration:none}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,h4{font-family:var(--font-display);line-height:1.2;text-wrap:balance;margin:0;letter-spacing:-.01em}h1{font-size:clamp(26px,4.5vw,34px);line-height:1.1}h2{font-size:22px}h3{font-size:17px}p{margin:0}code{font-family:var(--font-mono);font-size:.92em;background:var(--surface-2);padding:1px 5px;border-radius:var(--radius-sm)}pre{font-family:var(--font-mono)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.container{width:100%;max-width:1180px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}.muted{color:var(--muted)}.stack{display:flex;flex-direction:column;gap:var(--space-3)}.stack-lg{display:flex;flex-direction:column;gap:var(--space-8)}.site-header{background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.site-header .container{display:flex;align-items:center;gap:var(--space-5);min-height:58px;flex-wrap:wrap}.logo{font:700 20px var(--font-display);color:var(--ink);text-decoration:none;letter-spacing:-.02em}.logo span{color:var(--accent)}.site-nav{display:flex;gap:var(--space-4);flex:1;flex-wrap:wrap}.site-nav a{color:var(--muted);text-decoration:none;font-size:15px;font-weight:600;padding:4px 0;border-bottom:2px solid transparent}.site-nav a:hover{color:var(--ink)}.site-nav a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}.theme-btn{margin-left:auto}.menu-btn{display:none}@media(max-width:760px){.menu-btn{display:inline-flex;margin-left:auto}.theme-btn{margin-left:0}.site-nav{display:none;flex-basis:100%;flex-direction:column;gap:0;padding-bottom:var(--space-3)}.site-nav.open{display:flex}.site-nav a{padding:10px 0;border-bottom:1px solid var(--line)}}main{padding-block:var(--space-6) var(--space-8)}.site-footer{border-top:1px solid var(--line);background:var(--surface);padding-block:var(--space-6);font-size:13px;color:var(--muted)}.site-footer .container{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-6);justify-content:space-between}.site-footer nav{display:flex;flex-wrap:wrap;gap:var(--space-4)}.site-footer a{color:var(--muted)}.hero{display:grid;grid-template-columns:1.3fr 1fr;gap:var(--space-6);align-items:center}.hero h1{font-size:clamp(28px,5vw,40px);margin-bottom:var(--space-3)}.hero p{max-width:56ch;color:var(--muted);font-size:16px}.hero .dl-row{margin-top:var(--space-4)}.years{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.year-card{display:flex;flex-direction:column;gap:4px;border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-4);background:var(--surface);text-decoration:none;color:var(--ink)}.year-card:hover{border-color:var(--accent)}.year-card strong{font:700 18px var(--font-display)}.year-card span{font-size:13px;color:var(--muted)}@media(max-width:760px){.hero{grid-template-columns:1fr}}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-3)}.grid-modules{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-3)}@media(max-width:980px){.grid-modules{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.grid-modules{grid-template-columns:1fr}}.grid-modules .dl-module{max-width:none;height:100%}.dl-module__soon{font-size:11.5px;color:var(--muted);margin-top:auto}.dl-module__ready{font-size:11.5px;color:var(--ok);font-weight:600;margin-top:auto}.page-head{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-6);max-width:75ch}.with-side{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:var(--space-6);align-items:start}.with-side>*{min-width:0}.side{display:flex;flex-direction:column;gap:var(--space-3);position:sticky;top:76px}@media(max-width:900px){.with-side{grid-template-columns:1fr}.side{position:static}}.card{border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-4);background:var(--surface);display:flex;flex-direction:column;gap:var(--space-2)}.card h2,.card h3{font-size:15px}.card ul{margin:0;padding-left:18px;font-size:13.5px}.elements{display:flex;flex-direction:column;gap:var(--space-3)}.dl-lesson--soon{color:var(--muted)}.lesson-top{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-4)}.lesson-nav{position:sticky;top:58px;z-index:10;background:var(--bg);padding-block:var(--space-2);border-bottom:1px solid var(--line);margin-bottom:var(--space-6)}.lesson-nav .dl-steps a{text-decoration:none}.dl-steps a.dl-step:hover{border-color:var(--accent)}.stage{scroll-margin-top:130px;display:flex;flex-direction:column;gap:var(--space-3)}.stage-title{display:flex;align-items:center;gap:var(--space-2)}.stage-title .num{font:700 12px var(--font-mono);color:var(--on-accent);background:var(--accent);width:24px;height:24px;border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;flex:none}.situation{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-lg);padding:var(--space-4);max-width:75ch}.prose{max-width:70ch;display:flex;flex-direction:column;gap:var(--space-3)}.prose{font-size:16px;line-height:1.65}.prose h3{margin-top:var(--space-4);font-family:var(--font-display);font-size:21px;line-height:1.3;padding-left:12px;border-left:4px solid var(--accent)}.prose ul,.prose ol{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:4px}.prose pre{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-3);overflow-x:auto;font-size:13px;line-height:22px;margin:0}.prose pre code{background:none;padding:0;font-size:inherit}.prose table{display:block;max-width:100%;overflow-x:auto}.prose table{border-collapse:collapse;font-size:14px;width:100%}.prose th,.prose td{border:1px solid var(--line);padding:6px 10px;text-align:left}.prose th{background:var(--surface-2)}.prose blockquote{margin:0;padding:var(--space-3) var(--space-4);background:var(--accent-soft);border-radius:var(--radius-md)}.table-wrap{overflow-x:auto}.exercise{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.exercise h3{font-size:15px}.exercise p,.exercise li{overflow-wrap:anywhere}.exercise details{border-top:1px solid var(--line);padding-top:var(--space-2)}.exercise summary{cursor:pointer;font-weight:600;font-size:13.5px;color:var(--accent)}.exercise pre{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-3);overflow-x:auto;font-size:13px;line-height:22px;margin:var(--space-2) 0 0;white-space:pre}.quiz-q{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.quiz-q fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.quiz-q legend{font-weight:600;margin-bottom:var(--space-2);padding:0}.quiz-q label{display:flex;gap:var(--space-2);align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-md);cursor:pointer;font-size:14px}.quiz-q label:hover{border-color:var(--accent)}.quiz-q input{margin-top:3px;accent-color:var(--accent)}.quiz-score{font-weight:600}.pager{display:flex;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;border-top:1px solid var(--line);padding-top:var(--space-4)}.pager a{display:flex;flex-direction:column;gap:2px;text-decoration:none;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);max-width:48%;min-width:220px;flex:1}.pager a:hover{border-color:var(--accent)}.pager a.next{text-align:right}.pager small{color:var(--muted);font-size:12px}@media(max-width:560px){.pager a{max-width:none}}.sim-frame{width:100%;height:820px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg);display:block}@media(max-width:760px){.sim-frame{height:1100px}}.sim-bar{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.sim-bar .muted{font-size:13px}.py{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}.py textarea{width:100%;min-height:240px;border:0;border-bottom:1px solid var(--line);background:var(--paper);color:var(--ink);font:13px/24px var(--font-mono);padding:4px 12px;resize:vertical;tab-size:4;background-image:repeating-linear-gradient(to bottom,transparent 0 23px,var(--rule) 23px 24px);background-position:0 4px;background-attachment:local}.py .dl-row{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);background:var(--surface-2)}.py .status{font-size:12.5px;color:var(--muted);margin-left:auto}.py-in{display:flex;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);align-items:center;flex-wrap:wrap}.py-in label{font-size:13px;color:var(--muted)}.py-in input{flex:1;min-width:160px;font:13px var(--font-mono);padding:6px 8px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink)}.classify{display:flex;flex-direction:column;gap:var(--space-3)}.classify .pool{display:flex;flex-wrap:wrap;gap:var(--space-2)}.classify .item{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-md);padding:8px 10px;font-size:14px;display:flex;flex-direction:column;gap:6px}.classify .item .dl-row{gap:4px}.classify .item button{font-size:12px;padding:4px 8px}.classify .item button[aria-pressed=true]{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.classify .item.ok{border-color:var(--ok);background:var(--ok-soft)}.classify .item.ko{border-color:var(--bad);background:var(--bad-soft)}.classify .item .why{font-size:12.5px}.tree ul{list-style:none;margin:0;padding-left:22px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:6px}.tree>ul{padding-left:0;border-left:0}.tree li{display:flex;flex-direction:column;gap:6px}.tree button.node{text-align:left;font:500 14px var(--font-body);border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--radius-md);padding:7px 10px;cursor:pointer;display:inline-flex;gap:8px;align-items:center;width:fit-content;max-width:100%}.tree button.node:hover{border-color:var(--accent)}.tree button.node .sign{font-family:var(--font-mono);color:var(--accent);font-weight:700}.tree .leaf{border:1px dashed var(--line);border-radius:var(--radius-md);padding:7px 10px;font-size:14px;width:fit-content;max-width:100%;background:var(--surface-2)}.doc{max-width:72ch;display:flex;flex-direction:column;gap:var(--space-3)}.doc h2{margin-top:var(--space-4)}.doc ul{margin:0;padding-left:20px}.notice{background:var(--accent-soft);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:14px}@media print{.site-header,.site-footer,.dl-ad,.lesson-nav,.sim-frame,.pager{display:none!important}.exercise details{display:block}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}html{scroll-behavior:smooth}.anim{margin:0;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);max-width:760px}.anim__title{font:600 15px/1.3 var(--font-display)}.anim__stage{overflow-x:auto}.anim__stage svg{display:block;width:100%;height:auto;max-height:420px;min-width:300px;font-family:var(--font-body)}.anim__caption{min-height:3em;font-size:14.5px;padding:10px 12px;background:var(--accent-soft);border-radius:var(--radius-md)}.anim__ctrl{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.anim__count{font:12px var(--font-mono);color:var(--muted);margin-left:auto}.anim [data-from],.anim [data-to]{transition:opacity .45s ease}.anim .is-off{opacity:0;pointer-events:none}.anim [data-at]{transition:transform .8s cubic-bezier(.4,0,.2,1);transform-box:view-box}.anim .f-box{fill:var(--surface);stroke:var(--line);stroke-width:1.5;transition:fill .3s,stroke .3s}.anim .f-soft{fill:var(--surface-2);stroke:var(--line);stroke-width:1.5}.anim .f-acc{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2}.anim .f-ok{fill:var(--ok-soft);stroke:var(--ok);stroke-width:2}.anim .f-bad{fill:var(--bad-soft);stroke:var(--bad);stroke-width:2}.anim .f-chip{fill:var(--highlight);stroke:var(--highlight-line);stroke-width:1.5}.anim .f-edge{fill:none;stroke:var(--muted);stroke-width:1.5}.anim .f-arrow{fill:var(--muted)}.anim .is-hl.f-box,.anim .is-hl.f-soft{fill:var(--highlight);stroke:var(--highlight-line)}.anim .is-hl.f-acc{fill:var(--highlight)}.anim .is-hl.f-edge{stroke:var(--accent);stroke-width:2.5}.anim text{fill:var(--ink);font-size:14px}.anim text.t-b{font-weight:600}.anim text.t-s{fill:var(--muted);font-size:12px}.anim text.t-m{font-family:var(--font-mono);font-size:13px}.anim text.t-big{font:700 20px var(--font-mono)}.anim text.t-acc{fill:var(--accent)}.anim text.t-ok{fill:var(--ok);font-weight:600}.anim text.t-bad{fill:var(--bad);font-weight:600}@media(prefers-reduced-motion:reduce){.anim [data-at],.anim [data-from],.anim [data-to]{transition:none}}.examples{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--space-3);max-width:900px}.example{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.example .dl-chip{align-self:flex-start}.example h4{font-size:15px}.example p{font-size:14px}.example pre{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:10px 12px;overflow-x:auto;font-size:12.5px;line-height:21px;margin:0}.mem{border-top:1px solid var(--line)}.mem__body{padding:var(--space-3)}.mem__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-3)}.mem__col{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.mem__col h4{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.mem__class,.mem__obj{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper);padding:8px 10px;display:flex;flex-direction:column;gap:4px;font-size:13.5px;transition:background .3s,border-color .3s}.mem__class b{font-family:var(--font-mono);font-size:13px}.mem__obj.is-hl{background:var(--highlight);border-color:var(--highlight-line)}.mem__objhead{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.mem__row{display:flex;gap:8px;align-items:baseline;justify-content:space-between;font-size:13px;flex-wrap:wrap}.mem__row code{font-family:var(--font-mono);font-size:12.5px;word-break:break-all}.mem__attr,.mem__var{font-family:var(--font-mono);font-size:12.5px}.mem__var{font-weight:600}.mem__attr.is-private{color:var(--bad)}.mem__attr.is-protected{color:var(--accent)}.mem__meth{font:12px var(--font-mono);color:var(--muted);border-top:1px dashed var(--line);padding-top:4px}.mem__ref{font:600 12.5px var(--font-mono);color:var(--accent)}.web{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}.web__bar{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);background:var(--surface-2)}.web__tabs,.web__sizes{display:flex;gap:4px}.web__sizes{margin-left:auto}.web__tab,.web__size{font:12.5px var(--font-mono);padding:5px 10px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--muted);cursor:pointer}.web__tab[aria-selected=true],.web__size[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.web__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}@media(max-width:860px){.web__grid{grid-template-columns:1fr}}.web__edit textarea{display:block;width:100%;height:100%;min-height:300px;border:0;border-right:1px solid var(--line);background:var(--paper);color:var(--ink);font:13px/22px var(--font-mono);padding:8px 12px;resize:vertical;tab-size:2}.web__edit textarea[hidden]{display:none}@media(max-width:860px){.web__edit textarea{border-right:0;border-bottom:1px solid var(--line);min-height:220px}}.web__view{background:repeating-conic-gradient(var(--surface-2) 0 25%,var(--surface) 0 50%) 0 0 / 16px 16px;padding:var(--space-2);display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.web__frame{margin:0 auto;width:100%;transition:max-width .3s ease;box-shadow:0 1px 4px #00000026;border-radius:4px;overflow:hidden;background:#fff}.web__frame iframe{display:block;width:100%;border:0;background:#fff}.web__note{font-size:13px;padding:8px 10px;background:var(--accent-soft);border-radius:var(--radius-md)}.web__tasks{list-style:none;margin:0;padding:var(--space-3);border-top:1px solid var(--line);display:flex;flex-direction:column;gap:6px;font-size:14px}.web__tasks li{display:flex;gap:8px;align-items:baseline}.web__tick{font-weight:700;color:var(--muted);width:1em;flex:none}.web__tasks li.is-done,.web__tasks li.is-done .web__tick{color:var(--ok)}.anim svg.pre text{white-space:pre}.web__px{font:11.5px var(--font-mono);color:var(--muted)}.web__console{border-radius:4px;overflow:hidden;border:1px solid var(--line);background:var(--paper)}.web__console-head{display:flex;justify-content:space-between;align-items:center;padding:4px 10px;font:600 12px var(--font-mono);color:var(--muted);background:var(--surface-2);border-bottom:1px solid var(--line)}.web__clear{font:11.5px var(--font-mono);background:none;border:0;color:var(--accent);cursor:pointer}.web__console pre{margin:0;min-height:64px;max-height:180px;overflow:auto;padding:6px 10px;font:12.5px/1.5 var(--font-mono);white-space:pre-wrap;word-break:break-word}.web__log{border-bottom:1px dashed var(--line);padding:1px 0}.web__log--warn{color:var(--ad-ink)}.web__log--error{color:var(--bad)}.prose .def{margin:var(--space-1) 0;padding:14px 18px 16px;background:var(--highlight-faint);border:1px solid var(--highlight-line);border-left:6px solid var(--highlight-line);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:6px;scroll-margin-top:80px}.prose .def p{margin:0}.prose .def__label{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ad-ink);display:flex;align-items:center;gap:6px}.prose .def__label:before{content:"";width:14px;height:14px;border-radius:3px;background:var(--highlight-line)}.prose .def__terme{font-family:var(--font-display);font-size:20px;line-height:1.25;font-weight:700;color:var(--ink)}.prose .def__texte{font-size:17px;line-height:1.55;color:var(--ink)}.prose .def__clair{font-size:16px;line-height:1.55;color:var(--ink);padding-top:8px;border-top:1px dashed var(--highlight-line)}.prose .def__clair strong{color:var(--ok);margin-right:2px}.prose .def__clair strong:before{content:"💡 "}.prose .def code,.prose .def__terme code{font-size:.9em}.prose .motscles{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);padding:12px 16px}.prose .motscles__titre{margin:0 0 8px;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.prose .motscles ul{list-style:none;padding:0;margin:0;display:flex;flex-flow:row wrap;gap:8px}.prose .motscles a{display:inline-block;padding:4px 12px;border-radius:999px;background:var(--highlight-faint);border:1px solid var(--highlight-line);color:var(--ink);text-decoration:none;font-weight:600;font-size:14px}.prose .motscles a:hover{background:var(--highlight)}:root,[data-theme=light]{--tk-kw: #af00db;--tk-str: #a31515;--tk-num: #098658;--tk-com: #6a8a5a;--tk-fn: #795e26;--tk-tag: #800000;--tk-attr: #c2410c;--tk-prop: #0451a5;--tk-cls: #267f99;--tk-op: #5b6780;--tk-val: #0451a5}[data-theme=dark]{--tk-kw: #c586c0;--tk-str: #ce9178;--tk-num: #b5cea8;--tk-com: #7ca668;--tk-fn: #dcdcaa;--tk-tag: #569cd6;--tk-attr: #9cdcfe;--tk-prop: #9cdcfe;--tk-cls: #4ec9b0;--tk-op: #a3adc2;--tk-val: #ce9178}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--tk-kw: #c586c0;--tk-str: #ce9178;--tk-num: #b5cea8;--tk-com: #7ca668;--tk-fn: #dcdcaa;--tk-tag: #569cd6;--tk-attr: #9cdcfe;--tk-prop: #9cdcfe;--tk-cls: #4ec9b0;--tk-op: #a3adc2;--tk-val: #ce9178}}.tk-kw{color:var(--tk-kw)}.tk-str{color:var(--tk-str)}.tk-num{color:var(--tk-num)}.tk-com{color:var(--tk-com);font-style:italic}.tk-fn{color:var(--tk-fn)}.tk-tag{color:var(--tk-tag)}.tk-attr{color:var(--tk-attr)}.tk-prop{color:var(--tk-prop)}.tk-cls{color:var(--tk-cls)}.tk-op{color:var(--tk-op)}.tk-val{color:var(--tk-val)}.ed{display:flex;position:relative;min-width:0;background:var(--paper)}.ed[hidden]{display:none}.ed__num{flex:none;width:42px;contain:size;overflow:hidden;text-align:right;padding-right:8px;color:var(--muted);font-family:var(--font-mono);background:var(--surface-2);border-right:1px solid var(--line);user-select:none;opacity:.8}.ed__num span{display:block}.ed__num:after{content:"";display:block;height:400px}.ed__zone{position:relative;flex:1;min-width:0;display:flex;flex-direction:column}.ed__zone>.ed__ta{flex:1;color:transparent!important;caret-color:var(--ink);white-space:pre;overflow:auto}.ed__zone>.ed__ta::selection{background:color-mix(in srgb,var(--accent) 28%,transparent);color:transparent}.ed__hl{position:absolute;margin:0;overflow:hidden;pointer-events:none;white-space:pre;color:var(--ink);background:none;border:0;border-radius:0;box-sizing:border-box}.ed__hl code{font:inherit;background:none;padding:0;color:inherit}.web__edit .ed{height:100%;min-height:300px}@media(max-width:860px){.web__edit .ed{min-height:220px}}.card,.year-card,.situation,.exercise,.quiz-q,.pager a,.sim-frame,.py,.anim,.example,.web,.dl-module,.dl-element{box-shadow:var(--shadow-1);border-color:var(--rule)}.card,.year-card,.pager a,.dl-module{transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}.card:hover,.year-card:hover,.pager a:hover,.dl-module:hover{box-shadow:var(--shadow-2);transform:translateY(-2px)}.dl-btn{transition:background-color .15s ease,border-color .15s ease,filter .15s ease}.dl-btn--primary:hover{filter:brightness(1.08)}::selection{background:var(--accent-soft)}@media(prefers-reduced-motion:reduce){.card,.year-card,.pager a,.dl-module{transition:none;transform:none!important}}.lesson-resume{max-width:75ch;font-size:17px}.lesson-nav__titre{display:none}@media(min-width:1100px){.container{max-width:1240px}.lesson-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:var(--space-8);align-items:start}.lesson-nav{top:82px;margin:0;padding:var(--space-4);border:1px solid var(--rule);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-1)}.lesson-nav__titre{display:block;font:600 12px var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--space-3)}.lesson-nav .dl-steps{flex-direction:column;gap:4px}.lesson-nav .dl-step{display:flex;font-size:15px;padding:9px 12px;border-radius:var(--radius-md);border-color:transparent;background:transparent}.lesson-nav .dl-step:hover{background:var(--surface-2);border-color:transparent}.lesson-nav .dl-step--current{background:var(--accent-soft);color:var(--accent);font-weight:700}.lesson-nav .dl-step--done{color:var(--ok)}.lesson-grid .prose,.lesson-grid .situation,.lesson-grid .anim{max-width:none}.lesson-grid .prose{font-size:17px}.lesson-grid .examples{max-width:none}}.ed__hl code{position:relative}.ed__ligne{position:absolute;left:0;right:0;min-width:100%;background:var(--highlight-faint);border-left:3px solid var(--highlight-line)}.ed__ligne--erreur{background:var(--bad-soft);border-left-color:var(--bad)}.ed__num span.is-on{color:var(--ink);font-weight:700;background:var(--highlight)}.lab{display:flex;flex-direction:column;gap:var(--space-3)}.lab__barre{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:12px 14px}.lab__choix{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--muted)}.lab__choix select{font:500 14px var(--font-body);padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);max-width:260px}.lab__boutons{display:flex;flex-wrap:wrap;gap:8px}.lab__boutons kbd{font:500 11px var(--font-mono);padding:1px 5px;border-radius:4px;border:1px solid currentColor;opacity:.7}.lab__etat{margin-left:auto;font-size:13px;font-weight:600;padding:5px 12px;border-radius:var(--radius-pill);background:var(--surface-2);color:var(--muted)}.lab__etat[data-genre=ok]{background:var(--ok-soft);color:var(--ok)}.lab__etat[data-genre=erreur]{background:var(--bad-soft);color:var(--bad)}.lab__etat[data-genre=attente]{background:var(--highlight-faint);color:var(--ad-ink)}.lab__suivant{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;min-height:52px;padding:10px 16px;border-radius:var(--radius-lg);background:var(--accent-soft);color:var(--ink);font-size:15px;border:1px solid color-mix(in srgb,var(--accent) 25%,transparent)}.lab__suivant[data-genre=erreur]{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 35%,transparent)}.lab__suivant[data-genre=ok]{background:var(--ok-soft)}.lab__suivant[data-genre=attente]{background:var(--highlight-faint);border-color:var(--highlight-line)}.lab__tag{font:700 12px var(--font-body);letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}.lab__tag--ok{color:var(--ok)}.lab__tag--err{color:var(--bad)}.lab__dans{font-size:13px;color:var(--muted)}.lab__ins{font:14px var(--font-mono);background:var(--surface);padding:3px 10px;border-radius:var(--radius-sm);white-space:pre-wrap}.lab__aide-err{flex-basis:100%;font-size:14px;color:var(--ink)}.lab__grille{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:var(--space-3);align-items:stretch}.lab__droite{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.lab__panneau{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);overflow:hidden;display:flex;flex-direction:column;min-width:0}.lab__panneau>h2{font:700 15px var(--font-display);padding:10px 14px;border-bottom:1px solid var(--rule);display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.lab__panneau>h2 span{font:500 12.5px var(--font-body);color:var(--muted)}.lab__code{min-height:520px}.lab__code .ed{flex:1}.lab__code textarea{flex:1;width:100%;min-height:470px;border:0;resize:none;padding:12px 14px;font:14px/24px var(--font-mono);background:var(--paper);color:var(--ink);outline:none;tab-size:4}.lab__vars{flex:1.3;min-height:240px}.lab__defile{overflow:auto;max-height:360px;padding:10px;display:flex;flex-direction:column;gap:8px}.lab__cadre{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper)}.lab__cadre.is-top{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-soft)}.lab__cadre-nom{font:600 12.5px var(--font-mono);padding:5px 10px;border-bottom:1px solid var(--line);color:var(--accent);background:var(--surface-2);border-radius:var(--radius-md) var(--radius-md) 0 0}.lab__var{display:grid;grid-template-columns:minmax(70px,auto) 1fr auto;gap:10px;align-items:baseline;padding:5px 10px;border-bottom:1px dashed var(--rule);font-size:13.5px}.lab__var:last-child{border-bottom:0}.lab__var.is-changed{background:var(--changed);animation:lab-flash .6s ease}.lab__nom{font:600 13px var(--font-mono)}.lab__val{min-width:0;word-break:break-word}.lab__val code,.mem__row code{font:13px var(--font-mono);background:none;padding:0}.lab__type{font:11px var(--font-mono);color:var(--muted)}.lab__vide{padding:6px 10px;font-size:13px}.lab__ref{font:600 12.5px var(--font-mono);color:var(--accent)}.lab__console{flex:1;min-height:180px}.lab__sortie{margin:0;flex:1;min-height:140px;max-height:260px;overflow:auto;padding:10px 14px;background:var(--stage);color:var(--stage-ink);font:13.5px/1.6 var(--font-mono);white-space:pre-wrap}.lab__sortie .is-error{color:#ff9b8f}.lab__saisie{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-top:1px solid var(--rule);background:var(--highlight-faint)}.lab__saisie label{font:600 13px var(--font-mono);color:var(--ad-ink)}.lab__saisie input{flex:1;min-width:120px;font:14px var(--font-mono);padding:8px 10px;border:1px solid var(--highlight-line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink)}.lab__memoire{padding:12px}.mem__obj.is-new{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.mem__row.is-changed{background:var(--changed);border-radius:4px}.lab__neuf{font:700 10.5px var(--font-body);text-transform:uppercase;color:var(--accent)}.lab__page iframe{width:100%;height:300px;border:0;background:#fff}.lab__onglets{display:flex;gap:4px;padding:6px 8px 0;border-bottom:1px solid var(--rule)}.lab__onglet{font:600 14px var(--font-body);padding:9px 14px;border:0;background:none;color:var(--muted);border-bottom:2px solid transparent;cursor:pointer}.lab__onglet[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent)}.lab__trace,.lab__aide{padding:12px}.lab__tablewrap{overflow:auto;max-height:340px}.lab__trace table{border-collapse:collapse;font:13px var(--font-mono)}.lab__trace th{position:sticky;top:0;background:var(--surface-2);text-align:left;padding:6px 12px;border-bottom:1px solid var(--line);font-weight:600;white-space:nowrap}.lab__trace td{padding:4px 12px;border-bottom:1px solid var(--rule);white-space:nowrap}.lab__trace td.ins{max-width:320px;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}.lab__trace td.ins code{background:none;padding:0}.lab__trace td.ch{background:var(--changed);font-weight:700}.lab__trace tr.last td{border-bottom:2px solid var(--accent)}.lab__trace .q{color:var(--muted)}.lab__aide{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px}.lab__aide h3{font-size:15px;margin-bottom:6px}.lab__aide pre{margin:0;padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);font:13px/1.6 var(--font-mono);overflow-x:auto}.lab__aide p{margin-top:6px;font-size:14px;color:var(--muted)}@keyframes lab-flash{0%{background:var(--highlight)}}@media(max-width:900px){.lab__grille{grid-template-columns:minmax(0,1fr)}.lab__code{min-height:380px}.lab__code textarea{min-height:330px}.lab__etat{margin-left:0}}@media(prefers-reduced-motion:reduce){.lab__var.is-changed{animation:none}}.labs-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--space-3)}.lab-carte{text-decoration:none;color:var(--ink);position:relative}.lab-carte h3{font-size:18px}.lab-carte p{font-size:14px;flex:1}.lab-carte__icone{font-size:28px;line-height:1}.lab-carte .dl-chip{align-self:flex-start}.lab-carte__lien{font-weight:700;color:var(--accent);font-size:14px}.lab-head{max-width:90ch}.lab [hidden]{display:none!important}.prose .exemple,.prose .piege{margin:var(--space-1) 0;padding:14px 18px 16px;border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:8px}.prose .exemple{background:var(--ok-soft);border:1px solid color-mix(in srgb,var(--ok) 35%,transparent);border-left:6px solid var(--ok)}.prose .piege{background:var(--bad-soft);border:1px solid color-mix(in srgb,var(--bad) 30%,transparent);border-left:6px solid var(--bad)}.prose .exemple p,.prose .piege p{margin:0}.prose .exemple__label,.prose .piege__label{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;display:flex;align-items:center;gap:6px}.prose .exemple__label{color:var(--ok)}.prose .exemple__label:before{content:"✏️";font-size:14px}.prose .piege__label{color:var(--bad)}.prose .piege__label:before{content:"⚠️";font-size:14px}.prose .exemple__titre,.prose .piege__titre{font-family:var(--font-display);font-size:19px;line-height:1.25;font-weight:700}.prose .exemple__corps,.prose .piege__corps{display:flex;flex-direction:column;gap:10px;font-size:16.5px;line-height:1.6}.prose .exemple__corps pre,.prose .piege__corps pre{margin:0;background:var(--paper)}.prose .exemple__corps ol,.prose .exemple__corps ul,.prose .piege__corps ul,.prose .piege__corps ol{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:4px}.prose .exemple__inter,.prose .piege__inter{font-weight:700;font-size:15px;color:var(--ink)}.prose .exemple__inter:before{content:"▸ ";color:var(--ok)}.prose .piege__inter:before{content:"▸ ";color:var(--bad)}.prose .exemple table{background:var(--surface)}.prose pre.sortie{background:var(--stage);color:var(--stage-ink);border-color:var(--stage-line)}.lab__guide{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 28px;padding:14px 18px;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--rule);border-left:5px solid var(--accent);box-shadow:var(--shadow-1);font-size:15px;line-height:1.55}.lab__guide-titre{font:700 12px var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}.lab__guide ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}@media(max-width:760px){.lab__guide{grid-template-columns:1fr}}.sqlc{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}.sqlc__barre{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);background:var(--surface-2)}.sqlc .status{font-size:12.5px;color:var(--muted);margin-left:auto}.sqlc__corps{display:grid;grid-template-columns:minmax(180px,240px) minmax(0,1fr)}.sqlc__tables{border-right:1px solid var(--line);background:var(--surface);min-width:0}.sqlc__tables .dl-panel__head{border-radius:0}.sqlc__liste{padding:8px;display:flex;flex-direction:column;gap:4px;max-height:520px;overflow:auto}.sqlc__table summary{display:flex;align-items:baseline;gap:6px;cursor:pointer;padding:4px 6px;border-radius:var(--radius-md);font-size:13.5px}.sqlc__table summary:hover{background:var(--surface-2)}.sqlc__table summary .muted{font-size:12px;margin-left:auto}.sqlc__voir{border:0;background:none;padding:0;font:600 13.5px var(--font-mono);color:var(--accent);cursor:pointer;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 35%,transparent);text-underline-offset:3px}.sqlc__table ul{list-style:none;margin:2px 0 6px;padding:0 0 0 14px;font-size:12.5px;display:flex;flex-direction:column;gap:2px}.sqlc__col{font-family:var(--font-mono)}.sqlc__col.is-pk{font-weight:700}.sqlc__travail{min-width:0;display:flex;flex-direction:column}.sqlc textarea{width:100%;min-height:170px;border:0;border-bottom:1px solid var(--line);background:var(--paper);color:var(--ink);font:13px/24px var(--font-mono);padding:4px 12px;resize:vertical;tab-size:2}.sqlc .ed{min-height:170px;border-bottom:1px solid var(--line)}.sqlc__sortie{padding:10px 12px;display:flex;flex-direction:column;gap:12px;max-height:560px;overflow:auto;background:var(--surface)}.sqlc__res{display:flex;flex-direction:column;gap:6px}.sqlc__res+.sqlc__res{border-top:1px dashed var(--line);padding-top:10px}.sqlc__req code{font:12px var(--font-mono);color:var(--muted);background:none;padding:0;overflow-wrap:anywhere}.sqlc__ok{color:var(--ok);font-weight:600;font-size:14px}.sqlc__err{color:var(--bad);font-weight:600;font-size:14px;background:var(--bad-soft);border-radius:var(--radius-md);padding:8px 10px}.sqlc__note{font-size:13px;color:var(--muted)}.sqlc__info{font-size:12px;color:var(--muted)}.sqlc__grille{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-md);max-width:100%}.sqlc__grille table{border-collapse:collapse;font:13px var(--font-mono);width:max-content;min-width:100%}.sqlc__grille th{background:var(--surface-2);text-align:left;font-weight:700;padding:6px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.sqlc__grille td{padding:5px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.sqlc__grille tr:last-child td{border-bottom:0}.sqlc__grille tbody tr:nth-child(2n) td{background:color-mix(in srgb,var(--surface-2) 55%,transparent)}.sqlc__num{text-align:right}.sqlc__null{color:var(--muted);font-style:italic}.sqlc__taches{border-top:1px solid var(--line);padding:12px 16px;background:var(--surface-2)}.sqlc__taches-titre{font-weight:700;font-size:14px;display:flex;gap:8px}.sqlc__taches-titre span{font:12px var(--font-mono);color:var(--muted);margin-left:auto}.sqlc__taches ol{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.sqlc__taches li{display:flex;gap:10px;align-items:baseline;font-size:14.5px;overflow-wrap:anywhere}.sqlc__case{flex:none;width:16px;height:16px;border:2px solid var(--line);border-radius:4px;position:relative;top:2px}.sqlc__taches li.is-ok{color:var(--muted)}.sqlc__taches li.is-ok .sqlc__case{background:var(--ok);border-color:var(--ok)}.sqlc__taches li.is-ok .sqlc__case:after{content:"✓";color:#fff;font-size:12px;position:absolute;left:2px;top:-3px;font-weight:700}@media(max-width:760px){.sqlc__corps{grid-template-columns:1fr}.sqlc__tables{border-right:0;border-bottom:1px solid var(--line)}.sqlc__liste{max-height:220px}}.sqlpas,.sqlpas__aide{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0}.sqlpas[hidden]{display:none}.sqlpas{scroll-margin-top:84px}.sqlpas__tete{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.sqlpas__tete h2,.sqlpas__aide h2{font-size:19px}.sqlpas__nav{display:flex;align-items:center;gap:8px;margin-left:auto}.sqlpas__compte{font:13px var(--font-mono);color:var(--muted);min-width:92px;text-align:center}.sqlpas__puces{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.sqlpas__puces button{font:600 12.5px var(--font-mono);padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer}.sqlpas__puces button.is-vu{color:var(--ink);background:var(--surface-2)}.sqlpas__puces button.is-on{background:var(--accent);border-color:var(--accent);color:#fff}.sqlpas__requete{margin:0;padding:12px 14px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);font:13.5px/1.7 var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere}.sqlpas__requete mark{background:var(--highlight);outline:2px solid var(--highlight-line);border-radius:3px;color:inherit}.sqlpas__texte{font-size:16px;line-height:1.6;padding:10px 14px;background:var(--accent-soft);border-radius:var(--radius-md)}.sqlpas__legende{font-size:13px}.sqlpas .sqlc__grille{max-height:460px;overflow:auto}.sqlpas tr.is-rejete td{text-decoration:line-through;color:var(--muted);background:color-mix(in srgb,var(--surface-2) 70%,transparent)!important}.sqlpas tr.is-coupe td{color:var(--muted);opacity:.55}.sqlpas tr.is-garde td{background:color-mix(in srgb,var(--ok-soft) 70%,transparent)!important}.sqlpas tr.is-null td{background:var(--bad-soft)!important}.sqlpas tr.is-supprime td{background:var(--bad-soft)!important;color:var(--bad)}.sqlpas tr.is-nouveau td{background:var(--ok-soft)!important;font-weight:600}.sqlpas tr.is-modifie td{background:var(--highlight)!important}.sqlpas tr.sqlpas__g0 td{background:color-mix(in srgb,#2f7d68 16%,transparent)!important}.sqlpas tr.sqlpas__g1 td{background:color-mix(in srgb,#e2b04f 22%,transparent)!important}.sqlpas tr.sqlpas__g2 td{background:color-mix(in srgb,#5b7fd1 18%,transparent)!important}.sqlpas tr.sqlpas__g3 td{background:color-mix(in srgb,#c46a8a 18%,transparent)!important}.sqlpas tr.sqlpas__g4 td{background:color-mix(in srgb,#8a6fd0 18%,transparent)!important}.sqlpas tr.sqlpas__g5 td{background:color-mix(in srgb,#d0814f 20%,transparent)!important}.sqlpas__memo{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:16px}.sqlpas__memo h3{font-size:15px;margin-bottom:6px}.sqlpas__memo pre{margin:0;padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);font:13px/1.6 var(--font-mono);overflow-x:auto}.sqlpas__memo ol,.sqlpas__memo ul{margin:0;padding-left:20px;font-size:14px;display:flex;flex-direction:column;gap:3px}.phps{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}.phps__barre{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);background:var(--surface-2)}.phps .status{font-size:12.5px;color:var(--muted);margin-left:auto}.phps__corps{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}.phps__code{min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--line)}.phps__onglets{display:flex;gap:2px;padding:6px 6px 0;background:var(--surface-2);border-bottom:1px solid var(--line);overflow-x:auto}.phps__onglet{border:1px solid transparent;border-bottom:0;background:none;padding:6px 10px;font:600 12.5px var(--font-mono);color:var(--muted);border-radius:var(--radius-md) var(--radius-md) 0 0;cursor:pointer;white-space:nowrap;display:flex;gap:6px;align-items:center}.phps__onglet[aria-selected=true]{background:var(--paper);color:var(--ink);border-color:var(--line);margin-bottom:-1px}.phps__type{font:700 9.5px/16px var(--font-mono);padding:0 4px;border-radius:3px;background:var(--accent-soft);color:var(--accent)}.phps__type--php{background:color-mix(in srgb,#7b7fb5 22%,transparent);color:#5a5e9a}.phps__type--css{background:color-mix(in srgb,#3b82c4 18%,transparent);color:#2f6ea8}.phps__type--js{background:color-mix(in srgb,#d6a21e 22%,transparent);color:#8a6508}.phps textarea{width:100%;min-height:330px;border:0;background:var(--paper);color:var(--ink);font:13px/24px var(--font-mono);padding:4px 12px;resize:vertical;tab-size:4}.phps .ed{flex:1;min-height:330px}.phps__nav{min-width:0;display:flex;flex-direction:column;background:var(--surface-2)}.phps__adresse{display:flex;gap:4px;align-items:center;padding:6px;border-bottom:1px solid var(--line)}.phps__bouton{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--radius-md);font:600 13px var(--font-body);padding:4px 9px;cursor:pointer}.phps__bouton:disabled{opacity:.45;cursor:default}.phps__url{flex:1;min-width:0;display:flex;align-items:center;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);padding:0 10px;font:12.5px var(--font-mono);color:var(--muted)}.phps__url input{flex:1;min-width:0;border:0;background:none;color:var(--ink);font:inherit;padding:6px 0;outline:none}.phps__url:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.phps__vues{display:flex;gap:4px;align-items:center;padding:4px 6px;border-bottom:1px solid var(--line)}.phps__vues button{border:0;background:none;font:600 12.5px var(--font-body);color:var(--muted);padding:4px 8px;border-radius:var(--radius-md);cursor:pointer}.phps__vues button[aria-selected=true]{background:var(--accent-soft);color:var(--accent)}.phps__etat{margin-left:auto}.phps__ecran{position:relative;background:#fff;min-height:180px;resize:vertical;overflow:hidden}.phps__ecran iframe{width:100%;height:100%;border:0;display:block;background:#fff}.phps__source{margin:0;height:100%;overflow:auto;padding:10px 12px;font:12.5px/1.55 var(--font-mono);background:var(--paper);color:var(--ink);white-space:pre-wrap;word-break:break-word}.phps__attente{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:4px;padding:16px;background:var(--paper);color:var(--ink);font-size:14px}.phps__attente[hidden]{display:none}.phps__dl{padding:8px;border-top:1px solid var(--line)}.phps__statut{font:700 12px var(--font-mono);padding:1px 7px;border-radius:var(--radius-pill);white-space:nowrap}.phps__statut--ok{background:var(--ok-soft);color:var(--ok)}.phps__statut--redir{background:var(--accent-soft);color:var(--accent)}.phps__statut--err{background:var(--bad-soft);color:var(--bad)}.phps__http{border-top:1px solid var(--line);background:var(--surface)}.phps__http>summary{cursor:pointer;padding:10px 14px;font-size:14px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.phps__http>summary .muted{font-size:12.5px;overflow-wrap:anywhere}.phps__echanges{display:flex;flex-direction:column;gap:10px;padding:0 14px 14px;max-height:620px;overflow:auto}.phps__echange{border:1px solid var(--line);border-radius:var(--radius-md);padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--surface)}.phps__echange header{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px}.phps__echange header code{font:600 13px var(--font-mono);overflow-wrap:anywhere}.phps__echange header .muted{font-size:12px;flex-basis:100%}.phps__n{font:700 11px/20px var(--font-mono);min-width:20px;height:20px;text-align:center;border-radius:50%;background:var(--ink);color:var(--surface)}.phps__methode{font:700 11.5px var(--font-mono);padding:1px 6px;border-radius:4px;background:var(--surface-2);border:1px solid var(--line)}.phps__cols{display:grid;grid-template-columns:1fr 1fr;gap:8px}.phps__bloc{min-width:0}.phps__bloc h4{font:700 12.5px var(--font-body);margin:0 0 4px}.phps__entetes{margin:0;font:11.5px/1.5 var(--font-mono);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 8px;white-space:pre-wrap;word-break:break-all;max-height:200px;overflow:auto}.phps__corpsreq{font-size:12.5px;margin:6px 0 2px}.phps__sql{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px;font-size:13px}.phps__sql code{font:12.5px var(--font-mono);background:none;padding:0;overflow-wrap:anywhere}.phps__chip{margin-left:4px}.phps__sql .sqlc__err{font-size:12.5px;padding:4px 8px;margin-top:3px}.phps__aide{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}.phps__erreurs{margin:0;padding-left:18px;font-size:13px;display:flex;flex-direction:column;gap:4px}.phps__erreurs .is-err{color:var(--bad)}.phps__erreurs .is-warn{color:#a86b00}:root[data-theme=dark] .phps__erreurs .is-warn{color:#e2b04f}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .phps__erreurs .is-warn{color:#e2b04f}}.phps__bloc p code{font-size:12.5px;overflow-wrap:anywhere}@media(max-width:860px){.phps__corps{grid-template-columns:1fr}.phps__code{border-right:0;border-bottom:1px solid var(--line)}.phps textarea,.phps .ed{min-height:240px}.phps__cols{grid-template-columns:1fr}}.phps__ecran iframe[hidden],.phps__source[hidden]{display:none}.lab__requete{margin-bottom:var(--space-3)}.lab__req{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,1.2fr);gap:var(--space-3);align-items:end;padding:10px 12px}.lab__req label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--muted);font-weight:600;min-width:0}.lab__req select,.lab__req textarea,.lab__req-hote{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper);color:var(--ink);font:13px var(--font-mono);padding:6px 8px}.lab__req-hote{display:flex;align-items:center;color:var(--muted)}.lab__req-hote input{flex:1;min-width:0;border:0;background:none;color:var(--ink);font:inherit;outline:none}.lab__req textarea{resize:vertical;min-height:34px}.lab__req-autres{font-size:12.5px;padding:0 12px 10px}.lab__req-autres:empty{display:none}@media(max-width:760px){.lab__req{grid-template-columns:1fr}}code,pre,kbd,samp,textarea,.anim text.t-m{font-variant-ligatures:none}.prose :not(pre)>code,.quiz-q legend,.quiz-q label,.anim__caption{overflow-wrap:anywhere}.quiz-q fieldset{min-width:0}.pf{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}.pf__barre{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);background:var(--surface-2)}.pf .status{font-size:12.5px;color:var(--muted);margin-left:auto}.pf__corps{display:grid;grid-template-columns:minmax(190px,250px) minmax(0,1fr)}.pf__schema{border-right:1px solid var(--line);min-width:0}.pf__schema .dl-panel__head{border-radius:0}.pf__schema ul{list-style:none;margin:0;padding:8px;display:flex;flex-direction:column;gap:6px}.pf__machine{display:flex;flex-wrap:wrap;gap:2px 8px;align-items:baseline;border:1px solid var(--line);border-radius:var(--radius-md);padding:6px 8px;font-size:13.5px}.pf__machine code{font:12.5px var(--font-mono);background:none;padding:0}.pf__machine span{font-size:12px;color:var(--muted);width:100%}.pf__machine--net{border-style:dashed}.pf__aide{margin:0;padding:4px 12px 12px;font-size:12px;color:var(--muted);line-height:1.7}.pf__aide code{font-size:11.5px;overflow-wrap:anywhere}.pf__travail{min-width:0;display:flex;flex-direction:column}.pf textarea{width:100%;min-height:220px;border:0;background:var(--paper);color:var(--ink);font:13px/24px var(--font-mono);padding:4px 12px;resize:vertical}.pf .ed{min-height:220px;flex:1}.pf__erreurs{border-top:1px solid var(--line);padding:8px 12px;background:var(--bad-soft);color:var(--bad);font-size:13.5px;font-weight:600;display:flex;flex-direction:column;gap:4px}.pf__erreurs[hidden]{display:none}.pf__paquets{border-top:1px solid var(--line);padding:12px 16px;background:var(--surface-2);display:flex;flex-direction:column;gap:8px}.pf__grille{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.pf__grille table{border-collapse:collapse;font-size:13.5px;width:100%;min-width:780px}.pf__grille th{background:var(--surface-2);text-align:left;font-weight:700;padding:6px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.pf__grille td{padding:6px 10px;border-bottom:1px solid var(--line);vertical-align:top}.pf__grille td:first-child{max-width:260px}.pf__grille tr:last-child td{border-bottom:0}.pf__grille tr.is-ok td:first-child{box-shadow:inset 4px 0 var(--ok)}.pf__grille tr.is-bad td:first-child{box-shadow:inset 4px 0 var(--bad)}.pf__grille tr.is-bad td{background:color-mix(in srgb,var(--bad-soft) 55%,transparent)}.pf__ip{white-space:nowrap}.pf__ip code,.pf [data-regle] code{font:12.5px var(--font-mono);background:none;padding:0}.pf [data-regle]{font-size:12.5px;min-width:200px}.pf__tag{display:inline-block;font-size:12px;font-weight:700;border-radius:999px;padding:1px 8px;white-space:nowrap}.pf__tag--autoriser{background:var(--ok-soft);color:var(--ok)}.pf__tag--refuser{background:var(--bad-soft);color:var(--bad)}.pf__faux{color:var(--bad);font-weight:700}.pf__extra{list-style:none;margin:0;padding:0}.pf__extra li{display:flex;gap:10px;align-items:baseline;font-size:14.5px}.pf__extra li.is-ok{color:var(--muted)}.pf__extra li.is-ok .sqlc__case{background:var(--ok);border-color:var(--ok)}.pf__extra li.is-ok .sqlc__case:after{content:"✓";color:#fff;font-size:12px;position:absolute;left:2px;top:-3px;font-weight:700}@media(max-width:720px){.pf__corps{grid-template-columns:minmax(0,1fr)}.pf__schema{border-right:0;border-bottom:1px solid var(--line)}.pf__schema ul{flex-direction:row;flex-wrap:wrap}.pf__machine{flex:1 1 140px}}
