*{box-sizing:border-box}body{margin:0;overflow:hidden;font:14px Arial,sans-serif;color:#e9f0df;background:#111e2d}button,input{font:inherit}button,a{touch-action:manipulation}button{border:1px solid #c4d6bd44;background:#213a32e8;color:#eff2e6;padding:10px 13px;border-radius:8px;cursor:pointer}button:hover{background:#42624e}button.active{background:#d9e8b4;color:#243b30}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #e2b359;outline-offset:3px}a{color:#dce9bd}small{line-height:1.5}#world{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none;touch-action:none}header{position:fixed;top:18px;left:22px;right:22px;display:flex;align-items:center;justify-content:space-between;gap:16px;pointer-events:none}header>*{pointer-events:auto}.brand{display:flex;gap:10px;align-items:center;background:#152c28e8;padding:12px 16px;border-radius:10px;box-shadow:0 6px 25px #0002}.seal{display:grid;place-items:center;border:1px solid #b7cc95;border-radius:50%;height:34px;width:34px;font:24px Georgia}.brand strong{display:block;letter-spacing:1px;font-size:15px}.brand small{display:block;font-size:8px;letter-spacing:1.5px;margin-top:4px;color:#b0c3a6}nav{display:flex;gap:5px}.environment{position:fixed;top:91px;left:22px;right:22px;display:flex;gap:14px;align-items:center;font-size:11px;pointer-events:none}.environment>*{background:#162c28df;border-radius:6px;padding:7px 10px;pointer-events:auto}.environment a{font-size:9px}.mission{position:fixed;top:139px;left:22px;width:256px;background:#192e29e8;border:1px solid #b0ca9f33;padding:21px;border-radius:12px;box-shadow:0 8px 30px #0002}.eyebrow{font-size:10px;color:#bbcda7;letter-spacing:.7px}h1{font:29px/1.12 Georgia,serif;margin:13px 0}.mission p{font-size:12px;color:#c1cdb8;line-height:1.65}.mission small{display:block;margin-top:15px;font-size:9px;color:#a4b39a}#points{padding:11px 0;border-top:1px solid #bbcc9933;font-size:11px}#security{font-size:11px;color:#bbd5af}#security.alert{color:#ffb48e}.links{display:flex;gap:8px;align-items:center;margin-top:15px}.links a,.links button{font-size:10px;padding:0;background:none;border:0;white-space:nowrap}.sports-score{position:fixed;top:140px;right:22px;background:#192e29e8;padding:11px 14px;border-radius:8px;font-size:11px;letter-spacing:.4px}.mapbox{position:fixed;bottom:104px;right:22px;background:#192e29e8;padding:10px;border-radius:10px}.mapbox small{display:block;margin-bottom:7px;font-size:10px}#map{display:block;width:135px;height:180px;border-radius:5px}#status{position:fixed;bottom:85px;left:50%;transform:translateX(-50%);background:#182f29ed;border:1px solid #bbcca533;padding:12px 18px;border-radius:24px;font-size:12px;text-align:center;max-width:calc(100% - 400px);pointer-events:none}.actions{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);display:flex;gap:6px}.actions button{font-size:11px;white-space:nowrap}.actions b{font-size:10px;border:1px solid #c0cfb15c;padding:3px 5px;border-radius:4px;margin-right:4px}.movement{position:fixed;bottom:20px;left:22px;display:grid;grid-template-columns:repeat(3,40px);gap:4px}.movement button{padding:11px 0;touch-action:none}.movement button:first-child{grid-column:2}.movement button:nth-child(2){grid-column:1}#speed{position:fixed;right:22px;bottom:56px;font:bold 26px Georgia;text-shadow:0 2px 8px #000}#celebration{position:fixed;top:35%;left:50%;transform:translate(-50%,-50%);font:bold 54px Georgia;color:#ffe2a0;text-shadow:0 3px 15px #142c26;opacity:0;pointer-events:none}#celebration.show{opacity:1;animation:score .6s ease-out}@keyframes score{from{transform:translate(-50%,-50%) scale(.6)}to{transform:translate(-50%,-50%) scale(1)}}dialog{width:min(650px,94vw);max-height:88vh;background:#f1f2e6;color:#263f34;border:1px solid #d5ddc7;border-radius:16px;padding:26px;overflow:auto}dialog::backdrop{background:#071f28b3;backdrop-filter:blur(4px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:14px}h2{font:30px Georgia;margin:4px 0 12px}dialog p,dd{font-size:13px;line-height:1.65}dt{font-weight:bold;font-size:12px;margin-top:14px}dd{margin:4px 0;color:#647361}dialog label{display:block;font-size:12px;margin:16px 0}input{display:block;width:100%;padding:12px;margin-top:6px;border-radius:7px;border:1px solid #bfcab4;background:#fffef6;color:#243c31}.dialog-actions{display:flex;gap:8px;flex-wrap:wrap}#room-status{color:#617357}#gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}#gallery article{padding:12px;border:1px solid #c6d1bd;border-radius:8px}#gallery img{width:100%;height:150px;object-fit:contain}#gallery a{color:#3e644d}[hidden]{display:none!important}
@media(max-width:900px){header{left:12px;right:12px;top:12px}.brand{padding:9px}.brand strong{font-size:12px}.brand small{font-size:7px}.seal{display:none}nav{flex-wrap:wrap;justify-content:flex-end;max-width:300px}nav button{font-size:10px;padding:8px}.environment{top:87px;left:12px;right:12px;gap:5px;flex-wrap:wrap}.environment>*{font-size:9px;padding:6px}.environment a{display:none}.mission{left:12px;top:146px;width:200px;padding:14px}h1{font-size:23px}.mission p{font-size:11px}.sports-score{right:12px;top:146px;font-size:9px}.mapbox{right:12px;bottom:130px}#map{width:105px;height:140px}#status{max-width:90%;width:max-content;bottom:126px;font-size:10px}.actions{bottom:20px;left:auto;right:12px;transform:none;flex-wrap:wrap;justify-content:flex-end;max-width:290px}.actions button{padding:9px;font-size:10px}.movement{left:12px;bottom:18px;grid-template-columns:repeat(3,34px)}#speed{bottom:100px;font-size:20px}}
@media(max-width:560px){.brand strong{font-size:10px}.brand small{font-size:6px;letter-spacing:.6px}.brand{max-width:155px}.mission{width:178px;padding:12px;top:155px}.mission small,.links{display:none}.mission p{margin:8px 0}.sports-score{top:auto;bottom:299px;right:12px;font-size:8px;max-width:150px;line-height:1.6}.environment{top:99px}.environment #weather{max-width:210px}.actions{max-width:235px;bottom:12px}.actions b{display:none}#celebration{font-size:38px}#status{bottom:99px;max-width:94%}#gallery{grid-template-columns:1fr}#points{font-size:10px}#security{font-size:10px}}
@media(max-height:650px){.mission{top:130px}.mission p,.mission small,.links{display:none}.mapbox{bottom:80px}#map{height:115px;width:86px}.sports-score{top:130px}.environment{top:84px}.actions{bottom:12px}#status{bottom:65px}h1{font-size:21px}.movement{bottom:12px}}
#health{margin-top:8px;color:#b7d8aa;font-variant-numeric:tabular-nums}#respawn{position:fixed;top:43%;left:50%;transform:translate(-50%,-50%);padding:22px 35px;background:#242c2fdd;color:#fff;font-size:clamp(18px,3vw,34px);font-weight:bold;text-align:center;border-radius:10px;z-index:8;pointer-events:none}#respawn[hidden]{display:none}

select{width:100%;padding:12px;border:1px solid #80948b;border-radius:8px;background:#243d36;color:#f2f3e8}#welcome-dialog{max-width:480px}#welcome-dialog p{line-height:1.5}#rotate-prompt{position:fixed;inset:0;z-index:30;background:#172c27f2;color:white;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px;gap:14px}#rotate-prompt[hidden]{display:none}#voice-status{position:fixed;right:20px;top:112px;max-width:300px;font-size:12px;color:#e7eee0;text-shadow:0 1px 3px #000;pointer-events:none}#theater-panel{position:fixed;right:20px;top:135px;width:min(450px,47vw);max-height:72vh;overflow:auto;background:#172624ed;border:1px solid #71847b;border-radius:12px;padding:14px;z-index:5;color:#eef3e6}#theater-panel[hidden]{display:none}#theater-panel.expanded{width:min(1000px,90vw);left:50%;right:auto;transform:translateX(-50%);top:90px}#theater-panel video,#theater-panel iframe{width:100%;aspect-ratio:16/9;background:#080c0b;border:0}#theater-panel [hidden]{display:none}#screen-empty{padding:30px 15px;text-align:center;background:#111917}#screen-form input{width:100%}#screen-status{display:block;margin-top:8px}#theater-panel label{font-size:12px}body header nav{flex-wrap:wrap;justify-content:flex-end}@media(max-width:900px){header{padding:8px}header nav button{padding:7px;font-size:11px}.brand small{display:none}#voice-status{top:100px;right:10px;font-size:10px}#theater-panel{top:100px;right:10px;max-height:65vh}.mission{max-width:230px}}


#health-meter{width:100%;height:12px;margin:4px 0 8px;accent-color:#83b671}
#player-names{position:fixed;inset:0;pointer-events:none}#player-names span{position:absolute;transform:translate(-50%,-100%);padding:4px 9px;border-radius:5px;background:#16312edb;border:1px solid #c1ddd95c;color:#fff;font-size:11px;white-space:nowrap;text-shadow:0 1px 2px #000}#connection-banner{position:fixed;top:43%;left:50%;transform:translateX(-50%);padding:18px 24px;background:#172b38ef;border:1px solid #d9b36d;border-radius:10px;z-index:15;text-align:center;pointer-events:none}#online-list{list-style:none;padding:0;max-height:40vh;overflow:auto}#online-list li{padding:10px 0;border-bottom:1px solid #314b4422}#welcome-status{color:#88492e;min-height:1.5em;font-size:12px}
#arrest-overlay{position:fixed;left:50%;bottom:145px;transform:translateX(-50%);width:min(360px,85vw);padding:18px 24px;text-align:center;background:#142332ed;border:1px solid #d9b36d;border-radius:12px;box-shadow:0 8px 35px #0005;pointer-events:none;z-index:10}#arrest-title{display:block;color:#f5cd89;font-size:24px;letter-spacing:3px}#arrest-detail{display:block;margin:9px 0 12px;font-size:12px;color:#e3e8eb}#arrest-progress{width:100%;height:6px;accent-color:#d9b36d}
