@import"https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Fira+Sans:wght@300;400;500;600;700&display=swap";:root{--bg: #0b1220;--bg-elev-1: #0f172a;--bg-elev-2: #1e293b;--bg-elev-3: #334155;--border: #223148;--text: #f8fafc;--muted: #93a4bf;--accent: #22c55e;--accent-2: #38bdf8;--warn: #f59e0b;--danger: #ef4444;--radius: 12px;--shadow: 0 14px 44px rgba(1, 6, 16, .5)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Fira Sans,sans-serif;background:radial-gradient(circle at 10% 15%,rgba(34,197,94,.1),transparent 40%),radial-gradient(circle at 92% 85%,rgba(56,189,248,.09),transparent 35%),linear-gradient(180deg,#050a14 0%,var(--bg) 50%,#070f1d 100%);color:var(--text)}h1,h2,h3{margin:0;font-weight:600;letter-spacing:.01em}h1{font-size:1.4rem}h2{font-size:1.1rem}h3{font-size:1rem}p{margin:0;color:var(--muted)}button,input,select{font:inherit;color:inherit}input,select{width:100%;margin-top:.45rem;background:#060d1ac7;border:1px solid var(--border);border-radius:10px;padding:.56rem .68rem;color:var(--text)}input:focus,select:focus,button:focus-visible{outline:2px solid rgba(56,189,248,.45);outline-offset:1px}.full-screen-center{min-height:100vh;display:grid;place-items:center;padding:1.2rem}.boot-card{width:min(540px,100%);border:1px solid var(--border);border-radius:18px;background:#0f172ad9;box-shadow:var(--shadow);padding:2rem}.boot-title{font-size:1.24rem;font-weight:600}.boot-subtitle{margin-top:.8rem;color:var(--muted)}.boot-card .secondary-button{margin-top:.9rem}.app-shell{min-height:100vh;display:grid;grid-template-columns:290px minmax(0,1fr)}.sidebar{border-right:1px solid var(--border);background:linear-gradient(180deg,#0f172ad9,#070e1bf2);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:1.2rem 1rem}.brand-block{border:1px solid var(--border);border-radius:var(--radius);padding:.9rem .9rem 1rem;background:#0c1423b3}.brand-kicker{font-size:.72rem;letter-spacing:.12em;color:var(--accent-2)}.brand-title{margin-top:.32rem;font-size:1.02rem;font-weight:600}.brand-subtitle{margin-top:.34rem;color:var(--muted);font-size:.86rem}.tab-list{margin-top:1rem;display:grid;gap:.5rem}.tab-button{width:100%;border-radius:11px;border:1px solid transparent;background:#1e293b66;text-align:left;padding:.72rem .7rem;display:grid;gap:.22rem;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.tab-button:hover{background:#1e293bb3;border-color:var(--border)}.tab-button.active{background:#38bdf82e;border-color:#38bdf873}.tab-label{font-weight:600}.tab-subtitle{font-size:.8rem;color:var(--muted)}.content{padding:1rem 1.2rem 1.35rem;min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;border:1px solid var(--border);border-radius:var(--radius);background:#0f172ad1;box-shadow:var(--shadow);padding:.85rem 1rem;min-width:0}.topbar-title-block p{margin-top:.2rem;font-size:.9rem}.topbar-actions{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.refresh-select-wrap{min-width:120px;font-size:.8rem;color:var(--muted)}.refresh-select-wrap select{margin-top:.22rem}.session-chip{border:1px solid var(--border);border-radius:999px;padding:.38rem .65rem;display:flex;align-items:center;gap:.5rem;background:#101828bf}.session-user{max-width:180px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.86rem}.session-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px #22c55eb8}.secondary-button,.primary-button,.danger-button{border-radius:10px;border:1px solid transparent;padding:.54rem .78rem;cursor:pointer;transition:filter .2s ease,background-color .2s ease,border-color .2s ease}.secondary-button{background:#1e293bb3;border-color:var(--border)}.secondary-button:hover{background:#334155d1}.primary-button{background:linear-gradient(180deg,#22c55e,#16a34a);color:#03120b;font-weight:600}.primary-button:hover{filter:brightness(1.06)}.danger-button{background:#ef444433;border-color:#ef444473;color:#fecaca}.danger-button:hover{background:#ef44444d}.primary-button:disabled,.secondary-button:disabled,.danger-button:disabled{opacity:.45;cursor:not-allowed}.tab-content{margin-top:1rem;min-width:0}.snackbar-stack{position:fixed;right:1rem;bottom:1rem;z-index:40;display:grid;gap:.65rem;width:min(420px,calc(100vw - 2rem));pointer-events:none}.snackbar{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;border-radius:14px;border:1px solid var(--border);background:#060d1af2;box-shadow:0 20px 50px #0206176b;padding:.85rem .95rem;pointer-events:auto;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.snackbar-success{border-color:#22c55e61}.snackbar-error{border-color:#ef444461}.snackbar-info{border-color:#38bdf861}.snackbar-message{font-size:.88rem;line-height:1.4}.snackbar-close{border:1px solid rgba(148,163,184,.3);border-radius:999px;background:#1e293bb8;color:#cbd5e1;width:1.65rem;height:1.65rem;line-height:1;cursor:pointer;flex:0 0 auto}.live-controls-wrap{display:flex;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap}.live-controls-meta{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;min-width:0}.live-controls-actions{display:flex;gap:.45rem;flex-wrap:wrap}.live-state-pill{display:inline-flex;align-items:center;min-height:1.8rem;border-radius:999px;padding:.12rem .62rem;border:1px solid var(--border);font-size:.74rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.live-state-pill.live{border-color:#22c55e66;color:#bbf7d0;background:#22c55e1f}.live-state-pill.paused{border-color:#f59e0b66;color:#fde68a;background:#f59e0b1f}.live-state-pill.manual{border-color:#94a3b859;color:#cbd5e1;background:#33415540}.live-meta-text{font-size:.82rem;color:var(--muted)}.stack-lg{display:grid;gap:1rem}.section-card{border:1px solid var(--border);border-radius:var(--radius);background:#0f172ad1;box-shadow:var(--shadow);padding:.92rem;min-width:0}.section-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.8rem;margin-bottom:.85rem;min-width:0}.section-header-actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;min-width:0}.campaign-actions{display:flex;gap:.45rem;flex-wrap:wrap}.section-header p{margin-top:.25rem;font-size:.86rem}.filters-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:.6rem;margin-bottom:.75rem}.filters-grid label{font-size:.82rem;color:var(--muted)}.notice-banner,.error-banner,.empty-state{border:1px solid var(--border);border-radius:10px;padding:.75rem}.notice-banner{background:#22c55e21;border-color:#22c55e59;margin-bottom:.72rem}.error-banner{display:flex;justify-content:space-between;align-items:center;gap:.75rem;background:#ef444421;border-color:#ef444466;margin-bottom:.72rem}.empty-state{margin-top:.45rem;color:var(--muted);background:#0c131fad}.table-wrap{width:100%;overflow:auto;border:1px solid var(--border);border-radius:10px;background:#09101cb3}.table-wrap.compact table td,.table-wrap.compact table th{padding:.5rem .56rem}table{width:100%;border-collapse:collapse;min-width:760px}.resizable-table{table-layout:fixed}table th,table td{padding:.64rem .6rem;border-bottom:1px solid rgba(34,49,72,.8);vertical-align:top}table th{text-align:left;font-size:.76rem;letter-spacing:.04em;color:#9bb0ce;text-transform:uppercase;background:#1e293bb3;position:sticky;top:0;z-index:1}.resizable-header-cell{display:flex;align-items:center;justify-content:space-between;gap:.35rem;min-width:0}.column-resize-handle{position:relative;display:inline-block;width:.8rem;min-width:.8rem;cursor:col-resize;align-self:stretch;margin-right:-.32rem;border-radius:6px}.column-resize-handle:before{content:"";position:absolute;left:50%;top:.18rem;bottom:.18rem;width:2px;transform:translate(-50%);background:#94a3b859}.column-resize-handle:hover:before,.column-resize-handle:focus-visible:before{background:#38bdf8d9}.column-resize-handle:focus-visible{outline:2px solid rgba(56,189,248,.45);outline-offset:1px}.device-cell-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-model-id{margin-top:.16rem}table tr:hover{background:#38bdf812}.row-selected{background:#38bdf826}.row-selected:hover{background:#38bdf833}.mono{font-family:Fira Code,monospace;font-size:.84rem}.subtle-row{margin-top:.25rem;color:var(--muted);font-size:.8rem}.metric-grid{display:grid;gap:.7rem;grid-template-columns:repeat(4,minmax(120px,1fr))}.metric-card{border-radius:12px;border:1px solid var(--border);padding:.72rem;background:#111a2bcc}.metric-label{color:var(--muted);font-size:.78rem}.metric-value{margin-top:.32rem;font-size:1.2rem;font-weight:600}.metric-good{border-color:#22c55e73}.metric-warn{border-color:#f59e0b73}.metric-bad{border-color:#ef444473}.campaign-layout{display:grid;gap:1rem;grid-template-columns:minmax(0,1fr);min-width:0}.test-groups-layout{display:grid;gap:1rem;grid-template-columns:1fr}.test-groups-table th.group-id-cell,.test-groups-table td.group-id-cell{min-width:24rem}.test-groups-table td.group-id-cell,.full-id-text{overflow-wrap:anywhere;word-break:break-all;white-space:normal;-webkit-user-select:text;user-select:text}.compact-form,.inline-form{display:grid;gap:.55rem;margin-bottom:.75rem}.device-groups-create-grid{display:grid;grid-template-columns:minmax(190px,1.2fr) minmax(150px,.8fr) minmax(230px,1.45fr) auto;gap:.6rem;align-items:end;margin-bottom:.75rem}.device-groups-create-grid .primary-button{white-space:nowrap}.serial-picker-wrap{margin-top:.45rem;display:grid;gap:.45rem}.serial-picker-chip-list{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;min-height:44px;border:1px solid var(--border);border-radius:10px;padding:.36rem;background:#060d1ac7}.serial-picker-chip-list:focus-within{outline:2px solid rgba(56,189,248,.45);outline-offset:1px}.serial-picker-chip{display:inline-flex;align-items:center;gap:.35rem;max-width:min(100%,330px);border:1px solid rgba(56,189,248,.45);border-radius:999px;background:#38bdf826;padding:.2rem .3rem .2rem .5rem;font-size:.78rem;overflow:hidden}.serial-picker-chip>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.serial-picker-chip-remove{border:1px solid rgba(148,163,184,.45);border-radius:999px;background:#0f172ae0;color:#cbd5e1;width:1.2rem;height:1.2rem;padding:0;cursor:pointer;line-height:1;font-size:.72rem}.serial-picker-chip-remove:hover{background:#ef444433;border-color:#ef444473;color:#fecaca}.serial-picker-input{width:auto;flex:1 1 180px;min-width:150px;margin-top:0;border:none;background:transparent;padding:.2rem;border-radius:6px}.serial-picker-input:focus{outline:none}.serial-picker-meta{display:flex;justify-content:space-between;align-items:center;gap:.6rem;font-size:.76rem;color:var(--muted)}.serial-picker-refresh{padding:.3rem .52rem;font-size:.76rem}.serial-picker-suggestions{max-height:220px;overflow:auto;border:1px solid var(--border);border-radius:10px;background:#09101ce6;display:grid}.serial-picker-option{border:none;border-bottom:1px solid rgba(34,49,72,.8);background:transparent;color:inherit;text-align:left;padding:.44rem .54rem;display:flex;justify-content:space-between;align-items:center;gap:.65rem;cursor:pointer}.serial-picker-option:last-child{border-bottom:none}.serial-picker-option:hover,.serial-picker-option:focus-visible{background:#38bdf81f}.serial-picker-option.active{background:#38bdf833}.serial-picker-option-meta{color:#9cb5d8;font-size:.78rem}.compact-form,.inline-form{grid-template-columns:minmax(220px,1fr) auto;align-items:end}.compact-form label,.inline-form label,.query-field{font-size:.82rem;color:var(--muted)}.checkbox-field{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.82rem;color:var(--muted)}.checkbox-field input{width:auto;margin-top:0}.campaign-form-action{display:flex;flex-wrap:wrap;gap:.5rem;align-items:end}.query-field{display:block;margin-bottom:.75rem}.section-subpanel{border:1px solid var(--border);border-radius:10px;padding:.7rem;background:#09101cb8}.section-subpanel p{margin-top:.4rem;font-size:.84rem}.campaign-subpanel{margin-top:.8rem}.unresolved-list{margin-top:.55rem;display:grid;gap:.45rem}.group-target-list{margin-top:.55rem;display:flex;flex-wrap:wrap;gap:.45rem}.group-target-chip{display:inline-flex;max-width:min(100%,360px);border:1px solid rgba(56,189,248,.35);border-radius:999px;background:#38bdf81f;padding:.2rem .5rem;font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.unresolved-row{display:flex;align-items:center;justify-content:space-between;gap:.7rem;border:1px solid var(--border);border-radius:8px;padding:.48rem .55rem;background:#0f172ab3}.campaign-layout table tbody tr{cursor:pointer}.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:.65rem;border:1px solid var(--border);border-radius:10px;padding:.68rem;background:#080e1a9e}.detail-label{color:var(--muted);font-size:.76rem;margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.04em}.event-list{display:grid;gap:.55rem}.event-item{border:1px solid var(--border);border-radius:10px;padding:.55rem .62rem;background:#090f1bb3}.event-topline{display:flex;justify-content:space-between;align-items:center;gap:.8rem}.event-time{color:var(--muted);font-size:.78rem}.event-message{margin-top:.45rem;color:#d2ddf0;font-size:.88rem}.workflow-list{display:grid;gap:.48rem}.workflow-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem;width:100%;border:1px solid var(--border);border-radius:10px;background:#080e1aad;color:inherit;text-align:left;padding:.55rem .65rem;cursor:pointer}.workflow-item:hover{border-color:#38bdf866}.workflow-item.active{border-color:#38bdf8bf;box-shadow:0 0 0 1px #38bdf840 inset}.workflow-item.readonly{opacity:.78;cursor:default}.workflow-index{display:inline-flex;min-width:1.5rem;height:1.5rem;border-radius:999px;border:1px solid rgba(148,163,184,.45);align-items:center;justify-content:center;font-size:.75rem;color:#cbd5e1}.workflow-main{display:grid;gap:.15rem}.workflow-title-row{display:flex;align-items:center;gap:.48rem;flex-wrap:wrap}.workflow-test-id{font-size:.82rem}.workflow-source{font-size:.72rem;color:#9cb5d8;border:1px solid rgba(148,163,184,.4);border-radius:999px;padding:.1rem .45rem}.workflow-stage{font-size:.85rem;color:#d6e2f8}.workflow-meta{font-size:.74rem;color:var(--muted)}.workflow-state{justify-self:end}.logs-console{border:1px solid var(--border);border-radius:10px;padding:.58rem;max-height:290px;overflow:auto;background:#060b16;display:grid;gap:.35rem}.log-line{display:grid;grid-template-columns:170px 66px 1fr;gap:.6rem;align-items:start;font-family:Fira Code,JetBrains Mono,SFMono-Regular,Menlo,monospace;font-size:.78rem;color:#d5e3ff}.log-time{color:#8ea8ce;white-space:nowrap}.log-level{color:#6ac9ff;font-weight:700}.log-message{white-space:pre-wrap;word-break:break-word}.status{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid transparent;font-size:.74rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;padding:.2rem .5rem;white-space:nowrap}.status-success{border-color:#22c55e80;background:#22c55e33;color:#87f5b2}.status-running{border-color:#38bdf880;background:#38bdf82e;color:#95e6ff}.status-queued{border-color:#f59e0b73;background:#f59e0b2e;color:#ffd48b}.status-failed{border-color:#ef444480;background:#ef444430;color:#ffb1b1}.status-neutral{border-color:#60a5fa73;background:#60a5fa26;color:#bdd9ff}.status-default{border-color:#94a3b866;background:#94a3b81f;color:#d0dae8}@media (max-width: 1240px){.filters-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}.metric-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.campaign-layout,.test-groups-layout{grid-template-columns:1fr}.detail-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.device-groups-create-grid{grid-template-columns:repeat(2,minmax(190px,1fr))}.log-line{grid-template-columns:1fr;gap:.2rem}}@media (max-width: 980px){.app-shell{grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--border)}.tab-list{grid-template-columns:1fr}.topbar{flex-direction:column;align-items:stretch}.topbar-actions{flex-wrap:wrap}}@media (max-width: 700px){.content{padding:.7rem}.filters-grid,.detail-grid,.metric-grid,.compact-form,.inline-form,.device-groups-create-grid{grid-template-columns:1fr}.serial-picker-meta{flex-direction:column;align-items:flex-start}.session-user{max-width:120px}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
