:root{font-family:var(--ap-font-ui);font-size:var(--ap-fs);color:var(--ap-text);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1,"cv11" 1;color-scheme:var(--ap-color-scheme)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--ap-canvas)}#root{color:var(--ap-text);background:var(--ap-canvas);font-family:var(--ap-font-ui);font-size:var(--ap-fs);color-scheme:dark}::selection{background:var(--ap-ember-soft)}.code,.num,td.num,th.num,input.num,input[inputmode=decimal],.kv b,.specs dd,.stats b,.badge,.st,.hl-ticks span,.probe-total,.readout,.cursor-readout,.scale-chip,.statusbar span:not(.hint),.mono,kbd{font-family:var(--ap-font-mono);font-variant-numeric:tabular-nums}button,select,input,textarea{font:inherit;color:inherit}button{border:1px solid var(--ap-border);background:var(--ap-btn-bg, var(--ap-raised));border-radius:var(--ap-r-md);padding:4px 10px;cursor:pointer;white-space:nowrap;color:var(--ap-text)}button:hover:not(:disabled){border-color:var(--ap-border-strong);background:var(--ap-btn-hover, var(--ap-hover))}button:disabled{opacity:.4;cursor:default}button.active{background:var(--ap-ember-soft);border-color:var(--ap-ember);color:var(--ap-text-strong);box-shadow:inset 0 -2px 0 var(--ap-ember)}.toolbar .group:not(.tools) button.active,.toolbar .units-toggle button.active{background:var(--ap-hover);border-color:var(--ap-border-strong);color:var(--ap-text-strong);box-shadow:inset 0 -2px 0 var(--ap-text2)}button.primary{background:var(--ap-ember-fill);border-color:var(--ap-ember-fill);color:var(--ap-on-ember);font-weight:600}button.primary:hover:not(:disabled){border-color:var(--ap-ember)}button.danger{color:var(--ap-error)}button.small{padding:1px 8px;font-size:12px}button.icon{border:none;background:none;padding:0 4px;color:var(--ap-text2)}button.icon:hover:not(:disabled){background:none;color:var(--ap-text)}button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:1px solid var(--ap-ember);outline-offset:1px}kbd{font-size:10px;color:var(--ap-text2);border:1px solid var(--ap-border);border-radius:var(--ap-r-sm);padding:0 3px;margin-left:2px}select,input,textarea{border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:3px 6px;background:var(--ap-canvas);color:var(--ap-text)}input::placeholder,textarea::placeholder{color:var(--ap-text2);opacity:.8}input:focus,select:focus,textarea:focus{border-color:var(--ap-ember);outline:none}input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--ap-ember)}.app{display:flex;flex-direction:column;height:100%}.toolbar{display:flex;align-items:center;gap:12px;padding:6px 10px;background:var(--ap-panel);border-bottom:1px solid var(--ap-border);flex-wrap:wrap}.toolbar .brand{font-weight:700;letter-spacing:.02em;color:var(--ap-text-strong)}.toolbar .project-name{width:200px;font-weight:600}.toolbar .group{display:flex;gap:4px;align-items:center}.main{flex:1;display:flex;min-height:0}.center{flex:1;position:relative;min-width:0}.sidebar{width:250px;background:var(--ap-panel);overflow-y:auto}.sidebar.left{border-right:1px solid var(--ap-border)}.sidebar.right{width:330px;border-left:1px solid var(--ap-border)}.sidebar section{padding:10px 12px;border-bottom:1px solid var(--ap-border)}.sidebar h4{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ap-text2);font-weight:600}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;gap:6px}.section-head h4{margin:0}.bulk{font-size:12px;color:var(--ap-text2)}.list{list-style:none;margin:0;padding:0}.list li{display:flex;gap:8px;align-items:center;padding:4px 6px;border-radius:var(--ap-r-sm);cursor:pointer}.list li:hover{background:var(--ap-hover)}.list li.active{background:var(--ap-raised);box-shadow:inset 2px 0 0 var(--ap-ember)}.list li.active .code{color:var(--ap-text-strong)}.grow{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code{font-weight:600;color:var(--ap-text-strong)}.link{cursor:pointer;color:var(--ap-text);text-decoration:underline;text-decoration-color:var(--ap-text2)}.muted{color:var(--ap-text2)}.badge.warn{background:var(--ap-warn-soft);color:var(--ap-warn);border-radius:var(--ap-r-sm);padding:0 6px;font-weight:700}.warnings{list-style:none;padding:0;margin:0}.warnings li{background:var(--ap-warn-soft);color:var(--ap-warn);border-left:2px solid var(--ap-warn);border-radius:var(--ap-r-sm);padding:6px 8px;margin-bottom:6px;cursor:pointer;line-height:1.35}.warn-text{color:var(--ap-warn)}.error-text{color:var(--ap-error);font-weight:600}.field{display:flex;flex-direction:column;gap:3px;margin-bottom:8px;color:var(--ap-text2)}.field input,.field select{color:var(--ap-text)}.kv{display:flex;justify-content:space-between;gap:10px;margin-bottom:5px}.kv span{color:var(--ap-text2)}.kv b{color:var(--ap-text-strong);font-weight:500}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:190px}.tbl{width:100%;border-collapse:collapse;font-size:var(--ap-fs-data)}.tbl th{text-align:left;color:var(--ap-text2);font-weight:500;border-bottom:1px solid var(--ap-border-strong);padding:3px 4px}.tbl td{padding:3px 4px;border-bottom:1px solid var(--ap-border)}.tbl tr.total td{font-weight:600;border-bottom:none}.tbl.surfaces select{font-size:12px;padding:1px 2px;max-width:105px}.canvas-wrap{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:var(--ap-canvas);touch-action:none;-webkit-user-select:none;user-select:none}.canvas-wrap svg{display:block}.canvas-wrap.drawn{background:var(--ap-d-sheet)}.sheet-grid-line{fill:none;stroke:var(--ap-d-sheet-grid)}.layer-bg image,.underlay-img{filter:var(--ap-underlay-filter)}.layer-bg image{mix-blend-mode:var(--ap-underlay-blend)}.zone{fill:var(--ap-d-zone-fill);stroke:var(--ap-d-zone-line);stroke-width:1}.zone.sel{fill:var(--ap-d-zone-fill-sel);stroke:var(--ap-ember);stroke-width:1.5}.surface-halo{stroke:var(--ap-ember-line);stroke-width:10;stroke-linecap:round}.calib-line{stroke:var(--ap-ember);stroke-width:1.5;stroke-dasharray:8 4}.draft{fill:none;stroke:var(--ap-ember);stroke-width:2}.draft.calib{stroke:var(--ap-ember)}.draft-close{stroke:var(--ap-ember);stroke-width:1;stroke-dasharray:4 4;opacity:.6}.overlay text{font-size:11px;pointer-events:none}.zone-label text{text-anchor:middle;paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:5px;stroke-linejoin:round}.zone-code{font-weight:700;font-size:13px!important;fill:var(--ap-d-label);font-family:var(--ap-font-mono)}.zone-name{fill:var(--ap-d-label);font-family:var(--ap-font-ui);font-weight:500}.dim{text-anchor:middle;fill:var(--ap-d-label);paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:5px;stroke-linejoin:round;font-weight:600;font-family:var(--ap-font-mono);font-size:10px!important}.dim.door{fill:var(--ap-d-door)}.calib-text{fill:var(--ap-ember);text-anchor:middle;paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:3px;font-family:var(--ap-font-mono)}.vertex{fill:var(--ap-d-sheet);stroke:var(--ap-ember);stroke-width:1.5;pointer-events:none}.draft-pt{fill:var(--ap-ember);pointer-events:none}.cursor-pt{fill:none;stroke:var(--ap-ember);stroke-width:1.5;pointer-events:none}.readout-bg{fill:var(--ap-panel);stroke:var(--ap-border-strong);stroke-width:1;opacity:.95}.readout-bg.bad{fill:var(--ap-error)}.readout{fill:var(--ap-text-strong);font-size:12px!important}.cursor-readout{position:absolute;right:8px;top:8px;background:var(--ap-panel);border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:2px 8px;font-size:11px;pointer-events:none;white-space:pre;color:var(--ap-text)}.legend{position:absolute;left:8px;bottom:8px;display:flex;gap:10px;flex-wrap:wrap;background:var(--ap-panel);border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:4px 8px;font-size:11px;pointer-events:none;max-width:calc(100% - 16px);color:var(--ap-text2)}.legend span{display:inline-flex;align-items:center;gap:4px}.legend i{display:inline-block;width:14px;height:4px;border-radius:0}.legend i.dash{height:0;border-top:3px dashed;background:none}.legend i.dash.closed{border-top-style:solid}.legend i.door{border-color:var(--ap-d-door)}.legend i.window{border-color:var(--ap-d-window);border-top-style:dotted}.legend i.opening{border-color:var(--ap-d-opening);border-top-style:dotted}.statusbar{display:flex;gap:18px;padding:4px 10px;background:var(--ap-panel);border-top:1px solid var(--ap-border);font-size:12px;color:var(--ap-text2)}.statusbar .hint{flex:1;color:var(--ap-text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--ap-font-ui)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--ap-scrim);display:grid;place-items:center;z-index:10}.modal{background:var(--ap-raised);border:1px solid var(--ap-border-strong);border-radius:var(--ap-r-lg);padding:16px 18px;width:420px}.modal h3{margin:0 0 12px;font-size:15px;color:var(--ap-text-strong)}.modal label{display:flex;flex-direction:column;gap:4px;color:var(--ap-text2)}.modal input{font-size:14px;padding:6px 8px;color:var(--ap-text)}.modal .hint{color:var(--ap-text2);font-size:12px;line-height:1.4}.modal .error{color:var(--ap-error);font-size:12px}.modal .error:before,.lib-item .errors li:before{content:"✕ ";font-weight:700}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.scale-chip{font-weight:600}.scale-chip.warn{color:var(--ap-warn)}.muted.small{font-size:11px}.modal .message{margin:0 0 8px;line-height:1.45}button.primary.danger-fill{background:var(--ap-error);border-color:var(--ap-error);color:var(--ap-canvas)}@media(max-width:900px){.main{flex-direction:column;overflow-y:auto}.center{min-height:60vh}.sidebar,.sidebar.right{width:100%;max-height:none;border:none;border-top:1px solid var(--ap-border);overflow:visible}.toolbar .project-name{width:100%}}.snap-grid line{stroke:var(--ap-d-grid-major);stroke-width:1;vector-effect:non-scaling-stroke}.ceiling-grid line{stroke:var(--ap-d-ceiling-grid);stroke-width:1;vector-effect:non-scaling-stroke}.pl-sym circle,.pl-sym rect{fill:var(--ap-d-speaker-fill);stroke:var(--ap-d-speaker-line);stroke-width:1.4}.pl-sym line{stroke:var(--ap-d-speaker-line);stroke-width:1.2}.pl-sym .aim{stroke:var(--ap-d-speaker-line);stroke-width:1.6}.pl-sym .aim-head{fill:var(--ap-d-speaker-line)}.pl-sym.powered circle{stroke:var(--ap-d-powered)}.pl-sym.ghost{opacity:.45;pointer-events:none}.pl-sym.ghost circle,.pl-sym.ghost rect{stroke-dasharray:3 2}.pl.sel .pl-sym circle,.pl.sel .pl-sym rect{fill:var(--ap-d-speaker-fill);stroke:var(--ap-d-speaker-line)}.pl-ring{fill:none;stroke:var(--ap-ember);stroke-width:1.8}.pl-ring-halo{fill:none;stroke:var(--ap-d-sheet);stroke-width:4;opacity:.85}.pl-tag{font-size:10.5px!important;text-anchor:middle;font-family:var(--ap-font-mono);font-weight:600;fill:var(--ap-d-label);paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:5px;stroke-linejoin:round}.pl.sel .pl-tag{fill:var(--ap-ember)}.pl-tag.unzoned{fill:var(--ap-error)}.rotate-handle line{stroke:var(--ap-ember);stroke-width:1;stroke-dasharray:2 2}.rotate-handle circle{fill:var(--ap-d-sheet);stroke:var(--ap-ember);stroke-width:2;cursor:grab}.placements{pointer-events:none}.guide{stroke:var(--ap-ember);stroke-width:1;stroke-dasharray:5 4;opacity:.8}.marquee{fill:var(--ap-ember-soft);stroke:var(--ap-ember);stroke-width:1;stroke-dasharray:4 3}.toolbar .snap label{display:inline-flex;align-items:center;gap:4px;color:var(--ap-text2)}input.num{width:100%}.toolbar input.num{width:58px}.badge{background:var(--ap-raised);color:var(--ap-text2);border:1px solid var(--ap-border);border-radius:var(--ap-r-sm);padding:0 6px;font-size:11px}.list.dense li{padding:2px 6px}.list.catalog li.rack{cursor:default}.list.catalog li.rack .grow:after{content:" · rack gear";color:var(--ap-text2);font-size:11px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}.btn-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.check-row{display:flex;align-items:center;gap:6px;margin:4px 0 8px}.seg{display:flex;gap:0;margin-bottom:8px}.seg button{border-radius:0;flex:1}.seg button+button{border-left-width:0}.seg button.active+button{border-left-width:1px;border-left-color:var(--ap-ember)}.seg button:first-child{border-radius:var(--ap-r-md) 0 0 var(--ap-r-md)}.seg button:last-child{border-radius:0 var(--ap-r-md) var(--ap-r-md) 0}.sidebar h5{margin:10px 0 6px;font-size:12px;color:var(--ap-text-strong)}.calc{margin-top:14px;padding-top:8px;border-top:1px dashed var(--ap-border)}.calc-out{background:var(--ap-canvas);border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:8px;display:flex;flex-direction:column;gap:2px}.calc-out .big b{font-size:15px;color:var(--ap-text-strong);font-family:var(--ap-font-mono)}.calc-out button{margin-top:6px}.device-card{font-size:12px}.dc-head{display:flex;justify-content:space-between;align-items:center;gap:6px}.device-card .flag{background:var(--ap-warn-soft);color:var(--ap-warn);border-left:2px solid var(--ap-warn);border-radius:var(--ap-r-sm);padding:4px 6px;margin:6px 0;line-height:1.35}.device-card .note{color:var(--ap-text2);margin:4px 0;line-height:1.35}.specs{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;margin:8px 0}.specs dt{color:var(--ap-text2)}.specs dd{margin:0}.modal.wide-modal{width:min(860px,calc(100vw - 32px));max-height:calc(100vh - 40px);overflow-y:auto}.modal h3 .small{font-weight:400}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 12px}.form-grid h5{margin:8px 0 0;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ap-text2)}.form-grid .wide{grid-column:1 / -1}.f{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--ap-text2);min-width:0}.f input,.f select{color:var(--ap-text);width:100%}.f.bad input{border-color:var(--ap-error);border-style:dashed}.f.bad>span:after{content:" — ✕ not a number";color:var(--ap-error);font-weight:600}.f.check{flex-direction:row;align-items:center;gap:6px;align-self:end}.f.grow{flex:1}.f.narrow{flex:0 0 120px}.rating-list{display:flex;flex-direction:column;gap:4px}.rl-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600}.rl-row{display:flex;gap:8px;align-items:end}.rl-row>.f{flex:1}.modal-actions .grow{flex:1}@media(max-width:700px){.form-grid{grid-template-columns:1fr 1fr}.rl-row{flex-wrap:wrap}}.flag-banner{background:var(--ap-warn-soft);color:var(--ap-warn);border-left:2px solid var(--ap-warn);border-radius:var(--ap-r-sm);padding:6px 8px;margin:0 0 8px;line-height:1.4}.units-toggle{margin-bottom:0}.units-toggle button{padding:3px 9px;font-weight:600}input.num.bad{border-color:var(--ap-error);border-style:dashed}.close-target circle{fill:none;stroke:var(--ap-ember);stroke-width:2.5}.close-target circle.inner{fill:var(--ap-ember);stroke:var(--ap-d-sheet);stroke-width:1.5}.draft.rect{fill:var(--ap-ember-soft);stroke-dasharray:6 3}.pl-sym .pattern{fill:none;stroke:var(--ap-d-pattern);stroke-width:1;stroke-dasharray:3 2}.pl-sym.unset circle,.pl-sym.unset rect{stroke-dasharray:2.5 2;stroke:var(--ap-text2)}.rotate-handle rect{fill:var(--ap-d-sheet);stroke:var(--ap-ember);stroke-width:2}.rotate-handle.pattern line{stroke:var(--ap-ember)}.positions{pointer-events:none}.pos .chord,.pos .rungs line{stroke:var(--ap-d-structure);stroke-width:1.2}.pos.bematrix-run .frame{stroke:var(--ap-d-frame);stroke-width:5;stroke-dasharray:10 3;stroke-linecap:butt}.pos .pos-halo{stroke:var(--ap-ember-line);stroke-width:14;stroke-linecap:round}.pos-tag{font-size:10px!important;text-anchor:middle;font-family:var(--ap-font-mono);font-weight:700;fill:var(--ap-d-structure);paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:3px}.pos.bematrix-run .pos-tag{fill:var(--ap-d-frame)}.pos-end{fill:var(--ap-d-sheet);stroke:var(--ap-ember);stroke-width:1.5}.draw-grid line{vector-effect:non-scaling-stroke;stroke-width:1}.draw-grid line.major{stroke:var(--ap-d-grid-major)}.draw-grid line.major.heavy{stroke:var(--ap-d-grid-heavy)}.draw-grid line.fine{stroke:var(--ap-d-grid-fine)}.draw-grid line.axis{stroke:var(--ap-d-grid-axis);stroke-dasharray:4 4}.badge.drawn{color:var(--ap-text)}.btn-row.tight{gap:4px;margin-top:0}.plan-page{fill:var(--ap-d-page);stroke:var(--ap-d-page-line)}.sheet-outline polygon{fill:none;stroke:var(--ap-d-label2);stroke-width:1.2;stroke-dasharray:6 4}.sheet-outline.sel polygon{stroke:var(--ap-ember);stroke-width:2;stroke-dasharray:none}.sheet-outline text{fill:var(--ap-d-label);paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:4px;stroke-linejoin:round;font-family:var(--ap-font-mono);font-weight:600}.align-mark circle{fill:none;stroke:var(--ap-ember);stroke-width:2}.align-mark line{stroke:var(--ap-ember);stroke-width:1.5}.align-mark.t circle{stroke:var(--ap-ok)}.align-mark.t line{stroke:var(--ap-ok)}.sheet-list li.active{background:var(--ap-raised);outline:1px solid var(--ap-ember)}.sheet-msg{color:var(--ap-text);margin:6px 0}.sheet-edit{margin:6px 0;padding:6px 8px;border:1px solid var(--ap-border);border-radius:var(--ap-r-md)}.small-btns button{padding:1px 6px}.canvas-wrap>svg,.canvas-wrap>canvas{position:absolute;left:0;top:0}.layer-bg,.layer-heat{pointer-events:none}.zone.over-heat{fill:transparent}.heat-legend{position:absolute;right:8px;top:40px;width:210px;background:var(--ap-panel);border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:8px 10px;font-size:11px;pointer-events:none}.hl-title{font-weight:600;font-size:12px;margin-bottom:6px;color:var(--ap-text-strong)}.hl-scale{display:flex;gap:6px;margin:4px 0 8px}.hl-bar{width:16px;border-radius:var(--ap-r-sm);border:1px solid var(--ap-border-strong)}.hl-ticks{position:relative;flex:1}.hl-ticks span{position:absolute;left:0;transform:translateY(50%);white-space:nowrap}.hl-ticks span:before{content:"";display:inline-block;width:5px;border-top:1px solid var(--ap-text2);vertical-align:middle;margin-right:3px}.hl-meta{color:var(--ap-text2);line-height:1.4}.hl-label{margin-top:6px;font-weight:600;color:var(--ap-warn);line-height:1.3}.hl-empty{color:var(--ap-text2);margin:4px 0 8px}.planning-label{margin:8px 0 0;font-weight:600;color:var(--ap-warn);font-size:12px;line-height:1.35}.stats .kv.big b{font-size:15px}.small{font-size:12px}.excluded,.basis-notes{font-size:12px;margin-top:6px}.excluded ul,.basis-notes ul,.model-notes ul{margin:4px 0 0;padding-left:16px;line-height:1.4}.excluded b{color:var(--ap-warn)}.basis-notes li{color:var(--ap-text)}.model-notes{font-size:12px;margin:6px 0 8px;color:var(--ap-text)}.model-notes summary{cursor:pointer;color:var(--ap-text)}.tbl.coverage{margin-top:8px}.tbl tr.link-row{cursor:pointer}.tbl tr.link-row:hover td{background:var(--ap-hover)}.racks{pointer-events:none}.rack rect{fill:var(--ap-d-rack);stroke:var(--ap-d-speaker-line);stroke-width:1.4}.rack line{stroke:var(--ap-text2);stroke-width:1.2}.rack.sel rect{stroke:var(--ap-ember);stroke-width:2}.rack text{font-size:10px!important;text-anchor:middle;font-family:var(--ap-font-mono);font-weight:700;fill:var(--ap-d-label);paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:3px}.rack.sel text{fill:var(--ap-ember)}.docs-backdrop{place-items:stretch;padding:24px}.docs{background:var(--ap-raised);border:1px solid var(--ap-border-strong);border-radius:var(--ap-r-lg);display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 48px)}.docs-head{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--ap-border);flex-wrap:wrap}.docs-head h2{margin:0;font-size:15px;color:var(--ap-text-strong);font-weight:600}.docs-head .seg{margin:0}.docs-body{overflow:auto;padding:8px 16px 24px}.docs-body h3{font-size:13px;margin:16px 0 8px;color:var(--ap-text-strong)}.docs-body h4{font-size:13px;margin:12px 0 4px;color:var(--ap-text-strong)}.cable-settings{background:var(--ap-canvas);border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:4px 12px 10px}.cable-settings .formula{line-height:1.5;margin:4px 0 8px}.settings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:0 12px}.tbl.sched td,.tbl.sched th{white-space:nowrap}.tbl.sched td.small{white-space:normal;min-width:260px}.tbl.sched .num{text-align:right}.tbl.sched .strong,.tbl.equip .strong{font-weight:700;color:var(--ap-text-strong)}.tbl.sched tr.flagged td{background:var(--ap-warn-soft)}.tbl.sched tr{cursor:default}.tbl.sched .why-toggle{color:var(--ap-text2);cursor:pointer;white-space:normal;font-size:11px;text-decoration:underline}.tbl.sched tr.why td{background:var(--ap-canvas);white-space:normal;font-size:12px;line-height:1.5}.flag-box{background:var(--ap-warn-soft);border-left:2px solid var(--ap-warn);border-radius:var(--ap-r-sm);padding:4px 12px;color:var(--ap-warn);margin-top:12px}.tap-group{break-inside:avoid}.chk{width:24px;text-align:center}.chk .box{display:inline-block;width:12px;height:12px;border:1.5px solid var(--ap-text2);border-radius:var(--ap-r-sm)}.equip-cols{display:grid;grid-template-columns:1fr 1fr;gap:24px}.tbl.equip{width:auto}.tbl.equip td{padding:2px 8px 2px 0;border:none}.cable-fields{margin-top:6px;padding-top:6px;border-top:1px dashed var(--ap-border)}.cable-fields .wide{grid-column:1 / -1;margin:0}.amp-flag circle{fill:var(--ap-error);stroke:var(--ap-d-sheet);stroke-width:1.5}.amp-flag text{fill:var(--ap-d-sheet);font:700 10px var(--ap-font-mono)!important;text-anchor:middle}.ok-text{color:var(--ap-ok)}.builder{max-width:1500px;width:100%;margin:0 auto}.builder-body{display:grid;grid-template-columns:210px minmax(380px,1fr) minmax(520px,1.15fr);gap:16px;padding:12px 16px;overflow:auto;min-height:0}.gear-palette{display:flex;flex-direction:column;gap:4px}.gear-palette h4{margin:6px 0 2px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ap-text2)}.pal-item{border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:5px 8px;cursor:grab;display:flex;flex-direction:column;background:var(--ap-raised)}.pal-item:hover{border-color:var(--ap-border-strong)}.pal-item.armed{border-color:var(--ap-ember);background:var(--ap-ember-soft)}.pal-item.disabled{opacity:.5;cursor:not-allowed}.builder-elev{display:flex;flex-direction:column;align-items:center;gap:6px}.unit-sel{font-size:12px}.builder-side{display:flex;flex-direction:column;gap:12px;font-size:12px;min-width:0}.builder-side h4{margin:0 0 6px;font-size:13px;color:var(--ap-text-strong)}.amp-check{border-radius:var(--ap-r-md);padding:8px 10px;border:1px solid var(--ap-border)}.amp-check.ok{border-color:var(--ap-ok);background:var(--ap-ok-soft)}.amp-check.bad{border-color:var(--ap-error);background:var(--ap-error-soft)}.amp-check .sf{color:var(--ap-error);margin:4px 0}.amp-row{margin:3px 0}.totals .footnote,.footnote{color:var(--ap-text2);font-size:11px;margin:4px 0}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 8px;margin-top:6px}.tbl.power .num{text-align:right;white-space:nowrap}.tbl.power td.code{white-space:nowrap}.nd{color:var(--ap-warn);font-style:italic}.prov sup{font-size:9px;margin-left:1px;color:var(--ap-text2)}.prov-user{color:var(--ap-text-strong);font-weight:600}.tbl.power .total-row td{border-top:2px solid var(--ap-border-strong)}.flagtxt{color:var(--ap-error)}.power-data{margin-top:8px;padding:8px 10px;border:1px solid var(--ap-border);border-radius:var(--ap-r-md);background:var(--ap-raised);max-width:560px;text-align:left}.power-data .pd-head,.amp-channels .pd-head{margin-bottom:4px}.amp-channels{margin-top:8px;padding:8px 10px;border:1px solid var(--ap-border);border-radius:var(--ap-r-md);background:var(--ap-raised);max-width:560px;text-align:left}.amp-channels select{max-width:150px}.ch-sum{font-size:11px;color:var(--ap-text2);font-family:var(--ap-font-mono)}.power-data .pd-now{margin:6px 0 2px;color:var(--ap-text)}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 8px}.grid4>*{min-width:0}.internal-runs{align-self:stretch;margin-top:10px;padding:8px 10px;border:1px solid var(--ap-border);border-radius:var(--ap-r-md);font-size:12px}.internal-runs h4{margin:0 0 4px}.ir-add{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 8px;align-items:end}.ir-add>*{min-width:0}.ir-tbl td{vertical-align:middle}.inline-field{display:inline-flex;gap:6px;align-items:center;font-size:12px;color:var(--ap-text2)}.elev-svg .el-u{font:10px var(--ap-font-mono);fill:var(--ap-text2)}.elev-svg .el-frame{fill:var(--ap-raised);stroke:var(--ap-d-speaker-line);stroke-width:1.2}.elev-svg .el-rail{fill:var(--ap-text2)}.elev-svg .el-empty{fill:var(--ap-canvas);stroke:var(--ap-border-strong);stroke-dasharray:3 3}.elev-svg .el-slot{fill:transparent;cursor:copy}.elev-svg .el-slot:hover{fill:var(--ap-ember-soft)}.elev-svg .el-unit{cursor:grab}.elev-svg .el-unit rect{fill:var(--ap-canvas);stroke:var(--ap-d-speaker-line)}.elev-svg .el-unit.blank rect,.elev-svg .el-unit.vent rect{fill:var(--ap-raised);stroke:var(--ap-text2)}.elev-svg .el-unit.flag rect{stroke:var(--ap-error);stroke-width:3}.elev-svg .el-unit.sel rect{stroke:var(--ap-ember);stroke-width:3}.elev-svg .el-screw{fill:var(--ap-text2)}.elev-svg .el-slotline{stroke:var(--ap-text2);stroke-width:2}.elev-svg .el-name{font:600 11px var(--ap-font-ui);fill:var(--ap-text);pointer-events:none}.elev-svg .el-unit.blank .el-name,.elev-svg .el-unit.vent .el-name{fill:var(--ap-text2)}.elev-svg .el-name-1u{font-size:10px}.elev-svg .el-tag{font:700 10px var(--ap-font-mono);fill:var(--ap-text-strong);pointer-events:none}.elev-svg .el-foot{font:600 11px var(--ap-font-mono);fill:var(--ap-text)}.elev-svg .el-preview{pointer-events:none}.elev-svg .el-preview.ok{fill:var(--ap-ok-soft);stroke:var(--ap-ok);stroke-width:2}.elev-svg .el-preview-tag{fill:var(--ap-error);font:700 11px var(--ap-font-ui);pointer-events:none}.elev-svg .el-preview.bad{fill:var(--ap-error-soft);stroke:var(--ap-error);stroke-width:2}.docs.exports{max-width:1400px;width:100%;margin:0 auto}.exp-intro{display:flex;flex-direction:column;gap:6px;margin:8px 0 12px}.exp-intro p{margin:0;line-height:1.5}.field.inline{display:inline-flex;flex-direction:row;align-items:center;gap:6px}.lbl-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.st{display:inline-block;border-radius:var(--ap-r-sm);padding:1px 7px;font-size:11px;font-weight:700;white-space:nowrap;border:1px solid transparent}.st.never{background:var(--ap-raised);color:var(--ap-text2);border-color:var(--ap-border)}.st.ok{background:var(--ap-ok-soft);color:var(--ap-ok)}.st.stale:before,.badge.stale:before{content:"⚠ "}.st.stale{background:var(--ap-error-soft);color:var(--ap-error);border-color:var(--ap-error);letter-spacing:.02em}.badge.stale{background:var(--ap-error-soft);color:var(--ap-error);border-color:var(--ap-error);margin-left:6px;font-weight:700}.exp-table td{vertical-align:top}.exp-table .actions{white-space:nowrap;display:flex;gap:4px}.exp-table tr.stale-row td{background:var(--ap-error-soft)}.exp-table ul.issues{margin:0;padding-left:16px;color:var(--ap-warn)}.package{margin-top:16px;border-top:1px solid var(--ap-border)}.preview-frame{width:100%;height:calc(100vh - 230px);border:1px solid var(--ap-border);border-radius:var(--ap-r-md);background:var(--ap-canvas)}.lbl-section{margin:14px 0}.lbl-section h3{margin:0}.lbl-section .kicker{text-transform:uppercase;font-size:10px;background:var(--ap-raised);color:var(--ap-text);border:1px solid var(--ap-border);padding:1px 6px;border-radius:var(--ap-r-sm);vertical-align:2px}.lbl-grid{display:flex;flex-wrap:wrap;gap:10px}.lbl-card{border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:6px;background:var(--ap-raised)}.lbl-card.missing{border-color:var(--ap-error);background:var(--ap-error-soft)}.lbl-card.changed{outline:2px solid var(--ap-warn)}.lbl-meta{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--ap-text2);margin-bottom:4px}.lbl-paper{background:var(--ap-p-paper);color:var(--ap-p-ink);display:inline-block;outline:1px solid var(--ap-border-strong)}.lbl-flag .wrapzone{background:repeating-linear-gradient(90deg,var(--ap-p-paper) 0 2mm,var(--ap-p-fill-light) 2mm 4mm);border-left:.2mm dashed var(--ap-p-rule);border-right:.2mm dashed var(--ap-p-rule)}.test-row{display:flex;justify-content:space-between;gap:16px;align-items:center;border-bottom:1px solid var(--ap-border);padding:8px 0}.calib{display:flex;gap:24px;align-items:flex-start}.card-box{border:2px solid var(--ap-text);border-radius:3.18mm;display:grid;place-items:center;color:var(--ap-text);font-weight:700;background:var(--ap-raised)}.ruler-strip{position:relative;width:100mm;height:8mm;border-top:1px solid var(--ap-text);margin-top:12px;background:repeating-linear-gradient(90deg,var(--ap-text) 0 .25mm,transparent .25mm 10mm) top left / 100.25mm 4mm no-repeat}.ruler-strip span{position:absolute;top:4mm;transform:translate(-50%);font-size:10px;font-family:var(--ap-font-mono)}.modal p.message{white-space:pre-wrap;max-height:50vh;overflow:auto}.choices{display:flex;flex-direction:column;gap:6px;margin:8px 0}.choices button{text-align:left;white-space:normal;padding:6px 10px}.choices button .why{display:block;font-size:11px;color:var(--ap-text2)}.routes .wire{fill:none;pointer-events:none;stroke-linejoin:round;stroke-linecap:round}.routes .wire.corridor,.routes .wire.direct{stroke:var(--ap-d-route);stroke-width:1.4;stroke-dasharray:5 4}.routes .wire.direct{stroke:var(--ap-warn)}.routes .wire.drawn{stroke:var(--ap-d-route-drawn);stroke-width:2.2}.routes .wire.power{stroke:var(--ap-d-power-run)}.routes .wire.chain{stroke-width:2;stroke-dasharray:none}.routes .wire.review{stroke:var(--ap-error);stroke-width:2;stroke-dasharray:7 4}.routes .wire.sel{stroke-width:3;stroke:var(--ap-ember)}.routes .wire.review.sel{stroke:var(--ap-error)}.routes .trunk{fill:none;pointer-events:none;stroke:var(--ap-d-trunk);stroke-linejoin:round;stroke-linecap:round;opacity:.9}.routes .chain-dots circle{fill:var(--ap-d-route);stroke:var(--ap-d-halo);stroke-width:1.5;pointer-events:none}.routes .trunk-badge{cursor:pointer}.routes .trunk-badge rect{fill:var(--ap-d-halo);stroke:var(--ap-d-trunk);stroke-width:1.2}.routes .trunk-badge.open rect{stroke:var(--ap-ember);stroke-width:2}.routes .trunk-badge text{fill:var(--ap-text-strong);font:700 11px var(--ap-font-mono);text-anchor:middle;pointer-events:none}.routes .trunk-pop rect{fill:var(--ap-raised);stroke:var(--ap-border-strong)}.routes .trunk-pop text{fill:var(--ap-text-strong);font:12px var(--ap-font-mono)}.routes .trunk-pop text.head{font:600 12px var(--ap-font-ui)}.routes .wire-pen circle{fill:none;stroke:var(--ap-error);stroke-width:2}.routes .wire-pen text{fill:var(--ap-error);font:600 10px var(--ap-font-ui);text-anchor:middle;paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:3px}.routes .wire-review-tag{fill:var(--ap-error);font:600 10px var(--ap-font-ui);text-anchor:middle;paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:3px;pointer-events:none}.routes .dim,.placements .pl.dim{opacity:.1}.route-draft{fill:none;stroke:var(--ap-ember);stroke-width:2;stroke-dasharray:6 3;pointer-events:none}.route-target{fill:none;stroke:var(--ap-ember);stroke-width:2;pointer-events:none}.link-draft{stroke:var(--ap-ember);stroke-width:2;stroke-dasharray:5 3;pointer-events:none}.ckt-row{display:flex;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid var(--ap-border)}.ckt-row select{width:auto}.ckt-block{margin:10px 0 14px}.ckt-block h4{margin:0 0 2px;font-size:13px;color:var(--ap-text-strong);font-family:var(--ap-font-mono);font-weight:600}.ckt-block .wiring{margin:0 0 4px;font-family:var(--ap-font-mono)}.run-line{border-top:1px dashed var(--ap-border);padding-top:4px;margin-top:2px}.run-line .route-btns{display:inline-flex;gap:4px;margin-left:4px}.badge.routed{color:var(--ap-text)}button.link{border:none;background:none;padding:0;color:var(--ap-text);cursor:pointer;text-decoration:underline;text-decoration-color:var(--ap-text2)}.formula{line-height:1.5}.model-panel{font-size:12px;margin:6px 0 8px;color:var(--ap-text)}.model-panel summary{cursor:pointer;color:var(--ap-text);font-weight:600}.model-panel h5{margin:10px 0 4px;font-size:12px;color:var(--ap-text-strong)}.model-panel dl.rules{margin:6px 0}.model-panel dl.rules div{margin-bottom:5px}.model-panel dt{font-weight:700;display:inline;color:var(--ap-text-strong)}.model-panel dt:after{content:": "}.model-panel dd{display:inline;margin:0;line-height:1.4}.model-panel .dev-inputs{border-top:1px solid var(--ap-border);padding:4px 0}.model-panel .dev-inputs .kv b{font-weight:500;text-align:right}.model-panel ul.not-modeled{margin:2px 0;padding-left:16px;line-height:1.4}.probe-card{position:absolute;left:10px;bottom:44px;width:560px;max-width:calc(100% - 20px);max-height:60%;overflow:auto;background:var(--ap-raised);border:1px solid var(--ap-border-strong);border-radius:var(--ap-r-lg);padding:8px 10px;font-size:12px;z-index:5}.probe-head{display:flex;align-items:center;gap:6px}.probe-head button{margin-left:auto}.probe-total{font-size:16px;font-weight:600;margin:4px 0;color:var(--ap-text-strong)}.probe-tbl td,.probe-tbl th{padding:2px 5px;white-space:nowrap}.probe-cell{display:flex;align-items:center;gap:6px;margin:2px 0 4px;color:var(--ap-text)}.probe-cell .swatch{width:22px;height:14px;border:1px solid var(--ap-text-strong);border-radius:2px;flex:none}.probe-tbl tr.probe-path td{font-style:italic}.hl-widened{color:var(--ap-warn);margin:2px 0 4px;max-width:190px}.probe-why{margin:2px 0;color:var(--ap-text)}.probe-tbl .num{text-align:right}.probe-mark circle{fill:none;stroke:var(--ap-ember);stroke-width:2}.probe-mark line{stroke:var(--ap-ember);stroke-width:1.5}.planning-label.small{font-size:11px;margin:4px 0 0}.package-panel{border:1px solid var(--ap-border-strong);background:var(--ap-canvas);border-radius:var(--ap-r-lg);padding:6px 14px 10px;margin:10px 0 14px}.package-panel h3{margin:4px 0}.package-panel textarea{width:100%;font:inherit;resize:vertical}.advisor{position:absolute;left:10px;top:40px;width:430px;max-height:calc(100% - 90px);overflow:auto;background:var(--ap-raised);border:1px solid var(--ap-border-strong);border-radius:var(--ap-r-lg);z-index:6;font-size:12px}.advisor header{position:sticky;top:0;background:var(--ap-raised);display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--ap-border);z-index:1}.advisor .adv-toggle{margin-left:auto}.adv-rule{border-bottom:1px solid var(--ap-border);padding:6px 10px}.adv-head{display:flex;align-items:center;gap:6px;cursor:pointer}.adv-chip{font-size:10px;font-weight:700;padding:1px 6px;border-radius:var(--ap-r-sm);text-transform:uppercase;white-space:nowrap;font-family:var(--ap-font-mono)}.adv-chip.s-pass,.adv-dot.s-pass{background:var(--ap-ok-soft);color:var(--ap-ok)}.adv-chip.s-warn,.adv-dot.s-warn{background:var(--ap-warn-soft);color:var(--ap-warn)}.adv-chip.s-fail,.adv-dot.s-fail{background:var(--ap-error-soft);color:var(--ap-error)}.adv-chip.s-na,.adv-dot.s-na{background:var(--ap-raised);color:var(--ap-text2)}.adv-rule-text{margin:4px 0 2px;color:var(--ap-text);line-height:1.4}.adv-why{margin:0 0 4px;color:var(--ap-text2);line-height:1.4}.adv-findings{list-style:none;margin:4px 0 2px;padding:0}.adv-findings li{display:flex;gap:6px;padding:3px 0;line-height:1.4}.adv-dot{flex:none;width:16px;height:16px;border-radius:var(--ap-r-sm);display:grid;place-items:center;font-weight:700;font-size:11px}.adv-targets{display:inline-flex;flex-wrap:wrap;gap:3px;margin-left:4px}.adv-targets button{padding:0 5px;font-size:11px;font-family:var(--ap-font-mono)}.badge.adv-fail{background:var(--ap-error);color:var(--ap-canvas);border-color:var(--ap-error);margin-left:4px;font-weight:700}.badge.adv-warn{background:var(--ap-warn);color:var(--ap-canvas);border-color:var(--ap-warn);margin-left:4px;font-weight:700}.docs.signal{max-width:1500px;width:100%;margin:0 auto}.diagram-box{overflow:auto;border:1px solid var(--ap-border);border-radius:var(--ap-r-md);background:var(--ap-canvas);padding:8px;margin:8px 0;max-height:62vh}.sig-issues{margin:4px 0;padding-left:18px;font-size:12px;line-height:1.5}.sig-issues li.fail{color:var(--ap-error)}.sig-issues li.warn{color:var(--ap-warn)}.net-settings{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:8px 0}.net-table input.ip{width:120px;font-family:var(--ap-font-mono)}.net-table input.port{width:54px;margin-left:4px}.net-table td{vertical-align:top}.mx-wrap{overflow:auto;max-height:58vh;border:1px solid var(--ap-border);border-radius:var(--ap-r-md)}.mx-ui th.z{text-align:center;min-width:96px;vertical-align:bottom}.mx-ui td.mx-cell{text-align:center;white-space:nowrap}.mx-ui td.mx-cell.ok{background:var(--ap-ok-soft)}.mx-ui td.mx-cell.bad{background:var(--ap-error-soft)}.mx-ui td.mx-cell input[type=number]{margin-left:4px}.mx-st{margin-left:3px;font-weight:700}.mx-cell.ok .mx-st{color:var(--ap-ok)}.mx-cell.bad .mx-st{color:var(--ap-error)}.badge.pg{background:var(--ap-warn-soft);color:var(--ap-warn);border-color:transparent;font-size:10px;padding:0 5px}.pp-rack{margin:6px 0 10px}.patch-table td{vertical-align:top}.patch-table select{max-width:220px}.lib input.alpha{width:48px;text-align:right;font-family:var(--ap-font-mono)}.lib input.alpha.nodata{background:var(--ap-warn-soft)}.lib input.alpha.bad{border-color:var(--ap-error);border-style:dashed}.lib td.src{max-width:300px}.swatch{display:inline-block;width:10px;height:10px;border-radius:var(--ap-r-sm);margin-right:6px;vertical-align:middle}.est-label{font-size:12px;font-weight:600;color:var(--ap-warn);background:var(--ap-warn-soft);padding:4px 8px;border-radius:var(--ap-r-sm);display:inline-block}.ab-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.ab-img{border:1px solid var(--ap-border);border-radius:var(--ap-r-md);background:var(--ap-canvas);min-height:120px;display:flex;align-items:center;justify-content:center}.ab-img img{max-width:100%;display:block}tr.changed td{background:var(--ap-raised)}.cmp tr.grp td{background:var(--ap-canvas);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ap-text2)}.cmp td.up{color:var(--ap-ok)}.cmp td.down{color:var(--ap-error)}.cmp td.down:before{content:"▼ "}.cmp td.up:before{content:"▲ "}.btn-like{border:1px solid var(--ap-border);background:var(--ap-raised);border-radius:var(--ap-r-md);padding:4px 10px;cursor:pointer}.refl-list{margin:4px 0;padding-left:16px}.refl-cmp{margin-top:6px}tr.sel td{background:var(--ap-ember-soft)}.field-marks text{font:600 11px var(--ap-font-mono);fill:var(--ap-d-label);paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:3px}.mp-mark path{fill:var(--ap-d-marker);stroke:var(--ap-d-sheet);stroke-width:1.2}.ta-mark rect{fill:var(--ap-d-marker);stroke:var(--ap-canvas);stroke-width:1.5}.grid3{display:grid;grid-template-columns:1fr 1fr 2fr;gap:10px}.btn-row.inline{display:inline-flex;gap:4px}.check-row.inline{display:inline-flex;margin-right:8px}.align-set{border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:8px 10px;margin:8px 0}.sec-cut line{stroke:var(--ap-d-structure);stroke-width:1.5;stroke-dasharray:10 4 2 4}.sec-cut line.tick{stroke-dasharray:none;stroke-width:3}.sec-cut.sel line{stroke:var(--ap-ember);stroke-width:2.5}.sec-cut text{font:700 13px var(--ap-font-ui);fill:var(--ap-d-label);paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:3px;text-anchor:middle}.sec-cut.sel text{fill:var(--ap-ember)}.sec-cut text.tag{font:700 11px var(--ap-font-mono)}.sec-cut{cursor:pointer}.section-box{overflow:auto;border:1px solid var(--ap-border);border-radius:var(--ap-r-md);background:var(--ap-canvas);padding:6px;cursor:crosshair}.section-box svg{display:block;max-width:100%;height:auto}.sec-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}.profile-box{border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:6px 8px;margin:6px 0}.sec-cut circle.lis{fill:var(--ap-ember);stroke:var(--ap-canvas);stroke-width:1.5}.view3d{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;background:var(--ap-canvas)}.v3-bar{display:flex;align-items:center;gap:10px;padding:6px 10px;border-bottom:1px solid var(--ap-border);background:var(--ap-panel);flex-wrap:wrap}.v3-host{flex:1;position:relative;min-height:0}.v3-host canvas{display:block}.v3-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--ap-text2)}.v3-issues{position:absolute;top:48px;right:10px;max-width:460px;background:var(--ap-raised);border:1px solid var(--ap-border-strong);border-radius:var(--ap-r-lg);padding:8px 12px;font-size:12px}.v3-foot{padding:6px 10px;border-top:1px solid var(--ap-border);background:var(--ap-panel)}.v3-sel{font-size:12px;margin-bottom:2px}.tier{display:inline-block;border-radius:var(--ap-r-sm);padding:0 6px;font-size:11px;font-weight:600;white-space:nowrap;border:1px solid transparent}.tier-published{background:var(--ap-raised);color:var(--ap-text);border-color:var(--ap-border-strong)}.tier-user{background:var(--ap-warn-soft);color:var(--ap-warn);border-color:var(--ap-warn)}.tier-clf{background:var(--ap-ok-soft);color:var(--ap-ok);border-color:var(--ap-ok)}.tier.est{border-style:dashed}.tier-est{font-weight:400}.tier.est-note{background:transparent;color:var(--ap-warn);border:1px dashed var(--ap-warn);white-space:normal;font-weight:500}.tier-mix{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin:6px 0 4px}.hl-band{font-size:12px}.band-table{border-collapse:collapse;font-size:var(--ap-fs-data);width:100%}.band-table th,.band-table td{border:1px solid var(--ap-border);padding:2px 4px;text-align:center}.band-table th{color:var(--ap-text2);font-weight:500}.band-table input{width:58px;font:inherit;font-family:var(--ap-font-mono);padding:1px 3px}.band-table td.status{text-align:left;font-size:11px}.band-table td.status.ok{color:var(--ap-ok)}.band-table td.status.bad{color:var(--ap-warn)}.polar-table input{width:44px}.lib-item{border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:6px 8px;margin-bottom:6px}.lib-item.rejected{background:var(--ap-error-soft);border-color:var(--ap-error)}.lib-item ul{margin:2px 0 0;padding-left:18px;font-size:12px}.lib-item .missing{color:var(--ap-warn)}.lib-item .errors{color:var(--ap-error)}.clf-pending{background:var(--ap-canvas);border:1px dashed var(--ap-border-strong);border-radius:var(--ap-r-md);padding:8px 10px}.tier-counts{display:inline-flex;flex-wrap:wrap;gap:2px}.band-seg button{padding:2px 6px;font-size:12px;font-family:var(--ap-font-mono)}.band-table input.bad{border-color:var(--ap-error);border-style:dashed;background:var(--ap-error-soft)}.pricing-note{background:var(--ap-warn-soft);border-left:2px solid var(--ap-warn);color:var(--ap-warn);border-radius:var(--ap-r-sm);padding:6px 10px}.price-summary{max-width:760px}.price-summary tfoot th{border-top:1px solid var(--ap-text2);color:var(--ap-text-strong)}.price-summary td:not(:first-child),.price-lines td.num,.price-items td.num{font-family:var(--ap-font-mono)}.price-lines tr.sec-row td{background:var(--ap-canvas);color:var(--ap-text-strong)}.price-lines tr.unpriced td,.price-items tr.unpriced td{background:var(--ap-warn-soft)}.price-items td.dim input{opacity:.4}.price-items input,.pricing input{max-width:110px}.cat-markup{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:0 10px}.pricing-rules input,.pricing textarea{max-width:none}.dealer-warn{background:var(--ap-error-soft);border-left:2px solid var(--ap-error);color:var(--ap-error);border-radius:var(--ap-r-sm);padding:6px 10px}.draw-bg{fill:var(--ap-d-page)}.topbar{gap:14px;padding:6px 12px;flex-wrap:nowrap}.topbar .project-name{width:240px}.mode-switch{margin:0}.mode-switch button{padding:4px 16px;min-width:84px}.saved-state{min-width:110px;text-align:right}.sidebar .panel-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:4px;padding:6px 8px 6px 12px;background:var(--ap-panel);border-bottom:1px solid var(--ap-border);font-weight:600;font-size:12px;color:var(--ap-text-strong)}.sidebar .panel-head span{flex:1}.panel-rail{width:22px;background:var(--ap-panel);display:flex;justify-content:center;padding-top:6px}.panel-rail.left{border-right:1px solid var(--ap-border)}.panel-rail.right{border-left:1px solid var(--ap-border)}.panel-rail button{font-size:16px}.canvas-tools{position:absolute;left:8px;top:8px;z-index:4;display:flex;gap:6px;flex-wrap:wrap;max-width:calc(100% - 240px)}.ct-group{display:flex;gap:2px;background:var(--ap-panel);border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:2px}.ct-group button{border-color:transparent;background:transparent;padding:3px 8px}.ct-group button:hover:not(:disabled){background:var(--ap-hover);border-color:transparent}.ct-group button.active{background:var(--ap-ember-soft);border-color:var(--ap-ember);color:var(--ap-text-strong)}button.on{background:var(--ap-hover);border-color:var(--ap-border-strong);color:var(--ap-text-strong);box-shadow:inset 0 -2px 0 var(--ap-text2)}.ct-group button.on{border-color:var(--ap-border-strong)}.advisor{top:48px}.snap-controls{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.snap-controls label{display:inline-flex;align-items:center;gap:4px;color:var(--ap-text2)}.snap-controls input.num{width:58px}.snap-controls button.active{background:var(--ap-hover);border-color:var(--ap-border-strong);color:var(--ap-text-strong);box-shadow:inset 0 -2px 0 var(--ap-text2)}.launchers{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.launcher{width:100%;text-align:left;display:flex;flex-direction:column;gap:1px;white-space:normal;padding:6px 10px;background:var(--ap-panel)}.launcher>span:first-child{font-weight:600;color:var(--ap-text-strong)}.assumptions>summary{cursor:pointer;font-weight:600;color:var(--ap-text);padding:2px 0}.assumptions[open]>summary{margin-bottom:8px}.assumptions-section .cable-settings{padding:4px 8px 8px}.assumptions-section .settings-grid{grid-template-columns:1fr 1fr}details.assumptions>summary::marker{color:var(--ap-text2)}.palette-backdrop{place-items:start center;padding-top:12vh}.palette{width:min(640px,calc(100vw - 32px));background:var(--ap-raised);border:1px solid var(--ap-border-strong);border-radius:var(--ap-r-lg);overflow:hidden}.palette-input{width:100%;border:none;border-bottom:1px solid var(--ap-border);border-radius:0;padding:12px 14px;font-size:15px;background:var(--ap-raised)}.palette-input:focus{border-color:var(--ap-border)}.palette-list{list-style:none;margin:0;padding:4px;max-height:52vh;overflow-y:auto}.palette-list li{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:var(--ap-r-md);cursor:pointer}.palette-list li.active{background:var(--ap-raised);box-shadow:inset 2px 0 0 var(--ap-ember)}.palette-list li.empty{cursor:default}.palette-list .pk{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ap-text2);width:62px;flex:none}.palette-list .pd{max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-hint{font-size:12px}.sidebar.right.inspecting section{background:var(--ap-raised);border-bottom-color:var(--ap-panel);box-shadow:inset 0 0 0 4px var(--ap-panel),inset 0 0 0 5px var(--ap-border)}.modal,.docs,.palette,.probe-card,.advisor,.v3-issues,.sidebar.right.inspecting section{--ap-btn-bg: var(--ap-hover);--ap-btn-hover: var(--ap-hover-raised)}.err-text{color:var(--ap-error)}.sti-key{list-style:none;margin:6px 0;padding:0;display:flex;flex-direction:column;gap:3px}.sti-key li{display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:6px;font-size:12px}.sti-key i{width:22px;height:12px;border-radius:2px;border:1px solid var(--ap-border-strong)}.sti-note{border-left:2px solid var(--ap-warn);padding:4px 8px;color:var(--ap-text);background:var(--ap-warn-soft);border-radius:var(--ap-r-sm);font-size:12px;margin:6px 0}.sti-tbl td,.sti-tbl th{white-space:nowrap}.sti-tbl tr.sti-fail td:first-child{box-shadow:inset 2px 0 0 var(--ap-error)}.sti-section .tbl{display:block;overflow-x:auto}.sti-badge rect{fill:var(--ap-d-halo);stroke:var(--ap-border-strong)}.sti-badge.fail rect{stroke:var(--ap-error);stroke-width:1.5;stroke-dasharray:4 2}.sti-badge text{fill:var(--ap-text-strong);font:600 11px var(--ap-font-ui);text-anchor:middle;pointer-events:none}.sti-badge text.sub{font:500 10px var(--ap-font-ui);fill:var(--ap-text)}.sti-badge.fail text.sub{fill:var(--ap-error);font-weight:700}.sti-badge,.mic-layer .mic{pointer-events:none}.mic-head{fill:var(--ap-d-sheet);stroke:var(--ap-d-marker);stroke-width:1.6}.mic-stem{stroke:var(--ap-d-marker);stroke-width:2;stroke-linecap:round}.mic-ring{fill:none;stroke:var(--ap-ember);stroke-width:2}.mic-tag{fill:var(--ap-d-label);font:600 10px var(--ap-font-mono);paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:3px}.docs.traces{width:min(1400px,calc(100vw - 48px))}.traces-body{display:grid;grid-template-columns:330px 1fr;gap:16px;align-items:start}.trace-list{display:flex;flex-direction:column;gap:8px;min-width:0}.import-box{border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:8px}.import-log{margin:6px 0 0;padding-left:0;list-style:none;font-size:12px;display:flex;flex-direction:column;gap:4px}.trace-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.trace-card{border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:6px 8px;cursor:pointer;background:var(--ap-panel)}.trace-card.active{border-color:var(--ap-ember);box-shadow:inset 2px 0 0 var(--ap-ember)}.tc-prov{display:grid;grid-template-columns:auto 1fr;gap:1px 8px;margin:4px 0 0;font-size:12px}.tc-prov dt{color:var(--ap-text2)}.tc-prov dd{margin:0;overflow-wrap:anywhere}.trace-detail{min-width:0}.trace-notes{margin:4px 0;padding-left:18px;color:var(--ap-text2)}.trace-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}.trace-box{border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:8px 10px;background:var(--ap-panel)}.trace-box h4{margin:0 0 6px}select.bad{border-color:var(--ap-error);border-style:dashed}.overlay{margin:6px 0;border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);background:var(--ap-d-sheet);padding:6px}.ov-bg{fill:none;stroke:var(--ap-border)}.ov-grid{stroke:var(--ap-d-grid-major);stroke-width:1}.ov-zero{stroke:var(--ap-d-grid-axis);stroke-width:1}.ov-tick{fill:var(--ap-text2);font:10px var(--ap-font-mono);text-anchor:end}.ov-tick.x{text-anchor:middle}.ov-title{fill:var(--ap-text);font:600 11px var(--ap-font-ui)}.ov-unit{fill:var(--ap-text2);font-weight:400}.ov-empty{fill:var(--ap-text2);font:italic 11px var(--ap-font-ui);text-anchor:middle}.ov-meas{fill:none;stroke:var(--ap-d-route-routed);stroke-width:1.4}.ov-pred{stroke:var(--ap-d-cone);stroke-width:3}.ov-pred.est{stroke-dasharray:5 3}.ov-diff{fill:none;stroke:var(--ap-warn);stroke-width:1.8}.ov-diff-pt{fill:var(--ap-warn)}.ov-corr{fill:none;stroke:var(--ap-ok);stroke-width:1.6;stroke-dasharray:6 4}.ov-phase{fill:none;stroke:var(--ap-d-window);stroke-width:1.2}.ov-coh{fill:none;stroke:var(--ap-d-powered);stroke-width:1.4}.ov-key{display:flex;gap:14px;flex-wrap:wrap;color:var(--ap-text2);padding:4px 6px 0}.ov-key .k{display:inline-block;width:18px;height:0;border-top:2px solid;margin-right:5px;vertical-align:middle}.ov-key .k.meas{border-color:var(--ap-d-route-routed)}.ov-key .k.pred{border-top-width:3px;border-color:var(--ap-d-cone)}.ov-key .k.diff{border-color:var(--ap-warn)}.ov-key .k.corr{border-color:var(--ap-ok);border-top-style:dashed}.measured-delay{font-weight:700}.docs.dsp{width:min(1300px,calc(100vw - 48px))}.dsp-setup{border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:6px 12px 8px;margin-bottom:10px;background:var(--ap-panel)}.dsp-setup h3,.dsp-export h3{margin:4px 0 6px}.dsp-budget{margin:6px 0 0}.dsp-budget.over{color:var(--ap-error);border-left:2px dashed var(--ap-error);padding-left:8px}.dsp-budget.fits{color:var(--ap-ok)}.dsp-stale{border:1px dashed var(--ap-error);background:var(--ap-error-soft);color:var(--ap-text-strong);border-radius:var(--ap-r-md);padding:6px 10px;font-weight:600}.dsp-blockers{margin:4px 0;padding-left:0;list-style:none;font-weight:600}.dsp-tbl tr.blocked td{opacity:.85}.nid{color:var(--ap-warn);font-size:11px;border:1px dashed var(--ap-warn);border-radius:var(--ap-r-sm);padding:0 4px;white-space:nowrap}.dsp-recon{margin-top:12px}.dsp-recon-tbl tr.mismatch td:first-child,.dsp-recon-tbl tr.not.exported td:first-child{box-shadow:inset 2px 0 0 var(--ap-error)}.wordmark{font-family:var(--ap-font-display);font-size:20px;line-height:1;letter-spacing:.02em;color:var(--ap-text-strong);text-transform:uppercase;padding:0 4px 0 2px;-webkit-user-select:none;user-select:none}.wordmark .wm-accent{color:var(--ap-ember)}.sidebar .panel-head>span:first-child,.docs-head h2,.modal h3,.sidebar h4,.docs-body h3,.trace-box h4,.dsp-setup h3,.dsp-export h3{font-family:var(--ap-font-display);font-weight:400;text-transform:uppercase;letter-spacing:.03em;color:var(--ap-text-strong)}.sidebar .panel-head>span:first-child{font-size:15px}.docs-head h2{font-size:20px}.sidebar h4{font-size:13px;letter-spacing:.05em;color:var(--ap-text-strong)}.docs-body h3{font-size:15px}.grid2>*{min-width:0}.grid2 select,.grid2 input{max-width:100%}.list.catalog li{flex-wrap:wrap;row-gap:2px}.list.catalog li .grow{flex:1 0 80%;white-space:normal;overflow:visible;line-height:1.3}.docs.rigging{width:min(1300px,calc(100vw - 48px))}.rig-note{border:1px dashed var(--ap-warn);background:var(--ap-warn-soft);color:var(--ap-text-strong);border-radius:var(--ap-r-md);padding:6px 10px;font-weight:600;margin:4px 0 10px}.rig-grid{display:grid;grid-template-columns:300px 1fr;gap:16px;align-items:start}.rig-list li{cursor:pointer}.rig-st.ok{color:var(--ap-ok)}.rig-st.incomplete,.rig-st.check{color:var(--ap-warn);font-weight:700}.rig-st.overload{color:var(--ap-error);font-weight:700}.rig-pk.pass{color:var(--ap-ok)}.rig-pk.over,.rig-pk.uplift{color:var(--ap-error);font-weight:700}.rig-pk.no-swl,.rig-pk.incomplete{color:var(--ap-warn)}tr.rig-over td:first-child{box-shadow:inset 3px 0 0 var(--ap-error)}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 10px}.grid3>*{min-width:0}.rig-lines tr.total td{border-top:1px solid var(--ap-border-strong)}.rig-missing,.rig-flags{list-style:none;padding:0;margin:6px 0;font-size:12px}.rig-pick circle{fill:none;stroke:var(--ap-d-label);stroke-width:1.5}.rig-pick .rig-pick-x{stroke:var(--ap-d-label);stroke-width:1.5}.rig-pick text{fill:var(--ap-d-label);font:600 10.5px var(--ap-font-mono);text-anchor:middle;paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:5px;stroke-linejoin:round}.rig-pick.over circle,.rig-pick.over .rig-pick-x{stroke:var(--ap-error);stroke-width:2.5}.rig-pick.over text{fill:var(--ap-error);font-weight:700}.rig-badge rect{fill:var(--ap-d-halo);stroke:var(--ap-border-strong)}.rig-badge.overload rect{stroke:var(--ap-error);stroke-width:1.5;stroke-dasharray:4 2}.rig-badge.incomplete rect{stroke:var(--ap-warn);stroke-dasharray:3 2}.rig-badge text{fill:var(--ap-text-strong);font:600 11px var(--ap-font-mono);text-anchor:middle}.rig-badge.overload text{fill:var(--ap-error)}.rig-layer{pointer-events:none}.rig-legend{position:absolute;left:8px;bottom:40px;max-width:520px;background:var(--ap-raised);border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:6px 10px;font-size:12px}.rig-legend-note{color:var(--ap-warn);font-weight:600;margin-top:3px}.elec-note{border:1px dashed var(--ap-warn);background:var(--ap-warn-soft);color:var(--ap-text-strong);border-radius:var(--ap-r-md);padding:6px 10px;font-weight:600;margin:4px 0 10px}.pw-panel{border-top:1px solid var(--ap-border);padding-top:8px;margin-top:10px}.pw-assume .btn-row,.pw-panel .btn-row{flex-wrap:wrap;gap:10px}.pw-phases{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:baseline;margin:6px 0}.pw-ph{padding:2px 8px;border:1px solid var(--ap-border);border-radius:var(--ap-r-md)}.pw-ph.over{border:1px dashed var(--ap-error);color:var(--ap-error);font-weight:700}.pw-ph.imb{border:1px dashed var(--ap-warn);color:var(--ap-warn);font-weight:700}.pw-ph .num,td.num{font-family:var(--ap-font-mono)}.pw-suggest{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px;margin:6px 0 4px}tr.pw-over td:first-child{box-shadow:inset 3px 0 0 var(--ap-error)}tr.pw-inc td:first-child{box-shadow:inset 3px 0 0 var(--ap-warn)}.docs.power .tbl input{width:100%;min-width:60px}.nc-list{list-style:none;padding:0;margin:0 0 10px;display:grid;gap:6px}.nc-v{border:1px solid var(--ap-border);border-left:3px solid var(--ap-warn);border-radius:var(--ap-r-md);padding:6px 10px;background:var(--ap-raised)}.nc-v.error{border-left-color:var(--ap-error)}.nc-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.nc-name{color:var(--ap-text-strong)}.nc-fix{margin-top:3px;font-size:12px}.nc-nc{margin:8px 0}.nc-tbl input,.nc-tbl select{max-width:120px}.nc-pair{white-space:nowrap}.nc-pair input{width:60px}.route-legend{position:absolute;right:8px;bottom:40px;display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;max-width:560px;background:var(--ap-raised);border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:6px 10px;font-size:12px}.route-legend svg line{stroke-linecap:round}.route-legend .lg-drawn{stroke:var(--ap-d-route-drawn);stroke-width:2.2}.route-legend .lg-auto{stroke:var(--ap-d-route);stroke-width:1.4;stroke-dasharray:5 4}.route-legend .lg-trunk{stroke:var(--ap-d-trunk);stroke-width:6}.route-legend .lg-power{stroke:var(--ap-d-power-run);stroke-width:2;stroke-dasharray:5 4}.sec-picker{border:1px solid var(--ap-border);border-radius:var(--ap-r-lg);padding:6px 10px 8px;margin:8px 0}.sec-picker legend{padding:0 4px;font-weight:600}.sec-list{list-style:none;margin:6px 0 0;padding:0;columns:2;column-gap:18px}.sec-list li{break-inside:avoid;padding:2px 0}.sec-list label{display:flex;gap:6px;align-items:baseline;cursor:pointer}.sec-list .num{font-family:var(--ap-font-mono);min-width:2.6em}.arrays text{paint-order:stroke;stroke:var(--ap-d-halo);stroke-width:5px;stroke-linejoin:round}.arrays .arr-wedge{fill:var(--ap-d-cone-fill);stroke:var(--ap-d-cone);stroke-width:1;stroke-dasharray:5 3;pointer-events:none}.arrays .arr-aim{stroke:var(--ap-d-speaker-line);stroke-width:1.4}.arrays .arr-bars line{stroke:var(--ap-d-speaker-line);stroke-width:2.4;stroke-linecap:round}.arrays .arr-hang{fill:var(--ap-d-speaker-fill);stroke:var(--ap-d-speaker-line);stroke-width:1.5}.arrays .arr.sel .arr-bars line,.arrays .arr.sel .arr-hang{stroke:var(--ap-ember)}.arrays .arr-tag{fill:var(--ap-d-label);font:700 11px var(--ap-font-mono)}.arrays .arr-sub{fill:var(--ap-d-label2);font:10.5px var(--ap-font-ui)}.arrays .arr-flag{fill:var(--ap-error);font:700 10.5px var(--ap-font-ui)}.arrays .arr-warn{fill:var(--ap-warn);font:600 10.5px var(--ap-font-ui)}.arrays .sub-box rect{fill:var(--ap-d-speaker-fill);stroke:var(--ap-d-speaker-line);stroke-width:1.5}.arrays .sub-box line{stroke:var(--ap-d-speaker-line);stroke-width:1.5}.arrays .sub-box.rear rect{stroke-dasharray:3 2}.arrays .arr.sel .sub-box rect{stroke:var(--ap-ember)}.arrays .sub-rej line{stroke:var(--ap-d-label2);stroke-width:1.4;stroke-dasharray:4 3}.arrays .sub-ref line{stroke:var(--ap-d-label2);stroke-width:1;stroke-dasharray:2 3}.arrays .sub-ref path{fill:var(--ap-d-speaker-fill);stroke:var(--ap-d-label);stroke-width:1.5}.arrays .ref-t{fill:var(--ap-d-label);font:600 10.5px var(--ap-font-mono)}.arrays .arr-rej{fill:var(--ap-d-label2);font:10px var(--ap-font-ui)}.arrays .arr-leader{stroke:var(--ap-d-label2);stroke-width:1}.arrays .arr-labels{pointer-events:none}.array-note{border:1px dashed var(--ap-warn);background:var(--ap-warn-soft);color:var(--ap-text-strong);border-radius:var(--ap-r-md);padding:5px 8px;font-size:12px;font-weight:600;margin:4px 0 8px}.sf-box{border:1px solid var(--ap-border);border-radius:var(--ap-r-md);padding:6px 8px;margin:6px 0;display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px}.sf-box b.num{font-size:16px}.sf-box.fail{border:2px solid var(--ap-error)}.sf-box>div{flex-basis:100%}.array-panel .hw-row input{min-width:0}.array-panel .hw-row input:first-child{flex:2}.splay-tbl input{width:64px}.splay-tbl .field.inline input{width:56px}
