/* QSMmed ULTRA — production UI */
:root {
  --bg:#07070b; --bg2:#0b0b11; --surface:#121219; --surface2:#171720;
  --surface3:#1c1c26; --line:#2a2a37; --line2:#343444; --text:#f7f7fb;
  --muted:#9898aa; --purple:#8b5cf6; --purple2:#6d28d9; --purple3:#b9a3ff;
  --green:#21d879; --amber:#f5a900; --red:#ef5350; --sidebar:260px;
  --shadow:0 24px 70px rgba(0,0,0,.28); --radius:18px;
}
*{box-sizing:border-box}
html{background:var(--bg);color-scheme:dark}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none} button,input,textarea,select{font:inherit}
body:after{content:"";position:fixed;left:var(--sidebar);right:0;bottom:0;height:180px;pointer-events:none;background:radial-gradient(ellipse at 50% 115%,rgba(124,58,237,.28),transparent 68%);z-index:0}

/* shared */
.app{min-height:100vh}.main{min-height:100vh;margin-left:var(--sidebar);position:relative;z-index:1}.content{width:min(1220px,100%);margin:0 auto;padding:30px 30px 90px}.page-title{margin:0;font-size:clamp(28px,3vw,38px);line-height:1.05;letter-spacing:-1.2px}.subtitle{margin:8px 0 26px;color:var(--muted);line-height:1.5}.muted{color:var(--muted)}.green{color:var(--green)}.purple{color:var(--purple3)}
.card{background:linear-gradient(180deg,var(--surface2),var(--surface));border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.card.glow{border-color:#5a3c94;box-shadow:0 24px 70px rgba(83,45,155,.13)}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.grid2{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,1fr);gap:18px}.stack{display:flex;flex-direction:column;gap:18px}.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.section-title{margin:0 0 14px;font-size:11px;letter-spacing:1.7px;text-transform:uppercase;color:#a4a4b4;font-weight:900}.big{font-size:44px;font-weight:950;letter-spacing:-1px}
.btn{border:1px solid transparent;border-radius:11px;min-height:42px;padding:10px 15px;display:inline-flex;align-items:center;justify-content:center;gap:7px;background:linear-gradient(135deg,var(--purple2),var(--purple));color:#fff;font-weight:850;cursor:pointer;transition:.18s transform,.18s filter,.18s border-color}.btn:hover{filter:brightness(1.08);transform:translateY(-1px)}.btn-light{background:#1a1a23;border-color:#31313d;color:#eee}.btn-danger{background:#7d2530}.btn-success{background:#0b7548}.btn-amber{background:#2b210e;border-color:#785313;color:#ffd166}.badge{display:inline-flex;border-radius:999px;padding:5px 9px;background:#252532;color:#d1d1db;font-size:12px}.badge.active{background:#103a28;color:#78efaa}.badge.pending{background:#47330f;color:#ffd76d}.success,.flash-success{background:#103a28;color:#8cf5ba;border:1px solid #1c5b3e;border-radius:12px;padding:12px 14px;margin-bottom:16px}.error,.flash-error{background:#491d24;color:#ffb4bd;border:1px solid #73303b;border-radius:12px;padding:12px 14px;margin-bottom:16px}
.input,select,textarea{width:100%;color:#f4f4f8;background:#15151d;border:1px solid #30303d;border-radius:11px;padding:11px 12px;margin:7px 0 14px;outline:none;transition:.18s border-color,.18s box-shadow}.input:focus,select:focus,textarea:focus{border-color:#805bd7;box-shadow:0 0 0 3px rgba(124,58,237,.12)}textarea{min-height:110px;resize:vertical}label{font-size:13px;color:#d6d6df;font-weight:700}
.table-wrap{width:100%;overflow:auto;border-radius:14px}.table{width:100%;border-collapse:collapse;min-width:700px}.table th,.table td{padding:13px 12px;text-align:left;border-bottom:1px solid #292934;vertical-align:middle}.table th{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#8f8fa0}.table tr:hover td{background:rgba(255,255,255,.012)}

/* app navigation */
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);padding:19px 14px 16px;background:#0c0c11;border-right:1px solid #202029;display:flex;flex-direction:column;z-index:40}.brand{font-size:22px;font-weight:950;letter-spacing:-.7px;padding:4px 4px 22px}.brand span{font-size:9px;letter-spacing:1px;margin-left:7px;padding:4px 7px;border:1px solid #6746b8;border-radius:999px;color:#d7ccff;box-shadow:0 0 18px rgba(124,58,237,.25)}.menu{display:flex;flex-direction:column;gap:5px}.menu a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:11px;color:#a5a5b4;font-size:14px;transition:.16s}.menu a:hover,.menu a.active{background:#251a40;color:#fff}.ico{width:18px;text-align:center;color:#a888ff}.spacer{flex:1}.profilebox{border-top:1px solid #25252e;padding:16px 3px 0}.profilebox strong{display:block;font-size:13px}.profilebox small{display:block;color:#8f8f9e;margin:4px 0 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar{height:64px;display:flex;align-items:center;gap:16px;padding:0 34px;border-bottom:1px solid #1f1f27;position:sticky;top:0;z-index:30;background:rgba(8,8,12,.92);backdrop-filter:blur(18px)}.crumb{font-weight:800}.top-search{margin-left:auto}.top-search input{width:min(330px,30vw);background:#111118;border:1px solid #2d2d38;border-radius:11px;color:#eee;padding:10px 13px;outline:none}.faculty-pill{border:1px solid #2d2d38;border-radius:11px;padding:9px 12px;background:#121218;font-size:13px}.mobile-nav{display:none}

/* dashboard/content */
.module-row{display:grid;grid-template-columns:2fr .8fr 1.35fr 1fr;gap:14px;align-items:center;padding:12px 0;border-top:1px solid #25252e;font-size:13px}.module-row:first-of-type{border-top:0}.progress{height:7px;background:#202029;border-radius:999px;overflow:hidden}.progress>i{display:block;height:100%;background:linear-gradient(90deg,#7040df,#aa8cff);border-radius:999px}.rate-card{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center}.rate-orb{width:100%;border-radius:17px;padding:34px 20px;text-align:center;background:linear-gradient(180deg,#372064,#6e2fd1);box-shadow:inset 0 0 45px rgba(255,255,255,.04)}.rate-orb b{font-size:54px}.module-card{min-height:126px;padding:18px;border:1px solid var(--line);border-radius:17px;background:var(--surface);display:flex;flex-direction:column;justify-content:space-between;transition:.16s border-color,.16s transform}.module-card:hover{border-color:#6f50be;transform:translateY(-2px)}.module-card .head{display:flex;gap:12px;align-items:center}.module-icon{width:44px;height:44px;border-radius:12px;background:#2f2151;color:#ae8cff;display:grid;place-items:center;font-size:20px}.module-card h3{margin:0;font-size:16px}.module-card small{color:#9292a3}.lesson-section{overflow:hidden;margin-bottom:18px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.lesson-section-head{padding:16px 18px;border-bottom:1px solid #292934;display:flex;justify-content:space-between}.lesson-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:14px}.lesson-card{overflow:hidden;border:1px solid #2d2d38;border-radius:14px;background:#16161e;transition:.16s}.lesson-card:hover{border-color:#7351cc;transform:translateY(-1px)}.lesson-cover{height:160px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 45%,#5d3fd3 0,#171e3a 28%,#0b0d16 68%);font-size:48px}.lesson-cover.has-image{background-size:cover;background-position:center}.lesson-body{padding:13px}.lesson-title{font-weight:850;min-height:38px}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.chip{font-size:11px;color:#aaa;border:1px solid #343441;background:#121218;border-radius:999px;padding:5px 9px}.chip.classic{border-color:#986500;color:#ffc72c}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:18px}.stat-card .n{font-size:31px;font-weight:950;margin:8px 0}.check-progress{display:flex;align-items:center;gap:20px}.ring{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;position:relative;background:conic-gradient(var(--purple) var(--pct),#282833 0)}.ring:after{content:"";position:absolute;inset:7px;border-radius:50%;background:var(--surface)}.ring span{position:relative;z-index:1;font-weight:900}.check-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.check-item{display:flex;align-items:center;gap:10px;border:1px solid #2d2d38;border-radius:10px;background:#15151d;padding:10px 11px}.check-item input{accent-color:var(--purple);width:17px;height:17px}.empty{padding:36px;text-align:center;color:#9999aa}.question-card{padding:18px;border:1px solid var(--line);border-radius:16px;background:var(--surface);margin-bottom:13px}.choice{display:flex;gap:10px;border:1px solid #2e2e39;border-radius:11px;padding:12px;margin:8px 0;cursor:pointer}.choice:hover{border-color:#7854d1;background:#191621}.choice input{accent-color:var(--purple)}.question-tools{display:flex;gap:8px;justify-content:flex-end}.anki-rating{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.anki-rating .btn:nth-child(1){background:#6b252b}.anki-rating .btn:nth-child(2){background:#725117}.anki-rating .btn:nth-child(3){background:#176343}.anki-rating .btn:nth-child(4){background:#354f8b}

/* auth */
.auth-page{min-height:100vh;background:#08080d}.auth-page:after{display:none}.auth-layout{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(430px,.8fr)}.auth-visual{min-height:100vh;position:relative;overflow:hidden;padding:46px 56px;display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid #22222b;background:radial-gradient(circle at 18% 8%,rgba(124,58,237,.24),transparent 30%),radial-gradient(circle at 75% 82%,rgba(109,40,217,.32),transparent 32%),linear-gradient(145deg,#0d0c14,#09090e 56%,#111020)}.auth-visual:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.022) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.022) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to bottom,#000 0%,transparent 78%);pointer-events:none}.auth-brand,.auth-mobile-brand{position:relative;z-index:2;display:flex;align-items:center;gap:10px;font-size:24px;font-weight:950;letter-spacing:-.7px}.auth-brand b,.auth-mobile-brand b{font-size:9px;letter-spacing:1px;color:#ddd1ff;border:1px solid #6846bc;border-radius:999px;padding:4px 8px;background:rgba(124,58,237,.12)}.auth-brand-mark{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(135deg,#6d28d9,#9d6dff);box-shadow:0 12px 34px rgba(124,58,237,.3)}.auth-hero-copy{position:relative;z-index:2;max-width:760px;margin:auto 0}.eyebrow{display:inline-block;font-size:11px;letter-spacing:2px;font-weight:900;color:#ac91ff;margin-bottom:13px}.auth-hero-copy h2{margin:0 0 24px;font-size:clamp(48px,5.4vw,82px);line-height:.95;letter-spacing:-4px}.auth-hero-copy p{max-width:600px;margin:0;color:#a9a9ba;font-size:17px;line-height:1.65}.auth-feature-row{display:flex;flex-wrap:wrap;gap:9px;margin-top:30px}.auth-feature-row span{font-size:12px;color:#d0cadc;border:1px solid #302d3e;background:rgba(17,15,24,.72);border-radius:999px;padding:8px 11px}.auth-panel{min-height:100vh;display:grid;place-items:center;padding:46px clamp(28px,5vw,74px);background:linear-gradient(180deg,#111118,#0b0b10)}.auth-box{width:min(470px,100%)}.auth-mobile-brand{display:none;margin-bottom:42px}.auth-box h1{margin:0 0 9px;font-size:42px;letter-spacing:-1.8px;line-height:1.05}.auth-subtitle{margin:0 0 28px;color:#9999aa;line-height:1.55}.auth-form label{display:block;margin-top:2px}.auth-form .input{height:52px;margin:7px 0 17px;background:#15151d}.auth-primary,.auth-secondary{width:100%;height:50px}.auth-primary{margin-top:6px;box-shadow:0 15px 36px rgba(124,58,237,.21)}.auth-divider{display:flex;align-items:center;gap:12px;color:#70707e;font-size:10px;text-transform:uppercase;letter-spacing:1.2px;margin:23px 0}.auth-divider:before,.auth-divider:after{content:"";height:1px;flex:1;background:#2a2a34}.auth-foot{text-align:center;color:#676776;font-size:11px;margin-top:24px}

/* admin */
.admin-shell{min-height:100vh;background:var(--bg)}.admin-top{height:66px;display:flex;align-items:center;gap:14px;padding:0 28px;border-bottom:1px solid #22222b;position:sticky;top:0;z-index:25;background:rgba(8,8,12,.94);backdrop-filter:blur(16px)}.admin-brand{font-weight:950;font-size:18px;margin-right:auto}.admin-brand span{color:var(--purple3)}.admin-top a{color:#b9b9c6}.admin-main{width:min(1240px,100%);margin:0 auto;padding:28px 24px 70px}.admin-titlebar{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:20px}.admin-kicker{color:#a78bfa;font-size:11px;font-weight:900;letter-spacing:1.4px;text-transform:uppercase}.admin-titlebar h1{font-size:34px;margin:4px 0 0;letter-spacing:-1px}.admin-nav{display:flex;gap:8px;flex-wrap:wrap}.admin-nav a{padding:8px 11px;border:1px solid #2e2e39;border-radius:10px;background:#15151c;color:#c9c9d3;font-size:12px}.admin-nav a:hover{border-color:#7652ce;color:#fff}.admin-stat{position:relative;overflow:hidden}.admin-stat:after{content:"";position:absolute;width:110px;height:110px;border-radius:50%;right:-42px;bottom:-50px;background:radial-gradient(circle,rgba(124,58,237,.24),transparent 70%)}.admin-stat small{color:var(--muted)}

/* responsive */
@media(max-width:1080px){:root{--sidebar:220px}.content{padding:24px 20px 86px}.lesson-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-grid{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.auth-layout{grid-template-columns:1fr 460px}.auth-visual{padding:40px 42px}.auth-hero-copy h2{letter-spacing:-2.8px}}
@media(max-width:820px){body:after{left:0}.sidebar{display:none}.main{margin-left:0}.topbar{height:58px;padding:0 15px}.top-search{display:none}.faculty-pill{margin-left:auto;font-size:11px}.content{padding:22px 14px 92px}.mobile-nav{position:fixed;left:10px;right:10px;bottom:10px;height:62px;z-index:60;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;background:rgba(18,18,25,.95);backdrop-filter:blur(18px);border:1px solid #323240;border-radius:16px;box-shadow:0 18px 50px rgba(0,0,0,.4)}.mobile-nav a{text-align:center;color:#aaaabb;font-size:10px;line-height:1.6}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.module-row{grid-template-columns:1.8fr .8fr .8fr}.module-row .hide-sm{display:none}.auth-layout{display:block}.auth-visual{display:none}.auth-panel{min-height:100vh;padding:36px 22px;background:radial-gradient(circle at 50% 108%,rgba(109,40,217,.27),transparent 42%),#0b0b10}.auth-mobile-brand{display:flex}.auth-box{width:min(520px,100%)}.admin-main{padding:22px 14px 60px}.admin-top{padding:0 14px}.admin-titlebar{align-items:flex-start;flex-direction:column}.admin-nav{width:100%}}
@media(max-width:560px){.grid,.lesson-grid,.stat-grid{grid-template-columns:1fr}.content{padding-left:12px;padding-right:12px}.card{padding:16px;border-radius:15px}.module-row{grid-template-columns:1fr auto}.module-row>div.progress{display:none}.module-row>span:nth-last-child(1){grid-column:2}.lesson-cover{height:145px}.check-row{grid-template-columns:1fr}.anki-rating{grid-template-columns:1fr 1fr}.auth-panel{display:block;padding:26px 17px 38px}.auth-mobile-brand{margin-bottom:52px;font-size:21px}.auth-box h1{font-size:34px}.auth-subtitle{font-size:14px}.auth-form .input{height:50px}.admin-top{height:auto;min-height:62px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}.admin-brand{width:100%}.admin-nav a{flex:1;text-align:center}.table{min-width:650px}.big{font-size:38px}}


/* payment */
.payment-line{display:grid;grid-template-columns:120px minmax(0,1fr);gap:14px;align-items:center;padding:13px 0;border-bottom:1px solid #292934}.payment-line:last-child{border-bottom:0}.payment-line span{color:var(--muted);font-size:13px}.payment-line strong{font-size:14px;overflow-wrap:anywhere}.payment-code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:#d8ccff}.upload-zone{position:relative;min-height:190px;border:1px dashed #4a3b68;border-radius:16px;background:linear-gradient(180deg,#15131d,#111118);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:22px;cursor:pointer;transition:.18s border-color,.18s background}.upload-zone:hover{border-color:#8b5cf6;background:#191522}.upload-zone input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.upload-zone strong{font-size:15px;margin-top:9px}.upload-zone small{color:var(--muted);margin-top:5px}.upload-icon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:#2e2050;color:#c1aaff;font-size:24px}
@media(max-width:820px){.payment-line{grid-template-columns:90px minmax(0,1fr)}}
@media(max-width:560px){.payment-line{grid-template-columns:1fr;gap:5px}.upload-zone{min-height:160px}}
