@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700;800&family=DM+Sans:wght@400;500;700&display=swap";:root{--bg:#0a0e1a;--bg-elev:#131827;--bg-elev-2:#1b2136;--border:#252b44;--accent:#f9b234;--accent-hover:#ffc957;--success:#10b981;--error:#ef4444;--text:#e6e9f2;--text-dim:#8b92a8;--text-muted:#5c6380;--mono:"JetBrains Mono", "Courier New", monospace;--sans:"DM Sans", system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100vh;overflow-x:hidden}body:before{content:"";background-image:linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);opacity:.15;pointer-events:none;z-index:0;background-size:60px 60px;position:fixed;inset:0}body:after{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle,#f9b23414 0%,#0000 70%);width:600px;height:600px;position:fixed;top:-20%;right:-10%}.app{z-index:1;max-width:1200px;min-height:100vh;margin:0 auto;padding:24px;position:relative}.header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:40px;padding:16px 0 32px;display:flex}.logo{font-family:var(--mono);letter-spacing:-.5px;align-items:center;gap:10px;font-size:20px;font-weight:800;display:flex}.logo .dot{background:var(--accent);border-radius:2px;width:10px;height:10px;animation:2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.9)}}.logo .label{color:var(--accent)}.header-stats{align-items:center;gap:24px;display:flex}.stat-chip{background:var(--bg-elev);border:1px solid var(--border);font-family:var(--mono);border-radius:8px;align-items:center;gap:8px;padding:8px 14px;font-size:13px;display:flex}.stat-chip .icon{font-size:16px}.stat-chip .value{color:var(--accent);font-weight:700}.stat-chip .label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;font-size:11px}.home h1{font-family:var(--mono);letter-spacing:-1.5px;margin-bottom:12px;font-size:48px;font-weight:800;line-height:1.1}.home h1 .accent{color:var(--accent)}.home .subtitle{color:var(--text-dim);max-width:600px;margin-bottom:48px;font-size:17px;line-height:1.5}.section-title{font-family:var(--mono);text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted);align-items:center;gap:10px;margin-bottom:16px;font-size:13px;display:flex}.section-title:before{content:"";background:var(--accent);width:20px;height:2px;display:inline-block}.modes{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:48px;display:grid}.mode-card{background:var(--bg-elev);border:1px solid var(--border);cursor:pointer;border-radius:12px;padding:24px;transition:all .25s;position:relative;overflow:hidden}.mode-card:before{content:"";background:var(--accent);transform-origin:0;height:2px;transition:transform .3s;position:absolute;top:0;left:0;right:0;transform:scaleX(0)}.mode-card:hover{border-color:var(--accent);transform:translateY(-2px)}.mode-card:hover:before{transform:scaleX(1)}.mode-card .mode-icon{margin-bottom:12px;font-size:28px;display:block}.mode-card h3{font-family:var(--mono);margin-bottom:6px;font-size:16px;font-weight:700}.mode-card p{color:var(--text-dim);font-size:13px;line-height:1.5}.mode-card .mode-badge{background:var(--accent);color:var(--bg);font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:700;position:absolute;top:16px;right:16px}.mode-card.disabled-card{opacity:.5;cursor:not-allowed}.topics{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.topic-card{background:var(--bg-elev);border:1px solid var(--border);cursor:pointer;border-radius:10px;flex-direction:column;gap:8px;padding:18px;transition:all .2s;display:flex}.topic-card:hover{border-color:var(--accent);background:var(--bg-elev-2)}.topic-card .topic-name{font-family:var(--mono);font-size:15px;font-weight:700}.topic-card .topic-meta{color:var(--text-dim);justify-content:space-between;align-items:center;margin-top:4px;font-size:12px;display:flex}.topic-card .topic-count{font-family:var(--mono);color:var(--accent)}.topic-progress{background:var(--border);border-radius:2px;height:3px;margin-top:6px;overflow:hidden}.topic-progress-fill{background:var(--accent);border-radius:2px;height:100%;transition:width .3s}.master-section-title:before{background:#a78bfa}.master-card:hover{border-color:#a78bfa}.home-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:48px;padding-top:32px;display:flex}.home-footer-info{font-family:var(--mono);color:var(--text-muted);font-size:12px}.quiz{animation:.3s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.quiz-header{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:24px;padding:16px 20px;display:flex}.quiz-info{font-family:var(--mono);align-items:center;gap:20px;font-size:13px;display:flex}.quiz-info .topic-tag{background:var(--accent);color:var(--bg);text-transform:uppercase;border-radius:4px;padding:4px 10px;font-size:11px;font-weight:700}.quiz-info .progress{color:var(--text-dim)}.quiz-info .progress strong{color:var(--text)}.quiz-info .difficulty{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px}.timer{font-family:var(--mono);align-items:center;gap:10px;font-size:18px;font-weight:700;display:flex}.timer-ring{width:44px;height:44px;position:relative}.timer-ring svg{transform:rotate(-90deg)}.timer-ring .track{fill:none;stroke:var(--border);stroke-width:4px}.timer-ring .progress-arc{fill:none;stroke:var(--accent);stroke-width:4px;stroke-linecap:round;transition:stroke-dashoffset 1s linear,stroke .3s}.timer.warning .progress-arc{stroke:#ff8c42}.timer.danger .progress-arc{stroke:var(--error);animation:.3s ease-in-out infinite shake}@keyframes shake{0%,to{transform:translate(0)}50%{transform:translate(-2px)}}.timer-text{justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex;position:absolute;inset:0}.question-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;margin-bottom:20px;padding:32px}.question-number{font-family:var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:1px;margin-bottom:12px;font-size:12px;font-weight:700}.question-title{font-family:var(--mono);margin-bottom:20px;font-size:20px;font-weight:700;line-height:1.4}.question-text{color:var(--text);margin-bottom:20px;font-size:15px;line-height:1.6}.question-text code{font-family:var(--mono);background:var(--bg-elev-2);color:var(--accent);border-radius:4px;padding:2px 6px;font-size:13px}.code-block{background:var(--bg);border:1px solid var(--border);font-family:var(--mono);white-space:pre;color:#c9d1d9;border-radius:8px;margin-bottom:20px;padding:16px 20px;font-size:13px;line-height:1.6;overflow-x:auto}.code-block .kw{color:#ff7b72}.code-block .str{color:#a5d6ff}.code-block .num{color:#79c0ff}.code-block .cmt{color:#8b949e;font-style:italic}.code-block .fn{color:#d2a8ff}.options{flex-direction:column;gap:10px;display:flex}.option{background:var(--bg-elev-2);border:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:14px;padding:14px 18px;font-size:14px;line-height:1.5;transition:all .15s;display:flex}.option:hover:not(.disabled){border-color:var(--accent);background:#20273f}.option.disabled{cursor:not-allowed}.option-marker{border:2px solid var(--text-muted);width:22px;height:22px;font-family:var(--mono);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:700;transition:all .15s;display:flex}.option.multi .option-marker{border-radius:4px}.option.selected .option-marker{border-color:var(--accent);background:var(--accent);color:var(--bg)}.option.selected{border-color:var(--accent);background:#f9b23414}.option.correct{border-color:var(--success);background:#10b9811a}.option.correct .option-marker{border-color:var(--success);background:var(--success);color:#fff}.option.incorrect{border-color:var(--error);background:#ef44441a}.option.incorrect .option-marker{border-color:var(--error);background:var(--error);color:#fff}.option-text{flex:1}.option-text code{font-family:var(--mono);color:var(--accent);background:#0000004d;border-radius:3px;padding:1px 5px;font-size:12px}.multi-hint{color:var(--text-dim);font-size:12px;font-family:var(--mono);margin-top:8px}.text-input{background:var(--bg);border:2px solid var(--border);width:100%;color:var(--text);font-family:var(--mono);border-radius:8px;outline:none;padding:14px 18px;font-size:14px;transition:border-color .15s}.text-input:focus{border-color:var(--accent)}.text-input.correct{border-color:var(--success)}.text-input.incorrect{border-color:var(--error)}.code-note{color:var(--text-dim);font-size:12px;font-family:var(--mono);margin-top:8px}.actions{justify-content:space-between;gap:12px;margin-top:20px;display:flex}.btn{border:1px solid var(--border);color:var(--text);font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px;cursor:pointer;background:0 0;border-radius:8px;padding:12px 24px;font-size:13px;font-weight:700;transition:all .15s}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn-primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover);color:var(--bg);border-color:var(--accent-hover)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:disabled:hover{border-color:var(--border);color:var(--text)}.feedback{border-radius:8px;margin-top:20px;padding:18px 20px;font-size:14px;line-height:1.6;animation:.3s slideIn}@keyframes slideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.feedback.correct{border:1px solid var(--success);background:#10b9811a}.feedback.incorrect{border:1px solid var(--error);background:#ef44441a}.feedback.code-eval{border:1px solid var(--accent);background:#f9b23414}.feedback-title{font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:8px;margin-bottom:8px;font-size:13px;font-weight:700;display:flex}.feedback.correct .feedback-title{color:var(--success)}.feedback.incorrect .feedback-title{color:var(--error)}.feedback.code-eval .feedback-title{color:var(--accent)}.feedback-text code{font-family:var(--mono);background:var(--bg-elev-2);color:var(--accent);border-radius:3px;padding:1px 6px;font-size:12px}.code-eval-actions{gap:10px;margin-top:12px;display:flex}.results{animation:.4s fadeIn}.results-header{text-align:center;margin-bottom:32px;padding:40px 20px}.score-display{font-family:var(--mono);margin-bottom:16px;font-size:84px;font-weight:800;line-height:1}.score-display .total{color:var(--text-muted);font-size:36px}.score-label{font-family:var(--mono);color:var(--text-dim);text-transform:uppercase;letter-spacing:2px;margin-bottom:24px;font-size:14px}.results-stats{justify-content:center;gap:32px;margin-bottom:40px;display:flex}.result-stat{text-align:center}.result-stat .val{font-family:var(--mono);color:var(--accent);font-size:28px;font-weight:700}.result-stat .lbl{color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;margin-top:4px;font-size:12px}.review-list{flex-direction:column;gap:12px;margin-bottom:32px;display:flex}.review-item{background:var(--bg-elev);border:1px solid var(--border);cursor:pointer;border-left:4px solid;border-radius:8px;justify-content:space-between;align-items:center;padding:16px 20px;transition:all .15s;display:flex}.review-item:hover{background:var(--bg-elev-2)}.review-item.correct{border-left-color:var(--success)}.review-item.incorrect{border-left-color:var(--error)}.review-item.skipped{border-left-color:var(--text-muted)}.review-item-title{font-family:var(--mono);font-size:14px;font-weight:700}.review-item-status{font-family:var(--mono);color:var(--text-dim);font-size:12px}.review-item.correct .review-item-status{color:var(--success)}.review-item.incorrect .review-item-status{color:var(--error)}.results-actions{justify-content:center;gap:12px;display:flex}.login-gate{z-index:1000;background:var(--bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.login-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:16px;width:100%;max-width:400px;padding:48px 40px;animation:.4s fadeIn}.login-logo{font-family:var(--mono);align-items:center;gap:10px;margin-bottom:32px;font-size:22px;font-weight:800;display:flex}.login-logo .dot{background:var(--accent);border-radius:2px;width:10px;height:10px;animation:2s ease-in-out infinite pulse}.login-logo .label{color:var(--accent)}.login-title{font-family:var(--mono);margin-bottom:8px;font-size:24px;font-weight:800}.login-sub{color:var(--text-dim);margin-bottom:28px;font-size:14px;line-height:1.5}.login-form{flex-direction:column;gap:12px;display:flex}.login-error{font-family:var(--mono);color:var(--error);text-align:center;font-size:12px}.login-btn{width:100%;margin-top:4px;padding:14px;font-size:14px}.ai-toggle-btn{border-color:var(--accent);color:var(--accent);white-space:nowrap;padding:8px 14px;font-size:12px}.ai-toggle-btn:hover{background:#f9b2341a}.ai-panel{background:var(--bg-elev);border-top:2px solid var(--accent);z-index:200;flex-direction:column;height:52vh;animation:.25s slideUp;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 40px #00000080}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.ai-panel-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 18px;display:flex}.ai-panel-title{font-family:var(--mono);align-items:center;gap:10px;font-size:13px;font-weight:700;display:flex}.ai-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:1.5s ease-in-out infinite pulse}.ai-topic{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:300px;font-size:11px;font-weight:400;overflow:hidden}.ai-quick-btn{border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);cursor:pointer;background:0 0;border-radius:6px;padding:5px 10px;font-size:11px;transition:all .15s}.ai-quick-btn:hover{border-color:var(--accent);color:var(--accent)}.ai-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:16px;line-height:1;transition:color .15s}.ai-close:hover{color:var(--text)}.ai-messages{scroll-behavior:smooth;flex-direction:column;flex:1;gap:10px;padding:14px 18px;display:flex;overflow-y:auto}.ai-messages::-webkit-scrollbar{width:4px}.ai-messages::-webkit-scrollbar-track{background:0 0}.ai-messages::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.ai-placeholder{color:var(--text-muted);text-align:center;padding:20px;font-size:13px;line-height:1.5}.ai-msg{flex-direction:column;gap:4px;max-width:85%;display:flex}.ai-msg-user{align-self:flex-end}.ai-msg-assistant{align-self:flex-start}.ai-msg-label{font-family:var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.5px;font-size:10px}.ai-msg-content{white-space:pre-wrap;word-break:break-word;border-radius:8px;padding:10px 14px;font-size:13px;line-height:1.6}.ai-msg-user .ai-msg-content{border:1px solid var(--accent);background:#f9b2341f}.ai-msg-assistant .ai-msg-content{background:var(--bg-elev-2);border:1px solid var(--border)}.ai-typing{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px;align-items:center;gap:4px;width:fit-content;padding:10px 14px;display:flex}.ai-typing span{background:var(--accent);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite typing}.ai-typing span:nth-child(2){animation-delay:.2s}.ai-typing span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.ai-input-area{border-top:1px solid var(--border);flex-shrink:0;gap:10px;padding:10px 18px;display:flex}.ai-input{background:var(--bg);border:1px solid var(--border);color:var(--text);font-family:var(--sans);border-radius:8px;outline:none;flex:1;padding:10px 14px;font-size:13px;transition:border-color .15s}.ai-input:focus{border-color:var(--accent)}.ai-input::placeholder{color:var(--text-muted)}.ai-send{font-size:16px;line-height:1;font-family:var(--mono);padding:10px 18px}@media (width<=640px){.app{padding:16px}.home h1{font-size:32px}.header-stats{gap:8px}.stat-chip{padding:6px 10px;font-size:12px}.question-card{padding:20px}.score-display{font-size:60px}.results-stats{gap:16px}}
