@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2) format("woff2"),url(/assets/dm-sans-latin-400-normal-BwCSEQnW.woff) format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2) format("woff2"),url(/assets/dm-sans-latin-500-normal-Dr3UlScf.woff) format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/dm-sans-latin-600-normal-Aqo67rzb.woff2) format("woff2"),url(/assets/dm-sans-latin-600-normal-BmdmIIQ2.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/manrope-latin-500-normal-BYYD-dBL.woff2) format("woff2"),url(/assets/manrope-latin-500-normal-DMZssgOp.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/manrope-latin-700-normal-BZp_XxE4.woff2) format("woff2"),url(/assets/manrope-latin-700-normal-DGRFkw-m.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/manrope-latin-800-normal-BfWYOv1c.woff2) format("woff2"),url(/assets/manrope-latin-800-normal-uHUdIJgA.woff) format("woff")}:root{font-family:DM Sans,sans-serif;color:#283b35;background:#f5f4ef;font-synthesis:none;font-size:13px;font-weight:450}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;color:inherit;border:0;background:none}button:disabled{opacity:.35;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,svg circle:focus-visible{outline:3px solid #45a98d;outline-offset:3px}input,select{color:inherit}button svg{flex-shrink:0}button{transition:background .15s,color .15s}button:hover:not(:disabled){background:#edf3ee}button.primary:hover:not(:disabled){background:#235a4b}.app{height:100dvh;min-height:540px;display:flex;flex-direction:column;overflow:hidden}.topbar{height:84px;background:#fff;display:flex;align-items:center;padding:0 28px;border-bottom:1px solid #e7ebe6;gap:30px;flex-shrink:0}.brand{text-decoration:none;color:#203b31;display:flex;align-items:center;gap:10px;font-family:Manrope,sans-serif;font-size:24px;font-weight:800;letter-spacing:-1.2px;line-height:1.2;min-width:222px}.brand-light{font-weight:500}.brand small{display:block;font-family:DM Sans,sans-serif;letter-spacing:2px;font-size:8px;font-weight:600;margin-top:5px;color:#849188}.brand-icon{display:grid;place-items:center;width:40px;height:44px;border-radius:11px;background:#1d483b;color:#c6e4ad;transform:rotate(-5deg)}.project-title{border-left:1px solid #e0e5df;padding-left:28px;min-width:0}.project-title input{display:block;border:0;background:none;font-family:Manrope,sans-serif;font-size:15px;font-weight:700;width:240px;max-width:100%;padding:0;margin-bottom:5px}.project-title>span{display:flex;align-items:center;gap:5px;color:#8a958e;font-size:10px}.header-actions{margin-left:auto;display:flex;gap:12px}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #dfe5df;border-radius:7px;background:#fff;padding:10px 14px;font-weight:600;font-size:12px;min-height:40px}.button.primary{background:#1e493b;color:#fff;border-color:#1e493b}.button.subtle{border-color:transparent}.workspace-bar{height:53px;flex-shrink:0;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 26px;border-bottom:1px solid #e1e6de}.breadcrumb{font-size:11px;color:#909a91}.breadcrumb span{margin:0 13px;color:#bac2b9}.breadcrumb strong{font-weight:500;color:#536358}.workspace-actions{display:flex;align-items:center;gap:10px}.workspace-actions button{display:flex;align-items:center;gap:7px;font-size:11px;padding:7px;border-radius:5px}.workspace-actions button[aria-pressed=true]{color:#267961}.divider{height:20px;width:1px;background:#e8ebe6;margin:0 4px}.workspace{flex:1;min-height:0;display:flex}.tools{width:104px;flex-shrink:0;overflow-y:auto;background:#fff;border-right:1px solid #e2e7e0;display:flex;flex-direction:column;gap:8px;padding:22px 10px 12px}@media(max-height:800px){.tools>button,.tool-bottom>button{min-height:60px;flex-shrink:0}.tools{gap:5px;padding-top:16px}.shortcut{display:none}.tool-bottom{padding-top:12px}}.tool-caption{font-size:8px;letter-spacing:1.6px;color:#96a095;text-align:center;margin-bottom:8px}.tools>button,.tool-bottom>button{border-radius:9px;min-height:74px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;position:relative;width:100%}.tools button>span{font-size:10px}.tools button.active{background:#e6efe7;color:#1b674e}.tools button kbd{position:absolute;right:7px;top:5px;color:#abb5ab;font-size:8px;font-family:inherit}.tool-bottom{margin-top:auto}.shortcut{text-align:center;font-size:8px;letter-spacing:1px;color:#9aa598;margin-bottom:14px}.shortcut span{font-size:9px;letter-spacing:0;line-height:1.8;display:block;margin-top:6px;color:#899286}.fit-icon{font-size:26px!important}.canvas-wrap{position:relative;flex:1;min-width:0;overflow:hidden}.canvas{width:100%;height:100%;display:block;touch-action:none;overscroll-behavior:none}.tool-line,.tool-curve,.tool-free{cursor:crosshair}.canvas-label{position:absolute;top:23px;left:25px;display:flex;align-items:center;gap:7px;color:#768477;font-size:8px;letter-spacing:1.6px;pointer-events:none}.canvas-label>span:last-child{letter-spacing:.2px;color:#9ca599;border-left:1px solid #cdd4c9;padding-left:10px;margin-left:4px}.live-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#5d956c;flex-shrink:0}.canvas-hint{position:absolute;bottom:29px;left:50%;transform:translate(-50%);background:#fffffff0;padding:10px 16px;border:1px solid #e1e6db;border-radius:7px;box-shadow:0 2px 7px #20382406;color:#7d897d;font-size:10px;max-width:calc(100% - 60px);text-align:center;pointer-events:none}.zoom{position:absolute;right:20px;bottom:77px;display:flex;align-items:center;border:1px solid #dfe5da;border-radius:7px;background:#fff;box-shadow:0 2px 7px #20382405;height:34px;font-size:10px;color:#738070}.zoom button{font-size:18px;width:32px;height:32px}.zoom span{min-width:42px;text-align:center}.zoom button:last-child{border-left:1px solid #e5e9e0}.inspector{width:282px;background:#fff;border-left:1px solid #e0e5de;overflow-y:auto;flex-shrink:0;scrollbar-width:thin;scrollbar-color:#cbd7ca transparent}.inspector-title{display:flex;align-items:center;justify-content:space-between;padding:24px 21px 19px}.inspector-title h2{margin:0;font-size:13px;font-weight:650}.inspector-title>span{font-size:8px;color:#98a492;letter-spacing:1px}.selected-card{margin:0 18px 20px;background:#f5f7f2;border:1px solid #e6ebe0;border-radius:8px;padding:12px;display:flex;gap:10px;align-items:center}.selected-icon{color:#578364}.selected-card input{border:0;background:none;font-weight:600;font-size:12px;width:150px;padding:0}.selected-card small{display:block;color:#9aa590;font-size:9px;margin-top:4px}.selected-dot{width:6px;height:6px;background:#79a86b;border-radius:50%;margin-left:auto}fieldset{border:0;padding:0;margin:0;min-width:0}.property-section{border-top:1px solid #edf0e8;padding:20px}.property-section h3{margin:0 0 18px;font-size:11px;font-weight:650}.property-section h3 small{font-weight:400;color:#97a48e}.property-section label{font-size:11px;color:#78836e;display:block}.range-label{display:flex!important;justify-content:space-between;align-items:center}.range-label output{border:1px solid #e2e7db;border-radius:5px;padding:6px 8px;color:#40513b;font-size:11px}.range-label output small{font-size:8px;color:#9aa58e;margin-left:5px}input[type=range]{width:100%;accent-color:#427153;height:4px;margin:18px 0 6px;cursor:pointer}.field-help{font-size:9px;color:#9da78f;line-height:1.6;margin:7px 0 14px}.color-row{display:flex!important;justify-content:space-between;align-items:center;margin-top:18px}.color-row>div{display:flex;align-items:center;border:1px solid #e3e8dd;border-radius:5px;padding:4px 6px;gap:7px}.color-row span{font-size:9px;color:#748166;font-family:monospace}input[type=color]{width:25px;height:24px;padding:0;border:0;border-radius:4px;background:none;cursor:pointer}input[type=color]::-webkit-color-swatch-wrapper{padding:2px}input[type=color]::-webkit-color-swatch{border:1px solid #0001;border-radius:4px}.segmented{display:flex;border:1px solid #e4e8dd;border-radius:6px;padding:3px;margin:10px 0 17px}.segmented button{flex:1;border-radius:4px;font-size:9px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 4px;color:#95a086}.segmented .active{background:#e9efe2;color:#456636}.line-sample{width:34px;border-top:2px solid #7c8f6a;height:3px}.line-sample.dashed{border-top-style:dashed}.line-sample.none{border-top-color:transparent;position:relative}.line-sample.none:after{content:"—";position:absolute;left:13px;top:-9px;color:#b5beac}.toggle-row{display:flex!important;align-items:center;justify-content:space-between;margin:18px 0;font-size:12px;color:#667a5d}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:29px;height:17px;background:#d9e0d1;border-radius:20px;position:relative;cursor:pointer;flex-shrink:0}input[type=checkbox]:after{content:"";position:absolute;left:3px;top:3px;background:#fff;width:11px;height:11px;border-radius:50%;transition:transform .15s}input[type=checkbox]:checked{background:#557c43}input[type=checkbox]:checked:after{transform:translate(12px)}.number-grid{display:flex;gap:8px;margin:17px 0}.number-grid label{flex:1;min-width:0;font-size:9px}.number-grid input,.number-grid select{width:100%;margin-top:7px;border:1px solid #e2e7dc;border-radius:5px;padding:7px;background:#fff;font-size:11px}.property-section select,.join select{display:block;width:100%;padding:8px;border:1px solid #e2e7dc;border-radius:5px;font-size:10px;background:#fff;margin-top:8px}.edit-buttons{display:grid;grid-template-columns:1fr 1fr;gap:7px}.edit-buttons button{display:flex;align-items:center;gap:6px;border:1px solid #e6eade;border-radius:5px;padding:8px 5px;font-size:9px;min-height:36px}.join .button{width:100%;font-size:9px;margin-top:8px;padding:7px}.roads-list h3{display:flex;justify-content:space-between}.roads-list h3 span{font-size:9px;background:#f0f3eb;padding:2px 5px;border-radius:4px}.roads-list>button{display:flex;align-items:center;gap:8px;width:100%;padding:10px 8px;border-radius:5px;font-size:10px}.roads-list>button.selected{background:#edf3e7;color:#4c7541}.roads-list button small{margin-left:auto;color:#a9b29e;font-size:8px}.roads-list button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roads-list p{font-size:11px;color:#8d9b85}.inspector-tip{margin:8px 18px 20px;padding:13px;background:#f5f6ec;border:1px solid #ecefde;border-radius:7px;display:flex;gap:10px;color:#899366}.inspector-tip>span{font-size:19px}.inspector-tip strong{font-size:10px;font-weight:600}.inspector-tip p{font-size:9px;line-height:1.7;margin:5px 0 0;color:#9aa080}.empty-selection>svg{color:#739466;margin:4px 0 17px}.empty-selection h3{margin-bottom:9px}.empty-selection p{color:#8e9a84;font-size:11px;line-height:1.8}.statusbar{height:31px;border-top:1px solid #e0e5da;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 22px;flex-shrink:0;color:#99a28f;font-size:9px}.statusbar>span{display:flex;gap:8px;align-items:center}.statusbar>span:last-child{color:#a1a98f}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#15291f66;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:20;display:flex;align-items:center;justify-content:center;padding:25px}.modal{width:620px;max-width:100%;max-height:90dvh;overflow:auto;background:#fff;border:1px solid #e5ebdf;border-radius:16px;padding:26px;box-shadow:0 24px 100px #12211e33}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal h2{font-family:Manrope,sans-serif;font-size:23px;letter-spacing:-.7px;margin:0;font-weight:750}.icon-button{padding:8px;display:inline-flex;border-radius:6px}.modal-intro{font-size:12px;line-height:1.8;color:#899480;margin:10px 0 22px}.template-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:23px}.template{padding:0;border:1px solid #e2e8dc;border-radius:10px;overflow:hidden;text-align:left}.template>div{height:140px;background:#f4f5ed;display:flex;align-items:center;justify-content:center;color:#79936a}.template svg{height:100%;width:100%}.template>div>svg.lucide{width:32px;height:32px}.template strong{display:flex;justify-content:space-between;padding:12px 13px 0;font-size:12px}.template small{display:block;color:#8e9b82;padding:5px 13px 14px;font-size:10px}.project-list{max-height:400px;overflow:auto}.project-list>div{display:flex;align-items:center;border-bottom:1px solid #e8ecdf;padding:8px 0}.project-open{flex:1;text-align:left;padding:10px;min-width:0}.project-open strong{display:block;font-size:12px}.project-open small{display:block;font-size:9px;color:#8b9b7d;margin-top:6px}.modal-actions{display:flex;justify-content:space-between;gap:12px;margin-top:24px}.export-preview{height:220px;background:repeating-conic-gradient(#f0f2ec,#f0f2ec 25%,#fff 0%,#fff 50%) 50%/16px 16px;border:1px solid #e2e8da;border-radius:8px;overflow:hidden;display:flex;justify-content:center}.export-preview svg{max-width:100%;height:100%;width:100%}.format-options{display:flex;gap:10px;margin:20px 0}.format-options button{flex:1;text-align:left;border:1px solid #e1e7d9;border-radius:7px;padding:13px}.format-options .active{background:#ecf3e6;border-color:#80a667}.format-options strong{display:block;font-size:12px}.format-options small{display:block;color:#8f9c80;margin-top:5px;font-size:10px}.export-option{display:flex;justify-content:space-between;align-items:center;font-size:12px}.export-option input{width:100px;padding:8px;border:1px solid #dae2d1;border-radius:5px}.toast{position:fixed;bottom:45px;left:50%;transform:translate(-50%);z-index:40;padding:13px 16px;display:flex;align-items:center;gap:15px;border:1px solid #dce5d4;max-width:650px;width:max-content;background:#fff;box-shadow:0 5px 30px #17302225;border-radius:9px;font-size:12px;max-height:35vh;overflow-y:auto}.toast button{display:flex}.readonly-banner{padding:9px 24px;background:#fff4d5;color:#79632d;font-size:12px}.readonly-banner button{text-decoration:underline;font-weight:600}.save-error{color:#b65943!important}.fatal{padding:50px}.fatal button{padding:12px;background:#1e493b;color:#fff;border-radius:8px}@media(max-height:800px){.tools>button,.tool-bottom>button{min-height:58px;flex-shrink:0}.shortcut{display:none}}@media(min-width:1500px){.inspector{width:304px}.tools{width:112px}}@media(max-width:1000px){.topbar{padding:0 17px;gap:15px;height:74px}.brand{min-width:175px;font-size:22px}.project-title{padding-left:16px}.project-title input{width:170px;font-size:13px}.header-actions .subtle span{display:none}.inspector{width:250px}.tools{width:83px;padding:20px 7px 10px}.tools button kbd{display:none}.canvas-label>span:last-child{display:none}.canvas-hint{font-size:9px;bottom:22px;width:80%;max-width:360px}.property-section{padding:17px}.selected-card input{width:130px}.statusbar>span:last-child{display:none}.workspace-actions{gap:5px}}@media(max-width:700px){.topbar{height:65px;padding:0 12px;gap:10px}.brand{min-width:0;font-size:19px}.brand small{display:none}.brand-icon{width:30px;height:34px}.project-title{display:none}.header-actions{gap:4px}.header-actions .button{padding:8px 10px;font-size:10px}.workspace-bar{padding:0 10px;height:46px}.breadcrumb{display:none}.workspace-actions{width:100%;justify-content:space-between}.tools{width:65px;padding:15px 4px}.tools>button{min-height:68px}.tools button>span{font-size:8px}.tool-caption{font-size:7px}.shortcut{display:none}.inspector{position:absolute;right:0;top:111px;bottom:31px;width:245px;z-index:5;box-shadow:-10px 0 30px #20382412}.canvas-label{left:14px;top:15px;font-size:7px}.canvas-hint{max-width:80%;font-size:8px;padding:8px}.modal{padding:20px}.modal h2{font-size:20px}.modal-backdrop{padding:12px}.statusbar{padding:0 10px;font-size:8px}.modal-actions .button{font-size:10px;padding:8px}.toast{max-width:90%;font-size:11px}.template>div{height:105px}}
