:root{--bg:#0b1020;--fg:#e6ebf5;--mut:#8b97b3;--acc:#f28c28;--card:#141b30}
body.night{--bg:#000;--fg:#ff4a3a;--mut:#a3271c;--acc:#ff2a1a;--card:#140000}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:15px system-ui,sans-serif}
header{padding:12px 16px;border-bottom:1px solid #223}.brand b{color:var(--acc);font-size:20px}.brand span{font-size:18px}.tag{color:var(--mut);font-size:13px}
main{max-width:1100px;margin:auto;padding:10px}.controls{background:var(--card);border-radius:10px;padding:10px}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}
button,.big{background:#222b45;color:var(--fg);border:1px solid #33405f;border-radius:8px;padding:8px 10px;font:inherit}
body.night button,body.night .big{background:#200;border-color:#500}
.tog.on{background:var(--acc);color:#000}.big{display:block;text-align:center;font-weight:600;cursor:pointer}.big input{display:none}
input[type=range]{width:160px}.hint{color:var(--mut);font-size:12px;margin:4px 0}
.stage{position:relative;margin-top:10px}canvas{width:100%;background:#000;border-radius:10px;touch-action:none;display:block}
#status{color:var(--mut);padding:6px}.legend{font-size:13px;padding:4px}.g{color:#3f3}.r{color:#f44}
footer{text-align:center;padding:16px;color:var(--mut)}footer a{color:var(--acc)}
.modes{display:flex;gap:8px;margin-bottom:8px}.mode{flex:1;font-size:16px;font-weight:600;padding:12px}.mode.on{background:var(--acc);color:#000}
.primary{background:#2e7d32;font-weight:700}.hide{display:none}

.modal{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:9}
.modal.hide{display:none}.modal .box{background:#141a2b;border:1px solid #f39a2b;border-radius:12px;padding:18px;max-width:440px;margin:12px}
.modal h2{margin:0 0 6px;color:#f39a2b;font-size:20px}.modal p{font-size:14px;opacity:.85}.modal .opts{display:flex;flex-direction:column;gap:8px}
.modal .opts button{text-align:left;padding:12px;font-size:15px}
.mapwrap{position:relative;display:block;width:100%;margin-bottom:38px}
.fab{position:absolute;right:12px;bottom:-30px;font-size:20px;font-weight:700;padding:16px 22px;border-radius:40px;border:0;background:#ff8a1f;color:#111;box-shadow:0 4px 14px rgba(0,0,0,.6);min-height:56px;z-index:5}
body.night .fab{background:#a01010;color:#fff}
details.shared summary{cursor:pointer;font-weight:600;padding:10px 4px;font-size:16px}
.fab.on{background:#333a4a;color:#fff;border:2px solid #ff8a1f}

.laybar{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px;padding-right:0}
.lay{flex:1 1 45%;min-height:48px;font-size:15px;font-weight:600;border-radius:12px;border:2px solid #444;background:#1a2133;color:#ddd}
.lay.on.uq{border-color:#ffcf8a;background:#4a3a1c;color:#ffcf8a}.lay.on.ma{border-color:#8fd3ff;background:#173a52;color:#8fd3ff}
.lay.on.sites{border-color:#ff6ad5;background:#4d1a40;color:#ff6ad5}.lay.on.claims{border-color:#c9a2ff;background:#33224f;color:#c9a2ff}
.tip{position:absolute;left:8px;right:8px;top:8px;background:rgba(10,14,26,.94);color:#fff;font-size:15px;line-height:1.35;padding:10px 12px;border-radius:10px;border:2px solid #ff8a1f;z-index:6}
.pro h3{margin:4px 0 8px;color:#ffcf5a}.pro h4{margin:12px 0 4px;color:#ffcf5a}.pro p{margin:6px 0;line-height:1.4}
.procard{border:2px dashed #ffcf5a;border-radius:12px;padding:10px 12px;background:#1d1a10}.procard ul{margin:6px 0 10px 18px;padding:0}
.pin label{display:flex;flex-direction:column;font-size:13px;flex:1 1 45%}.pin input,.pin select{font-size:16px;padding:6px;margin-top:2px}
.see{padding:1px 6px;border-radius:6px}.see.excellent{background:#1e6b2e}.see.good{background:#2e5f9e}.see.average{background:#8a6a12}.see.poor{background:#8a2a20}
#proOut{font-size:15px}
.lay.vis{flex-basis:100%}.lay.on.vis{border-color:#2bd94a;background:#163d1e;color:#9dffb0}
.vislegend{font-size:14px;margin:0 0 6px;line-height:1.6}.vislegend i{display:inline-block;width:12px;height:12px;border-radius:50%;border:2px solid #000;margin:0 4px 0 8px;vertical-align:-2px}

:root{--acc:#ff9800;--ocred:#e41b23;--ocgray:#3d4246}
.hrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.oclogo{display:inline-block;background:#fafafa;border-radius:10px;padding:5px 9px;line-height:0}.oclogo img{height:40px;width:auto}
.brand span{font-size:20px;font-weight:700;color:var(--fg)}
.storebar{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.sbtn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 12px;border-radius:10px;font:600 15px system-ui,sans-serif;text-decoration:none;color:#fff;background:var(--ocgray);border:1px solid #5a6066;cursor:pointer}
.sbtn.shop{background:var(--ocred);border-color:var(--ocred);color:#fff}.sbtn.wa{background:#1f8f4a;border-color:#25d366;color:#fff}.storebar .shop{flex:1 1 45%}
.wide{display:flex;width:100%;margin:8px 0}.about{text-align:center}.aboutlogo{max-width:223px;width:70%;background:#fafafa;border-radius:10px;padding:6px}
body.night .oclogo,body.night .aboutlogo{background:#300;filter:grayscale(1) brightness(.55) sepia(1) hue-rotate(-40deg) saturate(6)}
body.night .sbtn{background:#300;border-color:#600;color:#ff4a3a}

.oclogo{background:none;padding:0;display:inline-flex;align-items:center;gap:8px;text-decoration:none;line-height:1.05}.oclogo img{height:48px;width:48px;border-radius:50%}
.ocname{display:flex;flex-direction:column;font-size:15px;letter-spacing:.5px;text-transform:uppercase}.ocname b:first-child{color:#d8dde3}.ocname b:last-child{color:var(--acc);font-size:17px}
.aboutlogo{max-width:320px;width:90%;background:none;padding:0;border-radius:12px}.tagline{font-style:italic;color:#e8e8e8;font-size:16px;margin:4px 0 10px}
.splash{position:fixed;inset:0;z-index:99;background:#000;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .5s}.splash img{width:min(88vw,70vh,560px)}.splash p{color:#bbb;font-size:14px;margin-top:14px}.splash.out{opacity:0}
body.night .oclogo,body.night .aboutlogo{background:none}body.night .oclogo img,body.night .aboutlogo,body.night .splash img{filter:grayscale(1) sepia(1) hue-rotate(-50deg) saturate(6) brightness(.6)}
body.night .oclogo{filter:none}body.night .ocname b{color:#ff4a3a!important}body.night .tagline{color:#ff4a3a}

.brand{display:flex;flex-direction:column;line-height:1.1}.brand .byline{font-size:12px;font-weight:400;color:var(--mut)}.about .byline{margin:0}.splash .tagline{max-width:90vw;text-align:center;font-size:15px;color:#e8e8e8}.splash img{width:min(80vw,58vh,520px)}
