:root{color-scheme:dark;--bg: #101215;--bg-panel: #191b1e;--bg-input: #101215;--bg-hover: #1f2226;--border: #2a2d32;--border-subtle: #23262b;--text: #e8eaed;--text-muted: #8b9199;--text-faint: #5f666d;--accent: #46c8d8;--accent-dim: #1b2226;--amber: #ffb454;--purple: #b98cff;--danger: #e5776b;--radius: 6px;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text)}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-nav{display:flex;gap:.25rem;padding:.4rem .6rem;border-bottom:1px solid var(--border-subtle);background:var(--bg-panel)}.app-nav-link{padding:.5rem 1rem;min-height:44px;display:flex;align-items:center;border-radius:var(--radius);text-decoration:none;color:var(--text-muted);font-weight:500}.app-nav-link:hover{background:var(--bg-hover);color:var(--text)}.app-nav-link.active{background:var(--accent-dim);color:var(--accent);font-weight:600}.app-main{flex:1;min-height:0;display:flex;flex-direction:column}.section-label{font-size:9.5px;letter-spacing:.12em;color:var(--text-muted);font-weight:600;text-transform:uppercase}.btn{appearance:none;border:1px solid var(--border);background:var(--bg-input);color:var(--text);border-radius:var(--radius);padding:.5rem .85rem;min-height:38px;font:inherit;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem}.btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:default}.btn--primary{background:var(--accent);border-color:var(--accent);color:#06222a;font-weight:600}.btn--primary:hover:not(:disabled){background:#63d6e4}.btn--danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.btn--sm{min-height:30px;padding:.25rem .55rem;font-size:12px}.text-input,.select-input{width:100%;background:var(--bg-input);border:1px solid var(--border);border-radius:5px;color:var(--text);font:inherit;font-size:13px;padding:.45rem .6rem}.text-input:focus,.select-input:focus,.field__control:focus-within{outline:none;border-color:var(--accent)}.text-input--invalid{border-color:var(--danger)}.field{display:flex;align-items:center;gap:.55rem;padding:.28rem 0}.field__label{width:74px;flex-shrink:0;color:var(--text-muted);font-size:12px}.field__control{flex:1;display:flex;align-items:center;background:var(--bg-input);border:1px solid var(--border);border-radius:5px;padding:.3rem .55rem}.field__control input{flex:1;min-width:0;background:transparent;border:none;color:var(--text);font-family:var(--font-mono);font-size:13px;padding:0}.field__control input:focus{outline:none}.field__unit{color:var(--text-faint);font-size:10px;font-family:var(--font-mono);margin-left:.35rem}.field__secondary{width:62px;flex-shrink:0;text-align:right;color:var(--text-faint);font-size:10px;font-family:var(--font-mono)}.editor{flex:1;min-height:0;display:grid;grid-template-columns:248px minmax(0,1fr) 300px;grid-template-rows:auto minmax(0,1fr);grid-template-areas:"toolbar toolbar toolbar" "left    canvas   right"}.editor__toolbar{grid-area:toolbar;border-bottom:1px solid var(--border-subtle);background:var(--bg-panel)}.editor__left{grid-area:left;border-right:1px solid var(--border-subtle);background:var(--bg-panel);overflow-y:auto}.editor__canvas{grid-area:canvas;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg)}.editor__right{grid-area:right;border-left:1px solid var(--border-subtle);background:var(--bg-panel);overflow-y:auto;padding:.9rem}.canvas__stage{flex:1;min-height:0;position:relative}.toolbar{display:flex;align-items:center;gap:.75rem;padding:.55rem .8rem;flex-wrap:wrap}.toolbar__identity{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;flex:1;min-width:0}.toolbar__name{font-size:15px;font-weight:600;min-width:160px}.toolbar__actions{display:flex;align-items:center;gap:.4rem}.toolbar__meta{display:flex;align-items:center;gap:.4rem;font-size:12px;color:var(--text-muted)}.toolbar__meta .text-input,.toolbar__meta .select-input{width:auto;min-width:120px}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.segmented button{appearance:none;border:none;background:transparent;color:var(--text-muted);font:inherit;font-size:12px;padding:.4rem .7rem;min-height:34px;cursor:pointer}.segmented button.active{background:var(--accent-dim);color:var(--accent);font-weight:600}.segmented button:disabled{color:var(--text-faint);cursor:default}.mode-rail{display:flex;gap:.25rem;padding:.55rem .6rem;border-bottom:1px solid var(--border-subtle);flex-wrap:wrap}.mode-rail button{appearance:none;border:1px solid transparent;background:transparent;color:var(--text-muted);border-radius:var(--radius);font:inherit;font-size:12px;padding:.35rem .6rem;min-height:34px;cursor:pointer}.mode-rail button.active{background:var(--accent-dim);color:var(--accent);font-weight:600}.mode-rail button:disabled{color:var(--text-faint);cursor:default}.mode-rail button:disabled:after{content:"later";font-size:8.5px;letter-spacing:.08em;margin-left:.35rem;color:var(--text-faint);border:1px solid var(--border);border-radius:3px;padding:0 3px;text-transform:uppercase}.outline__header{display:flex;align-items:center;justify-content:space-between;padding:.7rem .8rem .45rem}.outline__count{font-family:var(--font-mono);font-size:11px;color:var(--text-faint)}.outline__list{list-style:none;margin:0;padding:0 .5rem .6rem;display:flex;flex-direction:column;gap:2px}.outline__item{display:flex;align-items:center;gap:.5rem;padding:.45rem .55rem;border-radius:5px;border:1px solid transparent;cursor:pointer;min-height:40px}.outline__item:hover{background:var(--bg-hover)}.outline__item.active{background:var(--accent-dim);border-color:var(--accent)}.outline__swatch{width:4px;align-self:stretch;border-radius:2px;flex-shrink:0}.outline__item-text{flex:1;min-width:0}.outline__item-title{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.outline__item-sub{font-family:var(--font-mono);font-size:10px;color:var(--text-faint)}.outline__add{display:flex;gap:.4rem;padding:.2rem .5rem .7rem}.outline__add .btn{flex:1;justify-content:center}.inspector__group+.inspector__group{margin-top:1.1rem}.inspector__group-label{margin:0 0 .5rem}.inspector__empty{color:var(--text-faint);font-size:13px;padding:.5rem 0;line-height:1.5}.inspector__row-actions{display:flex;gap:.4rem;margin-top:.9rem}.checkbox-row{display:flex;gap:.9rem;flex-wrap:wrap;padding:.3rem 0}.checkbox-row label{display:inline-flex;align-items:center;gap:.3rem;font-size:12px;color:var(--text-muted)}.depth-legend{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;padding:.5rem .8rem;border-top:1px solid var(--border-subtle);background:var(--bg-panel);font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}.depth-legend__title{letter-spacing:.1em;color:var(--text-faint)}.depth-legend__item{display:inline-flex;align-items:center;gap:.35rem}.depth-legend__item.active{color:var(--text)}.depth-legend__bar{display:inline-block;width:22px;height:8px;border-radius:2px;background:var(--accent)}.status{font-size:12px;padding:0 .15rem}.status--saved{color:var(--accent)}.status--error{color:var(--danger)}.status--saving{color:var(--text-muted)}.error-list{margin:.4rem 0 0;padding-left:1.1rem;color:var(--danger);font-size:12px;line-height:1.5}.library{flex:1;min-height:0;overflow-y:auto;padding:1rem 1.25rem 2rem}.library__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.6rem}.library__heading{display:flex;align-items:baseline;gap:.6rem}.library__title{margin:0;font-size:20px;font-weight:600}.library__count{font-family:var(--font-mono);font-size:12px;color:var(--text-faint)}.library__controls{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}.library__toggle{display:inline-flex;align-items:center;gap:.35rem;font-size:12px;color:var(--text-muted);cursor:pointer}.library__hint{color:var(--text-muted);font-size:13px;padding:1rem 0}.library__hint--error{color:var(--danger);display:flex;flex-direction:column;align-items:flex-start;gap:.6rem}.library__empty{display:flex;flex-direction:column;align-items:flex-start;gap:.9rem;color:var(--text-muted);font-size:14px;padding:2rem 0}.library__group{margin-top:1.4rem}.library__group-title{display:flex;align-items:center;gap:.45rem;margin:0 0 .6rem}.library__group-count{font-family:var(--font-mono);letter-spacing:0;color:var(--text-faint)}.library__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.7rem}.part-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);overflow:hidden}.part-card--archived{opacity:.62}.part-card__open{appearance:none;text-align:left;border:none;border-bottom:1px solid var(--border-subtle);background:transparent;color:var(--text);font:inherit;cursor:pointer;padding:.7rem .8rem;display:flex;flex-direction:column;gap:.2rem}.part-card__open:hover:not(:disabled){background:var(--bg-hover)}.part-card__open:disabled{cursor:default}.part-card__name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.part-card__id{font-family:var(--font-mono);font-size:10.5px;color:var(--text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.part-card__meta{display:flex;align-items:center;gap:.4rem;padding:.5rem .8rem 0}.part-card__path{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.part-card__badge{font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--amber);border:1px solid var(--amber);border-radius:3px;padding:0 3px;flex-shrink:0}.part-card__actions{display:flex;gap:.4rem;padding:.6rem .8rem .7rem;margin-top:auto}.part-card__actions .btn{flex:1;justify-content:center}.tree{list-style:none;margin:0;padding:0}.tree .tree{padding:0}.tree__node{appearance:none;width:100%;text-align:left;border:1px solid transparent;background:transparent;color:var(--text);font:inherit;cursor:pointer;display:flex;align-items:baseline;gap:.5rem;padding:.45rem .55rem;min-height:38px}.tree__node:hover{background:var(--bg-hover)}.tree__node.active{background:var(--accent-dim);border-color:var(--accent)}.tree__name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree__sub{font-family:var(--font-mono);font-size:10px;color:var(--text-faint);margin-left:auto;flex-shrink:0}.port-slot{border:1px solid var(--border-subtle);border-radius:5px;padding:.5rem .6rem;margin-bottom:.5rem}.port-slot.active{border-color:var(--accent)}.port-slot__header{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.45rem}.port-slot__id{font-family:var(--font-mono);font-size:12px;color:var(--text)}.port-slot__accepts{font-size:10px;color:var(--text-faint);text-align:right}.port-slot__candidates{display:flex;flex-direction:column;gap:.35rem}.port-slot__candidates .btn{justify-content:flex-start}@media(max-width:900px){.editor{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto auto;grid-template-areas:"toolbar" "canvas" "left" "right"}.editor__left{border-right:none;border-bottom:1px solid var(--border-subtle)}.editor__right{border-left:none;border-top:1px solid var(--border-subtle)}.canvas__stage{height:46vh}.toolbar{flex-direction:column;align-items:stretch}.toolbar__identity{flex-direction:column;align-items:stretch;width:100%}.toolbar__meta{justify-content:space-between}.toolbar__meta .text-input,.toolbar__meta .select-input{flex:1;min-width:0}.toolbar__actions{flex-wrap:wrap;justify-content:flex-start}}.validation{margin:.5rem .8rem .2rem;padding:.5rem .7rem;border:1px solid var(--border);border-left-width:3px;border-radius:var(--radius);background:var(--bg-panel);font-size:.82rem}.validation--ok{border-left-color:#7bd88f}.validation--error{border-left-color:var(--amber)}.validation__status{display:block;font-weight:600;letter-spacing:.02em}.validation--ok .validation__status{color:#7bd88f}.validation--error .validation__status{color:var(--amber)}.validation__list{margin:.4rem 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.25rem}.validation__item,.validation__detail{color:var(--text-muted);line-height:1.35;margin:.35rem 0 0}.validation__kind{display:inline-block;padding:.02rem .35rem;margin-right:.15rem;border-radius:3px;background:var(--accent-dim);color:var(--accent);font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}
