:root{--ink:#eaf2ff;--muted:#91a2bd;--navy:#07111f;--panel:#0d1a2c;--line:#20324b;--cyan:#39d5ff;--lime:#9df29f;--danger:#ff7b85;--shadow:0 20px 60px #0004}
*{box-sizing:border-box}
html{background:var(--navy);color:var(--ink);font-family:Manrope,system-ui,sans-serif;min-height:100%}
body{margin:0;min-height:100%;background:radial-gradient(900px 600px at 75% -20%,#123c6645,transparent 70%),var(--navy)}
button,a,input,textarea{font:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
.app-shell{min-height:100vh}
.startup,.fatal{min-height:100vh;display:grid;place-content:center;gap:14px;text-align:center;color:var(--muted)}
.mark{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,var(--cyan),#647dff);color:#04101e;font-size:30px;font-weight:800}
.startup .mark,.fatal .mark{margin:auto}
.fatal h1{color:var(--ink);margin:0}
.fatal button,.button{border:0;border-radius:10px;padding:12px 17px;font-weight:800}
.sidebar{position:fixed;z-index:2;width:252px;inset:0 auto 0 0;padding:28px 16px;background:#081523e8;border-right:1px solid #1b2c42;display:flex;flex-direction:column;backdrop-filter:blur(12px)}
.brand{display:flex;align-items:center;gap:11px;font-weight:800;font-size:21px;letter-spacing:-.8px;padding:0 10px}
.brand .mark{width:30px;height:30px;border-radius:9px;font-size:24px}
.sidebar nav{display:grid;gap:5px;margin:46px 0 0}
.sidebar nav a{padding:12px 13px;border-radius:9px;color:var(--muted);font-weight:700;font-size:14px}
.sidebar nav a i{display:inline-block;width:30px;color:var(--cyan);font-style:normal;font-family:'JetBrains Mono',monospace;font-size:18px}
.sidebar nav a:hover,.sidebar nav a.active{background:#18314b;color:var(--ink)}
.side-progress{margin:auto 10px 18px;padding:18px 0;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.side-progress b{float:right;color:var(--ink)}
.progress{height:5px;background:#26394f;border-radius:99px;overflow:hidden;margin-top:10px}
.progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--cyan),#7a86ff)}
.sidebar-footer{display:flex;align-items:center;gap:11px;color:var(--muted);font-size:12px;padding:0 10px}
.locale,.mobile-head button{margin-left:auto;background:transparent;border:1px solid #35516e;color:var(--ink);border-radius:7px;padding:5px 8px;font-weight:800;font-size:11px}
.main{margin-left:252px;min-height:100vh;padding:55px clamp(28px,5vw,86px) 80px;max-width:1640px}
.mobile-head{display:none}
.hero{min-height:370px;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:45px;border-bottom:1px solid var(--line);padding-bottom:60px}
.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:800;color:var(--cyan);margin:0 0 15px}
.hero h1,.page-heading h1,.world-hero h1{font-size:clamp(39px,5vw,65px);letter-spacing:-3px;line-height:1.03;margin:0 0 18px;max-width:700px}
.hero em{font-style:normal;color:var(--cyan)}
.lead,.page-heading>p,.world-hero p{color:var(--muted);line-height:1.75;font-size:15px;max-width:630px}
.button{display:inline-flex;align-items:center;gap:18px;margin-top:14px}
.button.primary{background:var(--cyan);color:#041322}
.button.primary:hover{filter:brightness(1.08);transform:translateY(-1px)}
.button.ghost{background:#19324b;color:var(--ink)}
.hero-art{height:300px;position:relative;display:grid;place-items:center}
.orb{width:230px;height:230px;border:1px solid #4dd7ff60;border-radius:50%;background:radial-gradient(circle at 30% 25%,#3ccefb60,#5870ed1b 50%,transparent 70%);box-shadow:inset 0 0 50px #37d8ff20,0 0 60px #1b6fdf2e}
.hero-art code{position:absolute;font:500 17px/1.7 'JetBrains Mono',monospace;color:#d6f8ff;text-shadow:0 0 18px #42cfff}
.float-tag{position:absolute;padding:7px 10px;border:1px solid #4a6280;background:#0c1e32;border-radius:7px;color:#bceeff;font:11px 'JetBrains Mono',monospace;box-shadow:var(--shadow)}
.float-tag.one{left:4%;top:22%}
.float-tag.two{right:4%;top:33%;color:#ffdea3}
.float-tag.three{right:14%;bottom:16%;color:var(--lime)}
.stat-row{display:flex;gap:50px;padding:30px 0 55px}
.stat-row div{display:grid;gap:4px;border-left:2px solid #294560;padding-left:16px}
.stat-row b{font-size:25px;letter-spacing:-1px}
.stat-row span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:23px}
.section-head h2{font-size:28px;margin:0;letter-spacing:-1px}
.section-head a{font-size:13px;color:var(--cyan);font-weight:700}
.world-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}
.world-card{position:relative;min-height:205px;overflow:hidden;background:linear-gradient(145deg,#0f2034,#0b1728);border:1px solid #20344c;border-radius:13px;padding:20px;transition:.2s}
.world-card:before{content:"";position:absolute;width:180px;height:180px;border-radius:50%;right:-80px;top:-90px;background:var(--world);opacity:.12;filter:blur(6px)}
.world-card:hover{transform:translateY(-4px);border-color:var(--world)}
.world-icon{font-size:25px;display:inline-block;min-width:39px;color:var(--world)}
.world-num{float:right;font:11px 'JetBrains Mono',monospace;color:var(--muted)}
.world-card h3{font-size:17px;margin:16px 0 7px;letter-spacing:-.5px}
.world-card p{font-size:11px;line-height:1.55;color:var(--muted);margin:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.world-card footer{position:absolute;left:20px;right:20px;bottom:17px;font-size:10px;color:var(--muted)}
.all-worlds{grid-template-columns:repeat(3,minmax(0,1fr))}
.page-heading{padding:16px 0 42px;border-bottom:1px solid var(--line);margin-bottom:32px}
.page-heading h1{font-size:46px}
.back{display:inline-block;color:var(--cyan);font-size:13px;font-weight:700;margin-bottom:25px}
.world-hero{display:flex;gap:28px;align-items:flex-start;padding:10px 0 42px;border-bottom:1px solid var(--line)}
.world-hero>.world-icon{font-size:54px;background:color-mix(in srgb,var(--world),transparent 85%);padding:15px;border-radius:16px}
.world-hero h1{font-size:45px;margin-bottom:10px}
.world-hero .wide{width:min(500px,80vw);margin-top:20px}
.world-hero small{font-size:11px;color:var(--muted)}
.lesson-list{margin-top:27px;max-width:850px}
.lesson-row{display:grid;grid-template-columns:42px 1fr auto 20px;align-items:center;gap:16px;padding:16px 13px;border-bottom:1px solid var(--line);transition:.15s}
.lesson-row:hover{background:#10243a;border-radius:10px;border-color:transparent}
.lesson-row>span{width:30px;height:30px;border-radius:50%;display:grid;place-content:center;background:#1a3048;color:#89a5c2;font:11px 'JetBrains Mono',monospace}
.lesson-row.done>span{background:#1b5a54;color:#a9ffd9}
.lesson-row h3{font-size:14px;margin:0 0 4px}
.lesson-row p{font-size:11px;color:var(--muted);margin:0;line-height:1.5}
.lesson-row>b{font:11px 'JetBrains Mono',monospace;color:#84eaff}
.lesson-row>i{font-style:normal;color:var(--muted)}
.lesson-row.boss{background:linear-gradient(90deg,#30243b,#101a2a);border-radius:10px;margin-top:9px}
.lesson-top{display:grid;grid-template-columns:auto auto minmax(100px,1fr) auto;align-items:center;gap:18px;max-width:1000px;margin:auto}
.lesson-top .back{margin:0}
.lesson-top>span{font:11px 'JetBrains Mono',monospace;color:var(--muted)}
.lesson-top .progress{margin:0}
.exit{background:transparent;border:0;color:#9db3ce;font-size:27px}
.lesson{max-width:800px;margin:78px auto}
.lesson-label{font-size:10px;letter-spacing:1.3px;color:var(--cyan);font-weight:800;margin-bottom:18px}
.lesson h1{font-size:clamp(27px,4vw,42px);line-height:1.18;letter-spacing:-1.6px;margin:0 0 25px}
.prose{font-size:15px;line-height:1.75;color:#c4d1e0}
.prose p{margin:0}
.prose code,.explanation code{font:12px 'JetBrains Mono',monospace;color:#b7efff;background:#13273d;padding:2px 4px;border-radius:4px}
.prose pre{background:#081321;border:1px solid #20334a;border-radius:10px;padding:17px;overflow:auto;line-height:1.5}
.prose pre code{background:none;padding:0}
.code-block,.fill-code{font:13px/1.65 'JetBrains Mono',monospace;background:#081321;border:1px solid #20334a;border-radius:11px;padding:20px;overflow:auto;color:#d9eafa;white-space:pre;margin:18px 0}
.code-block:before{content:attr(data-lang);float:right;color:#5f7894;font-size:10px}
.options{display:grid;gap:9px;margin:21px 0}
.options button,.pairs button{border:1px solid #28415d;background:#102136;border-radius:9px;color:#dcecff;text-align:left;padding:13px 14px;transition:.15s;font-size:13px}
.options button span{width:23px;height:23px;display:inline-grid;place-items:center;margin-right:10px;background:#203a55;border-radius:50%;color:#9fbbd8;font:11px 'JetBrains Mono',monospace}
.options button:hover,.options button.selected{border-color:var(--cyan);background:#14334c}
.options button.selected span{background:var(--cyan);color:#06111e}
.options.multi button.selected span{border-radius:5px}
.check:disabled{opacity:.4;cursor:not-allowed}
.explanation{position:relative;margin-top:18px;padding:16px 17px;border-left:3px solid var(--cyan);border-radius:0 9px 9px 0;background:#112b3e;color:#cce4f8;font-size:13px;line-height:1.65}
.explanation b{display:block;color:var(--lime);margin-bottom:5px}
.explanation.failure{border-color:var(--danger);background:#321e2a}
.explanation.failure b{color:#ffbac0}
.answer-input{display:block;width:100%;border:1px solid #34506e;background:#0b1a2c;color:var(--ink);border-radius:9px;padding:13px;margin:19px 0}
.flashcard{min-height:280px;cursor:pointer;position:relative;perspective:1000px}
.card-face{position:absolute;inset:0;padding:32px;border:1px solid #2e4a67;border-radius:15px;background:linear-gradient(135deg,#102d46,#101b32);backface-visibility:hidden;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;transition:transform .5s}
.card-face span{font-size:10px;font-weight:800;color:var(--cyan);letter-spacing:1.2px}
.card-face h1{margin:18px 0 0}
.card-face h2{font-size:19px;line-height:1.6}
.card-face i{position:absolute;bottom:20px;font-size:20px;color:var(--cyan);font-style:normal}
.card-face.back{transform:rotateY(180deg);background:linear-gradient(135deg,#17384b,#10283a)}
.flashcard.flipped .front{transform:rotateY(180deg)}
.flashcard.flipped .back{transform:rotateY(360deg)}
.card-actions{display:flex;gap:10px;justify-content:center}
.bug-code{background:#081321;border:1px solid #20334a;border-radius:11px;padding:8px;margin:20px 0}
.bug-code button{display:block;width:100%;border:0;background:transparent;color:#d9eafa;text-align:left;font:13px/1.7 'JetBrains Mono',monospace;padding:1px 8px;border-radius:4px}
.bug-code button span{display:inline-block;width:40px;color:#506985}
.bug-code button:hover{background:#1e3046}
.bug-code button.correct{background:#164c49}
.bug-code button.wrong{background:#582534}
.fill-code input{font:inherit;max-width:120px;background:#173651;border:0;border-bottom:2px solid var(--cyan);color:var(--ink);outline:0;text-align:center}
.order-lines{display:grid;gap:7px;margin:20px 0}
.order-lines button{border:1px solid #29425e;background:#102136;color:#dcecff;border-radius:8px;text-align:left;padding:10px;font:12px 'JetBrains Mono',monospace}
.order-lines button span{color:#7d9ab8;margin-right:12px}
.pairs{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0}
.pairs>div{display:grid;gap:9px}
.pairs button.selected{border-color:var(--cyan);background:#153751}
.pairs button.paired{opacity:.45}
.editor-wrap{background:#081321;border:1px solid #263d59;border-radius:11px;overflow:hidden;margin:18px 0}
.editor-head{height:37px;padding:0 15px;display:flex;justify-content:space-between;align-items:center;background:#102037;border-bottom:1px solid #263d59;color:#9bb2ca;font:11px 'JetBrains Mono',monospace}
.editor{display:block;width:100%;height:390px;resize:vertical;background:#081321;border:0;padding:18px;color:#dbefff;outline:none;font:13px/1.6 'JetBrains Mono',monospace;tab-size:2}
.code-actions{display:flex;gap:10px;align-items:center}
.code-actions .button{margin:0}
.hint-box{padding:5px 15px;margin-top:14px;background:#382f1a;border-left:3px solid #e6bd59;border-radius:0 8px 8px 0;font-size:13px;color:#f9e7b8}
.run-result{margin-top:16px}
.result{padding:14px;border-radius:9px;background:#112b3e;border-left:3px solid var(--cyan);font-size:13px}
.result.success{border-color:var(--lime);background:#123432}
.result.failure{border-color:var(--danger);background:#36202a}
.result pre{overflow:auto;white-space:pre-wrap;background:#081321;border-radius:6px;padding:10px;font:11px/1.5 'JetBrains Mono',monospace}
.result ul{padding-left:20px}
.sim{border:1px solid #284460;border-radius:13px;overflow:hidden;background:#0b192a;margin:20px 0}
.sim-top{padding:13px 16px;background:#10273d;border-bottom:1px solid #284460;font:12px 'JetBrains Mono',monospace;color:#b9def4}
.pulse{display:inline-block;width:8px;height:8px;background:var(--lime);border-radius:50%;margin-right:8px;box-shadow:0 0 12px var(--lime)}
.sim-body{min-height:180px;display:grid;place-items:center;padding:20px}
.partitions{display:flex;gap:12px}
.partitions i{font:12px 'JetBrains Mono',monospace;background:#1a4a60;padding:20px 13px;border-radius:6px;color:#b9f3ff;font-style:normal}
.consumers{display:flex;gap:34px;margin-top:20px}
.consumers b,.channel{font:11px 'JetBrains Mono',monospace;color:#c7e4ff}
.channel{border:2px solid #4e7da6;border-radius:99px;padding:25px}
.channel strong{margin:0 18px;color:var(--lime)}
.sim-controls{display:flex;gap:8px;padding:12px 16px;border-top:1px solid #284460}
.sim-controls button{border:1px solid #335b7b;background:#15334d;border-radius:6px;padding:7px 10px;color:#d5eafe;font-size:11px;font-weight:700}
.sim-controls button.ok{border-color:var(--lime);color:var(--lime)}
.muted{color:var(--muted);font-size:13px}
.tabs{display:flex;gap:8px;margin:0 0 17px}
.tabs button{border:1px solid #29435d;background:transparent;color:#91a8c0;border-radius:8px;padding:8px 16px;font-weight:700;font-size:12px}
.tabs button.active{background:#16425b;border-color:var(--cyan);color:#e8fbff}
.sandbox-editor .editor{height:390px}
.toast{position:fixed;bottom:25px;right:25px;transform:translateY(100px);opacity:0;transition:.3s;background:#164438;border:1px solid #4cae7e;color:#dbffeb;padding:12px 15px;border-radius:9px;box-shadow:var(--shadow);font-size:13px;z-index:10}
.toast.show{transform:translateY(0);opacity:1}
@media(max-width:850px){.sidebar{display:none}
.main{margin:0;padding:16px 19px 60px}
.mobile-head{display:flex;align-items:center;margin-bottom:45px}
.mobile-head .brand{padding:0}
.hero{grid-template-columns:1fr;padding-bottom:35px;gap:15px}
.hero-art{height:210px;order:-1}
.orb{width:175px;height:175px}
.hero-art code{font-size:13px}
.float-tag.one{left:7%}
.world-grid,.all-worlds{grid-template-columns:repeat(2,minmax(0,1fr))}
.lesson{margin:52px auto}
.lesson-top{gap:10px}
.lesson-top .back{max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.world-hero{gap:16px}
.world-hero>.world-icon{font-size:34px}
.world-hero h1{font-size:32px}
.page-heading h1{font-size:38px}
}
@media(max-width:500px){.main{padding-inline:15px}
.hero h1{font-size:39px}
.stat-row{gap:20px}
.stat-row b{font-size:19px}
.world-grid,.all-worlds{grid-template-columns:1fr}
.world-card{min-height:185px}
.pairs{grid-template-columns:1fr}
.lesson-row{grid-template-columns:34px 1fr auto}
.lesson-row>i{display:none}
.lesson-row p{display:none}
.lesson h1{font-size:29px}
.editor{height:320px}
.code-actions{flex-wrap:wrap}
.flashcard{min-height:330px}
.partitions{gap:6px}
.partitions i{padding:16px 8px}
.consumers{gap:10px}
.channel{padding:16px;font-size:9px}
.channel strong{margin:0 5px}
}

