@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";*{margin:0;padding:0;box-sizing:border-box}:root{--bg-primary: #fafbfc;--bg-secondary: #ffffff;--bg-tertiary: #f6f8fa;--bg-hover: #f3f4f6;--bg-active: #e5e7eb;--border-light: #e5e7eb;--border-medium: #d1d5db;--text-primary: #111827;--text-secondary: #6b7280;--text-muted: #9ca3af;--status-ok: #10b981;--status-ok-bg: #d1fae5;--status-ok-light: #ecfdf5;--status-warning: #f59e0b;--status-warning-bg: #fef3c7;--status-warning-light: #fffbeb;--status-error: #ef4444;--status-error-bg: #fee2e2;--status-error-light: #fef2f2;--status-unknown: #6b7280;--status-unknown-bg: #e5e7eb;--status-unknown-light: #f9fafb;--accent: #3b82f6;--accent-light: #eff6ff;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);line-height:1.5;font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.header{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:56px;background:var(--bg-secondary);border-bottom:1px solid var(--border-light);flex-shrink:0;gap:24px}.header-title{font-size:16px;font-weight:600;color:var(--text-primary);letter-spacing:-.01em;white-space:nowrap}.header-search{flex:1;max-width:480px;position:relative}.header-search-input{width:100%;padding:10px 40px 10px 38px;border:1px solid var(--border-light);border-radius:var(--radius-md);font-size:13px;outline:none;background:var(--bg-tertiary);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%239ca3af'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:12px center;background-size:16px;transition:all .15s ease}.header-search-input:focus{border-color:var(--accent);background-color:var(--bg-secondary);box-shadow:0 0 0 3px var(--accent-light)}.header-search-input::placeholder{color:var(--text-muted)}.header-search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:24px;height:24px;border:none;background:var(--bg-hover);border-radius:50%;cursor:pointer;font-size:16px;color:var(--text-muted);display:flex;align-items:center;justify-content:center;transition:all .15s ease}.header-search-clear:hover{background:var(--bg-active);color:var(--text-secondary)}.header-status{display:flex;align-items:center;gap:16px}.status-total{font-size:13px;font-weight:500;color:var(--text-secondary)}.status-divider{color:var(--border-medium);font-size:12px}.status-item{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--text-secondary)}.status-item .status-dot{width:8px;height:8px;border-radius:50%}.status-item.ok .status-dot{background:var(--status-ok)}.status-item.warning .status-dot{background:var(--status-warning)}.status-item.error .status-dot{background:var(--status-error)}.status-item.unknown .status-dot{background:var(--status-unknown)}.header-actions{display:flex;align-items:center;gap:12px}.last-updated{font-size:12px;color:var(--text-muted)}.refresh-btn{width:32px;height:32px;border:1px solid var(--border-light);background:var(--bg-secondary);border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all .15s ease}.refresh-btn:hover{background:var(--bg-hover);border-color:var(--border-medium);color:var(--text-primary)}.refresh-btn:disabled{opacity:.5;cursor:not-allowed}.refresh-btn.refreshing svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.header-controls{display:flex;gap:4px}.header-btn{width:28px;height:28px;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--text-muted);border-radius:var(--radius-sm);transition:all .15s ease}.header-btn:hover{background:var(--bg-hover);color:var(--text-secondary)}.main-content{display:flex;flex:1;overflow:hidden}.sidebar{width:280px;background:var(--bg-secondary);border-right:1px solid var(--border-light);display:flex;flex-direction:column;flex-shrink:0}.sidebar-header{padding:16px 20px;border-bottom:1px solid var(--border-light)}.sidebar-header h3{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.nav-tree{flex:1;overflow-y:auto;padding:8px 0}.nav-location{border-bottom:1px solid var(--border-light)}.nav-location:last-child{border-bottom:none}.nav-location-header{display:flex;align-items:center;padding:12px 16px;cursor:pointer;gap:8px;transition:background .1s ease}.nav-location-header:hover{background:var(--bg-hover)}.nav-location-header.active{background:var(--bg-tertiary)}.nav-toggle{font-size:10px;color:var(--text-muted);transition:transform .2s ease}.nav-toggle.expanded{transform:rotate(90deg)}.nav-location-name{flex:1;font-size:14px;font-weight:600;color:var(--text-primary)}.nav-location-badges{display:flex;gap:4px}.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;font-size:11px;font-weight:600}.nav-badge.warning{background:var(--status-warning-bg);color:var(--status-warning)}.nav-badge.error{background:var(--status-error-bg);color:var(--status-error)}.nav-badge.unknown{background:var(--status-unknown-bg);color:var(--status-unknown)}.nav-badge.small{min-width:16px;height:16px;font-size:10px;padding:0 4px}.nav-processes{background:var(--bg-tertiary);padding:4px 0}.nav-process{display:flex;align-items:center;justify-content:space-between;padding:10px 16px 10px 36px;cursor:pointer;transition:background .1s ease}.nav-process:hover{background:var(--bg-hover)}.nav-process.selected{background:var(--accent-light)}.nav-process-info{display:flex;flex-direction:column;gap:2px}.nav-process-name{font-size:13px;color:var(--text-primary)}.nav-process.selected .nav-process-name{color:var(--accent);font-weight:500}.nav-process-range{font-size:11px;color:var(--text-muted);font-family:SF Mono,Fira Code,monospace}.nav-process-stats{display:flex;align-items:center;gap:6px}.nav-process-count{font-size:12px;color:var(--text-muted);background:var(--bg-secondary);padding:2px 8px;border-radius:10px}.search-box{padding:16px;border-bottom:1px solid var(--border-light)}.search-input{width:100%;padding:10px 14px 10px 38px;border:1px solid var(--border-light);border-radius:var(--radius-md);font-size:13px;outline:none;background:var(--bg-tertiary);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%239ca3af'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:12px center;background-size:16px;transition:all .15s ease}.search-input:focus{border-color:var(--accent);background-color:var(--bg-secondary);box-shadow:0 0 0 3px var(--accent-light)}.search-input::placeholder{color:var(--text-muted)}.nav-table{flex:1;overflow-y:auto}.nav-table table{width:100%;border-collapse:collapse}.nav-table th{padding:10px 16px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);background:var(--bg-tertiary);border-bottom:1px solid var(--border-light);position:sticky;top:0}.nav-table td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--border-light);font-size:13px;cursor:pointer;transition:background .1s ease}.nav-table tr:hover td{background:var(--bg-hover)}.nav-table tr.selected td{background:var(--accent-light);color:var(--accent);font-weight:500}.nav-table tr.selected:hover td{background:var(--accent-light)}.stats-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;font-size:11px;font-weight:600}.stats-badge.ok{background:var(--status-ok-bg);color:var(--status-ok)}.stats-badge.warning{background:var(--status-warning-bg);color:var(--status-warning)}.stats-badge.error{background:var(--status-error-bg);color:var(--status-error)}.content-area{flex:1;padding:24px;overflow-y:auto;background:var(--bg-primary)}.station-grid{display:flex;flex-direction:column;gap:8px;max-width:1200px}.station-card{background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:all .2s ease}.station-card:hover{border-color:var(--border-medium);box-shadow:var(--shadow-sm)}.station-card.expanded{box-shadow:var(--shadow-md);border-color:var(--border-medium)}.station-card-header{display:flex;align-items:center;padding:16px 20px;gap:16px}.station-status-indicator{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;flex-shrink:0}.station-status-indicator.ok{background:var(--status-ok-light);color:var(--status-ok)}.station-status-indicator.warning{background:var(--status-warning-light);color:var(--status-warning)}.station-status-indicator.error{background:var(--status-error-light);color:var(--status-error)}.station-status-indicator.unknown{background:var(--status-unknown-light);color:var(--status-unknown)}.station-status-indicator:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.station-info{display:flex;flex-direction:column;gap:2px;min-width:100px}.station-code{font-size:15px;font-weight:600;color:var(--text-primary)}.station-terminal{font-size:12px;color:var(--text-muted);font-family:SF Mono,Fira Code,monospace}.station-message-inline{flex:1;text-align:right;font-size:13px;color:var(--text-secondary);padding-right:8px}.station-meta{flex:1;display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding-right:8px}.station-meta .station-message-inline{flex:none;padding-right:0}.station-last-seen{font-size:11px;color:var(--text-muted)}.station-message-inline .issue-action{color:var(--status-error);font-weight:600}.status-warning .station-message-inline .issue-action{color:var(--status-warning)}.station-message-inline .issue-device{font-weight:600;color:var(--text-primary)}.station-message-inline .issue-station{display:inline-block;background:var(--accent-light);color:var(--accent);padding:1px 6px;border-radius:4px;font-weight:600;font-size:12px;font-family:SF Mono,Fira Code,monospace}.station-message-inline .issue-serial{font-family:SF Mono,Fira Code,monospace;font-size:11px;background:var(--bg-tertiary);padding:1px 4px;border-radius:3px;color:var(--text-secondary)}.station-message-inline .issue-hint{font-style:italic;color:var(--text-secondary)}.station-detail-issue{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:var(--radius-md);margin-bottom:16px;font-size:14px;line-height:1.5}.station-detail-issue.error{background:var(--status-error-light);border:1px solid var(--status-error-bg)}.station-detail-issue.warning{background:var(--status-warning-light);border:1px solid var(--status-warning-bg)}.station-detail-issue.unknown{background:var(--status-unknown-light);border:1px solid var(--status-unknown-bg)}.station-detail-issue .issue-icon{font-size:18px;flex-shrink:0}.station-detail-issue .issue-content{flex:1;font-weight:500}.station-detail-issue .issue-action{color:var(--status-error);font-weight:700}.station-detail-issue.warning .issue-action{color:var(--status-warning)}.station-detail-issue.unknown .issue-action{color:var(--status-unknown)}.station-detail-issue .issue-device{font-weight:700;color:var(--text-primary)}.station-detail-issue .issue-station{display:inline-block;background:var(--accent-light);color:var(--accent);padding:2px 8px;border-radius:4px;font-weight:600;font-size:13px;font-family:SF Mono,Fira Code,monospace}.station-detail-issue .issue-serial{font-family:SF Mono,Fira Code,monospace;font-size:12px;background:#0000000d;padding:2px 6px;border-radius:3px}.station-detail-issue .issue-hint{font-style:italic;opacity:.85}.station-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border-light)}.station-detail-header h4{font-size:14px;font-weight:600;color:var(--text-primary)}.station-last-measurement{font-size:12px;color:var(--text-secondary)}.station-expand{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--text-muted);border-radius:var(--radius-sm);transition:all .15s ease;flex-shrink:0}.station-card:hover .station-expand{background:var(--bg-hover);color:var(--text-secondary)}.station-card.status-ok{border-left:3px solid var(--status-ok)}.station-card.status-warning{border-left:3px solid var(--status-warning)}.station-card.status-error{border-left:3px solid var(--status-error)}.station-card.status-unknown{border-left:3px solid var(--status-unknown)}.station-detail{padding:20px;border-top:1px solid var(--border-light);margin-top:-1px;background:var(--bg-tertiary)}.device-comparison{display:grid;grid-template-columns:1fr 1fr;gap:16px}.device-list{background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:var(--radius-md);padding:16px}.device-list h4{font-size:12px;font-weight:600;margin-bottom:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em}.device-item{display:flex;align-items:center;gap:8px;font-size:13px;padding:10px 12px;color:var(--text-secondary);border-bottom:1px solid var(--border-light);border-radius:var(--radius-sm);margin-bottom:4px;background:var(--bg-secondary)}.device-item:last-child{border-bottom:none;margin-bottom:0}.device-item.muted{color:var(--text-muted);font-style:italic}.device-item.device-missing{background:var(--status-error-light);border-color:var(--status-error-bg)}.device-item.device-extra{background:var(--status-warning-light);border-color:var(--status-warning-bg)}.device-label{font-weight:500;color:var(--text-primary);min-width:80px}.device-value{display:flex;align-items:center;gap:8px;flex:1}.device-vendor{color:var(--text-secondary)}.device-serial{font-family:SF Mono,Fira Code,monospace;font-size:11px;background:var(--bg-tertiary);padding:2px 6px;border-radius:3px;color:var(--text-secondary)}.device-status{font-size:10px;font-weight:600;text-transform:uppercase;padding:2px 8px;border-radius:10px;margin-left:auto}.device-status.missing{background:var(--status-error-bg);color:var(--status-error)}.device-status.extra{background:var(--status-warning-bg);color:var(--status-warning)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted);padding:48px}.empty-state-icon{font-size:48px;margin-bottom:16px;opacity:.4}.empty-state p{font-size:14px;text-align:center}.loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted)}.loading-spinner{width:32px;height:32px;border:2px solid var(--border-light);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.search-results{max-width:800px}.search-results-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.search-results h3{font-size:16px;font-weight:600;color:var(--text-primary)}.clear-search-btn{padding:8px 16px;border:1px solid var(--border-light);background:var(--bg-secondary);border-radius:var(--radius-md);cursor:pointer;font-size:13px;font-weight:500;color:var(--text-secondary);transition:all .15s ease}.clear-search-btn:hover{background:var(--bg-hover);border-color:var(--border-medium)}.search-section{margin-bottom:24px}.search-section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;margin-bottom:12px;display:flex;align-items:center;gap:8px;color:var(--text-secondary)}.search-section-title.stations{color:var(--accent)}.search-section-title.devices,.search-section-title.expected{color:var(--status-ok)}.search-section-title.detected{color:var(--accent)}.search-result-item{background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:var(--radius-md);padding:16px;margin-bottom:8px;transition:all .15s ease}.search-result-item.clickable{cursor:pointer}.search-result-item:hover{border-color:var(--border-medium);box-shadow:var(--shadow-sm)}.search-result-item:last-child{margin-bottom:0}.search-result-main{display:flex;align-items:center;gap:10px;margin-bottom:8px}.search-result-main h4{font-size:15px;font-weight:600;color:var(--text-primary);margin:0}.search-result-terminal{font-size:12px;color:var(--text-muted);font-family:SF Mono,Fira Code,monospace;background:var(--bg-tertiary);padding:2px 8px;border-radius:4px}.search-result-type{font-size:11px;color:var(--text-muted);background:var(--bg-tertiary);padding:2px 8px;border-radius:4px}.device-icon{font-size:16px}.status-indicator{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-indicator.ok{background:var(--status-ok)}.status-indicator.warning{background:var(--status-warning)}.status-indicator.error{background:var(--status-error)}.status-indicator.unknown{background:var(--status-unknown)}.search-result-location{font-size:12px;color:var(--text-muted);margin:0}.search-result-serial{font-size:13px;color:var(--text-secondary);font-family:SF Mono,Fira Code,monospace;margin:4px 0}.search-result-message{font-size:12px;color:var(--status-warning);margin:4px 0 0}.search-result-item h4{font-size:14px;font-weight:600;margin-bottom:8px;color:var(--text-primary)}.search-result-item p{font-size:13px;color:var(--text-secondary);line-height:1.6}.search-result-item p strong{color:var(--text-primary);font-weight:500}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media (max-width: 900px){.sidebar{width:240px}.device-comparison{grid-template-columns:1fr}.content-area{padding:16px}}@media (max-width: 600px){.sidebar{width:100%;position:absolute;z-index:100;height:calc(100vh - 56px);transform:translate(-100%);transition:transform .3s ease}.sidebar.open{transform:translate(0)}}
