@import url("https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600;9..40,700&family=JetBrains+Mono:wght@400;500&display=swap");*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--surface:#1a1d27;--surface-hover:#22252f;--surface-active:#2a2d3a;--border:#2e3140;--border-light:#383b4a;--text:#e8e9ed;--text-muted:#9399a8;--text-dim:#6b7185;--accent:#4f8ff7;--accent-hover:#6ba0f9;--accent-dim:#2a4a8a;--accent-border:#4f8ff740;--success:#34d399;--success-dim:#1a3d2e;--warning:#fbbf24;--warning-dim:#3d3520;--warning-border:#fbbf2440;--danger:#f87171;--danger-dim:#3d2020;--purple:#a78bfa;--purple-dim:#2d2548;--input-bg:#0f1117;--queue-bg:#0f1117;--header-bg:rgba(26,29,39,.85);--font-sans:"DM Sans","Segoe UI",system-ui,sans-serif;--font-mono:"JetBrains Mono",monospace;--theme-transition:background 0.3s ease,color 0.3s ease,border-color 0.3s ease,box-shadow 0.3s ease}[data-theme=light]{--bg:#f5f6f8;--surface:#fff;--surface-hover:#f0f1f3;--surface-active:#e5e7eb;--border:#d5d8e0;--border-light:#c8cbd4;--text:#1a1d27;--text-muted:#4b5563;--text-dim:#9ca3af;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-dim:#dbeafe;--accent-border:#2563eb40;--success:#059669;--success-dim:#d1fae5;--warning:#d97706;--warning-dim:#fef3c7;--warning-border:#d9770640;--danger:#dc2626;--danger-dim:#fee2e2;--purple:#7c3aed;--purple-dim:#ede9fe;--input-bg:#f9fafb;--queue-bg:#f0f1f3;--header-bg:hsla(0,0%,100%,.85)}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.btn,.chip,.course-card,.domain-btn,.ecard,.inp,.qcard,.sel,.std-btn,.tgt-row,body,header{transition:var(--theme-transition)}.fade-in{animation:fadeIn .3s ease-out forwards}.fade-out{animation:fadeOut .2s ease-in forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0;transform:translateY(-4px)}}.gen-pulse{animation:gpulse 2s ease-in-out infinite}@keyframes gpulse{0%,to{opacity:.5}50%{opacity:1}}.shimmer{background:linear-gradient(90deg,var(--surface) 25%,var(--surface-hover) 50%,var(--surface) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.scroll::-webkit-scrollbar{width:6px}.scroll::-webkit-scrollbar-track{background:transparent}.scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:1.5px solid var(--border);background:var(--surface);color:var(--text-muted)}.chip:hover{border-color:var(--border-light);background:var(--surface-hover)}.chip.on{border-color:var(--accent);background:var(--accent-dim);color:var(--text)}.chip-warn.on{border-color:var(--warning);background:var(--warning-dim);color:var(--warning)}.chip-green.on{border-color:var(--success);background:var(--success-dim);color:var(--success)}.chip-purple.on{border-color:var(--purple);background:var(--purple-dim);color:var(--purple)}.chip-danger.on{border-color:var(--danger);background:var(--danger-dim);color:var(--danger)}.domain-btn{width:100%;text-align:left;padding:12px 16px;border-radius:10px;border:1.5px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;transition:all .15s;font-size:14px;font-family:inherit}.domain-btn:hover{border-color:var(--border-light);background:var(--surface-hover)}.domain-btn.on{border-color:var(--accent);background:var(--accent-dim)}.std-btn{width:100%;text-align:left;padding:10px 14px;border-radius:8px;border:1.5px solid transparent;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .15s;font-size:13px;font-family:inherit}.std-btn:hover{background:var(--surface-hover);color:var(--text)}.std-btn.on{border-color:var(--accent);background:var(--accent-dim);color:var(--text)}.tgt-row{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-radius:8px;cursor:pointer;transition:all .15s;border:1.5px solid transparent}.tgt-row:hover{background:var(--surface-hover)}.tgt-row.on{border-color:var(--accent-border);background:var(--accent-dim)}.chk{width:18px;height:18px;border-radius:4px;flex-shrink:0;margin-top:1px;border:1.5px solid var(--border);background:var(--surface);display:flex;align-items:center;justify-content:center;transition:all .15s;font-size:11px;color:transparent}.chk.on{border-color:var(--accent);background:var(--accent);color:#fff}.qcard{background:var(--surface);border:1.5px solid var(--border);border-radius:12px;padding:24px;transition:all .15s}.qcard:hover{border-color:var(--border-light)}.qcard.swapping{opacity:.5;pointer-events:none}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;border:none;font-family:inherit}.btn-p{background:var(--accent);color:#fff}.btn-p:hover{background:var(--accent-hover);transform:translateY(-1px)}.btn-p:disabled{background:var(--border);color:var(--text-dim);cursor:not-allowed;transform:none}.btn-s{background:var(--surface-hover);color:var(--text);border:1.5px solid var(--border)}.btn-s:hover{background:var(--surface-active);border-color:var(--border-light)}.btn-g{background:transparent;color:var(--text-muted);padding:8px 12px}.btn-g:hover{color:var(--text);background:var(--surface-hover)}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.inp{width:100%;padding:10px 14px;border-radius:8px;border:1.5px solid var(--border);background:var(--input-bg);color:var(--text);font-size:14px;font-family:inherit;outline:none;transition:border-color .15s}.inp:focus{border-color:var(--accent)}.inp::placeholder{color:var(--text-dim)}.sel{border-radius:8px;border:1.5px solid var(--border);background:var(--surface);color:var(--text);font-size:14px;font-family:inherit;cursor:pointer;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:10px 36px 10px 14px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' stroke='%239399A8' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.mono{font-family:var(--font-mono)}.ecard{background:var(--surface);border:1.5px solid var(--border);border-radius:12px;padding:20px;cursor:pointer;transition:all .15s}.ecard:hover{border-color:var(--accent-hover);background:var(--surface-hover)}.ecard.primary{border-color:var(--accent)}.course-card{background:var(--surface);border:1.5px solid var(--border);border-radius:12px;padding:24px;transition:all .15s;cursor:pointer}.course-card:hover{border-color:var(--accent);background:var(--surface-hover)}.course-card.locked{opacity:.45;cursor:default}.course-card.locked:hover{border-color:var(--border);background:var(--surface)}.katex,.katex .mbin,.katex .mclose,.katex .mop,.katex .mopen,.katex .mord,.katex .mpunct,.katex .mrel{color:var(--text)}.theme-toggle{width:40px;height:40px;border-radius:10px;border:1.5px solid var(--border);background:var(--surface-hover);cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;transition:all .3s ease}.theme-toggle:hover{border-color:var(--border-light);background:var(--surface-active)}.theme-toggle .icon-moon,.theme-toggle .icon-sun{position:absolute;font-size:18px;transition:transform .4s ease,opacity .25s ease}[data-theme=dark] .theme-toggle .icon-sun{transform:translateY(0) rotate(0deg);opacity:1}[data-theme=dark] .theme-toggle .icon-moon{transform:translateY(30px) rotate(90deg);opacity:0}[data-theme=light] .theme-toggle .icon-sun{transform:translateY(-30px) rotate(-90deg);opacity:0}[data-theme=light] .theme-toggle .icon-moon{transform:translateY(0) rotate(0deg);opacity:1}.divider{height:1px;background:var(--border)}