:root{--bg:#0d1117;--panel:#161b22;--panel2:#1c2129;--line:#2d333b;--text:#e6edf3;--dim:#9aa4af;--brand:#7ee2b8;--brand2:#4cc38a;--warn:#f0b429;--err:#ff7b72;--ok:#56d364;--exec:#79c0ff;--mentor:#d2a8ff;--radius:10px}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,sans-serif;font-size:15px}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:8px;padding:8px 14px}button:hover{border-color:var(--brand2)}button.primary{background:var(--brand2);border-color:var(--brand2);color:#04150d;font-weight:600}button:disabled{opacity:.4;cursor:not-allowed}button.ghost{background:0 0}.topbar{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:14px;padding:10px 16px;display:flex}.logo{letter-spacing:.5px;font-weight:700}.logo em{color:var(--brand);font-style:normal}.tag{color:var(--dim);border:1px solid var(--line);border-radius:99px;padding:2px 9px;font-size:.68rem}.chip{border:1px solid var(--line);color:var(--dim);border-radius:999px;padding:3px 12px;font-size:.8rem}.chip b{color:var(--brand)}.topbar .right{align-items:center;gap:14px;margin-left:auto;display:flex}.meter{flex-direction:column;gap:3px;min-width:150px;display:flex}.meter label{color:var(--dim);text-transform:uppercase;letter-spacing:.6px;font-size:.68rem}.bar{background:var(--panel2);border-radius:99px;height:7px;overflow:hidden}.bar i{background:var(--brand2);height:100%;transition:width .8s;display:block}.bar.tokens i{background:var(--warn)}.timer{font-variant-numeric:tabular-nums;color:var(--dim)}.home{max-width:1060px;margin:0 auto;padding:34px 20px 60px}.home h1{margin:18px 0 10px;font-size:1.9rem;line-height:1.25}.home h1 b{color:var(--brand)}.home .sub{color:var(--dim);max-width:720px;line-height:1.6}.evidence{flex-wrap:wrap;gap:10px;margin:18px 0 6px;display:flex}.evidence span{color:var(--dim);border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:.78rem}.evidence b{color:var(--text)}.home h2{color:var(--brand);margin:30px 0 12px;font-size:1.05rem}.grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.card{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);flex-direction:column;gap:6px;min-height:120px;padding:14px;display:flex}.card .t{font-weight:600}.card .c{color:var(--dim);flex:1;font-size:.82rem;line-height:1.45}.card .foot{color:var(--dim);justify-content:space-between;align-items:center;font-size:.72rem;display:flex}.card.playable{border-color:#2b5a41}.card.playable:hover{border-color:var(--brand2);background:#16211c}.card.locked{opacity:.55}.card .done-badge{color:var(--ok)}.pill{border:1px solid var(--line);border-radius:99px;padding:2px 8px;font-size:.68rem}.calib{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);color:var(--dim);margin-top:10px;padding:16px;font-size:.9rem;line-height:1.6}.calib b{color:var(--warn)}.mission-shell{flex-direction:column;height:100dvh;display:flex;overflow:hidden}main.mission{flex:1;grid-template-columns:290px 1fr 340px;gap:10px;min-height:0;padding:10px;display:grid}.col{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;min-height:0;display:flex;overflow:hidden}.col h2{text-transform:uppercase;letter-spacing:1px;color:var(--dim);border-bottom:1px solid var(--line);padding:10px 14px;font-size:.75rem}.scroll{flex:1;padding:14px;overflow-y:auto}.mtitle{margin-bottom:2px;font-size:1.05rem;font-weight:700}.mtag{color:var(--brand);margin-bottom:10px;font-size:.75rem}.brief{color:var(--dim);margin-bottom:14px;font-size:.88rem;line-height:1.5}.brief q{color:var(--text);font-style:italic}.objectives li{border-bottom:1px dashed var(--line);color:var(--dim);padding:6px 0;font-size:.85rem;list-style:none}.objectives li:before{content:"○ ";color:var(--dim)}.objectives li.done{color:var(--text)}.objectives li.done:before{content:"✔ ";color:var(--ok)}.predictbox{border:1px solid var(--line);color:var(--dim);border-radius:8px;margin-top:14px;padding:10px;font-size:.8rem}.predictbox b{color:var(--warn)}.tabs{border-bottom:1px solid var(--line);display:flex}.tabs button{color:var(--dim);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:10px 16px}.tabs button.active{color:var(--text);border-bottom-color:var(--brand)}.view{flex-direction:column;flex:1;min-height:0;display:none}.view.active{display:flex}textarea.spec{background:var(--bg);color:var(--text);resize:none;border:none;outline:none;flex:1;padding:16px;font:13px/1.6 Consolas,monospace}textarea.spec:disabled{opacity:.55}pre.code{color:#c9d1d9;white-space:pre-wrap;flex:1;padding:16px;font:12.5px/1.55 Consolas,monospace;overflow:auto}pre.code .add{color:var(--ok)}pre.code .kw{color:var(--exec)}.previewwrap{background:#fff;flex:1;overflow:auto}.placeholder{color:#666;padding:40px;font-family:sans-serif}.tests{margin:0}.tests li{border:1px solid var(--line);color:var(--dim);border-radius:8px;align-items:center;gap:8px;margin-bottom:6px;padding:8px 10px;font-size:.84rem;list-style:none;display:flex}.tests li .st{text-align:center;width:18px}.tests li.pass{color:var(--text);border-color:#1f4d2e}.tests li.pass .st{color:var(--ok)}.tests li.fail{border-color:#5c2320}.tests li.fail .st{color:var(--err)}.score{border-top:1px solid var(--line);padding:10px 14px;font-size:1rem}.score b.bad{color:var(--err)}.score b.good{color:var(--ok)}.chattabs{border-bottom:1px solid var(--line);display:flex}.chattabs button{color:var(--dim);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;flex:1;padding:10px}.chattabs button.active.exec{color:var(--exec);border-bottom-color:var(--exec)}.chattabs button.active.mentor{color:var(--mentor);border-bottom-color:var(--mentor)}.chat{flex-direction:column;flex:1;min-height:0;display:none}.chat.active{display:flex}.msgs{flex-direction:column;flex:1;gap:10px;padding:12px;display:flex;overflow-y:auto}.msg{white-space:pre-wrap;border-radius:10px;max-width:92%;padding:9px 12px;font-size:.84rem;line-height:1.5}.msg.user{background:#23407a33;border:1px solid #2f4f8a;align-self:flex-end}.msg.exec{background:#111a26;border:1px solid #1e3a5c;align-self:flex-start}.msg.exec:before{content:"⚙ Executor";color:var(--exec);margin-bottom:4px;font-size:.68rem;display:block}.msg.mentor{background:#1d1526;border:1px solid #3c2a55;align-self:flex-start}.msg.mentor:before{content:"◈ Mentor";color:var(--mentor);margin-bottom:4px;font-size:.68rem;display:block}.msg.sys{color:var(--dim);background:0 0;align-self:center;font-size:.75rem}.caret:after{content:"▋";color:var(--brand);animation:1s infinite blink}@keyframes blink{50%{opacity:0}}.chatfoot{border-top:1px solid var(--line);gap:8px;padding:10px;display:flex}.chatfoot button{flex:1;font-size:.8rem}.chatfoot input{background:var(--bg);border:1px solid var(--line);color:var(--text);font:inherit;border-radius:8px;flex:2;padding:8px 10px;font-size:.84rem}.chatfoot input:focus{border-color:var(--mentor);outline:none}footer.actionbar{border-top:1px solid var(--line);background:var(--panel);align-items:center;gap:14px;padding:10px 16px;display:flex}footer.actionbar .hint{color:var(--dim);flex:1;font-size:.85rem}.sandwrap{flex:1;grid-template-columns:1fr 1fr;min-height:0;display:grid}.sandleft,.sandright{flex-direction:column;min-width:0;min-height:0;display:flex}.sandleft{border-right:1px solid var(--line)}.sandnote{color:var(--dim);border-bottom:1px dashed var(--line);padding:8px 12px;font-size:.74rem;line-height:1.5}.sandrun{border-top:1px solid var(--line);align-items:center;gap:10px;padding:8px 12px;display:flex}.sandrun button{white-space:nowrap;font-size:.82rem}.sandmode{color:var(--dim);font-size:.7rem;line-height:1.4}.sandconsole{color:#c9d1d9;white-space:pre-wrap;background:#05080d;flex:1;margin:0;padding:12px 14px;font:12.5px/1.55 Consolas,monospace;overflow:auto}.sandconsole .err{color:var(--err)}.sandframebox{background:#2a2f36;flex-direction:column;flex:1;align-items:center;gap:4px;min-height:0;padding:8px;display:flex;overflow:auto}.sandframehead{color:var(--dim);font-size:.68rem}.sandframebox iframe{border:1px solid var(--line);background:#fff;border-radius:6px;flex:1;max-width:100%;min-height:240px}.sandchecks{border-top:1px solid var(--line);flex-direction:column;gap:4px;max-height:38%;margin:0;padding:8px 12px;list-style:none;display:flex;overflow-y:auto}.sandchecks li{color:var(--dim);font-size:.76rem}.sandchecks li.pass{color:var(--text)}.sandchecks li.pass .st{color:var(--ok)}.sandchecks li.fail .st{color:var(--err)}.sandchecks .st{text-align:center;width:16px;display:inline-block}@media (max-width:1100px){.sandwrap{grid-template-columns:1fr}.sandleft{border-right:none;border-bottom:1px solid var(--line)}.sandwrap textarea.spec{min-height:180px}}.quizbox{flex-direction:column;gap:10px;max-width:640px;display:flex}.quizq{margin-bottom:4px;font-size:1rem;font-weight:600;line-height:1.5}.quizbox .opt{text-align:left;flex-direction:column;gap:6px;padding:12px 14px;line-height:1.5;display:flex}.quizbox .opt.right{border-color:var(--ok);background:#10241a}.quizbox .opt.wrong{border-color:var(--err);background:#2a1513}.quizbox .why{color:var(--dim);border-top:1px dashed var(--line);padding-top:6px;font-size:.78rem}.overlay{z-index:9;background:#000a;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);border-radius:14px;width:min(560px,92vw);max-height:90dvh;padding:26px;overflow-y:auto}.modal h3{margin-bottom:4px}.modal .sub{color:var(--brand);margin-bottom:14px;font-size:.8rem}.modal p{color:var(--dim);margin-bottom:12px;font-size:.9rem;line-height:1.6}.modal blockquote{border-left:3px solid var(--brand2);background:var(--panel2);border-radius:0 8px 8px 0;margin-bottom:14px;padding:10px 14px;font-style:italic;line-height:1.6}.opts{gap:10px;margin:12px 0 4px;display:flex}.opts button{flex:1;padding:12px}.opts button.sel{border-color:var(--brand);color:var(--brand)}.statgrid{grid-template-columns:1fr 1fr;gap:10px;margin:14px 0;display:grid}.stat{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:10px 12px}.stat label{color:var(--dim);text-transform:uppercase;letter-spacing:.5px;font-size:.68rem;display:block}.stat b{font-size:1.15rem}.lesson{background:#2a230f;border:1px solid #3d3320;border-radius:8px;margin-top:6px;padding:12px;font-size:.85rem;line-height:1.55}.lesson b{color:var(--warn)}.wide{width:100%}.site1{color:#eee;background:#111;min-height:100%;font-family:Arial}.site1 .hero{text-align:center;background:linear-gradient(135deg,#0a0a2e,#20124d);padding:60px 30px}.site1 h1{letter-spacing:4px;color:#8be9fd;font-size:2rem}.site1 p{color:#888;max-width:520px;margin:14px auto;font-size:.9rem;line-height:1.6}.site1 .blk{border-top:1px solid #222;padding:26px 30px}.site1 .blk b{color:#8be9fd}.site2{color:#4a3728;background:#fff7f0;min-height:100%;font-family:Georgia,serif}.site2 .hero{text-align:center;background:#ffe3ec;border-bottom:4px solid #f7c8d8;padding:34px 26px}.site2 h1{color:#b3446c;font-family:Segoe UI,sans-serif;font-size:1.7rem}.site2 .hero p{color:#8a6d5c;margin-top:6px;font-size:.9rem}.site2 section{padding:22px 26px}.site2 section.center{text-align:center}.site2 h2{color:#b3446c;margin-bottom:10px;font-family:Segoe UI,sans-serif;font-size:1.05rem}.site2 table{border-collapse:collapse;width:100%;font-size:.85rem}.site2 td{border-bottom:1px solid #f0ddd0;padding:7px 4px}.site2 td:last-child{text-align:right;color:#7a4b31;font-weight:700}.site2 .zap{color:#fff;background:#25d366;border-radius:99px;padding:10px 22px;font-family:Segoe UI,sans-serif;font-size:.9rem;font-weight:700;display:inline-block}.site2 .note{color:#8a6d5c;margin-top:8px;font-size:.78rem}@media (max-width:1100px){main.mission{grid-template-columns:1fr;overflow-y:auto}.col{min-height:340px}.mission-shell{height:auto;overflow:auto}}.navchip{color:var(--text)}.navchip:hover{border-color:var(--brand2)}.calchart{width:100%;max-width:780px;margin-top:6px}.calchart .lab{fill:var(--text);font-size:13px;font-weight:600}.calchart .val{fill:var(--dim);font-size:11px}.calchart .pred{fill:var(--line)}.calchart .real{fill:var(--brand2)}.calchart .real.late{fill:var(--err)}.stat b.good{color:var(--ok)}.stat b.bad{color:var(--warn)}.quizbox .verdict{letter-spacing:.4px;font-size:.75rem;font-weight:700}.quizbox .opt.right .verdict{color:var(--ok)}.quizbox .opt.wrong .verdict{color:var(--err)}.quizbox .opt:disabled{opacity:.5}
