@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Share+Tech+Mono&display=swap');

:root{
    --bg:#05050a;
    --panel:#10101b;
    --panel2:#17172a;
    --line:#353557;
    --cyan:#00f5ff;
    --pink:#ff2bd6;
    --yellow:#ffe74a;
    --green:#4cff6b;
    --red:#ff3b3b;
    --orange:#ff8a24;
    --blue:#246bff;
    --white:#f4f2e8;
    --shadow:0 0 12px rgba(0,245,255,.28);
}

*{box-sizing:border-box}
html,body{min-height:100%}
body{
    margin:0;
    color:#fff;
    background:
        radial-gradient(circle at 50% 15%, #26133c 0, #090913 38%, #020205 100%);
    font-family:"Share Tech Mono",monospace;
    overflow-x:hidden;
}
body:before{
    content:"";
    position:fixed; inset:0; pointer-events:none;
    background-image:
        linear-gradient(rgba(0,245,255,.045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,43,214,.035) 1px, transparent 1px);
    background-size:40px 40px;
    opacity:.55;
}
.scanlines{
    position:fixed; inset:0; pointer-events:none; z-index:99;
    background:repeating-linear-gradient(
        to bottom,
        rgba(255,255,255,.018) 0,
        rgba(255,255,255,.018) 1px,
        rgba(0,0,0,.12) 2px,
        rgba(0,0,0,.12) 4px
    );
    mix-blend-mode:overlay;
}
.screen-glow{
    position:fixed; inset:0; pointer-events:none; z-index:98;
    box-shadow:inset 0 0 110px #000, inset 0 0 30px rgba(0,245,255,.08);
}

.cabinet{
    width:min(1480px,96vw);
    margin:24px auto 40px;
    border:3px solid #25253d;
    border-radius:16px;
    background:linear-gradient(180deg,rgba(15,15,27,.97),rgba(5,5,11,.98));
    box-shadow:0 0 0 5px #05050a,0 0 0 7px #343457,0 24px 70px #000;
    overflow:hidden;
}
.marquee{
    text-align:center;
    padding:22px 20px 18px;
    border-bottom:3px solid var(--pink);
    background:
        linear-gradient(180deg,#21103a,#090914),
        repeating-linear-gradient(90deg,transparent 0 24px,rgba(255,255,255,.025) 25px 26px);
    box-shadow:0 7px 0 #06060b,0 9px 0 var(--cyan);
}
.marquee-kicker{
    font-family:"Press Start 2P",monospace;
    color:var(--yellow);
    font-size:clamp(8px,1vw,12px);
    letter-spacing:2px;
    margin-bottom:10px;
}
.marquee h1{
    margin:0;
    font-family:"Press Start 2P",monospace;
    font-size:clamp(28px,5vw,68px);
    line-height:1.2;
    color:var(--white);
    text-shadow:4px 4px 0 var(--blue),8px 8px 0 var(--pink),0 0 22px rgba(0,245,255,.35);
}
.marquee h1 span{color:var(--cyan)}
.marquee p{
    margin:12px 0 0;
    color:var(--green);
    letter-spacing:8px;
    font-size:clamp(14px,2vw,24px);
}

.hud{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:8px;
    padding:12px;
    background:#070710;
    border-bottom:2px solid #292944;
}
.hud-card{
    min-width:0;
    padding:10px 12px;
    border:1px solid #34345a;
    background:linear-gradient(#141425,#0a0a13);
    text-align:center;
}
.hud-card span{
    display:block;
    color:#8e8eb4;
    font-size:12px;
    letter-spacing:2px;
}
.hud-card strong{
    display:block;
    margin-top:5px;
    color:var(--cyan);
    font-family:"Press Start 2P",monospace;
    font-size:clamp(12px,1.6vw,22px);
    text-shadow:0 0 8px currentColor;
    overflow:hidden;
    text-overflow:ellipsis;
}
.score-card strong{color:var(--yellow)}

.game-grid{
    display:grid;
    grid-template-columns:270px minmax(520px,1fr) 300px;
    gap:14px;
    padding:14px;
}
.side-panel,.game-stage{
    border:2px solid #2d2d4c;
    background:linear-gradient(180deg,rgba(20,20,35,.96),rgba(8,8,16,.98));
    box-shadow:inset 0 0 30px rgba(0,0,0,.6);
}
.side-panel{
    padding:18px;
}
.side-panel h2,.stage-title{
    font-family:"Press Start 2P",monospace;
    color:var(--pink);
    font-size:13px;
    line-height:1.5;
    letter-spacing:1px;
    text-shadow:0 0 8px currentColor;
}
.side-panel p{color:#b7b7cf;line-height:1.55}
.side-panel .tiny{font-size:13px}
.side-panel label{
    display:block;
    color:var(--cyan);
    font-size:13px;
    margin-bottom:7px;
}
.name-row{display:flex;gap:8px}
input{
    width:100%;
    min-width:0;
    color:var(--yellow);
    background:#030307;
    border:2px solid #4b4b72;
    padding:11px 10px;
    font-family:"Share Tech Mono",monospace;
    font-size:17px;
    text-transform:uppercase;
    outline:none;
}
input:focus{border-color:var(--cyan);box-shadow:0 0 10px rgba(0,245,255,.3)}
.panel-rule{height:2px;background:linear-gradient(90deg,var(--pink),transparent);margin:18px 0}
.status-display{
    border:1px solid #44446d;
    background:#030307;
    color:var(--green);
    padding:14px 10px;
    text-align:center;
    font-family:"Press Start 2P",monospace;
    font-size:11px;
    line-height:1.5;
    min-height:44px;
}

.game-stage{
    position:relative;
    min-height:690px;
    padding:14px 16px 20px;
    overflow:hidden;
}
.game-stage:before{
    content:"";
    position:absolute; inset:0;
    background:
        radial-gradient(circle at center,rgba(0,245,255,.07),transparent 48%),
        linear-gradient(rgba(255,255,255,.015) 1px, transparent 1px),
        linear-gradient(90deg,rgba(255,255,255,.015) 1px, transparent 1px);
    background-size:auto,20px 20px,20px 20px;
    pointer-events:none;
}
.stage-title{
    text-align:center;
    color:var(--cyan);
    position:relative;
    z-index:2;
    margin:2px 0 8px;
}
.cube-wrap{
    position:relative;
    height:430px;
    display:grid;
    place-items:center;
    perspective:1000px;
}
.cube{
    position:relative;
    width:246px;
    height:246px;
    transform-style:preserve-3d;
    transform:rotateX(-24deg) rotateY(34deg);
    transition:transform .35s ease;
}
.cubie{
    position:absolute;
    width:78px;
    height:78px;
    transform-style:preserve-3d;
}
.sticker{
    position:absolute;
    inset:2px;
    border:5px solid #07070b;
    border-radius:7px;
    box-shadow:inset 0 0 0 2px rgba(255,255,255,.12),0 0 7px rgba(0,0,0,.7);
    backface-visibility:hidden;
}
.sticker.white{background:#f3f1e7}
.sticker.yellow{background:#ffe442}
.sticker.red{background:#ff3030}
.sticker.orange{background:#ff8c1a}
.sticker.blue{background:#2068ff}
.sticker.green{background:#24d84b}

.sticker.front{transform:translateZ(39px)}
.sticker.back{transform:rotateY(180deg) translateZ(39px)}
.sticker.right{transform:rotateY(90deg) translateZ(39px)}
.sticker.left{transform:rotateY(-90deg) translateZ(39px)}
.sticker.up{transform:rotateX(90deg) translateZ(39px)}
.sticker.down{transform:rotateX(-90deg) translateZ(39px)}

.face-controls,.game-actions,.view-controls{
    position:relative;
    z-index:2;
    display:flex;
    justify-content:center;
    gap:8px;
    flex-wrap:wrap;
}
.face-controls{margin-top:7px}
.face-controls.alt{margin-top:6px}
.game-actions{margin-top:14px}
.view-controls{margin:0 0 10px}

button{font-family:inherit}
.pixel-btn,.move-btn{
    cursor:pointer;
    border:0;
    color:#fff;
    background:#1b1b2f;
    box-shadow:0 0 0 2px #050509,0 0 0 4px #4d4d72,0 5px 0 #050509;
    transition:transform .08s ease,filter .15s ease;
}
.pixel-btn:hover,.move-btn:hover{filter:brightness(1.25)}
.pixel-btn:active,.move-btn:active{transform:translateY(3px);box-shadow:0 0 0 2px #050509,0 0 0 4px #4d4d72,0 2px 0 #050509}
.pixel-btn{
    padding:13px 16px;
    font-family:"Press Start 2P",monospace;
    font-size:10px;
}
.pixel-btn.hot{
    color:#111;
    background:var(--yellow);
    box-shadow:0 0 0 2px #050509,0 0 0 4px var(--orange),0 5px 0 #9b4200,0 0 14px rgba(255,231,74,.3);
}
.pixel-btn.small{padding:10px 10px;font-size:8px}
.pixel-btn.tiny{padding:9px 10px;font-size:7px}
.pixel-btn.full{width:100%;margin-top:12px}
.move-btn{
    width:54px;
    height:45px;
    color:#030309;
    background:var(--cyan);
    font-family:"Press Start 2P",monospace;
    font-size:13px;
    box-shadow:0 0 0 2px #050509,0 0 0 4px #178a90,0 5px 0 #073b3e;
}
.move-btn.inverse{
    background:var(--pink);
    box-shadow:0 0 0 2px #050509,0 0 0 4px #8e1c79,0 5px 0 #4e0f42;
}

.ranking-head{
    display:grid;
    grid-template-columns:30px 1fr 90px;
    gap:7px;
    color:#77779c;
    border-bottom:1px solid #343453;
    padding:7px 2px;
    font-size:12px;
}
.leaderboard{
    list-style:none;
    padding:0;
    margin:8px 0 0;
}
.leaderboard li{
    display:grid;
    grid-template-columns:30px 1fr 90px;
    gap:7px;
    padding:9px 2px;
    border-bottom:1px dashed #292944;
    font-size:14px;
}
.leaderboard .rank{color:var(--pink)}
.leaderboard .name{color:#f2f2ff;overflow:hidden;text-overflow:ellipsis}
.leaderboard .points{color:var(--yellow);text-align:right}
.leaderboard .loading{display:block;color:#77779c}

.help-strip{
    display:flex;
    justify-content:center;
    flex-wrap:wrap;
    gap:16px;
    padding:11px 14px;
    border-top:2px solid #292944;
    border-bottom:2px solid #292944;
    background:#090912;
    color:#9393b0;
    font-size:12px;
}
.help-key{
    color:var(--cyan);
    border:1px solid #49496d;
    padding:2px 6px;
    margin-right:4px;
}
kbd{
    border:1px solid #505070;
    padding:1px 4px;
    color:var(--yellow);
    background:#080810;
}
footer{
    display:flex;
    justify-content:space-between;
    gap:12px;
    padding:12px 16px;
    color:#5e5e78;
    font-size:12px;
    letter-spacing:1px;
}

.overlay{
    position:fixed;
    inset:0;
    z-index:200;
    display:grid;
    place-items:center;
    background:rgba(0,0,0,.82);
    backdrop-filter:blur(5px);
}
.overlay.hidden{display:none}
.win-card{
    width:min(500px,90vw);
    padding:28px;
    text-align:center;
    border:4px solid var(--cyan);
    background:#090912;
    box-shadow:0 0 0 7px #151529,0 0 40px rgba(0,245,255,.35);
}
.win-card h2{
    font-family:"Press Start 2P",monospace;
    color:var(--green);
    line-height:1.6;
}
.win-flash{
    color:var(--pink);
    font-family:"Press Start 2P",monospace;
    font-size:10px;
    animation:blink .65s steps(2,end) infinite;
}
.final-score{
    margin:20px 0 10px;
    color:var(--yellow);
    font-family:"Press Start 2P",monospace;
    font-size:34px;
    text-shadow:0 0 18px currentColor;
}
.final-stats{color:#bdbdd0;margin-bottom:22px}
@keyframes blink{50%{opacity:.2}}

@media (max-width:1100px){
    .game-grid{grid-template-columns:1fr 1fr}
    .game-stage{grid-column:1/-1;grid-row:1}
}
@media (max-width:720px){
    .cabinet{width:100%;margin:0;border-radius:0}
    .hud{grid-template-columns:1fr 1fr}
    .game-grid{grid-template-columns:1fr;padding:8px}
    .game-stage{grid-column:auto;min-height:620px}
    .cube-wrap{height:390px;transform:scale(.86)}
    .marquee h1{font-size:30px}
    footer{flex-direction:column}
}
