:root{--notion-foundation: #3b82f6;--notion-aggregation: #8b5cf6;--notion-jointure: #06b6d4;--notion-avance: #f59e0b;--ink: #12263a;--navy-800: #1b3350;--navy-700: #24425f;--gold: #c9a227;--gold-light: #f0e2b8;--gold-dark: #9c7d16;--ok: #0e9f6e;--ok-bg: #e6f7f0;--warn: #d97706;--warn-bg: #fff4e0;--ko: #dc2626;--ko-bg: #fdecec;--paper: #f6f5f2;--surface: #ffffff;--text: #1f2d3a;--muted: #6b7c8c;--line: #dfe4e9;--line-soft: #eef1f4;--code-bg: #f1f3f5;--radius: 8px;--mono: "JetBrains Mono", ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;--sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--shadow: 0 1px 2px rgba(18, 38, 58, .06);--chrome: #12263a;--chrome-2: #1b3350;--on-chrome: #ffffff;--on-chrome-soft: #d9e2ec;--on-chrome-muted: #b8c4d0;color-scheme:light}:root[data-theme=dark]{--ink: #e8edf2;--paper: #0f1720;--surface: #16212c;--text: #e6ebf0;--muted: #94a3b3;--line: #2a3745;--line-soft: #1f2a36;--code-bg: #0b1219;--ok-bg: #0f2e24;--warn-bg: #3a2a0d;--ko-bg: #3a1616;--gold-light: #3b3218;--gold-dark: #e2c25c;color-scheme:dark}*{box-sizing:border-box}html{font-size:16px}body{margin:0;font-family:var(--sans);color:var(--text);background:var(--paper);line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit}button,input,textarea{font:inherit}code,pre,.editor{font-family:var(--mono)}h1,h2,h3{color:var(--ink);line-height:1.2;margin:0 0 .5rem}h1{font-size:clamp(1.4rem,2.5vw,2rem)}h2{font-size:1.15rem}h3{font-size:1rem}.small-title{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1.25rem 0 .5rem}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.error{color:var(--ko);background:var(--ko-bg);border-radius:var(--radius);padding:.6rem .8rem}:focus-visible{outline:3px solid var(--gold-dark);outline-offset:2px}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:1rem;padding:.55rem 1rem;background:var(--chrome);color:var(--on-chrome);border-bottom:1px solid var(--navy-700)}.topbar .brand{display:flex;align-items:center;gap:.5rem;font-weight:700;text-decoration:none;color:var(--on-chrome)}.topbar .brand img{border-radius:6px}.topnav{display:flex;align-items:center;gap:.15rem}.topnav a{color:var(--on-chrome-soft);text-decoration:none;font-size:.95rem;padding:.25rem .5rem;border-radius:6px}.topnav a:hover{background:var(--navy-700)}.topbar .spacer{flex:1}.topbar .muted{color:var(--on-chrome-muted)}.engine-dot{width:10px;height:10px;border-radius:50%;background:#f59e0b;box-shadow:0 0 0 3px #ffffff1f}.engine-dot.ready{background:var(--ok)}.menu-btn,.mobilenav{display:none}@media(max-width:1000px){.menu-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;color:var(--on-chrome);border:1px solid rgba(255,255,255,.35);border-radius:6px;font-size:1.05rem;cursor:pointer}.menu-btn:hover{background:var(--navy-700)}.mobilenav{display:flex;flex-direction:column;gap:.1rem;position:absolute;top:100%;left:0;right:0;background:var(--chrome);padding:.4rem;box-shadow:0 10px 20px #00000047;max-height:0;overflow:hidden;opacity:0;pointer-events:none;transition:max-height .2s ease,opacity .2s ease}.mobilenav.open{max-height:320px;opacity:1;pointer-events:auto}.mobilenav a{color:var(--on-chrome-soft);text-decoration:none;padding:.65rem .75rem;border-radius:6px}.mobilenav a:hover{background:var(--navy-700)}}.outlet{max-width:1240px;margin:0 auto;padding:1.25rem 1rem 3rem}.foot{text-align:center;padding:1rem;border-top:1px solid var(--line)}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem .95rem;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;text-decoration:none;font-weight:600;min-height:40px;transition:background .15s,border-color .15s,transform .05s}.btn:hover{border-color:var(--navy-700)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:progress}.btn.primary{background:var(--chrome);color:var(--on-chrome);border-color:var(--chrome)}.btn.primary:hover{background:var(--chrome-2)}.btn.ghost{background:transparent}.btn.small{min-height:32px;padding:.3rem .7rem;font-size:.85rem}.theme-switch{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}.badge{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.03em;padding:.15rem .5rem;border-radius:999px;text-transform:uppercase}.badge.easy{background:var(--ok-bg);color:var(--ok)}.badge.medium{background:var(--warn-bg);color:var(--warn)}.badge.hard{background:var(--ko-bg);color:var(--ko)}.badge.theme{background:var(--gold-light);color:var(--gold-dark);text-transform:none}.hero{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1.5rem;box-shadow:var(--shadow)}.hero .lead{font-size:1.05rem;max-width:62ch}.hero .actions{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin:1rem 0 .75rem}.hero-landing{background:var(--navy-800);border-color:var(--navy-700)}.hero-landing h1{color:#fff}.hero-landing .lead{color:#c7d3e0}.hero-landing .hero-text .eyebrow{color:var(--gold)}.hero-landing .hero-text .people{color:#8fa3bb}.hero-landing .btn.primary{background:var(--gold);color:var(--navy-800);border-color:var(--gold)}.hero-landing .btn.primary:hover{background:var(--gold-dark);color:#fff}.hero-landing .btn.ghost{color:#fff;border-color:#ffffff59}.hero-landing .btn.ghost:hover{border-color:#fff}.hero-landing .promise-card{background:#ffffff12;border-color:#ffffff29;box-shadow:none}.hero-landing .promise-label,.hero-landing .promise-stat-number{color:#fff}.hero-landing .promise-stat-label{color:#b8c4d0}.hero-landing .promise-stat-divider{background:#ffffff2e}.hero-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(220px,2fr);gap:2rem;align-items:center}.hero-text .eyebrow{color:var(--gold-dark);font-weight:700;text-transform:uppercase;letter-spacing:.07em;font-size:.78rem;margin:0 0 .5rem}.hero-text .people{margin-top:.85rem}.hero-promise{display:flex;justify-content:center}.promise-card{width:100%;max-width:280px;text-align:center;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:1.25rem 1.5rem;box-shadow:var(--shadow)}.promise-label{margin:0 0 1rem;font-weight:600;color:var(--ink)}.promise-stats{display:flex;align-items:center;justify-content:center;gap:1rem}.promise-stat{display:flex;flex-direction:column;align-items:center;gap:.15rem}.promise-stat-number{font-family:var(--mono);font-size:1.8rem;font-weight:800;color:var(--ink)}.promise-stat-label{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.promise-stat-divider{align-self:stretch;width:1px;background:var(--line)}.sql-preview{margin-top:1.5rem;background:var(--chrome);border-radius:12px;overflow:hidden}.sql-preview-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem .9rem;background:var(--chrome-2);border-bottom:1px solid rgba(255,255,255,.12)}.sql-preview-label{color:var(--on-chrome);font-weight:600;font-size:.85rem}.sql-preview-meta{color:var(--on-chrome-muted)!important}.sql-preview-code{margin:0;padding:1rem 1.1rem;overflow-x:auto}.sql-preview-code code{font-family:var(--mono);font-size:.85rem;line-height:1.6;color:var(--on-chrome-soft);white-space:pre}.sql-preview-verdict{display:flex;align-items:center;gap:.6rem;padding:.7rem 1.1rem;background:var(--chrome-2);border-top:1px solid rgba(255,255,255,.12)}.sql-preview-verdict .muted.small{color:var(--on-chrome-muted)!important}.verdict-chip{display:inline-flex;align-items:center;font-family:var(--mono);font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:.2rem .55rem;border-radius:6px;white-space:nowrap}.verdict-chip.ok{background:var(--ok-bg);color:var(--ok)}.verdict-chip.warn{background:var(--warn-bg);color:var(--warn)}.diagnostic-showcase{margin:2.5rem 0}.diagnostic-showcase .section-head{max-width:62ch;margin-bottom:1.25rem}.diagnostic-showcase .section-head .eyebrow{display:block;color:var(--gold-dark);font-weight:700;text-transform:uppercase;letter-spacing:.07em;font-size:.78rem;margin-bottom:.4rem}.diagnostic-showcase .section-head h2{margin:0;font-size:1.4rem}.diagnostic-showcase .section-head p{margin:.5rem 0 0}.diagnostic-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}.diagnostic-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1.1rem}.diagnostic-card .verdict-row{display:flex;align-items:center;gap:.55rem;margin-bottom:.7rem}.diagnostic-card p{margin:0}.benefits{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin:1.5rem 0}.benefit{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1.1rem}.benefit-index{display:block;font-family:var(--mono);font-weight:700;font-size:.78rem;margin-bottom:.5rem}.benefit-body h3{margin-bottom:.35rem;font-size:1rem}.benefit-body p{margin:0}.benefit-foundation .benefit-index{color:var(--notion-foundation)}.benefit-jointure .benefit-index{color:var(--notion-jointure)}.benefit-aggregation .benefit-index{color:var(--notion-aggregation)}.benefit-avance .benefit-index{color:var(--notion-avance)}.cta-final{margin-top:1.5rem;background:var(--chrome);border-radius:14px;padding:2rem 1.5rem;text-align:center}.cta-final-inner{max-width:46ch;margin:0 auto}.cta-final h2{color:var(--on-chrome)}.cta-final .lead{color:var(--on-chrome-soft);margin:0 auto}.cta-final .btn.primary{margin-top:.9rem;background:var(--gold);color:var(--navy-800);border-color:var(--gold)}.cta-final .btn.primary:hover{background:var(--gold-dark);color:var(--on-chrome)}@media(max-width:760px){.hero-grid{grid-template-columns:1fr}.hero-promise{order:-1}.promise-card{max-width:none}}.progressbar{height:6px;background:var(--line-soft);border-radius:999px;overflow:hidden}.progressbar .bar{height:100%;background:var(--gold);transition:width .3s}.catalog{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem;margin-top:1.5rem}.catalog .level{grid-column:1 / -1;margin:1rem 0 0;font-size:1rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.notion{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1rem}.notion header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.notion p{margin:.25rem 0 .75rem}.exos{list-style:none;margin:0;padding:0}.exo{display:grid;grid-template-columns:12px auto 1fr auto;gap:.6rem;align-items:center;padding:.45rem .3rem;border-radius:6px;text-decoration:none}.lesson .panel .exo{grid-template-columns:auto 1fr}.exo:hover{background:var(--line-soft)}.exo .id{font-family:var(--mono);font-size:.8rem;color:var(--muted)}.exo .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot{width:10px;height:10px;border-radius:50%;background:var(--line);display:inline-block}.dot.ok{background:var(--ok)}.dot.partial{background:var(--warn)}.notion-badge{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:600;font-family:var(--mono);padding:.2rem .55rem;border-radius:6px;background:color-mix(in srgb,var(--notion-color) 14%,var(--surface));color:var(--notion-color);border:1px solid color-mix(in srgb,var(--notion-color) 30%,transparent);white-space:nowrap}.notion-badge-icon{display:inline-flex;align-items:center}.notion-badge-icon svg{width:14px;height:14px;flex-shrink:0}[data-niveau=Fondation]{--notion-color: var(--notion-foundation)}[data-niveau=Agrégation]{--notion-color: var(--notion-aggregation)}[data-niveau=Jointure]{--notion-color: var(--notion-jointure)}[data-niveau=Avancé]{--notion-color: var(--notion-avance)}.lesson{display:grid;grid-template-columns:minmax(0,1fr);gap:1.25rem;align-items:start}@media(min-width:1001px){.lesson{grid-template-columns:minmax(0,1fr) minmax(220px,300px)}.lesson .panel.left{position:sticky;top:1rem;max-height:calc(100vh - 2rem);overflow:auto}.lesson .panel.right{position:sticky;top:1rem}}.exo-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.exo-head-row h1{margin:0}.crumbs{font-size:.85rem;margin-bottom:.5rem}.exo-head .badge{margin-right:.4rem}.exo-head h1{margin-top:.5rem}.md p{margin:.4rem 0}.md code,.hint code{background:var(--code-bg);padding:.05rem .3rem;border-radius:4px;font-size:.92em}.md pre.code{background:var(--code-bg);padding:.6rem .8rem;border-radius:var(--radius);overflow-x:auto}.hints .hint{background:var(--gold-light);color:var(--gold-dark);padding:.5rem .7rem;border-radius:var(--radius);margin:.4rem 0;font-size:.92rem}.schema details{border:1px solid var(--line-soft);border-radius:var(--radius);padding:.3rem .6rem;margin:.35rem 0}.schema details.hl{border-color:var(--gold)}.schema summary{cursor:pointer;font-weight:600}.schema .cols{list-style:none;padding:.2rem 0 .2rem .4rem;margin:0;font-size:.9rem}.schema .cols li{padding:.1rem 0}.key{font-size:.68rem;font-weight:700;padding:0 .35rem;border-radius:4px;margin-left:.35rem;vertical-align:middle}.key.pk{background:var(--gold-light);color:var(--gold-dark)}.key.fk{background:var(--line-soft);color:var(--muted)}.editor{width:100%;min-height:160px;resize:vertical;padding:.75rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--code-bg);color:var(--text);font-size:.95rem;line-height:1.5;tab-size:2}.editor:focus{border-color:var(--gold-dark);outline:none;box-shadow:0 0 0 3px #c9a22740}.toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.6rem 0 1rem}.toolbar .shortcut{margin-left:auto}.verdict{border-radius:var(--radius);padding:.9rem 1rem;margin:.5rem 0 1rem;border:1px solid var(--line)}.verdict.ok{background:var(--ok-bg);border-color:var(--ok)}.verdict.partial{background:var(--warn-bg);border-color:var(--warn)}.verdict.ko{background:var(--ko-bg);border-color:var(--ko)}.verdict h3{margin-bottom:.4rem}.verdict .diags{margin:.3rem 0 .6rem 1.1rem;padding:0}.verdict .diags li{margin:.3rem 0}.verdict .hint-inline{color:var(--muted)}.status{min-height:1.4em;margin-bottom:.4rem}.results-box:not(:empty){margin-top:.6rem}.table-wrap{overflow:auto;max-height:60vh;border:1px solid var(--line);border-radius:var(--radius)}.grid{border-collapse:collapse;width:100%;font-size:.9rem}.grid th,.grid td{padding:.4rem .6rem;border-bottom:1px solid var(--line-soft);text-align:left;white-space:nowrap}.grid thead th{position:sticky;top:0;background:var(--chrome);color:var(--on-chrome);font-weight:600}.grid td.num{text-align:right;font-variant-numeric:tabular-nums}.grid td.null{color:var(--muted);font-style:italic}.grid tbody tr:nth-child(2n) td{background:var(--line-soft)}.pager{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.25rem}.assessment-intro{max-width:62ch;margin:0 auto;text-align:center}.assessment-intro .btn{margin:.75rem 0}.assessment .toolbar .spacer{flex:1}.profile{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:1.25rem}.notion-scores{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.8rem}.notion-score{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.7rem .9rem}.notion-score-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem;gap:.5rem}.notion-score .progressbar{margin-bottom:.4rem}.notion-score .progressbar .bar.easy{background:var(--ok)}.notion-score .progressbar .bar.medium{background:var(--warn)}.notion-score .progressbar .bar.hard{background:var(--ko)}.login-form{max-width:40ch;margin:0 auto;display:flex;flex-direction:column;gap:.75rem}.switch{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.9rem;color:var(--muted)}.login-form input[type=email]{padding:.55rem .7rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:1rem}@media(max-width:1000px){.workshop{grid-template-columns:1fr}.panel.left{position:static;max-height:none}.toolbar .shortcut,.topnav,.topbar .muted{display:none}}@media(max-width:560px){.outlet{padding:.75rem .75rem 2rem}.panel{padding:.9rem;border-radius:10px}.toolbar .btn{flex:1;justify-content:center}.exo{grid-template-columns:12px 1fr auto}.exo .id{display:none}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--gold);color:var(--ink);padding:.6rem 1rem;border-radius:0 0 var(--radius) 0;font-weight:700}.skip:focus{left:0}
