body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;margin:0}input:disabled{background:#f8faf7;color:#8c9885}::selection{background:#bce3cd;color:#244e32}::-webkit-scrollbar{height:5px;width:5px}::-webkit-scrollbar-thumb{background:#d5dfd0;border-radius:5px}::-webkit-scrollbar-track{background:#0000}*{box-sizing:border-box}button,input{font:inherit}button{align-items:center;cursor:pointer;display:inline-flex;gap:8px;justify-content:center;transition:background .15s,color .15s}button:disabled{cursor:default;opacity:.4}button:hover:not(:disabled){filter:brightness(.97)}a:focus-visible,button:focus-visible{outline:3px solid #72cbb0;outline-offset:3px}.app-shell{background:#f7f9f8;color:#263b35;display:flex;font-size:13px;min-height:100vh}.sidebar{background:#fff;border-right:1px solid #e2e9e5;display:flex;flex-direction:column;flex-shrink:0;height:100vh;padding:31px 20px 18px;position:sticky;top:0;width:244px}.brand{align-items:center;color:#203b31;display:flex;font-size:27px;font-weight:750;gap:10px;letter-spacing:-1.2px;text-decoration:none}.brand-icon{background:#2a9471;border-radius:10px;color:#fff;display:grid;height:36px;place-items:center;width:36px}.brand-dot{color:#28a47b;margin-left:-9px}.workspace-label{align-items:center;color:#8c9992;display:flex;font-size:10px;font-weight:700;justify-content:space-between;letter-spacing:1.6px;margin:47px 6px 24px}.workspace-label span{background:#f1f5f2;border-radius:4px;font-size:8px;letter-spacing:1px;padding:4px 6px}.map-heading{align-items:center;display:flex;justify-content:space-between;margin:0 6px 9px}h2{font-size:13px;font-weight:650;margin:0}.icon-btn{background:#0000;border:0;border-radius:6px;color:#7b8c84;padding:5px}.map-list{display:flex;flex-direction:column;gap:5px;max-height:24vh;overflow-y:auto}.map-item{background:#0000;border:1px solid #0000;border-radius:9px;color:#6b7b73;gap:11px;justify-content:flex-start;padding:13px 12px;text-align:left;width:100%}.map-item.active{background:#edf6f0;border-color:#d9ebdf;color:#24805e}.map-item>span{flex:1 1;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis}.map-item small{color:#7b9284;display:block;font-size:10px;font-weight:400;margin-top:5px}.map-item i{background:#35916b;border-radius:50%;height:6px;width:6px}.sidebar-divider{border-top:1px solid #edf0ee;margin:26px 5px}.section-kicker{color:#8b9a91;font-size:10px;font-weight:700;letter-spacing:1.3px}.sidebar .section-kicker{margin:0 6px}.muted{color:#8a9690}.sidebar-hint{font-size:11px;margin:9px 6px 18px}.tool-card{background:#fff;border:1px solid #e1e7e3;border-radius:9px;color:#3d5046;font-size:12px;font-weight:600;gap:10px;justify-content:flex-start;margin-bottom:10px;padding:12px 10px;text-align:left;width:100%}.tool-card.chosen{background:#f1f8f4;border-color:#45a27d}.tool-card>span:nth-child(2){flex:1 1}.tool-card small{color:#8c9991;display:block;font-size:10px;font-weight:400;margin-top:5px}.tool-preview{align-items:center;background:#f1f5f2;border-radius:7px;display:flex;flex-shrink:0;height:38px;justify-content:center;width:38px}.node-preview{border:1px solid #d4e5d9;color:#368461;font-size:16px;font-weight:700}.junction-preview{color:#77877c}.road-preview{color:#8a9a8e}.drag-dots{color:#b4beb7;font-size:19px}.sidebar-bottom{margin-top:auto;padding-top:40px}.local-badge{align-items:center;background:#f7f9f7;border:1px solid #edf0eb;border-radius:7px;color:#7d8b82;display:flex;font-size:10px;gap:7px;padding:11px 9px}.local-badge svg{margin-left:auto}.status-dot{background:#4ba47d;border-radius:50%;display:inline-block;flex-shrink:0;height:6px;width:6px}.status-dot.error{background:#d45e4a}.status-dot.idle{background:#99a59e}.status-dot.running{box-shadow:0 0 0 4px #e8f5ed}.help-button{background:none;border:0;color:#76877b;display:flex;font-size:11px;justify-content:flex-start;margin:14px 0 24px;width:100%}.help-button span:last-child{margin-left:auto}.version{color:#aab4ad;display:flex;font-size:8px;justify-content:space-between;letter-spacing:1.4px;padding:0 6px}.version span{letter-spacing:0}.main-area{flex:1 1;min-width:0;padding:0 30px}.topbar{border-bottom:1px solid #e5eae6;height:73px;justify-content:space-between}.breadcrumbs,.topbar{align-items:center;display:flex}.breadcrumbs{color:#94a096;font-size:11px;gap:13px}.breadcrumbs strong{color:#506358;font-weight:500}.project-badge{background:#eef2ee;border:1px solid #e1e8e0;border-radius:4px;color:#8b998d;font-size:8px;letter-spacing:1px;margin-left:3px;padding:5px 7px}.topbar-note{color:#90a094;font-size:10px;gap:7px}.topbar-note,.workspace-header{align-items:center;display:flex}.workspace-header{justify-content:space-between;padding:28px 0 25px}.eyebrow{color:#6b9e83;font-size:9px;font-weight:700;letter-spacing:1.9px;margin-bottom:9px}h1{font-size:28px;font-weight:650;letter-spacing:-.8px;line-height:1.2;margin:0 0 10px}.workspace-header p{color:#8b9990;font-size:12px;margin:0}.secondary{background:#fff;border:1px solid #dce4de;border-radius:7px;color:#617368;font-size:11px;font-weight:500;padding:10px 13px}.primary{background:#2c8f6b;border:1px solid #2c8f6b;border-radius:7px;box-shadow:0 2px 3px #22583a0b;color:#fff;font-size:11px;font-weight:550;padding:10px 14px}.primary.pause{background:#ebf4ee;color:#2c815f}.simulation-bar{background:#fff;border:1px solid #e0e7e1;border-bottom:0;border-radius:10px 10px 0 0;justify-content:space-between;padding:13px 16px}.simulation-bar,.simulation-controls{align-items:center;display:flex;gap:12px}.reset-btn{border:1px solid #e4e9e4;border-radius:6px;height:32px;width:32px}.vertical-line{border-left:1px solid #e4e9e3;height:22px}.speed-selector{background:#f3f6f3;border-radius:6px;display:flex;gap:2px;padding:3px}.speed-selector button{background:none;border:0;border-radius:4px;color:#9aa79c;font-size:10px;height:26px;width:32px}.speed-selector button.active{background:#fff;box-shadow:0 1px 4px #334d2f13;color:#398360}.sim-state{align-items:center;color:#8b998e;display:flex;font-size:10px;gap:7px}.clock{font-feature-settings:"tnum";border-left:1px solid #e7ece6;color:#5d7363;font-family:monospace;font-size:13px;font-variant-numeric:tabular-nums;letter-spacing:1px;margin-left:15px;padding-left:16px}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 263px;height:calc(100vh - 420px);max-height:850px;min-height:490px}.map-panel{border:1px solid #dfe6df;border-radius:0 0 0 10px;display:flex;flex-direction:column;min-width:0;overflow:hidden}.canvas-top{background:#fff;border-bottom:1px solid #e6ebe5;color:#647567;flex-shrink:0;font-size:10px;height:43px;justify-content:space-between;padding:0 16px}.canvas-top,.canvas-top>span{align-items:center;display:flex;gap:8px}.canvas-top small{color:#a2ada3;font-size:9px;margin-left:6px}.canvas-top b{font-weight:400;margin:0 3px}.canvas-label{color:#a6b1a6;font-size:8px}.canvas-wrap{background:#f0f3ee;flex:1 1;min-height:300px;overflow:hidden;position:relative}.map-canvas{height:100%;inset:0;position:absolute;touch-action:none;-webkit-user-select:none;user-select:none;width:100%}.map-canvas.tool-junction,.map-canvas.tool-node,.map-canvas.tool-road{cursor:crosshair}.node-shape,.road-shape{cursor:pointer}.node-number{fill:#458565;font-size:27px;font-weight:650}.node-label{fill:#516b59;font-size:14px;font-weight:600}.node-rate{fill:#7f9585;font-size:11px}.junction-label{fill:#90a091;font-size:11px;letter-spacing:.2px}.road-length{fill:#91a08f;font-size:9px}.port{cursor:crosshair}.floating-tools{background:#fff;border:1px solid #e0e6dd;border-radius:9px;box-shadow:0 4px 12px #3c54310a;display:flex;flex-direction:column;gap:3px;left:17px;padding:5px;position:absolute;top:17px}.floating-tools button{background:none;border:0;border-radius:5px;color:#95a08f;height:33px;width:32px}.floating-tools button.active{background:#e7f3e9;color:#388b61}.floating-tools>span{border-top:1px solid #edf0e8;margin:3px}.canvas-instruction{bottom:15px;color:#94a18e;font-size:9px;left:16px;pointer-events:none;position:absolute}.zoom-controls{align-items:center;background:#fff;border:1px solid #dde4d9;border-radius:6px;bottom:13px;box-shadow:0 3px 5px #31492208;display:flex;padding:3px;position:absolute;right:16px}.zoom-controls button{background:#0000;border:0;color:#85927d;font-size:17px;height:25px;width:27px}.zoom-controls span{color:#82917b;font-size:9px;min-width:36px;text-align:center}.zoom-controls button:last-child{border-left:1px solid #e7ece2;margin-left:3px}.canvas-footer{align-items:center;background:#fafcf9;border-top:1px solid #e2e8de;color:#9aa794;display:flex;flex-shrink:0;font-size:8px;height:35px;justify-content:space-between;padding:0 15px}.canvas-footer>span{align-items:center;display:flex;gap:6px}.canvas-footer i{display:inline-block;margin-left:10px}.canvas-footer i:first-child{margin-left:0}.legend-node{background:#dfeddf;border:1px solid #64a17c;border-radius:2px;height:7px;width:7px}.legend-road{background:#79877a;height:3px;width:12px}.legend-junction{border-top:3px solid #97a28e;height:8px;position:relative;width:8px}.legend-junction:after{background:#97a28e;content:"";height:5px;left:3px;position:absolute;top:0;width:2px}.inspector{background:#fff;border:1px solid #dfe6df;border-left:0;border-radius:0 0 10px 0;display:flex;flex-direction:column;min-height:0}.inspector-heading{align-items:center;border-bottom:1px solid #e6ebe5;color:#6c7f6e;display:flex;gap:9px;min-height:44px;padding:0 18px}.inspector-heading h2{color:#536a56;flex:1 1;font-size:11px}.inspector-body{flex:1 1;overflow:auto;padding:22px 19px}.field{display:block;margin-top:16px}.field>span{color:#6e806e;display:block;font-size:10px;margin-bottom:8px}.number-wrap{align-items:center;background:#fff;border:1px solid #e1e7dd;border-radius:6px;display:flex;height:36px;overflow:hidden}.number-wrap:focus-within{border-color:#52a67c}.number-wrap input{font-feature-settings:"tnum";background:#0000;border:0;color:#485f4b;font-size:11px;font-variant-numeric:tabular-nums;min-width:0;outline:0;padding:8px 10px;width:100%}.number-wrap small{color:#a0ac99;font-size:9px;padding:0 10px;white-space:nowrap}.text-input{background:#fff;border:1px solid #e1e7dd;border-radius:6px;color:#536b55;font-size:11px;outline:none;padding:10px;width:100%}.text-input:focus{border-color:#52a67c}.panel-divider{border-top:1px solid #edf0e9;margin:22px 0}.info-box{background:#f5f9f2;border:1px solid #e4eddf;border-radius:7px;color:#829475;display:flex;font-size:9px;gap:8px;line-height:1.7;margin-top:20px;padding:12px 10px}.info-box p{margin:0}.info-box>span{font-size:15px;line-height:1.3}.color-swatches{display:flex;gap:9px;margin:14px 0 9px}.color-swatches span{border:1px solid #0000000a;border-radius:50%;box-shadow:inset 0 0 0 2px #ffffff4a;height:18px;width:18px}.field-note{color:#9aa78f;font-size:10px;line-height:1.75;margin:10px 0}.inspector-tip{background:#fdfefb;border-radius:0 0 10px 0;border-top:1px solid #edf0e9;color:#a1af91;display:flex;font-size:9px;gap:10px;line-height:1.7;padding:14px 19px}.inspector-tip span{color:#a9b99a;font-size:17px}.inspector-tip p{margin:0}.sum-row{align-items:center;background:#eff7ef;border-radius:5px;color:#4f9062;display:flex;font-size:10px;justify-content:space-between;margin-top:15px;padding:10px}.sum-row.invalid{background:#fff5e5;color:#ae863e}.text-button{background:none;border:0;color:#3f9168;font-size:10px;padding:10px 0}.full{width:100%}.junction-diagram{color:#6d8271;flex-direction:column;padding:8px 0 22px}.junction-diagram,.priority-row{align-items:center;display:flex;font-size:10px;gap:8px}.priority-row{color:#748775;margin-top:13px}.priority-row b{background:#edf6ec;border-radius:4px;color:#579265;display:grid;height:23px;place-items:center;width:23px}.detail-row{color:#82937d;display:flex;font-size:11px;justify-content:space-between;margin-top:19px}.detail-row strong{color:#4e6c54;font-weight:500}.warnings{background:#fff7e9;border:1px solid #f0e0bc;border-radius:7px;color:#a87a35;font-size:10px;line-height:1.7;margin-top:18px;padding:8px 12px}.warnings p{margin:5px 0}.danger-text{background:none;border:0;color:#b68072;font-size:9px;margin-top:15px;padding:10px 0}.stats{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(4,1fr);margin:20px 0}.stats>div{align-items:center;background:#fff;border:1px solid #e2e8e0;border-radius:9px;display:flex;gap:12px;padding:17px 15px}.stat-icon{background:#eff7ed;border-radius:9px;color:#70a67c;display:grid;flex-shrink:0;font-size:21px;height:35px;place-items:center;width:35px}.stat-icon.amber{background:#fbf6e9;color:#c2a15d}.stat-icon.blue{background:#eff4fa;color:#8da6c4}.stat-icon.purple{background:#f3f1f9;color:#ab9ac6}.stats small{color:#99a78f;font-size:8px;letter-spacing:1px;white-space:nowrap}.stats strong{font-feature-settings:"tnum";align-items:baseline;color:#455e46;display:flex;font-size:22px;font-variant-numeric:tabular-nums;font-weight:600;gap:7px;line-height:1.5}.stats em{color:#a4af9b;font-size:9px;font-style:normal;font-weight:400;white-space:nowrap}.page-footer{align-items:center;color:#a8b2a0;display:flex;font-size:8px;justify-content:space-between;padding-bottom:15px}.page-footer>span:first-child{align-items:center;display:flex;gap:7px}.page-footer .status-dot{height:4px;width:4px}.empty-canvas{color:#82977b;left:50%;pointer-events:none;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:70%}.empty-canvas>span{background:#e6eee1;border-radius:18px;display:inline-flex;padding:18px}.empty-canvas h3{font-size:20px;font-weight:500}.empty-canvas p{font-size:12px;line-height:1.7}.toast{align-items:center;background:#263e31;border-radius:10px;bottom:30px;box-shadow:0 8px 30px #0002;color:#fff;display:flex;font-size:12px;gap:20px;left:50%;max-width:90vw;padding:15px 18px;position:fixed;transform:translateX(-50%);z-index:30}.toast button{background:none;border:0;color:#fff;font-size:20px}.modal-backdrop{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#172d2359;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:40}.modal{background:#fff;border-radius:15px;box-shadow:0 15px 80px #16362330;max-width:100%;padding:30px;width:440px}.modal h2{color:#344e39;font-size:21px;letter-spacing:-.5px}.modal>p{color:#82927b;font-size:12px;line-height:1.8}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:25px}.danger-button{background:#b95443;border:0;border-radius:7px;color:#fff;font-size:12px;padding:10px 18px}.help-modal{max-height:85vh;overflow:auto;width:540px}.help-modal>.primary{margin-top:10px}.help-modal b{color:#526a4f}@media(min-width:1600px){.main-area{padding:0 42px}.sidebar{width:260px}.editor-layout{grid-template-columns:minmax(0,1fr) 285px}.inspector-body{padding:25px}.stats>div{padding:20px}.workspace-header{padding:35px 0}}@media(max-width:1200px){.sidebar{padding:26px 14px;width:210px}.main-area{padding:0 20px}.editor-layout{grid-template-columns:minmax(0,1fr) 235px}.stats{gap:9px}.stats>div{gap:8px;padding:13px 10px}.canvas-label,.stats em{display:none}.canvas-top small{font-size:8px}.canvas-footer>span:last-child{display:none}.canvas-instruction{line-height:1.6;max-width:55%}.topbar-note{display:none}.tool-card{font-size:11px}.tool-card small{font-size:9px}}@media(max-width:960px){.sidebar{padding:23px 10px;width:175px}.brand{font-size:23px;gap:6px}.brand-icon{height:30px;width:30px}.workspace-label{font-size:8px;margin-top:32px}.tool-card{gap:6px;padding:9px 7px}.tool-preview{height:32px;width:29px}.tool-card small{font-size:8px}.drag-dots{display:none}.main-area{padding:0 14px}.editor-layout{grid-template-columns:minmax(0,1fr) 210px}.inspector-body{padding:18px 14px}.workspace-header>.secondary{font-size:0;padding:10px}.workspace-header>.secondary svg{height:18px;width:18px}.project-badge{display:none}.stats{grid-template-columns:repeat(4,1fr)}.stat-icon{display:none}.stats strong{font-size:21px}.stats small{font-size:7px}.canvas-top small{display:none}.sim-state{font-size:9px}.simulation-controls{gap:7px}.clock{margin-left:4px;padding-left:8px}.simulation-bar{padding:11px 10px}.primary{font-size:10px;padding:10px}.speed-selector button{width:25px}.vertical-line{display:none}}@media(max-width:720px){.app-shell{display:block}.sidebar{grid-gap:15px;border-bottom:1px solid #e2e9e5;display:grid;gap:15px;grid-template-columns:1fr 1fr 1fr;height:auto;padding:15px;position:relative;width:100%}.brand{grid-column:1/3}.map-heading h2,.sidebar-bottom,.sidebar-divider,.sidebar-hint,.sidebar>.section-kicker,.workspace-label{display:none}.map-heading{grid-column:3;grid-row:1;justify-self:end;margin:0}.map-heading .icon-btn{border:1px solid #e2e9e5}.map-list{display:flex;flex-direction:row;grid-column:1/-1;max-height:80px;overflow:auto}.map-item{flex-shrink:0;min-width:150px;padding:8px;width:auto}.tool-card{font-size:10px;gap:7px;grid-row:3;justify-content:center;margin:0;width:auto}.tool-card small,.tool-card>svg{display:none}.main-area{padding:0 14px}.topbar{height:45px}.workspace-header{padding:22px 0}h1{font-size:24px}.workspace-header p{font-size:10px}.eyebrow{font-size:8px}.simulation-bar{flex-wrap:wrap;gap:12px}.simulation-controls{flex:1 1}.sim-state{margin-left:auto}.sim-state .clock{font-size:11px}.editor-layout{display:flex;flex-direction:column;height:auto;min-height:0}.map-panel{border-radius:0;height:500px}.inspector{border-left:1px solid #dfe6df;border-radius:0 0 10px 10px;border-top:0;max-height:470px;min-height:240px}.inspector-body{padding:18px}.inspector-tip{display:none}.stats{grid-template-columns:repeat(2,1fr);margin:15px 0}.stats em{display:block}.stats small{font-size:8px}.stat-icon{display:grid}.canvas-instruction{font-size:8px}.page-footer{font-size:7px}.breadcrumbs{font-size:10px}}.sidebar{overflow-y:auto}.map-list{flex-shrink:0}@media(max-width:720px){.sidebar{grid-template-columns:repeat(4,minmax(0,1fr))}.brand{grid-column:1/4}.map-heading{grid-column:4}.tool-card{flex-direction:column;font-size:9px;min-width:0}.tool-card>span:nth-child(2){flex:initial}}.map-canvas.tool-cross{cursor:crosshair}.workspace-actions{align-items:center;display:flex;gap:8px}@media(max-width:960px){.workspace-actions .secondary{font-size:0;padding:10px}.workspace-actions .secondary svg{height:18px;width:18px}}.map-actions{position:relative}.map-actions summary{align-items:center;cursor:pointer;display:flex;gap:8px;list-style:none}.map-actions summary::-webkit-details-marker{display:none}.map-actions-menu{background:#fff;border:1px solid #dce4de;border-radius:9px;box-shadow:0 8px 25px #203b3120;min-width:220px;padding:6px;position:absolute;right:0;top:calc(100% + 7px);z-index:15}.map-actions-menu button{background:#fff;border:0;border-radius:5px;color:#617368;display:flex;font-size:11px;justify-content:flex-start;padding:11px 10px;width:100%}.map-actions-menu button:hover{background:#edf6f0}.map-transfer-input{border:1px solid #dce4de;border-radius:7px;color:#435d4b;font:11px/1.6 monospace;max-height:45vh;min-height:220px;outline:none;padding:12px;resize:vertical;width:100%}.map-transfer-input:focus{border-color:#52a67c}.transfer-modal{width:580px}.transfer-error{color:#b55b45;font-size:11px;line-height:1.6}.workspace-header>div:first-child{min-width:0}.workspace-header h1{overflow-wrap:anywhere}.workspace-actions{flex-shrink:0}@media(max-width:960px){.map-actions summary{font-size:0;padding:10px}}
/*# sourceMappingURL=main.3986b3bd.css.map*/