
:root{font:14px/1.4 system-ui,-apple-system,Segoe UI,sans-serif;color:#f2f2f2;background:#222222;color-scheme:dark;--muted:#bcbcbc;--accent:#f5f5f5;--panel:#2c2c2c}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{color:inherit;cursor:pointer;border:0;background:none;border-radius:5px}button:disabled{opacity:.35;cursor:default}button:hover:not(:disabled){background:#3f3f3f}button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:#616161;color:#ffffff}input{accent-color:#d1d1d1}input[type=range]{width:100%;margin:12px 0 0;cursor:pointer}button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.icon{width:36px;height:36px;display:inline-grid;place-items:center;flex-shrink:0}.spacer{flex:1}[hidden]{display:none!important}
.note{height:28px;display:flex;align-items:center;gap:4px;padding:0 12px;background:#272727;color:#c4c4c4;font-size:11px}.note span{margin-right:8px}.note button{font-size:11px;padding:3px 8px}.note button[aria-pressed=true]{background:#494949;color:#f6f6f6}.app{height:calc(100dvh - 28px);min-height:600px;display:flex;flex-direction:column}.top{height:44px;display:flex;align-items:center;gap:4px;padding:0 12px;flex-shrink:0}.project{font-size:13px}.body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr)}.body.details-open{grid-template-columns:minmax(0,1fr) 272px}.workspace{min-width:0;min-height:0;display:flex;flex-direction:column}.tools{position:relative;min-height:44px;display:flex;align-items:center;gap:8px;padding:0 12px;background:#1e1e1e}.selection-name{font-size:13px;color:#ebebeb;display:flex;align-items:center;gap:8px}.selection-name::before{content:'';height:7px;width:7px;border-radius:50%;background:#e0e0e0}.settings-trigger{font-size:12px;background:#3d3d3d;padding:6px 10px}.objects-menu{position:absolute;z-index:5;top:44px;left:12px;width:190px;background:#323232;border-radius:7px;box-shadow:0 12px 28px #00000066;padding:5px}.objects-menu button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:9px 10px;font-size:13px}.objects-menu button[aria-pressed=true]{background:#4c4c4c}.objects-menu svg{width:24px;height:20px}
.views{flex:1;min-height:0;display:grid;grid-template-rows:78% 22%}.planbox,.scene{position:relative;min-height:0;overflow:hidden}.planbox{background:#191919}.scene{background:#202020}.views.swapped .scene{grid-row:1}.views.swapped .planbox{grid-row:2}.planbox>svg,.scene>svg{width:100%;height:100%;display:block}.view-name{position:absolute;left:16px;top:12px;font-size:11px;color:#c0c0c0;pointer-events:none}.view-action{position:absolute;right:12px;top:4px}.scene{cursor:zoom-in}.views.swapped .scene{cursor:grab}.views.swapped .planbox{cursor:zoom-in}.scene-back{position:absolute;right:12px;top:4px}.views:not(.swapped) .scene-back{display:none}.scene:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}.views.swapped #scene{transform:scale(1.15);transform-origin:50% 65%}.power-link{fill:none;stroke:#9d9d9d;stroke-width:.85;opacity:.24;pointer-events:none}.power-link-hit{fill:none;stroke:transparent;stroke-width:12;pointer-events:stroke;cursor:pointer}.power-connection:hover .power-link,.power-connection:focus-visible .power-link{opacity:.7;stroke-width:1.3}.power-source{cursor:grab;outline:none}.power-source circle{fill:#383838;stroke:#bebebe;stroke-width:1}.power-source:focus-visible circle,.power-source:hover circle{stroke:#e9e9e9;stroke-width:2}.power-source path{fill:none;stroke:#e3e3e3;stroke-width:1.5;pointer-events:none;stroke-linejoin:round}.placing-power #plan{cursor:crosshair}.placing-power #plan *{cursor:crosshair!important}.icon[aria-pressed=true]{background:#4b4b4b}.power-menu{left:52px;width:242px}.power-menu .power-row{display:flex;align-items:center}.power-menu .power-row>button:first-child{flex:1}.power-menu .power-row>.icon{width:34px;flex:none;justify-content:center;padding:0}.power-check{width:12px!important;height:12px!important;opacity:.8}.power-menu .power-row[aria-disabled=true]{opacity:.5}
.inspector{padding:18px 18px 24px;background:var(--panel);overflow:auto;scrollbar-color:#707070 #282828;scrollbar-width:thin}.panel-head{display:flex;align-items:center;gap:8px;margin-bottom:26px}.panel-head h2{font-size:15px;font-weight:600;margin:0;flex:1}.field{margin-bottom:26px}.field label,.row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px}.field output,.row strong{font-weight:500;font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.count-track{display:flex;gap:3px;margin-top:14px}.count-track i{height:4px;flex:1;background:#cfcfcf}.count-track i.off{background:transparent;border:1px solid #909090}.row{margin:11px 0}.row.total{margin-top:18px;color:#eaeaea}.detail-note{color:var(--muted);font-size:11px;line-height:1.55;margin:16px 0 24px}.inspector details{margin-top:28px;font-size:12px}.inspector summary{cursor:pointer;color:#d3d3d3;list-style-position:outside;margin-left:12px}.inspector details .row{font-size:12px}.text-button{padding:2px 5px;text-decoration:underline;text-underline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.grid{stroke:#434343;stroke-width:.65;opacity:.25}.cell{fill:#242424;cursor:pointer}.cell.selected{fill:#383838;stroke:#dfdfdf;stroke-width:1.5}.object{cursor:pointer;outline:none}.route{fill:none;stroke:var(--route);stroke-width:1;pointer-events:none}.point{fill:var(--point);pointer-events:none}.tail-path{fill:none;stroke:#989898;stroke-width:1;stroke-dasharray:3 4;pointer-events:none}.off-point{fill:#212121;stroke:#adadad;stroke-width:1.25;pointer-events:none}.hit{fill:none;stroke:transparent;stroke-width:20;pointer-events:stroke}.surface-hit{fill:transparent;stroke:none;pointer-events:all}.selection-outline{fill:none;stroke:#e2e2e2;stroke-width:1.3;pointer-events:none}.object:not(.selected):hover .route,.object:focus-visible .route{stroke:#e9e9e9;stroke-width:2.5}.object.selected .route{stroke:#e4e4e4;stroke-width:2}.object.selected .point{fill:var(--point)}.object.selected .off-point{stroke:#dadada}.object.selected .tail-path{stroke:#bebebe;stroke-width:1.5}.object.dimmed{opacity:.48}.endpoint{fill:#212121;stroke:#e1e1e1;stroke-width:1.6;pointer-events:none}.diagram-label{fill:#d6d6d6;font-size:11px;paint-order:stroke;stroke:#212121;stroke-width:4px;pointer-events:none}.empty-help{fill:#b9b9b9;font-size:15px}
@media(max-width:700px){.app{min-height:620px}.body.details-open{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(300px,1fr) 285px}.inspector{padding:12px 18px;display:grid;grid-template-columns:1fr 1fr;column-gap:24px;align-content:start}.panel-head{grid-column:1/-1;margin-bottom:12px}.field{margin-bottom:12px}.inspector .summary{grid-column:2;grid-row:2/4}.inspector details{grid-column:1/-1;margin-top:12px}.detail-note{margin:10px 0;font-size:10px}.top{padding:0 8px}.tools{padding:0 8px;gap:6px}.selection-name{font-size:12px}.settings-trigger{padding:6px 8px}.note{padding:0 8px}.project{font-size:12px}}

/* Graphite editor; shared icon grammar with src/plan-controls.js. */
button{border-radius:12px}button:hover:not(:disabled){background:#414141}button svg{width:22px;height:22px;stroke-width:2.2}.icon{width:40px;height:40px}.top{background:#242424;height:48px}.top .icon{width:36px;height:36px;border-radius:50%}.top .icon svg{width:20px;height:20px}.note{background:#181818;color:#bcbcbc}.note button[aria-pressed=true]{background:#424242;color:#ffffff}.tools{min-height:52px;background:#242424;padding:0 12px;gap:6px}.tools>.icon{border-radius:50%}.selection-name{color:#f2f2f2;margin-left:8px}.selection-name::before{display:none}.selection-actions{display:flex;gap:3px;padding:3px;background:#303030;border-radius:24px}.selection-actions .icon{border-radius:50%}.settings-trigger{padding:0;background:none}.icon[aria-pressed=true],.objects-menu button[aria-pressed=true]{background:#e6e6e6;color:#202020}.objects-menu{top:52px;background:#333333;border-radius:14px;padding:6px;box-shadow:0 14px 32px #0008}.objects-menu button{min-height:42px}.objects-menu .power-row>.icon{border-radius:10px}.objects-menu svg{width:24px;height:24px}.power-menu{left:54px}.inspector{background:#2c2c2c;scrollbar-color:#777777 #2c2c2c}.panel-head{margin-bottom:20px;gap:10px}.panel-head>svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.panel-tabs{display:flex;gap:4px;margin-bottom:24px}.panel-tabs .icon{border-radius:50%}.field label{color:#ededed}.field label>span{display:flex;align-items:center;gap:8px}.field label svg{width:18px;height:18px;fill:none;stroke:#bbbbbb;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.view-name{color:#bbbbbb}.view-name svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.grid{stroke:#ffffff;opacity:.045}.no-grid .grid{display:none}.route{stroke:#646464}.object.selected .route{stroke:#b1b1b1;stroke-width:1.25}.object.dimmed{opacity:.65}.selection-outline{stroke:#f5f5f5}.cell.selected{fill:#333333;stroke:#e6e6e6}.off-point{fill:#191919;stroke:#969696}.tail-path{stroke:#777777}.object.selected .off-point{stroke:#d0d0d0}.object.selected .tail-path{stroke:#aaaaaa}.endpoint{fill:#191919;stroke:#ffffff}.power-source circle{fill:#e6e6e6;stroke:#eeeeee}.power-source path{stroke:#252525;stroke-width:1.8}.power-link{stroke:#aaaaaa;opacity:.22}.diagram-label{fill:#e2e2e2;stroke:#191919}.count-track i{background:#dddddd}.count-track i.off{border-color:#777777}.row.total{color:#f2f2f2}.inspector summary{color:#d0d0d0}.detail-note{font-size:11px}.swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;grid-column:1/-1}.swatches button{height:48px;padding:0;display:grid;place-items:center}.swatches svg{width:30px;height:30px;stroke:none}.swatches button[aria-pressed=true]{background:#505050;outline:1px solid #bfbfbf;outline-offset:-1px}.panel-label{color:#bcbcbc;font-size:12px;margin:0 0 14px;grid-column:1/-1}input[type=range]{appearance:none;background:transparent;height:34px;margin:6px 0 0}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#666666;border-radius:3px}input[type=range]::-webkit-slider-thumb{appearance:none;width:23px;height:23px;margin-top:-10px;background:#e6e6e6;border:0;border-radius:50%}input[type=range]::-moz-range-track{height:3px;background:#666666}input[type=range]::-moz-range-thumb{width:23px;height:23px;background:#e6e6e6;border:0;border-radius:50%}#sound[aria-pressed=false]{opacity:.65}
@media(max-width:700px){.tools{padding:0 8px;gap:4px}.tools .icon{width:38px;height:38px}.selection-actions{padding:2px}.panel-tabs{grid-column:1/-1;margin-bottom:10px}.inspector .summary{grid-row:3/5}.swatches{grid-template-columns:repeat(8,1fr);gap:2px}.swatches button{height:36px}.swatches svg{width:24px;height:24px}.panel-head{margin-bottom:8px}.selection-name{margin-left:0}.body.details-open{grid-template-rows:minmax(300px,1fr) 305px}}
@media(max-width:520px){.selection-name{display:none}.tools{gap:2px}.top{padding:0 10px}.project{max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
.icon[aria-pressed=true]:hover:not(:disabled),.objects-menu button[aria-pressed=true]:hover:not(:disabled){background:#ffffff;color:#171717}
/* Direct manipulation: immediate geometry, short feedback only. */
#plan{touch-action:none;user-select:none}.object{cursor:grab}.object .hit{stroke-width:24}.resize-rim{fill:none;stroke:transparent;stroke-width:22;pointer-events:stroke;cursor:ew-resize}.edit-handle{cursor:nwse-resize;outline:none}.handle-hit{fill:transparent;pointer-events:all}.handle-dot{fill:#252525;stroke:#eeeeee;stroke-width:1.5;pointer-events:none;transition:fill 120ms,stroke-width 120ms}.edit-handle:hover .handle-dot,.edit-handle:focus-visible .handle-dot{fill:#f5f5f5;stroke-width:2.5}.circle-grips{opacity:0;transition:opacity 120ms;pointer-events:none}.object:hover .circle-grips,.object.selected .circle-grips,.object:focus-visible .circle-grips{opacity:1}.object .selection-outline{opacity:.7}.object.dragging .selection-outline{opacity:1;stroke-width:2}.object.dragging .point{r:3.4}.manipulating,.manipulating *{cursor:grabbing!important}.manipulating.resizing,.manipulating.resizing *{cursor:var(--drag-cursor,nwse-resize)!important}.gesture-hint{position:absolute;z-index:3;bottom:12px;left:50%;transform:translateX(-50%);padding:6px 12px;border-radius:8px;background:#333;color:#f2f2f2;font-size:12px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity 120ms}.gesture-hint.visible{opacity:1}.object.just-dropped .selection-outline{animation:settle 180ms ease-out}@keyframes settle{from{stroke-width:3;opacity:1}to{stroke-width:1.3;opacity:.7}}@media(prefers-reduced-motion:reduce){.handle-dot,.circle-grips,.gesture-hint{transition:none}.object.just-dropped .selection-outline{animation:none}}@media(pointer:coarse){.resize-rim{stroke-width:32}}
.selection-actions,.creation-shell{background:#33473b;border-radius:24px;display:flex;padding:3px;gap:3px}.selection-actions .icon:hover,.creation-shell .icon:hover{background:#48604f}.creation-shell .icon{border-radius:50%}.add-menu{left:12px;width:194px}.add-menu button{min-height:44px}.objects-menu{max-height:min(420px,65vh);overflow:auto}.placement-ghost,.placement-ghost *{pointer-events:none!important}.placement-ghost{opacity:.55}.placement-ghost .point{fill:#dddddd}.placement-ghost .route{stroke:#aaaaaa}.placing-shape #plan,.placing-shape #plan *{cursor:crosshair!important}@media(max-width:700px){.creation-shell{padding:2px}.tools{gap:1px}.selection-actions{gap:1px}}@media(max-width:360px){.tools .icon{width:34px;height:38px}}
/* Larger controls and a visible reference for the schematic canvas. */
.tools{min-height:60px}.tools .icon{width:44px;height:44px}.tools .icon svg{width:27px;height:27px}.selection-actions,.creation-shell{padding:3px;gap:2px}.top{height:52px}.top .icon{width:44px;height:44px}.top .icon svg{width:24px;height:24px}.objects-menu{top:60px}.objects-menu svg{width:28px;height:28px}.icon:active:not(:disabled){transform:scale(.94)}.icon{transition:background-color 120ms,transform 100ms}.canvas-scale{position:absolute;left:16px;bottom:13px;display:flex;flex-direction:column;align-items:flex-start;gap:5px;color:#c7c7c7;font-size:11px;pointer-events:none}.scale-rule{height:6px;border:solid #b9b9b9;border-width:0 1px 1px}.dimension{fill:none;stroke:#c5c5c5;stroke-width:1;vector-effect:non-scaling-stroke;pointer-events:none}.dimension-text{fill:#dedede;paint-order:stroke;stroke:#191919;stroke-width:4;stroke-linejoin:round;pointer-events:none}.views.swapped .canvas-scale{display:none}@media(max-width:700px){.tools{padding:0 6px;gap:1px}.selection-actions,.creation-shell{padding:2px;gap:0}.tools .icon{width:44px;height:44px}.tools .icon svg{width:26px;height:26px}.top{padding:0 6px}.canvas-scale{left:12px;bottom:12px}.gesture-hint{bottom:46px}}@media(max-width:370px){#grid-trigger{display:none}.tools .icon{width:40px}.top .project{max-width:110px}}@media(prefers-reduced-motion:reduce){.icon{transition:none}.icon:active:not(:disabled){transform:none}}
.point.editable,.off-point.editable{pointer-events:all;cursor:crosshair}.point.editable:hover{r:5;stroke:#fff;stroke-width:1}.off-point.editable:hover{r:5;stroke:#fff}.control-hit{fill:transparent;pointer-events:all}.edit-control{cursor:crosshair;outline:none}.edit-control:hover .handle-dot,.edit-control:focus-visible .handle-dot{fill:#fff;stroke-width:2}.build-actions{position:absolute;bottom:50px;left:50%;transform:translateX(-50%);display:flex;background:#33473b;border-radius:24px;padding:3px;gap:3px}.build-actions button{width:44px;height:44px}.pattern-options{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:0 0 20px}.pattern-options button{height:60px}.pattern-options svg{width:42px;height:42px}.pattern-options button[aria-pressed=true]{background:#536659}.inspector select{max-width:100%;background:#373b38;color:#f2f2f2;border:0;border-radius:8px;padding:9px;font:inherit}.inspector .field{grid-column:1/-1}.strip-row{font-size:12px;display:flex;justify-content:space-between;gap:8px;margin:12px 0}.strip-stats{font-variant-numeric:tabular-nums;color:#d2d2d2}.power-menu select{background:#464b47;border:0;border-radius:6px;color:#fff;padding:8px;max-width:120px}.power-menu{width:280px;left:65px}.power-menu .power-row{flex-wrap:wrap;padding:6px 0}.power-menu .power-row>button:first-child{min-width:120px}.inspector .row select{min-width:110px}.point-count{pointer-events:none;fill:#fff;font-size:11px}.bad-span{stroke:#ddd;stroke-dasharray:3 3}.views:not(.swapped) .scene{cursor:zoom-in}.objects-menu button svg{flex-shrink:0}@media(max-width:700px){.inspector{display:block}.body.details-open{grid-template-rows:minmax(260px,1fr) 320px}.pattern-options{grid-template-columns:repeat(6,1fr)}.pattern-options button{height:44px}.pattern-options svg{width:32px;height:32px}.inspector .field{margin-bottom:18px}.power-menu{left:6px}.build-actions{bottom:58px}}
