:root{--bg: #101010;--card: #181818;--card-2: #202020;--btn: #1a1a1a;--btn-hover: #2a2a2a;--text: #ffffff;--sub: #bbbbbb;--accent: #3a3a3a;--font: "Segoe UI", system-ui, -apple-system, sans-serif;--font-title: "Segoe UI Semibold", "Segoe UI", system-ui, sans-serif;--cheesify-y1: #fff500;--cheesify-y2: #ffed00;--cheesify-y3: #ffd600;--cheesify-y4: #f1da00;--cheesify-y5: #e6cf00}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}@keyframes cheesify-grid-up{0%{background-position:0 0,0 0}to{background-position:0 -48px,0 -48px}}@keyframes cheesify-title-shift{0%{background-position:0% 50%}to{background-position:100% 50%}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}body{animation:none!important;background-position:0 0,0 0!important}.title-gradient{animation:none!important;background-position:40% 50%!important}}body{display:flex;flex-direction:column;min-height:100vh;font-family:var(--font);font-size:16px;line-height:1.5;color:var(--text);background-color:var(--bg);background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:48px 48px;animation:cheesify-grid-up 5s linear infinite}a{color:var(--text);text-decoration:none}a:hover{text-decoration:underline}button:focus-visible,input:focus-visible{outline:2px solid var(--sub);outline-offset:2px}main{flex:1;position:relative;z-index:2;padding:2rem 0 3rem}.wrap{max-width:1120px;margin:0 auto;padding:0 1.25rem}.site-header{position:sticky;top:0;z-index:100;background:var(--card);border-bottom:1px solid var(--accent)}.site-header .inner{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;min-height:56px}.brand{justify-self:start;grid-column:1;font-family:var(--font-title);font-weight:600;font-size:1.125rem;letter-spacing:.04em;display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--text)}.brand:hover{text-decoration:none;color:var(--text)}.brand-logo{height:32px;width:32px;object-fit:contain;flex-shrink:0;display:block}.brand .cheesify-mark{font-size:.75rem;font-weight:500;letter-spacing:.12em;color:var(--sub);text-transform:uppercase}.nav-main{grid-column:2;justify-self:center;display:flex;align-items:center;gap:.25rem}.nav-main a{padding:.5rem .75rem;border-radius:4px;font-size:.8125rem;font-weight:600;letter-spacing:.06em;color:var(--sub);text-decoration:none}.nav-main a:hover{background:var(--btn);color:var(--text);text-decoration:none}.lang-switch{grid-column:3;justify-self:end;display:flex;gap:.25rem}.lang-switch button{font-family:var(--font);font-size:.75rem;font-weight:600;letter-spacing:.05em;padding:.35rem .55rem;border:1px solid var(--accent);border-radius:4px;background:var(--btn);color:var(--sub);cursor:pointer}.lang-switch button:hover{background:var(--btn-hover);color:var(--text)}.lang-switch button[aria-pressed=true]{background:var(--card-2);color:var(--text);border-color:var(--sub)}.screen{width:100%;max-width:480px;margin:0 auto}#game-screen{max-width:720px}.title-gradient{display:inline-block;max-width:100%;color:transparent;-webkit-text-fill-color:transparent;background-image:linear-gradient(90deg,var(--cheesify-y1) 0%,var(--cheesify-y2) 12%,var(--cheesify-y3) 25%,var(--cheesify-y4) 37%,var(--cheesify-y5) 50%,var(--cheesify-y4) 62%,var(--cheesify-y3) 75%,var(--cheesify-y2) 87%,var(--cheesify-y1) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:cheesify-title-shift 14s linear infinite}h1{font-family:var(--font-title);font-weight:600;font-size:clamp(1.5rem,4vw,2rem);letter-spacing:.06em;text-align:center;margin-bottom:.35rem;line-height:1.2}.subtitle{text-align:center;color:var(--sub);margin-bottom:2rem;line-height:1.5}.form-group{margin-bottom:1rem}label{display:block;font-size:.8125rem;font-weight:600;letter-spacing:.04em;color:var(--sub);margin-bottom:.35rem}input[type=text]{width:100%;padding:.65rem .85rem;border:1px solid var(--accent);border-radius:4px;background:var(--card-2);color:var(--text);font-size:1rem;font-family:var(--font);outline:none;transition:border-color .2s,background .2s}input[type=text]:focus{border-color:var(--sub);background:var(--card)}.button-row{margin:1.25rem 0}.magnetic-wrap{display:block;width:100%}.magnetic-wrap--inline{display:inline-block;width:auto}.btn{width:100%;padding:.75rem;border:1px solid var(--accent);border-radius:4px;font-size:.9375rem;font-weight:600;font-family:var(--font);letter-spacing:.04em;cursor:pointer;transition:filter .25s ease,box-shadow .25s ease,background .25s ease,transform .25s ease}.btn:hover{transform:translateY(-2px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;filter:none}.btn-primary{background:linear-gradient(180deg,var(--cheesify-y2),var(--cheesify-y5));color:#101010;border-color:var(--cheesify-y4);box-shadow:0 0 0 1px #0003 inset,0 4px 16px #ffed0033}.btn-primary:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 0 0 1px #00000026 inset,0 8px 24px #ffed0052}.btn-secondary{background:var(--btn);color:var(--text)}.btn-secondary:hover:not(:disabled){background:var(--btn-hover);box-shadow:0 6px 18px #00000059}@media(prefers-reduced-motion:reduce){.btn:hover{transform:none}}.divider{text-align:center;color:var(--sub);margin:1.5rem 0;font-size:.875rem}.status{text-align:center;color:#ff6b6b;min-height:1.5rem;margin-top:1rem;font-size:.875rem}.help{margin-top:2rem;padding:1.25rem;background:var(--card);border:1px solid var(--accent);border-radius:8px;font-size:.9rem;color:var(--sub);line-height:1.5}.help strong{color:var(--text)}.help ol{margin-top:.5rem;padding-left:1.25rem}.help li{margin-bottom:.4rem}.help code,kbd{background:var(--btn);border:1px solid var(--accent);padding:.15rem .4rem;border-radius:4px;font-size:.85rem;color:var(--text)}.game-layout{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem;align-items:flex-start;justify-content:center;width:100%}.canvas-wrap{position:relative;flex-shrink:0;display:flex;justify-content:center}.game-waiting-ui{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:.85rem;padding:.75rem;pointer-events:none;z-index:2}.game-waiting-ui[hidden]{display:none}.game-waiting-copy{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;max-width:min(220px,72%)}.game-waiting-label-text{margin:0;font-size:.875rem;line-height:1.4;color:var(--sub);text-align:left}.waiting-tip{margin:0;font-size:.8125rem;line-height:1.4;color:var(--text);text-align:left;min-height:2.8em;opacity:1;transition:opacity .35s ease}.waiting-tip.is-fading{opacity:0}.waiting-loader{width:24px;height:24px;flex-shrink:0;border:3px solid var(--accent);border-top-color:var(--sub);border-radius:50%;animation:waiting-spin 1.1s linear infinite}@keyframes waiting-spin{to{transform:rotate(360deg)}}.side-panel{display:flex;flex-direction:column;gap:1rem;width:220px;flex-shrink:0}.side-panel--expanded{width:auto}.minimap-wrap,.waiting-room{width:100%;padding:1rem;background:var(--card);border:1px solid var(--accent);border-radius:8px}.minimap-label{font-size:.6875rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--sub);margin-bottom:.5rem;text-align:center}.minimap-wrap--expanded{width:fit-content}#minimap-canvas{display:block;border:1px solid var(--accent);border-radius:4px;background:#08080c;image-rendering:pixelated;image-rendering:crisp-edges}.minimap-wrap--expanded #minimap-canvas{box-shadow:0 0 0 2px var(--cheesify-y4)}#game-canvas{display:block;border:1px solid var(--accent);border-radius:4px;background:#08080c;outline:none}#game-canvas.player-view{max-width:none;border-radius:0;image-rendering:pixelated;image-rendering:crisp-edges;box-shadow:0 0 0 2px var(--cheesify-y4)}#game-canvas:focus{box-shadow:0 0 0 2px var(--cheesify-y2)}.waiting-room h2{font-family:var(--font-title);font-size:1.1rem;font-weight:600;letter-spacing:.04em;color:var(--text);margin-bottom:.5rem}.waiting-code{font-size:.9375rem;color:var(--sub);margin-bottom:.25rem}.waiting-code strong{color:var(--text);letter-spacing:.25em;font-size:1.05rem}.waiting-subtitle{font-size:.875rem;color:var(--sub);margin-bottom:1rem;line-height:1.5}.player-list{list-style:none;margin-bottom:1rem}.player-list-item{display:flex;align-items:center;gap:.5rem;padding:.45rem 0;font-size:.9375rem;color:var(--sub);line-height:1.4}.player-list-item.is-me{color:var(--text);font-weight:600}.player-color{width:14px;height:14px;border-radius:3px;flex-shrink:0;border:1px solid var(--accent)}.waiting-hint{text-align:center;font-size:.875rem;color:var(--sub);margin-top:.5rem}#start-game-btn{margin-top:.25rem}.room-info{font-size:.875rem;font-weight:600;letter-spacing:.04em;color:var(--sub);margin-bottom:.35rem;text-align:center}.game-hud{text-align:center;font-family:var(--font-title);font-size:.9375rem;font-weight:600;letter-spacing:.06em;color:var(--sub);margin-bottom:.75rem}.game-hud span{color:var(--cheesify-y3)}.role-banner{background:var(--card);border:1px solid var(--accent);border-radius:8px;padding:.65rem 1rem;margin-bottom:.75rem;font-weight:600;font-size:.9375rem;color:var(--text);text-align:center;line-height:1.4}.controls-hint{margin-top:.75rem;font-size:.8125rem;color:var(--sub);text-align:center;line-height:1.5}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:none;align-items:center;justify-content:center;padding:.5rem;background:#0000008c;pointer-events:none}.overlay:not([hidden]){display:flex;pointer-events:auto}.overlay-box{text-align:center}.overlay:not([hidden]) .overlay-box{width:min(280px,92%);max-height:90%;overflow-y:auto;padding:1rem 1.1rem;border-radius:8px;background:var(--card);border:1px solid var(--accent);box-shadow:0 12px 28px #00000073}.overlay-death:not([hidden]) .overlay-box{background:#2a1010;border-color:#6b2020}.overlay-win:not([hidden]) .overlay-box{background:#102a18;border-color:#2a6b3a}.overlay-lose:not([hidden]) .overlay-box{background:var(--card-2);border-color:var(--accent)}.overlay h2{font-family:var(--font-title);font-size:1.1rem;margin-bottom:.5rem;color:var(--text);font-weight:600;letter-spacing:.04em;line-height:1.25}.overlay p{font-size:.875rem;color:var(--sub);line-height:1.45;margin:0}.overlay-btn{width:100%;min-width:0;margin-top:.75rem;padding:.55rem 1rem;font-size:.875rem}.overlay-hint{margin-top:.6rem;font-size:.8rem;color:var(--sub)}
