:root{--bg: #f5f6f8;--surface: #ffffff;--text: #1d2330;--muted: #667085;--border: #e3e6eb;--primary: #2459d6;--primary-text: #ffffff;--danger: #c4321f;--ok: #1f8a4c;--warn: #b26b00;--idle: #c9a227;--radius: 8px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;font-size:15px;line-height:1.45;color:var(--text);background:var(--bg);color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #14171c;--surface: #1d2128;--text: #e6e8ec;--muted: #9aa3b2;--border: #2d333d;--primary: #4f7fe8}}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1{font-size:1.4rem;margin:0}h2{font-size:1.05rem;margin:0 0 .6rem}h3{font-size:1rem;margin:1.2rem 0 .5rem}a{color:var(--primary);text-decoration:none}code{font-family:ui-monospace,Consolas,monospace;font-size:.9em}.hash{word-break:break-all}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center;margin-top:20vh}button{font:inherit;padding:.45rem .9rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.link,button.icon{border:none;background:none;padding:.2rem 0;color:var(--primary)}button.icon{font-size:1.5rem;line-height:1;color:var(--muted)}button.wide{width:100%;margin-top:.5rem}input,select,textarea{font:inherit;padding:.45rem .6rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);width:100%}input[type=checkbox],input[type=radio]{width:auto}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.8rem}.check,.radio{display:flex;align-items:center;gap:.4rem;margin:.3rem 0}.form-row{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.form-row .field{min-width:14rem}.code-input{font-size:1.5rem;letter-spacing:.3em;text-align:center}.error,.notice{padding:.6rem .8rem;border-radius:var(--radius);margin:.6rem 0}.error{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}.error-text{color:var(--danger)}.notice{background:color-mix(in srgb,var(--warn) 12%,transparent)}.notice.ok{background:color-mix(in srgb,var(--ok) 12%,transparent)}.notice.banner{margin:0;border-radius:0;text-align:center}.empty{padding:2rem;text-align:center;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius)}.topbar{display:flex;align-items:center;gap:1.2rem;padding:.6rem 1.2rem;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.brand{font-weight:700;font-size:1.1rem}.topbar nav{display:flex;gap:.2rem;flex-wrap:wrap}.topbar nav a{padding:.4rem .7rem;border-radius:var(--radius);color:var(--text)}.topbar nav a.active{background:color-mix(in srgb,var(--primary) 14%,transparent);color:var(--primary)}.count{display:inline-block;margin-left:.35rem;min-width:1.3rem;padding:0 .35rem;border-radius:999px;background:var(--danger);color:#fff;font-size:.75rem;text-align:center}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:.6rem}main{max-width:1200px;margin:0 auto;padding:1.2rem}.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.4rem 0 1rem;flex-wrap:wrap}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1rem}.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin:.6rem 0 1rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;background:var(--surface)}th,td{text-align:left;padding:.5rem .6rem;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-weight:600}tr.clickable{cursor:pointer}tr.clickable:hover td{background:color-mix(in srgb,var(--primary) 5%,transparent)}table.devices,table.audit{border:1px solid var(--border);border-radius:var(--radius)}.dot{display:inline-block;width:.65rem;height:.65rem;border-radius:50%;background:var(--muted);margin-right:.2rem}.dot.online{background:var(--ok)}.dot.idle{background:var(--idle)}.dot.locked{background:var(--warn)}.dot.break{background:#7a8ab8}.dot.offline{background:#b9bec7}.badge{display:inline-block;margin-left:.35rem;padding:0 .45rem;border-radius:999px;font-size:.75rem;border:1px solid var(--border);color:var(--muted);white-space:nowrap}.badge.home{border-color:var(--warn);color:var(--warn)}.badge.pilot{border-color:var(--primary);color:var(--primary)}.badge.ok{border-color:var(--ok);color:var(--ok)}.badge.warn{border-color:var(--danger);color:var(--danger)}.kv{margin:0}.kv>div{display:grid;grid-template-columns:11rem 1fr;gap:.6rem;padding:.3rem 0;border-bottom:1px solid var(--border)}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-word}.kv.compact>div{grid-template-columns:7rem 1fr}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem}.pending-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.pending-head h2{margin:0}.pending .actions button{flex:1;padding:.7rem}.bulk-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;padding:.6rem .8rem;margin-bottom:1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.6rem}.auth-card h1{margin:.3rem 0 1rem}.qr{display:block;margin:.6rem auto;background:#fff;padding:6px;border-radius:var(--radius)}.codes{columns:2;font-size:1.05rem}.modal-backdrop{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:10}.modal{width:100%;max-width:560px;max-height:90vh;overflow:auto;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border)}.modal-head,.modal-foot{display:flex;align-items:center;justify-content:space-between;padding:.8rem 1rem}.modal-head{border-bottom:1px solid var(--border)}.modal-head h2{margin:0}.modal-foot{border-top:1px solid var(--border);justify-content:flex-end;gap:.5rem}.modal-body{padding:1rem}@media(max-width:640px){main{padding:.8rem}.topbar{gap:.6rem}.topbar-right{margin-left:0;width:100%;justify-content:space-between}.kv>div{grid-template-columns:1fr;gap:0}.cards{grid-template-columns:1fr}}.timeline{list-style:none;margin:0;padding:0}.timeline li{padding:.35rem 0;border-bottom:1px solid var(--border)}.meter{height:.6rem;border-radius:999px;background:var(--border);overflow:hidden;margin:.4rem 0 .8rem}.meter>div{height:100%;background:var(--ok)}.meter.warn>div{background:var(--warn)}.meter.full>div{background:var(--danger)}.error.banner{margin:0;border-radius:0;text-align:center}.notif{position:relative}.notif-panel{position:absolute;right:0;top:2.4rem;width:min(340px,90vw);max-height:60vh;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.6rem;z-index:5;box-shadow:0 6px 24px #0003}.notif-head,.notif-item{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}.notif-item{padding:.45rem 0;border-top:1px solid var(--border)}.tabs{display:flex;gap:.2rem;flex-wrap:wrap;border-bottom:1px solid var(--border);margin:0 0 1rem}.tabs a{padding:.45rem .8rem;color:var(--text);border-bottom:2px solid transparent;margin-bottom:-1px}.tabs a.active{color:var(--primary);border-bottom-color:var(--primary)}.editor-section{border-top:1px solid var(--border);padding-top:.8rem;margin-top:.8rem}.chips{display:flex;flex-wrap:wrap;gap:.35rem;margin:.4rem 0}.chip{display:inline-flex;align-items:center;gap:.2rem;padding:.1rem .55rem;border:1px solid var(--border);border-radius:999px;font-size:.85rem;background:var(--surface)}.chip.removed{text-decoration:line-through;color:var(--muted)}.chip button{border:none;background:none;padding:0 .15rem;color:var(--muted)}.scrollbox{max-height:12rem;overflow:auto}.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0 1rem}.rule-list{margin:.3rem 0;padding-left:1.1rem}.rule-list li{padding:.15rem 0}.rule-list button{margin-left:.5rem}.app-add{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.4rem;margin:.4rem 0}.win-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.4rem 0}.win-row input[type=time]{width:auto}.days{display:flex;flex-wrap:wrap;gap:0 .6rem}.row-actions{display:flex;flex-wrap:wrap;gap:.4rem}.save-bar{margin-top:1rem}.preview{border-top:1px solid var(--border);margin-top:.8rem;padding-top:.8rem}.shots{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.6rem;margin-top:.6rem}.shot{display:flex;flex-direction:column;gap:.25rem;padding:.3rem;overflow:hidden;text-align:left}.shot img{width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:4px;background:#000}.shot img.blurred{filter:blur(8px)}.shot-full,.live-canvas{display:block;max-width:100%;height:auto;margin-top:.5rem;border:1px solid var(--border);background:#000}.modal:has(.live-canvas),.modal:has(.shot-full){max-width:min(1320px,96vw)}
