.mapper{gap:var(--space-3);grid-template-columns:auto minmax(0,1fr) 300px;align-items:stretch;min-height:560px;display:grid;position:relative}@media (height<=800px){.mapper{min-height:480px}}.mapper-toolbar{gap:var(--space-2);padding:var(--space-2);flex-direction:column;display:flex}.mapper-toolbar-scroll{gap:var(--space-1);flex-direction:column;min-height:0;display:flex;overflow-y:auto}@media (height<=800px){.mapper-toolbar-scroll{max-height:calc(100vh - 390px)}}.mapper-toolbar-footer{gap:var(--space-1);flex-direction:column;flex-shrink:0;display:flex}.mapper-tool{align-items:center;gap:var(--space-2);border-radius:var(--radius-control);width:100%;color:var(--text-muted);white-space:nowrap;transition:background var(--dur-fast) var(--ease-settle), color var(--dur-fast) var(--ease-settle);padding:8px 10px;display:flex}.mapper-tool:hover{background:rgb(var(--muted-rgb) / .08);color:var(--text)}.mapper-tool[aria-pressed=true]{background:rgb(var(--accent-deep-rgb) / .25);color:var(--accent)}.mapper-tool-group{gap:var(--space-1);flex-direction:column;display:flex}.mapper-toolbar-sep{background:var(--panel-border);height:1px;margin:var(--space-2) 0}.mapper-simulate{padding:10px var(--space-3);border-radius:var(--radius-control);background:radial-gradient(circle at 35% 30%, var(--accent), var(--accent-deep));color:var(--accent-ink);font:var(--font-title);letter-spacing:var(--tracking-title);box-shadow:var(--glow-accent)}.mapper-bands{gap:2px;display:flex}.mapper-band{border:1px solid var(--panel-border);border-radius:var(--radius-control);color:var(--text-muted);flex:1;padding:6px 4px}.mapper-band[aria-pressed=true]{border-color:rgb(var(--accent-rgb) / .6);color:var(--accent)}.mapper-stage{gap:var(--space-2);flex-direction:column;min-width:0;display:flex;position:relative}.mapper-canvas{border:1px solid var(--panel-border);border-radius:var(--radius-panel);background:rgb(var(--muted-rgb) / .04);touch-action:none;cursor:crosshair;flex:1;min-height:68vh;position:relative;overflow:hidden}@media (height<=800px){.mapper-canvas{min-height:58vh}}.mapper-canvas.tool-select{cursor:default}.mapper-canvas.tool-erase{cursor:not-allowed}.mapper-canvas.is-space{cursor:grab}.mapper-canvas.is-panning{cursor:grabbing}.mapper-heat{position:absolute;inset:0}.mapper-svg{width:100%;height:100%;position:absolute;inset:0}.mapper-hint{padding:0 var(--space-1);margin:0}.mapper-scale-chip{left:var(--space-2);bottom:var(--space-2);z-index:1;border:1px solid var(--panel-border);background:var(--panel-solid);pointer-events:none;border-radius:999px;margin:0;padding:3px 9px;position:absolute}.mp-grid{stroke:rgb(var(--muted-rgb) / .16);stroke-width:1px}.mp-room{fill:rgb(var(--accent-deep-rgb) / .06);stroke:rgb(var(--muted-rgb) / .4);stroke-width:1px;stroke-dasharray:4 3}.mp-room.mp-selected{stroke:var(--accent);stroke-width:2px;stroke-dasharray:none}.mp-wall-centerline{pointer-events:none}.mp-wall-hit{stroke:#0000;stroke-width:14px;fill:none;pointer-events:stroke}.mp-ghost-wall{stroke:var(--text-muted);stroke-linecap:round}.mp-wall-handle{fill:var(--panel-solid);stroke:var(--accent);stroke-width:2px;cursor:grab}.mp-wall-handle:hover{fill:var(--accent)}.mp-vertex-marker{fill:rgb(var(--accent-rgb) / .3);stroke:var(--accent);stroke-width:2.5px;pointer-events:none}.mp-opening{fill:var(--bg);stroke:none}.mp-opening.mp-selected{stroke:var(--accent);stroke-width:2px}.mp-jamb{stroke:var(--text-muted);stroke-width:1.5px;pointer-events:none}.mp-window-pane{stroke:rgb(var(--accent-rgb) / .6);stroke-width:1.5px;fill:none;pointer-events:none}.mp-draft{fill:rgb(var(--accent-rgb) / .12);stroke:var(--accent);stroke-dasharray:4 3;stroke-width:1.5px}.mp-draft-line{stroke:var(--accent);stroke-dasharray:4 3;stroke-width:2px}.mp-marquee{fill:rgb(var(--accent-rgb) / .08);stroke:var(--accent);stroke-dasharray:4 3;stroke-width:1.5px}.mp-vertex-snap{fill:none;stroke:var(--accent);stroke-width:2.5px;pointer-events:none}.mp-room-label{fill:var(--text-muted);font:var(--font-caption)}.mp-node circle{fill:var(--panel-solid);stroke:var(--accent);stroke-width:2px}.mp-node.mp-selected circle{stroke-width:3.5px}.mp-node-icon{font-size:13px}.mp-hint-target{fill:none;stroke:var(--accent);stroke-width:2px;stroke-dasharray:3 3}.mapper-legend{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}@media (height<=800px){.mapper-legend{flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}}.mapper-legend-chip{border:1px solid var(--panel-border);white-space:nowrap;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:3px 9px;display:inline-flex}.mapper-legend-swatch{border-radius:3px;flex-shrink:0;width:12px;height:12px}.mapper-side{gap:var(--space-4);padding:var(--space-4);flex-direction:column;display:flex;overflow-y:auto}@media (height<=800px){.mapper-side{max-height:calc(100vh - 240px)}}.mapper-section,.mapper-results-stats{gap:var(--space-2);flex-direction:column;display:flex}.mapper-results-stats.is-stale{opacity:.5}.mapper-notice{color:var(--text-muted)}.mapper-field{gap:var(--space-1);flex-direction:column;display:flex}.mapper-field-group{gap:var(--space-2);flex-direction:column;display:flex}.mapper-field select,.mapper-field input{padding:7px var(--space-2);border:1px solid var(--panel-border);border-radius:var(--radius-control);background:var(--panel-solid);color:var(--text);font:var(--font-body)}.mapper-danger{color:var(--heat-weak);align-self:flex-start;text-decoration:underline}.mapper-error{color:var(--heat-weak)}.mapper-router-link{color:var(--accent);align-self:flex-start;text-decoration:none}.mapper-router-link:hover{text-decoration:underline}.mapper-material-list{border:1px solid var(--panel-border);border-radius:var(--radius-control);flex-direction:column;gap:2px;max-height:240px;padding:4px;display:flex;overflow-y:auto}.mapper-material-row{align-items:center;gap:var(--space-2);width:100%;padding:6px var(--space-2);border-radius:var(--radius-control);color:var(--text-muted);text-align:left;display:flex}.mapper-material-row:hover{background:rgb(var(--muted-rgb) / .08);color:var(--text)}.mapper-material-row[aria-checked=true]{background:rgb(var(--accent-deep-rgb) / .22);color:var(--text)}.mapper-material-swatch{flex-shrink:0}.mapper-material-name{flex:1}.mapper-material-db{color:var(--text-muted);flex-shrink:0}.mapper-stat-row{justify-content:space-between;gap:var(--space-2);display:flex}.mapper-rooms{gap:var(--space-1);flex-direction:column;padding:0;list-style:none;display:flex}.mapper-room-row{gap:var(--space-2);padding:6px var(--space-2);border:1px solid var(--panel-border);border-radius:var(--radius-control);grid-template-columns:minmax(0,1fr) auto auto;display:grid}.mapper-room-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mapper-badge{border:1px solid var(--panel-border);border-radius:999px;align-self:flex-start;align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.mapper-badge-marker{background:var(--heat-weak);border-radius:999px;width:10px;height:10px}.mapper-badge-clear .mapper-badge-marker{background:var(--heat-strong)}.mapper-warnings{gap:var(--space-1);flex-direction:column;padding:0;list-style:none;display:flex}.mapper-warn-row{padding:6px var(--space-2);border:1px solid var(--panel-border);border-left:3px solid var(--heat-ok);border-radius:var(--radius-control)}.mapper-warn-dead{border-left-color:var(--heat-weak)}.mapper-warn-weak{border-left-color:var(--heat-ok)}.mapper-downsampled{color:var(--text-muted)}.mapper-hint-card{gap:var(--space-2);padding:var(--space-3);border:1px solid rgb(var(--accent-rgb) / .35);border-radius:var(--radius-control);background:rgb(var(--accent-deep-rgb) / .12);flex-direction:column;display:flex}.mapper-apply{padding:6px var(--space-3);border:1px solid rgb(var(--accent-rgb) / .6);border-radius:var(--radius-control);color:var(--accent);align-self:flex-start}.mapper-funnel{gap:var(--space-1);padding:var(--space-3);border:1px solid var(--panel-border);border-radius:var(--radius-control);color:var(--text-muted);flex-direction:column;text-decoration:none;display:flex}.mapper-funnel b{color:var(--accent)}.mapper-guide{width:min(360px,92vw);z-index:var(--z-overlay);gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-panel) 0 0 var(--radius-panel);background:var(--panel-solid);-webkit-backdrop-filter:none;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0;overflow-y:auto}.mapper-guide-head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.mapper-guide-close{border-radius:var(--radius-control);width:30px;height:30px;color:var(--text-muted);font-size:1.1rem;line-height:1}.mapper-guide-close:hover{background:rgb(var(--muted-rgb) / .08);color:var(--text)}.mapper-guide-restart{padding:6px var(--space-3);border:1px solid var(--panel-border);border-radius:var(--radius-control);color:var(--text-muted);align-self:flex-start}.mapper-guide-restart:hover{background:rgb(var(--muted-rgb) / .08);color:var(--text)}.mapper-guide-body{gap:var(--space-4);flex-direction:column;display:flex}.mapper-guide-group{gap:var(--space-2);flex-direction:column;display:flex}.mapper-guide-group ul{gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.mapper-guide-group li{gap:var(--space-2);align-items:baseline;display:flex}.mapper-guide-icon{text-align:center;flex-shrink:0;width:1.4em}@media (width<=720px){.mapper-guide{border-radius:0;width:100vw}}.mapper-shortcuts-scrim{z-index:var(--z-overlay);padding:var(--space-4);background:rgb(var(--bg-rgb) / .72);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mapper-shortcuts{gap:var(--space-3);width:min(560px,100%);max-height:min(80vh,640px);padding:var(--space-4);background:var(--panel-solid);-webkit-backdrop-filter:none;flex-direction:column;display:flex}.mapper-shortcuts-head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.mapper-shortcuts-close{border-radius:var(--radius-control);width:30px;height:30px;color:var(--text-muted);font-size:1.1rem;line-height:1}.mapper-shortcuts-close:hover{background:rgb(var(--muted-rgb) / .08);color:var(--text)}.mapper-shortcuts-scroll{overflow-y:auto}.mapper-shortcuts-table{border-collapse:collapse;width:100%}.mapper-shortcuts-table th{text-align:left;padding:6px var(--space-2);color:var(--text-muted);border-bottom:1px solid var(--panel-border);font-weight:600}.mapper-shortcuts-table td{padding:8px var(--space-2);border-bottom:1px solid var(--panel-border);vertical-align:top}.mapper-shortcuts-table tr:last-child td{border-bottom:none}.mapper-shortcuts-key{border:1px solid var(--panel-border);border-radius:var(--radius-control);background:rgb(var(--muted-rgb) / .08);color:var(--text);white-space:nowrap;padding:2px 8px;font-size:.85rem;display:inline-block}@media (width<=480px){.mapper-shortcuts-key{white-space:normal}}.mapper-tut{z-index:var(--z-overlay);pointer-events:none;position:fixed;inset:0}.mapper-tut-shroud{z-index:var(--z-overlay);background:rgb(var(--bg-rgb) / .72);pointer-events:none;position:fixed}.mapper-tut-shroud-full{inset:0}.mapper-tut-ring{z-index:var(--z-overlay);border:2px solid var(--accent);border-radius:var(--radius-control);box-shadow:0 0 0 3px rgb(var(--accent-rgb) / .25);pointer-events:none;animation:1.6s ease-in-out infinite mapper-tut-pulse;position:fixed}@keyframes mapper-tut-pulse{0%,to{box-shadow:0 0 0 3px rgb(var(--accent-rgb) / .25)}50%{box-shadow:0 0 0 8px rgb(var(--accent-rgb) / .05)}}.mapper-tut-card{z-index:var(--z-overlay);gap:var(--space-2);width:min(320px,92vw);padding:var(--space-4);pointer-events:auto;background:var(--panel-solid);-webkit-backdrop-filter:none;box-shadow:0 8px 40px rgb(var(--bg-rgb) / .5);flex-direction:column;display:flex;position:fixed}.mapper-tut-head{align-items:center;gap:var(--space-2);display:flex}.mapper-tut-counter{color:var(--text-muted)}.mapper-tut-tick{color:var(--accent);font-weight:700}.mapper-tut-skip{color:var(--text-muted);margin-inline-start:auto;text-decoration:underline}.mapper-tut-skip:hover{color:var(--text)}.mapper-tut-title{font:var(--font-title);letter-spacing:var(--tracking-title)}.mapper-tut-actions{justify-content:flex-end;align-items:center;gap:var(--space-3);margin-top:var(--space-1);display:flex}.mapper-tut-back{color:var(--text-muted);text-decoration:underline}.mapper-tut-back:hover{color:var(--text)}.mapper-tut-next{padding:8px var(--space-4);border-radius:var(--radius-control);background:radial-gradient(circle at 35% 30%, var(--accent), var(--accent-deep));color:var(--accent-ink);font:var(--font-title);letter-spacing:var(--tracking-title)}@media (prefers-reduced-transparency:reduce){.mapper-tut-shroud{background:var(--panel-solid)}}.mapper-intro{z-index:var(--z-overlay);justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-5);text-align:center;background:rgb(var(--bg-rgb) / .82);-webkit-backdrop-filter:blur(var(--blur-panel));border-radius:var(--radius-panel);flex-direction:column;display:flex;position:absolute;inset:0}.mapper-intro ol{gap:var(--space-2);text-align:left;flex-direction:column;max-width:42ch;padding:0;list-style:none;display:flex}.mapper-intro li{gap:var(--space-2);display:flex}.mapper-intro-step{color:var(--accent);font-variant-numeric:tabular-nums}.mapper-intro-go{padding:8px var(--space-4);border-radius:var(--radius-control);border:1px solid rgb(var(--accent-rgb) / .6);color:var(--accent)}.mapper-intro-guide-link{text-decoration:underline}.mapper-intro-guide-link:hover{color:var(--text)}@media (prefers-reduced-transparency:reduce){.mapper-intro{background:var(--panel-solid);-webkit-backdrop-filter:none}}.mapper-gate{z-index:var(--z-overlay);justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-5);text-align:center;background:rgb(var(--bg-rgb) / .9);-webkit-backdrop-filter:blur(var(--blur-panel));border-radius:var(--radius-panel);flex-direction:column;display:flex;position:absolute;inset:0}.mapper-gate .title,.mapper-gate .body{max-width:42ch}.mapper-gate-actions{align-items:center;gap:var(--space-2);margin-top:var(--space-1);flex-direction:column;display:flex}.mapper-gate-primary{padding:10px var(--space-4);border-radius:var(--radius-control);background:radial-gradient(circle at 35% 30%, var(--accent), var(--accent-deep));color:var(--accent-ink);font:var(--font-title);letter-spacing:var(--tracking-title);text-decoration:none}.mapper-gate-secondary{color:var(--text-muted);text-decoration:underline}.mapper-gate-secondary:hover{color:var(--text)}@media (prefers-reduced-transparency:reduce){.mapper-gate{background:var(--panel-solid);-webkit-backdrop-filter:none}}@media (width<=1100px){.mapper{grid-template-columns:auto minmax(0,1fr)}.mapper-side{grid-column:1/-1;max-height:none}}@media (width<=720px){.mapper{grid-template-columns:minmax(0,1fr)}.mapper-toolbar-scroll,.mapper-toolbar-footer{row-gap:var(--space-2);flex-flow:wrap;max-height:none;overflow:visible}.mapper-tool{flex:none;width:auto}.mapper-tool span:last-child{display:none}.mapper-toolbar-sep{flex-basis:100%;width:auto;height:0;margin:0}.mapper-tool-group{row-gap:var(--space-2);flex-flow:wrap}.mapper-bands,.mapper-simulate{flex:auto}.mapper-canvas{min-height:55vh}}.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}.mapper-floors{gap:var(--space-1);flex-wrap:wrap;align-items:center;display:flex}.mapper-floor-tab,.mapper-floor-add,.mapper-ghost-toggle{padding:5px var(--space-3);border:1px solid var(--panel-border);border-radius:var(--radius-control);color:var(--text-muted);transition:background var(--dur-fast) var(--ease-settle), color var(--dur-fast) var(--ease-settle)}.mapper-floor-tab[aria-pressed=true]{border-color:rgb(var(--accent-rgb) / .6);background:rgb(var(--accent-deep-rgb) / .25);color:var(--accent)}.mapper-ghost-toggle[aria-pressed=true]{border-color:rgb(var(--accent-rgb) / .6);color:var(--accent)}.mapper-floor-add:disabled,.mapper-ghost-toggle:disabled{opacity:.4;cursor:not-allowed}.mapper-ghost-toggle{margin-inline-start:auto}.mp-ghost{opacity:.18;pointer-events:none}.mp-stairs{stroke:var(--accent);stroke-width:1.5px}.mp-stairs.mp-selected{stroke-width:3px}.mp-hatch-line{stroke:rgb(var(--accent-rgb) / .7);stroke-width:1px}.mp-stairs-label{fill:var(--accent);font:var(--font-caption)}.mapper-chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.mapper-chip{border:1px solid var(--panel-border);color:var(--text-muted);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.mapper-chip[aria-pressed=true]{border-color:rgb(var(--accent-rgb) / .6);color:var(--accent)}.mapper-chip-marker{background:var(--heat-strong);border-radius:999px;flex-shrink:0;width:8px;height:8px}.mapper-chip-dead .mapper-chip-marker{background:var(--heat-weak)}.mapper-stepper{align-items:center;gap:var(--space-2);display:flex}.mapper-stepper button{border:1px solid var(--panel-border);border-radius:var(--radius-control);width:30px;height:30px;color:var(--text)}.mapper-stepper button:disabled{opacity:.4;cursor:not-allowed}@media (width<=720px){.mapper-ghost-toggle{margin-inline-start:0}}
