@import"https://cdn.jsdelivr.net/npm/@fontsource/iosevka@5.0.0/400.css";@import"https://cdn.jsdelivr.net/npm/@fontsource/iosevka@5.0.0/700.css";*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:SF Mono,Monaco,Consolas,monospace;background:#0d0d0d;color:#e0e0e0}#app{position:relative;display:flex;flex-direction:column;width:100vw;height:100vh}#header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:#1a1a1a;border-bottom:1px solid #2a2a2a;flex-shrink:0}#tools-dropdown .tab,#file-buttons .tab{padding:.4rem 1rem;font-size:.85rem;font-family:inherit;background:#2a2a2a;color:#a0a0a0;border:1px solid #3a3a3a;border-radius:4px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}#tools-dropdown .tab:hover,#file-buttons .tab:hover{color:#e0e0e0;border-color:#4a4a4a}#tools-dropdown{position:relative;display:flex;align-items:center;gap:.4rem}.controls-area-header-row{display:flex;align-items:center;gap:.5rem}#file-buttons{display:flex;gap:.5rem;margin-left:auto}.save-dropdown{position:relative}.save-menu{display:none;position:absolute;top:100%;left:0;margin-top:.25rem;min-width:100%;flex-direction:column;background:#1a1a1a;border:1px solid #3a3a3a;border-radius:4px;overflow:hidden;z-index:100}.save-menu.open{display:flex}.save-menu button{padding:.4rem .9rem;font-size:.85rem;font-family:inherit;background:transparent;color:#e0e0e0;border:none;border-radius:0;cursor:pointer;text-align:left;white-space:nowrap}.save-menu button:hover{background:#2a2a2a}.load-dropdown{position:relative}.load-menu{display:none;position:absolute;top:100%;left:0;margin-top:.25rem;min-width:100%;flex-direction:column;background:#1a1a1a;border:1px solid #3a3a3a;border-radius:4px;overflow:hidden;z-index:100}.load-menu.open{display:flex}.load-menu button{padding:.4rem .9rem;font-size:.85rem;font-family:inherit;background:transparent;color:#e0e0e0;border:none;border-radius:0;cursor:pointer;text-align:left;white-space:nowrap}.load-menu button:hover{background:#2a2a2a}#file-buttons button{padding:.4rem .9rem;font-size:.85rem;font-family:inherit;background:#2a2a2a;color:#e0e0e0;border:1px solid #3a3a3a;border-radius:4px;cursor:pointer;transition:background .15s,border-color .15s}#file-buttons button:hover{background:#353535;border-color:#4a9eff}#controls-area{position:fixed;bottom:0;left:0;right:0;width:100%;z-index:10;padding:.5rem .75rem;background:#161616f2;border-top:1px solid #2a2a2a;box-shadow:0 -4px 12px #00000080;display:flex;flex-direction:column;gap:.5rem;box-sizing:border-box}#controls-area-content,.controls-panels,.mode-panel{width:100%;min-width:0}#controls-area.collapsed #controls-area-content{display:none}#camera-controls{position:absolute;top:48px;bottom:auto;right:12px;z-index:10;width:340px;box-sizing:border-box;padding:.5rem .75rem;background:#161616f2;border:1px solid #2a2a2a;border-radius:6px;box-shadow:0 4px 12px #00000080;display:flex;flex-direction:column;gap:.5rem;max-height:calc(100vh - 60px);overflow-y:auto}#camera-controls .control-row label{min-width:90px}#camera-controls .control-row input[type=range]{flex:1 1 140px;max-width:200px}#camera-controls .control-row span{min-width:32px;text-align:right}.camera-controls-title{font-size:.75rem;color:#9a9a9a;text-transform:uppercase;letter-spacing:.04em}.mode-panel.hidden,.control-row.hidden{display:none}.control-footer{display:flex;justify-content:center;padding:.25rem 0;border-top:1px solid #2a2a2a}.panel{border:1px solid #2a2a2a;border-radius:4px;overflow:hidden}.panel-header{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;font-size:.9rem;font-family:inherit;background:#222;color:#e0e0e0;border:none;cursor:pointer;text-align:left;transition:background .15s}.panel-header:hover{background:#2a2a2a}.panel-header[aria-disabled=true]{cursor:default}.panel-chevron{display:none}.panel.collapsed .panel-chevron{transform:rotate(-90deg)}.panel.collapsed .panel-content{display:none}.panel-content{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.75rem;padding:.75rem;background:#1a1a1a}#panel-brush-tools{flex-direction:column;align-items:stretch}.ramp-creator-panel{display:flex;flex-direction:column;gap:.5rem;padding:.5rem 0;border-top:1px solid #2a2a2a;margin-top:.5rem}.ramp-creator-panel.hidden{display:none}.ramp-creator-status{font-size:.85rem;color:#a0a0a0}.add-entity-actions,.brush-actions,.add-lights{display:flex;flex-wrap:wrap;gap:.5rem}.add-entity-actions>button{min-width:84px}.tool-divider{width:100%;height:1px;background:#3a3a3a;margin:.5rem 0;flex-shrink:0}.scene-list{display:flex;flex-direction:column;gap:.4rem;width:100%}.scene-list-title{font-size:.75rem;color:#9a9a9a;text-transform:uppercase;letter-spacing:.04em}.scene-list-search{width:100%;padding:.35rem .5rem;font-size:.8rem;background:#232323;border:1px solid #2f2f2f;border-radius:4px;color:#e0e0e0}.scene-list-search::placeholder{color:#6a6a6a}.scene-list-search:focus{outline:none;border-color:#4a9eff}.scene-list-content{height:200px;overflow-y:auto;padding-right:4px;display:flex;flex-direction:column;gap:.3rem}.scene-list-item,.scene-list-group>summary{font-size:.8rem;color:#e0e0e0;cursor:pointer;-webkit-user-select:none;user-select:none}.scene-list-empty{width:100%;padding:.45rem .55rem;font-size:.82rem;color:#98adc6;border:1px dashed #3a3a3a;border-radius:4px;background:#1b2736}.entity-picker-overlay{position:fixed;inset:0;z-index:120;display:grid;place-items:center;background:#060a1199;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.entity-picker-overlay[hidden]{display:none}.entity-picker-dialog{width:min(440px,calc(100vw - 32px));display:grid;gap:12px;padding:14px;border-radius:10px;border:1px solid #2f4660;background:#111c2afa}.entity-picker-dialog h3{margin:0;font-size:1rem;color:#e8eef4;text-align:center}.entity-picker-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.entity-picker-option{border:1px solid #2f4660;border-radius:8px;background:#122133;color:#e8eef4;display:grid;gap:6px;justify-items:center;align-items:center;min-height:88px;cursor:pointer}.entity-picker-option[hidden]{display:none}.entity-picker-option:hover{background:#1c324b}.entity-picker-option>span[aria-hidden=true]{font-size:1.25rem}.scene-list-item{background:#232323;border:1px solid #2f2f2f;border-radius:4px;padding:.3rem .45rem;text-align:left}.scene-list-item:hover{border-color:#4a9eff}.scene-list-group{border:1px solid #2a2a2a;border-radius:4px;padding:.25rem .35rem;background:#1f1f1f}.scene-list-group[open]>summary{margin-bottom:.35rem}.scene-list-subitems{display:flex;flex-direction:column;gap:.25rem}.modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center}.modal.hidden{display:none}.modal-backdrop{position:absolute;inset:0;background:#0009}.modal-content{position:relative;z-index:1;width:min(600px,calc(100vw - 2rem));max-height:min(80vh,640px);background:#1a1a1a;border:1px solid #2a2a2a;border-radius:8px;box-shadow:0 8px 24px #00000080;display:flex;flex-direction:column}.modal-header{padding:.75rem 1rem;border-bottom:1px solid #2a2a2a}.modal-title{font-size:.95rem;text-transform:uppercase;letter-spacing:.04em;color:#e0e0e0}.modal-body{padding:.75rem 1rem;overflow:auto;display:flex;flex-direction:column;gap:.6rem}.modal-instructions{font-size:.85rem;color:#b0b0b0}.modal-actions{padding:.75rem 1rem;border-top:1px solid #2a2a2a;display:flex;justify-content:flex-end;gap:.5rem}.export-list{display:flex;flex-direction:column;gap:.5rem}.export-group{border:1px solid #2a2a2a;border-radius:6px;padding:.35rem .5rem;background:#202020}.export-group>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.5rem}.export-group>summary::-webkit-details-marker{display:none}.export-items{display:flex;flex-direction:column;gap:.35rem;padding:.35rem 0 .2rem 1.25rem}.export-item,.export-label{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#e0e0e0}.export-option{display:flex;align-items:flex-start;gap:.5rem;margin-top:.75rem;font-size:.85rem;color:#e0e0e0;cursor:pointer}.export-option input{margin-top:.2rem;flex-shrink:0}#panel-maze-settings,#panel-arena-settings,#panel-skybox-settings{flex-direction:column}.panel-content button{padding:.5rem 1rem;font-size:.85rem;font-family:inherit;background:#2a2a2a;color:#e0e0e0;border:1px solid #3a3a3a;border-radius:4px;cursor:pointer;transition:background .15s,border-color .15s}.panel-content button:hover{background:#353535;border-color:#4a9eff}.panel-content button.primary{border-color:#4a9eff;background:#2a3a4a}.panel-actions{display:flex;flex-wrap:wrap;gap:.5rem}.control-row{display:flex;align-items:center;gap:.75rem;width:100%}.control-row label{min-width:140px;font-size:.85rem}.control-row input[type=range]{flex:1;max-width:200px}.control-row input[type=color]{width:2.5rem;height:1.75rem;padding:2px;cursor:pointer;border:1px solid #3a3a3a;border-radius:4px;background:#2a2a2a}.control-row input[type=number]{width:4rem;padding:.25rem .35rem;font-size:.8rem;font-family:inherit;background:#2a2a2a;color:#e0e0e0;border:1px solid #3a3a3a;border-radius:4px}.credit-row{margin-top:auto}.credit-link{font-size:.75rem;color:#cfcfcf;text-decoration:none}.credit-link:hover{color:#e0e0e0}.light-controls{display:flex;flex-direction:column;gap:.6rem;width:100%}.light-controls-title{font-size:.75rem;color:#9a9a9a;text-transform:uppercase;letter-spacing:.04em}.light-controls-empty{font-size:.8rem;color:#6e6e6e}.light-controls-group.hidden{display:none}.direction-inputs{display:flex;gap:.35rem}.control-row select{flex:1;max-width:100%;min-width:0;box-sizing:border-box;padding:.35rem .5rem;font-size:.85rem;font-family:inherit;background:#2a2a2a;color:#e0e0e0;border:1px solid #3a3a3a;border-radius:4px;cursor:pointer}.control-row select:hover{border-color:#4a9eff}.control-row span{min-width:2rem;font-size:.85rem;color:#888}.radio-group{display:flex;gap:1rem}.radio-group label{display:flex;align-items:center;gap:.35rem;min-width:auto;font-size:.85rem;cursor:pointer}.control-row label:has(input[type=checkbox]){display:flex;align-items:center;gap:.35rem;min-width:auto;cursor:pointer}input[type=checkbox]{accent-color:#4a9eff}.gi-samples-indicator{flex-shrink:0;padding:.35rem .75rem;font-size:.8rem;background:#1a1a1a;border-bottom:1px solid #2a2a2a;color:#a0a0a0}.gi-samples-indicator.hidden{display:none}#viewport{flex:1;min-height:0;position:relative}.floor-plan-tool-root{flex:1;min-height:0;overflow:auto;background:#000;background-image:linear-gradient(rgba(55,55,55,.35) 1px,transparent 1px),linear-gradient(90deg,rgba(55,55,55,.35) 1px,transparent 1px),linear-gradient(rgba(85,85,85,.45) 1px,transparent 1px),linear-gradient(90deg,rgba(85,85,85,.45) 1px,transparent 1px);background-size:24px 24px,24px 24px,120px 120px,120px 120px;background-position:0 0,0 0,0 0,0 0}.floor-plan-controls{display:grid;gap:.5rem;align-content:start}.floor-plan-controls h2{margin:0 0 .25rem;font-size:1rem}.floor-plan-control{display:grid;gap:.35rem;font-size:.82rem}.floor-plan-control input{width:100%}.floor-plan-actions{display:flex;flex-wrap:wrap;gap:.5rem}.floor-plan-status{margin:0;font-size:.85rem;color:#c9d4e2}.floor-plan-stats{margin:0;font-size:.8rem;color:#9fb2c8}.floor-plan-preview{min-height:calc(100vh - 96px);overflow:auto;border:1px solid #2a2a2a;border-radius:6px;background:#000;padding:.5rem}.floor-plan-preview-content{position:relative;min-height:100%;display:grid;place-items:center;background-color:#000;background-image:linear-gradient(rgba(51,51,51,.35) 1px,transparent 1px),linear-gradient(90deg,rgba(51,51,51,.35) 1px,transparent 1px),linear-gradient(rgba(74,110,150,.45) 1px,transparent 1px),linear-gradient(90deg,rgba(74,110,150,.45) 1px,transparent 1px);background-size:24px 24px,24px 24px,120px 120px,120px 120px;background-position:0 0,0 0,0 0,0 0}.floor-plan-preview-content:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:3;background-image:linear-gradient(rgba(130,130,130,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(130,130,130,.14) 1px,transparent 1px),linear-gradient(rgba(175,175,175,.2) 1px,transparent 1px),linear-gradient(90deg,rgba(175,175,175,.2) 1px,transparent 1px);background-size:24px 24px,24px 24px,120px 120px,120px 120px}.floor-plan-preview svg{position:relative;z-index:2;width:100%;height:auto;display:block;border-radius:4px;background:#000;cursor:grab}.floor-plan-preview svg .bg{fill:#000!important}.floor-plan-preview svg.is-panning{cursor:grabbing}.floor-plan-loading-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:#00000080;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.floor-plan-loading-overlay[hidden]{display:none}.floor-plan-loading-card{min-width:220px;border:1px solid #355071;border-radius:8px;padding:1rem 1.2rem;background:#0a1118f2;box-shadow:0 12px 28px #00000073;display:grid;justify-items:center;gap:.65rem}.floor-plan-loading-card p{margin:0;font-size:.86rem;color:#d9e4f3}.floor-plan-loading-spinner{width:32px;height:32px;border:3px solid rgba(148,178,214,.35);border-top-color:#8ec1ff;border-radius:999px;animation:floor-plan-spin .8s linear infinite}@keyframes floor-plan-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.floor-plan-entities{width:100%;display:flex;flex-direction:column;gap:.5rem;min-height:0}.floor-plan-entity-list{margin:0;padding:0 4px 0 0;list-style:none;display:grid;gap:.4rem;width:100%;max-height:220px;overflow-y:auto}.floor-plan-entity-item,.floor-plan-entity-empty{font-size:.82rem;color:#d9e4f3;border:1px solid #2a2a2a;border-radius:4px;padding:.4rem .5rem;background:#182434}.floor-plan-entity-item{width:100%;text-align:left}.floor-plan-entity-item.is-selected{border-color:#fff;outline:2px solid #ffffff;outline-offset:1px}.floor-plan-entity-empty{color:#98adc6}#level-builder-entities-panel .panel-content{flex-direction:column;align-items:stretch;max-height:min(40vh,320px);overflow-y:auto}.level-builder-entities-root{width:100%;min-height:0}#viewport canvas{display:block;width:100%;height:100%}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid #4a9eff;outline-offset:2px}.control-row select:focus-visible{border-color:#4a9eff;outline:2px solid #4a9eff;outline-offset:0}#toast-container{position:fixed;bottom:1rem;left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:.5rem;max-width:min(90vw,420px);pointer-events:none}#toast-container *{pointer-events:auto}.toast{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;font-size:.9rem;font-family:inherit;background:#1a1a1a;border:1px solid #3a3a3a;border-radius:6px;box-shadow:0 4px 12px #00000080;animation:toast-in .2s ease-out}.toast-exit{animation:toast-out .2s ease-in forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-.5rem)}}.toast-message{flex:1;color:#e0e0e0}.toast-success{border-color:#2a6a2a}.toast-error{border-color:#8a2a2a;background:#1a0a0a}.toast-error .toast-message{color:#f0a0a0}.toast-undo{border-color:#4a6a8a}.toast-recovery{padding:.35rem .75rem;font-size:.85rem;font-family:inherit;background:#2a5a8a;color:#fff;border:none;border-radius:4px;cursor:pointer;flex-shrink:0}.toast-recovery:hover{background:#3a6a9a}.toast-recovery:focus-visible{outline:2px solid #4a9eff;outline-offset:2px}:root{--tui-bg: #000;--tui-fg: #f2f2f2;--tui-muted: #9aa0a6;--tui-line: rgba(255, 255, 255, .16);--tui-line-strong: rgba(255, 255, 255, .28);--tui-pink: #ff00ff;--tui-cyan: #00d4ff;--tui-danger: #ff4d4d;--tui-ok: #33ff99;--tui-pad-1: 6px;--tui-pad-2: 10px;--tui-pad-3: 12px;--tui-gap: 8px;--tui-gap-sm: 4px;--tui-gap-lg: 12px;--tui-element-width: unset;--tui-element-height: unset;--tui-element-min-width: unset;--tui-element-max-width: unset;--tui-modal-width: min(600px, calc(100vw - 2rem) );--tui-modal-max-height: min(80vh, 640px);--tui-panel-width: unset;--tui-controls-area-bg: rgba(0, 0, 0, .3);--tui-controls-surface-bg: rgba(0, 0, 0, .7);--tui-controls-area-width: 320px;--tui-controls-area-max-height: 50vh;--tui-panel-padding: var(--tui-pad-2);--tui-button-padding-x: 10px;--tui-button-padding-y: 6px;--tui-input-padding-x: 8px;--tui-input-padding-y: 6px;--tui-input-width: 100%;--tui-scrollbar-size: 10px;--tui-checkbox-size: 14px;--tui-range-thumb-size: 10px;--tui-font: "Iosevka", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;--tui-font-size: 12px;--tui-font-size-sm: .75rem;--tui-font-size-lg: 1rem;--tui-letter-spacing: .02em;--tui-bw: 1px;--tui-radius: 0}body.tui,body.tui *{box-sizing:border-box;box-shadow:none!important;text-shadow:none!important;border-radius:var(--tui-radius)!important}html,body{height:100%}body.tui{margin:0;background:var(--tui-bg);color:var(--tui-fg);font-family:var(--tui-font);font-size:var(--tui-font-size);letter-spacing:var(--tui-letter-spacing)}body.tui ::selection{background:#26c6ff40}body.tui :focus-visible{outline:2px solid var(--tui-cyan);outline-offset:2px}body.tui a{color:var(--tui-cyan);text-decoration:none}body.tui a:hover{color:var(--tui-pink)}body.tui abbr,body.tui dfn{border-bottom:1px dotted var(--tui-line);cursor:help;color:inherit}body.tui b,body.tui strong{font-weight:700;color:inherit}body.tui bdi,body.tui bdo{color:inherit}body.tui cite{font-style:italic;color:var(--tui-muted)}body.tui code,body.tui kbd,body.tui samp,body.tui var{font-family:var(--tui-font);padding:var(--tui-pad-1) var(--tui-pad-2);border:var(--tui-bw) solid var(--tui-line-strong);background:#ffffff0a;color:var(--tui-fg);font-size:var(--tui-font-size-sm)}body.tui del{text-decoration:line-through;color:var(--tui-muted)}body.tui em,body.tui i{font-style:italic;color:inherit}body.tui ins{text-decoration:underline;color:inherit}body.tui mark{background:#00d4ff33;color:inherit}body.tui q{color:inherit}body.tui ruby,body.tui rt,body.tui rp{font-size:var(--tui-font-size-sm);color:inherit}body.tui s{text-decoration:line-through;color:var(--tui-muted)}body.tui small{font-size:var(--tui-font-size-sm);color:var(--tui-muted)}body.tui sub,body.tui sup{font-size:.75em;line-height:0;vertical-align:baseline;color:inherit}body.tui sup{vertical-align:super}body.tui sub{vertical-align:sub}body.tui u{text-decoration:underline;color:inherit}body.tui span{color:inherit}body.tui h1,body.tui h2,body.tui h3,body.tui h4,body.tui h5,body.tui h6{font-family:var(--tui-font);color:var(--tui-fg);margin:0 0 var(--tui-gap);line-height:1.2}body.tui h1{font-size:1.5rem}body.tui h2{font-size:1.25rem}body.tui h3{font-size:1.125rem}body.tui h4{font-size:1rem}body.tui h5,body.tui h6{font-size:var(--tui-font-size-sm)}body.tui p{margin:0 0 var(--tui-gap);color:var(--tui-fg)}body.tui blockquote{margin:0 0 var(--tui-gap);padding:var(--tui-pad-2) var(--tui-pad-2) var(--tui-pad-2) var(--tui-pad-3);border-left:var(--tui-bw) solid var(--tui-cyan);color:var(--tui-muted)}body.tui pre{font-family:var(--tui-font);margin:0 0 var(--tui-gap);padding:var(--tui-pad-2);border:var(--tui-bw) solid var(--tui-line-strong);overflow:auto;color:var(--tui-fg);background:var(--tui-bg)}body.tui ul,body.tui ol{margin:0 0 var(--tui-gap);padding-left:1.5em;color:var(--tui-fg)}body.tui li{margin:var(--tui-gap-sm) 0;color:inherit}body.tui dl{margin:0 0 var(--tui-gap);color:var(--tui-fg)}body.tui dt{font-weight:700;margin-top:var(--tui-gap);color:var(--tui-fg)}body.tui dt:first-child{margin-top:0}body.tui dd{margin-left:1.5em;margin-bottom:var(--tui-gap-sm);color:var(--tui-fg)}body.tui div{color:inherit}body.tui main,body.tui article,body.tui section,body.tui aside,body.tui nav,body.tui header,body.tui footer{color:var(--tui-fg)}body.tui address{font-style:italic;color:var(--tui-muted)}body.tui figure{margin:0 0 var(--tui-gap)}body.tui figcaption{font-size:var(--tui-font-size-sm);color:var(--tui-muted);margin-top:var(--tui-gap-sm)}body.tui details{border:var(--tui-bw) solid var(--tui-line-strong);padding:var(--tui-pad-2);margin:0 0 var(--tui-gap)}body.tui summary{cursor:pointer;padding:var(--tui-pad-1) 0;list-style:none;color:var(--tui-fg)}body.tui summary::-webkit-details-marker{display:none}body.tui table{border-collapse:collapse;width:var(--tui-element-width, 100%);margin:0 0 var(--tui-gap);color:var(--tui-fg)}body.tui thead,body.tui tbody,body.tui tfoot{color:var(--tui-fg)}body.tui tr{border-bottom:var(--tui-bw) solid var(--tui-line)}body.tui th,body.tui td{padding:var(--tui-pad-1) var(--tui-pad-2);border:var(--tui-bw) solid var(--tui-line);text-align:left}body.tui th{font-weight:700;color:var(--tui-fg)}body.tui caption{font-size:var(--tui-font-size-sm);color:var(--tui-muted);padding:var(--tui-pad-1) var(--tui-pad-2);caption-side:top}body.tui form{display:block;gap:var(--tui-gap)}body.tui fieldset{border:var(--tui-bw) solid var(--tui-line-strong);padding:var(--tui-pad-2);margin:0 0 var(--tui-gap)}body.tui legend{color:var(--tui-muted);padding:0 var(--tui-pad-1)}body.tui label{color:var(--tui-muted);cursor:pointer}body.tui output{color:var(--tui-fg);font-family:var(--tui-font)}body.tui img{max-width:100%;height:auto;vertical-align:middle}body.tui video,body.tui audio{max-width:100%;border:var(--tui-bw) solid var(--tui-line-strong)}body.tui canvas{display:block}body.tui iframe,body.tui embed,body.tui object{border:var(--tui-bw) solid var(--tui-line-strong);max-width:100%}body.tui picture{display:block}body.tui hr{border:0;border-top:var(--tui-bw) solid var(--tui-line);margin:var(--tui-gap) 0}body.tui dialog{border:var(--tui-bw) solid var(--tui-line-strong);padding:var(--tui-pad-2);background:var(--tui-bg);color:var(--tui-fg)}body.tui data,body.tui time{color:inherit}body.tui noscript{display:block;padding:var(--tui-pad-2);color:var(--tui-muted)}body.tui template{display:none}body.tui button,body.tui input,body.tui select,body.tui textarea{font:inherit;color:inherit;background:transparent;outline:none;box-shadow:none;appearance:none}body.tui button,body.tui .button{padding:var(--tui-button-padding-y) var(--tui-button-padding-x);border:2px solid var(--tui-cyan);background:transparent;cursor:pointer;line-height:1.1}body.tui button:hover,body.tui .button:hover{border-color:var(--tui-cyan)}body.tui button:active,body.tui .button:active{border-color:var(--tui-pink)}body.tui button[disabled],body.tui button:disabled{opacity:.45;cursor:not-allowed;border-color:var(--tui-line)}body.tui button.primary{border-color:var(--tui-pink)}body.tui button.danger{border-color:var(--tui-danger)}body.tui button.ok{border-color:var(--tui-ok)}body.tui input[type=text],body.tui input[type=search],body.tui input[type=email],body.tui input[type=url],body.tui input[type=tel],body.tui input[type=number],body.tui textarea{width:var(--tui-input-width);padding:var(--tui-input-padding-y) var(--tui-input-padding-x);border:2px solid var(--tui-line-strong);background:transparent}body.tui input[type=text]:hover,body.tui input[type=search]:hover,body.tui input[type=email]:hover,body.tui input[type=url]:hover,body.tui input[type=tel]:hover,body.tui input[type=number]:hover,body.tui textarea:hover,body.tui input[type=text]:focus,body.tui input[type=search]:focus,body.tui input[type=email]:focus,body.tui input[type=url]:focus,body.tui input[type=tel]:focus,body.tui input[type=number]:focus,body.tui textarea:focus{border-color:var(--tui-cyan)}body.tui textarea{min-height:4em;resize:vertical}body.tui select{width:var(--tui-input-width);padding:var(--tui-input-padding-y) 30px var(--tui-input-padding-y) var(--tui-input-padding-x);border:2px solid var(--tui-line-strong);background:transparent;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--tui-cyan) 50%),linear-gradient(135deg,var(--tui-cyan) 50%,transparent 50%);background-position:calc(100% - 16px) 55%,calc(100% - 10px) 55%;background-size:6px 6px,6px 6px;background-repeat:no-repeat}body.tui select:hover,body.tui select:focus{border-color:var(--tui-cyan)}body.tui input[type=checkbox]{width:var(--tui-checkbox-size);height:var(--tui-checkbox-size);border:var(--tui-bw) solid var(--tui-line-strong);background:var(--tui-bg);accent-color:var(--tui-cyan);vertical-align:middle;margin-right:var(--tui-gap);cursor:pointer}body.tui input[type=checkbox]:checked{border-color:var(--tui-cyan);background:var(--tui-cyan)}body.tui input[type=radio]{width:var(--tui-checkbox-size);height:var(--tui-checkbox-size);border:var(--tui-bw) solid var(--tui-line-strong);background:var(--tui-bg);accent-color:var(--tui-cyan);vertical-align:middle;margin-right:var(--tui-gap);cursor:pointer}body.tui input[type=radio]:checked{border-color:var(--tui-cyan)}body.tui input[type=range]{width:var(--tui-input-width, 100%);height:18px;padding:0;border:0;background:transparent}body.tui input[type=range]::-webkit-slider-runnable-track{height:2px;background:var(--tui-line-strong)}body.tui input[type=range]::-moz-range-track{height:2px;background:var(--tui-line-strong)}body.tui input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:var(--tui-range-thumb-size);height:var(--tui-range-thumb-size);margin-top:-4px;background:transparent;border:2px solid var(--tui-cyan);cursor:pointer}body.tui input[type=range]::-moz-range-thumb{width:var(--tui-range-thumb-size);height:var(--tui-range-thumb-size);background:transparent;border:2px solid var(--tui-cyan);cursor:pointer}body.tui input[type=range]:hover::-webkit-slider-thumb{border-color:var(--tui-pink)}body.tui input[type=range]:hover::-moz-range-thumb{border-color:var(--tui-pink)}body.tui input[type=color]{width:2.5rem;height:1.5rem;padding:2px;border:2px solid var(--tui-line-strong);background:transparent;cursor:pointer}body.tui input[type=color]:hover{border-color:var(--tui-cyan)}body.tui .panel{border:2px solid var(--tui-line-strong);background:transparent;padding:0;width:var(--tui-panel-width, auto)}body.tui .panel-header{width:100%;display:flex;align-items:center;gap:var(--tui-gap);padding:var(--tui-pad-2);border:0;border-bottom:2px solid var(--tui-line-strong);background:transparent;cursor:pointer;font:inherit;color:var(--tui-fg);text-align:left}body.tui .panel-header:hover{border-bottom-color:var(--tui-cyan)}body.tui .panel-header:active{border-bottom-color:var(--tui-pink)}body.tui .panel-header[aria-disabled=true]{cursor:default}body.tui .panel-chevron{color:var(--tui-muted);transition:transform .2s}body.tui .panel.collapsed .panel-chevron{transform:rotate(-90deg)}body.tui .panel-content{padding:var(--tui-panel-padding)}body.tui .panel.collapsed .panel-content{display:none}body.tui .modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center}body.tui .modal.hidden{display:none}body.tui .modal-backdrop{position:absolute;inset:0;background:#000c}body.tui .modal-content{position:relative;z-index:1;width:var(--tui-modal-width);max-height:var(--tui-modal-max-height);background:var(--tui-bg);border:var(--tui-bw) solid var(--tui-line-strong);display:flex;flex-direction:column}body.tui .modal-header{padding:var(--tui-pad-2);border-bottom:var(--tui-bw) solid var(--tui-line)}body.tui .modal-title{font-size:var(--tui-font-size);color:var(--tui-fg);margin:0}body.tui .modal-body{padding:var(--tui-pad-2);overflow:auto;display:flex;flex-direction:column;gap:var(--tui-gap)}body.tui .modal-instructions{color:var(--tui-muted);margin:0}body.tui .modal-actions{padding:var(--tui-pad-2);border-top:var(--tui-bw) solid var(--tui-line);display:flex;justify-content:flex-end;gap:var(--tui-gap)}body.tui .toast{background:var(--tui-bg);border:var(--tui-bw) solid var(--tui-line-strong);color:var(--tui-fg);padding:var(--tui-pad-2)}body.tui .toast-success{border-color:var(--tui-ok)}body.tui .toast-error{border-color:var(--tui-danger)}body.tui .toast-error .toast-message{color:#ff8a8a}body.tui .toast-undo{border-color:var(--tui-cyan)}body.tui .toast-recovery{border:var(--tui-bw) solid var(--tui-cyan);background:transparent;color:var(--tui-fg)}body.tui .toast-recovery:hover{border-color:var(--tui-pink)}body.tui .dropdown-menu{position:absolute;top:100%;left:0;margin-top:var(--tui-gap-sm);min-width:100%;display:none;flex-direction:column;border:var(--tui-bw) solid var(--tui-line-strong);background:var(--tui-bg);z-index:200}body.tui .dropdown-menu.open{display:flex}body.tui .dropdown-menu button{border:0;border-bottom:var(--tui-bw) solid var(--tui-line);text-align:left;padding:var(--tui-pad-2)}body.tui .dropdown-menu button:last-child{border-bottom:0}body.tui .dropdown-menu button:hover{border-color:var(--tui-cyan)}body.tui .tab{padding:var(--tui-pad-1) var(--tui-pad-2);border:2px solid var(--tui-line-strong);background:transparent;cursor:pointer;line-height:1;font:inherit;color:var(--tui-fg)}body.tui .tab:hover{border-color:var(--tui-cyan)}body.tui .tab.active{border-color:var(--tui-pink);color:var(--tui-fg)}body.tui .control-row{display:grid;grid-template-columns:minmax(100px,1fr) 1fr auto;align-items:center;gap:var(--tui-gap);padding:var(--tui-pad-1) 0}body.tui .control-row label{color:var(--tui-muted)}body.tui .control-row label:has(input[type=checkbox]){grid-column:1 / -1}body.tui .control-row span{min-width:2rem;color:var(--tui-muted)}body.tui .tool-divider,body.tui .divider{height:0;border:0;border-top:var(--tui-bw) solid var(--tui-line);margin:var(--tui-gap) 0}body.tui .hidden{display:none!important}body.tui .hint{color:var(--tui-muted);font-size:.85em}body.tui .credit-link{color:var(--tui-muted);text-decoration:none}body.tui .credit-link:hover{color:var(--tui-cyan)}body.tui .scene-list{border:var(--tui-bw) solid var(--tui-line);padding:var(--tui-pad-2)}body.tui .scene-list-title{color:var(--tui-muted);margin:0 0 var(--tui-gap);font-size:var(--tui-font-size-sm)}body.tui .scene-list-content{max-height:240px;overflow:auto;border-top:var(--tui-bw) solid var(--tui-line);padding-top:var(--tui-pad-2)}body.tui .scene-list-item{padding:var(--tui-pad-1) var(--tui-pad-2);border:2px solid var(--tui-line-strong);background:transparent;cursor:pointer;text-align:left;width:100%;font:inherit;color:var(--tui-fg)}body.tui .scene-list-item:hover{border-color:var(--tui-cyan)}body.tui .scene-list-empty{padding:var(--tui-pad-1) var(--tui-pad-2);border:var(--tui-bw) dashed var(--tui-line-strong);color:var(--tui-muted);background:transparent;font:inherit}body.tui .direction-inputs{display:flex;gap:var(--tui-gap)}body.tui .direction-inputs input{flex:1;min-width:0}body.tui .panel-actions{display:flex;flex-wrap:wrap;gap:var(--tui-gap);margin-bottom:var(--tui-gap)}body.tui .add-entity-actions,body.tui .brush-actions{display:flex;flex-wrap:wrap;gap:var(--tui-gap)}body.tui .add-entity-actions button.active,body.tui .brush-actions button.active{border-color:var(--tui-pink)}body.tui .control-footer{padding:var(--tui-pad-1) 0;border-top:var(--tui-bw) solid var(--tui-line);text-align:center}body.tui *::-webkit-scrollbar{width:var(--tui-scrollbar-size);height:var(--tui-scrollbar-size)}body.tui *::-webkit-scrollbar-track{background:var(--tui-bg)}body.tui *::-webkit-scrollbar-thumb{background:transparent;border:var(--tui-bw) solid var(--tui-line-strong)}body.tui *::-webkit-scrollbar-thumb:hover{border-color:var(--tui-cyan)}body.tui #app{position:relative;width:100vw;height:100vh;display:flex;flex-direction:column;min-height:0}body.tui #header{display:flex;align-items:center;justify-content:space-between;padding:var(--tui-pad-2);border-bottom:var(--tui-bw) solid var(--tui-line-strong);background:transparent;flex-shrink:0}body.tui #viewport,body.tui .canvas-area{position:relative;flex:1 1 auto;min-height:0;z-index:0}body.tui #viewport{background:var(--tui-bg);border-bottom:var(--tui-bw) solid var(--tui-line)}body.tui #controls-area{position:fixed;bottom:0;left:0;right:0;z-index:10;max-height:var(--tui-controls-area-max-height);display:flex;flex-direction:column;border-top:var(--tui-bw) solid var(--tui-line-strong);background:var(--tui-controls-area-bg, rgba(0, 0, 0, .3));pointer-events:auto}body.tui #controls-area .controls-area-content,body.tui #controls-area .controls-panels{background:transparent!important}body.tui #controls-area .panel,body.tui #controls-area .panel-content,body.tui #controls-area button,body.tui #controls-area .button,body.tui #controls-area input[type=text],body.tui #controls-area input[type=search],body.tui #controls-area input[type=email],body.tui #controls-area input[type=url],body.tui #controls-area input[type=tel],body.tui #controls-area input[type=number],body.tui #controls-area input[type=color],body.tui #controls-area select,body.tui #controls-area textarea,body.tui #controls-area input[type=checkbox],body.tui #controls-area input[type=radio]{background:var(--tui-controls-surface-bg)!important}body.tui #controls-area input[type=checkbox]:checked,body.tui #controls-area input[type=radio]:checked{background:var(--tui-cyan)!important}body.tui #controls-area .scene-list-item,body.tui #controls-area .scene-list-empty,body.tui #controls-area .entity-picker-option{background:var(--tui-controls-surface-bg)!important}body.tui .controls-area-header-row{display:flex;align-items:center;gap:var(--tui-gap)}body.tui .controls-area-header{display:flex;align-items:center;gap:var(--tui-gap);padding:var(--tui-pad-2);border:0;background:transparent;color:var(--tui-fg);font:inherit;cursor:pointer;text-align:left;flex:0 0 auto}body.tui .controls-area-header:hover{background:#ffffff14;color:var(--tui-cyan)}body.tui .controls-area-chevron{color:var(--tui-muted);transition:transform .2s}body.tui #controls-area.collapsed .controls-area-chevron{transform:rotate(-90deg)}body.tui .controls-area-content{padding:var(--tui-pad-2);overflow-y:auto;overflow-x:hidden;min-height:0}body.tui #controls-area.collapsed .controls-area-content{display:none}body.tui .controls-panels{display:flex;flex-direction:column;gap:var(--tui-gap);min-width:0}body.tui .mode-panel{min-width:0}body.tui .entity-picker-dialog{border:2px solid var(--tui-line-strong);padding:var(--tui-pad-2);background:var(--tui-bg)}body.tui .entity-picker-option{padding:var(--tui-pad-2);border:2px solid var(--tui-line-strong);background:transparent;color:var(--tui-fg);cursor:pointer;font:inherit;text-align:left;display:flex;align-items:center;gap:var(--tui-gap)}body.tui .entity-picker-option:hover{border-color:var(--tui-cyan)}body.tui .export-list{display:flex;flex-direction:column;gap:var(--tui-gap)}body.tui .export-group{border:var(--tui-bw) solid var(--tui-line);padding:var(--tui-pad-1)}body.tui .export-group>summary{cursor:pointer;list-style:none}body.tui .export-group>summary::-webkit-details-marker{display:none}body.tui .export-items{display:flex;flex-direction:column;gap:var(--tui-pad-1);padding:var(--tui-pad-1) 0 0 1rem}body.tui .export-item,body.tui .export-label{display:flex;align-items:center;gap:var(--tui-gap);color:var(--tui-fg)}body.tui .export-option{display:flex;align-items:flex-start;gap:var(--tui-gap);margin-top:var(--tui-pad-1);color:var(--tui-fg);cursor:pointer}body.tui #app.app-layout-row #controls-area{inset:0 auto auto 0;width:var(--tui-controls-area-width);max-height:none;height:100vh;border-top:0;border-right:var(--tui-bw) solid var(--tui-line-strong)}body.tui #viewport{position:fixed;inset:0;width:100vw;height:100vh;flex:none}body.tui #controls-area{position:fixed;bottom:0;left:0;right:0;width:100%;max-width:100vw;display:flex;flex-direction:column;border-top:var(--tui-bw) solid var(--tui-line-strong);background:var(--tui-controls-area-bg, rgba(0, 0, 0, .9));z-index:10;box-shadow:0 -4px 16px #0006}body.tui #controls-area:not(.collapsed){max-height:50vh}body.tui #controls-area.collapsed{max-height:none;height:fit-content}body.tui #controls-area.collapsed .controls-area-content{display:none!important}body.tui .controls-area-content{display:grid;grid-template-columns:minmax(0,360px) minmax(260px,1fr);gap:var(--tui-gap);align-items:start;flex:1 1 auto;min-height:0;overflow-y:auto}body.tui .panel-chevron{display:none}body.tui .save-dropdown,body.tui .load-dropdown{position:relative}body.tui .save-menu,body.tui .load-menu{position:absolute;top:100%;left:0;margin-top:var(--tui-gap-sm);min-width:100%;display:none;flex-direction:column;border:var(--tui-bw) solid var(--tui-line-strong);background:var(--tui-bg);z-index:200}body.tui .save-menu.open,body.tui .load-menu.open{display:flex}body.tui .save-menu button,body.tui .load-menu button{border:0;border-bottom:var(--tui-bw) solid var(--tui-line);text-align:left;padding:var(--tui-pad-2)}body.tui .save-menu button:last-child,body.tui .load-menu button:last-child{border-bottom:0}body.tui .save-menu button:hover,body.tui .load-menu button:hover{border-color:var(--tui-cyan)}#tools-select{min-width:180px}#file-buttons{margin-left:auto}body.tui .floor-plan-tool-root{flex:1 1 auto;min-height:0;overflow:auto;border-bottom:var(--tui-bw) solid var(--tui-line);background:var(--tui-bg);background-image:linear-gradient(rgba(55,55,55,.35) 1px,transparent 1px),linear-gradient(90deg,rgba(55,55,55,.35) 1px,transparent 1px),linear-gradient(rgba(85,85,85,.45) 1px,transparent 1px),linear-gradient(90deg,rgba(85,85,85,.45) 1px,transparent 1px);background-size:24px 24px,24px 24px,120px 120px,120px 120px;background-position:0 0,0 0,0 0,0 0}body.tui .floor-plan-controls{display:grid;gap:var(--tui-gap);align-content:start}body.tui .floor-plan-controls h2{margin:0 0 var(--tui-gap-sm);font-size:1rem}body.tui .floor-plan-control{display:grid;gap:6px}body.tui .floor-plan-actions{display:flex;flex-wrap:wrap;gap:6px}body.tui .floor-plan-status,body.tui .floor-plan-stats{margin:0;color:var(--tui-muted);font-size:var(--tui-font-size-sm)}body.tui .floor-plan-preview{min-height:calc(100vh - 96px);overflow:auto;border:2px solid var(--tui-line-strong);padding:var(--tui-pad-1);background:var(--tui-bg)}body.tui .floor-plan-preview-content{position:relative;min-height:100%;display:grid;place-items:center;background-color:var(--tui-bg);background-image:linear-gradient(rgba(51,51,51,.35) 1px,transparent 1px),linear-gradient(90deg,rgba(51,51,51,.35) 1px,transparent 1px),linear-gradient(rgba(74,110,150,.45) 1px,transparent 1px),linear-gradient(90deg,rgba(74,110,150,.45) 1px,transparent 1px);background-size:24px 24px,24px 24px,120px 120px,120px 120px}body.tui .floor-plan-preview-content:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:3;background-image:linear-gradient(rgba(130,130,130,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(130,130,130,.14) 1px,transparent 1px),linear-gradient(rgba(175,175,175,.2) 1px,transparent 1px),linear-gradient(90deg,rgba(175,175,175,.2) 1px,transparent 1px);background-size:24px 24px,24px 24px,120px 120px,120px 120px}body.tui .floor-plan-preview svg{position:relative;z-index:2;width:100%;height:auto;background:var(--tui-bg);display:block;cursor:grab}body.tui .floor-plan-preview svg .bg{fill:var(--tui-bg)}body.tui .floor-plan-preview svg.is-panning{cursor:grabbing}body.tui .floor-plan-entity-list{list-style:none;padding:0;margin:0;display:grid;gap:6px;max-height:240px;overflow-y:auto;padding-right:var(--tui-gap-sm)}body.tui .floor-plan-entity-item,body.tui .floor-plan-entity-empty{border:2px solid var(--tui-line-strong);padding:var(--tui-pad-1) var(--tui-pad-2);font-size:var(--tui-font-size-sm);color:var(--tui-fg)}body.tui .floor-plan-entity-item{width:100%;text-align:left}body.tui .floor-plan-entity-item.is-selected{border-color:var(--tui-fg);outline:2px solid var(--tui-fg);outline-offset:1px}body.tui .floor-plan-entity-empty{color:var(--tui-muted)}body.tui .scene-list-content{height:240px}body.tui .scene-list-group{border:var(--tui-bw) solid var(--tui-line);padding:var(--tui-pad-1)}body.tui .scene-list-group>summary{cursor:pointer;list-style:none}body.tui .scene-list-group>summary::-webkit-details-marker{display:none}body.tui .scene-list-subitems{display:flex;flex-direction:column;gap:var(--tui-pad-1)}body.tui .entity-picker-overlay{position:fixed;inset:0;z-index:120;display:grid;place-items:center;background:#0009}body.tui .entity-picker-overlay[hidden]{display:none!important}body.tui .entity-picker-dialog{width:min(440px,calc(100vw - 32px));display:grid;gap:var(--tui-gap);padding:var(--tui-pad-2)}body.tui .entity-picker-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--tui-gap)}body.tui .ramp-creator-panel{display:flex;flex-direction:column;gap:var(--tui-gap);padding:var(--tui-pad-2) 0;border-top:var(--tui-bw) solid var(--tui-line);margin-top:var(--tui-gap)}body.tui .ramp-creator-status{color:var(--tui-muted)}body.tui .light-controls-title{color:var(--tui-muted);margin-bottom:var(--tui-gap-sm)}body.tui .light-controls-empty{color:var(--tui-muted)}body.tui .add-lights{display:flex;flex-wrap:wrap;gap:var(--tui-gap)}body.tui #camera-controls{position:static;top:auto;right:auto;bottom:auto;width:100%;min-width:0;max-height:40vh;overflow-y:auto;overflow-x:visible;min-height:0;display:flex;flex-direction:column;gap:var(--tui-gap)}body.tui #camera-controls>.panel{flex:0 0 auto;min-width:0}body.tui #level-builder-entities-panel{min-height:0}body.tui #panel-level-builder-entities{max-height:220px;overflow-y:auto}body.tui .controls-panels{max-height:40vh;overflow-y:auto}body.tui .add-entity-actions>button{min-width:84px}
