:root{--bg: #f3f6fa;--surface: #ffffff;--surface-subtle: #f8fafc;--ink: #172033;--muted: #64748b;--border: #dfe6ef;--border-strong: #cbd5e1;--primary: #2159d6;--primary-dark: #1745ad;--primary-soft: #eaf0ff;--header: #101b31;--header-muted: #aebbd0;--success: #157347;--success-bg: #e8f6ef;--warning: #996208;--warning-bg: #fff5da;--danger: #b42335;--danger-bg: #fff0f2;--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 28px rgba(15, 23, 42, .05);--radius: 12px;--radius-small: 8px;--focus: 0 0 0 3px rgba(33, 89, 214, .24);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth}body{margin:0;min-height:100vh;background:radial-gradient(circle at 85% 0%,rgba(33,89,214,.06),transparent 26rem),var(--bg);color:var(--ink);font-size:14px;line-height:1.5}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}a{color:var(--primary)}button{cursor:pointer}button:disabled,input:disabled,select:disabled{cursor:not-allowed;opacity:.58}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.skip-link{position:fixed;z-index:100;top:12px;left:12px;padding:10px 16px;border-radius:var(--radius-small);background:var(--surface);color:var(--primary);font-weight:700;transform:translateY(-160%);transition:transform .15s ease}.skip-link:focus{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.topbar{position:sticky;z-index:20;top:0;border-bottom:1px solid rgba(255,255,255,.08);background:#101b31fa;color:#fff;box-shadow:0 3px 16px #0f172a1f}.header-inner{display:flex;align-items:center;width:min(1480px,calc(100% - 48px));min-height:70px;margin:0 auto;gap:34px}.brand{display:inline-flex;flex:0 0 auto;align-items:center;gap:11px;color:#fff;text-decoration:none}.brand-mark{display:grid;width:38px;height:38px;place-items:center;border:1px solid rgba(255,255,255,.18);border-radius:10px;background:linear-gradient(145deg,#3974f2,#2159d6);box-shadow:inset 0 1px #fff3;font-size:14px;font-weight:800;letter-spacing:-.02em}.brand-copy{display:flex;flex-direction:column;line-height:1.2}.brand-copy strong{font-size:15px;letter-spacing:.08em}.brand-copy span{margin-top:4px;color:var(--header-muted);font-size:11px;letter-spacing:.025em}.primary-nav{display:flex;align-self:stretch;align-items:stretch;gap:6px}.primary-nav a{position:relative;display:flex;align-items:center;padding:0 15px;color:var(--header-muted);font-weight:600;text-decoration:none;transition:color .15s ease,background .15s ease}.primary-nav a:hover{background:#ffffff0a;color:#fff}.primary-nav a[aria-current=page]{color:#fff}.primary-nav a[aria-current=page]:after{position:absolute;right:15px;bottom:0;left:15px;height:3px;border-radius:3px 3px 0 0;background:#6592ff;content:""}.logout-form{margin:0 0 0 auto}.page-container{width:min(1480px,calc(100% - 48px));margin:0 auto;padding:38px 0 56px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:26px;gap:24px}.eyebrow{margin:0 0 6px;color:var(--primary);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}h1,h2,h3,h4,p{overflow-wrap:anywhere}h1,h2,h3,h4{color:var(--ink);line-height:1.25}h1{margin:0;font-size:clamp(28px,3vw,36px);letter-spacing:-.035em}h2{margin:0;font-size:17px;letter-spacing:-.015em}h3{margin:0;font-size:15px}h4{margin:0;font-size:12px;letter-spacing:.02em}.page-description{max-width:760px;margin:9px 0 0;color:var(--muted);font-size:15px}.page-actions,.button-row,.pagination-controls{display:flex;align-items:center;gap:10px}.button{display:inline-flex;min-height:40px;align-items:center;justify-content:center;padding:9px 16px;border:1px solid transparent;border-radius:var(--radius-small);font-weight:650;line-height:1.2;text-align:center;text-decoration:none;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .1s ease}.button:not(:disabled):active{transform:translateY(1px)}.button:focus-visible{outline:none;box-shadow:var(--focus)}.button-primary{border-color:var(--primary);background:var(--primary);color:#fff;box-shadow:0 2px 5px #2159d62e}.button-primary:not(:disabled):hover{border-color:var(--primary-dark);background:var(--primary-dark)}.button-secondary{border-color:var(--border-strong);background:var(--surface);color:#334155}.button-secondary:not(:disabled):hover{border-color:#9eacc0;background:var(--surface-subtle)}.button-ghost{border-color:#ffffff2e;background:transparent;color:#e2e8f0}.button-ghost:not(:disabled):hover{border-color:#ffffff59;background:#ffffff12;color:#fff}.button-small{min-height:34px;padding:7px 12px;font-size:12px}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.devices-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:24px}.devices-main{grid-column:1;grid-row:1;min-width:0}.devices-sidebar{display:grid;grid-column:2;grid-row:1;align-content:start;gap:20px}.devices-layout.tools-collapsed{grid-template-columns:minmax(0,1fr)}.devices-layout.tools-collapsed .devices-sidebar{display:none}#toggle-device-tools{white-space:nowrap}.devices-sidebar .search-form,.devices-sidebar .import-form{display:grid;grid-template-columns:1fr;gap:12px}.devices-sidebar .search-actions .button,.devices-sidebar .import-form .button{flex:1 1 auto}.activity-filters{display:flex;margin:0;padding:0;border:0;gap:16px}.activity-filters legend{margin-bottom:6px;color:#334155;font-size:12px;font-weight:700}.checkbox-label{display:inline-flex;align-items:center;color:#334155;font-size:12px;gap:6px}.checkbox-label input{width:16px;min-height:16px;margin:0;accent-color:var(--primary)}.operations-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);margin-bottom:24px;gap:20px}.operation-card{padding:22px}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:18px}.card-heading p{margin:5px 0 0;color:var(--muted);font-size:13px}.compact-heading{margin-bottom:18px}.search-form{display:flex;align-items:flex-end;gap:12px}.search-field{flex:1 1 auto}.search-actions{flex:0 0 auto}.field{min-width:0}.field+.field{margin-top:16px}.form-grid .field+.field{margin-top:0}.field label{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px;gap:8px;color:#334155;font-size:12px;font-weight:700}.required{color:var(--danger)}.optional{color:var(--muted);font-size:10px;font-weight:600;text-transform:uppercase}input,select{width:100%;min-height:40px;padding:9px 11px;border:1px solid var(--border-strong);border-radius:var(--radius-small);background:var(--surface);color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}input::placeholder{color:#94a3b8}input:hover:not(:disabled),select:hover:not(:disabled){border-color:#9eacc0}input:focus,select:focus{border-color:var(--primary);outline:none;box-shadow:var(--focus)}input:disabled,select:disabled{background:#f1f5f9}input[type=search]::-webkit-search-cancel-button{cursor:pointer}.file-input{padding:6px;color:var(--muted);font-size:12px}.file-input::file-selector-button{margin-right:10px;padding:6px 10px;border:0;border-radius:6px;background:var(--primary-soft);color:var(--primary-dark);font:inherit;font-weight:700;cursor:pointer}.field-hint,.field-message{margin:6px 0 0;color:var(--muted);font-size:11px}.template-link{display:inline-block;margin:-4px 0 14px;font-size:12px;font-weight:700;text-decoration:none}.template-link:hover{text-decoration:underline}.import-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px}.import-results{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}.import-summary{margin:0;color:#334155;font-weight:650}.import-summary.is-success{color:var(--success)}.import-summary.is-warning,.import-summary.is-error{color:var(--danger)}.import-errors{max-height:200px;margin-top:10px;overflow:auto}.import-errors:empty{display:none}.import-errors table{min-width:0;border:1px solid var(--border);border-radius:var(--radius-small);font-size:12px}.import-errors th,.import-errors td{padding:8px 10px}.import-errors th:first-child,.import-errors td:first-child{width:70px}.todo-card{margin-bottom:24px;overflow:hidden}.todo-heading{padding:20px 22px;border-bottom:1px solid var(--border)}.todo-heading .eyebrow{margin-bottom:5px}.batch-assignment-controls{display:grid;grid-template-columns:minmax(240px,1fr) 140px auto;align-items:end;padding:18px 22px;border-bottom:1px solid var(--border);background:var(--surface-subtle);gap:12px}.batch-assignment-controls .field+.field{margin-top:0}.todo-table-scroll{max-height:360px;overflow-y:auto}.todo-table-scroll table{min-width:620px}.selection-column{width:44px;text-align:center}.selection-column input,#todo-rows input[type=checkbox],#device-rows input[type=checkbox]{width:17px;min-height:17px;margin:0;accent-color:var(--primary);cursor:pointer}#batch-assignment-message{margin:16px 22px 0}.alert-success{border-color:#c8e9d8;background:var(--success-bg);color:var(--success)}.batch-assignment-errors{margin:12px 22px 20px;padding:12px 14px;border:1px solid #f3cbd1;border-radius:var(--radius-small);background:var(--danger-bg);color:#8f1d2c;font-size:12px}.batch-assignment-errors p{margin:4px 0}#view-import-results{margin-top:12px}#import-result-failed-section{max-height:55vh;overflow-y:auto}#import-result-dialog-summary{margin:5px 0 0;color:var(--muted)}.table-card{overflow:hidden}.table-card-heading{padding:20px 22px;border-bottom:1px solid var(--border)}.table-scroll{width:100%;overflow-x:auto;overscroll-behavior-x:contain}.table-scroll:focus-visible{outline-offset:-3px}table{width:100%;border-collapse:collapse;border-spacing:0;text-align:left}#device-rows,#comm-server-rows{background:var(--surface)}.table-card>.table-scroll>table{min-width:1280px}body[data-page=devices] .table-card>.table-scroll>table{min-width:1480px}body[data-page=comm-servers] .table-card>.table-scroll>table{min-width:1000px}th,td{padding:14px 16px;border-bottom:1px solid #e9eef4;vertical-align:middle}th:first-child,td:first-child{padding-left:22px}th:last-child,td:last-child{padding-right:22px}thead th{background:var(--surface-subtle);color:#526176;font-size:10px;font-weight:800;letter-spacing:.065em;text-transform:uppercase;white-space:nowrap}.sort-button{display:inline-flex;align-items:center;padding:0;border:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;gap:5px}.sort-button:hover{color:var(--primary)}.sort-indicator{color:var(--primary);font-size:11px}tbody tr{transition:background .12s ease}tbody tr:hover:not(.state-row){background:#fbfcfe}tbody tr:last-child td{border-bottom:0}tbody td{color:#3b485c;font-size:12px}.cell-primary{display:block;color:var(--ink);font-weight:700}.cell-secondary{display:block;margin-top:3px;color:var(--muted);font-size:11px}.cell-error{color:var(--danger)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.94em;letter-spacing:-.015em}.description-cell{min-width:220px;max-width:420px;white-space:normal}.actions-column{width:1%}.row-actions{display:flex;align-items:center;gap:7px;white-space:nowrap}.status-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 9px;border:1px solid #dbe2ec;border-radius:999px;background:#f1f5f9;color:#526176;font-size:10px;font-weight:800;letter-spacing:.025em;line-height:1.2;text-transform:capitalize;white-space:nowrap}.status-badge:before{width:6px;height:6px;margin-right:6px;border-radius:50%;background:currentColor;content:"";opacity:.75}.status-success{border-color:#c8e9d8;background:var(--success-bg);color:var(--success)}.status-warning{border-color:#f0dfac;background:var(--warning-bg);color:var(--warning)}.status-danger{border-color:#f3cbd1;background:var(--danger-bg);color:var(--danger)}.pagination-bar{display:flex;min-height:66px;align-items:center;justify-content:space-between;padding:13px 22px;border-top:1px solid var(--border);background:var(--surface-subtle);gap:18px}.pagination-summary{margin:0;color:var(--muted);font-size:12px}.page-size-label{display:inline-flex;align-items:center;color:var(--muted);font-size:12px;gap:7px}.page-size-label select{width:auto;min-height:34px;padding:6px 9px}.page-indicator{margin-right:4px;color:var(--muted);font-size:11px;white-space:nowrap}.table-state{display:flex;min-height:170px;flex-direction:column;align-items:center;justify-content:center;padding:30px;color:var(--muted);text-align:center}.table-state p{max-width:520px;margin:5px 0 0}.table-state .state-title{color:var(--ink);font-size:14px;font-weight:700}.table-state .button{margin-top:14px}.spinner{display:inline-block;width:25px;height:25px;margin-bottom:10px;border:3px solid #dce5f2;border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}.state-mark{display:grid;width:30px;height:30px;margin-bottom:10px;place-items:center;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-weight:800}.state-error .state-mark{background:var(--danger-bg);color:var(--danger)}@keyframes spin{to{transform:rotate(360deg)}}.alert{margin:16px 0 0;padding:11px 13px;border:1px solid var(--border);border-radius:var(--radius-small);font-size:12px}.alert-error{border-color:#f3cbd1;background:var(--danger-bg);color:#8f1d2c}.modal{width:min(680px,calc(100% - 32px));max-height:calc(100dvh - 48px);padding:0;overflow:auto;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:var(--ink);box-shadow:0 24px 80px #0f172a47}.modal::backdrop{background:#0a12209e;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal-small{width:min(490px,calc(100% - 32px))}.modal-wide{width:min(980px,calc(100% - 32px))}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:24px 26px 20px;border-bottom:1px solid var(--border);gap:18px}.modal-header h2{font-size:21px}.modal-header p:not(.eyebrow){margin:7px 0 0;color:var(--muted);font-size:13px}.icon-button{display:grid;flex:0 0 auto;width:34px;height:34px;padding:0 0 3px;place-items:center;border:1px solid var(--border);border-radius:50%;background:var(--surface-subtle);color:var(--muted);font-size:23px;line-height:1}.icon-button:hover{background:#eef2f7;color:var(--ink)}.modal-body{padding:22px 26px 24px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:16px 26px;border-top:1px solid var(--border);background:var(--surface-subtle);gap:10px}.history-body{min-height:260px;background:var(--surface-subtle)}.history-list{display:grid;gap:14px}.history-state{display:flex;min-height:210px;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);text-align:center}.history-state p{margin:4px 0}.history-state .button{margin-top:12px}.history-entry{overflow:hidden;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.history-entry-header{display:flex;align-items:flex-start;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);gap:16px}.history-entry-meta{margin-top:5px;color:var(--muted);font-size:11px}.history-entry time{flex:0 0 auto;color:var(--muted);font-size:11px;white-space:nowrap}.payload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--border)}.payload-section{min-width:0;padding:14px 16px;background:var(--surface)}.payload-section h4{margin-bottom:9px;color:#526176;text-transform:uppercase}.payload-section pre{max-height:320px;margin:0;padding:12px;overflow:auto;border-radius:7px;background:#111c2e;color:#d9e5f6;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:11px;line-height:1.55;tab-size:2;white-space:pre-wrap;overflow-wrap:anywhere}.history-table{min-width:920px}.history-table td{vertical-align:top}.history-operation{min-width:130px;font-weight:700}.history-time{min-width:165px;white-space:nowrap}.payload-preview{display:block;width:100%;max-width:280px;padding:5px 8px;overflow:hidden;border:1px solid var(--border);border-radius:6px;background:var(--surface-subtle);color:#334155;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.payload-preview:hover,.payload-preview:focus-visible{border-color:var(--primary);color:var(--primary-dark)}.payload-detail-content{max-height:60vh;margin:0;padding:16px;overflow:auto;border-radius:8px;background:#111c2e;color:#d9e5f6;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.history-pagination{border-top:1px solid var(--border)}.toast-region{position:fixed;z-index:80;right:22px;bottom:22px;display:grid;width:min(380px,calc(100% - 32px));gap:10px;pointer-events:none}.toast{display:flex;align-items:flex-start;justify-content:space-between;padding:13px 15px;border:1px solid #c8e9d8;border-radius:10px;background:#f1fbf6;color:#115c3b;box-shadow:0 12px 36px #0f172a2e;font-size:13px;gap:12px;pointer-events:auto;animation:toast-in .18s ease-out}.toast-error{border-color:#f3cbd1;background:#fff5f6;color:#8f1d2c}.toast button{flex:0 0 auto;padding:0;border:0;background:transparent;color:currentColor;font-size:18px;line-height:1}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1000px){.devices-layout{grid-template-columns:1fr}.devices-main,.devices-sidebar{grid-column:1}.devices-main{grid-row:1}.devices-sidebar{grid-row:2;grid-template-columns:repeat(2,minmax(0,1fr))}.operations-grid{grid-template-columns:1fr}.search-form,.import-form{max-width:none}}@media(max-width:720px){.header-inner,.page-container{width:min(100% - 32px,1480px)}.header-inner{min-height:64px;gap:16px}.brand-copy span{display:none}.primary-nav{gap:0}.primary-nav a{padding:0 10px;font-size:12px}.primary-nav a[aria-current=page]:after{right:10px;left:10px}.page-container{padding-top:28px}.page-heading{align-items:flex-start}.payload-grid{grid-template-columns:1fr}}@media(max-width:560px){.header-inner{flex-wrap:wrap;width:100%;min-height:0;padding:12px 16px 0;gap:12px}.brand-mark{width:34px;height:34px}.primary-nav{order:3;width:calc(100% + 32px);min-height:42px;margin:0 -16px;padding:0 8px;border-top:1px solid rgba(255,255,255,.07)}.primary-nav a{flex:1 1 50%;justify-content:center}.logout-form{margin-left:auto}.page-container{width:calc(100% - 24px);padding:24px 0 36px}.page-heading{flex-direction:column;margin-bottom:20px;gap:16px}.page-actions,.page-actions .button{width:100%}.devices-sidebar,.batch-assignment-controls{grid-template-columns:1fr}.operation-card{padding:18px}.search-form,.import-form{display:grid;grid-template-columns:1fr}.search-actions .button,.import-form .button{flex:1 1 auto;width:100%}.table-card-heading,.pagination-bar{padding-right:16px;padding-left:16px}.pagination-bar{flex-direction:column;align-items:stretch;gap:10px}.pagination-controls{justify-content:space-between}.page-indicator{margin-right:auto}.modal{width:calc(100% - 20px);max-height:calc(100dvh - 20px);border-radius:12px}.modal-header,.modal-body,.modal-footer{padding-right:18px;padding-left:18px}.form-grid{grid-template-columns:1fr}.history-entry-header{flex-direction:column;gap:6px}.history-entry time{white-space:normal}.history-pagination .pagination-controls .button{flex:1 1 50%}.toast-region{right:12px;bottom:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
