:root{--bg:#000;--board:#171717;--cell:#262626;--blk:#fff;--fg:#fff;--cs:40px;--tc:20px}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%}
body{background:var(--bg);color:var(--fg);font-family:Orbitron,"Segoe UI",Arial,sans-serif;overflow-x:hidden;user-select:none;-webkit-user-select:none;transition:background .5s}
#bg{position:fixed;inset:0;width:100%;height:100%;z-index:0}
#app{position:relative;z-index:1;min-height:100svh;display:flex;flex-direction:column;align-items:center;padding:env(safe-area-inset-top,0px) 12px env(safe-area-inset-bottom,0px)}
#head{width:100%;max-width:900px}
#bar{display:flex;align-items:center;gap:10px;padding:8px 0;perspective:800px}
.logo{width:58px;height:58px;flex:none;object-fit:contain;border-radius:12px;box-shadow:0 0 0 2px var(--fg),0 8px 18px rgba(0,0,0,.7)}
.sp{width:58px;flex:none;display:flex;justify-content:flex-end}
.inst{flex:none;min-width:0;width:50px;min-height:50px;padding:0;font-size:1.5rem}
.inst[hidden]{display:none}
h1,h2{margin:0;text-align:center;font-weight:900;letter-spacing:.04em;color:var(--fg);transform:rotateX(var(--gx,0deg)) rotateY(var(--gy,0deg));animation:flt 5s ease-in-out infinite;
  text-shadow:1px 1px 0 #ddd,2px 2px 0 #bbb,3px 3px 0 #999,4px 4px 0 #777,5px 5px 0 #555,6px 6px 0 #333,8px 12px 14px rgba(0,0,0,.85)}
h1{flex:1;font-size:clamp(1.25rem,6.2vw,3.6rem);line-height:1.05}
h1 span{display:inline-block}
h2{font-size:clamp(1.6rem,8vw,3.6rem);line-height:1.05}
@keyframes flt{50%{translate:0 -6px}}
#stats{display:flex;justify-content:center;gap:clamp(12px,5vw,48px);margin:8px 0 14px}
.st{font-weight:700;font-size:clamp(.85rem,3.8vw,1.5rem);letter-spacing:.06em;white-space:nowrap;text-shadow:1px 1px 0 #999,2px 2px 0 #666,3px 3px 0 #333,4px 6px 8px #000}
.st.big{font-size:clamp(1.3rem,6vw,2.2rem)}
.st b{font-variant-numeric:tabular-nums}
#btns,.row{display:flex;gap:12px;justify-content:center;perspective:800px;margin-bottom:10px}
.b3d{--rx:0deg;--ry:0deg;--ty:0px;flex:1;max-width:260px;min-width:120px;min-height:54px;padding:12px 10px;font-family:inherit;font-weight:700;font-size:clamp(.75rem,3.2vw,1rem);letter-spacing:.06em;line-height:1.1;color:var(--fg);cursor:pointer;
  background:linear-gradient(160deg,color-mix(in srgb,var(--fg) 24%,#000),#0a0a0a);border:2px solid var(--fg);border-radius:14px;text-shadow:0 2px 0 #000;
  box-shadow:0 6px 0 color-mix(in srgb,var(--fg) 45%,#000),0 14px 22px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.35);
  transform:rotateX(var(--rx)) rotateY(var(--ry)) translateY(var(--ty));transition:transform .15s,box-shadow .15s,filter .15s}
.b3d:hover{--ty:-3px;filter:brightness(1.2)}
.b3d:active{--ty:5px;box-shadow:0 1px 0 color-mix(in srgb,var(--fg) 45%,#000),0 4px 8px rgba(0,0,0,.7)}
.b3d:focus-visible{outline:3px solid var(--fg);outline-offset:3px}

#play{display:flex;flex-direction:column;align-items:center;padding-top:6px}
#gw{position:relative}
#grid{display:grid;grid-template-columns:repeat(8,var(--cs));gap:3px;padding:6px;background:var(--board);border-radius:14px;box-shadow:0 0 0 2px var(--fg),0 18px 40px rgba(0,0,0,.6);transition:background .5s}
.c{width:var(--cs);height:var(--cs);border-radius:20%;background:var(--cell);transition:background .5s}
.f,.b{background:var(--blk);box-shadow:inset 0 -3px 0 rgba(0,0,0,.28),inset 0 2px 0 rgba(255,255,255,.4)}
.c.f{background:var(--blk)}
.c.pv{background:var(--blk);opacity:.5}
.pop{animation:pop .22s}
.clr{animation:clr .3s ease-in forwards}
@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.12)}100%{transform:scale(1)}}
@keyframes clr{40%{filter:brightness(1.8);transform:scale(1.1)}to{transform:scale(0);opacity:0}}
#tray{display:flex;gap:10px;margin-top:18px;width:calc(8*var(--cs) + 33px)}
.slot{flex:1;height:calc(5*var(--tc) + 18px);display:flex;align-items:center;justify-content:center;background:var(--board);border-radius:14px;touch-action:none;cursor:grab;box-shadow:0 0 0 1px color-mix(in srgb,var(--fg) 40%,transparent);transition:background .5s}
.slot.dim>div{opacity:.3}
.slot.hold>div{opacity:.2}
.b{border-radius:20%}
.ghost{position:fixed;z-index:30;pointer-events:none;filter:drop-shadow(0 8px 10px rgba(0,0,0,.5))}
.msg{position:absolute;left:0;right:0;top:36%;text-align:center;font-weight:900;font-size:clamp(1.4rem,6vw,2rem);pointer-events:none;animation:fl .9s ease-out forwards;text-shadow:2px 2px 0 #000,0 0 14px var(--bg)}
.msg small{display:block;font-size:.65em}
@keyframes fl{0%{transform:translateY(10px) scale(.6);opacity:0}20%{transform:scale(1.1);opacity:1}100%{transform:translateY(-40px);opacity:0}}

.view{position:fixed;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:20px;overflow-y:auto;background:color-mix(in srgb,var(--bg) 90%,transparent);opacity:0;visibility:hidden;transform:scale(1.05) translateY(24px);transition:opacity .35s,transform .35s,visibility .35s}
.view.on{opacity:1;visibility:visible;transform:none}
#swatch{width:min(300px,80vw);height:90px;border-radius:18px;border:3px solid var(--fg);box-shadow:0 8px 0 color-mix(in srgb,var(--fg) 35%,#000),0 16px 26px rgba(0,0,0,.6)}
.ctl{width:min(340px,86vw);display:flex;flex-direction:column;gap:14px}
.ctl .row{margin:0}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:30px;border-radius:15px;border:2px solid var(--fg);outline:0;touch-action:pan-y}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:38px;height:38px;border-radius:50%;background:#fff;border:3px solid #000;box-shadow:0 0 0 2px #fff,0 4px 8px rgba(0,0,0,.6)}
input[type=range]::-moz-range-thumb{width:32px;height:32px;border-radius:50%;background:#fff;border:3px solid #000;box-shadow:0 0 0 2px #fff}
#rh{background:linear-gradient(90deg,#f00,#ff0,#0f0,#0ff,#00f,#f0f,#f00)}
#hex{flex:1;min-width:0;height:52px;font:700 1.2rem Orbitron,monospace;text-align:center;color:var(--fg);background:#0a0a0a;border:2px solid var(--fg);border-radius:12px;user-select:text;-webkit-user-select:text}
#nat{width:64px;height:52px;padding:2px;background:#0a0a0a;border:2px solid var(--fg);border-radius:12px;cursor:pointer}

@media (max-width:640px){h1 span{display:block}}
body.side #app{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:2vw;min-height:100svh}
body.side #head{max-width:none}
body.side h1 span{display:block}
body.side h1{font-size:clamp(1.2rem,3.6vw,3rem)}
body.side #tray{margin-top:12px}
@media (prefers-reduced-motion:reduce){h1,h2{animation:none}.pop,.clr,.msg{animation-duration:.01s}}
