:root{--bg:#2b2a26;--panel:#f6f1e4;--panel-2:#ece4cf;--ink:#2f2a22;--muted:#776b58;--line:#d8ccb0;--accent:#1e6bb8;--danger:#b3261e;--warn-bg:#fff1c9;--info-bg:#e3eef8;color:var(--ink);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button,input{font:inherit;color:inherit}button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;padding:4px 10px}button:hover:not(:disabled){background:var(--panel-2)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:#17589a}button.danger{color:#fff;background:var(--danger);border-color:var(--danger)}button.ghost{background:0 0;border-color:#0000}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input{border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 8px}.hint{color:var(--muted);font-size:12px}.error{color:var(--danger)}.center{text-align:center;color:#ddd;padding-top:20vh}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.library{background:var(--panel);max-width:760px;min-height:100%;margin:0 auto;padding:32px 20px}.library-header{justify-content:space-between;align-items:center;display:flex}.library h1{letter-spacing:.04em;font-family:Georgia,Times New Roman,serif;font-weight:400}.map-list{gap:8px;padding:0;list-style:none;display:grid}.map-list li{align-items:center;gap:8px;display:flex}.map-card{text-align:left;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:12px 14px;display:flex}.map-name{font-weight:600}.empty{color:var(--muted);padding:40px 0}.confirm{align-items:center;gap:6px;font-size:12px;display:flex}.dialog-backdrop{z-index:10;background:#0006;place-items:center;display:grid;position:fixed;inset:0}.dialog{background:var(--panel);border-radius:10px;gap:12px;width:min(520px,94vw);max-height:92vh;padding:20px 22px;display:grid;overflow:auto;box-shadow:0 10px 40px #00000059}.dialog h2{margin:0;font-family:Georgia,serif;font-weight:400}.dialog label{gap:4px;display:grid}.dialog label.inline{align-items:center;gap:6px;display:flex}.dialog fieldset{border:1px solid var(--line);border-radius:8px;gap:8px;display:grid}.dialog input[type=number]{width:120px}.with-unit{align-items:center;gap:6px;display:flex}.chip{font-size:12px}.chip.active{border-color:var(--accent);color:var(--accent)}.actions{justify-content:flex-end;gap:8px;display:flex}.editor{flex-direction:column;height:100%;display:flex}.editor>*{flex:none}.editor>.workspace{flex:1}[hidden]{display:none!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.icon{vertical-align:middle;flex:none}button.icon-button{place-items:center;min-width:28px;min-height:28px;padding:4px;display:inline-grid}button.icon-button.danger{color:var(--danger);border-color:var(--line);background:#fff}button.icon-button.primary{color:#fff}button.icon-button.pinned{color:var(--accent)}kbd{border:1px solid var(--line);color:var(--ink);background:#fff;border-bottom-width:2px;border-radius:4px;padding:0 4px;font:11px ui-monospace,SFMono-Regular,Menlo,monospace}.top-bar{background:var(--panel);border-bottom:1px solid var(--line);align-items:center;gap:10px;min-width:0;padding:4px 10px;display:flex}.top-bar .group{align-items:center;gap:2px;display:flex}.top-bar .menus{gap:4px;margin-left:auto}.top-bar .zoom .zoom-pct{font-variant-numeric:tabular-nums;min-width:5ch}.map-title{background:0 0;border-color:#0000;min-width:10ch;max-width:28ch;font-family:Georgia,serif;font-size:16px}.map-title:hover,.map-title:focus{border-color:var(--line);background:#fff}.search-button{min-width:220px;color:var(--muted);text-align:left;background:#fff;align-items:center;gap:8px;display:flex}.search-button span{flex:1}.menu-button{position:relative}.menu-button>button{background:0 0;border-color:#0000;align-items:center;gap:4px;display:flex}.menu-button>button.active,.menu-button>button:hover{background:var(--panel-2)}.menu-popover{z-index:30;position:absolute;top:calc(100% + 4px);right:0}.popover{background:var(--panel);border:1px solid var(--line);border-radius:8px;width:320px;padding:10px 12px;box-shadow:0 8px 28px #00000040}.run-panel{gap:8px;display:grid}.run-panel h4{margin:0}.progress-ring{--pct:0%;font-variant-numeric:tabular-nums;background:radial-gradient(closest-side, var(--panel) 72%, transparent 74%), conic-gradient(var(--accent) var(--pct), var(--line) 0);border-radius:50%;place-items:center;width:22px;height:22px;font-size:9px;display:inline-grid}.progress{align-items:center;gap:6px;display:flex}.progress progress{flex:1}.menu{background:var(--panel);border:1px solid var(--line);border-radius:8px;min-width:220px;padding:4px;font-size:13px;box-shadow:0 8px 28px #00000040}.menu-item{cursor:default;white-space:nowrap;border-radius:4px;outline:none;align-items:center;gap:8px;padding:4px 8px;display:flex;position:relative}.menu-item:focus,.menu-item:hover{background:var(--accent);color:#fff}.menu-item:focus kbd,.menu-item:hover kbd{color:var(--ink)}.menu-item.disabled{opacity:.45}.menu-item.disabled:hover{color:inherit;background:0 0}.menu-icon{place-items:center;width:14px;display:inline-grid}.menu-label{flex:1}.menu-keys{margin-left:16px}.menu-sep{background:var(--line);height:1px;margin:4px 6px}.menu-heading{color:var(--muted);padding:4px 8px;font-size:12px}.submenu-wrap{color:var(--ink);z-index:31;position:absolute;top:-5px;left:100%}.menu-backdrop{z-index:40;position:fixed;inset:0}.context-menu{z-index:41;position:fixed}.options-bar{white-space:nowrap;background:var(--panel-2);border-bottom:1px solid var(--line);scrollbar-width:thin;flex-wrap:nowrap;align-items:center;gap:14px;height:38px;padding:0 12px;font-size:12px;display:flex;overflow:auto hidden}.options-bar>*{flex:none}.options-bar>label{align-items:center;gap:6px;display:flex}.options-title{min-width:6ch;font-weight:600}.options-bar .slider-field{grid-template-columns:auto 100px auto auto}.landmark-types{gap:2px;display:flex}.type-chip{background:0 0;border-color:#0000;padding:1px;line-height:0}.type-chip.on{border-color:var(--accent);background:#fff}.landmark-icon{display:block}.slider-field{grid-template-columns:7em minmax(60px,1fr) auto auto;align-items:center;gap:6px;font-size:12px;display:grid}.slider-label{cursor:ew-resize;-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.slider-field input[type=range]{width:100%;min-width:0}.slider-field.mixed input[type=range]{opacity:.5}.number-field{align-items:center;gap:2px;display:inline-flex}.number-field input{text-align:right;font-variant-numeric:tabular-nums;width:6ch;padding:1px 4px;font-size:12px}.number-field .unit{color:var(--muted);font-size:11px}.chip.auto{color:var(--muted);border-radius:10px;padding:0 6px;font-size:11px}.chip.auto.on{background:var(--accent);border-color:var(--accent);color:#fff}.segmented{display:inline-flex}.segmented .seg{border-radius:0;align-items:center;gap:4px;margin-left:-1px;padding:3px 8px;font-size:12px;display:inline-flex}.segmented .seg:first-child{border-radius:6px 0 0 6px;margin-left:0}.segmented .seg:last-child{border-radius:0 6px 6px 0}.segmented .seg.on{background:var(--accent);border-color:var(--accent);color:#fff;position:relative}.field-row{grid-template-columns:7em minmax(0,1fr);align-items:center;gap:6px;font-size:12px;display:grid}.field-row select,.field-row input{min-width:0}.swatches{align-items:center;gap:8px;display:flex}.swatch-group{gap:2px;display:flex}.swatch-chip{background:0 0;border-color:#0000;border-radius:5px;padding:2px;line-height:0}.swatch-chip.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:#fff}.chip-color{width:18px;height:18px;color:var(--ink);border:1px solid #0000004d;border-radius:3px;place-items:center;font-size:8px;line-height:1;display:inline-grid}.swatch-chip.hint .chip-color{background-image:repeating-linear-gradient(45deg,#00000059 0 1px,#0000 1px 4px)!important}.swatch-chip.size .chip-color{width:26px}.swatches.full{gap:6px;margin-bottom:10px;display:grid}.swatches.full h4{margin:0}.swatches.full .swatch-group{grid-template-columns:1fr 1fr;gap:2px;display:grid}.swatches.full .swatch-group-title{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;grid-column:1/-1;font-size:11px}.swatches.full .swatch-chip{text-align:left;align-items:center;gap:6px;font-size:12px;line-height:1.2;display:flex}.banner{align-items:center;gap:12px;padding:6px 12px;font-size:13px;display:flex}.banner.info{background:var(--info-bg)}.banner.warn{background:var(--warn-bg)}.workspace{grid-template-columns:auto minmax(0,1fr) auto;min-height:0;display:grid}.canvas-host{min-height:0;position:relative;overflow:hidden}.canvas-host canvas{position:absolute;inset:0}.canvas-host canvas:focus{outline:none}.tool-rail{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;align-items:center;gap:2px;width:44px;padding:6px 0;display:flex;overflow:visible auto}.tool-rail.labelled{width:64px}.rail-button{background:0 0;border-color:#0000;place-items:center;width:36px;min-height:36px;padding:0;display:grid;position:relative}.tool-rail.labelled .rail-button{width:58px;padding:3px 0}.rail-label{font-size:10px}.rail-button.active{background:var(--accent);border-color:var(--accent);color:#fff}.rail-button.active:hover:not(:disabled){background:#17589a}.rail-sep{background:var(--line);flex:none;width:24px;height:1px;margin:4px 0}.rail-button[data-tip]:hover:after{content:attr(data-tip);z-index:50;color:#fff;white-space:nowrap;pointer-events:none;opacity:0;background:#2f2a22;border-radius:4px;padding:4px 8px;font-size:12px;animation:.1s linear .4s forwards tip-in;position:fixed;transform:translate(40px,-6px)}@keyframes tip-in{to{opacity:1}}.dock{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;min-height:0;display:flex;position:relative}.dock.collapsed{align-items:center;gap:4px;width:32px;padding-top:6px}.dock-resize{cursor:ew-resize;z-index:2;width:6px;position:absolute;top:0;bottom:0;left:-3px}.dock-tabs{border-bottom:1px solid var(--line);align-items:center;gap:2px;padding:4px 4px 0 8px;display:flex}.dock-tabs [role=tablist]{flex:1;display:flex}.dock-tab{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:6px 10px;font-size:13px}.dock-tab.active{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.dock-panel{flex:1;min-height:0;overflow:auto}.dock-panel:has(.layers){display:flex;overflow:hidden}.panel{padding:10px 12px}.panel+.panel{border-top:1px solid var(--line)}.panel h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px;font-size:12px}.properties{gap:4px;display:grid}.props-header h3{align-items:center;gap:6px;margin-bottom:6px;display:flex}.name-field{width:100%;font-size:14px}.props-section{border-top:1px solid var(--line);gap:6px;padding:8px 0;display:grid}.props-section h4{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;align-items:center;margin:0;font-size:12px;display:flex}.label-switch{text-transform:none;letter-spacing:0;gap:2px;margin-left:auto;display:flex}.props-section .fields{gap:6px;display:grid}.props-section.actions{flex-wrap:wrap;justify-content:flex-start;gap:4px;display:flex}.props-section.advanced summary,.terrain-settings summary{cursor:pointer;font-size:12px;font-weight:600}.badge{background:var(--danger);color:#fff;border-radius:8px;place-items:center;min-width:16px;height:16px;margin-left:6px;padding:0 4px;font-size:10px;display:inline-grid}.corner-grid{grid-template-columns:1fr 1fr;gap:4px;display:grid}.field{gap:4px;font-size:12px;display:grid}button.small{padding:1px 6px;font-size:12px}.history{max-height:50vh;margin:0;padding:0;list-style:none;overflow:auto}.history button{text-align:left;background:0 0;border:none;border-radius:4px;width:100%;padding:3px 6px}.history button.current{background:var(--accent);color:#fff}.history button.redo{color:var(--muted);font-style:italic}.snapshots{gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.snapshots li{gap:4px;display:grid}.snapshots button{padding:2px 8px;font-size:12px}.snap-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.panel form input{flex:1;min-width:0}.layers{flex:1;min-height:0;padding:0;display:flex}.tree{outline:none;flex:1;font-size:13px;overflow:auto}.tree:focus-visible .tree-row.active{outline:2px solid var(--accent);outline-offset:-2px}.tree-row{white-space:nowrap;cursor:default;align-items:center;gap:4px;padding-right:4px;display:flex;position:absolute;left:0;right:0}.tree-row:hover{background:var(--panel-2)}.tree-row.selected{background:#d6e6f6}.tree-row.placeholder .row-name{color:var(--muted);font-style:italic}.tree-row.muted{opacity:.55}.group-row{background:var(--panel-2);border-top:1px solid var(--line);font-weight:600}.group-row.is-focus .row-name{color:var(--accent)}.group-row.is-hidden .row-name{color:var(--muted);text-decoration:line-through}.row-name{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.row-note{color:var(--muted);font-size:11px;font-weight:400}.row-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.row-actions{opacity:.6;gap:1px;display:flex}.tree-row:hover .row-actions,.row-actions.always{opacity:1}button.tiny{background:0 0;border-color:#0000;place-items:center;min-width:20px;height:20px;padding:1px 3px;font-size:11px;display:inline-grid}button.tiny.on{color:var(--accent)}button.tiny.text{border-color:var(--line);background:#fff;padding:0 6px}button.tiny.warn{background:#fff3cd;border-color:#e0b84a}.disclosure-space{flex:none;width:20px}.tools-row{gap:4px;padding-left:20px}.tree input.rename{flex:1;min-width:0;padding:0 4px;font-size:13px}.status-bar{background:var(--panel-2);border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:18px;min-width:0;padding:3px 12px;font-size:12px;display:flex}.key-hints{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink);flex:1;overflow:hidden}.key-hints.message{color:var(--accent)}.key-hint+.key-hint:before{content:"·";color:var(--muted);margin:0 6px}.cursor-readout{font-variant-numeric:tabular-nums;min-width:16ch}.save-error,.save-fenced{color:var(--danger)}.modal-backdrop{z-index:45;background:#00000040;justify-content:center;align-items:flex-start;padding-top:12vh;display:flex;position:fixed;inset:0}.palette{background:var(--panel);border-radius:10px;width:min(560px,94vw);overflow:hidden;box-shadow:0 16px 48px #00000059}.palette-field{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:8px 12px;display:flex}.palette-field input{background:0 0;border:none;outline:none;flex:1;font-size:16px}.palette-list{max-height:50vh;margin:0;padding:4px;list-style:none;overflow:auto}.palette-list li{border-radius:5px;align-items:center;gap:8px;padding:5px 8px;font-size:13px;display:flex}.palette-list li.active{background:var(--accent);color:#fff}.palette-list li.active kbd{color:var(--ink)}.pal-icon{width:14px}.pal-title{flex:1}.pal-detail{opacity:.7;font-size:11px}.cheatsheet{background:var(--panel);border-radius:10px;width:min(900px,94vw);max-height:80vh;padding:14px 18px;overflow:auto;box-shadow:0 16px 48px #00000059}.cheatsheet header{justify-content:space-between;align-items:center;display:flex}.cheatsheet h2{margin:0;font-family:Georgia,serif;font-weight:400}.cheat-columns{columns:2 300px;column-gap:24px}.cheat-columns section{break-inside:avoid;margin-bottom:12px}.cheat-columns section.wide{column-span:all}.cheat-columns h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:8px 0 4px;font-size:12px}.cheat-columns dl{margin:0}.cheat-row{grid-template-columns:9em 1fr;gap:8px;padding:1px 0;font-size:13px;display:grid}.cheat-row.tool{grid-template-columns:7em 1fr}.cheat-row dt{font-family:ui-monospace,Menlo,monospace;font-size:12px}.cheat-row dd{margin:0}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation-duration:0s!important}}.toasts{z-index:20;gap:6px;display:grid;position:fixed;bottom:36px;left:50%;transform:translate(-50%)}.toast{color:#fff;background:#2f2a22;border-radius:6px;padding:8px 14px;box-shadow:0 4px 16px #0000004d}.issues{margin:6px 0 0;padding-left:18px;font-size:12px}.issues li.warning{color:var(--danger)}.issues li.info{color:var(--muted)}.issues:has(.issue-text){padding-left:0;list-style:none}.issues li+li{margin-top:8px}.issues .issue-text{width:100%;color:inherit;text-align:left;background:0 0;border:0;align-items:flex-start;gap:5px;padding:0;display:flex}.issues .issue-text:hover:not(:disabled){background:0 0;text-decoration:underline}.issues .issue-text svg{flex:none;margin-top:2px}.issues .issue-hint{color:var(--muted);margin:2px 0 0 18px}.issues .issue-actions{flex-wrap:wrap;gap:4px;margin:4px 0 0 18px;display:flex}.issues .issue-actions button{color:var(--ink)}.issues .issue-actions:empty{display:none}.issues li.dismissed{margin-left:18px}.label-text-field{z-index:5;color:#3b2a1a;text-align:center;background:#fffcf2f5;border:1px solid #1e88e5;border-radius:3px;min-width:6ch;padding:1px 6px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 4px #00000040}.panel label.inline,.options-bar label.inline,.props-section label.inline{align-items:center;gap:6px;font-size:13px;display:flex}fieldset.classes{border:none;flex-wrap:wrap;gap:2px 10px;margin:4px 0;padding:0;display:flex}fieldset.classes legend{padding:0;font-size:12px}fieldset.classes label.inline{align-items:center;gap:4px;font-size:12px;display:inline-flex}.rationale{margin:0;padding-left:18px;font-size:12px}.options{gap:6px;font-size:12px;display:grid}.checks{flex-wrap:wrap;gap:2px 10px;display:flex}
