:root{--background: oklch(.965 .016 90);--foreground: oklch(.23 .03 290);--card: oklch(.987 .013 95);--card-foreground: oklch(.23 .03 290);--popover: oklch(.987 .013 95);--popover-foreground: oklch(.23 .03 290);--primary: oklch(.38 .14 292);--primary-foreground: oklch(.98 .01 90);--secondary: oklch(.5 .1 100);--secondary-foreground: oklch(.98 .01 90);--muted: oklch(.93 .02 90);--muted-foreground: oklch(.45 .03 290);--accent: oklch(.89 .12 100);--accent-foreground: oklch(.23 .03 290);--destructive: oklch(.628 .258 29.23);--destructive-foreground: oklch(.98 0 0);--border: oklch(.87 .03 290);--input: oklch(.87 .03 290);--ring: oklch(.45 .14 292);--font-sans: "Schibsted Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--radius: .5rem}.dark{--background: oklch(.2 .03 285);--foreground: oklch(.93 .025 90);--card: oklch(.25 .045 285);--card-foreground: oklch(.93 .025 90);--popover: oklch(.25 .045 285);--popover-foreground: oklch(.93 .025 90);--primary: oklch(.76 .12 295);--primary-foreground: oklch(.2 .05 290);--secondary: oklch(.5 .1 100);--secondary-foreground: oklch(.96 .015 90);--muted: oklch(.3 .04 285);--muted-foreground: oklch(.74 .03 290);--accent: oklch(.83 .11 100);--accent-foreground: oklch(.2 .03 285);--destructive: oklch(.628 .258 29.23);--destructive-foreground: oklch(.98 0 0);--border: oklch(.35 .06 285);--input: oklch(.35 .06 285);--ring: oklch(.76 .12 295)}:root{--ink:#4A2F8A;--ok:#2E7A5A;--red:#D23A2F;--hi:#F6E27A;--line:#D5D2EA;--line2:#ece9f5;--serif:"Instrument Serif", Georgia, serif;--script:"Playwrite FR Moderne", cursive;color-scheme:light}.dark{--ink:#B7A2F0;--ok:#5fb98f;--red:#ef6a5f;--hi:#E8D36A;--line:#3A3660;--line2:#2b2847;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{font-family:var(--font-sans);background:var(--background);color:var(--foreground);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}.shell{min-height:100vh}.nav{position:fixed;z-index:20;bottom:0;left:0;right:0;display:flex;background:var(--card);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.nav button{flex:1;border:0;background:none;padding:10px 4px;font-size:13px;font-weight:600;color:var(--muted-foreground);border-radius:8px;cursor:pointer;min-height:44px}.nav button.on{color:var(--ink);background:var(--muted)}.nav .brand,.nav .theme{display:none}.page{max-width:720px;margin:0 auto;padding:28px 20px 110px 40px;min-height:100vh;position:relative;background-image:repeating-linear-gradient(to bottom,transparent 0 31px,var(--line2) 31px 32px);background-attachment:local}.page:before{content:"";position:absolute;top:0;bottom:0;left:24px;width:2px;background:var(--red);opacity:.55}@media (min-width:900px){.nav{top:0;right:auto;bottom:0;width:220px;flex-direction:column;border-top:0;border-right:1px solid var(--border);padding:28px 14px;gap:4px}.nav button{flex:none;text-align:left;padding:10px 14px;font-size:15px}.nav .brand{display:block;font-family:var(--serif);font-size:30px;line-height:1;color:var(--ink);padding:0 14px 24px}.nav .brand span{display:block;font-family:var(--font-sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);margin-top:6px}.nav .theme{display:block;margin-top:auto;font-size:13px!important}.page{margin-left:max(240px,calc(50vw - 250px));padding:56px 40px 80px 72px}.page:before{left:44px}}.mobile-theme{display:none}.eyebrow{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);margin:0 0 8px}h1,h2{font-family:var(--serif);font-weight:400;margin:0 0 16px;letter-spacing:-.01em}h1{font-size:clamp(34px,6vw,46px);line-height:1.08}h1 em{color:var(--ink)}h2{font-size:32px;line-height:1.15}.hero{margin:8px 0 28px}.streak{display:inline-block;font-size:13px;font-weight:600;color:var(--ink);border:1px solid var(--border);background:var(--card);border-radius:999px;padding:4px 12px;margin-bottom:18px}.pills{display:flex;gap:10px;margin:0 0 24px}.pills.sm{margin:0}.pill{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--ink);display:grid;place-items:center;font-family:var(--serif);font-size:20px;color:var(--ink);background:var(--card)}.pills.sm .pill{width:28px;height:28px;font-size:15px}.pill.cur{background:var(--ink);color:var(--primary-foreground)}.pill.ok{background:var(--ok);border-color:var(--ok);color:#fff}.pill.ko{background:var(--red);border-color:var(--red);color:#fff}.row{display:flex;gap:10px;align-items:center;margin:16px 0}.row.wrap{flex-wrap:wrap}.row.tight{margin:0;flex-wrap:wrap}.mt{margin-top:24px}.btn{border:1.5px solid transparent;border-radius:var(--radius);padding:10px 18px;min-height:44px;font-weight:600;cursor:pointer;transition:transform .08s,background .15s,opacity .15s;background:none;display:inline-flex;align-items:center;justify-content:center;text-align:center}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--ink);color:var(--primary-foreground)}.btn.primary:hover:not(:disabled){filter:brightness(1.12)}.btn.big{padding:14px 26px;font-size:17px}.btn.ghost{border-color:var(--border);background:var(--card)}.btn.ghost:hover{border-color:var(--ink)}.btn.red-ghost{color:var(--red)}.btn.red-ghost:hover{background:color-mix(in oklab,var(--red) 10%,transparent)}.btn.small{padding:6px 12px;min-height:36px;font-size:13px}.btn.ok-btn{border-color:var(--ok);color:var(--ok);background:var(--card)}.btn.ok-btn:hover{background:var(--ok);color:#fff}.btn.file{position:relative;overflow:hidden}.btn.file input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.link{border:0;background:none;color:var(--ink);font-weight:600;cursor:pointer;padding:4px 0;display:block;margin-top:6px}.warn{border-left:4px solid var(--red);background:var(--card);padding:12px 16px;border-radius:0 var(--radius) var(--radius) 0;margin:16px 0;font-size:15px}.card{background:var(--card);border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);padding:18px}.ex{padding:24px 22px;box-shadow:0 2px 0 var(--line)}.ex-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px}.script{font-family:var(--script);font-size:clamp(20px,4.5vw,27px);line-height:1.6;color:var(--ink);margin:10px 0 20px}.prompt-fr{font-family:var(--serif);font-size:28px;line-height:1.2;margin:8px 0 20px}.prompt-fr.small{font-size:21px;color:var(--muted-foreground);font-style:italic}.opts{display:grid;gap:10px}.opt{text-align:left;border:1.5px solid var(--border);background:var(--background);border-radius:var(--radius);padding:12px 16px;min-height:48px;cursor:pointer;transition:border-color .15s,background .15s}.opt:hover:not(:disabled){border-color:var(--ink)}.opt.right{border-color:var(--ok);background:color-mix(in oklab,var(--ok) 14%,var(--card));font-weight:600}.opt.wrong{border-color:var(--red);background:color-mix(in oklab,var(--red) 12%,var(--card));text-decoration:line-through}.opt.dim{opacity:.5}.opt:disabled{cursor:default}.line-input{width:100%;border:0;border-bottom:2px solid var(--ink);background:transparent;padding:10px 2px;font-size:20px;outline:none}.line-input:focus{border-bottom-color:var(--red)}.blank-line{font-family:var(--script);font-size:clamp(18px,4vw,23px);line-height:2.3;color:var(--ink)}.blank{font-family:var(--font-sans);font-size:17px;border:0;border-bottom:2px dashed var(--red);background:color-mix(in oklab,var(--hi) 25%,transparent);padding:2px 4px;outline:none;max-width:60vw}.blank:focus{border-bottom-style:solid}mark.hl{background:var(--hi);color:#211d33;padding:0 3px;border-radius:2px}mark.hl.ok{background:color-mix(in oklab,var(--ok) 35%,var(--hi))}.feedback{margin-top:20px;padding-top:16px;border-top:1px dashed var(--border);animation:in .25s ease}.feedback.ok strong{color:var(--ok);font-family:var(--serif);font-size:26px;font-weight:400}.feedback.ko>span{color:var(--red);font-size:17px}.feedback em{font-style:normal;font-weight:700}.fb-sub{color:var(--muted-foreground);font-size:14px;margin-top:4px}@keyframes in{0%{opacity:0;transform:translateY(4px)}}.result-head{display:flex;align-items:center;gap:24px;margin:8px 0 24px;flex-wrap:wrap}.stamp{font-family:var(--serif);font-size:56px;color:var(--red);border:3px solid var(--red);border-radius:12px;padding:0 18px;transform:rotate(-6deg);animation:stamp .4s cubic-bezier(.2,1.6,.4,1)}@keyframes stamp{0%{transform:rotate(-6deg) scale(1.6);opacity:0}}.lead{font-family:var(--serif);font-size:26px;line-height:1.2;margin:0;flex:1;min-width:200px}.stack{display:grid;gap:10px}.res{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.res .mark{font-size:20px;font-weight:700}.res.ok .mark{color:var(--ok)}.res.ko .mark{color:var(--red)}.grow{flex:1;min-width:180px}.en{font-weight:700}.fr{color:var(--muted-foreground);font-size:15px}.filters{display:grid;gap:10px;margin:8px 0 20px}.search,select,.form input,textarea{border:1.5px solid var(--border);background:var(--card);border-radius:var(--radius);padding:10px 12px;min-height:44px;outline:none;width:100%}select{width:auto;flex:1;min-width:150px}.search:focus,select:focus,.form input:focus,textarea:focus{border-color:var(--ink)}.group{margin-bottom:22px}.cat{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin:0 0 8px;font-weight:700}.cat span{color:var(--muted-foreground);font-weight:500;margin-left:6px}.rows{display:grid;gap:8px}.entry{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;flex-wrap:wrap}.entry.mastered{opacity:.75}.meta{font-size:12px;color:var(--muted-foreground);margin-top:4px;display:flex;gap:8px;align-items:center}.tag{border:1px solid var(--border);border-radius:999px;padding:1px 8px;font-size:11px}.tag.ok{border-color:var(--ok);color:var(--ok)}.actions{display:flex;gap:6px;align-items:center}.icon{border:0;background:none;width:36px;height:36px;border-radius:8px;cursor:pointer;color:var(--muted-foreground);font-size:16px}.icon:hover{background:var(--muted);color:var(--foreground)}.icon.red:hover{color:var(--red)}.empty{border:1.5px dashed var(--border);border-radius:var(--radius);padding:24px;text-align:center;color:var(--muted-foreground);background:var(--card)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14102873;display:grid;place-items:center;z-index:50;padding:16px}.modal{background:var(--card);border-radius:14px;padding:22px;width:100%;max-width:560px;max-height:90vh;overflow:auto;box-shadow:0 20px 60px #00000040}.modal-head{display:flex;justify-content:space-between;align-items:flex-start}.modal h2{font-size:26px}.form{display:grid;gap:14px}.form label{display:grid;gap:6px;font-size:13px;font-weight:600}textarea{font-family:var(--font-mono);font-size:13px;resize:vertical}.muted{color:var(--muted-foreground);font-size:14px}code{background:var(--muted);padding:1px 5px;border-radius:4px;font-size:13px}.progress{height:14px;border-radius:999px;background:var(--line2);border:1px solid var(--line);overflow:hidden;margin:4px 0 28px}.progress div{height:100%;background:var(--ink);border-radius:999px;transition:width .5s}.numbers{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}@media (min-width:600px){.numbers{grid-template-columns:repeat(4,1fr)}}.numbers div{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.numbers b{display:block;font-family:var(--serif);font-weight:400;font-size:52px;line-height:1;color:var(--ink)}.numbers span{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);font-weight:600}@media (max-width:899px){.page{padding-top:20px}}
