:root{--bg-start: #edf6f5;--bg-end: #f8fafb;--panel: #ffffff;--text: #12263a;--muted: #4f6477;--border: #d7e2ec;--accent: #0f766e;--danger: #b91c1c;--online: #15803d;--offline: #7c2d12;--shadow-sm: 0 1px 3px rgba(18, 38, 58, .07), 0 1px 2px rgba(18, 38, 58, .04);--shadow-md: 0 4px 6px -1px rgba(18, 38, 58, .08), 0 2px 4px -1px rgba(18, 38, 58, .05);--radius-card: 16px}*{box-sizing:border-box}body{margin:0;font-family:IBM Plex Sans,Segoe UI,sans-serif;color:var(--text);background:radial-gradient(circle at top left,var(--bg-start),var(--bg-end));min-height:100vh}.page{max-width:1240px;margin:0 auto;padding:24px}.top-bar{position:relative;display:flex;justify-content:center;align-items:center;margin-bottom:20px}.brand-row{display:flex;align-items:center;gap:12px}.app-logo{width:40px;height:40px;border-radius:10px;border:1px solid var(--border);background:#fff;box-shadow:var(--shadow-sm);flex-shrink:0}.brand-name{font-weight:700;font-size:1rem;color:var(--text);letter-spacing:-.01em}.menu-wrap{position:absolute;right:0;top:0}.menu-trigger{border:1px solid var(--border);background:#f1f6f8;border-radius:12px;width:40px;height:40px;display:grid;place-content:center;gap:4px;cursor:pointer;box-shadow:inset 0 1px 2px #12263a29;transition:background .12s}.menu-trigger:hover{background:#e8f2f6}.menu-trigger span{width:4px;height:4px;border-radius:999px;background:var(--text)}.menu-popover{position:absolute;top:46px;right:0;width:248px;display:grid;gap:8px;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:12px;z-index:20;box-shadow:var(--shadow-md)}.eyebrow{margin:0;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}h1{margin:0;font-size:clamp(1.6rem,2.3vw,2.4rem)}.subtitle{margin:8px 0 0;color:var(--muted)}.pwa-state{color:var(--muted);font-size:.84rem}.pwa-state.error{color:var(--danger)}.status-badge{display:flex;align-items:center;gap:6px;width:fit-content;padding:5px 12px;border-radius:999px;font-weight:700;font-size:.8rem;letter-spacing:.02em;border:1px solid transparent}.status-badge.online{color:var(--online);background:#dcfce7;border-color:#86efac}.status-badge.offline{color:var(--offline);background:#ffedd5;border-color:#fdba74}.status-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}.status-badge.online .status-dot{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.filters-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:10px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.filter-group{display:flex;align-items:center;gap:6px}.filter-group.compact{background:#f8fbfc;border:1px solid var(--border);border-radius:10px;padding:5px 8px}.filter-tag{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;white-space:nowrap}.filter-select{border:none;background:transparent;padding:1px 4px;font-size:.84rem;font-family:inherit;color:var(--text);cursor:pointer;min-width:0;max-width:180px}.pill-group{display:flex;gap:4px}.pill{border:1px solid var(--border);background:#fff;color:var(--text);padding:5px 12px;border-radius:999px;cursor:pointer;font-size:.84rem;font-family:inherit;line-height:1.4;transition:background .12s,color .12s,border-color .12s}.pill:hover:not(:disabled){background:#f0f7ff;border-color:#b8d4e8}.pill.active{border-color:var(--accent);background:#e6f4f1;color:var(--accent);font-weight:600}.pill.active:hover:not(:disabled){background:#d0ece7}.pill:disabled{cursor:not-allowed;opacity:.55}select{border:1px solid var(--border);border-radius:10px;padding:8px 10px;min-width:160px;font-family:inherit;color:var(--text);background:#fff}input[type=datetime-local]{border:1px solid var(--border);border-radius:8px;padding:5px 8px;font-size:.84rem;font-family:inherit;color:var(--text)}.custom-dates{display:flex;gap:8px;flex-wrap:wrap}.stats-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}.stat-chip{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow-sm);transition:box-shadow .15s}.stat-chip:hover{box-shadow:var(--shadow-md)}.stat-label{margin:0;color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.stat-value{margin:6px 0 0;font-size:1.15rem;font-weight:700;color:var(--text);letter-spacing:-.02em}.charts-grid{display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:16px}.charts-pair{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.chart-card,.table-card,.events-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-card);padding:16px;box-shadow:var(--shadow-sm)}.table-card{margin-bottom:12px}.chart-card h2,.table-card h2,.events-card h2{margin:0 0 12px;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.charts-expand-btn{border:1px dashed var(--border);background:transparent;color:var(--muted);border-radius:10px;padding:10px 16px;width:100%;cursor:pointer;font-size:.82rem;font-family:inherit;letter-spacing:.04em;transition:background .12s,color .12s,border-color .12s}.charts-expand-btn:hover{background:var(--panel);color:var(--text);border-color:#a0b8cc}.events-card{margin-bottom:12px}.events-card ul{margin:0;padding-left:18px;display:grid;gap:6px}.event-item.warning{color:#b45309}.event-item.critical{color:#b91c1c}.fw-status{display:grid;grid-template-columns:auto 1fr;gap:5px 20px;margin:0 0 20px;padding:12px 14px;background:#f8fbfc;border:1px solid var(--border);border-radius:10px;font-size:.875rem}.fw-status dt{color:var(--muted);font-weight:600;white-space:nowrap;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;padding-top:1px}.fw-status dd{margin:0;color:var(--text)}.meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:12px}.meta-grid label{display:flex;flex-direction:column;gap:5px;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.meta-field{display:flex;flex-direction:column;gap:6px;max-width:280px;color:var(--muted);font-size:.9rem}.firmware-toggle{flex-direction:row!important;align-items:center;gap:8px!important;text-transform:none!important;letter-spacing:0!important;font-size:.875rem!important;font-weight:500!important;margin-top:4px}.meta-grid input,.meta-grid textarea{border:1px solid var(--border);border-radius:8px;padding:7px 10px;color:var(--text);font-family:inherit;font-size:.9rem;transition:border-color .12s}.meta-grid input:focus,.meta-grid textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0f766e1a}.meta-notes{grid-column:1 / -1}.meta-actions{display:flex;align-items:center;gap:10px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;border-bottom:2px solid var(--border);padding:8px 10px;font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700;white-space:nowrap}td{text-align:left;border-bottom:1px solid var(--border);padding:9px 10px;font-size:.875rem;white-space:nowrap;color:var(--text)}tbody tr:hover td{background:#f6fafb}tbody tr:last-child td{border-bottom:none}.message{margin:4px 0 12px;font-size:.9rem}.message.error{color:var(--danger)}.auth-page{min-height:100dvh;display:grid;place-items:center}.auth-card{width:min(460px,100%)}.auth-form{display:grid;gap:14px;margin-top:20px}.auth-form label{display:grid;gap:6px;color:var(--muted);font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.auth-form input{border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-family:inherit;font-size:.95rem;color:var(--text);transition:border-color .12s;text-transform:none;letter-spacing:normal}.auth-form input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0f766e1a}.alert-banner{display:grid;gap:6px;margin-bottom:14px}.alert-item{display:flex;align-items:center;gap:10px;background:#fffbeb;border:1px solid #fcd34d;border-radius:12px;padding:10px 14px;font-size:.875rem;color:#92400e}.alert-icon{font-size:1rem;flex-shrink:0}.alert-message{flex:1}.alert-settings{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:10px 14px;margin-bottom:14px;box-shadow:var(--shadow-sm);display:flex;flex-wrap:wrap;align-items:center;gap:8px}.alert-settings-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-right:4px}.threshold-field{display:flex;align-items:center;gap:6px;background:#f8fbfc;border:1px solid var(--border);border-radius:10px;padding:5px 8px}.threshold-field label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);white-space:nowrap}.threshold-input{width:64px;border:none;background:transparent;padding:0;font-size:.875rem;font-family:inherit;color:var(--text);text-align:right}.threshold-input:focus{outline:none}.threshold-unit{font-size:.75rem;color:var(--muted)}.inspection-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border)}.inspection-form input[type=text],.inspection-form input[type=datetime-local]{border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:.875rem;font-family:inherit;color:var(--text);transition:border-color .12s}.inspection-form input[type=text]:focus,.inspection-form input[type=datetime-local]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0f766e1a}.inspection-notes-input{flex:1;min-width:140px}.inspection-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.inspection-item{display:flex;align-items:flex-start;gap:12px;padding:10px 12px;background:#f8fbfc;border:1px solid var(--border);border-radius:10px}.inspection-item--editing{background:#f0f9ff;border-color:#bae6fd}.inspection-meta{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.inspection-time{font-size:.75rem;color:var(--muted);font-weight:600}.inspection-title{font-size:.9rem;font-weight:600;color:var(--text)}.inspection-notes{font-size:.82rem;color:var(--muted);white-space:pre-wrap}.inspection-actions{display:flex;gap:6px;flex-shrink:0}.inspection-edit-form{flex:1;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.inspection-edit-form input[type=text],.inspection-edit-form input[type=datetime-local]{border:1px solid var(--border);border-radius:8px;padding:5px 8px;font-size:.875rem;font-family:inherit;color:var(--text)}.inspection-edit-form input:focus{outline:none;border-color:var(--accent)}.inspection-edit-actions{display:flex;gap:6px}.table-footer{display:flex;align-items:center;justify-content:space-between;margin-top:12px;gap:12px;flex-wrap:wrap}.pagination{display:flex;align-items:center;gap:8px}.pagination-info{font-size:.8rem;color:var(--muted);white-space:nowrap}.table-toggle{font-size:.8rem;color:var(--muted);display:flex;align-items:center;gap:6px;cursor:pointer}.row-hidden td{opacity:.45;text-decoration:line-through}@media(max-width:980px){.stats-row{grid-template-columns:repeat(2,minmax(0,1fr))}.charts-pair{grid-template-columns:1fr}}@media(max-width:640px){.page{padding:14px}.filters-bar{gap:6px;padding:8px}.filter-group.compact{width:100%;justify-content:space-between}.custom-dates{width:100%;flex-direction:column}.stats-row{grid-template-columns:repeat(2,minmax(0,1fr))}.meta-grid{grid-template-columns:1fr}}
