:root{--surface: #0a0c0a;--surface-elevated: #151916;--surface-hover: #1a1f1a;--surface-active: #1f241f;--gold: #d4a03a;--gold-dark: #b8862e;--gold-light: #e4b04a;--olive: #2d3e28;--olive-hover: #3d4e38;--text-primary: #e8ede8;--text-secondary: #8b9b8b;--text-muted: #5b6b5b;--faint: #4b5b4b;--faintest: #3b4b3b;--sage: #8ba888;--danger: #c23a3a;--danger-hover: #a32a2a;--info: #5b9bd5;--silver: #a8b4a8;--aff-friend: #80e0ff;--aff-hostile: #ff5b5b;--aff-neutral: #7fe07f;--aff-unknown: #fff176;--radius-sm: 4px;--radius-md: 12px;--radius-lg: 16px;--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", "Roboto Mono", monospace;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-snap: cubic-bezier(.3, 0, 0, 1);--dur-fast: .14s;--dur-base: .22s;--tabular: tabular-nums}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--surface);color:var(--text-primary);font-family:var(--font);font-size:14px;line-height:1.45;overflow:hidden}#app{height:100vh;display:flex;flex-direction:column}.topp{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--faint);background:var(--surface-elevated);flex:0 0 auto}.topp-merke{font-weight:600;letter-spacing:.08em;color:var(--gold)}.topp-post{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topp-hoyre{margin-left:auto;display:flex;align-items:center;gap:10px}.topp-klokke,.nv-v,.vfelt-verdi,.kt-tall{font-family:JetBrains Mono,monospace;font-variant-numeric:tabular-nums}.flate{flex:1 1 auto;display:grid;grid-template-columns:260px minmax(0,1fr) 340px;grid-template-rows:minmax(0,1fr) 200px;grid-template-areas:"sensorer kart kontakter" "sensorer bunn kontakter";gap:8px;padding:8px;min-height:0}.omr-sensorer{grid-area:sensorer;min-height:0}.omr-kart{grid-area:kart;min-height:0}.omr-bunn{grid-area:bunn;min-height:0}.omr-kontakter{grid-area:kontakter;min-height:0;display:flex;flex-direction:column;gap:8px}@media(max-width:1200px){.flate{grid-template-columns:220px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 280px;grid-template-areas:"sensorer kart" "sensorer kontakter"}.omr-bunn{display:none}}.panel{background:var(--surface-elevated);border:1px solid var(--faint);border-radius:var(--radius-lg);display:flex;flex-direction:column;min-height:0;overflow:hidden}.panel-hode{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--faintest);cursor:grab;user-select:none;flex:0 0 auto}.panel-grep{opacity:.45;flex:0 0 auto}.panel-tittel{font-weight:600;font-size:13px}.panel-under{color:var(--text-secondary);font-size:12px;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-kropp{flex:1 1 auto;min-height:0;overflow:auto;padding:10px}.panel-losnet{position:fixed;z-index:40;width:380px;max-height:70vh;box-shadow:0 12px 40px #0000008c}.sensorliste{display:flex;flex-direction:column;gap:6px}.sensorrad{display:grid;grid-template-columns:20px minmax(0,1fr);gap:8px;padding:8px;border:1px solid var(--faintest);border-radius:var(--radius-sm);background:var(--surface)}.sensorrad-navn{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensorrad-alder{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-secondary)}.sensorrad-grunn{font-size:12px;color:var(--text-secondary);margin-top:2px}.sensorrad-frisk{border-left:3px solid var(--sage)}.sensorrad-treg{border-left:3px solid var(--gold)}.sensorrad-stille,.sensorrad-borte{border-left:3px solid var(--danger)}.sensorrad-av{border-left:3px solid var(--faint);opacity:.65}.kontaktliste{display:flex;flex-direction:column;gap:4px}.kt{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;align-items:baseline;padding:8px;border:1px solid var(--faintest);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;text-align:left;color:inherit;font:inherit;width:100%}.kt:hover{background:var(--surface-hover)}.kt[aria-pressed=true]{background:var(--surface-active);border-color:var(--gold)}.kt-navn{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kt-grunn{grid-column:1 / -1;font-size:12px;color:var(--text-secondary)}.kt-akutt{border-left:3px solid var(--danger)}.kt-folg{border-left:3px solid var(--gold)}.kt-registrert{border-left:3px solid var(--faint)}.kartflate{width:100%;height:100%;min-height:0;background:var(--surface)}.tilstand{display:flex;flex-direction:column;gap:6px;padding:14px;color:var(--text-secondary)}.tilstand-tittel{margin:0;font-size:14px;color:var(--text-primary)}.tilstand-brod,.tilstand-brød{margin:0;font-size:13px}.tilstand-topp{display:flex;align-items:center;gap:8px}.tilstand-feil{border-left:3px solid var(--danger)}.skjelett-linje{height:10px;border-radius:var(--radius-sm);background:var(--surface-hover);margin-top:6px}.demobanner{display:flex;align-items:center;gap:10px;padding:6px 12px;background:var(--olive);color:var(--text-primary);font-size:13px;flex:0 0 auto}.kunngjøring{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.nv{display:flex;justify-content:space-between;gap:10px;padding:3px 0;border-bottom:1px solid var(--faintest)}.nv-k{color:var(--text-secondary);font-size:12px}.vfelt{display:flex;flex-direction:column;gap:2px;padding:4px 0}.vfelt-etikett{color:var(--text-secondary);font-size:12px}.merke{display:inline-block;padding:1px 6px;border-radius:var(--radius-sm);border:1px solid var(--faint);font-size:12px;color:var(--text-secondary)}.merke-akutt{border-color:var(--danger);color:var(--danger)}.merke-demo{border-color:var(--gold);color:var(--gold)}.status{display:inline-flex;align-items:center;gap:6px;font-size:12px}.status-prikk{width:8px;height:8px;border-radius:50%;background:var(--faint);flex:0 0 auto}.status-frisk .status-prikk{background:var(--sage)}.status-treg .status-prikk{background:var(--gold)}.status-stille .status-prikk,.status-borte .status-prikk{background:var(--danger)}.pk{font:inherit;display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--radius-sm);border:1px solid var(--faint);background:transparent;color:var(--text-primary);cursor:pointer}.pk:hover{background:var(--surface-hover)}.pk-primær,.pk-primaer{background:var(--olive);border-color:var(--olive)}.pk-fare{border-color:var(--danger);color:var(--danger)}.pk:disabled{opacity:.5;cursor:not-allowed}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
