:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#eef2f5;color:#1b2430;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}.app-shell{width:min(1180px,calc(100vw - 32px));margin:0 auto;padding:22px 0 28px}.topbar{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #d6dde5}.product-name{font-size:22px;font-weight:750;color:#16202d}.product-subtitle{margin-top:3px;color:#627082;font-size:13px}.topbar-actions{display:flex;align-items:center;gap:10px}.view-tabs{display:inline-flex;align-items:center;gap:4px;padding:4px;border:1px solid #d0d9e2;border-radius:8px;background:#f6f8fa}.nav-button{height:34px;padding:0 10px;border:1px solid transparent;border-radius:6px;display:inline-flex;align-items:center;gap:7px;color:#516174;background:transparent;font-size:13px;font-weight:750}.nav-button.active{color:#153f3c;background:#fff;border-color:#cbd8df;box-shadow:0 4px 10px #19222d14}.connection-dot{width:10px;height:10px;border-radius:999px;display:inline-block;background:#d88716;box-shadow:0 0 0 4px #d8871624}.connection-dot.ok{background:#16815f;box-shadow:0 0 0 4px #16815f24}.connection-dot.warn{background:#b64d3d;box-shadow:0 0 0 4px #b64d3d24}.panel,.notice-panel,.login-panel{background:#fff;border:1px solid #d9e1e8;border-radius:8px;box-shadow:0 14px 36px #19222d14}.notice-panel{margin-top:18px;padding:16px 18px;display:flex;align-items:center;gap:14px;color:#5c3816;background:#fff7e8;border-color:#edd3a4}.notice-panel div{display:grid;gap:3px}.notice-panel span{color:#79582a;font-size:13px}.login-panel{width:min(420px,100%);margin:42px auto 0;padding:24px}.login-form{display:grid;gap:16px}label{display:grid;gap:7px;color:#596779;font-size:13px;font-weight:650}input{width:100%;height:42px;padding:0 12px;border-radius:6px;border:1px solid #c8d3df;color:#172231;background:#fbfcfd;outline:none}textarea{width:100%;min-height:92px;resize:vertical;padding:10px 12px;border-radius:6px;border:1px solid #c8d3df;color:#172231;background:#fbfcfd;outline:none}input:focus,textarea:focus{border-color:#20756e;box-shadow:0 0 0 3px #20756e24}.workspace{margin-top:22px;display:grid;grid-template-columns:minmax(360px,.9fr) minmax(440px,1.1fr);gap:18px;align-items:start}.single-workspace{margin-top:22px}.search-panel,.detail-panel{min-height:480px;padding:18px}.station-key-panel{width:min(820px,100%);margin:0 auto;padding:22px}.station-key-form{margin-top:22px;display:grid;gap:16px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.checkbox-row{min-height:28px;display:flex;grid-template-columns:none;align-items:center;gap:9px;color:#48576b}.checkbox-row input{width:16px;height:16px;padding:0;accent-color:#20756e}.search-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:end}.primary-button,.icon-button{height:42px;border-radius:6px;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:8px;color:#fff;background:#20756e;text-decoration:none}.primary-button{padding:0 16px;min-width:88px;font-weight:700}.icon-button{width:42px;color:#253345;background:#f3f6f8;border-color:#cdd7e1}.icon-button:hover:not(:disabled),.icon-button:focus-visible:not(:disabled){border-color:#91aabd;background:#e8eef3}.primary-button:hover:not(:disabled),.primary-button:focus-visible:not(:disabled){background:#185f59}.station-key-result{margin-top:24px;border-top:1px solid #dbe3eb;padding-top:6px}.key-output{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:10px;align-items:center}.key-output code{min-height:42px;padding:11px 12px;border-radius:8px;border:1px solid #dbe3eb;background:#f7f9fb;color:#172231;overflow-wrap:anywhere}.spin-icon{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.icon-button.ghost{background:#f7f8fa}.inline-error{margin-top:12px;padding:10px 12px;border-radius:6px;background:#fdebea;color:#a4382c;border:1px solid #f3bdb7;font-size:13px}.table-wrap{margin-top:16px;overflow:auto;border:1px solid #dbe3eb;border-radius:8px}table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px}th,td{padding:12px 11px;text-align:left;border-bottom:1px solid #e5ebf0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}th{color:#5a697b;background:#f7f9fb;font-weight:750}tbody tr{transition:background .12s ease}tbody tr:hover{background:#f1f7f6}.selected-row{background:#e7f2f0}.empty-cell{height:168px;display:grid;place-items:center;text-align:center;color:#758296}.device-strip{margin-top:14px;min-height:58px;padding:12px;border-radius:8px;border:1px solid #dbe5ec;background:#f8fbfb;display:flex;align-items:center;justify-content:space-between;gap:12px}.device-strip div{min-width:0;display:grid;gap:3px}.device-strip strong,.device-strip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-strip span{color:#6b7788;font-size:13px}.timeline-list{margin-top:16px;display:grid;gap:10px}.timeline-item{width:100%;min-height:82px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;padding:12px;border:1px solid #dce5ed;border-radius:8px;background:#fbfcfd;color:#1d2938;text-align:left}.timeline-item:hover,.timeline-item:focus-visible{border-color:#9bb7c7;background:#f1f7f6}.timeline-main,.timeline-meta{min-width:0;display:grid;gap:4px}.timeline-main span,.timeline-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-main span{color:#617083;font-size:12px;font-weight:750}.timeline-main strong{font-size:15px}.timeline-meta{grid-column:1 / -1;grid-template-columns:minmax(0,1fr) auto;color:#6d7a8b;font-size:12px}.status{display:inline-flex;align-items:center;min-width:72px;height:24px;padding:0 9px;border-radius:999px;justify-content:center;font-size:12px;font-weight:800}.status-pass{color:#12664e;background:#ddf3ea}.status-fail{color:#a4382c;background:#fdebea}.status-unknown{color:#6d5a12;background:#fff4c7}.status-partial{color:#6b4b13;background:#ffe7bd}.status-aborted{color:#4d5968;background:#e7ebf0}.detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.detail-header h1{margin:0;font-size:24px;color:#172231}.detail-header p{margin:5px 0 0;color:#657386}.meta-grid{margin:18px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.meta-grid div{border:1px solid #dfe7ee;border-radius:8px;padding:12px;background:#fafcfd}.meta-grid dt{margin:0 0 5px;color:#69778a;font-size:12px;font-weight:750}.meta-grid dd{margin:0;min-height:20px;color:#1d2938;overflow-wrap:anywhere}.section-title{margin-top:20px;min-height:42px;display:flex;align-items:center;justify-content:space-between;color:#2a3748;font-weight:800}.file-list{display:grid;gap:10px}.file-row{display:grid;grid-template-columns:minmax(0,1fr) 82px 42px;align-items:center;gap:12px;padding:12px;border:1px solid #dce5ed;border-radius:8px;background:#fbfcfd}.file-row div{min-width:0;display:grid;gap:3px}.file-row strong,.file-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row div span{color:#6c798a;font-size:12px}.json-block{margin:0;min-height:120px;max-height:260px;overflow:auto;border-radius:8px;border:1px solid #dbe3eb;background:#111821;color:#dbe7f2;padding:14px;font-size:12px;line-height:1.55}.empty-detail{display:grid;place-items:center;align-content:center;gap:10px;color:#758296}@media(max-width:900px){.app-shell{width:min(100vw - 20px,720px);padding-top:14px}.workspace{grid-template-columns:1fr}.search-panel,.detail-panel{min-height:auto}.topbar{flex-wrap:wrap}.topbar-actions{width:100%;justify-content:flex-end}}@media(max-width:560px){.topbar{align-items:flex-start}.search-row{grid-template-columns:1fr 42px 42px}.view-tabs{flex:1 1 auto}.nav-button{flex:1;justify-content:center}.nav-button span{display:none}.form-grid{grid-template-columns:1fr}.search-row .primary-button{width:42px;min-width:42px;padding:0;font-size:0}.meta-grid{grid-template-columns:1fr}.file-row{grid-template-columns:minmax(0,1fr) 42px}.file-row>span{display:none}}
