
:root{--bg:#0A0A0A;--accent:#38BDF8;--text:#F4F4F5;--mute:#71717A;--line:rgba(255,255,255,.10);}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:'Manrope',system-ui,sans-serif;line-height:1.65;font-size:17px}
a{color:var(--accent)}
.wrap{display:grid;grid-template-columns:280px 1fr;min-height:100vh}
aside{border-right:1px solid var(--line);padding:28px 22px;position:sticky;top:0;height:100vh;overflow:auto}
.logo{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:20px;display:flex;align-items:center;gap:10px;margin-bottom:6px}
.logo i{width:12px;height:12px;border-radius:50%;background:var(--accent);display:inline-block}
.course{color:var(--mute);font-size:13px;margin-bottom:24px}
nav a{display:block;padding:11px 14px;border-radius:12px;color:var(--text);text-decoration:none;border:1px solid transparent;margin-bottom:6px}
nav a small{display:block;color:var(--mute);font-size:12px}
nav a:hover{border-color:var(--line)}
nav a.on{background:rgba(56,189,248,.10);border-color:rgba(56,189,248,.35)}
.bar{height:6px;background:var(--line);border-radius:6px;margin:22px 0 6px;overflow:hidden}
.bar b{display:block;height:100%;width:0;background:var(--accent);transition:width .3s}
.pct{font-size:12px;color:var(--mute)}
main{padding:56px clamp(20px,5vw,72px) 80px;max-width:920px}
.eyebrow{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--accent);letter-spacing:.08em;text-transform:uppercase}
h1{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:clamp(36px,6vw,60px);line-height:1.05;margin:12px 0 16px}
h1 em,h2 em{font-family:'Fraunces',serif;font-style:italic;font-weight:500;color:var(--accent)}
.lead{font-size:20px;color:#d4d4d8;margin:0 0 36px}
h2{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:24px;margin:0 0 14px}
.card{background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02));border:1px solid var(--line);border-radius:16px;padding:26px 28px;margin-bottom:20px}
.card p{margin:0 0 12px}
.card ul{margin:8px 0 8px 20px;padding:0}
.card li{margin-bottom:8px}
.note{color:#a1a1aa;font-size:15px;border-left:3px solid var(--accent);padding-left:14px}
code{font-family:'IBM Plex Mono',monospace;background:rgba(255,255,255,.08);padding:2px 7px;border-radius:6px;font-size:.9em}
table{width:100%;border-collapse:collapse;font-size:15px;margin-bottom:12px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--mute);font-weight:600}
.pick{display:flex;flex-direction:column;gap:4px;background:rgba(56,189,248,.08);border:1px solid rgba(56,189,248,.35);border-radius:12px;padding:14px 16px;margin:8px 0 14px}
.pick strong{color:var(--accent);font-size:18px}
.prompt{background:#111;border:1px solid var(--line);border-radius:12px;margin:12px 0;overflow:hidden}
.prompt-h{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;border-bottom:1px solid var(--line);font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--mute)}
.copy{background:var(--accent);color:#000;border:0;border-radius:8px;padding:6px 12px;font-weight:700;cursor:pointer;font-family:inherit}
.prompt pre{margin:0;padding:14px;white-space:pre-wrap;font-family:'IBM Plex Mono',monospace;font-size:14px;color:#e4e4e7}
.check{list-style:none;margin:0!important;padding:0!important}
.check li{margin-bottom:10px}
.check label{display:flex;gap:12px;cursor:pointer;align-items:flex-start}
.check input{width:20px;height:20px;accent-color:var(--accent);margin-top:3px;flex:none}
blockquote.rules{margin:12px 0 0;padding:20px 24px;background:#111;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:12px}
blockquote.rules p{margin:0 0 12px}
blockquote.rules ol{margin:0 0 12px 22px;padding:0}
blockquote.rules li{margin-bottom:10px}
.pager{display:flex;justify-content:space-between;gap:12px;margin-top:32px}
.pager a{flex:1;border:1px solid var(--line);border-radius:14px;padding:16px 18px;text-decoration:none;color:var(--text)}
.pager a small{display:block;color:var(--mute);font-size:12px}
.pager a:hover{border-color:var(--accent)}
.pager .next{text-align:right;background:var(--accent);color:#000;border-color:var(--accent);font-weight:700}
.pager .next small{color:#000;opacity:.7}
.done{border-color:rgba(56,189,248,.5)}
footer{color:var(--mute);font-size:13px;margin-top:40px}
.menu{display:none}
@media(max-width:860px){
 .wrap{display:block}
 aside{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line);padding:18px}
 nav{display:none}nav.open{display:block}
 .menu{display:inline-block;background:transparent;color:var(--text);border:1px solid var(--line);border-radius:10px;padding:8px 14px;font-family:inherit;cursor:pointer;margin-top:8px}
 main{padding-top:32px}
 table{display:block;overflow-x:auto}
}

.locked{display:block;padding:11px 14px;border-radius:12px;color:var(--mute);border:1px dashed var(--line);margin-bottom:6px;cursor:not-allowed}
.locked small{display:block;font-size:12px}
.locked em{font-style:normal;font-size:11px;font-family:'IBM Plex Mono',monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.pager .locked{flex:1;border-radius:14px;padding:16px 18px;margin:0;text-align:right}
.acct{margin:18px 0 0;padding:12px 14px;border:1px solid var(--line);border-radius:12px;font-size:13px;color:var(--mute)}
.acct b{color:var(--text);display:block;font-size:14px;word-break:break-word}
.acct a{margin-right:12px}
.auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.auth .card{width:100%;max-width:440px}
label.f{display:block;font-weight:600;font-size:14px;margin:14px 0 6px}
input.t,select.t{width:100%;background:#111;border:1px solid var(--line);color:var(--text);border-radius:10px;padding:12px 14px;font:inherit}
input.t:focus{outline:2px solid var(--accent);outline-offset:1px}
.btn{display:inline-block;background:var(--accent);color:#000;border:0;border-radius:10px;padding:11px 18px;font:inherit;font-weight:700;cursor:pointer;text-decoration:none}
.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--line)}
.btn.danger{background:#ef4444;color:#fff}
.btn.sm{padding:7px 12px;font-size:14px}
.err{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.5);border-radius:10px;padding:10px 14px;margin:12px 0;color:#fecaca}
.ok{background:rgba(56,189,248,.10);border:1px solid rgba(56,189,248,.45);border-radius:10px;padding:10px 14px;margin:12px 0}
.adm{max-width:1100px;margin:0 auto;padding:40px 20px 80px}
.adm .row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.adm .top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:24px}
.stu{border-top:1px solid var(--line);padding:16px 0}
.stu h3{margin:0 0 2px;font-size:17px}
.stu .meta{color:var(--mute);font-size:13px;margin-bottom:10px}
.keys{display:flex;flex-wrap:wrap;gap:8px 18px;margin:8px 0 12px}
.keys label{display:flex;gap:8px;align-items:center;cursor:pointer;font-size:15px}
.keys input{accent-color:var(--accent);width:18px;height:18px}
.tag{font-family:'IBM Plex Mono',monospace;font-size:11px;border:1px solid var(--line);border-radius:6px;padding:2px 8px;color:var(--mute);margin-left:6px}
.secret{font-family:'IBM Plex Mono',monospace;background:#111;border:1px solid var(--accent);border-radius:8px;padding:6px 10px;display:inline-block;user-select:all}
.bulk{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.bulk .b{border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.bulk .b div{font-size:14px;margin-bottom:8px}
.bulk form{display:inline}
