:root{color:#17211d;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--ink:#17211d;--muted:#617069;--panel:#fff;--line:#dde2e5;--green:#287a59;--green-strong:#195d43;--amber:#c28222;--red:#b5413c;--blue:#2e6f95;--shadow:0 14px 40px #1f26221f;background:#f6f7f8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#f6f7f8;min-width:0;min-height:100vh;margin:0}button,input,select{font:inherit}button{border:0}.loading-screen,.auth-screen{place-items:center;min-height:100vh;padding:24px;display:grid}.loading-mark{border:5px solid #d9d1c3;border-top-color:var(--green);border-radius:50%;width:52px;height:52px;animation:.9s linear infinite spin}.auth-panel{background:0 0;width:min(100%,420px);padding:28px}.brand-mark{width:56px;height:56px;color:var(--green-strong);background:#e2f0e8;border-radius:8px;place-items:center;margin-bottom:20px;display:grid}.eyebrow{color:var(--green-strong);letter-spacing:0;text-transform:uppercase;margin:0 0 4px;font-size:.75rem;font-weight:800}h1,h2,h3,p{margin-top:0}.auth-panel h1,.topbar h1{margin-bottom:24px;font-size:1.75rem;line-height:1.2}.auth-form{gap:16px;display:grid}.auth-form label{color:var(--muted);gap:8px;font-weight:700;display:grid}.auth-form input{border:1px solid var(--line);width:100%;min-height:48px;color:var(--ink);background:#fff;border-radius:8px;padding:0 14px}.form-error,.fault-text{color:var(--red)}.primary-button,.secondary-button,.danger-button,.command-button,.segmented button,.icon-button,.node-actions button{cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:44px;transition:transform .16s,background .16s,opacity .16s;display:inline-flex}.primary-button{background:var(--green);color:#fff;font-weight:800}.secondary-button,.danger-button{cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 12px;font-weight:800;display:inline-flex}.secondary-button{color:var(--green-strong);background:#e7f0ea;border:1px solid #c8dfd1}.danger-button{background:var(--red);color:#fff}.danger-icon{color:var(--red)!important}.primary-button:hover,.command-button:hover,.icon-button:hover,.node-actions button:hover,.segmented button:hover{transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.48;transform:none}.app-shell{width:min(1180px,100%);margin:0 auto;padding:18px 14px 40px}.topbar{justify-content:space-between;align-items:flex-start;gap:16px;padding:14px 2px 10px;display:flex}.topbar h1{margin-bottom:0}.icon-button{background:var(--panel);width:46px;color:var(--ink);border:1px solid var(--line)}.status-strip{flex-wrap:wrap;gap:8px 20px;margin:8px 0 20px;display:flex}.status-strip div{min-height:24px;color:var(--muted);align-items:center;gap:10px;font-size:.85rem;font-weight:500;display:flex}.notice{color:#63450f;background:#fff6dc;border:1px solid #e6c982;border-radius:8px;padding:12px 14px;font-weight:700}.segmented{background:#e9edef;border-radius:8px;grid-template-columns:1fr 1fr;gap:8px;margin:16px 0;padding:4px;display:grid}.segmented button{color:var(--muted);background:0 0;font-weight:800}.segmented button.active{background:var(--panel);color:var(--ink);box-shadow:0 4px 16px #1f26221a}.content-grid{grid-template-columns:minmax(0,1fr);gap:18px;display:grid}.section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.section-heading h2{margin-bottom:0}.section-heading.compact{align-items:flex-start}.scenes-panel{margin:18px 0 20px;padding:0}.scene-list{gap:10px;display:grid}.scene-card{background:var(--panel);border:1px solid var(--line);border-left:5px solid var(--amber);box-shadow:none;border-radius:8px;gap:12px;padding:14px;display:grid}.scene-copy h3{margin-bottom:4px}.scene-copy>p{color:var(--muted);margin-bottom:10px;font-size:.88rem}.scene-actions{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.scene-actions>button:not(.primary-button){width:42px;min-height:42px;color:var(--ink);cursor:pointer;background:#edf0f2;border-radius:8px;place-items:center;display:grid}.empty-state{color:var(--muted);background:0 0;margin:0;padding:14px}.group-section,.preset-panel{margin-bottom:24px}.group-section h2,.nodes-column h2{color:var(--muted);margin-bottom:10px;font-size:1rem}.preset-heading h2{margin-bottom:12px;font-size:1.1rem}.device-list,.node-list,.preset-list{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.device-card,.node-row,.preset-card{background:var(--panel);border:1px solid var(--line);box-shadow:none;border-radius:8px}.preset-card{border-left:5px solid var(--amber);grid-template-columns:44px 1fr 46px;align-items:center;gap:12px;min-height:106px;padding:14px;display:grid}.preset-icon{color:#8b5e12;background:#fff3d3;border-radius:8px;place-items:center;width:40px;height:40px;display:grid}.preset-card h3{margin-bottom:4px;font-size:1rem}.preset-card p{color:var(--muted);margin-bottom:8px;font-size:.85rem}.preset-card button{background:var(--green);color:#fff;cursor:pointer;border-radius:8px;place-items:center;width:44px;height:44px;display:grid}.target-row{flex-wrap:wrap;gap:6px;display:flex}.target-row span{color:#4e5a54;background:#eee7dc;border-radius:8px;padding:5px 7px;font-size:.72rem;font-weight:800}.device-card{border-left:3px solid var(--green);padding:14px}.device-card.is-moving{border-left-color:var(--blue)}.device-card.is-fault{border-left-color:var(--red)}.device-card.is-offline{background:#f0f2f3;border-left-color:#8a857a}.device-topline{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;display:grid}.device-card h3,.node-row h3{overflow-wrap:anywhere;margin-bottom:4px;font-size:1.05rem}.device-card p,.node-row p,.device-meta{color:var(--muted);font-size:.88rem}.state-pill{text-align:center;min-width:92px;color:var(--green-strong);background:#e7f0ea;border-radius:999px;padding:7px 10px;font-size:.78rem;font-weight:900}.is-moving .state-pill{color:#215d7c;background:#e2eef5}.is-fault .state-pill{color:var(--red);background:#f7e1df}.is-offline .state-pill{color:#6f6a61;background:#e1ded8}.meter{background:#e6dfd3;border-radius:999px;height:8px;margin:14px 0 10px;overflow:hidden}.meter span{background:linear-gradient(90deg, var(--green), var(--amber));border-radius:inherit;min-width:4px;height:100%;display:block}.meter-label{color:var(--muted);margin-bottom:10px;font-size:.82rem;font-weight:700}.device-meta{overflow-wrap:anywhere;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:12px;display:flex}.fault-text{align-items:center;gap:8px;margin-bottom:12px;font-weight:800;display:flex}.command-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.command-button{width:100%;min-width:0;color:var(--green-strong);background:#e7f0ea;padding:0 8px;font-weight:900}.command-button.stop{color:var(--red);background:#f6e5df}.node-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:72px;padding:12px;display:grid}.node-row.fault{border-color:#e8b7b4}.node-title{align-items:center;gap:10px;min-width:0;display:flex}.node-title svg{color:var(--green-strong);flex:none}.node-title>div,.config-grid label,.config-grid input,.config-grid select{min-width:0}.command-grid>.fault-text{overflow-wrap:anywhere;grid-column:1/-1}button svg{flex-shrink:0}.modal-header h2{overflow-wrap:anywhere;font-size:1.2rem}.node-row.fault .node-title svg{color:var(--red)}.node-row.offline .node-title svg{color:#777066}.node-title h3,.node-title p{overflow-wrap:anywhere}.node-actions{gap:6px;display:flex}.node-actions button{width:40px;color:var(--ink);background:#edf0f2}.compact-modal{background:var(--panel);border:1px solid var(--line);width:min(560px,100%);max-height:min(92vh,760px);box-shadow:var(--shadow);border-radius:8px;padding:18px;overflow:auto}.dialog-help{color:var(--muted);background:#f0f2f3;border-radius:8px;padding:12px;line-height:1.55}.modal-backdrop{z-index:20;background:#17211d6b;place-items:center;padding:14px;display:grid;position:fixed;inset:0}.node-config-modal{background:var(--panel);border:1px solid var(--line);width:min(980px,100%);max-height:min(92vh,980px);box-shadow:var(--shadow);border-radius:8px;padding:18px;overflow:auto}.scene-editor-modal{width:min(820px,100%)}.scene-channel-list{border:0;min-width:0;margin:16px 0 0;padding:0}.scene-channel-list legend{color:var(--muted);margin-bottom:10px;font-weight:800}.scene-channel-row{border:1px solid var(--line);background:#fff;border-radius:8px;gap:10px;margin-bottom:8px;padding:12px;display:grid}.scene-channel-row.unavailable{opacity:.62}.channel-choice{align-items:flex-start;gap:10px;min-width:0;display:flex}.channel-choice input{flex:none;margin-top:3px}.channel-choice span{min-width:0;display:grid}.channel-choice small{color:var(--muted);margin-top:3px}.scene-value{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;font-weight:800;display:flex}.scene-value input,.scene-value select{width:116px;min-height:40px;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:8px;padding:0 9px}.pulse-label{color:var(--green-strong);font-weight:800}.modal-header,.channel-editor-head,.modal-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal-header{margin-bottom:14px}.modal-header h2,.channel-editor h3{margin-bottom:0}.config-grid{gap:12px;display:grid}.config-grid label{color:var(--muted);gap:7px;font-weight:800;display:grid}.config-grid input,.config-grid select{border:1px solid var(--line);width:100%;min-height:42px;color:var(--ink);background:#fff;border-radius:8px;padding:0 10px}.safety-summary,.pin-help,.validation-box{border-radius:8px;margin:14px 0;padding:12px;font-weight:750}.safety-summary{color:#63450f;background:#fff6dc;border:1px solid #e6c982}.physical-safety{gap:.55rem;display:grid}.safety-confirmation{align-items:flex-start;gap:.55rem;font-weight:650;display:flex}.safety-confirmation input{flex:none;margin-top:.2rem}.pin-help{color:var(--green-strong);background:#e9f3ed;border:1px solid #c8dfd1}.channel-editor-list{gap:12px;display:grid}.channel-editor{border:1px solid var(--line);background:#fff;border-radius:8px;padding:12px}.channel-editor-head{margin-bottom:12px}.channel-editor-head button,.modal-actions button{min-height:40px;color:var(--ink);background:#edf0f2;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 12px;font-weight:800;display:inline-flex}.validation-box{color:var(--red);background:#fbecea;border:1px solid #e8b7b4;align-items:flex-start;gap:10px;display:flex}.validation-box.ok{color:var(--green-strong);background:#e9f3ed;border-color:#c8dfd1}.validation-box p{overflow-wrap:anywhere;margin:4px 0 0}.modal-actions{flex-wrap:wrap;justify-content:flex-end;margin-top:16px}@media (width>=860px){.app-shell{padding:28px 24px 56px}.content-grid{grid-template-columns:minmax(0,1fr) 360px;align-items:start}.groups-column{min-width:0}.device-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}.scene-card,.scene-channel-row{grid-template-columns:minmax(0,1fr) auto;align-items:center}.nodes-column{position:static}.config-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.config-grid.dense{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=480px){.command-button{flex-direction:column;gap:4px;min-height:52px;padding:6px 3px;font-size:.82rem}.section-heading{flex-wrap:wrap}}.main-tabs{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:24px}.view-filters{flex-wrap:wrap;gap:12px;margin-bottom:24px;display:flex}.navigation-heading{margin-bottom:16px;font-size:1.1rem}.navigation-list{margin-bottom:24px;display:grid}.navigation-row{text-align:left;border-bottom:1px solid var(--line);width:100%;min-height:78px;color:var(--ink);cursor:pointer;background:0 0;grid-template-columns:24px minmax(0,1fr) 20px;align-items:center;gap:14px;padding:16px 8px;display:grid}.navigation-row:hover{background:#edf1f2}.navigation-row span{overflow-wrap:anywhere;gap:5px;min-width:0;display:grid}.navigation-row small{color:var(--muted);font-size:.85rem}.navigation-row>svg:first-child{color:var(--green-strong)}.zone-path{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px;margin:0 0 20px;font-size:.9rem;display:flex}.zone-path button{min-height:44px;color:var(--green-strong);cursor:pointer;background:0 0;align-items:center;gap:4px;padding:8px;display:inline-flex}.zone-path span{overflow-wrap:anywhere;min-width:0}.zone-path>svg{flex-shrink:0}.view-filters label{min-width:0;max-width:440px;color:var(--muted);flex:200px;gap:6px;font-size:.85rem;display:grid}.view-filters select{border:1px solid var(--line);background:var(--panel);width:100%;min-width:0;min-height:46px;color:var(--ink);text-overflow:ellipsis;border-radius:6px;padding:8px 12px;font-weight:600}.device-topline p{margin-bottom:8px}.device-details{color:var(--muted);margin:0 0 12px;font-size:.82rem}.device-details summary{cursor:pointer;min-height:36px;padding:8px 0}.device-details[open] summary{margin-bottom:8px}.device-details p:last-child,.node-title p:last-child{margin-bottom:0}.device-card,.node-row,.scene-card{min-width:0}.commands-binary_switch{grid-template-columns:repeat(2,minmax(0,1fr))}.commands-momentary{grid-template-columns:minmax(0,1fr)}.node-status{color:var(--muted);font-size:.82rem}.node-list{gap:0}.node-row{border:0;border-bottom:1px solid var(--line);background:0 0;border-radius:0;padding:16px 4px}.node-row .device-details{margin-bottom:0}.node-row.offline{background:0 0}button:focus-visible,select:focus-visible,summary:focus-visible,input:focus-visible{outline:2px solid var(--blue);outline-offset:3px}@media (width<=480px){.app-shell{padding:12px 14px 28px}.device-topline{gap:8px}.state-pill{min-width:0;padding:5px 7px}.device-card h3,.node-row h3{font-size:1rem}.main-tabs{gap:2px}.main-tabs button{gap:5px;font-size:.85rem}.node-actions{flex-direction:column}.modal-header,.channel-editor-head,.scene-value{flex-wrap:wrap}.view-filters label{max-width:none}}@keyframes spin{to{transform:rotate(360deg)}}.hold-button{touch-action:none;-webkit-user-select:none;user-select:none}.hold-button[aria-pressed=true]{background:#d8efe3;border-color:#24804b}
