.sp-view{background:var(--bg,#f6f0e4);touch-action:manipulation;width:100%;height:100%;position:relative;overflow:hidden}.sp-world{-webkit-user-select:none;user-select:none;position:absolute;top:0;left:0}.sp-background,.sp-front,.sp-grey{pointer-events:none;-webkit-user-drag:none;width:100%;height:100%;position:absolute;inset:0}.sp-front{z-index:1400}.sp-character,.sp-walker{pointer-events:none;position:absolute}.sp-character{overflow:hidden}.sp-walker img{width:100%;height:100%;display:block}.sp-character>img:first-child{display:block}.sp-eri-still{z-index:1460;filter:drop-shadow(0 2px 2px #0006);cursor:pointer;width:17%;position:absolute;bottom:1%;right:2%}.sp-mouth{pointer-events:none;object-fit:fill;max-width:none;display:block;position:absolute}.sp-entity{cursor:pointer;z-index:1450;touch-action:none;min-width:44px;min-height:44px;transition:transform .2s ease, left var(--sp-move,0s) linear, top var(--sp-move,0s) linear;background:0 0;border:0;padding:0;position:absolute}.sp-entity img{filter:drop-shadow(0 2px 2px #0006);pointer-events:none;width:100%;display:block}.sp-entity-grey img{filter:grayscale()drop-shadow(0 2px 2px #0006)}.sp-entity:focus-visible{outline:2px solid var(--outline,#2b1d14);outline-offset:2px}.sp-place{min-width:44px;min-height:44px}.sp-passive{pointer-events:none;min-width:0;min-height:0}.sp-cut{overflow:hidden}@media (hover:hover){.sp-entity:hover{transform:translateY(-2px)}}.sp-label{color:var(--ink,#3a2a1e);border:1px solid var(--ink,#3a2a1e);white-space:nowrap;background:#fff;border-radius:8px;padding:5px 8px;font:700 15px/1 Noto Sans KR,Malgun Gothic,sans-serif;position:absolute;bottom:calc(100% + 5px);left:50%;transform:translate(-50%)}.sp-photo{z-index:2500;background:#fff;width:42%;padding:8px 8px 24px;animation:.25s ease-out sp-photo;position:absolute;bottom:12px;right:12px;transform:rotate(-3deg);box-shadow:0 8px 24px #3a2a1e55}.sp-photo>div{aspect-ratio:1;background-repeat:no-repeat;width:100%}@keyframes sp-photo{0%{opacity:0;transform:rotate(-3deg)scale(.8)}}.sp-hidden{display:none}.sp-glow{animation:1.3s ease-in-out infinite sp-glow}@keyframes sp-glow{50%{filter:drop-shadow(0 0 10px #fff)drop-shadow(0 0 12px #c65a42);transform:translateY(-3px)}}.sp-flash{z-index:3000;pointer-events:none;background:#fff;animation:.28s ease-out forwards sp-flash;position:absolute;inset:0}@keyframes sp-flash{0%{opacity:.95}to{opacity:0}}@media (prefers-reduced-motion:reduce){.sp-glow,.sp-flash,.sp-photo{animation:none}.sp-entity{transition:none}}
:root{--bg:#f6f0e4;--surface:#fff;--ink:#3a2a1e;--muted:#8a7968;--line:#e4dccb;--action:#c65a42;--success:#4f7d56;--error:#b5524a;--warning:#e08a2e;--mustard:#deba5a;--teal:#42a296;--outline:#2b1d14;--dim-reading:var(--action);--dim-listening:var(--teal);--dim-writing:var(--mustard);--dim-speaking:var(--outline);--radius-s:8px;--radius-m:16px;--radius-l:24px;--font-body:-apple-system, blinkmacsystemfont, "Segoe UI", system-ui, sans-serif;--font-mono:ui-monospace, "JetBrains Mono", "SF Mono", menlo, monospace}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;color:var(--ink);font:16px/1.5 var(--font-body);margin:0}main{gap:20px;width:min(560px,100%);margin:0 auto;padding:24px 16px;display:grid}.shell{flex-direction:column;min-height:100vh;display:flex}.shell-head{text-align:right;width:min(560px,100%);margin:0 auto;padding:24px 16px 0}.shell-head h1{font-size:32px}.shell-main{flex:1;align-content:start;padding-bottom:96px}.tabbar{z-index:10;background:var(--surface);border-top:1px solid var(--line);justify-content:center;gap:8px;padding:6px 8px;display:flex;position:fixed;inset:auto 0 0}.tab{max-width:220px;min-height:52px;color:var(--muted);font:600 12px/1 var(--font-mono);flex:1;place-items:center;gap:2px;text-decoration:none;display:grid}.tab[aria-current=page]{color:var(--ink)}.level{gap:12px;display:grid}.level-head{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.eyebrow{font:600 11px/1 var(--font-mono);letter-spacing:.08em;color:var(--action);text-transform:uppercase}.level-head h2{margin-top:4px;font-size:24px}.count{font:14px/1 var(--font-mono);color:var(--muted)}.count b{color:var(--ink)}.bar.dark>span{background:var(--outline)}.bar.accent>span{background:var(--action)}.rev-chip{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink);border-radius:999px;justify-self:end;align-items:center;gap:8px;padding:0 16px;text-decoration:none;display:inline-flex}.rev-dot{background:var(--error);border-radius:50%;width:8px;height:8px}.skill-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);min-height:64px;color:var(--ink);align-items:center;gap:12px;padding:10px 14px;text-decoration:none;display:flex}.skill-text{flex:1;gap:6px;display:grid}.rule-lvl{font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);justify-content:space-between;margin:8px 0 0;display:flex}.painted-fill{opacity:.55;width:100%;height:100%;position:absolute;inset:0}.rules{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:8px;display:grid}.rule-btn{border-radius:var(--radius-m);text-align:left;background:#efebe3;border:1px solid #0000;align-items:center;min-height:76px;padding:12px 14px;text-decoration:none;display:grid;position:relative;overflow:hidden}.rule-swatch{border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.rule-btn .rb-text{gap:2px;display:grid;position:relative}.rule-btn.acquired{background:var(--surface);border-color:var(--line)}.rb-kr{font-family:Noto Sans KR,Malgun Gothic,sans-serif;font-size:16px;font-weight:600}.rb-fr{color:var(--muted);font-size:12px}.backdrop{background:#3a2a1e66;position:fixed;inset:0}.sheet{background:var(--surface);border-radius:28px 28px 0 0;width:min(560px,100%);max-height:85vh;margin:0 auto;padding:12px 20px 28px;position:fixed;inset:auto 0 0;overflow:auto;box-shadow:0 -12px 40px #3a2a1e2e}.grabber{background:var(--line);border-radius:999px;width:40px;height:4px;margin:0 auto 12px;display:block}.sheet-head{flex-wrap:nowrap;align-items:flex-start}.sheet-tile{border-radius:var(--radius-m);background:var(--outline);color:#fff;text-align:center;place-items:center;min-width:72px;min-height:72px;padding:0 10px;font-family:Noto Sans KR,Malgun Gothic,sans-serif;font-weight:600;display:grid}.sheet-titles{flex:1;justify-items:start;gap:6px;display:grid}.sheet-titles h2{font-size:20px}.badge{font:600 11px/1 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;background:var(--bg);border-radius:999px;padding:6px 10px}.icon-btn{background:var(--bg);border:0;border-radius:50%;min-width:44px;min-height:44px}.image-note{border-left:3px solid var(--mustard);border-radius:0 var(--radius-s) var(--radius-s) 0;background:#deba5a24;gap:4px;padding:10px 12px;display:grid}.image-note p{margin:0;line-height:1.5}.sheet-desc{white-space:pre-line;margin:0}.forms{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.forms .chip{gap:8px}.phrase{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--bg);gap:2px;padding:12px 14px;display:grid}.phrase-kr{font-family:Noto Sans KR,Malgun Gothic,sans-serif;font-weight:600}.phrase-fr{color:var(--muted);font-size:14px}.session-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.session-count{flex:1;justify-items:center;gap:4px;max-width:260px;display:grid}.session-count .bar{width:100%}.round-btn{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--ink);border-radius:50%;place-items:center;text-decoration:none;display:inline-grid}.tag{font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);place-items:center;padding:40px 16px 32px;display:grid}.loader{--s:120px;--dur:.8s;justify-items:center;gap:10px;display:grid}.loader-run{width:var(--s);aspect-ratio:199/162;position:relative}.loader-shadow{height:8px;animation:loader-shadow var(--dur) step-end infinite;background:radial-gradient(closest-side,#3a2a1e38,#0000);border-radius:50%;position:absolute;top:calc(94.4445% - 4px);left:12%;right:18%}.loader-sprite{animation:loader-run var(--dur) steps(8) infinite;background:url(/loader/herisson-course.png) 0 0/800% 100% no-repeat;position:absolute;inset:0}.loader-text{color:var(--muted);margin:0;font-size:14px}@keyframes loader-run{to{background-position-x:114.286%}}@keyframes loader-shadow{0%{opacity:1;transform:scaleX(1)}37.5%{opacity:.6;transform:scaleX(.8)}50%{opacity:1;transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.loader-sprite,.loader-shadow{animation:none}}h1,h2{margin:0;font-family:Georgia,Times New Roman,serif}.stack{gap:12px;display:grid}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.between{justify-content:space-between}.center{text-align:center;justify-items:center}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);gap:12px;padding:16px;display:grid}.avatar{grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:12px;display:grid}.avatar-stage{background:var(--bg);border-radius:var(--radius-s);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:pan-y;justify-items:center;gap:4px;padding:4px 0 8px;display:grid}.avatar-stage:active{cursor:grabbing}.avatar-stage img{pointer-events:none;width:100%;max-width:280px;height:auto}.avatar-hint{color:var(--muted);text-align:center;margin:0;padding:0 6px;font-size:12px;line-height:1.25}.avatar-side{scrollbar-width:thin;scrollbar-color:var(--line) transparent;align-content:start;gap:6px;min-width:0;height:0;min-height:100%;padding-right:4px;display:grid;overflow-y:auto}.avatar-slot,.avatar-option{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);font:inherit;color:var(--ink)}.avatar-slot{text-align:left;min-height:44px;padding:4px 10px;display:grid}.avatar-slot b{font-size:14px;font-weight:600}.avatar-slot small{color:var(--muted);font-size:12px;line-height:1.25}.avatar-slot[aria-expanded=true]{border-color:var(--action)}.avatar-options{grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:6px;padding:2px 0 6px;display:grid}.avatar-option{align-content:center;justify-items:center;gap:2px;min-height:44px;padding:4px;font-size:12px;line-height:1.2;display:grid}.avatar-option img{object-fit:contain;width:44px;height:44px}.avatar-option[aria-pressed=true]{border-color:var(--action);box-shadow:inset 0 0 0 1px var(--action)}.list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.ko{font-family:Noto Sans KR,Malgun Gothic,sans-serif;font-size:16px;font-weight:600}.big{text-align:center;font-size:24px}label{gap:4px;font-size:14px;display:grid}input:not([type=checkbox]){border:1px solid var(--line);border-radius:var(--radius-s);min-height:44px;font:inherit;background:var(--bg);color:var(--ink);padding:0 12px}.check{align-items:center;gap:10px;min-height:44px;display:flex}button,a.primary,a.chip{font:inherit;color:var(--ink);cursor:pointer;text-decoration:none}.primary{border:1px solid var(--action);background:var(--action);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-height:44px;padding:0 20px;display:inline-flex}.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;align-items:center;min-height:44px;padding:0 16px;display:inline-flex}.chip:disabled{opacity:.55;cursor:default}.chip[aria-selected=true]{border-color:var(--action);box-shadow:inset 0 0 0 1px var(--action)}.link{color:var(--muted);background:0 0;border:0;min-height:44px;text-decoration:underline}.option{text-align:left;border-radius:var(--radius-m);border:1px solid var(--line);background:var(--surface);min-height:44px;padding:10px 16px}.option:hover,.option:focus-visible{border-color:var(--action)}:focus-visible{outline:3px solid var(--teal);outline-offset:2px}.bar{background:var(--line);border-radius:999px;height:6px;overflow:hidden}.bar>span{background:var(--mustard);height:100%;display:block}.soft-error{color:var(--error)}.ok{color:var(--success)}.hint{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tile{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--bg);place-items:center;min-width:40px;min-height:40px;display:inline-grid}.skill-tile{border-radius:var(--radius-s);border:2px solid var(--outline);width:44px;height:44px;font:600 13px/1 var(--font-mono);color:var(--outline);place-items:center;display:inline-grid}.romanization{text-align:center;font:14px/1.4 var(--font-mono);color:var(--muted);margin:0}a{color:inherit}.round-btn{font-size:26px;line-height:1}.backdrop{z-index:20}.sheet{z-index:21}.puzzle-wrap svg{touch-action:manipulation;width:100%;height:auto}.piece{cursor:pointer}.piece:focus{outline:none}.piece.acq,.piece.partial{filter:drop-shadow(0 1px 1.5px #3a2a1e2e)}.piece.locked .ill{filter:grayscale()brightness(.86)contrast(.92)}.piece .veil{opacity:.14}.piece .outline{fill:none;stroke:#3a2a1e;stroke-width:1.3px}.piece:hover .outline,.piece:focus-visible .outline{stroke-width:3px;stroke:var(--teal)}.plabel{font-family:var(--font-body), "Malgun Gothic", sans-serif;letter-spacing:.2px;fill:#fff;font-weight:700}.puzzle-wrap svg.thumb,.thumb{flex:none;width:84px;height:84px}.thumb .outline{fill:none;stroke:#2b1d14;stroke-width:2.4px}.thumb.locked .base{filter:grayscale()brightness(.86)contrast(.92)}.thumb .veil{opacity:.14}.example{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--bg);gap:2px;padding:12px 14px;display:grid}.example .ro{font:12px/1.3 var(--font-mono);color:var(--muted)}.req-chip{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--surface);color:var(--ink);gap:2px;min-height:44px;padding:8px 12px;text-decoration:none;display:grid}.req-chip small{font:600 10px/1 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.sheet-art{border-radius:var(--radius-m);border:2px solid var(--outline);flex:none;width:72px;height:72px;overflow:hidden}.sheet-art img{object-fit:cover;width:100%;height:100%;display:block}a.primary{color:#fff}.skill-head{align-items:flex-start;gap:12px;display:flex}.action{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);color:var(--ink);justify-content:space-between;align-items:center;gap:12px;min-height:64px;padding:16px;text-decoration:none;display:flex}.action.is-rec{border-color:var(--action)}.action-text{color:var(--muted);gap:4px;font-size:14px;display:grid}.action-text strong{color:var(--ink);font-size:16px}.action-meta{white-space:nowrap;justify-items:end;gap:4px;display:grid}.tag.rec{color:var(--action)}a.action:hover,a.action:focus-visible{border-color:var(--action)}.steps{gap:10px;margin-top:8px;display:grid}.steps-title{margin:0;font:600 18px/1.3 Georgia,Times New Roman,serif}.step-path{gap:10px;margin:0;padding:0;list-style:none;display:grid;position:relative}.step-path:before{content:"";background:var(--line);width:2px;position:absolute;top:32px;bottom:32px;left:32px}.step-link{justify-content:flex-start}.step-link .action-text{flex:1}.step-marker{z-index:1;border:2px solid var(--line);background:var(--surface);width:34px;height:34px;font:700 14px/1 var(--font-mono);color:var(--ink);border-radius:999px;flex:none;place-items:center;display:grid;position:relative}.step.is-validated .step-marker{background:var(--success);border-color:var(--success);color:#fff}.step.is-rec .action{border-color:var(--action)}.step.is-rec .step-marker{border-color:var(--action);color:var(--action)}.step.is-locked .action,.step.is-not_applicable .action,.action.is-closed{background:0 0}.step.is-locked .action-text strong,.step.is-not_applicable .action-text strong,.action.is-closed .action-text strong{color:var(--muted)}.tag.optional{border:1px solid var(--line);color:var(--ink);vertical-align:middle;border-radius:999px;margin-left:8px;padding:3px 6px;display:inline-block}.course .md p,.course .md li{margin:0 0 10px}.md-table{border-collapse:collapse;width:100%;font-size:14px}.md-table th,.md-table td{text-align:left;border-bottom:1px solid var(--line);padding:8px}.md-list{padding-left:20px}.dots{gap:6px;display:flex}.dots i{background:var(--line);border-radius:50%;width:8px;height:8px}.dots i.on{background:var(--action)}.vocab-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.vocab-text{gap:4px;display:grid}.big-left{font-size:20px}.ro{font:12px/1.3 var(--font-mono);color:var(--muted)}.vocab-state{flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.vocab-state .status{color:var(--muted)}.dims-anchor{display:inline-flex;position:relative}.vocab-dims{min-height:32px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:5px;padding:0 8px;display:inline-flex}.vocab-dims:hover,.vocab-dims[aria-expanded=true]{border-color:var(--line);background:var(--surface)}.dot{border:1.5px solid var(--muted);border-radius:50%;width:10px;height:10px;display:inline-block}.dot.up_to_date{background:var(--success);border-color:var(--success)}.dot.learning{background:var(--mustard);border-color:var(--mustard)}.dot.due{border-color:var(--action);box-shadow:inset 0 0 0 2px var(--surface), inset 0 0 0 5px var(--action)}.dot.locked{border-style:dotted}.voc-tip{z-index:70;background:var(--ink);width:max-content;max-width:min(280px,80vw);color:var(--surface);box-shadow:0 10px 26px color-mix(in srgb, var(--ink) 25%, transparent);text-align:left;border-radius:10px;gap:2px;padding:10px 12px;font-size:12px;line-height:1.4;display:grid;position:absolute;top:calc(100% + 6px);left:0}.tip-title{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;opacity:.8;margin-bottom:4px;font-size:10px}.tip-title .ko{letter-spacing:0;text-transform:none;font-size:13px}.tip-row{grid-template-columns:12px 1fr;align-items:start;gap:8px;padding:3px 0;display:grid}.tip-row .dot{margin-top:3px}.tip-mono{font-family:var(--font-mono);opacity:.8;font-size:10.5px;display:block}.tip-plan{border-top:1px solid color-mix(in srgb, var(--surface) 26%, transparent);opacity:.85;margin-top:6px;padding-top:6px}.corpus-title{margin-top:6px;font-size:28px}.crows{margin:0;padding:0;list-style:none}.crow{border-bottom:1px solid var(--line);grid-template-columns:32px 1fr auto;align-items:center;gap:10px;padding:12px 0;display:grid}.crow-kr{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.crow-tr{text-align:right;justify-items:end;font-size:14px;display:grid}.voc-tag{font:600 10px/1 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:4px 8px}.voc-tag.ok{color:var(--success);background:#dfeadf}.voc-tag.ko{color:var(--error);background:#f3dedb}.form-row{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--surface);justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}mark.hl{color:inherit;background:color-mix(in srgb, var(--mustard) 45%, transparent);border-radius:4px}.voc-tag.na{background:var(--bg);color:var(--muted)}.is-link{cursor:pointer}.open-btn{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.wd-kr{font-size:26px;font-weight:700}.wd-dims,.wd-log{margin:0;padding:0;list-style:none}.wd-dims{gap:8px;display:grid}.wd-dim{border:1px solid var(--line);border-left:4px solid var(--line);border-radius:var(--radius-s);grid-template-columns:1fr auto;align-items:center;gap:4px 8px;padding:10px 12px;display:grid}.wd-dim.reading{border-left-color:var(--dim-reading)}.wd-dim.listening{border-left-color:var(--dim-listening)}.wd-dim.writing{border-left-color:var(--dim-writing)}.wd-dim.speaking{border-left-color:var(--dim-speaking)}.wd-dim-t{font-weight:600}.wd-dim-s{font:11px/1.4 var(--font-mono);color:var(--muted);grid-column:1/-1}.wd-stats{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.wd-stat{border-radius:var(--radius-s);background:var(--bg);text-align:center;color:var(--muted);gap:2px;padding:10px 6px;font-size:12px;display:grid}.wd-stat b{color:var(--ink);font-size:18px}.log-row{border-bottom:1px solid var(--line);grid-template-columns:56px 16px 1fr;align-items:baseline;gap:8px;padding:6px 0;font-size:14px;display:grid}.log-day{font:11px var(--font-mono);color:var(--muted)}.log-ic.ok{color:var(--success)}.log-ic.ko{color:var(--error)}.slot{vertical-align:-.1em;border-bottom:2px solid;width:.9em;height:1em;margin:0 .06em;display:inline-block}.attempt{margin:0}.typo{color:var(--ink);background:color-mix(in srgb, var(--warning) 30%, transparent);-webkit-text-decoration:underline wavy var(--warning);text-decoration:underline wavy var(--warning);text-underline-offset:4px;border-radius:4px}.spoken{flex-wrap:wrap;justify-content:center;gap:0 .5em;display:flex}.syl{text-underline-offset:5px;border-radius:4px;padding:0 .04em;text-decoration-thickness:2px}.syl.green{color:var(--success)}.syl.orange{color:var(--ink);background:color-mix(in srgb, var(--warning) 30%, transparent);-webkit-text-decoration:underline wavy var(--warning);text-decoration:underline wavy var(--warning)}.syl.red{color:var(--error);background:color-mix(in srgb, var(--error) 15%, transparent);-webkit-text-decoration:underline double var(--error);text-decoration:underline double var(--error)}.syl.uncertain{color:var(--muted);-webkit-text-decoration:underline dotted var(--muted);text-decoration:underline dotted var(--muted)}.legend{flex-wrap:wrap;justify-content:center;gap:8px 16px;margin:0;padding:0;font-size:.9rem;list-style:none;display:flex}.legend .syl{font-weight:700}.speaking-result{align-content:start}.speaking-result p{margin:0}.take{align-content:start;justify-items:center;gap:6px;display:grid}.listen{flex-wrap:wrap;place-content:flex-start center;gap:12px 24px;display:flex}.listen audio{max-width:100%}.prompt .blank{margin:0 .4em;display:inline-block}.blank .word{display:inline-block}.blank .gap{text-align:center;min-width:.55em;display:inline-block}.slot.filled{text-align:center;width:auto;min-width:.9em;color:var(--action);border-bottom-color:#0000}.slot.current{border-bottom-color:var(--action);animation:1s steps(2,start) infinite slot-caret}@keyframes slot-caret{to{border-bottom-color:#0000}}@media (prefers-reduced-motion:reduce){.slot.current{animation:none}}.blank.typed{cursor:text;border-radius:var(--radius-s);position:relative}.blank.typed:focus-within{outline:2px solid var(--action);outline-offset:6px}input.blank-input{opacity:0;caret-color:#0000;border:0;width:100%;height:100%;padding:0;font-size:16px;position:absolute;inset:0}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.kbd{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--bg);-webkit-user-select:none;user-select:none;gap:6px;padding:8px;display:grid}.kbd-row{justify-content:center;gap:4px;display:flex}.kbd-key{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);max-width:44px;min-height:44px;color:var(--ink);touch-action:manipulation;flex:1 1 0;padding:0;font:600 17px/1 Noto Sans KR,Malgun Gothic,sans-serif}.kbd-key.wide{max-width:64px;font-family:var(--font-body);flex-grow:1.5}.kbd-key.space{max-width:240px;font:13px/1 var(--font-mono);color:var(--muted);flex-grow:6}.kbd-key[aria-pressed=true]{background:var(--ink);color:var(--surface)}.aids{border-left:3px solid var(--action);padding:.4em .8em}.aids ul{margin:.2em 0 0;padding-left:1.1em}.blank .between{margin:0 .25em}.review-link{border:1px dashed var(--line);border-radius:var(--radius-m);background:var(--surface);min-height:44px;color:var(--ink);align-items:center;gap:12px;padding:10px 14px;text-decoration:none;display:flex}.review-link:hover,.review-link:focus-visible{border-color:var(--action)}.review-icon{color:var(--action);flex:none}.review-text{flex:1;gap:2px;min-width:0;display:grid}.review-name{font-size:15px;font-weight:600;line-height:1.3}.review-ko{color:var(--muted);font-family:Noto Sans KR,Malgun Gothic,sans-serif;font-size:13px;font-weight:400}.review-objective{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.form-table{border-collapse:collapse;width:100%}.form-table th,.form-table td{border-bottom:1px solid var(--line);text-align:left;padding:.5rem .75rem}.text-line{margin:0}.onb-room{padding-bottom:240px}.palier{scroll-margin-top:16px}.palier-head{margin-top:6px}.palier-head h3{margin:4px 0 0;font:600 19px/1.25 Georgia,Times New Roman,serif}.onb-sheet{z-index:30;width:min(560px,100%);padding:12px 16px calc(16px + env(safe-area-inset-bottom));background:var(--bg);border-radius:var(--radius-l) var(--radius-l) 0 0;gap:10px;margin:0 auto;animation:.24s ease-out onb-in;display:grid;position:fixed;inset:auto 0 0;box-shadow:0 -10px 30px #3a2a1e2e}.onb-talk{grid-template-columns:104px 1fr;align-items:end;gap:10px;display:grid}.onb-talk.alone{grid-template-columns:1fr}.onb-eri{object-fit:cover;object-position:47% 55%;mix-blend-mode:darken;width:104px;height:110px;display:block}.onb-eri.small{width:64px;height:90px}.onb-actions{grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.onb-actions>:first-child{justify-self:start}.onb-actions>:last-child{justify-self:end}.onb-dots{gap:6px;display:flex}.onb-dot{background:var(--line);border-radius:50%;width:8px;height:8px}.onb-dot.on{background:var(--action);border-radius:4px;width:20px}.onb-sheet .onb-go{min-height:48px;padding:0 22px;font-weight:600}.onb-sheet .onb-go.wide{width:100%}.onb-talk:has(.onb-eri.small){grid-template-columns:64px 1fr}.onb-bubble{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);margin:0;padding:14px 16px;line-height:1.5;position:relative;box-shadow:0 8px 24px #3a2a1e1f}.onb-talk:not(.alone) .onb-bubble:before{content:"";background:var(--surface);border-left:1px solid var(--line);border-bottom:1px solid var(--line);width:16px;height:16px;position:absolute;bottom:20px;left:-9px;transform:rotate(45deg)}.onb-sheet .primary:disabled{opacity:.55;cursor:default}.fireworks{z-index:40;pointer-events:none;position:fixed;inset:0}.piece.highlight .outline{stroke:var(--mustard);stroke-width:5px;animation:1.2s ease-in-out infinite onb-pulse}@keyframes onb-pulse{50%{stroke-width:2px}}@keyframes onb-in{0%{opacity:0;transform:translateY(12px)}}@media (prefers-reduced-motion:reduce){.onb-sheet,.piece.highlight .outline{animation:none}}.self-start{place-self:start}.end{justify-content:flex-end}.note{color:var(--muted);margin:0;font-size:14px}.danger-link{min-height:44px;color:var(--error);background:0 0;border:0;justify-self:start;padding:0;font-weight:600}.danger{border:1px solid var(--error);background:var(--error);color:#fff;border-radius:999px;min-height:44px;padding:0 20px;font-weight:600}.danger:hover:not(:disabled){filter:brightness(.92)}.danger-link:hover{text-decoration:underline}.danger:disabled{opacity:.6;cursor:default}.reset-title{font-size:20px}.reset-warning{margin:0}.reset-cols{grid-template-columns:1fr 1fr;gap:12px;display:grid}.reset-cols ul{margin:6px 0 0;padding-left:18px;font-size:14px;line-height:1.5}.voice-choice{gap:14px;display:grid}.voice-choice h2{margin:0}.voice-facts{gap:10px;margin:0;padding:0;list-style:none;display:grid}.voice-facts li{gap:2px;font-size:14px;line-height:1.4;display:grid}.voice-buttons{grid-template-columns:1fr 1fr;gap:10px;display:grid}.voice-buttons button{text-align:center;justify-content:center;min-height:48px}.voice-state{opacity:.8;margin:4px 0 0;font-size:13px}.voice-done{margin:4px 0 0;font-size:14px}.option:disabled{cursor:default;color:var(--ink)}.option.right,.option.wrong{border-width:2px;justify-content:space-between;align-items:center;gap:8px;display:flex}.option.right{border-color:var(--success);background:color-mix(in srgb, var(--success) 8%, var(--surface))}.option.wrong{border-color:var(--error);background:color-mix(in srgb, var(--error) 7%, var(--surface))}.option.faded{opacity:.5}.option-mark{white-space:nowrap;font-size:14px;font-weight:700}.option.right .option-mark{color:var(--success)}.option.wrong .option-mark{color:var(--error)}.soft{color:var(--muted);margin:0;font-size:14px}.correction-sheet{z-index:20;padding:16px 16px max(20px, env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--surface);box-shadow:0 -8px 24px color-mix(in srgb, var(--ink) 12%, transparent);animation:.22s ease-out sheet-up;position:fixed;bottom:0;left:0;right:0}.correction-sheet.is-good{background:color-mix(in srgb, var(--success) 10%, var(--surface))}.correction-sheet.is-bad{background:color-mix(in srgb, var(--error) 8%, var(--surface))}.correction-in{max-width:560px;margin:0 auto}.correction-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.correction-top .verdict{margin:0;font-weight:700}.word-chips{flex-wrap:wrap;gap:8px;display:flex}.word-chip{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.word-chip:hover{border-color:var(--action)}.word-chip[aria-pressed=true]{border:2px solid var(--error);background:color-mix(in srgb, var(--error) 8%, var(--surface))}.word-chip[aria-pressed=true]:before{content:"✗";color:var(--error);font-weight:700}.word-meaning{color:var(--muted)}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.correction-sheet{animation:none}}.course-blocks{gap:12px;display:grid}.reveal-next{justify-self:center}.course-step{gap:12px;scroll-margin-top:16px;display:grid}.course-step+.course-step{border-top:1px dashed var(--line);padding-top:14px}.step-count{font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);justify-self:center}.midway{border:2px solid var(--mustard);border-radius:var(--radius-m);background:color-mix(in srgb, var(--mustard) 12%, var(--surface));align-items:center;gap:14px;padding:14px;animation:.26s ease-out course-in;display:flex}.midway img{object-fit:contain;mix-blend-mode:darken;flex:none;width:76px;height:80px}.midway strong{font-size:17px;display:block}.midway-text{color:var(--muted);gap:2px;font-size:14px;display:grid}.midway-gauge{gap:4px;margin-top:6px;display:flex}.midway-gauge i{background:var(--line);border-radius:3px;width:18px;height:6px}.midway-gauge i.on{background:var(--mustard)}.gap-keyboard{gap:8px;display:grid}.gap-keyboard .link{justify-self:start}.word-card{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--surface);flex-wrap:wrap;align-items:center;gap:12px;padding:12px 14px;display:flex}.word-card .wk{white-space:nowrap;font:700 24px/1.2 Noto Sans KR,Malgun Gothic,sans-serif}.word-card.is-expr .wk{white-space:normal;flex-basis:100%;font-size:21px}.word-card .wt{flex:1;gap:2px;min-width:0;display:grid}.word-card .wr,.ex-line .er{font:12px/1.2 var(--font-mono);color:var(--muted)}.tag.new{color:var(--teal)}.mini-play{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--ink);cursor:pointer;border-radius:999px;flex:none}.ex-line{border-left:3px solid var(--mustard);border-radius:0 var(--radius-s) var(--radius-s) 0;background:color-mix(in srgb, var(--mustard) 10%, var(--surface));align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.ex-line .et{flex:1;gap:2px;display:grid}.ex-line .ek{font:600 18px/1.35 Noto Sans KR,Malgun Gothic,sans-serif}.pg{border:1px solid var(--teal);border-radius:var(--radius-m);background:color-mix(in srgb, var(--teal) 6%, var(--surface));gap:8px;padding:12px 14px 4px;display:grid}.pg>.tag,.pg-line .tag{color:var(--teal)}.pg-title{margin:0;font:700 20px/1.25 Noto Sans KR,Malgun Gothic,sans-serif}.course .pg .md p{margin:0 0 6px}.pg .ex-line{background:var(--surface)}.rule-examples{gap:4px;margin:0;padding:0 0 0 18px;display:grid}.pg-line{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--surface);flex-wrap:wrap;align-items:center;gap:4px 10px;min-height:48px;padding:6px 12px;display:flex}.pg-line .tag{flex-basis:100%;margin-top:4px}.pg-line .rp{font:700 16px/1.2 Noto Sans KR,Malgun Gothic,sans-serif}.pg-line .rg{min-width:0;color:var(--muted);flex:1;font-size:14px}.pg-later{gap:6px;display:grid}.course .pg-later .md p{color:var(--muted);margin:0;font-size:14px}.rlink{min-height:44px;color:var(--action);justify-self:start;align-items:center;font-weight:600;text-decoration:none;display:inline-flex}.ahead-box{border:1px dashed var(--line);border-radius:var(--radius-m);gap:10px;padding:12px 14px;display:grid}.ahead-box .chips{flex-wrap:wrap;gap:8px;display:flex}.ahead-chip{border:1px dashed var(--line);background:var(--surface);min-height:44px;color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.ahead-chip span:last-child{color:var(--muted)}.ahead-box a{color:var(--action);font-weight:600;text-decoration:none}.cnote{margin:0;line-height:1.5}.exo{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--surface);gap:10px;padding:14px;display:grid}.exo-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.exo .q{margin:0;font-weight:600}.exo .feedback{margin:0;font-weight:700}.pairs{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pair-btn{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--surface);min-height:48px;color:var(--ink);font:inherit;cursor:pointer;padding:6px 10px}.pair-btn.sel{border:2px solid var(--action)}.pair-btn.done{border:2px solid var(--success);background:color-mix(in srgb, var(--success) 8%, var(--surface));cursor:default}.gap-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.gap-sentence{font-size:20px}.gap-input{width:5em;font:inherit;text-align:center;margin:0 2px}.fadein{animation:.22s ease-out course-in}@keyframes course-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.fadein,.midway{animation:none}}.mg-item-head{align-items:center;gap:12px;display:flex}.mg-item-titles{gap:6px}.mg-thumb{border-radius:var(--radius-s);border:1px solid var(--line);object-fit:cover;flex:none;width:64px;height:64px}.mg-consigne{text-align:center;justify-items:center;gap:10px;display:grid}.mg-consigne .big{margin:0}.mg-listen{border:1px solid var(--teal);background:var(--surface);min-height:44px;color:var(--teal);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:0 18px;font-weight:600;display:inline-flex}.mg-listen:hover{background:#e8f4f2}.mg-listen:disabled{opacity:.55;cursor:default}.mg-listen:focus-visible,.mg-zone:focus-visible{outline:3px solid var(--outline);outline-offset:2px}.mg-reveal{animation:.25s ease-out mg-in}.mg-scene{aspect-ratio:1;border:1px solid var(--line);border-radius:var(--radius-m);background:var(--surface);touch-action:manipulation;position:relative;overflow:hidden}.mg-scene img{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.mg-zone{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:12px;padding:0;position:absolute}.mg-zone:disabled{cursor:default}.mg-zone.good{box-shadow:inset 0 0 0 3px var(--success);background:#4f7d5629}.mg-zone.bad{box-shadow:inset 0 0 0 3px var(--error);background:#b5524a24}.mg-mark{color:#fff;width:26px;height:26px;font:700 15px/1 var(--font-body);border-radius:50%;place-items:center;display:grid;position:absolute;top:6px;right:6px}.mg-zone.good .mg-mark{background:var(--success)}.mg-zone.bad .mg-mark{background:var(--error)}.mg-tap{border:2px solid var(--muted);pointer-events:none;border-radius:50%;width:28px;height:28px;margin:-14px 0 0 -14px;animation:.45s ease-out forwards mg-tap;position:absolute}.mg-count{justify-content:space-between;align-items:center;gap:12px;display:flex}.mg-status{font:600 12px/1 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.mg-status.ok{color:var(--success)}.mg-pips{gap:6px;display:flex}.mg-pips i{border:2px solid var(--success);border-radius:50%;width:14px;height:14px;display:block}.mg-pips i.on{background:var(--success)}.mg-bubble{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--surface);flex:1;align-items:flex-start;gap:10px;padding:12px 14px;animation:.22s ease-out mg-in;display:flex}.mg-bubble.good{border-color:var(--success)}.mg-bubble.bad{border-color:var(--error)}.mg-ic{color:#fff;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;font-size:14px;font-weight:700;display:grid}.mg-bubble.good .mg-ic{background:var(--success)}.mg-bubble.bad .mg-ic{background:var(--error)}.mg-who{font:600 11px/1 var(--font-mono);letter-spacing:.08em;color:var(--muted);margin-bottom:4px;display:block}.mg-say{align-items:flex-end;gap:12px;display:flex}.mg-say .mg-bubble{border-bottom-left-radius:4px}.mg-face{border:2px solid var(--outline);background-color:var(--bg);background-position:48% 20%;background-repeat:no-repeat;background-size:230%;border-radius:50%;flex:none;width:56px;height:56px}.mg-actions{justify-content:center}@keyframes mg-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes mg-tap{0%{opacity:.9;transform:scale(.4)}to{opacity:0;transform:scale(1.3)}}@media (prefers-reduced-motion:reduce){.mg-reveal,.mg-bubble,.mg-tap{animation:none}}.word-target{color:var(--error);text-underline-offset:5px;font-weight:800;text-decoration:underline;text-decoration-thickness:2px}.word-look{text-align:center;margin:10px 0 2px;font-size:44px;font-weight:700;line-height:1.2}.word-meaning-line{margin:0}.story{background:var(--bg);flex-direction:column;height:100dvh;display:flex;overflow:hidden}.story-head{flex:none;align-items:center;gap:12px;padding:10px 12px;display:flex}.story-head h2{margin:0;font-size:18px;line-height:1.2}.story-view{flex:1;min-height:0;position:relative}.story-host{position:absolute;inset:0}.story-bubble{z-index:2000;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);max-width:420px;padding:10px 12px;position:absolute;top:8px;left:8px;right:8px;box-shadow:0 8px 24px #3a2a1e1f}.story-say{justify-content:space-between;align-items:center;gap:8px;min-height:44px;display:flex}.story-say .ko{font:600 17px/1.45 Noto Sans KR,Malgun Gothic,sans-serif}.story-show,.story-option{border:1px solid var(--ink);background:var(--surface);min-height:44px;color:var(--ink);cursor:pointer;border-radius:999px;padding:0 14px}.story-option[aria-pressed=true]{background:var(--ink);color:#fff}.story-replay{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--teal);cursor:pointer;border-radius:50%;flex:none}.story-eri{z-index:2000;border:1px solid var(--mustard);border-radius:var(--radius-m);background:#fff8e6;padding:10px 44px 10px 12px;font-size:15px;line-height:1.4;position:absolute;bottom:8px;left:8px;right:8px}.story-close{width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border:0;font-size:22px;position:absolute;top:0;right:0}.story-answer{background:var(--surface);border-top:2px solid var(--ink);flex:none;gap:10px;padding:12px;display:grid}.story-form{gap:8px;display:flex}.story-input{border:2px solid var(--ink);border-radius:var(--radius-m);min-width:0;height:52px;color:var(--ink);background:#fff;flex:1;padding:0 14px;font:600 17px Noto Sans KR,Malgun Gothic,sans-serif}.story-input:focus-visible,.story-show:focus-visible,.story-option:focus-visible,.story-replay:focus-visible,.story-close:focus-visible,.story-line:focus-visible{outline:2px solid var(--outline);outline-offset:2px}.story-send{border-radius:var(--radius-m);flex:none;height:52px}.story-end{max-width:640px;margin:0 auto;padding:12px}.story-error{max-width:640px;margin:0 auto;padding:24px 12px}.story-lines{gap:6px;display:grid}.story-line{text-align:left;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);max-width:90%;min-height:44px;color:var(--ink);cursor:pointer;justify-self:start;gap:3px;padding:8px 10px;display:grid}.story-line.me{background:#f3e6d6;justify-self:end}.story-line .ko{font:600 16px/1.4 Noto Sans KR,Malgun Gothic,sans-serif}.story-who{font:600 11px/1 var(--font-mono);color:var(--muted)}.story-sheet{z-index:3000;background:var(--surface);border-radius:var(--radius-l) var(--radius-l) 0 0;max-width:520px;max-height:72vh;margin:0 auto;padding:20px;position:fixed;bottom:0;left:0;right:0;overflow:auto;box-shadow:0 -8px 32px #3a2a1e33}.story-words{gap:5px;margin:6px 0 12px;padding:0;list-style:none;display:grid}.story-words b{font-family:Noto Sans KR,Malgun Gothic,sans-serif}.story-eri-end{justify-self:center;height:auto}.story-progress{align-items:center;gap:4px;margin-left:auto;display:flex}.story-pip{background:var(--line);border-radius:999px;width:18px;height:6px}.story-pip.on{background:var(--action)}.story-count{font:600 11px/1 var(--font-mono);color:var(--muted);margin-left:6px}.story-view-map{aspect-ratio:1;flex:none;width:100%;max-height:58dvh}.story-goals{margin:12px;overflow:auto}.story-goals ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.story-goals li{align-items:center;gap:10px;display:flex}.story-goals li.done{color:var(--muted)}.story-goal-mark{border:1.5px solid var(--line);color:#fff;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;font-size:13px;display:grid}.story-goals li.done .story-goal-mark{background:var(--success);border-color:var(--success)}.story-wave{flex:none;align-items:flex-end;gap:2px;height:12px;display:inline-flex}.story-wave i{background:var(--teal);border-radius:2px;width:3px;height:8px;animation:.7s ease-in-out infinite story-wave}.story-wave i:nth-child(2){animation-delay:.12s}.story-wave i:nth-child(3){animation-delay:.24s}@keyframes story-wave{0%,to{height:3px}50%{height:12px}}.story-eri{align-items:flex-start;gap:10px;display:flex}.story-show:active,.story-option:active,.story-replay:active,.story-line:active,.story-send:active{transform:scale(.97)}@media (prefers-reduced-motion:reduce){.story-wave i{animation:none}.story-show:active,.story-option:active,.story-replay:active,.story-line:active,.story-send:active{transform:none}}.story-options{grid-template-columns:1fr 1fr;gap:8px;display:grid}.story-option.recording{background:var(--action);border-color:var(--action);color:#fff}.story-option:disabled{opacity:.6;cursor:default}@media (hover:hover){.story-show:hover,.story-option:not(:disabled):not(.recording):not([aria-pressed=true]):hover,.story-replay:hover,.story-line:hover{background:#f3e6d6}.story-close:hover{color:var(--action)}}.story-mic-note{color:var(--muted);margin:0;font-size:14px}.story-view>.loader{z-index:2000;place-content:center;position:absolute;inset:0}.story-answer .loader{--s:64px}.story-sheet .link{min-height:44px;padding:0 8px}.story-panel{flex:none;gap:6px;margin:8px 12px 0;padding:10px 12px;display:grid}.story-panel dl{gap:4px;margin:0;display:grid}.story-panel dl>div{grid-template-columns:5em 1fr;gap:8px;display:grid}.story-panel dt{color:var(--muted);font-size:14px}.story-panel dd{margin:0;font:600 15px/1.4 Noto Sans KR,Malgun Gothic,sans-serif}.info-bar{border:1px solid var(--mustard);border-radius:var(--radius-s);color:var(--ink);text-align:left;background:#fbf1d6;align-items:flex-start;gap:10px;padding:10px 14px;font-size:14px;line-height:1.4;display:flex}.info-bar .picto{background:var(--mustard);width:20px;height:20px;color:var(--ink);font:700 13px var(--font-mono);border-radius:50%;flex:none;place-items:center;display:grid}.story>.info-bar{border-width:0 0 1px;border-radius:0;flex:none}.mic-anchor{flex:none;display:inline-flex;position:relative}.record-anchor{display:inline-flex;position:relative}.mic-btn{border-radius:var(--radius-m);border:1px solid var(--ink);background:var(--surface);width:52px;height:52px;color:var(--ink);cursor:pointer;place-items:center;padding:0;font-size:18px;line-height:1;display:grid}.mic-btn svg{width:26px;height:26px}.mic-btn:disabled{opacity:.6;cursor:default}.mic-btn:focus-visible{outline:2px solid var(--outline);outline-offset:2px}.mic-btn:active{transform:scale(.97)}.mic-btn.recording{background:var(--action);border-color:var(--action);color:#fff}.mic-btn.off{color:var(--error);border-color:var(--error);cursor:help}.record-btn{align-items:center;gap:8px;display:inline-flex}.record-btn svg{width:20px;height:20px}button.primary.off{background:var(--surface);color:var(--error);border:1px solid var(--error);cursor:help}.mic-tip{background:var(--ink);color:#fff;border-radius:var(--radius-s);text-align:left;z-index:5;width:230px;padding:10px 12px;font-size:13px;line-height:1.4;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 6px 20px #3a2a1e40}.story-view{isolation:isolate}.story-answer{z-index:20;position:relative}.story-options.solo{grid-template-columns:1fr}@media (prefers-reduced-motion:reduce){.mic-btn:active{transform:none}}.mic-anchor .mic-tip{left:auto;right:-60px;transform:none}.record-btn:focus-visible{outline:2px solid var(--outline);outline-offset:2px}button.primary.off:hover,button.primary.off:active{background:var(--surface);color:var(--error);transform:none}@media (hover:hover){.mic-btn:not(:disabled):not(.recording):not(.off):hover{background:#f3e6d6}}.auth-panel{align-self:start}.lang-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.lang-flag{width:60px;height:40px;box-shadow:0 0 0 1px var(--line);border-radius:4px;flex:none}.lang-tile{min-height:116px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);cursor:pointer;flex-direction:column;align-items:center;gap:6px;padding:18px 8px;font-weight:600;display:flex;position:relative}.lang-tile[aria-checked=true]{border:2px solid var(--action);padding:17px 7px}.lang-tile[aria-checked=true]:after{content:"✓";color:var(--action);font-weight:700;position:absolute;top:6px;right:10px}.lang-tile[aria-disabled=true]{color:var(--muted);cursor:not-allowed;background:0 0;border-style:dashed}.lang-tile[aria-disabled=true] .lang-flag{filter:grayscale(.7);opacity:.6}.lang-tile:focus-visible,.display-pill button:focus-visible,.display-select:focus-visible{outline:2px solid var(--action);outline-offset:2px}.lang-tip{z-index:20;color:#fff;white-space:nowrap;background:var(--ink);border-radius:var(--radius-s);visibility:hidden;padding:6px 10px;font-size:13px;font-weight:400;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.lang-tile:hover .lang-tip,.lang-tile:focus .lang-tip,.lang-tile.tip .lang-tip{visibility:visible}.lang-row{align-items:center;gap:12px;display:flex}.lang-row .lang-flag{border-radius:3px;width:36px;height:24px}.lang-row .grow{flex:1;font-weight:600}.display-pill{z-index:30;position:fixed;top:14px;left:14px}.display-pill>button{min-height:44px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.display-pill ul{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-s);min-width:150px;margin:0;padding:4px;list-style:none;position:absolute;top:50px;left:0}.display-pill li button{width:100%;min-height:44px;font:inherit;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:0 12px}.display-pill li button:hover{background:var(--bg)}.display-pill li button[aria-pressed=true]{font-weight:700}.display-select{min-height:44px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-s);justify-self:start;padding:0 10px}.eri-end{box-shadow:none;background:0 0;border:0;align-content:start}.eri-end>.primary,.eri-end>.chip{justify-self:center}.eri-hero{justify-items:center;gap:12px;width:100%;display:grid}.eri-hero .onb-eri{width:170px;height:180px}.eri-hero .onb-bubble{text-align:left;width:100%}.eri-hero .onb-eri+.onb-bubble:before{content:"";background:var(--surface);border-left:1px solid var(--line);border-top:1px solid var(--line);width:16px;height:16px;position:absolute;top:-9px;left:calc(50% - 8px);transform:rotate(45deg)}.eri-tile{text-align:left;align-items:center;gap:12px;width:100%;display:flex}.eri-tile .thumb{flex:none;width:72px;height:72px}.eri-tile small{color:var(--muted);display:block}.tag.read{color:var(--success);font-weight:700}.badge.read{color:#2f5a37;background:#e5efe6}.tabbar-eri{display:none}@media (min-width:700px){main,.shell-head{width:min(680px,100%)}.puzzle-wrap{width:100%;max-width:560px;margin-inline:auto}}@media (min-width:1000px){.shell{padding-left:224px}.tabbar{border-top:0;border-right:1px solid var(--line);flex-direction:column;justify-content:flex-start;gap:4px;width:224px;padding:20px 12px;inset:0 auto 0 0}.tabbar-eri{margin:4px 8px 20px;display:block}.tab{max-width:none;min-height:48px;font:600 15px/1 var(--font-body);border-radius:12px;flex:none;align-items:center;gap:12px;padding:0 12px;display:flex}.tab:hover{color:var(--ink);background:#fbf6ec}.tab:focus-visible{outline:2px solid var(--action);outline-offset:-2px}.tab[aria-current=page]{background:var(--bg);box-shadow:inset 3px 0 0 var(--action)}.shell-head{text-align:left;width:min(1000px,100%);padding:32px 32px 0}.shell-main{width:min(1000px,100%);padding:20px 32px 56px}.palier{grid-template-rows:auto 1fr;grid-template-columns:260px minmax(0,560px);gap:16px 40px;padding-top:12px;display:grid}.palier>.palier-head{grid-area:1/1}.palier>.puzzle-wrap{grid-area:1/2/span 2;margin:0}.palier>.review-card{grid-area:2/1;align-self:start}.palier .review-objective{white-space:normal}.palier .review-name{word-break:keep-all}.rules{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.stack:has(>.corpus-filter){grid-template-columns:auto 1fr;column-gap:24px}.stack:has(>.corpus-filter)>:not(.corpus-filter){grid-column:1/-1}.profile-panels{columns:2;column-gap:16px;display:block}.profile-panels>:not(.backdrop,.sheet){break-inside:avoid;margin-bottom:16px}.shell:has(.skill-head,.course,.second-level) .shell-head{clip-path:inset(50%);width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.shell-main:has(.skill-head,.course,.second-level){width:min(760px,100%);padding-top:32px}.sheet:not(.story-sheet){overscroll-behavior:contain;border-radius:var(--radius-l);width:min(620px,100% - 48px);height:fit-content;max-height:86dvh;margin:auto;padding:24px;inset:0;box-shadow:0 16px 48px #3a2a1e3d}.sheet:not(.story-sheet)>.grabber{display:none}.sheet:not(.story-sheet)>.stack>.primary:last-child,.sheet.stack:not(.story-sheet)>.primary:last-child{box-shadow:0 -12px 16px 4px var(--surface);position:sticky;bottom:0}.exercise-page{width:min(680px,100%);padding-top:7vh}.exercise-page .panel{padding:24px 32px 28px}.exercise-page .ko.big{margin-block:28px 20px;font-size:40px}.correction-in{max-width:680px}.exercise-page [role=group]:has(>.option,.hg-option-row){counter-reset:answer}.exercise-page [role=group] .option{counter-increment:answer;padding-left:52px;position:relative}.exercise-page [role=group] .option:before{content:counter(answer);border:1px solid var(--line);border-radius:var(--radius-s);background:var(--bg);width:26px;height:26px;color:var(--muted);font:600 12px/1 var(--font-mono);place-items:center;display:grid;position:absolute;top:50%;left:14px;transform:translateY(-50%)}}.eri-spot{outline:3px solid var(--mustard);outline-offset:3px;animation:1.4s ease-in-out infinite eri-pulse}@keyframes eri-pulse{50%{outline-color:#0000}}@media (prefers-reduced-motion:reduce){.eri-spot{animation:none}}.onb-sheet.eri-top{z-index:4700;border-radius:var(--radius-l);inset:8px 0 auto}.onb-two{grid-template-columns:1fr 1fr;gap:8px;display:grid}.onb-two .chip{justify-content:center}.install-banner{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);align-items:center;gap:12px;padding:12px 6px 12px 14px;display:flex}.install-banner img{border-radius:var(--radius-s);flex:none}.install-text{flex:1;font-size:14px;line-height:1.35}.install-text strong{font-size:15px;display:block}.install-banner .primary{white-space:nowrap}.install-close{min-width:44px;min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;font-size:20px}.install-veil{z-index:40;background:#3a2a1e40;position:fixed;inset:0}.install-sheet{z-index:41;width:min(560px,100%);padding:18px 20px calc(24px + env(safe-area-inset-bottom));background:var(--bg);border-radius:var(--radius-l) var(--radius-l) 0 0;margin:0 auto;animation:.24s ease-out onb-in;position:fixed;inset:auto 0 0;box-shadow:0 -10px 30px #3a2a1e2e}.install-sheet h2{margin:4px 0 6px;font-size:20px}.install-steps{gap:10px;margin:14px 0 18px;padding:0;list-style:none;display:grid}.install-steps li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);align-items:center;gap:12px;padding:10px 12px;font-size:15px;display:flex}.install-steps svg{color:#0a84ff;flex:none}.install-num{background:var(--ink);width:26px;height:26px;color:var(--bg);border-radius:50%;flex:none;place-items:center;font-size:13px;display:grid}.install-sheet .row-end{justify-content:flex-end;display:flex}@media (prefers-reduced-motion:reduce){.install-sheet{animation:none}}
.fb-tab{z-index:4000;touch-action:none;cursor:grab;background:var(--surface);width:44px;height:60px;color:var(--ink);border:1px solid var(--line);border-right:0;border-radius:14px 0 0 14px;place-items:center;padding:0;display:grid;position:fixed;right:0;transform:translateY(-50%);box-shadow:0 6px 18px #3a2a1e29}.fb-tab:hover{background:#fbf6ec}.fb-tab:active{cursor:grabbing}.fb-tab[aria-expanded=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.fb-tab:focus-visible,.fb-head:focus-visible,.fb-btn:focus-visible,.fb-item:focus-visible,.fb-back:focus-visible,.fb-lightbox:focus-visible,.fb-panel button:focus-visible,.fb-panel textarea:focus-visible,.fb-tools button:focus-visible{outline:2px solid var(--action);outline-offset:2px}.fb-count{box-sizing:border-box;background:var(--action);color:#fff;min-width:18px;height:18px;font:600 11px var(--font-mono);box-shadow:0 0 0 2px var(--surface);border-radius:9px;place-items:center;padding:0 5px;display:grid;position:absolute;top:4px;right:4px}.fb-panel{z-index:4500;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);flex-direction:column;width:min(340px,100vw - 24px);animation:.22s ease-out fb-in;display:flex;position:fixed;box-shadow:0 14px 40px #3a2a1e3d}@keyframes fb-in{0%{opacity:0;transform:translateY(6px)}}.fb-head{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--line);border-radius:var(--radius-m) var(--radius-m) 0 0;background:#fbf6ec;flex:none;align-items:center;gap:8px;padding:8px 8px 8px 10px;display:flex}.fb-head:active{cursor:grabbing}.fb-panel.is-small .fb-head{border-radius:var(--radius-m);border-bottom:0}.fb-grip{color:var(--muted);flex:none}.fb-titles{flex-direction:column;flex:1;min-width:0;display:flex}.fb-titles strong{font-size:14px}.fb-icon{width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:10px;flex:none;font-size:16px}.fb-icon:hover{background:var(--line)}.fb-pli{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink);font:600 13px var(--font-body);cursor:pointer;white-space:nowrap;border-radius:18px;flex:none;padding:0 12px}.fb-pli:hover{background:var(--line)}.fb-body{overscroll-behavior:contain;flex-direction:column;gap:10px;min-height:0;padding:12px;display:flex;overflow-y:auto}.fb-text{resize:vertical;border:1px solid var(--line);border-radius:var(--radius-s);width:100%;min-height:96px;font:15px/1.4 var(--font-body);color:var(--ink);box-sizing:border-box;background:#fff;padding:10px}.fb-small{min-height:60px}.fb-row-btns{flex-wrap:wrap;gap:8px;display:flex}.fb-row-btns>*{flex:auto;min-height:44px}.fb-btn{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink);font:14px var(--font-body);cursor:pointer;text-align:center;border-radius:22px;justify-content:center;align-items:center;gap:6px;padding:0 12px;text-decoration:none;display:inline-flex}.fb-btn:hover{background:#fbf6ec}.fb-btn:active{transform:scale(.98)}.fb-btn:disabled{opacity:.5;cursor:not-allowed}.fb-btn.is-main{background:var(--action);border-color:var(--action);color:#fff}.fb-btn.is-main:hover{background:#b34f39}.fb-saved{min-height:14px;color:var(--muted);font:11px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;justify-content:space-between;gap:8px;display:flex}.fb-lines-title{font:11px var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0}.fb-lines{flex-direction:column;gap:8px;display:flex}.fb-line{border:1px solid var(--line);border-radius:var(--radius-s);background:#fff;position:relative}.fb-line-open{border-radius:var(--radius-s);width:100%;min-height:44px;color:var(--ink);font:14px/1.35 var(--font-body);text-align:left;cursor:pointer;background:0 0;border:0;padding:10px 10px 12px;display:block}.fb-line-open:hover{background:#fbf6ec}.fb-line-open .fb-rappel{margin-bottom:4px}.fb-line-delete{font-size:13px;position:absolute;bottom:0;right:8px}.fb-line-confirm{flex-direction:column;gap:8px;padding:10px;display:flex}.fb-to-list{min-height:44px;color:var(--ink);font:600 14px var(--font-body);cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0 4px}.fb-to-list:hover{text-decoration:underline}.fb-prev{border-radius:var(--radius-s);background:#eef4ef;margin:0;padding:8px 10px;font-size:13px}.fb-toast{z-index:4700;background:var(--ink);color:#fff;border-radius:22px;padding:10px 16px;font-size:14px;position:fixed;bottom:92px;left:50%;transform:translate(-50%)}.fb-shots{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;display:grid}.fb-shot{border:1px solid var(--line);border-radius:var(--radius-s);background:#fff;flex-direction:column;display:flex;overflow:hidden}.fb-shot-img{background:var(--bg);cursor:zoom-in;border:0;width:100%;height:76px;padding:0;display:block}.fb-shot-img img{object-fit:cover;object-position:top;width:100%;height:100%;display:block}.fb-shot-name{font:10px var(--font-mono);text-transform:uppercase;color:var(--muted);padding:4px 6px 0}.fb-shot-acts{display:flex}.fb-shot-acts button{cursor:pointer;min-height:44px;color:var(--ink);background:0 0;border:0;flex:1;font-size:12px}.fb-shot-acts button:hover{background:#fbf6ec}.fb-lightbox{z-index:5500;cursor:zoom-out;background:#2b1d14b8;border:0;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.fb-lightbox img{border-radius:var(--radius-s);background:#fff;max-width:100%;max-height:calc(100dvh - 48px)}.fb-freeze{z-index:5000;touch-action:none;background:var(--bg);position:fixed;inset:0}.fb-freeze:after{content:"";border:3px solid var(--mustard);pointer-events:none;position:absolute;inset:0}.fb-freeze-stage{place-items:center;display:grid;position:absolute;inset:0}.fb-freeze-stage img,.fb-freeze-stage canvas{grid-area:1/1;width:auto;max-width:100vw;height:auto;max-height:100dvh}.fb-freeze-stage canvas{cursor:crosshair;touch-action:none}.fb-freeze-wait{place-items:center;display:grid;position:absolute;inset:0}.fb-tools{background:var(--surface);border:1px solid var(--line);border-radius:26px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;width:max-content;max-width:calc(100vw - 24px);padding:8px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #3a2a1e42}.fb-tools .fb-btn[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.fb-hint{color:#fff;text-align:center;background:#2b1d14d1;border-radius:16px;width:max-content;max-width:calc(100vw - 32px);padding:6px 12px;font-size:13px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.shell-head.has-back{align-items:center;gap:12px;display:flex}.fb-segments{flex:none;align-items:center;gap:8px;display:flex}.fb-segments .chip{flex:none}.fb-list{flex-direction:column;gap:10px;display:flex}.fb-item{color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);padding:14px;text-decoration:none;display:block}.fb-item:hover{background:#fbf6ec}.fb-item-top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.fb-item-top h3{font:11px var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0}.fb-item p{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 8px;display:-webkit-box;overflow:hidden}.fb-meta{color:var(--muted);font:11px var(--font-mono);text-transform:uppercase;letter-spacing:.03em;flex-wrap:wrap;gap:6px 10px;display:flex}.fb-badge{font:700 11px var(--font-mono);text-transform:uppercase;white-space:nowrap;border-radius:12px;flex:none;align-items:center;gap:4px;padding:3px 8px;display:inline-flex}.fb-badge.old{color:#6a4d05;background:#f8eccb}.fb-badge.fresh{color:#2f5a37;background:#e5efe6}.fb-badge.done{background:var(--line);color:var(--ink)}.fb-empty{text-align:center;color:var(--muted);padding:28px 12px}.fb-lueur{outline:3px solid var(--mustard);outline-offset:2px;animation:1.2s ease-in-out infinite fb-lueur}@keyframes fb-lueur{50%{outline-color:#0000}}.fb-thanks-sheet{z-index:4600;padding:16px 16px calc(16px + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--line);animation:.22s ease-out fb-in;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 30px #3a2a1e2e}.fb-thanks-sheet>div{flex-direction:column;gap:10px;max-width:560px;margin:0 auto;display:flex}.fb-replay{background:var(--bg);min-height:100dvh}.fb-replay-bar{z-index:3800;background:var(--ink);color:#fff;box-sizing:border-box;align-items:center;gap:10px;min-height:56px;padding:6px 12px;display:flex;position:fixed;top:0;left:0;right:0}.fb-replay-bar span{font:11px var(--font-mono);text-transform:uppercase;letter-spacing:.05em}.fb-replay-meta{opacity:.75}.fb-back{color:#fff;border:1px solid #fff6;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-size:20px;text-decoration:none;display:grid}.fb-stage{justify-content:center;padding-top:56px;display:flex}.fb-stage-frame{background:var(--bg);position:relative;overflow:hidden}.fb-stage iframe{transform-origin:0 0;border:0;position:absolute;top:0;left:0}.fb-stage.is-broken .fb-stage-frame{filter:grayscale();opacity:.32}.fb-broken{z-index:3900;box-sizing:border-box;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);flex-direction:column;gap:10px;width:min(380px,100vw - 32px);padding:16px;display:flex;position:fixed;top:96px;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #3a2a1e33}.fb-broken p{margin:0}.fb-section{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.fb-etat{flex-direction:column;gap:8px;display:flex}.fb-note{color:#5d4c3c;margin:0;font-size:13px}.fb-resolution{border-radius:var(--radius-s);background:#e5efe6;margin:0;padding:10px;font-size:14px}.fb-rappel{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:14px;display:-webkit-box;overflow:hidden}.fb-lu{white-space:pre-wrap;margin:0}.fb-plus{width:100%;font-weight:600}.fb-foot{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.fb-foot-btns{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.fb-foot-btns .danger-link{font-size:13px}.fb-missing{margin:24px}@media (prefers-reduced-motion:reduce){.fb-panel,.fb-thanks-sheet,.fb-lueur{animation:none}}
