:root{--bg:#0c0d12;--panel:rgba(24,26,36,.92);--line:#333747;--text:#f5f6fb;--muted:#9ea3b5;--accent:#8d5cff;--accent2:#4cc9f0;--danger:#ff5d73}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}button,input{font:inherit}button{cursor:pointer}.hidden{display:none!important}.screen{position:fixed;inset:0}.centre{display:grid;place-items:center;background:radial-gradient(circle at 70% 20%,#272047 0,transparent 40%),linear-gradient(130deg,#0b0c12,#151722)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.35);backdrop-filter:blur(14px)}.auth-panel{width:min(440px,calc(100% - 30px));padding:30px}.brand{display:flex;gap:14px;align-items:center}.brand h1{margin:0;letter-spacing:.14em}.brand p{margin:3px 0 0;color:var(--muted)}.brand-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,var(--accent),var(--accent2));font-weight:900;font-size:25px}.brand.small .brand-mark{width:34px;height:34px;border-radius:10px;font-size:18px}.brand.small h1{font-size:17px}.tabs{display:flex;margin:28px 0 18px;border-bottom:1px solid var(--line)}.tabs button{flex:1;border:0;background:none;color:var(--muted);padding:12px}.tabs button.active{color:#fff;border-bottom:2px solid var(--accent)}.form{display:grid;gap:12px}.form input,.inline input{width:100%;padding:14px 15px;border:1px solid var(--line);border-radius:11px;background:#12141c;color:#fff;outline:none}.form input:focus,.inline input:focus{border-color:var(--accent)}button.primary{border:0;border-radius:11px;background:linear-gradient(135deg,var(--accent),#6845df);color:#fff;font-weight:750;padding:13px 18px}button.primary:hover{filter:brightness(1.1)}button.ghost{border:1px solid var(--line);border-radius:9px;background:transparent;color:var(--muted);padding:8px 11px}.error{color:var(--danger);min-height:20px}.screen>header{height:72px;padding:0 4vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#101119}.profile{display:flex;align-items:center;gap:15px}.lobby-grid{height:calc(100% - 72px);padding:4vh 4vw;display:grid;grid-template-columns:1.45fr 1fr;grid-template-rows:1fr auto;gap:18px;overflow:auto}.hero{padding:clamp(28px,5vw,70px);background:radial-gradient(circle at 85% 20%,rgba(141,92,255,.35),transparent 45%),var(--panel)}.hero h2{font-size:clamp(38px,5vw,76px);line-height:.98;margin:14px 0 20px;letter-spacing:-.05em}.hero p:not(.eyebrow){max-width:570px;color:var(--muted);font-size:18px;line-height:1.6}.eyebrow{color:var(--accent2);font-weight:800;letter-spacing:.15em}.large{font-size:17px;margin-top:20px}.room-tools,.room-browser{padding:22px}.room-tools{align-self:start}.inline{display:flex;gap:8px}.toggle{display:flex;align-items:center;gap:9px;color:var(--muted);margin-top:18px}.section-head{display:flex;align-items:center;justify-content:space-between}.room-list{display:grid;gap:8px;max-height:38vh;overflow:auto}.room-item{display:flex;align-items:center;justify-content:space-between;padding:12px;border:1px solid var(--line);border-radius:11px;background:#141620}.room-item small,.muted{color:var(--muted)}.stats{grid-column:1/-1;display:flex;justify-content:space-around;padding:20px}.stats div{text-align:center}.stats strong{display:block;font-size:26px}.stats span{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.1em}#game-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.game-top{position:absolute;left:18px;right:18px;top:14px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.phase,.timer{padding:9px 15px;border-radius:10px;background:rgba(10,11,16,.72);border:1px solid var(--line);font-weight:850;letter-spacing:.1em}.game-panel{position:absolute;right:18px;top:70px;width:290px;padding:16px}.player-row{display:flex;justify-content:space-between;padding:9px 2px;border-bottom:1px solid #2a2d38}.player-row .caught{text-decoration:line-through;color:var(--danger)}.game-panel>.primary{width:100%;margin-top:12px}.role-card{position:absolute;left:50%;top:90px;transform:translateX(-50%);text-align:center;background:rgba(12,13,18,.85);padding:16px 30px;border-radius:14px;border:1px solid var(--line)}.role-card small,.role-card span{display:block;color:var(--muted)}.role-card strong{display:block;font-size:28px;margin:4px}#crosshair{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:26px;text-shadow:0 1px 2px #000}.capture{position:absolute;left:50%;bottom:45px;transform:translateX(-50%);border:2px solid #fff;border-radius:50px;background:var(--danger);color:#fff;padding:14px 28px;font-weight:900}.mobile-controls{display:none}.toast-item{position:fixed;left:50%;bottom:25px;transform:translateX(-50%);z-index:20;background:#202330;border:1px solid var(--line);padding:12px 20px;border-radius:10px;animation:toast 3s forwards}@keyframes toast{0%{opacity:0;transform:translate(-50%,10px)}10%,80%{opacity:1;transform:translate(-50%,0)}100%{opacity:0}}@media(max-width:800px){.lobby-grid{grid-template-columns:1fr}.stats{grid-column:auto}.hero h2{font-size:44px}.game-panel{right:8px;top:60px;width:210px;max-height:45vh;overflow:auto}.game-top{left:8px;right:8px}.game-top .brand{display:none}.mobile-controls{display:block}.mobile-controls #joystick{position:absolute;left:25px;bottom:30px;width:112px;height:112px;border-radius:50%;border:2px solid rgba(255,255,255,.3);background:rgba(0,0,0,.25);touch-action:none}.mobile-controls #joystick span{position:absolute;left:36px;top:36px;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.55)}#jump{position:absolute;right:28px;bottom:38px;width:76px;height:76px;border:0;border-radius:50%;background:rgba(141,92,255,.75);color:#fff;font-weight:800}.capture{bottom:125px}.role-card{top:auto;bottom:155px;padding:10px 18px}.role-card strong{font-size:20px}}
.modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:rgba(4,5,9,.82);backdrop-filter:blur(8px)}.admin-panel{width:min(1050px,100%);max-height:90vh;overflow:auto;padding:24px}.admin-panel h2{margin:2px 0 0}.admin-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.admin-summary>div{padding:15px;border:1px solid var(--line);border-radius:12px;background:#13151e}.admin-summary strong{display:block;font-size:25px}.admin-summary span{color:var(--muted);font-size:12px;text-transform:uppercase}.admin-tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);margin-bottom:16px}.admin-tabs button{border:0;background:none;color:var(--muted);padding:12px}.admin-tabs button.active{color:#fff;border-bottom:2px solid var(--accent)}.admin-list{display:grid;gap:10px;margin-top:15px}.admin-row{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:12px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:12px;background:#12141c}.admin-row p{margin:3px 0;color:var(--muted);font-size:13px}.admin-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.danger{border:1px solid rgba(255,93,115,.6);border-radius:9px;background:rgba(255,93,115,.12);color:#ff8b9b;padding:8px 11px}.success{border:1px solid rgba(76,201,240,.6);border-radius:9px;background:rgba(76,201,240,.1);color:#84ddf7;padding:8px 11px}.badge{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:20px;background:#2b2e3d;color:#dfe2ee;font-size:11px}.badge.admin{background:rgba(141,92,255,.2);color:#bda6ff}.badge.banned{background:rgba(255,93,115,.15);color:#ff8b9b}@media(max-width:700px){.admin-summary{grid-template-columns:1fr 1fr}.admin-row{grid-template-columns:1fr}.admin-actions{justify-content:flex-start}}

.admin-fab{position:fixed;left:18px;bottom:18px;z-index:45;border:1px solid rgba(141,92,255,.8);border-radius:12px;background:rgba(31,22,55,.94);color:#d8caff;font-weight:900;letter-spacing:.08em;padding:12px 16px;box-shadow:0 12px 35px rgba(0,0,0,.4)}.admin-fab:hover{filter:brightness(1.15)}
