:root{--navy: #101426;--navy-soft: #363d4c;--primary: #046fdb;--primary-700: #0359ae;--primary-100: #e6f0fd;--accent: #357ebd;--success: #55aa68;--success-bg: #eef7f0;--danger: #d83635;--danger-bg: #fdeded;--warning: #d98324;--warning-bg: #fdf4e8;--ink: #101426;--ink-2: #3d4658;--muted: #8391ab;--line: #e4e9f2;--line-2: #c5cee0;--surface: #ffffff;--surface-2: #f9fbfc;--surface-3: #edf1f7;--radius: 10px;--radius-sm: 7px;--shadow-sm: 0 1px 2px rgba(16,20,38,.06), 0 1px 3px rgba(16,20,38,.04);--shadow: 0 4px 12px rgba(16,20,38,.08), 0 1px 3px rgba(16,20,38,.05);--shadow-lg: 0 12px 32px rgba(16,20,38,.14);--sidebar-w: 248px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.55;color:var(--ink);background:var(--surface-2);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:650;letter-spacing:-.011em;color:var(--ink)}h1{font-size:22px}h2{font-size:17px}h3{font-size:15px}p{margin:0}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.app{display:flex;min-height:100%}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--navy);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar__brand{padding:20px 20px 18px;font-weight:700;font-size:15px;letter-spacing:-.01em;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar__mark{width:28px;height:28px;flex:0 0 28px;display:block}.sidebar__nav{padding:12px 10px;display:flex;flex-direction:column;gap:2px;flex:1}.sidebar__label{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:#ffffff61;padding:14px 10px 6px;font-weight:600}.navlink{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:var(--radius-sm);color:#ffffffb8;font-weight:500;font-size:13.5px;transition:background .13s,color .13s}.navlink:hover{background:#ffffff12;color:#fff;text-decoration:none}.navlink.is-active{background:var(--primary);color:#fff}.navlink--muted{color:#ffffff57;cursor:default}.navlink--muted:hover{background:none;color:#ffffff57}.navlink__tag{margin-left:auto;font-size:10px;text-transform:uppercase;letter-spacing:.05em;background:#ffffff1a;padding:2px 6px;border-radius:4px}.sidebar__user{padding:14px 16px;border-top:1px solid rgba(255,255,255,.08);font-size:12.5px;color:#fff9}.sidebar__user strong{display:block;color:#fff;font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__email{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__signout{display:block;padding:4px 0;margin-top:8px;text-align:left}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{background:var(--surface);border-bottom:1px solid var(--line);padding:0 28px;height:60px;display:flex;align-items:center;gap:16px;position:sticky;top:0;z-index:20}.topbar h1{font-size:17px}.topbar__spacer{flex:1}.content{padding:24px 28px 56px;max-width:1180px;width:100%}.content--narrow{max-width:860px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card__head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}.card__body{padding:20px}.card__foot{padding:14px 20px;border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 var(--radius) var(--radius);display:flex;align-items:center;gap:10px}.stack{display:flex;flex-direction:column;gap:16px}.row{display:flex;align-items:center;gap:10px}.spacer{flex:1}label.field{display:block;margin-bottom:14px}.field__label{display:block;font-weight:600;font-size:13px;margin-bottom:6px;color:var(--ink-2)}.input,.textarea,.select{width:100%;padding:9px 12px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius-sm);outline:none;transition:border-color .13s,box-shadow .13s}.input:focus,.textarea:focus,.select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100)}.textarea{min-height:96px;resize:vertical}.hint{font-size:12.5px;color:var(--muted);margin-top:5px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 16px;font:inherit;font-weight:600;font-size:13.5px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:background .13s,border-color .13s,opacity .13s;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--primary-700)}.btn--ghost{background:var(--surface);color:var(--ink-2);border-color:var(--line-2)}.btn--ghost:hover:not(:disabled){background:var(--surface-3)}.btn--subtle{background:transparent;color:var(--muted)}.btn--subtle:hover:not(:disabled){color:var(--ink);background:var(--surface-3)}.btn--block{width:100%}.choices{display:flex;flex-direction:column;gap:8px}.choice{display:flex;align-items:center;gap:11px;padding:12px 14px;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;font-weight:500;transition:border-color .13s,background .13s,box-shadow .13s;text-align:left;width:100%;font-family:inherit;font-size:14px;color:var(--ink)}.choice:hover{border-color:var(--primary);background:var(--primary-100)}.choice__key{width:22px;height:22px;flex:0 0 22px;border-radius:5px;background:var(--surface-3);color:var(--muted);display:grid;place-items:center;font-size:11px;font-weight:700}.choice:hover .choice__key{background:var(--primary);color:#fff}.choice--suggested{border-color:var(--primary);background:var(--primary-100)}.choice__tag{margin-left:auto;font-size:11px;font-weight:600;color:var(--primary);background:var(--surface);border:1px solid var(--primary);padding:2px 8px;border-radius:20px}.devicelist{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.devicerow{display:flex;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line);cursor:pointer;background:var(--surface);transition:background .1s;width:100%;text-align:left;font:inherit;color:var(--ink)}.devicerow:last-child{border-bottom:none}.devicerow:hover,.devicerow.is-selected{background:var(--primary-100)}.devicerow__check{width:18px;height:18px;flex:0 0 18px;border-radius:5px;border:1.5px solid var(--line-2);background:var(--surface);display:grid;place-items:center;color:#fff;font-size:11px;font-weight:700}.devicerow.is-selected .devicerow__check{background:var(--primary);border-color:var(--primary)}.tickbox{width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--primary)}.tickbox:disabled{cursor:not-allowed;opacity:.5}.devicerow__serial{font-family:var(--mono);font-size:13px;font-weight:600}.devicerow__meta{margin-left:auto;display:flex;align-items:center;gap:8px}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:600;background:var(--surface-3);color:var(--ink-2);white-space:nowrap}.badge--dash1{background:#eef2fb;color:#3a4d80}.badge--dash2{background:var(--primary-100);color:var(--primary-700)}.badge--ok{background:var(--success-bg);color:#2f6b3f}.badge--danger{background:var(--danger-bg);color:#a52422}.badge--warn{background:var(--warning-bg);color:#8a5410}.badge--muted{background:var(--surface-3);color:var(--muted)}.dot{width:7px;height:7px;border-radius:50%;background:currentColor}.table__wrap{width:100%;overflow-x:auto}.tablewrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th,.table td{white-space:nowrap}.clip{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}.clip--name{max-width:170px}.clip--wide{max-width:158px}.clip--narrow{max-width:140px}.cell-step{white-space:nowrap;vertical-align:middle}.tip{position:fixed;z-index:60;max-width:380px;pointer-events:none;background:var(--navy);color:#fff;padding:7px 10px;border-radius:7px;font-size:12px;line-height:1.4;box-shadow:0 6px 20px #00000038}.tip__title{display:block;font-weight:700;margin-bottom:3px}.cell-step .badge{white-space:nowrap}.table--even{table-layout:fixed}.table.table--even th{white-space:normal;line-height:1.25;vertical-align:bottom}.countdown--soon{color:var(--warning-fg, #8a5410);font-weight:600}.table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}.table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .12s,background .12s}.table th.sortable:hover{color:var(--ink);background:var(--surface-3)}.table th.is-sorted{color:var(--primary)}.th__arrow{margin-left:5px;font-size:10px}.table td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover{background:var(--surface-2)}.mono{font-family:var(--mono);font-size:12.5px}.alert{padding:12px 15px;border-radius:var(--radius-sm);font-size:13.5px;border:1px solid;display:flex;gap:10px;align-items:flex-start}.alert--error{background:var(--danger-bg);border-color:#f2c4c3;color:#96201f}.alert--info{background:var(--primary-100);border-color:#bcd8f8;color:#084a94}.alert--warn{background:var(--warning-bg);border-color:#f0d5ac;color:#7d4a0e}.alert--ok{background:var(--success-bg);border-color:#bfdfc7;color:#2c6339}.progress{height:4px;background:var(--surface-3);border-radius:4px;overflow:hidden}.progress__bar{height:100%;background:var(--primary);transition:width .3s ease}.muted{color:var(--muted)}.small{font-size:12.5px}.center{display:grid;place-items:center;min-height:100vh;padding:24px}.spinner{width:15px;height:15px;border:2px solid var(--line-2);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--surface-3) 25%,var(--line) 37%,var(--surface-3) 63%);background-size:400% 100%;animation:shimmer 1.3s ease infinite;border-radius:4px}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.empty{text-align:center;padding:48px 20px;color:var(--muted)}.split{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}.split__aside{position:sticky;top:76px;display:flex;flex-direction:column;gap:16px}@media(max-width:1080px){.split{grid-template-columns:minmax(0,1fr)}.split__aside{position:static}}.content--wide{max-width:1240px}.content--full{max-width:none}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#10142673;display:grid;place-items:center;padding:24px;animation:fade .12s ease}.modal__box{width:100%;max-width:440px;box-shadow:var(--shadow-lg)}@keyframes fade{0%{opacity:0}to{opacity:1}}.btn--danger{background:var(--danger);color:#fff}.btn--danger:hover:not(:disabled){background:#b82c2b}.rowaction{opacity:0;transition:opacity .12s}tr:hover .rowaction{opacity:1}.rowhead{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--surface-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;white-space:nowrap}.rowhead__spacer{width:18px;flex:0 0 18px}.tabs{display:flex;gap:2px;padding:0 20px;border-bottom:1px solid var(--line);background:var(--surface)}.tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;cursor:pointer;font:inherit;font-size:13.5px;font-weight:600;color:var(--muted);padding:11px 14px;border-bottom:2px solid transparent;margin-bottom:-1px;display:flex;align-items:center;gap:7px;transition:color .12s,border-color .12s}.tab:hover:not(:disabled){color:var(--ink)}.tab.is-active{color:var(--primary);border-bottom-color:var(--primary)}.tab:disabled{opacity:.45;cursor:not-allowed}.tab__count{font-size:11px;font-weight:700;padding:1px 7px;border-radius:20px;background:var(--surface-3);color:var(--muted)}.tab.is-active .tab__count{background:var(--primary-100);color:var(--primary-700)}.tab__picked{font-size:11px;font-weight:700;padding:1px 7px;border-radius:20px;background:var(--success-bg);color:#2f6b3f}.field2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}@media(max-width:700px){.field2{grid-template-columns:1fr}}
