:root{--magenta-50:#fff1f6;--magenta-100:#ffe1ed;--magenta-200:#ffc4db;--magenta-400:#ff6ba3;--magenta-500:#ff2e7e;--magenta-600:#e5005b;--magenta-700:#c0004c;--magenta-800:#a00040;--magenta-950:#2a1520;--zinc-0:#fff;--zinc-25:#f8f8f6;--zinc-200:#e4e4e7;--zinc-400:#a1a1aa;--zinc-450:#8a8a93;--zinc-500:#71717a;--zinc-600:#52525b;--zinc-700:#3f3f46;--zinc-800:#27272a;--zinc-900:#18181b;--zinc-950:#111113;--green-50:#ecfdf5;--green-400:#4ade80;--green-700:#047857;--green-950:#10261c;--vermilion-50:#fff4ed;--vermilion-400:#fb8b5b;--vermilion-700:#c2410c;--vermilion-950:#2b1a12;--amber-50:#fffbeb;--amber-400:#fbbf24;--amber-800:#92400e;--amber-950:#2a210d;--blue-50:#eff6ff;--blue-300:#93c5fd;--blue-400:#60a5fa;--blue-800:#1e3a8a;--bg:var(--zinc-0);--paper:var(--zinc-25);--line:var(--zinc-200);--ink:var(--zinc-900);--ink-2:var(--zinc-600);--ink-3:var(--zinc-500);--ink-4:var(--zinc-400);--accent:var(--magenta-600);--accent-hover:var(--magenta-800);--accent-text:var(--magenta-700);--accent-soft:var(--magenta-50);--accent-ink:#fff;--right:var(--green-700);--right-text:var(--green-700);--right-soft:var(--green-50);--right-fill:var(--green-700);--wrong:var(--vermilion-700);--wrong-text:var(--vermilion-700);--wrong-soft:var(--vermilion-50);--warn-text:var(--amber-800);--warn-soft:var(--amber-50);--info:var(--blue-400);--info-soft:var(--blue-50);--radius:8px;--serif:"Lora", Georgia, "Times New Roman", serif;--sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--sans);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-size:16px}@media (prefers-color-scheme:dark){:root{--bg:var(--zinc-950);--paper:var(--zinc-900);--line:var(--zinc-800);--ink:#f4f4f5;--ink-2:var(--zinc-400);--ink-3:var(--zinc-450);--ink-4:var(--zinc-600);--accent:var(--magenta-600);--accent-hover:var(--magenta-500);--accent-text:var(--magenta-400);--accent-soft:var(--magenta-950);--right:var(--green-400);--right-text:var(--green-400);--right-soft:var(--green-950);--right-fill:var(--green-700);--wrong:var(--vermilion-400);--wrong-text:var(--vermilion-400);--wrong-soft:var(--vermilion-950);--warn-text:var(--amber-400);--warn-soft:var(--amber-950);--info:var(--blue-800);--info-soft:#172033;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);min-height:100dvh;margin:0;line-height:1.6}button{font:inherit;color:inherit;cursor:pointer}ul{margin:0;padding:0;list-style:none}p{margin:0}h1,h2{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);font-weight:700}h1{margin:0;font-size:2rem;line-height:1.15}h2{margin:0;font-size:1.25rem;line-height:1.3}.label{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);font-size:.75rem;font-weight:600}.label.accent{color:var(--accent-text)}.app{min-height:100dvh}main{padding:0 20px 112px}.page{max-width:600px;margin:0 auto}.page.wide{max-width:1120px}.page.session{max-width:640px}.in-session main{padding-bottom:24px}.page{animation:.25s fade}@keyframes fade{0%{opacity:0;transform:translateY(4px)}}.brandbar{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 94%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:10;padding:0 20px;position:sticky;top:0}.brandbar-inner{justify-content:space-between;align-items:center;gap:24px;max-width:1120px;height:60px;margin:0 auto;display:flex}.topnav{display:none}.wordmark{font-family:var(--serif);color:var(--ink);align-items:center;gap:8px;font-size:1.25rem;font-weight:700;text-decoration:none;display:flex}.wordmark b{color:var(--accent);font-weight:700}.wordmark-dot{background:var(--accent-soft);width:28px;height:28px;color:var(--accent);border-radius:50%;place-items:center;display:grid}.wordmark-dot svg{width:14px;height:14px}.brandbar-meta{color:var(--ink-2);align-items:center;gap:6px;font-size:.875rem;display:flex}.brandbar-meta strong{color:var(--ink)}.flame{color:var(--ink-4)}.flame.is-lit{color:var(--accent)}.band{background:var(--paper);box-shadow:0 0 0 100vmax var(--paper);clip-path:inset(0 -100vmax);margin-bottom:32px;padding:40px 0 36px}.band .label{margin-bottom:12px;display:block}.band h1{margin-bottom:12px}.lede{color:var(--ink-2);font-size:1.0625rem;line-height:1.6}.crumb{color:var(--ink-2);background:0 0;border:0;margin-bottom:20px;padding:0;font-size:.875rem;text-decoration:none;display:inline-block}.crumb:hover{color:var(--accent-text)}.sk{font-family:var(--serif);color:var(--ink);font-weight:600}.en,.muted{color:var(--ink-2)}.small{font-size:.875rem}.hint{color:var(--ink-3);font-size:.875rem}.note{border-left:2px solid var(--accent);color:var(--ink-2);text-align:left;margin-top:16px;padding:2px 0 2px 12px;font-size:.9375rem}.meta{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:.875rem;display:flex}.meta .sep{color:var(--line)}.section{margin-top:40px}.section>.label{margin-bottom:14px;display:block}.btn{border-radius:var(--radius);background:var(--paper);border:1px solid #0000;padding:11px 18px;font-size:.9375rem;font-weight:600;transition:background .15s,transform 80ms}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.4;cursor:default}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.primary:hover{background:var(--accent-hover)}.btn.ghost{background:var(--bg);border-color:var(--line)}.btn.ghost:hover{border-color:var(--ink-4)}.btn.wide{width:100%;padding:15px;font-size:1rem}.btn.danger{color:var(--wrong-text)}.btn.got{background:var(--ink);color:var(--bg)}.btn.miss{background:var(--bg);border-color:var(--line)}.link{color:var(--accent-text);background:0 0;border:0;padding:0;font-size:.9375rem;font-weight:600;text-decoration:none}.link:hover{color:var(--accent-hover);text-underline-offset:3px;text-decoration:underline}.row{flex-wrap:wrap;gap:8px;display:flex}.stack{gap:10px;width:100%;display:grid}.audio-play{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border:0;border-radius:50%;flex:none;place-items:center;padding:0;transition:background .15s;display:grid}.audio-play svg{width:18px;height:18px}.audio-play.is-playing{background:var(--accent);color:var(--accent-ink)}.audio-play.audio-lg{width:76px;height:76px}.audio-play.audio-lg svg{width:32px;height:32px}.sk-line{justify-content:space-between;align-items:center;gap:12px;display:flex}.today{padding-top:40px}.today-head h1{margin:10px 0 22px}.day-steps{color:var(--ink-3);align-items:center;gap:10px;margin:0 0 28px;padding:0;font-size:.875rem;font-weight:600;list-style:none;display:flex}.day-steps li{align-items:center;gap:8px;display:flex}.day-dot{border:1.5px solid var(--line);border-radius:50%;place-items:center;width:24px;height:24px;font-size:.75rem;display:grid}.day-steps .is-current{color:var(--ink)}.day-steps .is-current .day-dot{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.day-steps .is-done{color:var(--ink-2)}.day-steps .is-done .day-dot{border-color:var(--right-fill);background:var(--right-fill);color:var(--accent-ink)}.day-line{background:var(--line);width:32px;height:1.5px}.focus{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:24px}.focus-top{flex-wrap:wrap;align-items:center;gap:10px 12px;margin-bottom:16px;display:flex}.focus-tile{background:var(--accent-soft);width:44px;height:44px;color:var(--accent);border-radius:12px;flex:none;place-items:center;display:grid}.focus-tile svg{width:24px;height:24px}.focus.is-done .focus-tile{background:var(--right-soft);color:var(--right)}.tag{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);border:1px solid var(--line);background:var(--bg);border-radius:99px;padding:3px 10px;font-size:.6875rem;font-weight:600}.focus h2{margin-bottom:10px;font-size:1.75rem;line-height:1.2}.focus p{color:var(--ink-2);margin-bottom:14px}.focus .hint{margin-top:-6px}.focus-btn{width:100%;margin-top:10px;padding:15px;font-size:1rem}.focus-alt{text-align:center;margin-top:16px;font-size:.875rem}.focus-body>.label{margin-bottom:10px;display:block}.focus-action{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 20px;margin-top:18px;display:flex}.focus-action .focus-btn{margin-top:0}.part-dots{color:var(--ink-3);align-items:center;gap:8px;font-size:.8125rem;display:inline-flex}.part-dots-row{gap:4px;display:inline-flex}.part-dots-row i{background:var(--line);border-radius:50%;width:8px;height:8px}.part-dots-row i.is-on{background:var(--accent)}.focus-alt a{color:var(--ink-2);text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px}.focus-alt a:hover{color:var(--accent-text)}.so-far{border-top:1px solid var(--line);text-align:center;color:var(--ink-3);margin-top:48px;padding-top:16px;font-size:.8125rem}.module{border-bottom:1px solid var(--line);padding:24px 0;scroll-margin-top:96px}.module:first-of-type{padding-top:0}.module-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}.module-title{align-items:center;gap:14px;min-width:0;display:flex}.module-tile{background:var(--accent-soft);width:44px;height:44px;color:var(--accent);border-radius:12px;flex:none;place-items:center;display:grid}.module-tile svg{width:24px;height:24px}.module-num{color:var(--accent-text);font-size:.6875rem;display:block}.module-name{font-family:var(--serif);font-size:1.1875rem;font-weight:700;line-height:1.3;display:block}.module-count{color:var(--ink-2);white-space:nowrap;font-size:.8125rem}.meter{background:var(--line);height:2px;margin:10px 0 6px}.meter div{background:var(--accent);height:100%;transition:width .4s}.lesson-row{text-align:left;background:0 0;border:0;align-items:center;gap:14px;width:100%;padding:14px 0;display:flex}.lesson-row+.lesson-row,li+li>.lesson-row{border-top:1px solid var(--line)}.lesson-row:hover .lesson-row-title{color:var(--accent-text)}.lesson-row-main{flex:1;gap:2px;min-width:0;display:grid}.lesson-tile{background:var(--paper);width:40px;height:40px;color:var(--ink-2);border-radius:10px;flex:none;place-items:center;transition:color .15s,background .15s;display:grid}.lesson-tile svg{width:20px;height:20px}.lesson-tile.s-done{background:var(--right-soft);color:var(--right)}.lesson-row:hover .lesson-tile{color:var(--accent)}.lesson-tile.has-thumb{background:var(--paper);border-radius:8px;width:72px;height:48px;position:relative}.lesson-tile.has-thumb img{object-fit:cover;border-radius:inherit;width:100%;height:100%;transition:transform .25s}.lesson-row:hover .lesson-tile.has-thumb img{transform:scale(1.05)}.lesson-tile.has-thumb{overflow:hidden}.lesson-tile.s-done.has-thumb img{opacity:.75}.lesson-tile-badge{background:var(--right);color:#fff;border-radius:50%;place-items:center;width:18px;height:18px;display:grid;position:absolute;bottom:4px;right:4px}.lesson-tile-badge svg{width:11px;height:11px}.lesson-row.is-next{background:var(--accent-soft);border-radius:10px;width:calc(100% + 24px);margin-inline:-12px;padding-inline:12px;border-top-color:#0000!important}.lesson-row.is-next .lesson-tile{background:var(--bg);color:var(--accent)}li:has(>.is-next)+li>.lesson-row{border-top-color:#0000}.lesson-row-title{font-family:var(--serif);font-size:1.0625rem;font-weight:600;transition:color .15s}.lesson-row-sub{color:var(--ink-2);font-size:.8125rem}.status{white-space:nowrap;color:var(--ink-3);font-size:.75rem;font-weight:600}.status.s-half{color:var(--accent-text)}.status.s-done{color:var(--right-text)}.status.s-next{color:var(--accent-ink);background:var(--accent);border-radius:99px;padding:3px 10px}.soon{margin-top:28px}.soon p{color:var(--ink-2);margin-top:8px;font-size:.9375rem}.part-buttons{grid-template-columns:1fr 1fr;gap:10px;display:grid}.cando-list{gap:10px;display:grid}.cando-list li{color:var(--ink-2);align-items:flex-start;gap:10px;display:flex}.cando-list li:before{content:"";border:1.5px solid var(--line);border-radius:50%;flex:none;width:18px;height:18px;margin-top:3px}.cando-list li.is-lit{color:var(--ink)}.cando-list li.is-lit:before{background:var(--right-fill) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.5 2.5L12 5.5' stroke='white' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px no-repeat;border:0}.phrase-list li{border-bottom:1px solid var(--line);padding:14px 0}.phrase-list li:first-child{border-top:1px solid var(--line)}.phrase-list .sk{font-size:1.0625rem}.phrase-list .en{font-size:.9375rem}.mission{background:var(--accent-soft);border-radius:var(--radius);cursor:pointer;text-align:left;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.mission input{accent-color:var(--accent);flex:none;width:18px;height:18px;margin-top:4px}.mission.is-done{background:var(--right-soft)}.mission.is-done input{accent-color:var(--right)}.session-top{align-items:center;gap:14px;height:60px;display:flex}.close{color:var(--ink-4);background:0 0;border:0;place-items:center;padding:6px;display:grid}.close:hover{color:var(--ink)}.close svg{width:20px;height:20px}.progress{background:var(--paper);border-radius:2px;flex:1;height:4px;overflow:hidden}.progress div{background:var(--accent);border-radius:2px;height:100%;transition:width .35s}.session-part{color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums;min-width:44px;font-size:.8125rem}.ex{flex-direction:column;min-height:calc(100dvh - 84px);padding-top:24px;display:flex}.ex>.label{text-align:center;margin-bottom:28px}.ex-body{flex:1}.ex-footer{background:linear-gradient(transparent, var(--bg) 28%);padding:20px 0 12px;position:sticky;bottom:0}.grade{grid-template-columns:1fr 1fr;gap:10px;display:grid}.grade .btn{padding:15px;font-size:1rem}.listen-hero,.present{text-align:center;flex-direction:column;align-items:center;gap:18px;padding-bottom:28px;display:flex}.present .sk{font-size:1.75rem;line-height:1.3}.listen-hero .sk{font-size:1.5rem;line-height:1.3}.present .en{font-size:1.0625rem}.chunk-gap{color:var(--ink-4);margin:0 .2em;font-weight:400}.prompt-en{text-align:center;color:var(--ink);font-size:1.375rem;font-weight:500;line-height:1.4}.ex>.label{display:block}.goal-card{background:var(--accent-soft);border-radius:14px;align-items:flex-start;gap:16px;margin-top:28px;padding:18px 20px;display:flex}.goal-card .label{margin-bottom:4px;display:block}.goal-card .focus-tile{background:var(--bg)}.goal-text{color:var(--ink);font-size:1.125rem;font-weight:500;line-height:1.45}.role-line{color:var(--ink-2);align-items:center;gap:10px;margin-top:24px;display:flex}.role-line svg{width:20px;height:20px;color:var(--ink-4);flex:none}.role-line strong{color:var(--ink);font-weight:600}.intro .hint{margin-top:6px;padding-left:30px}.options{gap:10px;display:grid}.option{text-align:left;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);gap:2px;padding:15px 16px;font-size:1rem;transition:border-color .15s,background .15s;display:grid}.option:not(:disabled):hover{border-color:var(--ink-4)}.option:disabled{cursor:default}.option.is-right{border-color:var(--right);background:var(--right-soft)}.option.is-wrong{border-color:var(--wrong);background:var(--wrong-soft)}.option:disabled:not(.is-right):not(.is-wrong){color:var(--ink-4)}.sk-option{font-family:var(--serif);font-size:1.0625rem;font-weight:600}.option-en{font-family:var(--sans);color:var(--ink-2);font-size:.875rem;font-weight:400}.build-line{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;min-height:64px;margin:20px 0 24px;padding:12px 0;display:flex}.build-line.is-complete{border-color:var(--right)}.caret{background:var(--accent);width:2px;height:26px;animation:1s infinite blink}@keyframes blink{50%{opacity:0}}.bank{flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:16px;display:flex}.piece{font-family:var(--serif);border-radius:var(--radius);background:var(--bg);border:1px solid var(--line);box-shadow:0 2px 0 var(--line);padding:10px 16px;font-size:1.125rem;font-weight:600}.piece.placed{background:var(--right-soft);box-shadow:none;border-color:#0000;animation:.15s pop}.piece.is-used{visibility:hidden}.piece.is-shake{border-color:var(--wrong);animation:.35s shake}@keyframes pop{0%{transform:scale(.92)}}@keyframes shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}.feedback{color:var(--right-text);text-align:center;margin-bottom:4px;font-weight:600}.after-build{flex-direction:column;align-items:center;gap:8px;display:flex}.reveal{border-top:1px solid var(--line);text-align:left;margin-top:24px;padding-top:20px;animation:.2s fade}.reveal .sk{font-size:1.375rem;line-height:1.35}.reveal .en{margin-top:4px}.heard{border-left:2px solid var(--line);margin-bottom:24px;padding:4px 0 4px 16px}.heard .sk{font-size:1.375rem;line-height:1.35}.heard .en{margin-top:2px;font-size:.9375rem}.heard .hint{margin-top:10px}.done-screen{text-align:center;flex-direction:column;align-items:center;gap:14px;padding-top:64px;display:flex}.done-screen h1{font-size:2.25rem}.done-screen .lede{max-width:26rem}.done-mark{background:var(--accent-soft);width:64px;height:64px;color:var(--accent);border-radius:50%;place-items:center;margin-bottom:4px;display:grid}.done-mark svg{width:30px;height:30px}.done-screen .cando-list{text-align:left;margin:12px 0}.done-screen .mission{margin:4px 0 12px}.done-screen .stack{justify-items:center;margin-top:16px}.done-alt{padding:6px 0}.calendar,.week{grid-template-columns:repeat(7,1fr);gap:6px;max-width:280px;display:grid}.week-letter{color:var(--ink-3);text-align:center;font-size:.6875rem;font-weight:600}.cal-day{aspect-ratio:1;background:var(--paper);border:1px solid var(--line);border-radius:50%}.cal-day.is-active{background:var(--accent);border-color:var(--accent)}.cal-day.is-future{background:0 0;border-style:dashed}.cal-day.is-missed{color:var(--ink-4);background:0 0;place-items:center;display:grid}.cal-day.is-missed svg{width:55%;height:55%}.legend .legend-x{color:var(--ink-4);font-size:.6875rem;font-style:normal}.cal-day.is-today{outline:2px solid var(--ink);outline-offset:2px}.legend{color:var(--ink-2);gap:16px;margin-top:12px;font-size:.8125rem;display:flex}.legend i{vertical-align:-1px;border-radius:50%;place-items:center;width:10px;height:10px;margin-right:6px;display:inline-grid}.setting{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.setting:first-of-type{border-top:1px solid var(--line)}.setting select{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;padding:6px 10px;font-size:.9375rem}.setting input[type=checkbox]{accent-color:var(--accent);width:18px;height:18px}.callout{background:var(--warn-soft);border-radius:var(--radius);color:var(--warn-text);margin-top:16px;padding:12px 14px;font-size:.875rem}.tabbar{padding:6px 20px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--bg) 94%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:10;justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{letter-spacing:.04em;max-width:180px;color:var(--ink-3);flex:1;justify-items:center;gap:2px;padding:6px;font-size:.6875rem;font-weight:600;text-decoration:none;display:grid}.tabbar svg{width:22px;height:22px}.tabbar a.is-active{color:var(--accent-text)}@media (width>=640px){h1{font-size:2.5rem}.band{padding:56px 0 44px}}.split-aside .aside-label{margin-bottom:14px;display:block}.split>.split-aside:last-child{margin-top:40px}.index{display:none}.index ul{gap:2px;display:grid}.index a,.index .is-soon{color:var(--ink);border-radius:6px;gap:10px;padding:9px 12px;font-size:.9375rem;text-decoration:none;display:flex}.index a:hover{background:var(--accent-soft);color:var(--accent-text)}.index .is-soon{color:var(--ink-3)}.index a,.index .is-soon{align-items:center}.index-icon{color:var(--accent);flex:none;display:grid}.index-icon svg{width:18px;height:18px}.index .is-soon .index-icon{color:var(--ink-4)}@media (hover:hover) and (pointer:fine){.options{counter-reset:opt}.option{padding-right:52px;position:relative}.option:after{counter-increment:opt;content:counter(opt);border:1px solid var(--line);width:24px;height:24px;color:var(--ink-3);font:600 .75rem/22px var(--sans);text-align:center;border-radius:5px;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.option:disabled:after{visibility:hidden}.bank{counter-reset:piece}.bank .piece{position:relative}.bank .piece:after{counter-increment:piece;content:counter(piece);background:var(--paper);border:1px solid var(--line);width:18px;height:18px;color:var(--ink-3);font:600 .6875rem/16px var(--sans);text-align:center;border-radius:4px;position:absolute;top:-8px;right:-8px}.grade .btn:after{font:600 .75rem var(--sans);opacity:.55;margin-left:8px}.grade .btn.miss:after{content:"1"}.grade .btn.got:after{content:"2"}.ex-footer .btn.primary:after{content:"↵";opacity:.6;margin-left:10px;font-weight:400}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (width>=900px){main{padding:0 32px 80px}.brandbar{padding:0 32px}.brandbar-inner{height:68px}.topnav{gap:36px;margin-left:auto;margin-right:12px;display:flex}.topnav a{color:var(--ink-2);border-bottom:2px solid #0000;padding:22px 0;font-size:.9375rem;font-weight:600;text-decoration:none;transition:color .15s}.topnav a:hover{color:var(--ink)}.topnav a.is-active{color:var(--ink);border-bottom-color:var(--accent)}.tabbar{display:none}.band{margin-bottom:56px;padding:72px 0 56px}.band h1{max-width:18em;font-size:3rem}.band .lede{max-width:38rem;font-size:1.125rem}.split{grid-template-columns:minmax(0,1fr) 300px;grid-template-areas:"main aside";align-items:start;gap:80px;display:grid}.split.split-left{grid-template-columns:240px minmax(0,1fr);grid-template-areas:"aside main"}.split-main{grid-area:main;min-width:0}.split-aside{grid-area:aside}.split>.split-aside:last-child{margin-top:0}.split-aside.sticky,.index{position:sticky;top:100px}.index{display:block}.today{padding-top:72px}.today-head h1{font-size:2.75rem}.focus{padding:32px}.focus h2{font-size:2rem}.focus-btn{width:auto;padding:14px 40px}.focus-action{justify-content:flex-start}.page.today{max-width:880px}.focus.has-art{grid-template-rows:minmax(300px,auto);grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);padding:0;display:grid;overflow:hidden}.focus.has-art>.scene-art{aspect-ratio:auto;border-radius:0;height:100%;margin:0}.focus.has-art .focus-body{align-self:center;padding:32px 36px}.focus.has-art h2{font-size:1.75rem}.module{border-bottom:0;padding:0 0 40px}.lesson-grid{grid-template-columns:1fr 1fr;column-gap:32px;display:grid}.lesson-grid li{border-bottom:1px solid var(--line)}.lesson-grid .lesson-row{padding:18px 0;border-top:0!important}.lesson-grid .lesson-row.is-next{padding:18px 12px}.split-main>.section.first{margin-top:0}.split-left .soon{display:none}.session-top{height:72px}.ex{min-height:0;padding-top:48px}.ex-footer{background:0 0;padding-top:36px;position:static}.present .sk{font-size:2.25rem}.prompt-en{font-size:1.625rem}.done-screen{padding-top:96px}}@media (width<=899px){.module-head{flex-wrap:wrap;row-gap:2px}.module-title{flex:100%}.module-count{padding-left:58px}}.role-grid{gap:32px;display:grid}.role h2{margin-bottom:6px}.role ul{gap:8px;margin-top:14px;display:grid}.role li{grid-template-columns:28px 130px 1fr;align-items:center;gap:10px;display:grid}.chip{border:1px solid var(--line);border-radius:6px;width:28px;height:28px}code{color:var(--ink);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.8125rem}.demo{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.demo .option{padding:10px 14px;display:inline-block}.demo .option:after{display:none}.scale{grid-template-columns:90px 1fr;align-items:start;gap:12px;margin-bottom:14px;display:grid}.scale-name{padding-top:8px}.scale-steps{flex-wrap:wrap;gap:8px;display:flex}.step{justify-items:center;gap:4px;display:grid}.step-chip{border:1px solid var(--line);border-radius:8px;width:44px;height:44px}@media (width>=900px){.role-grid{grid-template-columns:repeat(3,1fr)}}.streak-wrap{position:relative}.streak-btn{background:0 0;border:1px solid #0000;border-radius:99px;padding:6px 12px;transition:background .15s,border-color .15s}.streak-btn:hover,.streak-btn.is-open{background:var(--paper);border-color:var(--line)}.popover{background:var(--bg);border:1px solid var(--line);z-index:20;border-radius:14px;gap:14px;width:min(300px,100vw - 32px);padding:18px;animation:.15s fade;display:grid;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 12px 32px #0000001f}.popover-head{align-items:center;gap:12px;display:flex}.popover-flame{background:var(--paper);width:44px;height:44px;color:var(--ink-4);border-radius:12px;place-items:center;display:grid}.popover-flame svg{width:24px;height:24px}.popover-flame.is-lit{background:var(--accent-soft);color:var(--accent)}.popover-n{font-family:var(--serif);font-size:1.5rem;font-weight:700;line-height:1.1}.popover .week{max-width:none}.script-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.small-btn{padding:6px 14px;font-size:.8125rem}.script-lines{gap:2px;margin:0;padding:0;list-style:none;display:grid}.script-line{border-left:2px solid #0000;border-radius:10px;grid-template-columns:36px 1fr;align-items:start;gap:12px;padding:10px 12px;transition:background .2s;display:grid}.script-line.is-me{background:var(--accent-soft);border-left-color:var(--accent)}.script-line.is-playing{background:var(--paper);box-shadow:inset 0 0 0 1px var(--line)}.script-line.is-me.is-playing{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.avatar{background:var(--paper);width:36px;height:36px;color:var(--ink-2);border:1px solid var(--line);border-radius:50%;place-items:center;font-size:.8125rem;font-weight:700;display:grid}.is-me .avatar{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-size:.6875rem}.avatar.is-hidden{visibility:hidden}.script-body{text-align:left;background:0 0;border:0;gap:2px;padding:0;display:grid}.script-who{color:var(--ink-3);font-size:.75rem;font-weight:600}.is-me .script-who{color:var(--accent-text)}.script-body .sk{font-size:1.0625rem;line-height:1.4}.script-body .en{font-size:.9375rem}.script-body:hover .sk{color:var(--accent-text)}.word-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.word-card{border:1px solid var(--line);background:var(--bg);border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.word-card .sk{font-size:1.0625rem}.word-card .en{font-size:.875rem}.welcome{padding-top:40px}.welcome h1{margin:12px 0 14px}.learners{background:var(--paper);border:1px solid var(--line);color:var(--ink-2);border-radius:99px;align-items:center;gap:8px;margin-top:18px;padding:6px 14px 6px 12px;font-size:.875rem;display:inline-flex}.learners strong{color:var(--ink)}.live-dot{background:var(--right);border-radius:50%;width:8px;height:8px}.welcome-collage{grid-template-columns:1fr 1fr;gap:10px;margin-top:28px;display:grid}.welcome-collage img{aspect-ratio:3/2;object-fit:cover;background:var(--paper);border-radius:14px;width:100%;display:block}.welcome-collage img:first-child{grid-column:1/-1}.welcome-cta{text-align:center;justify-items:center;gap:12px;margin-top:28px;display:grid}.welcome-scenes{margin-top:56px}.welcome-scenes-head h2{margin-bottom:6px}.welcome-scenes-head p{color:var(--ink-2);font-size:.9375rem}.marquee{margin:20px -20px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 5% 95%,#0000);mask-image:linear-gradient(90deg,#0000,#000 5% 95%,#0000)}.marquee-track{width:max-content;animation:150s linear infinite marquee;display:flex}.marquee:hover .marquee-track,.marquee:focus-within .marquee-track{animation-play-state:paused}@keyframes marquee{to{transform:translate(-50%)}}.scene-card{flex:none;width:220px;padding-right:14px}.scene-card a{color:inherit;gap:2px;text-decoration:none;display:grid}.scene-card img{aspect-ratio:3/2;object-fit:cover;background:var(--paper);border-radius:12px;width:100%;margin-bottom:8px;transition:transform .25s}.scene-card a:hover img{transform:translateY(-3px)}.scene-card a:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:12px}.scene-card-sk{letter-spacing:.1em;text-transform:uppercase;color:var(--accent-text);font-size:.6875rem;font-weight:600}.scene-card-title{font-size:.9375rem;font-weight:600;line-height:1.35}@media (prefers-reduced-motion:reduce){.marquee{overflow-x:auto;-webkit-mask-image:none;mask-image:none}.marquee-track{padding-left:20px;animation:none}.scene-card[aria-hidden]{display:none}}.welcome-points{gap:20px;margin-top:48px;display:grid}.welcome-points li{align-items:flex-start;gap:16px;display:flex}.welcome-point-title{margin-bottom:2px;font-weight:600}.welcome-points p{color:var(--ink-2);font-size:.9375rem}@media (width<=899px){.welcome-hero{display:contents}.welcome-collage img:not(:first-child){display:none}.welcome.is-new .welcome-cta{z-index:2;background:linear-gradient(transparent, var(--bg) 22%);margin-top:24px;padding:28px 0 14px;position:sticky;bottom:0}}@media (width>=900px){.page.welcome{max-width:1120px;padding-top:80px}.welcome-hero{grid-template-columns:1fr 1.05fr;grid-template-areas:"intro collage""cta collage";align-items:start;column-gap:72px;display:grid}.welcome-intro{grid-area:intro;align-self:end}.welcome-collage{grid-area:collage;margin-top:0}.welcome-cta{text-align:left;grid-area:cta;justify-items:start}.welcome-cta .btn.wide{width:auto;padding:15px 36px}.welcome h1{font-size:3rem}.welcome-scenes{margin-top:88px}.marquee{margin:24px 0 0}.scene-card{width:264px;padding-right:18px}.welcome-points{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:40px;margin-top:72px;padding-top:40px}}.app:not(.in-session) main{padding-bottom:72px}.site-footer{background:var(--paper);border-top:1px solid var(--line);padding:40px 20px calc(96px + env(safe-area-inset-bottom))}.site-footer-inner{max-width:1120px;margin:0 auto}.sf-feedback{background:var(--bg);border:1px solid var(--line);border-radius:16px;grid-template-columns:auto 1fr;align-items:center;gap:14px 16px;padding:22px;display:grid}.sf-feedback h2{margin-bottom:4px;font-size:1.1875rem;line-height:1.3}.sf-feedback p{color:var(--ink-2);font-size:.9375rem}.sf-feedback-btn{text-align:center;color:var(--ink);grid-column:1/-1;justify-self:stretch;font-weight:600;text-decoration:none}.sf-main{grid-template-columns:1fr 1fr;gap:32px 24px;margin-top:40px;display:grid}.sf-brand{grid-column:1/-1;justify-items:start;gap:10px;display:grid}.sf-brand p{color:var(--ink-2);max-width:26rem;font-size:.9375rem}.sf-family a,.sf-col a{color:var(--ink);text-decoration:none}.sf-family a{color:var(--accent-text);font-weight:600}.sf-family a:hover{text-underline-offset:3px;text-decoration:underline}.sf-col{align-content:start;gap:10px;font-size:.9375rem;display:grid}.sf-col .label{margin-bottom:4px}.sf-col a:hover{color:var(--accent-text)}.sf-bottom{border-top:1px solid var(--line);color:var(--ink-3);flex-wrap:wrap;justify-content:space-between;gap:6px 20px;margin-top:36px;padding-top:20px;font-size:.8125rem;display:flex}@media (width>=900px){.app:not(.in-session) main{padding-bottom:96px}.site-footer{padding:56px 32px 40px}.sf-feedback{grid-template-columns:auto 1fr auto;gap:20px;padding:26px 30px}.sf-feedback-btn{grid-column:auto;justify-self:end}.sf-main{grid-template-columns:1.6fr 1fr 1fr;gap:48px;margin-top:48px}.sf-brand{grid-column:auto}}.backup{gap:10px;margin-bottom:24px;display:grid}.backup-line{color:var(--ink-2);align-items:center;gap:8px;font-size:.9375rem;font-weight:600;display:flex}.backup-dot{background:var(--ink-4);border-radius:50%;width:8px;height:8px}.backup-line.s-saved{color:var(--right-text)}.backup-line.s-saved .backup-dot{background:var(--right)}.backup-line.s-saving .backup-dot{background:var(--accent);animation:1s infinite blink}.backup-line.s-offline .backup-dot{background:var(--warn-text)}.code-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sync-code{letter-spacing:.08em;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:1.125rem;font-weight:600}.restore{gap:8px;display:grid}.code-input{letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:8px;width:13em;max-width:100%;padding:9px 12px;font:600 1rem/1.2 ui-monospace,SF Mono,Menlo,Consolas,monospace}.code-input:focus{outline:2px solid var(--accent);outline-offset:1px}.ok-text{color:var(--right-text)}.err-text{color:var(--wrong-text)}.scene-art{aspect-ratio:3/2;background:var(--paper);border-radius:14px;position:relative;overflow:hidden}.scene-art-banner{aspect-ratio:16/9}.scene-art img{object-fit:cover;opacity:0;width:100%;height:100%;display:block;transform:scale(1.08)}.scene-art img.is-loaded{opacity:1;transition:opacity .6s;animation:1.6s cubic-bezier(.22,1,.36,1) both art-settle,22s ease-in-out 1.6s infinite alternate art-drift}@keyframes art-settle{0%{transform:scale(1.08)}to{transform:scale(1.03)}}@keyframes art-drift{0%{transform:scale(1.03)}to{transform:scale(1.06) translate(var(--drift-x,0%), var(--drift-y,0%))}}@media (prefers-reduced-motion:reduce){.scene-art img,.scene-art img.is-loaded{transition:none;animation:none;transform:none}}.scene-art-ph{color:var(--accent);background:radial-gradient(circle at 78% 28%, color-mix(in srgb, var(--accent) 26%, var(--bg)) 0 9%, transparent 9.5%), radial-gradient(70% 55% at 22% 112%, color-mix(in srgb, var(--accent) 24%, var(--bg)) 0 99%, transparent 100%), radial-gradient(80% 60% at 82% 120%, color-mix(in srgb, var(--accent) 14%, var(--bg)) 0 99%, transparent 100%), linear-gradient(180deg, var(--accent-soft), var(--bg) 85%);box-shadow:inset 0 0 0 1px var(--line);border-radius:inherit;place-items:center;display:grid;position:absolute;inset:0}.scene-art-ph svg{box-sizing:content-box;background:color-mix(in srgb, var(--bg) 80%, transparent);opacity:.85;border-radius:50%;width:12%;min-width:28px;max-width:56px;padding:14px}.focus>.scene-art{border-radius:16px 16px 0 0;margin:-24px -24px 20px}.band-art{margin-top:24px}.done-art{width:100%;max-width:360px;margin-bottom:24px;position:relative}.done-art .done-mark{border:4px solid var(--bg);margin:0;position:absolute;bottom:-28px;left:50%;transform:translate(-50%)}@media (width>=900px){.focus>.scene-art{margin:-32px -32px 24px}.band.band-split{grid-template-columns:minmax(0,1fr) 420px;align-items:center;gap:56px;display:grid}.band-split .band-art{margin-top:0}}
