: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-emcon{display:inline-flex;align-items:center}.topp-hoyre{margin-left:auto;display:flex;align-items:center;gap:10px;flex:0 0 auto}.topp-klokke,.nv-v,.vfelt-verdi,.sek-klokke,.sek-utlklokke,.bil-klokke,.mel-teller,.dek-hullsted,.sek-retningstall,.dek-storstetall{font-family:JetBrains Mono,monospace;font-variant-numeric:tabular-nums}.sendestripe{display:flex;align-items:center;gap:10px;padding:6px 12px;background:var(--olive);border-bottom:1px solid var(--gold);color:var(--text-primary);font-size:13px;flex:0 0 auto}.sendestripe-tekst{font-weight:600}.emcon-forklaring{flex:0 0 auto;padding:5px 12px;border-bottom:1px solid var(--faintest);background:var(--surface-elevated);color:var(--text-secondary);font-size:12px;line-height:1.45}.emcon-forklaring-pa{border-bottom-color:var(--gold);color:var(--text-primary)}.emcon-forklaring-tekst{display:block;max-width:120ch}.ovelsebanner{display:flex;align-items:center;gap:10px;padding:6px 12px;background:color-mix(in srgb,var(--danger) 22%,var(--surface-elevated));border-bottom:2px solid var(--danger);color:var(--text-primary);font-size:13px;flex:0 0 auto}.ovelsebanner-tekst{display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.3px;color:var(--danger)}body.ovelse-aktiv:after{content:"";position:fixed;inset:0;border:3px solid var(--danger);pointer-events:none;z-index:90}.emcon-knapp,.ko-knapp{font-size:12px;padding:3px 8px}.flate{flex:1 1 auto;display:grid;grid-template-columns:260px minmax(0,1fr) 380px;grid-template-rows:minmax(0,1fr) minmax(0,260px);grid-template-areas:"sensorer sekvens hoyre" "sensorer dekning hoyre";gap:8px;padding:8px;min-height:0}.omr-sensorer{grid-area:sensorer;min-height:0}.omr-sekvens{grid-area:sekvens;min-height:0}.omr-dekning{grid-area:dekning;min-height:0}.omr-hoyre{grid-area:hoyre;min-height:0;display:flex;flex-direction:column;gap:8px}.omr-hoyre>.panel:first-child{flex:1 1 55%}.omr-hoyre>.panel:last-child{flex:1 1 45%}@media(max-width:1400px){.flate{grid-template-columns:232px minmax(0,1fr) 340px}}@media(max-width:1280px){.flate{grid-template-columns:216px minmax(0,1fr);grid-template-rows:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr);grid-template-areas:"sensorer sekvens" "sensorer hoyre" "sensorer dekning"}.omr-hoyre{flex-direction:row}}@media(max-width:1000px){.flate{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-template-areas:"sekvens" "sensorer" "hoyre" "dekning";grid-auto-rows:minmax(260px,auto);overflow:auto}.omr-hoyre{flex-direction:column}}.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;white-space:nowrap}.panel-under{color:var(--text-secondary);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-rom{margin-left:auto}.panel-egne{display:flex;align-items:center;gap:6px;flex:0 0 auto}.panel-kropp{flex:1 1 auto;min-height:0;overflow:auto;padding:10px}.panel.flytende{position:fixed;z-index:40;max-height:80vh;box-shadow:0 12px 40px #0000008c}body.standalone-panel .flate{display:block;padding:8px}body.standalone-panel .panel{height:calc(100vh - 60px)}.sensorliste{display:flex;flex-direction:column;gap:6px}.sensorrad{display:grid;grid-template-columns:14px 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;display:flex;align-items:center;gap:6px;min-width:0}.sensorrad-navn>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensorrad-alder{display:block;font-family:JetBrains Mono,monospace;font-variant-numeric:tabular-nums;font-size:12px;color:var(--text-secondary)}.sensorrad-grunn{font-size:12px;color:var(--text-secondary);margin-top:2px}.sensorrad-oppsum{display:block;font-size:12px;font-weight:600}.sensorrad-detaljer{font-size:12px;color:var(--text-secondary)}.sensorrad-detaljer>summary{cursor:pointer;padding:2px 0;font-size:11px;color:var(--text-secondary)}.sensorrad-detaljekropp{display:flex;flex-direction:column;gap:2px;padding-top:2px}.sensorrad-prikk{width:8px;height:8px;margin-top:5px;border-radius:50%;background:var(--faint)}.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}.sensorrad-frisk .sensorrad-prikk{background:var(--sage)}.sensorrad-treg .sensorrad-prikk{background:var(--gold)}.sensorrad-stille .sensorrad-prikk,.sensorrad-borte .sensorrad-prikk{background:var(--danger)}.sek-liste{display:flex;flex-direction:column;gap:10px}.sek-kort{border:1px solid var(--faintest);border-radius:var(--radius-md);background:var(--surface);padding:10px;display:flex;flex-direction:column;gap:8px}.sek-kort-akutt{border-left:3px solid var(--danger)}.sek-kort-folg{border-left:3px solid var(--gold)}.sek-kort-logg{border-left:3px solid var(--faint)}.sek-kort-avvik{border-left:3px solid var(--gold)}.sek-hode{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sek-tittel{margin:0;font-size:13px;font-weight:600}.sek-bolkhode{margin:0;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.sek-rom,.dek-rom,.bil-rom,.mel-rom{margin-left:auto}.sek-klokke{font-size:12px;color:var(--text-secondary)}.sek-sammendrag{margin:0;font-size:13px}.sek-oppsum{margin:0;font-size:13px;font-weight:600}.sek-endring{margin:0;font-size:12px;color:var(--text-primary);border-left:2px solid var(--info);padding-left:8px}.sek-detaljer{font-size:12px}.sek-detaljer>summary{cursor:pointer;padding:4px 0;color:var(--text-secondary)}.sek-detaljekropp{display:flex;flex-direction:column;gap:8px;padding-top:4px}.sek-nodegjentak{font-size:11px;color:var(--text-secondary)}.sek-brød{margin:0;font-size:12px;color:var(--text-secondary)}.sek-tallrad,.dek-tallrad,.bil-tallrad,.mel-tallrad{display:flex;flex-wrap:wrap;gap:4px 16px}.sek-hastegrunn{display:flex;flex-wrap:wrap;gap:4px 10px}.sek-hastebidrag{font-size:11px;color:var(--text-secondary)}.sek-skille{margin:0;font-size:12px;color:var(--text-secondary);border-left:2px solid var(--faint);padding-left:8px}.sek-bolk{display:flex;flex-direction:column;gap:6px;padding-top:6px;border-top:1px solid var(--faintest)}.sek-bolk-avslag{border-left:3px solid var(--gold);padding-left:8px}.sek-stripe{display:flex;align-items:center;gap:6px;overflow-x:auto;padding-bottom:4px}.sek-node{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--faint);border-radius:var(--radius-sm);background:var(--surface-elevated);flex:0 0 auto}.sek-nodenavn{font-size:11px;white-space:nowrap}.sek-kobling{display:inline-flex;align-items:center;color:var(--sage);flex:0 0 auto}.sek-kobling-usikker{color:var(--gold)}.sek-bein{display:flex;flex-direction:column;gap:4px;padding:6px 8px;border:1px solid var(--faintest);border-radius:var(--radius-sm);background:var(--surface-elevated)}.sek-bein-usikker{border-left:3px solid var(--gold)}.sek-bein-umulig{border-left:3px solid var(--danger)}.sek-beinhode{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sek-beinnavn{font-weight:600;font-size:12px}.sek-beintall{display:flex;flex-wrap:wrap;gap:2px 14px}.sek-beinnote,.sek-kanikke{margin:0;font-size:11px;color:var(--text-secondary)}.sek-advarsel,.dek-advarsel,.mel-advarsel{margin:0;font-size:12px;color:var(--text-primary);border-left:2px solid var(--danger);padding-left:8px}.sek-netto{padding:8px;border-radius:var(--radius-sm);background:var(--surface-elevated)}.sek-netto-bestemt .sek-retning{color:var(--sage)}.sek-netto-usikker-rekkefolge .sek-retning,.sek-netto-ikke-bestemt .sek-retning{color:var(--gold)}.sek-retning{display:flex;align-items:center;gap:8px}.sek-retningstall{font-size:16px;font-weight:600}.sek-klasse{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.sek-utlklasse{display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--faintest);padding-top:4px}.sek-klassenavn{font-weight:600;font-size:13px}.sek-klassegrunnlag{font-size:11px;color:var(--text-secondary)}.sek-utl{display:flex;flex-direction:column;gap:4px;width:100%;text-align:left;font:inherit;color:inherit;padding:8px;border:1px solid var(--faintest);border-radius:var(--radius-sm);background:var(--surface-elevated);cursor:pointer;transition:background var(--dur-fast) var(--ease-out)}.sek-utl:hover{background:var(--surface-hover)}.sek-utl:active{background:var(--surface-active)}.sek-utl-valgt{border-color:var(--gold);background:var(--surface-active)}.sek-utlhode{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.sek-utlnavn{font-weight:600;font-size:12px}.sek-utlklokke{font-size:11px;color:var(--text-secondary)}.sek-maaling{margin:0;font-size:12px}.sek-utledning,.dek-utledning{font-size:12px;color:var(--text-secondary)}.sek-utledning>summary,.dek-utledning>summary{cursor:pointer;padding:4px 0;color:var(--text-secondary)}.sek-utledningslinjer,.dek-utledningslinjer{display:flex;flex-direction:column;gap:2px;padding:6px 8px;border-left:2px solid var(--faint)}.sek-utledningslinje,.dek-utledningslinje{margin:0;font-family:JetBrains Mono,monospace;font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.sek-handlinger{gap:8px}.sek-knapperad,.bil-knapperad,.mel-knapperad,.dek-rutevalg{display:flex;flex-wrap:wrap;gap:6px}.sek-flagg{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.sek-flaggetikett,.bil-knappetikett,.mel-etikett{font-size:12px;color:var(--text-secondary)}.dek{display:flex;flex-direction:column;gap:10px}.dek-bolk{display:flex;flex-direction:column;gap:6px;padding-top:6px;border-top:1px solid var(--faintest)}.dek-bolkhode,.dek-underhode,.bil-bolkhode,.mel-bolkhode{margin:0;font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.dek-brød,.dek-note,.dek-utelattgrunn,.bil-brød,.bil-note,.bil-klassifisering,.mel-brød,.mel-note,.mel-grunnlag{margin:0;font-size:12px;color:var(--text-secondary)}.dek-svar{padding:8px;border-radius:var(--radius-sm);background:var(--surface-elevated)}.dek-storste{display:flex;align-items:center;gap:8px;color:var(--gold)}.dek-storstetall{font-size:16px;font-weight:600}.dek-hull,.dek-sperre,.dek-sensorrad{display:flex;flex-direction:column;gap:3px;padding:6px 8px;border:1px solid var(--faintest);border-radius:var(--radius-sm);background:var(--surface-elevated)}.dek-hull{border-left:3px solid var(--danger)}.dek-sperre{border-left:3px solid var(--sage)}.dek-sensorrad-ute{border-left:3px solid var(--gold);opacity:.85}.dek-hullhode,.bil-hullhode{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.dek-hullengde,.dek-sensornavn,.bil-navn{font-weight:600;font-size:12px}.dek-hullsted,.bil-klokke{font-size:11px;color:var(--text-secondary)}.dek-utelatt{display:flex;flex-direction:column;gap:6px}.dek-feil{border-left:3px solid var(--danger);padding-left:8px}.bil{display:flex;flex-direction:column;gap:10px}.bil-topp,.bil-bolk{display:flex;flex-direction:column;gap:6px}.bil-bolk{padding-top:6px;border-top:1px solid var(--faintest)}.bil-mangler{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--info);border-radius:var(--radius-sm);background:var(--surface-elevated)}.bil-hvorfor{font-size:12px;color:var(--text-secondary)}.bil-hvorfor>summary{cursor:pointer;padding:4px 0}.bil-rad{display:flex;flex-direction:column;gap:4px;padding:8px;border:1px solid var(--faintest);border-radius:var(--radius-sm);background:var(--surface-elevated)}.bil-rad-ikke-sett{border-left:3px solid var(--gold)}.bil-rad-lokal{border-left:3px solid var(--sage)}.bil-rad-kvittert{border-left:3px solid var(--faint);opacity:.85}.bil-rute{display:flex;align-items:center;justify-content:center;gap:8px;min-height:120px;border:1px dashed var(--faint);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-secondary);overflow:hidden}.bil-rute-feil{border-color:var(--danger);border-style:solid}.bil-bilde{display:block;max-width:100%;max-height:320px;height:auto}.bil-rutetekst{font-size:12px;padding:8px}.bil-knapper{display:flex;flex-direction:column;gap:4px;padding-top:4px;border-top:1px solid var(--faintest)}.bil-sperre,.mel-sperre{margin:0;font-size:12px;color:var(--text-secondary);border-left:2px solid var(--gold);padding-left:8px}.mel{display:flex;flex-direction:column;gap:10px}.mel-topp,.mel-bolk{display:flex;flex-direction:column;gap:6px}.mel-bolk{padding-top:6px;border-top:1px solid var(--faintest)}.mel-hode{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.mel-tittel{margin:0;font-size:13px;font-weight:600}.mel-felt{display:flex;flex-direction:column;gap:3px}.mel-inn{font:inherit;color:var(--text-primary);background:var(--surface);border:1px solid var(--faint);border-radius:var(--radius-sm);padding:6px 8px;width:100%;resize:vertical}.mel-inn:focus-visible{border-color:var(--gold)}.mel-teller{font-size:11px;color:var(--text-secondary);align-self:flex-end}.mel-klartekst{margin:0;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.6;white-space:pre-wrap;word-break:break-word;padding:8px;border:1px solid var(--faint);border-radius:var(--radius-sm);background:var(--surface);overflow-x:auto}.mel-send{padding-top:8px}.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-neste{margin:0;font-size:13px;color:var(--text-primary)}.tilstand-detalj{margin:0;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-secondary)}.tilstand-topp{display:flex;align-items:center;gap:8px}.tilstand-feil{border-left:3px solid var(--danger)}.tilstand-mangler{border-left:3px solid var(--info)}.skjelett{display:flex;flex-direction:column}.skjelett-linje{height:10px;border-radius:var(--radius-sm);background:var(--surface-hover);margin-top:6px}.kunngjøring{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.kvittering{position:fixed;bottom:16px;right:16px;z-index:60;display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--faint);border-radius:var(--radius-sm);background:var(--surface-elevated);font-size:13px;transition:opacity var(--dur-base) var(--ease-out)}.kvittering-feil{border-color:var(--danger)}.kvittering.ut{opacity:0}.varsellinje{position:fixed;bottom:16px;left:16px;z-index:60;padding:8px 12px;border:1px solid var(--danger);border-radius:var(--radius-sm);background:var(--surface-elevated);font-size:13px}.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;flex:0 0 auto}.nv-v{font-size:12px;text-align:right;word-break:break-word}.nv-advarsel .nv-v{color:var(--gold)}.nv-ok .nv-v{color:var(--sage)}.nv-grid .nv-v{font-size:13px;letter-spacing:.04em;color:var(--text-primary)}.vfelt{display:flex;flex-direction:column;gap:2px;padding:4px 0}.vfelt-etikett{color:var(--text-secondary);font-size:11px}.vfelt-verdi{font-size:12px}.vfelt-antall .vfelt-verdi,.vfelt-kø .vfelt-verdi{color:var(--gold)}.vfelt-sender .vfelt-verdi{color:var(--danger)}.vfelt-stille .vfelt-verdi{color:var(--text-secondary)}.merke{display:inline-block;padding:1px 6px;border-radius:var(--radius-sm);border:1px solid var(--faint);font-size:11px;color:var(--text-secondary);white-space:nowrap}.merke-haste-folg,.merke-usikker,.merke-bilde-ikke-sett,.merke-sikker-middels{border-color:var(--gold);color:var(--gold)}.merke-haste-akutt,.merke-umulig{border-color:var(--danger);color:var(--danger)}.merke-ovelse{border-color:var(--danger);color:var(--danger);font-weight:700}.merke-haste-logg,.merke-bilde-kvittert{border-color:var(--faint);color:var(--text-secondary)}.merke-flagg-relevant,.merke-bilde-lokal,.merke-sikker-høy{border-color:var(--sage);color:var(--sage)}.merke-flagg-avskrevet-dyr,.merke-flagg-avskrevet-egen,.merke-flagg-ingen,.merke-sikker-lav,.merke-sikker-ukjent{border-color:var(--faintest);color:var(--text-secondary)}.merke-meldingstype{border-color:var(--info);color:var(--info)}.merke-art-akustisk,.merke-art-seismisk,.merke-art-pir,.merke-art-kamera,.merke-art-brytertråd,.merke-art-magnetisk{border-color:var(--faintest);color:var(--text-secondary)}.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)}.status-sender .status-prikk{background:var(--gold)}.status-sender .status-tekst{color:var(--gold);font-weight:600}.bryter{display:inline-flex;align-items:center;gap:6px;font-size:12px;cursor:pointer}.bryter-tekst{color:var(--text-primary)}.ikonlinje{display:flex;align-items:center;gap:8px;font-size:13px}.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;transition:background var(--dur-fast) var(--ease-out)}.pk:hover{background:var(--surface-hover)}.pk:active{background:var(--surface-active)}.pk-primær,.pk-primaer{background:var(--olive);border-color:var(--olive)}.pk-primær:hover,.pk-primaer:hover{background:var(--olive-hover)}.pk-fare{border-color:var(--danger);color:var(--danger)}.pk-lenke{border-color:transparent;padding:4px 6px;color:var(--text-secondary)}.pk:disabled{opacity:.5;cursor:not-allowed}.ikon{flex:0 0 auto}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}body.standalone-panel{overflow:hidden}.panel-alene{height:100vh;border:0;border-radius:0}
