@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap');
:root{--radius:18px;--bg:#080d16;--panel:rgba(13,20,31,.84);--line:rgba(255,255,255,.10);--text:#f7f9fc;--muted:#8d98a8;--accent:#8af0aa;--accent2:#7fc8ff;--shadow:0 30px 90px rgba(0,0,0,.35)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:'DM Sans',system-ui,sans-serif;color:var(--text);background:#070b13}body{min-height:100vh;background-size:cover;background-position:center;background-attachment:fixed}body:before{content:"";position:fixed;inset:0;z-index:-2;background:linear-gradient(135deg,rgba(5,8,15,.96),rgba(13,20,31,.80))}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.topbar{height:60px;padding:0 clamp(15px,4vw,48px);display:flex;align-items:center;justify-content:space-between;background:rgba(7,11,19,.80);border-bottom:1px solid var(--line);backdrop-filter:blur(18px);position:sticky;top:0;z-index:30}.brand-top{display:flex;gap:6px;align-items:center;font-size:13px;letter-spacing:.03em}.brand-top span:last-child{color:#8793a5}.brand-mark{color:var(--accent);font-size:16px}.topbar nav{display:flex;gap:15px;align-items:center;font-size:12px;color:#b5bfcb}.topbar nav a:hover{color:#fff}.admin-link{color:var(--accent)!important}.player-badge{padding:8px 11px;border:1px solid var(--line);background:#ffffff06;border-radius:999px;font-size:11px;color:#c9d1dc}.site-banner{width:100%;background:rgba(9,36,56,.88);border-bottom:1px solid rgba(255,255,255,.07)}.banner-inner{min-height:52px;display:flex;align-items:center;justify-content:center;gap:14px;padding:7px 15px;text-align:center}.banner-inner img{max-height:40px;max-width:180px;object-fit:contain;border-radius:10px}.banner-inner strong{font-size:12px}.layout{width:min(1440px,100%);margin:auto;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;padding:30px 24px 45px}.game-area{min-width:0}.game-heading{display:flex;justify-content:space-between;align-items:flex-end;height:52px;margin-bottom:12px}.game-heading small{color:var(--accent);font-weight:700;letter-spacing:.18em;font-size:9px}.game-heading h1{font-family:'Space Grotesk';font-size:clamp(23px,2.8vw,35px);margin:5px 0 0;line-height:1}.round-btn{width:40px;height:40px;border:1px solid var(--line);border-radius:calc(var(--radius) - 6px);background:#ffffff07;color:#fff;cursor:pointer}.game-shell{position:relative;height:calc(100vh - 175px);min-height:570px;max-height:900px;overflow:hidden;border-radius:var(--radius);border:1px solid rgba(255,255,255,.12);background:#0b111b;box-shadow:var(--shadow)}.game-shell:before{content:"";position:absolute;inset:0;z-index:8;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.035)}.game-scene{position:absolute;inset:0;background-image:var(--game-bg);background-size:cover;background-position:center;filter:blur(var(--game-blur));transform:scale(1.04);opacity:.58}.game-shell canvas{position:relative;z-index:2;display:block;width:100%;height:100%}.hud{position:absolute;z-index:10;left:14px;right:14px;top:14px;display:flex;gap:7px;pointer-events:none}.hud span{padding:8px 11px;border:1px solid rgba(255,255,255,.09);background:rgba(4,8,14,.58);backdrop-filter:blur(12px);border-radius:11px;font-size:9px;color:#a9b4c1;letter-spacing:.10em}.hud b{font-size:14px;color:#fff;letter-spacing:0;margin-left:4px}.hud span:last-child{margin-left:auto;color:var(--accent)}.overlay{position:absolute;z-index:12;inset:0;display:grid;place-items:center;background:linear-gradient(180deg,rgba(2,5,10,.12),rgba(2,5,10,.62));backdrop-filter:blur(2px)}.start-card{width:min(440px,calc(100% - 30px));padding:32px;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius);background:rgba(9,14,23,.90);box-shadow:0 30px 90px rgba(0,0,0,.48);text-align:center}.logo-big{font-family:'Space Grotesk';font-weight:700;font-size:13px;letter-spacing:.08em}.logo-big span:not(.spark){color:#8c98a9}.spark{color:var(--accent);margin-right:3px}.start-card h2{font-family:'Space Grotesk';font-size:31px;margin:15px 0 8px}.start-card p{color:#9da8b6;font-size:13px;line-height:1.55;margin:0 auto 19px;max-width:360px}.welcome{font-size:9px;font-weight:700;letter-spacing:.18em;color:var(--accent);margin-top:16px}.name-box{display:grid;grid-template-columns:1fr auto;gap:8px}.name-box input{height:48px;min-width:0;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:#f6f8fb;color:#111820;padding:0 14px;outline:none}.name-box input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(138,240,170,.13)}.main-btn{height:48px;padding:0 18px;border:0;border-radius:12px;background:var(--accent);color:#061009;font-weight:800;cursor:pointer}.main-btn span{margin-left:5px}.main-btn.wide{width:100%}.gyro-btn{width:100%;height:43px;margin-top:9px;border-radius:12px;border:1px solid var(--line);background:#ffffff03;color:#cbd4df;cursor:pointer}.gyro-btn:hover{background:#ffffff08}.hint{display:block;color:#687484;font-size:10px;margin-top:11px}.mobile-controls{display:none;align-items:center;justify-content:center;gap:18px;padding:10px 0}.mobile-controls button{width:90px;height:50px;border:1px solid var(--line);border-radius:13px;background:#101722;color:#fff;font-size:22px;touch-action:none}.mobile-controls div{text-align:center;color:#8490a0;font-size:11px}.mobile-controls small{display:block;margin-top:2px}.side{padding-top:64px}.side-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:17px;backdrop-filter:blur(18px);box-shadow:0 18px 55px rgba(0,0,0,.20)}.side-card+.side-card{margin-top:13px}.side-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:11px;border-bottom:1px solid var(--line)}.side-head h2{font-family:'Space Grotesk';font-size:17px;margin:0}.side-head span{font-size:8px;letter-spacing:.16em;color:#697484}.rank{display:flex;justify-content:space-between;align-items:center;padding:11px 5px;border-bottom:1px solid rgba(255,255,255,.05);font-size:12px}.rank b{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:8px;background:#ffffff08;color:#8e99a7;margin-right:8px;font-size:10px}.rank strong{font-family:'Space Grotesk';font-size:12px}.rank.me{background:rgba(138,240,170,.06);border-radius:9px;padding-left:9px;padding-right:9px}.empty{padding:22px 4px;color:#687484;text-align:center;font-size:12px}.guide h3{font-family:'Space Grotesk';margin:0 0 7px}.guide>p{font-size:11px;color:#7d8999;line-height:1.55;margin:0 0 9px}.guide>div{display:grid;grid-template-columns:28px 1fr;gap:2px 6px;padding:9px 0;border-top:1px solid rgba(255,255,255,.05);font-size:12px}.guide>div small{grid-column:2;color:#697585}.theme-halloween{--accent:#ff9a42;--accent2:#d77cff}.theme-noel{--accent:#bfeaff;--accent2:#70baff}.theme-paques{--accent:#ff9fc9;--accent2:#9ce6af}.theme-printemps{--accent:#8ee5b5;--accent2:#86dcff}.theme-ete{--accent:#ffe06c;--accent2:#68d6ff}.theme-halloween:before{background:linear-gradient(135deg,rgba(20,7,28,.96),rgba(54,17,43,.78))}.theme-noel:before{background:linear-gradient(135deg,rgba(4,18,33,.97),rgba(13,50,76,.80))}.theme-paques:before{background:linear-gradient(135deg,rgba(15,35,27,.96),rgba(48,77,52,.80))}.theme-printemps:before{background:linear-gradient(135deg,rgba(10,31,37,.96),rgba(34,78,76,.80))}.theme-ete:before{background:linear-gradient(135deg,rgba(6,35,51,.96),rgba(22,90,112,.80))}.theme-halloween .site-banner{background:rgba(47,17,43,.90)}.theme-noel .site-banner{background:rgba(7,38,62,.90)}.theme-paques .site-banner{background:rgba(26,65,43,.90)}.theme-printemps .site-banner{background:rgba(23,64,64,.90)}.theme-ete .site-banner{background:rgba(11,72,91,.90)}
footer{text-align:center;padding:20px;color:#586475;font-size:10px}
/* admin / install / auth */
.center-card,.auth-card{width:min(590px,calc(100% - 28px));margin:7vh auto;padding:34px;background:rgba(10,15,24,.92);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(20px)}.auth-card{width:min(430px,calc(100% - 28px));margin:12vh auto}.eyebrow{color:var(--accent);font-size:9px;font-weight:700;letter-spacing:.18em}.center-card h1,.auth-card h1{font-family:'Space Grotesk';font-size:32px;margin:8px 0 24px}.stepper{display:flex;gap:7px;margin-bottom:24px}.stepper span{height:4px;flex:1;border-radius:999px;background:#ffffff10}.stepper span.active{background:var(--accent)}.form-grid{display:grid;gap:13px}.field{display:grid;gap:6px}.field label{font-size:11px;color:#aeb8c5;font-weight:600}.field input,.field select,.field textarea{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:#0b111a;color:#fff;outline:none}.field textarea{min-height:105px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.field input[type=range]{padding:0}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.btn{padding:11px 14px;border:1px solid var(--line);border-radius:11px;background:#ffffff06;color:#fff;font-weight:700;cursor:pointer}.btn.primary{background:var(--accent);color:#061009;border-color:transparent}.notice{padding:12px 14px;border-radius:12px;background:rgba(138,240,170,.09);border:1px solid rgba(138,240,170,.20);color:#c8f8d4;margin-bottom:14px;font-size:12px}.notice.error{background:rgba(255,107,120,.08);border-color:rgba(255,107,120,.2);color:#ffc4ca}.muted{color:#697585;font-size:11px}.admin-page{width:min(1180px,100%);margin:auto;padding:28px 16px 55px}.admin-hero{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:18px}.admin-hero h1{font-family:'Space Grotesk';font-size:34px;margin:5px 0}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.admin-card{background:rgba(11,17,26,.82);border:1px solid var(--line);border-radius:var(--radius);padding:19px;box-shadow:0 18px 50px rgba(0,0,0,.15);backdrop-filter:blur(18px)}.admin-card h2{font-family:'Space Grotesk';font-size:17px;margin:0}.admin-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.admin-badge{font-size:8px;letter-spacing:.14em;color:var(--accent);padding:5px 7px;border:1px solid rgba(138,240,170,.2);border-radius:999px}.check{display:flex;align-items:center;gap:8px;font-size:11px;color:#aeb8c5}.inline-form{margin-top:7px}.dropzone{min-height:145px;border:1.5px dashed rgba(255,255,255,.20);border-radius:calc(var(--radius) - 3px);background:#ffffff03;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:7px;cursor:pointer;transition:.18s;outline:none}.dropzone:hover,.dropzone:focus,.dropzone.drag{border-color:var(--accent);background:rgba(255,255,255,.055)}.dropzone.has-file{border-style:solid;border-color:var(--accent)}.drop-icon{width:40px;height:40px;border-radius:12px;background:#ffffff08;display:grid;place-items:center;font-size:20px}.dropzone b{font-size:13px}.dropzone small{color:#6d7887;font-size:10px}.preview{margin-top:10px}.preview img{display:block;width:100%;max-height:170px;object-fit:contain;background:#080c12;border:1px solid var(--line);border-radius:12px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th,td{padding:10px 7px;text-align:left;border-bottom:1px solid rgba(255,255,255,.05);white-space:nowrap}th{font-size:9px;letter-spacing:.1em;color:#687484;text-transform:uppercase}.actions{display:flex;gap:5px}.actions .btn{padding:7px 9px;font-size:10px}.danger{background:rgba(255,107,120,.08)!important;border-color:rgba(255,107,120,.22)!important;color:#ffabb3!important}.admin-grid>.admin-card:nth-child(4){grid-column:1/-1}
@media(max-width:1050px){.layout{grid-template-columns:1fr}.side{padding-top:0}.game-shell{height:calc(100vh - 190px)}}@media(max-width:700px){.topbar{height:56px;padding:0 12px}.topbar nav{gap:8px}.topbar nav a:not(.admin-link){display:none}.layout{padding:15px 10px 30px}.game-heading{height:auto}.game-heading h1{font-size:22px}.game-shell{height:calc(100svh - 175px);min-height:470px;border-radius:calc(var(--radius) - 3px)}.hud{left:8px;right:8px;top:8px}.hud span{padding:7px 8px;font-size:7px}.hud b{font-size:12px}.start-card{padding:25px 18px}.start-card h2{font-size:27px}.name-box{grid-template-columns:1fr}.name-box button{width:100%}.mobile-controls{display:flex}.side-card{border-radius:calc(var(--radius) - 3px)}.admin-grid{grid-template-columns:1fr}.admin-grid>.admin-card:nth-child(4){grid-column:auto}.admin-hero{align-items:flex-start}.admin-hero h1{font-size:27px}.center-card,.auth-card{padding:24px;margin-top:5vh}.form-actions{flex-wrap:wrap}}

/* V7 polish: site background, optional fullscreen, responsive layouts */
body{background-image:var(--site-bg);background-size:cover;background-position:center;background-attachment:fixed}
.game-shell:fullscreen{width:100vw;height:100vh;max-height:none;min-height:0;border-radius:0;border:0;background:#050912}
.game-shell:-webkit-full-screen{width:100vw;height:100vh;max-height:none;min-height:0;border-radius:0;border:0}
.game-shell.pseudo-fullscreen{position:fixed;inset:0;z-index:9999;width:100vw;height:100vh;max-height:none;min-height:0;border-radius:0}
.game-shell:fullscreen .game-scene,.game-shell.pseudo-fullscreen .game-scene{transform:scale(1.02)}
footer{display:flex;justify-content:center;align-items:center;gap:18px;flex-wrap:wrap;padding:22px 14px 28px}
.footer-links{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.footer-links a{padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:#ffffff05;color:#9da8b6;transition:.18s}
.footer-links a:hover{color:#fff;background:#ffffff0a}
.auth-intro{margin:-12px 0 22px;line-height:1.55}.auth-back{margin-top:18px;text-align:center;font-size:12px}.auth-card label{display:grid;gap:6px;margin:12px 0;font-size:11px;color:#aeb8c5}.auth-card input{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:#0b111a;color:#fff;outline:none}.auth-card button{width:100%;margin-top:8px;padding:12px 14px;border:0;border-radius:11px;background:var(--accent);color:#061009;font-weight:800;cursor:pointer}.auth-card .error{padding:12px 14px;border-radius:12px;background:rgba(255,107,120,.08);border:1px solid rgba(255,107,120,.2);color:#ffc4ca;font-size:12px}
@media(max-width:1050px){.layout{grid-template-columns:1fr}.side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.side-card+.side-card{margin-top:0}.game-shell{height:min(78svh,760px);min-height:520px}}
@media(max-width:700px){html,body{overflow-x:hidden}.topbar{position:sticky}.site-banner{min-height:44px}.banner-inner{min-height:44px;padding:6px 10px}.banner-inner img{max-width:120px;max-height:30px}.banner-inner strong{font-size:10px}.layout{display:block;padding:12px 8px 25px}.game-heading{margin:2px 2px 9px}.game-heading h1{font-size:21px}.game-heading small{font-size:8px}.round-btn{width:36px;height:36px}.game-shell{height:calc(100svh - 180px);min-height:500px;max-height:none;border-radius:calc(var(--radius) - 4px)}.hud{gap:4px}.hud span{padding:6px 7px}.hud span:last-child{margin-left:auto}.start-card{width:min(410px,calc(100% - 18px));padding:24px 16px}.start-card h2{font-size:26px}.start-card p{font-size:12px}.name-box{grid-template-columns:1fr}.name-box input,.main-btn{height:46px}.mobile-controls{display:flex;position:relative}.mobile-controls button{width:84px;height:48px}.side{display:block;padding-top:4px}.side-card{margin-top:10px!important}.guide{display:none}.ranking-card{padding:14px}.rank{padding:9px 4px}.admin-page{padding:16px 10px 35px}.admin-grid{gap:10px}.admin-card{padding:15px}.admin-title{align-items:flex-start}.table-wrap{margin-inline:-4px}.actions{flex-wrap:wrap}.actions .btn{padding:7px 8px}.center-card,.auth-card{width:min(520px,calc(100% - 18px));padding:22px 16px;margin:4vh auto}.center-card h1,.auth-card h1{font-size:27px}.form-actions .btn{width:100%}.dropzone{min-height:125px}.footer-links{width:100%}.footer-links a{font-size:10px}.game-shell:fullscreen .start-card,.game-shell.pseudo-fullscreen .start-card{width:min(430px,calc(100% - 24px))}}
@media(max-width:390px){.brand-top{font-size:11px}.player-badge{padding:7px 8px}.game-shell{height:calc(100svh - 170px);min-height:470px}.mobile-controls button{width:72px}.start-card{padding:20px 13px}.start-card h2{font-size:23px}}
