@font-face{font-family:Vazirmatn;src:url(fonts/Vazirmatn.woff2) format('woff2');font-weight:100 900;font-display:swap}
:root{
  --bg:#f4f2fd;--bg2:#ece8fb;--card:#ffffffd9;--card-solid:#fff;--line:#e6e1f7;--line2:#d9d2f3;
  --ink:#1e1b4b;--ink2:#4b4775;--mute:#8681a8;
  --p:#6d28d9;--p2:#7c3aed;--p3:#a78bfa;--p-soft:#efe9ff;--navy:#1e1352;--navy2:#2e1d73;
  --blue:#3b6cf6;--blue-soft:#e6eeff;--ok:#10b981;--ok-soft:#e3f8ef;--warn:#f59e0b;--warn-soft:#fff4dd;--bad:#ef4444;--bad-soft:#fde8e8;--gold:#f5b324;
  --r:18px;--r2:12px;--sh:0 6px 24px -8px rgba(76,29,149,.18),0 2px 6px -2px rgba(76,29,149,.08);--sh2:0 18px 50px -18px rgba(76,29,149,.35);
  --safe-b:env(safe-area-inset-bottom,0px);--nav-h:66px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%}
body{font-family:Vazirmatn,Tahoma,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.75;
  background-image:radial-gradient(1200px 500px at 100% -10%,#e2d9ff 0,transparent 60%),radial-gradient(900px 500px at -10% 110%,#dfe8ff 0,transparent 60%);background-attachment:fixed;overflow-x:hidden}
a{color:var(--p);text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
img{max-width:100%}
svg.i{width:21px;height:21px;fill:none;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:middle}
.sm svg.i,svg.i.sm{width:16px;height:16px}
h1,h2,h3,h4{margin:0;line-height:1.5}
.num{font-feature-settings:"ss01";font-variant-numeric:tabular-nums}
.muted{color:var(--mute)} .ink2{color:var(--ink2)} .ok-t{color:var(--ok)} .bad-t{color:var(--bad)} .warn-t{color:#b7791f} .p-t{color:var(--p)}
.hide{display:none!important}
.row{display:flex;gap:10px;align-items:center} .row.wrap{flex-wrap:wrap} .between{justify-content:space-between} .grow{flex:1;min-width:0}
.col{display:flex;flex-direction:column;gap:10px}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:1fr} .g3{grid-template-columns:1fr} .g4{grid-template-columns:repeat(2,1fr)}
@media(min-width:720px){.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}}
.mt{margin-top:14px}.mt2{margin-top:22px}.mb{margin-bottom:14px}
.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- layout ---------- */
#app{min-height:100vh}
.shell{display:flex;min-height:100vh}
.side{display:none}
.main{flex:1;min-width:0;padding:0 14px calc(var(--nav-h) + var(--safe-b) + 24px)}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;padding:12px 2px;margin:0 -2px;background:linear-gradient(var(--bg) 70%,transparent)}
.topbar .title{font-weight:800;font-size:17px}
.topbar .brand-m{display:flex;align-items:center;gap:8px;font-weight:900;color:var(--p)}
.iconbtn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:14px;border:1px solid var(--line);background:var(--card);box-shadow:var(--sh);cursor:pointer;color:var(--ink2)}
.iconbtn .dot{position:absolute;top:6px;left:6px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--bad);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center}
.avatar{width:40px;height:40px;border-radius:13px;background:linear-gradient(135deg,var(--p2),var(--blue));color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:800;flex:none}
.bnav{position:fixed;bottom:0;right:0;left:0;z-index:40;height:calc(var(--nav-h) + var(--safe-b));padding-bottom:var(--safe-b);background:rgba(255,255,255,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);display:flex;justify-content:space-around;box-shadow:0 -8px 30px -12px rgba(76,29,149,.25)}
.bnav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--mute);font-size:11.5px;font-weight:600;position:relative}
.bnav a.on{color:var(--p)}
.bnav a.on::before{content:"";position:absolute;top:0;width:34px;height:3px;border-radius:0 0 3px 3px;background:var(--p)}
.bnav a .pill{display:flex;padding:3px 14px;border-radius:12px}
.bnav a.on .pill{background:var(--p-soft)}
@media(min-width:1024px){
  .side{display:flex;flex-direction:column;width:260px;flex:none;position:sticky;top:0;height:100vh;padding:22px 16px;background:linear-gradient(180deg,var(--navy2),var(--navy) 70%);color:#ddd6fe;border-radius:0 0 0 0}
  .side .logo{display:flex;align-items:center;gap:10px;color:#fff;font-weight:900;font-size:19px;padding:4px 8px 18px}
  .side .logo small{display:block;font-weight:400;font-size:12px;color:#c4b5fd}
  .side nav{display:flex;flex-direction:column;gap:4px;flex:1;overflow:auto}
  .side nav a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:14px;color:#ddd6fe;font-weight:600;transition:.2s}
  .side nav a:hover{background:rgba(255,255,255,.07)}
  .side nav a.on{background:linear-gradient(90deg,#8b5cf6,#6d28d9);color:#fff;box-shadow:0 8px 24px -8px rgba(139,92,246,.8)}
  .side .promo{margin-top:12px;border-radius:16px;padding:14px;background:linear-gradient(135deg,rgba(139,92,246,.35),rgba(59,108,246,.25));border:1px solid rgba(255,255,255,.12);font-size:13px}
  .side .out{margin-top:10px;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:14px;background:rgba(255,255,255,.08);color:#fff;border:0;cursor:pointer;width:100%}
  .main{padding:0 28px 40px}
  .bnav,.only-m{display:none!important}
  .topbar{padding:18px 0}
}
@media(max-width:1023px){.only-d{display:none!important}}
.page{max-width:1240px;margin:0 auto;animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- cards ---------- */
.card{background:var(--card);border:1px solid rgba(255,255,255,.8);border-radius:var(--r);box-shadow:var(--sh);padding:16px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);min-width:0}
.card.flat{box-shadow:none;border-color:var(--line)}
.card h3{font-size:16px;font-weight:800;display:flex;align-items:center;gap:8px}
.card h3 svg{color:var(--p)}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.stat{display:flex;align-items:center;gap:12px;padding:14px}
.stat .ic{width:46px;height:46px;border-radius:15px;display:flex;align-items:center;justify-content:center;flex:none}
.stat .v{font-size:24px;font-weight:900;line-height:1.2}
.stat .l{font-size:12.5px;color:var(--mute);font-weight:600}
.ic.p{background:var(--p-soft);color:var(--p)}.ic.b{background:var(--blue-soft);color:var(--blue)}.ic.g{background:var(--ok-soft);color:var(--ok)}.ic.y{background:var(--warn-soft);color:#d97706}.ic.r{background:var(--bad-soft);color:var(--bad)}
.hero{position:relative;overflow:hidden;border-radius:22px;min-height:150px;padding:20px;color:#fff;background:#3b1d8f left center/cover no-repeat;box-shadow:var(--sh2);display:flex;flex-direction:column;justify-content:center}
.hero::before{content:"";position:absolute;inset:0;background:linear-gradient(270deg,rgba(30,19,82,.92) 0,rgba(46,29,115,.7) 55%,rgba(46,29,115,.15))}
.hero>*{position:relative}
.hero h2{font-size:21px;font-weight:900}
.hero p{margin:4px 0 0;opacity:.9;font-size:14px}
@media(min-width:720px){.hero{min-height:180px;padding:28px 34px}.hero h2{font-size:26px}}
.alert-card{display:flex;gap:12px;align-items:center;padding:14px 16px;border-radius:18px;background:linear-gradient(135deg,#7c3aed,#4f46e5);color:#fff;box-shadow:0 14px 34px -14px rgba(109,40,217,.8);animation:pop .4s ease}
.alert-card .ic{background:rgba(255,255,255,.18);width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex:none;animation:ring 2.2s ease infinite}
@keyframes ring{0%,70%,100%{transform:none}75%{transform:rotate(-12deg)}85%{transform:rotate(10deg)}}
@keyframes pop{from{transform:scale(.97);opacity:0}to{transform:none;opacity:1}}

/* ---------- buttons / forms ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 18px;border-radius:14px;border:1px solid transparent;font-weight:700;cursor:pointer;transition:.15s;white-space:nowrap;background:var(--card-solid);color:var(--ink);border-color:var(--line2)}
.btn:active{transform:scale(.98)}
.btn.pri{background:linear-gradient(135deg,var(--p2),#5b21b6);color:#fff;border:0;box-shadow:0 10px 24px -10px rgba(109,40,217,.9)}
.btn.blue{background:linear-gradient(135deg,#4f7bff,#2f5be6);color:#fff;border:0}
.btn.ok{background:var(--ok);color:#fff;border:0}
.btn.danger{background:var(--bad-soft);color:var(--bad);border-color:#fbd0d0}
.btn.ghost{background:transparent;border-color:transparent;color:var(--p)}
.btn.soft{background:var(--p-soft);color:var(--p);border-color:transparent}
.btn.sm{min-height:36px;padding:0 12px;border-radius:11px;font-size:13.5px}
.btn.block{width:100%}
.btn[disabled]{opacity:.55;pointer-events:none}
.btn .spin{width:18px;height:18px;border:2.5px solid currentColor;border-left-color:transparent;border-radius:50%;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
label.f{display:block;font-size:13px;font-weight:700;color:var(--ink2);margin-bottom:4px}
.input,select.input,textarea.input{width:100%;min-height:48px;padding:10px 14px;border-radius:14px;border:1.5px solid var(--line2);background:#fff;outline:none;transition:.15s;font-size:16px}
textarea.input{min-height:96px;resize:vertical;line-height:1.8}
.input:focus{border-color:var(--p3);box-shadow:0 0 0 4px rgba(167,139,250,.22)}
.input.ltr{direction:ltr;text-align:left;letter-spacing:.5px}
.field{margin-bottom:14px}
.hint{font-size:12.5px;color:var(--mute);margin-top:4px}
.err-msg{background:var(--bad-soft);color:#b91c1c;border-radius:12px;padding:10px 12px;font-size:14px;margin-bottom:12px}
.ok-msg{background:var(--ok-soft);color:#047857;border-radius:12px;padding:10px 12px;font-size:14px;margin-bottom:12px}
.check{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;user-select:none}
.check input{width:22px;height:22px;accent-color:var(--p)}
.switch{position:relative;width:46px;height:28px;flex:none}
.switch input{opacity:0;width:0;height:0}
.switch span{position:absolute;inset:0;border-radius:20px;background:#d4cfe9;transition:.2s;cursor:pointer}
.switch span::after{content:"";position:absolute;top:3px;right:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 2px 6px rgba(0,0,0,.2)}
.switch input:checked+span{background:var(--p2)}
.switch input:checked+span::after{right:21px}
.seg{display:inline-flex;background:var(--bg2);padding:4px;border-radius:14px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:transparent;padding:7px 14px;border-radius:11px;font-weight:700;color:var(--ink2);cursor:pointer;font-size:13.5px}
.seg button.on{background:#fff;color:var(--p);box-shadow:var(--sh)}
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;border:1.5px solid var(--line2);background:#fff;border-radius:999px;padding:6px 14px;font-weight:700;font-size:13.5px;cursor:pointer;color:var(--ink2);min-height:38px}
.chip.on{background:var(--p);border-color:var(--p);color:#fff}
.searchbox{position:relative}
.searchbox svg{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--mute)}
.searchbox .input{padding-right:44px}

/* ---------- badges / misc ---------- */
.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}
.b-new{background:linear-gradient(135deg,#8b5cf6,#6366f1);color:#fff}
.b-available{background:var(--ok-soft);color:#047857}
.b-in_progress{background:var(--warn-soft);color:#b45309}
.b-completed{background:var(--blue-soft);color:#2f5be6}
.b-expired{background:#f1f0f6;color:#8681a8}
.b-upcoming{background:#fff1f7;color:#be185d}
.b-draft{background:#f1f0f6;color:#6b6790}.b-scheduled{background:#fff1f7;color:#be185d}.b-published{background:var(--ok-soft);color:#047857}.b-archived{background:#f1f0f6;color:#8681a8}
.list{display:flex;flex-direction:column}
.li{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.li:last-child{border-bottom:0}
.li .t{font-weight:700}
.li .s{font-size:12.5px;color:var(--mute)}
.empty{text-align:center;padding:34px 16px;color:var(--mute)}
.empty .ic{width:64px;height:64px;border-radius:20px;margin:0 auto 10px;background:var(--p-soft);color:var(--p);display:flex;align-items:center;justify-content:center}
.empty .ic svg{width:30px;height:30px}
.empty b{display:block;color:var(--ink);font-size:16px;margin-bottom:2px}
.sk{background:linear-gradient(90deg,#ece8fb 25%,#f7f5ff 50%,#ece8fb 75%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:14px}
@keyframes sk{to{background-position:-200% 0}}
.bar-p{height:8px;border-radius:8px;background:var(--bg2);overflow:hidden}
.bar-p>i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,var(--p2),var(--blue))}
.ring{--v:0;--c:var(--p2);width:110px;height:110px;border-radius:50%;background:conic-gradient(var(--c) calc(var(--v)*1%),var(--bg2) 0);display:flex;align-items:center;justify-content:center;flex:none}
.ring>div{width:84px;height:84px;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:900;font-size:20px;line-height:1.2}
.ring small{font-size:11px;color:var(--mute);font-weight:600}
.kv{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(min-width:720px){.kv{grid-template-columns:repeat(4,1fr)}}
.kv>div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.kv b{display:block;font-size:19px;font-weight:900}
.kv span{font-size:12px;color:var(--mute);font-weight:600}
.chart-box{position:relative;height:240px}
@media(max-width:480px){.chart-box{height:210px}}

/* ---------- tables → cards on mobile ---------- */
.tbl{width:100%;border-collapse:separate;border-spacing:0}
.tbl th{font-size:12.5px;color:var(--mute);font-weight:700;text-align:right;padding:8px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:hover td{background:#faf9ff}
@media(max-width:760px){
  .tbl thead{display:none}
  .tbl,.tbl tbody,.tbl tr,.tbl td{display:block;width:100%}
  .tbl tr{background:#fff;border:1px solid var(--line);border-radius:16px;padding:8px 12px;margin-bottom:10px}
  .tbl td{border:0;padding:4px 0;display:flex;justify-content:space-between;gap:10px;align-items:center}
  .tbl td::before{content:attr(data-l);font-size:12px;color:var(--mute);font-weight:700}
  .tbl td.main-cell{font-weight:800;font-size:15px}
  .tbl td.main-cell::before{display:none}
}

/* ---------- exam cards ---------- */
.ecard{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:18px;background:#fff;border:1px solid var(--line);box-shadow:var(--sh);position:relative;overflow:hidden}
.ecard.is-new{border-color:#c4b5fd;box-shadow:0 0 0 3px rgba(167,139,250,.25),var(--sh)}
.ecard .t{font-weight:800;font-size:16px}
.ecard .meta{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--ink2)}
.ecard .meta span{display:inline-flex;align-items:center;gap:4px}
.ecard .meta svg{width:15px;height:15px;color:var(--p3)}

/* ---------- modal / sheet / toast ---------- */
.ov{position:fixed;inset:0;z-index:80;background:rgba(30,19,82,.45);backdrop-filter:blur(3px);display:flex;align-items:flex-end;justify-content:center;animation:fo .2s}
@keyframes fo{from{opacity:0}}
.sheet{background:#fff;width:100%;max-height:92vh;overflow:auto;border-radius:24px 24px 0 0;padding:8px 16px calc(18px + var(--safe-b));animation:up .25s ease}
.sheet .grab{width:42px;height:5px;border-radius:5px;background:#ddd6fe;margin:4px auto 10px}
@keyframes up{from{transform:translateY(40px);opacity:.5}}
@media(min-width:720px){.ov{align-items:center}.sheet{max-width:620px;border-radius:24px;padding:18px 22px}.sheet.wide{max-width:900px}.sheet .grab{display:none}}
.sheet-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;position:sticky;top:-8px;background:#fff;padding:6px 0;z-index:2}
.sheet-h h3{font-size:17px;font-weight:900}
.toasts{position:fixed;z-index:99;top:12px;left:12px;right:12px;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
.toast{pointer-events:auto;max-width:440px;width:100%;background:var(--navy);color:#fff;padding:12px 16px;border-radius:16px;box-shadow:var(--sh2);display:flex;gap:10px;align-items:center;animation:pop .25s;font-size:14px}
.toast.err{background:#b91c1c}.toast.ok{background:#047857}
.toast.click{cursor:pointer}

/* ---------- auth ---------- */
.auth{min-height:100vh;display:flex;flex-direction:column}
.auth .banner{height:200px;background:#2e1d73 url(img/banner-login.webp) center/cover;position:relative}
.auth .banner::after{content:"";position:absolute;inset:auto 0 0 0;height:60px;background:linear-gradient(transparent,var(--bg))}
.auth .box{width:100%;max-width:440px;margin:-40px auto 0;padding:0 16px 30px;position:relative;z-index:2}
.auth .card{padding:22px}
.auth h2{font-size:21px;font-weight:900;margin-bottom:4px}
.otp{display:flex;gap:8px;direction:ltr;justify-content:center}
.otp input{width:52px;height:58px;text-align:center;font-size:24px;font-weight:800;border-radius:14px;border:1.5px solid var(--line2);outline:none}
.otp input:focus{border-color:var(--p2);box-shadow:0 0 0 4px rgba(167,139,250,.22)}
@media(min-width:960px){
  .auth{flex-direction:row-reverse}
  .auth .banner{flex:1.3;height:auto;background-position:70% center}
  .auth .banner::after{display:none}
  .auth .box{flex:1;margin:0;display:flex;flex-direction:column;justify-content:center;max-width:none;padding:40px}
  .auth .box>*{max-width:420px;width:100%;margin-inline:auto}
}

/* ---------- exam taking ---------- */
.exam{min-height:100vh;display:flex;flex-direction:column;background:#f7f5ff}
.exam-top{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.95);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);padding:8px 12px}
.exam-top .t{font-weight:800;font-size:14px}
.timer{display:inline-flex;align-items:center;gap:6px;font-weight:900;font-size:18px;padding:4px 12px;border-radius:12px;background:var(--p-soft);color:var(--p);direction:ltr}
.timer.low{background:var(--bad-soft);color:var(--bad);animation:blink 1s infinite}
@keyframes blink{50%{opacity:.6}}
.save-st{font-size:12px;display:inline-flex;align-items:center;gap:4px}
.prog{height:4px;background:var(--bg2);border-radius:4px;overflow:hidden;margin-top:6px}
.prog i{display:block;height:100%;background:linear-gradient(90deg,var(--p2),var(--blue));transition:width .3s}
.exam-body{flex:1;max-width:820px;width:100%;margin:0 auto;padding:14px 12px 120px}
.qcard{background:#fff;border-radius:20px;padding:16px;box-shadow:var(--sh);border:1px solid var(--line)}
.qno{display:inline-flex;align-items:center;gap:6px;font-weight:800;color:var(--p);font-size:13px;background:var(--p-soft);padding:2px 12px;border-radius:999px}
.qbody{font-size:17px;line-height:2.05;margin:12px 0;white-space:pre-wrap;word-wrap:break-word}
.qimg{display:block;max-height:46vh;margin:8px auto;border-radius:12px}
.opt{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:right;padding:13px 14px;margin-bottom:10px;border-radius:16px;border:2px solid var(--line);background:#fff;cursor:pointer;font-size:16px;line-height:1.9;min-height:58px;transition:.12s}
.opt .k{flex:none;width:30px;height:30px;border-radius:10px;background:var(--bg2);display:flex;align-items:center;justify-content:center;font-weight:900;color:var(--ink2)}
.opt.on{border-color:var(--p2);background:#f6f1ff}
.opt.on .k{background:var(--p2);color:#fff}
.opt .tx{white-space:pre-wrap;flex:1;word-break:break-word}
.opt.right{border-color:var(--ok);background:var(--ok-soft)} .opt.right .k{background:var(--ok);color:#fff}
.opt.wrong{border-color:var(--bad);background:var(--bad-soft)} .opt.wrong .k{background:var(--bad);color:#fff}
.exam-foot{position:fixed;bottom:0;left:0;right:0;z-index:20;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:10px 12px calc(10px + var(--safe-b))}
.exam-foot .in{max-width:820px;margin:0 auto;display:flex;gap:8px}
.navgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(46px,1fr));gap:8px}
.navgrid button{height:46px;border-radius:12px;border:1.5px solid var(--line2);background:#fff;font-weight:800;cursor:pointer;position:relative}
.navgrid button.ans{background:var(--p2);border-color:var(--p2);color:#fff}
.navgrid button.cur{outline:3px solid var(--p3);outline-offset:1px}
.navgrid button.mk::after{content:"";position:absolute;top:-4px;left:-4px;width:12px;height:12px;border-radius:50%;background:var(--gold);border:2px solid #fff}
.offline{background:var(--warn);color:#fff;text-align:center;font-size:13px;padding:4px;font-weight:700}

/* ---------- result ---------- */
.res-q{border:1px solid var(--line);border-radius:18px;background:#fff;padding:14px;margin-bottom:12px}
.res-q.c{border-right:5px solid var(--ok)} .res-q.w{border-right:5px solid var(--bad)} .res-q.b{border-right:5px solid #cbd5e1} .res-q.p{border-right:5px solid var(--warn)}
.exp{background:#f6f3ff;border-radius:12px;padding:10px 12px;margin-top:8px;font-size:14.5px;white-space:pre-wrap}
.subj-row{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.subj-row:last-child{border:0}
.subj-row .bar-p{grid-column:1/-1}
.methodology{font-size:13px;color:var(--ink2);background:var(--blue-soft);border-radius:14px;padding:10px 14px}

/* ---------- wizard ---------- */
.steps{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:2px}
.steps::-webkit-scrollbar{display:none}
.steps button{flex:none;display:flex;align-items:center;gap:8px;border:0;background:#fff;border-radius:14px;padding:8px 12px;font-weight:700;color:var(--mute);cursor:pointer;border:1.5px solid var(--line)}
.steps button b{width:26px;height:26px;border-radius:9px;background:var(--bg2);display:flex;align-items:center;justify-content:center;font-size:13px}
.steps button.on{color:var(--p);border-color:var(--p3)}
.steps button.on b{background:var(--p2);color:#fff}
.steps button.done b{background:var(--ok);color:#fff}
.qrow{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:16px;background:#fff;margin-bottom:8px}
.qrow.sel{border-color:var(--p3);background:#faf7ff}
.qrow .body{flex:1;min-width:0;font-size:14.5px}
.qrow .body .tx{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap}
.qrow .tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.tag{font-size:11.5px;font-weight:700;padding:1px 8px;border-radius:8px;background:var(--bg2);color:var(--ink2)}
.tag.d1{background:var(--ok-soft);color:#047857}.tag.d2{background:var(--warn-soft);color:#b45309}.tag.d3{background:var(--bad-soft);color:#b91c1c}
.drag{cursor:grab;color:var(--mute);touch-action:none;padding:4px}
.qrow.dragging{opacity:.6;border-style:dashed}
.sticky-act{position:sticky;bottom:calc(var(--nav-h) + var(--safe-b) + 8px);z-index:15;margin-top:12px;display:flex;gap:8px;padding:10px;border-radius:18px;background:rgba(255,255,255,.95);backdrop-filter:blur(10px);box-shadow:var(--sh2);border:1px solid var(--line)}
@media(min-width:1024px){.sticky-act{bottom:12px}}
.filters{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
@media(min-width:900px){.filters{grid-template-columns:repeat(4,1fr)}}
.filters .input{min-height:42px;font-size:14px;padding:6px 10px;border-radius:12px}
.pager{display:flex;gap:6px;justify-content:center;align-items:center;margin-top:12px}
.preview-phone{max-width:390px;margin:0 auto;border:10px solid #1e1352;border-radius:38px;overflow:hidden;background:#f7f5ff;box-shadow:var(--sh2)}

.dtp-g{display:grid;grid-template-columns:.8fr 1.3fr 1fr;gap:6px}
.dtp-g [data-p=t]{grid-column:1/3}
.dtp-g select{padding-left:6px;padding-right:10px}
@media(min-width:1100px){.dtp-g{grid-template-columns:.7fr 1.2fr .9fr 1fr auto}.dtp-g [data-p=t]{grid-column:auto}}
@media(max-width:719px){.hero::before{background:linear-gradient(270deg,rgba(30,19,82,.93),rgba(46,29,115,.82))}}

.sbanner{position:relative;display:block;border-radius:24px;overflow:hidden;box-shadow:0 22px 50px -20px rgba(76,29,149,.6),0 0 0 1px rgba(255,255,255,.6) inset;animation:bannerIn .7s cubic-bezier(.2,.8,.2,1);isolation:isolate}
.sbanner img{display:block;width:100%;height:auto;transition:transform 1.2s cubic-bezier(.2,.8,.2,1)}
.sbanner:hover img{transform:scale(1.025)}
.sbanner::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25);pointer-events:none}
.sbanner .shine{position:absolute;top:0;bottom:0;width:40%;left:-60%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-18deg);animation:shine 5s ease-in-out 1s infinite;pointer-events:none}
@keyframes shine{0%{left:-60%}35%,100%{left:130%}}
@keyframes bannerIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.sbanner,.sbanner .shine{animation:none}}
.greet{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:18px;background:var(--card);border:1px solid rgba(255,255,255,.8);box-shadow:var(--sh)}
.rich{white-space:normal}
.rich img{max-width:100%;height:auto;max-height:360px;vertical-align:middle;border-radius:8px;margin:4px 0;background:#fff}
.opt .rich img,.opt .tx.rich img{max-height:200px}
.rich table{border-collapse:collapse;margin:8px 0;max-width:100%;display:block;overflow-x:auto;font-size:.92em}
.rich td,.rich th{border:1px solid var(--line2);padding:4px 8px;text-align:center}
.rich p{margin:.3em 0}
.katex{direction:ltr;unicode-bidi:isolate;font-size:1.05em}
.katex-display{direction:ltr;overflow-x:auto;overflow-y:hidden;padding:4px 0}

/* ---------- exam wizard ---------- */
.wz{max-width:860px;margin:0 auto}
.wz-top{margin-bottom:12px}
.wz-phases{display:flex;gap:6px}
.wz-phases>div{flex:1;display:flex;align-items:center;gap:8px;font-weight:800;font-size:13.5px;color:var(--mute)}
.wz-phases i{font-style:normal;width:26px;height:26px;border-radius:9px;background:var(--bg2);display:flex;align-items:center;justify-content:center;font-size:12.5px;flex:none}
.wz-phases .on{color:var(--p)} .wz-phases .on i{background:var(--p2);color:#fff;box-shadow:0 6px 14px -6px rgba(109,40,217,.8)}
.wz-phases .done{color:var(--ok)} .wz-phases .done i{background:var(--ok);color:#fff}
.wz-bar{height:6px;border-radius:6px;background:var(--bg2);margin-top:10px;overflow:hidden}
.wz-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--p3),var(--p2));transition:width .35s}
.wz-sum{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin-bottom:12px;padding:2px}
.wz-sum::-webkit-scrollbar{display:none}
.wz-sum button{flex:none;display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line2);background:#fff;border-radius:10px;padding:4px 10px;font-size:12.5px;font-weight:700;color:var(--ink2);cursor:pointer;max-width:220px}
.wz-sum button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-sum button svg{color:var(--p)}
.wz-card{padding:18px}
.wz-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:16px}
.wz-no{flex:none;width:52px;height:52px;border-radius:16px;background:var(--p-soft);color:var(--p);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:900;font-size:19px;line-height:1.1}
.wz-no small{font-size:10.5px;font-weight:700;opacity:.75}
.wz-head h2{font-size:19px;font-weight:900}
.wz-help{display:flex;gap:6px;align-items:flex-start;margin:6px 0 0;font-size:13.5px;line-height:1.8;color:var(--ink2);background:#fffbea;border:1px solid #f8e7a8;border-radius:12px;padding:8px 10px}
.wz-help svg{color:#d29b00;margin-top:3px}
.wz-label{font-weight:800;font-size:14px;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.wz-label svg{color:var(--p)}
.wz-foot{margin-top:12px;font-size:13.5px;color:var(--ink2);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.wz-foot svg{color:var(--ok)}
/* big choice cards */
.wz-opts{display:grid;gap:12px}
@media(min-width:720px){.wz-opts{grid-template-columns:1fr 1fr}}
.wz-opt{position:relative;text-align:right;display:flex;flex-direction:column;gap:6px;padding:18px;border-radius:18px;border:2px solid var(--line);background:#fff;cursor:pointer;transition:.15s;font:inherit;color:inherit}
.wz-opt:hover{border-color:var(--p3)}
.wz-opt .ico{width:48px;height:48px;border-radius:15px;background:var(--p-soft);color:var(--p);display:flex;align-items:center;justify-content:center}
.wz-opt .ico svg{width:26px;height:26px}
.wz-opt b{font-size:17px;font-weight:900}
.wz-opt .sub{font-size:13.5px;color:var(--ink2);line-height:1.8}
.wz-opt em{font-style:normal;font-size:12px;font-weight:700;color:var(--p);background:var(--p-soft);border-radius:8px;padding:2px 8px;align-self:flex-start}
.wz-opt .tick,.wz-tile .tick{position:absolute;top:12px;left:12px;width:26px;height:26px;border-radius:50%;border:2px solid var(--line2);display:flex;align-items:center;justify-content:center;color:transparent;background:#fff}
.wz-opt.on{border-color:var(--p2);background:#faf7ff;box-shadow:0 10px 26px -14px rgba(109,40,217,.7)}
.wz-opt.on .ico{background:var(--p2);color:#fff}
.wz-opt.on .tick,.wz-tile.on .tick{background:var(--p2);border-color:var(--p2);color:#fff}
/* chips */
.wz-chips{display:flex;flex-wrap:wrap;gap:8px}
.wz-chip{border:1.5px solid var(--line2);background:#fff;border-radius:12px;padding:8px 14px;font-weight:700;font-size:14px;cursor:pointer;color:var(--ink2);min-height:42px;font-family:inherit}
.wz-chip.sm{min-height:34px;padding:4px 10px;font-size:12.5px}
.wz-chips.big .wz-chip{flex:1;min-width:96px;min-height:54px;font-size:15.5px}
.wz-chip.on{background:var(--p2);border-color:var(--p2);color:#fff;box-shadow:0 8px 18px -10px rgba(109,40,217,.9)}
/* subject tiles */
.wz-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(min-width:720px){.wz-grid{grid-template-columns:repeat(3,1fr)}}
.wz-tile{position:relative;text-align:right;border:2px solid var(--line);background:#fff;border-radius:16px;padding:14px 12px 12px;cursor:pointer;display:flex;flex-direction:column;gap:2px;font:inherit;color:inherit;min-height:78px}
.wz-tile b{font-size:15px;font-weight:800;padding-left:28px}
.wz-tile small{color:var(--mute);font-size:12.5px;font-weight:600}
.wz-tile.on{border-color:var(--p2);background:#faf7ff}
.wz-tile .tick{top:10px;left:10px;width:22px;height:22px}
/* rows (sources, chapters, audience) */
.wz-list{display:flex;flex-direction:column;gap:8px}
.wz-row{display:flex;align-items:center;gap:10px;text-align:right;width:100%;border:1.5px solid var(--line);background:#fff;border-radius:14px;padding:11px 12px;cursor:pointer;font:inherit;color:inherit;min-height:58px}
.wz-row.static{cursor:default}
.wz-row b{display:block;font-size:14.5px;font-weight:800}
.wz-row small{display:block;color:var(--mute);font-size:12.5px;font-weight:600}
.wz-row .cnt{font-weight:800;color:var(--ink2);font-size:13px;background:var(--bg2);border-radius:9px;padding:2px 9px}
.wz-row .radio,.wz-row .box{flex:none;width:22px;height:22px;border:2px solid var(--line2);border-radius:50%;display:flex;align-items:center;justify-content:center;color:transparent}
.wz-row .box{border-radius:7px}
.wz-row.on{border-color:var(--p2);background:#faf7ff}
.wz-row.on .radio{border:7px solid var(--p2)}
.wz-row.on .box{background:var(--p2);border-color:var(--p2);color:#fff}
.wz-row .no{flex:none;width:30px;height:30px;border-radius:10px;background:var(--bg2);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:var(--ink2)}
.wz-row .sel{flex:none;background:var(--p2);color:#fff;font-weight:800;font-size:12px;border-radius:9px;padding:2px 9px}
.wz-row>svg{color:var(--mute)}
.wz-subj+.wz-subj{margin-top:18px}
.wz-picked{display:flex;align-items:center;gap:6px;flex-wrap:wrap;background:var(--p-soft);color:var(--p);border-radius:12px;padding:8px 12px;margin-bottom:14px;font-size:14px}
/* years */
.wz-years{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
@media(min-width:720px){.wz-years{grid-template-columns:repeat(5,1fr)}}
.wz-years button{border:1.5px solid var(--line2);background:#fff;border-radius:14px;padding:8px 6px;cursor:pointer;font:inherit;color:inherit;display:flex;flex-direction:column;align-items:center}
.wz-years b{font-size:16px;font-weight:900}
.wz-years small{font-size:11.5px;color:var(--mute);font-weight:600}
.wz-years .on{border-color:var(--p2);background:var(--p2);color:#fff}
.wz-years .on small{color:#e9e2ff}
/* stepper + totals */
.stepper{display:flex;align-items:center;border:1.5px solid var(--line2);border-radius:12px;overflow:hidden;flex:none}
.stepper button{width:40px;height:42px;border:0;background:var(--bg2);font-size:20px;font-weight:800;cursor:pointer;color:var(--p)}
.stepper input{width:52px;height:42px;border:0;text-align:center;font:inherit;font-weight:800;font-size:16px;background:#fff}
.wz-total{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:16px;background:var(--bg2);border-radius:14px;padding:10px 14px}
.wz-total>div{display:flex;align-items:baseline;gap:6px}
.wz-total b{font-size:22px;font-weight:900;color:var(--p)}
.wz-total span{font-size:12.5px;color:var(--ink2);font-weight:700}
.wz-total .dist{margin-inline-start:auto;gap:4px}
/* review list */
.wz-q .qn{flex:none;width:30px;height:30px;border-radius:10px;background:var(--p-soft);color:var(--p);display:flex;align-items:center;justify-content:center;font-size:13px}
.wz-q .acts{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.wz-q .acts .iconbtn{width:34px;height:34px;box-shadow:none;border-radius:10px}
.wz-q .acts .sc{display:flex;align-items:center;gap:4px;margin-inline-start:auto;font-size:12.5px;color:var(--mute);font-weight:700}
.wz-q .acts .sc input{width:66px;min-height:34px;padding:2px 6px}
/* rules + publish */
.wz-rule{display:flex;align-items:center;gap:12px;padding:12px;border:1.5px solid var(--line);border-radius:14px;background:#fff;margin-bottom:8px;cursor:pointer}
.wz-rule .ico{flex:none;width:40px;height:40px;border-radius:12px;background:var(--p-soft);color:var(--p);display:flex;align-items:center;justify-content:center}
.wz-rule b{display:block;font-size:14.5px}
.wz-rule small{display:block;color:var(--mute);font-size:12.5px;line-height:1.7}
.wz-recap{background:linear-gradient(135deg,#faf7ff,#eef3ff);border:1px solid var(--line);border-radius:16px;padding:14px}
.wz-recap>b{font-size:16px;font-weight:900}
.wz-recap .meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px;font-size:13px;color:var(--ink2)}
.wz-recap .meta svg{color:var(--p)}
.wz-later{border:1.5px dashed var(--line2);border-radius:14px;padding:10px 12px}
.wz-later summary{cursor:pointer;font-weight:700;color:var(--ink2);font-size:14px}
.wz-later[open] summary{margin-bottom:8px}
@media(min-width:1024px){.wz-card{padding:24px 26px}.wz-head h2{font-size:21px}}

.wz-sub{margin:-4px 0 8px;font-size:12.5px;color:var(--mute)}
.wz-when-val{display:flex;align-items:center;gap:8px;background:var(--p-soft);color:var(--p);border-radius:12px;padding:9px 12px;margin-bottom:10px;font-size:14.5px}
.wz-when-val b{color:var(--ink)}
.wz-when-val.off{background:var(--bg2);color:var(--mute)}
.wz-days{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 6px}
.wz-days::-webkit-scrollbar{display:none}
.wz-days button{flex:none;min-width:76px;border:1.5px solid var(--line2);background:#fff;border-radius:14px;padding:7px 10px;cursor:pointer;font:inherit;color:inherit;display:flex;flex-direction:column;align-items:center;line-height:1.5}
.wz-days b{font-size:14px;font-weight:800}
.wz-days small{font-size:11.5px;color:var(--mute);font-weight:600}
.wz-days .on{background:var(--p2);border-color:var(--p2);color:#fff}
.wz-days .on small{color:#e9e2ff}
.wz-times{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px}
.wz-times>svg{color:var(--mute)}
.wz-times input{width:120px;min-height:34px;padding:2px 8px}

/* mother site */
.mother-note .ic{flex:none;width:42px;height:42px;border-radius:13px;background:var(--p-soft);color:var(--p);display:flex;align-items:center;justify-content:center}
.mother-note .warn-line{margin-top:8px;background:var(--warn-soft);color:#92400e;border-radius:10px;padding:6px 10px;font-size:13px;display:flex;gap:6px;align-items:flex-start;flex-wrap:wrap}
.my-cons{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ink2);min-width:0}
.my-cons svg{color:var(--p);flex:none}.my-cons b{color:var(--p)}

.wz-opt.soon{cursor:default;opacity:.6;background:var(--bg2);border-style:dashed}
.wz-opt.soon:hover{border-color:var(--line)}
.wz-opt.soon em{background:#fff;color:var(--mute)}
/* feedback & question reports */
.qflag{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line2);background:transparent;color:var(--ink2);border-radius:999px;padding:3px 10px;font:inherit;font-size:12px;cursor:pointer;transition:.15s}
.qflag:hover{border-color:#f59e0b;color:#b45309;background:#fffbeb}
.qflag .ic{width:14px;height:14px}
.fb-stars{display:flex;align-items:center;gap:4px}
.fb-stars button{border:0;background:transparent;padding:4px;cursor:pointer;color:var(--line2);transition:transform .12s}
.fb-stars button .ic{width:30px;height:30px}
.fb-stars button.on{color:#f59e0b}.fb-stars button.on .ic path{fill:#fde68a}
.fb-stars button:active{transform:scale(1.2)}
.fb-rt{font-size:13px;margin-inline-start:6px}
.fb-kinds{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fb-kind{display:flex;align-items:center;gap:6px;border:1.5px solid var(--line2);background:var(--card,#fff);border-radius:12px;padding:10px;font:inherit;font-size:13.5px;cursor:pointer;color:var(--ink);text-align:start}
.fb-kind.on{border-color:var(--p);background:var(--p-soft,#f5f3ff);color:var(--p);font-weight:700}
.fb-promise{margin-top:10px;background:linear-gradient(135deg,#f5f3ff,#eef4ff);border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.9;color:#4c1d95}
.fb-ctx{background:var(--blue-soft,#eef4ff);border-radius:10px;padding:8px 10px;font-size:13px;margin-bottom:10px}
.fb-after .fb-ico{width:42px;height:42px;border-radius:12px;background:var(--p-soft,#f5f3ff);color:var(--p);display:grid;place-items:center;flex:none}
.fb-item{border-bottom:1px solid var(--line);padding:10px 0}.card.fb-item{border-bottom:0;padding:14px}
.fb-item:last-child{border-bottom:0}
.fb-body{white-space:pre-wrap;margin:6px 0;line-height:1.9}
.fb-r{color:#f59e0b;letter-spacing:1px;font-size:13px}
.fb-reply{background:var(--ok-soft);color:#047857;border-radius:10px;padding:8px 10px;font-size:13px;margin-top:6px}
.fb-mini{background:#fffbeb;color:#92400e;border-radius:10px;padding:8px 10px;font-size:13px}
.qr-list{display:grid;gap:8px}
.qr-opt{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line2);border-radius:12px;padding:10px 12px;cursor:pointer;font-size:14px}
.qr-opt:has(input:checked){border-color:#f59e0b;background:#fffbeb}
.qr-why{background:#fffbeb;border-radius:10px;padding:8px 12px;margin:10px 0;font-size:13.5px;line-height:2}
.row.end{justify-content:flex-end}
@media(max-width:520px){.fb-kinds{grid-template-columns:1fr}}
