.portal-shell {
    color-scheme: light;
    --portal-accent: #152C3E;
    --portal-success: #34D399;
    --portal-warning: #F2C94C;
    --portal-error: #EF4444;
}

.portal-shell *, .portal-shell *::before, .portal-shell *::after { box-sizing: border-box; }
.portal-main a { color: inherit; }
.portal-main button, .portal-main a { -webkit-tap-highlight-color: transparent; }
.portal-main h1, .portal-main h2, .portal-main h3, .portal-main p { margin-top: 0; }
.portal-main h1 { font-size: clamp(1.8rem, 3vw, 2.5rem); line-height: 1.1; letter-spacing: -.04em; margin-bottom: .55rem; }
.portal-main h2 { font-size: 1.05rem; line-height: 1.3; letter-spacing: -.015em; margin-bottom: .25rem; }
.portal-main h3 { font-size: .95rem; }

.brand-mark { display: inline-grid; place-items: center; width: 34px; height: 34px; color: currentColor; }
.brand-mark svg { width: 100%; height: 100%; }

.portal-appbar { border-bottom: 1px solid rgba(255,255,255,.1); }
.appbar-brand { display: flex; align-items: center; gap: 8px; color: #fff; text-decoration: none; font-weight: 700; font-size: 1.08rem; }
.appbar-brand .brand-mark { width: 29px; height: 29px; }
.appbar-brand small { margin-left: 2px; padding-left: 10px; border-left: 1px solid rgba(255,255,255,.24); opacity: .6; font-size: .66rem; text-transform: uppercase; letter-spacing: .12em; }
.portal-admin-return { margin-right: 8px; }
.portal-admin-return-mobile { display: none !important; }
.role-badge { padding: 4px 9px; border: 1px solid rgba(255,255,255,.18); border-radius: 999px; color: #fff; background: rgba(255,255,255,.08); font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.account-summary { display: flex; flex-direction: column; min-width: 230px; padding: 14px 16px; }
.account-summary span { margin-top: 3px; color: var(--mud-palette-text-secondary); font-size: .78rem; }

.portal-drawer { border-right: 1px solid var(--mud-palette-divider); }
.drawer-heading { padding: 28px 22px 8px; color: var(--mud-palette-text-secondary); font-size: .66rem; font-weight: 700; text-transform: uppercase; letter-spacing: .13em; }
.portal-nav .mud-nav-link { min-height: 46px; margin: 3px 10px; border-radius: 8px; }
.portal-nav .mud-nav-link.active { font-weight: 700; background: color-mix(in oklab, var(--mud-palette-primary) 10%, transparent); }
.drawer-session { position: absolute; inset: auto 18px 18px; display: flex; flex-direction: column; gap: 3px; padding-top: 16px; border-top: 1px solid var(--mud-palette-divider); color: var(--mud-palette-text-secondary); font-size: .72rem; }
.drawer-session strong { color: var(--mud-palette-text-primary); font-size: .78rem; }

.portal-main { width: min(100% - 48px, 1440px); min-height: calc(100vh - 64px); margin: 0 auto; padding: 46px 0 72px; animation: page-enter .32s ease-out both; }
@keyframes page-enter { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

.route-loading, .loading-block { display: flex; align-items: center; justify-content: center; gap: 14px; min-height: 220px; color: var(--mud-palette-text-secondary); }
.loading-block { min-height: 160px; }

.eyebrow { display: block; margin-bottom: 8px; color: var(--mud-palette-info); font-size: .69rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.page-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; margin-bottom: 32px; }
.heading-actions { display: flex; align-items: center; gap: 10px; }
.page-heading p, .section-heading p { margin: 0; color: var(--mud-palette-text-secondary); }
.page-heading p { max-width: 720px; }
.section-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.section-heading p { font-size: .82rem; }

.portal-panel { background: var(--mud-palette-surface); border: 1px solid var(--mud-palette-divider); border-radius: 12px; padding: 24px; box-shadow: 0 1px 2px color-mix(in oklab, var(--mud-palette-text-primary) 5%, transparent); }
.empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 320px; padding: 42px; text-align: center; }
.empty-state > .mud-icon-root { margin-bottom: 16px; color: var(--mud-palette-primary); font-size: 3rem; opacity: .74; }
.empty-state p { max-width: 520px; margin-bottom: 22px; color: var(--mud-palette-text-secondary); }
.empty-state.compact { min-height: 180px; padding: 24px; }
.empty-state.compact > .mud-icon-root { font-size: 2.2rem; }
.empty-state.compact p { margin-bottom: 0; }

.metric-strip { display: grid; grid-template-columns: repeat(4, 1fr); margin-bottom: 24px; background: var(--mud-palette-surface); border: 1px solid var(--mud-palette-divider); border-radius: 12px; }
.metric-item { min-width: 0; padding: 22px 24px; border-right: 1px solid var(--mud-palette-divider); }
.metric-item:last-child { border-right: 0; }
.metric-item span, .metric-item small { display: block; color: var(--mud-palette-text-secondary); }
.metric-item span { font-size: .73rem; font-weight: 600; }
.metric-item strong { display: block; margin: 7px 0 3px; font-size: 1.95rem; letter-spacing: -.04em; }
.metric-item small { overflow: hidden; font-size: .7rem; text-overflow: ellipsis; white-space: nowrap; }
.metric-item.metric-warning strong { color: var(--mud-palette-error); }
.metric-item .metric-word { font-size: 1rem; letter-spacing: -.01em; }

.dashboard-vessel-overview { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-block:1px solid var(--mud-palette-divider); }
.dashboard-vessel-overview-row { display:flex; min-width:0; align-items:center; justify-content:space-between; gap:14px; padding:14px 18px; border-right:1px solid var(--mud-palette-divider); }
.dashboard-vessel-identity { display:flex; min-width:0; flex-direction:column; }
.dashboard-vessel-overview-row:first-child { padding-left:0; }.dashboard-vessel-overview-row:last-child { border-right:0; }
.dashboard-vessel-identity { display:flex; min-width:0; flex-direction:column; }.dashboard-vessel-identity strong,.dashboard-vessel-identity small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.dashboard-vessel-identity strong { font-size:.83rem; }.dashboard-vessel-identity small { margin-top:3px; color:var(--mud-palette-text-secondary); font-size:.67rem; }
.message-feed { margin:0 -12px -10px; }
.message-feed-row { width:100%; display:grid; grid-template-columns:52px minmax(0,1fr) auto 20px; align-items:center; gap:12px; min-height:58px; padding:8px 12px; border:0; border-bottom:1px solid var(--mud-palette-divider); color:inherit; background:transparent; text-align:left; text-decoration:none; cursor:pointer; transition:background .15s ease; }
.message-feed-row:last-child { border-bottom:0; }
@media (hover:hover) { .message-feed-row:hover,.vessel-list-row:hover,.live-map-vessel-row:hover,.portal-table tbody tr:hover { background:color-mix(in oklab,var(--mud-palette-primary) 5%,var(--mud-palette-surface)); } }
.message-feed-row > span:nth-child(2) { display:flex; min-width:0; flex-direction:column; }.message-feed-row strong { overflow:hidden; font-size:.82rem; text-overflow:ellipsis; white-space:nowrap; }.message-feed-row small { color:var(--mud-palette-text-secondary); font-size:.68rem; }

.message-type { display: inline-grid; place-items: center; width: fit-content; min-width: 44px; height: 28px; padding: 0 8px; border-radius: 6px; background: color-mix(in oklab, var(--mud-palette-primary) 10%, var(--mud-palette-surface)); color: var(--mud-palette-primary); font-size: .7rem; font-weight: 800; letter-spacing: .04em; }
.message-type-with-label { display: flex; min-width: 150px; align-items: center; gap: 9px; }
.message-type-with-label small { max-width: 160px; color: var(--mud-palette-text-secondary); font-size: .68rem; line-height: 1.25; }
.status-text { font-size: .72rem; font-weight: 700; }
.status-text.accepted { color: color-mix(in oklab, var(--portal-success) 68%, var(--mud-palette-text-primary)); }
.status-text.attention { color: var(--mud-palette-error); }

.portal-map-shell { position: relative; width: 100%; min-height: 320px; overflow: hidden; border-radius: 9px; background: color-mix(in oklab, var(--mud-palette-primary) 7%, var(--mud-palette-background)); }
.portal-map { width: 100%; height: 100%; }
.map-empty-overlay { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 30px; background: color-mix(in oklab, var(--mud-palette-surface) 84%, transparent); text-align: center; pointer-events: none; }
.map-empty-overlay .mud-icon-root { font-size: 2.6rem; color: var(--mud-palette-text-secondary); }
.map-empty-overlay span { max-width: 340px; color: var(--mud-palette-text-secondary); font-size: .78rem; }
.access-layout { display: grid; grid-template-columns: minmax(300px, .7fr) minmax(0, 1.3fr); gap: 24px; }
.access-options { display: flex; flex-direction: column; margin: 22px 0; padding: 18px; border: 1px solid var(--mud-palette-divider); border-radius: 9px; }
.access-options legend { width: auto; margin: 0 0 5px; padding: 0 6px; color: var(--mud-palette-text-secondary); font-size: .73rem; font-weight: 600; }
.request-list { margin: 0 -8px; }
.request-row { display: grid; grid-template-columns: 42px minmax(0,1fr) auto; align-items: center; gap: 12px; padding: 12px 8px; border-bottom: 1px solid var(--mud-palette-divider); }
.request-row:last-child { border-bottom: 0; }.request-row > div:nth-child(2) { display:flex; flex-direction:column; }.request-row span, .request-row time { color:var(--mud-palette-text-secondary); font-size:.72rem; }
.vessel-monogram { display: grid; place-items: center; width: 42px; height: 42px; flex: 0 0 auto; border-radius: 10px; background: color-mix(in oklab, var(--mud-palette-primary) 11%, var(--mud-palette-surface)); color: var(--mud-palette-primary); font-size: .72rem; font-weight: 800; }
.vessel-monogram.large { width: 62px; height: 62px; border-radius: 14px; font-size: 1rem; }

.list-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 14px; }
.list-search { width: min(100%, 540px); }.list-toolbar > span { color: var(--mud-palette-text-secondary); font-size: .75rem; }
.vessel-filter-actions { display: flex; align-items: center; padding: 3px; border-radius: 8px; background: color-mix(in oklab, var(--mud-palette-text-primary) 4%, transparent); }
.vessel-list { margin: 0 -12px -10px; }
.vessel-list-row { display: grid; grid-template-columns: 46px minmax(220px,1fr) auto auto auto 22px; align-items: center; gap: 16px; min-height: 76px; padding: 10px 12px; border-bottom: 1px solid var(--mud-palette-divider); cursor: pointer; transition: background .15s ease; }
.vessel-list-row:last-child { border-bottom: 0; }.vessel-main { display:flex; min-width:0; flex-direction:column; }.vessel-main span { color:var(--mud-palette-text-secondary); font-size:.75rem; }
.access-badges { display: flex; gap: 7px; }.access-badge { display:inline-flex; align-items:center; gap:4px; padding:5px 8px; border-radius:999px; font-size:.68rem; font-weight:700; }.access-badge .mud-icon-root { font-size:.9rem; }.access-badge.enabled { color:var(--mud-palette-primary); background:color-mix(in oklab,var(--mud-palette-primary) 10%,transparent); }.access-badge.disabled { color:var(--mud-palette-text-disabled); background:color-mix(in oklab,var(--mud-palette-text-primary) 5%,transparent); }
.vessel-fishing-days { display:flex; flex-direction:column; align-items:flex-end; line-height:1.2; text-align:right; }
.vessel-fishing-days strong { font-size:1.3rem; letter-spacing:-.03em; }
.vessel-fishing-days small { color:var(--mud-palette-text-secondary); font-size:.66rem; white-space:nowrap; }
.vessel-fishing-days:empty { display:none; }
.vessel-fishing-days .fishing-days-note { color:var(--mud-palette-text-disabled); }

.vessel-active-state { font-size:.7rem; font-weight:700; }.vessel-active-state.active { color:color-mix(in oklab,var(--portal-success) 65%,var(--mud-palette-text-primary)); }.vessel-active-state.inactive { color:var(--mud-palette-text-secondary); }

/* Livekartet er en arbeidsflate og fyller hele innholdsflaten. Bredden styres av
   MudMainContent, som allerede tar hensyn til drawer-en, så her trengs ingen
   hardkodet drawer-bredde. */
.portal-shell { --portal-appbar-height: 64px; }
.portal-main:has(.live-map-fullscreen) { width: 100%; max-width: none; min-height: 0; padding: 0; animation: none; }
.live-map-fullscreen { display: flex; height: calc(100dvh - var(--portal-appbar-height)); flex-direction: column; }
.live-map-body { position: relative; display: flex; flex: 1 1 auto; min-height: 0; }
.live-map-body > .portal-live-map-workspace { flex: 1 1 auto; min-width: 0; }
.live-map-body > :not(.portal-live-map-workspace) { width: min(100% - 32px, 620px); margin: auto; }
.live-map-toolbar { display:flex; flex:0 0 auto; align-items:center; justify-content:space-between; gap:24px; padding:10px 22px; border-bottom:1px solid var(--mud-palette-divider); background:var(--mud-palette-surface); }
.live-map-toolbar h1 { margin-bottom:2px; font-size:1.1rem; letter-spacing:-.02em; }
.live-map-toolbar p { margin:0; color:var(--mud-palette-text-secondary); font-size:.74rem; }
.live-map-toolbar-actions { display:flex; align-items:center; gap:10px; color:var(--mud-palette-text-secondary); font-size:.75rem; white-space:nowrap; }
.portal-live-map-workspace { position:relative; overflow:hidden; background:var(--mud-palette-surface); }
.portal-live-map-workspace .portal-map-shell { height:100%; min-height:0; border-radius:0; }
.live-map-legend { position:absolute; top:12px; left:12px; z-index:4; display:flex; align-items:center; gap:12px; padding:8px 10px; border:1px solid color-mix(in oklab,var(--mud-palette-text-secondary) 28%,transparent); border-radius:8px; background:color-mix(in oklab,var(--mud-palette-surface) 94%,transparent); box-shadow:0 2px 10px rgba(15,42,68,.14); backdrop-filter:blur(10px); }
.live-map-legend > span { display:flex; align-items:center; gap:5px; color:var(--mud-palette-text-primary); font-size:.66rem; font-weight:600; }
.map-network-dot { display:inline-block; width:9px; height:9px; flex:0 0 auto; border-radius:50%; background:var(--mud-palette-text-disabled); }
.map-network-dot.network-iridium { background:#0000ff; }.map-network-dot.network-mobile { background:#000; }.map-network-dot.network-nbiot { background:#7c7c7c; }.map-network-dot.network-gsm { background:#7c3aed; }.map-network-dot.warning { background:#f59e0b; }.map-network-dot.missing { border:2px solid var(--mud-palette-text-disabled); background:transparent; }
.map-network-dot.stale { box-shadow:0 0 0 2px color-mix(in oklab,var(--mud-palette-surface) 90%,transparent),0 0 0 4px var(--mud-palette-error); }
.live-map-drawer { position:absolute; inset:0 0 0 auto; z-index:6; display:flex; width:330px; flex-direction:column; border-left:1px solid color-mix(in oklab,var(--mud-palette-text-secondary) 30%,transparent); background:color-mix(in oklab,var(--mud-palette-surface) 95%,transparent); box-shadow:-6px 0 22px rgba(15,42,68,.12); backdrop-filter:blur(12px); transition:transform .25s ease; }
.live-map-drawer.closed { transform:translateX(100%); }
.live-map-drawer-header { padding:15px; border-bottom:1px solid var(--mud-palette-divider); background:color-mix(in oklab,var(--mud-palette-surface) 97%,transparent); }
.live-map-drawer-title { display:flex; align-items:flex-start; justify-content:space-between; }
.live-map-drawer-title > div { display:flex; flex-direction:column; }.live-map-drawer-title strong { font-size:.94rem; }.live-map-drawer-title span { color:var(--mud-palette-text-secondary); font-size:.7rem; }
.live-map-vessel-list { flex:1; min-height:0; overflow-y:auto; padding:4px; }
.live-map-vessel-row { display:grid; grid-template-columns:minmax(0,1fr) 34px; align-items:center; border-bottom:1px solid var(--mud-palette-divider); transition:background .15s ease; }
.live-map-vessel-row.selected { background:color-mix(in oklab,var(--mud-palette-primary) 9%,transparent); box-shadow:inset 3px 0 var(--mud-palette-primary); }
.live-map-vessel-select { display:grid; grid-template-columns:12px minmax(0,1fr) auto; align-items:center; gap:10px; min-width:0; min-height:60px; padding:8px 4px 8px 12px; border:0; color:inherit; background:transparent; text-align:left; cursor:pointer; }
.live-map-vessel-name { display:flex; min-width:0; flex-direction:column; }.live-map-vessel-name strong,.live-map-vessel-name small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.live-map-vessel-name strong { font-size:.78rem; }.live-map-vessel-name small { color:var(--mud-palette-text-secondary); font-size:.65rem; }
.live-map-vessel-state { max-width:105px; color:var(--mud-palette-text-secondary); font-size:.65rem; text-align:right; }.live-map-vessel-state.attention { color:var(--mud-palette-error); font-weight:700; }
.live-map-list-empty { padding:32px 18px; color:var(--mud-palette-text-secondary); font-size:.75rem; text-align:center; }
.live-map-drawer-toggle { position:absolute; top:12px; right:12px; z-index:7; display:flex; min-width:44px; min-height:44px; align-items:center; justify-content:center; gap:5px; padding:7px 10px; border:1px solid color-mix(in oklab,var(--mud-palette-text-secondary) 30%,transparent); border-radius:8px; color:var(--mud-palette-text-primary); background:color-mix(in oklab,var(--mud-palette-surface) 95%,transparent); box-shadow:0 2px 10px rgba(15,42,68,.14); backdrop-filter:blur(10px); cursor:pointer; transition:right .25s ease,background .15s ease; }
.live-map-drawer-toggle.drawer-open { right:342px; }.live-map-drawer-toggle .mud-icon-root { font-size:1.15rem; }.live-map-drawer-toggle span { font-size:.72rem; font-weight:700; }
.live-map-selection-panel { position:absolute; bottom:14px; left:14px; z-index:5; width:min(310px,calc(100% - 372px)); padding:15px; border:1px solid color-mix(in oklab,var(--mud-palette-text-secondary) 30%,transparent); border-radius:10px; background:color-mix(in oklab,var(--mud-palette-surface) 96%,transparent); box-shadow:0 6px 24px rgba(15,42,68,.18); backdrop-filter:blur(12px); animation:page-enter .2s ease-out both; }
.live-map-selection-heading { display:grid; grid-template-columns:12px minmax(0,1fr) 32px; align-items:center; gap:10px; margin-bottom:13px; }.live-map-selection-heading > div { display:flex; min-width:0; flex-direction:column; }.live-map-selection-heading strong { overflow:hidden; font-size:.88rem; text-overflow:ellipsis; white-space:nowrap; }.live-map-selection-heading span { color:var(--mud-palette-text-secondary); font-size:.68rem; }
.live-map-selection-facts { display:grid; grid-template-columns:1fr 1fr; margin:0 0 14px; border-top:1px solid var(--mud-palette-divider); }.live-map-selection-facts div { padding:10px 4px 7px; }.live-map-selection-facts dt { color:var(--mud-palette-text-secondary); font-size:.64rem; }.live-map-selection-facts dd { margin:3px 0 0; font-size:.72rem; font-weight:700; }
.live-map-no-position { margin:0 0 14px; padding:11px; border-radius:7px; color:var(--mud-palette-text-secondary); background:color-mix(in oklab,var(--mud-palette-text-primary) 5%,transparent); font-size:.73rem; }
.live-map-selection-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }.live-map-selection-actions .mud-button-root { min-width:0; padding-inline:10px; font-size:.7rem; }
.live-map-playback-panel { position:absolute; right:14px; bottom:14px; left:14px; z-index:8; padding:14px 16px; border:1px solid color-mix(in oklab,var(--mud-palette-text-secondary) 34%,transparent); border-radius:11px; background:color-mix(in oklab,var(--mud-palette-surface) 97%,transparent); box-shadow:0 8px 32px rgba(15,42,68,.22); backdrop-filter:blur(14px); animation:page-enter .2s ease-out both; }
.live-map-playback-header { display:grid; grid-template-columns:minmax(150px,auto) 1fr 32px; align-items:center; gap:16px; padding-bottom:10px; border-bottom:1px solid var(--mud-palette-divider); }.live-map-playback-header > div:first-child { display:flex; flex-direction:column; }.live-map-playback-header > div:first-child span { color:var(--mud-palette-text-secondary); font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em; }.live-map-playback-header > div:first-child strong { margin-top:2px; font-size:.82rem; }
.live-map-playback-periods { display:flex; justify-content:center; gap:3px; }.live-map-playback-periods .mud-button-root { min-width:44px; }
.live-map-playback-loading,.live-map-playback-error,.live-map-playback-empty { display:flex; min-height:64px; align-items:center; justify-content:center; gap:10px; color:var(--mud-palette-text-secondary); font-size:.74rem; }.live-map-playback-error { color:var(--mud-palette-error); }
.live-map-playback-controls { display:grid; grid-template-columns:42px minmax(220px,1fr) auto auto; align-items:center; gap:14px; padding-top:10px; }
.live-map-playback-timeline { min-width:0; }.live-map-playback-timeline .mud-slider { margin:0; }.live-map-playback-timeline > div:last-child { display:flex; justify-content:space-between; gap:12px; margin-top:-4px; color:var(--mud-palette-text-secondary); font-size:.63rem; }
.live-map-motion-timeline { position:relative; height:5px; margin:-7px 8px 7px; overflow:hidden; border-radius:999px; background:color-mix(in oklab,var(--mud-palette-text-secondary) 18%,transparent); }
.live-map-motion-segment { position:absolute; inset-block:0; min-width:2px; border-radius:999px; background:var(--mud-palette-primary); }
.live-map-motion-key { display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }.live-map-motion-key i { width:14px; height:4px; border-radius:999px; background:var(--mud-palette-primary); }
.live-map-playback-reading { display:flex; min-width:82px; flex-direction:column; align-items:flex-end; font-size:.69rem; font-weight:700; }.live-map-playback-reading span:last-child { color:var(--mud-palette-text-secondary); }
.live-map-playback-speed { display:flex; gap:2px; padding:2px; border-radius:7px; background:color-mix(in oklab,var(--mud-palette-text-primary) 5%,transparent); }.live-map-playback-speed .mud-button-root { min-width:36px; padding-inline:7px; }

.breadcrumb-row { display:flex; align-items:center; gap:5px; margin-bottom:22px; color:var(--mud-palette-text-secondary); font-size:.75rem; }.breadcrumb-row a { color:var(--mud-palette-primary); text-decoration:none; }.breadcrumb-row .mud-icon-root { font-size:1rem; }
.vessel-detail-heading { display:flex; align-items:center; gap:16px; margin-bottom:28px; }.vessel-detail-heading h1 { margin-bottom:3px; }.vessel-detail-heading p { margin:0; color:var(--mud-palette-text-secondary); }.vessel-detail-heading > .vessel-active-state { margin-left:auto; }
.vessel-detail-grid { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr); gap:24px; }.position-facts { display:grid; grid-template-columns:repeat(3,1fr); gap:16px 0; margin:18px 0 0; }.position-facts div { min-width:0; padding:0 14px; border-right:1px solid var(--mud-palette-divider); }.position-facts div:nth-child(3n+1) { padding-left:0; }.position-facts div:nth-child(3n) { border:0; }.position-facts dt { color:var(--mud-palette-text-secondary); font-size:.68rem; }.position-facts dd { margin:4px 0 0; overflow-wrap:anywhere; font-size:.78rem; font-weight:700; }.locked-state { display:flex; align-items:center; gap:10px; min-height:150px; color:var(--mud-palette-text-secondary); }.compact-feed .message-feed-row { grid-template-columns:48px minmax(0,1fr) 20px; }

.message-filter-panel { margin-bottom:24px; }

.message-filters { display:grid; grid-template-columns:minmax(220px,1fr) minmax(270px,1fr) 120px auto; align-items:start; gap:16px; }.table-summary { display:flex; justify-content:space-between; gap:20px; margin-bottom:15px; color:var(--mud-palette-text-secondary); font-size:.76rem; }.table-scroll { overflow-x:auto; }.portal-table { width:100%; border-collapse:collapse; }.portal-table th { padding:11px 12px; border-bottom:1px solid var(--mud-palette-divider); color:var(--mud-palette-text-secondary); font-size:.67rem; text-align:left; text-transform:uppercase; letter-spacing:.06em; white-space:nowrap; }.portal-table td { padding:13px 12px; border-bottom:1px solid var(--mud-palette-divider); font-size:.77rem; }.portal-table tbody tr { cursor:pointer; transition:background .15s ease; }.portal-table td strong,.portal-table td small { display:block; }.portal-table td small { color:var(--mud-palette-text-secondary); }.messages-table th:last-child,.messages-table td:last-child { width:30px; }.pagination-row { display:flex; justify-content:center; padding:22px 0 4px; }.data-scope-note { display:flex; align-items:flex-start; gap:7px; margin:18px 0 0; color:var(--mud-palette-text-secondary); font-size:.72rem; }.data-scope-note .mud-icon-root { flex:0 0 auto; font-size:1rem; }

.messages-table tbody tr.expanded { background: color-mix(in oklab, var(--mud-palette-primary) 6%, var(--mud-palette-surface)); }
.messages-table tbody tr.expanded td { border-bottom-color: transparent; }
.message-expand-icon { transition: transform .2s ease; }
.message-expand-icon.open { transform: rotate(180deg); }
.message-expand-row { cursor: default; }
.message-expand-row:hover, .portal-table tbody tr.message-expand-row:hover { background: color-mix(in oklab, var(--mud-palette-primary) 6%, var(--mud-palette-surface)); }
.message-expand-row > td { padding: 0; background: color-mix(in oklab, var(--mud-palette-primary) 6%, var(--mud-palette-surface)); }
.message-expand-body { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; padding: 2px 12px 16px; }
.message-expand-body h4 { margin: 0 0 2px; color: var(--mud-palette-text-secondary); font-size: .67rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.message-expand-body .detail-list div { padding: 8px 0; }
.message-expand-body .detail-list dd { font-size: .78rem; }
.message-expand-body .response-message { margin-top: 10px; }
.message-expand-footer { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 14px; padding-top: 10px; border-top: 1px solid var(--mud-palette-divider); }
.message-expand-refs { display: flex; flex-wrap: wrap; gap: 16px; color: var(--mud-palette-text-secondary); font-size: .7rem; }

.message-detail-heading { align-items:center; }.status-pill { display:inline-flex; align-items:center; gap:7px; padding:8px 12px; border-radius:999px; font-size:.75rem; font-weight:700; }.status-pill.accepted { background:color-mix(in oklab,var(--portal-success) 15%,transparent); color:color-mix(in oklab,var(--portal-success) 60%,var(--mud-palette-text-primary)); }.status-pill.attention { background:color-mix(in oklab,var(--portal-error) 12%,transparent); color:var(--mud-palette-error); }.message-detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }.detail-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); margin:0; }.detail-list div { padding:12px 0; border-bottom:1px solid var(--mud-palette-divider); }.detail-list div:nth-child(odd) { padding-right:18px; }.detail-list dt,.catch-weight-list dt { color:var(--mud-palette-text-secondary); font-size:.7rem; }.detail-list dd,.catch-weight-list dd { margin:4px 0 0; font-size:.82rem; font-weight:600; }.catch-weight-list { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin:0; }.catch-weight-list div { padding:16px; border-radius:8px; background:color-mix(in oklab,var(--mud-palette-primary) 6%,var(--mud-palette-surface)); }.catch-weight-list dd { font-size:1.1rem; }.compact-details { grid-template-columns:1fr; }.compact-details div:nth-child(odd) { padding-right:0; }.response-message { margin-top:12px; padding:12px; border-left:3px solid var(--mud-palette-info); background:color-mix(in oklab,var(--mud-palette-info) 6%,transparent); font-size:.75rem; white-space:pre-wrap; }.message-reference-panel { margin-top:24px; }.support-reference-list { grid-template-columns:repeat(4,minmax(0,1fr)); }.muted-text { color:var(--mud-palette-text-secondary); }

.catch-section { margin-bottom: 24px; }
.catch-note { margin: -10px 0 22px; }
.catch-note + .catch-note { margin-top: -14px; }
.catch-section-heading { align-items: flex-end; }
.catch-scope-select { width: 240px; flex: 0 0 auto; }
.metric-strip.metric-strip-3 { grid-template-columns: repeat(3, 1fr); }
.catch-unavailable { display: flex; align-items: flex-start; gap: 16px; }
.catch-unavailable > .mud-icon-root { flex: 0 0 auto; margin-top: 2px; font-size: 2rem; color: var(--mud-palette-text-secondary); }
.catch-unavailable h3 { margin-bottom: 5px; }
.catch-unavailable p { max-width: 640px; margin: 0; color: var(--mud-palette-text-secondary); font-size: .8rem; }
.catch-unavailable code { padding: 1px 5px; border-radius: 4px; background: color-mix(in oklab, var(--mud-palette-text-primary) 7%, transparent); font-size: .76rem; }
.catch-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; margin-top: 24px; }
.catch-trend-panel { margin-top: 24px; }

.catch-donut { display: grid; grid-template-columns: 208px minmax(0, 1fr); align-items: center; gap: 26px; }
.catch-donut-figure { position: relative; margin: 0; }
.catch-donut-figure svg { display: block; width: 100%; height: auto; transform: rotate(-90deg); }
.catch-donut-track { stroke: color-mix(in oklab, var(--mud-palette-text-primary) 7%, transparent); }
.catch-donut-arc { transition: opacity .15s ease; }
.catch-donut-arc.dimmed, .catch-donut-legend li.dimmed { opacity: .32; }
.catch-donut-center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; text-align: center; }
.catch-donut-center strong { font-size: 1.5rem; letter-spacing: -.03em; line-height: 1.1; }
.catch-donut-center span { margin-top: 3px; color: var(--mud-palette-text-secondary); font-size: .68rem; font-weight: 600; }
.catch-donut-legend { display: grid; margin: 0; padding: 0; list-style: none; }
.catch-donut-legend li { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto 48px; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--mud-palette-divider); transition: opacity .15s ease; }
.catch-donut-legend li:last-child { border-bottom: 0; }
.catch-donut-legend i { width: 10px; height: 10px; border-radius: 3px; }
.catch-donut-legend span { display: flex; min-width: 0; flex-direction: column; }
.catch-donut-legend strong { overflow: hidden; font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
.catch-donut-legend small { color: var(--mud-palette-text-secondary); font-size: .66rem; }
.catch-donut-legend b { font-size: .78rem; font-weight: 700; white-space: nowrap; }
.catch-donut-legend em { color: var(--mud-palette-text-secondary); font-size: .7rem; font-style: normal; text-align: right; }

.catch-bars { display: grid; gap: 4px; }
.catch-bar-row { display: grid; grid-template-columns: minmax(96px, 150px) minmax(0, 1fr) 74px; align-items: center; gap: 14px; padding: 7px 0; }
.catch-bar-label { display: flex; min-width: 0; flex-direction: column; }
.catch-bar-label strong { overflow: hidden; font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
.catch-bar-label small { color: var(--mud-palette-text-secondary); font-size: .66rem; }
.catch-bar-track { display: block; height: 12px; overflow: hidden; border-radius: 4px; background: color-mix(in oklab, var(--mud-palette-text-primary) 6%, transparent); }
.catch-bar-track i { display: block; min-width: 3px; height: 100%; border-radius: 4px; transition: width .3s ease; }
.catch-bar-value { font-size: .8rem; font-weight: 700; text-align: right; white-space: nowrap; }

.catch-trend-plot { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 8px; height: 216px; padding-top: 4px; border-bottom: 1px solid var(--mud-palette-divider); }
.catch-trend-column { display: grid; grid-template-rows: 16px minmax(0, 1fr) 20px; gap: 6px; min-width: 0; }
.catch-trend-bars { display: flex; align-items: flex-end; justify-content: center; gap: 2px; width: 100%; max-width: 58px; height: 100%; margin: 0 auto; }
.catch-trend-bars i { display: block; flex: 1 1 0; min-width: 0; border-radius: 4px 4px 0 0; background: color-mix(in oklab, var(--mud-palette-primary) 52%, transparent); transition: height .3s ease, background .15s ease; }
.catch-trend-bars i.ghost { background: color-mix(in oklab, var(--mud-palette-text-primary) 14%, transparent); }
.catch-trend-column.peak i:not(.ghost) { background: var(--mud-palette-primary); }
.catch-trend-column:hover i:not(.ghost) { background: color-mix(in oklab, var(--mud-palette-primary) 75%, transparent); }
.catch-trend-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 10px; color: var(--mud-palette-text-secondary); font-size: .68rem; }
.catch-trend-legend span { display: inline-flex; align-items: center; gap: 6px; }
.catch-trend-legend i { width: 10px; height: 10px; border-radius: 3px; background: var(--mud-palette-primary); }
.catch-trend-legend i.ghost { background: color-mix(in oklab, var(--mud-palette-text-primary) 14%, transparent); }
.metric-delta { display: inline-block; margin-top: 6px; padding: 2px 7px; border-radius: 999px; font-size: .68rem; font-style: normal; font-weight: 700; background: color-mix(in oklab, var(--mud-palette-text-primary) 7%, transparent); color: var(--mud-palette-text-secondary); }
.metric-delta.up { background: color-mix(in oklab, var(--portal-success) 14%, transparent); color: color-mix(in oklab, var(--portal-success) 60%, var(--mud-palette-text-primary)); }
.metric-delta.down { background: color-mix(in oklab, var(--portal-error) 12%, transparent); color: var(--mud-palette-error); }
.vessel-catch-panel { margin-bottom: 24px; }
.vessel-catch-panel .metric-strip { margin: 0 0 4px; border: 0; border-radius: 0; background: transparent; }
.vessel-catch-panel .metric-item { padding: 14px 20px 14px 0; }
.vessel-catch-panel .catch-grid { margin-top: 16px; }
.trips-table th:first-child, .trips-table td:first-child { padding-left: 0; }
.trips-table tbody tr { cursor: default; }
.trips-table td { vertical-align: top; }
.trip-state { display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px; border-radius: 999px; font-size: .66rem; font-weight: 700; background: color-mix(in oklab, var(--mud-palette-text-primary) 7%, transparent); color: var(--mud-palette-text-secondary); }
.trip-state.active { background: color-mix(in oklab, var(--portal-success) 15%, transparent); color: color-mix(in oklab, var(--portal-success) 60%, var(--mud-palette-text-primary)); }
.trip-species { display: block; max-width: 320px; color: var(--mud-palette-text-secondary); font-size: .7rem; }
.trips-section { margin-top: 24px; }
.vessel-reconciliation-panel { margin-bottom: 24px; }
.vessel-reconciliation-panel .metric-strip { margin: 0 0 4px; border: 0; border-radius: 0; background: transparent; }
.vessel-reconciliation-panel .metric-item { padding: 14px 20px 14px 0; }
.vessel-reconciliation-panel .table-scroll { margin-top: 16px; }
.reconciliation-table th:first-child, .reconciliation-table td:first-child, .landings-table th:first-child, .landings-table td:first-child { padding-left: 0; }
.reconciliation-table tbody tr, .landings-table tbody tr { cursor: default; }
.reconciliation-table td, .landings-table td { vertical-align: top; white-space: nowrap; }
.deviation-pill { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 999px; font-size: .68rem; font-weight: 700; background: color-mix(in oklab, var(--mud-palette-text-primary) 7%, transparent); color: var(--mud-palette-text-secondary); }
.deviation-pill.ok { background: color-mix(in oklab, var(--portal-success) 14%, transparent); color: color-mix(in oklab, var(--portal-success) 60%, var(--mud-palette-text-primary)); }
.deviation-pill.notable { background: color-mix(in oklab, var(--mud-palette-warning) 18%, transparent); color: color-mix(in oklab, var(--mud-palette-warning) 70%, var(--mud-palette-text-primary)); }
.deviation-pill.high { background: color-mix(in oklab, var(--portal-error) 12%, transparent); color: var(--mud-palette-error); }
.metric-delta.notable { background: color-mix(in oklab, var(--mud-palette-warning) 18%, transparent); color: color-mix(in oklab, var(--mud-palette-warning) 70%, var(--mud-palette-text-primary)); }
.metric-delta.high { background: color-mix(in oklab, var(--portal-error) 12%, transparent); color: var(--mud-palette-error); }
.metric-delta.ok { background: color-mix(in oklab, var(--portal-success) 14%, transparent); color: color-mix(in oklab, var(--portal-success) 60%, var(--mud-palette-text-primary)); }
.quota-section, .landings-section { margin-top: 24px; }
.quota-list { display: grid; gap: 6px; }
.quota-row { display: grid; grid-template-columns: minmax(180px, 260px) minmax(0, 1fr) auto; align-items: center; gap: 18px; padding: 10px 0; border-bottom: 1px solid var(--mud-palette-divider); }
.quota-row:last-child { border-bottom: 0; }
.quota-label { display: flex; min-width: 0; flex-direction: column; }
.quota-label strong { font-size: .82rem; }
.quota-label small { overflow: hidden; color: var(--mud-palette-text-secondary); font-size: .66rem; text-overflow: ellipsis; white-space: nowrap; }
.quota-track { display: block; height: 12px; overflow: hidden; border-radius: 4px; background: color-mix(in oklab, var(--mud-palette-text-primary) 6%, transparent); }
.quota-track i { display: block; min-width: 3px; height: 100%; border-radius: 4px; background: var(--mud-palette-primary); transition: width .3s ease; }
.quota-track i.near { background: var(--mud-palette-warning); }
.quota-track i.full { background: var(--mud-palette-error); }
.quota-figures { display: grid; grid-template-columns: repeat(4, auto); gap: 0 18px; margin: 0; }
.quota-figures dt { color: var(--mud-palette-text-secondary); font-size: .62rem; text-transform: uppercase; letter-spacing: .05em; }
.quota-figures dd { margin: 2px 0 0; font-size: .8rem; font-weight: 700; white-space: nowrap; }
.landing-type { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 999px; font-size: .66rem; font-weight: 700; background: color-mix(in oklab, var(--mud-palette-text-primary) 7%, transparent); color: var(--mud-palette-text-secondary); }
.landing-type.sales { background: color-mix(in oklab, var(--mud-palette-primary) 12%, transparent); color: var(--mud-palette-primary); }
.landings-table tr.not-counted td { color: var(--mud-palette-text-secondary); }
.landings-table td small { display: block; white-space: normal; }
.catch-trend-column small { overflow: hidden; color: var(--mud-palette-text-secondary); font-size: .66rem; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
.catch-trend-value { overflow: hidden; font-size: .66rem; font-weight: 700; text-align: center; text-overflow: ellipsis; white-space: nowrap; }

@media (max-width: 1200px) {
    .vessel-detail-grid { grid-template-columns:1fr; }
    .catch-grid { grid-template-columns:1fr; }
}

@media (max-width: 960px) {
    .portal-main { width:min(100% - 32px,1440px); padding-top:32px; }
    .metric-strip { grid-template-columns:repeat(2,1fr); }.metric-item:nth-child(2) { border-right:0; }.metric-item:nth-child(-n+2) { border-bottom:1px solid var(--mud-palette-divider); }
    .access-layout,.message-detail-grid { grid-template-columns:1fr; }
    .metric-strip.metric-strip-3 { grid-template-columns:repeat(2,1fr); }.metric-strip-3 .metric-item:nth-child(2) { border-right:0; }.metric-strip-3 .metric-item:nth-child(-n+2) { border-bottom:1px solid var(--mud-palette-divider); }.metric-strip-3 .metric-item:last-child { grid-column:1/-1; }
    .catch-donut { grid-template-columns:1fr; gap:18px; }.catch-donut-figure { width:200px; margin:0 auto; }
    .message-filters { grid-template-columns:1fr 1fr; }.message-filters .mud-button-root { min-height:56px; }
    .vessel-list-row { grid-template-columns:46px minmax(0,1fr) auto auto 22px; }.vessel-list-row .vessel-active-state { display:none; }
}

@media (max-width: 700px) {
    .portal-admin-return { display:none!important; }.portal-admin-return-mobile { display:inline-flex!important; }.role-badge { display:none; }
    .portal-main { width:min(100% - 24px,1440px); padding:24px 0 max(48px, calc(24px + env(safe-area-inset-bottom))); }
    .dashboard-vessel-overview { grid-template-columns:1fr; }.dashboard-vessel-overview-row,.dashboard-vessel-overview-row:first-child { padding:12px 0; border-right:0; border-bottom:1px solid var(--mud-palette-divider); }.dashboard-vessel-overview-row:last-child { border-bottom:0; }
    .portal-shell { --portal-appbar-height:56px; }
    .live-map-toolbar { padding:8px 14px; gap:12px; }.live-map-toolbar p { display:none; }.live-map-toolbar-actions { gap:6px; }
    .live-map-legend { right:58px; max-width:calc(100% - 72px); flex-wrap:wrap; gap:6px 10px; }.live-map-drawer { width:min(320px,86vw); }.live-map-drawer-toggle.drawer-open { right:min(calc(86vw + 12px),332px); }.live-map-selection-panel { bottom:12px; left:12px; width:calc(100% - 24px); }.live-map-vessel-state { display:none; }.live-map-vessel-select { grid-template-columns:12px minmax(0,1fr); }
    .live-map-selection-actions { grid-template-columns:1fr; }.live-map-playback-panel { right:8px; bottom:8px; left:8px; max-height:48%; overflow-y:auto; padding:12px; }.live-map-playback-header { grid-template-columns:1fr 32px; gap:8px; }.live-map-playback-periods { grid-column:1/-1; grid-row:2; justify-content:flex-start; }.live-map-playback-controls { grid-template-columns:38px minmax(0,1fr); gap:8px; }.live-map-playback-reading { align-items:flex-start; }.live-map-playback-speed { justify-self:end; }.live-map-playback-timeline > div:last-child span { display:none; }
    .page-heading { align-items:flex-start; flex-direction:column; margin-bottom:24px; }.page-heading > .mud-button-root { width:100%; }.heading-actions { width:100%; flex-direction:column; }.heading-actions .mud-button-root { width:100%; }
    .portal-panel { padding:18px; border-radius:10px; }
    .metric-item { padding:16px; }.metric-item strong { font-size:1.55rem; }.metric-item small { white-space:normal; }
    .message-feed-row { grid-template-columns:46px minmax(0,1fr) 18px; }.message-feed-row .status-text { display:none; }
    .vessel-list-panel { padding:14px; }.list-toolbar { align-items:stretch; flex-direction:column; }.list-search { width:100%; }.vessel-filter-actions { width:fit-content; }
    .vessel-list-row { grid-template-columns:42px minmax(0,1fr) 18px; gap:10px; }.vessel-list-row .access-badges { grid-column:2; }.vessel-list-row .vessel-fishing-days { grid-column:2; flex-flow:row wrap; align-items:baseline; gap:2px 5px; text-align:left; }.vessel-list-row .fishing-days-note { flex:0 0 100%; }.vessel-list-row .vessel-fishing-days strong { font-size:1rem; }.vessel-main span { white-space:normal; }.access-badge { padding:4px 7px; }
    .vessel-detail-heading { align-items:flex-start; flex-wrap:wrap; }.vessel-detail-heading > .vessel-active-state { width:100%; margin-left:78px; }.position-facts { grid-template-columns:repeat(2,1fr); gap:16px 0; }.position-facts div { padding:0 12px; }.position-facts div:nth-child(3n+1) { padding-left:12px; }.position-facts div:nth-child(3n) { border-right:1px solid var(--mud-palette-divider); }.position-facts div:nth-child(odd) { padding-left:0; }.position-facts div:nth-child(even) { border-right:0; }
    .message-filters { grid-template-columns:1fr; }.message-filter-panel { padding:16px; }
    .message-expand-body { grid-template-columns:1fr; gap:14px 0; }.message-expand-footer { align-items:flex-start; flex-direction:column; gap:8px; }
    .table-summary { align-items:flex-start; flex-direction:column; gap:4px; }.messages-table { min-width:780px; }
    .catch-section-heading { align-items:stretch; flex-direction:column; gap:12px; }.catch-scope-select { width:100%; }
    .metric-strip.metric-strip-3 { grid-template-columns:1fr; }.metric-strip-3 .metric-item { border-right:0; border-bottom:1px solid var(--mud-palette-divider); }.metric-strip-3 .metric-item:last-child { border-bottom:0; }
    .catch-unavailable { flex-direction:column; gap:10px; }
    .catch-donut-legend li { grid-template-columns:10px minmax(0,1fr) auto 44px; gap:8px; }
    .catch-bar-row { grid-template-columns:minmax(84px,1fr) minmax(0,1.2fr) 66px; gap:10px; }
    .catch-trend-plot { gap:4px; height:180px; }.catch-trend-column small { font-size:.6rem; }.catch-trend-bars { gap:1px; }
    .trips-table { min-width:860px; }.vessel-catch-panel .metric-item { padding:12px 12px 12px 0; }
    .reconciliation-table { min-width:760px; }.landings-table { min-width:640px; }.vessel-reconciliation-panel .metric-item { padding:12px 12px 12px 0; }
    .quota-row { grid-template-columns:1fr; gap:8px; }.quota-figures { grid-template-columns:repeat(2,auto); justify-content:space-between; gap:6px 12px; }
    .detail-list,.catch-weight-list { grid-template-columns:1fr; }.detail-list div:nth-child(odd) { padding-right:0; }.support-reference-list { grid-template-columns:1fr 1fr; }
}

@media (max-width: 420px) {
    .appbar-brand small { display:none; }
    .empty-state { min-height:240px; padding:28px 18px; }
}

@media (hover:none) and (pointer:coarse) { .mud-tooltip { display:none!important; } }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; } }

/* Flåteoversikt (dashbord): fartøy mot fartøy */
.fleet-panel { margin-bottom: 24px; }
.fleet-panel .table-scroll { margin-top: 12px; }
.fleet-table th:first-child, .fleet-table td:first-child { padding-left: 0; }
.fleet-table td { vertical-align: middle; white-space: nowrap; }
.fleet-table tfoot td { border-bottom: 0; font-weight: 700; }
.fleet-table tfoot td small { font-weight: 400; }
.fleet-table tbody tr.truncated td:first-child small { color: var(--mud-palette-warning); }
.sort-button { all: unset; display: inline-flex; align-items: center; gap: 4px; cursor: pointer; font: inherit; color: inherit; text-transform: inherit; letter-spacing: inherit; }
.sort-button:hover { color: var(--mud-palette-text-primary); }
.sort-button.active { color: var(--mud-palette-primary); }
.sort-button.active::after { content: "\25BE"; font-size: .9em; }
.sort-button.active.asc::after { content: "\25B4"; }
.fleet-share { display: block; width: 120px; height: 5px; margin-top: 5px; border-radius: 3px; background: color-mix(in oklab, var(--mud-palette-text-primary) 6%, transparent); }
.fleet-share i { display: block; min-width: 2px; height: 100%; border-radius: 3px; background: var(--mud-palette-primary); transition: width .3s ease; }
.fleet-quota { display: flex; flex-direction: column; gap: 5px; min-width: 150px; }
.fleet-quota .quota-track { height: 6px; }
.fleet-quota small { display: block; color: var(--mud-palette-text-secondary); }
@media (max-width: 900px) { .fleet-table { min-width: 900px; } }

/* Analyser (dashbord): fangst per fiskedøgn, artsmiks, treffsikkerhet */
.analysis-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 24px; margin-bottom: 24px; }
.analysis-grid .catch-bars { margin-top: 12px; }
.species-mix { display: grid; gap: 4px; margin-top: 12px; }
.species-mix-row { display: grid; grid-template-columns: minmax(96px, 150px) minmax(0, 1fr); align-items: center; gap: 14px; padding: 7px 0; }
.species-mix-label { display: flex; min-width: 0; flex-direction: column; }
.species-mix-label strong { overflow: hidden; font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
.species-mix-label small { color: var(--mud-palette-text-secondary); font-size: .66rem; }
.species-mix-track { display: flex; gap: 2px; height: 12px; overflow: hidden; border-radius: 4px; background: color-mix(in oklab, var(--mud-palette-text-primary) 6%, transparent); }
.species-mix-track i { display: block; flex: 0 0 auto; min-width: 2px; height: 100%; transition: opacity .15s ease; }
.species-mix-track i:first-child { border-radius: 4px 0 0 4px; }
.species-mix-track i:last-child { border-radius: 0 4px 4px 0; }
.species-mix-track i.dimmed, .species-mix-legend li.dimmed { opacity: .32; }
.species-mix-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 14px 0 0; padding: 0; list-style: none; }
.species-mix-legend li { display: inline-flex; align-items: center; gap: 6px; font-size: .7rem; color: var(--mud-palette-text-secondary); transition: opacity .15s ease; cursor: default; }
.species-mix-legend i { width: 10px; height: 10px; border-radius: 3px; }
.species-mix-legend b { color: var(--mud-palette-text-primary); font-weight: 700; }
.deviation-bars { display: grid; gap: 4px; margin-top: 12px; }
.deviation-row { display: grid; grid-template-columns: minmax(96px, 150px) minmax(0, 1fr) 84px; align-items: center; gap: 14px; padding: 7px 0; }
.deviation-track { position: relative; display: block; height: 12px; border-radius: 4px; background: color-mix(in oklab, var(--mud-palette-text-primary) 6%, transparent); }
.deviation-track::before { content: ""; position: absolute; top: -3px; bottom: -3px; left: 50%; width: 1px; background: color-mix(in oklab, var(--mud-palette-text-primary) 35%, transparent); }
.deviation-track i { position: absolute; top: 0; height: 100%; min-width: 2px; transition: width .3s ease; }
.deviation-track i.over { left: 50%; border-radius: 0 4px 4px 0; background: #D96A2C; }
.deviation-track i.under { right: 50%; border-radius: 4px 0 0 4px; background: #1B6CA8; }
.deviation-value { font-size: .8rem; font-weight: 700; text-align: right; white-space: nowrap; }
.deviation-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 14px 0 0; color: var(--mud-palette-text-secondary); font-size: .68rem; }
.deviation-legend span { display: inline-flex; align-items: center; gap: 6px; }
.deviation-legend i { width: 10px; height: 10px; border-radius: 3px; }
.deviation-legend i.over { background: #D96A2C; }
.deviation-legend i.under { background: #1B6CA8; }
