:root{--bg: #0b0f1a;--bg-2: #111726;--card: #151c2c;--card-hi: #1b2438;--border: #253046;--text: #e6ebf5;--muted: #8a97b1;--accent: #6366f1;--accent-2: #22d3ee;--ring-track: #1e2740;--wu: #38bdf8;--e: #34d399;--m: #fbbf24;--h: #f87171;--shadow: 0 10px 30px rgba(0, 0, 0, .35)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:radial-gradient(1100px 600px at 80% -10%,rgba(99,102,241,.18),transparent 60%),radial-gradient(900px 500px at 0% 0%,rgba(34,211,238,.12),transparent 55%),var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;min-height:100vh}.app{max-width:1180px;margin:0 auto;padding:32px 20px 80px}.hero{display:flex;justify-content:space-between;align-items:center;gap:32px;background:linear-gradient(135deg,var(--card-hi),var(--card));border:1px solid var(--border);border-radius:20px;padding:32px 36px;box-shadow:var(--shadow);flex-wrap:wrap}.eyebrow{color:var(--accent-2);font-weight:600;letter-spacing:.5px;margin:0 0 6px;font-size:13px;text-transform:uppercase}.hero h1{margin:0;font-size:40px;font-weight:800;letter-spacing:-1px;background:linear-gradient(90deg,#fff,#b6c0ff);-webkit-background-clip:text;background-clip:text;color:transparent}.sub{color:var(--muted);margin:10px 0 20px;max-width:520px;line-height:1.5}.tier-stats{display:flex;gap:10px;flex-wrap:wrap}.tstat{display:flex;flex-direction:column;gap:2px;padding:8px 14px;border-radius:12px;background:var(--bg-2);border:1px solid var(--border);min-width:78px}.tstat-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.tstat-num{font-size:18px;font-weight:700}.tstat.wu{border-left:3px solid var(--wu)}.tstat.e{border-left:3px solid var(--e)}.tstat.m{border-left:3px solid var(--m)}.tstat.h{border-left:3px solid var(--h)}.hero-ring{display:flex;flex-direction:column;align-items:center;gap:10px}.ring{position:relative;display:grid;place-items:center}.ring-label{position:absolute;text-align:center;display:flex;flex-direction:column}.ring-pct{font-size:30px;font-weight:800}.ring-sub{font-size:13px;color:var(--muted)}.ring-caption{margin:0;font-size:13px;color:var(--muted)}.controls{position:sticky;top:12px;z-index:20;display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:22px 0;padding:14px 16px;background:#151c2cd1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow)}.search-wrap{position:relative;flex:1 1 240px}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);opacity:.6;font-size:13px}.search-wrap input{width:100%;padding:10px 12px 10px 34px;border-radius:10px;border:1px solid var(--border);background:var(--bg-2);color:var(--text);font-size:14px;outline:none}.search-wrap input:focus{border-color:var(--accent)}.seg{display:flex;background:var(--bg-2);border:1px solid var(--border);border-radius:10px;overflow:hidden}.seg button{background:transparent;border:none;color:var(--muted);padding:9px 14px;cursor:pointer;font-size:13px;font-weight:600}.seg button.active{background:var(--accent);color:#fff}.tier-filter{display:flex;gap:6px}.chip{border:1px solid var(--border);background:var(--bg-2);color:var(--muted);padding:8px 12px;border-radius:999px;cursor:pointer;font-size:12px;font-weight:600;transition:.15s}.chip.on.wu{background:var(--wu);color:#04263a;border-color:var(--wu)}.chip.on.e{background:var(--e);color:#04291c;border-color:var(--e)}.chip.on.m{background:var(--m);color:#3a2a00;border-color:var(--m)}.chip.on.h{background:var(--h);color:#3a0d0d;border-color:var(--h)}.spacer{flex:1 1 auto}.actions{display:flex;gap:6px;flex-wrap:wrap}.actions button,.tier-actions button{background:var(--bg-2);border:1px solid var(--border);color:var(--text);padding:9px 12px;border-radius:10px;cursor:pointer;font-size:13px;font-weight:600;transition:.15s}.actions button:hover,.tier-actions button:hover{border-color:var(--accent);background:var(--card-hi)}.actions .danger:hover{border-color:var(--h);color:var(--h)}.phase{margin:34px 0}.phase-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.phase-head h2{font-size:18px;margin:0;letter-spacing:-.3px}.phase-prog{color:var(--muted);font-size:13px;font-weight:600}.phase-bar{height:6px;background:var(--ring-track);border-radius:999px;overflow:hidden;margin-bottom:18px}.phase-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .5s ease}.modules{display:grid;grid-template-columns:1fr;gap:14px}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:24px 0 4px;border-bottom:1px solid var(--border)}.tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;cursor:pointer;padding:10px 18px;font-size:14px;font-weight:700;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .2s,border-color .2s}.tab:hover{color:var(--text)}.tab.active{color:var(--accent-2);border-bottom-color:var(--accent-2)}.hero-text{flex:1 1 340px}.prose-block{display:grid;gap:14px;margin:24px 0}.prose-block.appendix{margin-top:32px}.prose-card .module-body{padding:20px 22px}.prose-title{margin:0 0 10px;font-size:20px;font-weight:800;letter-spacing:-.3px;color:var(--text)}.module{background:var(--card);border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:var(--shadow);align-self:start;transition:border-color .2s}.module.is-complete{border-color:#34d39980}.module-head{display:flex;align-items:center;gap:10px;padding:14px 16px;cursor:pointer;-webkit-user-select:none;user-select:none}.module-head:hover{background:var(--card-hi)}.chevron{background:none;border:none;color:var(--muted);font-size:14px;cursor:pointer;padding:0;width:16px}.module-title{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.module-num{font-size:11px;font-weight:800;color:var(--accent-2);background:var(--bg-2);padding:3px 7px;border-radius:6px;border:1px solid var(--border)}.module-title h3{margin:0;font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge-done{font-size:11px;color:var(--e);font-weight:700}.module-meta .count{font-size:13px;font-weight:700;color:var(--muted)}.count.info-tag{color:var(--accent-2);font-size:11px;text-transform:uppercase}.module-bar{height:5px;background:var(--ring-track)}.module-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .4s ease}.module-body{padding:12px 16px 16px}.target{color:var(--muted);font-size:12.5px;margin:4px 0 12px}.overview{color:var(--muted);font-size:13px;line-height:1.5;margin:6px 0 0}.tier-actions{display:flex;gap:8px;margin-bottom:12px}.tier-actions button{padding:6px 10px;font-size:12px}.tier{margin-bottom:12px}.tier-label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px;padding-left:8px;border-left:3px solid var(--border)}.tier-label.wu{border-color:var(--wu);color:var(--wu)}.tier-label.e{border-color:var(--e);color:var(--e)}.tier-label.m{border-color:var(--m);color:var(--m)}.tier-label.h{border-color:var(--h);color:var(--h)}.tier-count{color:var(--muted);font-weight:600}.problems{list-style:none;margin:0;padding:0}.problems li{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:8px}.problems li:hover{background:var(--bg-2)}.problems li label{display:flex;align-items:center;gap:9px;flex:1;cursor:pointer;min-width:0}.problems li input{position:absolute;opacity:0;width:0;height:0}.tick{width:18px;height:18px;border:2px solid var(--border);border-radius:6px;display:grid;place-items:center;font-size:12px;color:transparent;flex-shrink:0;transition:.15s}.problems li input:focus-visible+.tick{outline:2px solid var(--accent);outline-offset:2px}.problems li input:checked+.tick,.checklist li input:checked+.tick,.cell-check input:checked+.tick{background:var(--e);border-color:var(--e);color:#04291c}.problems li.solved .tick{background:var(--e);border-color:var(--e);color:#04291c}.pname{font-size:13.5px;line-height:1.35}.problems li.solved .pname{color:var(--muted);text-decoration:line-through}.ext{color:var(--muted);text-decoration:none;font-size:13px;opacity:0;transition:.15s;padding:0 4px}.problems li:hover .ext{opacity:1}.ext:hover{color:var(--accent-2)}.foot{text-align:center;color:var(--muted);font-size:12.5px;margin-top:40px}.foot code{background:var(--bg-2);padding:2px 6px;border-radius:6px;border:1px solid var(--border)}.subtitle-line{color:var(--text);opacity:.85;margin:6px 0 0;font-size:14px;font-weight:500}.tstat.topics{border-left:3px solid var(--accent)}.count.sub{margin-left:8px;color:var(--accent-2);font-weight:600}.tabs{display:flex;gap:8px;margin:22px 0 6px}.tabs button{background:var(--card);border:1px solid var(--border);color:var(--muted);padding:10px 18px;border-radius:12px;cursor:pointer;font-size:14px;font-weight:700;transition:.15s}.tabs button:hover{color:var(--text)}.tabs button.on{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;border-color:transparent}.msec{margin:16px 0;padding-top:4px;border-top:1px dashed var(--border)}.msec:first-child{border-top:none;margin-top:4px}.msec-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.msec-title{font-size:13px;font-weight:800;letter-spacing:.3px;color:var(--text);text-transform:uppercase}.msec-count{font-size:12px;color:var(--muted);font-weight:600}.msec-head .mini{margin-left:auto}.msec-head .mini+.mini{margin-left:0}.mini{background:var(--bg-2);border:1px solid var(--border);color:var(--muted);font-size:11px;padding:3px 8px;border-radius:7px;cursor:pointer;font-weight:600}.mini:hover{border-color:var(--accent);color:var(--text)}.msec-md{color:var(--muted)}.checklist{list-style:none;margin:0;padding:0}.checklist li{display:flex;padding:4px 6px;border-radius:8px}.checklist li:hover{background:var(--bg-2)}.checklist li label{display:flex;align-items:flex-start;gap:9px;cursor:pointer}.checklist li input{position:absolute;opacity:0;width:0;height:0}.checklist .ctext{font-size:13.5px;line-height:1.45}.checklist .ctext .md p{margin:0}.checklist li.done .ctext{color:var(--muted)}.checklist li.done .ctext strong{text-decoration:line-through}.checklist .tick{margin-top:2px}.mtable{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px;border:1px solid var(--border);border-radius:10px;overflow:hidden}.mtable thead th{text-align:left;font-size:10.5px;letter-spacing:.5px;text-transform:uppercase;font-weight:700;color:var(--muted);background:var(--bg-2);padding:7px 10px;border-bottom:1px solid var(--border);white-space:nowrap}.mtable tbody td{padding:6px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.mtable tbody tr:last-child td{border-bottom:none}.mtable tbody tr:hover{background:var(--bg-2)}.mtable .col-chk{width:34px;text-align:center}.mtable .col-idx{width:34px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}.mtable .col-lvl{width:92px}.mtable .col-ext{width:30px;text-align:center}.cell-check{display:inline-grid;place-items:center;cursor:pointer}.cell-check input{position:absolute;opacity:0;width:0;height:0}.mtable tr.solved .tick,.mtable tr.done .tick{background:var(--e);border-color:var(--e);color:#04291c}.cell-check input:focus-visible+.tick{outline:2px solid var(--accent);outline-offset:2px}.ctable .ctext{line-height:1.45}.ctable .ctext .md p{margin:0}.ctable tr.done .ctext{color:var(--muted)}.ctable tr.done .ctext strong{text-decoration:line-through}.ptable .pname{font-size:13.5px;line-height:1.35}.ptable tr.solved .pname{color:var(--muted);text-decoration:line-through}.ptable .ext{opacity:.55}.ptable tr:hover .ext{opacity:1}.badge{display:inline-block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;padding:2px 8px;border-radius:999px;border:1px solid var(--border);background:var(--bg-2);white-space:nowrap}.badge.wu{color:var(--wu);border-color:var(--wu)}.badge.e{color:var(--e);border-color:var(--e)}.badge.m{color:var(--m);border-color:var(--m)}.badge.h{color:var(--h);border-color:var(--h)}.tchip{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;padding:2px 8px;border-radius:999px;border:1px solid var(--border);background:var(--bg-2)}.tchip b{font-variant-numeric:tabular-nums;color:var(--text)}.tchip.wu{color:var(--wu);border-color:var(--wu)}.tchip.e{color:var(--e);border-color:var(--e)}.tchip.m{color:var(--m);border-color:var(--m)}.tchip.h{color:var(--h);border-color:var(--h)}@media (max-width: 560px){.mtable .col-idx,.mtable thead th.col-idx{display:none}}.md{font-size:13.6px;line-height:1.6;color:var(--text)}.md p{margin:8px 0;color:var(--muted)}.md h3,.md h4,.md h5,.md h6{margin:14px 0 6px;color:var(--text);line-height:1.3}.md h3{font-size:17px}.md h4{font-size:15px}.md ul,.md ol{margin:8px 0;padding-left:22px}.md li{margin:4px 0;color:var(--muted)}.md li ul{margin:4px 0}.md a{color:var(--accent-2);text-decoration:none}.md a:hover{text-decoration:underline}.md strong{color:var(--text)}.md code{background:var(--bg-2);border:1px solid var(--border);border-radius:5px;padding:1px 5px;font-size:.88em;font-family:JetBrains Mono,ui-monospace,monospace;color:#e6d5a8}.md blockquote{margin:10px 0;padding:8px 14px;border-left:3px solid var(--accent);background:var(--bg-2);border-radius:0 8px 8px 0;color:var(--text)}.md blockquote strong{color:var(--accent-2)}.md hr{border:none;border-top:1px solid var(--border);margin:14px 0}.md-table-wrap{overflow-x:auto;margin:10px 0;border:1px solid var(--border);border-radius:10px}.md table{border-collapse:collapse;width:100%;font-size:13px}.md th,.md td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--border);vertical-align:top}.md th{background:var(--bg-2);color:var(--text);font-weight:700;white-space:nowrap}.md tr:last-child td{border-bottom:none}.md td:first-child{color:var(--accent-2);font-weight:600;white-space:nowrap}.pages{display:flex;flex-direction:column;gap:18px}.page{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:22px 26px;box-shadow:var(--shadow)}.page h2{margin:0 0 10px;font-size:22px;letter-spacing:-.3px;background:linear-gradient(90deg,#fff,#b6c0ff);-webkit-background-clip:text;background-clip:text;color:transparent}@media (max-width: 640px){.hero{padding:24px}.hero h1{font-size:30px}.modules{grid-template-columns:1fr}.controls{position:static}.page{padding:18px}}
