:root{
  --bg:#0E1020; --card:#171A33; --card2:#1F2347; --line:#2C3163; --ink:#EEF0FF; --muted:#9AA0D0;
  --lime:#C6FF3D; --coral:#FF5C7A; --sky:#4CC9F0; --violet:#A78BFA; --amber:#FFB020; --good:#34E39A; --bad:#FF5C7A;
  --r:18px; --display:'Bricolage Grotesque',system-ui,sans-serif; --body:'DM Sans',system-ui,sans-serif; --mono:'DM Mono',ui-monospace,monospace;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.5 var(--body);min-height:100vh;overflow-x:hidden}
#bg,#confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none}
#bg{z-index:0}#confetti{z-index:60}
#app{position:relative;z-index:1;min-height:100vh}
a{color:var(--lime)}
h1,h2,h3{font-family:var(--display);margin:0;line-height:1.05;letter-spacing:-.02em}
h1{font-size:clamp(2.2rem,6vw,4rem);font-weight:800}
h2{font-size:clamp(1.5rem,3.4vw,2.1rem);font-weight:800}
h3{font-size:1.2rem;font-weight:800}
p{margin:0}
.boot{padding:40vh 0;text-align:center;color:var(--muted)}
:focus-visible{outline:3px solid var(--sky);outline-offset:2px;border-radius:8px}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}
.muted{color:var(--muted)}
.mono{font-family:var(--mono)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* buttons */
.btn{--c:var(--lime);display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;
  font:800 1rem var(--display);color:#0E1020;background:var(--c);padding:13px 22px;border-radius:14px;text-decoration:none;
  box-shadow:0 5px 0 color-mix(in srgb,var(--c) 55%,#000);transform:translateY(0);transition:transform .08s,box-shadow .08s,filter .15s;min-height:48px}
.btn:hover{filter:brightness(1.07)}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 color-mix(in srgb,var(--c) 55%,#000)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 2px var(--line)}
.btn.ghost:hover{box-shadow:inset 0 0 0 2px var(--lime);color:var(--lime)}
.btn.sm{padding:8px 14px;min-height:38px;font-size:.9rem;border-radius:11px;box-shadow:0 3px 0 color-mix(in srgb,var(--c) 55%,#000)}
.btn.ghost.sm{box-shadow:inset 0 0 0 2px var(--line)}
.btn.ghost.sm:hover{box-shadow:inset 0 0 0 2px var(--lime)}
.btn.ghost:active{transform:none}
.btn.block{width:100%}
.btn.coral{--c:var(--coral)}.btn.sky{--c:var(--sky)}.btn.violet{--c:var(--violet)}.btn.amber{--c:var(--amber)}

/* cards */
.card{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:22px;box-shadow:0 7px 0 rgba(0,0,0,.35)}
.card.flat{box-shadow:none}
.pill{display:inline-flex;align-items:center;gap:6px;background:var(--card2);border:1.5px solid var(--line);border-radius:99px;padding:5px 12px;font-size:.85rem;font-weight:700;white-space:nowrap}
.dot{width:9px;height:9px;border-radius:50%;background:var(--good);box-shadow:0 0 0 0 var(--good);animation:pulse 1.8s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 9px transparent}100%{box-shadow:0 0 0 0 transparent}}

/* nav */
.nav{position:sticky;top:0;z-index:20;background:rgba(14,16,32,.82);backdrop-filter:blur(12px);border-bottom:2px solid var(--line)}
.nav .wrap{display:flex;align-items:center;gap:14px;height:64px}
.logo{font:800 1.25rem var(--display);color:var(--ink);text-decoration:none;display:flex;gap:8px;align-items:center;white-space:nowrap}
.logo b{color:var(--lime)}
.links{display:flex;gap:4px;margin-left:12px}
.links a{color:var(--muted);text-decoration:none;font-weight:700;padding:8px 12px;border-radius:10px}
.links a:hover{color:var(--ink);background:var(--card2)}
.links a.on{color:#0E1020;background:var(--lime)}
.spacer{flex:1}
.me-chip{display:flex;align-items:center;gap:8px;background:var(--card2);border:1.5px solid var(--line);border-radius:99px;padding:4px 14px 4px 5px;font-weight:700;font-size:.9rem}
.me-chip .av{width:32px;height:32px;display:grid;place-items:center;background:var(--bg);border-radius:50%;font-size:1.1rem}
.lv{font:500 .72rem var(--mono);background:var(--lime);color:#0E1020;border-radius:6px;padding:1px 6px}
@media(max-width:820px){
  .nav .wrap{height:auto;flex-wrap:wrap;padding:10px 16px;gap:8px}
  .links{order:5;width:100%;margin:0;overflow-x:auto}
  .me-chip span.nm{display:none}
  .pill.online{display:none}
}

/* layout */
main.page{padding:30px 0 80px}
.grid-home{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:26px;align-items:start}
@media(max-width:980px){.grid-home{grid-template-columns:1fr}}
.stack{display:grid;gap:22px}
.section-title{display:flex;align-items:baseline;justify-content:space-between;margin:34px 0 14px}
.section-title:first-child{margin-top:0}

/* hero */
.hero{display:grid;gap:18px;grid-template-columns:1fr auto;align-items:center;background:linear-gradient(135deg,#232857,#171A33 60%);position:relative;overflow:hidden}
.hero h1{font-size:clamp(1.8rem,4.5vw,2.8rem)}
.hero h1 em{font-style:normal;color:var(--lime)}
.hero .stats{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.xpbar{height:14px;background:var(--bg);border-radius:99px;border:2px solid var(--line);overflow:hidden;margin-top:12px;max-width:420px}
.xpbar i{display:block;height:100%;background:linear-gradient(90deg,var(--lime),var(--sky));border-radius:99px;transition:width .8s cubic-bezier(.2,.9,.3,1)}
.bigav{font-size:4.5rem;width:120px;height:120px;display:grid;place-items:center;background:var(--bg);border-radius:30px;border:2px solid var(--line);transform:rotate(-6deg)}
@media(max-width:560px){.hero{grid-template-columns:1fr}.bigav{display:none}}

/* subject cards */
.subjects{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px}
.subj{--c:var(--sky);position:relative;display:flex;flex-direction:column;gap:10px;background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:20px;
  text-align:left;color:var(--ink);cursor:pointer;font:inherit;text-decoration:none;box-shadow:0 7px 0 rgba(0,0,0,.35);transition:transform .15s,border-color .15s,box-shadow .15s;overflow:hidden}
.subj::before{content:"";position:absolute;inset:0 0 auto 0;height:6px;background:var(--c)}
.subj:hover{transform:translateY(-4px) rotate(-.6deg);border-color:var(--c);box-shadow:0 11px 0 rgba(0,0,0,.35)}
.subj .em{font-size:2.4rem;width:64px;height:64px;display:grid;place-items:center;border-radius:18px;background:color-mix(in srgb,var(--c) 18%,var(--bg));border:2px solid color-mix(in srgb,var(--c) 55%,transparent)}
.subj h3{font-size:1.15rem}
.subj .d{color:var(--muted);font-size:.9rem;flex:1}
.subj .meta{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;font-weight:700}
.subj .best{font-family:var(--mono);color:var(--c)}
.subj .go{color:#0E1020;background:var(--c);border-radius:10px;padding:6px 12px;font-family:var(--display);font-weight:800}

.games{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px}

/* leaderboard */
.lb{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.lb li{display:grid;grid-template-columns:34px 38px 1fr auto;gap:10px;align-items:center;padding:8px 12px;border-radius:14px;background:var(--card2);border:1.5px solid transparent;animation:slidein .4s both}
.lb li.me{border-color:var(--lime);background:color-mix(in srgb,var(--lime) 10%,var(--card2))}
.lb .rk{font:800 1rem var(--display);text-align:center;color:var(--muted)}
.lb .av{font-size:1.4rem;text-align:center}
.lb .nm{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb .nm small{display:block;color:var(--muted);font-weight:400;font-size:.75rem}
.lb .sc{font-family:var(--mono);font-weight:500;color:var(--lime)}
.lb li:nth-child(1) .rk,.lb li:nth-child(2) .rk,.lb li:nth-child(3) .rk{font-size:1.4rem}
@keyframes slidein{from{opacity:0;transform:translateX(-12px)}}
.empty{padding:26px 10px;text-align:center;color:var(--muted)}
.feed{display:grid;gap:8px;margin:0;padding:0;list-style:none;max-height:300px;overflow:auto}
.feed li{font-size:.88rem;background:var(--card2);border-radius:12px;padding:8px 12px;animation:slidein .4s both}
.feed b{color:var(--lime)}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
.tab{border:2px solid var(--line);background:var(--card);color:var(--muted);font:700 .9rem var(--body);padding:8px 14px;border-radius:99px;cursor:pointer}
.tab:hover{color:var(--ink)}
.tab[aria-selected=true]{background:var(--lime);color:#0E1020;border-color:var(--lime)}
.podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:12px;align-items:end;margin-bottom:22px}
.pod{background:var(--card);border:2px solid var(--line);border-radius:var(--r) var(--r) 8px 8px;text-align:center;padding:16px 8px;display:grid;gap:2px;justify-items:center}
.pod .av{font-size:2.3rem}.pod .nm{font-weight:800;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pod .sc{font:500 1.1rem var(--mono);color:var(--lime)}
.pod.p1{padding-bottom:34px;border-color:var(--amber);background:linear-gradient(#2a2410,var(--card))}
.pod.p2{padding-bottom:20px}.pod.p3{padding-bottom:10px}
.pod .medal{font-size:1.8rem}

/* auth */
.auth{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:40px;max-width:1100px;margin:0 auto;padding:30px 20px}
@media(max-width:860px){.auth{grid-template-columns:1fr;gap:22px;padding-top:24px}}
.auth .pitch h1 em{font-style:normal;color:var(--lime);display:inline-block;transform:rotate(-2deg)}
.auth .pitch p.lead{color:var(--muted);font-size:1.1rem;margin:16px 0 22px;max-width:46ch}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.form{display:grid;gap:14px}
.field{display:grid;gap:6px}
.field label{font-weight:700;font-size:.9rem}
.input{width:100%;background:var(--bg);border:2px solid var(--line);color:var(--ink);font:inherit;padding:12px 14px;border-radius:12px;min-height:48px}
.input:focus{outline:none;border-color:var(--lime);box-shadow:0 0 0 4px color-mix(in srgb,var(--lime) 22%,transparent)}
.pw{position:relative}.pw button{position:absolute;right:6px;top:6px;height:36px;border:0;background:transparent;color:var(--muted);cursor:pointer;font-weight:700;padding:0 10px;border-radius:8px}
.msg{padding:11px 14px;border-radius:12px;font-size:.92rem;border:2px solid}
.msg.err{border-color:var(--coral);background:color-mix(in srgb,var(--coral) 12%,transparent)}
.msg.ok{border-color:var(--good);background:color-mix(in srgb,var(--good) 12%,transparent)}
.msg.dev{border-color:var(--amber);background:color-mix(in srgb,var(--amber) 10%,transparent);word-break:break-all}
.avatars{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}
.avatars input{position:absolute;opacity:0}
.avatars label{display:grid;place-items:center;font-size:1.4rem;height:42px;background:var(--bg);border:2px solid var(--line);border-radius:12px;cursor:pointer}
.avatars input:checked+label{border-color:var(--lime);background:color-mix(in srgb,var(--lime) 15%,var(--bg));transform:scale(1.08)}
.avatars input:focus-visible+label{outline:3px solid var(--sky)}
.linkrow{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:.92rem}
.big-emoji{font-size:3.4rem}

/* quiz */
.qwrap{max-width:780px;margin:0 auto}
.qtop{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.qtop .grow{flex:1;min-width:140px}
.progress{height:12px;background:var(--card);border:2px solid var(--line);border-radius:99px;overflow:hidden}
.progress i{display:block;height:100%;background:var(--c,var(--lime));width:0;transition:width .4s}
.timer{height:10px;background:var(--card);border-radius:99px;overflow:hidden;margin-bottom:16px;border:2px solid var(--line)}
.timer i{display:block;height:100%;width:100%;background:var(--good);border-radius:99px}
.timer.low i{background:var(--coral)}
.qcard{padding:26px}
.qcard .qn{font:500 .85rem var(--mono);color:var(--muted)}
.qcard h2{font-size:clamp(1.3rem,3vw,1.75rem);margin:8px 0 22px;line-height:1.25;letter-spacing:-.01em}
.opts{display:grid;gap:12px}
.opt{display:grid;grid-template-columns:38px 1fr;align-items:center;gap:12px;text-align:left;width:100%;font:inherit;font-weight:500;color:var(--ink);background:var(--card2);border:2px solid var(--line);border-radius:14px;padding:12px 14px;cursor:pointer;min-height:56px;transition:transform .1s,border-color .15s,background .15s}
.opt:hover:not([disabled]){border-color:var(--c,var(--lime));transform:translateX(4px)}
.opt .k{font:800 1rem var(--display);width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:var(--bg);color:var(--muted)}
.opt.right{border-color:var(--good);background:color-mix(in srgb,var(--good) 16%,var(--card2));animation:pop .35s}
.opt.right .k{background:var(--good);color:#0E1020}
.opt.wrong{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 16%,var(--card2));animation:shake .35s}
.opt.wrong .k{background:var(--bad);color:#0E1020}
.opt[disabled]{cursor:default}
.opt.dim{opacity:.55}
@keyframes pop{50%{transform:scale(1.03)}}
@keyframes shake{25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}
.fb{margin-top:18px;padding:14px 16px;border-radius:14px;border:2px solid var(--line);background:var(--card2);animation:slidein .3s both}
.fb.ok{border-color:var(--good)}.fb.no{border-color:var(--bad)}
.fb strong{font-family:var(--display);font-size:1.1rem}
.fb .pts{float:right;font:500 1rem var(--mono);color:var(--lime)}
.nextrow{display:flex;justify-content:flex-end;margin-top:16px}
.score-chip{font:500 1rem var(--mono);color:var(--lime)}
.result{text-align:center;display:grid;gap:14px;justify-items:center}
.result .score{font:800 clamp(3.4rem,12vw,6rem) var(--display);color:var(--lime);line-height:1}
.result .stars{font-size:2.6rem;letter-spacing:8px}
.result .row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}

/* games */
.gwrap{max-width:900px;margin:0 auto}
.arena{width:100%;height:auto;border-radius:16px;border:2px solid var(--line);background:linear-gradient(#10163a,#1c2352);display:block}
.ctrls{display:grid;grid-template-columns:1fr 1fr auto;gap:16px;align-items:end;margin-top:16px}
@media(max-width:700px){.ctrls{grid-template-columns:1fr}}
.rng{display:grid;gap:4px}
.rng label{display:flex;justify-content:space-between;font-weight:700}
.rng output{font-family:var(--mono);color:var(--lime)}
input[type=range]{width:100%;accent-color:var(--lime);height:32px}
.shots{display:flex;gap:8px;margin:12px 0;flex-wrap:wrap}
.shot{flex:1;min-width:84px;text-align:center;padding:8px;border-radius:12px;background:var(--card2);border:2px solid var(--line);font:500 .85rem var(--mono)}
.shot.hit{border-color:var(--good)}
.tfcard{min-height:170px;display:grid;place-items:center;text-align:center;font:800 clamp(1.2rem,3vw,1.7rem)/1.3 var(--display);padding:26px;transition:background .15s,border-color .15s}
.tfcard.ok{border-color:var(--good);background:color-mix(in srgb,var(--good) 14%,var(--card))}
.tfcard.no{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 14%,var(--card))}
.tfbtns{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.tfbtns .btn{font-size:1.2rem;min-height:64px}
.mgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.mc{perspective:700px;aspect-ratio:1.15;border:0;background:none;padding:0;cursor:pointer;font:inherit}
.mc .in{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .45s}
.mc.flip .in,.mc.done .in{transform:rotateY(180deg)}
.mc .f,.mc .b{position:absolute;inset:0;backface-visibility:hidden;border-radius:14px;display:grid;place-items:center;padding:6px;text-align:center;border:2px solid var(--line)}
.mc .f{background:linear-gradient(135deg,var(--violet),var(--sky));font-size:1.8rem}
.mc .b{transform:rotateY(180deg);background:var(--card2);font-weight:700;font-size:clamp(.62rem,1.8vw,.9rem);line-height:1.2}
.mc.term .b{color:var(--lime)}
.mc.done .b{border-color:var(--good);background:color-mix(in srgb,var(--good) 18%,var(--card2))}
.gbar{display:flex;gap:10px;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.review{display:grid;gap:8px;text-align:left;width:100%;margin-top:6px}
.review div{padding:9px 12px;border-radius:12px;background:var(--card2);border-left:5px solid var(--good);font-size:.9rem}
.review div.x{border-left-color:var(--bad)}

/* toast */
#toasts{position:fixed;right:16px;bottom:16px;z-index:70;display:grid;gap:10px;max-width:min(360px,calc(100vw - 32px))}
.toast{background:var(--card2);border:2px solid var(--lime);border-radius:14px;padding:10px 14px;box-shadow:0 8px 24px rgba(0,0,0,.45);animation:slidein .35s both;font-size:.92rem}
.toast.err{border-color:var(--coral)}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ===== PhysioFun additions ===== */
:root{--good:#34E39A}
.langsw{display:inline-flex;border:2px solid var(--line);border-radius:99px;overflow:hidden;background:var(--card)}
.langsw button{border:0;background:transparent;color:var(--muted);font:700 .8rem var(--body);padding:6px 11px;cursor:pointer}
.langsw button.on{background:var(--lime);color:#0E1020}
.authtop{display:flex;justify-content:flex-end;margin-bottom:10px}
.tagline{font:800 clamp(1.2rem,3vw,1.7rem) var(--display);color:var(--lime);margin:4px 0 14px}
.brand em{font-style:normal;color:var(--lime)}
.lv.admin{background:var(--coral);color:#fff}
.banner{background:var(--violet);color:#fff;padding:9px 16px;text-align:center;font-weight:600;font-size:.9rem}
.banner a{color:#fff;font-weight:800;margin-left:8px}
.banner.inline{border-radius:12px;margin-bottom:16px}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
a.tab{text-decoration:none;display:inline-block}
a.tab.on{background:var(--lime);color:#0E1020;border-color:var(--lime)}
.subj.static{cursor:default}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.kpi{padding:18px}.kpi .v{font-size:2rem;font-weight:700;color:var(--lime)}.kpi .l{font-weight:700}.kpi .s{font-size:.82rem;margin-top:4px}
.tblwrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:.9rem}
.tbl th,.tbl td{padding:10px 8px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl th{color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.tbl.click tbody tr{cursor:pointer}.tbl.click tbody tr:hover,.tbl.click tbody tr:focus{background:var(--card2);outline:none}
.tbl .av{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--bg)}
button.th{background:none;border:0;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;padding:0}
button.th.on{color:var(--lime)}
.acc{white-space:nowrap}
.bar{display:inline-block;width:70px;height:8px;background:var(--bg);border-radius:6px;overflow:hidden;vertical-align:middle;margin-right:6px}
.bar i{display:block;height:100%}
.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.toolbar .input{max-width:320px}.spacer{flex:1}
.chips2{white-space:nowrap}
.chip{display:inline-block;font:500 .75rem var(--mono);border:1.5px solid var(--c,var(--line));border-radius:8px;padding:2px 6px;margin:2px}
.chart{display:flex;align-items:flex-end;gap:6px;height:160px;margin-top:14px}
.chart .col{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;font-size:.7rem;color:var(--muted)}
.chart .stack{width:100%;min-height:2px;display:flex;flex-direction:column;border-radius:4px;overflow:hidden}
.chart .stack i.q,.sw.q{background:var(--lime)}.chart .stack i.g,.sw.g{background:var(--violet)}
.legend{display:flex;gap:16px;margin-top:10px;font-size:.82rem;color:var(--muted)}
.sw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px}
.cols2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-top:20px}
.weak{list-style:none;padding:0;display:grid;gap:12px}
.preview{border:2px dashed var(--line);border-radius:16px;padding:16px}
.preview .subj.static{pointer-events:none}
@media(max-width:700px){.nav .links{display:none}.nav .wrap{gap:8px}.me-chip .nm{display:none}}

.roles{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:14px}.roles span{padding:10px 4px!important;font-size:.85rem}
.roles label{cursor:pointer}.roles input{position:absolute;opacity:0}
.roles span{display:block;text-align:center;padding:10px;border:2px solid var(--line);border-radius:12px;font-weight:700;color:var(--muted)}
.roles input:checked+span{background:var(--lime);color:#0E1020;border-color:var(--lime)}
.roles input:focus-visible+span{outline:2px solid var(--sky);outline-offset:2px}
[hidden]{display:none!important}
