.hidden{display:none!important}.masthead h1 em{font-family:Georgia,serif;font-weight:400;color:#ef4d34}.back-link{padding:10px;border:2px solid var(--ink);color:var(--ink);text-decoration:none;font:800 9px 'DM Mono';background:#f7f1e4}.auth-screen,.lobby-screen{min-height:calc(100vh - 140px);display:grid;place-items:center}.auth-card,.lobby-card{width:min(440px,100%);padding:24px;border:3px solid var(--ink);background:#f7f1e4;box-shadow:8px 8px 0 var(--ink)}.auth-card h2,.lobby-card h2{margin:5px 0 20px;font-size:32px;line-height:1}.auth-card label{display:grid;gap:6px;margin:12px 0;font:800 8px 'DM Mono'}.auth-card input{height:45px;padding:0 12px;border:3px solid var(--ink);background:white;font:700 14px Manrope}.auth-card button,.lobby-card button{width:100%}.auth-error{min-height:20px;color:#c42f1c;font:800 9px 'DM Mono'}.lobby-card{text-align:center}.lobby-card p{min-height:48px;font-size:14px;line-height:1.45}.text-button{border:0;background:transparent;text-decoration:underline;cursor:pointer;font:800 9px 'DM Mono';margin-top:13px}.online-game{max-width:700px;margin:0 auto;padding:18px 0}.online-topline{height:40px;display:flex;justify-content:space-between;align-items:center;font:800 9px 'DM Mono'}.online-actions{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px}.online-actions .secondary{margin:8px 0}.online-game .machine-grid{visibility:visible}.online-game .machine:disabled{cursor:not-allowed}.win-overlay a{margin-top:14px;padding:12px 18px;border:3px solid var(--ink);background:white;color:var(--ink);text-decoration:none;font:800 11px 'DM Mono';box-shadow:5px 5px 0 var(--ink)}
.players-list{display:grid;gap:7px;min-height:88px;margin:12px 0;padding:8px;border:3px solid var(--ink);background:white;text-align:left}.player-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:8px;border-bottom:1px solid #aaa395;font:700 11px Manrope}.player-row:last-child{border-bottom:0}.player-row button{width:auto!important;min-width:92px;height:38px;border:2px solid var(--ink);background:var(--yellow);font:800 9px 'DM Mono';cursor:pointer}.players-empty{display:grid;gap:9px;color:var(--ink);font:800 9px/1.5 'DM Mono';text-align:center}.players-list:has(.players-empty){min-height:0;margin:12px 0 0;padding:0;border:0;background:transparent}
.players-empty .empty-action{display:flex;align-items:center;justify-content:space-between;width:100%;height:48px;margin:0;padding:0 14px;border:3px solid var(--ink);background:var(--yellow);box-shadow:3px 3px 0 var(--ink);color:var(--ink);font:900 10px 'DM Mono';text-decoration:none;cursor:pointer}
.lobby-card #lobbyStatus{min-height:0;margin:6px 0 14px;font:800 10px 'DM Mono'}
.invite-button{width:100%;font-size:15px}.invite-hint{min-height:0!important;margin:10px 0!important;color:#706b60;font:500 9px/1.45 'DM Mono'}.howto-overlay{position:fixed;z-index:20;inset:0;display:grid;place-items:center;padding:18px;background:#171713cc}.howto-card{width:min(480px,100%);padding:24px;border:3px solid var(--ink);background:var(--paper);box-shadow:9px 9px 0 var(--yellow)}.howto-card h2{margin:6px 0 20px;font-size:31px;line-height:1}.howto-card ol{list-style:none;counter-reset:steps;margin:0 0 20px;padding:0}.howto-card li{position:relative;display:grid;gap:3px;min-height:62px;padding:8px 0 8px 52px;border-top:1px solid #aaa395}.howto-card li:before{counter-increment:steps;content:counter(steps);position:absolute;left:0;top:8px;width:36px;height:36px;display:grid;place-items:center;border:2px solid var(--ink);background:var(--yellow);font:800 12px 'DM Mono'}.howto-card li b{font-size:14px}.howto-card li span{font-size:11px;line-height:1.4;color:#706b60}.howto-card .primary{width:100%}.win-overlay button{margin-top:14px;padding:12px 18px;border:3px solid var(--ink);background:var(--yellow);color:var(--ink);font:800 10px 'DM Mono';box-shadow:5px 5px 0 var(--ink);cursor:pointer}
.win-overlay .play-again{background:white}
@media(max-width:700px){.online-shell .masthead{position:static}.auth-screen,.lobby-screen{min-height:calc(100svh - 120px);padding:8px 4px}.auth-card,.lobby-card{padding:14px;box-shadow:4px 4px 0 var(--ink)}.auth-card h2{font-size:24px;margin-bottom:12px}.auth-card label{margin:8px 0}.auth-card input,.auth-card .primary,.auth-card .secondary,.lobby-card .primary,.lobby-card .secondary,.player-row button{min-height:46px;touch-action:manipulation}.player-row{grid-template-columns:minmax(0,1fr) 92px;padding:6px;font-size:9px}.player-row span{overflow:hidden;text-overflow:ellipsis}.online-game{padding:8px 0}.online-topline{height:34px;font-size:7px}.online-shell .machine-grid{margin-top:4px}.online-actions{grid-template-columns:1fr}.online-actions .text-button{margin:0}.online-shell .side-panel{display:none}}
@media(max-width:700px){.online-shell .masthead{height:66px}.online-shell .masthead h1{font-size:27px}.online-game{padding:5px 0}.online-topline{height:30px}.online-shell .machine-grid{grid-template-columns:repeat(4,1fr);gap:4px}.online-shell .machine{padding:3px;border-width:2px;box-shadow:2px 2px 0 var(--ink)}.online-shell .machine-top span:first-child,.online-shell .lamps b{display:none}.online-shell .machine-top span:last-child{margin-left:auto;font-size:7px;border-width:1px;padding:1px 2px}.online-shell .lamps{height:10px;gap:2px}.online-shell .lamps i{width:4px;height:4px}.online-shell .door{width:96%;padding:3px;border-width:2px;margin:1px auto 3px}.online-shell .glass{border-width:2px}.online-shell .machine-foot{font-size:6px}.online-shell .direction{padding:1px 3px}.howto-card{padding:18px;box-shadow:5px 5px 0 var(--yellow)}.howto-card h2{font-size:25px}.howto-card li{min-height:58px;padding-left:48px}}
.online-game{max-width:1060px}.online-topline{position:sticky;z-index:12;top:0;height:auto;min-height:58px;display:grid;grid-template-columns:1fr auto 1fr;gap:12px;padding:6px 12px;border:3px solid var(--ink);background:var(--yellow);box-shadow:4px 4px 0 var(--ink);font:900 10px 'DM Mono'}.online-topline>span{text-align:right}.online-timer{display:flex;align-items:center;gap:9px;padding:3px 12px;border:2px solid var(--ink);background:#f7f1e4}.online-timer small{font:800 7px 'DM Mono'}.online-timer strong{min-width:52px;font:900 26px/1 Manrope;text-align:center}.online-timer strong.timer-danger{color:var(--red)}.online-match-layout{display:grid;grid-template-columns:minmax(0,700px) 320px;gap:20px;align-items:start;margin-top:12px}
.invite-inbox{margin:12px 0;padding:12px;border:3px solid var(--ink);background:var(--yellow);box-shadow:4px 4px 0 var(--ink);text-align:left}.invite-request b{display:block;margin-bottom:8px;font-size:15px}.invite-request span{font:700 9px 'DM Mono'}.invite-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.invite-actions button{height:42px;border:2px solid var(--ink);font:900 9px 'DM Mono';cursor:pointer}.invite-accept{background:var(--ink);color:white}.invite-decline{background:white;color:var(--ink)}.player-row button:disabled{background:#d6d0c2;color:#777;cursor:default}
.chat-panel{position:sticky;top:72px;display:grid;grid-template-rows:auto minmax(280px,55vh) auto;border:3px solid var(--ink);background:#f7f1e4;box-shadow:5px 5px 0 var(--ink)}.chat-title{display:flex;justify-content:space-between;padding:11px;border-bottom:3px solid var(--ink);background:var(--yellow);font:900 9px 'DM Mono'}.chat-messages{display:flex;flex-direction:column;gap:8px;overflow:auto;padding:10px}.chat-messages p{max-width:88%;margin:0;padding:8px 10px;border:2px solid var(--ink);background:white;font:600 11px/1.35 Manrope;overflow-wrap:anywhere}.chat-messages p.mine{align-self:flex-end;background:#b8dce5}.chat-messages p.theirs{align-self:flex-start;background:#edc7a9}.chat-messages small{display:block;margin-bottom:3px;font:800 7px 'DM Mono';color:#706b60}.chat-form{display:grid;grid-template-columns:1fr auto;border-top:3px solid var(--ink)}.chat-form input{min-width:0;height:45px;padding:0 10px;border:0;background:white;font:600 12px Manrope;outline:none}.chat-form button{border:0;border-left:3px solid var(--ink);background:var(--yellow);font:900 8px 'DM Mono';cursor:pointer}
@media(max-width:900px){.online-match-layout{grid-template-columns:1fr}.chat-panel{position:static;grid-template-rows:auto 220px auto}.online-game{max-width:700px}}
@media(max-width:700px){.online-topline{top:0!important;height:auto!important;min-height:52px!important;grid-template-columns:1fr auto;padding:4px 7px;font-size:7px}.online-topline>span{display:none}.online-timer{gap:5px;padding:2px 7px}.online-timer strong{min-width:38px;font-size:22px}}
