@import"https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Fira+Code:wght@400;500;600&display=swap";:root[data-theme=light]{--bg-base: hsl(210, 30%, 98%);--bg-panel: hsl(0, 0%, 100%);--bg-sidebar: hsl(0, 0%, 100%);--border-color: hsl(210, 14%, 90%);--border-hover: hsl(210, 14%, 80%);--text-main: hsl(210, 24%, 15%);--text-muted: hsl(210, 10%, 45%);--text-inverse: hsl(0, 0%, 100%);--primary: hsl(170, 85%, 28%);--primary-hover: hsl(170, 85%, 22%);--primary-light: hsl(170, 60%, 95%);--blue: hsl(217, 91%, 50%);--blue-bg: hsl(217, 91%, 95%);--green: hsl(142, 70%, 29%);--green-bg: hsl(142, 70%, 95%);--purple: hsl(271, 76%, 45%);--purple-bg: hsl(271, 76%, 96%);--amber: hsl(35, 92%, 35%);--amber-bg: hsl(35, 92%, 94%);--red: hsl(0, 72%, 41%);--red-bg: hsl(0, 72%, 96%);--shadow-sm: 0 1px 2px rgba(16, 24, 40, .05);--shadow-md: 0 4px 12px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .02);--shadow-lg: 0 12px 28px rgba(16, 24, 40, .08), 0 4px 8px rgba(16, 24, 40, .04);--glass-bg: rgba(255, 255, 255, .8);--glass-border: rgba(219, 227, 234, .6);--glass-blur: 16px}:root[data-theme=dark]{--bg-base: hsl(222, 47%, 7%);--bg-panel: hsl(222, 47%, 11%);--bg-sidebar: hsl(222, 47%, 9%);--border-color: hsl(222, 30%, 18%);--border-hover: hsl(222, 30%, 26%);--text-main: hsl(210, 40%, 98%);--text-muted: hsl(210, 14%, 66%);--text-inverse: hsl(222, 47%, 7%);--primary: hsl(170, 75%, 36%);--primary-hover: hsl(170, 75%, 42%);--primary-light: hsl(170, 75%, 15%);--blue: hsl(217, 91%, 60%);--blue-bg: hsl(217, 91%, 15%);--green: hsl(142, 70%, 45%);--green-bg: hsl(142, 70%, 14%);--purple: hsl(271, 76%, 65%);--purple-bg: hsl(271, 76%, 15%);--amber: hsl(35, 92%, 55%);--amber-bg: hsl(35, 92%, 14%);--red: hsl(0, 72%, 60%);--red-bg: hsl(0, 72%, 15%);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 16px 36px rgba(0, 0, 0, .5);--glass-bg: rgba(15, 23, 42, .7);--glass-border: rgba(51, 65, 85, .4);--glass-blur: 20px}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background-color:var(--bg-base);color:var(--text-main);font-family:Outfit,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;transition:background-color .3s ease,color .3s ease}@supports (scrollbar-color: auto){*{scrollbar-color:var(--border-hover) transparent;scrollbar-width:thin}}@supports not (scrollbar-color: auto){::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}}button,input,select,textarea{font-family:inherit;font-size:14px}button{cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}button:disabled{cursor:not-allowed!important;opacity:.5}.auth-shell{display:grid;min-height:100vh;place-items:center;padding:24px;background:radial-gradient(circle at 10% 20%,var(--primary-light) 0%,var(--bg-base) 90%)}.auth-panel{width:min(420px,100%);border:1px solid var(--border-color);border-radius:16px;background:var(--bg-panel);box-shadow:var(--shadow-lg);padding:32px;transition:background-color .3s ease}.auth-panel.compact{display:grid;gap:16px}.auth-brand{margin-bottom:22px}.auth-heading{display:flex;align-items:center;gap:12px;color:var(--primary);margin-bottom:24px}.auth-heading h1{font-size:26px;font-weight:700}.auth-submit{width:100%;margin-top:16px}.auth-panel label{display:grid;gap:6px;color:var(--text-muted);font-size:12px;font-weight:600}.auth-panel input{width:100%;height:44px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-base);color:var(--text-main);padding:0 14px;transition:border-color .2s ease}.auth-panel input:focus{border-color:var(--primary)}.auth-loading{color:var(--text-muted);font-size:14px;text-align:center}.app-shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{background-color:var(--bg-sidebar);border-right:1px solid var(--border-color);padding:32px 20px;display:flex;flex-direction:column;height:100vh;position:sticky;top:0;transition:background-color .3s ease,border-color .3s ease}.brand{display:flex;align-items:center;gap:14px;margin-bottom:36px;text-decoration:none}.brand-mark{display:grid;width:44px;height:44px;place-items:center;border-radius:12px;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-hover) 100%);color:var(--text-inverse);box-shadow:0 4px 10px var(--primary-light)}.brand strong{font-size:18px;font-weight:700;color:var(--text-main)}.brand span{color:var(--text-muted);font-size:12px;margin-top:2px}.nav-list{display:grid;gap:8px}.nav-item{border:0;border-radius:8px;background:transparent;color:var(--text-muted);height:44px;padding:0 16px;text-align:left;display:flex;align-items:center;gap:12px;font-weight:500}.nav-item.active{background-color:var(--primary-light);color:var(--primary);font-weight:600}.nav-item:hover:not(.active){background-color:var(--border-color);color:var(--text-main)}.main-panel{padding:32px;overflow-y:auto;max-width:1600px;width:100%;margin:0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}.ops-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px solid var(--border-color);border-radius:12px;background-color:var(--bg-panel);box-shadow:var(--shadow-sm);margin-bottom:20px;overflow:hidden;transition:all .3s ease}.ops-strip-item{min-width:0;border-left:1px solid var(--border-color);padding:14px 18px}.ops-strip-item:first-child{border-left:0}.ops-strip-item span,.ops-strip-item strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ops-strip-item span{color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.ops-strip-item strong{color:var(--text-main);font-size:15px;margin-top:4px}.ops-ok{color:var(--green)!important}.ops-warn{color:var(--amber)!important}.eyebrow{color:var(--text-muted);font-size:13px;font-weight:500;margin:0 0 4px}h1,h2,p{margin:0}h1{color:var(--text-main);font-size:32px;font-weight:700;letter-spacing:-.5px}h2{color:var(--text-main);font-size:18px;font-weight:600}.toolbar{display:flex;align-items:center;gap:12px}.user-chip{display:inline-flex;align-items:center;gap:8px;height:40px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-panel);color:var(--text-main);padding:0 12px;box-shadow:var(--shadow-sm)}.user-chip span,.user-chip strong{display:block;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-chip strong{color:var(--primary);font-size:12px;font-weight:600}.search-box{display:flex;align-items:center;gap:8px;width:260px;height:40px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-panel);color:var(--text-muted);padding:0 12px;transition:all .2s ease}.search-box:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light)}.search-box input{width:100%;border:0;outline:0;background:transparent;color:var(--text-main)}.search-box input::placeholder{color:var(--text-muted)}.icon-button,.primary-button,.ghost-button,.danger-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;border-radius:8px;font-weight:500}.icon-button{width:40px;border:1px solid var(--border-color);background-color:var(--bg-panel);color:var(--text-main);box-shadow:var(--shadow-sm)}.icon-button.small{width:32px;height:32px}.icon-button:hover:not(:disabled){border-color:var(--border-hover);background-color:var(--bg-base)}.primary-button{border:0;background-color:var(--primary);color:var(--text-inverse);padding:0 16px;box-shadow:var(--shadow-sm)}.primary-button:hover:not(:disabled){background-color:var(--primary-hover);transform:translateY(-1px)}.ghost-button{border:1px solid var(--border-color);background-color:var(--bg-panel);color:var(--text-main);padding:0 14px;box-shadow:var(--shadow-sm)}.ghost-button.small{height:34px;padding:0 10px;font-size:13px}.ghost-button:hover:not(:disabled){background-color:var(--bg-base);border-color:var(--border-hover)}.danger-button{border:0;background-color:var(--red);color:var(--text-inverse);padding:0 14px;box-shadow:var(--shadow-sm)}.danger-button:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.refresh-countdown{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:99px;background-color:var(--primary-light);color:var(--primary);font-size:12px;font-weight:600;height:28px;border:1px solid rgba(15,118,110,.15)}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.metric,.panel{border:1px solid var(--border-color);border-radius:16px;background-color:var(--bg-panel);box-shadow:var(--shadow-md);transition:all .3s cubic-bezier(.4,0,.2,1)}.metric:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--border-hover)}.panel{min-height:180px;padding:24px}.console-panel{border-color:var(--border-hover);box-shadow:var(--shadow-lg)}.metric{min-height:120px;padding:20px;position:relative;overflow:hidden}.metric:after{content:"";position:absolute;top:0;left:0;width:4px;height:100%}.metric.blue:after{background:var(--blue)}.metric.green:after{background:var(--green)}.metric.purple:after{background:var(--purple)}.metric.amber:after{background:var(--amber)}.console-kpis .metric{min-height:108px}.metric-icon{display:grid;width:36px;height:36px;place-items:center;border-radius:8px;margin-bottom:12px}.metric span{display:block;color:var(--text-muted);font-size:13px;font-weight:500;margin-bottom:6px}.metric strong{color:var(--text-main);font-size:26px;font-weight:700}.metric.blue .metric-icon{background:var(--blue-bg);color:var(--blue)}.metric.green .metric-icon{background:var(--green-bg);color:var(--green)}.metric.purple .metric-icon{background:var(--purple-bg);color:var(--purple)}.metric.amber .metric-icon{background:var(--amber-bg);color:var(--amber)}.content-grid{display:grid;grid-template-columns:1fr 340px;gap:20px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}.dashboard-side{display:grid;gap:20px}.status-distribution{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);margin-bottom:16px;padding:16px 0}.status-segment{min-width:0;border:1px solid var(--border-color);border-radius:12px;background-color:var(--bg-base);padding:12px;transition:all .2s ease}.status-segment div:first-child,.protocol-meter div:first-child{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.status-segment span,.protocol-meter span{color:var(--text-muted);font-size:12px;font-weight:600}.status-segment strong,.protocol-meter strong{color:var(--text-main);font-size:16px;font-weight:700}.status-segment-track,.protocol-meter-track{height:6px;border-radius:99px;background-color:var(--border-color);margin-top:12px;overflow:hidden}.status-segment-track span,.protocol-meter-track span{display:block;height:100%;border-radius:inherit}.status-segment.ok .status-segment-track span{background-color:var(--green)}.status-segment.idle .status-segment-track span{background-color:var(--blue)}.status-segment.muted .status-segment-track span{background-color:var(--text-muted)}.status-segment.warn .status-segment-track span{background-color:var(--amber)}.protocol-meter-list{display:grid;gap:14px}.protocol-meter-track span{background-color:var(--blue)}.protocol-meter:nth-child(2) .protocol-meter-track span{background-color:var(--primary)}.protocol-meter:nth-child(3) .protocol-meter-track span{background-color:var(--amber)}.view-stack{display:grid;gap:20px}.devices-workbench-grid{display:grid;grid-template-columns:minmax(360px,.42fr) minmax(0,1fr);gap:20px;align-items:start}.device-detail-stack{display:grid;gap:20px;min-width:0}.device-directory-panel{min-width:0}.device-directory-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;border-bottom:1px solid var(--border-color);margin-bottom:16px;padding-bottom:16px}.device-directory-stats div{min-width:0;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-base);padding:10px 12px}.device-directory-stats span,.device-directory-stats strong{display:block}.device-directory-stats span{color:var(--text-muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.device-directory-stats strong{color:var(--text-main);font-size:18px;margin-top:3px;font-weight:700}.device-list{display:grid;gap:10px;max-height:calc(100vh - 320px);min-height:280px;overflow-y:auto;padding-right:4px}.device-list-item{display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:8px;align-items:center;border:1px solid var(--border-color);border-radius:12px;background-color:var(--bg-panel);padding:12px;transition:all .2s ease}.device-list-item:hover{border-color:var(--border-hover);box-shadow:var(--shadow-sm)}.device-list-item.selected{border-color:var(--primary);background-color:var(--primary-light);box-shadow:inset 3px 0 0 var(--primary)}.device-list-main{display:grid;min-width:0;border:0;background:transparent;color:inherit;gap:6px;padding:0;text-align:left}.device-list-main strong{color:var(--text-main);font-size:15px;font-weight:600}.device-list-main small,.device-list-sub{color:var(--text-muted);font-size:12px}.device-list-meta{display:flex;flex-wrap:wrap;gap:6px}.device-profile-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);margin-bottom:16px;padding:16px 0}.device-profile-summary div{min-width:0}.device-profile-summary span,.device-profile-summary strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-profile-summary span{color:var(--text-muted);font-size:11px;font-weight:700;text-transform:uppercase}.device-profile-summary strong{color:var(--text-main);font-size:14px;margin-top:4px;font-weight:600}.management-grid{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:20px;align-items:start}.device-editor-grid{display:grid;grid-template-columns:minmax(320px,.52fr) minmax(520px,1fr);gap:20px;align-items:start}.settings-grid{display:grid;grid-template-columns:minmax(520px,1fr) minmax(360px,.45fr);gap:20px;align-items:start}.settings-policy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}.settings-service-grid{display:grid;gap:20px}.side-stack{display:grid;gap:20px;max-height:calc(100vh - 64px);overflow-y:auto;padding-top:2px;padding-right:4px;position:sticky;top:32px}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.panel-header p{color:var(--text-muted);font-size:13px;margin-top:3px}.panel-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.section-heading h3{color:var(--text-main);font-size:16px;font-weight:600;margin:0}.section-heading p,.section-heading span{color:var(--text-muted);font-size:12px}.section-heading p{margin-top:3px}.dashboard-status-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);margin-bottom:16px;padding:14px 0}.dashboard-status-strip span,.dashboard-status-strip strong{display:block}.dashboard-status-strip span{color:var(--text-muted);font-size:12px;font-weight:600}.dashboard-status-strip strong{color:var(--text-main);font-size:16px;font-weight:700;margin-top:3px}.table-heading{border-top:1px solid var(--border-color);margin-top:20px;padding-top:20px;margin-bottom:12px}.compact-heading{margin-top:16px}.test-result{border:1px solid var(--border-color);border-radius:12px;margin-top:18px;padding:16px;box-shadow:var(--shadow-sm);transition:all .3s ease}.test-result.ok{background-color:var(--green-bg);border-color:#10b9814d}.test-result.failed{background-color:var(--red-bg);border-color:#ef44444d}.test-result-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.test-result-header strong{color:var(--text-main);font-size:15px;font-weight:600}.test-result-header span,.test-result p,.test-result-meta dt{color:var(--text-muted);font-size:12px}.test-result p{margin-top:10px;overflow-wrap:anywhere;line-height:1.5}.test-result-meta{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:16px;background-color:#00000008;padding:12px;border-radius:8px}.test-result-meta div{min-width:0}.test-result-meta dt{font-weight:600}.test-result-meta dd{color:var(--text-main);font-size:12px;margin:3px 0 0;overflow-wrap:anywhere}.payload-preview-container{position:relative;margin-top:8px}.payload-preview{max-height:240px;overflow:auto;border:1px solid var(--border-color);border-radius:8px;background-color:#05080f;color:#dbe6f0;font-family:Fira Code,monospace;font-size:12px;line-height:1.6;padding:14px;white-space:pre-wrap;word-break:break-word}.copy-payload-btn{margin-left:auto}.mapping-check-list{display:grid;gap:10px;margin-top:10px}.mapping-check-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(100px,.75fr);gap:12px;align-items:center;border:1px solid var(--border-color);border-radius:8px;padding:10px 14px;background-color:var(--bg-panel)}.mapping-check-row.ok{border-left:3px solid var(--green)}.mapping-check-row.failed{border-left:3px solid var(--red);background-color:var(--red-bg)}.mapping-check-row strong{color:var(--text-main);font-size:13px;font-weight:600}.mapping-check-row span{color:var(--text-muted);font-size:12px;overflow-wrap:anywhere}.mapping-check-row code{overflow:auto;color:var(--text-main);font-family:Fira Code,monospace;font-size:12px;text-align:right;white-space:nowrap}.operation-guide,.retention-summary{display:grid;gap:12px;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);margin:8px 0 18px;padding:16px 0}.operation-guide{grid-template-columns:repeat(4,minmax(0,1fr))}.retention-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.operation-guide strong,.retention-summary strong{color:var(--text-main);font-size:14px;font-weight:600}.operation-guide p,.retention-summary p{color:var(--text-muted);font-size:12px;line-height:1.5;margin-top:6px}.guide-label{color:var(--text-muted);font-weight:600;font-size:12px}.service-key-create-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,.8fr) auto;gap:14px;align-items:end;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);margin:8px 0 18px;padding:16px 0}.service-key-create-actions,.token-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.service-key-toolbar{align-items:center;border-bottom:1px solid var(--border-color);display:flex;justify-content:flex-end;margin:-4px 0 14px;padding-bottom:12px}.token-reveal{display:grid;grid-template-columns:minmax(220px,.65fr) minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid var(--green);border-radius:12px;background-color:var(--green-bg);margin-bottom:18px;padding:16px}.token-reveal strong{display:block;color:var(--text-main);font-size:15px;margin-top:4px}.token-reveal p{color:var(--text-muted);font-size:12px;line-height:1.5;margin-top:6px}.token-reveal code,.key-prefix{border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-panel);color:var(--text-main);font-family:Fira Code,monospace;font-size:12px;line-height:1.5;padding:8px 10px}.token-reveal code{min-width:0;overflow:auto;white-space:nowrap}.table{display:grid;border:1px solid var(--border-color);border-radius:12px;overflow:hidden}.table-scroll{border:1px solid var(--border-color);border-radius:12px;overflow:auto;background-color:var(--bg-panel);box-shadow:var(--shadow-sm)}.table-scroll .table{min-width:100%;border:0;border-radius:0}.table-scroll .table-head{position:sticky;top:0;z-index:2}.dashboard-table-scroll{max-height:520px}.tags-table-scroll{max-height:670px}.measurement-table-scroll{max-height:680px}.logs-table-scroll{max-height:620px}.measurement-groups{display:grid;gap:14px}.measurement-group{border:1px solid var(--border-color);border-radius:10px;background-color:var(--bg-panel);box-shadow:var(--shadow-sm);overflow:hidden}.measurement-group-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid var(--border-color);background-color:var(--bg-base);padding:14px 16px}.measurement-group-header h4{color:var(--text-main);font-size:15px;font-weight:700;margin:0}.measurement-group-header p{color:var(--text-muted);font-size:12px;margin-top:4px}.measurement-group-meta{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.measurement-group-meta span{display:inline-flex;align-items:center;min-height:24px;border:1px solid var(--border-color);border-radius:6px;background-color:var(--bg-panel);color:var(--text-muted);font-size:12px;font-weight:600;padding:0 8px}.measurement-matrix-scroll{overflow:auto}.measurement-matrix{width:100%;min-width:760px;border-collapse:collapse;table-layout:auto}.measurement-matrix th,.measurement-matrix td{border-top:1px solid var(--border-color);padding:11px 14px;text-align:left;vertical-align:top}.measurement-matrix thead th{position:sticky;top:0;z-index:1;background-color:var(--bg-panel);color:var(--text-muted);font-size:12px;font-weight:700;text-transform:uppercase}.measurement-matrix thead th:first-child,.measurement-matrix tbody th{min-width:180px}.measurement-matrix tbody th{color:var(--text-main);font-size:13px;font-weight:700}.measurement-matrix tbody th small{display:block;color:var(--text-muted);font-size:11px;font-weight:500;margin-top:3px}.measurement-matrix td{min-width:130px;color:var(--text-muted);font-size:13px}.measurement-cell{display:grid;gap:5px}.measurement-cell strong{color:var(--text-main);font-size:14px;font-weight:700;white-space:nowrap}.measurement-cell span{display:flex;align-items:center;gap:6px}.measurement-cell small{color:var(--text-muted);font-size:11px;font-weight:600}.measurement-empty-cell{color:var(--text-muted)}.table-row{display:grid;grid-template-columns:1.2fr .7fr 1fr .7fr .8fr;align-items:center;min-height:48px;border-top:1px solid var(--border-color);padding:10px 16px;color:var(--text-muted);font-size:14px;background-color:var(--bg-panel);transition:background-color .15s ease}.table-row:hover:not(.table-head){background-color:var(--bg-base)}.table-row:first-child{border-top:0}.table-head{min-height:42px;background-color:var(--bg-base);color:var(--text-muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.table-row strong{color:var(--text-main);font-weight:600}.measurements-table .table-row{grid-template-columns:minmax(190px,1.25fr) minmax(180px,1.1fr) minmax(150px,.85fr) minmax(130px,.8fr) minmax(90px,.45fr) minmax(170px,.95fr) minmax(170px,.95fr) minmax(64px,.35fr)}.devices-table .table-row{grid-template-columns:1fr 1.1fr .7fr 1fr .7fr 1.1fr .8fr}.tags-table .table-row{grid-template-columns:.8fr .9fr 1fr .65fr .5fr .6fr .95fr .7fr}.tags-table{min-width:860px}.collection-states-table .table-row{grid-template-columns:minmax(170px,1.2fr) minmax(210px,1.25fr) minmax(130px,.85fr) minmax(170px,1fr) minmax(220px,1.35fr) .8fr}.dashboard-states-table .table-row{grid-template-columns:1.05fr 1.3fr .72fr 1fr 1.05fr}.error-logs-table .table-row{grid-template-columns:1.1fr .75fr .8fr .9fr .8fr minmax(220px,1.5fr) minmax(180px,1.1fr)}.audit-logs-table .table-row{grid-template-columns:1.1fr .85fr 1fr .8fr minmax(260px,1.6fr)}.users-table .table-row{grid-template-columns:minmax(180px,1.3fr) .75fr .75fr minmax(170px,1fr) .65fr}.service-api-keys-table .table-row{grid-template-columns:minmax(190px,1.2fr) .72fr .75fr .62fr minmax(150px,.85fr) minmax(150px,.85fr) .75fr}.service-api-table-scroll{max-height:420px}.log-context-cell{display:flex;align-items:center;justify-content:space-between;gap:8px}.log-context-cell code{flex:1}.row-action-btn{opacity:0;width:26px;height:26px;padding:0;border-radius:6px;background-color:var(--bg-panel);border:1px solid var(--border-color);color:var(--text-muted)}.table-row:hover .row-action-btn{opacity:1}.row-action-btn:hover{color:var(--primary);border-color:var(--primary)}.error-logs-table code,.audit-logs-table code{display:block;max-height:48px;overflow:hidden;border-radius:6px;background-color:var(--bg-base);color:var(--text-main);font-family:Fira Code,monospace;font-size:12px;line-height:1.45;padding:6px;white-space:normal;word-break:break-word;border:1px solid var(--border-color)}.message-cell{overflow-wrap:anywhere;display:flex;align-items:center;justify-content:space-between;gap:8px}.device-cell{display:grid;gap:2px;min-width:0}.device-cell strong,.device-cell span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-cell span{color:var(--text-muted);font-size:12px}.state-cell,.cell-stack{display:grid;gap:5px;min-width:0}.state-cell>span,.cell-stack span{color:var(--text-muted);font-size:12px;overflow-wrap:anywhere}.cell-stack strong{color:var(--text-main);font-size:13px}.status{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:52px;height:24px;border-radius:6px;font-size:12px;font-weight:700;padding:0 8px}.status.ok{background-color:var(--green-bg);color:var(--green)}.status.idle{background-color:var(--border-color);color:var(--text-muted)}.status.error{background-color:var(--red-bg);color:var(--red)}.protocol-pill{display:inline-flex;align-items:center;justify-content:center;width:fit-content;min-width:56px;height:24px;border-radius:6px;background-color:var(--blue-bg);color:var(--blue);font-size:12px;font-weight:700;padding:0 8px}.role-badge{display:inline-flex;align-items:center;justify-content:center;min-width:76px;height:24px;border-radius:6px;font-size:12px;font-weight:700}.role-badge.admin{background-color:var(--blue-bg);color:var(--blue)}.role-badge.operator{background-color:var(--green-bg);color:var(--green)}.log-level{display:inline-flex;align-items:center;justify-content:center;width:72px;height:24px;border-radius:6px;font-size:12px;font-weight:700}.log-level.warning{background-color:var(--amber-bg);color:var(--amber)}.log-level.info{background-color:var(--blue-bg);color:var(--blue)}.log-level.error{background-color:var(--red-bg);color:var(--red)}.audit-action{display:inline-flex;align-items:center;min-height:24px;border-radius:99px;font-size:12px;font-weight:700;padding:2px 8px}.audit-action.ok{background-color:var(--green-bg);color:var(--green)}.audit-action.info{background-color:var(--blue-bg);color:var(--blue)}.audit-action.warning{background-color:var(--amber-bg);color:var(--amber)}.ai-badge{display:inline-flex;align-items:center;gap:4px;background:linear-gradient(135deg,var(--purple-bg) 0%,var(--blue-bg) 100%);color:var(--purple);font-weight:700;font-size:11px;border-radius:6px;padding:2px 8px;border:1px solid rgba(109,40,217,.15)}.ai-confidence{font-size:10px;font-weight:800;padding:1px 4px;border-radius:4px}.ai-confidence.high{background-color:var(--green-bg);color:var(--green)}.ai-confidence.medium{background-color:var(--amber-bg);color:var(--amber)}.ai-confidence.low{background-color:var(--red-bg);color:var(--red)}.row-actions{display:flex;align-items:center;gap:6px}.adapter-list,.role-list,.log-list,.suggestion-list{display:grid;gap:10px}.adapter-line,.log-row{display:flex;align-items:center;justify-content:space-between;min-height:38px;border-bottom:1px solid var(--border-color);color:var(--text-muted)}.adapter-line strong{color:var(--text-main)}.role-list{grid-template-columns:1fr 1fr}.role-list span{display:grid;min-height:42px;place-items:center;border-radius:8px;background-color:var(--bg-base);color:var(--text-main);font-weight:600;border:1px solid var(--border-color)}.log-row{gap:12px;justify-content:flex-start}.log-row strong{flex:1;color:var(--text-main);font-size:14px}.log-row time{color:var(--text-muted);font-size:13px}.dashboard-log-list .log-row{align-items:flex-start}.dashboard-log-list .log-row strong{overflow-wrap:anywhere}.suggestion-list{margin-top:14px}.suggestion-row{display:grid;grid-template-columns:20px 1fr;gap:12px;align-items:start;border:1px solid var(--border-color);border-radius:8px;padding:12px;background-color:var(--bg-panel);transition:all .2s ease}.suggestion-row:hover{border-color:var(--border-hover)}.suggestion-row.invalid{background-color:var(--red-bg);border-color:#ef444433}.suggestion-row input[type=checkbox]{margin-top:4px;accent-color:var(--primary);width:16px;height:16px}.suggestion-row span,.suggestion-row strong,.suggestion-row em,.suggestion-row small{display:block;min-width:0}.suggestion-row strong{color:var(--text-main);font-size:14px;font-weight:600}.suggestion-row em{color:var(--blue);font-family:Fira Code,monospace;font-size:12px;font-style:normal;overflow-wrap:anywhere;margin-top:4px}.suggestion-row small{color:var(--text-muted);font-size:12px;overflow-wrap:anywhere;margin-top:4px}.select-all-row{display:flex;align-items:center;gap:8px;padding:8px 12px;background-color:var(--bg-base);border:1px solid var(--border-color);border-radius:8px;font-size:13px;font-weight:600}.select-all-row input{width:16px;height:16px;accent-color:var(--primary)}.filter-bar{align-items:flex-end;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px}.tags-workspace-grid{display:grid;grid-template-columns:250px minmax(240px,1fr);gap:16px;margin-bottom:20px;align-items:start}.gateway-tree-section{border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-base);margin:0;padding:14px}.gateway-tree{display:grid;gap:8px;max-height:420px;overflow-y:auto;padding-right:4px}.tree-root-row,.tree-branch summary,.tree-tag-row{display:grid;align-items:center;min-width:0}.tree-root-row{grid-template-columns:30px minmax(0,1fr) auto;gap:10px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-panel);padding:10px}.tree-branch{border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-panel);overflow:hidden}.tree-branch summary{grid-template-columns:26px minmax(0,1fr) auto;gap:8px;min-height:44px;padding:9px 8px 9px 22px;position:relative;cursor:pointer;list-style:none}.tree-branch summary::-webkit-details-marker{display:none}.tree-branch summary:hover{background-color:var(--bg-base)}.tree-branch summary:before{border-color:transparent transparent transparent var(--text-muted);border-style:solid;border-width:5px 0 5px 6px;content:"";height:0;left:8px;justify-self:center;position:absolute;top:calc(50% - 5px);width:0}.tree-branch[open] summary:before{transform:rotate(90deg)}.tree-icon{align-items:center;border-radius:6px;display:inline-flex;height:24px;justify-content:center;width:24px}.tree-icon.gateway{background-color:var(--primary-light);color:var(--primary)}.tree-icon.node{background-color:var(--blue-bg);color:var(--blue)}.tree-icon.tag{background-color:var(--purple-bg);color:var(--purple)}.tree-main{display:grid;gap:3px;min-width:0}.tree-main strong,.tree-main em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-main strong{color:var(--text-main);font-size:13px;font-style:normal;font-weight:700}.tree-main em{color:var(--text-muted);font-size:12px;font-style:normal}.tree-count,.tree-state{align-items:center;border-radius:6px;display:inline-flex;height:24px;justify-content:center;padding:0 8px;white-space:nowrap;font-size:11px;font-weight:700}.tree-meta{align-items:center;display:inline-flex;gap:6px}.tree-count{background-color:var(--bg-base);color:var(--text-muted)}.tree-state.active{background-color:var(--green-bg);color:var(--green)}.tree-state.inactive{background-color:var(--border-color);color:var(--text-muted)}.gateway-tree .tree-state{display:none}.tree-tag-list{border-top:1px solid var(--border-color);display:grid;padding:4px 0 6px 24px}.tree-tag-row{grid-template-columns:16px minmax(0,1fr) auto auto;gap:8px;min-height:38px;padding:6px 10px 6px 0}.tree-tag-marker{border-bottom:1px solid var(--border-hover);border-left:1px solid var(--border-hover);height:18px;justify-self:end;width:12px}.tree-empty{border-top:1px solid var(--border-color);color:var(--text-muted);font-size:13px;padding:12px 10px 12px 34px}.sensor-node-section{border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-base);margin:0;padding:14px}.section-heading.compact{align-items:center;margin-bottom:12px}.sensor-node-list{border:1px solid var(--border-color);border-radius:8px;overflow:hidden;background-color:var(--bg-panel)}.sensor-node-row{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,.9fr) minmax(0,1fr) 64px 76px;align-items:center;gap:10px;min-height:42px;border-top:1px solid var(--border-color);padding:9px 12px;color:var(--text-muted);font-size:13px}.sensor-node-section .sensor-node-row{grid-template-columns:62px minmax(54px,1fr) 58px;gap:6px;padding-left:8px;padding-right:8px}.sensor-node-section .sensor-node-row>:nth-child(3),.sensor-node-section .sensor-node-row>:nth-child(4){display:none}.sensor-node-section .row-actions{gap:4px}.sensor-node-section .icon-button.small{height:28px;width:26px}.sensor-node-row:first-child{border-top:0}.sensor-node-head{min-height:36px;background-color:var(--bg-base);color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase}.sensor-node-row strong{color:var(--text-main);font-weight:600}.sensor-node-row>span,.sensor-node-row>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensor-location,.node-cell{display:inline-flex;align-items:center;gap:5px;min-width:0;overflow:hidden;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap}.sensor-node-form{border:1px solid var(--border-color);border-radius:8px;margin-top:12px;padding:14px;background-color:var(--bg-base)}.sensor-node-form-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.sensor-node-form-title strong{color:var(--text-main);font-size:14px}.sensor-node-form-title span{color:var(--text-muted);font-size:12px}.sensor-node-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.sensor-node-fields .field.full,.sensor-node-fields .checkbox-field.full{grid-column:1 / -1}.form-actions.compact{margin-top:14px}.empty-state.compact{margin-top:10px;padding:14px}.tab-bar,.sub-tab-bar{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--border-color);margin-bottom:16px;padding-bottom:12px}.tab-button,.sub-tab-button{height:36px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-panel);color:var(--text-muted);padding:0 16px;font-weight:500;font-size:13px}.tab-button.active,.tab-button:hover,.sub-tab-button.active,.sub-tab-button:hover{border-color:var(--primary);background-color:var(--primary-light);color:var(--primary)}.sub-tab-bar{border-bottom:1px solid var(--border-color);margin-top:0;padding-top:2px}.field{display:grid;gap:6px;min-width:160px}.field.compact{min-width:110px}.tag-device-field{min-width:280px}.filter-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;min-height:40px}.field span{color:var(--text-muted);font-size:12px;font-weight:600}.field input,.field select,.field textarea{width:100%;border:1px solid var(--border-color);border-radius:8px;color:var(--text-main);background-color:var(--bg-panel);padding:0 12px;transition:all .2s ease}.field input,.field select{height:40px}.field textarea{min-height:96px;padding-top:10px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light);background-color:var(--bg-panel)}.field textarea.code-area{font-family:Fira Code,monospace;font-size:12px;line-height:1.5}.form-grid{display:grid;grid-template-columns:1fr;gap:14px}.form-grid.two{grid-template-columns:1fr 1fr}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid .field{min-width:0}.form-grid .field.full,.form-grid.full,.form-grid .checkbox-field.full{grid-column:1 / -1}.checkbox-field{display:flex;align-items:center;gap:10px;color:var(--text-main);font-size:14px;font-weight:600;cursor:pointer}.checkbox-field.compact{color:var(--text-muted);font-size:13px}.checkbox-field input{width:18px;height:18px;accent-color:var(--primary)}.form-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:20px}.form-divider{height:1px;background-color:var(--border-color);margin:18px 0}.error-banner,.notice-banner,.confirm-banner,.empty-state{border-radius:8px;padding:14px;font-size:14px;font-weight:500}.error-banner{border:1px solid rgba(239,68,68,.2);background-color:var(--red-bg);color:var(--red);margin-bottom:16px}.notice-banner{border:1px solid rgba(16,185,129,.2);background-color:var(--green-bg);color:var(--green);margin-bottom:16px}.confirm-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid rgba(245,158,11,.25);background-color:var(--amber-bg);color:var(--amber);margin-bottom:16px}.confirm-banner div{display:flex;align-items:center;gap:8px}.empty-state{border:2px dashed var(--border-color);color:var(--text-muted);margin-top:16px;text-align:center;padding:24px}.toast-container{position:fixed;bottom:24px;right:24px;display:grid;gap:10px;z-index:9999;max-width:360px;width:100%}.toast-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:10px;background-color:var(--bg-panel);border:1px solid var(--border-color);box-shadow:var(--shadow-lg);color:var(--text-main);font-size:13px;font-weight:500;animation:slideIn .2s cubic-bezier(0,0,.2,1) forwards}@keyframes slideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.toast-item.success{border-left:4px solid var(--green)}.toast-item.error{border-left:4px solid var(--red)}.toast-item.info{border-left:4px solid var(--blue)}.toast-item.warning{border-left:4px solid var(--amber)}.toast-item span{flex:1}.toast-close-btn{background:transparent;border:0;color:var(--text-muted);cursor:pointer;padding:2px;display:flex;align-items:center}.toast-close-btn:hover{color:var(--text-main)}@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--border-color);padding:20px;height:auto;position:static}.nav-list{grid-template-columns:repeat(3,minmax(0,1fr))}.topbar,.toolbar{align-items:stretch;flex-direction:column}.search-box{width:100%}.metric-grid,.dashboard-grid,.content-grid,.management-grid,.devices-workbench-grid,.ops-strip,.status-distribution,.device-profile-summary,.settings-policy-grid,.settings-grid{grid-template-columns:1fr}.ops-strip-item{border-left:0;border-top:1px solid var(--border-color)}.ops-strip-item:first-child{border-top:0}.device-list{max-height:none}.side-stack{max-height:none;overflow:visible;padding-right:0;position:static}.form-grid.two,.form-grid.three{grid-template-columns:1fr}.section-heading{align-items:flex-start;flex-direction:column}.test-result-meta,.mapping-check-row,.operation-guide,.retention-summary{grid-template-columns:1fr}.mapping-check-row code{text-align:left}.table-row,.measurements-table .table-row,.devices-table .table-row,.tags-table .table-row,.collection-states-table .table-row,.error-logs-table .table-row,.audit-logs-table .table-row,.users-table .table-row{grid-template-columns:1fr;gap:8px;padding:16px}.table-head{display:none}.confirm-banner{align-items:stretch;flex-direction:column}}@media(max-width:1180px){.device-editor-grid,.devices-workbench-grid{grid-template-columns:1fr}}
