:root{--bg-deep: #0A0A1F;--bg-mid: #150033;--cyan: #00F5FF;--magenta: #FF00AA;--purple: #9D4EDD;--text-primary: #FFFFFF;--text-secondary: #B8B8D0;--danger: #FF3366;--cell-size: 30px;--panel-width: 140px}*{margin:0;padding:0;box-sizing:border-box}html{background:var(--bg-deep);height:100%}body{width:100%;height:100%;min-height:100vh;min-height:-webkit-fill-available;overflow:hidden;background:linear-gradient(135deg,var(--bg-deep),var(--bg-mid));font-family:Segoe UI,system-ui,-apple-system,sans-serif;color:var(--text-primary);user-select:none;-webkit-user-select:none;touch-action:none;-webkit-tap-highlight-color:transparent}#app{display:flex;flex-direction:column;width:100%;height:100%;max-width:900px;margin:0 auto}#top-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;padding-top:max(8px,env(safe-area-inset-top,0px));background:#0a0a1fe6;border-bottom:1px solid rgba(157,78,221,.3);z-index:10}.logo{font-size:1.2rem;font-weight:900;letter-spacing:.3em;background:linear-gradient(90deg,var(--cyan),var(--magenta));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.mode-name{font-size:.85rem;font-weight:700;letter-spacing:.15em;color:var(--text-secondary)}.top-actions{display:flex;gap:8px}.icon-btn{width:36px;height:36px;border:1px solid rgba(157,78,221,.4);border-radius:8px;background:#9d4edd26;color:var(--text-primary);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.icon-btn:hover{background:#9d4edd4d;border-color:var(--purple)}.icon-btn:active{transform:scale(.9)}#game-layout{display:flex;flex:1;align-items:stretch;justify-content:center;gap:8px;padding:8px;min-height:0}.side-panel{display:flex;flex-direction:column;width:var(--panel-width);min-width:100px;background:#15003380;border:1px solid rgba(157,78,221,.2);border-radius:12px;padding:12px 8px;overflow:hidden}.panel-label{font-size:.65rem;font-weight:700;letter-spacing:.15em;color:var(--text-secondary);text-align:center;margin-bottom:8px}#next-pieces{display:flex;flex-direction:column;gap:4px;align-items:center;flex:1;overflow-y:auto}.next-piece-card{width:80%;aspect-ratio:1;border:1px solid rgba(157,78,221,.3);border-radius:8px;display:flex;align-items:center;justify-content:center;background:#0a0a1f99}.next-piece-card canvas{width:80%;height:80%}#hold-piece{width:80%;aspect-ratio:1;margin:0 auto 12px;border:2px solid rgba(0,245,255,.4);border-radius:8px;display:flex;align-items:center;justify-content:center;background:#0a0a1f99;box-shadow:0 0 12px #00f5ff1a;transition:border-color .3s}#hold-piece.used{border-color:#9d4edd4d;box-shadow:none}#hold-piece canvas{width:70%;height:70%}#stats-area{flex:1;display:flex;flex-direction:column;gap:6px}.stat-item{text-align:center}.stat-label{font-size:.55rem;font-weight:600;letter-spacing:.12em;color:var(--text-secondary)}.stat-value{font-size:1.1rem;font-weight:900;color:var(--text-primary);font-variant-numeric:tabular-nums}.btb-label{color:var(--magenta)!important;animation:btb-pulse .6s ease-in-out infinite alternate}@keyframes btb-pulse{0%{opacity:.7}to{opacity:1;text-shadow:0 0 8px var(--magenta)}}.progress-bar{width:80%;height:4px;margin:4px auto 0;background:#ffffff1a;border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--cyan),var(--purple));transition:width .2s;border-radius:2px}#playfield-container{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-width:200px}#game-canvas{border:2px solid rgba(157,78,221,.4);border-radius:4px;box-shadow:0 0 30px #9d4edd26,inset 0 0 60px #0a0a1f80}#game-canvas.danger{border-color:var(--danger);animation:danger-pulse 1.5s ease-in-out infinite}@keyframes danger-pulse{0%,to{box-shadow:0 0 15px #f363}50%{box-shadow:0 0 30px #ff336680}}#overlay{position:absolute;inset:0;pointer-events:none}#touch-controls{display:none;padding:8px 16px 12px;padding-bottom:max(12px,env(safe-area-inset-bottom,0px));background:#0a0a1fe6;border-top:1px solid rgba(157,78,221,.2)}.touch-row{display:flex;justify-content:space-between;gap:12px}.touch-btn{flex:1;padding:14px;border:1px solid rgba(157,78,221,.4);border-radius:12px;background:#9d4edd26;color:var(--text-primary);font-size:.9rem;font-weight:700;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .1s}.touch-btn:active{background:#9d4edd66}.touch-btn-rotate{font-size:1.4rem;flex:1.5}.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:100;background:#0a0a1fd9;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.overlay:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 30% 20%,rgba(0,245,255,.08) 0%,transparent 60%),radial-gradient(ellipse at 70% 80%,rgba(255,0,170,.08) 0%,transparent 60%),radial-gradient(ellipse at 50% 50%,rgba(157,78,221,.05) 0%,transparent 70%);animation:menuBgPulse 4s ease-in-out infinite alternate;pointer-events:none}@keyframes menuBgPulse{0%{opacity:.6}to{opacity:1}}.menu-card{background:#150033d9;border:1px solid rgba(157,78,221,.4);border-radius:20px;padding:40px 32px;min-width:320px;max-width:90vw;text-align:center;box-shadow:0 20px 60px #00000080,0 0 40px #9d4edd1a}.menu-title{font-size:2rem;font-weight:900;letter-spacing:.1em;margin-bottom:24px}.menu-subtitle{font-size:1.2rem;background:linear-gradient(90deg,var(--cyan),var(--magenta));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.menu-modes{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.mode-btn{padding:12px 24px;border:1px solid rgba(157,78,221,.3);border-radius:10px;background:#9d4edd1a;color:var(--text-primary);font-size:.95rem;font-weight:700;cursor:pointer;transition:all .15s}.mode-btn:hover,.mode-btn.selected{background:#9d4edd4d;border-color:var(--purple)}.btn-primary,.btn-secondary{padding:14px 36px;border:none;border-radius:12px;font-size:1rem;font-weight:800;letter-spacing:.08em;cursor:pointer;transition:all .15s;display:block;width:100%;margin-bottom:10px}.btn-primary{background:linear-gradient(135deg,var(--cyan),var(--purple));color:var(--bg-deep)}.btn-primary:hover{transform:scale(1.03);filter:brightness(1.1)}.btn-primary:active{transform:scale(.97)}.btn-secondary{background:#9d4edd26;color:var(--text-primary);border:1px solid rgba(157,78,221,.3)}.btn-secondary:hover{background:#9d4edd4d}.text-btn{background:none;border:none;color:var(--text-secondary);font-size:.85rem;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.text-btn:hover{color:var(--text-primary)}.final-score{font-size:3rem;font-weight:900;color:var(--cyan);margin-bottom:16px}.final-stats{font-size:.85rem;color:var(--text-secondary);margin-bottom:24px;line-height:1.8}.hidden{display:none!important}.settings-group{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(157,78,221,.1);font-size:.85rem;color:var(--text-secondary)}.settings-group label{display:flex;align-items:center;gap:4px}.settings-group input[type=range]{width:120px;accent-color:var(--purple)}.settings-group input[type=checkbox]{accent-color:var(--purple);width:18px;height:18px}.controls-grid{display:flex;gap:24px;text-align:left;margin-bottom:24px}.controls-col h3{color:var(--cyan);font-size:.85rem;margin-bottom:8px}.controls-col p{font-size:.75rem;color:var(--text-secondary);line-height:1.8}@media(max-width:700px),(max-aspect-ratio:1/1){#app{max-width:100%}#game-layout{flex-direction:column;gap:4px;padding:4px}.side-panel{flex-direction:row;width:100%;min-width:unset;flex:unset;padding:6px 8px;gap:8px;align-items:center}.left-panel{order:0;justify-content:flex-start}.panel-label{writing-mode:horizontal-tb;margin-bottom:0;margin-right:8px}#next-pieces{flex-direction:row;gap:4px;flex:unset;overflow-x:auto}.next-piece-card{width:30px;height:30px;min-width:30px;aspect-ratio:unset}#playfield-container{order:1;flex:1;min-height:300px}.right-panel{order:2}#hold-piece{width:40px;height:40px;min-width:40px;margin:0;aspect-ratio:unset}#stats-area{flex-direction:row;flex:1;gap:8px;justify-content:space-around;overflow-x:auto}.stat-item{min-width:50px}.stat-value{font-size:.85rem}.stat-label{font-size:.5rem}#touch-controls{display:block}}
