@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;800&display=swap');
:root{--ink:#253a31;--muted:#7d887e;--orange:#ee955b;--green:#577962;--line:#dce1d7;--paper:#f8f9f4;--side:280px;--right:278px}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font-family:'DM Sans',sans-serif;color:var(--ink);background:#e7ece3;font-size:14px}button,input{font:inherit}button{cursor:pointer;border:0;background:none;color:inherit}button:disabled{opacity:.35;cursor:not-allowed}button:not(:disabled):hover{filter:brightness(.96)}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--orange);outline-offset:3px}a{color:inherit;text-decoration:none}#scene{position:fixed;inset:0;background:radial-gradient(ellipse at 50% 60%,#f1f4ed,#e3e9de)}#scene canvas{display:block;width:100%;height:100%;touch-action:none}#scene-labels{position:fixed;inset:0;pointer-events:none;z-index:2;overflow:hidden}header{position:absolute;top:0;left:0;right:0;height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 29px;border-bottom:1px solid #d7ded3;background:#f6f8f1f0;z-index:10}.brand{display:flex;align-items:center;font-family:Manrope,sans-serif;font-size:30px;font-weight:800;letter-spacing:-1.4px}.brand-icon{background:var(--ink);color:#f3b37f;width:34px;height:34px;font-size:25px;border-radius:8px;display:grid;place-items:center;margin-right:10px;letter-spacing:0}.brand-separator{height:19px;width:1px;background:#ccd4c8;margin:0 17px}.brand-sub{font-family:'DM Sans',sans-serif;font-size:14px;font-weight:400;letter-spacing:0;color:#72816e}.header-center{display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:1.5px;color:#809078}.status-dot{height:5px;width:5px;border-radius:50%;background:#849b76}.header-buttons{display:flex;align-items:center;gap:22px;font-size:12px}.text-button{display:flex;align-items:center;gap:7px}.outline-button{border:1px solid #ccd7c5;border-radius:6px;padding:10px 13px;display:flex;gap:8px;background:#f5f7ef}.scene-title{position:absolute;top:110px;left:324px;right:320px;pointer-events:none;z-index:3}.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:600;color:#839378}.scene-title h1{font-family:Manrope,sans-serif;font-weight:500;letter-spacing:-1.3px;font-size:clamp(24px,2.3vw,34px);margin:10px 0 8px}.scene-title p{font-size:13px;color:#8b9683;margin:0}.panel{position:absolute;z-index:5;background:#f9faf5ed;backdrop-filter:blur(14px);border:1px solid #d8dfd2;border-radius:12px;box-shadow:0 8px 30px #344f2520;overflow:auto;scrollbar-width:thin;scrollbar-color:#cbd5c3 transparent}.delivery-panel{left:24px;top:104px;width:var(--side);max-height:calc(100% - 177px);padding:23px 21px}.route-panel{right:24px;top:104px;width:var(--right);max-height:calc(100% - 177px);padding:23px 21px}.panel-top{display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:1.25px;color:#86957b;font-weight:600}.tiny-tag{letter-spacing:1px;font-size:8px;padding:4px 6px;border:1px solid #d7e1ce;background:#eff4e9;border-radius:4px;color:#849a74}.delivery-id{display:flex;align-items:center;gap:5px;margin-top:22px;font-family:Manrope,sans-serif;font-size:22px;letter-spacing:-.8px;font-weight:500}.delivery-id strong{font-weight:500}.status-badge{margin-left:auto;letter-spacing:0;font-family:'DM Sans',sans-serif;font-size:10px;border-radius:4px;padding:5px 8px;background:#f4e8d5;color:#ad7a3c}.status-badge.transit{background:#e5eee0;color:#688358}.status-badge.delivered{background:#dbeadf;color:#417655}.journey{margin:23px 0 27px}.journey-point{display:flex;gap:12px;align-items:center}.journey-point strong{font-size:13px;font-weight:500;display:block}.journey-point small{display:block;font-size:10px;color:#8b9880;margin-top:4px}.journey-point small span{margin-left:5px;font-size:9px}.point-marker{width:10px;height:10px;flex-shrink:0;background:var(--orange);border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px var(--orange)}.destination-marker{background:var(--green);box-shadow:0 0 0 1px var(--green)}.journey-line{height:24px;margin:4px 0 4px 4px;border-left:1px dashed #b8c5ae}.progress-top{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#8a987f}.progress-top strong{font-weight:500;color:#63745a}.progress-track{height:5px;background:#e6ecdf;border-radius:5px;margin-top:10px;overflow:hidden}.progress-track>div{height:100%;width:0;background:#769564;transition:width .1s}.progress-caption{display:flex;align-items:center;justify-content:space-between;font-size:9px;color:#95a18b;margin-top:8px}.section-divider{height:1px;background:var(--line);margin:23px 0}.entity-heading{font-size:9px;color:#71836b;letter-spacing:1px;display:flex;align-items:center;gap:7px;font-weight:600}.entity-symbol{font-size:15px;color:#81966d;letter-spacing:0}.entity-code{margin-left:auto;font-size:9px;font-weight:400;letter-spacing:0;color:#9da994}.robot-status-row{display:flex;align-items:center;justify-content:space-between;margin:14px 0 19px}.robot-state{font-size:13px;font-weight:500}.state-pill{font-size:8px;letter-spacing:.8px;padding:4px 7px;border-radius:4px;background:#e5ebdf;color:#7a8d69}.state-pill.moving{background:#f3e1ca;color:#a97735}.state-pill.waiting{background:#f5e5d8;color:#b1794b}.spec-list{margin:0;display:flex;flex-direction:column;gap:13px}.spec-list>div{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px}.spec-list dt{color:#8b9981}.spec-list dd{margin:0;font-size:11px;font-weight:500;text-align:right;color:#586d50}.inline-input{border:0;border-bottom:1px dashed #c0cfb7;background:transparent;color:inherit;width:40px;max-width:100%;padding:0 0 2px;text-align:right;appearance:textfield}.inline-input::-webkit-inner-spin-button{appearance:none}.inline-input:disabled{border-color:transparent;opacity:1}.package-specs{margin-top:16px}.panel-description{font-size:11px;color:#8d9c82;line-height:1.6;margin:16px 0 19px}.entity-count{font-size:8px;letter-spacing:.7px;font-weight:400;color:#98a68e}.segment-row{display:flex;width:100%;align-items:center;text-align:left;gap:10px;border-radius:7px;border:1px solid transparent;padding:11px 8px;position:relative;margin:3px 0}.segment-row.selected{background:#eef2e8;border-color:#d8e1cf}.segment-index{flex-shrink:0;display:grid;place-items:center;width:27px;height:27px;border:1px solid #cfdbc5;border-radius:6px;background:#f8faf2;font-size:10px;color:#8b9d7d}.segment-row.complete .segment-index{background:#dae7d2;color:#698557;border-color:#c3d6b8}.segment-row.active .segment-index{background:#f0d5b7;border-color:#e6c69b;color:#a67333}.segment-row.warning .segment-index{background:#f5e3d6;border-color:#e9c7b0;color:#ad7957}.segment-name{display:block;font-size:12px;font-weight:500}.segment-sub{display:block;font-size:9px;color:#93a487;margin-top:3px}.segment-indicator{margin-left:auto;font-size:14px;color:#c2ceb7}.selected-path{display:flex;align-items:center;gap:8px;font-size:12px;margin-bottom:19px}.selected-path>span:first-child{border:1px solid #d0ddc5;background:#f1f6ec;border-radius:4px;padding:3px 5px;font-size:9px;color:#8c9e7e}.selected-path strong{font-size:12px;font-weight:500}.passable-label{margin-left:auto;font-size:9px;color:#6f925e}.passable-label.warning{color:#b17c59}.path-specs{gap:10px;margin-bottom:24px}.width-label{display:flex;justify-content:space-between;font-size:11px;color:#899b7c;align-items:center}.width-label .unit{font-size:8px;letter-spacing:1px;color:#a1af95}.width-control{display:flex;align-items:center;border:1px solid #d0dec6;border-radius:6px;background:#f5f8ef;margin:8px 0 12px;padding:0 11px}.width-control input{border:0;width:100%;background:none;padding:10px 0;outline:none;color:#587248;font-size:14px;appearance:textfield}.width-control input::-webkit-inner-spin-button{appearance:none}.width-control span{font-size:11px;color:#98aa89}.clearance-track{position:relative;height:5px;background:#e2ebd9;border-radius:5px}.clearance-track>div:first-child{background:#9cba84;width:53%;height:100%;border-radius:5px}.clearance-track>div:last-child{position:absolute;top:-3px;height:11px;width:2px;background:#697e55;left:23%}.clearance-labels{display:flex;align-items:center;justify-content:space-between;color:#a0b091;font-size:8px;margin-top:9px}.clearance-labels b{font-weight:500;color:#7b9567}.blocked-control{display:flex;position:relative;align-items:center;justify-content:space-between;margin-top:27px;cursor:pointer}.blocked-control strong{display:block;font-size:11px;font-weight:500}.blocked-control small{display:block;margin-top:5px;color:#a0ae92;font-size:9px}.blocked-control input{position:absolute;right:0;width:35px;height:20px;opacity:0;margin:0;cursor:pointer;z-index:2}.switch-track{width:33px;height:19px;border-radius:20px;background:#d4dfca;position:relative;transition:.2s}.switch-track:after{content:'';position:absolute;width:13px;height:13px;left:3px;top:3px;border-radius:50%;background:#fafbf6;box-shadow:0 1px 3px #536a4033;transition:.2s}.blocked-control input:checked+.switch-track{background:var(--orange)}.blocked-control input:checked+.switch-track:after{transform:translateX(14px)}.blocked-control input:focus-visible+.switch-track{outline:2px solid var(--orange);outline-offset:3px}.blocked-control:has(input:disabled){opacity:.45;cursor:not-allowed}.path-note{background:#eef3e8;border:1px solid #dbe5d1;border-radius:6px;font-size:9px;color:#8b9e7c;line-height:1.65;padding:10px;margin-top:19px}.view-controls{position:absolute;right:calc(var(--right) + 43px);top:248px;display:flex;align-items:center;background:#fafbf5e8;backdrop-filter:blur(10px);border:1px solid #d6e0cd;border-radius:7px;z-index:4;box-shadow:0 3px 15px #38522610}.view-controls button{height:33px;width:33px;font-size:19px;color:#7b8f6b}.view-controls>span{height:15px;width:1px;background:#dce5d4}.scene-legend{position:absolute;left:calc(var(--side) + 43px);bottom:207px;display:flex;align-items:center;gap:16px;color:#84957a;font-size:9px;z-index:3}.scene-legend>span{display:flex;align-items:center;gap:6px}.legend-line{width:15px;height:3px;border-radius:2px;background:#dfa575}.legend-dot{width:6px;height:6px;border-radius:50%;background:#e5a878}.legend-dot.destination{background:#83a075}.action-dock{position:absolute;z-index:6;left:calc(var(--side) + 43px);right:calc(var(--right) + 43px);bottom:68px;border:1px solid #d6dfcc;border-radius:12px;background:#f9fbf4f5;backdrop-filter:blur(12px);box-shadow:0 6px 24px #36512818;overflow:hidden}.dock-message{display:flex;align-items:center;gap:11px;padding:16px 19px;border-bottom:1px solid #dfe7d5}.dock-message>span:first-child{font-size:20px;color:#b88858;flex-shrink:0}.dock-message strong{font-size:12px;font-weight:600;display:block;color:#6a7c5d}.dock-message div>span{font-size:10px;color:#9aa88e;display:block;margin-top:4px}.dock-step{margin-left:auto;font-size:8px;letter-spacing:.9px;color:#a8b69a;white-space:nowrap}.actions{display:grid;grid-template-columns:repeat(4,1fr);padding:9px;gap:5px}.action-button{display:flex;align-items:center;gap:9px;padding:13px 10px;border:1px solid transparent;border-radius:7px;text-align:left;color:#6a7b5d}.action-button.featured{background:#f2d4b8;color:#805932;border-color:#ebc6a3}.action-button.active-action{background:#e2ecd8;border-color:#ccddbf;color:#597b44}.action-icon{font-size:22px;line-height:1;flex-shrink:0}.action-button strong{font-size:12px;font-weight:600;display:block}.action-button small{font-size:8px;color:#99a38d;display:block;margin-top:4px;white-space:nowrap}.action-button.featured small{color:#b18d6a}.action-button kbd{margin-left:auto;font-size:8px;color:#aab598;border:1px solid #dce5d1;border-radius:3px;padding:2px 4px;font-family:inherit}.action-button.featured kbd{border-color:#dcb997;color:#b08359}footer{position:absolute;z-index:9;bottom:0;left:0;right:0;background:#f6f9eff2;border-top:1px solid #d3dec7;height:46px;display:flex;align-items:center;justify-content:space-between;padding:0 27px;font-size:10px;color:#8c9f7e;gap:18px}footer>div{display:flex;align-items:center;gap:8px}.log-dot{width:5px;height:5px;border-radius:50%;background:#b6c6a4;flex-shrink:0}.footer-hint{font-size:9px;color:#a2b195}.footer-hint i{font-style:normal;margin:0 8px}footer button{font-size:10px;display:flex;align-items:center;gap:7px}footer button span{font-size:8px;border:1px solid #d4e0c8;padding:2px 5px;border-radius:3px}.map-label{position:absolute;white-space:nowrap;transform:translate(-50%,-100%);border:1px solid #ccd7c3;border-radius:5px;background:#f9fbf5eb;box-shadow:0 3px 10px #2d452a12;padding:7px 10px;font-size:10px;color:#809572}.map-label strong{display:flex;align-items:center;gap:6px;font-weight:600;font-size:11px;color:#657b56}.map-label small{display:block;font-size:8px;margin-top:3px;color:#a0b28e}.map-label.robot-label{background:#f0d5b9e8;border-color:#dfb993;color:#997345;padding:5px 9px;font-size:9px}.map-label .label-dot{width:5px;height:5px;border-radius:50%;background:#e6a26b}.map-label.destination-label .label-dot{background:#759b67}#toast{position:absolute;left:50%;bottom:218px;transform:translate(-50%,8px);opacity:0;transition:.2s;padding:12px 18px;max-width:calc(100vw - 32px);background:#33472b;color:#f5f8ee;font-size:12px;border:1px solid #657d54;border-radius:7px;box-shadow:0 6px 24px #17250f25;pointer-events:none;z-index:20}#toast.visible{opacity:1;transform:translate(-50%,0)}dialog{background:#f9fbf4;color:#4c6240;border:1px solid #bacdb0;border-radius:15px;padding:27px;width:540px;max-width:calc(100vw - 32px);max-height:85vh;box-shadow:0 30px 100px #263f1440}dialog::backdrop{background:#31492666;backdrop-filter:blur(5px)}.dialog-top{display:flex;align-items:center;justify-content:space-between}.dialog-top button{font-size:25px;color:#829775}dialog h2{font-family:Manrope,sans-serif;font-weight:500;font-size:26px;letter-spacing:-1px;margin:22px 0 12px}dialog p{font-size:14px;line-height:1.7;color:#8a9b7f}.rules-list{padding-left:19px;font-size:13px;line-height:1.7;color:#859876}.rules-list li{margin:12px 0}.rules-list strong{color:#526e41}.relations{font-size:13px;line-height:1.8;border:1px solid #d1dfc6;border-radius:7px;background:#eef4e7;padding:12px 15px;color:#74925e}.activity-list{padding:0;list-style:none;max-height:50vh;overflow:auto}.activity-list li{padding:13px 0;border-bottom:1px solid #dfE8d6;font-size:13px;line-height:1.6;color:#7d9769}.activity-list li.warning{color:#b48155}.error-overlay{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);width:300px;text-align:center;font-size:14px;color:#7e5b3d;line-height:1.7}
@media(max-height:790px) and (min-width:981px){.delivery-panel,.route-panel{top:95px;padding:18px;max-height:calc(100% - 157px)}.journey{margin:17px 0 20px}.section-divider{margin:17px 0}.spec-list{gap:10px}.panel-description{margin:11px 0}.segment-row{padding:8px}.path-specs{margin-bottom:17px}.blocked-control{margin-top:18px}.scene-title{top:102px}.scene-title h1{font-size:28px}.view-controls{top:226px}.action-dock{bottom:62px}.dock-message{padding:13px 16px}.action-button{padding:10px 8px}.scene-legend{bottom:181px}}
@media(max-width:1250px){:root{--side:247px;--right:247px}.delivery-panel{left:18px;padding:20px 17px}.route-panel{right:18px;padding:20px 17px}.scene-title{left:287px;right:280px}.header-center{display:none}.action-dock{left:282px;right:282px}.action-button{gap:6px;padding:12px 7px}.action-button kbd{display:none}.action-button small{font-size:7px}.dock-step{display:none}.view-controls{right:282px}.scene-legend{left:282px;gap:10px}.scene-title h1{font-size:27px}.brand-sub{font-size:13px}}
@media(max-width:980px){:root{--side:220px;--right:220px}.delivery-panel{left:15px;top:174px;padding:17px;max-height:calc(100% - 365px)}.route-panel{right:15px;top:174px;padding:17px;max-height:calc(100% - 365px)}header{height:67px;padding:0 18px}.brand{font-size:26px}.brand-icon{width:30px;height:30px;font-size:22px}.brand-sub{font-size:12px}.header-buttons{gap:15px;font-size:11px}.scene-title{top:89px;left:26px;right:200px}.scene-title h1{font-size:27px;margin:7px 0}.scene-title p{display:none}.eyebrow{font-size:9px}.action-dock{left:20px;right:20px;bottom:61px;max-width:620px;margin:auto}.actions{padding:7px}.action-button{padding:12px 10px}.action-button small{font-size:9px}.view-controls{top:110px;right:25px}.scene-legend{left:50%;transform:translateX(-50%);bottom:211px;font-size:9px;white-space:nowrap}.footer-hint{display:none}.delivery-id{font-size:20px;margin-top:16px}.section-divider{margin:18px 0}.journey{margin:19px 0}.journey-point strong{font-size:12px}.panel-top{font-size:9px}.entity-count{font-size:7px}.segment-name{font-size:11px}.selected-path strong{font-size:11px}.passable-label{font-size:8px}.path-note{font-size:9px}.spec-list{gap:11px}.panel-description{font-size:10px}.dock-message{padding:13px 16px}}
@media(max-width:800px){:root{--side:0px;--right:0px}header{height:61px;padding:0 15px}.brand{font-size:25px}.brand-sub,.brand-separator{display:none}.header-buttons{gap:12px}.outline-button{padding:8px 10px}.text-button span{display:none}.scene-title{top:80px;left:19px;right:15px}.scene-title .eyebrow{font-size:8px}.scene-title h1{font-size:25px}.delivery-panel{top:156px;left:15px;width:165px;padding:13px;max-height:159px;border-radius:9px}.delivery-id{font-size:16px;margin-top:12px}.status-badge{font-size:8px;padding:3px 5px}.panel-top{font-size:8px;letter-spacing:.8px}.tiny-tag{font-size:6px;padding:3px 4px}.journey{margin:12px 0 0}.journey-point{gap:8px}.journey-point strong{font-size:10px}.journey-point small{font-size:8px}.journey-point small span{display:none}.journey-line{height:13px;margin:2px 0 2px 4px}.delivery-panel>.progress-top,.delivery-panel>.progress-track,.delivery-panel>.progress-caption,.delivery-panel>.section-divider,.delivery-panel>.entity-heading,.delivery-panel>.robot-status-row,.delivery-panel>.spec-list{display:none}.route-panel{top:156px;right:15px;width:181px;padding:13px;max-height:159px;border-radius:9px}.route-panel .entity-count,.route-panel .panel-description,.route-panel .section-divider,.route-panel .selected-path,.route-panel .path-specs,.route-panel .width-label,.route-panel .width-control,.route-panel .clearance-track,.route-panel .clearance-labels,.route-panel .blocked-control,.route-panel .path-note{display:none}.segment-row{padding:3px 0;gap:6px;margin:4px 0;border-radius:4px}.segment-index{width:18px;height:18px;font-size:7px;border-radius:4px}.segment-name{font-size:9px}.segment-sub{display:none}.segment-indicator{font-size:10px;margin-right:3px}.route-panel #segment-list{margin-top:9px}.view-controls{right:18px;top:328px}.view-controls button{width:28px;height:28px;font-size:17px}.scene-legend{font-size:8px;bottom:204px;gap:11px}.action-dock{left:14px;right:14px;bottom:56px;border-radius:10px}.dock-message{padding:11px 13px;gap:8px}.dock-message>span:first-child{font-size:17px}.dock-message strong{font-size:11px}.dock-message div>span{font-size:9px}.actions{padding:6px;gap:3px}.action-button{flex-direction:column;text-align:center;gap:6px;justify-content:center;padding:10px 5px}.action-icon{font-size:19px}.action-button strong{font-size:11px}.action-button small{font-size:7px;margin-top:3px}.action-button kbd{display:none}footer{padding:0 15px;font-size:8px;gap:10px;height:42px}footer>div{max-width:75%;line-height:1.6}footer button{font-size:9px}footer button span{font-size:7px}.map-label{padding:5px 7px}.map-label strong{font-size:9px}.map-label small{font-size:7px}.map-label.robot-label{font-size:8px;padding:4px 6px}#toast{font-size:11px;bottom:215px}.mobile-details-button{position:absolute;right:15px;top:129px;border-bottom:1px dashed #9eb28e;padding:0;font-size:9px;color:#91a281;z-index:10}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.mobile-details-button{display:none}.dialog-save{margin-top:20px;background:#e5eedc;border-color:#bcd0aa;color:#607e48;width:100%;justify-content:center}.mobile-check{display:flex;gap:8px;align-items:center;font-size:14px;color:#7f996a}#mobile-spec-form label{display:block;font-size:13px;margin:14px 0;color:#849d70}#mobile-spec-form input{display:block;width:100%;padding:10px;border:1px solid #bfcfb0;background:#f1f6e9;border-radius:5px;margin-top:7px;color:#617e4c}
@media(max-width:800px){.mobile-details-button{display:block}}
