/* Shared map primitives for editor, live view, player and Action Cam. */
.sg-city-object{position:absolute;transform-origin:center;border:0}
.sg-city-road{background:#343b3d;border-top:18px solid #c8c8bd;border-bottom:18px solid #c8c8bd;border-left:4px solid #8d928c;border-right:4px solid #8d928c;box-shadow:0 3px 0 #1d2325;overflow:hidden}
.sg-city-road:after{content:"";position:absolute;left:0;right:0;top:50%;height:3px;transform:translateY(-50%);background:repeating-linear-gradient(90deg,#f3d66c 0 28px,transparent 28px 52px)}
.sg-city-road:before{content:"";position:absolute;left:0;right:0;top:18%;bottom:18%;border-top:2px solid #f3f1dc;border-bottom:2px solid #f3f1dc;box-shadow:0 -14px 0 rgba(255,255,255,.12),0 14px 0 rgba(255,255,255,.12)}
.sg-city-road.country{border-top:4px solid #a9aa9e;border-bottom:4px solid #a9aa9e}
.sg-city-road.country:before{top:25%;bottom:25%;border-top:1px dashed rgba(255,255,255,.33);border-bottom:1px dashed rgba(255,255,255,.33);box-shadow:none}
.sg-city-building,.sg-city-service,.sg-city-bus_depot,.sg-city-entry{background:#d9d7c9;border:5px solid #f0eee2;box-shadow:0 9px 0 rgba(34,48,40,.35),0 13px 18px rgba(0,0,0,.22);overflow:hidden}
.sg-city-building img,.sg-city-service img,.sg-city-bus_depot img{width:100%;height:100%;object-fit:contain}
.sg-city-object span{position:absolute;left:50%;bottom:7px;transform:translateX(-50%);max-width:92%;padding:4px 7px;background:rgba(12,18,20,.9);border:1px solid #739084;color:#fff;font:700 18px/1.1 Segoe UI,Arial,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sg-city-park{background:#4f8b58;border:4px solid #b9c9a9}
.sg-city-park:before{content:"♣  ♧  ♣";position:absolute;inset:0;display:grid;place-items:center;color:#d9edc7;font-size:40px}
.sg-city-bus_stop{background:#e4efe9;border:4px solid #243d5a}
.sg-city-bus_stop:before{content:"H";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:52px;height:52px;display:grid;place-items:center;border-radius:50%;background:#2776bd;color:#fff;font:800 30px/1 Arial}
.sg-city-decoration:not(.sg-city-auto-decor){background:#446c4a;border-radius:50%}
.sg-city-decoration.sg-city-auto-decor{background-color:transparent;border-radius:0}
.sg-city-entry{clip-path:polygon(0 28%,70% 28%,70% 0,100% 50%,70% 100%,70% 72%,0 72%);background:#d7c76c;border:0}
.sg-city-building,.sg-city-service,.sg-city-bus_depot{background:transparent!important;border:0;box-shadow:none;overflow:visible}
.sg-city-building img,.sg-city-service img,.sg-city-bus_depot img{position:relative;z-index:2;filter:drop-shadow(0 12px 8px rgba(19,35,24,.38));pointer-events:none}
.sg-city-building span,.sg-city-service span,.sg-city-bus_depot span{z-index:3;bottom:-4px;font-size:15px}
.sg-city-road-network{position:absolute;inset:0;z-index:1;overflow:visible;pointer-events:none}
.sg-city-road-line{stroke-linecap:round;vector-effect:none}
.sg-city-road-line.road-verge.road-delivery{stroke:#43633b;stroke-width:226}
.sg-city-road-line.road-curb.road-delivery{stroke:#d5d2c6;stroke-width:196}
.sg-city-road-line.road-edge.road-delivery{stroke:#252b2e;stroke-width:180}
.sg-city-road-line.road-surface.road-delivery{stroke:#3e4549;stroke-width:166}
.sg-city-road-line.road-center.road-delivery{stroke:#f6df7b;stroke-width:6;stroke-dasharray:42 28}
.sg-city-road-line.road-verge.road-main{stroke:#41653b;stroke-width:194}
.sg-city-road-line.road-curb.road-main{stroke:#d2d0c5;stroke-width:170}
.sg-city-road-line.road-edge.road-main{stroke:#252b2e;stroke-width:158}
.sg-city-road-line.road-surface.road-main{stroke:#41484d;stroke-width:146}
.sg-city-road-line.road-center.road-main{stroke:#f4df88;stroke-width:5;stroke-dasharray:38 30;opacity:.92}
.sg-city-road-line.road-verge.road-local{stroke:#476c42;stroke-width:142}
.sg-city-road-line.road-curb.road-local{stroke:#cfcdc2;stroke-width:122}
.sg-city-road-line.road-edge.road-local{stroke:#292f32;stroke-width:112}
.sg-city-road-line.road-surface.road-local{stroke:#4a5054;stroke-width:100}
.sg-city-road-line.road-center.road-local{stroke:#f0dfa0;stroke-width:3;stroke-dasharray:27 27;opacity:.76}
.sg-city-road-line.lanes-4.road-verge.road-local{stroke-width:230}
.sg-city-road-line.lanes-4.road-curb.road-local{stroke-width:210}
.sg-city-road-line.lanes-4.road-edge.road-local{stroke-width:198}
.sg-city-road-line.lanes-4.road-surface.road-local{stroke-width:188}
.sg-city-road-line.lanes-4.road-verge.road-main{stroke-width:250}
.sg-city-road-line.lanes-4.road-curb.road-main{stroke-width:226}
.sg-city-road-line.lanes-4.road-edge.road-main{stroke-width:214}
.sg-city-road-line.lanes-4.road-surface.road-main{stroke-width:202}
.sg-city-road-line.lanes-4.road-verge.road-delivery{stroke-width:270}
.sg-city-road-line.lanes-4.road-curb.road-delivery{stroke-width:240}
.sg-city-road-line.lanes-4.road-edge.road-delivery{stroke-width:224}
.sg-city-road-line.lanes-4.road-surface.road-delivery{stroke-width:210}
.sg-city-road-lane-divider{fill:none;stroke:#f3f1dc;stroke-width:3;stroke-dasharray:24 22;stroke-linecap:butt;opacity:.72;pointer-events:none}
.sg-city-sidewalk-line{fill:none;stroke-linecap:butt;pointer-events:none}
.sg-city-sidewalk-line.sidewalk-edge{stroke:#59615e;stroke-width:66}
.sg-city-sidewalk-line.sidewalk-surface{stroke:#d0c8b9;stroke-width:58}
.sg-city-sidewalk-line.sidewalk-tiles{stroke:#aeb5b0;stroke-width:50;stroke-dasharray:30 3;opacity:1}
.sg-city-zebra-crossing{fill:none;stroke:#f8f8ed;stroke-width:48;stroke-dasharray:16 12;stroke-linecap:butt;opacity:.95;pointer-events:none}
.sg-city-rail-line{fill:none;stroke-linecap:butt;pointer-events:none}
.sg-city-rail-line.rail-bed{stroke:#514b43;stroke-width:96}
.sg-city-rail-line.rail-ballast{stroke:#8d8b84;stroke-width:82}
.sg-city-rail-line.rail-sleepers{stroke:#4b382b;stroke-width:64;stroke-dasharray:7 22}
.sg-city-rail-line.rail-steel{stroke:#d9dcda;stroke-width:7}
.sg-city-road.road-junction{width:0!important;height:0!important;background:none!important;background-color:transparent!important;background-image:none!important;border:0!important;outline:0!important;box-shadow:none!important;clip-path:none!important;filter:none!important;overflow:visible}
.sg-city-road.road-junction:before,.sg-city-road.road-junction:after{display:none!important;content:none!important}
.sg-city-road .city-junction-arm,.sg-city-road .city-junction-center,.sg-city-road .city-junction-lane{display:none!important}
.sg-city-road .city-traffic-signals{position:absolute;inset:0;pointer-events:none;z-index:8}
.sg-city-road .city-traffic-signal{position:absolute;width:30px;height:64px;border:4px solid #111;border-radius:6px;background:radial-gradient(circle at 50% 17%,#481010 0 7px,#190707 8px 10px,transparent 11px),radial-gradient(circle at 50% 50%,#4a3c08 0 7px,#171204 8px 10px,transparent 11px),radial-gradient(circle at 50% 83%,#0a3b1d 0 7px,#04140a 8px 10px,transparent 11px),#222;box-shadow:0 5px 0 #111,0 7px 9px rgba(0,0,0,.35);transform:translate(-50%,-50%)}
.sg-city-road .city-traffic-signal.is-red{background:radial-gradient(circle at 50% 17%,#ff3535 0 7px,#6d1010 8px 10px,transparent 11px),radial-gradient(circle at 50% 50%,#4a3c08 0 7px,#171204 8px 10px,transparent 11px),radial-gradient(circle at 50% 83%,#0a3b1d 0 7px,#04140a 8px 10px,transparent 11px),#222}
.sg-city-road .city-traffic-signal.is-yellow{background:radial-gradient(circle at 50% 17%,#481010 0 7px,#190707 8px 10px,transparent 11px),radial-gradient(circle at 50% 50%,#ffd83b 0 7px,#705b09 8px 10px,transparent 11px),radial-gradient(circle at 50% 83%,#0a3b1d 0 7px,#04140a 8px 10px,transparent 11px),#222}
.sg-city-road .city-traffic-signal.is-green{background:radial-gradient(circle at 50% 17%,#481010 0 7px,#190707 8px 10px,transparent 11px),radial-gradient(circle at 50% 50%,#4a3c08 0 7px,#171204 8px 10px,transparent 11px),radial-gradient(circle at 50% 83%,#2af06c 0 7px,#0a602b 8px 10px,transparent 11px),#222}
.sg-city-road .city-traffic-signal.signal-1{left:25%;top:19%}
.sg-city-road .city-traffic-signal.signal-2{left:75%;top:81%}
.sg-city-road .city-traffic-signal.signal-3{left:79%;top:27%}
.sg-city-road .city-traffic-signal.signal-4{left:21%;top:73%}
.sg-city-road.road-junction .city-traffic-signal{transform:translate(-50%,-50%) rotate(var(--city-signal-counter-rotation,0deg))}
.sg-city-road .city-junction-signs{position:absolute;inset:0;pointer-events:none;z-index:9}
.sg-city-road .city-junction-sign{position:absolute;width:40px;height:40px;transform:translate(-50%,-50%) rotate(var(--city-sign-counter-rotation,0deg));display:grid;place-items:center;filter:drop-shadow(0 4px 3px rgba(0,0,0,.55));font:900 8px/1 Arial;color:#fff}
.sg-city-road .city-junction-sign.sign-stop{background:#cf2f2f;border:4px solid #fff;clip-path:polygon(29% 0,71% 0,100% 29%,100% 71%,71% 100%,29% 100%,0 71%,0 29%)}
.sg-city-road .city-junction-sign.sign-yield{width:44px;height:40px;background:#d63131;clip-path:polygon(50% 100%,0 0,100% 0)}
.sg-city-road .city-junction-sign.sign-yield:before{content:"";position:absolute;left:7px;right:7px;top:6px;bottom:9px;background:#fff;clip-path:polygon(50% 100%,0 0,100% 0)}
.sg-city-road .city-junction-sign.sign-priority{width:35px;height:35px;background:#fff;transform:translate(-50%,-50%) rotate(calc(var(--city-sign-counter-rotation,0deg) + 45deg));border:3px solid #222}
.sg-city-road .city-junction-sign.sign-priority:before{content:"";position:absolute;inset:5px;background:#f2cf35}
.sg-city-pedestrian-signal{pointer-events:none}
.sg-city-pedestrian-signal rect{fill:#171b1c;stroke:#080909;stroke-width:5}
.sg-city-pedestrian-signal circle{cx:0;stroke:#050606;stroke-width:3}
.sg-city-pedestrian-signal .ped-red{fill:#481010}
.sg-city-pedestrian-signal .ped-green{fill:#0a3b1d}
.sg-city-pedestrian-signal.is-red .ped-red{fill:#ff3535}
.sg-city-pedestrian-signal.is-green .ped-green{fill:#2af06c}
.city-scene-world:is([data-signal-audience="pedestrian"],[data-signal-audience="none"]) :is(.city-traffic-signals,.decor-traffic-light,.sg-city-emergency-signal-head){display:none!important}
.city-scene-world:is([data-signal-audience="vehicle"],[data-signal-audience="none"]) .sg-city-pedestrian-signal{display:none!important}
.sg-city-bus_stop{background:transparent!important;border:0!important;overflow:visible!important;cursor:pointer}
.sg-city-bus_stop:before{display:none!important}
.sg-city-bus_stop img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 10px 7px rgba(19,35,24,.38));pointer-events:none}
.sg-city-bus_stop span{left:59%;top:42%;bottom:auto;width:32%;max-width:32%;padding:2px 1px;transform:translateX(-50%);border:0;background:transparent;color:#fff;font-size:10px;line-height:1.05;text-align:center;white-space:normal;text-shadow:0 1px 2px #000}
.sg-city-rail_crossing{background:transparent!important;border:0!important;overflow:visible!important;pointer-events:none}
.sg-city-rail-crossing-signal{position:absolute;top:50%;width:34px;height:70px;transform:translate(-50%,-50%);border:4px solid #111;border-radius:8px;background:radial-gradient(circle at 50% 30%,#3a2f0b 0 8px,#151204 9px 11px,transparent 12px),radial-gradient(circle at 50% 70%,#431010 0 8px,#170606 9px 11px,transparent 12px),#242728;box-shadow:0 6px 0 #111,0 8px 8px rgba(0,0,0,.42)}
.sg-city-rail-crossing-signal.signal-a{left:-18px}
.sg-city-rail-crossing-signal.signal-b{right:-18px}
.sg-city-rail_crossing.state-yellow .sg-city-rail-crossing-signal{background:radial-gradient(circle at 50% 30%,#ffd83b 0 8px,#725d08 9px 11px,transparent 12px),radial-gradient(circle at 50% 70%,#431010 0 8px,#170606 9px 11px,transparent 12px),#242728}
.sg-city-rail_crossing.state-red .sg-city-rail-crossing-signal{background:radial-gradient(circle at 50% 30%,#3a2f0b 0 8px,#151204 9px 11px,transparent 12px),radial-gradient(circle at 50% 70%,#ff3333 0 8px,#741010 9px 11px,transparent 12px),#242728}
.sg-city-road-network{z-index:2}
.sg-city-snow-network{position:absolute;inset:0;z-index:3;overflow:visible;pointer-events:none}
.sg-city-snow-road{fill:none;stroke:#f0f5f6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 2px rgba(151,183,194,.6))}
.sg-city-building.surface-coastline img{filter:none}
.sg-city-park.surface-sea{background:#0879ad var(--city-sea-texture,url('/assets/city/surfaces/sea-water-fill.png?v=20260930')) center/cover no-repeat!important;border:0!important;box-shadow:none!important;clip-path:polygon(0 100%,100% 0,100% 100%);pointer-events:none}
.sg-city-park.surface-sea:before{display:none!important}
.sg-city-sidewalk-line.sidewalk-edge{stroke-width:66}
.sg-city-sidewalk-line.sidewalk-surface{stroke-width:58}
.sg-city-sidewalk-line.sidewalk-texture{stroke-width:50;pointer-events:none}
.sg-city-sidewalk-line.texture-pavers.sidewalk-edge{stroke:#59615e}
.sg-city-sidewalk-line.texture-pavers.sidewalk-texture{stroke:#8d938f;stroke-dasharray:28 3;opacity:.46}
.sg-city-sidewalk-line.texture-sand.sidewalk-edge{stroke:#927a49}
.sg-city-sidewalk-line.texture-sand.sidewalk-texture{stroke:#f0dda3;stroke-width:46;stroke-dasharray:2 11;stroke-linecap:round;opacity:.7}
.sg-city-sidewalk-line.texture-asphalt.sidewalk-edge{stroke:#252b2e}
.sg-city-sidewalk-line.texture-asphalt.sidewalk-texture{stroke:#747b7e;stroke-width:48;stroke-dasharray:1 14;stroke-linecap:round;opacity:.36}
.sg-city-sidewalk-line.texture-grass.sidewalk-edge{stroke:#365f38}
.sg-city-sidewalk-line.texture-grass.sidewalk-texture{stroke:#86ad68;stroke-dasharray:6 9;opacity:.62}
.sg-city-sidewalk-line.texture-driveway.sidewalk-edge{stroke:#4b5252}
.sg-city-sidewalk-line.texture-driveway.sidewalk-texture{stroke:#555d5c;stroke-dasharray:42 4;opacity:.68}
.sg-city-event{position:absolute;width:250px;height:190px;transform:translate(-50%,-72%);transform-origin:center bottom;pointer-events:none;filter:drop-shadow(0 7px 6px rgba(0,0,0,.4))}
.sg-city-event>img{position:relative;z-index:2;width:100%;height:100%;object-fit:contain}
.sg-city-event-fire{width:220px;height:285px;transform:translate(-50%,-80%)}
.sg-city-event-tree{width:300px;height:195px}
.sg-city-event-blocked{position:absolute;left:50%;top:72%;z-index:1;transform:translate(-50%,-50%);border:8px solid rgba(225,65,55,.7);border-radius:50%;background:rgba(225,65,55,.12);box-shadow:0 0 0 5px rgba(255,255,255,.55)}
.sg-city-event.is-multi-object{width:0;height:0;transform:none;filter:none}
.sg-city-event.is-multi-object>img{filter:drop-shadow(0 7px 6px rgba(0,0,0,.4))}
.sg-city-event-scene-object.sg-city-pedestrian{overflow:visible!important}
.sg-city-actor-image{width:100%;height:100%;object-fit:contain;transform-origin:center center}

.city-scene-world{background-color:var(--city-ground,#628c50);background-image:radial-gradient(circle at 13px 17px,#f4df59 0 2px,transparent 2.5px),radial-gradient(circle at 46px 39px,#f1f0e2 0 1.5px,transparent 2px),radial-gradient(circle at 71px 22px,#d77aa8 0 1.5px,transparent 2px),linear-gradient(#638f50,#628c50);background-size:86px 64px,94px 72px,110px 82px,100% 100%}
.city-scene-object:not(.is-selected){box-shadow:none;border:0;border-radius:0;overflow:visible}
.city-scene-object.sg-city-decoration.sg-city-auto-decor{border:0!important;box-shadow:none!important;background-color:transparent!important}
.city-scene-object>img{width:100%;height:100%;max-width:none;object-fit:contain}
.city-scene-object.sg-city-road.road-junction{background:none!important}
.city-scene-object.sg-city-road.road-junction:before,.city-scene-object.sg-city-road.road-junction:after{content:none!important}
.city-builder-page .city-scene-object.sg-city-road.road-junction{width:var(--scene-object-width)!important;height:var(--scene-object-height)!important}
.city-scene-event{position:absolute;width:250px;height:190px;transform:translate(-50%,-72%);translate:none;transform-origin:center bottom;pointer-events:none;filter:drop-shadow(0 7px 6px rgba(0,0,0,.4))}
.city-scene-event[data-event-type=fire]{width:220px;height:285px;transform:translate(-50%,-80%)}
.city-scene-event[data-event-type=tree]{width:300px;height:195px}
.city-scene-event>img{width:100%;height:100%;max-width:none;object-fit:contain}
.city-scene-event.is-multi-object{width:0;height:0;transform:none;translate:none;filter:none;z-index:auto}
.city-scene-event-object{max-width:none;filter:drop-shadow(0 7px 6px rgba(0,0,0,.4))}
.city-scene-waste-bin{position:absolute;transform:translate(-50%,-72%);transform-origin:center;pointer-events:none}
.city-scene-actor{position:absolute;transform-origin:center;filter:drop-shadow(0 6px 5px rgba(7,18,13,.4));will-change:translate,transform;backface-visibility:hidden}
.city-scene-actor:not(.type-pedestrian){width:240px;height:180px}
.city-scene-actor .sg-city-actor-image,.city-scene-actor .subai-city-actor-image{width:100%;height:100%;max-width:none;object-fit:contain;transform-origin:center}
.city-scene-actor .subai-city-actor-graphic{position:absolute;inset:0;transform-origin:center}
.city-scene-waste-bin>img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 5px 4px rgba(0,0,0,.32))}
.sg-city-road-line.road-one-way.road-center{display:none}
.sg-city-road-line.is-routing-error-road{stroke:#ff3849!important}
.sg-city-road-network .city-one-way-sign rect{fill:#2266a6;stroke:#fff;stroke-width:3}
.sg-city-road-network .city-one-way-sign text{fill:#fff;font:700 30px Arial;text-anchor:middle;dominant-baseline:middle}
.sg-city-road-network .city-one-way-sign.is-no-entry circle{fill:#d63032;stroke:#fff;stroke-width:3}
.sg-city-road-network .city-one-way-sign.is-no-entry rect{fill:#fff;stroke:none}
.sg-city-road .city-traffic-signals,.sg-city-road .city-junction-signs{transform:none;max-width:none;padding:0;border:0;background:none}
.city-scene-object.city-road-hit{background:none!important;border:0!important;box-shadow:none!important}
.city-scene-object.city-road-hit:before,.city-scene-object.city-road-hit:after{content:none!important}


.sg-city-road-line.road-one-way.lanes-1.road-verge.road-local{stroke-width:112}
.sg-city-road-line.road-one-way.lanes-1.road-curb.road-local{stroke-width:94}
.sg-city-road-line.road-one-way.lanes-1.road-edge.road-local{stroke-width:84}
.sg-city-road-line.road-one-way.lanes-1.road-surface.road-local{stroke-width:74}
.sg-city-road-line.road-one-way.lanes-1.road-verge.road-main{stroke-width:126}
.sg-city-road-line.road-one-way.lanes-1.road-curb.road-main{stroke-width:106}
.sg-city-road-line.road-one-way.lanes-1.road-edge.road-main{stroke-width:94}
.sg-city-road-line.road-one-way.lanes-1.road-surface.road-main{stroke-width:84}
.sg-city-road-line.road-one-way.lanes-1.road-verge.road-delivery{stroke-width:138}
.sg-city-road-line.road-one-way.lanes-1.road-curb.road-delivery{stroke-width:116}
.sg-city-road-line.road-one-way.lanes-1.road-edge.road-delivery{stroke-width:104}
.sg-city-road-line.road-one-way.lanes-1.road-surface.road-delivery{stroke-width:92}
.sg-city-emergency_signal{background:transparent!important;border:0!important;overflow:visible!important;pointer-events:none}
.sg-city-emergency-signal-head{position:absolute;top:50%;width:34px;height:70px;transform:translate(-50%,-50%);border:4px solid #111;border-radius:8px;background:radial-gradient(circle at 50% 30%,#3a2f0b 0 8px,#151204 9px 11px,transparent 12px),radial-gradient(circle at 50% 70%,#431010 0 8px,#170606 9px 11px,transparent 12px),#242728;box-shadow:0 6px 0 #111,0 8px 8px rgba(0,0,0,.42)}
.sg-city-emergency-signal-head.signal-a{left:-18px}.sg-city-emergency-signal-head.signal-b{right:-18px}
.sg-city-emergency_signal.state-yellow .sg-city-emergency-signal-head{background:radial-gradient(circle at 50% 30%,#ffd83b 0 8px,#725d08 9px 11px,transparent 12px),radial-gradient(circle at 50% 70%,#431010 0 8px,#170606 9px 11px,transparent 12px),#242728}
.sg-city-emergency_signal.state-red .sg-city-emergency-signal-head{background:radial-gradient(circle at 50% 30%,#3a2f0b 0 8px,#151204 9px 11px,transparent 12px),radial-gradient(circle at 50% 70%,#ff3333 0 8px,#741010 9px 11px,transparent 12px),#242728}
.city-scene-special-signal{position:absolute;top:50%;width:34px;height:70px;transform:translate(-50%,-50%);border:4px solid #111;border-radius:8px;background:radial-gradient(circle at 50% 30%,#3a2f0b 0 8px,#151204 9px 11px,transparent 12px),radial-gradient(circle at 50% 70%,#431010 0 8px,#170606 9px 11px,transparent 12px),#242728;box-shadow:0 6px 0 #111,0 8px 8px rgba(0,0,0,.42)}
.city-scene-object.state-yellow .city-scene-special-signal{background:radial-gradient(circle at 50% 30%,#ffd83b 0 8px,#725d08 9px 11px,transparent 12px),radial-gradient(circle at 50% 70%,#431010 0 8px,#170606 9px 11px,transparent 12px),#242728}
.city-scene-object.state-red .city-scene-special-signal{background:radial-gradient(circle at 50% 30%,#3a2f0b 0 8px,#151204 9px 11px,transparent 12px),radial-gradient(circle at 50% 70%,#ff3333 0 8px,#741010 9px 11px,transparent 12px),#242728}
.city-scene-object.sg-city-rail_crossing,.city-scene-object.sg-city-emergency_signal{background:transparent!important;border:0!important;overflow:visible!important}
.city-scene-actor.has-city-3d{filter:none!important;overflow:visible!important}
.city-vehicle-3d-canvas[hidden]{display:none!important}
.has-city-3d > img,.has-city-3d > .subai-city-actor-graphic{visibility:hidden!important}
.city-traffic-road-calibration .city-scene-actor{position:absolute;pointer-events:none;z-index:2}
.city-traffic-road-calibration .city-scene-actor>img{width:100%;height:100%;object-fit:contain;pointer-events:auto;touch-action:none;cursor:grab;filter:drop-shadow(0 8px 7px rgba(0,0,0,.55))}
.city-lit-world{filter:brightness(var(--city-brightness,1))}
.city-lit-world .city-vehicle-3d-canvas{filter:brightness(calc(1 / var(--city-brightness,1)))}
.city-lit-world .city-scene-object .city-vehicle-3d-canvas{filter:none}
.city-object-light,.city-vehicle-lights{position:absolute!important;width:0;height:0;bottom:auto!important;pointer-events:none!important;z-index:5;filter:brightness(calc(1 / var(--city-brightness,1)))}
.city-object-light{padding:0!important;border:0!important;background:none!important;max-width:none!important;overflow:visible!important}
.city-object-light *,.city-vehicle-lights *{position:absolute;pointer-events:none}
.city-object-light .city-light-pool{left:0;top:0;width:calc(var(--light-range)*2);height:var(--light-range);transform:translate(-50%,-50%);background:radial-gradient(ellipse at center,color-mix(in srgb,var(--light-color) 66%,transparent) 0%,color-mix(in srgb,var(--light-color) 28%,transparent) 37%,transparent 78%);opacity:.78;mix-blend-mode:screen;filter:drop-shadow(0 0 20px var(--light-color))}
.city-object-light .city-light-bulb{left:0;top:calc(-1 * var(--light-height));width:12px;height:8px;transform:translate(-50%,-50%);background:var(--light-color);box-shadow:0 0 12px 4px var(--light-color);border-radius:50%}
.city-object-light.is-window .city-light-pool{display:none}
.city-vehicle-lights{left:50%;top:50%}
.city-vehicle-lights .head-left,.city-vehicle-lights .head-right{width:7px;height:5px;background:var(--head-color);box-shadow:0 0 9px 2px var(--head-color);border-radius:2px}
.city-vehicle-lights .tail-left,.city-vehicle-lights .tail-right{width:6px;height:4px;background:#ff2525;box-shadow:0 0 7px 1px #ed2525;border-radius:2px}
.city-vehicle-lights .beam-left,.city-vehicle-lights .beam-right{width:var(--beam-range);height:var(--beam-width);transform-origin:0 50%;clip-path:polygon(0 48%,100% 0,100% 100%,0 52%);background:linear-gradient(90deg,var(--beam-color,#fff2cc88),transparent);mix-blend-mode:screen}
.city-vehicle-lights .beacon{left:0;top:-32px;width:18px;height:9px;border-radius:3px;background:var(--beacon-color,#168bff);box-shadow:0 0 18px 8px var(--beacon-color,#168bff);transform:translate(-50%,-50%)}
.city-vehicle-lights .beacon.is-polygon{background:none;box-shadow:none;overflow:visible;border-radius:0;filter:drop-shadow(0 0 5px var(--beacon-color))}
.city-vehicle-lights .beacon.is-polygon polygon{fill:var(--beacon-color);stroke:var(--beacon-color);stroke-width:1}
.city-vehicle-3d-preview.is-clean-preview .city-light-drag-handle,.city-object-3d-preview.is-clean-preview .city-light-drag-handle{display:none!important}
.city-preview-navigation{display:flex;align-items:center;gap:6px;flex-wrap:wrap;width:100%}
.city-preview-navigation input[type=range]{width:120px!important;flex:1;min-width:80px;margin:0!important}
.city-preview-navigation output{width:44px;text-align:right;font-variant-numeric:tabular-nums}
.city-vehicle-3d-preview,.city-object-3d-preview{touch-action:none}
.city-preview-polygon-draft{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:20001}
.city-preview-polygon-draft polygon{fill:#168bff66;stroke:#8dd6ff;stroke-width:2;stroke-dasharray:4 3}
.city-vehicle-3d-tools button[hidden],.city-vehicle-light-editor label[hidden]{display:none}
.city-vehicle-3d-preview[data-drawing="1"]{cursor:crosshair}
.city-vehicle-3d-preview[data-drawing="1"] .city-light-drag-handle{display:none!important}
.city-beacon-tools{flex-wrap:wrap}
.city-beacon-tools select{min-width:130px;max-width:100%}
.city-beacon-tools label{display:flex;align-items:center;gap:6px}
.city-beacon-tools button[aria-label="Blaulicht hinzufuegen"]{color:#59b2ff}
.city-beacon-tools button[aria-label="Warnlicht hinzufuegen"]{color:#ffbd45}
.city-light-drag-handle.is-selected{z-index:12;outline:1px solid #fff}
.city-vehicle-lights[data-braking="1"] .tail-left,.city-vehicle-lights[data-braking="1"] .tail-right{box-shadow:0 0 12px 3px #ff2525}
.city-object-3d-editor>div,.city-object-light-editor,.city-lighting-editor,.city-vehicle-light-editor{display:grid;gap:8px}
.city-object-3d-editor label,.city-object-light-editor label,.city-lighting-editor label,.city-vehicle-light-editor label{display:grid;grid-template-columns:minmax(0,1fr) minmax(50px,90px);align-items:center;gap:8px;font-size:12px}
.city-object-3d-editor input,.city-lighting-editor input,.city-vehicle-light-editor input{max-width:100%;min-width:0}
.city-object-3d-preview{position:relative;width:100%;height:440px;overflow:hidden;background:#57745a}
.city-object-3d-preview img{width:100%;height:100%;object-fit:contain}
.city-scene-object.has-city-3d.sg-city-decoration{background-image:none!important}
.city-scene-object.decor-lamp{background-size:contain!important;background-position:center!important;background-repeat:no-repeat!important;overflow:visible!important}
.city-builder-page .city-object.decor-lamp{pointer-events:auto}
.city-tool-lamp img{width:22px;height:42px;object-fit:contain;display:block}
.city-object-3d-editor label,.city-lighting-editor label,.city-vehicle-light-editor label{overflow-wrap:anywhere}
.city-object-3d-editor label:has(input[type=checkbox]),.city-lighting-editor label:has(input[type=checkbox]),.city-vehicle-light-editor label:has(input[type=checkbox]){display:flex;align-items:center;gap:8px}
.city-object-3d-editor input[type=checkbox],.city-lighting-editor input[type=checkbox],.city-vehicle-light-editor input[type=checkbox]{width:18px;height:18px;flex:0 0 18px;margin:0;padding:0}
.city-vehicle-3d-editor{border-top:1px solid #475458;padding-top:10px;min-width:0}
.city-vehicle-3d-editor summary{cursor:pointer;font-size:13px;font-weight:600}
.city-vehicle-3d-editor>div{display:grid;gap:10px;margin-top:10px}
.city-vehicle-3d-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.city-vehicle-3d-tools button,.city-vehicle-3d-dialog>button{display:grid;place-items:center;width:34px;height:34px;padding:6px;border:1px solid #596568;border-radius:4px;background:#242c2e;color:#eef2ee;cursor:pointer}
.city-vehicle-3d-tools small{font-size:11px;color:#b8c5bf}
.city-vehicle-3d-file{width:100%;max-width:100%;font-size:12px}
.city-vehicle-3d-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.city-vehicle-3d-fields label{min-width:0;font-size:11px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.city-vehicle-3d-fields input:not([type=checkbox]),.city-vehicle-3d-fields select{width:100%;min-width:0;padding:6px;border:1px solid #526063;border-radius:4px;background:#1a2224;color:#eef2ee}
.city-vehicle-3d-preview{position:relative;height:220px;min-width:0;overflow:hidden;background:#5b865d}
.city-vehicle-3d-preview.is-night{background:#243538}
.city-vehicle-3d-preview .sg-city-actor{position:absolute}
.city-vehicle-3d-preview img{width:100%;height:100%;object-fit:contain}
.city-vehicle-3d-editor output,.city-vehicle-3d-dialog output{font-size:12px;overflow-wrap:anywhere}
.city-vehicle-3d-dialog{width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 32px);padding:16px;border:1px solid #526063;border-radius:6px;background:#182123;color:#eef2ee;overflow:auto}
.city-vehicle-3d-dialog>button{float:right}
.city-vehicle-3d-dialog .city-vehicle-3d-preview{height:320px;margin-top:12px;clear:both}
.city-vehicle-3d-dialog input[type=range]{width:100%;margin:14px 0}
.city-vehicle-3d-dialog::backdrop{background:rgba(0,0,0,.6)}
.city-light-drag-modes{display:inline-flex;gap:4px;margin:0}
.city-light-drag-modes button[aria-pressed=true]{background:#f2d25f;color:#161a1d;border-color:#f2d25f}
.city-vehicle-3d-dialog .city-light-drag-handle{position:absolute;z-index:20000;display:grid;place-items:center;width:28px;height:28px;min-width:28px;min-height:28px;padding:4px;border:2px solid #f2d25f;border-radius:4px;background:#171d20;color:#fff;transform:translate(-50%,-50%)!important;transition:none!important;cursor:grab;touch-action:none;box-sizing:border-box}
.city-light-drag-handle[hidden]{display:none}
.city-light-drag-handle[data-light-handle^=tail]{border-color:#f36d74}
.city-light-drag-handle[data-light-handle=beacon]{border-color:#59b2ff}
.city-light-drag-handle.is-dragging{cursor:grabbing;background:#34464b}
.city-vehicle-3d-dialog .city-light-drag-handle{background:rgba(23,29,32,.12);border-width:1px}
.city-vehicle-3d-dialog .city-light-drag-handle:hover,.city-vehicle-3d-dialog .city-light-drag-handle.is-dragging{background:rgba(23,29,32,.5)}
.city-light-drag-handle:focus-visible{outline:2px solid #fff;outline-offset:3px}
.city-object-3d-preview.is-night{background:#243538}
@media(max-width:600px){.city-vehicle-3d-dialog .city-light-drag-handle{width:32px;height:32px;min-width:32px;min-height:32px}.city-vehicle-3d-dialog .city-vehicle-3d-tools{flex-wrap:wrap}}
.city-vehicle-lights .turn-indicator{position:absolute;width:6px;height:6px;border-radius:50%;background:#ffac26;box-shadow:0 0 9px #ffac26;transform:translate(-50%,-50%);pointer-events:none}

/* Pedestrian light information from the same server state as crossing control. */
.sg-city-pedestrian-signal{position:absolute;z-index:75;top:12px;left:12px;max-width:calc(100% - 24px);padding:7px 11px;border:1px solid rgba(255,255,255,.25);border-radius:10px;background:rgba(15,21,19,.92);color:#fff;font-weight:700;font-size:13px;line-height:1.4;pointer-events:none;box-shadow:0 3px 12px rgba(0,0,0,.28)}
.sg-city-pedestrian-signal[data-state="green"]{border-color:#3bbd74}
.sg-city-pedestrian-signal[data-state="red"]{border-color:#e06161}
.sg-city-pedestrian-signal[hidden]{display:none!important}

.sg-city-crossing-marker-layer{position:absolute;inset:0;pointer-events:none;z-index:60}
.sg-city-crossing-arrow{position:absolute;transform:translate(-50%,-50%) rotate(var(--crossing-angle,0deg));pointer-events:auto;display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:2px solid #fff;border-radius:50%;font-size:20px;font-weight:bold;color:white;background:#175b9e;box-shadow:0 2px 7px #0009;cursor:pointer;touch-action:manipulation}
.sg-city-crossing-arrow.selected{background:#17814d;border-color:#baffd1}
