/* Stena Fastigheter, felinbetalningar.
   Tokens och regler från Internal/aixia-design (V7).
   Svart/vitt bär designen; Scandinavian Blue är enda accent. */

:root {
  --aixia-black: #000000;
  --aixia-white: #ffffff;
  --aixia-blue: #78a0b3;
  --aixia-ink: #0a0a0a;
  --aixia-grey-700: #545454;
  --aixia-grey-500: #8a8a8a;
  --aixia-grey-300: #c8c8c8;
  --aixia-grey-200: #e2e2e2;
  --aixia-grey-100: #f1f0ee;
  --aixia-grey-50: #f8f7f5;

  --bg: var(--aixia-white);
  --bg-paper: var(--aixia-grey-100);
  --fg-1: var(--aixia-ink);
  --fg-2: var(--aixia-grey-700);
  --fg-3: var(--aixia-grey-500);
  --rule: var(--aixia-grey-200);
  --rule-strong: var(--aixia-black);
  --accent: var(--aixia-blue);

  --font-sans: "Inter", "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;
  --font-mono: "IBM Plex Mono", "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;

  --fs-h1: 64px;
  --fs-h3: 28px;
  --fs-h4: 20px;
  --fs-body: 16px;
  --fs-body-sm: 14px;
  --fs-meta: 11px;

  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px; --sp-4: 16px; --sp-5: 24px;
  --sp-6: 32px; --sp-7: 48px; --sp-8: 64px; --sp-9: 96px;

  --radius-sm: 2px;
  --radius-md: 6px;
  --tracking-eyebrow: 0.14em;
  --tracking-tight: -0.02em;
  --max-content: 1200px;
}

/* Designsystemet definierar inget mörkt läge. Det här är en återhållsam
   inversion av samma tokens. Inga nya färger införs. */
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0a0a0a;
    --bg-paper: #151515;
    --fg-1: #f1f0ee;
    --fg-2: #b4b4b4;
    --fg-3: #8a8a8a;
    --rule: #2b2b2b;
    --rule-strong: #f1f0ee;
  }
}

* { box-sizing: border-box; }

html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.45;
  color: var(--fg-1);
  background: var(--bg);
  font-weight: 400;
}

.wrap {
  max-width: var(--max-content);
  margin: 0 auto;
  padding: var(--sp-8) var(--sp-6) var(--sp-9);
}

@media (min-width: 900px) {
  .wrap { padding: var(--sp-9) var(--sp-8); }
}

/* ── Typografi ─────────────────────────────────────────────── */

.eyebrow {
  font-size: var(--fs-meta);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-3);
  margin: 0 0 var(--sp-4);
}

h1 {
  font-size: clamp(36px, 6vw, var(--fs-h1));
  font-weight: 400;
  line-height: 0.98;
  letter-spacing: var(--tracking-tight);
  margin: 0 0 var(--sp-5);
}

h2 {
  font-size: var(--fs-h3);
  font-weight: 400;
  line-height: 1.12;
  letter-spacing: var(--tracking-tight);
  margin: 0;
}

h3 {
  font-size: var(--fs-h4);
  font-weight: 400;
  margin: 0;
}

.lead { color: var(--fg-2); max-width: 62ch; margin: 0; }

/* ── Sidhuvud ──────────────────────────────────────────────── */

header { border-bottom: 1px solid var(--rule-strong); padding-bottom: var(--sp-6); }

/* Kundens logotyp. Ordmärket är #004D92, vilket mot mörk bakgrund ger drygt
   2:1 i kontrast. I mörkt läge ligger den därför på en ljus platta i stället
   för direkt mot bakgrunden. */
.logotyp { margin-bottom: var(--sp-5); }
.logotyp img { display: block; width: 160px; height: auto; }

@media (prefers-color-scheme: dark) {
  .logotyp {
    display: inline-block;
    background: var(--aixia-white);
    padding: var(--sp-3) var(--sp-4);
    border-radius: var(--radius-md);
  }
}

.meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2) var(--sp-5);
  margin-top: var(--sp-5);
  font-size: var(--fs-body-sm);
  color: var(--fg-2);
}
.meta dt {
  font-size: var(--fs-meta);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-3);
  margin: 0 0 var(--sp-1);
}
.meta dd { margin: 0; font-variant-numeric: tabular-nums; }
.meta > div { min-width: 120px; }

/* Senaste körningen ligger först och får lite mer tyngd än övrig metadata.
   Är den för gammal markeras den med accentfärgen, som annars bara används
   på nyckeltalet för felinbetalningar. */
.koerd dd { font-size: var(--fs-body); color: var(--fg-1); }
.koerd__exakt { font-size: var(--fs-meta); color: var(--fg-3); margin-top: 2px; }
.koerd--gammal dt { color: var(--accent); }
.koerd--gammal dd { color: var(--accent); font-weight: 700; }

.notis {
  margin-top: var(--sp-6);
  padding: var(--sp-4) var(--sp-5);
  background: var(--bg-paper);
  border-radius: var(--radius-md);
  font-size: var(--fs-body-sm);
  color: var(--fg-2);
}
.notis strong { color: var(--fg-1); font-weight: 700; }

/* Fel ska inte gå att missa, men inte heller skrika. Accentfärgen och en
   markerad kant räcker; sidan är i övrigt tom när detta visas. */
.notis--fel {
  border: 1px solid var(--accent);
  background: var(--bg);
  color: var(--fg-1);
}
.notis--fel strong { color: var(--accent); }

/* ── Flikar ────────────────────────────────────────────────── */

.flikar {
  display: flex;
  gap: var(--sp-6);
  margin-top: var(--sp-6);
  margin-bottom: calc(var(--sp-6) * -1 - 1px);
}
.flikar button {
  font: inherit;
  font-size: var(--fs-body-sm);
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  padding: 0 0 var(--sp-4);
  color: var(--fg-3);
  cursor: pointer;
  transition: color 120ms cubic-bezier(0.2, 0, 0, 1);
}
.flikar button:hover { color: var(--fg-1); }
.flikar button[aria-selected="true"] {
  color: var(--fg-1);
  border-bottom-color: var(--rule-strong);
}

/* ── Förklaringstexter ─────────────────────────────────────── */

.brod { max-width: 68ch; color: var(--fg-1); margin: 0 0 var(--sp-4); }
.brod.dim { color: var(--fg-2); font-size: var(--fs-body-sm); }
.brod em { font-style: italic; }

.lista { max-width: 68ch; margin: 0; padding-left: var(--sp-5); color: var(--fg-1); }
.lista li { margin-bottom: var(--sp-3); }
.lista li::marker { color: var(--fg-3); }

.steg { display: flex; gap: var(--sp-5); margin-bottom: var(--sp-7); }
.steg__nr {
  flex: none;
  width: 36px; height: 36px;
  display: grid; place-items: center;
  border: 1px solid var(--rule-strong);
  border-radius: 50%;
  font-size: var(--fs-body-sm);
}
.steg h3 { margin-bottom: var(--sp-3); }

/* OCR-figuren. Enda stället där accentfärgen används i den här vyn. */
.ocr-figur {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2) var(--sp-5);
  margin: var(--sp-5) 0;
  padding: var(--sp-5);
  background: var(--bg-paper);
  border-radius: var(--radius-md);
}
.ocr-figur > div { display: flex; flex-direction: column; gap: var(--sp-2); }
.ocr-del {
  font-family: var(--font-mono);
  font-size: 24px;
  letter-spacing: 0.08em;
  color: var(--fg-2);
}
.ocr-del--lyft {
  color: var(--accent);
  border-bottom: 2px solid var(--accent);
  padding-bottom: 2px;
}
.ocr-txt {
  font-size: var(--fs-meta);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-3);
}

/* ── Sektioner ─────────────────────────────────────────────── */

section { margin-top: var(--sp-8); }

.sektionshuvud {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-4);
  flex-wrap: wrap;
  border-top: 1px solid var(--rule-strong);
  padding-top: var(--sp-5);
  margin-bottom: var(--sp-5);
}

/* ── Nyckeltal ─────────────────────────────────────────────── */

.tal {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--sp-5);
  margin-top: var(--sp-6);
}
.tal > div { border-top: 1px solid var(--rule); padding-top: var(--sp-4); }
.tal dt {
  font-size: var(--fs-meta);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-3);
  margin-bottom: var(--sp-2);
}
.tal dd {
  margin: 0;
  font-size: 40px;
  line-height: 1;
  letter-spacing: var(--tracking-tight);
  font-variant-numeric: tabular-nums;
}
.tal .enhet { font-size: var(--fs-body-sm); color: var(--fg-2); margin-top: var(--sp-2); }
.tal .lyft dd { color: var(--accent); }

/* ── Filter ────────────────────────────────────────────────── */

.filter { display: flex; flex-wrap: wrap; gap: var(--sp-2); }

/* Två filterdimensioner, ort och kö. Egna rader så att det syns att de är
   oberoende och kombineras, i stället för en lång rad knappar. */
.filterrader { display: flex; flex-direction: column; gap: var(--sp-2); align-items: flex-end; }
.filter button {
  font: inherit;
  font-size: var(--fs-body-sm);
  padding: var(--sp-2) var(--sp-4);
  background: transparent;
  color: var(--fg-2);
  border: 1px solid var(--rule);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: border-color 120ms cubic-bezier(0.2, 0, 0, 1), color 120ms;
}
.filter button:hover { border-color: var(--fg-3); color: var(--fg-1); }
.filter button[aria-pressed="true"] {
  border-color: var(--rule-strong);
  color: var(--fg-1);
  font-weight: 700;
}

/* ── Tabeller ──────────────────────────────────────────────── */

.tabellyta { overflow-x: auto; }

table { width: 100%; border-collapse: collapse; font-size: var(--fs-body-sm); }

th {
  text-align: left;
  font-size: var(--fs-meta);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-3);
  font-weight: 400;
  padding: 0 var(--sp-4) var(--sp-3) 0;
  border-bottom: 1px solid var(--rule-strong);
  white-space: nowrap;
}
td {
  padding: var(--sp-3) var(--sp-4) var(--sp-3) 0;
  border-bottom: 1px solid var(--rule);
  vertical-align: top;
}
tbody tr:hover { background: var(--bg-paper); }

.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.mono { font-family: var(--font-mono); font-size: 13px; }
.dim { color: var(--fg-2); }

/* Konto och bolag i samma cell: namnet bär, numret ligger under som stöd. */
.konto__namn { display: block; }
.konto__nr {
  display: block;
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--fg-3);
  margin-top: 2px;
}

/* Osäker matchning markeras diskret med text, inte färgkodning. */
.osaker { color: var(--fg-2); font-size: var(--fs-meta); letter-spacing: 0.06em; text-transform: uppercase; }

.tom { color: var(--fg-2); padding: var(--sp-6) 0; }

/* ── Avvikelser ────────────────────────────────────────────── */

.orsaker { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: var(--sp-5); }
.orsak { border-top: 1px solid var(--rule); padding-top: var(--sp-4); }
.orsak .antal { font-size: var(--fs-h3); line-height: 1; font-variant-numeric: tabular-nums; }
.orsak .namn { color: var(--fg-2); margin-top: var(--sp-2); font-size: var(--fs-body-sm); }

footer {
  margin-top: var(--sp-9);
  padding-top: var(--sp-5);
  border-top: 1px solid var(--rule);
  font-size: var(--fs-meta);
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--fg-3);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3) var(--sp-5);
}

/* Aixias logotyp. Officiella SVG:er från Internal/aixia-design, oförändrade;
   den negativa varianten väljs av webbläsaren i mörkt läge. Medvetet liten,
   det är kundens verktyg och deras märke som ska bära sidhuvudet. */
.byggd { display: inline-flex; align-items: center; gap: var(--sp-3); }
.byggd img { display: block; width: 64px; height: auto; opacity: 0.7; }

/* ── Inloggning ────────────────────────────────────────────── */

/* Egen sida, inte en ruta ovanpå dashboarden: servern svarar med den här
   innan något av underlaget lämnar klustret. */
.login {
  max-width: 420px;
  margin: 0 auto;
  padding: var(--sp-9) var(--sp-6);
}
.login h1 {
  font-size: var(--fs-h3);
  letter-spacing: var(--tracking-tight);
  margin: 0 0 var(--sp-4);
}
.login .lead { font-size: var(--fs-body-sm); margin-bottom: var(--sp-6); }

.login-form { display: flex; flex-direction: column; gap: var(--sp-2); }
.login-form label {
  font-size: var(--fs-meta);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-3);
}
.login-form input {
  font: inherit;
  padding: var(--sp-3) var(--sp-4);
  color: var(--fg-1);
  background: var(--bg);
  border: 1px solid var(--rule);
  border-radius: var(--radius-sm);
}
.login-form input:focus {
  outline: none;
  border-color: var(--rule-strong);
}
.login-form button {
  font: inherit;
  font-weight: 700;
  margin-top: var(--sp-3);
  padding: var(--sp-3) var(--sp-4);
  /* Tokens, inte svart rakt av: i mörkt läge inverteras rule-strong och bg,
     så knappen byter håll tillsammans med resten av sidan. */
  color: var(--bg);
  background: var(--rule-strong);
  border: 1px solid var(--rule-strong);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: background-color 120ms cubic-bezier(0.2, 0, 0, 1);
}
.login-form button:hover { background: var(--fg-2); border-color: var(--fg-2); }

.login-fel {
  margin: 0 0 var(--sp-5);
  padding: var(--sp-3) var(--sp-4);
  font-size: var(--fs-body-sm);
  color: var(--fg-1);
  border-left: 2px solid var(--accent);
  background: var(--bg-paper);
}
.login-fot {
  margin-top: var(--sp-8);
  font-size: var(--fs-meta);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-3);
}
