
:root{color-scheme:dark;--bg:#09111e;--panel:#111e30;--line:#2a3e55;--text:#ecf5fc;--muted:#a9bbce;--mint:#70efc8;--gold:#ffd381}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 25% 0,#172c43,var(--bg) 60%);color:var(--text);font:16px/1.5 system-ui,sans-serif;min-height:100vh}button,input{font:inherit}select{font:inherit;width:100%;background:#081320;border:1px solid #466079;border-radius:8px;color:white;padding:12px}button{cursor:pointer;border:1px solid var(--line);background:#1b2c42;color:var(--text);border-radius:9px;padding:11px 18px;min-height:46px}button:hover:enabled{border-color:var(--mint);background:#243d52}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--mint);color:#061e1b;border-color:var(--mint);font-weight:750}button:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}input{width:100%;padding:12px;background:#081320;border:1px solid #466079;border-radius:8px;color:white}label{display:block;color:var(--muted);margin:14px 0 7px;font-size:14px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(2.7rem,6vw,4.8rem);letter-spacing:-.065em;line-height:1;margin-bottom:20px}h2{font-size:1.25rem}h3{font-size:1rem}a{color:var(--mint)}header{max-width:1440px;margin:auto;padding:22px 30px;display:flex;justify-content:space-between;gap:20px;align-items:center;border-bottom:1px solid var(--line)}.brand{font-weight:800;letter-spacing:.12em;font-size:14px}.tag{font-size:14px;color:var(--mint)}main{max-width:1440px;margin:auto;padding:28px 30px}.muted{color:var(--muted)}.eyebrow{color:var(--mint);font-size:14px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.welcome{display:grid;grid-template-columns:1.2fr 1fr;gap:60px;align-items:center;max-width:1100px;margin:25px auto}.intro{max-width:560px}.intro p{font-size:18px;color:var(--muted)}.box{background:linear-gradient(145deg,#14253a,#101a29);border:1px solid var(--line);border-radius:16px;padding:24px}.joinrow{display:flex;gap:10px;margin-top:12px}.joinrow input{text-transform:uppercase;letter-spacing:.15em;min-width:0}.divider{text-align:center;color:var(--muted);margin:18px 0;font-size:14px}.wide{width:100%;margin-top:18px}.rules{max-width:1100px;margin:24px auto}.rules summary{cursor:pointer;font-weight:700;padding:6px 0}.rules ol{padding-left:24px;color:var(--muted)}.rules li{margin:9px 0}.rules strong{color:var(--text)}.gamehead{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:20px}.gamehead h1{font-size:2rem;margin:0}.code{font-size:21px;letter-spacing:.15em;color:var(--mint);font-weight:800}.layout{display:grid;grid-template-columns:250px minmax(0,1fr) 285px;gap:20px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px}.statrow{display:flex;justify-content:space-between;gap:10px;color:var(--muted);margin-bottom:13px}.statrow strong{color:var(--text)}.health{height:7px;border-radius:20px;background:#293b50;margin:-4px 0 22px;overflow:hidden}.health div{height:100%;background:var(--mint);transition:width .3s}.teamplayers{max-height:490px;overflow:auto}.floors{flex-wrap:wrap}.player{padding:12px 10px;border:1px solid transparent;border-radius:8px;margin:8px 0;background:#0b1726}.player.active{border-color:var(--mint)}.player b{display:flex;align-items:center;gap:8px;overflow-wrap:anywhere}.dot{display:inline-block;width:12px;height:12px;border-radius:50%;flex-shrink:0}.small{font-size:14px;color:var(--muted)}.status{padding:12px 16px;background:#163a36;color:#a7ffe5;border:1px solid #387b68;border-radius:10px;margin-bottom:20px}.status.wait{background:#252d39;color:var(--muted);border-color:var(--line)}.floorbar{display:flex;gap:8px;justify-content:space-between;align-items:center;margin-bottom:16px}.floors{display:flex;gap:5px}.floors button{padding:7px 13px}.floors button.selected{color:var(--mint);border-color:var(--mint)}canvas{width:100%;aspect-ratio:1;display:block;background:#091421;border-radius:8px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:14px;color:var(--muted);margin-top:13px}.roomtitle{color:var(--mint);font-size:14px;text-transform:uppercase;letter-spacing:.1em}.roomdesc{min-height:65px}.moves{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.moves button{padding:10px 2px}.moves .north{grid-column:2}.moves .west{grid-column:1}.moves .south{grid-column:2}.moves .east{grid-column:3}.vertical{display:flex;gap:7px;margin-top:8px}.vertical button{flex:1}.actions{display:grid;gap:8px;margin-top:20px}.log{max-height:260px;overflow:auto;margin-top:20px;font-size:14px;color:var(--muted)}.log p{border-top:1px solid var(--line);padding:9px 0;margin:0}.log p:first-child{color:var(--text)}.hint{font-size:14px;color:var(--muted);margin:14px 0 0}dialog{width:min(540px,calc(100% - 28px));background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:16px;padding:24px}dialog::backdrop{background:#000a}dialog textarea{font:inherit;width:100%;min-height:155px;padding:12px;background:#081320;color:var(--text);border:1px solid #466079;border-radius:8px;resize:vertical}dialog .linktools{margin-top:16px}dialog a{display:inline-block;border:1px solid var(--line);padding:11px 18px;border-radius:9px;text-decoration:none}.check{display:flex;align-items:center;gap:10px}.check input{width:20px;height:20px}.roomlist{display:grid;gap:10px;margin-top:18px}.roomrow{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px;border:1px solid var(--line);border-radius:10px}.roomrow b{display:block;overflow-wrap:anywhere}.chatpanel{margin-top:20px}.chatmessages{max-height:280px;min-height:90px;overflow:auto;margin-top:16px}.chatmessage{padding:10px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.chatmessage p{margin:3px 0 0;white-space:pre-wrap}.chatmessage b{color:var(--mint)}.chatpanel input{letter-spacing:normal;text-transform:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);width:min(600px,90vw);z-index:10;background:#4c2633;border:1px solid #f4a0ac;color:#fff;padding:14px 20px;border-radius:12px;box-shadow:0 6px 30px #0008}.hidden{display:none!important}.exitmark{color:var(--gold)}footer{max-width:1440px;margin:30px auto;padding:0 30px;color:var(--muted);font-size:14px}.smsbutton{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:11px 18px;border-radius:9px;background:var(--mint);border:1px solid var(--mint);color:#061e1b;text-decoration:none;font-weight:750}.smsbutton:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.linktools{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.lobby{margin-bottom:20px}.lobby p{color:var(--muted)}@media(max-width:1080px){.layout{grid-template-columns:210px minmax(0,1fr)}.controlpanel{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:20px}.controlpanel .log{margin-top:0}.roomdesc{min-height:0}}@media(max-width:680px){header{padding:16px}.tag{font-size:12px}main{padding:18px 14px}.welcome{display:block;margin:16px auto}.intro{margin-bottom:28px}h1{font-size:3.2rem}.box{padding:20px}.layout{display:flex;flex-direction:column}.team{order:2}.map{order:0}.controlpanel{order:1;display:block}.teamplayers{display:grid;grid-template-columns:1fr 1fr;gap:5px}.gamehead{align-items:flex-start;flex-direction:column}.gamehead h1{font-size:1.6rem}.floorbar{flex-wrap:wrap}.panel{padding:16px}.statrow{display:inline-flex;margin-right:18px}.health{margin:0 0 10px}.controlpanel .log{margin-top:20px}.rules{padding:16px}.moves button{min-height:54px}footer{padding:0 16px}}

.cover-screen{position:fixed;inset:0;z-index:20;background:#050b10;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:auto;padding:16px}.cover-screen img{display:block;width:100%;height:auto;max-height:calc(100dvh - 140px);object-fit:contain}.cover-actions{text-align:center;padding:12px;flex-shrink:0}.cover-actions p{margin:4px 0 10px;color:var(--gold)}@media(max-width:680px){.cover-screen{padding:8px}.cover-screen img{max-height:calc(100dvh - 150px)}}
