:root,:root[data-theme=light]{--bg:#f5f5f7;--bg-elevated:#fff;--surface:#fff;--surface-2:#f1f3f5;--surface-3:#e9ecef;--border:#0f172a0f;--border-strong:#0f172a1a;--text:#1c1c1e;--text-muted:#6e6e73;--text-subtle:#8e8e93;--accent:#d97757;--accent-weak:#fbeee7;--accent-strong:#b25734;--accent-glow:#d9775724;--ok:#22c55e;--ok-weak:#22c55e1f;--warn:#f59e0b;--warn-weak:#f59e0b1f;--err:#ef4444;--err-weak:#ef44441f;--info:#0ea5e9;--info-weak:#0ea5e91f;--on-light:#f59e0b;--on-weak:#f59e0b26;--shadow-sm:0 1px 2px #0f172a0a;--shadow-md:0 2px 6px #0f172a0d, 0 8px 24px #0f172a0a;--shadow-lg:0 4px 16px #0f172a14, 0 16px 40px #0f172a0f;--shadow-xl:0 24px 60px #0f172a2e;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-xl:24px;--r-pill:999px}:root[data-theme=dark]{--bg:#0c0c0e;--bg-elevated:#1c1c1e;--surface:#1c1c1e;--surface-2:#2c2c2e;--surface-3:#3a3a3c;--border:#ffffff0f;--border-strong:#ffffff1a;--text:#f2f2f7;--text-muted:#a1a1a6;--text-subtle:#6e6e73;--accent:#ecb39a;--accent-weak:#ecb39a26;--accent-strong:#f5d0bf;--accent-glow:#ecb39a33;--ok:#34d399;--ok-weak:#34d3992e;--warn:#fbbf24;--warn-weak:#fbbf242e;--err:#f87171;--err-weak:#f871712e;--info:#60a5fa;--info-weak:#60a5fa2e;--on-light:#fbbf24;--on-weak:#fbbf2438;--shadow-sm:0 1px 2px #0006;--shadow-md:0 2px 6px #0006, 0 8px 24px #0000004d;--shadow-lg:0 4px 16px #00000080, 0 16px 40px #0006;--shadow-xl:0 24px 60px #00000080}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-feature-settings:"cv11", "ss01", "ss03";-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;transition:background-color .2s,color .2s}a{color:inherit}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.app-header{z-index:20;background:color-mix(in srgb, var(--bg-elevated) 85%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);align-items:center;gap:18px;padding:14px 28px;display:flex;position:sticky;top:0}.app-title{letter-spacing:-.01em;align-items:center;gap:10px;margin:0;font-size:16px;font-weight:600;display:flex}.app-title .icon{width:18px;height:18px;color:var(--accent)}.app-nav{gap:2px;margin-left:12px;display:flex}.app-nav a{border-radius:var(--r-pill);color:var(--text-muted);align-items:center;gap:7px;padding:8px 14px;font-size:13px;font-weight:500;text-decoration:none;transition:color .15s,background-color .15s;display:inline-flex}.app-nav a .icon{width:15px;height:15px}.app-nav a:hover{color:var(--text);background:var(--surface-2)}.app-nav a.active{color:var(--accent);background:var(--accent-weak)}.app-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.app-main{width:100%;max-width:1200px;margin:0 auto;padding:28px}.btn{border-radius:var(--r-pill);border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;align-items:center;gap:7px;padding:9px 16px;font-size:13px;font-weight:500;line-height:1;text-decoration:none;transition:background-color .12s,border-color .12s,opacity .12s,transform 50ms;display:inline-flex}.btn:hover{background:var(--surface-3)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn .icon{width:15px;height:15px}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface-2);border-color:var(--border)}.btn-danger{color:var(--err);border-color:var(--border);background:var(--err-weak)}.btn-danger:hover{background:var(--err);color:#fff;border-color:var(--err)}.icon-btn{border-radius:var(--r-pill);border:1px solid var(--border);background:var(--surface-2);width:36px;height:36px;color:var(--text-muted);cursor:pointer;justify-content:center;align-items:center;padding:0;transition:all .15s;display:inline-flex}.icon-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.icon-btn:active{transform:scale(.95)}.icon-btn .icon{width:16px;height:16px}.icon-btn.sm{width:30px;height:30px}.icon-btn.sm .icon{width:14px;height:14px}.icon,.lucide{vertical-align:middle;stroke-width:1.75px;display:inline-block}.field{flex-direction:column;gap:6px;display:flex}.field>label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:600}.field .hint{color:var(--text-subtle);font-size:11px}.input,.select{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);color:var(--text);outline:none;padding:11px 14px;font-size:14px;transition:border-color .15s,box-shadow .15s,background-color .15s}.input:hover,.select:hover{background:var(--surface-3)}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.pass-wrap{align-items:center;display:flex;position:relative}.pass-wrap .input{width:100%;padding-right:44px}.pass-toggle{width:32px;height:32px;color:var(--text-subtle);cursor:pointer;border-radius:var(--r-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .15s,background-color .15s;display:flex;position:absolute;right:6px}.pass-toggle:hover{color:var(--text);background:var(--surface-3)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.m-tile{border-radius:var(--r-md);background:var(--surface-2);width:42px;height:42px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;transition:background-color .15s,color .15s;display:inline-flex}.m-tile .icon{stroke-width:2px;width:22px;height:22px}.m-tile.sm{width:36px;height:36px}.m-tile.sm .icon{width:18px;height:18px}.m-tile.lg{border-radius:var(--r-lg);width:48px;height:48px}.m-tile.lg .icon{width:26px;height:26px}.m-tile.tint-accent{background:var(--accent-weak);color:var(--accent)}.m-tile.tint-warn{background:var(--warn-weak);color:var(--warn)}.m-tile.tint-err{background:var(--err-weak);color:var(--err)}.m-tile.tint-ok{background:var(--ok-weak);color:var(--ok)}.m-tile.tint-info{background:var(--info-weak);color:var(--info)}.m-tile.tint-on{background:var(--on-weak);color:var(--on-light)}.m-tile.filled-on{background:var(--on-light);color:#fff}.m-tile.filled-accent{background:var(--accent);color:#fff}.m-tile.filled-err{background:var(--err);color:#fff}.m-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:14px 16px;transition:box-shadow .15s,border-color .15s,transform 50ms;display:block}.m-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong)}.m-card.clickable{cursor:pointer}.m-card.clickable:active{transform:scale(.99)}.m-row{align-items:center;gap:12px;display:flex}.m-content{flex:1;min-width:0}.m-title{color:var(--text);letter-spacing:-.005em;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.m-sub{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12px;overflow:hidden}.m-trailing{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.badge{border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:4px;padding:3px 10px;font-size:10px;font-weight:600;display:inline-flex}.badge.climate{background:color-mix(in srgb, var(--info) 12%, transparent);color:var(--info)}.badge.media_player{background:color-mix(in srgb, var(--warn) 12%, transparent);color:var(--warn)}.badge.remote{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent)}.modal-backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:200;background:#0f172a80;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}:root[data-theme=dark] .modal-backdrop{background:#0009}.modal-backdrop.show{display:flex}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-xl);width:100%;max-width:480px;animation:.15s ease-out modal-in;overflow:hidden}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal-head{border-bottom:1px solid var(--border);padding:18px 22px}.modal-head h2{letter-spacing:-.01em;margin:0;font-size:16px;font-weight:600}.modal-head p{color:var(--text-muted);margin:4px 0 0;font-size:12px}.modal-body{flex-direction:column;gap:14px;max-height:70vh;padding:18px 22px;display:flex;overflow-y:auto}.modal-foot{background:var(--surface-2);border-top:1px solid var(--border);justify-content:space-between;gap:10px;padding:14px 22px;display:flex}.modal-foot .left,.modal-foot .right{gap:8px;display:flex}.toast{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--r-md);color:var(--text);box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;z-index:300;align-items:center;gap:10px;padding:11px 16px;font-size:13px;transition:transform .2s,opacity .2s;display:flex;position:fixed;bottom:24px;right:24px;transform:translateY(70px)}.toast.show{opacity:1;transform:translateY(0)}.toast.ok{border-left-color:var(--ok)}.toast.err{border-left-color:var(--err)}.toast .icon{width:16px;height:16px}button svg,button .icon,button [data-lucide],a svg,a .icon,a [data-lucide],.icon-btn svg,.icon-btn .icon{pointer-events:none}.dot{background:var(--text-subtle);border-radius:50%;width:8px;height:8px;display:inline-block}.dot.ok{background:var(--ok);box-shadow:0 0 6px color-mix(in srgb, var(--ok) 50%, transparent)}.dot.err{background:var(--err)}.dot.warn{background:var(--warn)}.area-block{margin-bottom:28px}.area-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--border);align-items:center;gap:10px;margin:0 0 14px;padding-bottom:10px;font-size:11px;font-weight:600;display:flex}.area-title .count{border-radius:var(--r-sm);background:var(--surface-2);color:var(--text);padding:2px 7px;font-size:10px}.grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.area-block .grid{grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width:1100px){.area-block .grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:700px){.area-block .grid{grid-template-columns:1fr}}.empty{text-align:center;color:var(--text-muted);flex-direction:column;align-items:center;gap:12px;padding:80px 20px;display:flex}.empty .icon{width:32px;height:32px;color:var(--text-subtle)}.crm-wrap{width:100%;max-width:1180px;margin:0 auto}.crm-wrap--wide{max-width:1400px}.form-card,.crm-form{width:100%}.crm-grid{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:18px;display:grid}.crm-main{flex-direction:column;gap:10px;min-width:0;display:flex}.crm-aside{position:sticky;top:16px}.panel{background:var(--surface);border:1px solid var(--border-strong);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px #0f172a0a,0 4px 16px #0f172a08}.panel-head{border-bottom:1px solid var(--border);background:linear-gradient(180deg, color-mix(in srgb, var(--surface-2) 50%, var(--surface)), var(--surface));align-items:center;gap:10px;padding:9px 14px;display:flex}.panel-head h2{letter-spacing:.03em;text-transform:uppercase;color:var(--text);margin:0;font-size:12px;font-weight:700}.panel-tag{color:var(--text-muted);background:var(--surface-3);border-radius:6px;margin-left:auto;padding:2px 8px;font-size:10.5px;font-weight:500}.panel-body{padding:12px 14px}.panel-accent{border-color:color-mix(in srgb, var(--accent) 30%, var(--border-strong))}.panel-accent .panel-head{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 8%, var(--surface)), var(--surface))}.count-pill{background:var(--accent);color:#fff;border-radius:11px;justify-content:center;align-items:center;min-width:22px;height:22px;margin-left:auto;padding:0 7px;font-size:12px;font-weight:600;display:inline-flex}.contact-cards{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.contact-card{border:1px solid var(--border-strong);background:var(--surface);border-radius:10px;align-items:flex-start;gap:10px;padding:10px 11px;transition:border-color .15s,box-shadow .15s,transform 80ms;display:flex}.contact-card:hover{border-color:color-mix(in srgb, var(--accent) 40%, var(--border-strong));box-shadow:0 2px 8px #0f172a0d}.contact-card.is-primary{border-color:color-mix(in srgb, var(--accent) 45%, var(--border-strong));background:color-mix(in srgb, var(--accent) 4%, var(--surface))}.contact-avatar{background:linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 70%, #000));color:#fff;letter-spacing:.02em;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:12.5px;font-weight:700;display:flex}.contact-info{flex:1;min-width:0}.contact-name{color:var(--text);align-items:center;gap:5px;font-size:13.5px;font-weight:600;line-height:1.2;display:flex}.contact-name .star{color:var(--accent);display:inline-flex}.contact-role-inline{color:var(--accent);font-weight:600}.contact-role{color:var(--text-muted);margin-top:1px;font-size:12px}.contact-line{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:12px;overflow:hidden}.contact-meta{color:var(--text-subtle);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:11.5px;overflow:hidden}.contact-del{width:26px;height:26px;color:var(--text-subtle);cursor:pointer;background:0 0;border:none;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;transition:background-color .15s,color .15s;display:flex}.contact-del:hover{background:var(--err-weak);color:var(--err)}.aside-empty{text-align:center;color:var(--text-subtle);border:1px dashed var(--border-strong);border-radius:10px;flex-direction:column;align-items:center;gap:10px;margin-bottom:14px;padding:22px 10px;font-size:12.5px;line-height:1.5;display:flex}.contact-adder{border-top:1px dashed var(--border-strong);flex-direction:column;gap:8px;padding-top:14px;display:flex}.contact-adder .input{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:7px 10px;font-size:13px}.contact-adder .input:hover{border-color:var(--accent)}.adder-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.adder-foot{justify-content:space-between;align-items:center;margin-top:2px;display:flex}.btn-sm{height:32px;padding:0 12px;font-size:12.5px}.crm-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin-top:16px;padding-top:16px;display:flex}.req-list{flex-direction:column;gap:8px;display:flex}.req-card{border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);align-items:center;gap:12px;padding:12px 14px;display:flex}.req-main{flex:1;min-width:0}.req-title{align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.req-meta{color:var(--text-muted);margin-top:2px;font-size:12px}.req-actions{flex-shrink:0;gap:6px;display:flex}.req-status{text-transform:uppercase;letter-spacing:.03em;border-radius:8px;padding:2px 8px;font-size:10.5px;font-weight:600}.req-status.st-pending{background:color-mix(in srgb, var(--warn,#d97706) 14%, transparent);color:var(--warn,#d97706)}.req-status.st-ok{background:color-mix(in srgb, var(--ok,#16a34a) 14%, transparent);color:var(--ok,#16a34a)}.req-status.st-no{background:var(--surface-3);color:var(--text-muted)}.access-code{align-items:center;gap:8px;display:flex}.access-code-value{text-align:center;letter-spacing:.12em;color:var(--accent-strong);background:var(--accent-weak);border:1px solid color-mix(in srgb, var(--accent) 30%, var(--border-strong));border-radius:var(--r-sm);flex:1;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:20px;font-weight:700}.cep-field{position:relative}.cep-spin{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:14px;height:14px;margin-top:-7px;animation:.6s linear infinite cep-rot;position:absolute;top:50%;right:9px}@keyframes cep-rot{to{transform:rotate(360deg)}}.form-card .select,.crm-form .select,.panel-body .select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236e6e73' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:30px}.form-section{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);margin-bottom:14px;padding:16px 18px;box-shadow:0 1px 2px #0f172a0a}.form-section-title{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);margin:0 0 12px;padding-bottom:8px;font-size:11px;font-weight:600}.form-hint{color:var(--text-muted);margin:-4px 0 12px;font-size:12px}.form-grid{grid-template-columns:repeat(3,1fr);gap:0 12px;display:grid}.form-grid .field.span-2{grid-column:span 2}.form-grid .field.span-3{grid-column:1/-1}.addr-grid{grid-template-columns:repeat(12,1fr);gap:0 12px;display:grid}.addr-grid .field{min-width:0}.crm-form .field,.form-card .field,.subform .field{gap:0}.crm-form .field>label,.form-card .field>label,.subform .field>label{color:var(--text-muted);text-transform:none;letter-spacing:0;font-size:10.5px;font-weight:500;line-height:1.15}.crm-form .input,.crm-form textarea.input,.crm-form .select,.form-card .input,.form-card textarea.input,.subform .input,.subform textarea.input{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:3px 9px;font-size:13px;line-height:1.25}.crm-form .field,.form-card .field{margin-bottom:4px}.form-card .input:hover,.subform .input:hover{background:var(--surface);border-color:var(--accent)}.form-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.form-toolbar{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.subform{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--r-sm);margin-bottom:14px;padding:14px}.check-row{color:var(--text);cursor:pointer;align-items:center;gap:7px;font-size:12.5px;display:inline-flex}.check-row input{width:15px;height:15px}.tabs{border-bottom:1px solid var(--border-strong);gap:2px;margin-bottom:16px;display:flex}.tab{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-size:13px;font-weight:500}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-count{background:var(--surface-3);min-width:17px;height:17px;color:var(--text-muted);border-radius:9px;justify-content:center;align-items:center;margin-left:6px;padding:0 5px;font-size:10.5px;display:inline-flex}.contact-list{flex-direction:column;gap:6px;display:flex}.contact-item{border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface);justify-content:space-between;align-items:center;padding:9px 12px;display:flex}.banner{border-radius:var(--r-sm);margin-bottom:14px;padding:9px 12px;font-size:12.5px}.banner-ok{background:color-mix(in srgb, var(--ok,#16a34a) 12%, transparent);color:var(--ok,#16a34a)}.banner-err{background:var(--err-weak);color:var(--err)}@media (max-width:980px){.crm-grid{grid-template-columns:1fr}.crm-aside{position:static}}@media (max-width:820px){.form-grid{grid-template-columns:repeat(2,1fr)}.form-grid .field.span-2{grid-column:1/-1}}@media (max-width:520px){.form-grid,.adder-row{grid-template-columns:1fr}}.theme-toggle{border-radius:var(--r-sm);width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.theme-toggle:hover{background:var(--surface-2);color:var(--text);border-color:var(--border)}.theme-toggle .icon-moon{display:none}.theme-toggle .icon-sun,:root[data-theme=dark] .theme-toggle .icon-moon{display:inline-block}:root[data-theme=dark] .theme-toggle .icon-sun{display:none}body:has(>aside.app-sidebar){grid-template:"sidebar header""sidebar main"1fr/240px minmax(0,1fr);height:100vh;display:grid;overflow:hidden}body>.app-sidebar{grid-area:sidebar}body>.app-header{grid-area:header}body>.app-main{grid-area:main;width:auto;max-width:none;margin:0;padding:28px max(28px,50% - 600px);overflow-y:auto}@media (max-width:768px){body:has(>aside.app-sidebar){grid-template-columns:60px minmax(0,1fr)}}.app-sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-sidebar .brand{border-bottom:1px solid var(--border);align-items:center;gap:10px;height:56px;min-height:56px;padding:12px 18px;display:flex}.app-sidebar .brand-icon{background:linear-gradient(135deg, var(--accent), var(--accent-strong));color:#fff;border-radius:var(--r-md);flex-shrink:0;place-items:center;width:32px;height:32px;font-size:15px;font-weight:700;display:grid}.app-sidebar .brand-logo{border-radius:var(--r-md);object-fit:contain;flex-shrink:0;width:32px;height:32px}.app-sidebar .brand-text{letter-spacing:.14em;color:var(--text);font-size:14px;font-weight:600}.app-sidebar .nav{scrollbar-width:thin;scrollbar-color:transparent transparent;flex:1;padding:12px 10px;transition:scrollbar-color .2s;overflow-y:auto}.app-sidebar:hover .nav{scrollbar-color:var(--border-strong) transparent}.app-sidebar .nav::-webkit-scrollbar{width:4px}.app-sidebar .nav::-webkit-scrollbar-thumb{background:0 0;border-radius:2px;transition:background .2s}.app-sidebar .nav::-webkit-scrollbar-track{background:0 0}.app-sidebar:hover .nav::-webkit-scrollbar-thumb{background:var(--border-strong)}.app-sidebar .section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle);padding:14px 14px 6px;font-size:10px;font-weight:600}.app-sidebar .nav a{border-radius:var(--r-md);color:var(--text-muted);align-items:center;gap:12px;margin-bottom:2px;padding:9px 14px;font-size:13px;font-weight:500;text-decoration:none;transition:background-color .12s,color .12s;display:flex}.app-sidebar .nav a:hover{background:var(--surface-2);color:var(--text)}.app-sidebar .nav a.active{background:var(--accent-weak);color:var(--accent);font-weight:600}.app-sidebar .nav a.sub-link{margin-top:0;padding-left:36px;font-size:12px}.app-sidebar .nav a.sub-link .icon{width:14px;height:14px}.app-sidebar .nav a .icon{flex-shrink:0;width:17px;height:17px}.app-sidebar .nav a .label{flex:1}.app-sidebar .nav a .badge-soon{background:var(--surface-2);color:var(--text-subtle);letter-spacing:.03em;border-radius:4px;padding:1px 7px;font-size:10px;font-weight:500}.app-sidebar .footer{border-top:1px solid var(--border);flex-direction:column;gap:2px;padding:8px 10px 14px;display:flex}.app-sidebar .footer button{border-radius:var(--r-md);color:var(--text-muted);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:12px;width:100%;padding:9px 14px;font-family:inherit;font-size:13px;font-weight:500;display:flex}.app-sidebar .footer button:hover{background:var(--surface-2);color:var(--text)}.app-sidebar .footer button .icon{flex-shrink:0;width:17px;height:17px}.app-header{background:color-mix(in srgb, var(--bg-elevated) 85%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);align-items:center;gap:14px;height:56px;min-height:56px;padding:0 28px;display:flex}.app-header .app-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.app-header .app-title{font-size:15px}nav.page-subnav{z-index:1;align-self:stretch;align-items:flex-end;gap:2px;margin-bottom:-1px;display:inline-flex;position:relative}nav.page-subnav>a,nav.page-subnav>button{color:var(--text-muted);white-space:nowrap;border:1px solid #0000;border-bottom:none;border-top-left-radius:10px;border-top-right-radius:10px;align-items:center;gap:8px;padding:10px 22px;font-size:13px;font-weight:500;text-decoration:none;transition:color .12s,background-color .12s,border-color .12s;display:inline-flex;position:relative}nav.page-subnav>a .icon,nav.page-subnav>button .icon{width:15px;height:15px}nav.page-subnav>a:hover,nav.page-subnav>button:hover{color:var(--text);background:var(--surface-2)}nav.page-subnav>a.active,nav.page-subnav>button.active{color:var(--accent);background:var(--bg);border-color:var(--border);font-weight:600}nav.page-subnav>a.active:after,nav.page-subnav>button.active:after{content:"";background:var(--bg);height:1px;position:absolute;bottom:-1px;left:0;right:0}nav.page-subnav>button{cursor:pointer;background:0 0;font-family:inherit}@media (max-width:768px){.app-sidebar .brand-text,.app-sidebar .section-label,.app-sidebar .nav a .label,.app-sidebar .footer button .btn-label{display:none}.app-sidebar .nav a,.app-sidebar .footer button{justify-content:center;padding:9px 0}.app-sidebar .brand{justify-content:center;padding:16px 0}}
*{box-sizing:border-box}html,body{margin:0;padding:0}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--border-strong) 70%, transparent);background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong);background-clip:padding-box}::-webkit-scrollbar-corner{background:0 0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}.shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:4px;width:240px;height:100vh;padding:0 14px 20px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar .brand{box-sizing:border-box;border-bottom:1px solid var(--border);align-items:center;gap:10px;height:56px;margin:0 -14px 12px;padding:0 16px;display:flex}.sidebar .brand img{border-radius:8px;width:30px;height:30px}.sidebar .brand b{font-size:15px}.sidebar .brand span{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:10px;display:block}.nav-link{border-radius:var(--r-sm);color:var(--text-muted);align-items:center;gap:10px;padding:9px 12px;font-size:13px;font-weight:500;transition:all .12s;display:flex}.nav-link:hover{background:var(--surface-2);color:var(--text)}.nav-link.active{background:var(--accent-weak);color:var(--accent-strong)}.nav-icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.nav-icon svg{width:18px;height:18px}.sidebar .nav-section{letter-spacing:.08em;text-transform:uppercase;color:var(--text-subtle);padding:16px 12px 6px;font-size:10px;font-weight:700}.sidebar .spacer{flex:1}.sidebar .who{color:var(--text-muted);border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-size:11px;display:flex}.sidebar .who-info{min-width:0}.sidebar .who-link{border-radius:var(--r-sm);margin:-4px -6px;padding:4px 6px;transition:background-color .15s;display:block}.sidebar .who-link:hover{background:var(--surface-2)}.sidebar .who b{color:var(--text);font-size:12px;display:block}.sidebar .who .btn{flex-shrink:0}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{box-sizing:border-box;background:var(--surface);border-bottom:1px solid var(--border);z-index:20;align-items:center;gap:16px;height:56px;padding:0 32px;display:flex;position:sticky;top:0}.topbar-titles{flex:1;align-items:center;gap:11px;min-width:0;display:flex}.topbar-titles h1{margin:0;font-size:18px;line-height:1.2}.topbar-icon{color:var(--text);background:0 0;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.topbar-icon svg{width:20px;height:20px}.topbar-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.topbar-tabs{align-self:stretch;align-items:flex-end;gap:4px;display:flex}.topbar-tabs button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-9px;padding:8px 16px;font-size:13px;font-weight:600}.topbar-tabs button:hover{color:var(--text)}.topbar-tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.content{max-width:1400px;margin:0 auto;padding:28px 32px}.page-head{margin-bottom:22px}.page-head h1{margin:0 0 4px;font-size:22px}.page-head p{color:var(--text-muted);margin:0;font-size:13px}.btn{border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);height:36px;color:var(--text);cursor:pointer;align-items:center;gap:7px;padding:0 16px;font-size:13px;font-weight:600;transition:all .12s;display:inline-flex}.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-strong)}.btn-ghost{background:0 0}.btn-sm{height:30px;padding:0 12px;font-size:12px}.btn:disabled{opacity:.6;cursor:default}.login-wrap{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);width:min(400px,92vw);padding:36px 32px}.login-head{text-align:center;flex-direction:column;align-items:center;gap:12px;margin:16px 0 32px;display:flex}.login-head img{border-radius:12px;width:48px;height:48px}.login-head-text h1{margin:0 0 4px;font-size:19px;line-height:1.2}.login-head-text p{color:var(--text-muted);margin:0;font-size:13px}.field{margin-bottom:14px}.field label{color:var(--text-muted);margin-bottom:6px;font-size:12px;font-weight:500;display:block}.input{border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface-2);width:100%;height:40px;color:var(--text);padding:0 12px;font-size:14px}.input:focus{border-color:var(--accent);outline:none}.login-err{color:var(--err);min-height:16px;margin-top:10px;font-size:12px}.tbl-wrap{border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);overflow:hidden;box-shadow:0 1px 2px #0f172a0a}table.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);background:var(--surface-2);border-bottom:1px solid var(--border);padding:12px 16px;font-size:10px;font-weight:700}.tbl td{border-bottom:1px solid var(--border);padding:12px 16px}.tbl tr:last-child td{border-bottom:none}.tbl tr:hover td{background:var(--surface-2)}.tbl tr.row-link{cursor:pointer}.empty{text-align:center;color:var(--text-muted);padding:48px}.tag{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:3px 9px;font-size:10px;font-weight:700;display:inline-block}.tag-cabeado{color:#0ea5e9;background:#0ea5e924}.tag-wifi{color:#10b981;background:#10b98124}.tag-zigbee{color:#8b5cf6;background:#8b5cf624}.cat-toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;display:flex}.cat-filters{flex-wrap:wrap;flex:1;gap:8px;display:flex}.cat-chip{border:1px solid var(--border);background:var(--surface);height:34px;color:var(--text-muted);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.cat-chip:hover{border-color:var(--accent);color:var(--text)}.cat-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.cat-grid{grid-template-columns:repeat(5,1fr);gap:16px;display:grid}@media (max-width:1200px){.cat-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width:1000px){.cat-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:760px){.cat-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:520px){.cat-grid{grid-template-columns:1fr}}.cat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-sm);cursor:pointer;flex-direction:column;transition:transform .12s,box-shadow .12s,border-color .12s;display:flex;overflow:hidden}.cat-card:hover{box-shadow:var(--shadow-md,0 6px 20px #0000001f);border-color:var(--accent);transform:translateY(-2px)}.cat-card-img{aspect-ratio:16/10;object-fit:contain;background:#fff;width:100%;display:block}.cat-card-img-ph{aspect-ratio:16/10;background:var(--surface-2);width:100%;color:var(--text-muted);justify-content:center;align-items:center;font-size:11px;display:flex}.cat-card-body{flex-direction:column;gap:10px;padding:14px 16px 16px;display:flex}.cat-card-title{font-size:15px;font-weight:600}.cat-specs{flex-direction:column;gap:7px;display:flex}.cat-spec{align-items:center;gap:8px;font-size:12px;display:flex}.cat-spec b{color:var(--text-muted);font-weight:500}.cat-spec span{color:var(--text);text-align:right;margin-left:auto;font-weight:600}.cat-note{color:var(--text-muted);border-top:1px dashed var(--border);padding-top:8px;font-size:11px;font-style:italic;line-height:1.4}.cat-card-actions{border-top:1px dashed var(--border);gap:6px;padding-top:4px;display:flex}.cat-modal-overlay{z-index:60;background:#0000008c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.cat-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);width:min(620px,96vw);max-height:90vh;overflow:auto;box-shadow:0 20px 60px #0000004d}.cat-modal-hero{position:relative}.cat-modal-hero img{aspect-ratio:16/9;object-fit:cover;background:var(--surface-2);width:100%;display:block}.cat-modal-hero-ph{aspect-ratio:16/9;background:var(--surface-2);width:100%;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.cat-modal-close{color:#fff;cursor:pointer;background:#00000080;border:none;border-radius:999px;justify-content:center;align-items:center;width:34px;height:34px;font-size:18px;line-height:1;display:flex;position:absolute;top:12px;right:12px}.cat-modal-close:hover{background:#000000b3}.cat-modal-body{padding:20px 22px 24px}.cat-modal-title{margin-bottom:4px;font-size:20px;font-weight:700}.cat-modal-sub{color:var(--text-muted);margin-bottom:18px;font-size:12px}.cat-sec{margin-top:22px}.cat-sec:first-child{margin-top:0}.cat-sec-head{letter-spacing:.02em;color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);border-left:3px solid var(--accent);border-radius:var(--r-sm);align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;font-size:12px;font-weight:700;display:flex}.cat-sec-note{color:var(--text-muted);background:var(--surface-2);border-radius:var(--r-sm);margin-top:10px;padding:10px 12px;font-size:12px;font-style:italic;line-height:1.5}.modal-overlay{z-index:70;background:#0000008c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);width:min(620px,96vw);max-height:92vh;box-shadow:var(--shadow-xl);padding:24px;overflow:auto}.modal h2{margin:0 0 18px;font-size:18px}.form-row{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;display:grid}textarea.input{resize:vertical;height:auto;padding:10px 12px;font-family:monospace;font-size:12px;line-height:1.5}.modal-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.md{grid-template-columns:248px 1fr;align-items:start;gap:14px;display:grid}@media (max-width:820px){.md{grid-template-columns:1fr}}.md-list{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);overflow:hidden}.md-grp+.md-grp{border-top:1px solid var(--border)}.md-grp-head{background:var(--surface-2);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);justify-content:space-between;align-items:center;padding:9px 14px;font-size:10px;font-weight:700;display:flex}.md-grp-actions{align-items:center;gap:2px;display:flex}.md-grp-edit{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:22px;height:22px;font-size:15px;line-height:1;display:flex}.md-grp-edit:hover{color:var(--accent);background:var(--surface-3)}.md-grp-empty{color:var(--text-subtle);padding:8px 14px;font-size:11px;font-style:italic}.md-item{text-align:left;cursor:pointer;background:0 0;border:none;border-left:3px solid #0000;justify-content:space-between;align-items:baseline;gap:8px;width:100%;padding:10px 14px;transition:background .1s;display:flex}.md-item+.md-item{border-top:1px solid var(--border)}.md-item:hover{background:var(--surface-2)}.md-item.active{background:var(--accent-weak);border-left-color:var(--accent)}.md-item-name{color:var(--text);font-size:13px;font-weight:600}.md-item-meta{color:var(--text-muted);flex-shrink:0;font-size:11px}.md-detail{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.md-empty{text-align:center;color:var(--text-muted);padding:40px 24px;font-size:13px}.fd{padding:14px 16px}.fd-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding-bottom:10px;display:flex}.fd-head h2{margin:0;font-size:15px}.fd-form .field{margin-bottom:9px}.fd-form .field label{margin-bottom:3px}.fd-form .input{height:34px}.fd-form .form-row{gap:10px;margin-bottom:0}.fd-hint{color:var(--text-muted);background:var(--surface-2);border-radius:var(--r-sm);margin-bottom:10px;padding:7px 10px;font-size:12px}.fd-values{border-top:1px solid var(--border);margin-top:14px;padding-top:12px}.fd-values-head{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:8px;font-size:9px;font-weight:700}.fd-empty{color:var(--text-subtle);margin-bottom:8px;font-size:12px;font-style:italic}.fd-val{align-items:center;gap:6px;margin-bottom:5px;display:flex}.fd-val .input{height:32px}.fd-val-label{flex:1}.fd-val-value{flex:1;font-family:monospace;font-size:12px}.fd-val .btn-sm{flex-shrink:0;height:32px}.fd-val-new{border-top:1px dashed var(--border-strong);margin-top:8px;padding-top:8px}.fd-settings{border-top:1px solid var(--border);margin-top:18px;padding-top:16px}.proto-tag{text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--border-strong);color:var(--text-muted);background:0 0;border-radius:5px;align-items:center;gap:5px;padding:2px 7px;font-size:10px;font-weight:600;display:inline-flex}.proto-ic{align-items:center;display:inline-flex}.proto-ic svg{display:block}.modtype-ic{width:22px;height:22px;color:var(--accent-strong);background:var(--accent-weak);border-radius:5px;justify-content:center;align-items:center;display:inline-flex}.modtype-ic svg{width:13px;height:13px;display:block}.drv-status-icon{margin-left:auto;font-size:13px;line-height:1}.drv-status-icon.drv-published{color:var(--ok)}.drv-status-icon.drv-draft{color:var(--text-subtle)}.drv-cols{grid-template-columns:340px 1fr;align-items:start;gap:16px;display:grid}@media (max-width:900px){.drv-cols{grid-template-columns:1fr}}.drv-col{flex-direction:column;gap:16px;display:flex}.drv-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:16px}.drv-box-head{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:12px;font-size:10px;font-weight:700}.drv-hint{color:var(--text-muted);margin:0 0 12px;font-size:12px}.drv-img{aspect-ratio:16/10;object-fit:contain;border-radius:var(--r-sm);background:#fff;width:100%;display:block}.drv-img-ph{color:var(--text-subtle);justify-content:center;align-items:center;font-size:12px;display:flex}.drv-box .field{margin-bottom:10px}.drv-box .form-row{gap:10px;margin-bottom:10px}.drv-box .input{height:34px}.drv-box textarea.input{height:auto}.drv-file{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 0;display:flex}.drv-file:first-of-type{border-top:1px solid var(--border)}.drv-file-info{flex-direction:column;gap:2px;min-width:0;display:flex}.drv-file-name{font-family:monospace;font-size:13px;font-weight:600}.drv-muted{color:var(--text-muted);font-family:monospace;font-size:11px}.drv-file-desc{color:var(--text-muted);margin-top:2px;font-size:12px}.drv-upload{border-top:1px dashed var(--border-strong);flex-direction:column;gap:8px;margin-top:14px;padding-top:14px;display:flex}.drv-danger{border-color:var(--err-weak)}.ir-mode-tabs{gap:4px;display:flex}.ir-mode-tabs button{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:var(--r-sm);padding:5px 12px;font-size:12px;font-weight:600}.ir-mode-tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.ir-section{margin-bottom:22px}.ir-section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 10px;font-size:11px;font-weight:700}.ir-meta-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.ir-meta-grid .field{margin:0}.ir-meta-grid input{height:32px}.op-tabs{flex-wrap:wrap;gap:4px;margin-bottom:14px;display:flex}.op-tab{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:500;transition:all .12s}.op-tab:hover{background:var(--surface-3);color:var(--text)}.op-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}.op-tab.off-tab{margin-left:auto}.op-tab.off-tab.has{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 35%, var(--border))}.swing-row{color:var(--text-muted);align-items:center;gap:10px;margin-bottom:12px;font-size:12px;display:flex}.swing-row select{border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);padding:5px 8px;font-size:12px}.cmd-grid{gap:4px;min-width:max-content;display:grid}.cmd-grid .ch{color:var(--text-muted);text-align:center;text-transform:uppercase;letter-spacing:.04em;padding:6px 10px;font-size:11px;font-weight:600}.cmd-grid .rh{color:var(--text);align-items:center;padding:8px 8px 8px 0;font-size:12px;font-weight:500;display:flex}.cmd-cell{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;min-width:44px;min-height:32px;color:var(--text-muted);justify-content:center;align-items:center;padding:8px 6px;font-size:11px;transition:all .12s;display:flex}.cmd-cell:hover{border-color:var(--accent);color:var(--accent)}.cmd-cell.has{background:color-mix(in srgb, var(--ok) 10%, var(--surface));border-color:color-mix(in srgb, var(--ok) 35%, var(--border));color:var(--ok);font-weight:700}.cmd-grid-scroll{padding-bottom:4px;overflow-x:auto}.tv-remote{justify-content:center;display:flex}.tv-remote-body{background:var(--surface);border:1px solid var(--border);width:300px;box-shadow:var(--shadow-lg);border-radius:36px;flex-direction:column;gap:18px;padding:26px 22px;display:flex}.tv-section h3{text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle);text-align:center;margin:0 0 8px;font-size:9px;font-weight:700}.tv-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.tv-row .tv-btn{flex:1 1 0;min-width:0}.tv-btn{border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:10px;font-family:inherit;font-size:12px;font-weight:500;transition:all .12s;display:inline-flex}.tv-btn:hover{border-color:var(--accent);color:var(--text)}.tv-btn.has{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, var(--border));background:color-mix(in srgb, var(--ok) 12%, var(--surface))}.tv-btn.has .tv-btn-icon{color:var(--ok)}.tv-btn .label{font-style:normal}.tv-btn:not(.has) .label{font-style:italic}.tv-btn.round{border-radius:999px;flex:none;width:52px;height:52px;padding:0}.tv-dpad{grid-template-areas:".up.""left ok right"".down.";justify-content:center;align-items:center;gap:6px;margin:4px auto;display:grid}.tv-dpad .up{grid-area:up}.tv-dpad .down{grid-area:down}.tv-dpad .left{grid-area:left}.tv-dpad .right{grid-area:right}.tv-dpad .ok{grid-area:ok}.tv-dpad-x{grid-template-columns:1fr 1fr 1fr;grid-template-areas:"tl up tr""left ok right""bl down br";justify-content:stretch;gap:10px;width:100%;margin:4px 0}.tv-dpad-x .tv-btn{width:100%;height:64px}.tv-dpad-x .tv-btn.round{border-radius:18px;width:100%;height:64px}.tv-dpad .corner.tl{grid-area:tl}.tv-dpad .corner.tr{grid-area:tr}.tv-dpad .corner.bl{grid-area:bl}.tv-dpad .corner.br{grid-area:br}.tv-dpad-x .corner{border-radius:18px;width:100%;height:64px;padding:0;font-size:11px}.tv-dpad-x .tv-btn.round{background:var(--surface-3);border-color:var(--border-strong);color:var(--text)}.tv-dpad-x .tv-btn.round.ok{font-weight:700}.tv-dpad-x .tv-btn.round.has,.tv-dpad-x .corner.has{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, var(--border));background:color-mix(in srgb, var(--ok) 12%, var(--surface))}.tv-streaming{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.tv-streaming .tv-btn{aspect-ratio:1;border-radius:var(--r-md);flex-direction:column;gap:4px;padding:6px}.tv-streaming .tv-btn .label{text-align:center;font-size:10px;line-height:1.15}.chip-list{flex-wrap:wrap;gap:6px;display:flex}.chip-tag{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:4px 10px;font-size:12px}.ir-code-ta{border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface-2);width:100%;min-height:120px;color:var(--text);resize:vertical;padding:10px;font-family:monospace;font-size:11px;line-height:1.4}.ir-layout{grid-template-columns:300px 1fr;align-items:stretch;height:calc(100vh - 52px);display:grid;overflow:hidden}@media (max-width:820px){.ir-layout{grid-template-columns:1fr;height:auto;overflow:visible}}.ir-list{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;min-height:0;display:flex;overflow:hidden}.ir-list-search{border-bottom:1px solid var(--border);padding:12px}.ir-list-search .input{height:34px}.ir-list-items{flex:1;overflow-y:auto}.ir-list-empty{color:var(--text-muted);text-align:center;padding:24px;font-size:12px}.ir-item{text-align:left;cursor:pointer;border:none;border-bottom:1px solid var(--border);background:0 0;border-left:3px solid #0000;align-items:flex-start;gap:9px;width:100%;padding:10px 14px;transition:background .1s;display:flex}.ir-item:hover{background:var(--surface-2)}.ir-item.active{background:var(--accent-weak);border-left-color:var(--accent)}.ir-item-dot{font-size:11px;line-height:1.4}.ir-item-dot.drv-published{color:var(--ok)}.ir-item-dot.drv-draft{color:var(--text-subtle)}.ir-item-body{flex-direction:column;gap:2px;min-width:0;display:flex}.ir-item-name{color:var(--text);font-size:13px;font-weight:600}.ir-item-meta{color:var(--text-muted);font-size:11px}.ir-detail{min-width:0;padding:20px 24px;overflow-y:auto}.ir-editor-panel{max-width:1000px;margin:0 auto}.ir-panel-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;padding-bottom:14px;display:flex}.ir-panel-title{font-size:17px;font-weight:700}.ir-panel-sub{color:var(--text-muted);margin-top:2px;font-size:12px}.ir-section-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.ir-section-head h3,.ir-section-head .swing-row{margin:0}.swing-pills{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.swing-label{color:var(--text-muted);margin-right:2px;font-size:12px}.ir-pill-groups{flex-wrap:wrap;align-items:flex-start;gap:24px;margin-bottom:14px;display:flex}.ir-pill-group{flex-direction:column;display:flex}.ir-pill-group h3{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 10px;font-size:11px;font-weight:700}.ir-pill-group .op-tabs{margin-bottom:0}.ir-pill-off{margin-left:auto}.ir-pill-off .op-tabs{justify-content:flex-end}.cfg-tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:20px;display:flex}.cfg-tabs button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 16px;font-size:13px;font-weight:600}.cfg-tabs button:hover{color:var(--text)}.cfg-tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.brand-add{gap:8px;margin-bottom:16px;display:flex}.brand-add .input{height:36px}.cfg-group{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);margin-bottom:14px;padding:14px}.cfg-group-head{align-items:center;gap:8px;margin-bottom:12px;display:flex}.cfg-group-name{flex:1;height:34px;font-weight:600}.cfg-group-style{flex-shrink:0;width:180px;height:34px}.cfg-buttons{flex-direction:column;gap:8px;display:flex}.cfg-btn{align-items:center;gap:8px;display:flex}.cfg-btn-img,.cfg-btn-imgph,.cfg-btn-imgwrap{border-radius:var(--r-sm);flex-shrink:0;width:36px;height:36px}.cfg-btn-img{object-fit:cover;border:1px solid var(--border);display:block}.cfg-btn-imgph{border:1px dashed var(--border-strong);color:var(--text-muted);cursor:pointer;background:var(--surface-2);justify-content:center;align-items:center;font-size:10px;display:flex}.cfg-btn-imgph:hover{border-color:var(--accent);color:var(--accent)}.cfg-btn-imgwrap{cursor:pointer;display:block;position:relative;overflow:hidden}.cfg-btn-imgwrap .cfg-btn-img{width:100%;height:100%}.cfg-btn-imgwrap:hover:after{content:"trocar";color:#fff;background:#0000008c;justify-content:center;align-items:center;font-size:9px;font-weight:600;display:flex;position:absolute;inset:0}.cfg-btn-label{flex:1;height:34px}.cfg-btn-key{flex:1;height:34px;font-family:monospace;font-size:12px}.tv-remote-flow{flex-direction:column;gap:18px;display:flex}.tv-btn-img{object-fit:contain;width:24px;height:24px}.tv-btn.round .tv-btn-img{width:28px;height:28px}.brands-tbl td{padding:6px 14px}.brands-tbl .btn-sm{height:26px}.mdl-type{margin-bottom:18px}.mdl-type-head{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:6px;font-size:11px;font-weight:700}.mdl-list{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.mdl-chip{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);align-items:center;gap:6px;padding:4px 6px 4px 10px;font-size:12px;display:inline-flex}.mdl-chip button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:14px;line-height:1}.mdl-chip button:hover{color:var(--err)}.mdl-add{border:1px dashed var(--border-strong);color:var(--text-muted);border-radius:var(--r-sm);cursor:pointer;background:0 0;padding:4px 10px;font-size:12px}.mdl-add:hover{border-color:var(--accent);color:var(--accent)}.ir-info-row{grid-template-columns:1fr 2fr;align-items:start;gap:12px;display:grid}@media (max-width:600px){.ir-info-row{grid-template-columns:1fr}}.cfg-preview{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:18px;padding:18px}.cfg-preview-head{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:14px;font-size:11px;font-weight:700}.tv-streaming .tv-btn-img{object-fit:contain;width:100%;max-width:64px;height:100%;max-height:64px}.tv-streaming .tv-btn{padding:8px}.rocker-row{justify-content:center;gap:18px;display:flex}.rocker{flex-direction:column;align-items:center;display:flex}.rocker-bar{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;flex-direction:column;align-items:center;width:56px;display:flex;overflow:hidden}.rocker-btn{cursor:pointer;color:var(--text-muted);background:0 0;border:none;width:100%;height:44px;font-size:20px;font-weight:600;transition:all .12s}.rocker-btn:hover{background:var(--surface-3);color:var(--accent)}.rocker-btn.has{color:var(--ok)}.rocker-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle);border-top:1px solid var(--border);border-bottom:1px solid var(--border);text-align:center;width:100%;padding:4px 0;font-size:9px;font-weight:700}.tv-btn.config-full{border-radius:var(--r-lg);flex:1;width:100%;padding:13px;font-weight:600}.vol-bar{border:1px solid var(--border);background:var(--surface-2);border-radius:999px;width:100%;display:flex;overflow:hidden}.vol-seg{cursor:pointer;color:var(--text-muted);background:0 0;border:none;flex:1;justify-content:center;align-items:center;height:44px;font-size:20px;font-weight:600;transition:all .12s;display:flex}.vol-seg+.vol-seg{border-left:1px solid var(--border)}.vol-seg:hover{background:var(--surface-3);color:var(--accent)}.vol-seg.has{color:var(--ok);background:color-mix(in srgb, var(--ok) 12%, transparent)}.vol-mute{flex:0 0 64px;font-size:15px}.tv-btn-icon{justify-content:center;align-items:center;display:inline-flex}.tv-btn,.vol-seg,.numpad-btn,.tv-dpad .tv-btn{transition:transform 80ms,box-shadow .1s,background .12s,border-color .12s}.tv-btn:active,.vol-seg:active,.numpad-btn:active,.tv-dpad .tv-btn:active{background:var(--surface-3);box-shadow:inset 0 2px 6px color-mix(in srgb, var(--text) 18%, transparent);transform:scale(.94)}.numpad-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-xl);width:min(280px,92vw);padding:18px}.numpad-head{justify-content:space-between;align-items:center;margin-bottom:14px;font-size:13px;font-weight:600;display:flex}.numpad-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;font-size:20px;line-height:1}.numpad-close:hover{color:var(--text)}.numpad-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.numpad-btn{border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);height:56px;color:var(--text);cursor:pointer;font-size:20px;font-weight:600;transition:all .12s}.numpad-btn:hover{border-color:var(--accent);color:var(--accent)}.numpad-btn.has{border-color:color-mix(in srgb,var(--ok) 35%,var(--border));color:var(--ok);background:color-mix(in srgb,var(--ok) 8%,var(--surface))}.numpad-back{color:var(--text-muted)}.numpad-back:hover{color:var(--accent);border-color:var(--accent)}.numpad-back svg{width:20px;height:20px}.rp-wrap{background:var(--bg);flex-direction:column;align-items:center;gap:14px;min-height:100vh;padding:20px 16px 40px;display:flex}.rp-tabs{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.rp-tabs button{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:999px;padding:7px 16px;font-size:13px;font-weight:600}.rp-tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.rp-feedback{height:22px;color:var(--accent);font-size:13px;font-weight:600}.rp-empty{color:var(--text-muted);padding:60px 20px}.rp-wrap{background:#fff;padding:14px 14px 32px}.rp-wrap .tv-remote{width:100%}.rp-wrap .tv-remote-body{width:100%;max-width:520px;box-shadow:none;background:0 0;border:none;border-radius:0;gap:14px;padding:0}.ir-edit-cols{grid-template-columns:1fr 360px;align-items:start;gap:16px;display:grid}@media (max-width:860px){.ir-edit-cols{grid-template-columns:1fr}}.cmd-editor{flex-direction:column;gap:18px;display:flex}.cmd-sec-head{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:6px;font-size:11px;font-weight:700}.cmd-field{align-items:center;gap:12px;padding:6px 0;display:flex}.cmd-field-name{flex-shrink:0;align-items:center;gap:8px;width:160px;font-size:13px;display:flex}.cmd-dot{background:var(--border-strong);border-radius:999px;flex-shrink:0;width:8px;height:8px}.cmd-dot.on{background:var(--ok)}.cmd-field-input{resize:vertical;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);min-height:34px;max-height:80px;color:var(--text);flex:1;padding:8px 10px;font-family:monospace;font-size:11px;line-height:1.3}.cmd-field-input:focus{border-color:var(--accent);outline:none}.drv-ta{resize:none;min-height:0;overflow:hidden}.img-drop{aspect-ratio:16/10;border-radius:var(--r-sm);border:1.5px dashed var(--border-strong);cursor:pointer;background:#fff;width:100%;transition:border-color .15s,background .15s;position:relative;overflow:hidden}.img-drop:hover,.img-drop:focus-visible{border-color:var(--accent);outline:none}.img-drop.dragging{border-color:var(--accent);background:var(--accent-weak)}.img-drop.busy{cursor:default}.img-drop-preview{object-fit:contain;width:100%;height:100%;display:block}.img-drop-empty{color:var(--text-subtle);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:12px;display:flex;position:absolute;inset:0}.img-drop-overlay{background:color-mix(in srgb, var(--surface) 78%, transparent);color:var(--text);opacity:0;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);flex-direction:column;justify-content:center;align-items:center;gap:6px;transition:opacity .15s;display:flex;position:absolute;inset:0}.img-drop:hover .img-drop-overlay,.img-drop.dragging .img-drop-overlay,.img-drop.busy .img-drop-overlay{opacity:1}.img-drop-overlay span{font-size:13px;font-weight:600}.img-drop-overlay small{color:var(--text-muted);font-size:11px}.act-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.act-value{flex:0 0 150px;font-family:ui-monospace,monospace;font-size:12px}.act-arrow{color:var(--text-muted);flex-shrink:0}.act-label{flex:1}.act-del{flex:none;padding:0 10px}.io-sub{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:8px;font-size:11px;font-weight:700}.io-row{align-items:center;gap:6px;margin-bottom:6px;display:flex}.io-row .input{height:34px}.io-dp{text-align:center;flex:0 0 56px;font-family:ui-monospace,monospace}.io-name{flex:1}.io-type,.io-ctrl{flex:0 0 120px}.io-unit{flex:0 0 64px}.io-scale{text-align:center;flex:0 0 70px}.io-del{flex:none;padding:0 9px}.cfg-row{border:1px solid var(--border,#2a2a2a);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;display:flex}
