:root{--bg-color:#050505;--board-bg:#0a0a0a;--grid-color:#ffffff12;--text-color:#f8fafc;--accent-color:#a78bfa;--panel-bg:#0a0a0a;--border-color:#333;--piece-i:#00f0f0;--piece-j:#0000f0;--piece-l:#f0a000;--piece-o:#f0f000;--piece-s:#00f000;--piece-t:#a000f0;--piece-z:#f00000}*{box-sizing:border-box;margin:0;padding:0;font-family:Outfit,sans-serif}body{background-color:var(--bg-color);background-image:radial-gradient(var(--grid-color) 1px, transparent 1px);color:var(--text-color);background-size:20px 20px;justify-content:center;align-items:center;min-height:100vh;display:flex;overflow:hidden}.game-container{flex-direction:column;align-items:center;gap:20px;width:100%;max-width:1000px;padding:20px;display:flex}.game-layout{flex-direction:row;justify-content:center;align-items:flex-start;gap:30px;width:100%;display:flex}.side-panel{flex-direction:column;gap:20px;width:180px;display:flex}.info-box{background:var(--panel-bg);border:1px solid var(--border-color);text-align:center;padding:15px;transition:transform .1s,border-color .2s,box-shadow .2s}.info-box:hover{border-color:var(--accent-color);transform:translate(-3px,-3px);box-shadow:4px 4px #a78bfa80}.info-box h3{text-transform:uppercase;letter-spacing:1.5px;color:#888;margin-bottom:5px;font-size:.9rem}.info-box p{color:var(--text-color);font-size:1.8rem;font-weight:800}.board-container{background:var(--panel-bg);border:1px solid var(--border-color);padding:10px;position:relative}canvas#tetris-board{background:var(--board-bg);border:1px solid var(--border-color);background-image:radial-gradient(var(--grid-color) 1px, transparent 1px);background-position:50%;background-size:30px 30px;display:block}canvas#next-piece-canvas{background:0 0;margin:0 auto;display:block}.controls-info{background:var(--panel-bg);border:1px solid var(--border-color);padding:15px}.controls-info h3{text-transform:uppercase;letter-spacing:1px;color:#888;text-align:center;margin-bottom:10px;font-size:.9rem}.controls-info ul{color:#bbb;font-size:.85rem;list-style:none}.controls-info li{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}kbd{background:#222;border:1px solid #444;border-bottom:2px solid #555;padding:2px 6px;font-family:monospace;font-size:.8rem}.overlay{z-index:10;text-align:center;background:#050505eb;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.overlay.hidden{display:none}.overlay h2{color:var(--text-color);letter-spacing:2px;margin-bottom:10px;font-size:2.5rem}.overlay p{color:#aaa;margin-bottom:20px;font-size:1.2rem}.nes-title{letter-spacing:4px;color:var(--text-color);text-shadow:4px 4px 0px var(--accent-color);font-weight:800;margin-bottom:30px!important;font-size:3rem!important}.level-selection{flex-direction:column;align-items:center;gap:10px;margin-bottom:25px;display:flex}.level-selection label{color:#888;text-transform:uppercase;letter-spacing:1px;font-size:1.1rem}.level-selection input{border:1px solid var(--border-color);color:#fff;text-align:center;background:#111;outline:none;width:100px;padding:5px 15px;font-family:monospace;font-size:2rem}.level-selection input:focus{border-color:var(--accent-color)}.glow-btn{background:var(--bg-color);color:#fff;border:1px solid var(--border-color);cursor:pointer;text-transform:uppercase;letter-spacing:1px;padding:12px 24px;font-size:1.1rem;font-weight:600;transition:all .1s}.glow-btn:hover{background:var(--text-color);color:var(--bg-color);border-color:var(--text-color);box-shadow:4px 4px 0px var(--accent-color);transform:translate(-3px,-3px)}.glow-btn:active{box-shadow:none;transform:translate(0)}#player-name-input{border:1px solid var(--border-color);color:#fff;background:#111}#player-name-input:focus{border-color:var(--accent-color)}.mobile-controls{justify-content:space-between;align-items:center;width:100%;max-width:400px;margin-top:10px;padding:0 10px;display:none}.control-btn{border:1px solid var(--border-color);color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#111;justify-content:center;align-items:center;width:60px;height:60px;font-size:1.5rem;display:flex}.control-btn:active{background:#333}.center-controls{flex-direction:column;gap:10px;display:flex}.center-controls .control-btn{width:70px;height:70px}@media (width<=768px){.game-layout{flex-direction:column;align-items:center;gap:15px}.side-panel{flex-direction:row;justify-content:space-between;width:100%;max-width:320px}.info-box{flex:1;padding:10px}.info-box p{font-size:1.4rem}.controls-info,.right-panel{display:none}.mobile-controls{display:flex}}.score-win{color:#22c55e!important}.score-lose{color:#ef4444!important}.score-tie{color:var(--accent-color)!important}#leaderboard-list li{border-bottom:1px solid var(--border-color);justify-content:space-between;padding:4px 0;display:flex}#leaderboard-list li:last-child{border-bottom:none}#leaderboard-list li span:first-child{color:#fff;font-weight:600}.trt-box h3{color:#a78bfa}.trt-box p{color:#a78bfa;margin-bottom:6px;font-size:1.6rem;transition:color .2s}.trt-box p.trt-hot{color:#22c55e}.trt-box p.trt-warm{color:#facc15}.trt-box p.trt-cold{color:#ef4444}#my-trt-chart{border:1px solid var(--border-color);background:#111;margin:0 auto;display:block}.trt-mini-widget{border:1px solid var(--border-color);background:#111;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-bottom:2px;padding:4px 8px;display:flex}.trt-mini-label{text-transform:uppercase;color:#a78bfa;font-size:.65rem;font-weight:600}.trt-mini-value{color:#a78bfa;text-align:center;min-width:36px;font-size:.9rem;font-weight:800}.trt-mini-value.trt-hot{color:#22c55e}.trt-mini-value.trt-warm{color:#facc15}.trt-mini-value.trt-cold{color:#ef4444}#opponent-trt-chart{border:1px solid var(--border-color);background:#111;display:block}#opponent-board{border:1px solid var(--border-color)}@keyframes shake-small{0%,to{transform:translateY(0)}50%{transform:translateY(2px)}}.shake-small{animation:.1s linear shake-small}@keyframes shake-large{0%,to{transform:translate(0)}25%{transform:translate(3px,3px)}50%{transform:translate(-3px,-3px)}75%{transform:translate(3px,-2px)}}.shake-large{animation:.15s steps(2,end) shake-large}
