.nickname{display:flex;align-items:center;gap:8px;max-width:240px}.nickname input{max-width:150px}
.lan-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:20px 0}.lan-heading h1{font-size:24px}
.lan-grid{display:grid;grid-template-columns:minmax(130px,180px) minmax(0,1fr) 240px;gap:16px;align-items:start}
.lan-game{background:#000;min-width:0;position:relative;border:1px solid #36343c}
.lan-game canvas{display:block;width:100%;height:auto;image-rendering:pixelated;outline:none;touch-action:none}
.lan-side{background:#111218;border:1px solid #30313a;padding:14px;min-width:0}
.lan-side .controller{width:100%;max-width:156px;margin:auto}.lan-side .system-keys{display:flex;flex-wrap:wrap}
.lan-chat{height:260px;overflow:auto;margin:12px 0;overflow-wrap:anywhere;font-size:13px;line-height:1.5}
.lan-chat p{margin:0 0 10px}.lan-chat b{color:var(--gold)}.chat-form{display:flex;gap:6px}.chat-form input{min-width:0}
.lan-status{font-size:13px;min-height:40px;color:#ccc;line-height:1.5}.lan-error{color:#ffaaa1}
.lan-status-paused{background:#4c3a16;padding:8px}.control-options{display:grid;gap:8px;margin-top:12px}
.control-options button{font-size:12px}.solo-frame{border:0;width:100%;height:82vh;display:block}.lan-toolbar{display:flex;gap:8px;flex-wrap:wrap}
body.lan-full{overflow:hidden}.lan-full .site-header,.lan-full .testbar,.lan-full .site-footer{display:none}
.lan-full #app{max-width:none;width:100%;padding:8px}.lan-full .lan-heading{margin:0 0 6px}.lan-full .lan-heading h1{font-size:15px}
.lan-full .lan-grid{grid-template-columns:140px minmax(0,1fr) 220px;height:calc(100dvh - 60px)}
.lan-full .lan-game{height:100%;border:0}.lan-full canvas{height:100%;width:100%;object-fit:contain}
@media(max-width:850px){.lan-grid{grid-template-columns:140px minmax(0,1fr)}.lan-chat-panel{grid-column:1/-1}.lan-chat{height:160px}.nickname{max-width:180px}.nickname input{max-width:100px}}
@media(orientation:portrait){.lan-grid{grid-template-columns:1fr}.lan-game{grid-row:1}.lan-controller{grid-row:2;display:flex;gap:12px;align-items:center}.lan-controller .controller{width:140px;flex-shrink:0}.lan-full .lan-grid{display:grid;grid-template-columns:1fr}.lan-full .lan-game{height:55dvh}.lan-full .lan-controller{height:25dvh}.lan-full .lan-chat-panel{position:absolute;right:10px;bottom:10px;width:min(90vw,300px);max-height:45dvh;background:#111218ee;z-index:20}.lan-full .lan-chat-panel:not(.chat-open){display:none}.lan-full .lan-chat{height:100px}}

/* Mobile controller C1: Famicom B/A order and a viewport that excludes browser chrome. */
.lan-controller{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:center}
.lan-controller #directions{min-width:0}
.controller-center{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center}
.controller-center .system-keys{display:flex;gap:6px;justify-content:center;margin:0}
.controller-center .system-keys button{min-height:40px;font:700 10px Arial,sans-serif;padding:8px 6px;flex:1}
.controller-settings{width:44px;height:40px;padding:8px;border:1px solid #ab8847;border-radius:8px;background:#372127;color:#eed395;display:grid;place-items:center;flex:none}
.controller-settings svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.controller-center .pass-key{min-height:36px;min-width:72px;padding:8px;color:#edcd88;border-color:#80652a;font-size:11px}
.lan-controller .famicom-actions{display:flex;align-items:center;justify-content:center;gap:12px;margin:0;padding:0}
.lan-controller .famicom-actions button{display:grid;place-items:center;width:64px;height:64px;min-width:0;flex:none;padding:0;border-radius:50%;border:4px solid #c6ac6d;background:linear-gradient(#a92e3d,#691a28);color:#fff0c1;font:bold 27px system-ui;box-shadow:0 5px 0 #37111b,inset 0 2px 1px #f2a8aa66}
.lan-controller .famicom-actions button.pressed{transform:translateY(3px);box-shadow:0 2px 0 #37111b;background:#c8414e}
.lan-controller,.lan-toolbar,.lan-controller button,.lan-toolbar button{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.lan-controller button,.lan-toolbar button{touch-action:manipulation}
.lan-controller [data-key]{touch-action:none}
body.lan-full{overscroll-behavior:none}
.lan-full #app{position:fixed;top:var(--lan-view-top,0px);left:var(--lan-view-left,0px);width:var(--lan-view-width,100vw);height:var(--lan-view-height,100dvh);min-height:0;margin:0;max-width:none;display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:4px;padding:max(4px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));overflow:hidden}
.lan-full .lan-heading{margin:0;min-height:36px}.lan-full .lan-heading>div:first-child{display:none}
.lan-full .lan-toolbar{flex-wrap:nowrap;gap:5px;width:100%;align-items:center;justify-content:flex-end}
.lan-full .lan-toolbar .badge{margin-right:auto;font-size:10px;padding:6px}
.lan-full .lan-toolbar button{font-size:11px;min-height:34px;padding:6px 8px;white-space:nowrap}
.lan-full #close-room{display:none}
.lan-full .lan-status{min-height:0;font-size:10px;line-height:16px;padding:0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lan-full .lan-grid{height:auto;min-height:0;grid-template-columns:160px minmax(0,1fr);align-items:stretch;position:relative}
.lan-full .lan-game{min-height:0;height:auto;display:flex;align-items:center;justify-content:center;overflow:hidden}
.lan-full .lan-game canvas{width:100%;height:100%;object-fit:contain;min-height:0}
.lan-full .lan-controller{min-height:0;align-content:center}
.lan-full .lan-chat-panel{display:none;position:absolute;inset:0 0 0 auto;width:min(92%,340px);max-height:100%;z-index:30;grid-column:auto;overflow:auto;background:#111218f5;box-shadow:-5px 0 20px #0009}
.lan-full .lan-chat-panel.chat-open{display:flex;flex-direction:column}
.lan-full .lan-chat{height:auto;min-height:50px;flex:1;overflow:auto}
.lan-full .chat-form{flex-shrink:0}
@media(max-width:1000px) and (orientation:landscape){
 .lan-grid,.lan-full .lan-grid{grid-template-columns:clamp(112px,20vw,176px) minmax(0,1fr) clamp(124px,22vw,190px);grid-template-rows:minmax(0,1fr) auto;gap:8px}
 .lan-controller,.lan-full .lan-controller{display:contents}
 .lan-controller #directions{grid-column:1;grid-row:1;align-self:end;padding-bottom:12px}
 .lan-controller .famicom-actions{grid-column:3;grid-row:1;align-self:end;padding-bottom:16px;gap:10px}
 .lan-controller .famicom-actions button{width:clamp(50px,7.5vw,76px);height:clamp(50px,7.5vw,76px)}
 .lan-controller .controller-center{grid-column:1/-1;grid-row:2;gap:12px;min-height:44px}
 .lan-game{grid-column:2;grid-row:1;align-self:center}
 .lan-full .lan-game{align-self:stretch}
 .lan-controller .controller{width:min(156px,100%);margin:0 auto!important}
 .lan-chat-panel{grid-column:1/-1;grid-row:3}
 .lan-full .lan-chat-panel{grid-column:auto;grid-row:auto}
}
@media(orientation:portrait){
 .lan-grid{grid-template-columns:1fr;gap:10px}
 .lan-game{grid-column:1;grid-row:1}
 .lan-controller{grid-column:1;grid-row:2;display:grid;grid-template-columns:minmax(0,1fr) minmax(64px,.57fr) minmax(0,1.12fr);align-items:end;gap:8px;padding:16px 8px 20px;background:#4c202b;border:2px solid #ba9c59;border-radius:12px;min-height:190px}
 .lan-controller #directions{grid-column:1;align-self:center;min-width:0}
 .lan-controller .controller{width:min(100%,152px);margin:0 auto!important}
 .lan-controller .controller-pad{width:min(100%,152px);height:auto;aspect-ratio:1}
 .lan-controller .controller-center{grid-column:2;align-self:center;display:grid;justify-items:center;gap:9px}
 .lan-controller .system-keys{display:grid;grid-template-columns:1fr 1fr;gap:3px}
 .lan-controller .system-keys button{font:700 8px Arial,sans-serif;min-height:40px;padding:5px 0}
 .lan-controller .controller-center .pass-key{min-width:0;width:100%;font-size:10px}
 .lan-controller .famicom-actions{grid-column:3;align-self:center;gap:7px;padding-bottom:0;justify-content:center}
 .lan-controller .famicom-actions button{width:clamp(50px,16vw,78px);height:clamp(50px,16vw,78px);border-width:3px;font-size:25px}
 .lan-chat-panel{grid-column:1;grid-row:3}
 .lan-full .lan-grid{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) clamp(170px,28vh,220px);gap:6px}
 .lan-full .lan-game{grid-column:1;grid-row:1;height:auto}
 .lan-full .lan-controller{grid-column:1;grid-row:2;height:auto;min-height:0;align-content:center;padding:10px 6px 14px}
 .lan-full .lan-chat-panel{grid-column:auto;grid-row:auto;bottom:0;right:0;max-height:100%;width:min(92%,340px)}
}
@media(orientation:landscape) and (max-height:380px){
 .lan-full #app{gap:2px}.lan-full .lan-toolbar button{min-height:30px}
 .lan-full .lan-heading{min-height:30px}.lan-full .controller-center{min-height:38px;gap:8px}
 .lan-full .controller-center button{min-height:34px;height:34px}
 .lan-full .controller{width:min(132px,100%)}
}

.lan-controller .controller-pad{width:min(156px,100%);height:auto;aspect-ratio:1}.lan-controller .controller-pad .stick{left:calc(50% - 28px);top:calc(50% - 28px)}

@media(max-width:350px) and (orientation:portrait){.lan-controller .system-keys button{font-size:7px}}

/* C2 full-play: settings remain outside fullscreen; unobtrusive room chat ticker. */
.lan-full #settings{display:none}
.chat-ticker{display:none;min-width:0;overflow:hidden;align-items:center;gap:7px;height:24px;font-size:11px;background:#1b1820;border:1px solid #40313a;border-radius:3px;pointer-events:none}
.lan-full .chat-ticker{display:flex}
.lan-full #app{grid-template-rows:auto auto auto minmax(0,1fr)}
.ticker-label{flex:none;color:var(--gold);padding-left:7px;font:8px var(--pixel)}
.ticker-window{overflow:hidden;min-width:0;flex:1}
#ticker-track{display:inline-flex;gap:32px;white-space:nowrap;min-width:100%;color:#e9dfcf}
#ticker-track span{display:inline-block}
.ticker-running{animation:lan-chat-scroll 20s linear infinite}
@keyframes lan-chat-scroll{from{transform:translateX(100%)}to{transform:translateX(-100%)}}
@media(prefers-reduced-motion:reduce){.ticker-running{animation:none}#ticker-track{display:block;overflow:hidden;text-overflow:ellipsis}}
.mic-button.mic-active{border-color:#79bc8b;color:#a6e7b4;background:#173425}
@media(orientation:landscape) and (max-height:380px){.chat-ticker{height:20px;font-size:10px}.lan-full .lan-grid{gap:4px}.lan-full .lan-controller #directions{padding-bottom:5px}.lan-full .lan-controller .famicom-actions{padding-bottom:8px}.lan-full .controller{width:min(118px,100%)}}

.gpu-video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;image-rendering:pixelated;pointer-events:none;background:#000}

/* Gameplay surfaces must never open iOS text-selection or image callout menus. */
body.lan-full,body.lan-full *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
body.lan-full input,body.lan-full textarea,body.lan-full [contenteditable="true"]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.lan-controller,.lan-controller *,.lan-toolbar button,.lan-toolbar button *,canvas,.chat-ticker{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none}
.lan-toolbar button svg,.lan-toolbar button span,.nickname-button svg,.nickname-button span{pointer-events:none}
.nickname-button{display:flex;align-items:center;gap:8px;max-width:220px}.nickname-button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nickname{min-width:0;flex:0 1 auto}.nickname-button{min-width:0;width:100%}.nickname-button span{min-width:0}
@media(max-width:600px){.nickname{max-width:44vw}.nickname-button{padding:8px}}
.action-grid.two-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:600px){.action-grid.two-actions{grid-template-columns:1fr}}

/* C6 mobile lock: constrain both scroll roots, not only the fixed game panel. */
html.lan-locked{overflow:hidden;overscroll-behavior:none;height:100%;scroll-behavior:auto}
body.lan-full{position:fixed;inset:0;width:100%;height:100%;min-height:0;overflow:hidden;overscroll-behavior:none}
.lan-full #app{touch-action:none;overscroll-behavior:none}
.lan-full .lan-chat-panel,.lan-full dialog{touch-action:pan-y;overscroll-behavior:contain}
.view-controls{display:inline-flex;align-items:center;gap:8px;flex:none}
.lan-toolbar .controller-settings{height:42px}

/* Keep PASS recessed between SELECT and START, away from the main action keys. */
.lan-controller .controller-center .system-keys{display:flex;align-items:center;flex-wrap:nowrap;gap:7px}
.lan-controller .controller-center .system-keys .pass-key{flex:none;width:38px;min-width:38px;height:28px;min-height:28px;padding:3px 2px;font-size:8px}
@media(orientation:portrait){
 .lan-controller .controller-center .system-keys{flex-direction:column;gap:9px;width:100%}
 .lan-controller .controller-center .system-keys button:not(.pass-key){width:100%;flex:none}
}

html.training-locked{overflow:hidden;overscroll-behavior:none}
body.training-full{position:fixed;inset:0;overflow:hidden;overscroll-behavior:none}
.training-full>.site-header,.training-full>.testbar,.training-full>.site-footer,.training-full #app>.lan-heading{display:none}
.training-full #app{position:fixed;top:var(--lan-view-top,0px);left:var(--lan-view-left,0px);width:var(--lan-view-width,100vw);height:var(--lan-view-height,100dvh);max-width:none;min-height:0;margin:0;padding:0;overflow:hidden}
.training-full .solo-frame{width:100%;height:100%;display:block;border:0}
