:root{color-scheme:light;--cream: #fdf6e3;--cream-2: #f7efd8;--surface: #ffffff;--ink: #3c3c3c;--ink2: #6b6b6b;--muted: #9a9a9a;--line: #e5e0d0;--line-2: #d6d0bd;--green: #58cc02;--green-d: #46a302;--green-l: #d7ffb8;--blue: #1cb0f6;--blue-d: #1899d6;--blue-l: #ddf4ff;--orange: #ff9600;--orange-d: #e08600;--orange-l: #ffe9c7;--purple: #ce82ff;--purple-d: #a568cc;--purple-l: #f2e1ff;--red: #ff4b4b;--red-d: #ea2b2b;--red-l: #ffdfe0;--gold: #ffc800;--gold-d: #e6a800;--gold-l: #fff1b8;--teal: #2bc2a3;--teal-d: #1f9c83;--teal-l: #d4f5ec;--gray: #e5e5e5;--gray-d: #afafaf;--radius: 16px;--radius-s: 12px}*{box-sizing:border-box}html,body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.5 Nunito,Segoe UI,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:800;letter-spacing:-.01em}p{margin:0}button{font:inherit;color:inherit}a{color:var(--blue-d)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 22px;border-radius:14px;border:2px solid transparent;border-bottom-width:4px;font-weight:800;font-size:14px;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:transform .05s ease,filter .1s ease;-webkit-user-select:none;user-select:none}.btn:active:not(:disabled){transform:translateY(2px);border-bottom-width:2px}.btn:disabled{cursor:default;background:var(--gray);border-color:var(--gray);border-bottom-color:var(--gray-d);color:var(--gray-d)}.btn-green{background:var(--green);border-color:var(--green);border-bottom-color:var(--green-d);color:#fff}.btn-blue{background:var(--blue);border-color:var(--blue);border-bottom-color:var(--blue-d);color:#fff}.btn-red{background:var(--red);border-color:var(--red);border-bottom-color:var(--red-d);color:#fff}.btn-ghost{background:var(--surface);border-color:var(--line);border-bottom-color:var(--line-2);color:var(--blue-d)}.btn-ghost:hover:not(:disabled){background:var(--cream-2)}.btn-sm{padding:8px 14px;font-size:12.5px;border-radius:12px}.linky{border:0;background:none;padding:0;font-weight:800;font-size:13px;color:var(--blue-d);cursor:pointer;display:inline-flex;align-items:center;gap:6px}.linky:hover{text-decoration:underline}.shell{display:grid;grid-template-columns:232px minmax(0,1fr) 320px;min-height:100vh}@media (max-width: 1100px){.shell{grid-template-columns:88px minmax(0,1fr) 300px}.nav-label,.brand-name{display:none}}@media (max-width: 860px){.shell{grid-template-columns:88px minmax(0,1fr)}.rail{display:none}}.sidebar{position:sticky;top:0;height:100vh;border-right:2px solid var(--line);background:var(--cream);padding:18px 12px;display:flex;flex-direction:column;gap:4px}.brand{display:flex;align-items:center;gap:10px;padding:6px 10px 18px}.brand-mark{width:36px;height:36px;border-radius:12px;background:var(--green);border-bottom:4px solid var(--green-d);display:grid;place-items:center;color:#fff;font-weight:900;font-size:18px}.brand-name{font-weight:900;font-size:20px;color:var(--green-d);letter-spacing:-.02em}.nav{display:flex;flex-direction:column;gap:4px}.nav-item{display:flex;align-items:center;gap:14px;padding:8px 10px;border-radius:14px;border:2px solid transparent;background:none;cursor:pointer;text-align:left;width:100%}.nav-item:hover{background:var(--cream-2)}.nav-item[aria-current=page]{background:var(--blue-l);border-color:#84d8ff}.tile{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:#fff;flex:none;border-bottom:3px solid rgba(0,0,0,.18)}.tile svg{width:22px;height:22px}.tile-green{background:var(--green)}.tile-blue{background:var(--blue)}.tile-orange{background:var(--orange)}.tile-purple{background:var(--purple)}.tile-red{background:var(--red)}.tile-gold{background:var(--gold)}.tile-teal{background:var(--teal)}.tile-gray{background:var(--gray-d)}.nav-label{font-weight:800;font-size:14px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink2)}.nav-item[aria-current=page] .nav-label{color:var(--blue-d)}.nav-item .sub{display:block;font-size:11.5px;font-weight:700;text-transform:none;letter-spacing:0;color:var(--muted)}.sidebar .spacer{flex:1}.main{padding:28px 32px 80px;min-width:0}.main-narrow{max-width:640px;margin:0 auto}.main-wide{max-width:960px;margin:0 auto}.rail{padding:28px 24px 40px 0;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;overflow:auto}.card{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);padding:18px 20px}.card h3{font-size:17px;margin-bottom:10px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.card-head h3{margin:0}.muted{color:var(--ink2)}.small{font-size:13px}.tiny{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:800;padding:3px 10px;border-radius:999px;background:var(--cream-2);border:2px solid var(--line);color:var(--ink2);text-transform:uppercase;letter-spacing:.04em}.pill.ok{background:var(--green-l);border-color:#b8f08a;color:var(--green-d)}.pill.warn{background:var(--orange-l);border-color:#ffd28a;color:var(--orange-d)}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.goal-ring{position:relative;width:120px;height:120px;flex:none}.goal-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.goal-ring .track{fill:none;stroke:var(--cream-2);stroke-width:12}.goal-ring .fill{fill:none;stroke:var(--orange);stroke-width:12;stroke-linecap:round;transition:stroke-dashoffset .4s ease}.goal-ring.done .fill{stroke:var(--green)}.goal-ring .center{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center}.goal-ring .center b{font-size:26px;line-height:1;font-weight:900}.goal-ring .center span{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.daily{display:flex;gap:16px;align-items:center}.daily-stats{display:grid;gap:6px;min-width:0}.streak{display:flex;align-items:center;gap:8px;font-weight:900;font-size:18px;color:var(--orange-d)}.streak svg{width:22px;height:22px;fill:var(--orange)}.streak.cold{color:var(--muted)}.streak.cold svg{fill:var(--gray-d)}.goal-picker{display:flex;gap:6px;margin-top:12px}.goal-picker button{flex:1;border-radius:10px;border:2px solid var(--line);border-bottom-width:3px;background:var(--surface);padding:6px 4px;font-size:11.5px;font-weight:800;color:var(--ink2);cursor:pointer;text-transform:uppercase;letter-spacing:.03em}.goal-picker button[aria-pressed=true]{background:var(--blue-l);border-color:#84d8ff;color:var(--blue-d)}.todo{list-style:none;margin:0;padding:0;display:grid;gap:8px}.todo li{display:flex;align-items:center;gap:10px;font-weight:700;font-size:14px}.todo .box{width:22px;height:22px;border-radius:7px;border:2px solid var(--line-2);display:grid;place-items:center;flex:none;color:#fff}.todo .box.done{background:var(--green);border-color:var(--green-d)}.todo .box svg{width:14px;height:14px}.todo li.done{color:var(--muted);text-decoration:line-through}.next-up{display:flex;gap:12px;align-items:center}.next-up .tile{width:46px;height:46px}.next-up b{display:block;font-size:14px}.path-head{margin-bottom:18px}.path-head h1{font-size:26px}.unit{margin-bottom:8px}.unit-banner{border-radius:var(--radius);padding:16px 20px;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:5px solid rgba(0,0,0,.2);position:sticky;top:12px;z-index:2}.unit-banner .tiny{color:#ffffffd9}.unit-banner h2{font-size:20px}.unit-banner .count{font-weight:800;font-size:13px;background:#ffffff38;padding:4px 10px;border-radius:999px;white-space:nowrap}.nodes{position:relative;padding:26px 0 30px;display:flex;flex-direction:column;align-items:center;gap:24px}.node-wrap{position:relative;width:100%;display:flex;justify-content:center}.node{position:relative;width:76px;height:76px;border-radius:50%;border:0;border-bottom:8px solid rgba(0,0,0,.22);display:grid;place-items:center;color:#fff;cursor:pointer;transition:transform .06s ease;background:var(--gray)}.node svg{width:34px;height:34px}.node:active:not(:disabled){transform:translateY(4px);border-bottom-width:4px}.node.locked{background:var(--gray);color:var(--gray-d);cursor:default;border-bottom-color:#cfcfcf}.node.passed{background:var(--gold);border-bottom-color:var(--gold-d)}.node.current{box-shadow:0 0 0 8px var(--cream),0 0 0 12px currentColor;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 0 8px var(--cream),0 0 0 12px currentColor}50%{box-shadow:0 0 0 8px var(--cream),0 0 0 16px currentColor}}.node .check{position:absolute;right:-4px;bottom:-6px;width:26px;height:26px;border-radius:50%;background:var(--surface);border:2px solid var(--gold-d);display:grid;place-items:center}.node .check svg{width:14px;height:14px;stroke:var(--green-d)}.start-bubble{position:absolute;top:-44px;left:50%;transform:translate(-50%);background:var(--surface);border:2px solid var(--line-2);border-radius:12px;padding:6px 14px;font-weight:900;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--green-d);white-space:nowrap;animation:bob 1.2s ease-in-out infinite}.start-bubble:after{content:"";position:absolute;left:50%;bottom:-8px;width:12px;height:12px;background:var(--surface);border-right:2px solid var(--line-2);border-bottom:2px solid var(--line-2);transform:translate(-50%) rotate(45deg)}@keyframes bob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,-4px)}}.node-label{position:absolute;top:50%;transform:translateY(-50%);width:170px;font-size:13px;font-weight:700;color:var(--ink2);line-height:1.3}.node-label.right{left:calc(50% + 62px)}.node-label.left{right:calc(50% + 62px);text-align:right}.node-label b{display:block;color:var(--ink)}.node-label.locked,.node-label.locked b{color:var(--muted)}.trophy{width:76px;height:76px;border-radius:50%;background:var(--gold-l);border:3px dashed var(--gold-d);display:grid;place-items:center;color:var(--gold-d)}.trophy svg{width:34px;height:34px}.trophy.won{background:var(--gold);border:0;border-bottom:8px solid var(--gold-d);color:#fff}.topbar{display:flex;align-items:center;gap:14px;margin-bottom:18px}.topbar .x{border:0;background:none;color:var(--gray-d);cursor:pointer;padding:4px;display:grid}.topbar .x svg{width:26px;height:26px}.progressbar{flex:1;height:16px;border-radius:999px;background:var(--gray);overflow:hidden}.progressbar i{display:block;height:100%;border-radius:999px;background:var(--green);transition:width .25s ease;position:relative}.progressbar i:after{content:"";position:absolute;left:8px;right:8px;top:4px;height:4px;border-radius:999px;background:#ffffff59}.lesson-title{display:flex;align-items:center;gap:14px;margin-bottom:16px}.lesson-title .tile{width:54px;height:54px;border-radius:16px}.lesson-title h1{font-size:24px;line-height:1.15}.lesson-title .row{margin-top:4px}.cando{font-size:15px;color:var(--ink2);font-style:italic}.section{margin-bottom:18px}.section-title{display:flex;align-items:center;gap:10px;margin-bottom:10px}.section-title .tile{width:30px;height:30px;border-radius:9px;border-bottom-width:2px}.section-title .tile svg{width:16px;height:16px}.section-title h3{font-size:15px;margin:0}.idea{font-size:17px;font-weight:700;line-height:1.5;background:var(--green-l);border:2px solid #b8f08a;border-radius:var(--radius);padding:14px 18px}.prose p{margin-bottom:10px;line-height:1.6;max-width:68ch}.words{display:grid;gap:8px;margin:0}.words div{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:baseline;background:var(--purple-l);border:2px solid #e6c8ff;border-radius:var(--radius-s);padding:8px 12px}.words dt{font-weight:900;color:var(--purple-d)}.words dd{margin:0;color:var(--ink2);font-size:14px}@media (max-width: 600px){.words div{grid-template-columns:1fr;gap:2px}}.sample{margin:0 0 12px;border:2px solid var(--line);border-radius:var(--radius);padding:12px 16px;background:var(--cream-2)}.sample blockquote{margin:0 0 8px;font-size:15px;line-height:1.6;white-space:pre-line}.sample figcaption{font-size:13.5px;color:var(--ink2);border-top:2px dashed var(--line-2);padding-top:8px}.sample figcaption b{color:var(--blue-d)}.offer{display:flex;gap:16px;align-items:center;background:var(--blue-l);border:2px solid #84d8ff;border-radius:var(--radius);padding:16px 18px;margin-bottom:16px}.offer .tile{width:52px;height:52px}.offer p{flex:1;font-weight:700;font-size:14px}.player video{display:block;width:100%;border-radius:var(--radius);background:#000;margin-bottom:10px}.callout{border-radius:var(--radius);padding:14px 16px;margin-bottom:16px;border:2px solid;display:flex;gap:12px;align-items:flex-start}.callout .tile{width:34px;height:34px;border-radius:10px;border-bottom-width:2px}.callout .tile svg{width:18px;height:18px}.callout h4{font-size:15px;margin-bottom:2px}.callout p{font-size:14px;color:var(--ink2)}.callout.ok{background:var(--green-l);border-color:#b8f08a}.callout.no{background:var(--red-l);border-color:#ffb3b3}.callout.back{background:var(--orange-l);border-color:#ffd28a}.actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:6px}.passage{margin:0 0 14px;padding:12px 16px;border-left:5px solid var(--blue);background:var(--blue-l);border-radius:0 12px 12px 0;font-size:15px;line-height:1.6;white-space:pre-line}.stem{font-size:20px;font-weight:800;line-height:1.35;margin-bottom:18px}.opts{display:grid;gap:10px;margin-bottom:18px}.opt{display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:center;text-align:left;padding:13px 14px;border-radius:14px;border:2px solid var(--line);border-bottom-width:4px;background:var(--surface);cursor:pointer;font-size:15.5px;font-weight:600}.opt:hover{background:var(--cream-2)}.opt .k{width:30px;height:30px;border-radius:8px;border:2px solid var(--line-2);display:grid;place-items:center;font-weight:900;font-size:13px;color:var(--muted)}.opt.picked{background:var(--blue-l);border-color:var(--blue);color:var(--blue-d)}.opt.picked .k{border-color:var(--blue);background:var(--blue);color:#fff}.qfoot{border-top:2px solid var(--line);padding-top:16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.qfoot .spacer{flex:1}.score{font-size:40px;font-weight:900;line-height:1;margin-bottom:14px}.score small{font-size:18px;color:var(--muted);font-weight:800}.missed{list-style:none;padding:0;margin:0 0 16px;display:grid;gap:10px}.missed li{border:2px solid var(--line);border-radius:var(--radius-s);padding:12px 14px;background:var(--cream-2)}.missed .q{font-weight:800;margin-bottom:4px}.missed .why{color:var(--red-d);font-weight:700;font-size:14px;margin-top:4px}.gate{min-height:100vh;display:grid;place-items:center;padding:24px}.gate .card{width:min(520px,100%);padding:28px 30px}.gate .brand{padding:0 0 12px}.field{display:grid;gap:6px;margin:16px 0 12px;font-size:13px;font-weight:800;color:var(--ink2);text-transform:uppercase;letter-spacing:.04em}.field input,.search{font:inherit;font-size:16px;font-weight:600;padding:11px 14px;border-radius:12px;border:2px solid var(--line);background:var(--cream-2);color:var(--ink)}.field input:focus,.search:focus{outline:none;border-color:var(--blue);background:var(--surface)}.returning{margin-top:16px}.returning summary{cursor:pointer;font-weight:700}.grades{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.grade-card{display:flex;gap:14px;align-items:flex-start;text-align:left;background:var(--surface);border:2px solid var(--line);border-bottom-width:4px;border-radius:var(--radius);padding:16px;cursor:pointer;transition:transform .06s ease}.grade-card:hover{transform:translateY(-2px)}.grade-card:active{transform:translateY(2px);border-bottom-width:2px}.grade-card.cur{border-color:var(--blue);background:var(--blue-l)}.grade-card .tile{width:52px;height:52px;border-radius:14px;font-weight:900;font-size:18px}.grade-card h3{font-size:17px;margin-bottom:4px}.grade-card p{font-size:13px;color:var(--ink2);line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.bar{height:10px;border-radius:999px;background:var(--gray);overflow:hidden;margin-top:8px}.bar i{display:block;height:100%;border-radius:999px;background:var(--green)}.page-head{display:flex;align-items:center;gap:14px;margin-bottom:20px}.page-head .tile{width:52px;height:52px;border-radius:16px}.page-head h1{font-size:26px}.page-head p{color:var(--ink2);font-size:14px}.dict-controls{margin-bottom:16px}.dict-controls .search{flex:1 1 240px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{font-size:11.5px;font-weight:800;padding:4px 10px;border-radius:999px;background:var(--surface);border:2px solid var(--line);color:var(--ink2);cursor:pointer;text-transform:uppercase;letter-spacing:.03em}.chip.on{background:var(--purple);border-color:var(--purple-d);color:#fff}.dict{margin:0;display:grid;gap:10px}.entry{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius-s);padding:12px 16px}.entry dt{font-weight:900;font-size:16px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;color:var(--purple-d)}.entry dt .alt{font-weight:600;color:var(--muted)}.entry dd{margin:4px 0 0;color:var(--ink2);max-width:80ch}.entry dd p{margin-top:4px}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.stack{display:grid;gap:16px;align-content:start}.chart{display:grid;gap:7px}.crow{display:grid;grid-template-columns:200px 1fr 54px;gap:10px;align-items:center;font-size:13px;font-weight:600}.crow .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ctrack{height:12px;background:var(--gray);border-radius:999px;overflow:hidden}.ctrack i{display:block;height:100%;border-radius:999px}.num{font-variant-numeric:tabular-nums;text-align:right}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:7px 9px;border-bottom:2px solid var(--line);vertical-align:top}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}td.ok{color:var(--green-d);font-weight:800}td.bad{color:var(--red-d);font-weight:800}code{font-family:ui-monospace,monospace;font-size:12px;background:var(--cream-2);padding:1px 6px;border-radius:6px}.glossary-pop{position:fixed;z-index:40;max-width:360px;background:var(--surface);border:2px solid var(--purple);border-radius:14px;padding:10px 14px;box-shadow:0 8px 28px #3c280029}.glossary-pop b{font-size:15px;font-weight:900;color:var(--purple-d)}.glossary-pop p{margin:4px 0 0;font-size:14px;color:var(--ink2)}.icon{width:18px;height:18px;flex:none}.phases{margin-bottom:18px}.phase-pills{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.phase{display:inline-flex;align-items:center;gap:8px;padding:4px 12px 4px 4px;border-radius:999px;border:2px solid var(--line);border-bottom-width:3px;background:var(--surface);cursor:pointer;font-weight:800;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink2)}.phase .tile{width:28px;height:28px;border-radius:999px;border-bottom-width:2px}.phase .tile svg{width:15px;height:15px}.phase:hover{background:var(--cream-2)}.phase.on{background:var(--blue-l);border-color:#84d8ff;color:var(--blue-d)}.progressbar.slim{height:10px}.progressbar.slim i:after{top:2px;height:3px}.screen{min-height:300px;padding:28px 32px;display:flex;flex-direction:column;justify-content:center}.screen .tiny{margin-bottom:12px}.screen-title{font-size:28px;margin-bottom:14px}.idea.big{font-size:21px;line-height:1.5}.word-term{font-size:40px;color:var(--purple-d);margin-bottom:10px;text-transform:lowercase}.word-say{font-size:21px;line-height:1.5;max-width:44ch}.word-example{margin-top:14px;padding:10px 14px;background:var(--purple-l);border:2px solid #e6c8ff;border-radius:var(--radius-s);font-size:15px;max-width:60ch}.how-text{font-size:20px;line-height:1.6;max-width:52ch}.sample-big{margin:0 0 16px;padding:18px 22px;border-left:6px solid var(--orange);background:var(--orange-l);border-radius:0 var(--radius) var(--radius) 0;font-size:18px;line-height:1.6;white-space:pre-line;max-width:60ch}.notice{background:var(--blue-l);border:2px solid #84d8ff;border-radius:var(--radius);padding:14px 18px;max-width:60ch}.notice b{color:var(--blue-d);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.notice p{margin-top:4px;font-size:16px;line-height:1.55}.screen-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}
