:root{--bg: #f5f7f9;--surface: #ffffff;--border: #e2e8f0;--text: #1f2937;--text-muted: #6b7280;--primary: #2563eb;--danger: #d64545;--ok: #16a34a;--warn: #d97706;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}.page{max-width:1080px;margin:0 auto;padding:24px 16px 64px}.page-loading{padding:48px;text-align:center;color:var(--text-muted)}h1{margin:0 0 4px}.navbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px 16px;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border)}.navbar a{color:var(--text-muted);text-decoration:none;font-weight:500}.navbar a.active{color:var(--primary)}.navbar-brand{font-weight:700;margin-right:8px}.navbar-spacer{flex:1}.navbar-user{color:var(--text-muted);font-size:.9em}.centered-page{display:flex;justify-content:center;padding-top:15vh}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:24px;max-width:420px;width:100%}.card label{display:block;margin:12px 0 4px;font-size:.9em;color:var(--text-muted)}.card input,select{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:1em}button{margin-top:16px;padding:8px 16px;border:none;border-radius:6px;background:var(--primary);color:#fff;font-weight:600;cursor:pointer}button:disabled{opacity:.6;cursor:default}.button-danger{background:var(--danger)}.error-text{color:var(--danger)}.empty-state{color:var(--text-muted)}.device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.device-card{display:block;text-decoration:none;color:inherit}.device-id-heading{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:700;letter-spacing:-.01em}h1.device-id-heading{font-size:2.1em}h3.device-id-heading{font-size:1.35em}.device-name{color:var(--text-muted);font-size:.85em;margin:0 0 8px}.device-metric{font-size:1.4em;font-weight:700;margin:8px 0 4px}.device-lastseen{color:var(--text-muted);font-size:.85em;margin:0}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.8em;font-weight:600;margin-right:6px;background:var(--border)}.badge-active{background:#dcfce7;color:var(--ok)}.badge-disabled{background:#fee2e2;color:var(--danger)}.badge-registered{background:#fef3c7;color:var(--warn)}.badge-due{background:#fee2e2;color:var(--danger)}.detail-summary{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:16px 0}.action-row{display:flex;gap:12px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.action-row button{margin-top:0}.section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:24px 0 12px}.section-header h1,.section-header h2{margin:0}.section-header button,.section-header .action-row{margin-top:0}.inline-label{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:.9em}.inline-label select{width:auto}.callout{background:#fff7ed;border:1px solid var(--warn);border-radius:8px;padding:16px;margin:16px 0}.callout code{display:block;background:var(--surface);padding:8px;border-radius:4px;margin:8px 0;font-size:1.1em;word-break:break-all}.hint{color:var(--text-muted);font-size:.9em}.hint button{margin-top:0;padding:2px 10px;font-size:.85em}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--border)}.table th{white-space:nowrap}.chart-legend-note{color:var(--text-muted);font-size:.85em}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}.dot-due{background:var(--danger)}.dot-ok{background:var(--primary)}@media(max-width:720px){.page{padding:16px 12px 48px}.navbar{padding:10px 12px;gap:8px 12px}.navbar-brand{margin-right:0}.navbar-spacer{flex-basis:100%;height:0}.navbar-user{max-width:60vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.card{padding:16px}button{padding:10px 14px}.table th,.table td{padding:8px 10px;font-size:.9em}}@media(max-width:420px){.device-grid{grid-template-columns:1fr}}
