:root{font-family:Inter,"Segoe UI",system-ui,sans-serif;color-scheme:dark;--bg:#0f1318;--panel:#151a21;--panel-2:#1a2028;--panel-3:#202732;--canvas:#111820;--canvas-grid:#25303c;--text:#edf2f5;--muted:#8e9ba8;--subtle:#667380;--line:#2a333e;--line-strong:#3a4654;--accent:#f0c54b;--accent-strong:#ffd967;--accent-ink:#211a08;--blue:#78b7ff;--danger:#ff7771;--danger-bg:#341c1e;--success:#65d69a;--shadow:0 14px 40px #0005;--radius:12px;--grid-size:32px}
[data-theme="light"]{color-scheme:light;--bg:#e9edf1;--panel:#f9fafb;--panel-2:#f1f4f6;--panel-3:#e8edf1;--canvas:#f7f8f8;--canvas-grid:#dfe5e9;--text:#182129;--muted:#596875;--subtle:#7c8994;--line:#d3dae0;--line-strong:#b9c4cd;--accent:#e7b92f;--accent-strong:#dbaa18;--accent-ink:#2c2104;--blue:#156dc4;--danger:#c33d39;--danger-bg:#fff0ef;--success:#198456;--shadow:0 14px 36px #27333f22}
*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{background:var(--bg);color:var(--text);font-size:14px}button,input,select{font:inherit}button{cursor:pointer}.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.app-header{height:60px;display:grid;grid-template-columns:280px 1fr auto;align-items:center;padding:0 14px;border-bottom:1px solid var(--line);background:var(--panel);position:relative;z-index:20}.brand{display:flex;align-items:center;gap:9px;color:var(--text);text-decoration:none;font-weight:750;font-size:17px}.brand svg{color:var(--accent);width:21px;height:21px}.prototype-badge{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 9%,transparent);padding:3px 6px;border-radius:999px}.project-title{justify-self:center;display:flex;align-items:center;gap:8px}.eyebrow{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-size:10px;font-weight:750}.project-title input{width:190px;text-align:center;font-weight:650;background:transparent;border:1px solid transparent;color:var(--text);padding:7px;border-radius:7px}.project-title input:hover,.project-title input:focus{border-color:var(--line);background:var(--panel-2)}.header-actions{display:flex;gap:8px;align-items:center}.history-actions{display:flex;gap:3px;padding-right:8px;border-right:1px solid var(--line)}.history-actions .history-button{width:auto;min-width:68px;padding:0 9px;gap:6px}.history-button span{font-size:10px;font-weight:700}
.button,.icon-button,.compact-button{border:1px solid var(--line-strong);background:var(--panel-2);color:var(--text);border-radius:8px;min-height:36px;padding:8px 12px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:600}.button:hover,.icon-button:hover,.compact-button:hover{background:var(--panel-3);border-color:var(--muted)}.button:disabled,.icon-button:disabled,.compact-button:disabled{opacity:.4;cursor:not-allowed}.button-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.button-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.button-danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line))}.button-danger:hover{background:var(--danger-bg)}.icon-button{width:36px;padding:0}.icon-button.small{width:30px;min-height:30px}.full-width{width:100%;margin-top:8px}.sun-icon{display:none}[data-theme="light"] .sun-icon{display:block}[data-theme="light"] .moon-icon{display:none}
.app-shell{height:calc(100vh - 60px);display:grid;grid-template-columns:72px 282px minmax(420px,1fr) 272px;grid-template-rows:minmax(0,1fr);min-width:960px;min-height:0}.tool-rail{background:var(--panel);border-right:1px solid var(--line);padding:10px 7px;display:flex;flex-direction:column;gap:5px;min-height:0;overflow-y:auto}.tool{position:relative;width:58px;min-height:56px;border:1px solid transparent;background:transparent;color:var(--muted);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:10px}.tool svg{width:20px;height:20px}.tool:hover{background:var(--panel-2);color:var(--text)}.tool.active{background:color-mix(in srgb,var(--accent) 14%,var(--panel));border-color:color-mix(in srgb,var(--accent) 38%,var(--line));color:var(--accent)}.tool kbd{position:absolute;right:4px;top:3px;color:var(--subtle);font:8px/1 system-ui}.rail-spacer{flex:1}
.library-panel,.inspector-panel{background:var(--panel);border-right:1px solid var(--line);min-width:0;display:flex;flex-direction:column}.library-panel{position:relative;overflow:hidden}.inspector-panel{border-right:0;border-left:1px solid var(--line);padding:16px;overflow:auto}.panel-scroll{position:relative;padding:15px;overflow:auto;flex:1;min-height:0}.panel-footer{height:39px;padding:0 13px;border-top:1px solid var(--line);display:flex;align-items:center;color:var(--muted);font-size:11px;gap:7px}.panel-footer button{border:0;background:none;color:var(--muted);padding:0}.panel-footer button:hover{color:var(--text)}.footer-sep{color:var(--line-strong)}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px color-mix(in srgb,var(--success) 14%,transparent)}
.welcome-card{position:absolute;z-index:50;top:15px;left:15px;right:15px;max-height:calc(100% - 30px);overflow-y:auto;overscroll-behavior:contain;background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 13%,var(--panel-2)),var(--panel-2));border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:var(--radius);padding:18px;margin:0;box-shadow:0 20px 55px #0009}.welcome-card .sparkle{color:var(--accent);font-size:24px}.welcome-card h2{font-size:18px;margin:7px 0}.welcome-card p{color:var(--muted);line-height:1.5;font-size:12px;margin:0 0 14px}.dismiss-welcome{position:absolute;right:7px;top:7px;border:0;background:transparent;color:var(--muted);padding:5px}.dismiss-welcome svg{width:15px}.welcome-actions{display:flex;flex-wrap:wrap;gap:7px}.welcome-actions .button{min-height:32px;font-size:11px;padding:7px 9px}.tool-options h2,.inspector-panel h2{font-size:17px;margin:3px 0 7px}.helper{color:var(--muted);line-height:1.5;font-size:12px;margin:0 0 16px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.quick-actions{display:grid;gap:7px}.quick-actions button{display:flex;align-items:center;gap:12px;text-align:left;border:1px solid var(--line);background:var(--panel-2);color:var(--text);padding:10px;border-radius:9px}.quick-actions button:hover{border-color:var(--accent);transform:translateY(-1px)}.quick-actions svg{color:var(--accent);width:21px}.quick-actions span{display:grid}.quick-actions small,.choice small{color:var(--muted);font-size:10px;margin-top:2px}.tip{margin-top:16px;border-radius:9px;background:var(--panel-2);padding:10px;color:var(--muted);line-height:1.5;font-size:11px}.tip>span{color:var(--accent);font-weight:750;margin-right:5px}kbd{border:1px solid var(--line-strong);background:var(--panel-3);border-radius:4px;padding:1px 4px;color:var(--muted);font-size:9px}
label{display:grid;gap:6px;color:var(--muted);font-size:11px;font-weight:650;margin:11px 0}input,select{border:1px solid var(--line-strong);background:var(--panel-2);color:var(--text);border-radius:8px;padding:9px 10px;width:100%}input:hover,select:hover{border-color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tool-hint{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11px;line-height:1.4;background:var(--panel-2);padding:10px;border-radius:9px;margin-top:17px}.tool-hint svg{color:var(--accent);flex:0 0 auto}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.choice{min-height:83px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);border-radius:9px}.choice:hover,.choice.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--panel-2))}.truss-preview{width:48px;height:16px;border:2px solid var(--muted);position:relative}.truss-preview.box:after,.truss-preview.ladder:after{content:"";position:absolute;inset:2px;background:repeating-linear-gradient(60deg,transparent 0 7px,var(--muted) 8px 9px)}.truss-preview.triangle{clip-path:polygon(50% 0,100% 100%,0 100%);height:23px}.truss-preview.circle{border-radius:50%;width:34px;height:34px}.shape-preview{width:30px;height:24px;border:2px solid var(--muted)}.shape-preview.circle{border-radius:50%}.shape-preview.line{height:2px;border:0;border-top:2px solid var(--muted);transform:rotate(-20deg)}.shape-preview.focus{border:0;color:var(--accent);font-size:26px}.search-field{margin-bottom:10px}.fixture-library{display:grid;gap:6px}.fixture-option{display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:9px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);padding:7px;border-radius:9px;text-align:left}.fixture-option:hover,.fixture-option.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--panel-2))}.fixture-option small{color:var(--muted);display:block;margin-top:2px}.fixture-symbol-preview{width:34px;height:34px;display:grid;place-items:center;color:var(--accent)}
.workspace{display:grid;grid-template-rows:48px minmax(0,1fr) 30px;min-width:0;background:var(--bg)}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;padding:0 10px;border-bottom:1px solid var(--line);background:var(--panel)}.selection-actions,.view-actions{display:flex;align-items:center;gap:7px}.selection-actions>span{font-size:11px;color:var(--muted);min-width:95px}.compact-button{min-height:29px;padding:5px 8px;font-size:10px}.compact-button svg{width:14px}.snap-control{display:flex;align-items:center;gap:5px;margin:0;padding:5px 7px;background:var(--panel-2);border:1px solid var(--line);border-radius:7px;color:var(--text);font-size:10px}.snap-control input{width:auto;margin:0}.snap-control svg{width:14px}.view-actions select{width:66px;padding:6px;font-size:10px}.divider{height:20px;border-left:1px solid var(--line)}.zoom-control{display:flex;align-items:center;gap:1px;margin:0;color:var(--muted);font-size:10px}.zoom-control input{width:42px;min-height:29px;padding:4px 2px;text-align:right;font-size:10px}.canvas-wrap{overflow:auto;padding:22px;background:var(--bg);display:grid;place-items:center}.canvas{width:100%;height:100%;min-width:600px;min-height:480px;position:relative;overflow:hidden;background-color:var(--canvas);background-image:linear-gradient(var(--canvas-grid) 1px,transparent 1px),linear-gradient(90deg,var(--canvas-grid) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:2px;transform-origin:center;transition:background-color .2s}.canvas.has-image:before{content:"";position:absolute;inset:0;background:var(--underlay-image) center/contain no-repeat;opacity:.46;pointer-events:none}.origin-label{position:absolute;left:50%;top:8px;transform:translateX(-50%);font-size:8px;letter-spacing:.16em;color:var(--subtle)}.origin-label:after{content:"";position:absolute;left:50%;top:16px;height:100vh;border-left:1px dashed color-mix(in srgb,var(--muted) 35%,transparent)}.empty-canvas{position:absolute;inset:0;display:grid;place-content:center;text-align:center;z-index:2}.empty-canvas[hidden]{display:none}.empty-icon{margin:auto;width:50px;height:50px;border-radius:14px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,var(--panel));color:var(--accent)}.empty-icon svg{width:25px;height:25px}.empty-canvas h2{font-size:18px;margin:12px 0 4px}.empty-canvas p{margin:0 0 15px;color:var(--muted)}.empty-canvas>div:last-child{display:flex;gap:8px;justify-content:center}.canvas-status{display:flex;align-items:center;justify-content:space-between;padding:0 10px;background:var(--panel);border-top:1px solid var(--line);color:var(--muted);font-size:10px}.canvas-status>span{display:flex;align-items:center;gap:7px}.validation-pill{border:1px solid var(--line);border-radius:999px;padding:3px 8px}.validation-pill.valid{color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,var(--line))}.validation-pill.error{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line))}
.plot-object{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;color:var(--text);padding:0;touch-action:none;user-select:none}.plot-object.selected:after{content:"";position:absolute;inset:-7px;border:2px solid var(--blue);border-radius:5px;box-shadow:0 0 0 2px color-mix(in srgb,var(--blue) 20%,transparent)}.plot-object.grouped:before{content:"";position:absolute;inset:-4px;border:1px dashed var(--accent);border-radius:4px}.object-label{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);white-space:nowrap;font-size:9px;color:var(--muted);text-shadow:0 1px var(--canvas)}.stage-object{background:color-mix(in srgb,var(--accent) 4%,transparent);border:2px solid var(--muted);display:grid;place-items:center}.stage-object .stage-center{font-size:10px;letter-spacing:.12em;color:var(--muted)}.stage-object.proscenium{border-top-width:5px}.stage-object.concert{border-style:dashed}.lineset-object{height:8px;border-top:3px solid var(--text)}.lineset-object:before,.lineset-object:after{content:"";position:absolute;top:-6px;height:10px;border-left:2px solid var(--text)}.lineset-object:before{left:0}.lineset-object:after{right:0}.truss-object{height:18px;border:2px solid var(--accent);background:repeating-linear-gradient(60deg,transparent 0 9px,color-mix(in srgb,var(--accent) 55%,transparent) 10px 11px)}.truss-object.triangle{clip-path:polygon(50% 0,100% 100%,0 100%);height:30px}.truss-object.circle{border-radius:50%;height:var(--object-width);background:transparent}.shape-object{border:2px solid var(--muted);background:color-mix(in srgb,var(--blue) 8%,transparent)}.shape-object.circle{border-radius:50%}.shape-object.line{height:2px;border:0;border-top:2px solid var(--muted);background:transparent}.shape-object.focus{width:28px!important;height:28px!important;border:0;background:transparent;font-size:28px;color:var(--accent);display:grid;place-items:center}.fixture-object{width:38px!important;height:38px!important;display:grid;place-items:center}.fixture-object svg{width:32px;height:32px;color:var(--accent);stroke-width:1.7}.fixture-object .fixture-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:7px;font-weight:800;color:var(--text);text-shadow:0 1px 2px var(--canvas)}.fixture-object.profile svg{transform:scaleX(1.2)}.fixture-object.strip svg{transform:scaleY(.55)}.fixture-object.moving svg{transform:rotate(45deg)}.snap-guide{position:absolute;pointer-events:none;background:var(--blue);opacity:.65;z-index:40}.snap-guide.x{width:1px;top:0;bottom:0}.snap-guide.y{height:1px;left:0;right:0}
.inspector-empty{display:grid;place-content:center;text-align:center;height:100%;padding:20px;color:var(--muted)}.empty-selection{width:54px;height:54px;margin:auto;border:1px solid var(--line);background:var(--panel-2);border-radius:15px;display:grid;place-items:center}.empty-selection svg{width:24px}.inspector-empty h2{color:var(--text);margin-top:14px}.inspector-empty p{font-size:12px;line-height:1.5}.inspector-heading{border-bottom:1px solid var(--line);padding-bottom:12px}.issues-section{margin-top:20px;border-top:1px solid var(--line);padding-top:15px}.issues-section h2{font-size:13px;margin:0}.count-badge{font-size:10px;background:var(--panel-3);padding:2px 7px;border-radius:999px}.issue{background:var(--danger-bg);border-left:3px solid var(--danger);padding:9px;border-radius:6px;margin:7px 0;color:var(--text);font-size:11px;line-height:1.4}.issue button{border:0;background:none;color:var(--danger);padding:4px 0 0;font-weight:700}
dialog{border:1px solid var(--line-strong);background:var(--panel);color:var(--text);border-radius:14px;box-shadow:0 24px 80px #0008;padding:0;max-width:min(720px,92vw)}dialog::backdrop{background:#05070aaa;backdrop-filter:blur(3px)}.modal{width:min(580px,88vw);padding:22px}.modal.wide{width:min(720px,90vw)}.small-modal{width:min(390px,88vw)}.modal-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.modal-heading h2{margin:3px 0;font-size:20px}.modal h3{font-size:13px;margin-top:18px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.safety-callout{display:flex;gap:12px;padding:12px;border:1px solid color-mix(in srgb,var(--success) 35%,var(--line));background:color-mix(in srgb,var(--success) 8%,var(--panel));border-radius:9px}.safety-callout svg{color:var(--success);flex:0 0 auto}.safety-callout p{color:var(--muted);font-size:11px;margin:4px 0 0}.checklist{color:var(--muted);font-size:12px;line-height:1.65;padding-left:20px}.table-wrap{max-height:50vh;overflow:auto;border:1px solid var(--line);border-radius:8px}table{width:100%;border-collapse:collapse;font-size:11px}th,td{padding:9px;text-align:left;border-bottom:1px solid var(--line)}th{position:sticky;top:0;background:var(--panel-2);color:var(--muted)}.toast-region{position:fixed;right:18px;bottom:18px;z-index:100;display:grid;gap:8px}.toast{background:var(--panel-3);border:1px solid var(--line-strong);box-shadow:var(--shadow);border-radius:9px;padding:10px 13px;animation:toast-in .18s ease-out}.toast strong{display:block;font-size:12px}.toast span{color:var(--muted);font-size:10px}@keyframes toast-in{from{opacity:0;transform:translateY(7px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.layers-card{margin-top:18px;border-top:1px solid var(--line);padding-top:15px}.layers-card h3{font-size:13px;margin:3px 0}.layer-row{display:flex;align-items:center;gap:8px;margin:5px 0;padding:6px 7px;border-radius:7px;color:var(--text);font-weight:550}.layer-row:hover{background:var(--panel-2)}.layer-row input{width:auto;margin:0}.layer-swatch{width:8px;height:8px;border-radius:50%}.layer-swatch.architecture{background:#9aa6b2}.layer-swatch.rigging{background:var(--accent)}.layer-swatch.fixtures{background:var(--blue)}.layer-swatch.annotations{background:#b88cff}.layer-swatch.underlay{background:#67c7b2}
.canvas.underlay-hidden:before{display:none}
.underlay-media{position:absolute;inset:0;width:100%;height:100%;border:0;pointer-events:none;background:white center/100% 100% no-repeat}
.text-object{min-width:70px;padding:5px 8px;border:1px solid transparent;text-align:left}.text-object:hover{border-color:var(--line-strong)}.text-object.small{font-size:9px}.text-object.medium{font-size:12px}.text-object.large{font-size:16px;font-weight:650}.dimension-object{border-top:1px solid var(--text);margin-top:11px}.dimension-object:before,.dimension-object:after{content:"";position:absolute;top:-5px;height:10px;border-left:1px solid var(--text)}.dimension-object:before{left:0}.dimension-object:after{right:0}.dimension-object .dimension-label{position:absolute;left:50%;top:-18px;transform:translateX(-50%);background:var(--canvas);padding:1px 5px;white-space:nowrap;font-size:9px}.marquee{position:absolute;border:1px solid var(--blue);background:color-mix(in srgb,var(--blue) 14%,transparent);z-index:60;pointer-events:none}
@media(max-width:1180px){.app-shell{grid-template-columns:64px 220px minmax(360px,1fr) 240px}.inspector-panel{position:static;width:auto;transform:none;box-shadow:none}.tool{width:50px}.app-header{grid-template-columns:230px 1fr auto}}
.layer-row>span:nth-of-type(2){flex:1}.layer-lock{width:25px;height:25px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--subtle)}.layer-lock svg{width:13px}.layer-lock:hover,.layer-lock.locked{background:var(--panel-3);color:var(--accent)}.grid-card{margin-top:14px;border-top:1px solid var(--line);padding-top:14px}.grid-card h3{font-size:13px;margin:3px 0}.toggle-row{display:flex;align-items:center;gap:7px}.toggle-row input{width:auto}.grid-card label output{font-size:10px;color:var(--muted);text-align:right}.paired-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.paired-actions .button{padding:6px;font-size:10px}.custom-profile{margin-top:14px;border:1px solid var(--line);border-radius:9px;padding:10px;background:var(--panel-2)}.custom-profile summary{cursor:pointer;font-weight:650;font-size:11px}.canvas.grid-hidden{background-image:none}.underlay-object{position:absolute;z-index:0;background:center/100% 100% no-repeat;transform:translate(-50%,-50%);transform-origin:center;touch-action:none}.underlay-object.selected{outline:2px solid #67c7b2;outline-offset:3px}.underlay-object.locked{pointer-events:none}.origin-label,.plot-object,.empty-canvas{z-index:2}.transform-handle{position:absolute;z-index:80;width:11px;height:11px;border:2px solid var(--canvas);background:var(--blue);border-radius:3px;padding:0;transform:translate(-50%,-50%)}.transform-handle[data-handle="nw"]{left:0;top:0;cursor:nwse-resize}.transform-handle[data-handle="n"]{left:50%;top:0;cursor:ns-resize}.transform-handle[data-handle="ne"]{left:100%;top:0;cursor:nesw-resize}.transform-handle[data-handle="e"]{left:100%;top:50%;cursor:ew-resize}.transform-handle[data-handle="se"]{left:100%;top:100%;cursor:nwse-resize}.transform-handle[data-handle="s"]{left:50%;top:100%;cursor:ns-resize}.transform-handle[data-handle="sw"]{left:0;top:100%;cursor:nesw-resize}.transform-handle[data-handle="w"]{left:0;top:50%;cursor:ew-resize}.rotate-handle{position:absolute;left:50%;top:-28px;z-index:80;width:14px;height:14px;border:2px solid var(--canvas);background:var(--accent);border-radius:50%;transform:translateX(-50%);cursor:grab}.rotate-handle:after{content:"";position:absolute;left:50%;top:12px;height:14px;border-left:1px solid var(--blue)}.plot-object.locked{pointer-events:none;opacity:.78}.lineset-object.curved{height:34px;border:3px solid var(--text);border-bottom:0;border-radius:50% 50% 0 0}.lineset-object.boom{width:var(--object-width)!important;height:var(--object-height)!important;border-top:0;border-left:3px solid var(--text)}.canvas[data-tool="pan"]{cursor:grab}.canvas[data-tool="pan"]:active{cursor:grabbing}.fixture-object{width:var(--object-width)!important;height:var(--object-height)!important;min-width:24px;min-height:24px}.shape-object.focus{width:var(--object-width)!important;height:var(--object-height)!important}
.tool-rail{overflow-x:hidden;scrollbar-width:none}.tool-rail::-webkit-scrollbar{display:none}.tool{flex:0 0 auto}.canvas{background-size:var(--grid-size) var(--grid-size)}
.fixture-library-summary{margin:0 0 10px;color:var(--subtle);font-size:10px}.fixture-option{grid-template-columns:38px minmax(0,1fr) auto}.fixture-option small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.validation-pill.warning{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.issue.warning{background:color-mix(in srgb,var(--accent) 8%,var(--panel));border-left-color:var(--accent)}.issue.warning button{color:var(--accent)}
.inspector-empty{display:block;text-align:left;height:auto;padding:4px}.inspector-empty-intro{text-align:center;padding:18px 10px 22px;border-bottom:1px solid var(--line)}.inspector-empty-intro h2{margin:10px 0 5px}.inspector-empty-intro p{margin:0}.inspector-default-settings{padding-top:18px}.inspector-default-settings>h2{font-size:15px;margin:3px 0 10px}.settings-panel .layers-card{margin-top:0;padding-top:0;border-top:0}.settings-panel .grid-card{margin-top:12px}.settings-panel .form-grid label{min-width:0}.settings-panel input[type="range"]{padding-left:0;padding-right:0}
.inspector-empty[hidden]{display:none}
.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}.export-card{border:1px solid var(--line);border-radius:10px;padding:13px;background:var(--panel-2)}.export-card h3{margin:4px 0 6px;font-size:14px}.export-card p{min-height:48px;margin:0 0 12px;color:var(--muted);font-size:11px;line-height:1.45}.export-card>div{display:flex;flex-wrap:wrap;gap:6px}.export-card .button{min-height:32px;padding:6px 9px;font-size:10px}.export-card .prototype-badge{font-size:8px}.print-schedule{display:none}
.mobile-inspector-button,.mobile-panel-header,.mobile-panel-backdrop{display:none}
@media(max-width:960px){
  html,body{height:100%;height:100dvh;overflow:hidden;overscroll-behavior:none}
  body{padding-top:env(safe-area-inset-top)}
  .app-header{height:56px;min-width:0;grid-template-columns:minmax(0,1fr) auto;padding:0 8px;gap:6px}
  .brand{min-width:0;font-size:15px}.brand .prototype-badge{display:none}.brand>span:first-of-type{overflow:hidden;text-overflow:ellipsis}
  .project-title{display:none}.header-actions{gap:4px}.history-actions{gap:2px;padding-right:4px}.header-actions .button,.header-actions .icon-button{min-height:40px;width:40px;padding:0}.history-actions .history-button{min-width:40px}.history-button span{display:none}
  .mobile-inspector-button{display:inline-flex}.mobile-inspector-button span,#exportBtn span{display:none}.mobile-inspector-button.has-selection{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
  .app-shell{position:relative;display:block;min-width:0;width:100%;height:calc(100dvh - 56px - env(safe-area-inset-top));padding-bottom:calc(66px + env(safe-area-inset-bottom));overflow:hidden}
  .workspace{width:100%;height:100%;grid-template-rows:48px minmax(0,1fr) 28px}
  .canvas-toolbar{justify-content:flex-start;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .canvas-toolbar::-webkit-scrollbar{display:none}.selection-actions,.view-actions{flex:0 0 auto}.selection-actions>span{min-width:auto}
  .canvas-wrap{padding:8px;place-items:stretch;touch-action:none;overscroll-behavior:contain}
  .canvas{min-width:100%;min-height:100%;box-shadow:none}
  .canvas-status{gap:10px;overflow:hidden}.canvas-status>span{white-space:nowrap}.canvas-status #toolPrompt{display:none}.validation-pill{overflow:hidden;text-overflow:ellipsis}
  .tool-rail{position:fixed;z-index:70;left:0;right:0;bottom:0;height:calc(66px + env(safe-area-inset-bottom));padding:5px max(6px,env(safe-area-inset-left)) env(safe-area-inset-bottom) max(6px,env(safe-area-inset-right));display:flex;flex-direction:row;align-items:flex-start;gap:4px;overflow-x:auto;overflow-y:hidden;border:0;border-top:1px solid var(--line);box-shadow:0 -10px 28px #0004;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .tool-rail::-webkit-scrollbar{display:none}.tool-rail .rail-spacer{display:none}.tool{width:56px;min-width:56px;min-height:54px;padding:4px 2px;scroll-snap-align:start}.tool kbd{display:none}
  .mobile-panel-backdrop{position:fixed;z-index:74;inset:calc(56px + env(safe-area-inset-top)) 0 calc(66px + env(safe-area-inset-bottom));width:100%;border:0;background:#05070a99;padding:0}
  .app-shell.mobile-library-open .mobile-panel-backdrop,.app-shell.mobile-inspector-open .mobile-panel-backdrop{display:block}
  .library-panel,.inspector-panel{position:fixed;z-index:75;top:calc(56px + env(safe-area-inset-top));bottom:calc(66px + env(safe-area-inset-bottom));width:min(380px,calc(100vw - 24px));max-width:none;background:var(--panel);box-shadow:var(--shadow);transition:transform .2s ease;visibility:hidden}
  .library-panel{left:0;border-right:1px solid var(--line);transform:translateX(-105%)}
  .inspector-panel{right:0;border-left:1px solid var(--line);padding:0 16px 16px;transform:translateX(105%)}
  .app-shell.mobile-library-open .library-panel,.app-shell.mobile-inspector-open .inspector-panel{transform:none;visibility:visible}
  .mobile-panel-header{display:flex;flex:0 0 auto;min-height:52px;align-items:center;justify-content:space-between;padding:7px 12px;border-bottom:1px solid var(--line);background:var(--panel);position:sticky;top:0;z-index:80}
  .inspector-panel>.mobile-panel-header{margin:0 -16px 10px;padding-left:16px;padding-right:12px}.mobile-panel-header .icon-button{width:40px;min-height:40px}
  .panel-scroll,.inspector-panel{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.welcome-card{top:67px;max-height:calc(100% - 82px)}
  .empty-canvas{padding:16px}.empty-canvas p{max-width:280px}.empty-canvas>div:last-child{flex-wrap:wrap}
  dialog{width:calc(100vw - 16px);max-width:none;max-height:calc(100dvh - 16px);overflow:auto;margin:auto;border-radius:12px}
  .modal,.modal.wide,.small-modal{width:100%;padding:16px}.modal-actions{position:sticky;bottom:-16px;flex-wrap:wrap;padding:10px 0 0;background:var(--panel)}.modal-actions .button{min-height:44px}.table-wrap{max-height:55dvh}.export-card p{min-height:0}
  input,select{font-size:16px;min-height:44px}.button,.compact-button{min-height:42px}.canvas-toolbar .icon-button.small{width:40px;min-height:40px}.layer-lock{width:40px;height:40px}.modal-heading .icon-button{width:44px;min-height:44px}.toast-region{left:12px;right:12px;bottom:calc(78px + env(safe-area-inset-bottom))}.toast{width:100%}
}
@media(max-width:390px){.brand>span:first-of-type{display:none}.history-actions{border-right:0}.header-actions{gap:3px}.canvas-toolbar{padding-inline:7px}.selection-actions>span{display:none}}
@media(hover:none) and (pointer:coarse){.transform-handle{width:24px;height:24px;border-width:3px;border-radius:7px}.rotate-handle{width:26px;height:26px;top:-42px;border-width:3px}.rotate-handle:after{top:23px;height:18px}.plot-object.selected:after{inset:-10px}.fixture-object{min-width:34px;min-height:34px}}
@media(max-width:700px){.export-grid{grid-template-columns:1fr}}
@media print{body>*{display:none!important}body>.print-schedule{display:block!important;color:#111;background:#fff;font:10pt/1.35 Arial,sans-serif;padding:0}.print-schedule h1{font-size:20pt;margin:0 0 4px}.print-schedule .print-meta{color:#555;margin:0 0 18px}.print-schedule table{font-size:8.5pt}.print-schedule th{position:static;background:#eee;color:#111}.print-schedule th,.print-schedule td{border:1px solid #bbb;padding:5px}.print-schedule .print-warning{margin-top:14px;padding:8px;border:1px solid #999;font-size:8pt}@page{size:landscape;margin:12mm}}
