:root{color:#201a2e;font-synthesis:none;text-rendering:optimizelegibility;--purple-950:#251443;--purple-900:#33205f;--purple-800:#432b79;--purple-700:#5934a1;--purple-600:#7047c8;--purple-100:#eee8fb;--purple-50:#f7f4fe;--blue-700:#2558bd;--blue-100:#dbeafe;--blue-50:#eff7ff;--green-700:#167653;--green-100:#d9f4e7;--orange-100:#fff0cf;--orange-800:#8a5800;--red-700:#b4233c;--red-100:#fee2e7;--gray-900:#272233;--gray-700:#5f586c;--gray-500:#8b8497;--gray-300:#d9d4e0;--gray-200:#e8e4ed;--gray-100:#f4f2f6;--white:#fff;--shadow:0 9px 28px #2d194f12;--topbar-height:72px;--sidebar-width:232px;background:#f5f3fa;font-family:Inter,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;min-width:680px}body{background:#f5f3fa;min-width:680px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button,select{cursor:pointer}button:disabled,select:disabled,input:disabled,textarea:disabled{cursor:not-allowed;opacity:.58}a{color:inherit}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.03em;margin-bottom:0;font-size:clamp(1.65rem,2vw,2.1rem);line-height:1.2}h2{margin-bottom:.55rem;font-size:1.25rem}code{overflow-wrap:anywhere;font-family:Cascadia Code,Consolas,monospace;font-size:.9em}.sr-only{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.muted,.helper-text{color:var(--gray-700)}.helper-text{font-size:.86rem;line-height:1.55}.eyebrow{color:var(--purple-700);letter-spacing:.12em;text-transform:uppercase;margin-bottom:.4rem;font-size:.72rem;font-weight:800}.eyebrow--light{color:#d8c8ff}.button{min-height:40px;color:var(--gray-900);background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:.4rem;padding:.62rem 1rem;font-weight:700;line-height:1;transition:transform .12s,border-color .12s,background .12s;display:inline-flex}.button:not(:disabled):active{transform:translateY(1px)}.button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.nav-item:focus-visible{outline-offset:2px;outline:3px solid #7047c833}.button--primary{border-color:var(--purple-600);background:var(--purple-600);color:#fff}.button--primary:not(:disabled):hover{background:var(--purple-700)}.button--secondary{color:#493b5e;background:#fff;border-color:#cbc3d7}.button--secondary:not(:disabled):hover{border-color:var(--purple-600);color:var(--purple-700)}.button--ghost{color:var(--gray-700)}.button--ghost:not(:disabled):hover{background:var(--gray-100)}.button--danger{color:var(--red-700);background:#fff8f9;border-color:#e9a9b6}.button--danger:not(:disabled):hover{background:var(--red-100)}.button--small{min-height:34px;padding:.45rem .72rem;font-size:.82rem}.button--full{width:100%}input,select,textarea{width:100%;min-height:42px;color:var(--gray-900);background:#fff;border:1px solid #d5cedf;border-radius:8px;margin-top:.42rem;padding:.65rem .78rem;transition:border-color .12s,box-shadow .12s}input:hover,select:hover,textarea:hover{border-color:#bdb3ca}input:focus,select:focus,textarea:focus{border-color:var(--purple-600);outline:0;box-shadow:0 0 0 3px #7047c81a}input[type=checkbox],input[type=radio]{width:17px;height:17px;min-height:auto;accent-color:var(--purple-600);margin:0}textarea{resize:vertical;line-height:1.55}label,.field-label{color:#4f465a;font-size:.88rem;font-weight:700}.label-note{color:var(--gray-500);font-size:.78rem;font-weight:500}.field-block{margin-top:1.35rem;display:block}.compact-field{max-width:420px}.input-counter{color:var(--gray-500);text-align:right;margin-top:.35rem;font-size:.76rem;display:block}.field-error,.form-alert{color:var(--red-700);margin:0;font-size:.84rem}.form-alert{background:var(--red-100);border-radius:8px;padding:.72rem .82rem}.fullscreen-state{place-items:center;min-height:100vh;display:grid}.loading-state{min-height:120px;color:var(--gray-700);justify-content:center;align-items:center;gap:.7rem;display:flex}.spinner{border:2px solid var(--purple-100);border-top-color:var(--purple-600);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.brand{flex:none;align-items:center;gap:.75rem;display:flex}.brand__mark{color:#fff;background:linear-gradient(145deg,#814fde,#51308f);border-radius:11px;flex:none;place-items:center;width:42px;height:42px;font-size:1.18rem;font-weight:900;display:grid;box-shadow:0 7px 18px #5d33a240}.brand>span:last-child{flex-direction:column;display:flex}.brand small{color:#857a94;letter-spacing:.15em;font-size:.58rem;font-weight:800}.brand strong{margin-top:.12rem;font-size:1rem}.topbar{z-index:50;min-height:var(--topbar-height);border-bottom:1px solid var(--gray-200);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff5;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1.5rem;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 3px 18px #2718420a}.topbar__actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.65rem;display:flex}.signed-in-user{max-width:160px;color:var(--gray-700);text-overflow:ellipsis;white-space:nowrap;font-size:.84rem;overflow:hidden}.connection{background:var(--blue-50);color:var(--blue-700);border-radius:999px;align-items:center;gap:.35rem;padding:.38rem .62rem;font-size:.8rem;font-weight:800;display:inline-flex}.connection--error{background:var(--red-100);color:var(--red-700)}.connection--connecting{background:var(--purple-100);color:var(--purple-700)}.sidebar{z-index:40;top:var(--topbar-height);width:var(--sidebar-width);background:linear-gradient(180deg, var(--purple-950), #2d1754 62%, #21103e);color:#ded2f3;flex-direction:column;justify-content:space-between;padding:1.15rem .8rem;display:flex;position:fixed;bottom:0;left:0;overflow-y:auto}.sidebar nav{gap:.32rem;display:grid}.nav-item{color:#d4c9e6;border-radius:8px;align-items:center;gap:.72rem;min-height:44px;padding:.65rem .75rem;font-size:.9rem;font-weight:650;text-decoration:none;display:flex}.nav-item:not(.nav-item--disabled):hover{color:#fff;background:#ffffff14}.nav-item--active{box-shadow:0 7px 18px #0a04182e;background:var(--purple-600)!important;color:#fff!important}.nav-item--disabled{cursor:not-allowed;opacity:.42}.nav-item__mark{border:1px solid #ffffff2e;border-radius:7px;place-items:center;width:25px;height:25px;font-size:.68rem;display:grid}.sidebar__status{background:#ffffff0e;border:1px solid #ffffff1a;border-radius:9px;padding:.85rem}.sidebar__status span{color:#fff;align-items:center;gap:.45rem;font-size:.82rem;font-weight:700;display:flex}.sidebar__status i{background:#59d6ad;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #59d6ad1f}.sidebar__status small{color:#ab9abe;margin-top:.4rem;display:block}.main-content{min-height:100vh;margin-left:var(--sidebar-width);padding:calc(var(--topbar-height) + 2rem) clamp(1.2rem, 3vw, 2.6rem) 3rem}.page-stack{gap:1.15rem;width:100%;max-width:1500px;margin:0 auto;display:grid}.page-heading{justify-content:space-between;align-items:flex-end;gap:1rem;min-height:58px;display:flex}.page-heading__action{justify-content:flex-end;align-items:center;display:flex}.card{box-shadow:var(--shadow);background:#fff;border:1px solid #e2dce9;border-radius:12px;padding:clamp(1rem,2vw,1.35rem)}.empty-state{min-height:126px;color:var(--gray-700);text-align:center;border:1px dashed #d7cfdf;border-radius:10px;place-items:center;padding:1.5rem;display:grid}.count-pill{background:var(--purple-50);color:var(--purple-700);white-space:nowrap;border:1px solid #d8cdec;border-radius:999px;align-items:center;padding:.4rem .65rem;font-size:.78rem;font-weight:800;display:inline-flex}.metrics-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;display:grid}.metric-card{align-items:center;gap:.9rem;display:flex}.metric-card__mark{background:var(--purple-100);width:45px;height:45px;color:var(--purple-700);border-radius:10px;flex:none;place-items:center;font-size:.78rem;font-weight:900;display:grid}.metric-card small{color:var(--gray-700);display:block}.metric-card strong{margin-top:.2rem;font-size:1.6rem;line-height:1;display:block}.welcome-card>.muted{max-width:780px;line-height:1.7}.app-config-panel{background:var(--blue-50);border:1px solid #cfe4f7;border-radius:11px;grid-template-columns:minmax(0,1fr) auto;gap:1.5rem;margin-top:1.35rem;padding:1.25rem;display:grid}.config-list{gap:.55rem;margin:0;display:grid}.config-list>div{grid-template-columns:125px minmax(0,1fr);gap:.75rem;display:grid}.config-list dt{color:#587089;font-size:.8rem;font-weight:700}.config-list dd{color:#223d5d;margin:0;font-weight:700}.app-config-panel__actions{flex-wrap:wrap;align-content:flex-start;align-items:flex-start;gap:.55rem;display:flex}.inline-form{align-items:flex-end;gap:.6rem;display:flex}.inline-form>input,.inline-form>select{flex:1;min-width:180px;margin-top:0}.inline-form--code{max-width:600px;margin-top:.8rem}.quick-actions{flex-wrap:wrap;gap:.65rem;margin-top:1rem;display:flex}.group-toolbar{background:var(--purple-50);border-color:#d9caef;grid-template-columns:minmax(260px,1fr) minmax(360px,1.4fr);gap:1rem;display:grid}.filter-toolbar{grid-template-columns:minmax(260px,1fr) minmax(180px,260px) auto;align-items:center;gap:.75rem;margin-bottom:1rem;display:grid}.filter-toolbar input,.filter-toolbar select{margin-top:0}.result-count{color:var(--gray-700);white-space:nowrap;font-size:.84rem}.table-wrap{border:1px solid var(--gray-200);border-radius:9px;width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.84rem}th{color:#61586b;text-align:left;white-space:nowrap;background:#f4f2f6;padding:.75rem .8rem}td{border-top:1px solid var(--gray-200);color:#403949;vertical-align:middle;padding:.78rem .8rem}tbody tr:hover{background:#faf9fc}.table-subtitle{max-width:220px;color:var(--gray-500);text-overflow:ellipsis;white-space:nowrap;margin-top:.25rem;font-family:Cascadia Code,Consolas,monospace;font-size:.7rem;display:block;overflow:hidden}.table-actions{white-space:nowrap;align-items:center;gap:.65rem;display:flex}.text-button{color:var(--purple-700);background:0 0;border:0;padding:0;font-size:.82rem;font-weight:800}.text-button:hover:not(:disabled){text-decoration:underline}.text-button--danger{color:var(--red-700)}.truncate-cell{text-overflow:ellipsis;white-space:nowrap;max-width:270px;overflow:hidden}.device-state{white-space:nowrap;border-radius:999px;padding:.32rem .55rem;font-size:.75rem;font-weight:800;display:inline-flex}.device-state--online{background:var(--blue-100);color:var(--blue-700)}.device-state--offline{background:var(--gray-100);color:var(--gray-700)}.notice{border-radius:9px;padding:.85rem 1rem;font-size:.88rem;line-height:1.55}.notice p{margin:.3rem 0 0}.notice--blue{background:var(--blue-50);color:#294d73;border:1px solid #cce2f6}.notice--warning{color:var(--orange-800);background:#fff8e8;border:1px solid #f1d89f}.task-form fieldset{border:0;min-width:0;margin:0;padding:0}.form-section{gap:0;display:grid}.form-grid{gap:1rem;display:grid}.form-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}.nested-panel{background:#fcfbfd;border:1px solid #ded8e5;border-radius:10px;margin-top:1.35rem;padding:1rem}.nested-panel__header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.9rem;display:flex}.nested-panel__header h2{margin-bottom:.22rem;font-size:1rem}.nested-panel__header p{color:var(--gray-700);margin:0;font-size:.82rem}.preset-grid,.device-card-grid,.group-card-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;margin-top:.8rem;display:grid}.preset-grid{max-height:238px;padding:.15rem;overflow-y:auto}.preset-card{background:#fff;border:1px solid #ded8e5;border-radius:8px;justify-content:space-between;align-items:center;gap:.55rem;min-height:48px;padding:.65rem .75rem;display:flex}.preset-card--selected{border-color:var(--purple-600);background:var(--purple-50)}.preset-card label{cursor:pointer;align-items:center;gap:.55rem;min-width:0;display:flex}.preset-card label span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.choice-grid{gap:.7rem;margin-top:.5rem;display:grid}.choice-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}.choice-grid--three{grid-template-columns:repeat(3,minmax(0,1fr))}.choice-card,.device-choice{cursor:pointer;background:#fff;border:1px solid #dcd5e4;border-radius:9px;align-items:flex-start;gap:.65rem;padding:.8rem;display:flex}.choice-card:hover,.device-choice:hover{border-color:#bdaed1}.choice-card--selected,.device-choice--selected{border-color:var(--purple-600);background:var(--purple-50);box-shadow:inset 0 0 0 1px var(--purple-600)}.choice-card input,.device-choice input{flex:none;margin-top:.12rem}.choice-card span,.device-choice span{flex-direction:column;min-width:0;display:flex}.choice-card strong,.device-choice strong{color:var(--gray-900);font-size:.86rem}.choice-card small,.device-choice small{color:var(--gray-700);margin-top:.28rem;font-weight:500;line-height:1.45}.picker-toolbar{grid-template-columns:minmax(180px,1fr) minmax(150px,220px) auto auto;gap:.55rem;display:grid}.picker-toolbar input,.picker-toolbar select{margin-top:0}.device-card-grid{max-height:300px;overflow-y:auto}.submit-task{min-height:48px;margin-top:1.35rem}.status-pill{white-space:nowrap;border-radius:999px;padding:.32rem .55rem;font-size:.74rem;font-weight:800;display:inline-flex}.status-pill--success{background:var(--blue-100);color:var(--blue-700)}.status-pill--danger{background:var(--red-100);color:var(--red-700)}.status-pill--active{background:var(--purple-100);color:var(--purple-700)}.status-pill--muted{background:var(--gray-100);color:var(--gray-700)}.task-table{min-width:1120px}.task-detail{scroll-margin-top:calc(var(--topbar-height) + 1rem)}.task-detail__header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.task-detail__actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.55rem;display:flex}.account-create-grid{grid-template-columns:1.1fr 1.2fr 1.2fr auto;align-items:end;gap:.8rem;display:grid}.account-create-grid .button{min-height:42px}.settings-card form{max-width:760px}.settings-card .button--full{margin-top:1.25rem}.audit-table-wrap{max-height:560px;overflow-y:auto}.audit-table-wrap thead{z-index:1;position:sticky;top:0}.actor-pill{background:var(--gray-100);color:var(--gray-700);border-radius:999px;padding:.3rem .5rem;font-size:.74rem;font-weight:800;display:inline-flex}.actor-pill--admin{background:var(--purple-100);color:var(--purple-700)}.actor-pill--device{background:var(--blue-100);color:var(--blue-700)}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#180e2885;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{background:#fff;border:1px solid #dcd4e7;border-radius:12px;width:min(100%,460px);max-height:calc(100vh - 2rem);padding:1.35rem;overflow-y:auto;box-shadow:0 24px 70px #1c0d314d}.modal__description{color:var(--gray-700);line-height:1.6}.modal__actions{justify-content:flex-end;gap:.6rem;margin-top:1.2rem;display:flex}.password-modal{gap:.8rem;display:grid}.toast-region{z-index:200;pointer-events:none;gap:.6rem;width:min(420px,100vw - 2rem);display:grid;position:fixed;bottom:1rem;right:1rem}.toast{color:#fff;background:#2558bd;border-radius:9px;padding:.85rem 1rem;font-size:.88rem;font-weight:700;line-height:1.45;animation:.16s ease-out toast-in;box-shadow:0 12px 34px #1c192d38}.toast--error{background:#b4233c}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}.login-page{background:radial-gradient(circle at 20% 15%,#6840a9,#0000 32%),linear-gradient(145deg,#24133f,#392066 58%,#211139);place-items:center;min-height:100vh;padding:clamp(1rem,4vw,3rem);display:grid}.login-card{background:#fff;border:1px solid #ffffff1f;border-radius:18px;grid-template-columns:1.1fr .9fr;width:min(960px,100%);display:grid;overflow:hidden;box-shadow:0 34px 100px #10071d61}.login-intro{color:#fff;background:linear-gradient(150deg,#391f64fa,#261445fa);padding:clamp(1.5rem,4vw,3rem)}.login-intro h1{max-width:440px;font-size:clamp(2rem,4vw,3.25rem)}.login-intro__lead{color:#d9ceed;max-width:500px;margin-top:1.1rem;line-height:1.75}.login-guide{color:#294d73;background:#e5f2fff0;margin-top:1.6rem}.login-guide__title{justify-content:space-between;align-items:center;gap:.7rem;display:flex}.login-guide code{background:#ffffffb3;border-radius:6px;margin-top:.6rem;padding:.55rem;display:block}.login-guide ol{margin:.8rem 0;padding-left:1.2rem;line-height:1.65}.login-guide p{font-size:.82rem}.login-intro__legal{color:#bdb0d1;margin:1.1rem 0 0;font-size:.77rem;line-height:1.6}.login-form-panel{flex-direction:column;justify-content:center;gap:1.6rem;padding:clamp(1.5rem,4vw,3rem);display:flex}.brand--login{align-self:flex-start}.login-form{gap:1rem;display:grid}@media (width<=1100px){.metrics-grid,.account-create-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.group-toolbar{grid-template-columns:1fr}.preset-grid,.device-card-grid,.group-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.choice-grid--three,.login-card{grid-template-columns:1fr}}@media (width<=820px){:root{--topbar-height:104px}.topbar{flex-wrap:wrap;align-items:flex-start}.topbar__actions{flex:1}.app-config-panel{grid-template-columns:1fr}.app-config-panel__actions{justify-content:flex-start}.filter-toolbar{grid-template-columns:1fr 1fr}.result-count{grid-column:1/-1}.picker-toolbar{grid-template-columns:1fr 1fr}.task-detail__header{flex-direction:column}.task-detail__actions{justify-content:flex-start}}@media (width<=680px){.main-content{padding-left:1rem;padding-right:1rem}.form-grid--two,.account-create-grid,.filter-toolbar,.picker-toolbar{grid-template-columns:1fr}.inline-form{flex-direction:column;align-items:stretch}.inline-form>input,.inline-form>select{min-width:0}.preset-grid,.device-card-grid,.group-card-grid{grid-template-columns:1fr}.device-card-grid{max-height:none}.nested-panel__header,.page-heading{flex-direction:column;align-items:flex-start}.page-heading__action{justify-content:flex-start}.modal__actions{flex-direction:column-reverse}.modal__actions .button{width:100%}.config-list>div{grid-template-columns:1fr;gap:.15rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
