/* ═══════════════════════════════════════════════════════════════
   TOKENS
   ═══════════════════════════════════════════════════════════════ */
:root {
  /* Blues */
  --blue-500:#2563eb; --blue-600:#1d4ed8; --blue-100:#dbeafe; --blue-50:#eff6ff;

  /* Adaptive text tokens (auto-flip in dark — use these instead of raw 600/700) */
  --blue-text:var(--blue-600); --green-text:var(--green-700);

  /* Ink / Text */
  --ink:#0b0d12; --ink-2:#1f2330; --ink-3:#374151;
  --muted:#6b7280; --muted-2:#9ca3af;

  /* Lines / Borders */
  --line:#e7e9ee; --line-2:#eef0f4; --line-3:#f3f4f6;

  /* Backgrounds */
  --bg:#ffffff; --bg-soft:#fafbfc; --bg-canvas:#f7f8fa;

  /* Semantic colours – rampe 50/100/500/600-700 */
  --green-500:#16a34a; --green-600:#15803d; --green-700:#047857; --green-50:#ecfdf5; --green-100:#dcfce7;
  --amber-500:#d97706; --amber-700:#b45309; --amber-50:#fffbeb; --amber-100:#fef3c7;
  --red-500:#dc2626;   --red-600:#b91c1c;   --red-700:#991b1b; --red-50:#fef2f2;   --red-100:#fee2e2;
  --grey-500:#6b7280;  --grey-700:#374151;  --grey-50:#f3f4f6;

  /* Typography */
  --font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace;

  /* Radii */
  --r-sm:6px; --r-md:8px; --r-lg:10px; --r-xl:12px; --r-2xl:14px; --r-pill:999px;

  /* Shadows */
  --shadow-xs:0 1px 0 rgba(15,17,24,.04);
  --shadow-sm:0 1px 2px rgba(15,17,24,.06);
  --shadow-logo:0 4px 10px -3px rgba(37,99,235,0.45);
  --shadow-md:0 8px 28px -16px rgba(15,17,24,.12);
  --shadow-lg:0 24px 64px -16px rgba(15,17,24,.22);

  /* Ring — translucent accent; works in both light and dark without token override */
  --ring-focus:0 0 0 3px color-mix(in srgb,var(--blue-500) 25%,transparent);
  --ring-error:0 0 0 3px color-mix(in srgb,var(--red-500) 25%,transparent);

  /* Card spacing */
  --card-px:20px; --card-py:15px;
  --card-mini-px:16px; --card-mini-py:14px;

  /* Motion */
  --ease:cubic-bezier(.4,0,.2,1); --t-fast:.12s; --t-med:.2s;
}

/* ── Semantic box text colours in dark (light tones for readability) ── */
html.dark .info-box{color:#93c5fd}
html.dark .modal-note{color:#fcd34d}
html.dark .confirm-box{color:#fca5a5}
html.dark .booking-warn{color:#fcd34d}
html.dark .alert-error{color:#fca5a5}
html.dark .alert-success{color:#86efac}
html.dark .callout-success{color:#93c5fd}
html.dark .callout-warn{color:#fcd34d}
html.dark .callout-danger{color:#fca5a5}

/* color-scheme so browser light-dark() (autofill, scrollbars, pickers) follows the theme */
html{color-scheme:light}

/* ── Dark mode tokens ── */
html.dark {
  color-scheme:dark;
  --ink:#f0f2f7; --ink-2:#d1d5e0; --ink-3:#9ca3af;
  --muted:#6b7280; --muted-2:#4b5563;
  --line:#2a2d38; --line-2:#242730; --line-3:#1f2230;
  --bg:#16181f; --bg-soft:#1c1f28; --bg-canvas:#12141b;
  --blue-50:#1e2a45; --blue-100:#1e3a5f;
  --green-50:#0d2218; --green-100:#102b1a;
  --amber-50:#201c0a; --amber-100:#2c2310;
  --red-50:#201010;  --red-100:#2e1414;
  --grey-50:#1e2028; --grey-700:#9ca3af;
  --blue-text:#93c5fd; --green-text:#86efac;
  /* Enhanced elevation on dark surfaces */
  --shadow-xs:0 1px 0 rgba(0,0,0,.2);
  --shadow-sm:0 1px 3px rgba(0,0,0,.3);
  --shadow-md:0 8px 28px -16px rgba(0,0,0,.5);
  --shadow-lg:0 24px 64px -16px rgba(0,0,0,.7);
}

/* ═══════════════════════════════════════════════════════════════
   RESET + BASE
   ═══════════════════════════════════════════════════════════════ */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--font);font-size:14px;line-height:1.5;color:var(--ink);background:var(--bg-canvas);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:'cv11','ss01'}
h1,h2,h3,h4{margin:0;color:var(--ink);letter-spacing:-0.02em;font-weight:600;line-height:1.2}
h1{font-size:28px;letter-spacing:-0.025em}
h2{font-size:22px;letter-spacing:-0.018em}
h3{font-size:18px}
p{margin:0;color:var(--ink-2)}

/* ═══════════════════════════════════════════════════════════════
   TYPOGRAPHY UTILITIES
   ═══════════════════════════════════════════════════════════════ */
.eyebrow{font-family:var(--mono);font-size:11px;color:var(--blue-500);font-weight:600;letter-spacing:0.08em;text-transform:uppercase;display:block}
.muted{color:var(--muted)}
.mono{font-family:var(--mono)}
.trunc{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default;min-width:0;display:block}

/* ═══════════════════════════════════════════════════════════════
   BUTTONS
   ═══════════════════════════════════════════════════════════════ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 18px;border-radius:var(--r-md);font:inherit;font-size:14px;font-weight:550;line-height:1;border:1px solid transparent;background:transparent;color:inherit;cursor:pointer;text-decoration:none;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease);white-space:nowrap}
.btn svg{width:14px;height:14px;flex:0 0 14px}

/* Sizes */
.btn-sm{padding:7px 12px;font-size:13px;border-radius:var(--r-sm)}
.btn-sm svg{width:12px;height:12px;flex:0 0 12px}
.btn-xsm{padding:4px 9px;font-size:12px;border-radius:var(--r-sm);gap:5px}
.btn-xsm svg{width:12px;height:12px}

/* Variants */
.btn-primary{background:var(--blue-500);color:#fff}
.btn-primary:hover:not(:disabled){background:var(--blue-600)}

.btn-secondary{background:var(--bg);color:var(--ink-2);border-color:var(--line)}
.btn-secondary:hover:not(:disabled){background:var(--bg-soft);border-color:#cdd2db}

.btn-danger{background:var(--red-500);color:#fff}
.btn-danger:hover:not(:disabled){background:var(--red-600)}

.btn-danger-ghost{background:var(--bg);color:var(--red-700);border:1px solid var(--line)}
.btn-danger-ghost:hover:not(:disabled){background:var(--red-50);border-color:#fecaca}

.btn-ring{background:var(--blue-50);color:var(--blue-600);border:1px solid var(--blue-100)}
.btn-ring:hover:not(:disabled){background:var(--blue-100);border-color:#bfdbfe}

.btn-ghost{background:transparent;color:var(--muted);border:none}
.btn-ghost:hover:not(:disabled){color:var(--ink-2);background:var(--bg-soft)}

/* Disabled */
.btn:disabled{opacity:.55;cursor:not-allowed}

/* Loading — is-loading overrides disabled opacity so variant colour is preserved */
.btn.is-loading{cursor:progress}
.btn.is-loading:disabled,.btn.is-loading[disabled]{opacity:1}
.btn .spinner{display:inline-block;width:13px;height:13px;border-radius:50%;border:2px solid color-mix(in srgb,currentColor 28%,transparent);border-top-color:currentColor;animation:btn-spin .8s linear infinite;vertical-align:middle}
@keyframes btn-spin{to{transform:rotate(360deg)}}

/* Icon button */
.ico-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--r-sm);border:none;background:transparent;color:var(--muted);cursor:pointer;transition:all var(--t-fast)}
.ico-btn svg{width:14px;height:14px;stroke-width:1.8}
.ico-btn:hover{background:var(--line-3);color:var(--ink-2)}
.ico-btn.danger:hover{background:var(--red-50);color:var(--red-600)}

/* Pagination button */
.pag-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;font:inherit;font-size:12.5px;font-weight:500;background:var(--bg);color:var(--ink-2);border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer}
.pag-btn:hover:not(:disabled){background:var(--bg-soft);border-color:#cdd2db}
.pag-btn:disabled{color:var(--muted-2);background:var(--bg);border-color:var(--line-2);cursor:not-allowed}
.pag-btn svg{width:12px;height:12px}
.pag-label{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;padding:0 4px}
.pag-label b{color:var(--ink-2);font-weight:600}

/* Numeric pager */
.pager{display:inline-flex;align-items:center;gap:4px;padding:4px;background:var(--bg);border:1px solid var(--line);border-radius:9px}
.pager button{min-width:30px;height:30px;padding:0 10px;border:none;background:transparent;border-radius:6px;font:inherit;font-size:13px;color:var(--ink-2);font-weight:500;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.pager button:hover{background:var(--bg-soft)}
.pager button.is-active{background:var(--blue-500);color:#fff}
.pager button.is-active:hover{background:var(--blue-600)}
.pager button.is-disabled{color:var(--muted-2);cursor:not-allowed}
.pager button.is-disabled:hover{background:transparent}
.pager .sep{color:var(--muted-2);padding:0 4px;user-select:none}

/* ═══════════════════════════════════════════════════════════════
   INPUTS + FORM
   ═══════════════════════════════════════════════════════════════ */
.input{width:100%;height:38px;padding:0 13px;font:inherit;font-size:13px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);outline:none;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
.input::placeholder{color:var(--muted-2)}
.input:hover{border-color:#cdd2db}
.input:focus{border-color:var(--blue-500);box-shadow:var(--ring-focus)}
.input[readonly]{background:var(--bg-soft);color:var(--muted);cursor:default}

/* Mask browser autofill so the field matches DS --bg rather than the browser's light fill */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:active{
  -webkit-box-shadow:0 0 0 1000px var(--bg) inset !important;
  -webkit-text-fill-color:var(--ink) !important;
  caret-color:var(--ink);
}
input:-webkit-autofill:focus{
  -webkit-box-shadow:0 0 0 1000px var(--bg) inset,var(--ring-focus) !important;
}

.select{height:38px;padding:0 28px 0 13px;font:inherit;font-size:13px;color:var(--ink);background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right 10px center no-repeat;border:1px solid var(--line);border-radius:var(--r-md);outline:none;-webkit-appearance:none;appearance:none;cursor:pointer;transition:border-color var(--t-fast) var(--ease)}
.select:hover{border-color:#cdd2db}
.select:focus{border-color:var(--blue-500);box-shadow:var(--ring-focus)}
.select-sm{height:32px;padding:0 24px 0 10px;border-radius:var(--r-sm);background-position:right 8px center}

.input-search{position:relative}
.input-search .ico{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);width:15px;height:15px;pointer-events:none}
.input-search .input{padding-left:36px}

.field{display:flex;flex-direction:column;gap:7px}
.field label,.field-l{font-size:12.5px;font-weight:550;color:var(--ink-2)}
.field-l{margin-bottom:5px}
.field-hint{font-size:11.5px;color:var(--muted-2);margin-top:4px}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* Checkbox */
.checkrow{display:inline-flex;align-items:center;gap:9px;font-size:12.5px;color:var(--ink-2);cursor:pointer;user-select:none;position:relative}
.checkrow input[type="checkbox"]{position:absolute;opacity:0;pointer-events:none}
.checkrow .box{width:16px;height:16px;border:1.5px solid var(--line);border-radius:4px;background:var(--bg);display:grid;place-items:center;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}
.checkrow .box svg{width:10px;height:10px;color:#fff;opacity:0}
.checkrow input:checked+.box{background:var(--blue-500);border-color:var(--blue-500)}
.checkrow input:checked+.box svg{opacity:1}

/* Toggle switch */
.toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer}
.switch{width:36px;height:20px;border-radius:var(--r-pill);background:var(--line);position:relative;transition:background .15s var(--ease);flex:0 0 36px}
.switch.on{background:var(--blue-500)}
.switch::after{content:'';position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .15s var(--ease);box-shadow:0 1px 2px rgba(0,0,0,.15)}
.switch.on::after{transform:translateX(16px)}
.toggle.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}

/* Segment control */
.seg{display:inline-flex;padding:3px;background:var(--line-3);border:1px solid var(--line);border-radius:var(--r-md)}
.seg-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;font:inherit;font-size:13px;font-weight:500;color:var(--ink-3);background:transparent;border:none;cursor:pointer;border-radius:5px;line-height:1;white-space:nowrap;transition:background-color .12s,color .12s}
.seg-btn.is-active{background:var(--blue-500);color:#fff;box-shadow:0 1px 2px rgba(15,17,24,.12)}

/* ═══════════════════════════════════════════════════════════════
   BADGES / PILLS
   ═══════════════════════════════════════════════════════════════ */
.badge{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:20px;padding:2px 9px 2px;border-radius:var(--r-pill);font-size:11.5px;font-weight:600;line-height:1;letter-spacing:.01em}
.badge::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}
.badge-no-dot::before{display:none}
.b-blue  {background:var(--blue-50); color:var(--blue-600)}
.b-green {background:var(--green-50);color:var(--green-700)}
.b-amber {background:var(--amber-50);color:var(--amber-700)}
.b-red   {background:var(--red-50);  color:var(--red-600)}
.b-grey  {background:var(--grey-50); color:var(--grey-700)}

#kpNotifCount{
  background:var(--blue-50);color:var(--blue-600);
  font-size:11px;font-weight:600;line-height:1;
  padding:1px 6px;margin-left:3px;border-radius:var(--r-pill);
  display:inline-flex;align-items:center;justify-content:center;
  min-width:16px;font-variant-numeric:tabular-nums;
}

/* .icd – monospace code chip */
.icd{display:inline-flex;align-items:center;font-family:var(--mono);font-size:10.5px;font-weight:600;background:var(--line-3);color:var(--ink-3);padding:2px 7px;border-radius:var(--r-sm);letter-spacing:0.03em;flex-shrink:0}

/* .du-badge – "dig" / "dig selv" inline chip */
.du-badge{display:inline-flex;align-items:center;padding:1px 7px;border-radius:var(--r-pill);background:var(--blue-50);color:var(--blue-600);font-size:11px;font-weight:600;margin-left:6px;vertical-align:middle}

/* ═══════════════════════════════════════════════════════════════
   CARD
   ═══════════════════════════════════════════════════════════════ */
.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-xs);overflow:hidden}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:var(--card-py) var(--card-px);border-bottom:1px solid var(--line-2)}
.card-head h3{font-size:14px;font-weight:600;margin:0}
.card-head .sub{font-size:12.5px;color:var(--muted);margin-top:2px}
.card-foot{display:flex;align-items:center;gap:8px;padding:13px var(--card-px);background:var(--bg-soft);border-top:1px solid var(--line-2)}
.card-left{flex:1;min-width:0}
.card-err{font-size:12px;color:var(--red-500);display:block;min-height:16px}

/* KPI card */
.kpi{display:flex;flex-direction:column;gap:10px;background:var(--bg);border:1px solid var(--line-2);border-radius:var(--r-xl);padding:18px 18px 16px;position:relative;overflow:hidden}
.kpi .top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.kpi .kpi-label{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:0.06em;text-transform:uppercase}
.kpi .ic{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex:0 0 30px}
.kpi .ic svg{width:16px;height:16px;stroke-width:1.8}
.kpi .num{font-size:34px;font-weight:600;letter-spacing:-0.025em;line-height:1;font-variant-numeric:tabular-nums}
.kpi .desc{font-size:12.5px;color:var(--ink-3);line-height:1.35;font-weight:500}
.kpi .delta{font-size:11.5px;color:var(--muted);font-weight:500;display:inline-flex;align-items:center;gap:5px;margin-top:2px}
.kpi.k-red   .num{color:var(--red-600)}  .kpi.k-red   .ic{background:var(--red-50);  color:var(--red-600)}
.kpi.k-green .num{color:var(--green-700)}.kpi.k-green .ic{background:var(--green-50);color:var(--green-700)}
.kpi.k-amber .num{color:var(--amber-700)}.kpi.k-amber .ic{background:var(--amber-50);color:var(--amber-700)}
.kpi.k-blue  .num{color:var(--blue-600)} .kpi.k-blue  .ic{background:var(--blue-50); color:var(--blue-600)}

/* ═══════════════════════════════════════════════════════════════
   SECTION HEAD (panel title row)
   ═══════════════════════════════════════════════════════════════ */
.sec-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line-2);flex-wrap:wrap}
.sec-head .lhs{display:flex;align-items:center;gap:10px;min-width:0}
.sec-head .sec-ic{width:30px;height:30px;border-radius:8px;background:var(--blue-50);color:var(--blue-600);display:grid;place-items:center;flex:0 0 30px}
.sec-head .sec-ic.amber{background:var(--amber-50);color:var(--amber-700)}
.sec-head .sec-ic.red{background:var(--red-50);color:var(--red-600)}
.sec-head .sec-ic svg{width:16px;height:16px;stroke-width:1.8}
.sec-head h3.tt{font-size:15px;letter-spacing:-0.01em;color:var(--ink);font-weight:600}

/* ═══════════════════════════════════════════════════════════════
   TABLES
   ═══════════════════════════════════════════════════════════════ */
/* .data-table – full-page panels */
table.data-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}
.data-table thead th{text-align:left;font-size:10.5px;color:var(--muted);font-weight:600;letter-spacing:0.04em;text-transform:uppercase;padding:10px 16px;background:var(--bg-soft);border-bottom:1px solid var(--line-2);white-space:nowrap}
.data-table tbody td{padding:12px 16px;border-bottom:1px solid var(--line-2);color:var(--ink-2);vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.data-table tbody tr:last-child td{border-bottom:1px solid var(--line-2)}
.data-table tbody tr{cursor:pointer;transition:background-color var(--t-fast) var(--ease)}
.data-table tbody tr:hover{background:var(--bg-soft)}
.data-table tbody tr.is-selected{background:var(--blue-50)}
.data-table tbody tr.passiv{opacity:.42}
.kat-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--blue-500);flex-shrink:0;margin-left:4px;vertical-align:middle}
.override-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--blue-500);margin-left:5px;vertical-align:middle}

/* .dtbl – settings/admin pages */
table.dtbl{width:100%;border-collapse:collapse;font-size:13px}
.dtbl thead th{text-align:left;font-size:10.5px;color:var(--muted-2);font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:9px 20px;border-bottom:1px solid var(--line-2);white-space:nowrap;background:var(--bg-soft)}
.dtbl tbody td{padding:12px 20px;border-bottom:1px solid var(--line-2);vertical-align:middle;color:var(--ink-2)}
.dtbl tbody tr:last-child td{border-bottom:none}
.dtbl tbody tr{transition:background-color var(--t-fast) var(--ease)}
.dtbl tbody tr:hover{background:var(--bg-soft)}
.empty-row td{text-align:center;color:var(--muted);padding:28px 20px!important}
.tbl-wrap{overflow-x:auto}

/* Patient cell */
.patient-cell{display:flex;align-items:center;width:100%;overflow:hidden}
.patient-cell .who{min-width:0;line-height:1.2}
.patient-cell .nm{display:block;font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.patient-cell .cpr{display:block;font-family:var(--mono);font-size:10.5px;color:var(--muted);margin-top:2px;letter-spacing:0.01em}

/* Date/status cells */
.tbl-dt{font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl-dt.is-overdue{color:var(--red-600);font-weight:550}
.data-table tbody td:has(>.tbl-dt.is-overdue){color:var(--red-600)}
.data-table tbody td:has(>.tbl-dt.is-soon){color:var(--amber-700)}
.tbl-dt.is-soon{color:var(--amber-700);font-weight:550}
.phone{font-family:var(--mono);font-size:12px;color:var(--ink-2);letter-spacing:0.02em;white-space:nowrap}
.col-actions{display:flex;align-items:center;gap:6px;justify-content:flex-end}

/* ═══════════════════════════════════════════════════════════════
   SCROLLBARS
   ═══════════════════════════════════════════════════════════════ */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:10px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:var(--line-2);border:2px solid transparent;background-clip:padding-box}
html{scrollbar-width:thin;scrollbar-color:var(--line) transparent}

/* ═══════════════════════════════════════════════════════════════
   MODAL
   ═══════════════════════════════════════════════════════════════ */
.modal-stage{display:none;position:fixed;inset:0;z-index:50;align-items:center;justify-content:center;padding:16px}
.modal-stage.is-open{display:flex}
.modal-backdrop{position:fixed;inset:0;background:rgba(11,13,18,.4);backdrop-filter:blur(2px)}
.modal{position:relative;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-2xl);box-shadow:var(--shadow-lg);width:100%;max-width:460px;max-height:90vh;overflow:hidden;z-index:1;display:flex;flex-direction:column}
.modal-head{padding:20px 24px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-shrink:0}
.modal-head .ttl{font-size:17px;font-weight:600;letter-spacing:-0.015em;color:var(--ink)}
.modal-head .sub{font-size:13px;color:var(--muted);margin-top:3px}
.modal-close{width:28px;height:28px;border-radius:var(--r-sm);background:transparent;border:none;cursor:pointer;color:var(--muted);display:grid;place-items:center;flex:0 0 28px;padding:0}
.modal-close:hover{background:var(--bg-soft);color:var(--ink-2)}
.modal-close svg{width:16px;height:16px;stroke-width:1.8}
.modal-body{padding:18px 24px;display:flex;flex-direction:column;gap:14px;flex:1;min-height:0;overflow-y:auto}
.modal-foot{padding:14px 24px 18px;display:flex;align-items:center;justify-content:flex-end;gap:8px;background:var(--bg-soft);border-top:1px solid var(--line-2);flex-shrink:0}
.modal-foot.is-split{justify-content:space-between}
.modal-fejl{font-size:12px;color:var(--red-500);min-height:16px}

/* 2-column toggle grid — modal krav sections */
.toggle-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:24px}
.toggle-grid .toggle-rk{border-bottom:none}
@media(max-width:520px){.toggle-grid{grid-template-columns:1fr}}

/* Inline note/confirm boxes */
.modal-note{background:var(--amber-50);border:1px solid var(--amber-100);border-radius:var(--r-md);padding:10px 14px;font-size:12.5px;color:var(--amber-700);line-height:1.5}
.confirm-box{background:var(--red-50);border:1px solid var(--red-100);border-radius:var(--r-md);padding:12px 16px;font-size:13px;color:var(--red-700);line-height:1.55}
.info-box{background:var(--blue-50);border:1px solid var(--blue-100);border-radius:var(--r-md);padding:10px 14px;font-size:12.5px;color:var(--blue-600);line-height:1.45;display:flex;align-items:flex-start;gap:8px}

/* ═══════════════════════════════════════════════════════════════
   TOAST
   ═══════════════════════════════════════════════════════════════ */
@keyframes toast-in{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}
@keyframes toast-out{from{opacity:1;transform:translateX(0);max-height:200px;margin-bottom:0}to{opacity:0;transform:translateX(20px);max-height:0;margin-bottom:-8px}}
#toastStack{position:fixed;top:18px;right:18px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:380px}
.toast{pointer-events:all;min-width:260px;max-width:380px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:0 12px 32px -8px rgba(15,17,24,.14);padding:14px 16px;display:flex;gap:10px;align-items:flex-start;border-left:3px solid var(--muted);animation:toast-in .3s cubic-bezier(.16,1,.3,1) both}
.toast.is-leaving{animation:toast-out .22s var(--ease) both;pointer-events:none}
.toast.t-success{border-left-color:var(--green-500)}
.toast.t-error  {border-left-color:var(--red-600)}
.toast.t-warning{border-left-color:var(--amber-700)}
.toast.t-info   {border-left-color:var(--blue-500)}
.toast-ic{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;flex:0 0 28px;margin-top:1px}
.toast-ic svg{width:14px;height:14px;stroke-width:2.2}
.toast.t-success .toast-ic{background:var(--green-50);color:var(--green-700)}
.toast.t-error   .toast-ic{background:var(--red-50);color:var(--red-600)}
.toast.t-warning .toast-ic{background:var(--amber-50);color:var(--amber-700)}
.toast.t-info    .toast-ic{background:var(--blue-50);color:var(--blue-600)}
html.dark .toast.t-error   .toast-ic{color:var(--red-500)}
html.dark .toast.t-warning .toast-ic{color:var(--amber-500)}
.toast-body{flex:1;min-width:0}
.toast-titel{font-size:13.5px;font-weight:600;color:var(--ink);line-height:1.3}
.toast-besked{font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.45}
.toast-x{width:22px;height:22px;border:none;background:transparent;cursor:pointer;color:var(--muted-2);display:grid;place-items:center;flex:0 0 22px;border-radius:5px;padding:0}
.toast-x:hover{background:var(--bg-soft);color:var(--ink-2)}
.toast-x svg{width:13px;height:13px;stroke-width:2}

/* ═══════════════════════════════════════════════════════════════
   STEPPER
   ═══════════════════════════════════════════════════════════════ */
/* Horizontal progress stepper — N steps, connectors auto via ::before/::after */
.stepper{display:flex;align-items:flex-start}
.stepper .step{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;position:relative}
.stepper .step-circ{width:28px;height:28px;border-radius:50%;background:var(--bg);border:1.5px solid var(--line);color:var(--muted);display:grid;place-items:center;font-size:12.5px;font-weight:600;font-family:var(--mono);transition:background-color .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease);position:relative;z-index:1;flex-shrink:0}
.stepper .step-check{width:13px;height:13px;display:none;stroke-width:2.8}
.stepper .step-num{line-height:1;position:relative;top:.5px}
.stepper .step-lbl{font-size:13px;font-weight:550;color:var(--muted);text-align:center;line-height:1.3;white-space:nowrap;transition:color .2s var(--ease)}
.stepper .step-sub{font-size:11px;color:var(--muted-2);text-align:center;font-family:var(--mono);letter-spacing:.02em}
/* Connector — grey base, spans prev-circle-center → this-circle-center */
.stepper .step:not(:first-child)::before{content:"";position:absolute;top:13px;left:-50%;right:50%;height:1.5px;background:var(--line);border-radius:1px;z-index:0}
/* Connector — blue fill drawn left→right when preceding step is done */
.stepper .step:not(:first-child)::after{content:"";position:absolute;top:13px;left:-50%;right:50%;height:1.5px;background:var(--blue-500);border-radius:1px;transform:scaleX(0);transform-origin:left;transition:transform .38s var(--ease);z-index:0}
.stepper .step.is-done+.step::after{transform:scaleX(1)}
/* Active */
.stepper .step.is-active .step-circ{border-color:var(--blue-500);color:var(--blue-500);background:var(--blue-50)}
.stepper .step.is-active .step-lbl{color:var(--ink);font-weight:600}
/* Done */
.stepper .step.is-done .step-circ{background:var(--blue-500);border-color:var(--blue-500);color:#fff}
.stepper .step.is-done .step-num{display:none}
.stepper .step.is-done .step-check{display:block}
.stepper .step.is-done .step-lbl{color:var(--ink-2)}
@media(prefers-reduced-motion:reduce){.stepper .step-circ{transition:none!important}.stepper .step::before,.stepper .step::after{transition:none!important}}

/* ═══════════════════════════════════════════════════════════════
   ENHANCED EMPTY STATES (v2.2)
   ═══════════════════════════════════════════════════════════════ */
.empty-state.est-lrg{padding:56px 24px 48px;gap:16px}
.empty-state .ill-tile{width:68px;height:68px;border-radius:var(--r-2xl);background:var(--line-3);border:1px solid var(--line-2);display:grid;place-items:center;flex:0 0 68px}
.empty-state .ill-tile svg{width:30px;height:30px;color:var(--muted-2);stroke-width:1.4}
.empty-state.est-lrg .ttl{font-size:16px;letter-spacing:-0.01em}
.empty-state.est-lrg .sub{font-size:13.5px;max-width:280px;line-height:1.5}

/* ═══════════════════════════════════════════════════════════════
   SIDEBAR
   ═══════════════════════════════════════════════════════════════ */
.logo{display:inline-flex;align-items:center;gap:9px;font-size:17px;font-weight:600;letter-spacing:-0.02em;color:var(--ink);text-decoration:none}
.logo-mark{width:22px;height:22px;border-radius:var(--r-sm);background-color:var(--blue-500);position:relative;display:grid;place-items:center;flex:0 0 22px;box-shadow:var(--shadow-logo);background-image:url(/img/logo-plus.svg);background-repeat:no-repeat;background-size:100% 100%}
.logo .lt{color:var(--muted-2);font-weight:500}

.sb-section-label{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted-2);padding:14px 10px 6px}
.sb-item{display:flex;align-items:center;gap:11px;padding:8px 11px;border-radius:7px;font-size:13px;font-weight:500;color:var(--ink-3);cursor:pointer;text-decoration:none;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.sb-item svg{width:17px;height:17px;color:var(--muted);flex:0 0 17px;stroke-width:1.6}
.sb-item:hover{background:var(--bg-soft);color:var(--ink-2)}
.sb-item.is-active{background:var(--blue-50);color:var(--blue-600);font-weight:550}
.sb-item.is-active svg{color:var(--blue-500)}
.sb-item .ct{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;height:18px;min-width:18px;padding:0 6px;border-radius:var(--r-pill);font-size:10.5px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums;background:var(--line-3);color:var(--ink-3)}
.sb-item.is-active .ct{background:var(--blue-500);color:#fff}
.sb-item .ct:empty{display:none}
.sb-divider{height:1px;background:var(--line-2);margin:14px 6px 12px}

.sb-user{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;position:relative}
.sb-user:hover{background:var(--bg-soft)}
.sb-user .meta{min-width:0;flex:1;line-height:1.25}
.sb-user .nm{font-size:13px;font-weight:550;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb-user .rl{font-size:11.5px;color:var(--muted)}
.sb-user .cog{color:var(--muted);width:16px;height:16px;flex:0 0 16px}
.sb-user:hover .cog{color:var(--ink-2)}

.sb-menu{display:none;position:absolute;left:100%;bottom:0;margin-left:8px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:0 12px 32px -8px rgba(15,17,24,.12);padding:6px;min-width:200px;z-index:100}
.sb-menu.open{display:block}
.sb-menu-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--r-md);font-size:13px;font-weight:500;color:var(--ink-2);cursor:pointer;text-decoration:none;background:transparent;border:none;width:100%;text-align:left;font-family:var(--font)}
.sb-menu-item svg{width:15px;height:15px;color:var(--muted);flex:0 0 15px}
.sb-menu-item:hover{background:var(--bg-soft);color:var(--ink)}
.sb-menu-item.danger{color:var(--red-600)}
.sb-menu-item.danger svg{color:var(--red-500)}
.sb-menu-item.danger:hover{background:var(--red-50)}
.sb-menu-divider{height:1px;background:var(--line-2);margin:4px 0}

/* Theme segmented control i sb-menu — fuld bredde, bygget ind i menuen */
.theme-seg{display:grid;grid-template-columns:repeat(3,1fr);margin:6px -6px;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.theme-seg-btn{display:flex;align-items:center;justify-content:center;height:40px;border:none;background:transparent;color:var(--muted);cursor:pointer;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.theme-seg-btn+.theme-seg-btn{border-left:1px solid var(--line-2)}
.theme-seg-btn:hover{color:var(--ink-2);background:var(--bg-soft)}
.theme-seg-btn.is-active{color:var(--blue-text);background:var(--blue-50)}
.theme-seg-btn svg{width:16px;height:16px;stroke-width:1.8}

/* ═══════════════════════════════════════════════════════════════
   SKELETON / GHOST LOADING
   ═══════════════════════════════════════════════════════════════ */
@keyframes skeleton-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.skeleton {
  background: linear-gradient(90deg,var(--bg-soft) 25%,var(--line-2) 50%,var(--bg-soft) 75%);
  background-size: 200% 100%;
  animation: skeleton-shimmer 1.4s ease-in-out infinite;
  border-radius: 4px;
  color: transparent !important;
  user-select: none;
  pointer-events: none;
}
.skeleton * { color: transparent !important; }

.sidebar.is-loading .ct { opacity: 0; }

/* Sidebar container (page-level, brugt af alle sider med sidebar.js) */
.sidebar{position:sticky;top:0;height:100vh;background:var(--bg);border-right:1px solid var(--line-2);display:flex;flex-direction:column;padding:18px 14px;z-index:10}
.sidebar .sb-nav{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0;overflow-y:auto}

/* ═══════════════════════════════════════════════════════════════
   PAGE LAYOUTS
   ═══════════════════════════════════════════════════════════════ */
.page-shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
.main-full{padding:36px 40px 64px;min-width:0}
.main-canvas{height:100vh;overflow-y:auto;background:var(--bg-canvas)}
.content-narrow{max-width:1040px;margin:0 auto;padding:44px 32px 96px}

/* Page head (wide pages: kontrolpanel, patientliste) */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:28px;flex-wrap:wrap}
.page-head .titlewrap{min-width:0}
.page-head .eyebrow{margin-bottom:8px}
.page-head h1{font-size:30px;letter-spacing:-0.025em}
.page-head .actions{display:flex;align-items:center;gap:8px}

/* Page head (narrow pages: administration, systemadministration) */
.page-head-narrow{margin-bottom:4px}
.page-head-narrow h1{font-size:24px;letter-spacing:-0.025em;margin-bottom:6px}
.page-head-narrow p{font-size:14px;color:var(--muted)}

/* Page section (narrow pages) */
.page-section{padding-top:40px}
.page-section-head{margin-bottom:14px}
.page-section-head h2{font-size:15px;font-weight:600;letter-spacing:-0.01em;margin-bottom:3px}
.page-section-head p{font-size:13px;color:var(--muted);margin:0}

/* Settings field row (administration, systemadministration) */
.settings-row{display:flex;flex-direction:row-reverse;align-items:center;justify-content:space-between;gap:24px;padding:16px 20px;border-bottom:1px solid var(--line-2)}
.settings-row:last-of-type{border-bottom:none}
.settings-ctrl{flex:0 0 auto;width:46%;max-width:300px}
.settings-meta{flex:1;min-width:0}
.settings-meta label{display:block;font-size:13px;font-weight:500;color:var(--ink)}
.settings-meta .desc{font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.45}

/* Panel (card with paginated table inside) */
.panel{display:flex;flex-direction:column;overflow:hidden}
.panel .panel-tools{padding:14px 20px;border-bottom:1px solid var(--line-2);background:var(--bg)}
.panel .panel-body{flex:1;overflow:hidden;display:flex;flex-direction:column}
.panel .panel-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px;background:var(--bg-soft);flex-wrap:wrap}
.panel .panel-foot .pag-ctl{display:flex;align-items:center;gap:8px}
.panel .data-table thead th{padding:10px 20px;background:var(--bg);border-bottom:1px solid var(--line-2)}
.panel .data-table tbody td{padding:11px 20px;height:52px;border-bottom:1px solid var(--line-2)}

/* Split layout (patientliste) */
.split{display:grid;grid-template-columns:360px 1fr;gap:24px;align-items:start}
.list-col{position:sticky;top:24px;height:calc(100vh - 120px);display:flex;flex-direction:column}

/* Patient list */
.pt-list{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-xl);overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0}
.pt-list-head{padding:12px 16px;border-bottom:1px solid var(--line-2);background:var(--bg);display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0}
.pt-list-head .ttl{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:0.06em;text-transform:uppercase}
.pt-rows{flex:1;min-height:0;overflow-y:auto}
.pt-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line-2);cursor:pointer;transition:background-color var(--t-fast) var(--ease);border-left:3px solid transparent}
.pt-row:last-child{border-bottom:none}
.pt-row:hover{background:var(--bg-soft)}
.pt-row.is-active{background:var(--blue-50);border-left-color:var(--blue-500)}
.pt-row.is-active .nm{color:var(--blue-600)}
.pt-row .who{flex:1;min-width:0;line-height:1.25}
.pt-row .top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pt-row .nm{font-size:13.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-row .cpr{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:2px;letter-spacing:0.01em}
.pt-row .chev{color:var(--muted-2);flex:0 0 14px;width:14px;height:14px}

/* Category pill filter (patientliste) */
.cat-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cat-pill{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:var(--r-pill);background:var(--bg);color:var(--ink-3);border:1px solid var(--line);font-size:12.5px;font-weight:500;line-height:1;cursor:pointer;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease);font-family:var(--font)}
.cat-pill:hover{border-color:#cdd2db;color:var(--ink-2)}
.cat-pill .ct{display:inline-flex;align-items:center;font-family:var(--mono);font-size:10.5px;color:var(--muted-2);padding-left:6px;border-left:1px solid var(--line);margin-left:1px}
.cat-pill.is-active{background:var(--blue-500);color:#fff;border-color:var(--blue-500)}
.cat-pill.is-active .ct{color:rgba(255,255,255,.75);border-left-color:rgba(255,255,255,.3)}

/* Dx card (patientliste diagnose-kort) */
.dx-card{background:var(--bg);border:1px solid var(--line-2);border-radius:var(--r-lg);display:flex;flex-direction:column;overflow:hidden}
.dx-card-head{padding:var(--card-mini-py) var(--card-mini-px) 12px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line-2)}
.dx-card-head .ttl{font-size:14px;font-weight:600;color:var(--ink);line-height:1.3}
.dx-card-head .sub{font-size:11.5px;color:var(--muted);margin-top:3px}
.dx-card-body{padding:var(--card-mini-py) var(--card-mini-px);display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;flex:1}
.dx-field .lab{font-family:var(--mono);font-size:10px;color:var(--muted);font-weight:600;letter-spacing:0.08em;text-transform:uppercase;margin-bottom:4px}
.dx-field .val{font-size:13px;color:var(--ink-2);font-weight:500;display:flex;align-items:center;gap:6px}
.dx-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px var(--card-mini-px);border-top:1px solid var(--line-2);background:var(--bg-soft)}

/* Info grid (patient detail) */
.pt-info{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-2);border:1px solid var(--line-2);border-radius:var(--r-lg);overflow:hidden}
.pt-info .cell{background:var(--bg);padding:12px 16px}
.pt-info .lab{font-family:var(--mono);font-size:10px;color:var(--muted);font-weight:600;letter-spacing:0.08em;text-transform:uppercase;margin-bottom:4px}
.pt-info .val{font-size:13px;color:var(--ink);font-weight:500}

/* Empty state */
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 32px;gap:12px;color:var(--muted);text-align:center}
.empty-state svg{width:40px;height:40px;opacity:0.3}
.empty-state .ttl{font-size:15px;font-weight:600;color:var(--ink-3)}
.empty-state .sub{font-size:13px;color:var(--muted)}

/* Skeleton */
.skel{background:var(--line-3);border-radius:4px;animation:skel-pulse 1.4s ease-in-out infinite}
@keyframes skel-pulse{0%,100%{opacity:1}50%{opacity:.5}}

/* List blank state */
.list-empty-bar{display:flex;align-items:center;gap:10px;padding:12px 16px;font-size:12px;color:var(--muted-2);font-family:var(--mono);letter-spacing:0.02em;user-select:none}
.list-empty-bar::before,.list-empty-bar::after{content:'';flex:1;height:1px;background:var(--line-2);min-width:8px}

/* Tab nav (diagnosekonfiguration) */
.tab-nav{display:flex;gap:2px;border-bottom:1px solid var(--line-2)}
.tab-btn{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;font:inherit;font-size:13px;font-weight:500;color:var(--muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease);margin-bottom:-1px;white-space:nowrap}
.tab-btn:hover{color:var(--ink-2)}
.tab-btn.is-active{color:var(--blue-600);font-weight:600;border-bottom-color:var(--blue-500)}

/* ═══════════════════════════════════════════════════════════════
   AUTH LAYOUT
   ═══════════════════════════════════════════════════════════════ */
.login{display:grid;grid-template-columns:480px 1fr;min-height:100vh}

/* Brand panel */
.auth-brand{position:relative;background:#0b0d12;color:#fff;padding:40px 44px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.auth-brand::before{content:'';position:absolute;inset:auto -20% -40% auto;width:520px;height:520px;background:radial-gradient(circle at center,rgba(37,99,235,0.32) 0%,rgba(37,99,235,0.08) 38%,transparent 65%);pointer-events:none}
.auth-brand::after{content:'';position:absolute;inset:-30% auto auto -20%;width:380px;height:380px;background:radial-gradient(circle at center,rgba(29,78,216,0.22) 0%,transparent 60%);pointer-events:none}
.auth-brand>*{position:relative;z-index:1}
.auth-brand-top{display:flex;align-items:center;justify-content:space-between}
.auth-brand-top .v{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.4);padding:4px 9px;border:1px solid rgba(255,255,255,.12);border-radius:var(--r-sm)}
.auth-brand-mid{display:flex;flex-direction:column;gap:28px}
.auth-brand-quote{font-size:30px;font-weight:600;line-height:1.18;letter-spacing:-0.025em;color:#fff;max-width:380px;text-wrap:balance}
.auth-brand-quote::before{content:'';display:block;width:36px;height:2px;background:var(--blue-500);margin-bottom:24px;border-radius:1px}
.feature-list{display:flex;flex-direction:column;gap:14px;list-style:none;padding:0;margin:0}
.feature-list li{display:flex;align-items:center;gap:12px;font-size:13.5px;color:rgba(255,255,255,.82);font-weight:450}
.feature-list .ck{width:22px;height:22px;border-radius:50%;background:rgba(37,99,235,.18);color:var(--blue-500);display:grid;place-items:center;flex:0 0 22px;border:1px solid rgba(37,99,235,.3)}
.feature-list .ck svg{width:11px;height:11px;stroke-width:3}
.ck{width:22px;height:22px;border-radius:50%;background:rgba(37,99,235,.18);color:var(--blue-text);display:grid;place-items:center;flex:0 0 22px;border:1px solid rgba(37,99,235,.3)}
.ck svg{width:13px;height:13px;stroke-width:2.8}
.ck.ck-green{background:rgba(22,163,74,.18);color:var(--green-text);border-color:rgba(22,163,74,.3)}
.auth-brand-foot{display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:rgba(255,255,255,.35);letter-spacing:.05em}
.auth-brand-foot a{color:rgba(255,255,255,.55);text-decoration:none}
.auth-brand-foot a:hover{color:#fff}
.formpane{display:flex;align-items:center;justify-content:center;padding:40px 32px;background:var(--bg-canvas)}
.formcard{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-2xl);padding:36px 40px;width:100%;max-width:400px;box-shadow:var(--shadow-md)}
.formfoot{text-align:center;font-size:12.5px;color:var(--muted);margin-top:20px}

/* Simpler auth header (ny-adgangskode, glemt-adgangskode) */
.topbar{height:60px;display:flex;align-items:center;justify-content:center;background:var(--bg);border-bottom:1px solid var(--line-2)}
.auth-stage{min-height:calc(100vh - 60px);display:flex;align-items:center;justify-content:center;padding:40px 20px;background:var(--bg-canvas)}
.auth-card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-2xl);padding:36px 40px;width:100%;max-width:420px;box-shadow:var(--shadow-md)}
.auth-card h2{font-size:22px;font-weight:600;margin-bottom:8px}
.auth-card .sub{font-size:13.5px;color:var(--muted);margin-bottom:28px;line-height:1.5}

/* Logo variants */
.logo-mark.lg{width:32px;height:32px;flex:0 0 32px;border-radius:var(--r-md);box-shadow:0 4px 14px -4px rgba(37,99,235,0.45)}
.logo.on-dark span{color:#fff}
.logo.on-dark .lt{color:rgba(255,255,255,.5)}

/* ═══════════════════════════════════════════════════════════════
   INPUT-WRAP (icon-prefixed inputs)
   ═══════════════════════════════════════════════════════════════ */
.input-wrap{position:relative;display:flex;align-items:center}
.input-wrap .ico-lead{position:absolute;left:13px;color:var(--muted);width:16px;height:16px;pointer-events:none;z-index:1;flex:0 0 16px}
.input-wrap .ico-trail{position:absolute;right:10px;color:var(--muted);width:20px;height:20px;background:none;border:none;cursor:pointer;padding:2px;display:grid;place-items:center;border-radius:4px}
.input-wrap .ico-trail:hover{color:var(--ink-2)}
.input-wrap .input{width:100%;padding-left:40px}
.input-wrap.has-trail .input{padding-right:36px}
.input-wrap.is-focused .input{border-color:var(--blue-500);box-shadow:var(--ring-focus)}
.input-wrap.is-error .input{border-color:var(--red-500);box-shadow:var(--ring-error)}
.input-wrap.is-focused .ico-lead{color:var(--blue-500)}
.input-wrap.is-error .ico-lead{color:var(--red-500)}

/* Alert banners */
.alert{border-radius:var(--r-md);padding:11px 14px;font-size:13px;line-height:1.45;display:flex;align-items:flex-start;gap:9px}
.alert svg{width:15px;height:15px;flex:0 0 15px;margin-top:1px}
.alert-error  {background:var(--red-50);  color:var(--red-700);  border:1px solid var(--red-100)}
.alert-success{background:var(--green-50);color:var(--green-700);border:1px solid var(--green-100)}

/* Inline form-/modal-fejlboks (display:none indtil sat) */
.om-err{font-size:12.5px;color:var(--red-600);padding:8px 12px;background:var(--red-50);border:1px solid var(--red-100);border-radius:var(--r-md)}

/* Password strength bar */
.strength{display:flex;gap:3px;margin-top:8px}
.strength span{flex:1;height:3px;border-radius:2px;background:var(--line-3);transition:background .25s}
.strength[data-level="1"] span:nth-child(1){background:var(--red-500)}
.strength[data-level="2"] span:nth-child(-n+2){background:var(--amber-500)}
.strength[data-level="3"] span:nth-child(-n+3){background:var(--blue-500)}
.strength[data-level="4"] span{background:var(--green-500)}
.strength-label{font-size:11.5px;color:var(--muted);margin-top:5px;min-height:16px}

/* Form helpers */
.btn-full{width:100%;height:44px;font-size:14.5px}
.cb-remember{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);cursor:pointer;user-select:none}
.forgot-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.lnk{font-size:13px;color:var(--blue-500);text-decoration:none;font-weight:500}
.lnk:hover{text-decoration:underline}
.form-divider{display:flex;align-items:center;gap:10px;color:var(--muted-2);font-size:12px;font-weight:500}
.form-divider::before,.form-divider::after{content:'';flex:1;height:1px;background:var(--line-2)}
.field.has-error .input,.field.has-error .input-wrap .input{border-color:var(--red-500);box-shadow:var(--ring-error)}
.field-err{font-size:11.5px;color:var(--red-500);margin-top:4px}
.textarea{width:100%;padding:11px 13px;font:inherit;font-size:13px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);outline:none;resize:vertical;min-height:90px;line-height:1.5;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
.textarea::placeholder{color:var(--muted-2)}
.textarea:hover{border-color:#cdd2db}
.textarea:focus{border-color:var(--blue-500);box-shadow:var(--ring-focus)}

/* ═══════════════════════════════════════════════════════════════
   BOOKING / PATIENT FLOW (indkaldelse.html)
   ═══════════════════════════════════════════════════════════════ */
.screen-layout{min-height:100vh;background:var(--bg-canvas)}
.screen-head{background:var(--bg);border-bottom:1px solid var(--line-2);padding:18px 28px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}
.screen-head .clinic-info{font-size:13px;color:var(--muted);white-space:nowrap}
.screen-head .clinic-nm{color:var(--ink-2);font-weight:600}
.screen-head .clinic-sep,.screen-head .clinic-addr{color:var(--muted)}
.screen-head.is-stacked{flex-direction:column;align-items:center;justify-content:center}
.screen-head.is-stacked .clinic-info{display:none}
.screen-body{padding:32px 24px 80px;display:flex;justify-content:center}
.booking-col{width:100%;max-width:680px}
.booking-col .stepper{margin-bottom:32px}
.stp{display:flex;align-items:center;gap:8px}
.booking-circ{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);background:var(--bg);color:var(--muted);font-size:12px;font-weight:600;display:grid;place-items:center;flex:0 0 28px;transition:all .2s}
.stp.is-active .booking-circ{border-color:var(--blue-500);background:var(--blue-500);color:#fff}
.stp.is-done .booking-circ{border-color:var(--blue-500);background:var(--blue-500);color:#fff}
.stp .lbl{font-size:12.5px;font-weight:500;color:var(--muted);white-space:nowrap}
.stp.is-active .lbl{color:var(--ink-2);font-weight:600}
.stp.is-done .lbl{color:var(--blue-600)}
.booking-conn{flex:1;height:2px;background:var(--line);min-width:24px;margin:0 8px;transition:background .2s}
.booking-conn.is-done{background:var(--blue-500)}
.info-card{background:var(--blue-50);border:1px solid var(--blue-100);border-radius:var(--r-lg);padding:14px 16px;display:flex;align-items:flex-start;gap:12px;font-size:13px;color:var(--blue-600)}
.info-card svg{width:18px;height:18px;flex:0 0 18px;margin-top:1px}
.booking-warn{background:var(--amber-50);border:1px solid var(--amber-100);border-radius:var(--r-lg);padding:12px 16px;display:flex;align-items:flex-start;gap:10px;font-size:13px;color:var(--amber-700)}
.booking-warn-sm{font-size:12.5px;padding:10px 14px}
.booking-warn svg{width:16px;height:16px;flex:0 0 16px;margin-top:1px}
.summary-bar{background:var(--green-50);border:1px solid var(--green-100);border-radius:var(--r-lg);padding:12px 16px;display:flex;align-items:center;gap:10px;font-size:13px;color:var(--green-700);font-weight:500}
.summary-bar svg{width:18px;height:18px;flex:0 0 18px}
.cal-booking-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line-2)}
.cal-nav-btn{width:30px;height:30px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--bg);color:var(--muted);cursor:pointer;display:grid;place-items:center}
.cal-nav-btn:hover{background:var(--bg-soft);color:var(--ink-2)}
.cal-nav-btn svg{width:14px;height:14px}
.dow-row{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;padding:8px 16px 4px}
.dow-row span{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.cal-booking-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:4px 16px 16px}
.cal-day{aspect-ratio:1;display:grid;place-items:center;border-radius:var(--r-sm);font-size:13px;color:var(--muted);cursor:default;font-weight:500}
.cal-day.available{color:var(--ink-2);cursor:pointer}
.cal-day.available:hover{background:var(--blue-50);color:var(--blue-600)}
.cal-day.selected{background:var(--blue-500);color:#fff;font-weight:600}
.cal-day.today{font-weight:700;color:var(--blue-600)}
.cal-day.today.available:not(.selected){background:var(--blue-50)}
.booking-slots-head{font-size:11.5px;font-weight:600;color:var(--muted);letter-spacing:.05em;text-transform:uppercase;padding:12px 16px 8px;border-top:1px solid var(--line-2)}
.booking-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;padding:0 16px 16px}
.booking-slot{padding:8px;border:1px solid var(--line);border-radius:var(--r-md);text-align:center;font-size:13px;font-weight:500;color:var(--ink-2);cursor:pointer;transition:all .15s;background:var(--bg)}
.booking-slot:hover{border-color:var(--blue-500);color:var(--blue-600);background:var(--blue-50)}
.booking-slot.is-selected{border-color:var(--blue-500);background:var(--blue-500);color:#fff}
.booking-slot.has-dur{display:flex;flex-direction:column;align-items:center;gap:1px;padding:7px 8px}
.booking-slot-dur{font-size:10.5px;font-weight:400;opacity:.65;font-variant-numeric:tabular-nums}
.booking-slot.t-fu{border-left-width:3px;border-left-color:var(--blue-500);padding-left:6px}
.booking-slot.t-laege{border-left-width:3px;border-left-color:var(--green-500);padding-left:6px}
.confirm-hero{display:flex;flex-direction:column;align-items:center;gap:16px;padding:40px 0;text-align:center}
.confirm-circ{width:72px;height:72px;border-radius:50%;background:var(--green-50);border:2px solid var(--green-500);display:grid;place-items:center;animation:confirm-pop .4s var(--ease) both}
.confirm-circ svg{width:36px;height:36px;color:var(--green-700)}
@keyframes confirm-pop{from{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}
.details-list{display:flex;flex-direction:column;border:1px solid var(--line-2);border-radius:var(--r-lg);overflow:hidden}
.drow{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line-2);font-size:13px}
.drow:last-child{border-bottom:none}
.drow .dk{width:110px;flex:0 0 110px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-family:var(--mono)}
.drow .dv{color:var(--ink-2);font-weight:500}
.back-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);text-decoration:none;margin-bottom:20px}
.back-link:hover{color:var(--ink-2)}
.back-link svg{width:14px;height:14px}
.actions .back-link{margin-bottom:0}
.foot-note{font-size:12px;color:var(--muted-2);text-align:center;margin-top:24px;line-height:1.5}
.callout{border-radius:var(--r-lg);padding:12px 16px;display:flex;align-items:flex-start;gap:10px;font-size:13px;line-height:1.5}
.callout svg{width:16px;height:16px;flex:0 0 16px;margin-top:2px}
.callout .ck{margin-top:1px}
.callout .ck svg{width:13px;height:13px;flex:none;margin-top:0}
.callout-info{background:var(--bg-soft);border:1px solid var(--line-2);color:var(--ink-2)}
.callout-success{background:var(--blue-50);border:1px solid var(--blue-100);color:var(--blue-600)}
.callout-warn{background:var(--amber-50);border:1px solid var(--amber-100);color:var(--amber-700)}
.callout-danger{background:var(--red-50);border:1px solid var(--red-100);color:var(--red-600)}
.callout-accent{background:var(--blue-50);border:1px solid var(--blue-100);color:var(--blue-text)}

/* ═══════════════════════════════════════════════════════════════
   CALENDAR (kalender.html)
   ═══════════════════════════════════════════════════════════════ */
.cal-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;flex-wrap:wrap}
.cal-toolbar .lhs,.cal-toolbar .rhs{display:flex;align-items:center;gap:8px}
.month-nav{display:flex;align-items:center;gap:8px}
.month-label{font-size:15px;font-weight:600;letter-spacing:-0.01em;min-width:140px;text-align:center}
.cal-legend{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.cal-leg-dot{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted)}
.cal-leg-dot::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor;flex:0 0 8px}
.cal-leg-dot.ev-blue{color:var(--blue-500)}
.cal-leg-dot.ev-green{color:var(--green-500)}
.cal-leg-dot.ev-grey{color:var(--grey-500)}
.cal-card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-xl);overflow:hidden}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);background:var(--bg-soft);border-bottom:1px solid var(--line-2)}
.cal-dow span{padding:8px 0;text-align:center;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid var(--line-2)}
.cal-cell{min-height:80px;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2);padding:6px 8px;cursor:pointer;transition:background .12s;display:flex;flex-direction:column;gap:3px}
.cal-cell:hover{background:var(--bg-soft)}
.cal-cell.is-today{background:var(--blue-50)}
.cal-cell.is-selected{background:var(--blue-100)}
.cal-cell.is-other{opacity:.4}
.cal-cell .dn{font-size:12px;font-weight:600;color:var(--ink-3);line-height:1}
.cal-cell.is-today .dn{color:var(--blue-600)}
.cal-event{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:500;padding:2px 5px;border-radius:3px;white-space:nowrap;overflow:hidden;line-height:1.4}
.cal-event.ev-blue{background:var(--blue-50);color:var(--blue-600)}
.cal-event.ev-green{background:var(--green-50);color:var(--green-700)}
.cal-event.ev-grey{background:var(--grey-50);color:var(--grey-700)}
.cal-event.ev-red{background:var(--red-50);color:var(--red-600)}
.cal-event.ev-amber{background:var(--amber-50);color:var(--amber-700)}
.day-panel{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-xl);overflow:hidden}
.day-head{padding:16px 20px;border-bottom:1px solid var(--line-2)}
.day-head .dn{font-size:14px;font-weight:600;color:var(--ink)}
.day-head .dd{font-size:12px;color:var(--muted);margin-top:2px}
.day-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line-2);border-top:1px solid var(--line-2)}
.day-stat{background:var(--bg-soft);padding:12px 14px;text-align:center}
.day-stat .n{font-size:20px;font-weight:600;color:var(--ink)}
.day-stat .l{font-size:10.5px;font-weight:600;color:var(--muted);letter-spacing:.05em;text-transform:uppercase;margin-top:2px}
.cal-tl{display:flex;flex-direction:column}
.cal-t-pre,.cal-t-doc,.cal-t-free{display:flex;align-items:center;gap:12px;padding:11px 16px;border-left:3px solid transparent;font-size:13px;border-bottom:1px solid var(--line-2)}
.cal-t-pre{border-left-color:var(--blue-500)}
.cal-t-doc{border-left-color:var(--green-500)}
.cal-t-free{border-left-color:var(--line)}
.cal-t-pre .time,.cal-t-doc .time,.cal-t-free .time{font-family:var(--mono);font-size:11.5px;color:var(--muted);width:42px;flex:0 0 42px}
.cal-t-pre .nm,.cal-t-doc .nm{color:var(--ink-2);font-weight:500}
.cal-t-free .nm{color:var(--muted)}
.uge-grid{display:grid;overflow:hidden}
.uge-header{display:grid;grid-template-columns:48px repeat(7,1fr);border-bottom:1px solid var(--line-2);background:var(--bg-soft)}
.uge-header .uh-day{padding:10px 8px;text-align:center;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.uge-body{display:grid;grid-template-columns:48px repeat(7,1fr);overflow-y:auto}
.uge-time-col{display:flex;flex-direction:column}
.uge-slot{height:56px;display:flex;align-items:flex-start;padding:4px 8px;font-size:10.5px;color:var(--muted-2);font-family:var(--mono);border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.uge-day-col{border-right:1px solid var(--line-2);position:relative;min-height:336px}
.uge-day-col.is-today{background:var(--blue-50)}
.uge-event{position:absolute;left:3px;right:3px;border-radius:4px;padding:3px 6px;font-size:11px;font-weight:500;overflow:hidden}
.uge-event.ev-blue{background:var(--blue-100);color:var(--blue-600)}
.uge-event.ev-green{background:var(--green-50);color:var(--green-700)}
.typepick{display:flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.typepick-btn{flex:1 1 0;min-height:44px;padding:10px 14px;background:transparent;border:none;border-right:1px solid var(--line);cursor:pointer;font:inherit;font-size:13px;font-weight:500;color:var(--muted);transition:all .15s;display:flex;align-items:center;justify-content:center;text-align:center;white-space:normal;line-height:1.4}
.typepick-btn:last-child{border-right:none}
.typepick-btn:hover{background:var(--bg-soft);color:var(--ink-2)}
.typepick-btn.is-active{background:var(--blue-50);color:var(--blue-text);font-weight:600}

/* ═══════════════════════════════════════════════════════════════
   NOTIFICATION CARDS (notifikationer.html)
   ═══════════════════════════════════════════════════════════════ */
.n-list{display:flex;flex-direction:column}
.n-card{display:flex;align-items:flex-start;gap:14px;padding:14px 18px;border-bottom:1px solid var(--line-2);border-left:3px solid var(--line);background:var(--bg)}
.n-card:last-child{border-bottom:none}
.n-card.ulaest{background:var(--blue-50)}
.n-card.t-success{border-left-color:var(--green-500)}
.n-card.t-error  {border-left-color:var(--red-500)}
.n-card.t-warning{border-left-color:var(--amber-500)}
.n-card.t-info   {border-left-color:var(--blue-500)}
.n-ic{width:34px;height:34px;border-radius:var(--r-md);display:grid;place-items:center;flex:0 0 34px}
.n-card.t-success .n-ic{background:var(--green-50);color:var(--green-700)}
.n-card.t-error   .n-ic{background:var(--red-50);  color:var(--red-600)}
.n-card.t-warning .n-ic{background:var(--amber-50);color:var(--amber-700)}
.n-card.t-info    .n-ic{background:var(--blue-50); color:var(--blue-600)}
.n-ic svg{width:16px;height:16px}
.n-body{flex:1;min-width:0}
.n-ttl{font-size:13.5px;font-weight:600;color:var(--ink);line-height:1.3}
.n-msg{font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.4}
.n-meta{font-size:11px;color:var(--muted-2);margin-top:5px}
.n-actions{display:flex;align-items:center;gap:6px;margin-top:8px;flex-wrap:wrap}
.n-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:var(--r-sm);font:inherit;font-size:12px;font-weight:500;border:1px solid var(--line);background:var(--bg);color:var(--ink-2);cursor:pointer;transition:all .12s}
.n-btn:hover{background:var(--bg-soft);border-color:#cdd2db}
.n-btn.danger{color:var(--red-600);border-color:var(--red-100);background:var(--red-50)}
.n-btn.danger:hover{background:#fee2e2}
.n-link{font-size:12.5px;color:var(--blue-500);text-decoration:none}
.n-link:hover{text-decoration:underline}

/* ═══════════════════════════════════════════════════════════════
   TIDSBESTILLING EXTRAS
   ═══════════════════════════════════════════════════════════════ */
.tab-btn .tab-ct{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-pill);background:var(--line-3);color:var(--muted);font-size:10.5px;font-weight:600;margin-left:2px;font-family:var(--mono)}
.tab-btn.is-active .tab-ct{background:var(--blue-500);color:#fff}
.icon-circ{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:0 0 44px}
.icon-circ svg{width:22px;height:22px;stroke-width:1.8}
.icon-circ.red   {background:var(--red-50);  color:var(--red-600)}
.icon-circ.blue  {background:var(--blue-50); color:var(--blue-600)}
.icon-circ.green {background:var(--green-50);color:var(--green-700)}
.icon-circ.amber {background:var(--amber-50);color:var(--amber-700)}
.modal-leadin{display:flex;flex-direction:column;gap:4px;padding:20px 24px 0}
.modal-leadin .ttl{font-size:17px;font-weight:600;letter-spacing:-0.015em;color:var(--ink)}
.modal-leadin .sub{font-size:13px;color:var(--muted);margin-top:2px}
.checkbox-row{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;transition:border-color .12s;background:var(--bg)}
.checkbox-row:hover{border-color:#cdd2db}
.checkbox-row .cr-body{flex:1}
.checkbox-row .cr-lbl{font-size:13px;font-weight:500;color:var(--ink-2)}
.checkbox-row .cr-desc{font-size:12px;color:var(--muted);margin-top:2px;line-height:1.4}
.confirm-info{display:flex;flex-direction:column;gap:3px}
.ci-nm{font-size:15px;font-weight:600;color:var(--ink)}
.ci-dt{font-size:13px;color:var(--muted)}

/* ═══════════════════════════════════════════════════════════════
   AUTH SHELL
   ═══════════════════════════════════════════════════════════════ */
.auth-split{display:grid;grid-template-columns:480px 1fr;min-height:100vh}

/* Brand panel — hardcoded dark, never themed */
.auth-brand{position:relative;background:#0b0d12;color:#fff;padding:40px 44px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.auth-brand::before{content:"";position:absolute;inset:auto -20% -40% auto;width:520px;height:520px;background:radial-gradient(circle at center,rgba(37,99,235,.32) 0%,rgba(37,99,235,.08) 38%,transparent 65%);pointer-events:none}
.auth-brand::after{content:"";position:absolute;inset:-30% auto auto -20%;width:380px;height:380px;background:radial-gradient(circle at center,rgba(29,78,216,.22) 0%,transparent 60%);pointer-events:none}
.auth-brand > *{position:relative;z-index:1}
.auth-brand-top{display:flex;align-items:center;justify-content:space-between}
.auth-brand-logo{display:inline-flex;align-items:center;gap:11px;font-size:20px;font-weight:600;letter-spacing:-.022em;color:#fff}
.auth-brand-logo .logo-mark{width:30px;height:30px;border-radius:7px;flex:0 0 30px}
.auth-brand-logo .lt{font-weight:500;color:rgba(255,255,255,.4)}
.auth-beta{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.4);padding:4px 9px;border:1px solid rgba(255,255,255,.12);border-radius:var(--r-sm)}
.auth-brand-mid{display:flex;flex-direction:column;gap:28px}
.auth-quote{font-size:28px;font-weight:600;line-height:1.2;letter-spacing:-.025em;color:#fff;max-width:340px;text-wrap:balance}
.auth-quote::before{content:"";display:block;width:32px;height:2px;background:var(--blue-500);margin-bottom:20px;border-radius:1px}
.auth-feat-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}
.auth-feat-list li{display:flex;align-items:center;gap:12px;font-size:13.5px;color:rgba(255,255,255,.8);font-weight:450}
.auth-feat-ck{width:22px;height:22px;border-radius:50%;flex:0 0 22px;background:rgba(37,99,235,.18);color:#93c5fd;display:grid;place-items:center;border:1px solid rgba(37,99,235,.3)}
.auth-feat-ck svg{width:11px;height:11px;stroke-width:3}
.auth-brand-foot{display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:rgba(255,255,255,.3);letter-spacing:.05em}
.auth-brand-foot a{color:rgba(255,255,255,.5);text-decoration:none}
.auth-brand-foot a:hover{color:#fff}

/* Form pane */
.auth-form{background:var(--bg);display:flex;align-items:center;justify-content:center;padding:48px 56px}
.auth-card{width:100%;max-width:420px;display:flex;flex-direction:column;gap:22px}
.auth-card-head{display:flex;flex-direction:column;gap:14px}
.auth-card-logo{display:inline-flex;align-items:center;gap:10px;font-size:18px;font-weight:600;letter-spacing:-.022em;color:var(--ink);text-decoration:none}
.auth-card-logo .logo-mark{width:26px;height:26px;border-radius:6px;flex:0 0 26px}
.auth-card-logo .lt{font-weight:500;color:var(--muted-2)}
.auth-card h2{font-size:22px;letter-spacing:-.018em;color:var(--ink);margin:0}
.auth-sub{font-size:13.5px;color:var(--muted);line-height:1.5;margin:0}

/* Auth callouts — hidden until .visible */
.auth-callout{display:none}
.auth-callout.visible{display:flex}

/* Input affix: leading icon + optional trailing toggle */
.input-affix{position:relative}
.input-affix .ico-lead{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted);pointer-events:none;transition:color var(--t-fast) var(--ease)}
.input-affix.has-lead .input{padding-left:40px}
.input-affix.has-trail .input{padding-right:42px}
.input-affix:focus-within .ico-lead{color:var(--blue-500)}
.input-affix.is-error .ico-lead{color:var(--red-600)}
.input-affix.is-error .input{border-color:var(--red-500)}
.field-err{display:none;align-items:center;gap:5px;font-size:11.5px;color:var(--red-600);margin-top:5px}
.field-err svg{width:12px;height:12px;flex:0 0 12px;stroke-width:2.4}
.input-affix.is-error ~ .field-err{display:flex}
.input-trail-btn{position:absolute;right:0;top:0;bottom:0;width:42px;display:grid;place-items:center;background:transparent;border:none;cursor:pointer;color:var(--muted);padding:0}
.input-trail-btn:hover{color:var(--ink-2)}
.input-trail-btn svg{width:16px;height:16px;stroke-width:1.8}

/* Auth-specific login elements */
.auth-forgot-row{display:flex;align-items:center;justify-content:space-between;margin-top:-2px}
.auth-cb{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2);cursor:pointer;user-select:none;position:relative}
.auth-cb input{position:absolute;opacity:0;pointer-events:none}
.auth-cb-box{width:16px;height:16px;border:1.5px solid var(--line);border-radius:4px;background:var(--bg);display:grid;place-items:center;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}
.auth-cb-box svg{width:10px;height:10px;color:#fff;opacity:0;stroke-width:3;transition:opacity var(--t-fast) var(--ease)}
.auth-cb input:checked + .auth-cb-box{background:var(--blue-500);border-color:var(--blue-500)}
.auth-cb input:checked + .auth-cb-box svg{opacity:1}
.auth-lnk{font-size:12.5px;color:var(--blue-600);font-weight:500;text-decoration:none}
.auth-lnk:hover{color:var(--blue-500);text-decoration:underline}
.auth-btn-full{width:100%;height:44px;font-size:14.5px}
.auth-formfoot{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:6px}
.auth-divider{display:flex;align-items:center;width:100%;gap:12px;color:var(--muted-2);font-size:11.5px;font-weight:500;letter-spacing:.04em}
.auth-divider::before,.auth-divider::after{content:"";flex:1;height:1px;background:var(--line-2)}
.auth-signup{font-size:13px;color:var(--muted)}
.auth-signup .auth-lnk{margin-left:4px}

/* Password strength meter */
.auth-strength{display:flex;gap:4px;margin-top:2px}
.auth-strength span{flex:1;height:3px;border-radius:2px;background:var(--line);transition:background .2s ease}
.auth-strength[data-level="1"] span:nth-child(-n+1){background:var(--red-500)}
.auth-strength[data-level="2"] span:nth-child(-n+2){background:var(--amber-500)}
.auth-strength[data-level="3"] span:nth-child(-n+3){background:#84cc16}
.auth-strength[data-level="4"] span:nth-child(-n+4){background:var(--green-500)}
.auth-strength-label{font-size:11.5px;color:var(--muted);margin-top:4px;display:flex;justify-content:space-between}
.auth-strength-label .lv{font-weight:550;color:var(--ink-2)}

@media(max-width:880px){
  .auth-split{grid-template-columns:1fr}
  .auth-brand{display:none}
  .auth-form{padding:36px 28px;min-height:100vh}
}

/* ── Kaskade-trappe (diagnosekonfiguration-forklaring) ── */
.kaskade-trappe{max-width:440px;margin:10px auto}
.kt-trin{display:flex;align-items:center;gap:12px;background:var(--bg-soft);border:1px solid var(--line-2);border-radius:8px;padding:10px 14px;font-size:13px}
.kt-num{flex:none;color:var(--blue-text);font-weight:650;font-size:12.5px}
.kt-tekst{flex:1}
.kt-tag{flex:none;font-size:11px;color:var(--muted-2);white-space:nowrap}
.kt-ellers{text-align:center;font-family:var(--mono);font-size:11px;color:var(--muted-2);padding:5px 0}
