:root{
  --navy-0:#070c24; --navy-1:#0a1130; --navy-2:#0e1640;
  --gold:#f6b500; --gold-bright:#ffd24e; --blue:#4361ee; --blue-soft:#6b82ff;
  --txt:#eef1ff; --muted:#9aa6d6; --line:rgba(246,181,0,.22);
  --glass:rgba(255,255,255,.045); --glass-2:rgba(255,255,255,.07);
  --shadow:0 18px 50px -18px rgba(0,0,0,.7);
  --radius:20px;
}
html[data-theme="light"]{
  --navy-0:#eef1fb; --navy-1:#f5f7ff; --navy-2:#ffffff;
  --gold:#c98a00; --gold-bright:#e9a200; --blue:#2f44c0; --blue-soft:#4258d6;
  --txt:#111634; --muted:#566091; --line:rgba(201,138,0,.28);
  --glass:rgba(255,255,255,.7); --glass-2:rgba(255,255,255,.9);
  --shadow:0 16px 40px -20px rgba(40,55,120,.35);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:'DM Sans',system-ui,sans-serif;
  background:
    radial-gradient(1100px 600px at 78% -8%, rgba(67,97,238,.22), transparent 60%),
    radial-gradient(900px 520px at 12% 4%, rgba(246,181,0,.14), transparent 55%),
    var(--navy-1);
  color:var(--txt); line-height:1.55; overflow-x:hidden; min-height:100vh;
  transition:background .4s ease,color .3s ease;
}
.wrap{max-width:1200px;margin:0 auto;padding:0 20px}
.eyebrow{font-family:'Sora';font-size:.72rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
h1,h2,h3{font-family:'Sora';font-weight:800;line-height:1.08;letter-spacing:-.01em}

/* ---------- header ---------- */
header{
  position:sticky;top:0;z-index:60;
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  background:linear-gradient(180deg, color-mix(in srgb,var(--navy-1) 86%, transparent), color-mix(in srgb,var(--navy-1) 55%, transparent));
  border-bottom:1px solid var(--line);
}
.bar{display:flex;align-items:center;gap:14px;padding:12px 20px;max-width:1200px;margin:0 auto}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--txt);min-width:0}
.brand img{width:42px;height:42px;border-radius:11px;object-fit:cover;box-shadow:0 0 0 1px var(--line),0 6px 18px -6px rgba(0,0,0,.6)}
.brand .fallback{width:42px;height:42px;border-radius:11px;display:none;place-items:center;background:linear-gradient(135deg,var(--blue),var(--navy-2));font-size:1.3rem}
.brand .name{font-family:'Sora';font-weight:800;font-size:1.18rem;letter-spacing:-.02em;white-space:nowrap}
.brand .name b{color:var(--gold)}
.brand .tag{display:block;font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:500}
.controls{margin-left:auto;display:flex;align-items:center;gap:10px}

.ctrl{
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;
  border:1px solid var(--line);background:var(--glass);color:var(--txt);
  padding:9px 13px;border-radius:13px;font-family:'Sora';font-weight:600;font-size:.84rem;
  transition:transform .15s ease,box-shadow .2s ease,background .2s ease;
}
.ctrl:hover{transform:translateY(-1px);background:var(--glass-2);box-shadow:0 8px 20px -10px rgba(0,0,0,.5)}
.ctrl:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.ctrl .ic{width:18px;height:18px;display:grid;place-items:center}
#themeBtn .sun{display:none}
html[data-theme="light"] #themeBtn .moon{display:none}
html[data-theme="light"] #themeBtn .sun{display:block}

/* ---------- language menu ---------- */
.lang{position:relative}
.lang-btn{
  background:linear-gradient(135deg, color-mix(in srgb,var(--gold) 22%, transparent), color-mix(in srgb,var(--blue) 20%, transparent));
  border:1px solid var(--line);
}
.lang-btn .globe{font-size:1rem;filter:drop-shadow(0 0 6px rgba(246,181,0,.5))}
.lang-menu{
  position:absolute;right:0;top:calc(100% + 10px);width:230px;max-height:340px;overflow:auto;
  background:var(--navy-2);border:1px solid var(--line);border-radius:16px;
  box-shadow:var(--shadow);padding:8px;opacity:0;visibility:hidden;transform:translateY(-8px);
  transition:opacity .18s ease,transform .18s ease,visibility .18s;z-index:80;
}
.lang-menu.open{opacity:1;visibility:visible;transform:translateY(0)}
.lang-menu .lm-title{font-family:'Sora';font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);padding:6px 10px 8px}
.lang-opt{
  display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  background:none;border:none;color:var(--txt);text-align:left;cursor:pointer;
  padding:9px 11px;border-radius:10px;font-family:'DM Sans';font-size:.92rem;
}
.lang-opt:hover,.lang-opt:focus-visible{background:var(--glass-2);outline:none}
.lang-opt .en{color:var(--muted);font-size:.74rem}
#google_translate_element{position:absolute;left:-9999px;top:-9999px;height:0;overflow:hidden}
.goog-te-banner-frame,.skiptranslate iframe{display:none!important}
body{top:0!important}

/* ---------- hero ---------- */
.hero{padding:30px 0 8px}
.hero-banner{
  position:relative;border-radius:24px;overflow:hidden;border:1px solid var(--line);
  box-shadow:var(--shadow);background:linear-gradient(135deg,var(--navy-2),var(--navy-0));
}
.hero-banner img{display:block;width:100%;height:auto}
.hero-banner .bn-fallback{display:none;padding:46px 28px;text-align:center}
.hero-banner .bn-fallback h1{font-size:clamp(2.4rem,7vw,4.2rem);background:linear-gradient(120deg,#fff 30%,var(--gold) 75%);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-banner .bn-fallback h1 span{color:var(--gold);-webkit-text-fill-color:var(--gold)}
.hero-banner .bn-fallback p{color:var(--muted);margin-top:10px;font-size:1.05rem}

.hero-cta{display:flex;flex-wrap:wrap;align-items:center;gap:14px;justify-content:center;margin:22px auto 4px}
.btn{
  display:inline-flex;align-items:center;gap:10px;text-decoration:none;cursor:pointer;
  font-family:'Sora';font-weight:700;font-size:1rem;padding:14px 26px;border-radius:15px;border:none;
  transition:transform .16s ease,box-shadow .22s ease,filter .2s ease;
}
.btn-gold{background:linear-gradient(135deg,var(--gold-bright),var(--gold));color:#1a1300;box-shadow:0 14px 30px -10px rgba(246,181,0,.6)}
.btn-gold:hover{transform:translateY(-2px);filter:brightness(1.05);box-shadow:0 18px 38px -10px rgba(246,181,0,.7)}
.btn-ghost{background:var(--glass);color:var(--txt);border:1px solid var(--line)}
.btn-ghost:hover{transform:translateY(-2px);background:var(--glass-2)}
.btn:focus-visible{outline:2px solid var(--gold);outline-offset:3px}

/* signature trajectory divider */
.trail{display:block;width:100%;max-width:760px;margin:26px auto;opacity:.9}

/* ---------- trust strip ---------- */
.trust{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0 4px}
.trust .pill{
  background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:14px 15px;
  display:flex;gap:11px;align-items:center;transition:transform .2s ease,background .2s ease}
.trust .pill:hover{transform:translateY(-3px);background:var(--glass-2)}
.trust .pi{font-size:1.5rem;line-height:1}
.trust b{font-family:'Sora';font-size:.92rem;display:block}
.trust small{color:var(--muted);font-size:.74rem;line-height:1.3;display:block;margin-top:2px}

/* ---------- section ---------- */
section.blk{padding:42px 0}
.shead{text-align:center;max-width:640px;margin:0 auto 28px}
.shead h2{font-size:clamp(1.6rem,4vw,2.3rem);margin-top:8px}
.shead p{color:var(--muted);margin-top:10px}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:26px}
.tab{
  position:relative;display:inline-flex;align-items:center;gap:8px;cursor:pointer;
  font-family:'Sora';font-weight:600;font-size:.95rem;color:var(--muted);
  background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:11px 18px;
  transition:color .2s ease,background .2s ease,transform .15s ease;
}
.tab:hover:not(.locked){color:var(--txt);transform:translateY(-1px)}
.tab.active{color:#1a1300;background:linear-gradient(135deg,var(--gold-bright),var(--gold));border-color:transparent;box-shadow:0 12px 26px -12px rgba(246,181,0,.6)}
.tab.active::before{content:"♛";position:absolute;top:-9px;left:50%;transform:translateX(-50%);font-size:.8rem;color:var(--gold)}
.tab.locked{cursor:not-allowed;opacity:.62}
.tab .soon{font-family:'DM Sans';font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;background:var(--blue);color:#fff;padding:2px 7px;border-radius:20px}
.tab:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

.panel{display:none;animation:fade .35s ease}
.panel.show{display:block}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* mock card */
.mock-card{
  max-width:620px;margin:0 auto;position:relative;overflow:hidden;
  background:linear-gradient(160deg, var(--glass-2), var(--glass));
  border:1px solid var(--line);border-radius:24px;padding:30px;box-shadow:var(--shadow);
}
.mock-card::after{content:"";position:absolute;inset:0;background:radial-gradient(420px 180px at 90% -20%,rgba(246,181,0,.18),transparent 60%);pointer-events:none}
.mock-top{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.mock-ic{width:54px;height:54px;border-radius:15px;display:grid;place-items:center;font-size:1.7rem;background:linear-gradient(135deg,var(--blue),var(--navy-2));border:1px solid var(--line);flex:none}
.mock-card h3{font-size:1.5rem}
.mock-card .sub{color:var(--muted);font-size:.9rem;margin-top:2px}
.mock-meta{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 22px}
.chip{font-family:'Sora';font-size:.78rem;font-weight:600;background:var(--glass);border:1px solid var(--line);border-radius:30px;padding:7px 14px;color:var(--txt)}
.chip b{color:var(--gold)}
.mock-card .btn{width:100%;justify-content:center;position:relative;z-index:2}

/* coming soon panel */
.soon-panel{max-width:560px;margin:0 auto;text-align:center;background:var(--glass);border:1px dashed var(--line);border-radius:22px;padding:46px 26px}
.soon-panel .lock{font-size:2.6rem;display:block;margin-bottom:12px}
.soon-panel h3{font-size:1.4rem}
.soon-panel p{color:var(--muted);margin-top:8px}

/* ---------- prepare for ---------- */
.prep{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:880px;margin:0 auto}
.prep .item{display:flex;align-items:center;gap:11px;background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:14px 16px;font-family:'Sora';font-weight:600;font-size:.95rem;transition:transform .2s,background .2s}
.prep .item:hover{transform:translateY(-2px);background:var(--glass-2)}
.prep .tick{flex:none;width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:linear-gradient(135deg,var(--gold-bright),var(--gold));color:#1a1300;font-weight:800;font-size:.9rem}

/* ---------- features ---------- */
.feat{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.feat .card{background:var(--glass);border:1px solid var(--line);border-radius:18px;padding:22px;transition:transform .22s ease,background .22s ease,border-color .22s}
.feat .card:hover{transform:translateY(-4px);background:var(--glass-2);border-color:color-mix(in srgb,var(--gold) 45%,transparent)}
.feat .fi{width:50px;height:50px;border-radius:13px;display:grid;place-items:center;font-size:1.5rem;margin-bottom:14px;background:linear-gradient(135deg, color-mix(in srgb,var(--blue) 40%,transparent), color-mix(in srgb,var(--navy-2) 80%,transparent));border:1px solid var(--line)}
.feat h3{font-size:1.12rem}
.feat p{color:var(--muted);font-size:.88rem;margin-top:6px}

/* ---------- exams ---------- */
.exams{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.exam{background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:18px 14px;text-align:center;transition:transform .2s,background .2s}
.exam:hover{transform:translateY(-3px);background:var(--glass-2)}
.exam .ex-em{font-size:1.6rem}
.exam b{font-family:'Sora';display:block;margin-top:8px;font-size:.98rem;color:var(--gold)}
.exam small{color:var(--muted);font-size:.76rem}

/* ---------- bottom strip ---------- */
.strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;background:var(--glass);border:1px solid var(--line);border-radius:20px;padding:18px;margin-top:8px}
.strip .s{display:flex;align-items:center;gap:10px;justify-content:center;font-family:'Sora';font-weight:600;font-size:.9rem}
.strip .s .em{font-size:1.3rem}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--line);margin-top:30px;padding:34px 0 40px;text-align:center}
.bd{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 14px;color:var(--muted);font-size:.86rem}
.bd .seg{display:inline-flex;flex-direction:column;line-height:1.2}
.bd .seg .lab{font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);opacity:.8}
.bd .seg .val{font-family:'Sora';font-weight:700;color:var(--txt);font-size:.95rem}
.bd .seg .val.gold{color:var(--gold)}
.bd .dot{width:5px;height:5px;border-radius:50%;background:var(--line)}
footer .dom{margin-top:18px;font-family:'Sora';font-weight:700;color:var(--txt)}
footer .dom a{color:var(--gold);text-decoration:none}
footer .cp{margin-top:6px;color:var(--muted);font-size:.78rem}

/* ---------- responsive ---------- */
@media(max-width:860px){
  .trust{grid-template-columns:repeat(2,1fr)}
  .prep{grid-template-columns:repeat(2,1fr)}
  .feat{grid-template-columns:repeat(2,1fr)}
  .exams{grid-template-columns:repeat(3,1fr)}
  .strip{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:560px){
  .brand .tag{display:none}
  .brand .name{font-size:1rem}
  .ctrl{padding:9px 11px;font-size:.8rem}
  .lang-btn .lt{display:none}
  .trust,.prep,.feat,.exams,.strip{grid-template-columns:1fr 1fr}
  .strip{grid-template-columns:1fr}
  section.blk{padding:32px 0}
  .mock-card{padding:22px}
  .tabs{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;padding-bottom:6px;-webkit-overflow-scrolling:touch}
  .tab{flex:none}
}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* ---- text hero (banner removed) ---- */
.hero-text{text-align:center;padding:42px 10px 6px}
.hero-title{font-size:clamp(2.8rem,11vw,6rem);letter-spacing:-.02em;background:linear-gradient(120deg,var(--txt) 26%,var(--gold) 74%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 8px 30px rgba(246,181,0,.25))}
.hero-title span{color:var(--gold);-webkit-text-fill-color:var(--gold)}
.hero-sub{color:var(--muted);margin:14px auto 0;font-size:clamp(1rem,2.4vw,1.22rem);max-width:600px}
/* ---- engagement bar ---- */
.engage{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:18px auto 0}
.eg-item{display:inline-flex;align-items:center;gap:8px;font-family:'Sora';font-weight:700;font-size:.9rem;color:var(--txt);text-decoration:none;background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:11px 16px;cursor:pointer;transition:transform .15s,background .2s,box-shadow .2s}
.eg-item:hover{transform:translateY(-2px);background:var(--glass-2)}
.eg-item .eg-ic{font-size:1.05rem;line-height:1}
.eg-item .eg-l{color:var(--muted);font-weight:600}
.eg-item svg{width:18px;height:18px;display:block}
.eg-item.like{border:none;background:linear-gradient(135deg,#ff5a7a,#e23a5e);color:#fff}
.eg-item.like .eg-l{color:rgba(255,255,255,.85)}
.eg-item.like.liked{box-shadow:0 12px 26px -10px rgba(226,58,94,.6)}
.eg-item.like.liked .eg-ic{animation:pop .45s ease}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.4)}100%{transform:scale(1)}}
.eg-item.wa{border-color:rgba(37,211,102,.45)} .eg-item.wa:hover{background:rgba(37,211,102,.12)}
.eg-item.tg{border-color:rgba(41,182,246,.45)} .eg-item.tg:hover{background:rgba(41,182,246,.12)}
@media(max-width:560px){.engage{gap:8px}.eg-item{padding:10px 13px;font-size:.84rem}}

/* ---- telegram focus ---- */
.btn-tg{background:linear-gradient(135deg,#29b6f6,#0088cc);color:#fff;box-shadow:0 14px 30px -10px rgba(0,136,204,.6)}
.btn-tg:hover{transform:translateY(-2px);filter:brightness(1.06);box-shadow:0 18px 38px -10px rgba(0,136,204,.7)}
.btn.lg{font-size:1.08rem;padding:16px 32px}
.tab .live{font-family:'DM Sans';font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;background:#0088cc;color:#fff;padding:2px 7px;border-radius:20px}
.tab.active .live{background:#0d1430;color:#fff}
.mock-ic.tg{background:linear-gradient(135deg,#29b6f6,#0088cc)}
.tg-feature-wrap{padding-top:30px;padding-bottom:14px}
.tg-feature{position:relative;overflow:hidden;text-align:center;max-width:760px;margin:0 auto;background:linear-gradient(160deg, color-mix(in srgb,#0088cc 15%, var(--glass-2)), var(--glass));border:1px solid rgba(41,182,246,.42);border-radius:26px;padding:42px 28px;box-shadow:0 26px 64px -26px rgba(0,136,204,.55)}
.tg-glow{position:absolute;inset:0;background:radial-gradient(520px 230px at 50% -12%, rgba(41,182,246,.30), transparent 60%);pointer-events:none}
.tg-feature>*{position:relative;z-index:2}
.tg-badge{display:inline-block;font-family:'Sora';font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#29b6f6;background:rgba(41,182,246,.12);border:1px solid rgba(41,182,246,.35);padding:7px 14px;border-radius:30px;margin-bottom:16px}
.tg-ic{font-size:3rem;margin-bottom:4px;filter:drop-shadow(0 6px 18px rgba(0,136,204,.5))}
.tg-feature h2{font-size:clamp(1.7rem,4.6vw,2.5rem)}
.tg-feature h2 span{color:#29b6f6}
.tg-feature>p{color:var(--muted);max-width:480px;margin:12px auto 24px;font-size:1.02rem}
.tg-list{display:grid;grid-template-columns:repeat(2,auto);gap:13px 30px;justify-content:center;margin:0 auto 28px}
.tg-li{display:flex;align-items:center;gap:10px;font-family:'Sora';font-weight:600;font-size:.96rem}
.tg-li span{font-size:1.2rem}
@media(max-width:560px){.tg-list{grid-template-columns:1fr;justify-items:start;text-align:left}.tg-feature{padding:32px 20px}}

/* ===== Diploma King — feature scripts ===== */
(function(){
  function gc(n){var m=document.cookie.match('(^|;)\s*'+n+'\s*=\s*([^;]+)');return m?m.pop():'';}
  function sc(n,v,d){var e=new Date();e.setTime(e.getTime()+d*864e5);document.cookie=n+'='+v+';expires='+e.toUTCString()+';path=/';}
  function esc(s){return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');}
  function $(id){return document.getElementById(id);}

  /* ---- question bank ---- */
  var BANK=[
   {q:"If 3x + 5 = 20, then x = ?",o:["3","5","15","25"],a:1,e:"3x=15 → x=5."},
   {q:"The value of (2³ × 2²) is:",o:["16","32","64","8"],a:1,e:"2^(3+2)=2^5=32."},
   {q:"SI unit of electric current is:",o:["Volt","Ohm","Ampere","Watt"],a:2,e:"Current is measured in Ampere (A)."},
   {q:"Area of a circle of radius r is:",o:["2πr","πr²","πd","2πr²"],a:1,e:"Area = πr²."},
   {q:"Which gas is most abundant in Earth's atmosphere?",o:["Oxygen","Hydrogen","Nitrogen","CO₂"],a:2,e:"Nitrogen ≈ 78%."},
   {q:"The chemical formula of water is:",o:["H₂O","CO₂","O₂","NaCl"],a:0,e:"Water = H₂O."},
   {q:"Speed = Distance / ?",o:["Force","Time","Mass","Energy"],a:1,e:"Speed = Distance ÷ Time."},
   {q:"√144 = ?",o:["11","12","14","16"],a:1,e:"12 × 12 = 144."},
   {q:"Ohm's law: V = ?",o:["I/R","IR","I+R","R/I"],a:1,e:"V = I × R."},
   {q:"The unit of force is:",o:["Joule","Newton","Pascal","Watt"],a:1,e:"Force is measured in Newton (N)."},
   {q:"LCM of 4 and 6 is:",o:["12","24","8","10"],a:0,e:"LCM(4,6)=12."},
   {q:"Acceleration due to gravity (g) ≈",o:["9.8 m/s²","6.4 m/s²","3.2 m/s²","12 m/s²"],a:0,e:"g ≈ 9.8 m/s² on Earth."}
  ];

  /* ---- streak ---- */
  (function(){
    var t=new Date().toDateString(), last=gc('dk_sd'), n=parseInt(gc('dk_sn')||'0',10)||0;
    if(last!==t){
      var y=new Date(Date.now()-864e5).toDateString();
      n=(last===y)?n+1:1; sc('dk_sd',t,400); sc('dk_sn',String(n),400);
    }
    var el=$('streakN'); if(el)el.textContent='🔥 '+n;
  })();

  /* ---- TTS ---- */
  function speak(txt){
    if(!('speechSynthesis'in window))return;
    speechSynthesis.cancel();
    var u=new SpeechSynthesisUtterance(txt);
    u.lang=/[\u0900-\u097F]/.test(txt)?'hi-IN':'en-IN'; u.rate=.96;
    speechSynthesis.speak(u);
  }
  document.addEventListener('click',function(e){
    var b=e.target.closest&&e.target.closest('.spk'); if(!b)return;
    if(b.dataset.spk==='qotd'&&window.__qotd)speak(window.__qotd);
    else if(b.dataset.txt)speak(b.dataset.txt);
  });

  /* ---- QOTD ---- */
  (function(){
    var box=$('qotdBox'); if(!box)return;
    var day=Math.floor(Date.now()/864e5)%BANK.length, q=BANK[day], done=false;
    window.__qotd=q.q+'. Options: '+q.o.join(', ');
    var html='<div class="qq">'+esc(q.q)+'</div>';
    q.o.forEach(function(op,i){html+='<button class="qopt" data-i="'+i+'">'+esc(op)+'</button>';});
    box.innerHTML=html;
    box.querySelectorAll('.qopt').forEach(function(btn){
      btn.addEventListener('click',function(){
        if(done)return; done=true; var i=+btn.dataset.i;
        box.querySelectorAll('.qopt').forEach(function(b,j){
          if(j===q.a)b.classList.add('correct'); if(j===i&&i!==q.a)b.classList.add('wrong');
        });
        box.insertAdjacentHTML('beforeend','<div class="qexp">'+(i===q.a?'✅ Correct! ':'❌ ')+esc(q.e)+'</div>');
      });
    });
  })();

  /* ---- quick practice quiz ---- */
  (function(){
    var start=$('quizStart'), area=$('quizArea'); if(!start)return;
    start.addEventListener('click',function(){
      var pool=BANK.slice().sort(function(){return Math.random()-.5}).slice(0,5);
      var html=''; pool.forEach(function(q,n){
        html+='<div class="qcard" data-a="'+q.a+'"><div class="qq">'+(n+1)+'. '+esc(q.q)+'</div>';
        q.o.forEach(function(op,i){html+='<button class="qopt" data-i="'+i+'">'+esc(op)+'</button>';});
        html+='<div class="qexp" style="display:none">'+esc(q.e)+'</div></div>';
      });
      html+='<button class="btn btn-gold" id="quizCheck" style="width:100%;justify-content:center;margin-top:14px">Check Score</button><div id="quizRes"></div>';
      area.innerHTML=html; start.style.display='none';
      area.querySelectorAll('.qcard').forEach(function(c){
        c.querySelectorAll('.qopt').forEach(function(b){
          b.addEventListener('click',function(){c.querySelectorAll('.qopt').forEach(function(x){x.classList.remove('sel')});b.classList.add('sel');});
        });
      });
      $('quizCheck').addEventListener('click',function(){
        var sc=0; area.querySelectorAll('.qcard').forEach(function(c){
          var a=+c.dataset.a, sel=c.querySelector('.qopt.sel');
          c.querySelectorAll('.qopt').forEach(function(b,j){if(j===a)b.classList.add('correct');});
          if(sel){var si=+sel.dataset.i; if(si===a)sc++; else sel.classList.add('wrong');}
          c.querySelector('.qexp').style.display='block';
        });
        this.style.display='none';
        var pct=sc*20;
        $('quizRes').innerHTML='<div class="tres" style="text-align:center;font-size:1.1rem;margin-top:14px">You scored <b>'+sc+'/5</b> ('+pct+'%) 🎉</div>'+
          '<div style="display:flex;gap:8px;margin-top:10px"><input id="lbName" placeholder="Your name" maxlength="20" style="flex:1;background:var(--glass);border:1px solid var(--line);color:var(--txt);border-radius:11px;padding:11px"><button class="btn btn-gold" id="lbAdd" style="padding:11px 16px">🏆 Add</button></div>';
        $('lbAdd').addEventListener('click',function(){
          var nm=($('lbName').value||'Student').trim();
          fetch('?action=score',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:nm,score:pct})})
            .then(function(r){return r.json()}).then(function(d){if(d&&d.ok){renderBoard(d.items);$('quizRes').insertAdjacentHTML('beforeend','<div class="tres" style="text-align:center;color:var(--gold);margin-top:8px">Added to leaderboard! ⬇</div>');}});
        });
      });
    });
  })();

  /* ---- countdown ---- */
  (function(){
    var grid=$('cdGrid'); if(!grid)return;
    // EDIT these dates anytime:
    var EX={'JEECUP (UP)':'2026-08-20','DCECE (Bihar)':'2026-09-05','MAH POLYCET':'2026-08-28','Karnataka DCET':'2026-09-15'};
    var names=Object.keys(EX);
    grid.innerHTML=names.map(function(n){return '<div class="cd-card" data-d="'+EX[n]+'"><div class="cd-name">'+n+'</div><div class="cd-time">—</div><div class="cd-sub"></div></div>';}).join('');
    function tick(){
      grid.querySelectorAll('.cd-card').forEach(function(c){
        var diff=new Date(c.dataset.d+'T09:00:00').getTime()-Date.now();
        var t=c.querySelector('.cd-time'), s=c.querySelector('.cd-sub');
        if(diff<=0){t.textContent='📋';s.textContent='Counselling / check board site';}
        else{var d=Math.floor(diff/864e5),hh=Math.floor(diff%864e5/36e5);t.textContent=d+'d';s.textContent=hh+'h to go';}
      });
    }
    tick(); setInterval(tick,60000);
  })();

  /* ---- tools ---- */
  window.dkPct=function(){var m=+$('pcM').value,t=+$('pcT').value;$('pcR').innerHTML=(t>0)?'Percentage: <b>'+(m/t*100).toFixed(2)+'%</b>':'Enter valid marks.';};
  window.dkRank=function(){var m=+$('rkM').value,t=+$('rkT').value,a=+$('rkA').value||100000;if(t<=0){$('rkR').textContent='Enter valid score.';return;}var pct=m/t;var rank=Math.max(1,Math.round((1-pct)*a));$('rkR').innerHTML='Est. percentile: <b>'+(pct*100).toFixed(1)+'</b> • Rough rank band: <b>~'+rank.toLocaleString()+'</b><br><small style="color:var(--muted)">Rough estimate only.</small>';};
  window.dkColl=function(){var p=+$('cpP').value,r;if(p>=85)r='🏆 Top government polytechnics — strong chance.';else if(p>=70)r='✅ Good govt & reputed private polytechnics.';else if(p>=50)r='👍 Many private & some govt polytechnics open.';else if(p>0)r='📚 Focus on improving — private colleges & lateral entry options available.';else r='Enter your percentage.';$('cpR').innerHTML=r;};
  window.dkPlan=function(){
    var d=$('spD').value,hh=+$('spH').value;if(!d||hh<=0){$('spR').textContent='Pick exam date and hours/day.';return;}
    var days=Math.ceil((new Date(d)-Date.now())/864e5);if(days<=0){$('spR').textContent='Exam date should be in future.';return;}
    var total=days*hh,study=Math.round(days*0.85),rev=days-study;
    $('spR').innerHTML='📅 <b>'+days+' days</b> left • ~<b>'+total+' hrs</b> total<br>➗ Maths: <b>'+Math.round(hh*0.4*10)/10+' h/day</b> • ⚛️ Physics: <b>'+Math.round(hh*0.3*10)/10+' h/day</b> • 🧪 Chemistry: <b>'+Math.round(hh*0.3*10)/10+' h/day</b><br>🔁 Last <b>'+rev+' days</b>: full revision + mock tests.';
  };

  /* ---- current affairs (edit these / wire to your pipeline) ---- */
  (function(){
    var list=$('caList'); if(!list)return;
    var CA=[
     {d:'JUN 2026',t:'Polytechnic counselling schedules releasing',x:'Many state boards are announcing diploma counselling rounds — keep documents ready.'},
     {d:'JUN 2026',t:'Lateral entry applications open in several states',x:'Diploma holders can apply for direct 2nd-year B.Tech via lateral entry.'},
     {d:'2026',t:'Tip: revise previous year papers',x:'PYQs cover ~40% of repeated concepts — high-yield revision.'}
    ];
    list.innerHTML=CA.map(function(c){return '<div class="ca-item"><div class="ca-d">'+c.d+'</div><div class="ca-c"><b>'+esc(c.t)+'</b><p>'+esc(c.x)+'</p></div><button class="spk" data-txt="'+esc(c.t+'. '+c.x)+'" title="Listen">🔊</button></div>';}).join('');
  })();

  /* ---- doubt wall ---- */
  (function(){
    var listEl=$('dwList'),post=$('dwPost'); if(!listEl)return;
    function render(items){
      if(!items||!items.length){listEl.innerHTML='<div class="lb-empty">No doubts yet — be the first!</div>';return;}
      listEl.innerHTML=items.map(function(it){return '<div class="dw-item"><div class="dw-h"><span class="dw-n">'+esc(it.n)+'</span><span class="dw-t">'+esc(it.t)+'</span></div><div class="dw-m">'+esc(it.m)+'</div></div>';}).join('');
    }
    fetch('?action=doubts').then(function(r){return r.json()}).then(function(d){if(d&&d.ok)render(d.items);}).catch(function(){listEl.innerHTML='';});
    post.addEventListener('click',function(){
      var msg=$('dwMsg').value.trim(); if(!msg)return; post.disabled=true;
      fetch('?action=post_doubt',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:$('dwName').value,msg:msg})})
        .then(function(r){return r.json()}).then(function(d){if(d&&d.ok){$('dwMsg').value='';render(d.items);}}).finally(function(){post.disabled=false;});
    });
  })();

  /* ---- leaderboard ---- */
  window.renderBoard=function(items){
    var box=$('lbBox'); if(!box)return;
    if(!items||!items.length){box.innerHTML='<div class="lb-empty">No scores yet — play Quick Practice! 🎯</div>';return;}
    box.innerHTML=items.map(function(it,i){var m=['🥇','🥈','🥉'][i]||(i+1);return '<div class="lb-row '+(i<3?'top'+(i+1):'')+'"><span class="lb-rank">'+m+'</span><span class="lb-name">'+esc(it.n)+'</span><span class="lb-score">'+it.s+'%</span></div>';}).join('');
  };
  fetch('?action=board').then(function(r){return r.json()}).then(function(d){if(d&&d.ok)renderBoard(d.items);}).catch(function(){});

  /* ---- poll ---- */
  (function(){
    var box=$('pollBox'); if(!box)return; var OPTS=['JEECUP','DCECE','MAH POLYCET','Other'];
    function render(c,voted){
      var tot=0;OPTS.forEach(function(o){tot+=c[o]||0;});
      box.innerHTML=OPTS.map(function(o){
        var v=c[o]||0,pct=tot?Math.round(v/tot*100):0;
        return '<button class="poll-opt" data-o="'+o+'"'+(voted?' disabled':'')+'><span class="poll-fill" style="width:'+(voted?pct:0)+'%"></span><span>'+o+'</span>'+(voted?'<span class="poll-pct">'+pct+'% ('+v+')</span>':'')+'</button>';
      }).join('')+(voted?'<div style="text-align:center;color:var(--muted);font-size:.8rem;margin-top:6px">Total votes: '+tot+'</div>':'');
      if(!voted)box.querySelectorAll('.poll-opt').forEach(function(b){b.addEventListener('click',function(){
        fetch('?action=vote',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({opt:b.dataset.o})}).then(function(r){return r.json()}).then(function(d){if(d&&d.ok)render(d.counts,true);});
      });});
    }
    fetch('?action=poll').then(function(r){return r.json()}).then(function(d){if(d&&d.ok)render(d.counts,d.voted);}).catch(function(){box.innerHTML='';});
  })();

  /* ---- PWA install ---- */
  var dp; window.addEventListener('beforeinstallprompt',function(e){e.preventDefault();dp=e;
    var b=document.createElement('button');b.className='ctrl dx-fab2';b.id='pwaBtn';b.innerHTML='⬇️ Install App';
    document.body.appendChild(b);
    b.addEventListener('click',function(){if(dp){dp.prompt();dp=null;b.remove();}});
  });
})();

/* ---- diploma expert bot ---- */
.dx-fab{position:fixed;right:20px;bottom:20px;z-index:90;display:inline-flex;align-items:center;gap:10px;border:none;cursor:pointer;background:linear-gradient(135deg,var(--gold-bright),var(--gold));color:#1a1300;font-family:'Sora';font-weight:700;font-size:.95rem;padding:14px 20px;border-radius:50px;box-shadow:0 16px 38px -10px rgba(246,181,0,.6);transition:transform .18s,box-shadow .2s}
.dx-fab:hover{transform:translateY(-3px) scale(1.02)}
.dx-fab .dx-fab-ic{font-size:1.3rem;line-height:1}
.dx-fab.hide{display:none}
.dx-panel{position:fixed;right:20px;bottom:20px;z-index:95;width:380px;max-width:calc(100vw - 32px);height:560px;max-height:calc(100vh - 40px);display:none;flex-direction:column;overflow:hidden;background:var(--navy-2);border:1px solid var(--line);border-radius:22px;box-shadow:0 30px 80px -20px rgba(0,0,0,.7)}
.dx-panel.open{display:flex;animation:fade .3s ease}
.dx-head{display:flex;align-items:center;justify-content:space-between;padding:13px 15px;background:linear-gradient(135deg,color-mix(in srgb,var(--blue) 38%,var(--navy-2)),var(--navy-2));border-bottom:1px solid var(--line)}
.dx-head-l{display:flex;align-items:center;gap:11px}
.dx-ava{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:1.3rem;background:linear-gradient(135deg,var(--gold-bright),var(--gold))}
.dx-head b{font-family:'Sora';font-size:1rem}
.dx-head small{display:block;color:var(--muted);font-size:.72rem}
.dx-x{background:var(--glass);border:1px solid var(--line);color:var(--txt);width:32px;height:32px;border-radius:10px;cursor:pointer;font-size:.85rem}
.dx-x:hover{background:var(--glass-2)}
.dx-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:11px}
.dx-msg{display:flex;max-width:90%}
.dx-msg.user{align-self:flex-end}.dx-msg.bot{align-self:flex-start}
.dx-bubble{padding:11px 14px;border-radius:15px;font-size:.9rem;line-height:1.55;word-wrap:break-word}
.dx-msg.bot .dx-bubble{background:var(--glass-2);border:1px solid var(--line);border-bottom-left-radius:5px}
.dx-msg.user .dx-bubble{background:linear-gradient(135deg,var(--blue),#2a3eb0);color:#fff;border-bottom-right-radius:5px}
.dx-bubble b{color:var(--gold)}.dx-msg.user .dx-bubble b{color:#fff}
.dx-bubble ul{margin:6px 0 2px;padding-left:18px}.dx-bubble li{margin:3px 0}
.dx-bubble code{background:rgba(0,0,0,.25);padding:1px 5px;border-radius:5px;font-size:.85em}
.dx-yt{display:inline-flex;align-items:center;gap:7px;margin-top:10px;text-decoration:none;background:#ff0000;color:#fff;font-family:'Sora';font-weight:700;font-size:.8rem;padding:8px 13px;border-radius:11px}
.dx-yt:hover{filter:brightness(1.1)}
.dx-typing{display:inline-flex;gap:4px;padding:3px 0}
.dx-typing i{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:dxb 1s infinite}
.dx-typing i:nth-child(2){animation-delay:.15s}.dx-typing i:nth-child(3){animation-delay:.3s}
@keyframes dxb{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}
.dx-quick{display:flex;flex-wrap:wrap;gap:7px;padding:0 16px 10px}
.dx-chip{background:var(--glass);border:1px solid var(--line);color:var(--txt);font-family:'DM Sans';font-size:.77rem;padding:7px 11px;border-radius:20px;cursor:pointer;transition:background .2s}
.dx-chip:hover{background:var(--glass-2)}
.dx-input{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--line)}
.dx-input input{flex:1;background:var(--glass);border:1px solid var(--line);border-radius:12px;padding:11px 14px;color:var(--txt);font-family:'DM Sans';font-size:.9rem;outline:none}
.dx-input input:focus{border-color:var(--gold)}
.dx-send{flex:none;width:44px;border:none;border-radius:12px;cursor:pointer;background:linear-gradient(135deg,var(--gold-bright),var(--gold));color:#1a1300;font-size:1rem}
.dx-send:disabled{opacity:.5;cursor:default}
@media(max-width:560px){.dx-fab .dx-fab-tx{display:none}.dx-fab{padding:15px}.dx-panel{right:8px;left:8px;bottom:8px;width:auto;height:calc(100vh - 16px);max-width:none}}

/* ---- in-page nav ---- */
.qnav{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:8px auto 0;padding:14px;background:var(--glass);border:1px solid var(--line);border-radius:16px}
.qnav a{font-family:'Sora';font-weight:600;font-size:.82rem;color:var(--muted);text-decoration:none;padding:7px 13px;border-radius:20px;transition:.2s}
.qnav a:hover{color:var(--txt);background:var(--glass-2)}
/* ---- practice ---- */
.practice-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:880px;margin:0 auto}
.pr-streak{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.streak-big{font-family:'Sora';font-weight:800;font-size:2.6rem;color:var(--gold)}
.streak-l{color:var(--muted);font-size:.85rem;margin-top:6px}
.qotd-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.qotd-badge{font-family:'Sora';font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.spk{background:var(--glass);border:1px solid var(--line);border-radius:10px;cursor:pointer;font-size:1rem;padding:5px 9px}
.spk:hover{background:var(--glass-2)}
.qopt{display:block;width:100%;text-align:left;background:var(--glass);border:1px solid var(--line);color:var(--txt);border-radius:11px;padding:11px 14px;margin:7px 0;cursor:pointer;font-family:'DM Sans';font-size:.9rem;transition:.15s}
.qopt:hover{background:var(--glass-2)}
.qopt.correct{background:rgba(40,200,120,.18);border-color:rgba(40,200,120,.6)}
.qopt.wrong{background:rgba(226,58,94,.16);border-color:rgba(226,58,94,.6)}
.qopt.sel{border-color:var(--gold)}
.qexp{margin-top:8px;font-size:.85rem;color:var(--muted);background:var(--glass);border-left:3px solid var(--gold);padding:9px 12px;border-radius:8px}
.qcard{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}
.qcard:first-child{border-top:none;padding-top:0;margin-top:0}
.qq{font-family:'Sora';font-weight:600;font-size:.96rem;margin-bottom:8px}
/* ---- countdown ---- */
.cd-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.cd-card{background:var(--glass);border:1px solid var(--line);border-radius:18px;padding:20px;text-align:center}
.cd-name{font-family:'Sora';font-weight:700;color:var(--gold);font-size:.95rem}
.cd-time{font-family:'Sora';font-weight:800;font-size:1.7rem;margin:10px 0 2px}
.cd-sub{color:var(--muted);font-size:.74rem}
/* ---- tools ---- */
.tool-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.tool-card{background:var(--glass);border:1px solid var(--line);border-radius:18px;padding:22px}
.tool-card h3{font-size:1.1rem;margin-bottom:12px}
.tool-card input{width:100%;background:var(--navy-1);border:1px solid var(--line);color:var(--txt);border-radius:11px;padding:11px 13px;margin-bottom:9px;font-family:'DM Sans';font-size:.9rem;outline:none}
.tool-card input:focus{border-color:var(--gold)}
.tbtn{width:100%;justify-content:center;font-size:.9rem;padding:11px}
.tres{margin-top:12px;font-size:.9rem;line-height:1.5;color:var(--txt)}
.tres b{color:var(--gold)}
.tres:empty{display:none}
/* ---- current affairs ---- */
.ca-list{display:flex;flex-direction:column;gap:12px;max-width:780px;margin:0 auto}
.ca-item{display:flex;gap:13px;align-items:flex-start;background:var(--glass);border:1px solid var(--line);border-radius:15px;padding:15px 17px}
.ca-d{flex:none;font-family:'Sora';font-weight:800;color:var(--gold);font-size:.8rem;text-align:center;min-width:52px;line-height:1.2}
.ca-c{flex:1}.ca-c b{font-family:'Sora';font-size:.96rem}.ca-c p{color:var(--muted);font-size:.85rem;margin-top:3px}
/* ---- doubt wall ---- */
.dw-wrap{display:grid;grid-template-columns:340px 1fr;gap:18px;align-items:start}
.dw-form input,.dw-form textarea{width:100%;background:var(--glass);border:1px solid var(--line);color:var(--txt);border-radius:12px;padding:12px;margin-bottom:10px;font-family:'DM Sans';font-size:.9rem;outline:none}
.dw-form textarea{min-height:110px;resize:vertical}
.dw-form input:focus,.dw-form textarea:focus{border-color:var(--gold)}
.dw-list{display:flex;flex-direction:column;gap:11px;max-height:520px;overflow-y:auto}
.dw-item{background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:13px 15px}
.dw-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}
.dw-n{font-family:'Sora';font-weight:700;font-size:.88rem;color:var(--gold)}
.dw-t{color:var(--muted);font-size:.72rem}
.dw-m{font-size:.9rem;line-height:1.5;word-wrap:break-word}
/* ---- leaderboard ---- */
.lb-box{max-width:560px;margin:0 auto;background:var(--glass);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.lb-row{display:flex;align-items:center;gap:14px;padding:13px 18px;border-top:1px solid var(--line)}
.lb-row:first-child{border-top:none}
.lb-rank{font-family:'Sora';font-weight:800;width:30px;color:var(--muted)}
.lb-row.top1 .lb-rank{color:#ffd24e}.lb-row.top2 .lb-rank{color:#cdd6f4}.lb-row.top3 .lb-rank{color:#e0a06a}
.lb-name{flex:1;font-family:'Sora';font-weight:600;font-size:.92rem}
.lb-score{font-family:'Sora';font-weight:800;color:var(--gold)}
.lb-empty{padding:26px;text-align:center;color:var(--muted)}
/* ---- poll ---- */
.poll-box{max-width:520px;margin:0 auto}
.poll-opt{display:flex;align-items:center;gap:12px;width:100%;background:var(--glass);border:1px solid var(--line);color:var(--txt);border-radius:13px;padding:13px 16px;margin-bottom:10px;cursor:pointer;font-family:'Sora';font-weight:600;font-size:.92rem;position:relative;overflow:hidden;transition:.2s}
.poll-opt:hover{background:var(--glass-2)}
.poll-fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,rgba(246,181,0,.28),rgba(67,97,238,.22));width:0;transition:width .6s ease;z-index:0}
.poll-opt span{position:relative;z-index:1}
.poll-pct{margin-left:auto}
/* ---- pwa install ---- */
.dx-fab2{position:fixed;left:20px;bottom:20px;z-index:88}
@media(max-width:860px){
  .practice-grid,.tool-grid{grid-template-columns:1fr}
  .cd-grid{grid-template-columns:repeat(2,1fr)}
  .dw-wrap{grid-template-columns:1fr}
}
