:root{--bg:#05070a;--panel:#0a0e14db;--accent:#63f0d0;--accent-dim:#2f7f70;--danger:#ff6a4a;--text:#dfe8f2;--muted:#a7b6c8;--ui-scale:1;--font:"Segoe UI", "Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);margin:0;padding:0;overflow:hidden}#app{width:100%;height:100%;position:relative}#viewport{width:100%;height:100%;display:block}#ui-root{pointer-events:none;zoom:var(--ui-scale,1);position:absolute;inset:0}.hidden{display:none!important}#boot{z-index:20;background:radial-gradient(circle at 50% 40%,#142a30d9,#05070afa 70%);place-items:center;transition:opacity .24s;display:grid;position:fixed;inset:0}#boot.hidden{display:none!important}.boot-panel{border:1px solid var(--accent-dim);background:var(--panel);text-align:center;max-width:min(560px,88vw);padding:2rem 2.4rem}.boot-panel h1{color:var(--accent);letter-spacing:.14em;margin:.2rem 0 .8rem;font-size:30px}.boot-kicker{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:12px}.boot-status{color:var(--text);margin:0;font-size:14px}.boot-error h1{color:var(--danger);font-size:22px}.boot-error p{color:var(--text);line-height:1.5}.boot-error button{margin-top:.6rem}.hud{pointer-events:none;position:absolute;inset:0}.crosshair{width:22px;height:22px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair-line{background:var(--accent);width:2px;height:14px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 6px #63f0d0cc}.crosshair-dot{background:var(--accent);border-radius:50%;width:3px;height:3px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair{display:none}.reticle{pointer-events:none;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.reticle.hidden{display:none}.reticle:before,.reticle:after{content:"";background:var(--accent);position:absolute;top:50%;left:50%;box-shadow:0 0 6px #63f0d0cc}.reticle:before{width:20px;height:2px;margin:-1px 0 0 -10px}.reticle:after{width:2px;height:20px;margin:-10px 0 0 -1px}.damage-indicator{opacity:0;transform-origin:0 0;pointer-events:none;width:0;height:0;transition:opacity .12s ease-out;position:absolute;top:50%;left:50%}.damage-indicator.visible{opacity:1}.damage-indicator:before{content:"";filter:drop-shadow(0 0 12px #ff5a4a);border-bottom:24px solid #ff5a4a;border-left:14px solid #0000;border-right:14px solid #0000;width:0;height:0;position:absolute;top:-150px;left:-14px}.damage-vignette{opacity:0;pointer-events:none;background:radial-gradient(#0000 30%,#ff281429 68%,#ff140a94 100%);position:absolute;inset:0}.damage-vignette.pulse{animation:.62s ease-out damage-pulse}@keyframes damage-pulse{0%{opacity:0;transform:scale(1.06)}12%{opacity:calc(.7 * var(--damage-severity,1));transform:scale(1)}to{opacity:0;transform:scale(1)}}.bar.hit{animation:.24s ease-out health-hit}.bar.hit .bar-fill{background:#ff6a4a}@keyframes health-hit{0%{border-color:#ff6a4a;box-shadow:0 0 #ff5a4ab3}45%{box-shadow:0 0 18px 4px #ff5a4a8c}to{box-shadow:0 0 #ff5a4a00}}.hud.low-health .bar{border-color:#ff5a4acc;animation:1.25s ease-in-out infinite low-health-bar}.hud.low-health .bar-fill{background:linear-gradient(90deg,#7a231a,#ff6a4a)}@keyframes low-health-bar{0%,to{box-shadow:0 0 #ff5a4a26}50%{box-shadow:0 0 14px 2px #ff5a4a73}}.bullet-time{opacity:0;pointer-events:none;background:radial-gradient(#63f0d014 0%,#0000 42%,#0a283052 100%);flex-direction:column;justify-content:center;align-items:center;gap:6px;transition:opacity .12s ease-out;display:flex;position:absolute;inset:0}.bullet-time.visible{opacity:1}.bullet-time:before{content:"";background:radial-gradient(#0000 44%,#63f0d02e 78%,#63f0d06b 100%);animation:.9s ease-in-out infinite alternate bullet-time-vignette;position:absolute;inset:0}.bullet-time-ring{aspect-ratio:1;border:1px solid #63f0d099;border-radius:50%;width:min(46vw,460px);animation:1.05s ease-out infinite bullet-time-ring;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(1)}.bullet-time-ring.delayed{animation-delay:.38s}@keyframes bullet-time-ring{0%{opacity:.85;transform:translate(-50%,-50%)scale(.45)}to{opacity:0;transform:translate(-50%,-50%)scale(1.15)}}@keyframes bullet-time-vignette{0%{opacity:.55}to{opacity:1}}.bullet-time-label{letter-spacing:.28em;color:#bafff0;text-shadow:0 0 18px #63f0d0d9,0 0 46px #63f0d073;font-size:clamp(26px,4vw,48px);font-weight:300;position:relative}.bullet-time-hint{letter-spacing:.32em;color:var(--accent);opacity:.85;font-size:11px;position:relative}.bullet-time-bar{background:#63f0d02e;border-radius:2px;width:min(360px,48vw);height:4px;position:absolute;bottom:16%;left:50%;overflow:hidden;transform:translate(-50%)}.bullet-time-fill{background:linear-gradient(90deg,#63f0d0,#d7fff5);width:100%;height:100%;transition:width 80ms linear;box-shadow:0 0 12px #63f0d0cc}.bullet-time-remaining{letter-spacing:.18em;color:var(--accent);font-size:10px;position:absolute;bottom:calc(16% + 10px);left:50%;transform:translate(-50%)}.hud.bullet-time-active .reticle{filter:drop-shadow(0 0 8px #63f0d0f2)}.weapon-card{pointer-events:none;background:#080e13b8;border:1px solid #63f0d059;border-radius:3px;grid-template-columns:1fr auto;gap:2px 8px;width:154px;padding:8px 12px 7px;display:grid;position:absolute;bottom:86px;right:28px}.weapon-label{letter-spacing:.2em;color:var(--muted);grid-column:1/-1;font-size:9px}.weapon-name{letter-spacing:.08em;color:var(--accent);text-shadow:0 0 14px #63f0d073;font-size:28px;line-height:1}.weapon-hint{letter-spacing:.08em;text-align:right;color:var(--muted);align-self:end;font-size:8px;line-height:1.4}.weapon-card.net{border-color:#9ff6ff99}.weapon-card.net .weapon-name{color:#9ff6ff;text-shadow:0 0 14px #9ff6ff8c}.weapon-card.cooling .weapon-name{opacity:.45}.weapon-cooldown{background:#63f0d024;grid-column:1/-1;height:3px;margin-top:3px;overflow:hidden}.weapon-cooldown-fill{background:linear-gradient(90deg,#2f7f70,#63f0d0);width:100%;height:100%;transition:width 80ms linear}.pointer-prompt{color:var(--accent);letter-spacing:.16em;opacity:0;pointer-events:none;background:#040a0edb;border:1px solid #63f0d0b3;border-radius:3px;padding:10px 18px;font-size:12px;transition:opacity .14s ease-out;position:absolute;top:62%;left:50%;transform:translate(-50%)}.pointer-prompt.visible{opacity:1}.sneak-indicator{color:#9ff6ff;letter-spacing:.2em;opacity:0;background:#080e13a8;border:1px solid #9ff6ff66;border-radius:2px;padding:3px 8px;font-size:9px;transition:opacity .12s ease-out;position:absolute;bottom:74px;left:28px}.sneak-indicator.visible{opacity:1}.detected-indicator{color:#ff8a70;letter-spacing:.22em;opacity:0;background:#180808bd;border:1px solid #ff6a4aa6;border-radius:2px;padding:4px 10px;font-size:10px;transition:opacity .14s ease-out;position:absolute;top:28px;right:28px}.detected-indicator.visible{opacity:1;animation:.9s ease-in-out infinite detected-pulse}@keyframes detected-pulse{0%,to{box-shadow:0 0 #ff6a4a1a}50%{box-shadow:0 0 12px 2px #ff6a4a6b}}.hud.reduced-motion .bullet-time-ring,.hud.reduced-motion .bullet-time:before,.hud.reduced-motion .detected-indicator.visible,.hud.reduced-motion .bar{animation:none}.hud.reduced-motion .damage-vignette.pulse{opacity:calc(.4 * var(--damage-severity,1));animation:none}.hud.reduced-motion .bullet-time-fill,.hud.reduced-motion .weapon-cooldown-fill{transition:none}.bar{border:1px solid var(--accent-dim);background:#00000073;border-radius:2px;align-items:center;width:240px;height:12px;display:flex;position:absolute;bottom:28px;left:28px}.bar-label{letter-spacing:.18em;color:var(--muted);font-size:10px;position:absolute;top:-18px;left:8px}.bar-fill{background:linear-gradient(90deg, var(--accent-dim), var(--accent));width:100%;height:100%;transition:width .12s linear}.bar-value{color:var(--muted);font-size:11px;position:absolute;top:-18px;right:8px}.stats{gap:22px;display:flex;position:absolute;bottom:28px;right:28px}.stat{flex-direction:column;align-items:flex-end;display:flex}.stat-label{letter-spacing:.18em;color:var(--muted);font-size:10px}.stat-value{font-variant-numeric:tabular-nums;color:var(--text);font-size:20px}.stat-value.active{color:var(--accent)}.objective{color:var(--text);letter-spacing:.06em;white-space:nowrap;pointer-events:none;background:#0a0e149e;border:1px solid #9ff6ff2e;border-radius:4px;padding:7px 16px;font-size:13px;position:absolute;bottom:28px;left:50%;transform:translate(-50%)}.objective.hidden{display:none}.radar{pointer-events:none;background:radial-gradient(circle,#0a0e14b8 55%,#0a0e14e6 100%);border:1px solid #9ff6ff38;border-radius:50%;width:68px;height:68px;position:absolute;bottom:28px;left:280px}.radar.hidden{display:none}.radar:before{content:"";background:var(--accent);opacity:.85;width:2px;height:7px;margin-left:-1px;position:absolute;top:3px;left:50%}.radar-blip{background:var(--accent);transform-origin:50%;border-radius:50%;width:7px;height:7px;position:absolute;top:50%;left:50%;box-shadow:0 0 6px #63f0d0cc}.hull-warning{color:#ff8a70;letter-spacing:.26em;opacity:0;background:#180808c7;border:1px solid #ff6a4ab3;border-radius:2px;padding:5px 14px;font-size:11px;transition:opacity .12s ease-out;position:absolute;top:24%;left:50%;transform:translate(-50%)}.hull-warning.visible{opacity:1}.plane-pin{color:var(--accent);letter-spacing:.2em;white-space:nowrap;opacity:0;background:#061214cc;border:1px solid #63f0d08c;border-radius:2px;padding:5px 14px;font-size:10px;transition:opacity .14s ease-out;position:absolute;top:32%;left:50%;transform:translate(-50%)}.plane-pin.visible{opacity:1}.notice{border:1px solid var(--accent-dim);background:var(--panel);letter-spacing:.04em;opacity:0;border-radius:3px;padding:8px 16px;font-size:13px;transition:opacity .2s;position:absolute;top:16%;left:50%;transform:translate(-50%)}.notice.visible{opacity:1}.menu{pointer-events:auto;background:radial-gradient(circle at 50% 40%,#0c141cb8,#030508f2);flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:32px;display:flex;position:absolute;inset:0}.menu-title{letter-spacing:.22em;color:var(--accent);text-shadow:0 0 24px #63f0d059;margin:0;font-size:44px;font-weight:300}.menu-subtitle{text-align:center;max-width:620px;color:var(--muted);margin:0 0 20px;font-size:14px;line-height:1.6}.menu-body{width:min(560px,90vw);max-height:46vh;overflow-y:auto}.menu-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px;display:flex}.button{pointer-events:auto;border:1px solid var(--accent-dim);color:var(--text);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:#101a22cc;border-radius:3px;padding:10px 20px;font-family:inherit;font-size:13px;transition:background .14s,border-color .14s,color .14s}.button:hover{border-color:var(--accent);color:var(--accent);background:#63f0d01f}.menu-score{text-align:center;letter-spacing:.16em;color:var(--accent);margin:6px 0;font-size:26px}.menu-brief{border-left:2px solid var(--accent-dim);margin-top:4px;padding:2px 0 2px 14px}.brief-line{color:var(--muted);margin:0 0 10px;font-size:13px;line-height:1.6}.brief-heading{letter-spacing:.22em;color:var(--accent);margin:14px 0 6px;font-size:11px;font-weight:500}.menu-brief .control-row{flex-direction:column;gap:1px}.menu-brief .control-name{color:var(--text);font-size:12px}.menu-brief .control-key{color:var(--muted);font-family:inherit;font-size:12px;line-height:1.5}.menu.camera-test{background:linear-gradient(270deg,#030508f2 0%,#03050880 45%,#0000 100%);align-items:flex-end;padding-right:3vw}.menu.camera-test .menu-title{font-size:28px}.menu.camera-test .menu-subtitle{text-align:right;max-width:min(470px,46vw);margin-bottom:10px}.menu.camera-test .menu-body{width:min(470px,46vw);max-height:none;overflow:visible}.menu.camera-test .menu-actions{justify-content:flex-end}.settings.camera-test-panel{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:center;gap:8px 18px;padding:14px 18px;display:grid}.camera-test-wide{grid-column:1/-1}.camera-test-panel .setting-button{align-self:center;margin:0}.camera-test-status{letter-spacing:.06em;color:var(--muted);margin:0;font-size:12px}.camera-test-status.active{color:#63f0d0}.camera-test-viewer{color:var(--accent);font-variant-numeric:tabular-nums;margin:0;font-family:SFMono-Regular,Consolas,monospace;font-size:12px}.settings{background:var(--panel);border:1px solid #2f7f7080;border-radius:4px;flex-direction:column;gap:12px;padding:18px 22px;display:flex}.setting{flex-direction:column;gap:4px;display:flex}.setting-inline{flex-direction:row;justify-content:space-between;align-items:center}.setting-button{letter-spacing:.08em;align-self:flex-start;margin:-2px 0 6px;padding:5px 12px;font-size:12px}.setting-head-tracking{gap:6px}.setting-hint{color:var(--muted);opacity:.85;margin:0;font-size:11px;line-height:1.45}.setting-status{letter-spacing:.06em;color:var(--muted);margin:0;font-size:11px}.setting-status.active{color:#63f0d0}.setting-label{letter-spacing:.1em;color:var(--muted);justify-content:space-between;font-size:12px;display:flex}.setting-value{color:var(--accent);font-variant-numeric:tabular-nums}.setting-input{width:100%;accent-color:var(--accent)}.setting-toggle{width:18px;height:18px;accent-color:var(--accent)}.controls{background:var(--panel);border:1px solid #2f7f7080;border-radius:4px;flex-direction:column;gap:4px;padding:16px 20px;display:flex}.control-row{color:var(--muted);justify-content:space-between;font-size:13px;display:flex}.level-difficulty{color:var(--accent);letter-spacing:.16em;border:1px solid #2f7f7099;border-radius:2px;margin-left:10px;padding:1px 6px;font-size:10px}.control-key{color:var(--text);font-family:SFMono-Regular,Consolas,monospace;font-size:12px}.debug{color:#9fe9d8;white-space:pre;pointer-events:none;background:#04080ccc;border:1px solid #2f7f7073;border-radius:3px;margin:0;padding:10px 14px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;line-height:1.55;position:absolute;top:16px;left:16px}button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.touch-controls{pointer-events:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:absolute;inset:0}.touch-stick{left:calc(20px + env(safe-area-inset-left,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));pointer-events:auto;touch-action:none;background:radial-gradient(circle,#08101680,#0810162e);border:1px solid #63f0d04d;border-radius:50%;width:132px;height:132px;position:absolute}.touch-stick-ring{border:1px dashed #63f0d033;border-radius:50%;width:62%;height:62%;margin:-31% 0 0 -31%;position:absolute;top:50%;left:50%}.touch-stick-knob{pointer-events:none;background:#0e2026d1;border:1px solid #63f0d0bf;border-radius:50%;width:54px;height:54px;margin:-27px 0 0 -27px;position:absolute;top:50%;left:50%;box-shadow:0 0 14px #63f0d040}.touch-actions{right:calc(20px + env(safe-area-inset-right,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));grid-template-rows:repeat(2,56px);grid-template-columns:repeat(4,56px);grid-template-areas:"sneak crouch grab grapple""net jump melee fire";gap:8px;display:grid;position:absolute}.touch-button{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;color:var(--text);letter-spacing:.08em;background:#0810169e;border:1px solid #63f0d06b;border-radius:10px;place-items:center;padding:0;font-family:inherit;font-size:10px;display:grid}.touch-button.pressed{border-color:var(--accent);color:#04120f;background:#63f0d04d}.touch-fire{border-color:#ff8c6ebf;grid-area:fire;font-size:12px}.touch-jump{grid-area:jump}.touch-melee{grid-area:melee}.touch-grapple{grid-area:grapple}.touch-net{grid-area:net}.touch-sneak{grid-area:sneak;font-size:9px}.touch-crouch{grid-area:crouch;font-size:9px}.touch-grab{grid-area:grab}.touch-view,.touch-pause,.touch-settle{left:calc(14px + env(safe-area-inset-left,0px));width:74px;height:36px;font-size:9px;position:absolute}.touch-view{top:calc(56px + env(safe-area-inset-top,0px))}.touch-pause{top:calc(98px + env(safe-area-inset-top,0px))}.touch-settle{top:calc(140px + env(safe-area-inset-top,0px))}@media (orientation:portrait){.touch-actions{grid-template-rows:repeat(4,58px);grid-template-columns:repeat(2,58px);grid-template-areas:"sneak crouch""grab grapple""net jump""melee fire"}}body.touch-mode .bar{top:calc(14px + env(safe-area-inset-top,0px));bottom:auto;left:calc(14px + env(safe-area-inset-left,0px));width:170px}body.touch-mode .bar-label,body.touch-mode .bar-value{top:auto;bottom:-16px}body.touch-mode .stats{top:calc(14px + env(safe-area-inset-top,0px));bottom:auto;right:calc(14px + env(safe-area-inset-right,0px));gap:14px}body.touch-mode .stats .stat:nth-child(n+3){display:none}body.touch-mode .weapon-card{top:calc(58px + env(safe-area-inset-top,0px));bottom:auto;right:calc(14px + env(safe-area-inset-right,0px));width:128px;padding:6px 10px 5px}body.touch-mode .weapon-name{font-size:22px}body.touch-mode .radar{left:50%;top:calc(14px + env(safe-area-inset-top,0px));width:54px;height:54px;bottom:auto;transform:translate(-50%)}body.touch-mode .sneak-indicator{left:calc(14px + env(safe-area-inset-left,0px));bottom:calc(160px + env(safe-area-inset-bottom,0px))}body.touch-mode .notice{top:calc(84px + env(safe-area-inset-top,0px));text-align:center;max-width:70vw}body.touch-mode .objective{bottom:calc(154px + env(safe-area-inset-bottom,0px));white-space:normal;text-align:center;max-width:52vw;font-size:12px}@media (orientation:portrait){body.touch-mode .objective{bottom:calc(284px + env(safe-area-inset-bottom,0px));max-width:84vw}}body.touch-mode .menu-body{touch-action:pan-y}.bar{left:calc(28px + env(safe-area-inset-left,0px));bottom:calc(28px + env(safe-area-inset-bottom,0px))}.stats{right:calc(28px + env(safe-area-inset-right,0px));bottom:calc(28px + env(safe-area-inset-bottom,0px))}.detected-indicator{right:calc(28px + env(safe-area-inset-right,0px));top:calc(28px + env(safe-area-inset-top,0px))}.radar{left:calc(280px + env(safe-area-inset-left,0px));bottom:calc(28px + env(safe-area-inset-bottom,0px))}.sneak-indicator{left:calc(28px + env(safe-area-inset-left,0px));bottom:calc(74px + env(safe-area-inset-bottom,0px))}.objective{bottom:calc(28px + env(safe-area-inset-bottom,0px))}.notice{top:calc(16% + env(safe-area-inset-top,0px))}.hull-warning{top:calc(24% + env(safe-area-inset-top,0px))}#viewport{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}html,body{overscroll-behavior:none;-webkit-tap-highlight-color:transparent}.setting-select{min-width:130px;color:var(--text);background:#0a1016e6;border:1px solid #2f7f7099;border-radius:3px;padding:4px 6px;font-family:inherit;font-size:12px}.map-editor{z-index:5;pointer-events:auto;background:radial-gradient(circle at 50% 40%,#0c141ce6,#030508fa);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:18px;display:flex;position:absolute;inset:0;overflow-y:auto}.map-title{letter-spacing:.2em;color:var(--accent);margin:0;font-size:20px;font-weight:300}.map-header{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:14px;display:flex}.map-field{letter-spacing:.18em;color:var(--muted);flex-direction:column;gap:4px;font-size:10px;display:flex}.map-field input,.map-field select,.map-draft-select{color:var(--text);background:#0a1016e6;border:1px solid #2f7f7099;border-radius:3px;padding:4px 6px;font-family:inherit;font-size:12px}.map-board{align-items:flex-start;gap:14px;display:flex}.map-canvas{cursor:crosshair;touch-action:none;background:#0d1117;border:1px solid #2f7f7099;border-radius:3px;display:block}.map-palette{flex-direction:column;gap:6px;width:156px;display:flex}.map-palette-button,.map-tool,.map-action{color:var(--text);letter-spacing:.08em;cursor:pointer;background:#101a22d9;border:1px solid #2f7f7099;border-radius:3px;padding:6px 10px;font-family:inherit;font-size:11px}.map-palette-button:hover,.map-tool:hover,.map-action:hover,.map-primary{border-color:var(--accent);color:var(--accent)}.map-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.map-import{display:none}.map-problems{color:#ff8a70;letter-spacing:.04em;background:#180808cc;border:1px solid #ff6a4a99;border-radius:3px;max-width:min(560px,92vw);padding:6px 12px;font-size:11px}.build-panel{left:50%;bottom:calc(28px + env(safe-area-inset-bottom,0px));text-align:center;pointer-events:none;background:#061014cc;border:1px solid #63f0d080;border-radius:4px;flex-direction:column;align-items:center;gap:4px;padding:8px 16px;display:none;position:absolute;transform:translate(-50%)}.hud.building .build-panel{display:flex}.hud.building .weapon-card,.hud.building .bar,.hud.building .objective,.hud.building .sneak-indicator,.hud.building .detected-indicator{display:none}.build-title{letter-spacing:.24em;color:var(--accent);font-size:10px}.build-scanner{letter-spacing:.1em;color:var(--text);font-variant-numeric:tabular-nums;font-size:14px}.build-keys{letter-spacing:.06em;color:var(--muted);font-size:10px}.touch-build{right:calc(20px + env(safe-area-inset-right,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));grid-template-rows:repeat(2,52px);grid-template-columns:repeat(3,74px);gap:8px;display:none;position:absolute}.touch-controls.build-active .touch-actions{display:none}.touch-controls.build-active .touch-build{display:grid}.touch-build-place{border-color:#ff8c6ebf;font-size:11px}.touch-build-piece,.touch-build-size,.touch-build-rotate,.touch-build-magnet,.touch-build-delete{font-size:9px}.map-warning{color:#ffb347}
