:root{--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--radius: 16px;--radius-sm: 10px;--radius-lg: 22px;--on-tint: #fff;--person: #ffb020;--animal: #3ddc97;--vehicle: #4fb3ff;--package: #b07cff;--bell: #ff6fb5;--motion: #7d8798;--alarm: #ff4d5e;--other: #8b95a7;--bg: #141327;--page: linear-gradient(160deg, #1b1530 0%, #0f1a2e 50%, #2a1622 100%);--surface: rgb(255 255 255 / 7.5%);--card-border: rgb(255 255 255 / 10%);--glass: blur(12px) saturate(140%);--shadow: 0 1px 2px rgb(0 0 0 / 30%), 0 10px 28px rgb(0 0 0 / 35%);--surface2: rgb(255 255 255 / 8%);--fill-hover: rgb(255 255 255 / 12%);--chip-bg: rgb(255 255 255 / 10%);--seg-on: rgb(255 255 255 / 18%);--icon-bg: rgb(255 255 255 / 10%);--icon-fg: rgb(235 235 245 / 75%);--border: rgb(255 255 255 / 9%);--border2: rgb(255 255 255 / 16%);--bg2: #1c1c2a;--menu-bg: #1c1c2a;--shadow-lg: 0 2px 6px rgb(0 0 0 / 30%), 0 24px 60px rgb(0 0 0 / 50%);--backdrop: rgb(4 3 12 / 55%);--bar-bg: rgb(24 20 44 / 72%);--bar-blur: blur(20px) saturate(160%);--bar-border: rgb(255 255 255 / 12%);--bar-shadow: inset 0 1px 0 rgb(255 255 255 / 8%), 0 8px 30px rgb(0 0 0 / 40%);--side-bg: var(--bar-bg);--tabbar-bg: rgb(30 26 52 / 80%);--tabbar-blur: blur(24px) saturate(180%);--tab-on: rgb(255 255 255 / 10%);--text: #f2f2f7;--muted: rgb(235 235 245 / 60%);--faint: rgb(235 235 245 / 38%);--accent: #0a84ff;--accent-soft: rgb(10 132 255 / 18%);--accent-text: #4da3ff;--accent2: #0060d8;--accent-fill: #0068f0;--on-accent: #fff;--rec: #ff453a;--ok: #30d158;--ok-text: #30d158;--warn: #ff9f0a;--warn-text: #ff9f0a;--danger-text: #ff6961;--role-developer: #d19bff;--role-ha: #4fc3f7;--track: rgb(255 255 255 / 14%);--track-main: #5e9bff;--gap: repeating-linear-gradient(135deg, rgb(255 69 58 / 45%) 0 4px, rgb(255 69 58 / 12%) 4px 8px);color-scheme:dark}[data-theme=aura-light]{--bg: #f4eefb;--page: linear-gradient(160deg, #f6e9ff 0%, #e9f0ff 46%, #fff0e4 100%);--surface: rgb(255 255 255 / 58%);--card-border: rgb(255 255 255 / 75%);--glass: blur(12px) saturate(160%);--shadow: 0 1px 2px rgb(40 20 80 / 4%), 0 8px 24px rgb(70 50 120 / 8%);--surface2: rgb(118 118 128 / 12%);--fill-hover: rgb(118 118 128 / 18%);--chip-bg: rgb(255 255 255 / 62%);--seg-on: #fff;--icon-bg: rgb(118 118 128 / 12%);--icon-fg: rgb(60 60 67 / 70%);--border: rgb(60 60 67 / 13%);--border2: rgb(60 60 67 / 22%);--bg2: #fff;--menu-bg: #fff;--shadow-lg: 0 2px 6px rgb(40 20 80 / 8%), 0 24px 60px rgb(70 50 120 / 22%);--backdrop: rgb(30 20 60 / 28%);--bar-bg: rgb(246 236 255 / 70%);--bar-border: rgb(255 255 255 / 80%);--bar-shadow: inset 0 1px 0 rgb(255 255 255 / 70%), 0 1px 2px rgb(40 20 80 / 5%), 0 10px 30px rgb(70 50 120 / 14%);--tabbar-bg: rgb(250 246 255 / 82%);--tab-on: rgb(118 118 128 / 14%);--text: #1c1c1e;--muted: rgb(60 60 67 / 72%);--faint: rgb(60 60 67 / 40%);--accent: #007aff;--accent-soft: rgb(0 122 255 / 12%);--accent-text: #0064e0;--accent2: #0060d8;--accent-fill: #0068f0;--on-accent: #fff;--rec: #ff3b30;--ok: #34c759;--ok-text: #1f7a36;--warn: #ff9500;--warn-text: #b25000;--danger-text: #c4001a;--role-developer: #8a2bb9;--role-ha: #01579b;--track: rgb(60 60 67 / 14%);--track-main: #5b8def;--gap: repeating-linear-gradient(135deg, rgb(255 59 48 / 40%) 0 4px, rgb(255 59 48 / 10%) 4px 8px);color-scheme:light}[data-theme=graphite]{--bg: #0a0c10;--page: radial-gradient(1200px 600px at 10% -10%, #16203a 0%, transparent 60%), #0a0c10;--surface: #141820;--card-border: #232a36;--glass: none;--shadow: 0 1px 0 rgb(255 255 255 / 3%) inset, 0 8px 30px rgb(0 0 0 / 35%);--surface2: #1a1f29;--fill-hover: #212734;--chip-bg: #141820;--seg-on: #262d3a;--icon-bg: #1a1f29;--icon-fg: #8b95a7;--border: #232a36;--border2: #2d3542;--bg2: #0f1218;--menu-bg: #161a22;--shadow-lg: 0 24px 60px rgb(0 0 0 / 55%);--backdrop: rgb(0 0 0 / 60%);--bar-bg: #0f1218;--bar-blur: none;--tabbar-bg: #0f1218;--tabbar-blur: none;--bar-border: #232a36;--bar-shadow: 0 8px 30px rgb(0 0 0 / 45%);--tab-on: #1a1f29;--text: #e8ecf2;--muted: #8b95a7;--faint: #5b6577;--accent: #5b8cff;--accent-soft: rgb(91 140 255 / 14%);--accent-text: #7aa2ff;--accent2: #7aa2ff;--accent-fill: #5b8cff;--on-accent: #0a0c10;--rec: #ff4d5e;--ok: #3ddc97;--ok-text: #3ddc97;--warn: #ffb547;--warn-text: #ffb547;--danger-text: #ff4d5e;--role-developer: #c39bff;--role-ha: #4fc3f7;--track: #2a3446;--track-main: #4a6fd1;--gap: repeating-linear-gradient(135deg, #3a1f26 0 4px, #24161b 4px 8px);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{margin:0}:root{--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--tabbar-h: 58px;--tabbar-gap: max(8px, calc(var(--safe-bottom) - 12px));--tabbar-space: calc(var(--tabbar-h) + var(--tabbar-gap) + 16px)}body{min-width:320px;min-height:100vh;min-height:100dvh;background-color:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.4;-webkit-font-smoothing:antialiased;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;overflow-x:clip}body:after{content:"";position:fixed;inset:0;z-index:-1;background:var(--page);background-color:var(--bg);pointer-events:none}@media(max-width:899px){body{font-size:15px}}button,input,select,textarea{font:inherit;color:inherit}a,button,input,select,textarea,[role=radio]{touch-action:manipulation}a{color:var(--accent-text)}h1,h2{text-wrap:balance}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.main:focus-visible{outline:none}html{overscroll-behavior:none}:root{--titlebar-h: 0px}@media(display-mode:window-controls-overlay){:root{--titlebar-h: env(titlebar-area-height, 0px)}body{padding-top:var(--titlebar-h)}body:before{content:"";position:fixed;top:0;right:0;left:0;z-index:30;height:var(--titlebar-h);background:var(--bar-bg);-webkit-backdrop-filter:var(--bar-blur);backdrop-filter:var(--bar-blur);app-region:drag;-webkit-app-region:drag}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.mono{font-family:var(--font-mono);font-size:.92em;font-variant-numeric:tabular-nums}.mono,code,kbd,samp{overflow-wrap:anywhere}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.icon{flex:none}.skip-link{position:absolute;top:8px;left:8px;z-index:100;padding:10px 14px;border-radius:10px;background:var(--accent-fill);color:var(--on-accent);font-weight:600;text-decoration:none;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.shell.wide{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh;min-height:100dvh}.shell.narrow{min-height:100vh;min-height:100dvh;padding-bottom:var(--tabbar-space)}.main{display:flex;flex-direction:column;min-width:0}.side{position:sticky;top:calc(var(--titlebar-h) + 12px);display:flex;flex-direction:column;gap:2px;height:calc(100vh - var(--titlebar-h) - 24px);height:calc(100dvh - var(--titlebar-h) - 24px);margin:12px 0 12px max(12px,var(--safe-left));padding:14px 10px;overflow-y:auto;border:1px solid var(--bar-border);border-radius:var(--radius-lg);background:var(--side-bg);box-shadow:var(--bar-shadow);backdrop-filter:var(--bar-blur);-webkit-backdrop-filter:var(--bar-blur)}.side-nav{display:flex;flex-direction:column;gap:2px}.side .spacer{flex:1}.brand{display:flex;align-items:center;gap:10px;padding:2px 10px 14px;font-size:17px;font-weight:700;letter-spacing:-.02em}.brand .icon{width:28px;height:28px}.nav{display:flex;align-items:center;gap:10px;min-height:36px;padding:7px 10px;border-radius:11px;color:var(--text);font-weight:500;text-decoration:none;transition:background-color .15s,color .15s}.nav .icon{width:19px;height:19px;color:var(--icon-fg)}.nav:hover{background:var(--fill-hover)}.nav.on{background:var(--accent-soft);color:var(--accent-text);font-weight:600}.nav.on .icon{color:var(--accent)}.nav-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:1100px){.shell.wide{grid-template-columns:76px minmax(0,1fr)}.side .brand span,.side .nav-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.side .brand,.side .nav{justify-content:center}.side .brand{padding:2px 0 14px}}.tabbar{position:fixed;right:max(14px,var(--safe-right));bottom:var(--tabbar-gap);left:max(14px,var(--safe-left));z-index:20;display:grid;grid-template-columns:repeat(4,1fr);gap:2px;height:var(--tabbar-h);padding:4px;border:1px solid var(--bar-border);border-radius:999px;background:var(--tabbar-bg);box-shadow:var(--bar-shadow);backdrop-filter:var(--tabbar-blur);-webkit-backdrop-filter:var(--tabbar-blur)}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;border-radius:999px;color:var(--text);font-size:10.5px;font-weight:600;letter-spacing:.01em;text-decoration:none;white-space:nowrap;transition:color .15s,background-color .15s}.tab .icon{width:22px;height:22px}.tab:hover{background:var(--fill-hover)}.tab.on{background:var(--tab-on);color:var(--accent)}.top{position:sticky;top:calc(var(--titlebar-h) + 12px);z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:56px;margin:12px max(12px,var(--safe-right)) 0 12px;padding:8px 10px 8px 18px;border:1px solid var(--bar-border);border-radius:18px;background:var(--bar-bg);box-shadow:var(--bar-shadow);backdrop-filter:var(--bar-blur);-webkit-backdrop-filter:var(--bar-blur)}.top h1{min-width:0;margin:0;overflow:hidden;font-size:19px;font-weight:700;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap}.top .grow{flex:1}.top-row{display:contents}.top-tools,.top-actions{display:flex;align-items:center;gap:8px;min-width:0}.top-tools{flex-wrap:wrap}.top-control{min-width:0}.shell.wide .top h1.has-control{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.crumb{color:var(--muted);font-size:19px;font-weight:600;text-decoration:none;white-space:nowrap;transition:color .15s}.crumb:hover{color:var(--text)}.crumb-sep{margin:0 -4px;color:var(--faint);font-size:19px}.shell.narrow .top{position:sticky;top:var(--titlebar-h);z-index:10;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:0;margin:0 0 10px;padding:calc(var(--safe-top) + 8px) max(16px,var(--safe-right)) 8px max(16px,var(--safe-left));border:0;border-bottom:1px solid var(--border);border-radius:0;background:var(--bar-bg);box-shadow:none;backdrop-filter:var(--bar-blur);-webkit-backdrop-filter:var(--bar-blur)}.shell.narrow .top h1{grid-row:1;grid-column:1;font-size:26px;line-height:34px;letter-spacing:-.025em}.shell.narrow .top .crumb-sep,.shell.narrow .top-row.empty{display:none}.shell.narrow .top-actions{grid-row:1;grid-column:2;justify-self:end}.shell.narrow .top-row{display:flex;grid-column:1 / -1;align-items:center;gap:8px;min-width:0}.shell.narrow .top-control{flex:0 1 auto}.shell.narrow .top-row .grow{display:none}.shell.narrow .top-control+.grow{display:block;flex:1 0 0}.shell.narrow .top-tools{flex:1 1 auto;flex-wrap:nowrap;margin:0 calc(-1*max(16px,var(--safe-right))) 0 calc(-1*max(16px,var(--safe-left)));padding:2px max(16px,var(--safe-right)) 2px max(16px,var(--safe-left));overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain}.shell.narrow .top-tools::-webkit-scrollbar{display:none}.shell.narrow .top-tools>*{flex:none}.shell.narrow .top.sub{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);row-gap:6px;padding-top:var(--safe-top);padding-bottom:6px}.shell.narrow .top.sub:has(.top-row.empty){padding-bottom:0}.shell.narrow .top.sub h1{grid-column:2;max-width:56vw;font-size:17px;font-weight:600;line-height:44px;letter-spacing:-.01em;text-align:center}.shell.narrow .top.sub .top-actions{grid-column:3}.shell.narrow .top.sub .crumb{grid-row:1;grid-column:1;justify-self:start;display:inline-flex;align-items:center;gap:3px;max-width:100%;min-height:44px;margin-left:-6px;padding-right:6px;overflow:hidden;color:var(--accent);font-size:17px;font-weight:400;text-overflow:ellipsis}.shell.narrow .top-control~.top-tools{flex:none;margin:0;padding:0;overflow:visible}.shell.narrow .top.sub .top-actions .btn:has(.icon){width:36px;min-height:36px;padding:0;gap:0;font-size:0}.shell.narrow .top.sub .top-actions .btn:has(.icon) .icon{width:20px;height:20px}.shell.narrow .top.sub .crumb:before{content:"";flex:none;width:11px;height:11px;margin:0 3px 0 8px;border-bottom:2.5px solid currentColor;border-left:2.5px solid currentColor;border-radius:1px;transform:rotate(45deg)}.page{padding:12px 12px 16px}.shell.narrow .page{padding:0 max(14px,var(--safe-right)) 12px max(14px,var(--safe-left))}.stack{display:grid;gap:12px;max-width:640px}.stack>*,.system-list>*,.pool-list>*,.card{min-width:0}.system-list{display:grid;gap:12px;max-width:820px}.page-intro{max-width:820px;margin:0 0 12px;color:var(--muted);font-size:13px}.card{padding:16px;border:1px solid var(--card-border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass)}:where(.shell.narrow) .card{padding:14px}.card-title{margin:0 0 2px;font-size:16px;font-weight:650;letter-spacing:-.01em}.card .sub{margin:0 0 12px;color:var(--muted);font-size:13px;overflow-wrap:anywhere}.card .sub b{color:var(--text);font-weight:600}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:6px 14px;border:1px solid transparent;border-radius:999px;background:var(--surface2);color:var(--text);font-size:14px;font-weight:600;white-space:nowrap;text-decoration:none;cursor:pointer;transition:background-color .15s,border-color .15s,transform .1s}.btn:hover{background:var(--fill-hover)}.btn:active:not(:disabled){transform:scale(.97)}.btn.primary{background:var(--accent-fill);color:var(--on-accent)}.btn.primary:hover{background:var(--accent2)}.btn.danger{color:var(--danger-text)}.btn.danger:hover{border-color:var(--rec)}.btn:disabled{cursor:not-allowed;opacity:.5}.btn[aria-busy=true]{cursor:progress;opacity:.8}.btn .icon{width:16px;height:16px}.iconbtn{position:relative;display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid transparent;border-radius:999px;background:var(--surface2);color:var(--text);cursor:pointer;transition:color .15s,background-color .15s,border-color .15s}.iconbtn:hover{background:var(--fill-hover)}.iconbtn .icon{width:18px;height:18px}.chip{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:4px 12px;border:1px solid var(--card-border);border-radius:999px;background-color:var(--chip-bg);color:var(--text);font-size:13px;font-weight:500;white-space:nowrap;cursor:pointer;transition:color .15s,border-color .15s,background-color .15s}.chip:hover{border-color:var(--border2)}.chip.on{border-color:transparent;background-color:var(--accent-fill);color:var(--on-accent)}select.chip.on{border-color:transparent;background-color:var(--accent-soft);color:var(--accent-text)}.chip .dot{width:8px;height:8px;border-radius:50%}.chip.on .dot{box-shadow:0 0 0 1.5px #ffffffd9}select.chip{appearance:none;padding-right:28px;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 15px) 52%,calc(100% - 10px) 52%;background-size:5px 5px;background-repeat:no-repeat}select.chip option{background:var(--menu-bg);color:var(--text)}.seg{display:inline-flex;gap:2px;padding:2px;border-radius:10px;background:var(--surface2)}.seg button,.seg a{position:relative;min-height:28px;padding:4px 12px;border:0;border-radius:8px;background:transparent;color:var(--text);font-size:13px;font-weight:500;white-space:nowrap;cursor:pointer;transition:color .15s,background-color .15s}.seg button:hover,.seg a:hover{background:var(--fill-hover)}.seg button.on,.seg a.on{background:var(--seg-on);box-shadow:0 1px 2px #0000001f,0 2px 8px #00000014;font-weight:600}.seg.full{display:flex;width:100%}.seg.full button{flex:1 1 0;min-width:0;padding:4px 6px;overflow:hidden;text-overflow:ellipsis}@media(any-pointer:coarse){.btn{min-height:38px;font-size:15px}.iconbtn{width:38px;height:38px}.chip,.seg button,.seg a{min-height:30px}.nav{min-height:44px}.btn:after,.iconbtn:after,.chip:after,.seg button:after,.seg a:after{content:"";position:absolute;inset:-7px -2px}.iconbtn:after{inset:-3px}}.setting{display:grid;gap:8px;padding:10px 0;border-top:1px solid var(--border)}.setting-label{font-weight:500}.glist-stack{display:grid;gap:22px;max-width:640px;padding-top:6px}.glist-group{display:grid;gap:6px;min-width:0}.more-profile .glist-row{min-height:72px;padding-top:10px;padding-bottom:10px}.more-profile .glist-label{font-size:17px;font-weight:600}.glist-heading{margin:0;padding:0 16px;color:var(--muted);font-size:12.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.card.glist{margin:0;padding:0;overflow:hidden;list-style:none}.glist-row{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:7px 14px;border:0;background:none;color:var(--text);font-weight:500;text-align:left;text-decoration:none;cursor:pointer;transition:background-color .15s}.glist li+li .glist-row:before{content:"";position:absolute;top:0;right:0;left:56px;border-top:1px solid var(--border)}.glist-row:hover,.glist-row:active{background:var(--fill-hover)}.glist-row:focus-visible{outline-offset:-2px}.glist-row.danger{justify-content:center;color:var(--danger-text)}.glist-text{display:grid;flex:1;gap:1px;min-width:0}.glist-label,.glist-detail,.glist-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.glist-row.danger .glist-text{flex:none}.glist-detail{color:var(--muted);font-size:13px;font-weight:400}.glist-value{flex:none;max-width:45%;color:var(--muted);font-weight:400}.glist-chevron{flex:none;width:8px;height:8px;margin:0 3px 0 2px;border-top:2px solid var(--faint);border-right:2px solid var(--faint);transform:rotate(45deg)}.icon-tile{display:inline-grid;flex:none;place-items:center;width:var(--tile-size, 30px);height:var(--tile-size, 30px);border-radius:calc(var(--tile-size, 30px) * .27);background:var(--tile, #8e8e93);color:var(--on-tint);box-shadow:inset 0 0 0 .5px #00000014}.icon-tile .icon{width:calc(var(--tile-size, 30px) * .6);height:calc(var(--tile-size, 30px) * .6)}.form-field{display:grid;gap:6px;min-width:0}.form-field label{font-size:13px;font-weight:600}.input{width:100%;min-width:0;min-height:38px;padding:7px 12px;border:1px solid transparent;border-radius:11px;background:var(--surface2);color:var(--text);font-size:16px;transition:border-color .15s,background-color .15s}.input:hover{background:var(--fill-hover)}.input:focus-visible{border-color:var(--accent);outline-offset:0}.input[aria-invalid=true]{border-color:var(--rec)}.input::placeholder{color:var(--faint)}@media(any-pointer:coarse){.input{min-height:40px}}.field-hint{margin:0;color:var(--muted);font-size:12.5px}.field-error,.form-error{margin:0;color:var(--danger-text);font-size:13px}.auth{display:grid;place-content:center;gap:18px;min-height:100vh;min-height:100dvh;padding:calc(24px + var(--safe-top)) 16px calc(24px + var(--safe-bottom))}.auth-brand{display:flex;align-items:center;justify-content:center;gap:10px;font-size:26px;font-weight:700;letter-spacing:-.025em}.auth-brand .icon{width:40px;height:40px}.auth-card{width:min(400px,calc(100vw - 32px));padding:20px}.auth-title{margin:0 0 4px;font-size:20px;font-weight:700;letter-spacing:-.02em}.auth-form{display:grid;gap:12px}.auth-submit{width:100%;min-height:42px}.loading{color:var(--muted)}.badge{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px 9px;border:1px solid var(--border);border-radius:999px;background:var(--chip-bg);color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}.badge .dot{width:7px;height:7px;border-radius:50%}.role-developer{border-color:color-mix(in srgb,var(--role-developer) 40%,transparent);background:color-mix(in srgb,var(--role-developer) 14%,transparent);color:var(--role-developer)}.role-admin{border-color:color-mix(in srgb,var(--accent-text) 40%,transparent);background:var(--accent-soft);color:var(--accent-text)}.role-user{border-color:transparent;background:var(--fill-hover);color:var(--text)}.role-viewer{background:transparent;color:var(--muted)}.badge.source-ha{border-color:color-mix(in srgb,var(--role-ha) 40%,transparent);color:var(--role-ha)}.ctabs{display:flex;gap:2px;max-width:calc(100% - 28px);width:max-content;margin:12px 12px 0;padding:2px;overflow-x:auto;border-radius:11px;background:var(--surface2);scrollbar-width:none}.shell.narrow .ctabs{max-width:none;width:auto;margin:0 max(14px,var(--safe-right)) 10px max(14px,var(--safe-left))}.ctab{position:relative;display:inline-flex;flex:1 0 auto;align-items:center;justify-content:center;min-height:30px;padding:4px 14px;border-radius:9px;color:var(--text);font-size:13px;font-weight:500;white-space:nowrap;text-decoration:none;transition:color .15s,background-color .15s}.ctab:hover{background:var(--fill-hover)}.ctab.on{background:var(--seg-on);box-shadow:0 1px 2px #0000001f,0 2px 8px #00000014;font-weight:600}@media(any-pointer:coarse){.ctab:after{content:"";position:absolute;inset:-7px 0}}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.tiles.modes{grid-template-columns:repeat(4,minmax(0,1fr))}.tile{display:block;min-width:0;min-height:44px;padding:10px;border:1px solid transparent;border-radius:12px;background:var(--surface2);color:var(--text);text-align:left;cursor:pointer;transition:border-color .15s,background-color .15s}.tile:hover{background:var(--fill-hover)}.tile.on{border-color:var(--accent);background:var(--accent-soft)}.tile b{display:block;font-size:13px}.tile span{display:block;margin-top:3px;color:var(--muted);font-size:11.5px;line-height:1.35}.tile:disabled,.seg button:disabled{cursor:not-allowed;opacity:.5}.tile:disabled:hover{background:var(--surface2)}.seg.wrap{flex-wrap:wrap}@media(max-width:640px){.tiles.modes{grid-template-columns:repeat(2,minmax(0,1fr))}}.field-row{display:grid;grid-template-columns:180px minmax(0,1fr);gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--border)}.field-row:first-child,.field-row.single{border-top:0}.field-row.single{grid-template-columns:minmax(0,1fr)}.field-row-label label,.field-row-label span{font-weight:500}.field-row-label small{display:block;margin-top:2px;color:var(--muted);font-size:12px;font-weight:400}.field-row-control{min-width:0}@media(max-width:640px){.field-row{grid-template-columns:minmax(0,1fr);gap:6px}}fieldset.plain{min-width:0;margin:0;padding:0;border:0}.rng{display:flex;align-items:center;gap:12px}.rng input[type=range]{flex:1;min-width:0;min-height:44px;accent-color:var(--accent)}.rng .v{min-width:86px;font-variant-numeric:tabular-nums;font-weight:600;text-align:right}.num-pair{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.num-field{display:inline-flex;align-items:center;gap:8px;color:var(--muted)}.input.num{width:84px;font-variant-numeric:tabular-nums}select.input{cursor:pointer}select.input option{background-color:var(--menu-bg);color:var(--text)}.mono-input .input{font-family:var(--font-mono);font-size:14px}@media(any-pointer:coarse){.mono-input .input{font-size:16px}}.form-label{font-weight:500}.form-grid{display:grid;gap:12px}.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px}.save-status{margin:0;color:var(--muted);font-size:13px}.save-status.ok{color:var(--ok-text)}.save-status.error{color:var(--danger-text)}.field-hint.warn{color:var(--warn-text)}.check{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:6px 0;font-weight:500;cursor:pointer}.check input{flex:none;width:20px;height:20px;margin:1px 0 0;accent-color:var(--accent)}.check small{display:block;margin-top:2px;color:var(--muted);font-size:12px;font-weight:400}.check:has(input:disabled){cursor:not-allowed;opacity:.7}.kv-list{margin:0}.kv{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid var(--border);font-size:13px}.kv dt,.kv>span:first-child{flex:none;color:var(--muted)}.kv dd{min-width:0;margin:0;overflow-wrap:anywhere;text-align:right}.kv .mono{font-family:inherit;font-size:inherit}.alert{display:flex;gap:10px;margin-top:12px;padding:10px 12px;border-radius:12px;font-size:13px;line-height:1.45;overflow-wrap:anywhere}.alert.warn{border:1px solid rgb(255 159 10 / 35%);background:#ff9f0a1f}.alert.ok{border:1px solid rgb(52 199 89 / 30%);background:#34c7591a}.alert.error{border:1px solid rgb(255 59 48 / 35%);background:#ff3b301a}.alert b{display:block}.alert .btn{margin-top:6px}.input-row{display:flex;gap:8px;align-items:stretch}.input-row .input{flex:1;min-width:0}.input-row .btn{flex:none}.dialog-backdrop{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:max(16px,var(--safe-top)) 16px max(16px,var(--safe-bottom));background:var(--backdrop);overscroll-behavior:contain}.dialog{display:grid;gap:10px;width:min(440px,100%);max-height:100%;padding:20px;overflow:auto;border-color:var(--bar-border);border-radius:var(--radius-lg);background:var(--menu-bg);box-shadow:var(--shadow-lg);backdrop-filter:none;-webkit-backdrop-filter:none}.dialog-text{color:var(--muted);font-size:14px;line-height:1.5}.dialog-text p{margin:0}.dialog-actions{justify-content:flex-end}.seg a{display:inline-flex;align-items:center;text-decoration:none}.cam-switch{max-width:100%;overflow-x:auto;scrollbar-width:none}.update-toast{position:fixed;right:max(16px,var(--safe-right));bottom:calc(16px + var(--safe-bottom));z-index:150;width:min(360px,calc(100vw - 32px))}.shell.narrow .update-toast{right:50%;bottom:calc(var(--tabbar-space) - 4px);transform:translate(50%)}.update-toast .alert{margin:0;box-shadow:var(--shadow-lg);background-color:var(--menu-bg)}.avatar{flex:none;border-radius:50%;object-fit:cover;background:var(--surface2)}.avatar-initials{display:inline-grid;place-items:center;background:linear-gradient(135deg,#8e8ef5,#5e5ce6);color:var(--on-tint);font-weight:600;line-height:1;-webkit-user-select:none;user-select:none}.avatar-initials:before{content:attr(data-initials)}.avatar-large{box-shadow:0 0 0 1px var(--border)}.nav .avatar,.tab .avatar{width:22px;height:22px}.account-summary{display:flex;align-items:center;gap:12px}.account-summary .sub{margin:0}.auth-links{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px}.btn.link-button{min-height:38px;padding:6px 2px;border-color:transparent;background:none;color:var(--accent-text);font-weight:500}.btn.link-button:hover{background:none;text-decoration:underline}.auth-card .enroll-qr{margin:4px 0}@media(any-pointer:coarse){select.chip{margin:-7px -2px;border:solid transparent;border-width:7px 2px;background-clip:padding-box;box-shadow:inset 0 0 0 1px var(--card-border)}select.chip:hover{border-color:transparent;box-shadow:inset 0 0 0 1px var(--border2)}select.chip:focus-visible{outline-offset:-7px}.shell.narrow .top.sub .top-actions .btn:has(.icon){width:44px}}@media(max-width:899px){.ev-tile,.live-ev,.pb-ev,.cam-card{backdrop-filter:none;-webkit-backdrop-filter:none}}.badge.ok{border-color:#3ddc9773;color:var(--ok-text)}.identity-picture{display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px;margin:12px 0 4px}.identity-picture-actions{display:grid;flex:1;gap:6px;min-width:min(240px,100%)}.identity-picture-actions .form-actions{margin:0}.identity-form{margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.file-pick:focus-visible+.btn{outline:2px solid var(--accent);outline-offset:2px}.file-pick:disabled+.btn{cursor:not-allowed;opacity:.6}label.btn{cursor:pointer}.enroll-dialog{width:min(480px,100%)}.enroll{display:grid;gap:12px}.enroll-qr{justify-self:center;width:min(200px,70vw);height:auto;aspect-ratio:1;padding:8px;border-radius:12px;background:#fff}.code-field .input{font-family:var(--font-mono);font-size:18px;letter-spacing:.12em}.codes-dialog{width:min(480px,100%)}.recovery-codes{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 16px;margin:0;padding:12px 14px 12px 34px;border:1px solid var(--border);border-radius:10px;background:var(--surface2);font-family:var(--font-mono);font-size:14px;font-variant-numeric:tabular-nums;-webkit-user-select:all;user-select:all}.user-list{margin:0;padding:0;list-style:none}.user-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:8px 12px;align-items:center;padding:12px 0;border-top:1px solid var(--border)}.user-row:first-child{border-top:0}.user-info{display:grid;gap:5px;min-width:0}.user-info b{overflow-wrap:anywhere}.user-badges{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.user-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.user-lock{display:flex;align-items:center;gap:6px;max-width:240px;margin:0;color:var(--muted);font-size:12.5px}.user-lock .icon{flex:none;width:14px;height:14px}@media(max-width:640px){.user-row:not(.compact) .user-actions,.user-lock{grid-column:2 / -1;justify-content:flex-start;max-width:none}}.user-row.compact{position:relative}.user-open{display:grid;place-items:center;width:32px;height:44px;padding:0;border:0;background:none;cursor:pointer}.user-open:after{content:"";position:absolute;inset:0;border-radius:12px}.user-open:focus-visible{outline:none}.user-open:focus-visible:after{outline:2px solid var(--accent)}.user-dialog{width:min(480px,100%)}.dialog-delete{margin-right:auto}.auth.wizard{align-content:start;padding-top:calc(48px + var(--safe-top))}@media(max-height:760px),(max-width:480px){.auth.wizard{padding-top:calc(20px + var(--safe-top))}}.wizard-card{display:grid;gap:0;width:min(480px,calc(100vw - 32px));padding:22px 22px 20px}.stepper{display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;margin:0 0 18px;padding:0;list-style:none}.stepper-step{position:relative;display:grid;justify-items:center;gap:6px;min-width:0;color:var(--muted);font-size:11.5px;font-weight:600;text-align:center}.stepper-step+.stepper-step:before{content:"";position:absolute;top:13px;right:calc(50% + 18px);left:calc(-50% + 18px);height:2px;border-radius:1px;background:var(--border2)}.stepper-step.done:before,.stepper-step.current:before{background:var(--accent)}.stepper-dot{display:grid;place-items:center;width:28px;height:28px;border:2px solid var(--border2);border-radius:50%;background:var(--menu-bg);color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}.stepper-dot .icon{width:15px;height:15px}.stepper-step.done .stepper-dot{border-color:var(--accent-fill);background:var(--accent-fill);color:var(--on-accent)}.stepper-step.current .stepper-dot{border-color:var(--accent);color:var(--accent-text);box-shadow:0 0 0 4px var(--accent-soft)}.stepper-step.current{color:var(--text)}.stepper-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:420px){.stepper-step:not(.current) .stepper-label{visibility:hidden}.stepper-step.current .stepper-label{max-width:none;overflow:visible}}.wizard-count{margin:0 0 4px;color:var(--accent-text);font-size:12.5px;font-weight:600;letter-spacing:.02em}.wizard-card .auth-title{margin-bottom:6px}.wizard-card .auth-title:focus{outline:none}.wizard-text{margin:0 0 16px;color:var(--muted);font-size:14px;line-height:1.5}.wizard-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:6px}.wizard-actions .btn{min-height:42px;padding-inline:18px}.wizard-actions .btn.primary{margin-left:auto}.wizard-success{display:flex;align-items:center;gap:8px;margin:0 0 8px;color:var(--ok-text);font-weight:600}.wizard-success .icon{width:20px;height:20px}.form-field-group{display:grid;gap:8px}.strength{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12.5px}.strength-bars{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;width:112px}.strength-bars i{height:4px;border-radius:2px;background:var(--border2)}.strength.level-0 .strength-bars i.on{background:var(--rec)}.strength.level-1 .strength-bars i.on{background:var(--warn)}.strength.level-2 .strength-bars i.on{background:var(--accent)}.strength.level-3 .strength-bars i.on{background:var(--ok)}.wizard-features{display:grid;gap:12px;margin:0 0 18px;padding:14px;border-radius:14px;background:var(--surface2);list-style:none}.wizard-features li{display:flex;align-items:center;gap:12px;font-size:14px;line-height:1.4}.wizard-card:has(.enroll) .wizard-text{display:none}
