:root{--white:#FFFFFF;--ice:#EEF2F8;--royal:#3E5BD8;--midnight:#23345F;--slate:#667085;--ink:#101828;--ground:#FFFFFF;--panel:#FFFFFF;--sunk:#F6F8FC;--chrome:#EEF2F8;--rule:#DCE3EF;--rule-soft:#E9EEF6;--faint:#8B95A8;--royal-bg:#EDF1FD;--go:#0F7A55;--go-bg:#E6F4EE;--go-rule:#BFE0D2;--stop:#9F1239;--stop-bg:#FCEBF0;--stop-ink:#8A0F31;--warn:#8A5A00;--warn-bg:#FFF4DB;--sans: Manrope, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;--s12:48px;--r-sm:6px;--r-md:10px;--r-full:999px;--l-hvac-bg:#EDF1FD;--l-hvac:#2C47B8;--l-ctrl-bg:#F1ECFB;--l-ctrl:#5B3AA8;--l-refr-bg:#E7F5F8;--l-refr:#0E6475;--l-cnst-bg:#FBF0E6;--l-cnst:#8A4B12;--l-other-bg:#F1F3F7;--l-other:#475467;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:#0C1220;--panel:#131C2E;--sunk:#0F1725;--chrome:#131C2E;--rule:#25324A;--rule-soft:#1B2438;--midnight:#C9D5EC;--slate:#94A2BC;--ink:#EEF2F8;--faint:#6E7C96;--royal:#7B93F0;--royal-bg:#1A2444;--go:#4FBF92;--go-bg:#11291F;--go-rule:#1E4536;--stop:#EE8AA6;--stop-bg:#2E1420;--stop-ink:#F4A8BD;--warn:#F2C76B;--warn-bg:#2B2210;--l-hvac-bg:#1A2444;--l-hvac:#A9BAF6;--l-ctrl-bg:#261C3D;--l-ctrl:#C7B4F0;--l-refr-bg:#0F2A30;--l-refr:#8FD3E0;--l-cnst-bg:#2E1F10;--l-cnst:#F0B98A;--l-other-bg:#1B2438;--l-other:#B4BFD3;color-scheme:dark}}:root[data-theme=dark]{--ground:#0C1220;--panel:#131C2E;--sunk:#0F1725;--chrome:#131C2E;--rule:#25324A;--rule-soft:#1B2438;--midnight:#C9D5EC;--slate:#94A2BC;--ink:#EEF2F8;--faint:#6E7C96;--royal:#7B93F0;--royal-bg:#1A2444;--go:#4FBF92;--go-bg:#11291F;--go-rule:#1E4536;--stop:#EE8AA6;--stop-bg:#2E1420;--stop-ink:#F4A8BD;--warn:#F2C76B;--warn-bg:#2B2210;--l-hvac-bg:#1A2444;--l-hvac:#A9BAF6;--l-ctrl-bg:#261C3D;--l-ctrl:#C7B4F0;--l-refr-bg:#0F2A30;--l-refr:#8FD3E0;--l-cnst-bg:#2E1F10;--l-cnst:#F0B98A;--l-other-bg:#1B2438;--l-other:#B4BFD3;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--ground);color:var(--slate);font:400 14px/1.45 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3{color:var(--midnight);margin:0}h1{font-size:24px;font-weight:700;letter-spacing:-.015em}h2{font-size:17px;font-weight:700;letter-spacing:-.01em}h3{font-size:14px;font-weight:700}a{color:var(--royal);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--royal);outline-offset:2px}.label{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.muted{color:var(--faint)}.num{font-variant-numeric:tabular-nums}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.shell{display:grid;grid-template-columns:216px 1fr;min-height:100vh}.side{background:var(--sunk);border-right:1px solid var(--rule);padding:var(--s4) var(--s3);display:flex;flex-direction:column;gap:var(--s1);position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s2) var(--s4)}.brand img{width:28px;height:28px}.brand b{color:var(--midnight);font-weight:800;font-size:16px;letter-spacing:-.01em;display:block}.brand span{font-size:12px;color:var(--faint)}.nav{display:flex;align-items:center;gap:var(--s2);padding:9px var(--s3);border-radius:var(--r-sm);color:var(--slate);font-weight:600}.nav:hover{background:var(--chrome);text-decoration:none}.nav.on{background:var(--royal-bg);color:var(--royal)}.side .grow{flex:1}.who{font-size:12px;padding:var(--s2) var(--s3)}.main{min-width:0;padding:var(--s6)}.topbar{display:flex;align-items:center;gap:var(--s3);margin-bottom:var(--s4);flex-wrap:wrap}.topbar h1{margin-right:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:0 14px;border-radius:var(--r-sm);border:1px solid var(--rule);background:var(--panel);color:var(--midnight);font-weight:600;cursor:pointer;white-space:nowrap}.btn:hover{border-color:var(--royal)}.btn.primary{background:var(--royal);border-color:var(--royal);color:#fff}.btn.primary:hover{filter:brightness(1.08)}.btn.go{background:var(--go);border-color:var(--go);color:#fff}.btn.danger{color:var(--stop);border-color:var(--stop-bg)}.btn.ghost{border-color:transparent;background:transparent;color:var(--royal)}.btn.small{min-height:30px;padding:0 10px;font-size:13px}.btn:disabled{opacity:.55;cursor:not-allowed;filter:none}.icon-btn{width:36px;padding:0}.input,.select,.textarea{width:100%;min-height:38px;padding:8px 10px;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--panel);color:var(--ink)}.textarea{min-height:84px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--royal);outline:none;box-shadow:0 0 0 3px var(--royal-bg)}.input[readonly]{background:var(--sunk);color:var(--slate)}.input.err,.select.err,.textarea.err{border-color:var(--stop)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--s3);min-width:0}.field>span{font-size:13px;font-weight:600;color:var(--midnight)}.field .hint{font-size:12px;color:var(--faint)}.field .error{font-size:12px;color:var(--stop)}.row{display:flex;gap:var(--s3)}.row>*{flex:1;min-width:0}.seg{display:inline-flex;background:var(--chrome);border-radius:var(--r-sm);padding:3px}.seg button{border:0;background:transparent;padding:6px 14px;border-radius:5px;font-weight:600;cursor:pointer;color:var(--slate)}.seg button.on{background:var(--panel);color:var(--midnight);box-shadow:0 1px 2px #10182814}.toggle{display:flex;align-items:center;gap:var(--s2);cursor:pointer;font-weight:600;color:var(--midnight)}.toggle input{width:36px;height:20px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--rule);border-radius:var(--r-full);position:relative;cursor:pointer;transition:background .15s;flex:none}.toggle input:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s}.toggle input:checked{background:var(--go)}.toggle input:checked:after{left:18px}.card{background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);padding:var(--s4)}.card+.card{margin-top:var(--s4)}.card-h{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s3)}.card-h h2{margin-right:auto}.count{background:var(--chrome);color:var(--slate);border-radius:var(--r-full);padding:0 8px;font-size:12px;font-weight:700}.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:var(--r-full);font-size:12px;font-weight:700;background:var(--chrome);color:var(--slate);white-space:nowrap}.chip.go{background:var(--go-bg);color:var(--go)}.chip.royal{background:var(--royal-bg);color:var(--royal)}.chip.stop{background:var(--stop-bg);color:var(--stop-ink)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.note{padding:var(--s3);border-radius:var(--r-sm);background:var(--sunk);font-size:13px}.note.warn{background:var(--warn-bg);color:var(--warn)}.note.stop{background:var(--stop-bg);color:var(--stop-ink)}.note.go{background:var(--go-bg);color:var(--go)}.table-wrap{overflow-x:auto}table.t{width:100%;border-collapse:collapse}.t th{text-align:left;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);padding:8px 10px;border-bottom:1px solid var(--rule);white-space:nowrap}.t td{padding:10px;border-bottom:1px solid var(--rule-soft);vertical-align:top;color:var(--ink)}.t tr.click{cursor:pointer}.t tr.click:hover td{background:var(--sunk)}.t td .sub{color:var(--faint);font-size:12px}.empty{text-align:center;padding:var(--s8) var(--s4);color:var(--faint)}.empty b{display:block;color:var(--midnight);margin-bottom:4px}.skel{background:linear-gradient(90deg,var(--chrome),var(--sunk),var(--chrome));background-size:200% 100%;animation:sk 1.2s infinite;border-radius:var(--r-sm);min-height:14px}@keyframes sk{to{background-position:-200% 0}}.kv{display:grid;grid-template-columns:130px 1fr;gap:6px var(--s3)}.kv dt{color:var(--faint);font-size:13px}.kv dd{margin:0;color:var(--ink);min-width:0;overflow-wrap:anywhere}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#10182873;display:flex;align-items:center;justify-content:center;z-index:50;padding:var(--s4)}.modal{background:var(--panel);border-radius:var(--r-md);box-shadow:0 20px 50px #10182840;width:min(860px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column}.modal.narrow{width:min(460px,100%)}.modal-h{display:flex;align-items:center;padding:var(--s4) var(--s6);border-bottom:1px solid var(--rule-soft)}.modal-h h2{margin-right:auto}.modal-b{padding:var(--s4) var(--s6);overflow-y:auto}.modal-f{display:flex;gap:var(--s2);padding:var(--s3) var(--s6);border-top:1px solid var(--rule-soft)}.cols2{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--s6)}.section-t{margin:var(--s3) 0 var(--s3)}.dashed{width:100%;min-height:56px;border:1.5px dashed var(--royal);border-radius:var(--r-sm);background:var(--royal-bg);color:var(--royal);font-weight:700;cursor:pointer}.toasts{position:fixed;right:var(--s4);bottom:var(--s4);display:flex;flex-direction:column;gap:var(--s2);z-index:60;max-width:min(420px,calc(100vw - 32px))}.toast{background:var(--midnight);color:var(--white);padding:var(--s3) var(--s4);border-radius:var(--r-sm);box-shadow:0 8px 24px #10182833;font-weight:600}:root[data-theme=dark] .toast{color:var(--ground)}.toast.err{background:var(--stop)}.results{border:1px solid var(--rule);border-radius:var(--r-sm);margin-top:4px;max-height:260px;overflow-y:auto;background:var(--panel)}.results button{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 10px;cursor:pointer;border-bottom:1px solid var(--rule-soft)}.results button:hover,.results button:focus{background:var(--royal-bg);outline:none}.results b{color:var(--midnight);display:block}.results small{color:var(--faint)}.board{background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);overflow:auto;max-height:calc(100vh - 150px);position:relative}.grid{position:relative}.ghead{display:flex;position:sticky;top:0;z-index:3;background:var(--panel);border-bottom:1px solid var(--rule)}.gcorner{position:sticky;left:0;z-index:4;background:var(--panel);flex:none;padding:8px 12px;font-size:12px;color:var(--faint);border-right:1px solid var(--rule)}.ghour{flex:none;font-size:12px;font-weight:600;color:var(--faint);padding:8px 6px;border-left:1px solid var(--rule-soft)}.grow-row{display:flex;border-bottom:1px solid var(--rule-soft)}.gname{position:sticky;left:0;z-index:2;background:var(--panel);flex:none;display:flex;align-items:center;gap:10px;padding:0 12px;border-right:1px solid var(--rule)}.gname b{color:var(--midnight);display:block}.gname small{color:var(--faint);font-size:12px}.avatar{width:30px;height:30px;border-radius:50%;background:var(--royal-bg);color:var(--royal);display:grid;place-items:center;font-weight:800;font-size:12px;flex:none}.gtrack{position:relative;flex:none;background-image:linear-gradient(to right,var(--rule-soft) 1px,transparent 1px)}.gtrack.over{background-color:var(--royal-bg)}.unassigned .gname,.unassigned .gtrack{background-color:var(--sunk)}.blk{position:absolute;border-radius:var(--r-sm);padding:4px 8px;font-size:12px;overflow:hidden;cursor:grab;border:1px solid transparent;text-align:left;line-height:1.3}.blk:hover{border-color:currentColor}.blk b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700}.blk span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.85}.blk.done{opacity:.55}.blk .dot{position:absolute;top:5px;right:5px;width:8px;height:8px;border-radius:50%;background:var(--go);box-shadow:0 0 0 2px var(--panel)}.line-HVAC,.line-ACON,.line-RTU,.line-FURN,.line-HEATNG,.line-COMHEAT,.line-CHPMP,.line-BOILER,.line-VENT,.line-CHW,.line-RCOOL{background:var(--l-hvac-bg);color:var(--l-hvac)}.line-CCTRL{background:var(--l-ctrl-bg);color:var(--l-ctrl)}.line-REFRG{background:var(--l-refr-bg);color:var(--l-refr)}.line-CNSTR{background:var(--l-cnst-bg);color:var(--l-cnst)}.line-other{background:var(--l-other-bg);color:var(--l-other)}.nowline{position:absolute;top:0;bottom:0;width:2px;background:var(--go);z-index:1;pointer-events:none}.layout-board{display:grid;grid-template-columns:1fr;gap:var(--s4)}.layout-board.with-panel{grid-template-columns:1fr 300px}.avail{max-height:calc(100vh - 150px);overflow-y:auto}.avail-item{border:1px solid var(--rule);border-radius:var(--r-sm);padding:10px;margin-bottom:var(--s2);cursor:grab;background:var(--panel)}.avail-item:hover{border-color:var(--royal)}.avail-item b{color:var(--midnight);display:block}.week-cell{flex:none;border-left:1px solid var(--rule-soft);padding:4px;display:flex;flex-direction:column;gap:4px;min-height:64px}.week-cell.over{background:var(--royal-bg)}.wchip{position:relative;border-radius:var(--r-sm);padding:3px 6px;font-size:12px;cursor:grab;text-align:left;border:0}.wchip b{font-weight:700}.tech{max-width:640px;margin:0 auto;padding:var(--s4) var(--s4) calc(96px + env(safe-area-inset-bottom))}.tech-top{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s4)}.tech-top img{width:28px}.tech-top h1{font-size:20px;margin-right:auto}.tcard{display:block;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);padding:var(--s4);margin-bottom:var(--s3);color:inherit}.tcard:hover{text-decoration:none;border-color:var(--royal)}.tcard b{color:var(--midnight);font-size:16px}.tbar{position:fixed;left:0;right:0;bottom:0;background:var(--panel);border-top:1px solid var(--rule);padding:var(--s3) var(--s4) calc(var(--s3) + env(safe-area-inset-bottom));display:flex;gap:var(--s2);justify-content:center}.tbar .btn{flex:1;max-width:300px;min-height:48px;font-size:15px}.tech .btn{min-height:44px;white-space:normal;text-align:center;padding-top:8px;padding-bottom:8px;overflow-wrap:anywhere}.stepper{display:flex;align-items:center;gap:var(--s2)}.stepper .btn:not(.primary){width:44px;padding:0;font-size:18px}.stepper .input{text-align:center;width:80px;flex:none}.login{min-height:100vh;display:grid;grid-template-rows:1fr auto;place-items:center;padding:var(--s4);background:var(--sunk)}.login .card{width:min(380px,100%);padding:var(--s8) var(--s6)}.org-logo{width:100%;background:#fff;border-radius:var(--r-md);padding:var(--s2) var(--s3)}.brand .org-logo img,.org-logo img{display:block;width:100%;height:auto}.org-logo.big{padding:var(--s3) var(--s4);margin-bottom:var(--s6)}.org-name{color:var(--midnight);font-weight:800;font-size:16px;letter-spacing:-.01em}.org-name.big{font-size:24px;margin-bottom:var(--s6)}.powered{font-size:11px;color:var(--faint);margin:var(--s3) 0 0;text-align:center}.powered a{color:inherit;text-decoration:underline;text-underline-offset:2px}.side .powered{text-align:left;padding:0 var(--s3);margin-top:var(--s2)}.linkish{background:none;border:0;padding:0;color:var(--royal);font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.steps{padding-left:20px;margin:0 0 16px;display:grid;gap:var(--s3);color:var(--slate);font-size:14px;line-height:1.5}.qr{display:block;margin:var(--s3) 0;background:#fff;padding:var(--s2);border-radius:var(--r-sm);border:1px solid var(--rule)}.setup-key{display:block;margin-top:var(--s1);font-family:var(--mono);font-size:15px;letter-spacing:.04em;color:var(--midnight);word-break:break-all}.codes{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2);padding:var(--s3);background:var(--sunk);border:1px solid var(--rule);border-radius:var(--r-sm)}.codes code{font-family:var(--mono);font-size:15px;color:var(--midnight);text-align:center}.check{display:flex;align-items:center;gap:var(--s2);font-size:14px;color:var(--midnight)}.account{max-width:560px;display:grid;gap:var(--s4)}.account .card{padding:var(--s6)}@media(max-width:900px){.shell{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:var(--s2)}.side .grow,.who,.side .powered{display:none}.brand{padding:0 var(--s2)}.side .org-logo{width:132px;padding:4px var(--s2)}.main{padding:var(--s4)}.cols2,.layout-board.with-panel{grid-template-columns:1fr}.kv{grid-template-columns:1fr;gap:2px}.kv dd{margin-bottom:var(--s2)}.modal-h,.modal-b,.modal-f{padding-left:var(--s4);padding-right:var(--s4)}}@media(max-width:640px){.toasts{top:var(--s3);bottom:auto;left:var(--s3);right:var(--s3);max-width:none}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
