/* Touch protections are confined to game UI; forms and the rest of the site remain usable. */
:is(.maze-board-wrap,.code-terminal,.pulse-board,.focus-monitor,.maze-touch-controls,.arcade-session) {
  -webkit-user-select:none; user-select:none; -webkit-touch-callout:none; -webkit-tap-highlight-color:transparent;
}
:is(#maze-canvas,#code-viewport,.pulse-playfield,.pulse-keys,#focus-canvas,.maze-touch-controls) { touch-action:none; }
.arcade-session button { touch-action:manipulation; }
.arcade-session,.arcade-settings { display:none; }
.arcade-desktop-resume { position:fixed; bottom:24px; right:24px; z-index:1100; padding:16px 32px; background:#7463ff; color:white; border:1px solid #b7acff; border-radius:8px; font:700 16px Inter,sans-serif; }
.arcade-desktop-resume[hidden] { display:none; }
.arcade-settings[open] { display:block; }
.arcade-settings { color:#f5f3ff; background:#11111d; border:1px solid #656080; padding:24px; width:min(520px,calc(100% - 24px)); max-height:calc(100dvh - 32px); overflow:auto; margin:auto; border-radius:12px; overscroll-behavior:contain; }
.arcade-settings::backdrop { background:rgba(0,0,0,.8); }
.arcade-settings header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.arcade-settings h2 { font-size:22px; margin:0; }
.arcade-settings p { color:#bdbbd2; font-size:14px; line-height:1.6; margin:16px 0; }
.arcade-settings button { min-height:44px; padding:10px 14px; color:#f5f3ff; background:#25233d; border:1px solid #625c8b; border-radius:8px; font:700 13px Inter,sans-serif; touch-action:manipulation; }
.arcade-settings button + button { margin-left:10px; }
.arcade-settings input[type=range] { min-height:44px; touch-action:pan-x; width:100%; }
.arcade-settings input:not([type=range]),.arcade-settings textarea { -webkit-user-select:text; user-select:text; }
.creative-lab .arcade-settings :is(.maze-panel,.bug-panel,.pulse-panel,.focus-panel) { background:none; padding:0; border:0; box-shadow:none; }
.arcade-settings :is(.maze-panel-title,.bug-panel-title,.pulse-panel-title,.focus-panel-title,.maze-controls,.terminal-hint) { display:none; }
.arcade-settings :is(.maze-stat,.bug-stat,.pulse-stat,.focus-stat) { padding:10px 0; }
.arcade-settings :is(.maze-volume,.game-effects-volume) { margin-top:14px; }
.arcade-session button:focus-visible,.arcade-settings button:focus-visible { outline:2px solid #9affd7; outline-offset:2px; }
.arcade-mobile { overscroll-behavior:none; overflow:hidden; }
.arcade-mobile > .navbar { display:none; }
.creative-lab.arcade-mobile main:is(.maze-page,.bug-page,.pulse-page,.focus-page) { padding:0; margin:0; max-width:none; width:100%; min-height:0; height:100vh; height:100dvh; overflow:hidden; background:#090a12; }
.arcade-mobile main::before,.arcade-mobile main::after,.arcade-mobile main > header,.arcade-mobile main > [class$="-game-shell"] { display:none; }
.creative-lab.arcade-mobile main:is(.maze-page,.bug-page,.pulse-page,.focus-page),.arcade-mobile .arcade-session { overflow:clip; }
.arcade-mobile .arcade-session { height:100%; box-sizing:border-box; padding:max(8px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); display:flex; flex-direction:column; gap:8px; overflow:hidden; }
.arcade-topbar { display:grid; grid-template-columns:80px 1fr 48px; align-items:center; gap:8px; flex-shrink:0; }
.creative-lab .arcade-topbar h1 { font:800 19px Inter,sans-serif; letter-spacing:-.04em; text-align:center; margin:0; color:#f6f4ff; }
.arcade-session button:not(.anomaly):not(.pulse-key) { min-height:44px; color:#eae6ff; background:#171626; border:1px solid #393450; border-radius:9px; font:700 12px Inter,sans-serif; margin:0; padding:8px 12px; }
.arcade-session button:disabled { opacity:.45; }
.arcade-session #arcade-settings-open { font-size:23px; padding:4px; }
.arcade-hud { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; flex-shrink:0; }
.arcade-hud > div { padding:8px 10px; display:flex; flex-direction:column; align-items:flex-start; gap:4px; min-width:0; margin:0; border:1px solid #2b283d; background:#12121e; border-radius:8px; }
.arcade-hud > div span { font-size:10px; color:#aaa6bf; white-space:nowrap; }
.creative-lab .arcade-hud strong { font-size:18px; color:#f8f7ff; font-variant-numeric:tabular-nums; }
.arcade-play-area { flex:1; min-height:0; display:flex; position:relative; }
.arcade-intro { display:none; }
.arcade-session[data-phase=ready] .arcade-intro { display:block; position:absolute; z-index:2; top:50%; left:16px; right:16px; transform:translateY(-50%); max-width:400px; margin:auto; padding:20px; background:rgba(17,17,29,.97); border:1px solid #655b9b; border-radius:10px; color:#eeeaff; font:500 14px/1.7 Inter,sans-serif; box-shadow:0 8px 30px #0008; pointer-events:none; }
.creative-lab.arcade-mobile .arcade-play-area > div { width:100%; height:100%; min-height:0; padding:0; border:1px solid #3a3557; border-radius:10px; box-shadow:none; margin:0; position:relative; overflow:hidden; background:#080910; }
.arcade-mobile .arcade-play-area > div::before { display:none; }
.arcade-mobile .maze-board-wrap,.arcade-mobile .focus-monitor { display:flex; align-items:center; justify-content:center; aspect-ratio:auto; }
.creative-lab.arcade-mobile :is(#maze-canvas,#focus-canvas) { display:block; min-height:0; max-width:100%; max-height:100%; aspect-ratio:auto; border:0; border-radius:0; flex:none; object-fit:contain; }
.arcade-status { min-height:18px; margin:0; font-size:11px; line-height:1.4; color:#bdb6ff; text-align:center; flex-shrink:0; }
.arcade-status:empty { display:none; }
.arcade-status p { margin:0; }
.arcade-status p:empty { display:none; }
.arcade-session:is([data-phase=ready],[data-phase=paused],[data-phase=between]) .arcade-status > :not(#arcade-mobile-status) { display:none; }
.arcade-status :is(.maze-message,.bug-status,.focus-status) { margin:0; font-size:11px; line-height:1.4; }
.arcade-controls:empty { display:none; }
.arcade-controls { flex-shrink:0; }
.arcade-mobile .maze-touch-controls { position:static; inset:auto; display:grid; grid-template-columns:repeat(3,56px); grid-template-rows:repeat(2,46px); gap:6px; justify-content:center; width:auto; transform:none; pointer-events:auto; }
.arcade-mobile .maze-touch-controls button { position:static; inset:auto; width:auto; height:auto; min-height:46px; padding:0; font-size:25px; border:1px solid #625b90; background:#201d38; backdrop-filter:none; touch-action:none; }
.arcade-mobile .maze-touch-controls .maze-touch-up { grid-column:2; grid-row:1; }
.arcade-mobile .maze-touch-controls button[data-maze-move=left] { grid-column:1; grid-row:2; }
.arcade-mobile .maze-touch-controls button[data-maze-move=down] { grid-column:2; grid-row:2; }
.arcade-mobile .maze-touch-controls button[data-maze-move=right] { grid-column:3; grid-row:2; }
.arcade-mobile .maze-touch-controls button:active { background:#7160ff; transform:none; }
.arcade-actions { display:flex; gap:8px; flex-shrink:0; }
.creative-lab.arcade-mobile .arcade-actions > button { margin:0; padding:10px; min-height:44px; box-shadow:none; border-radius:8px; text-transform:none; flex:1; width:auto; }
.creative-lab.arcade-mobile .arcade-actions > button:first-child { background:#7463ff; color:white; border:1px solid #9386ff; }
.arcade-actions #arcade-pause { flex:0 0 88px; }
.arcade-mobile .code-terminal { display:flex; flex-direction:column; }
.arcade-mobile .terminal-bar { flex-shrink:0; padding:8px 12px; }
.arcade-mobile .terminal-hint { display:none; }
.arcade-mobile #code-viewport { flex:1; min-height:0; height:auto; }
.arcade-mobile .code-stream { min-height:0; padding:0; font-size:12px; line-height:48px; letter-spacing:0; }
.arcade-mobile .code-line { height:48px; gap:6px; padding:0 6px; overflow:hidden; }
.arcade-mobile .line-number { width:20px; font-size:10px; }
.arcade-mobile .line-code { flex:1; min-width:0; }
.arcade-mobile .code-line.is-compact .line-code { display:flex; align-items:center; gap:4px; }
.arcade-mobile .line-source { flex-basis:0; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#92909e; }
.arcade-mobile .anomaly.anomaly-pending { display:inline-flex; visibility:hidden; pointer-events:none; }
.arcade-mobile :is(.code-red,.code-bug,.code-green) { flex-shrink:0; min-width:44px; min-height:44px; max-height:44px; padding:4px 6px; font-size:12px; touch-action:none; }
.arcade-mobile .code-bug { width:44px; font-size:23px; }
.arcade-mobile .pulse-board { display:flex; flex-direction:column; }
.arcade-mobile .pulse-topbar { padding:9px; flex-shrink:0; gap:8px; }
.arcade-mobile .pulse-topbar span { font-size:10px; letter-spacing:.05em; }
.arcade-mobile .pulse-playfield { flex:1; min-height:0; }
.arcade-mobile .pulse-keys { flex-shrink:0; padding:8px; gap:6px; }
.arcade-mobile .pulse-key { min-height:54px; font-size:18px; touch-action:none; }
.arcade-mobile .pulse-target { left:4px; right:4px; }
.arcade-mobile .focus-corner { pointer-events:none; font-size:9px; padding:0; }
.arcade-mobile .focus-corner-top { top:10px; right:10px; }
.arcade-mobile .focus-corner-bottom { bottom:10px; left:10px; }
.arcade-mobile .focus-progress-wrap { bottom:10px; right:10px; width:80px; pointer-events:none; }
.arcade-mobile :is(.game-over-modal,.bug-over-modal,.pulse-over-modal,.focus-over-modal,.leave-game-modal) { padding:12px; overflow-y:auto; z-index:1200; }
.arcade-mobile :is(.game-over-dialog,.bug-over-dialog,.pulse-over-dialog,.focus-over-dialog,.leave-game-dialog) { padding:22px; max-height:calc(100dvh - 24px); overflow:auto; width:100%; }
.arcade-mobile :is(.game-over-dialog,.bug-over-dialog,.pulse-over-dialog,.focus-over-dialog) h2 { font-size:28px; }
.arcade-mobile :is(.game-over-actions,.bug-over-actions,.pulse-over-actions,.focus-over-actions) { display:grid; grid-template-columns:1fr; gap:10px; }
.arcade-mobile :is(.game-over-actions,.bug-over-actions,.pulse-over-actions,.focus-over-actions) button { min-height:48px; touch-action:manipulation; }
.arcade-mobile :is(.arcade-auth-dialog,.arcade-loss-dialog) { max-height:calc(100dvh - 24px); overflow:auto; padding:24px; width:calc(100% - 24px); }
.arcade-mobile :is(input,textarea) { font-size:16px; -webkit-user-select:text; user-select:text; }
@media (max-height:670px) { .arcade-mobile .arcade-session { gap:5px; } .arcade-hud > div { padding:5px 8px; } .arcade-hud strong { font-size:16px; } }
@media (orientation:landscape) and (max-height:500px) {
  .arcade-mobile .arcade-session { display:grid; grid-template-columns:minmax(0,1fr) 210px; grid-template-rows:44px auto minmax(18px,1fr) auto 44px; gap:6px 12px; }
  .arcade-topbar { grid-column:1 / -1; grid-row:1; }
  .arcade-play-area { grid-column:1; grid-row:2 / 6; }
  .arcade-hud { grid-column:2; grid-row:2; gap:4px; }
  .arcade-hud > div { padding:5px; }.arcade-hud > div span { font-size:8px; }
  .arcade-status { grid-column:2; grid-row:3; align-self:center; }
  .arcade-controls { grid-column:2; grid-row:4; }
  .arcade-actions { grid-column:2; grid-row:5; }
  .arcade-actions #arcade-pause { flex-basis:68px; }
  .arcade-mobile .pulse-key { min-height:44px; }
}
