.navbar{height:64px;background:#0a0f1cd9;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);display:flex;align-items:center;padding:0 20px 0 16px;border-bottom:1px solid rgba(255,255,255,.06);color:#fff;gap:14px;flex-shrink:0;position:sticky;top:0;z-index:50}.navbar-toggle{width:38px;height:38px;border-radius:10px;background:transparent;border:1px solid rgba(255,255,255,.1);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .2s,border-color .2s;padding:0}.navbar-toggle:hover{background:#ffffff12;border-color:#fff3}.hamburger{display:flex;flex-direction:column;gap:5px;width:18px}.hamburger span{display:block;height:2px;background:#ffffffbf;border-radius:2px;transform-origin:center;transition:transform .25s ease,opacity .25s ease,width .25s ease}.hamburger--open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger--open span:nth-child(2){opacity:0;transform:scaleX(0)}.hamburger--open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.navbar-title{font-size:1rem;font-weight:700;color:#fff;flex:1;letter-spacing:-.01em}.navbar-right{display:flex;align-items:center;gap:12px;margin-left:auto}.navbar-user{display:flex;align-items:center}.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:.85rem;cursor:pointer;transition:transform .2s,box-shadow .2s;flex-shrink:0}.avatar:hover{transform:scale(1.08);box-shadow:0 0 0 3px #6366f159}.sidebar{position:relative;min-height:100vh;background:linear-gradient(180deg,#0d1424,#070b14);border-right:1px solid rgba(255,255,255,.06);box-shadow:4px 0 24px #00000059;display:flex;flex-direction:column;padding:20px 10px 16px;flex-shrink:0;overflow:hidden;z-index:100}.sidebar-logo{display:flex;align-items:center;gap:0;margin-bottom:6px;padding:6px 4px;-webkit-user-select:none;user-select:none;overflow:hidden}.sidebar-logo-icon{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:900;color:#fff;flex-shrink:0;box-shadow:0 4px 14px #6366f166}.sidebar-logo-text{font-size:1.25rem;font-weight:800;color:#fff;margin-left:10px;letter-spacing:-.02em;white-space:nowrap;overflow:hidden}.sidebar-divider{height:1px;background:#ffffff0f;margin:12px 4px 16px}.sidebar-nav{display:flex;flex-direction:column;gap:4px;flex:1}.sidebar-link{position:relative;display:flex;align-items:center;gap:0;padding:11px 10px;border-radius:12px;color:#cbd5f5a6;text-decoration:none;transition:color .2s,background .2s;white-space:nowrap;overflow:visible}.sidebar-link:hover{background:#ffffff0d;color:#ffffffe6}.sidebar-link.active{color:#fff}.sidebar-icon{font-size:1.15rem;width:28px;height:28px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1;transition:transform .2s}.sidebar-link:hover .sidebar-icon{transform:scale(1.15)}.sidebar-link-label{font-size:.88rem;font-weight:600;margin-left:10px;position:relative;z-index:1;overflow:hidden;white-space:nowrap}.active-indicator{position:absolute;inset:0;background:linear-gradient(90deg,#6366f14d,#8b5cf633);border-radius:12px;border:1px solid rgba(99,102,241,.25);z-index:0}.sidebar-tooltip{display:none;position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);background:#1e2a3a;border:1px solid rgba(255,255,255,.12);color:#fff;font-size:.8rem;font-weight:600;padding:.35rem .75rem;border-radius:8px;white-space:nowrap;pointer-events:none;box-shadow:0 8px 20px #0006;z-index:999}.sidebar-tooltip:before{content:"";position:absolute;left:-5px;top:50%;transform:translateY(-50%);width:0;height:0;border-right:5px solid #1e2a3a;border-top:5px solid transparent;border-bottom:5px solid transparent}.sidebar--collapsed .sidebar-link:hover .sidebar-tooltip{display:block}.sidebar-footer{padding:8px 6px 4px;height:28px;overflow:hidden}.sidebar-version{font-size:.72rem;color:#fff3;white-space:nowrap}.sidebar-backdrop{display:none;position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:99}@media(max-width:768px){.sidebar{position:fixed;top:0;left:0;height:100vh;z-index:100;width:240px!important;transform:translate(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1)}.sidebar.sidebar--open{transform:translate(0)}.sidebar-backdrop{display:block}}.app-shell{display:flex;min-height:100vh;background:var(--bg-main, #0b0f1a)}.app-main{flex:1;display:flex;flex-direction:column;min-width:0;transition:margin-left .3s cubic-bezier(.4,0,.2,1)}.app-content{flex:1;padding:36px 40px}@media(max-width:768px){.app-content{padding:24px 20px}.app-main{width:100%}}@media(max-width:480px){.app-content{padding:20px 16px}}.qh-wrap{display:flex;flex-direction:column;gap:1rem}.qh-empty{text-align:center;padding:2.5rem 1rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}.qh-empty-icon{font-size:2.2rem;opacity:.4}.qh-empty-title{font-size:1rem;font-weight:700;color:#ffffff80;margin:0}.qh-empty-sub{font-size:.84rem;color:#ffffff4d;margin:0}.qh-filters{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.qh-filter-btn{padding:.35rem .9rem;border-radius:999px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:#ffffff73;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s}.qh-filter-btn:hover{background:#ffffff14;color:#ffffffb3}.qh-filter-btn.active{background:#7c7cff26;border-color:#7c7cff66;color:#a5b4fc}.qh-count{margin-left:auto;font-size:.78rem;color:#ffffff40}.qh-list{display:flex;flex-direction:column;gap:.5rem}.qh-item{display:flex;align-items:center;gap:1rem;padding:.95rem 1.2rem;background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:16px;transition:background .2s,border-color .2s,transform .2s}.qh-item:hover{background:#ffffff0d;border-color:#ffffff1f;transform:translate(3px)}.qh-rank{width:28px;height:28px;border-radius:8px;background:#ffffff0f;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;color:#ffffff4d;flex-shrink:0}.qh-info{flex:1;min-width:0}.qh-title{font-size:.9rem;font-weight:600;color:#ffffffe0;margin:0 0 .2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qh-meta{font-size:.75rem;color:#ffffff4d;margin:0;display:flex;align-items:center;gap:.4rem}.qh-dot{opacity:.4}.qh-bar-wrap{display:flex;align-items:center;gap:.6rem;width:160px;flex-shrink:0}.qh-bar-track{flex:1;height:6px;background:#ffffff12;border-radius:999px;overflow:hidden}.qh-bar-fill{height:100%;border-radius:999px}.qh-pct{font-size:.78rem;font-weight:700;color:#ffffff8c;min-width:36px;text-align:right}.qh-grade{display:flex;flex-direction:column;align-items:center;padding:.3rem .75rem;border-radius:10px;flex-shrink:0;min-width:72px;text-align:center}.qh-grade-num{font-size:1.1rem;font-weight:900;line-height:1}.qh-grade-lbl{font-size:.62rem;font-weight:600;opacity:.8;white-space:nowrap}.qh-no-results{text-align:center;color:#ffffff4d;font-size:.88rem;padding:1.5rem}.qh-summary{display:flex;gap:1.5rem;padding:.9rem 1.2rem;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:14px;font-size:.82rem;color:#fff6;flex-wrap:wrap}.qh-summary strong{color:#ffffffbf}@media(max-width:600px){.qh-bar-wrap{display:none}.qh-item{gap:.75rem}.qh-grade{min-width:56px}}.dashboard{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:1.8rem}.dash-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap}.dash-title{font-size:2rem;font-weight:800;letter-spacing:-.03em;margin:0 0 .3rem;background:linear-gradient(135deg,#fff 40%,#7c7cff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dash-subtitle{color:#ffffff80;font-size:.92rem;margin:0}.dash-cta{flex-shrink:0;white-space:nowrap}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.stat-card{position:relative;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:22px;padding:1.6rem 1.2rem 1.4rem;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem;overflow:hidden;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.stat-card:hover{transform:translateY(-4px);box-shadow:0 24px 50px #00000073;border-color:rgba(var(--accent-rgb),.3)}.stat-icon{font-size:1.6rem;width:52px;height:52px;border-radius:16px;background:rgba(var(--accent-rgb),.13);border:1px solid rgba(var(--accent-rgb),.2);display:flex;align-items:center;justify-content:center;margin-bottom:.3rem;flex-shrink:0}.stat-value{font-size:2.2rem;font-weight:800;color:#fff;margin:0;letter-spacing:-.04em;line-height:1}.stat-label{font-size:.82rem;font-weight:500;color:#ffffff73;margin:0;line-height:1.4}.stat-glow{position:absolute;bottom:-20px;left:50%;transform:translate(-50%);width:80px;height:80px;background:radial-gradient(circle,rgba(var(--accent-rgb),.2),transparent 70%);pointer-events:none}@media(max-width:480px){.stats-row{grid-template-columns:repeat(2,1fr);gap:.75rem}.stat-card{padding:1.3rem 1rem}.stat-value{font-size:1.8rem}}.mid-row{display:grid;grid-template-columns:200px 1fr;gap:1rem;align-items:stretch}.progress-panel{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.75rem}.panel-label{font-size:.75rem;font-weight:700;color:#ffffff73;text-transform:uppercase;letter-spacing:.07em;margin:0}.ring-wrap{position:relative;display:flex;align-items:center;justify-content:center}.ring-svg{display:block;overflow:visible}.ring-center{position:absolute;display:flex;flex-direction:column;align-items:center;pointer-events:none}.ring-value{font-size:1.5rem;font-weight:800;color:#fff;line-height:1}.ring-sub{font-size:.7rem;color:#fff6;margin-top:2px}.daily-tracker{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:1.6rem 2rem;display:flex;flex-direction:column;justify-content:center;gap:.85rem}.daily-top{display:flex;justify-content:space-between;align-items:center}.daily-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#ffffff73}.daily-count{font-size:1rem;font-weight:700;transition:color .3s}.daily-bar-track{width:100%;height:8px;background:#ffffff12;border-radius:999px;overflow:hidden}.daily-bar-fill{height:100%;border-radius:999px;transition:background .3s}.daily-hint{font-size:.84rem;color:#ffffff80;margin:0}.history-panel{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:1.6rem 1.8rem}.history-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.4rem}.btn-link{background:transparent;border:none;color:var(--accent, #7c7cff);font-size:.84rem;font-weight:600;cursor:pointer;padding:0;transition:opacity .2s}.btn-link:hover{opacity:.75}.empty-dashboard{background:#ffffff08;border:1px dashed rgba(255,255,255,.1);border-radius:24px;padding:4rem 2rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1rem}.empty-icon{font-size:3.5rem;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.empty-title{font-size:1.4rem;font-weight:700;margin:0}.empty-desc{color:#ffffff73;max-width:380px;font-size:.92rem;line-height:1.6;margin:0}@media(max-width:900px){.stats-row{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.stats-row{grid-template-columns:1fr 1fr;gap:.75rem}.mid-row{grid-template-columns:1fr}.stat-value{font-size:1.5rem}.dash-header{flex-direction:column;align-items:flex-start;gap:.75rem}.dash-cta{width:100%;text-align:center}}.rec-panel{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:22px;padding:1.8rem;display:flex;flex-direction:column;gap:1.4rem}.rec-panel--empty{padding:2rem;text-align:center}.rec-empty-text{color:#fff6;font-size:.9rem;margin:0}.momentum-banner{display:flex;align-items:center;gap:1rem;padding:1rem 1.2rem;border-radius:14px;border:1px solid transparent}.momentum-up{background:#22c55e14;border-color:#22c55e33}.momentum-down{background:#ef444414;border-color:#ef444433}.momentum-neutral{background:#7c7cff14;border-color:#7c7cff33}.momentum-icon{font-size:1.6rem;flex-shrink:0}.momentum-body{display:flex;flex-direction:column;gap:.15rem}.momentum-msg{font-size:.9rem;font-weight:600;color:#ffffffd9;margin:0}.momentum-streak{font-size:.8rem;color:#ffffff73;margin:0}.rec-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.rec-section{display:flex;flex-direction:column;gap:.9rem}.rec-section-title{font-size:.78rem;font-weight:700;color:#fff6;text-transform:uppercase;letter-spacing:.07em;margin:0}.topic-list{display:flex;flex-direction:column;gap:.75rem}.topic-row-v2{display:flex;flex-direction:column;gap:.35rem}.topic-row-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.topic-name{font-size:.88rem;font-weight:600;color:#ffffffd9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%}.topic-row-right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.topic-pct{font-size:.9rem;font-weight:800;min-width:38px;text-align:right}.topic-bar-track{width:100%;height:6px;background:#ffffff12;border-radius:999px;overflow:hidden}.topic-bar-fill{height:100%;border-radius:999px}.topic-attempts{font-size:.72rem;color:#ffffff4d}.trend-badge{font-size:.7rem;font-weight:700;padding:.15rem .5rem;border-radius:999px;white-space:nowrap}.trend-up{background:#22c55e26;color:#86efac}.trend-down{background:#ef444426;color:#fca5a5}.trend-stable{background:#ffffff12;color:#fff6}.missed-list{display:flex;flex-direction:column;gap:.6rem}.missed-card{display:flex;align-items:flex-start;gap:.75rem;background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:.75rem .9rem}.missed-count{font-size:.75rem;font-weight:800;color:#fca5a5;background:#ef444426;border-radius:6px;padding:.2rem .45rem;flex-shrink:0;line-height:1.4}.missed-body{display:flex;flex-direction:column;gap:.2rem;min-width:0}.missed-question{font-size:.83rem;color:#ffffffbf;margin:0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.missed-topic{font-size:.72rem;color:#ffffff4d}.rec-cta{background:linear-gradient(135deg,#7c7cff1f,#22d3ee14);border:1px solid rgba(124,124,255,.25);border-radius:16px;padding:1.1rem 1.2rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.rec-cta-body{display:flex;flex-direction:column;gap:.2rem;min-width:0}.rec-cta-label{font-size:.72rem;font-weight:700;color:#fff6;text-transform:uppercase;letter-spacing:.06em;margin:0}.rec-cta-topic{font-size:1rem;font-weight:700;color:#fff;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rec-cta-sub{font-size:.78rem;color:#fff6;margin:0}.rec-cta-btn{flex-shrink:0;padding:.6rem 1.2rem;font-size:.85rem;white-space:nowrap}.rec-strong{font-size:.82rem;color:#fff6;padding:.6rem .8rem;background:#facc150f;border:1px solid rgba(250,204,21,.15);border-radius:10px}.rec-strong strong{color:#ffffffbf}@media(max-width:700px){.rec-grid{grid-template-columns:1fr}}.school-banner{position:relative;display:flex;align-items:center;gap:1rem;padding:.8rem 1.4rem;background:#ffffff0a;border:1px solid rgba(255,255,255,.09);border-radius:16px;overflow:hidden}.sb-glow{position:absolute;left:-20px;top:-20px;width:120px;height:120px;background:radial-gradient(circle,rgba(124,124,255,.15),transparent 70%);pointer-events:none}.sb-logo{width:42px;height:42px;border-radius:10px;object-fit:cover;flex-shrink:0;border:1px solid rgba(255,255,255,.12)}.sb-divider{width:1px;height:32px;background:#ffffff1a;flex-shrink:0}.sb-text{flex:1;min-width:0}.sb-title{font-size:.84rem;font-weight:700;color:#ffffffd9;margin:0 0 .15rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb-sub{font-size:.76rem;color:#fff6;margin:0}.sb-sub strong{color:#ffffffb3;font-weight:600}.sb-badge{flex-shrink:0;padding:.25rem .7rem;background:#7c7cff1f;border:1px solid rgba(124,124,255,.25);border-radius:999px;font-size:.72rem;font-weight:700;color:#a5b4fc;letter-spacing:.03em}@media(max-width:600px){.sb-title{font-size:.78rem}.sb-badge{display:none}}.multi-upload{display:flex;flex-direction:column;gap:1rem}.multi-drop-zone{border:2px dashed rgba(255,255,255,.13);border-radius:18px;background:#ffffff05;transition:all .25s ease;cursor:pointer}.multi-drop-zone:not(.compact){padding:2.8rem 2rem;text-align:center}.multi-drop-zone.compact{padding:.9rem 1.2rem;border-style:dashed}.multi-drop-zone:hover,.multi-drop-zone.drag-over{border-color:var(--accent, #7c7cff);background:#7c7cff0f}.multi-drop-zone.drag-over{transform:scale(1.01)}.multi-drop-hint{display:flex;flex-direction:column;align-items:center;gap:.5rem}.multi-drop-icon{font-size:2.6rem;animation:float 3s ease-in-out infinite}.multi-drop-text{color:#ffffffa6;font-size:.95rem;margin:0}.multi-drop-formats{font-size:.78rem;color:#ffffff4d;margin:0;letter-spacing:.04em}.drop-link{color:var(--accent, #7c7cff);font-weight:600;text-decoration:underline;cursor:pointer}.multi-drop-compact{display:flex;align-items:center;gap:.75rem}.multi-drop-icon-sm{font-size:1.2rem}.multi-drop-add{font-size:.85rem;color:var(--accent, #7c7cff);font-weight:600;cursor:pointer;transition:opacity .2s}.multi-drop-add:hover{opacity:.75}.file-list{display:flex;flex-direction:column;gap:.5rem}.file-list-row{display:flex;align-items:center;gap:.5rem}.file-row{flex:1;display:flex;align-items:center;gap:.75rem;background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:.7rem 1rem;transition:border-color .25s;min-width:0}.file-row.done{border-color:#22c55e40;background:#22c55e0a}.file-row.error{border-color:#ef444440;background:#ef44440a}.file-row.extracting{border-color:#7c7cff40;background:#7c7cff0a}.ext-badge{font-size:.64rem;font-weight:800;padding:.2rem .45rem;border-radius:6px;letter-spacing:.04em;flex-shrink:0}.file-row-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.file-row-name{font-size:.88rem;font-weight:600;color:#ffffffe6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-row-meta{font-size:.75rem;color:#ffffff59}.file-row-error{color:#fca5a5}.fstatus{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.fstatus.pending{background:#ffffff0f;color:#ffffff4d}.fstatus.done{background:#22c55e33;color:#22c55e}.fstatus.error{background:#ef444433;color:#ef4444}.fstatus.extracting{background:#7c7cff33}.mini-spin{width:12px;height:12px;border:2px solid rgba(124,124,255,.3);border-top-color:#7c7cff;border-radius:50%;animation:spin .7s linear infinite;display:block}.remove-btn{width:28px;height:28px;border-radius:8px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);color:#ffffff59;font-size:.7rem;cursor:pointer;flex-shrink:0;transition:all .2s;display:flex;align-items:center;justify-content:center}.remove-btn:hover{background:#ef444426;border-color:#ef444459;color:#fca5a5}.multi-success-bar{background:#22c55e1a;border:1px solid rgba(34,197,94,.25);border-radius:12px;padding:.75rem 1.1rem;font-size:.85rem;color:#86efac;font-weight:500}.btn-ghost-sm{background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffff73;padding:.45rem 1.1rem;border-radius:999px;cursor:pointer;font-size:.82rem;font-weight:600;align-self:flex-start;transition:all .2s}.btn-ghost-sm:hover{border-color:#ffffff4d;color:#fffc}.btn-full{width:100%;display:flex;align-items:center;justify-content:center}.spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}.multi-drop-ocr-hint{font-size:.75rem;color:#a855f7b3;margin:.2rem 0 0}.vision-notice{background:#a855f714;border:1px solid rgba(168,85,247,.2);border-radius:10px;padding:.6rem 1rem;font-size:.82rem;color:#d8b4fe}.ocr-hint{color:#d8b4fe;opacity:.8}.qp-shell{display:flex;flex-direction:column;gap:1.5rem;padding:.5rem 0 2rem}.qp-header{display:flex;flex-direction:column;gap:.6rem}.qp-progress-bar{width:100%;height:5px;background:#ffffff14;border-radius:999px;overflow:hidden}.qp-progress-fill{height:100%;background:linear-gradient(90deg,#7c7cff,#22d3ee);border-radius:999px}.qp-meta{display:flex;justify-content:space-between;align-items:center}.qp-counter{font-size:.8rem;font-weight:700;color:#ffffff80;letter-spacing:.04em}.qp-daily{font-size:.75rem;color:#ffffff4d}.qp-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.09);border-radius:22px;padding:2rem 2.2rem;display:flex;flex-direction:column;gap:1.4rem}.qp-q-num{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--accent, #7c7cff)}.qp-q-text{font-size:1.15rem;font-weight:600;color:#ffffffeb;line-height:1.55;margin:0}.qp-options{display:flex;flex-direction:column;gap:.65rem}.qp-option{display:flex;align-items:center;gap:1rem;padding:.9rem 1.1rem;border-radius:14px;background:#ffffff0a;border:1.5px solid rgba(255,255,255,.09);color:#ffffffbf;cursor:pointer;text-align:left;transition:background .2s,border-color .2s,color .2s;width:100%;position:relative}.qp-option:hover:not(:disabled){background:#7c7cff14;border-color:#7c7cff59;color:#fff}.qp-option--selected{background:#7c7cff1f!important;border-color:#7c7cff80!important;color:#fff!important}.qp-option--correct{background:#22c55e1f!important;border-color:#22c55e80!important;color:#86efac!important}.qp-option--wrong{background:#ef44441a!important;border-color:#ef444466!important;color:#fca5a5!important}.qp-option--dim{opacity:.4}.qp-option-label{width:28px;height:28px;border-radius:8px;background:#ffffff12;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800;flex-shrink:0;transition:background .2s}.qp-option--correct .qp-option-label{background:#22c55e40}.qp-option--wrong .qp-option-label{background:#ef444440}.qp-option--selected .qp-option-label{background:#7c7cff4d}.qp-option-text{flex:1;font-size:.92rem;font-weight:500;line-height:1.4}.qp-option-icon{font-size:1rem;font-weight:700;flex-shrink:0}.qp-feedback{padding:.6rem 1rem;border-radius:10px;font-size:.88rem;font-weight:600}.qp-feedback--correct{background:#22c55e1f;border:1px solid rgba(34,197,94,.3);color:#86efac}.qp-feedback--wrong{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#fca5a5}.qp-nav{display:flex;justify-content:space-between;gap:1rem}.qp-nav-btn{padding:.75rem 1.8rem;border-radius:14px;font-size:.92rem;font-weight:700;cursor:pointer;transition:all .2s;border:none}.qp-nav-btn--ghost{background:#ffffff0d;border:1px solid rgba(255,255,255,.12);color:#ffffff80}.qp-nav-btn--ghost:hover:not(:disabled){background:#ffffff14;color:#fffc}.qp-nav-btn--ghost:disabled{opacity:.3;cursor:not-allowed}.qp-nav-btn--next{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;box-shadow:0 8px 24px #6366f159;flex:1;max-width:260px;margin-left:auto}.qp-nav-btn--next:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 12px 30px #6366f173}.qp-nav-btn--disabled{opacity:.35;cursor:not-allowed;transform:none!important}.qp-limit-screen{text-align:center;padding:3rem 2rem;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:22px;display:flex;flex-direction:column;align-items:center;gap:.75rem}.qp-limit-icon{font-size:2.5rem}.qp-limit-screen h3{font-size:1.2rem;font-weight:700;margin:0;color:#fca5a5}.qp-limit-screen p{color:#ffffff73;font-size:.9rem;margin:0;line-height:1.6}.qp-results{display:flex;flex-direction:column;align-items:center;gap:1.6rem;padding:1rem 0 2rem}.qp-results-ring{position:relative;display:flex;align-items:center;justify-content:center}.qp-results-ring-inner{position:absolute;display:flex;flex-direction:column;align-items:center;gap:0}.qp-results-emoji{font-size:1.5rem;line-height:1}.qp-results-pct{font-size:1.5rem;font-weight:900;line-height:1.1}.qp-results-body{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.5rem}.qp-results-label{font-size:1.6rem;font-weight:800;margin:0;letter-spacing:-.03em}.qp-results-sub{color:#ffffff73;font-size:.9rem;margin:0}.qp-grade-badge{display:flex;flex-direction:column;align-items:center;padding:.6rem 1.8rem;border-radius:14px;border:2px solid;background:#ffffff0a;margin-top:.3rem}.qp-grade-num{font-size:2rem;font-weight:900;line-height:1}.qp-grade-text{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;opacity:.7}.qp-breakdown{width:100%;display:flex;flex-direction:column;gap:.5rem}.qp-breakdown-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#ffffff59;margin:0 0 .25rem}.qp-breakdown-row{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 1rem;border-radius:12px;border:1px solid}.qp-breakdown-row.correct{background:#22c55e0f;border-color:#22c55e33}.qp-breakdown-row.wrong{background:#ef44440f;border-color:#ef444433}.qp-breakdown-icon{font-size:.85rem;font-weight:800;flex-shrink:0;margin-top:1px}.qp-breakdown-row.correct .qp-breakdown-icon{color:#22c55e}.qp-breakdown-row.wrong .qp-breakdown-icon{color:#ef4444}.qp-breakdown-info{min-width:0}.qp-breakdown-q{font-size:.85rem;color:#fffc;margin:0 0 .2rem;line-height:1.4}.qp-breakdown-ans{font-size:.78rem;color:#fff6;margin:0}.wrong-ans{color:#fca5a5}.qp-restart-btn{background:#ffffff0f;border:1px solid rgba(255,255,255,.14);color:#fff9;padding:.65rem 2rem;border-radius:999px;cursor:pointer;font-size:.9rem;font-weight:600;transition:all .2s}.qp-restart-btn:hover{background:#ffffff1a;color:#fff}.generate-quiz{max-width:760px;margin:0 auto;padding-bottom:4rem}.gq-header{margin-bottom:2.5rem}.gq-title{font-size:2.2rem;font-weight:800;letter-spacing:-.03em;background:linear-gradient(135deg,#fff 40%,#7c7cff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0 0 .4rem}.gq-subtitle{color:#ffffff8c;font-size:1rem;margin:0}.step-bar{display:flex;align-items:center;gap:0;margin-bottom:2.5rem}.step-item{display:flex;align-items:center;gap:.5rem;flex:1}.step-dot{width:32px;height:32px;border-radius:50%;background:#ffffff12;border:1.5px solid rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700;color:#fff6;flex-shrink:0;transition:all .35s ease}.step-item.active .step-dot{background:var(--accent, #7c7cff);border-color:var(--accent, #7c7cff);color:#fff;box-shadow:0 0 16px #7c7cff80}.step-item.done .step-dot{background:#22c55e33;border-color:#22c55e;color:#22c55e}.step-label{font-size:.78rem;font-weight:600;color:#ffffff4d;white-space:nowrap;transition:color .3s}.step-item.active .step-label{color:#ffffffe6}.step-item.done .step-label{color:#22c55e}.step-line{flex:1;height:2px;background:#ffffff14;margin:0 8px;border-radius:2px;transition:background .4s ease}.step-line.done{background:#22c55e66}.gq-panel{background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:24px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);overflow:hidden;box-shadow:0 30px 70px #00000080;min-height:360px}.panel-body{padding:2.5rem;animation:panelIn .35s ease}@keyframes panelIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.panel-title{font-size:1.4rem;font-weight:700;margin:0 0 .35rem}.panel-desc{color:#ffffff80;font-size:.9rem;margin:0 0 2rem}.back-row{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.btn-back{background:transparent;border:1px solid rgba(255,255,255,.15);color:#fff9;padding:.35rem .9rem;border-radius:999px;cursor:pointer;font-size:.82rem;transition:all .2s}.btn-back:hover{border-color:#fff6;color:#fff}.text-pill{font-size:.8rem;color:#22c55e;background:#22c55e1a;border:1px solid rgba(34,197,94,.25);padding:.3rem .8rem;border-radius:999px}.upload-section{display:flex;flex-direction:column;gap:1.2rem}.drop-zone{border:2px dashed rgba(255,255,255,.15);border-radius:18px;padding:3rem 2rem;text-align:center;cursor:pointer;transition:all .25s ease;background:#ffffff05}.drop-zone:hover{border-color:var(--accent, #7c7cff);background:#7c7cff0d}.drop-zone.drag-over{border-color:var(--accent, #7c7cff);background:#7c7cff1a;transform:scale(1.01)}.drop-zone.has-file{border-style:solid;border-color:#22c55e66;background:#22c55e0d;padding:1.5rem 2rem}.drop-icon{font-size:2.8rem;margin-bottom:.8rem;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.drop-text{color:#ffffffb3;margin:0 0 .3rem;font-size:.95rem}.drop-link{color:var(--accent, #7c7cff);font-weight:600;text-decoration:underline}.drop-formats{font-size:.78rem;color:#ffffff4d;margin:0;letter-spacing:.05em}.file-preview{display:flex;align-items:center;gap:1rem;text-align:left}.file-badge{width:52px;height:52px;border-radius:12px;background:#7c7cff33;border:1px solid rgba(124,124,255,.4);display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:800;color:#a5b4fc;letter-spacing:.05em;flex-shrink:0}.file-name{margin:0 0 .2rem;font-size:.92rem;font-weight:600;color:#fff;word-break:break-all}.file-size{margin:0;font-size:.78rem;color:#fff6}.error-pill{background:#ef444426;border:1px solid rgba(239,68,68,.35);color:#fca5a5;padding:.6rem 1rem;border-radius:10px;font-size:.85rem}.btn-full{width:100%;justify-content:center;display:flex;align-items:center}.btn-generate{margin-top:2rem;padding:1rem 2rem;font-size:1rem}.btn-loader{display:flex;align-items:center;gap:.6rem}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.settings-section{display:flex;flex-direction:column;gap:1.8rem}.setting-label{display:block;font-size:.8rem;font-weight:600;color:#ffffff8c;text-transform:uppercase;letter-spacing:.07em;margin-bottom:.75rem}.count-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.count-btn{width:52px;height:44px;border-radius:10px;background:#ffffff0d;border:1.5px solid rgba(255,255,255,.1);color:#ffffffb3;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.count-btn:hover{border-color:var(--accent, #7c7cff);color:#fff}.count-btn.active{background:#7c7cff33;border-color:var(--accent, #7c7cff);color:#fff;box-shadow:0 0 12px #7c7cff4d}.count-input{width:80px;height:44px;border-radius:10px;background:#ffffff0d;border:1.5px solid rgba(255,255,255,.1);color:#fff;font-size:.9rem;text-align:center;padding:0 .5rem}.count-input:focus{outline:none;border-color:var(--accent, #7c7cff)}.difficulty-row{display:flex;gap:.75rem}.difficulty-btn{flex:1;padding:.85rem .6rem;border-radius:14px;background:#ffffff0a;border:1.5px solid rgba(255,255,255,.1);color:#ffffff8c;cursor:pointer;transition:all .25s;display:flex;flex-direction:column;align-items:center;gap:.25rem;text-align:center}.difficulty-btn:hover{background:#ffffff12;color:#ffffffd9}.difficulty-btn.active{background:#ffffff12}.diff-label{font-size:.9rem;font-weight:700;display:block}.diff-desc{font-size:.72rem;opacity:.65;display:block;line-height:1.3}.generating-screen{padding:4rem 2.5rem;display:flex;flex-direction:column;align-items:center;text-align:center;gap:1rem;position:relative;animation:panelIn .4s ease}.orbit-ring{position:absolute;width:160px;height:160px;border:1px solid rgba(124,124,255,.2);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-65%);animation:orbitSpin 4s linear infinite}.ring-2{width:220px;height:220px;border-color:#7c7cff1a;animation-duration:6s;animation-direction:reverse}@keyframes orbitSpin{to{transform:translate(-50%,-65%) rotate(360deg)}}.orbit-dot{position:absolute;width:8px;height:8px;background:var(--accent, #7c7cff);border-radius:50%;top:-4px;left:50%;margin-left:-4px;box-shadow:0 0 10px var(--accent, #7c7cff)}.dot-2{background:#22d3ee;box-shadow:0 0 10px #22d3ee}.ai-icon{font-size:3rem;animation:pulse 2s ease-in-out infinite;position:relative;z-index:1}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.generating-title{font-size:1.4rem;font-weight:700;margin:0;position:relative;z-index:1}.generating-step{color:#ffffff80;font-size:.9rem;margin:0;position:relative;z-index:1;animation:fadeStep 1.5s ease-in-out infinite}@keyframes fadeStep{0%,to{opacity:.5}50%{opacity:1}}.gen-bar-wrap{width:260px;height:4px;background:#ffffff14;border-radius:4px;overflow:hidden;margin-top:.5rem;position:relative;z-index:1}.gen-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent, #7c7cff),#22d3ee);border-radius:4px;animation:barFill 3s ease-in-out infinite}@keyframes barFill{0%{width:0%}60%{width:85%}to{width:85%}}.success-banner{position:relative;background:#22c55e14;border:1px solid rgba(34,197,94,.3);border-radius:18px;padding:1.5rem 1.8rem;margin-bottom:2rem;overflow:hidden;animation:panelIn .4s ease}.success-glow{position:absolute;top:-40px;right:-40px;width:180px;height:180px;background:radial-gradient(circle,rgba(34,197,94,.15),transparent 70%);pointer-events:none}.success-top{display:flex;align-items:center;gap:1rem}.success-icon{font-size:1.8rem;flex-shrink:0}.success-title{font-size:1.1rem;font-weight:700;margin:0 0 .2rem}.success-meta{font-size:.82rem;color:#ffffff80;margin:0}.btn-ghost{margin-left:auto;background:transparent;border:1px solid rgba(255,255,255,.2);color:#ffffffb3;padding:.45rem 1.1rem;border-radius:999px;cursor:pointer;font-size:.85rem;font-weight:600;white-space:nowrap;transition:all .2s;flex-shrink:0}.btn-ghost:hover{border-color:var(--accent, #7c7cff);color:#fff}.source-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.25rem}.source-chip{font-size:.78rem;font-weight:500;color:#fff9;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:.25rem .75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.error-banner{background:#ef444414;border:1px solid rgba(239,68,68,.3);border-radius:16px;padding:1.2rem 1.5rem;margin-bottom:1.5rem;animation:panelIn .3s ease}.error-banner-top{display:flex;align-items:flex-start;gap:.9rem}.error-banner-icon{font-size:1.4rem;flex-shrink:0}.error-banner-title{font-size:.95rem;font-weight:700;color:#fca5a5;margin:0 0 .3rem}.error-banner-msg{font-size:.85rem;color:#fff9;margin:0;line-height:1.5;word-break:break-word}.app-shell{display:flex;min-height:100vh;background:#0b0f19;color:#fff;font-family:Inter,sans-serif}.sidebar{width:240px;background:linear-gradient(180deg,#0f172a,#020617);padding:24px;box-shadow:4px 0 20px #0006}.logo{font-size:1.4rem;margin-bottom:40px}.menu a{display:block;margin-bottom:16px;color:#cbd5f5;text-decoration:none;font-weight:500;transition:.2s}.menu a:hover{color:#38bdf8;transform:translate(6px)}.app-main{flex:1;display:flex;flex-direction:column}.navbar{height:64px;background:#0f172acc;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;justify-content:space-between;align-items:center;padding:0 32px;border-bottom:1px solid rgba(255,255,255,.05)}.app-content{flex:1;padding:40px;animation:fadeIn .6s ease}.footer{padding:14px;text-align:center;background:#020617;font-size:.85rem;color:#94a3b8}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.dashboard{display:flex;flex-direction:column;gap:2rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem}.stat-card{background:linear-gradient(145deg,#0f172a,#020617);padding:1.5rem;border-radius:14px;box-shadow:0 0 25px #38bdf814}.stat-card h4{font-size:.9rem;opacity:.8}.stat-card p{font-size:2rem;font-weight:700;margin-top:.5rem}.progress-card{background:#020617;padding:1.5rem;border-radius:14px}.progress-bar-wrapper{width:100%;height:14px;background:#020617;border-radius:999px;overflow:hidden;margin:.5rem 0}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#38bdf8,#22d3ee);border-radius:999px;transition:width .6s ease}.recent-history{background:#020617;padding:1.5rem;border-radius:14px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin-bottom:2rem}.dashboard-card{background:linear-gradient(135deg,#1f2933,#111827);border-radius:16px;padding:1.5rem;color:#fff;box-shadow:0 10px 25px #0000004d;transition:transform .3s ease,box-shadow .3s ease}.dashboard-card:hover{transform:translateY(-4px);box-shadow:0 20px 40px #0006}.dashboard-label{font-size:.85rem;opacity:.75;margin-bottom:.5rem}.dashboard-value{font-size:2rem;font-weight:700}.history-section{margin-top:3rem}.section-title{margin-bottom:1.5rem;font-weight:600}.history-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}.history-card{background:#0f172a;border-radius:18px;padding:1.5rem;color:#e5e7eb;box-shadow:0 15px 35px #00000059;transition:transform .3s ease}.history-card:hover{transform:translateY(-5px)}.history-header{display:flex;justify-content:space-between;align-items:center}.history-date{font-size:.75rem;opacity:.6}.history-score{margin:.75rem 0;font-size:.9rem;opacity:.85}.progress-wrapper{height:10px;background:#1e293b;border-radius:999px;overflow:hidden;margin:.75rem 0}.progress-fill{height:100%;border-radius:999px}.history-footer{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem;font-size:.85rem}.grade-badge{background:#ffffff14;padding:.25rem .6rem;border-radius:999px}.empty-state{padding:2rem;text-align:center;opacity:.6}.progress-wrapper{position:relative;height:10px;background:#1e293b;border-radius:999px;overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#22d3ee,#38bdf8);border-radius:999px}.progress-label{margin-top:6px;display:block;font-size:13px;color:#cbd5f5}.insights-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-top:2rem}.insight-card{background:linear-gradient(145deg,#0b1220,#111827);padding:1.5rem;border-radius:16px;color:#fff}.insight-card.highlight{border:1px solid #22d3ee}.topic-row,.progress-row{display:flex;justify-content:space-between;align-items:center;margin-top:.75rem}.mini-bar{flex:1;height:6px;background:#1f2937;border-radius:4px;margin:0 10px;overflow:hidden}.mini-bar-fill{height:100%;background:linear-gradient(90deg,#22d3ee,#4ade80)}:root{--bg-main: #0b0f1a;--bg-panel: rgba(255,255,255,.06);--border-glass: rgba(255,255,255,.15);--accent: #7c7cff;--accent-soft: rgba(124,124,255,.25);--text-main: #ffffff;--text-muted: rgba(255,255,255,.65);--radius-lg: 18px;--radius-pill: 999px;--shadow-soft: 0 20px 40px rgba(0,0,0,.45)}body{margin:0;font-family:Inter,system-ui,sans-serif;background:radial-gradient(circle at top,#12182b,#070b14 70%);color:var(--text-main)}.glass-card{background:var(--bg-panel);border:1px solid var(--border-glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:var(--radius-lg);padding:1.6rem;box-shadow:var(--shadow-soft);transition:transform .3s ease,box-shadow .3s ease}.glass-card:hover{transform:translateY(-4px);box-shadow:0 25px 60px #0009}.btn-primary{background:linear-gradient(135deg,var(--accent),#5b5bff);color:#fff;border:none;padding:.9rem 2.4rem;border-radius:var(--radius-pill);font-weight:600;cursor:pointer;box-shadow:0 0 0 0 var(--accent-soft);transition:all .3s ease}.btn-primary:hover{box-shadow:0 0 0 10px var(--accent-soft);transform:translateY(-2px)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:10px}
