.export-dialog{gap:var(--s3);width:min(460px,100%);max-height:min(88vh,720px);padding:var(--s4) var(--s4) var(--s4);background:var(--paper);border:1px solid var(--edge);box-shadow:var(--shadow-2);border-radius:10px;overflow:auto}.export-dialog[open]{display:grid}.export-dialog header{align-items:baseline;gap:var(--s2);display:flex}.export-dialog header h2{text-transform:none;letter-spacing:0;color:var(--ink);flex:1;font-size:16px}.export-dialog fieldset{gap:var(--s1);border:0;margin:0;padding:0;display:grid}.export-dialog legend{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s1);padding:0;font-size:12px;font-weight:600}.export-dialog label.choice{align-items:flex-start;gap:var(--s2);color:var(--ink);cursor:pointer;font-size:13px;display:flex}.export-dialog label.choice input{margin-top:var(--s1)}.export-dialog .hint{margin:0}.export-dialog .actions{gap:var(--s2);justify-content:flex-end;align-items:center;display:flex}.export-checklist{padding:var(--s1) 0 0;gap:var(--s1);border:1px solid var(--edge);border-radius:var(--radius);max-height:160px;padding:var(--s2);background:var(--wash);margin:0;list-style:none;display:grid;overflow:auto}.export-checklist li label{align-items:center;gap:var(--s2);cursor:pointer;font-size:13px;display:flex}.export-issues h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s1);font-size:12px;display:inline}.export-issues .issue-bucket>summary,.export-issues .issue-group>summary{cursor:pointer;align-items:baseline;gap:var(--s2);list-style:none;display:flex}.export-issues .issue-bucket>summary::-webkit-details-marker{display:none}.export-issues .issue-group>summary::-webkit-details-marker{display:none}.export-issues .issue-group{margin:0}.export-issues ul{gap:var(--s1);margin:0;padding:0;list-style:none;display:grid}.export-issues p{margin:0}.export-issues.blocking{padding:var(--s2);border:1px solid var(--danger-edge);border-radius:var(--radius);background:var(--wash-warn)}.export-issues .export-rule{font-size:12px}.export-issues .issue-select{text-align:left;cursor:pointer;background:0 0;border:0;width:100%;padding:0;display:block}.export-issues .issue-select:hover p{text-decoration:underline}.validate-panel{gap:var(--s2);padding-top:var(--s2);border-top:1px solid var(--edge);display:grid}.validate-panel h2{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.export-progress{margin:0;font-size:13px}.export-progress.running{color:var(--muted)}.export-receipt{gap:var(--s1);padding:var(--s2);border:1px solid var(--edge);border-radius:var(--radius);background:var(--wash);display:grid}.export-receipt .headline{margin:0;font-size:14px;font-weight:600}.export-receipt .file{color:var(--muted);word-break:break-all;margin:0;font-size:12px}.export-receipt .detail{margin:0}.export-receipt a.download{font:inherit;padding:var(--s1) var(--s3);border:1px solid var(--edge);border-radius:var(--radius);background:var(--paper);color:var(--ink);justify-self:start;text-decoration:none}.export-receipt a.download:hover{border-color:var(--edge-hover)}.export-busy-note{margin:0;font-size:12px}.style-editor-open{padding:var(--s1) var(--s2);font-size:11px}.style-editor,.style-templates{gap:var(--s2);padding:var(--s2) 0 var(--s1);flex-basis:100%;font-size:12px;display:grid}.style-editor-head{align-items:baseline;gap:var(--s2);display:flex}.style-editor-head h3,.style-templates h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex:1;font-size:11px;font-weight:600}.style-editor-lead,.style-editor p,.style-templates p{margin:0}.style-editor fieldset{padding:var(--s2) 0 0;border:0;border-top:1px solid var(--edge);gap:var(--s1);margin:0;display:grid}.style-editor legend{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0;font-size:11px;font-weight:600}.style-editor label,.style-templates label{gap:var(--s1);color:var(--muted);font-size:12px;display:grid}.style-editor input,.style-editor select,.style-templates input,.style-templates select{font:inherit;padding:var(--s1) var(--s2);border:1px solid var(--edge);border-radius:var(--radius);color:var(--ink);background:var(--paper)}.style-check{align-items:center;gap:var(--s1);grid-template-columns:none;color:var(--ink)!important;display:flex!important}.style-colour-row{gap:var(--s1);grid-template-columns:36px 1fr;align-items:center;display:grid}.style-colour-row input[type=color]{cursor:pointer;height:28px;padding:0}.style-field{gap:var(--s1);display:grid}.style-help,.style-mm{color:var(--muted);margin:0;font-size:11px}.style-notes{gap:var(--s1);margin:0;padding:0;list-style:none;display:grid}.style-note{color:var(--muted);background:var(--shell);border-left:3px solid var(--edge-hover);padding:var(--s1) var(--s2);margin:0;font-size:11px}.style-error{color:var(--warn);margin:0;font-size:12px}.style-refusal{color:var(--ink);background:var(--wash-warn);border:1px solid var(--danger-edge);border-radius:var(--radius);padding:var(--s1) var(--s2);margin:0;font-size:12px}.style-summary{color:var(--ink);font-size:12px}.style-changed{color:var(--muted);font-variant-numeric:tabular-nums;margin:0;padding:0;font-size:11px;list-style:none}.style-changed code{font-size:10px}.style-stroke-preview{background:repeating-conic-gradient(var(--shell) 0% 25%, var(--paper) 0% 50%) 0 0 / 10px 10px;border:1px solid var(--edge);border-radius:var(--radius);padding:var(--s1);place-items:center;display:grid}.style-advanced{gap:var(--s1);display:grid}.style-advanced summary{cursor:pointer;color:var(--accent);font-size:12px}.style-actions,.style-save-template{gap:var(--s2);flex-wrap:wrap;align-items:end;display:flex}.style-save-template label{flex:1;min-width:140px}.style-templates{margin-top:var(--s2);padding-top:var(--s2);border-top:1px solid var(--edge)}.upload-map-layer{margin:var(--s3) 0 0;padding:var(--s2);border:1px dashed var(--edge);border-radius:var(--radius);background:var(--wash);gap:var(--s2);display:grid}.upload-drop{gap:var(--s1);padding:var(--s2) var(--s2);border:1px dashed var(--edge);border-radius:var(--radius);background:var(--paper);cursor:pointer;text-align:center;display:grid}.upload-drop:hover,.upload-drop:focus-visible{border-color:var(--accent)}.upload-drop.over{border-color:var(--accent);background:var(--wash-info)}.upload-drop input[type=file]{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.upload-map-layer label.field{gap:var(--s1);color:var(--muted);font-size:12px;display:grid}.upload-map-layer label.field input{font:inherit;padding:var(--s1) var(--s2);border:1px solid var(--edge);border-radius:var(--radius);color:var(--ink)}.upload-map-layer .files{color:var(--ink);font-size:12px}.upload-map-layer .progress{margin:0;font-size:12px}.upload-map-layer .progress.tiling,.upload-map-layer .progress.missing{color:var(--muted)}.upload-map-layer .progress.ready{color:var(--ink)}.upload-map-layer .progress.failed{color:var(--warn)}.upload-map-layer .warn-note{color:var(--warn);margin:0;font-size:12px}.upload-map-layer .uploads-hint{color:var(--muted);margin:0;font-size:11px}.import-dxf{gap:var(--s2);padding-top:var(--s2);border-top:1px solid var(--edge);display:grid}.import-dxf h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.import-extents{gap:var(--s2);grid-template-columns:1fr 1fr;display:grid}.import-extents article{padding:var(--s2);border:1px solid var(--edge);border-radius:var(--radius);background:var(--wash)}.import-extents h4{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--s1);font-size:11px}.import-extents p{font-variant-numeric:tabular-nums;margin:0}.import-map{border-collapse:collapse;width:100%;font-size:12px}.import-map caption{text-align:left;padding-bottom:var(--s1);font-weight:600}.import-map th,.import-map td{text-align:left;vertical-align:top;padding:var(--s1) var(--s1) var(--s1) 0;border-bottom:1px solid var(--rule-faint)}.import-map select,.import-map input[type=text]{width:100%;margin-top:var(--s1);font:inherit;padding:var(--s1) var(--s1);display:block}.import-skipped ul,.uploads-list ul{margin:var(--s1) 0 0;gap:var(--s1);padding:0;font-size:12px;list-style:none;display:grid}.layer-group{margin-top:var(--s3)}.layer-group:first-of-type{margin-top:var(--s2)}.layer-group-head{align-items:center;gap:var(--s1);margin-bottom:var(--s1);display:flex}.layer-group-head h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex:1;font-size:11px;font-weight:600}.layer-group-head button{padding:var(--s1) var(--s2);font-size:11px}.layers{gap:var(--s1);margin:0;padding:0;list-style:none;display:grid}.layers>li{align-items:center;gap:var(--s1) var(--s1);padding:var(--s1) var(--s1);border-radius:var(--radius);border:1px solid #0000;grid-template-columns:auto auto minmax(0,1fr) auto auto;display:grid;position:relative}.layers>li:has(.layer-identity){display:block}.layers>li.layer-compact{padding:var(--s1) var(--s1)}.layer-identity{align-items:center;gap:var(--s1) var(--s1);grid-template-columns:auto auto minmax(0,1fr) auto auto;min-width:0;display:grid}.empty-layers{margin:var(--s1) 0 var(--s1)}.empty-layers>summary{cursor:pointer;color:var(--muted);font-size:11px}.layer-group:has(.empty-layers:not([open])) .layers>li.layer-compact{display:none}.layers>li.selected-layer{border-color:var(--accent);background:var(--wash-selected)}.layers .empty-flag{color:var(--muted);font-size:11px}.layers .layer-zoom,.layers .layer-unlock,.layer-more-menu .layer-zoom,.layer-more-menu .layer-unlock{padding:var(--s1) var(--s2);font-size:11px}.layers .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.layers .count{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;font-size:11px;line-height:1.2}.layers .kind-tag{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:10px}.layers .row-main{display:contents}.layers .row-tools,.layer-more-menu .row-tools{align-items:center;gap:var(--s1) var(--s2);flex-wrap:wrap;grid-column:1/-1;display:flex}.layers .layer-more{position:relative}.layers .layer-more-trigger{cursor:pointer;color:var(--muted);padding:var(--s1) var(--s1);text-align:center;background:0 0;border-color:#0000;width:1.6em;font-size:14px;line-height:1}.layers .layer-more-trigger:hover{border-color:var(--edge);background:var(--paper)}.layer-more-menu{z-index:var(--z-menu);gap:var(--s2);min-width:16rem;max-width:min(22rem,100vw - 16px);max-height:min(80vh,36rem);padding:var(--s2);background:var(--paper);border:1px solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow-2);display:grid;position:fixed;overflow:auto}.layers .kind-in-more,.layer-more-menu .kind-in-more{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:10px}.layers button.eye{width:22px;height:22px;color:var(--ink);background:0 0;border-color:#0000;place-items:center;padding:0;display:grid}.layers button.eye[aria-pressed=false]{color:var(--muted)}.layers button.eye:hover{border-color:var(--edge);background:var(--paper)}.layers li.view-hidden .name{color:var(--muted)}.layers li.omitted{background:var(--wash-warn);border-color:var(--danger-edge)}.layers .drawing-state,.layer-more-menu .drawing-state{color:var(--warn);font-size:11px;font-weight:600}.layers .view-state,.layer-more-menu .view-state{color:var(--muted);font-size:11px}.layers label.export,.layer-more-menu label.export{align-items:center;gap:var(--s1);color:var(--muted);cursor:pointer;font-size:11px;display:inline-flex}.layers .locked-flag,.layer-more-menu .locked-flag{color:var(--muted);font-size:11px}.layers .opacity-row,.layer-more-menu .opacity-row{gap:var(--s2);grid-column:1/-1;grid-template-columns:auto 1fr auto;align-items:center;display:grid}.layers .opacity-kind,.layer-more-menu .opacity-kind{color:var(--muted);white-space:nowrap;font-size:11px}.layers input[type=range],.layer-more-menu input[type=range]{width:100%;height:14px}.layers input[type=range]:disabled,.layer-more-menu input[type=range]:disabled{opacity:.35}.layers .opacity-value,.layer-more-menu .opacity-value{color:var(--muted);font-variant-numeric:tabular-nums;min-width:3ch;font-size:11px}.layers .drawing-fill,.layer-more-menu .drawing-fill{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.layers .map-swatch{background:linear-gradient(45deg, var(--edge) 25%, transparent 25%, transparent 75%, var(--edge) 75%), linear-gradient(45deg, var(--edge) 25%, var(--shell) 25%, var(--shell) 75%, var(--edge) 75%);border:1px solid var(--edge);background-position:0 0,6px 6px;background-size:12px 12px;border-radius:2px;width:22px;height:12px}.layer-delete{padding:var(--s1) var(--s2);font-size:11px}.btn-danger:disabled{opacity:.45;cursor:not-allowed}.layer-confirm{gap:var(--s1);padding:var(--s1) 0 var(--s1);grid-column:1/-1;font-size:12px;display:grid}.layer-confirm p{margin:0}.layer-confirm-actions{gap:var(--s2);align-items:center;display:flex}.layer-cascade{gap:var(--s1);padding:var(--s1);border:1px solid var(--danger-edge);border-radius:var(--radius);background:var(--wash-warn);display:grid}.layer-cascade label{font-size:12px}.layer-error{color:var(--warn);margin:var(--s2) 0;font-size:12px}.layer-error p,p.layer-error{margin:var(--s2) 0}.layer-create{gap:var(--s2);margin-top:var(--s3);padding-top:var(--s2);border-top:1px solid var(--edge);display:grid}.layer-create h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.layer-create label{gap:var(--s1);color:var(--muted);font-size:12px;display:grid}.layer-create input,.layer-create select{font:inherit;padding:var(--s1) var(--s2);border:1px solid var(--edge);border-radius:var(--radius);color:var(--ink);background:var(--paper)}.layer-created{gap:var(--s2);grid-template-columns:auto 1fr;align-items:start;font-size:12px;display:grid}.layer-created p{margin:0}.layer-created .swatch{width:22px;height:12px;margin-top:var(--s1);border-radius:2px}.setup-section{margin-top:var(--s2)}.setup-section .style-templates>h3,.setup-section .layer-create>h3,.setup-section .layer-group-head h3{display:none}.setup-section .layer-create{border-top:0;margin-top:0;padding-top:0}.setup-section .style-templates{padding-top:0}.layer-empty{font-size:12px}.tile-status{color:var(--muted);font-size:10px}.undo-bar{gap:var(--s1);min-width:0;max-width:min(520px,46vw);display:flex}.undo-bar button.undo-control,.undo-bar .undo-control{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.undo-dialog{gap:var(--s3);width:min(460px,100%);max-height:min(88vh,640px);padding:var(--s4) var(--s4) var(--s4);background:var(--paper);border:1px solid var(--edge);box-shadow:var(--shadow-2);border-radius:10px;overflow:auto}.undo-dialog[open]{display:grid}.undo-dialog header h2{text-transform:none;letter-spacing:0;color:var(--ink);font-size:16px}.undo-copy{white-space:pre-wrap;margin:0;font-size:13px}.undo-copy ul{margin:var(--s2) 0 0;padding-left:var(--s4)}.undo-refusal{color:var(--warn)}.undo-actions{gap:var(--s2);flex-wrap:wrap;justify-content:flex-end;align-items:center;display:flex}.history button.history-undo,.history button.history-revert{margin-left:var(--s2);padding:var(--s1) var(--s2);font-size:11px}.history li.undone .summary{color:var(--muted);text-decoration:line-through}.edit-tools{gap:var(--s2);padding-top:var(--s2);border-top:1px solid var(--edge);font-size:12px;display:grid}.edit-tools h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.edit-tools p{margin:0}.edit-tools label{gap:var(--s1);color:var(--muted);display:grid}.edit-tools input[type=number],.edit-tools input[type=text],.edit-tools select{font:inherit;padding:var(--s1) var(--s2);border:1px solid var(--edge);border-radius:var(--radius);color:var(--ink);background:var(--paper)}.edit-tools fieldset{gap:var(--s1);border:0;margin:0;padding:0;display:grid}.edit-tools legend{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0;font-size:11px;font-weight:600}.edit-choice{align-items:center;gap:var(--s1);grid-template-columns:none;color:var(--ink)!important;display:flex!important}.edit-actions{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.edit-areas{gap:var(--s1);margin:0;padding:0;list-style:none;display:grid}.edit-areas li{gap:var(--s1);display:grid}.edit-issue{margin:0}.edit-issue.blocking{color:var(--warn)}.edit-decision{align-items:flex-start;gap:var(--s1);color:var(--ink)!important;display:flex!important}.edit-numbers{gap:var(--s1);font-variant-numeric:tabular-nums;display:grid}.edit-tools button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.refusal-banner,.app-notice-invariant,.app-notice-design_rule,.app-notice-condition{gap:var(--s2);padding:var(--s2);border:1px solid var(--danger-edge);border-radius:var(--radius);background:var(--wash-warn);display:grid}.hidden-write-notice,.app-notice-notice{margin:0 0 var(--s2);font-size:12px}.more-options{border:1px solid var(--edge);border-radius:var(--radius);padding:var(--s1) var(--s2)}.more-options summary{cursor:pointer;color:var(--muted);font-size:12px}.more-options[open] summary{margin-bottom:var(--s2)}.more-options-body{gap:var(--s2);display:grid}.tool-target{color:var(--muted);text-transform:none;letter-spacing:0;font-size:11px;font-weight:400}.verb-disclosure{gap:var(--s1);display:grid}.verb-name{text-align:left;width:100%;padding:var(--s1) var(--s2);font-size:13px}.verb-name[aria-expanded=true]{border-color:var(--accent);color:var(--accent)}.verb-form{gap:var(--s2);padding:var(--s1) 0 var(--s2);display:grid}.verb-form>section>h3:first-child,.verb-form h3:first-child{display:none}:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}:root{--paper:#fff;--shell:#f4f2ed;--edge:#d9d5cc;--ink:#26241f;--muted:#6f6a60;--accent:#1f5f8b;--warn:#9c3140;--danger:#9c3140;--danger-strong:#8a1f1f;--ok:#3d5a40;--info:#1f5f8b;--wash:#faf8f4;--wash-note:#f7f4ea;--wash-warn:#fbf6f4;--wash-info:#eef5fa;--wash-once:#fbf8f1;--wash-selected:#f3efe6;--rule-faint:#f0eee9;--danger-edge:#ead9d4;--edge-hover:#b9b4a8;--flash:#fdf1cf;--paper-90:#ffffffe6;--paper-92:#ffffffeb;--paper-94:#fffffff0;--ink-86:#26241fdb;--ink-90:#26241fe6;--scrim:#26241f47;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:40px;--s8:48px;--t-kicker:12px;--t-body:14px;--t-title:16px;--t-display:20px;--shadow-1:0 12px 32px #0000000f;--shadow-2:0 12px 32px #0000001f;--focus-ring:2px solid var(--accent);--focus-offset:2px;--z-base:0;--z-bar:10;--z-panel:30;--z-menu:50;--control:32px;--control-sm:24px;--radius:6px;--radius-card:10px;--bar:46px;--side:264px;--history:148px;--ol-scale-fill:#ffffffeb}*{box-sizing:border-box}[hidden]{display:none!important}html,body,#root{height:100%;font:var(--t-body)/1.45 "Segoe UI", system-ui, -apple-system, Arial, sans-serif;color:var(--ink);background:var(--shell);margin:0}:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}h1,h2,h3{margin:0;font-weight:600}h1{font-size:var(--t-title)}h2{font-size:var(--t-kicker);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}button{font:inherit;padding:var(--s1) var(--s3);border:1px solid var(--edge);border-radius:var(--radius);background:var(--paper);color:var(--ink);cursor:pointer}button:hover{border-color:var(--edge-hover)}button.link{color:var(--accent);padding:var(--s1) var(--s1);background:0 0;border:0}button.link:hover{text-decoration:underline}.muted{color:var(--muted)}.small{font-size:var(--t-kicker)}.error{color:var(--warn)}.spacer{flex:1}.chip{font-size:var(--t-kicker);color:var(--muted);background:var(--paper);border:1px solid var(--edge);padding:var(--s1) var(--s2);white-space:nowrap;border-radius:999px}.gate{min-height:100%;padding:var(--s5);place-items:center;display:grid}.card{gap:var(--s3);width:340px;padding:var(--s5);background:var(--paper);border:1px solid var(--edge);box-shadow:var(--shadow-1);border-radius:10px;display:grid}.card.wide{width:min(620px,100%)}.card.wide.settings-card{width:min(720px,100%)}.settings-head{align-items:center;gap:var(--s2);display:flex}.settings-tabs{gap:var(--s1);flex-wrap:wrap;display:flex}.settings-tabs .btn[aria-pressed=true]{background:var(--accent);color:var(--paper);border-color:var(--accent)}.user-table{border-collapse:collapse;width:100%}.user-table th{text-align:left;font-size:var(--t-kicker);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:var(--s1) var(--s2);border-bottom:1px solid var(--edge);font-weight:600}.user-table td{padding:var(--s2);vertical-align:middle;white-space:nowrap}.user-table .user-cell{min-width:12em}.user-table .user-cell .muted{text-overflow:ellipsis;max-width:28em;display:block;overflow:hidden}.settings-panel{gap:var(--s3);display:grid}.settings-form{gap:var(--s2);display:grid}.settings-form h2{margin-top:var(--s1)}.settings-list{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.settings-list>li:not(.ui-row){justify-content:space-between;gap:var(--s3);font-size:var(--t-kicker);align-items:baseline;display:flex}.settings-row-actions{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.settings-once{padding:var(--s2) var(--s3);border:1px solid var(--edge);border-radius:var(--radius);background:var(--wash-once);font-size:var(--t-kicker)}.settings-once code{margin-top:var(--s1);word-break:break-all;display:block}.settings-current{margin-top:var(--s1);font-size:var(--t-kicker);color:var(--ink);display:block}.oauth-client-row{align-items:flex-start}.card label{gap:var(--s1);font-size:var(--t-kicker);color:var(--muted);display:grid}.card input,.card select,.card textarea{font:inherit;padding:var(--s2) var(--s2);border:1px solid var(--edge);border-radius:var(--radius);color:var(--ink);background:var(--paper)}.card p{margin:0}.card.wide.projects-card{width:min(720px,100%)}.projects-head{align-items:center;gap:var(--s2);display:flex}.projects-toolbar{gap:var(--s3);flex-wrap:wrap;align-items:center;display:flex}.archived-toggle{align-items:center;gap:var(--s1);font-size:var(--t-kicker);color:var(--muted);display:flex}.projects li:not(.ui-row){gap:var(--s1);padding-bottom:var(--s1);border-bottom:1px solid var(--edge);display:grid}.projects li.is-archived .name{color:var(--muted)}.project-actions,.rename-row{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.rename-row input{flex:1;min-width:12em}.projects{gap:0;margin:0;padding:0;list-style:none;display:grid}.app{grid-template-columns:var(--side) 1fr var(--side);grid-template-rows:var(--bar) auto 1fr var(--history);grid-template-areas:"bar bar bar""notices notices notices""left map right""history history history";height:100%;display:grid}.bar{align-items:center;gap:var(--s2);padding:0 var(--s3);background:var(--paper);border-bottom:1px solid var(--edge);grid-area:bar;min-width:0;display:flex;overflow:hidden}.bar h1{text-overflow:ellipsis;white-space:nowrap;flex:8em;min-width:0;max-width:none;overflow:hidden}.bar-meta,.bar-end{align-items:center;gap:var(--s2);flex:0 auto;min-width:0;display:flex}.toggle{align-items:center;gap:var(--s1);font-size:var(--t-kicker);color:var(--muted);display:flex}.who{font-size:var(--t-kicker);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:12em;overflow:hidden}@media (width<=1024px){.bar-meta{display:none}}@media (width<=768px){.who{display:none}}.panel{padding:var(--s3);background:var(--paper);overflow:auto}.panel.left{border-right:1px solid var(--edge);grid-area:left}.panel.right{border-left:1px solid var(--edge);grid-area:right}.panel h2{margin-bottom:var(--s1)}.layers{margin:var(--s2) 0 0;gap:var(--s1);padding:0;list-style:none;display:grid}.layers li{align-items:center;gap:var(--s1) var(--s2);padding:var(--s1);border-radius:var(--radius);border:1px solid #0000;grid-template-columns:auto auto 1fr auto auto;display:grid}.layers li:hover{background:var(--wash);border-color:var(--edge)}.layers .swatch{border-radius:2px;width:22px;height:12px}.layers .name{font-size:13px}.layers .count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.layers .opacity{grid-column:3/-1;width:100%}.layers input[type=range]{width:100%;height:14px}.layers li.hidden .name{color:var(--muted);text-decoration:line-through}.map-wrap{background:var(--paper);grid-area:map;position:relative}.map{background:var(--paper);position:absolute;inset:0}.map:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.map.is-drawing-segment,.map.is-drawing-segment canvas{cursor:crosshair}.map.is-drawing-freehand,.map.is-drawing-freehand canvas{cursor:cell}.map.is-selecting-box,.map.is-selecting-box canvas{cursor:crosshair}.bar button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.bar .tool-target{color:var(--muted);font-size:11px;font-weight:400}.draw-tools{margin-bottom:var(--s3)}.draw-tools-row,.draw-row{gap:var(--s1);margin:var(--s1) 0 var(--s2);flex-wrap:wrap;align-items:center;display:flex}.draw-tools .toggle{margin:0;display:inline-flex}.draw-tools button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.left-section{margin-bottom:var(--s2)}.left-section-toggle{text-align:left;letter-spacing:.06em;text-transform:uppercase;width:100%;color:var(--muted);padding:var(--s1) 0;background:0 0;border:0;border-radius:0;font-size:12px;font-weight:600;display:block}.left-section-toggle:hover{color:var(--ink);border-color:#0000}.left-section-body{margin-top:var(--s1)}.project-tools{padding-top:var(--s1);margin-top:var(--s1)}.project-tools-row{gap:var(--s1);margin-bottom:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.project-tools-row button{padding:var(--s1) var(--s2);font-size:12px}.left-section-body .validate-panel>h2,.left-section-body .import-dxf>h3,.left-section-body>section>h3:first-child{display:none}.panel.right>button#zoom-selection{margin:var(--s1) 0 var(--s2)}.edit-tools-toggle{display:none}.app.no-selection{grid-template-columns:var(--side) 1fr;grid-template-areas:"bar bar""notices notices""left map""history history"}.app.no-selection .panel.right{display:none}.notices{gap:var(--s2);padding:var(--s2) var(--s3);background:var(--paper);border-bottom:1px solid var(--edge);grid-area:notices;display:grid}.app-notice{gap:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--radius);border:1px solid var(--edge);background:var(--paper);box-shadow:var(--shadow-1);display:grid}.app-notice-success{background:var(--ink-90);color:var(--paper);text-align:center;box-shadow:none;pointer-events:none;border:0;border-radius:999px}.app-notice-success .app-notice-text{margin:0;font-size:12px}.app-notice-notice{background:var(--wash-note)}.app-notice-invariant,.app-notice-design_rule,.app-notice-condition{border-color:var(--danger-edge);background:var(--wash-warn)}.north{width:34px;padding:var(--s1) 0 var(--s1);text-align:center;background:var(--paper-90);border:1px solid var(--edge);border-radius:var(--radius);color:var(--muted);pointer-events:none;font-size:11px;position:absolute;top:10px;right:10px}.north svg{width:18px;height:24px;margin:0 auto;display:block}.legend{max-width:210px;padding:var(--s2) var(--s2);background:var(--paper-94);border:1px solid var(--edge);border-radius:var(--radius);font-size:12px;position:absolute;top:10px;left:10px}.legend h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px}.legend ul{margin:var(--s1) 0 0;gap:var(--s1);padding:0;list-style:none;display:grid}.legend li{gap:var(--s2);grid-template-columns:16px 1fr;align-items:center;display:grid}.legend .key{border-radius:2px;height:12px}.readout{padding:var(--s1) var(--s2);background:var(--paper-92);border:1px solid var(--edge);border-radius:var(--radius);color:var(--muted);pointer-events:none;font:12px/1.3 ui-monospace,Cascadia Mono,Consolas,monospace;position:absolute;bottom:8px;right:10px}.status{padding:var(--s1) var(--s3);background:var(--ink-86);color:var(--paper);opacity:0;pointer-events:none;border-radius:999px;font-size:12px;transition:opacity .16s;position:absolute;top:10px;left:50%;transform:translate(-50%)}.status.show{opacity:1}.ol-scale-line{background:var(--ol-scale-fill);bottom:8px;left:10px}.ol-scale-line-inner{color:var(--muted);border-color:var(--muted)}.ol-zoom{top:10px;left:unset;right:52px}.properties{gap:var(--s2);display:grid}.properties table{border-collapse:collapse;width:100%;font-size:12px}.properties th{text-align:left;color:var(--muted);padding:var(--s1) var(--s2) var(--s1) 0;vertical-align:top;white-space:nowrap;font-weight:500}.properties td{padding:var(--s1) 0;word-break:break-word}.properties .headline{font-size:15px;font-weight:600}.properties .id{color:var(--muted);font:11px ui-monospace,Consolas,monospace}.properties .id-copy{padding:var(--s1) var(--s2);color:var(--muted);justify-self:start;font-size:11px}.history{padding:var(--s2) var(--s3);background:var(--paper);border-top:1px solid var(--edge);grid-area:history;overflow:auto}.history header{align-items:center;gap:var(--s2);display:flex}.history header .spacer{flex:1}.history ol{margin:var(--s2) 0 0;gap:var(--s1);padding:0;list-style:none;display:grid}.history li{gap:var(--s2);padding:var(--s1) 0;border-bottom:1px solid var(--rule-faint);grid-template-columns:46px 74px 1fr auto;align-items:baseline;font-size:12px;display:grid}.history .seq{color:var(--muted);font-variant-numeric:tabular-nums}.history .tool{font-weight:600}.history .when{color:var(--muted);font-variant-numeric:tabular-nums}.history li.fresh{animation:1.6s ease-out flash}.history li.actor-mcp .tool{color:var(--accent)}.history li.kind-export.unverified .summary{color:var(--warn);font-weight:600}.history a.history-download{margin-left:var(--s2);color:var(--accent);text-decoration:none}.history a.history-download:hover{text-decoration:underline}@keyframes flash{0%{background:var(--flash)}to{background:0 0}}.app.history-collapsed{--history:40px}.app.history-collapsed .history{overflow:hidden}.app.history-collapsed .history ol{display:none}@media (width<=1100px){.app{grid-template-columns:210px 1fr;grid-template-areas:"bar bar""notices notices""left map""history history"}.edit-tools-toggle{display:inline-flex}.panel.right{top:var(--bar);right:0;bottom:var(--history);width:min(360px,100%);z-index:var(--z-panel);border-left:1px solid var(--edge);box-shadow:var(--shadow-2);display:none;position:fixed}.app.edit-open .panel.right{display:block}.app.no-selection{grid-template-columns:210px 1fr}.app.no-selection .panel.right{display:none}}.btn{justify-content:center;align-items:center;gap:var(--s1);box-sizing:border-box;min-height:var(--control);width:auto;max-width:100%;padding:0 var(--s3);border:1px solid var(--edge);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:inherit;font-size:var(--t-body);cursor:pointer;font-weight:600;line-height:1.2;display:inline-flex}.btn:hover{border-color:var(--edge-hover)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-sm{min-height:var(--control-sm);padding:0 var(--s2);font-size:var(--t-kicker);font-weight:600}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--paper)}.btn-primary:hover{filter:brightness(.96)}.btn-ghost{color:var(--accent);padding:0 var(--s1);min-height:var(--control-sm);background:0 0;border-color:#0000;font-weight:400}.btn-ghost:hover{border-color:#0000;text-decoration:underline}.btn-danger{background:var(--danger-strong);border-color:var(--danger-strong);color:var(--paper)}.btn-danger:hover{filter:brightness(1.05)}.icon-btn{box-sizing:border-box;width:var(--control-sm);height:var(--control-sm);min-height:var(--control-sm);border-radius:var(--radius);color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{border-color:var(--edge);background:var(--paper);color:var(--ink)}.field{gap:var(--s1);font-size:var(--t-kicker);color:var(--muted);width:max-content;max-width:100%;display:grid}.field-full{width:100%}.field-email{width:min(22em,100%)}.field-name{width:min(20em,100%)}.field-days,.field-crs{width:8em}.field-content{width:max-content;max-width:100%}.field-label{color:var(--muted)}.field-hint{margin:0}.field input,.field textarea,.field select,.ui-select{font:inherit;font-size:var(--t-body);color:var(--ink);background:var(--paper);border:1px solid var(--edge);border-radius:var(--radius);padding:var(--s2) var(--s2);width:100%;max-width:100%}.ui-select{width:auto;max-width:100%}.ui-check{align-items:center;gap:var(--s2);font-size:var(--t-kicker);color:var(--muted);cursor:pointer;flex-direction:row;display:inline-flex}.ui-check input{width:auto;margin:0}.badge{font-size:var(--t-kicker);color:var(--muted);background:var(--paper);border:1px solid var(--edge);padding:0 var(--s2);min-height:var(--control-sm);white-space:nowrap;border-radius:999px;align-items:center;display:inline-flex}.section-header{font-size:var(--t-kicker);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0;font-weight:600}.empty-state{margin:0}.ui-row{gap:var(--s2);padding:var(--s2) 0;border-bottom:1px solid var(--edge);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.ui-row.is-archived .ui-row-title{color:var(--muted)}.ui-row-open.btn{gap:var(--s1) var(--s3);text-align:left;width:100%;min-height:var(--control);padding:var(--s2) var(--s3);color:var(--ink);background:0 0;border:1px solid #0000;grid-template-columns:minmax(0,1fr) auto;justify-content:stretch;font-weight:400;display:grid}.ui-row-open.btn:hover,.ui-row-open.btn:focus-visible{border-color:var(--edge);background:var(--wash);text-decoration:none}.ui-row-title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.ui-row-meta{font-size:var(--t-kicker);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;overflow:hidden}.ui-row-body{gap:var(--s1) var(--s3);grid-template-columns:minmax(0,1fr) auto;min-width:0;display:grid}.ui-row-actions{align-items:center;gap:var(--s1);display:flex}dialog.app-dialog{width:min(28rem, calc(100vw - var(--s5)));gap:var(--s3);max-height:min(88vh,45rem);padding:var(--s4);background:var(--paper);border:1px solid var(--edge);border-radius:var(--radius-card);box-shadow:var(--shadow-2);color:var(--ink);overflow:auto}dialog.app-dialog[open]{display:grid}dialog.app-dialog::backdrop{background:var(--scrim)}.app-dialog-title{font-size:var(--t-title);letter-spacing:0;text-transform:none;color:var(--ink);margin:0;font-weight:600}dialog.app-dialog.export-dialog{width:min(29rem, calc(100vw - var(--s5)))}.dialog-actions{gap:var(--s2);flex-wrap:wrap;justify-content:flex-end;align-items:center;display:flex}.more-menu-wrap{position:relative}.more-menu{z-index:var(--z-menu);gap:var(--s2);min-width:16rem;max-width:min(22rem, calc(100vw - var(--s4)));max-height:min(80vh,36rem);padding:var(--s2);background:var(--paper);border:1px solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow-2);display:grid;position:fixed;overflow:auto}.more-menu-sep{border:0;border-top:1px solid var(--edge);margin:var(--s1) 0}
