.form-section{border-bottom:1px solid var(--border);margin-bottom:16px;padding-bottom:16px}.form-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.form-section>h4{font:600 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin:0 0 8px}.form-row{grid-template-columns:150px minmax(0,1fr);align-items:center;column-gap:12px;margin:8px 0;display:grid}.form-row>label{color:var(--text-dim);font-size:12px}.form-row>input,.form-row>select,.form-row>.seg{width:100%;min-width:0}.form-row>input[type=number],.dialog-body .form-row>input[type=number]{width:88px}.form-row>select.compact,.dialog-body .form-row>select.compact{width:96px}.form-hint{color:var(--text-faint);margin:4px 0 0;font-size:11px}.form-hint--indent,.dialog-body .form-hint--indent{margin-left:162px}.form-static{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.form-static--empty{color:var(--text-faint)}.form-row>.form-actions{grid-column:2;gap:8px;display:flex}.dialog-body fieldset{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;margin:0;padding:10px 12px;display:flex}.dialog-body fieldset>legend{font:600 11px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);padding:0 6px}:is(label:has(>input[type=checkbox]),label:has(>input[type=radio])){cursor:pointer;color:var(--text);align-items:center;gap:8px;font-size:13px;display:flex}label:has(>input:disabled){cursor:not-allowed;color:var(--text-dim)}.import-board-status{color:var(--text-dim)}.import-board{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex}.import-board-toolbar{flex:none;justify-content:space-between;align-items:center;gap:10px;display:flex}.import-board-count{color:var(--text-dim);font-size:12px}.import-board-toolbar-actions{gap:8px;display:flex}.import-board-main{flex:1;gap:16px;min-height:0;display:flex;overflow:hidden}.import-board-grid{flex:1;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));align-content:start;gap:12px;min-width:0;padding:2px;display:grid;overflow-y:auto}.import-board-tree{border-left:1px solid var(--border);flex:0 0 260px;padding-left:16px;overflow-y:auto}.import-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:6px;padding:10px;display:flex}.import-card-skipped{opacity:.55}.import-card-tabs{flex-wrap:wrap;gap:4px;display:flex}.import-card-tab{align-items:center;gap:3px;display:flex}.import-card-tab input[type=radio]{margin:0}.import-card-tab button{height:20px;padding:0 7px;font-size:10.5px}.import-card-thumb{aspect-ratio:4/3;border-radius:calc(var(--radius) - 2px);background:var(--canvas-bg);justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.import-card-thumb img{max-width:100%;max-height:100%;display:block}.import-card-thumb-loading{background:linear-gradient(100deg, var(--bg-inset) 30%, var(--border) 50%, var(--bg-inset) 70%);background-size:200% 100%;animation:1.3s ease-in-out infinite import-card-thumb-skeleton}@keyframes import-card-thumb-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}.import-card-meta{color:var(--text-faint);font-size:11px}.import-card-single-pick{color:var(--text-dim);align-items:center;gap:6px;font-size:12px;display:flex}.import-card-include-toggle,.import-card-building-input{width:100%}.import-card-suggested{color:var(--text-faint);font-style:italic}.import-card-collision{border-top:1px dashed var(--border);flex-direction:column;gap:4px;padding-top:4px;display:flex}.import-card-badge-warn{font:600 10px/1.4 var(--font);color:var(--warn);white-space:normal;background:#ffb74d1f;border:1px solid #ffb74d66;border-radius:4px;align-self:flex-start;padding:2px 6px}.import-card-collision-seg button{font-size:10.5px}.import-tree{flex-direction:column;gap:2px;font-size:12px;display:flex}.import-tree-node{align-items:center;gap:6px;padding:3px 0;display:flex}.import-tree-site{text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);font-size:10.5px;font-weight:600}.import-tree-building{margin-left:8px}.import-tree-floors{margin-left:14px}.import-tree-floor{color:var(--text-dim)}.import-tree-tag{font:600 9px/1.4 var(--font);text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);background:var(--bg-inset);border:1px solid var(--border);border-radius:4px;padding:1px 5px}.import-tree-tag-new{color:var(--accent-hover);border-color:#356dff66}.import-tree-empty{color:var(--text-faint);font-size:12px}.import-tree-skipped{border-top:1px solid var(--border);margin-top:10px;padding-top:8px}.import-tree-skipped-title{font:600 10.5px/1 var(--font);text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);margin-bottom:4px}.import-tree-node-dim{color:var(--text-faint)}.import-board-progress{flex-direction:column;flex:1;gap:12px;display:flex}.import-progress-track{background:var(--bg-inset);border-radius:999px;height:6px;overflow:hidden}.import-progress-fill{background:var(--plek-action);height:100%;transition:width var(--transition-fast)}.import-board-failed{flex-direction:column;gap:6px;display:flex}.import-board-failed h4{font:600 11px/1 var(--font);text-transform:uppercase;letter-spacing:.06em;color:var(--warn);margin:0}.import-board-failed-hint{font:400 12px/1.4 var(--font);color:var(--text-dim);margin:0}.import-failed-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;display:flex}@media (prefers-reduced-motion:reduce){.import-card-thumb-loading{animation:none}}.floor-picker{position:relative}.floor-picker-trigger{max-width:160px;font:600 12px/1 var(--font);color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;height:var(--ctrl-h);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:4px;padding:4px 8px;display:flex;overflow:hidden}.floor-picker-trigger:hover{border-color:var(--border-strong)}.floor-picker-trigger[aria-expanded=true]{border-color:var(--accent)}.floor-picker-chevron{color:var(--text-faint);flex:none;font-size:10px;transition:transform .12s}.floor-picker-trigger[aria-expanded=true] .floor-picker-chevron{transform:rotate(180deg)}.floor-picker-dropdown{z-index:var(--z-menu);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);min-width:200px;max-height:320px;box-shadow:var(--shadow-pop);margin-top:4px;padding:6px;overflow-y:auto}.floor-picker-site{font:700 10px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);pointer-events:none;padding:6px 8px 2px}.floor-picker-building{font:500 11px/1 var(--font);color:var(--text-dim);pointer-events:none;padding:4px 8px 2px 16px}.floor-picker-item{width:100%;font:400 12px/1.3 var(--font);text-align:left;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:4px;height:auto;padding:6px 8px 6px 28px;display:block}.floor-picker-item:hover,.floor-picker-item:focus{background:#356dff14;outline:none}.floor-picker-item.active{color:var(--accent-hover);background:#356dff24;font-weight:600}.floor-picker-divider{background:var(--border);height:1px;margin:6px 0}.floor-picker-add{width:100%;font:500 12px/1 var(--font);text-align:left;color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:4px;height:auto;padding:6px 8px;display:block}.floor-picker-add:hover{background:#356dff14}.floor-picker-add:disabled{color:var(--text-faint);cursor:not-allowed}.floor-picker-add:disabled:hover{background:0 0}.floor-picker-row{position:relative}.floor-picker-row>.floor-picker-site,.floor-picker-row>.floor-picker-building{pointer-events:auto}.row-kebab{width:20px;height:18px;font:700 12px/1 var(--font);color:var(--text-dim);background:var(--bg-elevated);cursor:pointer;opacity:0;border:none;border-radius:4px;padding:0;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.floor-picker-row:hover .row-kebab{opacity:1}.row-kebab:hover{color:var(--text);background:#356dff24}.floor-picker-row:hover .floor-meta{visibility:hidden}.floor-picker-rename{width:100%;min-width:0;font:400 12px/1.3 var(--font);color:var(--text);background:var(--bg);border:1px solid var(--accent);border-radius:4px;outline:none;padding:2px 4px}.row-menu{min-width:140px;max-width:230px;position:fixed}.row-menu .context-menu-item:disabled{color:var(--text-faint);cursor:not-allowed}.row-menu-confirm p{font:400 12px/1.4 var(--font);color:var(--text);margin:0;padding:6px 8px}.row-menu-confirm-actions{gap:4px;padding:2px;display:flex}.row-menu-confirm-actions .context-menu-item{flex:1;justify-content:center;width:auto}.row-menu-pick-label{font:600 11px/1.4 var(--font);letter-spacing:.02em;color:var(--text-dim);margin:0;padding:6px 8px}@media (prefers-reduced-motion:reduce){.floor-picker-chevron{transition:none}}.floor-dot{border-radius:999px;flex:none;width:6px;height:6px;display:inline-block}.floor-dot.set{background:var(--ok)}.floor-dot.unset{background:var(--warn)}.floor-picker-trigger .floor-dot{margin-right:2px}.floor-picker-item{align-items:center;gap:8px;display:flex}.floor-picker-item-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.floor-meta{color:var(--text-faint);flex:none;font-size:10.5px}.floor-picker-item--site-plan{padding-left:16px}.row-kind{font:600 8px/1.4 var(--font);letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);border:1px solid var(--border);border-radius:3px;flex:none;padding:1px 4px}.row-kind--site{color:var(--accent);border-color:var(--accent)}.row-kind--building{color:var(--text-dim);border-color:var(--border-strong)}.floor-picker-row>.row-kind{pointer-events:none}.floor-picker-crumbs{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-faint);flex:0 auto;font-weight:500;overflow:hidden}.floor-picker-current{text-overflow:ellipsis;white-space:nowrap;flex:none;overflow:hidden}.floor-picker-trigger{max-width:280px}.floor-picker-empty{border-left:2px dashed var(--border);background:var(--bg-sunken,transparent);flex-direction:column;align-items:flex-start;gap:3px;margin:2px 8px 6px 16px;padding:8px 10px;display:flex}.floor-picker-empty strong{font:600 11px/1.3 var(--font);color:var(--text-dim)}.floor-picker-empty span{font:400 10px/1.4 var(--font);color:var(--text-faint)}.floor-picker-empty-cta{font:500 10px/1.3 var(--font);color:var(--accent);border:1px solid var(--accent);cursor:pointer;background:0 0;border-radius:4px;margin-top:2px;padding:3px 8px}.floor-picker-empty-cta:hover{background:var(--accent-soft,transparent)}.dialog.rack-dialog{flex-direction:column;width:560px;min-width:0;max-width:92vw;max-height:86vh;display:flex}.rack-dialog .dialog-body{flex-direction:column;flex:1;min-height:0;max-height:none;padding:0;display:flex;overflow:hidden}.rack-modal{-webkit-user-select:none;user-select:none;flex-direction:column;flex:1;min-height:0;display:flex}.rack-modal input,.rack-modal textarea{-webkit-user-select:text;user-select:text}.rack-toolbar{border-bottom:1px solid var(--border);background:var(--bg-panel);flex-direction:column;flex:none;gap:6px;padding:10px 12px;display:flex}.rack-toolbar-row{align-items:center;gap:6px;display:flex}.rack-toolbar-spacer{flex:auto}.rack-toolbar-row input.rack-label-input{flex:auto;min-width:0}.rack-toolbar-row input.rack-height-input{flex:0 0 64px}.rack-toolbar-row select{flex:none}.rack-context{font:11px/1.3 var(--mono);color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;cursor:help;margin:0;overflow:hidden}.rack-toolbar-row.rack-add-item select{flex:auto;min-width:0}.rack-elevations{background:var(--bg-inset);flex:auto;align-items:flex-start;gap:16px;min-height:0;padding:12px;display:flex;overflow-y:auto}.rack-elevations.is-multi{overflow-x:auto}.rack-elevations.is-multi .rack-elev{flex:0 0 260px}.rack-elev{--rack-ru-h:34px;flex:auto;min-width:0}.rack-elev-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.rack-elev-pick{height:22px;padding:0 8px;font-size:11.5px}.rack-elev.is-selected .rack-elev-pick{border-color:var(--accent);color:var(--accent-hover)}.rack-elev-meta{font:11px/1 var(--mono);color:var(--text-faint)}.rack-grid{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-panel);grid-template-columns:28px minmax(0,1fr);gap:0 4px;padding:4px;display:grid}.rack-elev.is-selected .rack-grid{border-color:var(--accent)}.rack-gutter{font:10px/1 var(--mono);color:var(--text-faint);grid-column:1;justify-content:flex-end;align-items:center;padding-right:4px;display:flex}.rack-slot{border-top:1px dashed var(--border);grid-column:2}.rack-slot.is-drop-target{border-top-color:var(--accent);background:color-mix(in srgb, var(--accent) 22%, transparent)}.rack-block{border:1px solid var(--border);border-left:3px solid var(--rack-accent,var(--border-strong));background:var(--bg-elevated);text-align:left;cursor:grab;border-radius:4px;grid-column:2;grid-template-columns:minmax(0,1fr) auto;align-content:center;gap:0 8px;height:auto;padding:2px 6px;display:grid;overflow:hidden}.rack-block:active{cursor:grabbing}.rack-block.is-dragging{opacity:.5}.rack-block.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.rack-block.is-drop-over{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 26%, var(--bg-elevated))}.rack-block.accent-net{--rack-accent:var(--accent)}.rack-block.accent-patch{--rack-accent:var(--ok)}.rack-block.accent-power{--rack-accent:var(--warn)}.rack-block.accent-passive{--rack-accent:var(--text-faint)}.rack-block.accent-custom{--rack-accent:var(--plek-on-dark)}.rack-block-label{min-width:0;font:600 11px/1.2 var(--font);color:var(--text);align-items:center;gap:6px;display:flex}.rack-block-name{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.rack-block-pin{font:600 8.5px/1 var(--font);letter-spacing:.08em;color:var(--bg-app);background:var(--rack-accent,var(--border-strong));border-radius:3px;flex:none;padding:1px 4px}.rack-block-sku{font:9.5px/1.2 var(--mono);color:var(--text-faint);white-space:nowrap;align-self:center}.rack-block>.rack-cassette-bar{grid-column:1/-1}.rack-block.has-faceplate{grid-template-rows:auto minmax(0,1fr);align-content:stretch;row-gap:2px}.rack-block>.rack-faceplate-wrap{grid-column:1/-1;min-height:0;display:block}.rack-faceplate{width:100%;height:100%;display:block}.rack-faceplate .fp-plate{fill:var(--bg-inset);stroke:color-mix(in srgb, var(--border) 70%, transparent);stroke-width:.4px}.rack-faceplate .fp-port{fill:color-mix(in srgb, var(--text-faint) 60%, transparent)}.rack-faceplate .fp-port.is-multigig{fill:color-mix(in srgb, var(--accent) 70%, transparent)}.rack-faceplate .fp-sfp{fill:color-mix(in srgb, var(--accent) 40%, transparent);stroke:color-mix(in srgb, var(--accent) 55%, transparent);stroke-width:.3px}.rack-faceplate .fp-led{fill:var(--ok)}.rack-faceplate .fp-display{fill:color-mix(in srgb, var(--accent) 16%, var(--bg-app));stroke:color-mix(in srgb, var(--border-strong) 80%, transparent);stroke-width:.4px}.rack-faceplate .fp-display-line{fill:color-mix(in srgb, var(--accent) 55%, transparent)}.rack-faceplate .fp-outlet{fill:color-mix(in srgb, var(--warn) 55%, transparent)}.rack-faceplate .fp-slot{fill:color-mix(in srgb, var(--border-strong) 55%, transparent)}.rack-faceplate .fp-slot.is-filled{fill:var(--ok)}.rack-faceplate .fp-slot.is-over.is-filled{fill:color-mix(in srgb, var(--danger) 75%, transparent)}.rack-faceplate .fp-finger,.rack-faceplate .fp-vent{fill:color-mix(in srgb, var(--text-faint) 45%, transparent)}.rack-faceplate .fp-kit-ear{fill:color-mix(in srgb, var(--text-faint) 40%, transparent)}.rack-faceplate .fp-kit-empty{fill:none;stroke:color-mix(in srgb, var(--text-faint) 45%, transparent);stroke-width:.5px;stroke-dasharray:3 2}.rack-cassette-bar{background:var(--bg-inset);border-radius:3px;height:6px;margin-top:1px;display:block;position:relative;overflow:hidden}.rack-cassette-fill{background:var(--ok);height:100%;display:block}.rack-cassette-fill.is-over{background:var(--danger)}.rack-accessories-tray{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);margin-top:8px;padding:6px 8px}.rack-accessories-tray h5{font:600 10px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px}.rack-accessories-tray ul{margin:0;padding-left:14px;font-size:11.5px}.rack-accessories-tray button{height:auto;font:600 11.5px/1.4 var(--font);color:var(--plek-on-dark);background:0 0;border:0;padding:0;text-decoration:underline}.rack-accessories-tray button:hover:not(:disabled){color:var(--accent-hover);background:0 0}.rack-accessories-tray button[aria-pressed=true]{color:var(--accent)}.rack-overflow-tray{border:1px solid var(--danger);border-radius:var(--radius);background:var(--bg-panel);margin-top:8px;padding:6px 8px}.rack-overflow-tray h5{font:600 10px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--danger);margin:0 0 4px}.rack-overflow-tray ul{margin:0;padding-left:14px;font-size:11.5px}.rack-overflow-tray button{height:auto;font:600 11.5px/1.4 var(--font);color:var(--plek-on-dark);background:0 0;border:0;padding:0;text-decoration:underline}.rack-overflow-tray button:hover:not(:disabled){color:var(--accent-hover);background:0 0}.rack-overflow-ru{font-family:var(--mono);color:var(--text-faint)}.rack-warnings{color:var(--warn);margin:8px 0 0;padding-left:16px;font-size:11.5px}.rack-warnings .is-error{color:var(--danger)}.rack-detail{border-top:1px solid var(--border);background:var(--bg-panel);flex:none;max-height:40vh;padding:10px 12px;overflow-y:auto}.rack-detail-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.rack-item-name{font:600 12px/1.3 var(--font);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rack-item-sku{font:10px/1 var(--mono);color:var(--text-faint);flex:none}.rack-model-field{color:var(--text-dim);align-items:center;gap:6px;margin-top:6px;font-size:11.5px;display:flex}.rack-model-field select{flex:auto;min-width:0}.rack-item-actions{align-items:center;gap:6px;margin-top:6px;display:flex}.rack-pin-field{color:var(--text-dim);align-items:center;gap:4px;font-size:11.5px;display:flex}.rack-item-actions input{flex:0 0 64px}.rack-item-actions input.is-invalid{border-color:var(--danger);color:var(--danger)}.rack-item-actions>button:first-of-type{margin-left:auto}.rack-item-config{border-top:1px dashed var(--border);margin-top:8px;padding-top:8px}.rack-item-config label{color:var(--text-dim);margin:4px 0;font-size:11.5px;display:block}.rack-cassette-rows{margin:0;padding:0;list-style:none}.rack-cassette-rows li{grid-template-columns:minmax(0,1fr) 56px 76px 26px;gap:4px;margin:4px 0;display:grid}.rack-cassette-rows input,.rack-cassette-rows select{width:100%;min-width:0}.rack-cassette-meter{font:11px/1 var(--mono);color:var(--text-faint);justify-content:space-between;align-items:center;gap:8px;margin-top:4px;display:flex}.rack-cassette-meter .is-over{color:var(--danger)}.rack-empty{color:var(--text-faint);margin:0;font-size:11.5px;line-height:1.5}.rack-elevations .rack-empty{padding:8px 0}.rack-launch{align-items:center;gap:6px;margin-top:4px;display:inline-flex}.rack-launch-badge{font:600 10px/1.4 var(--mono);color:var(--text-dim);background:var(--bg-inset);border-radius:8px;padding:1px 5px}.rack-launch-warn{background:var(--warn);border-radius:50%;width:7px;height:7px}.portfolio-view{z-index:var(--z-chrome);background:var(--bg-app);min-height:0;color:var(--text);flex-direction:column;grid-area:2/2/auto/-1;display:flex;position:relative}.portfolio-header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:16px 24px;display:flex}.portfolio-header h2{margin:0;font-size:18px;font-weight:600}.portfolio-header .spacer{flex:1}.portfolio-selectall{flex:none;place-items:center;width:28px;height:28px;display:grid}.portfolio-selectall input{margin:0}.portfolio-search{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);min-width:180px;color:var(--text);height:var(--ctrl-h);flex:240px;padding:0 10px}.portfolio-filter{background-color:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);height:var(--ctrl-h);padding:0 26px 0 8px}.portfolio-body{flex:1;padding:8px 24px 24px;overflow-y:auto}.portfolio-body .error{color:var(--danger);margin:12px 0 0}.error-retry{margin-left:10px}.portfolio-empty{color:var(--text-dim);text-align:center;padding:32px 0}.customer-section{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);margin-top:20px}.customer-section-header{background:var(--bg-elevated);border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;padding:10px 14px;display:flex}.customer-section-body>:last-child{border-radius:0 0 calc(var(--radius) - 1px) calc(var(--radius) - 1px)}.customer-section-header .name{font-weight:600}.customer-section-header .count{color:var(--text-dim);font-size:12px}.customer-section-header .spacer{flex:1}.customer-section-header .manage-btn{font-size:12px}.customer-section-empty{color:var(--text-dim);margin:0;padding:10px 14px;font-size:13px;font-style:italic}.customer-section-body{grid-template-columns:38px 1fr auto auto auto auto auto auto auto 24px auto 38px;display:grid}.portfolio-row{grid-column:1/-1;grid-template-columns:subgrid;border-top:1px solid var(--border);align-items:center;gap:10px;padding:10px 14px;display:grid}.customer-section-empty{grid-column:1/-1}.portfolio-row:first-child{border-top:none}.portfolio-row.is-current{background:var(--bg-elevated)}.site-type-badge{font-size:10px;font-family:var(--mono);letter-spacing:.04em;border:1px solid var(--border-strong);color:var(--text-dim);white-space:nowrap;border-radius:4px;padding:2px 6px}.site-type-badge.greenfield{color:var(--ok);border-color:var(--ok)}.site-type-badge.brownfield{color:var(--warn);border-color:var(--warn)}.stage-pips{align-items:center;gap:3px;display:flex}.stage-pips .pip{background:var(--border-strong);border-radius:50%;width:8px;height:8px}.stage-pips .pip.filled{background:var(--accent)}.stage-pips .stage-label{color:var(--text-dim);white-space:nowrap;margin-left:4px;font-size:11px}.stage-pips .stage-label.manual:after{content:" (manual)";opacity:.7}.stage-pips.placeholder .stage-label{font-style:italic}.next-deliverable{color:var(--text-dim);white-space:nowrap;font-size:12px}.status-note{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:12px;overflow:hidden}.row-tasks-btn{white-space:nowrap;font-size:12px}.row-menu-wrap{position:relative}.no-customer-badge{color:var(--text-faint);font-style:italic}.assign-customer-btn{color:var(--accent);border:1px dashed var(--border-strong);white-space:nowrap;cursor:pointer;background:0 0;border-radius:999px;padding:2px 8px;font-size:11px}.assign-customer-btn:hover{border-color:var(--accent);background:#64b5f614}.customer-picker{position:relative}.customer-picker input{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);height:var(--ctrl-h);padding:0 10px}.customer-picker-dropdown{z-index:var(--z-menu);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);max-height:240px;box-shadow:var(--shadow-pop);flex-direction:column;padding:4px;display:flex;overflow-y:auto}.customer-picker-item{text-align:left;color:var(--text);background:0 0;border:none;border-radius:4px;padding:6px 10px}.customer-picker-item:hover{background:var(--bg-inset)}.external-ref-row{grid-template-columns:80px 1fr 1fr;align-items:center;gap:6px;margin-bottom:6px;display:grid}.external-ref-system{font-family:var(--mono);color:var(--text-dim);text-transform:uppercase;font-size:11px}.site-type-choice,.stage-override-choice{flex-direction:column;gap:6px;display:flex}.project-name-btn-cell{cursor:pointer;text-align:left;min-width:0;height:auto;font:inherit;color:var(--text);background:0 0;border:none;flex:1;align-items:center;gap:8px;padding:0;font-weight:500;transition:color .1s;display:flex}.project-name-btn-cell:hover{color:var(--accent);background:0 0;border-color:#0000}.badge-open{color:var(--ok);font:600 9px/1.4 var(--font);text-transform:uppercase;letter-spacing:.05em;background:#66bb6a1f;border:1px solid #66bb6a59;border-radius:999px;flex:none;padding:2px 6px;display:inline-block}.project-date{color:var(--text-faint);white-space:nowrap;flex:none;font-size:11px}.badge-shared{color:var(--accent);font:600 9px/1.4 var(--font);text-transform:uppercase;letter-spacing:.05em;background:#64b5f61f;border:1px solid #64b5f659;border-radius:999px;flex:none;padding:2px 6px;display:inline-block}@media (prefers-reduced-motion:reduce){.project-name-btn-cell{transition:none}}.tasks-panel{flex-direction:column;gap:14px;min-width:480px;display:flex}.task-stage{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);overflow:hidden}.task-stage.is-current{border-color:var(--accent)}.task-stage-head{background:var(--bg-elevated);align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:600;display:flex}.task-stage.is-current .task-stage-head{color:var(--accent)}.task-stage-head .task-count{color:var(--text-dim);font-size:11px;font-weight:400}.task-row{border-top:1px solid var(--border);grid-template-columns:20px 1fr 32px 80px 20px;align-items:center;gap:8px;padding:6px 12px;display:grid}.task-row input[type=checkbox]{margin:0}.task-text{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.task-text.done{color:var(--text-faint);text-decoration:line-through}.task-assignee{background:var(--bg-inset);border:1px solid var(--border-strong);width:24px;height:24px;color:var(--text-dim);font:600 10px/1 var(--font);letter-spacing:.02em;border-radius:50%;place-items:center;display:grid}.task-due{font-size:11px;font-family:var(--mono);color:var(--text-faint);white-space:nowrap}.task-due.overdue{color:var(--danger);font-weight:600}.task-del{color:var(--text-faint);background:0 0;border:none;height:auto;padding:0;line-height:1}.task-del:hover{color:var(--danger);background:0 0;border-color:#0000}.task-add{border-top:1px solid var(--border);background:var(--bg-inset);grid-template-columns:1fr auto auto auto;align-items:center;gap:8px;padding:8px 12px;display:grid}.task-add input,.task-add select{background-color:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);height:var(--ctrl-h);padding:0 26px 0 8px}.portfolio-viewtoggle{border:1px solid var(--border);border-radius:var(--radius);flex:none;display:flex;overflow:hidden}.portfolio-viewtoggle button{background:var(--bg-inset);color:var(--text-dim);height:var(--ctrl-h);border:none;border-radius:0;padding:0 12px;font-size:12px}.portfolio-viewtoggle button:not(:first-child){border-left:1px solid var(--border)}.portfolio-viewtoggle button[aria-selected=true]{background:var(--bg-elevated);color:var(--text);font-weight:600}.task-badge{background:var(--bg-inset);border:1px solid var(--border-strong);min-width:18px;height:18px;color:var(--text-dim);font:600 10px/1 var(--font);border-radius:999px;place-items:center;padding:0 5px;display:inline-grid}.task-badge.overdue{color:var(--danger);border-color:var(--danger)}.mytasks{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);flex-direction:column;display:flex;overflow:hidden}.mytask-row{border-top:1px solid var(--border);grid-template-columns:20px 1fr auto auto auto;align-items:center;gap:10px;padding:8px 14px;display:grid}.mytask-row:first-child{border-top:none}.mytask-row input[type=checkbox]{margin:0}.mytask-text{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.mytask-context{color:var(--text-dim);white-space:nowrap;font-size:12px}.mytask-stage{font-size:10px;font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--border-strong);color:var(--text-dim);white-space:nowrap;border-radius:4px;padding:2px 6px}.scope-library-view{z-index:var(--z-modal);background:var(--bg-app);color:var(--text);flex-direction:column;display:flex;position:fixed;inset:0}.scope-library-header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:16px 24px;display:flex}.scope-library-header h2{margin:0;font-size:18px;font-weight:600}.scope-library-header .spacer{flex:1}.scope-type-switch{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);gap:2px;padding:2px;display:flex}.scope-type-btn{color:var(--text-dim);height:calc(var(--ctrl-h) - 4px);border-radius:calc(var(--radius) - 2px);background:0 0;border:none;padding:0 12px}.scope-type-btn.active{background:var(--accent);color:var(--accent-ink)}.scope-type-btn:hover:not(.active):not(:disabled){background:var(--bg-elevated);color:var(--text)}.scope-library-body{flex-direction:column;flex:1;gap:20px;padding:16px 24px 24px;display:flex;overflow-y:auto}.scope-library-error{color:var(--danger)}.scope-group{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel)}.scope-group-header{background:var(--bg-elevated);border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;display:flex}.scope-group-header h3{text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);margin:0;font-size:13px;font-weight:600}.scope-group-empty{color:var(--text-dim);margin:0;padding:10px 14px;font-size:13px;font-style:italic}.scope-group-rows{flex-direction:column;display:flex}.clause-row{border-top:1px solid var(--border);flex-direction:column;gap:8px;padding:12px 14px;display:flex}.clause-row:first-child{border-top:none}.clause-row-main{flex-direction:column;gap:6px;display:flex}.clause-textarea{resize:vertical;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);font:inherit;min-height:44px;padding:8px 10px}.clause-textarea:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-1px}.clause-tokens{flex-wrap:wrap;gap:6px;display:flex}.token-chip{font-family:var(--mono);border:1px solid var(--border-strong);color:var(--text-dim);border-radius:4px;padding:1px 6px;font-size:11px}.token-chip.invalid{color:var(--warn);border-color:var(--warn)}.clause-row-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.clause-default-toggle{color:var(--text-dim);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:flex}.clause-default-toggle input{margin:0}.clause-scope-chips{gap:6px;display:flex}.scope-chip{border:1px solid var(--border-strong);color:var(--text-dim);background:0 0;border-radius:999px;height:auto;padding:3px 8px;font-size:11px}.scope-chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.clause-reorder{gap:2px;display:flex}.clause-reorder button{place-items:center;width:24px;height:24px;padding:0;font-size:10px;display:grid}.clause-row-controls .spacer{flex:1}.clause-delete{margin-left:auto}.token-picker-menu{width:320px;max-height:320px;overflow-y:auto}.token-picker-item{text-align:left;color:var(--text);background:0 0;border:none;border-radius:4px;flex-direction:column;align-items:flex-start;gap:2px;height:auto;padding:6px 10px;display:flex}.token-picker-item:hover{background:var(--bg-inset)}.token-picker-label{font-size:12px;font-weight:600}.token-picker-token{font-family:var(--mono);color:var(--accent-hover);font-size:11px}.token-picker-desc{color:var(--text-dim);font-size:11px}.dialog-settings{flex-direction:column;width:min(760px,92vw);max-width:none;display:flex}.dialog-settings .dialog-body{height:min(560px,72vh);max-height:none;padding:0;overflow:hidden}.settings-layout{grid-template-columns:184px 1fr;height:100%;min-height:0;display:grid}.settings-nav{background:var(--bg-inset);border-right:1px solid var(--border);flex-direction:column;gap:2px;padding:12px 8px;display:flex;overflow-y:auto}.settings-nav-group{flex-direction:column;gap:2px;display:flex}.settings-nav-group+.settings-nav-group{margin-top:14px}.settings-nav-scope{font:600 10px/1 var(--font);letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);padding:0 8px 4px}.settings-nav-item{appearance:none;text-align:left;font:400 12px/1.2 var(--font);color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:6px 8px}.settings-nav-item:hover{background:var(--bg-panel);color:var(--text)}.settings-nav-item.on{background:var(--bg-elevated);color:var(--text);font-weight:600}.settings-pane{background:linear-gradient(var(--bg-elevated) 30%, transparent) top / 100% 20px no-repeat local, linear-gradient(transparent, var(--bg-elevated) 70%) bottom / 100% 20px no-repeat local, linear-gradient(#00000052, transparent) top / 100% 12px no-repeat scroll, linear-gradient(transparent, #00000052) bottom / 100% 12px no-repeat scroll;min-height:0;padding:16px 20px;overflow-y:auto}.settings-pane>h4{font:600 13px/1.2 var(--font);color:var(--text);margin:0 0 4px}.settings-pane h5{font:600 11px/1 var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);margin:0 0 8px}.settings-scope-tag{font:500 10.5px/1.3 var(--font);border-radius:999px;margin:0 0 14px;padding:3px 8px;display:inline-block}.settings-scope-tag.is-doc{color:var(--warn);background:color-mix(in srgb, var(--warn) 12%, transparent)}.settings-scope-tag.is-user{color:var(--accent-hover);background:color-mix(in srgb, var(--accent) 14%, transparent)}.settings-pref{margin-bottom:12px}.settings-pref .form-row{grid-template-columns:90px minmax(0,1fr)}.settings-pref-desc{color:var(--text-faint);margin:3px 0 0;font-size:11px}.settings-differs{color:var(--warn)}.settings-inline-action{appearance:none;font:inherit;color:var(--accent-hover);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.settings-build{text-align:left;-webkit-user-select:text;user-select:text;margin-top:auto;padding-top:12px}.settings-logo-row{align-items:center;gap:8px;display:flex}.settings-logo-preview{background:#fff;border-radius:4px;max-width:120px;max-height:32px;padding:2px}.settings-preset-actions{gap:6px;display:flex}.quickstart-steps{margin:0;padding-left:22px}.quickstart-steps li{margin:7px 0;font-size:12px;line-height:1.45}.quickstart-steps strong{color:var(--text);display:block}.quickstart-steps span{color:var(--text-dim)}:root{--plek-brand-400:#78a2ff;--plek-brand-500:#356dff;--plek-brand-600:#2858d7;--plek-brand-soft:#356dff29;--plek-ink:#101319;--plek-chrome:#15171c;--plek-surface:#1e2128;--plek-surface-raised:#262b34;--plek-border:#333947;--plek-text:#e7e9ef;--plek-canvas:#e9edf2;--plek-white:#fff;--plek-success:#48b684;--plek-warning:#d8a447;--plek-danger:#d96868}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/IBMPlexSans-var.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-Regular.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexMono-SemiBold.woff2)format("woff2")}:root{--bg-app:var(--plek-chrome);--bg-panel:var(--plek-surface);--bg-elevated:var(--plek-surface-raised);--bg-inset:#12141a;--border:var(--plek-border);--border-strong:#414a5c;--canvas-bg:var(--plek-canvas);--text:var(--plek-text);--text-dim:#9aa2b1;--text-faint:#8d95a5;--plek-cobalt:var(--plek-brand-500);--plek-action:var(--plek-brand-600);--plek-on-dark:var(--plek-brand-400);--accent:var(--plek-cobalt);--accent-hover:var(--plek-on-dark);--accent-ink:#fff;--focus-ring:var(--plek-on-dark);--danger:#ef5350;--ok:#66bb6a;--warn:#ffb74d;--font:"IBM Plex Sans", system-ui, "Segoe UI", "Helvetica Neue", sans-serif;--mono:"IBM Plex Mono", ui-monospace, "SF Mono", "Cascadia Mono", Consolas, monospace;--radius:8px;--ctrl-h:28px;--transition-fast:.14s;--ease-pop:cubic-bezier(.16, 1, .3, 1);--edge-light:inset 0 1px 0 #ffffff0d;--shadow-pop:var(--edge-light), 0 10px 28px #00000080, 0 2px 6px #0006;--shadow-panel:0 3px 12px #0000006b;--motion-ok:1;--z-canvas-underlay:50;--z-canvas-prompt:100;--z-canvas-hud:200;--z-canvas-scrim:250;--z-chrome:300;--z-modal:500;--z-menu:600;--z-toast:700;--z-tooltip:800}@media (prefers-reduced-motion:reduce){:root{--motion-ok:0}}*{box-sizing:border-box}body{font:13px/1.45 var(--font);color:var(--text);background:var(--bg-app);-webkit-font-smoothing:antialiased;margin:0;overflow:clip}button{height:var(--ctrl-h);font:600 12px/1 var(--font);color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);padding:0 10px}button:hover:not(:disabled){border-color:var(--border-strong);background:#2d3340}button:active:not(:disabled){background:#232833}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}button.active,button.primary{background:var(--plek-action);border-color:var(--plek-action);color:var(--accent-ink)}button.active:hover:not(:disabled),button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}button.primary:active:not(:disabled),button.active:active:not(:disabled){background:var(--plek-action);transform:translateY(1px)}a{color:var(--plek-on-dark)}a:hover{color:#9ab9ff}input,select{height:var(--ctrl-h);font:13px/1 var(--font);color:var(--text);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);accent-color:var(--accent);padding:0 8px}input::placeholder{color:var(--text-faint)}input:focus,select:focus{border-color:var(--accent)}textarea{font:13px/1.45 var(--font);color:var(--text);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);resize:vertical;padding:6px 8px}textarea::placeholder{color:var(--text-faint)}textarea:focus{border-color:var(--accent)}input[type=checkbox],input[type=radio]{appearance:none;vertical-align:-3px;background:var(--bg-inset);border:1px solid var(--border-strong);cursor:pointer;width:15px;height:15px;transition:background-color var(--transition-fast), border-color var(--transition-fast);border-radius:4px;flex:none;margin:0;padding:0}input[type=radio]{border-radius:50%}input[type=checkbox]:hover:not(:disabled),input[type=radio]:hover:not(:disabled){border-color:var(--accent)}input[type=checkbox]:checked,input[type=checkbox]:indeterminate,input[type=radio]:checked{background-color:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-6'/%3E%3C/svg%3E");background-size:100%}input[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M4 8h8'/%3E%3C/svg%3E");background-size:100%}input[type=radio]:checked{background-image:radial-gradient(circle,#fff 0 34%,#0000 36%)}input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.45;cursor:not-allowed}@media (prefers-reduced-motion:reduce){input[type=checkbox],input[type=radio]{transition:none}}select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%239aa2b1' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6.5l4 4 4-4'/%3E%3C/svg%3E");background-position:right 7px center;background-repeat:no-repeat;background-size:13px;padding-right:26px}select:disabled{opacity:.55;cursor:not-allowed}select[multiple],select[size]:not([size="1"]){background-image:none;height:auto;padding-right:8px}input[type=color]{appearance:none;width:44px;height:var(--ctrl-h);background:var(--bg-inset);border:1px solid var(--border-strong);border-radius:var(--radius);cursor:pointer;padding:3px}input[type=color]:hover{border-color:var(--accent)}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:none;border-radius:3px}input[type=color]::-moz-color-swatch{border:none;border-radius:3px}input[type=file]{height:auto;font:12px/1 var(--font);color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0}input[type=file]::file-selector-button{height:var(--ctrl-h);font:500 12px/1 var(--font);color:var(--text);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);cursor:pointer;transition:border-color var(--transition-fast), background-color var(--transition-fast);margin-right:10px;padding:0 12px}input[type=file]::file-selector-button:hover{border-color:var(--accent);background:var(--bg-panel)}input[type=number]{font-family:var(--mono);font-variant-numeric:tabular-nums}.signin-page{background:var(--bg-app);justify-content:center;align-items:center;min-height:100vh;display:flex}.signin-card{background:var(--bg-panel);border:1px solid var(--border);width:340px;box-shadow:var(--shadow-pop);border-radius:12px;flex-direction:column;gap:16px;padding:32px;display:flex}.signin-brand{align-items:center;gap:12px;margin-bottom:8px;display:flex}.signin-expired{color:var(--warn);border-radius:var(--radius);background:#ffb34714;border:1px solid #ffb34759;margin:0 0 12px;padding:8px 10px;font-size:12px}.signin-card label{font:600 11px/1 var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);flex-direction:column;gap:4px;display:flex}.signin-card input{width:100%;height:36px;padding:0 10px}.signin-btn{height:36px;margin-top:4px;font-size:13px}.signin-hint{text-align:center;color:var(--text-faint);margin:0;font-size:11px}.signin-guest-btn{width:100%;height:44px;padding:14px;font-size:14px;font-weight:600}.signin-divider{color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:12px;font-size:11px;display:flex}.signin-divider:before,.signin-divider:after{content:"";background:var(--border);flex:1;height:1px}.signin-expand{color:var(--text-dim);font:400 12px/1 var(--font);cursor:pointer;text-align:center;background:0 0;border:none;padding:4px 0}.signin-expand:hover{color:var(--text)}.signin-expand-body{flex-direction:column;gap:8px;display:flex}.app-skeleton{z-index:var(--z-canvas-prompt);background:var(--canvas-bg);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.skeleton-shimmer{background:linear-gradient(100deg, var(--border) 30%, var(--bg-elevated) 50%, var(--border) 70%);background-size:200% 100%;border-radius:999px;width:60%;max-width:400px;height:8px;animation:1.3s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.report-capture-overlay{z-index:var(--z-canvas-scrim);color:#fff;text-shadow:0 1px 3px #080a0ecc;cursor:progress;background:#080a0e59;justify-content:center;align-items:center;gap:10px;font-size:13px;font-weight:500;display:flex;position:absolute;inset:0}.empty-canvas{z-index:var(--z-canvas-prompt);background:var(--canvas-bg);justify-content:center;align-items:center;transition:background .2s;display:flex;position:absolute;inset:0}.empty-canvas.drag-over{outline:2px dashed var(--accent);outline-offset:-12px;background:#356dff0f}.empty-canvas-inner{text-align:center;color:var(--bg-app);flex-direction:column;align-items:center;gap:12px;display:flex}.empty-canvas-inner h2{font:600 18px/1.2 var(--font);color:var(--bg-app);margin:0}.empty-canvas-inner p{color:#5c6370;margin:0;font-size:13px;line-height:1.5}.empty-canvas-inner button{margin-top:4px}.empty-floor{z-index:var(--z-canvas-prompt);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.empty-floor__card{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-pop);pointer-events:auto;align-items:center;gap:12px;padding:14px 16px;display:flex}.empty-floor__text{flex-direction:column;gap:2px;display:flex}.empty-floor__text strong{font:600 13px/1.2 var(--font);color:var(--text)}.empty-floor__text span{color:var(--text-dim);max-width:340px;font-size:12px}.scale-gate__icon{width:36px;height:36px;color:var(--warn);background:#ffb74d1f;border:1px solid #ffb74d66;border-radius:8px;flex:none;place-items:center;display:grid}.scale-gate__skip{height:auto;font:500 12px/1 var(--font);color:var(--text-faint);background:0 0;border:none;padding:6px 8px}.scale-gate__skip:hover:not(:disabled){color:var(--text);background:0 0}.calib-hint{z-index:var(--z-canvas-prompt);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-panel);color:var(--text);background:#16191ef0;align-items:center;gap:10px;padding:8px 14px;font-size:12px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.calib-hint button{height:22px;padding:0 8px;font-size:11px}.conflict-banner{z-index:var(--z-canvas-prompt);border:1px solid var(--warn,#b8860b);border-radius:var(--radius);box-shadow:var(--shadow-panel);color:var(--text);background:#16191ef0;align-items:center;gap:10px;padding:8px 14px;font-size:12px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.conflict-banner button{height:22px;padding:0 8px;font-size:11px}.error-boundary{background:var(--bg-app);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.error-boundary-card{background:var(--bg-panel);border:1px solid var(--border);max-width:400px;box-shadow:var(--shadow-pop);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:12px;padding:32px;display:flex}.error-boundary-card h1{font:600 18px/1.2 var(--font);color:var(--text);margin:0}.error-boundary-card p{color:var(--text-dim);margin:0;font-size:13px;line-height:1.5}.error-boundary-msg{font-family:var(--mono);color:var(--danger);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);overflow-wrap:break-word;max-width:100%;padding:8px 12px;font-size:11px}.error-boundary-card button+button{color:var(--text-dim);background:0 0;border-color:#0000;margin-top:-4px;font-size:12px}.error-boundary-card button+button:hover{color:var(--text)}.spinner{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){button{transition:none}.skeleton-shimmer,.spinner{animation:none}.empty-canvas{transition:none}}.map-align-bar label{color:var(--text-dim);align-items:center;gap:6px;font-size:12px;display:flex}.map-align-bar input{width:64px}.map-attribution{z-index:var(--z-canvas-hud);font:10px/1.4 var(--font);color:var(--text-dim);pointer-events:none;-webkit-user-select:none;user-select:none;background:#16191ed9;border-radius:4px;padding:3px 8px;position:absolute;bottom:48px;right:12px}.seg{border:1px solid var(--border);border-radius:var(--radius);gap:0;display:flex;overflow:hidden}.seg button{background:var(--bg-inset);height:26px;color:var(--text-dim);border:none;border-radius:0;flex:1;font-size:11px}.seg button+button{border-left:1px solid var(--border)}.seg button.on{background:var(--plek-action);color:var(--accent-ink)}.switch-row{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:inline-flex;position:relative}.switch-row:has(>.switch-input:disabled){cursor:not-allowed;opacity:.55}.switch-input{opacity:0;width:100%;height:100%;cursor:inherit;background:0 0;border:none;border-radius:0;margin:0;padding:0;position:absolute;inset:0}.switch,.switch-label{pointer-events:none}.switch-label{color:var(--text-dim);font-size:12px}.switch-input:checked~.switch-label{color:var(--text)}.switch{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;flex:none;width:36px;height:20px;padding:0;display:block;position:relative}.switch-input:focus-visible+.switch{outline:2px solid var(--focus-ring);outline-offset:2px}.switch:after{content:"";background:var(--text-dim);border-radius:999px;width:14px;height:14px;transition:transform .14s,background .14s;position:absolute;top:1px;left:2px}.switch-input:checked+.switch{border-color:var(--accent);background:#356dff40}.switch-input:checked+.switch:after{background:var(--accent);transform:translate(16px)}@media (prefers-reduced-motion:reduce){.switch:after{transition:none}}.signin-legal{color:var(--text-faint);margin:14px 0 0;font-size:11px}.signin-legal a{color:var(--text-dim)}.app-shell{grid-template:"header header header"48px"rail canvas inspector"minmax(0,1fr)"status status status"24px/56px 1fr auto;width:100vw;height:100vh;display:grid}.shell-header{background:var(--bg-panel);border-bottom:1px solid var(--border);box-shadow:var(--edge-light), 0 1px 0 #0000004d;z-index:var(--z-chrome);grid-area:header;align-items:center;gap:0;padding:0 12px;display:flex}.header-left{flex:none;align-items:center;gap:10px;display:flex}.header-center{flex:1;justify-content:center;align-items:center;gap:6px;min-width:0;display:flex}.header-right{flex:none;align-items:center;gap:10px;display:flex}.header-action-group{align-items:center;gap:4px;display:flex}.header-divider{background:var(--border);align-self:stretch;width:1px;margin:4px 2px}.header-sep{color:var(--text-faint);margin:0 2px;font-size:14px}.header-no-project{color:var(--text-faint);font-size:12px}.header-nav-btn{font-size:12px}.header-nav-btn.on{color:var(--text);background:var(--bg-inset);border-color:var(--border-strong)}.manage-btn{align-items:center;gap:5px;display:flex}@media (width<=1199px){.manage-btn-label{display:none}}.project-name-btn{color:var(--text);font:600 13px/1 var(--font);border-radius:var(--radius);text-overflow:ellipsis;white-space:nowrap;cursor:default;background:0 0;border:1px solid #0000;max-width:200px;height:auto;padding:4px 8px;overflow:hidden}.project-name-btn:hover{background:var(--bg-elevated);border-color:var(--border)}.project-name-input{width:180px;height:28px;font:600 13px/1 var(--font);color:var(--text);background:var(--bg-inset);border:1px solid var(--accent);border-radius:var(--radius);padding:0 8px}.shell-rail{background:var(--bg-panel);border-right:1px solid var(--border);box-shadow:var(--edge-light);z-index:var(--z-chrome);flex-direction:column;grid-area:rail;align-items:center;gap:4px;padding:8px 0;display:flex}.shell-rail[inert]{opacity:.45}.shell-canvas{background:var(--canvas-bg);grid-area:canvas;position:relative;overflow:hidden}.shell-canvas:after{content:"";pointer-events:none;z-index:var(--z-canvas-underlay);position:absolute;inset:0;box-shadow:inset 0 1px 8px #00000029,inset 0 0 3px #00000014}.shell-inspector{background:var(--bg-panel);border-left:1px solid var(--border);box-shadow:var(--edge-light);min-height:0;z-index:var(--z-chrome);flex-direction:column;grid-area:inspector;display:flex}.shell-status{grid-area:status}.brand{-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding-right:4px;display:flex}.brand-lockup{object-fit:contain;width:120px;height:36px;display:block}.brand-lockup--compact{width:92px;height:28px}.brand-mark{object-fit:contain;display:block}@media (width<=1199px){.header-center{gap:4px}.project-name-btn{max-width:140px}.header-action-group{gap:2px}}@media (width<=999px){.header-center{display:none}.header-right{margin-left:auto}}.tb-group{align-items:center;gap:6px;display:flex}.tb-group select{max-width:130px}.scale-readout{font:11px/1 var(--mono);font-variant-numeric:tabular-nums;color:var(--text-dim);background:var(--bg-inset);border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:1px 1px 1px 8px;display:inline-flex}.scale-readout.unset{color:var(--warn);border-color:#ffb74d80}.scale-readout:hover{border-color:color-mix(in oklab, var(--accent) 45%, var(--border))}.scale-readout__edit{height:18px;font:600 10px/1 var(--font);border-radius:999px;padding:0 8px}.user-badge{font:600 11px/1 var(--font);color:var(--text-dim);background:var(--bg-inset);border:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:120px;padding:5px 10px;overflow:hidden}[data-testid=canvas-stage]{background:var(--canvas-bg)}.status-strip{height:24px;font:11px/1 var(--mono);font-variant-numeric:tabular-nums;color:var(--text-dim);background:var(--bg-panel);border-top:1px solid var(--border);box-shadow:var(--edge-light);-webkit-user-select:none;user-select:none;align-items:center;gap:20px;padding:0 10px;display:flex}.status-strip strong{color:var(--text);font-weight:600}.status-item.status-right{align-items:center;gap:10px;margin-left:auto;display:flex}.status-sync{color:var(--text-faint);align-items:center;gap:6px;font-weight:500;display:inline-flex}.status-sync .sync-dot{background:currentColor;border-radius:999px;flex:none;width:6px;height:6px}.status-sync--dirty{color:var(--warn);font-weight:600}.status-sync--saving{color:var(--accent);font-weight:600}.status-sync--saving .sync-dot{animation:1.2s ease-in-out infinite status-pulse}.status-activity{color:var(--accent);font-weight:600;animation:1.5s ease-in-out infinite status-pulse}@keyframes status-pulse{0%,to{opacity:1}50%{opacity:.6}}.status-toggle{height:18px;font:600 10.5px/1 var(--mono);color:var(--text-faint);border:1px solid var(--border);background:0 0;border-radius:999px;padding:0 8px}.status-toggle:hover:not(:disabled){color:var(--text);border-color:var(--border-strong);background:var(--bg-elevated)}.status-toggle.on{color:var(--accent-hover);background:#356dff24;border-color:#356dff8c}.rail-group{flex-direction:column;align-items:center;gap:4px;display:flex}.rail-divider{background:var(--border);width:28px;height:1px;margin:6px 0}.rail-label{font:700 9px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin-bottom:2px}.rail-btn{width:40px;height:40px;color:var(--text-dim);background:0 0;border:1px solid #0000;border-radius:8px;place-items:center;padding:0;display:grid;position:relative}.rail-btn:hover:not(:disabled){background:var(--bg-elevated);border-color:var(--border);color:var(--text)}.rail-btn.active{color:var(--accent-hover);background:#356dff29;border-color:#78a2ff9e}.rail-btn.active:before{content:"";background:var(--accent);border-radius:0 3px 3px 0;width:3px;position:absolute;top:9px;bottom:9px;left:-8px}.rail-tooltip{white-space:nowrap;background:var(--bg-elevated);border:1px solid var(--border-strong);color:var(--text);font:600 11px/1 var(--font);box-shadow:var(--shadow-pop);z-index:var(--z-tooltip);pointer-events:none;opacity:0;border-radius:5px;padding:4px 8px;transition:opacity .12s;position:absolute;top:50%;left:48px;transform:translateY(-50%)}.rail-btn:hover:not(:disabled)>.rail-tooltip,.rail-btn:focus-visible>.rail-tooltip{opacity:1}@media (height<=860px){.shell-rail{gap:2px;padding:4px 0}.rail-group{gap:2px}.rail-btn{width:32px;height:32px}.rail-btn.active:before{top:7px;bottom:7px}.rail-divider{margin:2px 0}.rail-label{margin-bottom:0}}@media (height<=700px){.shell-rail{gap:1px;padding:2px 0}.rail-group{gap:1px}.rail-btn{width:28px;height:28px}.rail-btn.active:before{top:5px;bottom:5px}.rail-label{display:none}.rail-divider{margin:1px 0}}.header-profile-wrap{display:flex;position:relative}.header-avatar{width:var(--ctrl-h);height:var(--ctrl-h);background:var(--bg-elevated);color:var(--text);font:700 12px/1 var(--font);cursor:pointer;border:2px solid #356dff8c;border-radius:999px;place-items:center;padding:0;transition:border-color .12s;display:grid}.header-avatar:hover{border-color:var(--accent)}@media (prefers-reduced-motion:reduce){.rail-tooltip,.header-avatar{transition:none}.status-activity,.status-sync--saving .sync-dot{animation:none}}.crumb-dim{font:500 13px/1 var(--font);color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;max-width:160px;overflow:hidden}.crumb-sep{color:var(--text-faint);-webkit-user-select:none;user-select:none;margin:0 2px;font-size:12px}.status-strip .status-switch{gap:6px}.status-strip .status-switch .switch{width:26px;height:14px}.status-strip .status-switch .switch:after{width:10px;height:10px;top:1px}.status-strip .status-switch .switch-input:checked+.switch:after{transform:translate(12px)}.status-strip .status-switch .switch-label{font:11px/1 var(--mono);color:var(--text-dim)}.status-strip .status-switch .switch-input:checked~.switch-label{color:var(--text)}.insp{width:300px;height:100%;min-height:0;color:var(--text);background:var(--bg-panel);flex-direction:column;font-size:13px;transition:width .15s cubic-bezier(.4,0,.2,1);display:flex}.insp.collapsed{width:36px}.insp-head{border-bottom:1px solid var(--border);flex:none;justify-content:space-between;align-items:center;gap:6px;height:36px;padding:0 8px 0 12px;display:flex}.insp.collapsed .insp-head{justify-content:center;padding:0}.insp-title{font:600 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.insp-collapse{width:22px;height:22px;color:var(--text-dim);background:0 0;border:none;flex:none;place-items:center;padding:0;transition:transform .15s cubic-bezier(.4,0,.2,1),color .12s;display:grid;transform:rotate(180deg)}.insp.collapsed .insp-collapse{transform:rotate(0)}.insp-collapse:hover{color:var(--text);background:var(--bg-elevated)}.insp-body{flex:1;min-height:0;padding:12px;animation:.15s ease-out insp-fade-in;overflow-y:auto}@keyframes insp-fade-in{0%{opacity:0}to{opacity:1}}.insp-body h4{font:600 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin:0 0 8px}.insp-body .camera-props{margin-top:4px}.camera-accessories{margin-top:8px}.camera-accessories .accessory-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.camera-accessories .accessory-row button{color:var(--text-faint);cursor:pointer;background:0 0;border:none;font-size:14px}.camera-accessories .accessory-row button:hover{color:var(--text)}.insp-subhead{margin:6px 0 2px;font-weight:600}.insp-muted{color:var(--text-faint);font-size:12px}.stat-row{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px;display:grid}.stat{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:2px;padding:8px 10px;display:flex}.stat-value{font:700 18px/1 var(--mono);color:var(--text)}.stat-label{font:600 10.5px/1 var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.sec-label{font:600 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin:4px 0 8px}.sec-label:first-child{margin-top:0}.add-obj{width:100%;height:auto;font:600 12px/1 var(--font);color:var(--accent-hover);border-radius:var(--radius);text-align:left;background:#356dff14;border:1px dashed #356dff80;margin-bottom:6px;padding:7px 8px}.add-obj:hover:not(:disabled){border-color:var(--accent);color:var(--accent-hover);background:#356dff24}.add-obj:disabled{color:var(--text-faint);border-color:var(--border);background:0 0}.obj-list{flex-direction:column;gap:2px;display:flex}.obj{text-align:left;border-radius:var(--radius);background:0 0;border:1px solid #0000;align-items:center;gap:8px;width:100%;height:auto;padding:6px 8px;display:flex}.obj:hover{border-color:var(--border);background:#356dff12}.obj.active{background:#356dff1f;border-color:#356dff73}.obj-dot{background:var(--accent);border-radius:999px;flex:none;width:8px;height:8px}.obj-dot.warn{background:var(--warn)}.obj-dot.room{background:#9575cd}.obj-name{font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.obj-meta{color:var(--text-faint);flex:none;font-size:11px}.chip-row{flex-wrap:wrap;gap:4px;margin-bottom:10px;display:flex}.chip{height:22px;font:600 10.5px/1 var(--font);color:var(--text-dim);background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;padding:0 9px}.chip:hover:not(:disabled){color:var(--text);border-color:var(--border-strong);background:var(--bg-inset)}.chip.active{color:var(--accent-hover);background:#356dff24;border-color:#356dff8c}.pal-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin-bottom:4px;display:grid}.pal-card{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;width:100%;min-width:0;height:auto;padding:6px;display:flex}.pal-card-model{font-family:var(--mono);font-size:11px;font-weight:700}.pal-card-spec{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--text-dim);text-transform:capitalize;font-size:9.5px;font-weight:400;overflow:hidden}.pal-card.active .pal-card-spec{color:var(--accent-ink);opacity:.75}.pal-card-variants{max-width:100%;color:var(--text-faint);letter-spacing:.02em;font-size:9px;font-weight:600}.pal-card.active .pal-card-variants{color:var(--accent-ink);opacity:.6}.pal-card-price{font-variant-numeric:tabular-nums;color:var(--text-dim);font-size:9.5px;font-weight:600}.pal-card.active .pal-card-price{color:var(--accent-ink);opacity:.8}.variant-price{font-variant-numeric:tabular-nums;color:var(--text-dim);font-size:9px}.variant-btn.active .variant-price{color:var(--accent)}.line-mode-row{gap:4px;margin:10px 0;display:flex}.line-mode-btn{border-radius:var(--radius);height:26px;font:600 11px/1 var(--font);color:var(--text-dim);background:var(--bg-inset);border:1px solid var(--border);flex:1}.line-mode-btn:hover:not(:disabled){color:var(--text);border-color:var(--border-strong)}.line-mode-btn.active{color:var(--accent-hover);background:#356dff24;border-color:#356dff8c}.line-controls{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;margin:0 0 10px;padding:10px;display:flex}.line-spacing-row{color:var(--text-dim);align-items:center;gap:6px;margin:0;font-size:12px;display:flex}.line-spacing-row input{width:64px}.line-flip-btn{font-size:11px;font-family:var(--font);background:var(--bg-elevated);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius);cursor:pointer;align-self:flex-start;padding:4px 10px;font-weight:600}.line-flip-btn:hover{border-color:var(--accent);color:var(--accent-hover)}.detect-prompt{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);justify-content:space-between;align-items:center;gap:8px;margin:0 0 10px;padding:8px 10px;font-size:11.5px;display:flex}.detect-prompt button{min-width:84px;font-size:11px;font-family:var(--font);background:var(--accent);color:#fff;border-radius:var(--radius);cursor:pointer;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:3px 10px;display:inline-flex}.detect-prompt button:hover:not(:disabled){opacity:.85}.detect-prompt button:disabled{opacity:.6;cursor:default}.line-aoi-banner{background:var(--bg-inset);border-radius:var(--radius);color:var(--text-dim);border:1px solid #ffb74d66;flex-direction:column;gap:6px;margin:0 0 10px;padding:8px 10px;font-size:11.5px;display:flex}.line-aoi-banner button{font-size:11px;font-family:var(--font);background:var(--accent);color:#fff;border-radius:var(--radius);cursor:pointer;border:none;align-self:flex-start;padding:3px 10px}.line-aoi-banner button:hover{opacity:.85}.variant-picker{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);margin:8px 0 12px;padding:10px}.variant-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.variant-header .sec-label{margin:0}.variant-link{color:var(--accent);font-size:11px;font-weight:600;text-decoration:none}.variant-link:hover{color:var(--accent-hover);text-decoration:underline}.variant-row{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}.variant-btn{border-radius:var(--radius);background:var(--bg-elevated);border:1px solid var(--border);height:auto;color:var(--text-dim);flex-direction:column;align-items:center;gap:1px;padding:5px 10px;display:flex}.variant-btn:hover:not(:disabled){border-color:var(--border-strong);color:var(--text)}.variant-btn.active{color:var(--accent-hover);background:#356dff24;border-color:#356dff8c}.variant-model{font:700 12px/1 var(--mono)}.variant-detail{color:var(--text-faint);font-size:9.5px}.variant-btn.active .variant-detail{color:var(--accent)}.variant-specs{font:11px/1.4 var(--mono);color:var(--text-faint);flex-wrap:wrap;gap:6px 12px;display:flex}.radio-row{flex-direction:column;gap:8px;display:flex}.radio{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;color:var(--text-dim);align-items:flex-start;gap:10px;padding:12px;font-size:12px;display:flex}.radio:has(input:checked){border-color:var(--accent);color:var(--text);background:#356dff1a}.radio input{margin-top:2px}.radio-input{opacity:0;pointer-events:none;position:absolute}.radio-mark{border:2px solid var(--text-faint);border-radius:999px;flex:none;width:16px;height:16px;margin-top:1px;display:inline-block}.radio:has(input:checked) .radio-mark{border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--accent)}.radio strong{color:var(--text);font-size:13px;line-height:1.3}.radio-label{flex-direction:column;gap:3px;min-width:0;display:flex}.radio-desc{line-height:1.4}.panel-section+.panel-section{border-top:1px solid #333947b8;margin-top:8px;padding-top:12px}.section-header{width:100%;height:auto;font:600 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text);background:0 0;border:none;justify-content:flex-start;align-items:center;gap:6px;padding:4px 2px;display:flex}.section-header:hover{color:var(--text);background:0 0}.section-chevron{color:var(--text-faint);font-size:9px;transition:transform .12s;display:inline-block}.section-chevron.is-open{transform:rotate(90deg)}.section-body{margin-top:6px}.insp label:not(.radio):not(.switch-row){color:var(--text-dim);margin:8px 0;display:block}.insp input[type=number],.insp input:not([type]){width:96px}.insp select{width:100%;margin-top:2px}.camera-props label:not(.radio)>input[type=number],.camera-props label:not(.radio)>input:not([type]){margin-top:2px;display:block}.camera-props label:not(.radio)>input:not([type]){width:100%}.insp .hint .nowrap{white-space:nowrap}.insp textarea{width:100%;font:inherit;resize:vertical;margin-top:2px;display:block}.insp .hint,.insp .compass-readout{color:var(--text-dim);margin:4px 0 8px;font-size:12px}.badge-warn{background:var(--warn);color:#2a1a00;font:600 10px/1.6 var(--font);text-transform:uppercase;letter-spacing:.06em;border-radius:999px;margin-left:6px;padding:1px 8px;display:inline-block}.insp p{margin:4px 0}.doc-links{margin:2px 0 8px}.doc-links a{color:var(--accent);font-size:11px;font-weight:600;text-decoration:none}.doc-links a:hover{color:var(--accent-hover);text-decoration:underline}.doc-links a+a{margin-left:12px}.insp .metrics p{font-variant-numeric:tabular-nums}.cov-block{margin-bottom:14px}.cov-hero{align-items:baseline;gap:8px;display:flex}.cov-hero b{font:700 32px/1 var(--mono);letter-spacing:-.02em;font-variant-numeric:tabular-nums}.cov-hero span{font:600 10.5px/1 var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.cov-bar{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;height:6px;margin:8px 0 6px;overflow:hidden}.cov-fill{height:100%;display:block}.cov-fill.flash{animation:.6s ease-out cov-flash}@keyframes cov-flash{0%,to{box-shadow:none;filter:none}35%{filter:brightness(1.35);box-shadow:0 0 10px 2px #66bb6acc}}.cov-gap-row,.cov-clip-row{width:calc(100% + 12px);height:auto;font:600 11px/1 var(--mono);color:var(--danger);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:5px;align-items:center;gap:8px;margin:0 -6px;padding:5px 6px;display:flex}.cov-gap-row.ok{color:var(--ok)}.cov-gap-row:hover,.cov-clip-row:hover{background:#ffffff0a}.cov-gap-row.off,.cov-clip-row.off{opacity:.38}.hatch-swatch{background-image:repeating-linear-gradient(-45deg,#c62828e6 0 1.5px,#0000 1.5px 4px);border-radius:2px;flex:none;width:8px;height:8px}.cov-gap-row.off .hatch-swatch,.cov-clip-row.off .hatch-swatch{box-shadow:inset 0 0 0 1.5px var(--text-faint);background-image:none}.band-rows{flex-direction:column;display:flex}.band-row{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:5px;align-items:center;gap:8px;width:calc(100% + 12px);height:auto;margin:0 -6px;padding:5px 6px;display:flex}.band-row:hover{background:#ffffff0a}.band-row.off{opacity:.38}.band-row.off .dori-swatch{box-shadow:inset 0 0 0 1.5px var(--text-faint);background:0 0!important}.band-name{width:64px;font:600 11px/1 var(--font);color:var(--text);flex:none}.band-track{background:#ffffff14;border-radius:999px;flex:1;height:6px;overflow:hidden}.band-fill{border-radius:999px;height:100%;transition:width .3s;display:block}.band-pct{text-align:right;width:40px;font:11px/1 var(--mono);font-variant-numeric:tabular-nums;color:var(--text-dim);flex:none}.insp .metrics-table{flex-direction:column;gap:2px;display:flex}.insp .metric-row{align-items:center;gap:6px;display:flex}.dori-swatch{border-radius:2px;flex:none;width:8px;height:8px}.zoom-bar{z-index:var(--z-canvas-hud);height:32px;box-shadow:var(--edge-light), 0 2px 12px #0006;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(12px);background:#16191eeb;border:1px solid #ffffff12;border-radius:8px;align-items:center;gap:0;padding:0 4px;display:flex;position:absolute;bottom:12px;right:12px}.zoom-bar__sep-sm{background:#ffffff12;flex-shrink:0;align-self:stretch;width:1px;margin:7px 2px}.zoom-bar__controls{align-items:center;gap:1px;display:flex}.zoom-bar__controls button{min-width:28px;height:24px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:5px;place-items:center;padding:0 5px;transition:background .12s,color .12s;display:grid}.zoom-bar__controls button:hover:not(:disabled){color:var(--text);background:#ffffff14}.zoom-bar__controls button:disabled{opacity:.3;cursor:default}.zoom-bar__pct{height:24px;font:11px/1 var(--mono);font-variant-numeric:tabular-nums;text-align:center;min-width:38px;color:var(--text-dim);place-items:center;padding:0 5px;display:grid}.zoom-bar__reset-label{font:600 10px/1 var(--mono);letter-spacing:-.02em}.dori-legend{z-index:var(--z-canvas-hud);height:24px;box-shadow:var(--edge-light), 0 2px 12px #0006;-webkit-backdrop-filter:blur(12px);-webkit-user-select:none;user-select:none;background:#16191eeb;border:1px solid #ffffff12;border-radius:6px;align-items:center;gap:4px;padding:0 6px;display:flex;position:absolute;bottom:44px;left:12px}.dori-legend__chip{font:600 11px/1 var(--font);color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:5px;padding:3px 7px;display:flex}.dori-legend__chip:hover{background:#ffffff0f}.dori-legend__chip.off{color:var(--text-faint)}.dori-legend__chip.off .dori-swatch{box-shadow:inset 0 0 0 1.5px var(--text-faint);background:0 0!important}.scale-ruler{z-index:var(--z-canvas-hud);height:24px;box-shadow:var(--edge-light), 0 2px 12px #0006;-webkit-backdrop-filter:blur(12px);pointer-events:none;-webkit-user-select:none;user-select:none;background:#16191eeb;border:1px solid #ffffff12;border-radius:6px;align-items:center;gap:8px;padding:0 10px;display:flex;position:absolute;bottom:12px;left:12px}.scale-ruler__bar{background:var(--text-dim);height:2px;position:relative}.scale-ruler__bar:before,.scale-ruler__bar:after{content:"";background:var(--text-dim);width:1px;height:7px;position:absolute;bottom:0}.scale-ruler__bar:before{left:0}.scale-ruler__bar:after{right:0}.scale-ruler__label{font:600 10.5px/1 var(--mono);font-variant-numeric:tabular-nums;color:var(--text-dim);white-space:nowrap}.compass-rose{z-index:var(--z-canvas-hud);border:1px solid var(--border);width:48px;height:48px;box-shadow:var(--shadow-panel);pointer-events:none;-webkit-user-select:none;user-select:none;background:#1e2128e0;border-radius:999px;justify-content:center;align-items:center;display:flex;position:absolute;bottom:78px;left:8px}.compass-rose-ring{fill:none;stroke:var(--text-faint);stroke-width:1px}.compass-rose-needle{fill:var(--accent)}.compass-rose-label{font:700 8px/1 var(--font);fill:var(--text-dim)}.compare-panel{font-size:12px}.compare-selectors{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;display:flex}.compare-slot{align-items:center;gap:4px;display:flex}.compare-slot select{width:160px}.compare-remove{border:1px solid var(--border);width:22px;height:22px;color:var(--text-faint);border-radius:var(--radius);background:0 0;place-items:center;padding:0;font-size:14px;display:grid}.compare-remove:hover{color:var(--danger);border-color:var(--danger)}.compare-table{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:1px;display:flex;overflow:hidden}.compare-row{background:var(--border);grid-template-columns:100px repeat(3,1fr);gap:1px;display:grid}.compare-row>*{background:var(--bg-panel);padding:5px 8px}.compare-row.compare-header>*{background:var(--bg-elevated)}.compare-row.differs>.compare-cell{color:var(--accent-hover);background:#356dff14;font-weight:600}.compare-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.compare-cell{font-family:var(--mono);color:var(--text);font-size:11px}.compare-model{font-size:12px;font-weight:700}.compare-cell a{color:var(--accent);font-weight:600;text-decoration:none}.compare-cell a:hover{text-decoration:underline}.compare-model{cursor:default;border-radius:var(--radius);transition:background-color .12s}.compare-model.highlighted{background:var(--bg-elevated);color:var(--accent-hover)}.compare-diagram-wrap{margin-bottom:12px}.compare-diagram{aspect-ratio:4/3;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-height:280px;display:block}.compare-wedge{cursor:default;transition:opacity .12s}.compare-wedge.dimmed{opacity:.3}.compare-diagram-label{font-family:var(--mono);pointer-events:none;paint-order:stroke;stroke:var(--bg-inset);stroke-width:2px;stroke-linejoin:round;font-size:9px;font-weight:600}.compare-legend{color:var(--text-dim);flex-wrap:wrap;gap:10px;margin-top:6px;font-size:11px;display:flex}.compare-legend-item{cursor:default;border-radius:var(--radius);align-items:center;gap:5px;padding:2px 4px;display:flex}.compare-legend-item.highlighted{background:var(--bg-elevated);color:var(--text)}.compare-legend-swatch{border-radius:2px;width:10px;height:10px;display:inline-block}.compare-diagram-note{color:var(--text-faint);margin:8px 0 12px;font-size:11px;font-style:italic}.canvas-tooltip{z-index:var(--z-tooltip);pointer-events:none;border:1px solid var(--border);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#15171ceb;border-radius:6px;max-width:220px;padding:6px 10px;animation:.12s ease-out tooltip-in;position:fixed}@keyframes tooltip-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.canvas-tooltip-line{font:400 12px/1.4 var(--font);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.canvas-tooltip-line:first-child{color:#fff;font-weight:600}.prop-actions{border-top:1px solid var(--border);flex-wrap:wrap;gap:6px;margin-top:12px;padding-top:10px;display:flex}.prop-actions button{min-width:0;font:500 12px/1 var(--font);color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;flex:auto;padding:6px 10px;transition:background .1s,border-color .1s}.prop-actions button:hover:not(:disabled){background:var(--bg-inset);border-color:var(--border-strong)}.prop-actions button:disabled{opacity:.4;cursor:default}.prop-actions button.danger{color:var(--danger);background:#ef535014;border-color:#ef535066}.prop-actions button.danger:hover:not(:disabled){border-color:var(--danger);background:#ef535026}.poe-bar-label{font:500 11px/1 var(--font);color:var(--text-dim);margin:10px 0 4px}.poe-bar{background:var(--bg-inset);border:1px solid var(--border);border-radius:3px;height:6px;margin-bottom:8px;overflow:hidden}.poe-bar-fill{background:var(--accent);border-radius:3px;height:100%;transition:width .2s}.poe-bar-fill.warn{background:var(--warn)}.assigned-cams{max-height:120px;margin:8px 0 0;padding:0;list-style:none;overflow-y:auto}.assigned-cams li{padding:2px 0}.link-btn{font:400 12px/1.3 var(--font);color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:3px;margin:0;padding:2px 4px}.link-btn:hover{color:var(--accent-hover);background:#356dff1a}.warn-text{color:var(--warn)!important}@media (prefers-reduced-motion:reduce){.insp{transition:none}.cov-fill.flash{animation:none}.band-fill,.insp-collapse{transition:none}.insp-body{animation:none}.section-chevron,.zoom-bar__controls button{transition:none}.canvas-tooltip{animation:none}.prop-actions button,.poe-bar-fill{transition:none}}.multi-select-summary{color:var(--text-dim);margin-bottom:12px;font-size:12px}.multi-select-summary strong{color:var(--text)}.multi-select-actions{flex-direction:column;gap:6px;display:flex}.multi-select-actions button{text-align:left;width:100%;height:auto;padding:8px 12px;font-size:12px}.multi-select-actions .danger{color:var(--danger);background:#ef535014;border-color:#ef535066}.multi-select-actions .danger:hover:not(:disabled){border-color:var(--danger);background:#ef535026}.history-panel{flex-direction:column;gap:0;display:flex;overflow-y:auto}.history-head{margin:-4px 0 8px}.history-back{height:24px;font:600 11px/1 var(--font);color:var(--text-dim);background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:0 8px 0 4px;display:inline-flex}.history-back:hover{color:var(--text);background:var(--bg-elevated)}.history-list{margin:0;padding:0;list-style:none}.history-row{border-bottom:1px solid var(--border)}.history-row-btn{text-align:left;cursor:pointer;background:0 0;border:none;gap:10px;width:100%;height:auto;padding:10px 4px;display:flex}.history-row-btn:hover,.history-row.expanded>.history-row-btn{background:var(--bg-elevated)}.history-now{border-bottom:1px solid var(--border);gap:10px;padding:10px 4px;display:flex}.history-dot{border:1.5px solid var(--text-faint);background:0 0;border-radius:50%;flex:none;width:9px;height:9px;margin-top:4px}.history-dot.filled{background:var(--accent);border-color:var(--accent)}.history-now .history-dot.filled{background:var(--warn);border-color:var(--warn)}.history-body{flex:1;min-width:0}.history-line{align-items:center;gap:8px;display:flex}.history-time,.history-line strong{font:600 12px/1.2 var(--font);color:var(--text)}.history-badge{font:600 9.5px/1 var(--font);letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);background:var(--bg-inset);border:1px solid var(--border);border-radius:4px;padding:3px 5px}.history-badge.manual{color:var(--accent-hover);border-color:#356dff66}.history-badge.revert,.history-badge.pre-revert,.history-badge.unsaved{color:var(--warn);border-color:#ffb74d66}.history-note{font:italic 12px/1.3 var(--font);color:var(--text);margin-top:4px}.history-summary{font:11.5px/1.3 var(--font);color:var(--text-dim);overflow-wrap:anywhere;margin-top:3px}.history-actions{flex-direction:column;gap:6px;padding:4px 4px 12px 23px;display:flex}.history-action{text-align:left;width:100%;height:auto;padding:7px 10px;font-size:12px}.history-action.danger{color:var(--danger);background:#ef535014;border-color:#ef535066}.history-action.danger:hover:not(:disabled){border-color:var(--danger);background:#ef535026}.history-note-edit{gap:6px;display:flex}.history-note-input{flex:1;min-width:0}.history-load-more{width:100%;margin-top:10px;font-size:12px}.history-empty{color:var(--text-faint);padding:16px 4px;font-size:12px;line-height:1.4}.history-loading{color:var(--text-dim);justify-content:center;padding:24px;display:flex}.acc-row{gap:8px;display:flex}.acc-row button{border:2px solid #0000;border-radius:5px;flex:1;height:24px;padding:0;box-shadow:inset 0 0 0 1px #00000040}.acc-row button.on{box-shadow:0 0 0 1px var(--border-strong);border-color:#fff}.model-note{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);font:11px/1.5 var(--mono);color:var(--text-dim);margin:6px 0 0;padding:8px 10px}.model-note b{color:var(--text);font-weight:700}.insp-back{height:22px;font:600 10px/1 var(--font);padding:0 8px}.closet-network h4{margin:14px 0 6px}.allowance-row{grid-template-columns:minmax(0,1fr) 52px 68px 52px 24px;gap:4px;margin:4px 0;display:grid}.allowance-row input,.allowance-row select{width:100%;min-width:0}.closet-network-add{margin-top:4px}.closet-network-warnings{color:var(--warn);margin:8px 0 0;padding-left:16px;font-size:11.5px}.closet-network-spec{color:var(--text-dim);margin:6px 0 0;font-size:11.5px}.design-review h4{align-items:center;gap:6px;margin:14px 0 6px;display:flex}.design-review-count{min-width:16px;font:600 10px/1.4 var(--mono);text-align:center;color:var(--accent-ink);background:var(--warn);border-radius:999px;padding:1px 5px}.design-review-list{margin:0;padding:0;list-style:none}.design-review-item{align-items:flex-start;gap:4px;margin:3px 0;display:flex}.design-review-item.is-warn{border-left:2px solid var(--warn);padding-left:6px}.design-review-jump{text-align:left;color:var(--text);cursor:pointer;white-space:normal;background:0 0;border:none;flex:1;height:auto;padding:2px 0;font-size:11.5px;line-height:1.35}.design-review-jump:hover{color:var(--accent-hover)}.design-review-dismiss{width:18px;height:18px;color:var(--text-faint);cursor:pointer;background:0 0;border:none;flex:none;padding:0}.design-review-dismiss:hover{color:var(--text)}.design-review-clear{color:var(--text-faint);margin:0;font-size:11px}.cam-suggestion-list{flex-direction:column;gap:4px;margin:10px 0 0;padding:0;list-style:none;display:flex}.cam-suggestion-row{border:1px solid var(--border);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.cam-suggestion-id{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.cam-suggestion-conf{text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);font-size:10px}.cam-suggestion-conf.conf-high{color:var(--ok)}.cam-suggestion-conf.conf-medium{color:var(--warn)}.cam-suggestion-conf.conf-low{color:var(--text-faint)}.cam-suggestion-actions{flex-shrink:0;gap:4px;display:flex}.cam-suggestion-actions button{padding:3px 7px;font-size:11px}.cam-suggestion-model{max-width:84px;padding:2px 4px;font-size:11px}.cam-suggestion-action{max-width:104px;padding:2px 4px;font-size:11px}.cam-suggestion-mismatch{color:var(--text-faint);cursor:help;flex-shrink:0;font-size:12px}.cam-suggestion-row.is-hovered{border-color:var(--accent);background:var(--bg-elevated)}.cam-suggestion-locate{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;margin:0;padding:0}.cam-suggestion-locate:hover{text-decoration:underline}.cam-suggestion-locate:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.image-preview{flex-direction:column;gap:10px;display:flex}.preview-readout{color:var(--text-dim);align-items:center;gap:8px;font-size:12px;display:flex}.preview-readout .preview-dist,.preview-readout .preview-ppm{font-variant-numeric:tabular-nums}.preview-band{color:var(--text);border:1px solid var(--border);border-radius:999px;margin-left:auto;padding:2px 10px;font-weight:600}.preview-targets{background:var(--bg-inset);border:1px solid var(--border);border-radius:8px;justify-content:center;align-items:flex-end;gap:14px;padding:10px 6px;display:flex}.preview-target{flex-direction:column;align-items:center;gap:6px;margin:0;display:flex}.preview-canvas{image-rendering:pixelated;background:#fff;border-radius:3px;display:block}.preview-target figcaption{color:var(--text-dim);text-align:center;font-size:11px}.preview-subpixel{color:var(--plek-warn,#e0781f)}.preview-hint{margin:0}.history-head{justify-content:space-between;align-items:center;display:flex}.history-publish{height:24px;font:600 11px/1 var(--font);padding:0 10px}.history-badge.publish{color:var(--ok);border-color:#66bb6a66}.history-section-title{font:600 10px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);margin:10px 0 4px}.history-revision{margin-top:8px}.revision-row{border:1px solid var(--border);background:var(--bg-elevated);border-radius:6px}.revision-row .history-row-btn{text-align:left;background:0 0;border:0;align-items:flex-start;gap:8px;width:100%;padding:8px;display:flex}.revision-chip{font:700 11px/1.4 var(--font-mono,var(--font));color:var(--ok);border:1px solid #66bb6a66;border-radius:4px;flex:none;padding:2px 7px}.revision-by{color:var(--text-dim);text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.revision-detail{padding:0 8px 8px}.revision-changes{color:var(--text-dim);margin:4px 0 6px;padding-left:16px;font-size:11px}.revision-changes li{margin:1px 0}.revision-docs{flex-direction:column;align-items:flex-start;gap:2px;margin-bottom:4px;display:flex}.revision-gap{border-left:1px solid var(--border);margin:4px 0 4px 10px;padding-left:8px}.revision-gap-toggle{height:22px;font:500 10.5px/1 var(--font);color:var(--text-dim);background:0 0;border:0;padding:0 6px}.revision-gap-toggle:hover{color:var(--text)}.room-suggestion-list{flex-direction:column;gap:4px;margin:10px 0 0;padding:0;list-style:none;display:flex;overflow-y:auto}.room-suggestion-row{border:1px solid var(--border);border-radius:6px;align-items:center;gap:6px;padding:4px 6px;display:flex}.room-suggestion-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.room-suggestion-row button{padding:2px 8px;font-size:11px}.room-props .hint{color:var(--text-dim,#9aa0a6);margin-top:6px;font-size:11px}.room-identify-list{flex-direction:column;gap:8px;margin:10px 0 0;padding:0;list-style:none;display:flex;overflow-y:auto}.room-identify-row{border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:6px;padding:6px 8px;display:flex}.room-identify-head{align-items:center;gap:6px;display:flex}.confidence-tag{border:1px solid var(--border);color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:1px 6px;font-size:10px}.confidence-tag.low{color:var(--warn);border-color:var(--warn)}.room-identify-fields{gap:6px;display:flex}.room-identify-fields label{color:var(--text-dim);flex-direction:column;flex:1;gap:2px;font-size:11px;display:flex}.room-identify-fields input,.room-identify-fields select{width:100%;min-width:0}.room-identify-actions{justify-content:flex-end;gap:6px;display:flex}.room-identify-actions button{padding:2px 8px;font-size:11px}.room-av{margin-top:12px}.room-av-lines{flex-direction:column;gap:3px;margin:6px 0;padding:0;list-style:none;display:flex}.room-av-line{align-items:center;gap:6px;font-size:12px;display:flex}.room-av-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.room-av-qty{font-variant-numeric:tabular-nums;align-items:center;gap:4px;display:flex}.room-av-qty button{width:18px;height:18px;padding:0;font-size:12px;line-height:1}.room-av-add{gap:6px;margin:6px 0;display:flex}.room-av-add select{flex:1;min-width:0}.room-av-notes{margin:6px 0 0;padding-left:16px;list-style:outside}.dialog-backdrop{z-index:var(--z-modal);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#080a0e9e;justify-content:center;align-items:center;animation:.18s ease-out backdrop-in;display:flex;position:fixed;inset:0}@keyframes backdrop-in{0%{opacity:0}}.dialog{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);min-width:380px;max-width:520px;box-shadow:var(--shadow-pop);animation:dialog-in .2s var(--ease-pop)}.dialog-wide{min-width:460px}.dialog-large{flex-direction:column;width:90vw;max-width:none;height:85vh;max-height:none;display:flex}.dialog-large .dialog-body{flex-direction:column;flex:1;min-height:0;display:flex}.dialog-large .dialog-body p{flex:none}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px)scale(.97)}}.dialog-title,.dialog h3{font:600 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--border);margin:0;padding:14px 16px 12px}.dialog-body{background:linear-gradient(var(--bg-elevated) 30%, transparent) top / 100% 20px no-repeat local, linear-gradient(transparent, var(--bg-elevated) 70%) bottom / 100% 20px no-repeat local, linear-gradient(#00000052, transparent) top / 100% 12px no-repeat scroll, linear-gradient(transparent, #00000052) bottom / 100% 12px no-repeat scroll;max-height:min(72vh,760px);padding:16px;overflow-y:auto}.dialog-body p{margin:0 0 8px}.dialog-body input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file]){width:100%}.dialog-body .scale-row{color:var(--text-dim);align-items:center;gap:8px;display:flex}.dialog-body .scale-row input,.dialog-body .scale-row select{color:var(--text)}.dialog .error{color:var(--danger);margin:0 0 8px}.manage-row{margin:0 0 10px}.manage-danger .manage-row:last-child{margin-bottom:0}.manage-row-actions{align-items:center;gap:8px;margin-top:6px;display:flex}.manage-row span{color:var(--text-dim);font-size:13px}button.danger{color:var(--danger);background:#ef535014;border-color:#ef535066}button.danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger);background:#ef535029}.dialog-actions button.danger,.manage-row-actions button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.dialog-actions button.danger:hover:not(:disabled),.manage-row-actions button.danger:hover:not(:disabled){background:#d84a45;border-color:#d84a45}.dialog-actions{border-top:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);background:#0000001f;justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.dialog-actions .spacer{flex:1}.dialog-save-hint{color:var(--text-faint);font-size:11px}.dialog-actions .dialog-save-hint{margin-right:auto}.share-add-row{gap:8px;margin-bottom:12px;display:flex}.share-add-row input{flex:1}.share-member-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.share-member{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;display:flex}.share-member button{height:22px;padding:0 8px;font-size:11px}.share-email{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.share-role{color:var(--text-faint);font:600 9px/1.4 var(--font);text-transform:uppercase;letter-spacing:.05em}.share-empty{color:var(--text-faint);padding:8px 2px;font-size:12px}.dialog .empty{color:var(--text-faint);text-align:center;padding:12px 10px}.toast-stack{z-index:var(--z-toast);pointer-events:none;flex-direction:column;gap:8px;width:360px;display:flex;position:fixed;bottom:40px;left:50%;transform:translate(-50%)}.toast{background:var(--bg-elevated);border:1px solid var(--border-strong);border-left:3px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow-pop);animation:toast-in .18s var(--ease-pop);align-items:flex-start;gap:8px;padding:10px 8px 10px 12px;display:flex}.toast-warn{border-left-color:var(--warn)}.toast-error{border-left-color:var(--danger)}.toast-message{flex:1;font-size:12px;line-height:1.45}.toast-dismiss{pointer-events:auto;width:20px;height:20px;color:var(--text-dim);background:0 0;border:none;padding:0;font-size:13px;line-height:1}.toast-dismiss:hover:not(:disabled){color:var(--text);background:#ffffff14}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}.context-menu{z-index:var(--z-menu);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);min-width:160px;box-shadow:var(--shadow-pop);flex-direction:column;padding:4px;display:flex}.context-menu-item{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:4px;justify-content:space-between;align-items:center;gap:16px;height:auto;padding:7px 10px;font-size:12px;display:flex}.context-menu-label{flex:1}.context-menu-shortcut{font-family:var(--mono);color:var(--text-faint);flex:none;font-size:11px}.context-menu-item:hover{background:#ffffff14}.context-menu-item.danger{color:var(--danger);background:0 0;border:none}.context-menu-item.danger:hover{background:#ef53501f}.context-menu-divider{background:var(--border);height:1px;margin:4px 8px}.reports-modal{flex-direction:column;gap:12px;min-height:0;display:flex}.reports-modal .doc-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);padding:12px 14px}.reports-modal .doc-card--hero{border-color:var(--border-strong);background:var(--bg-elevated)}.reports-modal .doc-card--quiet{background:0 0}.reports-modal .doc-card__title{color:var(--text);margin:0 0 6px;font-size:13px;font-weight:600}.reports-modal .doc-card__header{justify-content:space-between;align-items:center;gap:8px;display:flex}.reports-modal .doc-card__header .doc-card__title{margin:0}.reports-modal .doc-card__actions{flex:none;gap:6px;display:flex}.reports-modal .doc-card__disclosure{margin-top:8px}.reports-modal .doc-card__disclosure summary{cursor:pointer;color:var(--text-dim);list-style:revert;font-size:12px;font-weight:600}.reports-modal .doc-card__disclosure summary:hover{color:var(--text)}.reports-modal .doc-card__disclosure[open] summary{margin-bottom:6px}.reports-modal label{color:var(--text-dim);margin:8px 0;display:block}.reports-modal .rfq-fields{margin-top:4px}.reports-modal .report-revision__preview{color:var(--text-muted,#9a9a9a);margin:4px 0 2px;font-size:12px}.reports-modal .report-toggles{flex-direction:column;gap:6px;margin:4px 0 2px;display:flex}.reports-modal .report-toggles .export-row__toggle{cursor:pointer;align-items:center;gap:6px;width:auto;margin:0;display:inline-flex}@media (prefers-reduced-motion:reduce){.dialog-backdrop,.dialog,.toast{animation:none}}.site-location{flex-direction:column;gap:6px;margin:8px 0;display:flex}.site-location__current{font:11px/1.4 var(--mono);color:var(--text-dim);word-break:break-word;margin-top:2px;display:block}.site-location__search{gap:6px;display:flex}.site-location__search input{flex:1}.site-location__error{color:var(--danger)}.site-location__results{flex-direction:column;gap:2px;display:flex}.site-location__results button{height:auto;font:11px/1.4 var(--font);text-align:left;white-space:normal;padding:6px 8px}.site-location__actions{gap:6px;display:flex}.site-location__maps-link{color:var(--accent);margin:2px 0 6px;font-size:11.5px;display:inline-block}.network-edge{flex-direction:column;gap:6px;margin:8px 0;display:flex}.network-edge__mode{border:none;gap:14px;margin:0;padding:0;display:flex}.network-edge__mode legend{font:11px/1.4 var(--font);color:var(--text-dim);padding:0}.network-edge__mode label{align-items:center;gap:4px;font-weight:400;display:inline-flex}.publish-label-cell{align-items:center;gap:12px;display:flex}.publish-label-cell>input{flex:none;width:90px}.publish-label-error{color:var(--danger);margin:-4px 0 8px 162px;font-size:11px}.publish-docs{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.publish-doc-status{color:var(--text-dim);align-items:center;gap:4px;margin-left:6px;font-size:11px;display:inline-flex}.publish-doc-status.is-done{color:var(--ok)}.publish-doc-status.is-error{color:var(--danger)}.bom-view{z-index:var(--z-chrome);background:var(--bg-app);flex-direction:column;grid-area:2/1/auto/-1;min-height:0;display:flex;position:relative}.bom-tabs{background:var(--bg-panel);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:2px;padding:0 24px;display:flex}.bom-tab{appearance:none;font:600 12.5px/1 var(--font);color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;margin-bottom:-1px;padding:10px 14px 9px}.bom-tab:hover,.bom-tab:focus,.bom-tab:active{color:var(--text);background:0 0}.bom-tab.on{color:var(--text);border-bottom-color:var(--accent)}.bom-tab .count{background:var(--bg-inset);border:1px solid var(--border);font:600 10.5px/1.2 var(--mono);color:var(--text-faint);border-radius:999px;margin-left:6px;padding:1px 6px}.bom-tab.on .count{color:var(--text-dim)}.bom-tabs-actions{align-items:center;gap:10px;margin-left:auto;padding:6px 0;display:flex}.bom-summary-hero{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:baseline;gap:16px;padding:16px 18px;display:flex}.bom-summary-hero .bom-grand-total{margin:2px 0 0;font-size:28px}.bom-summary-hero .meta{color:var(--text-faint);text-align:right;font-size:11.5px}.bom-cat-rollup{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.bom-cat-row{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) 60px 110px;align-items:center;gap:12px;padding:9px 12px;font-size:12.5px;display:grid}.bom-cat-row:first-child{border-top:none}.bom-cat-row .qty{text-align:right;font-family:var(--mono);color:var(--text-dim)}.bom-cat-row .amt{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}.bom-cat-row.total{background:var(--bg-elevated);font-weight:600}.bom-cat-row a{color:var(--accent);font-weight:600;text-decoration:none}.bom-cat-row a:hover{text-decoration:underline}.bom-header{background:var(--bg-panel);border-bottom:1px solid var(--border);z-index:10;flex:none;justify-content:space-between;align-items:center;gap:16px;padding:14px 24px;display:flex;position:sticky;top:0;box-shadow:0 1px #0000004d}.bom-header-title{flex-direction:column;gap:2px;min-width:0;display:flex}.bom-eyebrow{font:600 11px/1 var(--font);letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim)}.bom-header-title h2{font:600 18px/1.2 var(--font);color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.bom-header-actions{flex:none;align-items:center;gap:10px;display:flex}.bom-term{width:100%;color:var(--text-dim);align-items:center;gap:8px;font-size:12px;display:flex}.bom-body{flex:1;grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:24px;width:100%;max-width:1240px;margin:0 auto;padding:20px 24px 48px;display:grid;overflow-y:auto}.bom-doc{flex-direction:column;gap:20px;min-width:0;max-width:880px;display:flex}.bom-rail{flex-direction:column;gap:12px;display:flex;position:sticky;top:0}@media (width<=1000px){.bom-body{grid-template-columns:minmax(0,1fr)}.bom-rail{max-width:880px;position:static}}.bom-stat-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:0}.bom-stat-row .stat{background:var(--bg-panel)}.bom-rail-section{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;align-items:flex-start;gap:8px;padding:12px 14px;display:flex}.bom-rail-section h3,.bom-rail-section .form-hint{margin:0}.bom-rail-section select{width:100%}.bom-empty{color:var(--text-faint)}.bom-warnings{border-radius:var(--radius);background:#ffb74d1a;border:1px solid #ffb74d59;padding:12px 16px}.bom-warnings h3{font:600 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--warn);margin:0 0 6px}.bom-warnings ul{flex-direction:column;gap:4px;margin:0;padding-left:18px;display:flex}.bom-warnings li{color:var(--text);font-size:12.5px}.bom-notes{border-radius:var(--radius);background:#7890b414;border:1px solid #7890b44d;padding:12px 16px}.bom-notes h3{font:600 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin:0 0 6px}.bom-notes ul{flex-direction:column;gap:4px;margin:0;padding-left:18px;display:flex}.bom-notes li{color:var(--text);font-size:12.5px}.bom-section h3{font:600 11px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);margin:0 0 8px}.bom-section+.bom-section{padding-top:4px}.bom-totals{border-top:1px solid var(--border);margin-top:4px;padding-top:16px}.bom-totals h3{color:var(--text)}.bom-table{border-collapse:collapse;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);width:100%;font-size:12.5px;overflow:hidden}.bom-table th,.bom-table td{text-align:left;vertical-align:top;padding:7px 12px}.bom-table thead th{font:600 10.5px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);background:var(--bg-elevated);border-bottom:1px solid var(--border)}.bom-table tbody tr+tr td{border-top:1px solid var(--border)}.bom-table tbody tr:hover td{background:#356dff0d}.bom-table .mono{font-family:var(--mono);color:var(--text)}.bom-table .muted{color:var(--text-dim)}.bom-table .num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--mono);white-space:nowrap}.bom-table .bom-note{color:var(--text-faint);font-size:11.5px;font-style:italic}.bom-pricing-stamp{color:var(--text-faint);margin:0 0 4px;font-size:11.5px}.bom-table .bom-subtotal td{border-top:1px solid var(--border);background:var(--bg-elevated);color:var(--text);font-weight:600}.bom-grand-total{font:600 20px/1.3 var(--font);font-variant-numeric:tabular-nums;color:var(--text);margin:0}.bom-grand-total.muted{color:var(--text-dim);font-size:13px;font-weight:400}.bom-pricing-missing{color:var(--text-faint);margin:6px 0 0;font-size:11.5px}.bom-ccw-list{margin:0 0 10px;padding:0;font-size:12.5px;list-style:none}.bom-ccw-list li{flex-wrap:wrap;align-items:center;gap:8px;padding:4px 0;display:flex}.bom-ccw-skipped{color:var(--warn,#e0a13d);font-size:11px}.bom-custom-editor{align-items:stretch}.bom-extra-row{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding:8px 0;display:flex}.bom-extra-row:first-of-type{border-top:none;padding-top:0}.bom-extra-row input{width:100%;min-width:0}.bom-extra-detail{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 56px auto;gap:6px;display:grid}.bom-custom-add{align-self:flex-start}.bom-schedule-floor+.bom-schedule-floor{margin-top:14px}.bom-schedule-floor h4{font:600 12px/1.2 var(--font);color:var(--text-dim);margin:0 0 6px}.bom-schedule-table{font-size:12px}.bom-schedule-table th,.bom-schedule-table td{padding:6px 8px}.bom-badge-warn{color:var(--warn);border:1px solid #ffb74d66;border-radius:999px;padding:1px 6px;font-size:11px;display:inline-block}.bom-list-total{flex-direction:column;align-items:flex-end;gap:4px;margin-top:10px;display:flex}.audit-filters{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.audit-filters select,.audit-filters input{height:var(--ctrl-h);background-color:var(--bg-inset);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font:12px/1 var(--font);padding:0 26px 0 8px}.audit-filters input[type=text]{width:140px}.audit-filters input[type=date]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;width:150px}.audit-table-wrap{border:1px solid var(--border);border-radius:var(--radius);max-height:48vh;overflow:auto}.audit-table{border-collapse:collapse;width:100%;font:12px/1.5 var(--font)}.audit-table th{background:var(--bg-elevated);color:var(--text-dim);text-align:left;font:600 11px/1 var(--font);letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--border);padding:8px 10px;position:sticky;top:0}.audit-table td{border-bottom:1px solid var(--border);color:var(--text);white-space:nowrap;text-overflow:ellipsis;max-width:220px;padding:6px 10px;overflow:hidden}.audit-table .audit-action{font-family:var(--mono);color:var(--accent);font-size:11px}.audit-table .audit-project{font-family:var(--mono);max-width:110px;font-size:11px}.audit-table .audit-empty{color:var(--text-dim);text-align:center;padding:18px}.audit-load-more{margin-top:10px}.shortcut-help-grid{grid-template-columns:1fr 1fr;gap:0 24px;padding:16px 20px 20px;display:grid}@media (width<=600px){.shortcut-help-grid{grid-template-columns:1fr}}.shortcut-group h3{font:600 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin:0 0 8px}.shortcut-group dl{margin:0 0 16px}.shortcut-row{justify-content:space-between;align-items:center;padding:5px 0;display:flex}.shortcut-keys{gap:4px;display:flex}.shortcut-keys kbd{min-width:22px;height:22px;font:600 11px/22px var(--mono);color:var(--text);background:var(--bg-panel);border:1px solid var(--border);text-align:center;box-shadow:0 1px 0 var(--border);border-radius:4px;padding:0 6px;display:inline-block}.shortcut-desc{font:400 12px/1 var(--font);color:var(--text-dim);margin:0}@media (prefers-reduced-motion:reduce){.shortcut-help{animation:none}}.feedback-anchor{display:inline-flex;position:relative}.feedback-popover{z-index:var(--z-menu);width:300px;font:12px/1.4 var(--font);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-pop);flex-direction:column;gap:8px;padding:12px;display:flex}.feedback-types{gap:6px;display:flex}.feedback-type{height:22px;font:600 10.5px/1 var(--mono);color:var(--text-faint);border:1px solid var(--border);background:0 0;border-radius:999px;padding:0 10px}.feedback-type:hover{color:var(--text);border-color:var(--border-strong)}.feedback-type.on{color:var(--accent-hover);background:#356dff24;border-color:#356dff8c}.feedback-text{resize:vertical;min-height:64px;font:12px/1.45 var(--font);color:var(--text);background:var(--bg-inset);border:1px solid var(--border);border-radius:6px;padding:8px}.feedback-text:focus{border-color:var(--accent);outline:none}.feedback-send{height:var(--ctrl-h);font:600 11.5px/1 var(--font);color:var(--accent-ink);background:var(--accent);border:none;border-radius:6px;align-self:flex-end;padding:0 14px}.feedback-send:hover:not(:disabled){background:var(--accent-hover)}.feedback-send:disabled{opacity:.45}
