:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#1e3036;background:#f6f8f9;font-size:14px;--teal:#087f82;--line:#dfe5e6;--muted:#687c83}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,select{cursor:pointer}button{border:1px solid var(--line);border-radius:6px;background:white;color:inherit;padding:9px 12px;transition:.15s}button:hover{background:#edf5f5;border-color:#99bcbc}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #43b7b9;outline-offset:3px}button.primary{color:white;background:var(--teal);border-color:var(--teal)}header{height:78px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 28px;gap:24px}.brand{text-decoration:none;font-size:43px;color:var(--teal);font-weight:780;letter-spacing:-3px}.brand-dot{font-size:24px;vertical-align:top;letter-spacing:0}.divider{height:28px;border-left:1px solid var(--line)}.title{font-size:17px;font-weight:600}.beta{display:inline-block;font-size:11px;letter-spacing:1.3px;color:#698085;background:#eef3f3;padding:5px 7px;border-radius:3px;margin-left:12px}.header-right{margin-left:auto;display:flex;gap:22px;align-items:center}.offline{font-size:12px;color:var(--muted)}.workspace{display:grid;grid-template-columns:228px minmax(550px,1fr) 290px;min-height:calc(100vh - 78px)}.library,.inspector{background:#fff;padding:26px 20px;border-right:1px solid var(--line)}.inspector{border-right:0;border-left:1px solid var(--line);padding:26px 22px}.eyebrow{font-size:11px;letter-spacing:1.5px;font-weight:700;color:var(--muted)}h1,h2,h3,p{margin:0}h2{font-size:21px;letter-spacing:-.6px;margin:9px 0 25px}h3{font-size:14px}label{font-size:13px;display:block;color:#52676d;margin:16px 0 8px}select{width:100%;border:1px solid var(--line);padding:10px 8px;border-radius:5px;background:white;color:#273b42}.muted{color:var(--muted)}.description{font-size:12px;line-height:1.65;margin:12px 0 26px}.shelf-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.shelf-title span{font-size:11px;color:var(--muted)}.shelf-item{width:100%;display:flex;align-items:center;text-align:left;padding:12px 9px;margin-bottom:7px;background:#fafcfc;gap:10px}.shelf-symbol{font-size:22px;color:var(--teal);width:26px;text-align:center}.shelf-item strong{font-size:13px;display:block}.shelf-item small{font-size:11px;color:var(--muted);display:block;margin-top:3px}.shelf-item .plus{margin-left:auto;color:#82979c;font-size:20px}.library-foot{font-size:12px;line-height:1.8;color:var(--muted);border-top:1px solid var(--line);padding-top:20px;margin-top:20px}main{min-width:0;padding:26px 26px 20px}.bench-top{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}h1{font-size:25px;letter-spacing:-.8px;margin-top:8px}.tools{display:flex;gap:7px}.tools button{font-size:12px;padding:9px}.bench-toolbar{display:flex;align-items:center;gap:10px;background:white;border:1px solid var(--line);border-bottom:0;padding:10px;border-radius:8px 8px 0 0}.mode-buttons{display:flex;gap:2px;background:#eef2f3;padding:3px;border-radius:5px}.mode-buttons button{padding:6px 9px;font-size:12px;background:none;border:0}.mode-buttons button.active{background:white;box-shadow:0 1px 4px #20343b15;color:var(--teal)}.toolbar-hint{font-size:11px;color:var(--muted);flex:1}.small{font-size:11px;padding:6px}.wire-colors{display:flex;gap:6px}.wire-color{padding:0;width:16px;height:16px;border-radius:50%;border:2px solid white;box-shadow:0 0 0 1px #dce2e4}.wire-color.active{box-shadow:0 0 0 2px #142f36}.bench-scroll{overflow:auto;border:1px solid #cedbdd;background:#eaf0ef}.bench{width:100%;min-width:800px;height:545px;position:relative;isolation:isolate;background-image:radial-gradient(#afc6c54d 1px,transparent 1px);background-size:20px 20px;overflow:hidden}.bench::before{content:"";position:absolute;inset:0;box-shadow:inset 0 1px 16px #2747400a;pointer-events:none}.bench-watermark{position:absolute;bottom:20px;left:22px;font-size:10px;letter-spacing:2px;color:#9fb3b5;pointer-events:none}#connections{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:1;pointer-events:none}.wire-path{fill:none;stroke-width:3;filter:drop-shadow(0 2px 1px #0002);pointer-events:stroke;cursor:pointer}.wire-hit{fill:none;stroke:transparent;stroke-width:15;pointer-events:stroke;cursor:pointer}.wire-path:hover{stroke-width:5}.radio-path{fill:none;stroke:#729f9c;stroke-width:1.5;stroke-dasharray:5 6;opacity:.55}.device{position:absolute;width:190px;background:white;border:1px solid #d2dcdd;border-radius:9px;box-shadow:0 6px 10px #23463c0e,0 2px 2px #23463c08;z-index:2;touch-action:none}.device.selected{outline:2px solid var(--teal);outline-offset:3px}.device-head{cursor:grab;display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:650;padding:11px 12px;border-bottom:1px solid #edf0f0;user-select:none}.device-head:active{cursor:grabbing}.grip{color:#a2afb2;letter-spacing:1px}.device-body{padding:12px}.device-meta{font-size:10px;color:var(--muted);letter-spacing:1px;text-transform:uppercase}.device-reading{font-size:36px;letter-spacing:-1.5px;margin:8px 0;color:#28494d;line-height:1}.device-reading small{font-size:15px;letter-spacing:0;color:var(--muted)}.device-status{font-size:11px;display:flex;align-items:center;gap:6px;color:var(--muted)}.led{display:inline-block;width:7px;height:7px;background:#ccd5d5;border-radius:50%}.led.on{background:#dc8a3e;box-shadow:0 0 7px #e6a85999}.led.cool{background:#388fc8;box-shadow:0 0 7px #388fc877}.led.teal{background:var(--teal)}.terminals{display:flex;gap:5px;padding:10px 9px;background:#f4f7f6;border-top:1px solid var(--line);border-radius:0 0 9px 9px;flex-wrap:wrap}.terminal{padding:4px 0;width:27px;border-radius:3px;background:#e8efeb;border:1px solid #c7d4ce;font-family:monospace;font-size:11px;display:flex;align-items:center;flex-direction:column;gap:5px}.terminal::before{content:"";width:9px;height:9px;background:#52655d;border:2px solid #b6c6b9;border-radius:50%}.terminal:hover,.terminal.pending{background:#bfe9df;border-color:var(--teal)}.terminal.pending::before{background:#13a09e}.terminal.connected::before{background:var(--wire,#b85853)}.device.bridgepro{width:285px}.bridgepro .device-body{display:flex;justify-content:space-between;align-items:center}.bp-label{font-size:25px;font-weight:750;letter-spacing:-1.4px;color:#738887}.bp-label small{font-size:11px;letter-spacing:1px;margin-left:5px}.relay-row{display:flex;gap:7px;margin-top:12px}.relay-row>.relay{font-size:10px;display:flex;align-items:center;gap:4px}.bridgepro .terminals{gap:5px}.bridgepro .terminal{width:26px}.device.mini{width:210px}.device.air{width:250px}.device.pressure{width:190px}.device.vent{width:155px}.device.vent .device-reading{font-size:27px}.bench-caption{display:flex;gap:20px;padding:11px 1px;color:var(--muted);font-size:11px;align-items:center}.legend{display:inline-block;width:15px;border-top:2px solid #be7062;vertical-align:middle;margin-right:6px}.legend.wireless{border-top:2px dashed #82aaa6}.right{margin-left:auto}.bottom{display:grid;grid-template-columns:1fr 200px;gap:16px;margin-top:12px}.response{background:white;border:1px solid var(--line);border-radius:7px;padding:18px}.calls{display:flex;gap:20px;margin:16px 0;font-size:12px}.call{display:flex;gap:7px;align-items:center}.reason{font-size:13px;line-height:1.6;color:#536d74}.app-reserved{border:1px dashed #cbd5d7;border-radius:7px;display:flex;flex-direction:column;align-items:center;text-align:center;justify-content:center;padding:18px;color:#86959a}.app-icon{font-size:22px;margin-bottom:8px}.app-reserved strong{font-size:13px}.app-reserved p{font-size:11px;line-height:1.6;margin:8px 0}.app-reserved .beta{margin:0;font-size:9px;background:#e9eeee}.section-title{font-size:16px;letter-spacing:-.3px;margin:24px 0 16px}.control-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin:18px 0 7px}.control-row label{margin:0}.control-row output{font-weight:650;font-variant-numeric:tabular-nums}.range{width:100%;accent-color:var(--teal);margin:8px 0}.range-limits{display:flex;justify-content:space-between;font-size:10px;color:#8a999d}.dial-wrap{display:flex;align-items:center;gap:20px;margin:20px 0}.dial{width:110px;height:110px;flex-shrink:0;border-radius:50%;background:conic-gradient(from 220deg,#168d8a 0deg,#b7ded4 210deg,#edf1f0 211deg);display:flex;align-items:center;justify-content:center;position:relative;cursor:ns-resize;touch-action:none;box-shadow:0 3px 9px #20343b10}.dial-inner{width:90px;height:90px;background:white;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;pointer-events:none}.dial strong{font-size:31px;font-weight:550;letter-spacing:-1px}.dial small{font-size:10px;color:var(--muted)}.dial-detail{font-size:12px;color:var(--muted);line-height:1.9}.dial-detail strong{color:#324c53;font-size:15px}.num-input{width:66px;border:1px solid var(--line);border-radius:4px;padding:5px;color:#29444a}.inspector hr{border:0;border-top:1px solid var(--line);margin:23px 0}.check-row{display:flex;align-items:center;justify-content:space-between;margin:15px 0;font-size:13px}.check-row input{accent-color:var(--teal);width:17px;height:17px}.simulation-note{font-size:11px;line-height:1.7;color:#8a989b;border-top:1px solid var(--line);margin-top:22px;padding-top:16px}.text-button{padding:0;border:0;background:none;color:var(--teal);font-size:11px;margin-top:6px;text-align:left}.delete-btn{font-size:12px;color:#a45047;margin-top:15px;width:100%}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:#203e45;color:white;padding:13px 22px;border-radius:7px;box-shadow:0 5px 30px #0002;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s;max-width:90vw}#toast.show{opacity:1}dialog{border:1px solid var(--line);border-radius:12px;max-width:700px;width:90vw;max-height:85vh;padding:25px;color:#29434b;box-shadow:0 20px 80px #0003}dialog::backdrop{background:#17343c66;backdrop-filter:blur(3px)}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.modal-head h2{margin:0;font-size:22px}#modalBody{font-size:14px;line-height:1.7}#modalBody p{margin:12px 0}#modalBody a{color:var(--teal)}#modalBody ul{padding-left:20px}#validation{font-size:12px;line-height:1.7;margin-top:12px}.issue{color:#b56439}.good{color:var(--teal)}.chip{font-size:10px;border:1px solid #cfdcda;padding:3px 6px;border-radius:4px}.port-list{font-size:12px;line-height:1.8}.hint-box{font-size:12px;line-height:1.6;padding:10px;background:#f1f6f5;border-radius:5px;margin:12px 0}.wire-list{padding:0;list-style:none}.wire-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.status-label{font-size:11px;padding:4px 6px;border-radius:4px;background:#eef4f2;color:#5f7975}.move-help{font-size:11px;color:var(--muted);margin:10px 0}.move-controls{display:flex;gap:5px}.move-controls button{padding:5px 10px}
@media(min-width:1650px){.bench{height:600px}.workspace{grid-template-columns:240px minmax(550px,1fr) 310px}main{padding:30px 32px}.device{transform:translateZ(0)}}@media(max-width:1250px){.workspace{grid-template-columns:195px minmax(450px,1fr) 250px}main{padding:22px 16px}.library,.inspector{padding:22px 15px}.bench-top{align-items:flex-start;flex-direction:column;gap:14px}.toolbar-hint{display:none}.header-right .offline{display:none}.bottom{grid-template-columns:1fr 160px}.calls{gap:12px}.title .beta{display:none}}@media(max-width:950px){.workspace{grid-template-columns:180px minmax(0,1fr)}.inspector{grid-column:1/-1;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:20px}.inspector>.eyebrow{grid-column:1/-1}.simulation-note{grid-column:1/-1}.bench{min-width:800px}.bottom{grid-template-columns:1fr}.app-reserved{display:none}.header-right button{font-size:12px}header{padding:0 18px;gap:16px}}@media(max-width:600px){header{height:65px}.brand{font-size:34px}.title{font-size:14px}.header-right button{font-size:0}.header-right button::after{content:'ⓘ';font-size:18px}.workspace{display:flex;flex-direction:column}.library{padding:18px;border-bottom:1px solid var(--line)}.library h2,.library>.eyebrow,.library>.description,.library-foot,.shelf-title{display:none}.library>label{margin:0 0 7px}#shelf{display:flex;gap:8px;overflow:auto;margin-top:12px}.shelf-item{min-width:145px;margin:0;padding:8px}.shelf-item small{display:none}.shelf-item .shelf-symbol{font-size:19px}.shelf-item .plus{font-size:17px}main{padding:18px 12px}.bench-top{margin-bottom:16px}h1{font-size:23px}.bench{height:545px}.bench-caption{gap:11px}.bench-caption .right{display:none}.inspector{display:block}.inspector>.eyebrow{margin-bottom:12px}.tools{flex-wrap:wrap}.calls{flex-wrap:wrap}}
.status-bottom{padding:0 12px 12px;font-size:10px;min-height:26px}.bridgepro .status-bottom{padding-top:3px}.terminal small{font-size:8px;color:#74877c}.bridgepro .terminals{display:grid;grid-template-columns:repeat(9,1fr);gap:4px}.bridgepro .terminal{width:100%}.device.compact{width:155px}.compact .device-reading{font-size:25px;margin:5px 0}.compact .device-body{padding:8px 12px}.compact .device-meta{font-size:9px}.compact .device-head{padding:8px 10px}.device.compact .status-bottom{display:none}.room-heading{display:flex;gap:7px;margin-top:18px}.room-heading select{font-weight:600}.room-heading button{font-size:20px;padding:4px 10px}.dial-detail label{margin:0 0 4px;font-size:12px}.dial-detail span{font-size:10px;line-height:1.3;display:block;margin-top:6px}.faults{border-top:1px solid var(--line);padding-top:15px;margin-top:20px}.faults summary{font-size:12px;color:var(--muted);cursor:pointer}.room-heading select{min-width:0}.terminal{min-height:31px}.bench-scroll{max-height:680px}.offline{font-size:12px}.calls{gap:15px}.device-status span{line-height:1.3}button.active.small{background:#e6f2ee;color:var(--teal)}
/* Product renders remain untouched; frames select the useful area of the source. */
.bench-scroll{background:#d9dcd9;border:10px solid #c6cbca;border-bottom-width:18px;border-radius:0 0 12px 12px;box-shadow:0 12px 18px -10px #1b333855;max-height:900px}.bench{min-width:0;background-color:#dfe3e0;background-image:linear-gradient(105deg,#ffffff52,transparent 55%),linear-gradient(#6a898110 1px,transparent 1px),linear-gradient(90deg,#6a898110 1px,transparent 1px);background-size:auto,25px 25px,25px 25px}.bench::before{box-shadow:inset 0 12px 35px #183e3215,inset 0 -1px 0 #fff}.bench-watermark{color:#7b9288;font-size:12px;bottom:20px}.device.physical{background:none;border:0;box-shadow:none;border-radius:6px}.device.physical.selected{outline:1px dashed #218781;outline-offset:8px}.physical .device-head{padding:7px 0;border:0;font-size:14px;background:transparent;color:#37534e}.physical .grip{padding-right:8px;color:#6a847d}.physical .status-bottom{padding:7px 2px;font-size:12px;line-height:1.6}.physical img{user-select:none;pointer-events:none;position:absolute;max-width:none}.real-puck{position:relative;width:184px;height:184px;filter:drop-shadow(9px 15px 7px #203a352c);overflow:hidden;border-radius:50%;margin:8px auto}.real-puck img{width:284px;height:284px;left:-50px;top:-50px;mix-blend-mode:multiply}.puck-live-screen{position:absolute;inset:36px 31px 36px;background:radial-gradient(ellipse at 20% 10%,#dededd,#c9cbcc);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#515454;border-radius:22% 22% 25% 25%;pointer-events:none}.puck-live-screen strong{font-size:51px;font-weight:450;letter-spacing:-3px;line-height:1.1}.puck-live-screen sup{font-size:19px;vertical-align:top;letter-spacing:0}.puck-live-screen small{font-size:11px}.puck-live-screen span{font-size:10px}.physical.puck{width:210px}.equipment-tag{display:flex;justify-content:space-between;gap:8px;font-size:12px;padding:7px 2px;color:#456057}.equipment-tag span{font-size:10px;letter-spacing:.8px;font-weight:600}.real-mini{position:relative;height:135px;width:310px;margin:32px 0 15px;filter:drop-shadow(9px 19px 8px #183c3c33)}.real-mini img{width:310px;left:0;top:0}.physical.mini{width:310px}.physical.bridgepro{width:405px}.real-bridgepro{position:relative;width:355px;height:245px;overflow:hidden;margin:-3px auto -6px;filter:drop-shadow(8px 16px 7px #28483e30)}.real-bridgepro img{width:620px;height:620px;left:-142px;top:-118px}.physical-label{position:absolute;top:143px;left:52px;background:#fff9;color:#3f5150;border:1px solid #b1b9b6;padding:4px 6px;transform:rotate(30deg) skew(-25deg);font-size:8px;letter-spacing:.2px;width:144px}.terminal-closeup{background:linear-gradient(170deg,#fafbf9,#dbdfdc);border:1px solid #acb7b0;border-bottom:5px solid #b8c1ba;border-radius:8px;padding:12px 10px 10px;box-shadow:4px 8px 9px #203a351c}.closeup-caption{font-size:10px;letter-spacing:1.2px;color:#6b8076;display:flex;justify-content:space-between;margin-bottom:11px}.closeup-caption span{font-size:9px;color:#465f52}.sticker-terminals{display:flex;background:#fffef9;border:1px solid #c6cbc3;border-radius:2px}.sticker-group{flex:1;min-width:0;border-right:1px solid #d5d8d1}.sticker-group:last-child{border:0}.sticker-label{text-align:center;font-size:10px;color:#263c30;padding:7px 0 4px;white-space:nowrap}.sticker-label small{font-size:8px;color:#768272;display:block;overflow:hidden;text-overflow:ellipsis;height:13px;max-width:60px}.sticker-ports{display:flex;gap:1px;justify-content:center;padding:4px 2px;background:#7a847b}.terminal-closeup .terminal{width:20px;min-width:17px;background:linear-gradient(#d9ddcc,#a3ac96);color:#384337;border:1px solid #66775f;font-size:9px;padding:3px 0;min-height:29px;box-shadow:0 2px 0 #4a5746}.terminal-closeup .terminal::before{width:8px;height:8px;border:2px solid #4f5b48;background:#1f2c1e;box-shadow:inset 0 1px 2px #000}.terminal-closeup .terminal.connected::before{background:var(--wire);border-color:#394b32}.terminal-closeup .terminal.pending{outline:2px solid #05a8ab;outline-offset:1px}.service-ports{display:flex;gap:5px;align-items:end;margin-top:10px}.service-ports>div{display:flex;flex-direction:column;align-items:center;gap:4px}.service-ports>div>span{font-size:9px}.service-ports>small{font-size:9px;line-height:1.6;margin-left:6px;color:#778273}.real-bridge{position:relative;height:220px;width:240px;overflow:hidden;filter:drop-shadow(8px 15px 7px #24483725)}.real-bridge img{width:480px;height:480px;left:-129px;top:-112px}.physical.bridge{width:240px}.physical.compact.puck{width:160px}.compact .real-puck{width:130px;height:130px}.compact .real-puck img{width:200px;height:200px;left:-35px;top:-35px}.compact .puck-live-screen{inset:26px 23px}.compact .puck-live-screen strong{font-size:34px;letter-spacing:-2px}.compact .puck-live-screen small{font-size:8px}.compact .puck-live-screen span{font-size:8px}.physical.compact .equipment-tag{font-size:11px}.physical.compact .equipment-tag span{display:none}.physical.compact .status-bottom{display:none}.device:not(.physical){border:1px solid #a8b7ae;box-shadow:4px 6px 0 #b6beb7,9px 16px 12px #233e3526;background:linear-gradient(135deg,#fff,#e9ede8);border-radius:8px}.device:not(.physical) .device-head{border-bottom:1px solid #cbd4cc;font-size:13px;background:#edf1ea}.device:not(.physical) .terminals{background:#a8b3a6;border-top:2px solid #637d65}.device:not(.physical) .terminal{background:linear-gradient(#d5ddc6,#9dad8f);border-color:#65755b;box-shadow:0 2px 0 #4a5d40;color:#33432b}.wire-path{stroke-width:4;filter:drop-shadow(3px 6px 2px #24372855)}.radio-path{stroke:#4b8c80;stroke-width:1.4;opacity:.6}.real-monitor{position:relative;width:385px;height:280px;overflow:hidden;filter:drop-shadow(8px 15px 7px #67412026)}.real-monitor img{width:480px;left:-64px;top:-17px}.physical.monitor{width:390px}.monitor-ports{display:flex;flex-wrap:wrap;gap:4px;background:#e69546;padding:10px;border-radius:5px;box-shadow:3px 4px 0 #b96929}.monitor-ports .closeup-caption{width:100%;color:#502e18;margin-bottom:4px}.monitor-ports>div:not(.closeup-caption){display:flex;flex-direction:column;align-items:center;gap:3px}.monitor-ports small{font-size:8px;color:#4f321e}.monitor-ports .terminal{width:29px;font-size:8px;background:#dddac8}.monitor-reading{display:flex;justify-content:space-between;background:#3a4847;color:#cdd9d5;padding:10px;margin-top:12px;border-radius:4px;font-size:9px;letter-spacing:1px}.monitor-reading b{display:block;font-size:22px;letter-spacing:0;color:white;margin-top:5px}.training-input{border:1px solid #b4c0b8;background:linear-gradient(125deg,#fff,#e1e6e1);border-radius:6px;padding:12px;box-shadow:3px 4px 0 #b5bfb7,7px 12px 10px #263d3222}.training-input strong{font-size:25px;color:#4e685b;display:block}.training-input small{display:block;font-size:10px;margin-top:7px}.physical.float,.physical.probe{width:180px}.physical.float .terminals,.physical.probe .terminals{background:#a2ad9d;border-radius:3px;padding:6px}.bench-expanded .workspace{display:block}.bench-expanded .library,.bench-expanded .inspector{display:none}.bench-expanded main{max-width:1500px;margin:auto}.bench-expanded .bench-scroll{max-height:80vh}.bench-expanded .bench{margin:auto}.bench-toolbar{flex-wrap:wrap}.bench-toolbar .small{white-space:nowrap}.bench-caption .right{font-size:10px}.bench-scroll::-webkit-scrollbar{height:8px;width:8px}.bench-scroll::-webkit-scrollbar-thumb{background:#97aaa2;border-radius:5px}#devices img{visibility:visible}.room-heading{margin-top:18px}
@media(max-width:950px){.library{width:auto}.bench-toolbar{gap:6px}.bench-expanded main{padding:18px 12px}.bench-expanded .toolbar-hint{display:none}}@media(max-width:600px){.bench-scroll{border-width:5px;border-bottom-width:10px}.bench-toolbar{gap:5px}.mode-buttons button{padding:5px}.wire-colors{gap:4px}.bench-toolbar .small{padding:5px;font-size:10px}}

.real-bridgepro{height:335px}.physical-label{top:226px;left:68px;width:111px;font-size:6px;padding:3px 4px}.physical.puck .real-puck{background:transparent}

.vent-grille{height:50px;display:grid;grid-template-columns:1fr 1fr;gap:3px;padding:5px;margin-bottom:10px;background:#b6bcb3;border:5px solid #f8f9f5;border-radius:4px;box-shadow:2px 4px 2px #21392f44;transform:perspective(400px) rotateX(16deg)}.vent-grille span{background:repeating-linear-gradient(45deg,#eff1e9 0px,#eff1e9 3px,#4b5950 4px,#4b5950 6px)}.vent-grille span:nth-child(even){transform:scaleX(-1)}.vent-grille.closed span{background:repeating-linear-gradient(45deg,#eff1e9 0px,#eff1e9 4px,#afb7a9 5px,#afb7a9 6px)}

.real-monitor{height:390px}.physical.float .status-bottom,.physical.probe .status-bottom{display:none}@media(min-width:601px) and (max-width:950px){#shelf{max-height:680px;overflow:auto;padding:3px}.library-foot{margin-top:16px}}

/* Flair Style Guide: primary orange / blue; secondary slate, cream and pale blue. */
@font-face{font-family:Lato;src:url('assets/lato-light.woff2') format('woff2');font-weight:300 500;font-style:normal;font-display:swap}
@font-face{font-family:Lato;src:url('assets/lato-semibold.woff2') format('woff2');font-weight:600 900;font-style:normal;font-display:swap}
:root{font-family:Lato,sans-serif;color:#414c55;background:#f2f2f3;--teal:#03688c;--line:#d9dfe4;--muted:#64727e;--flair-blue:#1ac6ff;--flair-orange:#ff955a}
.brand{display:flex;align-items:center;flex-shrink:0;letter-spacing:normal}.brand img{display:block;width:149px;height:64px;object-fit:contain}header{height:88px;border-top:4px solid #1ac6ff;background:white}.workspace{min-height:calc(100vh - 88px)}
button:hover{background:#ccebf7;border-color:#1ac6ff}button:focus-visible,select:focus-visible,input:focus-visible{outline-color:#03688c}button.primary{background:#ff955a;border-color:#ff955a;color:#3e3216;font-weight:700}button.primary:hover{background:#fcc9ac;border-color:#ff955a}.beta{color:#03688c;background:#ccebf7}.shelf-item{background:#f9fafb}.shelf-symbol{color:#03688c}.shelf-item:hover{background:#ccebf7}.mode-buttons button.active,button.active.small{background:#ccebf7;color:#03688c}.text-button,.good{color:#03688c}.dial{background:conic-gradient(from 220deg,#1ac6ff 0deg,#ccebf7 210deg,#f2f2f3 211deg)}.dial strong{color:#414c55}.range,.check-row input{accent-color:#03688c}.hint-box{background:#ccebf7;color:#414c55}.issue{color:#964521}.response{border-top:3px solid #ff955a}.app-reserved{background:#f2f2f3}.device.physical.selected{outline-color:#03688c}.device.selected{outline-color:#03688c}.terminal:hover,.terminal.pending{border-color:#03688c;background:#ccebf7}.terminal-closeup .terminal.pending{outline-color:#1ac6ff}.radio-path{stroke:#03688c}.physical .device-head,.equipment-tag,.device-reading{color:#414c55}.bench-watermark{color:#64727e}.bench-scroll{background:#f2f2f3;border-color:#a1adb9;max-height:none}.bench{background-color:#f2f2f3;background-image:linear-gradient(105deg,#ffffff80,transparent 55%),linear-gradient(#a1adb91c 1px,transparent 1px),linear-gradient(90deg,#a1adb91c 1px,transparent 1px)}.bench::before{box-shadow:inset 0 12px 35px #414c5510,inset 0 -1px 0 #fff}.bench-expanded main{max-width:none;width:100%;margin:0}.bench-expanded .bench-scroll{max-height:none}.bench-expanded .bench{margin:0}.bench-scroll::-webkit-scrollbar-thumb{background:#a1adb9}.device:not(.physical) .device-head{background:#f2f2f3}.closeup-caption{color:#64727e}
@media(max-width:600px){header{height:78px;gap:10px;padding:0 12px}.brand img{width:112px;height:48px}.title{font-size:14px}}

.device-remove{position:absolute;right:4px;top:3px;width:26px;height:26px;padding:0;border:0;background:#fff9;color:#964521;font-size:21px;line-height:1;z-index:3;border-radius:4px}.device-remove:hover{background:#fcc9ac;color:#964521}.device-head,.physical .device-head{padding-right:36px}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.danger{background:#964521;color:white;border-color:#964521}.danger:hover{background:#783719;color:white;border-color:#783719}

/* Neutral equipment materials, with Flair blue interaction accents. */
.device:not(.physical){border-color:#a1adb9;background:linear-gradient(135deg,#fff,#f2f2f3);box-shadow:4px 6px 0 #a1adb9,9px 16px 12px #414c5526}
.device:not(.physical) .device-head{border-bottom-color:#d9dfe4}
.device:not(.physical) .terminals,.physical.float .terminals,.physical.probe .terminals{background:#a1adb9;border-top-color:#414c55}
.terminal,.device:not(.physical) .terminal,.terminal-closeup .terminal{background:linear-gradient(#f2f2f3,#a1adb9);border-color:#64727e;color:#414c55;box-shadow:0 2px 0 #414c55}
.terminal::before,.terminal-closeup .terminal::before{background:#414c55;border-color:#a1adb9;box-shadow:inset 0 1px 2px #0003}
.terminal.connected::before,.terminal-closeup .terminal.connected::before{background:var(--wire);border-color:#414c55}
.terminal:hover,.terminal.pending,.terminal-closeup .terminal:hover,.terminal-closeup .terminal.pending{background:#ccebf7;border-color:#03688c}
.terminal.pending::before{background:#1ac6ff}
.terminal-closeup{background:linear-gradient(170deg,#fff,#f2f2f3);border-color:#a1adb9;border-bottom-color:#a1adb9;box-shadow:4px 8px 9px #414c551c}
.sticker-terminals{background:#fff;border-color:#a1adb9}.sticker-group{border-right-color:#d9dfe4}.sticker-ports{background:#a1adb9}.sticker-label,.closeup-caption span{color:#414c55}.sticker-label small,.service-ports>small{color:#64727e}
.training-input{background:linear-gradient(125deg,#fff,#f2f2f3);border-color:#a1adb9;box-shadow:3px 4px 0 #a1adb9,7px 12px 10px #414c5522}.training-input strong{color:#414c55}.physical-label{color:#414c55;border-color:#a1adb9}.physical .grip{color:#a1adb9}.monitor-reading{background:#414c55;color:#f2f2f3}

.device-remove,.device-remove:hover{background:transparent;border:0;box-shadow:none}.device-remove:hover{color:#414c55}

.zoom-controls{display:flex;align-items:center;gap:3px}.zoom-controls #zoomBtn{min-width:48px;font-variant-numeric:tabular-nums}.zoom-controls button:disabled{opacity:.35;cursor:default}.zoom-controls #fitBtn.active{background:#ccebf7;color:#03688c}.bench-scroll,.bench-expanded .bench-scroll{max-height:max(600px,calc(100dvh - 260px))}

#scene{position:absolute;inset:0;pointer-events:none}#scene .device{pointer-events:auto}.bench{cursor:grab;touch-action:none}.bench.panning,.bench.panning *{cursor:grabbing!important}.device{cursor:default}

#fieldWires{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:4;pointer-events:none}.wire-outline{fill:none;stroke:#ffffffd9;stroke-width:7;pointer-events:none}.wire-end{stroke:#fff;stroke-width:1;pointer-events:none}.wire-path{stroke-linecap:round;filter:drop-shadow(0 2px 1px #414c5540)}.terminal.wire-highlight{outline:3px solid #1ac6ff;outline-offset:3px}

.device.thermostat{width:230px}.thermostat .device-body{padding:10px}.thermostat-housing{padding:15px 12px 10px;background:linear-gradient(140deg,#fff 12%,#f2f2f3 65%,#d9dfe4);border:1px solid #b8c1ca;border-radius:18px;box-shadow:inset 0 2px 2px #fff,inset 0 -4px 3px #a1adb94d,3px 6px 7px #414c5533}.thermostat-brand{font-size:8px;letter-spacing:1.5px;color:#64727e;margin-bottom:12px;text-align:center}.thermostat-face{display:flex;gap:8px;align-items:center}.thermostat-lcd{flex:1;min-width:0;border:3px solid #a1adb9;border-radius:5px;background:linear-gradient(135deg,#e3e9eb,#c8d3d8);box-shadow:inset 1px 2px 5px #414c5544;padding:8px;color:#414c55;font-family:monospace}.lcd-caption{font-size:8px;display:flex;justify-content:space-between;letter-spacing:.5px}.lcd-temp{font-size:43px;line-height:1.25;letter-spacing:-3px}.lcd-temp sup{font-size:20px;vertical-align:top;line-height:1.8}.lcd-bottom{display:flex;justify-content:space-between;font-size:8px;gap:6px}.thermostat-keys{display:flex;flex-direction:column;gap:9px}.thermostat-keys span{display:flex;align-items:center;justify-content:center;width:25px;height:30px;border:1px solid #b8c1ca;border-radius:6px;background:linear-gradient(#fff,#e3e7ea);box-shadow:0 2px 1px #a1adb9;color:#64727e;font-size:21px}.thermostat-switches{display:flex;justify-content:space-between;gap:8px;font-size:6px;color:#64727e;margin-top:17px}.thermostat-switches span{display:flex;align-items:center;gap:3px}.thermostat-switches i{display:inline-block;width:18px;height:7px;border-radius:5px;background:#a1adb9;box-shadow:inset 1px 1px 2px #414c5555;position:relative}.thermostat-switches i:after{content:'';position:absolute;width:8px;height:9px;top:-1px;right:1px;background:#f2f2f3;border:1px solid #64727e;border-radius:2px}.thermostat-slots{width:75px;height:5px;margin:12px auto 0;background:repeating-linear-gradient(90deg,#a1adb9 0,#a1adb9 2px,transparent 2px,transparent 5px)}.thermostat-room{margin:13px 2px 0}.thermostat .device-status{margin-top:4px}

.scenario-picker{display:block;width:100%;min-height:64px;text-align:left;white-space:normal;line-height:1.45;padding:12px 27px 12px 12px;position:relative;font-weight:600;color:#414c55;background:#fff}.scenario-picker:after{content:'⌄';position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#03688c}.scenario-options{display:grid;gap:8px}.scenario-option{text-align:left;white-space:normal;padding:13px 15px;line-height:1.45}.scenario-option strong{display:block;color:#414c55}.scenario-option strong span{color:#03688c;margin-left:6px}.scenario-option small{display:block;font-size:12px;color:#64727e;margin-top:4px}.scenario-option.current{background:#ccebf7;border-color:#03688c}

.shelf-symbol{display:flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:40px;color:#03688c}.shelf-symbol svg{display:block;width:36px;height:40px}.shelf-item{gap:9px}.shelf-item>span:nth-child(2){min-width:0;flex:1}.shelf-item .plus{flex-shrink:0}@media(max-width:600px){.shelf-symbol,.shelf-symbol svg{width:30px;height:34px}.shelf-symbol{flex-basis:30px}}

/* Local controls share the open workbench surface with the equipment. */
.local-temperature-controls{display:flex;flex-wrap:wrap;gap:6px 12px;margin:9px 0;position:relative;z-index:5}.local-temperature-row{display:flex;align-items:center;gap:4px;font-size:11px;flex:1;white-space:nowrap}.local-temperature-row>span{min-width:51px}.local-temperature-row strong{font-weight:600}.local-temperature-row button{width:26px;height:28px;padding:0;border:0;background:transparent;color:#03688c;font-size:20px;line-height:1}.local-temperature-row button:hover{background:#ccebf7}.local-temperature-row button:disabled{opacity:.3;cursor:default}.device.legacy-physical{background:transparent;border:0;box-shadow:none}.device.legacy-physical .device-head{background:transparent;border:0}.device.legacy-physical.selected{outline:1px dashed #03688c;outline-offset:6px}.legacy-physical .terminals{border-radius:7px;box-shadow:2px 4px 5px #414c5526}.legacy-physical .device-body{background:transparent}.thermostat .local-temperature-controls{margin-top:17px}.thermostat-room{margin-top:8px}.puck .local-temperature-controls{padding:0 5px}

.device.boiler{width:275px}.device.heatplant{width:245px}.taco-render{border:2px solid #495653;border-radius:4px;background:linear-gradient(135deg,#62896e,#35533f);padding:13px;box-shadow:5px 7px 0 #34463b,9px 13px 13px #414c5533;margin-bottom:18px}.taco-label{background:#f2f2f3;padding:7px;display:flex;align-items:center;justify-content:space-between;color:#414c55}.taco-label strong{font-size:24px;font-style:italic;color:#366c46}.taco-label span{font-size:8px}.taco-face{display:flex;justify-content:space-between;gap:8px;color:white;padding-top:20px;padding-bottom:15px}.taco-face b{font-size:11px}.taco-face small,.taco-face span{display:block;font-size:9px;margin-top:9px}.boiler-render{padding:30px 18px 15px}.boiler-cabinet{position:relative;border:2px solid #a1adb9;border-radius:10px;background:linear-gradient(110deg,#fff,#d9dfe4);padding:22px 15px;box-shadow:7px 6px 0 #64727e,12px 13px 12px #414c5533;text-align:center}.boiler-cabinet>span{font-size:9px;letter-spacing:1px}.boiler-pipes{height:33px;width:100px;margin:auto;border-left:14px solid #a1adb9;border-right:14px solid #a1adb9}.boiler-gauge{font-size:32px;margin:10px auto;color:#414c55}.boiler-display{background:#414c55;color:#ccebf7;padding:9px;font-size:10px;border-radius:3px}.boiler-grille{height:34px;margin-top:20px;background:repeating-linear-gradient(0deg,transparent 0 5px,#64727e 5px 7px)}

.puck-room-active{display:flex;align-items:center;gap:7px;border:0;background:transparent;padding:4px 5px;font-size:11px;color:#64727e;margin:5px 0}.puck-room-active[aria-pressed="true"]{color:#03688c}.puck-room-active:hover{background:#ccebf7}

.device.boiler{width:425px}.taco-render{height:218px;margin-top:0}.taco-face{padding-top:38px}.taco-terminals{border-radius:7px;background:#a1adb9;padding:10px;box-shadow:3px 5px 0 #64727e}.taco-zone-pairs{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.taco-zone{background:#f2f2f3;padding:8px 5px;text-align:center;border-radius:3px}.taco-zone>b{font-size:10px}.taco-zone>small{display:block;font-size:9px;min-height:24px;margin-top:5px}.taco-zone>div{display:flex;justify-content:center;gap:5px}.taco-zone .terminal{font-size:10px;padding:5px 6px}.zone-call{display:block;font-size:8px;margin-top:10px}.taco-end-switch{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:9px}.taco-end-switch>span:first-child{flex:1}.taco-end-switch small{font-size:8px}.device.heatplant .boiler-render{padding-top:0}.device.heatplant .boiler-pipes{height:27px}.device.heatplant .boiler-cabinet{height:218px}

.taco-render{margin-top:27px}

.taco-label strong{font-size:15px;font-style:normal;letter-spacing:.7px;color:#414c55}.taco-render{background:linear-gradient(135deg,#64727e,#414c55);border-color:#414c55;box-shadow:5px 7px 0 #414c55,9px 13px 13px #414c5533}

.device.boiler{width:655px}.taco-zone-pairs{grid-template-columns:repeat(7,1fr)}.taco-render{background:linear-gradient(135deg,#62896e,#35533f);border-color:#495653;box-shadow:5px 7px 0 #34463b,9px 13px 13px #414c5533}

.device.wirenut{width:115px}.wirenut .device-head{font-size:11px;padding-left:0}.wire-nut-cap{height:62px;width:45px;margin:5px auto;background:repeating-linear-gradient(90deg,#e5a530 0 5px,#f6c665 5px 8px);clip-path:polygon(25% 0,75% 0,100% 90%,90% 100%,10% 100%,0 90%);filter:drop-shadow(3px 4px 3px #414c5544);display:flex;align-items:center;justify-content:center;color:#414c55;font-weight:700}.wire-nut-cap.common{background:repeating-linear-gradient(90deg,#5b8cb7 0 5px,#8fb8d9 5px 8px)}.wirenut .terminals{background:transparent!important;border:0!important;justify-content:center}.wirenut .status-bottom{font-size:9px}.wirenut .device-body{padding:0}

#bench{user-select:none;-webkit-user-select:none}#bench input,#bench textarea{user-select:text;-webkit-user-select:text}.hide-left .library,.hide-right .inspector{display:none}.hide-left .workspace{grid-template-columns:minmax(0,1fr) 290px}.hide-right .workspace{grid-template-columns:228px minmax(0,1fr)}.hide-left.hide-right .workspace{grid-template-columns:minmax(0,1fr)}.bench-toolbar{flex-wrap:wrap}.taco-zone>small{min-height:34px;line-height:1.4}#zoneRoomCounts{display:grid;gap:6px;margin-top:16px}#zoneRoomCounts select{width:72px}@media(max-width:1100px){.hide-left .workspace{grid-template-columns:minmax(0,1fr)}.hide-right .workspace{grid-template-columns:180px minmax(0,1fr)}}@media(max-width:600px){.hide-left .workspace,.hide-right .workspace{display:flex}}
/* Molded orange wire connector, with rounded ribs and a recessed skirt. */
.wire-nut-cap,.wire-nut-cap.common{position:relative;width:48px;height:67px;clip-path:none;border-radius:18px 18px 12px 12px / 30px 30px 9px 9px;background:linear-gradient(100deg,#c76832 0%,#ff955a 23%,#ffc39f 39%,#ff955a 55%,#de773e 82%,#aa4f23 100%);border:1px solid #c76832;transform:perspective(180px) rotateX(8deg) rotateZ(-9deg);box-shadow:inset 3px 0 3px #ffe2cfaa,inset -4px 0 5px #8b3b2266,4px 7px 6px #414c5538;filter:none;isolation:isolate;color:#65371f;text-shadow:0 1px #ffd6bd;font-size:13px;padding-bottom:8px}.wire-nut-cap:before{content:'';position:absolute;inset:8px 5px 10px;border-radius:12px 12px 5px 5px;background:repeating-linear-gradient(90deg,transparent 0 4px,#a64c243d 4px 6px,#ffdfbf80 6px 8px);z-index:-1}.wire-nut-cap:after{content:'';position:absolute;left:-3px;right:-3px;bottom:-2px;height:11px;border-radius:50%;background:radial-gradient(ellipse at 50% 65%,#85401e 0 22%,#c96a35 28% 44%,#ff955a 49% 66%,#e47c43 72%);border:1px solid #b65b2a;box-shadow:inset 0 2px 2px #ffd2b8,0 2px 1px #414c5529}.wire-nut-cap span{padding:2px 5px;border-radius:4px;background:#ffbb915c}

.zone-group{position:absolute;pointer-events:none;border-radius:18px;background:color-mix(in srgb,var(--zone-tint) 40%,transparent);border:1px solid color-mix(in srgb,var(--zone-tint) 85%,#a1adb9);z-index:0}.zone-group>span{position:absolute;top:9px;left:14px;font-size:10px;letter-spacing:1px;color:#64727e}.sticker-group .sticker-label,.taco-zone{background:var(--zone-tint,#f2f2f3)}#stagingZone{width:100%;margin-bottom:15px}

.bottom{display:block}.bottom>.response{width:100%}#equipmentResponse{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:20px 0}.response-column h3{font-size:13px;margin:0 0 10px}.response-device{border:1px solid #d9dfe4;border-left:4px solid var(--zone-tint);border-radius:6px;padding:10px;margin-bottom:8px;background:#fff}.response-device>div{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.response-device strong{font-size:12px}.response-state{font-size:11px;color:#64727e}.response-state.responding{color:#03688c;font-weight:600}.response-device small{display:block;font-size:11px;line-height:1.5;color:#64727e;margin-top:5px}@media(max-width:1100px){#equipmentResponse{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){#equipmentResponse{grid-template-columns:1fr}}

.zone-call{display:flex;align-items:center;justify-content:center;gap:4px;font-size:7px;letter-spacing:.4px;margin:6px 0 0;line-height:12px;color:#64727e}.zone-call .led{display:inline-block;width:7px;height:7px;min-width:7px;border:1px solid #89979f;background:#cbd2d7;box-shadow:inset 0 1px 2px #414c5533;margin:0}.zone-call .led.on{background:#ff955a;border-color:#cf7542;box-shadow:0 0 5px #ff955a99,inset 0 1px 1px #ffe3d1}.sticker-label .zone-call>span{font-size:6px}.sticker-label{min-height:62px}
/* Follow the full circular LCD, including its flat lower edge. */
.physical.puck .puck-live-screen{inset:8.7%;border-radius:50%;clip-path:inset(0 0 11% 0);background:linear-gradient(145deg,#dedfe0 0%,#d6d7d8 48%,#c9cbcc 100%);box-shadow:inset 0 1px 2px #51545412}

.taco-zone>.zone-call{margin:0 0 7px}

.zone-group{pointer-events:auto}.zone-select{position:absolute;top:7px;left:12px;border:0;background:transparent;font-size:10px;letter-spacing:.6px;padding:3px;color:#414c55;pointer-events:auto}.zone-select:hover{background:#ffffff99}.zone-room-list{display:grid;gap:8px}.zone-room-list label{display:flex;align-items:center;gap:10px;padding:10px;background:#f2f2f3}.zone-room-list small{margin-left:auto}.zone-edit{display:block;width:100%;text-align:left;margin:6px 0;background:var(--zone-tint)}

.library,.inspector{position:relative}.panel-collapse{position:absolute;top:10px;right:8px;width:28px;height:28px;padding:0;border:0;background:transparent;color:#03688c;font-size:27px;line-height:1;z-index:2}.panel-collapse:hover{background:#ccebf7;border-radius:5px}.panel-ear{display:none;position:fixed;top:120px;width:24px;height:54px;padding:0;background:#fff;color:#03688c;border:1px solid #a1adb9;font-size:28px;z-index:20;box-shadow:0 2px 8px #414c551a}.panel-ear-left{left:0;border-left:0;border-radius:0 9px 9px 0}.panel-ear-right{right:0;border-right:0;border-radius:9px 0 0 9px}.hide-left .panel-ear-left,.hide-right .panel-ear-right{display:block}.panel-ear:hover{background:#ccebf7}

/* Lightweight airflow and hydronic heat cues, independent of field wiring. */
.vane-air{position:absolute;left:12%;top:77%;width:72%;height:38px;pointer-events:none;--flow-color:#ff955a;z-index:1}.vane-air.cool-air{--flow-color:#1ac6ff}.vane-air i{position:absolute;top:0;width:17%;height:24px;border-radius:50%;border-left:3px solid var(--flow-color);opacity:0;animation:vane-flow 2.8s ease-out infinite}.vane-air i:nth-child(1){left:4%;animation-delay:-.3s}.vane-air i:nth-child(2){left:24%;animation-delay:-1.6s}.vane-air i:nth-child(3){left:44%;animation-delay:-.8s}.vane-air i:nth-child(4){left:64%;animation-delay:-2.1s}.vane-air i:nth-child(5){left:84%;animation-delay:-1.2s}@keyframes vane-flow{0%{opacity:0;transform:translateY(-4px) scaleY(.5)}25%{opacity:.28}100%{opacity:0;transform:translate(5px,22px) scaleY(1.2)}}
.boiler-pipes{position:relative}.pipe-heat{position:absolute;left:-17px;top:-8px;width:20px;height:42px;pointer-events:none}.pipe-heat i{position:absolute;left:3px;bottom:0;width:14px;height:10px;border-radius:50%;background:#ff955a;opacity:0;animation:pipe-flow 2.6s ease-out infinite}.pipe-heat i:nth-child(2){animation-delay:-.85s}.pipe-heat i:nth-child(3){animation-delay:-1.7s}.heat-flowing .boiler-display{box-shadow:inset 0 -2px 0 #ff955a66}.heat-flowing .boiler-pipes{border-left-color:#c8a087}@keyframes pipe-flow{0%{opacity:0;transform:translateY(0) scale(.8)}30%{opacity:.32}100%{opacity:0;transform:translateY(-32px) scale(1.2)}}
@media(prefers-reduced-motion:reduce){.vane-air i,.pipe-heat i{animation:none;opacity:.16}.vane-air i{transform:translateY(5px)}.pipe-heat i:not(:first-child){display:none}}
/* Compact settings rhythm, matching equipment shelf text and spacing. */
.inspector{padding:26px 18px 18px;font-size:12px}.inspector label{font-size:12px;margin:10px 0 5px}.inspector select{font-size:12px;padding:7px 8px;min-height:32px}.inspector h3{font-size:13px}.inspector .section-title{font-size:14px;margin:12px 0 9px}.inspector hr{margin:15px 0}.inspector .control-row{font-size:12px;margin:11px 0 4px;gap:8px}.inspector .control-row label{margin:0}.inspector .num-input{font-size:12px;padding:5px 6px;min-height:29px}.inspector .range{margin:5px 0}.inspector .hint-box{font-size:11px;line-height:1.45;padding:8px;margin:8px 0}.inspector #stagingZone{margin-bottom:7px}.inspector .zone-edit{font-size:12px;padding:7px 8px;margin:5px 0}.inspector .check-row{font-size:12px;margin:9px 0}.inspector .port-list{font-size:11px;line-height:1.5}
/* Keep airflow readable at the workbench's fit-to-screen zoom. */
.real-mini{height:165px}.vane-air{top:108px;left:10%;width:76%;height:49px}.vane-air i{height:30px;border-left-width:5px;animation-duration:2s;filter:drop-shadow(0 0 2px var(--flow-color))}@keyframes vane-flow{0%{opacity:.08;transform:translateY(-4px) scaleY(.6)}25%{opacity:.55}80%{opacity:.24}100%{opacity:0;transform:translate(8px,26px) scaleY(1.25)}}
.pipe-heat{left:-21px;width:26px;height:50px}.pipe-heat i{width:21px;height:14px;filter:drop-shadow(0 0 3px #ff955a);animation-duration:2s}@keyframes pipe-flow{0%{opacity:.1;transform:translateY(0) scale(.8)}30%{opacity:.6}100%{opacity:0;transform:translateY(-40px) scale(1.3)}}

/* Broad curved airflow ribbons inspired by a vent airflow visualization. */
.real-mini{height:181px}.vane-air{left:6%;top:108px;width:83%;height:66px;overflow:hidden;filter:none;mask-image:linear-gradient(to bottom,#000 0%,#000 35%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 35%,transparent 100%)}.vane-air svg{width:100%;height:100%;overflow:visible}.air-plume{fill:var(--flow-color);opacity:.1}.air-stream{fill:none;stroke:var(--flow-color);stroke-width:9;stroke-linecap:round;stroke-dasharray:24 65;opacity:.38;animation:air-ribbon 2s linear infinite;animation-delay:var(--air-delay);filter:blur(.6px)}@keyframes air-ribbon{from{stroke-dashoffset:89}to{stroke-dashoffset:0}}@media(prefers-reduced-motion:reduce){.air-stream{animation:none;stroke-dasharray:none;opacity:.2}}

/* Hydronic equipment: metal bodies, brass valve, existing motor circuits. */
.device.zonevalve,.device.pumprelay,.device.circulator,.device.transformer{width:260px}
.valve-render{height:155px;position:relative;padding-top:12px;filter:drop-shadow(5px 8px 5px #424f5828)}
.valve-actuator{width:120px;height:85px;margin:auto;background:linear-gradient(120deg,#fafafa,#bdc6cc);border:1px solid #96a3ad;border-radius:12px 12px 6px 6px;box-shadow:inset -8px -4px 0 #9ba8b340;display:grid;place-content:center;gap:12px;text-align:center}
.valve-actuator small{font-size:9px;letter-spacing:1px}.valve-actuator b{font-size:14px;color:#67747c}
.valve-brass{height:35px;background:linear-gradient(#c69d55,#f3d793 35%,#a47a36);margin:0 12px;border:1px solid #a38043;border-radius:5px;text-align:center;font-size:25px;color:#705526}
.valve-open .valve-actuator b{color:#bd591f}.valve-open .valve-brass{box-shadow:0 3px 14px #ff955a55}
.pump-render{height:165px;position:relative;padding-top:20px;filter:drop-shadow(4px 6px 5px #424f5830)}
.pump-pipe{position:absolute;top:53px;left:10px;right:10px;height:33px;border-radius:4px;background:linear-gradient(#b8c3c8,#eef1f2 40%,#8c9ba5)}
.pump-motor{position:relative;margin:auto;width:96px;height:96px;border:8px solid #577865;border-radius:50%;background:radial-gradient(circle at 35% 30%,#86a991,#335340);box-shadow:inset 0 0 0 3px #afc1ad,4px 3px 0 #354b3e;display:grid;place-items:center}
.pump-motor span{font-size:50px;color:#d7e2dc}.pump-running .pump-motor span{animation:pump-turn 3s linear infinite}.pump-base{position:relative;width:108px;margin:auto;padding:10px 0;text-align:center;background:linear-gradient(110deg,#668b74,#3b5948);color:#eee;font-size:10px;border-radius:3px}
.pump-relay-render{padding:18px;background:linear-gradient(120deg,#668873,#35513f);border-radius:5px;box-shadow:5px 5px 0 #8fa496;min-height:155px;color:#f7faf7;display:grid;gap:18px}.pump-relay-render small{font-size:10px}.pump-relay-render b{font-size:11px}.pump-relay-render .zone-call{position:static;display:flex}
.transformer-render{height:135px;padding:30px 15px;margin:10px;background:repeating-linear-gradient(90deg,#a4aeb7 0 4px,#7d8b96 4px 6px);border:8px solid #c0c8ce;border-radius:5px;box-shadow:5px 6px 0 #8c99a3;display:grid;place-content:center;text-align:center;gap:12px}.transformer-render span,.transformer-render small{background:#eff1f3;padding:4px}.transformer-render span{font-size:22px}.transformer-render small{font-size:8px}
@keyframes pump-turn{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.pump-running .pump-motor span{animation:none}}

.motor-link{fill:none;stroke:#8d9ba5;stroke-width:2;stroke-dasharray:3 5;opacity:.55}

.white-wire-outline{stroke:#76838e;stroke-width:6.5}.wire-end{stroke:#6c7d88;stroke-width:1}.wire-path,.wire-hit{cursor:grab}.wire-end-grab{fill:transparent;stroke:transparent;pointer-events:all;cursor:grab;touch-action:none}.wire-selected .wire-outline{stroke:#1ac6ff;stroke-width:8}.wire-selected .white-wire-outline{stroke:#647c8b;stroke-width:8}.wire-selected .wire-end{stroke:#1ac6ff;stroke-width:2}.rewiring,.rewiring *{cursor:grabbing!important}.rewiring #fieldWires *{pointer-events:none!important}.wire-color[aria-label="White wire"]{border-color:#b3bec7}#removeWireBtn[hidden]{display:none}

.zone-room-count{display:flex;align-items:center;justify-content:flex-start;gap:16px;margin:14px 0}.zone-room-count label{margin:0;min-width:130px}.zone-room-count select{width:150px;min-width:150px;flex:0 0 150px;margin:0;padding-right:30px}.terminal-lettering{pointer-events:none;fill:#424f58;stroke:#e5eaee;stroke-width:3px;stroke-linejoin:round;paint-order:stroke fill}

.usb-power-badge{position:absolute;right:12px;bottom:18px;display:flex;align-items:center;gap:6px;padding:6px 9px;border:1px solid #d4dfe5;border-radius:16px;background:#ffffffed;color:#61717d;font-size:11px;box-shadow:0 2px 5px #424f5812;z-index:2}.usb-power-badge svg{width:21px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6}.usb-power-badge i{width:5px;height:5px;background:#a5afb7;border-radius:50%}.usb-power-badge.powered{color:#006c8e}.usb-power-badge.powered i{background:#1ac6ff;box-shadow:0 0 5px #1ac6ff66}

.bench-top{flex-wrap:wrap}.tools{flex-wrap:wrap}.peeking-wiring .workspace{pointer-events:none}.peeking-wiring #peekWiringBtn{pointer-events:auto;background:#cceffc;border-color:#1ac6ff}.peeking-wiring .bench-scroll{outline:2px solid #1ac6ff}.peeking-wiring #hint::before{content:'COMPLETED WIRING PREVIEW · ';font-weight:700;color:#006c8e}
/* Readable, consistently aligned controls on room devices. */
.local-temperature-controls{display:grid;grid-template-columns:1fr;gap:8px}
.local-temperature-row{display:grid;grid-template-columns:minmax(0,1fr) 32px 32px;gap:6px}
.local-temperature-row button{width:32px;height:32px;border:1px solid #9fb9c8;border-radius:7px;background:#ffffffd9;box-shadow:0 1px 2px #424f5814;color:#006c8e;font-size:23px;font-weight:600}
.local-temperature-row button:hover{background:#d8f3fc;border-color:#006c8e;box-shadow:0 2px 4px #006c8e20}
.local-temperature-row button:active{background:#bceafa;transform:translateY(1px);box-shadow:none}
.puck-room-active{border:1px solid #acbdc8;border-radius:16px;background:#ffffffd9;padding:6px 10px;min-height:32px;gap:8px}
.puck-room-active::after{content:'';width:25px;height:14px;border-radius:8px;background:radial-gradient(circle at 7px 7px,#fff 0 5px,transparent 5.5px),#9baab4;margin-left:3px}
.puck-room-active[aria-pressed="true"]{border-color:#82bfd4;background:#e9f7fc}
.puck-room-active[aria-pressed="true"]::after{background:radial-gradient(circle at 18px 7px,#fff 0 5px,transparent 5.5px),#006c8e}
/* Official Smart Vent render, framed tightly without altering the source asset. */
.device.physical.vent{width:300px}.real-vent{position:relative;width:100%;height:155px;overflow:hidden;margin:12px 0}.real-vent img{position:absolute;width:150%;max-width:none;left:-21%;top:-148px;pointer-events:none}.room-group{pointer-events:none}.room-group-label{display:block;padding:10px 14px;font-size:11px;color:#647888;text-transform:uppercase;letter-spacing:.06em}.setup-counts{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px}.setup-counts label{min-height:2.5em}#remoteSensorSetup[hidden],#newVentRoom[hidden]{display:none}#ventSetupError{color:#a33a18}@media(max-width:600px){.setup-counts{grid-template-columns:1fr}}

.device.physical.sensor{width:230px}.remote-sensor-render{position:relative;width:158px;height:185px;margin:18px auto 24px;filter:drop-shadow(7px 12px 9px #424f581f)}.remote-sensor-shell{position:absolute;inset:0 7px 23px;border-radius:42px;background:linear-gradient(125deg,#fff 12%,#f8f9fa 60%,#d9dfe3);border:1px solid #d2d8dd;box-shadow:inset 3px 3px 4px #fff,inset -5px -4px 6px #c3cbd3,4px 4px 0 #cbd2d8;z-index:1}.remote-sensor-window{position:absolute;top:24px;left:37px;width:69px;height:63px;border-radius:25px;background:linear-gradient(140deg,#49555d,#172b36);border:3px solid #e5e9eb;box-shadow:inset 2px 3px 7px #12232d70,0 1px 1px #fff}.remote-sensor-window i{position:absolute;width:15px;height:15px;top:23px;left:25px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#8b9da6,#354650 65%,#23343d);opacity:.7}.remote-sensor-indicator{position:absolute;bottom:33px;left:68px;width:5px;height:5px;border-radius:50%;background:#cbd4d9}.remote-sensor-indicator.online{background:#78aebf;box-shadow:0 0 3px #1ac6ff44}.remote-sensor-seam{position:absolute;bottom:14px;left:45px;width:54px;height:2px;border-radius:50%;background:#cbd2d7}.remote-sensor-foot{position:absolute;bottom:8px;left:39px;width:83px;height:36px;border-radius:12px 12px 28px 28px;background:linear-gradient(#e1e6ea,#fff 60%,#c5ced5);border:1px solid #d3dbe0;transform:perspective(100px) rotateX(25deg)}

#wireColors[hidden]{display:none}

.puck-room-active{margin-left:auto;margin-right:5px}
.remote-sensor-indicator,.remote-sensor-indicator.online{background:#e4e8eb;box-shadow:none}
.device.physical.air{width:312px}.physical.air .terminals{flex-wrap:nowrap}.physical.air .terminal{flex-shrink:0;white-space:nowrap}.adapter-housing{position:relative;height:190px;margin:20px 12px 25px;padding:45px 22px 20px;background:linear-gradient(130deg,#fff,#f5f5f3 65%,#e1e4e5);border:1px solid #cbd2d7;border-radius:6px;box-shadow:6px 8px 0 #c5cdd2,10px 15px 15px #414c5520,inset 0 0 0 7px #f8f9fa;display:flex;flex-direction:column;gap:9px;color:#64727e}.adapter-housing span{font-size:21px}.adapter-housing strong{font-size:12px}.adapter-housing small{font-size:9px}.adapter-screw{position:absolute;top:13px;right:13px;width:7px;height:7px;border:1px solid #b5bdc2;border-radius:50%;background:linear-gradient(90deg,#eee 40%,#aab5bc 45% 55%,#fff 60%)}.adapter-screw.lower{top:auto;bottom:13px;left:13px}.adapter-slots{height:9px;width:100px;background:repeating-linear-gradient(90deg,#bfc8ce 0 2px,transparent 2px 6px);margin-top:5px}.device.physical.pressure{width:340px}.pressure-render{height:210px;overflow:hidden;position:relative}.pressure-render img{position:absolute;width:180%;max-width:none;left:-46%;top:-60px}.physical.air .terminals,.physical.pressure .terminals{border-radius:6px}.terminal-add{pointer-events:all;cursor:pointer}.terminal-add circle{fill:#fff;stroke:#03688c;stroke-width:1.3}.terminal-add text{fill:#03688c;font-size:15px;pointer-events:none}.terminal-add:hover circle,.terminal-add:focus circle{fill:#ccebf7}

.device.physical.air .terminals{display:flex;flex-wrap:nowrap;gap:6px}

.device.thermostat .terminals{display:flex;flex-wrap:nowrap;gap:5px}.device.thermostat .terminal{flex-shrink:0;white-space:nowrap}

/* Email capture keeps the bench inert until the visitor completes signup. */
.training-locked .workspace{filter:blur(4px);opacity:.3;user-select:none}
#trainingIdentityButton{font-size:11px;padding:7px 10px}
#trainingSignup{max-width:600px}#trainingSignup p{line-height:1.5}
.capture-scenario{font-weight:700;color:#03688c;margin-bottom:10px}
#trainingSignup input:not([type=checkbox]){width:100%;border:1px solid #ccd5dd;border-radius:6px;padding:11px 12px;background:#fff;color:#414c55;font:inherit}
.capture-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}
#trainingSignup label span:not(.required-label){font-size:12px;color:#64727e;font-weight:400}
#trainingSignup .required-label{font-size:11px;color:#64727e}
#trainingSignup .capture-consent{display:flex;align-items:flex-start;gap:12px;margin:22px 0 12px;line-height:1.5}
#trainingSignup .capture-consent span{font-size:13px;color:#414c55}
.capture-consent input{flex:none;width:18px;height:18px;margin:2px 0;accent-color:#03688c}.capture-consent strong{display:block;font-size:12px}
#trainingSignup .capture-privacy{font-size:12px;color:#64727e}.capture-privacy a{color:#03688c}
.capture-preview{background:#e8f6fc;color:#03688c;padding:10px 12px;border-radius:5px;font-size:12px;margin-top:12px}
.capture-honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
#trainingSignupError{color:#a6441a;margin-top:10px}
@media(max-width:560px){.capture-fields{grid-template-columns:1fr;gap:0}}

/* Keep setup, signup and help dialogs visible near the top of tall embeds. */
.embedded-trainer dialog{margin:24px auto auto;max-height:min(85vh,800px);overflow-y:auto}

/* Top-aligned mobile entry also works inside a tall storefront iframe. */
.mobile-training .workspace,.mobile-training .header-right{display:none!important}
#mobileTraining{max-width:520px;margin:0 auto;padding:28px 20px 48px;color:#424f58}
#mobileTraining[hidden]{display:none}
.mobile-training-card h1{font-size:30px;line-height:1.15;margin:16px 0}
.mobile-training-card h2{font-size:21px;margin:28px 0 8px}
.mobile-training-card p{line-height:1.55}
.desktop-outline{width:72px;height:58px;fill:none;stroke:#007398;stroke-width:2.5}
#desktopLinkForm>label:first-child{display:block;margin:20px 0 8px;font-weight:700}
#desktopLinkEmail{box-sizing:border-box;width:100%;padding:13px;font-size:16px}
#desktopLinkForm .capture-consent{display:flex;gap:10px;align-items:flex-start;margin:18px 0;font-size:14px;line-height:1.5}
#desktopLinkForm .capture-consent input{flex-shrink:0;width:20px;height:20px;margin-top:2px}
#desktopLinkForm button{width:100%;padding:14px;font-size:16px}
#desktopLinkStatus{font-weight:700;color:#007398}
@media(max-width:767px){body.mobile-training{min-width:0}}

#desktopLinkEmail{border:1px solid #b8c4cc;border-radius:7px;background:#fff}

#closeModal[hidden]{display:none}

/* Embedded storefronts supply their own branding header. */
.hide-trainer-header body>header{display:none}
.hide-trainer-header .workspace{min-height:100vh}
.hide-trainer-header .library-foot #trainingIdentityButton{display:block;margin-top:14px}
.hide-trainer-header .library-foot #trainingIdentityButton[hidden]{display:none}
