/* LiveEvent Nordic – arrangørportalen. Eget, lyst arbeidsdesign for SaaS-kundene. Ingen eksterne skrifter. */
:root {
  --o-bg: #f5f5f7; --o-card: #ffffff; --o-ink: #15151b; --o-mut: #5f6170; --o-line: #e3e3ea; --o-acc: #ff6a1a; --o-acc-ink: #15151b;
  --o-side: #0d0d12; --o-side-ink: #e9e9ef; --o-side-mut: #8d8f9c; --o-ok: #157a45; --o-err: #b42318; --o-warn: #8a5a00; --o-info: #1f4fa3;
  --o-r: 10px; --o-h: 40px; --o-gap: 16px;
  color-scheme: light;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { font: 15px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; background: var(--o-bg); color: var(--o-ink); }
a { color: inherit; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 3px solid var(--o-acc); outline-offset: 2px; }
.o-skip { position: absolute; left: -999px; } .o-skip:focus { left: 8px; top: 8px; z-index: 99; background: #fff; padding: 8px 12px; }

.o-shell { display: grid; grid-template-columns: 260px 1fr; min-height: 100vh; }
.o-side { background: var(--o-side); color: var(--o-side-ink); padding: 18px 12px 24px; position: sticky; top: 0; height: 100vh; overflow-y: auto; overscroll-behavior: contain; }
.o-side-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.o-side-close { display: none; background: transparent; border: 0; color: var(--o-side-ink); font-size: 18px; width: 40px; height: 40px; border-radius: 8px; cursor: pointer; }
.o-brand { display: flex; align-items: center; gap: 10px; text-decoration: none; padding: 4px 8px 16px; }
.o-brand img { width: 30px; height: 30px; }
.o-brand b { font-size: 14px; letter-spacing: .06em; } .o-brand span { display: block; font-size: 11px; color: var(--o-side-mut); letter-spacing: .1em; }
.o-tenant { font-size: 12px; color: var(--o-side-mut); padding: 0 10px 12px; }
.o-tenant strong { display: block; color: var(--o-side-ink); font-size: 14px; }
.o-nav { display: flex; flex-direction: column; gap: 1px; }
.o-nav a { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 7px 10px; border-radius: 8px; text-decoration: none; color: var(--o-side-ink); font-size: 14px; min-height: 36px; }
.o-nav a:hover { background: #1c1c25; } .o-nav a.on { background: #24242f; box-shadow: inset 3px 0 0 var(--o-acc); }
.o-nav a.lock { color: var(--o-side-mut); }
.o-nav .o-sec { font-size: 11px; text-transform: uppercase; letter-spacing: .1em; color: var(--o-side-mut); padding: 14px 10px 4px; }
.o-evcard { margin: 12px 0 2px; padding: 12px; border-radius: 10px; background: #17171f; border: 1px solid #262632; display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
.o-evcard a { padding: 0; min-height: 0; background: none !important; box-shadow: none !important; }
.o-evcard strong { font-size: 15px; line-height: 1.3; }
.o-evcard span { font-size: 12px; color: var(--o-side-mut); }
.o-evcard .o-pill { margin-top: 4px; }
.o-locked { margin-top: 10px; border-top: 1px solid #22222c; padding-top: 6px; }
.o-locked summary { cursor: pointer; font-size: 11px; text-transform: uppercase; letter-spacing: .1em; color: var(--o-side-mut); padding: 8px 10px; list-style: none; }
.o-locked summary::-webkit-details-marker { display: none; }
.o-locked summary::after { content: "▸"; float: right; } .o-locked[open] summary::after { content: "▾"; }
.o-locked p { font-size: 12px; color: var(--o-side-mut); margin: 0 10px 6px; }
.o-logout { margin-top: 16px; padding-top: 10px; border-top: 1px solid #22222c; }
.o-logout button { width: 100%; text-align: left; background: transparent; border: 0; color: var(--o-side-mut); font: inherit; font-size: 14px; padding: 7px 10px; border-radius: 8px; cursor: pointer; min-height: 36px; }
.o-logout button:hover { background: #1c1c25; color: var(--o-side-ink); }
.o-main { min-width: 0; }
.o-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 28px; border-bottom: 1px solid var(--o-line); background: var(--o-card); position: sticky; top: 0; z-index: 5; }
.o-titles { min-width: 0; flex: 1; }
.o-top h1 { font-size: 20px; margin: 0; line-height: 1.25; overflow-wrap: anywhere; }
.o-top .o-crumb { font-size: 13px; color: var(--o-mut); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .o-top .o-crumb a { color: var(--o-mut); }
.o-top-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: flex-end; }
.o-top-actions:empty { display: none; }
.o-top-actions form { margin: 0; }
.o-content { padding: 24px 28px 64px; max-width: 1280px; }
.o-menu-btn { display: none; width: 40px; height: 40px; border-radius: 8px; border: 1px solid #cfd0d9; background: #fff; cursor: pointer; flex: none; padding: 11px 10px; flex-direction: column; justify-content: space-between; }
.o-menu-btn span { display: block; height: 2px; background: var(--o-ink); border-radius: 2px; }
.o-hubback { display: inline-flex; align-items: center; min-height: 40px; padding: 0 12px; border-radius: 8px; border: 1px solid #cfd0d9; background: #fff;
  color: var(--o-ink); font-weight: 600; font-size: 14px; text-decoration: none; flex: none; }
.o-scrim { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 29; }
.o-tabs-bottom { display: none; }
.o-tabs-bottom a, .o-tabs-bottom button { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-height: 56px; padding: 6px 2px;
  font-family: inherit; font-size: 12px; font-weight: 600; line-height: 1.1; color: var(--o-mut); text-decoration: none; background: none; border: 0; cursor: pointer; }
.o-tabs-bottom .on { color: var(--o-acc); }
/* Seks knapper (med «Kjøreplan», 8.11.2026): litt mindre tekst, så alle får plass på 320–390 px uten å bryte linjen */
.o-tabs-bottom:has(> :nth-child(6)) a, .o-tabs-bottom:has(> :nth-child(6)) button { font-size: 11px; min-width: 0; padding-left: 0; padding-right: 0; }
.o-tabs-bottom a, .o-tabs-bottom button { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.o-tabs-bottom i { width: 22px; height: 22px; background: currentColor; -webkit-mask: var(--ic) center / contain no-repeat; mask: var(--ic) center / contain no-repeat; }
.ic-home { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M3 11l9-7 9 7v9a1 1 0 0 1-1 1h-5v-6h-6v6H4a1 1 0 0 1-1-1z'/%3E%3C/svg%3E"); }
.ic-people { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M2.5 20c.8-3.5 3.4-5.5 6.5-5.5s5.7 2 6.5 5.5'/%3E%3Ccircle cx='17' cy='9' r='2.5'/%3E%3Cpath d='M16.5 14.6c2.6.2 4.4 2 5 5.4'/%3E%3C/svg%3E"); }
.ic-scan { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 8V5a1 1 0 0 1 1-1h3M16 4h3a1 1 0 0 1 1 1v3M20 16v3a1 1 0 0 1-1 1h-3M8 20H5a1 1 0 0 1-1-1v-3M7 12h10'/%3E%3C/svg%3E"); }
.ic-chat { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M4 5h16v11H9l-5 4z'/%3E%3C/svg%3E"); }
.ic-plus { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 8v8M8 12h8'/%3E%3C/svg%3E"); }
.ic-card { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/svg%3E"); }
.ic-plan { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M9 5h11M9 10h11M9 15h11M9 20h11'/%3E%3Cpath d='M4.5 5h.01M4.5 10h.01M4.5 15h.01M4.5 20h.01' stroke-width='3'/%3E%3C/svg%3E"); }
.ic-menu { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 7h16M4 12h16M4 17h16'/%3E%3C/svg%3E"); }

.o-card { background: var(--o-card); border: 1px solid var(--o-line); border-radius: var(--o-r); padding: 20px; margin-bottom: var(--o-gap); }
.o-card h2 { font-size: 17px; margin: 0 0 12px; } .o-card h3 { font-size: 15px; margin: 16px 0 8px; }
.o-card > :last-child { margin-bottom: 0; }
.o-grid { display: grid; gap: var(--o-gap); grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); align-items: stretch; }
.o-grid > .o-card { margin: 0; }
.o-two { display: grid; gap: var(--o-gap); grid-template-columns: 1fr 1fr; align-items: stretch; }
.o-two > .o-card { margin: 0; }
.o-kpis { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin-bottom: var(--o-gap); }
.o-kpi { background: var(--o-card); border: 1px solid var(--o-line); border-radius: var(--o-r); padding: 14px 16px; }
.o-kpi { min-width: 0; }
.o-kpi b { display: block; font-size: 26px; line-height: 1.1; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; } .o-kpi span { font-size: 13px; color: var(--o-mut); }
.o-kpi.txt b { font-size: 17px; line-height: 1.3; padding: 4px 0 3px; }
.o-link { display: flex; gap: 8px; align-items: center; } .o-link .o-code { flex: 1; min-width: 0; padding: 9px 10px; }
.o-mut { color: var(--o-mut); } .o-small { font-size: 13px; }
.o-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.o-row.end { justify-content: flex-end; } .o-row.between { justify-content: space-between; }

/* Skjema: to kolonner med felt på linje, full bredde med .full */
.o-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 18px; align-items: start; }
.o-form.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.o-form .full { grid-column: 1 / -1; }
.o-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.o-field > span { font-size: 13px; font-weight: 600; min-height: 20px; }
.o-field small { color: var(--o-mut); font-size: 12px; }
input[type=text], input[type=email], input[type=tel], input[type=password], input[type=number], input[type=url], input[type=search], input[type=datetime-local], input[type=date], select, textarea {
  width: 100%; min-height: var(--o-h); padding: 8px 10px; border: 1px solid #cfd0d9; border-radius: 8px; font: inherit; background: #fff; color: var(--o-ink); }
textarea { min-height: 96px; resize: vertical; }
input[type=color] { width: 100%; height: var(--o-h); padding: 2px; border: 1px solid #cfd0d9; border-radius: 8px; background: #fff; }
.o-check { display: flex; gap: 8px; align-items: flex-start; font-size: 14px; min-height: var(--o-h); padding-top: 9px; }
.o-check input { margin-top: 3px; width: 16px; height: 16px; flex: none; }
.o-checks { display: flex; flex-wrap: wrap; gap: 4px 18px; }
.o-checks .o-check { min-height: auto; padding-top: 4px; }
.o-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: var(--o-h); padding: 8px 16px; border-radius: 8px; border: 1px solid transparent;
  background: var(--o-acc); color: var(--o-acc-ink); font: 600 14px/1.2 inherit; cursor: pointer; text-decoration: none; white-space: nowrap; }
.o-btn:hover { filter: brightness(.95); }
.o-btn.sec { background: #fff; color: var(--o-ink); border-color: #cfd0d9; }
.o-btn.ghost { background: transparent; color: var(--o-ink); border-color: transparent; }
.o-btn.danger { background: #fff; color: var(--o-err); border-color: #f0c2bd; }
.o-btn.sm { min-height: 32px; padding: 4px 10px; font-size: 13px; }
/* Symmetri (runde 3, 10.11.2026): en knapp i samme rad som et felt får feltets høyde («Lag mal», «Flytt» sto 8–10 px lavere), og
   dato- og tidsfelt er like høye som nedtrekk ved siden av (43 mot 40 px på PC, der skjemaene har to kolonner). */
form.o-row > .o-btn { align-self: stretch; }
.o-form > .o-alone { grid-column: 1 / -1; }   /* settes av ep.js (fillLone) på et felt som ellers står alene i raden */
@media (min-width: 901px) and (pointer: fine) { input[type=datetime-local], input[type=date] { height: var(--o-h); } }
.o-btn[disabled] { opacity: .5; cursor: not-allowed; }
.o-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; margin-top: 16px; }

table.o-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.o-table th { text-align: left; font-size: 12px; text-transform: uppercase; letter-spacing: .05em; color: var(--o-mut); padding: 8px 10px; border-bottom: 1px solid var(--o-line); white-space: nowrap; }
.o-table td { padding: 9px 10px; border-bottom: 1px solid #efeff4; vertical-align: top; }
.o-table tr:hover td { background: #fafafc; }
.o-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.o-scroll { overflow-x: auto; }
.o-pill { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12px; font-weight: 600; background: #eeeef3; color: #3b3c48; white-space: nowrap; }
.o-pill.ok { background: #e3f4ea; color: var(--o-ok); } .o-pill.err { background: #fbe7e5; color: var(--o-err); }
.o-pill.warn { background: #fdf1d8; color: var(--o-warn); } .o-pill.info { background: #e6edfb; color: var(--o-info); } .o-pill.acc { background: #ffe8db; color: #a33e00; }
.o-flash { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; font-size: 14px; border: 1px solid; }
.o-flash.ok { background: #effaf3; border-color: #bfe5cd; color: #0e5a33; } .o-flash.error { background: #fdf0ee; border-color: #f2c4bf; color: #8c1d13; }
.o-flash.info { background: #eef3fd; border-color: #c7d6f5; color: #1b3f84; }
.o-empty { text-align: center; padding: 32px 16px; color: var(--o-mut); }
.o-lock { background: #fff8f3; border: 1px dashed #ffbf99; }
.o-list { list-style: none; margin: 0; padding: 0; } .o-list li { padding: 8px 0; border-bottom: 1px solid #efeff4; } .o-list li:last-child { border: 0; }
.o-bar { height: 8px; background: #ececf2; border-radius: 999px; overflow: hidden; } .o-bar i { display: block; height: 100%; background: var(--o-acc); }
.o-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 14px; }
.o-tabs a { padding: 6px 12px; border-radius: 999px; text-decoration: none; background: #fff; border: 1px solid var(--o-line); font-size: 13px; }
.o-tabs a.on { background: var(--o-ink); color: #fff; border-color: var(--o-ink); }
details.o-more summary { cursor: pointer; font-weight: 600; padding: 6px 0; }
.o-code { font-family: ui-monospace, Menlo, monospace; font-size: 13px; background: #f1f1f5; padding: 2px 6px; border-radius: 6px; word-break: break-all; }


/* Oppstart for ny kunde (designrunden 8.11.2026) */
.o-start { padding: 28px; }
.o-start h2 { font-size: 20px; margin-bottom: 4px; }
.o-steps { list-style: none; counter-reset: st; margin: 18px 0 22px; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.o-steps li { counter-increment: st; border: 1px solid var(--o-line); border-radius: var(--o-r); padding: 14px 14px 14px 56px; position: relative; display: flex; flex-direction: column; gap: 4px; background: #fafafc; }
.o-steps li::before { content: counter(st); position: absolute; left: 14px; top: 14px; width: 30px; height: 30px; border-radius: 50%; background: var(--o-acc); color: var(--o-acc-ink); font-weight: 700; display: grid; place-items: center; }
.o-steps span { font-size: 13px; color: var(--o-mut); }
/* Bruk og funksjoner på abonnementssiden */
.o-usage li { display: flex; flex-direction: column; gap: 6px; }
.o-feats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 16px; }
.o-feats li { font-size: 14px; padding-left: 22px; position: relative; }
.o-feats li::before { position: absolute; left: 0; font-weight: 700; }
.o-feats li.ok::before { content: "✓"; color: var(--o-ok); } .o-feats li.no { color: var(--o-mut); } .o-feats li.no::before { content: "–"; }

/* Innlogging */
.o-auth { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: #0b0b10 radial-gradient(circle at 20% 0, rgba(255,106,26,.18), transparent 50%); }
.o-auth .o-card { width: 100%; max-width: 420px; padding: 28px; }
.o-auth h1 { font-size: 22px; margin: 0 0 6px; }
.o-auth .o-form { grid-template-columns: 1fr; }

/* Innsjekking, kiosk og stasjoner */
.o-scan { display: grid; grid-template-columns: 1.2fr 1fr; gap: var(--o-gap); align-items: stretch; }
.o-result { border-radius: var(--o-r); padding: 24px; text-align: center; font-size: 20px; font-weight: 700; min-height: 120px; display: grid; place-items: center; background: #f1f1f5; }
.o-result.ok { background: #e3f4ea; color: var(--o-ok); } .o-result.dublett, .o-result.ingen_tilgang { background: #fdf1d8; color: var(--o-warn); }
.o-result.ugyldig, .o-result.ikke_paameldt, .o-result.feil { background: #fbe7e5; color: var(--o-err); }
.o-kiosk { min-height: 100vh; display: grid; place-items: center; text-align: center; padding: 32px; color: #fff; }
.o-kiosk h1 { font-size: 40px; margin: 0 0 12px; } .o-kiosk p { font-size: 20px; opacity: .85; }
.o-kiosk input { max-width: 480px; margin: 24px auto 0; font-size: 20px; text-align: center; }
.o-badge-prev { border: 1px solid var(--o-line); border-radius: 6px; overflow: hidden; background: #fff; margin: 0 auto; }

@media (max-width: 1100px) { .o-scan { grid-template-columns: 1fr; } }
@media (max-width: 900px) {
  .o-shell { grid-template-columns: 1fr; }
  .o-side { position: fixed; top: 0; bottom: 0; left: 0; width: min(86vw, 320px); z-index: 30; transform: translateX(-102%); transition: transform .2s; height: 100%;
    padding-top: calc(14px + env(safe-area-inset-top)); padding-bottom: calc(24px + env(safe-area-inset-bottom)); }
  .o-shell.open .o-side { transform: none; }
  .o-side-close { display: inline-flex; align-items: center; justify-content: center; }
  .o-menu-btn { display: inline-flex; }
  body.o-has-tabs .o-menu-btn { display: none; }
  .o-top { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px 12px; padding: calc(10px + env(safe-area-inset-top)) 16px 10px; }
  body.o-has-tabs .o-top { grid-template-columns: minmax(0, 1fr); }
  body.o-has-tabs .o-top:has(.o-hubback) { grid-template-columns: auto minmax(0, 1fr); }
  .o-top h1 { font-size: 18px; }
  .o-top-actions { grid-column: 1 / -1; justify-content: flex-start; }
  .o-top-actions .o-btn { min-height: 36px; padding: 6px 12px; font-size: 13px; }
  .o-content { padding: 16px 16px 32px; }
  body.o-has-tabs .o-content { padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
  .o-tabs-bottom { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; background: var(--o-card); border-top: 1px solid var(--o-line);
    padding-bottom: env(safe-area-inset-bottom); box-shadow: 0 -4px 16px rgba(0,0,0,.04); }
  .o-form, .o-form.three, .o-two { grid-template-columns: 1fr; }
  .o-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .o-table thead { display: none; } .o-table tr { display: block; border-bottom: 1px solid var(--o-line); padding: 8px 0; position: relative; }
  .o-table td { display: flex; justify-content: space-between; gap: 12px; border: 0; padding: 4px 6px; text-align: right; }
  .o-table td::before { content: attr(data-l); color: var(--o-mut); font-size: 12px; text-align: left; flex: none; max-width: 45%; }
  .o-table td:not([data-l]) { justify-content: flex-start; text-align: left; }
  .o-table td.o-sel { position: absolute; top: 8px; right: 0; padding: 4px; }
  .o-table td.o-sel::before { content: none; }
  .o-table td:has(> input[type=checkbox]:only-child) { position: absolute; top: 8px; right: 0; padding: 4px; }
  .o-table td:has(> input[type=checkbox]:only-child)::before { content: none; }
  .o-steps { grid-template-columns: 1fr; }
  .o-feats { grid-template-columns: 1fr; }
  .o-filter { display: grid; grid-template-columns: 1fr 1fr; }
  .o-filter > input[type=search] { grid-column: 1 / -1; max-width: none !important; }
  .o-filter > select { max-width: none !important; }
  .o-filter > .o-btn { grid-column: 1 / -1; }
  .o-bulk { display: grid; grid-template-columns: 1fr 1fr; }
  .o-bulk > select { max-width: none !important; grid-column: 1 / -1; }
  .o-bulk > .o-check { min-height: 0; padding-top: 0; }
  .o-bulk > .o-btn { grid-column: 1 / -1; }
  .o-table td.o-title { font-weight: 600; font-size: 15px; justify-content: flex-start; text-align: left; padding-right: 40px; }
  .o-table td.o-title::before { content: none; }
  .o-link { flex-wrap: wrap; } .o-link .o-code { flex-basis: 100%; }
}

/* iPhone zoomer inn når et felt med skrift under 16 px får fokus (siden ble stående forskjøvet etter innlogging i LiveEvent Hub, 8.11.2026) */
@media (max-width: 900px), (pointer: coarse) {
  input[type=text], input[type=email], input[type=tel], input[type=password], input[type=number], input[type=url], input[type=search], input[type=datetime-local], input[type=date], select, textarea { font-size: 16px; }
}
.o-auth { grid-auto-rows: min-content; align-content: center; gap: 12px; }
.o-auth-back { justify-self: start; width: 100%; max-width: 420px; margin: 0 auto; color: #e9e9ef; font-weight: 600; text-decoration: none; padding: calc(env(safe-area-inset-top, 0px) + 4px) 0 4px; }
.o-auth-back:hover { text-decoration: underline; }
/* Skannerraden (innsjekk og kuponger): knapp og felt i full bredde på mobil, på linje med feltene over */
@media (max-width: 900px) { .o-scanrow > * { flex: 1 1 100%; max-width: none !important; } }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }
@media print { .o-side, .o-top, .o-actions, .o-btn, .o-tabs-bottom, .o-scrim { display: none !important; } .o-shell { display: block; } }
/* P2 utsendelser (runde 3 del 2): varsel om personvernforespørsler som venter (tekst til venstre, lenke til høyre på samme linje) */
.o-gdpr { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 16px; }
.o-gdpr a { font-weight: 600; color: inherit; white-space: nowrap; }
/* P1 venteliste (runde 3 del 2): «Flytt opp fra ventelisten» når det er ledige plasser, og linjen om slettede deltakere */
.o-wait { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; padding: 12px 14px; margin-bottom: 12px;
  border: 1px solid #f0d9a4; border-left: 4px solid var(--o-warn); border-radius: 8px; background: #fdf7e8; font-size: 14px; }
.o-wait form { margin: 0; }
.o-wait p { margin: 0; flex: 1 1 280px; }
@media (max-width: 600px) { .o-wait .o-btn { width: 100%; } .o-wait form { width: 100%; } }
/* P3 frakoblet (runde 3 del 2): innsjekk og kuponger uten nett. «ko» = lagt i kø på enheten, ikke bekreftet av serveren ennå */
.o-result.ko { border: 2px dashed currentColor; }
.o-result.ko:not(.ok) { background: #fdf1d8; color: var(--o-warn); }
.o-netbox { border-left-width: 4px; }
.o-syncbox .o-btn { margin-left: 8px; vertical-align: middle; }
.o-syncbox a { font-weight: 600; }
.o-offrow > .o-btn { flex: 0 1 auto; }
@media (max-width: 900px) { .o-offrow > .o-btn { flex: 1 1 100%; } }
.o-kiosk #ci-queue { opacity: .8; }
/* P4 verktøy (runde 3 del 2): kopier arrangement, deleknapper og bord. Hele arrangementskortet er lenke (o-evc-link dekker kortet),
   og «Kopier» ligger oppå som egen lenke. */
.o-evc { position: relative; display: flex; flex-direction: column; gap: 6px; }
.o-evc-link { color: inherit; text-decoration: none; }
.o-evc-link::after { content: ""; position: absolute; inset: 0; border-radius: var(--o-r); }
.o-evc:hover { border-color: #cfd0d9; }
.o-evc-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: auto; min-height: 32px; }
.o-evc-foot .o-btn { position: relative; z-index: 1; flex: none; }
.o-parts { border: 0; padding: 0; margin: 0; min-width: 0; }
.o-parts legend { font-size: 13px; font-weight: 600; padding: 0; margin-bottom: 2px; }
.o-parts > p { margin: 0 0 6px; }
.o-parts-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 18px; }
.o-parts-grid .o-check { min-height: 0; padding: 8px 0; }
.o-share { display: grid; gap: 8px; margin-bottom: 10px; }
.o-share .o-row { gap: 8px; }
.o-share-l { min-width: 78px; font-size: 13px; font-weight: 600; }
.o-field input[disabled] { background: var(--o-bg); color: var(--o-mut); }
.o-two + .o-card { margin-top: var(--o-gap); }
/* Verktøykort side om side (bordkort og bordliste): knappen står nederst i begge kortene */
.o-tool { display: flex; flex-direction: column; }
.o-tool > form { flex: 1; display: flex; flex-direction: column; }
.o-tool .o-actions { margin-top: auto; padding-top: 16px; }
.o-srclist { list-style: none; margin: 0; padding: 0; }
.o-srclist li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 0; border-top: 1px solid var(--o-line); }
.o-srclist li:first-child { border-top: 0; }
.o-srclist li > span { min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 900px) { .o-parts-grid { grid-template-columns: 1fr; } .o-share-l { flex-basis: 100%; } }
/* P1: filteret i deltakerlisten med bare ett nedtrekk (én deltakertype): nedtrekket fyller raden på mobil og nettbrett, ikke halve */
@media (max-width: 900px) { .o-filter > select:only-of-type { grid-column: 1 / -1; } }
/* P3 frakoblet: knapper, rader og meldinger med hidden skal ikke vises (display på klassen overstyrte attributtet, så «Send køen nå» sto framme med tom kø) */
.o-btn[hidden], .o-row[hidden], .o-flash[hidden] { display: none; }

/* Designrunden 11.11.2026 (D): status og neste steg øverst, varsler samlet, jevnere kort og lesbar tekst på oransje.
   Hovedknappen: mørk tekst (#15151b) på den godkjente oransje (#ff6a1a) gir kontrast 6,3:1 (hvit ga 2,9:1). Fargen er uendret. */
.o-tabs-bottom .on { color: var(--o-ink); } .o-tabs-bottom .on i { background: var(--o-acc); }
.o-next { background: var(--o-card); border: 1px solid var(--o-line); border-left: 4px solid var(--o-acc); border-radius: var(--o-r); padding: 16px 20px 18px; margin-bottom: var(--o-gap); }
.o-phase { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 4px; font-size: 12px; font-weight: 600; color: var(--o-mut); }
.o-phase li { display: flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 999px; background: #f1f1f5; }
.o-phase li + li::before { content: ""; }
.o-phase li.done { background: #e3f4ea; color: var(--o-ok); } .o-phase li.done::after { content: "✓"; }
.o-phase li.on { background: var(--o-ink); color: #fff; }
.o-next-body { display: flex; align-items: center; justify-content: space-between; gap: 12px 24px; flex-wrap: wrap; }
.o-next-body > div { flex: 1 1 320px; min-width: 0; }
.o-next-l { margin: 0; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--o-mut); }
.o-next h2 { margin: 2px 0 2px; font-size: 20px; line-height: 1.25; } .o-next p { margin: 0; color: var(--o-mut); font-size: 14px; }
.o-next .o-btn { flex: none; min-height: 44px; padding: 10px 20px; font-size: 15px; }
.o-todo > .o-flash:last-child, .o-todo > .o-wait:last-child { margin-bottom: 0; }
.o-todo .o-list li { gap: 8px 12px; } .o-todo .o-list li > span { flex: 1 1 200px; min-width: 0; }
.o-done > summary { display: flex; align-items: center; gap: 10px; font-size: 17px; font-weight: 700; padding: 0; }
.o-done[open] > summary { margin-bottom: 8px; }
.o-h2 { font-size: 15px; margin: 24px 0 10px; color: var(--o-mut); text-transform: uppercase; letter-spacing: .06em; }
.o-evc-nums { gap: 4px 14px; margin-top: 4px; }
.o-evc-next { margin-top: auto; padding-top: 10px; border-top: 1px solid #efeff4; }
.o-evc-foot { margin-top: 0; }
.o-evc-foot .o-btn.sm { min-height: 36px; }
.o-empty p { margin: 0 0 12px; } .o-empty > :last-child { margin-bottom: 0; }
@media (max-width: 900px) {
  .o-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .o-kpi { padding: 10px 10px; } .o-kpi b { font-size: 20px; } .o-kpi span { font-size: 12px; line-height: 1.25; display: block; }
  .o-kpi.txt b { font-size: 14px; }
  .o-next { padding: 14px 16px 16px; } .o-next h2 { font-size: 18px; } .o-next .o-btn { width: 100%; }
}
/* D: avkryssinger i kolonner på linje (Innstillinger), lagreknappen alltid synlig, rapportens nøkkeltall 4 + 4, luft mellom kortrader */
.o-checks.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 2px 18px; }
.o-checks.grid .o-check { padding: 6px 0; }
.o-sticky { position: sticky; bottom: 0; z-index: 4; margin: 16px -28px -64px; padding: 12px 28px; background: rgba(245,245,247,.94); border-top: 1px solid var(--o-line); backdrop-filter: blur(6px); }
.o-card[id], .o-field[id], h3[id] { scroll-margin-top: 84px; }
.o-two + .o-two { margin-top: var(--o-gap); }
@media (min-width: 901px) { .o-kpis.k4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 900px) {
  .o-sticky { margin: 16px -16px 0; padding: 10px 16px; bottom: calc(57px + env(safe-area-inset-bottom)); } .o-sticky .o-btn { width: 100%; }
  /* Deltakerlisten på mobil: tre linjer per deltaker (navn + status, kontakt + inne, bedrift + type) i stedet for sju */
  .o-ptable tr { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 2px 10px; padding: 10px 0; align-items: start; }
  .o-ptable td { display: block; padding: 0; text-align: left; min-width: 0; overflow-wrap: anywhere; } .o-ptable td::before { content: none; }
  .o-table.o-ptable td.o-sel { position: static !important; grid-column: 1; grid-row: 1 / span 3; padding: 3px 4px 0 0; }
  .o-ptable td.o-title { grid-column: 2; grid-row: 1; padding-right: 0; }
  .o-ptable td:nth-child(6) { grid-column: 3; grid-row: 1; text-align: right; }
  .o-ptable td:nth-child(3) { grid-column: 2; grid-row: 2; color: var(--o-mut); }
  .o-ptable td:nth-child(7) { grid-column: 3; grid-row: 2; text-align: right; font-size: 13px; color: var(--o-ok); font-weight: 600; white-space: nowrap; }
  .o-ptable td:nth-child(7):not(:empty)::after { content: " inne"; }
  .o-ptable td:nth-child(4) { grid-column: 2; grid-row: 3; font-size: 13px; }
  .o-ptable td:nth-child(5) { grid-column: 3; grid-row: 3; text-align: right; color: var(--o-mut); }
}
@media (min-width: 901px) { .o-filter > input[type=search] { flex: 1 1 320px; max-width: none !important; } .o-bulk > select:first-child { flex: 1 1 260px; max-width: none !important; } }
.o-fill > select, .o-fill > input[type=text] { flex: 1 1 200px; max-width: none !important; }
@media (max-width: 900px) { .o-fill > * { flex: 1 1 100%; max-width: none !important; } }
@media (max-width: 900px) { .o-scanrow > .o-btn { min-height: 52px; font-size: 16px; } #ci-count { font-size: 15px; font-weight: 600; color: var(--o-ink); } }
@media (max-width: 900px) { .o-kpis > .o-kpi.txt { grid-column: 1 / -1; } }
