@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=DM+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap');
:root{--ink:#1d2827;--muted:#69746c;--orange:#ef602f;--panel:#f7f8f1;--line:#d2d8ce;--dark:#1e2c29;--light:#fff}*{box-sizing:border-box}body{margin:0;background:#e8ece4;color:var(--ink);font:14px 'DM Sans',sans-serif;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid var(--orange);outline-offset:4px}canvas{position:fixed;inset:0;width:100%;height:100%;outline:none;touch-action:none}header{position:absolute;z-index:2;left:32px;right:32px;top:26px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--ink);pointer-events:auto}.brand>b{font-size:33px;letter-spacing:-5px;background:var(--ink);color:#fff;width:48px;height:48px;border-radius:12px;padding:0 6px}.brand>b span{font-size:24px;color:#f0875b}.brand div{font-size:16px;font-weight:800;letter-spacing:1px}.brand small{display:block;font:9px 'IBM Plex Mono',monospace;letter-spacing:2px;margin-top:3px}.top-actions{display:flex;align-items:center;gap:10px;pointer-events:auto}button{border:1px solid #cdd5ca;background:#f7f8f1e8;color:var(--ink);border-radius:7px;padding:11px 14px;font-size:11px;font-weight:700}.top-actions #info{border-radius:50%;width:31px;height:31px;padding:0;font-family:serif;font-size:16px}.live{font:9px 'IBM Plex Mono';letter-spacing:1px;margin-right:15px}.live i,.footline i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#568369;margin-right:7px}.reset{background:var(--dark);color:white;border-color:var(--dark);font-size:12px;padding:12px 17px}.intro{position:absolute;top:128px;left:34px;width:260px;pointer-events:none}.eyebrow{font:9px 'IBM Plex Mono',monospace;letter-spacing:1.4px}.intro>.eyebrow{display:flex;justify-content:space-between;border-top:1px solid #84927e;padding-top:12px}.intro>.eyebrow span{color:#838c80}h1{font:700 52px/.98 'Barlow Condensed',sans-serif;letter-spacing:-.7px;margin:18px 0 14px}.intro>p{color:var(--muted);font-size:12px;line-height:1.7;margin-bottom:24px}.weapon-detail{background:var(--dark);padding:19px 20px 17px;border-radius:11px;color:#ecf0df;box-shadow:0 12px 30px #26322c15}.detail-top{display:flex;align-items:center;justify-content:space-between;font:8px 'IBM Plex Mono';letter-spacing:1.4px;color:#a8b8a6}.detail-top b{font:20px 'Barlow Condensed';color:#f18151}.weapon-detail h2{font:600 34px 'Barlow Condensed';margin:10px 0 6px}.weapon-detail p{font-size:11px;line-height:1.7;color:#b2c1b2;height:37px;margin:0 0 20px}.detail-bottom{border-top:1px solid #435048;padding-top:14px;display:flex;align-items:center;justify-content:space-between}.detail-bottom span{font:8px 'IBM Plex Mono';letter-spacing:1px;color:#b7c6b5}.detail-bottom b{font:22px 'Barlow Condensed';color:#fb925e}.orange-dot{display:inline-block;background:var(--orange);width:5px;height:5px;border-radius:50%;margin-right:5px}.tips{display:flex;gap:12px;margin-top:20px;color:var(--muted);font-size:10px;line-height:1.8}.tips>span{font-size:24px}.tips p{margin:0}.tips b{color:#3e4f40;font-weight:500}.readout{position:absolute;top:129px;right:34px;width:180px;pointer-events:none}.readout>.eyebrow{border-top:1px solid #84927e;padding-top:12px}.integrity{display:flex;align-items:baseline;gap:3px;margin-top:5px}.integrity strong{font:600 65px 'Barlow Condensed';letter-spacing:-2px}.integrity>span{font:24px 'Barlow Condensed';color:#677d61}.spark{margin-left:auto;color:#71906a;font-size:17px;letter-spacing:2px}.meter{height:3px;background:#cbd4c5}.meter i{display:block;height:100%;width:100%;background:#547553;transition:width .4s}.stats{display:flex;justify-content:space-between;font:8px 'IBM Plex Mono';color:#71806e;margin-top:12px}.stats b{color:#334b31;font-weight:500}.readout>p{font:7px 'IBM Plex Mono';letter-spacing:1px;margin-top:13px;color:#788772}.viewtools{position:absolute;right:33px;top:335px;display:flex;flex-direction:column;gap:6px}.viewtools button{width:155px;text-align:left;padding:10px;font-size:14px;background:#f6f8f0cf}.viewtools button span{font-size:10px;margin-left:8px}.viewtools b{float:right;font:9px 'IBM Plex Mono';margin-top:3px}.viewtools button.on{background:#243a30;color:white;border-color:#243a30}footer{position:absolute;bottom:0;width:100%;padding:0 32px 15px;pointer-events:none}.dock-heading{display:flex;justify-content:space-between;font:8px 'IBM Plex Mono';letter-spacing:1.5px;margin-bottom:11px;color:#50634c}.dock-heading i{font-style:normal;color:#8c9c82;margin:0 10px}nav{display:grid;grid-template-columns:repeat(9,1fr);gap:7px;pointer-events:auto}.weapon{border:1px solid #c5cdbf;padding:12px 12px 10px;position:relative;text-align:left;border-radius:9px;background:#f7f8f1f2;box-shadow:0 3px 10px #42513709;transition:.15s}.weapon:hover{transform:translateY(-4px);border-color:#94a58a}.weapon.active{background:var(--orange);border-color:var(--orange);color:#fff;transform:translateY(-5px);box-shadow:0 8px 24px #d85c3030}.weapon .number{position:absolute;top:10px;left:11px;font:9px 'IBM Plex Mono';opacity:.6}.weapon svg{display:block;width:42px;height:36px;margin:1px auto 9px;stroke:currentColor;fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.weapon .name{display:block;font-size:11px;font-weight:700;white-space:nowrap}.weapon .range{display:block;font:8px 'IBM Plex Mono';opacity:.6;margin-top:5px;letter-spacing:.5px}.footline{display:flex;justify-content:space-between;align-items:center;font:7px 'IBM Plex Mono';letter-spacing:.7px;margin-top:14px;color:#6e7c66}.footline a{color:#4d624a;text-decoration:none;pointer-events:auto}.footline i{width:4px;height:4px}.footline>span:nth-child(2){opacity:.65}#notice{position:absolute;left:50%;bottom:195px;transform:translateX(-50%);background:#23372bd9;color:#edf1e6;padding:9px 15px;border-radius:30px;font:10px 'IBM Plex Mono';white-space:nowrap;pointer-events:none;transition:opacity .5s;opacity:0}#impact{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);pointer-events:none;text-align:center;opacity:0;color:#faf8eb;text-shadow:0 3px 20px #401e10}#impact b{display:block;font:800 64px 'Barlow Condensed';letter-spacing:8px}#impact span{font:9px 'IBM Plex Mono';letter-spacing:4px}#flash{position:absolute;inset:0;background:#fff7cf;pointer-events:none;opacity:0;z-index:3}#labels-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.building-label{position:absolute;font:8px 'IBM Plex Mono';color:#234431;background:#ffffeff0;padding:4px 6px;border:1px solid #b7c6ab;border-radius:3px;white-space:nowrap;transform:translate(-50%,-100%)}#loading{position:fixed;inset:0;z-index:20;background:#e8ece4;display:flex;align-items:center;justify-content:center;flex-direction:column}.loadmark{background:var(--dark);border-radius:15px;color:white;font-size:50px;padding:0 14px;letter-spacing:-5px}.loadmark span{color:var(--orange);font-size:34px}#loading h2{font:600 34px 'Barlow Condensed';margin-bottom:8px}#loading p{font:11px 'IBM Plex Mono';color:#6d7b66}.loadbar{height:3px;width:220px;background:#d1dacb;margin-top:20px}.loadbar i{display:block;width:30%;height:100%;background:var(--orange);animation:load 1.2s ease-in-out infinite alternate}@keyframes load{to{transform:translateX(230%)}}dialog{max-width:510px;width:90%;border:1px solid #bfcbb7;background:var(--panel);border-radius:16px;padding:35px;color:var(--ink);box-shadow:0 30px 100px #10291955}dialog::backdrop{background:#172c2277;backdrop-filter:blur(4px)}dialog h2{font:600 40px/1.05 'Barlow Condensed';margin:20px 0}dialog h3{font-size:13px;margin-top:24px}dialog p{font-size:12px;line-height:1.8;color:#61715b}dialog a{display:block;font-size:11px;line-height:2;color:#406d49}dialog .small{font-size:10px}#closeabout{position:absolute;right:15px;top:15px;background:transparent;border:0;font-size:22px;padding:0 7px}
@media(max-width:1100px){.intro{width:220px}h1{font-size:45px}.weapon{padding:12px 8px}.weapon .name{font-size:9px}.readout{width:150px}.footline>span:nth-child(2){display:none}}
@media(max-width:760px){header{left:16px;right:16px;top:16px}.brand div{font-size:12px}.brand small{font-size:7px}.brand>b{width:38px;height:38px;font-size:27px;padding-left:4px}.brand>b span{font-size:21px}.live,#sound,.reset span{display:none}.top-actions{gap:6px}.reset{padding:9px 12px;font-size:18px}.intro{left:16px;top:86px;width:170px}.intro>.eyebrow{font-size:7px}.intro>.eyebrow span,.intro>p,.tips{display:none}h1{font-size:34px;margin:12px 0 18px}.weapon-detail{padding:12px}.detail-top{font-size:6px}.detail-top b{font-size:15px}.weapon-detail h2{font-size:26px}.weapon-detail p{font-size:9px;margin-bottom:10px;height:auto}.detail-bottom{padding-top:8px}.detail-bottom span{font-size:6px}.detail-bottom b{font-size:17px}.readout{right:17px;top:88px;width:110px}.readout>.eyebrow{font-size:7px}.integrity strong{font-size:48px}.spark{display:none}.stats{font-size:6px;gap:5px}.readout>p{font-size:6px}.viewtools{right:16px;top:252px}.viewtools button{width:35px;padding:7px;text-align:center}.viewtools span,.viewtools b{display:none}footer{padding:0 12px 12px}.dock-heading{font-size:7px;letter-spacing:.6px}.dock-heading>span:nth-child(2){display:none}nav{grid-template-columns:repeat(4,1fr);gap:5px}.weapon{padding:5px 7px;border-radius:6px}.weapon svg{width:28px;height:25px;margin:1px auto 3px}.weapon .number{font-size:7px;left:6px;top:5px}.weapon .name{font-size:8px}.weapon .range{font-size:6px;margin-top:3px}.weapon.active{transform:translateY(-2px)}.footline{font-size:6px;margin-top:9px;letter-spacing:0}.footline a{font-size:6px}#notice{bottom:217px;font-size:8px;max-width:95%;white-space:normal;text-align:center}#impact b{font-size:45px}#labels-layer{display:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.intro{width:235px;top:120px}h1{font-size:43px}.intro>p{margin-bottom:18px}.weapon-detail{padding:16px 18px}.viewtools select{width:155px;padding:9px 7px;border:1px solid #bdcbb7;border-radius:7px;font:10px 'DM Sans';background:#f6f8f0ed;color:#324b37}#mapdialog{max-width:1100px;width:94vw;padding:28px}#mapdialog img{display:block;width:100%;height:auto;border-radius:7px}#mapdialog p{font-size:10px}#mapdialog a{display:inline;font-size:10px}#mapdialog h2{font-size:30px;margin:12px 0}#closemap{position:absolute;top:10px;right:15px;font-size:25px;border:0;background:transparent;padding:2px}#mapref{font-size:10px}#mapdialog::backdrop{background:#13291ccc}.footline span:nth-child(2){font-size:6px}
@media(max-width:760px){.intro{width:160px;left:16px;top:86px}h1{font-size:32px}.weapon-detail{padding:11px}.viewtools select{width:110px;max-width:110px;font-size:9px;padding:6px;align-self:flex-end}.viewtools{align-items:flex-end}#mapref{padding:9px 7px;font-size:8px}.brand div{font-size:10px}.top-actions{gap:4px}.top-actions #info{display:none}.readout{width:105px}.brand{gap:7px}}

.laser-echo{position:fixed;pointer-events:none;z-index:8;color:#b9faff;font:italic 900 40px sans-serif;text-shadow:0 0 9px #00bfff,3px 2px #187fba;opacity:0;animation:laserEcho 1s ease-out forwards}@keyframes laserEcho{0%{opacity:1;transform:translate(0,0) skew(-9deg)}100%{opacity:0;transform:translate(65px,-85px) skew(-9deg)}}@media(prefers-reduced-motion:reduce){.laser-echo{animation:laserFade .6s linear forwards}}@keyframes laserFade{from{opacity:1}to{opacity:0}}

/* Compact controls: one horizontally scrolling weapon strip on every screen. */
.brand{font-size:18px;font-weight:800;letter-spacing:.4px}.intro{display:none!important}.live,.dock-heading,.spark,.readout>.eyebrow,.readout .stats,.readout>p,.footline>span{display:none}.readout{top:85px;right:25px;width:88px}.integrity strong{font-size:36px}.integrity>span{font-size:16px}.viewtools{top:170px;right:24px;gap:4px}.viewtools button{width:128px;padding:7px 9px}.viewtools select{width:180px;align-self:flex-end}footer{padding:0 20px 10px}#weapons{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:7px;padding:7px 2px 9px;scrollbar-width:thin;overscroll-behavior-x:contain;touch-action:pan-x;scroll-snap-type:x proximity}#weapons .weapon{flex:0 0 126px;min-width:126px;height:70px;padding:10px 10px 7px;scroll-snap-align:start}#weapons .weapon svg{width:26px;height:24px;margin:0 0 5px auto}#weapons .weapon .name{font-size:10px}#weapons .weapon .range{display:none}#weapons .weapon.active,#weapons .weapon:hover{transform:none}.footline{justify-content:flex-end;margin-top:3px}#notice{bottom:115px}.laser-echo{color:#ffbbb1;text-shadow:0 0 12px #ff2100,3px 2px #b5190b}#world{touch-action:none}
@media(max-width:760px){header{left:12px;right:12px;top:12px}.brand{font-size:15px}.top-actions{gap:4px}.top-actions button{padding:7px;font-size:9px}.readout{top:65px;right:14px;width:65px}.integrity strong{font-size:30px}.viewtools{top:126px;right:12px}.viewtools button{width:32px;height:30px;padding:5px}.viewtools select{width:145px;max-width:145px}footer{padding:0 8px 7px}#weapons .weapon{flex-basis:102px;min-width:102px;height:62px;padding:6px 8px}#weapons .weapon svg{height:22px;margin-bottom:5px}#weapons .weapon .name{font-size:9px}#notice{bottom:100px}.footline{font-size:6px}}

#touchmode{display:none}#quality{padding:7px;border:1px solid #bdcbb7;border-radius:6px;background:#f7f8f1}#qualitystate{font-size:10px;margin-left:8px;color:#61715b}@media(pointer:coarse){#touchmode{display:block;position:fixed;left:12px;bottom:108px;z-index:4;min-height:44px;padding:10px 16px}#touchmode[aria-pressed=true]{background:#e84c2e;color:white}#sound{display:block!important;min-height:40px}#weapons{scrollbar-width:auto}.weapon{touch-action:pan-x}.viewtools button{min-height:40px;min-width:40px}}
