:root{color:#263238;font-synthesis:none;text-rendering:optimizelegibility;--ink:#263238;--muted:#65747a;--line:#26323824;--accent:#16a5c7;--accent-deep:#087c99;--paper:#f7f3ec;--panel:#fffffff0;--green:#3e7a47;--danger:#b94336;--shadow:0 18px 55px #23394224;background:#d9f0fa;font-family:IBM Plex Sans SC,IBM Plex Sans,Noto Sans SC,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;overflow:hidden}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible{outline-offset:2px;outline:3px solid #16a5c747}.app{--sky-top:#ccebf7;--sky-bottom:#f6fbfa;--ground:#f0e9de;--road:#62686a;--building:#d6b9a0;background:#d9f0fa;min-height:100vh;position:relative;overflow:hidden}.theme-paper{--sky-top:#e9e5da;--sky-bottom:#fbf8f1;--ground:#efe7db;--road:#5f6362;--building:#caa78d}.theme-dusk{--sky-top:#789aaa;--sky-bottom:#d6ddd9;--ground:#c9c2b7;--road:#454d51;--building:#9c8170}.mobile-header{display:none}.icon-button{background:0 0;border:0;padding:8px}.icon-button svg{width:20px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.tool-rail{z-index:50;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fafdfcdb;border:1px solid #ffffffc7;border-radius:18px;flex-direction:column;width:72px;padding:10px 8px;display:flex;position:fixed;inset:16px auto 16px 16px;box-shadow:0 15px 42px #2f4e5921}.brand-mark{place-items:center;height:52px;margin-bottom:12px;display:grid}.brand-mark span{color:#fff;letter-spacing:-.5px;background:#263238;border-radius:11px 11px 16px;place-items:center;width:40px;height:40px;font:600 13px/1 IBM Plex Mono,Cascadia Mono,monospace;display:grid;box-shadow:inset 0 0 0 1px #ffffff29,4px 5px #16a5c7}.rail-section{gap:3px;display:grid}.tool-rail button{cursor:pointer;background:0 0;border:0;border-radius:11px;place-items:center;gap:2px;min-height:50px;padding:5px;transition:all .18s;display:grid}.tool-rail button:hover,.tool-rail button.active{color:#087c99;background:#e2f5f8}.tool-rail button svg{stroke-width:1.8px;width:19px;height:19px}.tool-rail button span{font-size:11px;font-weight:600}.rail-separator{background:#2632381a;height:1px;margin:10px 8px}.rail-spacer{flex:1}.top-console{z-index:40;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fbfdfce0;border:1px solid #ffffffc7;border-radius:17px;align-items:stretch;gap:8px;min-height:68px;padding:9px 10px 9px 18px;display:flex;position:fixed;top:18px;left:112px;right:24px;box-shadow:0 12px 35px #2947511c}.eyebrow{color:#73848a;letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:700}.road-identity{border-right:1px solid var(--line);flex-direction:column;justify-content:center;min-width:220px;padding-right:20px;display:flex}.road-identity input{width:100%;color:var(--ink);background:0 0;border:0;padding:2px 0;font-size:17px;font-weight:700}.console-stat{border-right:1px solid var(--line);flex-direction:column;justify-content:center;min-width:108px;padding:2px 14px;display:flex}.console-stat span{color:var(--muted);font-size:11px}.console-stat strong{margin-top:2px;font:600 18px/1.2 IBM Plex Mono,Cascadia Mono,monospace}.console-stat small{color:#7e8c91;margin-left:2px;font-size:10px}.width-status{color:#b4672f;align-items:center;gap:8px;min-width:116px;padding:0 14px;font-size:12px;font-weight:700;display:flex}.width-status.is-match{color:#2f7b4d}.width-status svg{width:18px}.console-actions{align-items:center;gap:4px;margin-left:auto;display:flex}.console-actions button{cursor:pointer;background:0 0;border:0;border-radius:11px;justify-content:center;align-items:center;gap:5px;min-width:42px;height:42px;display:inline-flex}.console-actions button:hover{background:#edf4f4}.console-actions button:disabled{opacity:.3;cursor:default}.console-actions svg{width:18px}.console-actions span{font:600 10px/1 IBM Plex Mono,Cascadia Mono,monospace}.console-actions .recalculate{color:#fff;background:#263238;margin-left:4px;padding:0 15px;font-size:12px;font-weight:700}.console-actions .recalculate:hover{background:#087c99}.workspace{padding:96px 0 132px 94px;position:absolute;inset:0}.canvas-shell{--section-render-width:min(var(--section-display-width), 64%);background:linear-gradient(180deg, var(--sky-top), var(--sky-bottom));height:100%;min-height:420px;position:relative;overflow:hidden}.canvas-shell:after{display:none}.sky-layer{position:absolute;inset:0 0 calc(11% + 78px);overflow:hidden}.cloud{filter:blur(18px);background:#ffffff52;border-radius:50%;width:260px;height:58px;position:absolute}.cloud-a{top:17%;left:18%}.cloud-b{width:340px;top:30%;right:20%}.scene-wing{z-index:1;width:max(24px, calc((100% - var(--section-render-width)) / 2 + 1px));transition:width .2s;position:absolute;top:0;bottom:0;overflow:hidden}.scene-wing-left{left:0}.scene-wing-right{right:0}.scene-wing img{object-fit:cover;opacity:.86;filter:saturate(.62)contrast(.94)brightness(1.02);width:100%;height:100%;transform:translateY(13px)scaleX(1.025)}.scene-wing-left img{object-position:right bottom;transform:translate(10px,calc(42px - var(--edge-ground-shift,0px))) scaleX(1.04);transform-origin:100% 100%}.scene-wing-right img{object-position:left bottom;transform:translate(-10px,calc(42px - var(--edge-ground-shift,0px))) scaleX(1.04);transform-origin:0 100%}.scene-wing.scene-skyline img{opacity:.76;filter:saturate(.5)contrast(.88)brightness(1.06)}.scene-wing.scene-historic img{opacity:.8;filter:saturate(.52)contrast(.9)brightness(1.04)}.scene-wing:after{content:"";z-index:3;left:0;right:0;bottom:var(--edge-ground-shift,0px);background:#d7d3cb;border-top:2px solid #8f8b84;border-bottom:1px solid #34404040;height:8px;position:absolute}.section-stage{--roadbase-height:15px;--foundation-height:12px;--segment-dimension-offset-y:0px;--overall-dimension-offset-y:0px;z-index:4;width:var(--section-render-width);height:268px;transition:width .2s;position:absolute;bottom:11%;left:50%;transform:translate(-50%)}.road-elements{justify-content:stretch;align-items:end;min-width:0;height:210px;display:flex;position:relative}.road-elements:after{display:none}.road-segment{cursor:grab;border-left:0;flex:auto;height:185px;transition:filter .15s,transform .15s;position:relative}.road-segment:first-child{border-left:0}.road-segment:hover,.road-segment.selected{z-index:5;filter:brightness(1.05);transform:translateY(-5px)}.road-segment.selected:before{content:"";border:2px solid var(--accent);pointer-events:none;background:#16a5c70f;position:absolute;inset:-8px -4px -26px}.segment-visual{--surface-h:6px;--surface-bottom:0px;color:#34484a;height:132px;padding:0;position:absolute;inset:auto 0 39px;overflow:visible}.segment-visual:before{content:"";z-index:1;left:0;right:0;bottom:var(--surface-bottom);height:var(--surface-h);box-sizing:border-box;border-top:2px solid #252929;border-bottom:2px solid #252929;position:absolute}.surface-edge{z-index:2;bottom:var(--edge-bottom);width:2px;height:var(--edge-height);pointer-events:none;background:#252929;position:absolute}.surface-edge-left{left:0;transform:translate(-1px)}.surface-edge-right{right:0;transform:translate(1px)}.surface-asphalt .segment-visual:before{--surface-fill:#575d5e;background-color:#575d5e;background-image:radial-gradient(#ffffff29 .45px,#0000 .6px),radial-gradient(#12181933 .45px,#0000 .6px);background-position:0 0,2px 2px;background-size:4px 4px;box-shadow:inset 0 2px #ffffff14}.surface-paving .segment-visual:before{--surface-fill:#c9c7c2;background-color:#c9c7c2;background-image:radial-gradient(#504c4657 .45px,#0000 .65px),radial-gradient(#ffffff80 .45px,#0000 .7px);background-position:0 0,2px 2px;background-size:4px 4px}.kind-bike.surface-paving .segment-visual:before{--surface-fill:#b98282;background-color:#b98282;background-image:radial-gradient(#5b313157 .45px,#0000 .65px),radial-gradient(#ffe7e26b .45px,#0000 .7px)}.surface-green .segment-visual:before{--surface-fill:var(--annotation-background,#f4f0e8);background:var(--annotation-background,#f4f0e8);border-bottom:0}.kind-median .segment-visual:before{background:var(--surface-fill,var(--annotation-background,#f4f0e8));border-bottom:0}.surface-green .segment-visual:after,.kind-median .segment-visual:after{content:"";z-index:0;height:calc(var(--surface-bottom) + var(--surface-h));background:var(--annotation-background,#f4f0e8);position:absolute;bottom:0;left:0;right:0}.surface-rail .segment-visual:before{--surface-fill:#656b68;background:repeating-linear-gradient(90deg,#969c96 0 8px,#4c5655 8px 10px)}.roadbed-flush .segment-visual{--surface-h:6px;--surface-bottom:0px}.roadbed-curb .segment-visual{--surface-h:13px;--surface-bottom:0px;--asset-bottom:13px;--fill-cap:2px}.roadbed-curb .road-segment .segment-visual:before{background:linear-gradient(to bottom,transparent 0 var(--fill-cap),var(--surface-fill,#575d5e) var(--fill-cap) 100%);box-shadow:none;border-top:0;border-bottom:2px solid #252929}.roadbed-curb .kind-sidewalk .segment-visual,.roadbed-curb .kind-bus-stop .segment-visual{--surface-h:7px;--surface-bottom:6px;--asset-bottom:13px;--fill-cap:0px}.roadbed-curb .kind-green .segment-visual,.roadbed-curb .kind-median .segment-visual{--surface-h:2px;--surface-bottom:11px;--asset-bottom:13px}.roadbed-curb .surface-green .segment-visual:before,.roadbed-curb .kind-median .segment-visual:before{background:var(--surface-fill,var(--annotation-background,#f4f0e8));border-top:2px solid #252929;border-bottom:0}.roadbed-raised .kind-sidewalk .segment-visual,.roadbed-raised .kind-bus-stop .segment-visual{--surface-h:10px;--surface-bottom:7px}.roadbed-raised .kind-green .segment-visual,.roadbed-raised .kind-median .segment-visual{--surface-h:12px;--surface-bottom:9px}.roadbed-raised .surface-paving .segment-visual:before{border-top:1px solid #8f8a83}.roadbed-raised .surface-green .segment-visual:before{box-shadow:none;border-top:2px solid #827d75}.section-asset{z-index:1;filter:saturate(.82)contrast(1.03)drop-shadow(0 1px .5px #111c1e33);width:min(62%,44px);height:52px;position:relative;overflow:visible}.kind-car .section-asset,.kind-parking .section-asset{width:min(54%,34px);height:35px}.kind-bus .section-asset{width:min(68%,34px);height:48px}.kind-tram .section-asset{width:min(70%,38px);height:52px}.kind-bike .section-asset{width:min(58%,34px);height:39px}.kind-sidewalk .section-asset{width:min(55%,34px);height:43px}.kind-green .section-asset{width:52px;max-width:none;height:79px}.kind-median .section-asset{width:34px;max-width:none;height:40px}.kind-bus-stop .section-asset{width:min(76%,50px);height:57px}.kind-streetlight .section-asset{width:34px;max-width:none;height:91px}.kind-guardrail .section-asset{width:min(88%,58px);height:37px}.asset-car.variant-1{width:min(58%,36px)}.asset-car.variant-2{width:min(52%,33px);height:39px}.asset-bus.variant-1{filter:saturate(.72)drop-shadow(0 1px .5px #111c1e29)}.asset-bus.variant-2{transform-origin:bottom;transform:scaleX(.9)}.asset-people.variant-0{transform:translate(10px)}.asset-people.variant-2 .person-shirt{fill:#a48760}.kind-green .asset-tree.variant-1{width:48px}.kind-green .asset-tree.variant-2{width:60px;height:58px}.kind-median .asset-tree.variant-2{transform-origin:bottom;transform:scale(.72,.38)}.asset-tram.variant-1 .tram-body{fill:#cbd4d0}.asset-tram.variant-2 .tram-body{fill:#c9b69a}.asset-facing-left{transform:scaleX(-1)}.asset-shadow{fill:#0f181929}.car-body{fill:#c9cfcd;stroke:#303a3c;stroke-width:1.2px}.car-glass,.bus-glass,.tram-glass{fill:#708b94;stroke:#dce5e5;stroke-width:.8px}.glass-shade{fill:none;stroke:#1c3036b3;stroke-width:.75px}.car-grille,.bus-grille{fill:#303a3d}.car-light,.tram-light{fill:#e5d29a;stroke:#6b6754;stroke-width:.55px}.car-bumper{fill:none;stroke:#30393b;stroke-width:1.1px}.tire{fill:#252d30;stroke:#6c7678;stroke-width:.55px}.bus-body{fill:#bba257;stroke:#303b3e;stroke-width:1.2px}.bus-route{fill:#3d4b4f}.tram-body{fill:#c8cecc;stroke:#414e50;stroke-width:1.1px}.tram-wire,.tram-rail{fill:none;stroke:#465456;stroke-width:1px}.tram-glass{fill:#728b93}.bike-wheel{fill:none;stroke:#3e494a;stroke-width:1.65px}.bike-frame{fill:none;stroke:#a9684f;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.person-head,.person-head-alt{fill:#b98a70;stroke:#5f5149;stroke-width:.8px}.person-jacket{fill:#8d6555;stroke:#4f4b47;stroke-width:1.1px}.person-shirt{fill:#68858a;stroke:#4b585a;stroke-width:1.1px}.person-limb,.person-limb-alt{fill:none;stroke:#454b4a;stroke-width:2.1px;stroke-linecap:round}.person-limb-alt{stroke:#586264}.tree-trunk{fill:#77624c;stroke:#574b3d;stroke-width:1px}.tree-branch{fill:none;stroke:#675744;stroke-width:2.2px;stroke-linecap:round}.tree-leaf{fill:#648266;stroke:#4f7056;stroke-width:.8px;opacity:.88}.leaf-b{fill:#7d9877}.leaf-c{fill:#57765f}.leaf-d{fill:#6f8d70}.leaf-highlight{fill:none;stroke:#dce6cf6b;stroke-width:1.2px;stroke-linecap:round}.asset-shrub{transform-origin:bottom;transform:scale(.64,.48)}.stop-frame{fill:none;stroke:#4b595b;stroke-width:1.7px;stroke-linejoin:round}.stop-glass{fill:#7eaab52e;stroke:#778d92;stroke-width:.9px}.stop-bench{fill:none;stroke:#706254;stroke-width:1.6px}.stop-sign{fill:#dfe2de;stroke:#4c5a5c;stroke-width:.9px}.stop-sign-dot{fill:#5f7b81}.paving-grid,.custom-marker{fill:none;stroke:#697576;stroke-width:1.2px}.light-pole{fill:#626a69;stroke:#313b3d;stroke-width:1px}.light-arm{fill:none;stroke:#343f41;stroke-width:4px;stroke-linecap:round}.light-head{fill:#525b5b;stroke:#293234;stroke-width:1px}.light-base{fill:#505959;stroke:#30393a;stroke-width:1px}.rail-post,.rail-cable,.rail-cap,.rail-frame,.rail-mesh{fill:none;stroke:#535d5d;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.rail-beam{fill:#8a9090;stroke:#465051;stroke-width:1.5px}.rail-cable{stroke-width:2px}.rail-mesh{stroke-width:1.2px}.material-layer{z-index:3;pointer-events:none;position:absolute;inset:0}.material-instance{bottom:var(--asset-bottom,calc(var(--surface-bottom) + var(--surface-h)));width:100%;height:112px;transform:translateX(-50%) scale(var(--material-size));transform-origin:bottom;justify-content:center;align-items:end;display:flex;position:absolute}.material-instance.is-flipped{transform:translateX(-50%) scaleX(-1) scale(var(--material-size))}.section-asset{z-index:1;object-fit:contain;object-position:center bottom;filter:saturate(.88)contrast(1.02)drop-shadow(0 1px .6px #111c1e33);width:auto;max-width:88px;height:52px;display:block;position:relative}.material-instance .section-asset.material-car{width:auto;max-width:45px;height:30px}.material-instance .section-asset.material-bus{width:auto;max-width:58px;height:45px}.material-instance .section-asset.material-tram{width:auto;max-width:58px;height:55px}.material-instance .section-asset.material-pedestrian{width:auto;max-width:34px;height:34px}.material-instance .section-asset.material-bike{width:auto;max-width:50px;height:31px}.material-instance .section-asset.material-tree{width:auto;max-width:98px;height:105px}.material-instance .section-asset.material-shrub{object-fit:cover;object-position:50% 23%;clip-path:inset(0 0 2% round 42% 42% 8% 8%);width:34px;max-width:none;height:22px}.section-asset.material-tree.variant-0,.section-asset.material-tree.variant-2{transform:translate(16%)}.section-asset.material-tree.variant-1,.section-asset.material-shrub.variant-0,.section-asset.material-shrub.variant-2{transform:translate(3%)}.section-asset.material-shrub.variant-1{transform:translate(16%)}.material-instance .section-asset.material-streetlight{width:auto;max-width:46px;height:118px}.material-instance .section-asset.material-guardrail{width:76px;max-width:none;height:24px}.material-instance .section-asset.material-bus-stop{width:auto;max-width:90px;height:57px}.arrangement-random .material-instance:nth-child(2n){transform-origin:48% bottom}.direction-arrow{z-index:7;text-align:center;width:30px;height:30px;box-shadow:none;background:0 0;border:0;font:700 29px/30px IBM Plex Mono,Cascadia Mono,monospace;position:absolute;top:-12px;left:50%;transform:translate(-50%);color:#45494a!important}.road-structure{display:none}.roadbase-course{flex:0 0 var(--roadbase-height);background:repeating-linear-gradient(135deg,#a6a39b 0 2px,#bdb9af 2px 5px);border-bottom:1px solid #777872}.foundation-course{flex:0 0 var(--foundation-height);background-color:#d1c8b8;background-image:radial-gradient(#9f9585 .7px,#0000 .8px);background-size:5px 5px;border-bottom:1px solid #7f796e}.segment-lock{color:#f2c174;width:13px;position:absolute;top:5px;right:5px}.segment-measure{z-index:8;left:0;right:0;bottom:calc(4px - var(--segment-dimension-offset-y));color:#292d2e;cursor:ns-resize;touch-action:none;-webkit-user-select:none;user-select:none;height:24px;position:absolute}.segment-measure span:first-child{border-top:1px solid;position:absolute;top:8px;left:0;right:0}.segment-measure span:first-child:before,.segment-measure span:first-child:after{content:"";transform-origin:50%;background:currentColor;width:1px;height:13px;position:absolute;top:-6px;transform:rotate(22deg)}.segment-measure span:first-child:before{left:0}.segment-measure span:first-child:after{display:none;right:0}.road-segment:last-child .segment-measure span:first-child:after{display:block}.segment-measure span:last-child{background:currentColor;width:1px;height:12px;display:block;position:absolute;top:-4px;left:0}.road-segment:last-child .segment-measure span:last-child{background:linear-gradient(90deg,currentColor 0 1px,#0000 1px calc(100% - 1px),currentColor calc(100% - 1px));width:auto;right:0}.segment-measure strong{text-align:center;white-space:nowrap;min-width:18px;font:500 10px/1 IBM Plex Mono,Cascadia Mono,monospace;position:absolute;top:-8px;left:50%;transform:translate(-50%)}.segment-measure.is-narrow strong{font-size:9px;top:12px}.overall-measure{z-index:8;left:0;right:0;bottom:calc(-16px - var(--overall-dimension-offset-y));color:#242828;cursor:ns-resize;touch-action:none;-webkit-user-select:none;user-select:none;height:46px;position:absolute}.overall-measure:before{display:none}.overall-measure span:first-child{border-top:1px solid;position:absolute;top:28px;left:0;right:0}.overall-measure span:first-child:before,.overall-measure span:first-child:after{content:"";background:currentColor;width:1px;height:14px;position:absolute;top:-7px;transform:rotate(22deg)}.overall-measure span:first-child:before{left:0}.overall-measure span:first-child:after{right:0}.overall-measure span:last-child{background:linear-gradient(90deg,currentColor 0 1px,#0000 1px calc(100% - 1px),currentColor calc(100% - 1px));height:13px;display:block;position:absolute;top:15px;left:0;right:0}.overall-measure strong{background:var(--annotation-background,#f4f0e8);padding:0 5px;font:500 11px/1 IBM Plex Mono,Cascadia Mono,monospace;position:absolute;top:11px;left:50%;transform:translate(-50%)}.section-stage.is-segment-dimension-dragging .road-segment{filter:none;transform:none}.road-segment:has(.segment-measure:hover){filter:none;transform:none}.section-stage.is-segment-dimension-dragging .segment-measure,.section-stage.is-overall-dimension-dragging .overall-measure{color:#079bc8}.structure-key{display:none}.structure-key span{align-items:center;gap:4px;display:flex}.structure-key i{border:1px solid #24282840;width:13px;height:7px}.key-roadbase{background:repeating-linear-gradient(135deg,#a6a39b 0 2px,#bdb9af 2px 4px)}.key-foundation{background:#d1c8b8}.ground-band{z-index:2;background:var(--annotation-background,#f4f0e8);position:absolute;inset:calc(89% - 100px) 0 0}.ground-band span{display:none}.element-dock{z-index:35;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fbfdfce6;border:1px solid #fffc;border-radius:17px;align-items:stretch;height:98px;display:flex;position:fixed;bottom:16px;left:120px;right:24px;overflow:hidden;box-shadow:0 12px 35px #28424c1f}.dock-title{border-right:1px solid var(--line);flex-direction:column;justify-content:center;width:125px;padding:17px 16px;display:flex}.dock-title span{font-size:14px;font-weight:700}.dock-title strong{color:var(--muted);margin-top:5px;font-size:9px;font-weight:500}.dock-items{scrollbar-width:thin;flex:1;padding:7px;display:flex;overflow-x:auto}.dock-items button{cursor:grab;background:0 0;border:0;border-right:1px solid #26323814;border-radius:10px;flex:1 0 78px;grid-template-rows:34px 16px 12px;place-items:center;min-width:70px;transition:all .16s;display:grid}.dock-items button:hover{color:var(--accent-deep);background:#e5f6f7;transform:translateY(-2px)}.dock-items svg{stroke-width:1.6px;width:26px;height:26px}.dock-items span{font-size:10px;font-weight:700}.dock-items small{color:#829094;font:500 8px IBM Plex Mono,Cascadia Mono,monospace}.dock-more{border:0;border-left:1px solid var(--line);cursor:pointer;background:0 0;width:50px}.dock-more:hover{background:#edf5f5}.dock-more svg{width:20px}.floating-panel{z-index:60;background:var(--panel);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);border:1px solid #ffffffd6;border-radius:18px;position:fixed}.property-panel{width:292px;max-height:calc(100vh - 225px);padding:17px;top:104px;right:24px;overflow-y:auto}.property-heading,.panel-heading,.modal-heading{align-items:center;gap:11px;display:flex}.property-heading>div:nth-child(2),.panel-heading>div,.modal-heading>div{flex:1}.property-heading h2,.panel-heading h2,.modal-heading h2{margin:2px 0 0;font-size:18px;line-height:1.25}.property-heading>button,.panel-heading>button,.modal-heading>button{cursor:pointer;background:0 0;border:0;border-radius:10px;width:34px;height:34px}.property-heading>button:hover,.panel-heading>button:hover,.modal-heading>button:hover{background:#eef3f2}.property-heading>button svg,.panel-heading>button svg,.modal-heading>button svg{width:18px}.property-icon{color:#fff;background:#263238;border-radius:13px;place-items:center;width:42px;height:42px;display:grid}.property-icon svg{width:24px}.form-field{gap:7px;margin-top:18px;display:grid}.form-field span,.property-group>span{color:#5d6b6f;font-size:11px;font-weight:700}.form-field input,.annotation-field input{background:#f7f9f7d1;border:1px solid #26323821;border-radius:10px;width:100%;height:41px;padding:0 11px}.form-field.compact{margin-top:16px}.metric-editors{grid-template-columns:1fr 1fr;gap:9px;margin-top:13px;display:grid}.metric-editor{background:#f5f8f7;border:1px solid #2632381a;border-radius:12px;padding:10px}.metric-editor>span{color:#6b797d;font-size:10px;font-weight:700}.metric-editor>div{justify-content:space-between;align-items:center;margin-top:7px;display:flex}.metric-editor button{cursor:pointer;background:#fff;border:0;border-radius:7px;width:25px;height:25px}.metric-editor button:hover{background:#dff2f4}.metric-editor button svg{width:13px}.metric-editor strong{font:600 14px IBM Plex Mono,Cascadia Mono,monospace}.metric-editor small{color:#859195;margin-left:2px;font-size:8px}.property-group{margin-top:15px}.direction-grid{grid-template-columns:repeat(2,1fr);gap:6px;margin-top:7px;display:grid}.direction-grid button{cursor:pointer;background:#fff;border:1px solid #2632381c;border-radius:9px;justify-content:center;align-items:center;gap:7px;height:44px;padding:4px;display:flex}.direction-grid button.active{color:#087c99;background:#e6f7f8;border-color:#16a5c7}.direction-grid svg{width:17px;height:17px}.direction-grid span{font-size:9px}.surface-grid{grid-template-columns:repeat(4,1fr);gap:5px;margin-top:7px;display:grid}.surface-grid button{color:#4e595b;cursor:pointer;border:1px solid #2632381f;border-radius:8px;height:34px;font-size:9px}.surface-grid button.active{outline-offset:1px;outline:2px solid #16a5c7}.surface-swatch-asphalt{background:#696e6f;color:#fff!important}.surface-swatch-paving{background:repeating-linear-gradient(90deg,#ddd8cf 0 8px,#bdb7ae 8px 9px)}.surface-swatch-green{background:#84a56e}.surface-swatch-rail{background:repeating-linear-gradient(90deg,#bbb 0 5px,#555 5px 7px);color:#fff!important}.variant-grid{grid-template-columns:repeat(3,1fr);gap:5px;margin-top:7px;display:grid}.variant-grid button{cursor:pointer;background:#fff;border:1px solid #2632381c;border-radius:9px;grid-template-rows:48px 15px;place-items:center;min-width:0;height:73px;padding:3px;display:grid;overflow:hidden}.variant-grid button.active{color:#087c99;background:#e6f7f8;border-color:#16a5c7}.variant-grid .section-asset{max-width:48px;max-height:45px}.variant-grid span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:8px;overflow:hidden}.material-editor{border-top:1px solid var(--line);padding-top:14px}.material-add-grid{grid-template-columns:repeat(5,1fr);gap:5px;margin-top:8px;display:grid}.material-add-grid button{cursor:pointer;background:#fff;border:1px solid #2632381c;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:0;height:48px;padding:4px 2px;display:flex}.material-add-grid button:hover{color:#087c99;background:#eaf8f8;border-color:#7dc7d5}.material-add-grid svg{width:17px;height:17px}.material-add-grid small{white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:8px;overflow:hidden}.material-cards{gap:8px;margin-top:9px;display:grid}.material-empty{color:#7b898d;text-align:center;border:1px dashed #26323833;border-radius:9px;padding:13px;font-size:9px}.material-card{background:#f7f9f7e0;border:1px solid #2632381c;border-radius:10px;padding:9px}.material-card header{grid-template-columns:19px 1fr auto 25px;align-items:center;gap:6px;display:grid}.material-card header>svg{width:17px}.material-card header strong{font-size:10px}.material-card header button{color:#6d797c;cursor:pointer;background:#fff;border:1px solid #2632381f;border-radius:6px;min-width:25px;height:25px;padding:0 7px;font-size:8px}.material-card header button.active{color:#087c99;background:#eaf8f8;border-color:#7dc7d5}.material-card header button svg{width:12px}.material-variants{margin-top:8px}.material-variants button{grid-template-rows:43px 14px;height:66px}.material-variants .section-asset{width:auto;max-width:55px;height:39px}.material-variants .section-asset.material-shrub{object-fit:cover;object-position:50% 23%;clip-path:inset(0 0 2% round 42% 42% 8% 8%);width:38px;max-width:none;height:24px}.material-metrics{grid-template-columns:repeat(3,1fr);gap:5px;margin-top:7px;display:grid}.material-metrics .metric-editor{padding:7px 5px}.material-metrics .metric-editor button{width:20px;height:20px}.material-metrics .metric-editor strong{font-size:10px}.material-options{grid-template-columns:repeat(4,1fr);gap:4px;margin-top:7px;display:grid}.material-options button{color:#667477;cursor:pointer;background:#fff;border:1px solid #2632381c;border-radius:6px;height:27px;font-size:8px}.material-options button.active{color:#087c99;background:#eaf8f8;border-color:#7dc7d5}.lock-toggle{text-align:left;cursor:pointer;background:#fff;border:1px solid #2632381c;border-radius:12px;align-items:center;gap:11px;width:100%;margin-top:15px;padding:10px 12px;display:flex}.lock-toggle.active{color:#8a5b2f;background:#faf2e6;border-color:#d7b78e}.lock-toggle svg{width:20px}.lock-toggle span{flex-direction:column;display:flex}.lock-toggle strong{font-size:11px}.lock-toggle small{color:#7b898c;margin-top:2px;font-size:9px}.property-actions{grid-template-columns:1fr 1fr;gap:7px;margin-top:14px;display:grid}.property-actions button{cursor:pointer;background:#fff;border:1px solid #2632381c;border-radius:10px;justify-content:center;align-items:center;gap:6px;height:38px;font-size:10px;font-weight:700;display:flex}.property-actions svg{width:16px}.property-actions .danger{color:var(--danger)}.property-actions button:disabled{opacity:.35;cursor:default}.style-panel{width:354px;max-height:calc(100vh - 225px);padding:17px;top:104px;left:102px;overflow-y:auto}.theme-options{gap:7px;margin-top:14px;display:grid}.theme-options button{cursor:pointer;background:#fff;border:1px solid #2632381a;border-radius:11px;align-items:center;gap:10px;height:46px;padding:5px 9px;display:flex}.theme-options button.active{background:#eaf8f8;border-color:#16a5c7}.theme-options button>span:nth-child(2){text-align:left;flex:1;font-size:11px;font-weight:700}.theme-options button svg{color:#087c99;width:17px}.theme-swatch{border:1px solid #2632381f;border-radius:8px;width:32px;height:30px}.swatch-blueprint{background:linear-gradient(135deg,#ccebf7,#f0e9de)}.swatch-paper{background:linear-gradient(135deg,#e9e5da,#fbf8f1)}.swatch-dusk{background:linear-gradient(135deg,#789aaa,#c9c2b7)}.background-setting{border-top:1px solid var(--line);margin-top:17px;padding-top:15px}.setting-label{color:#5d6b6f;font-size:10px;font-weight:700}.background-options{grid-template-columns:1fr 1fr;gap:7px;margin-top:8px;display:grid}.background-options button{text-align:left;cursor:pointer;background:#fff;border:1px solid #2632381a;border-radius:11px;grid-template-rows:43px auto;grid-template-columns:1fr 18px;min-height:90px;padding:7px;display:grid}.background-options button.active{background:#eaf8f8;border-color:#16a5c7}.background-options button>svg{color:#087c99;align-self:center;width:15px}.background-preview{background:linear-gradient(#d8eef4 0 62%,#eee7dc 62%);border-radius:7px;grid-column:1/-1;height:39px;position:relative;overflow:hidden}.background-preview i{background:#ccb39d;border:1px solid #26323829;display:block;position:absolute;bottom:8px}.preview-street i:first-child{width:30px;height:22px;left:7px}.preview-street i:nth-child(2){width:37px;height:15px;left:33px}.preview-street i:nth-child(3){width:21px;height:28px;right:6px}.preview-skyline i{background:#91abb2}.preview-skyline i:first-child{width:24px;height:31px;left:8px}.preview-skyline i:nth-child(2){width:32px;height:23px;left:36px}.preview-skyline i:nth-child(3){width:26px;height:35px;right:7px}.preview-historic i{background:#c79e77;height:14px;bottom:7px}.preview-historic i:before{content:"";clip-path:polygon(9% 0,91% 0,100% 100%,0 100%);background:#725b48;height:8px;position:absolute;top:-7px;left:-2px;right:-2px}.preview-historic i:first-child{width:35px;left:7px}.preview-historic i:nth-child(2){width:42px;left:43px}.preview-historic i:nth-child(3){width:28px;right:6px}.preview-none:after{content:"无建筑";color:#728287;letter-spacing:.12em;place-items:center;font:600 9px IBM Plex Mono,Cascadia Mono,monospace;display:grid;position:absolute;inset:0}.preview-none i{display:none}.background-copy{flex-direction:column;align-self:end;padding-top:5px;display:flex}.background-copy strong{font-size:10px}.background-copy small{color:#7b898d;margin-top:2px;font-size:8px;line-height:1.35}.roadbed-setting{border-top:1px solid var(--line);margin-top:16px;padding-top:14px}.roadbed-options{gap:6px;margin-top:8px;display:grid}.roadbed-options button{text-align:left;cursor:pointer;background:#fff;border:1px solid #2632381a;border-radius:10px;grid-template-columns:54px 1fr 16px;align-items:center;gap:8px;min-height:50px;padding:6px 8px;display:grid}.roadbed-options button.active{background:#eaf8f8;border-color:#16a5c7}.roadbed-options button>span:nth-child(2){flex-direction:column;display:flex}.roadbed-options strong{font-size:10px}.roadbed-options small{color:#7f8d90;margin-top:2px;font-size:8px}.roadbed-options svg{color:#087c99;width:14px}.roadbed-preview{background:#f2efe9;width:54px;height:31px;display:block;position:relative;overflow:hidden}.roadbed-preview i,.roadbed-preview b{display:block;position:absolute;bottom:5px}.roadbed-preview i{background:#575d5e;border-top:1px solid #3f4647;width:28px;height:7px;left:0}.roadbed-preview b{background:#d8d3ca;border-top:3px solid #b9b3a8;width:26px;height:10px;right:0}.roadbed-preview-flush i,.roadbed-preview-flush b{border-top-width:1px;height:7px}.roadbed-preview-raised b{background:#719660;border-top-width:5px;height:16px}.structure-thickness{grid-template-columns:1fr 1fr;gap:7px;margin-top:8px;display:grid}.structure-thickness .metric-editor{margin:0;padding:8px}.sheet-background-setting{border-top:1px solid var(--line);margin-top:16px;padding-top:14px}.sheet-color-row{grid-template-columns:repeat(4,32px) 1fr;align-items:center;gap:7px;margin-top:8px;display:grid}.sheet-color-row>button{cursor:pointer;border:1px solid #26323833;border-radius:6px;width:32px;height:28px}.sheet-color-row>button.active{outline-offset:2px;outline:2px solid #16a5c7}.sheet-color-row label{cursor:pointer;background:#fff;border:1px solid #2632381f;border-radius:7px;align-items:center;gap:6px;height:30px;padding:0 8px;display:flex}.sheet-color-row input{background:0 0;border:0;width:18px;height:18px;padding:0}.sheet-color-row span{color:#5d6b6f;font-size:9px;font-weight:700}.display-setting{border-top:1px solid var(--line);margin-top:16px;padding-top:14px}.display-options{gap:6px;margin-top:8px;display:grid}.display-options button{text-align:left;cursor:pointer;background:#fff;border:1px solid #2632381a;border-radius:10px;grid-template-columns:24px 1fr 16px;align-items:center;gap:8px;min-height:48px;padding:7px 9px;display:grid}.display-options button.active{background:#eaf8f8;border-color:#16a5c7}.display-options button>svg:first-child{color:#536063;width:18px}.display-options button>svg:last-child{color:#087c99;width:14px}.display-options button span{flex-direction:column;display:flex}.display-options strong{font-size:10px}.display-options small{color:#7c898d;margin-top:2px;font-size:8px}.annotation-field{gap:7px;margin-top:13px;display:grid}.annotation-field span{color:#5d6b6f;font-size:10px;font-weight:700}.annotation-field input{height:37px}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#19272c5c;place-items:center;display:grid;position:fixed;inset:0}.modal{background:#fbfdfc;border:1px solid #ffffffd1;border-radius:20px 20px 28px;width:min(460px,100vw - 30px);max-height:calc(100vh - 40px);padding:22px;animation:.22s both modal-in;overflow-y:auto;box-shadow:0 30px 85px #0f252d40}@keyframes modal-in{0%{opacity:0;transform:translateY(14px)scale(.98)}}.road-type-grid{border:0;margin:18px 0 0;padding:0}.road-type-grid legend{color:#5d6b6f;margin-bottom:8px;font-size:11px;font-weight:700}.road-type-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.road-type-grid legend{grid-column:1/-1}.road-type-grid button{text-align:left;cursor:pointer;background:#fff;border:1px solid #2632381f;border-radius:11px;flex-direction:column;padding:11px;display:flex}.road-type-grid button.active{color:#087c99;background:#eaf8f8;border-color:#16a5c7}.road-type-grid span{font-size:12px;font-weight:700}.road-type-grid small{color:#7e8b8e;margin-top:3px;font:500 9px IBM Plex Mono,Cascadia Mono,monospace}.unit-input{position:relative}.unit-input input{padding-right:34px;font-family:IBM Plex Mono,Cascadia Mono,monospace}.unit-input b{color:#7c898d;font-size:10px;position:absolute;top:11px;right:13px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:22px;display:flex}.modal-actions button{cursor:pointer;border-radius:11px;min-height:41px;padding:0 17px;font-size:11px;font-weight:700}.button-secondary{background:#fff;border:1px solid #2632381f}.button-primary{color:#fff;background:#263238;border:1px solid #263238}.button-primary:hover{background:#087c99;border-color:#087c99}.help-list{counter-reset:help;gap:11px;margin:20px 0;padding:0;list-style:none;display:grid}.help-list li{background:#f0f6f5;border-radius:12px;flex-direction:column;padding:12px 13px 12px 50px;display:flex;position:relative}.help-list li:before{counter-increment:help;content:"0" counter(help);color:#087c99;font:600 12px IBM Plex Mono,Cascadia Mono,monospace;position:absolute;top:14px;left:13px}.help-list strong{font-size:12px}.help-list span{color:#66767a;margin-top:3px;font-size:10px;line-height:1.6}.shortcut-grid{border:1px dashed #2632382e;border-radius:12px;grid-template-columns:80px 1fr;align-items:center;gap:7px;padding:13px;display:grid}.shortcut-grid span{font:600 10px IBM Plex Mono,Cascadia Mono,monospace}.shortcut-grid b{font-size:10px}.toast{z-index:150;color:#fff;background:#263238;border-radius:12px;align-items:center;gap:7px;padding:11px 16px;font-size:11px;font-weight:700;animation:.2s both toast-in;display:flex;position:fixed;bottom:130px;left:50%;transform:translate(-50%);box-shadow:0 13px 40px #14252b42}.toast svg{width:16px}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}@media (width<=1180px){.console-stat{min-width:92px;padding:2px 9px}.road-identity{min-width:180px}.width-status{min-width:90px;padding:0 8px}.console-actions button span{display:none}.dock-title{width:105px}}@media (width<=860px){body{overflow:auto}.app{min-height:760px}.mobile-header{z-index:80;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fbfdfcf0;justify-content:space-between;align-items:center;height:58px;padding:7px 10px;display:flex;position:fixed;inset:0 0 auto}.mobile-header>div{flex-direction:column;align-items:center;display:flex}.mobile-header strong{font-size:13px}.mobile-header span{color:var(--muted);font-size:9px}.tool-rail{transition:transform .2s;top:65px;bottom:115px;left:8px;transform:translate(-110%)}.tool-rail.is-open{transform:translate(0)}.top-console{min-height:65px;top:66px;left:10px;right:10px;overflow-x:auto}.road-identity{display:none}.console-stat{flex:0 0 86px}.width-status{flex:0 0 100px}.console-actions{flex:none}.workspace{padding:140px 0 115px}.canvas-shell{--section-render-width:min(var(--section-display-width), calc(100% - 32px));min-height:500px}.element-dock{height:96px;bottom:8px;left:8px;right:8px}.dock-title{display:none}.dock-items button{min-width:68px}.property-panel{width:min(292px,100vw - 16px);top:auto;bottom:115px;right:8px}.style-panel{width:min(330px,100vw - 16px);max-height:none;top:140px;bottom:115px;left:8px}.scene-wing{width:max(16px, calc((100% - var(--section-render-width)) / 2))}.toast{bottom:116px}}@media (height<=720px) and (width>=861px){.tool-rail{inset-block:8px}.brand-mark{height:42px;margin-bottom:5px}.brand-mark span{width:34px;height:34px}.tool-rail button{min-height:42px}.top-console{min-height:60px;top:9px}.workspace{padding-top:78px;padding-bottom:112px}.element-dock{height:90px;bottom:8px}.property-panel{top:82px}}
