/* X4 Energy — Theme "Clean Premium" (freigegeben 2026-11-02) — 20261102-premium
   Customer pages only (index, login, register, verify-email, set-password, portal/, /c/<EVSE>, legal).
   Loaded LAST, after styles.css, auth-ui.css and customer-polish.css. Styling only — no JS hooks changed.
   NOT for admin/. Fonts self-hosted under /fonts (OFL), no external CDN. */

@font-face { font-family: "X4 Manrope"; src: url("../fonts/manrope-var-latin.woff2") format("woff2"); font-weight: 200 800; font-style: normal; font-display: swap; }
@font-face { font-family: "X4 Inter"; src: url("../fonts/inter-var-latin.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }
@font-face { font-family: "X4 Geist Mono"; src: url("../fonts/geistmono-var-latin.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }

:root {
  /* palette */
  --p-mist: #F4F6F5; --p-card: #FFFFFF; --p-ink: #0C1A17; --p-muted: #5B6B66; --p-line: #E1E7E4;
  --p-pine: #0B5D4B; --p-pine-2: #0E6B57; --p-teal: #0E9F86; --p-mint: #DDF5EC; --p-mint-ink: #0B4F41; --p-ok: #08745F;
  --p-sky: #2F7DF6; --p-sky-ink: #1D5FD0; --p-sky-bg: #E3EDFE; --p-amber: #C27A12; --p-amber-bg: #FDF1DC; --p-amber-ink: #7A4E08;
  --p-clay: #D9534F; --p-clay-bg: #FBE5E4; --p-clay-ink: #8E2B28; --p-logo: #39C93A;
  --p-grad: linear-gradient(90deg, #0B5D4B, #0E9F86 55%, #39C93A);
  --p-r: 22px; --p-r-md: 16px; --p-r-sm: 14px;
  --p-shadow: 0 1px 2px rgba(12,26,23,.04), 0 12px 40px -12px rgba(12,26,23,.14);
  --p-shadow-sm: 0 1px 2px rgba(12,26,23,.03);
  --f-head: "X4 Manrope", Manrope, ui-sans-serif, system-ui, sans-serif;
  --f-body: "X4 Inter", Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --f-mono: "X4 Geist Mono", "Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  /* re-map legacy tokens used by styles.css / customer-polish.css */
  --bg: var(--p-mist); --surface: var(--p-card); --ink: var(--p-ink); --muted: var(--p-muted); --line: var(--p-line);
  --brand: var(--p-pine); --brand-ink: #fff; --inverse: var(--p-ink);
  --radius: var(--p-r-md); --radius-lg: var(--p-r); --shadow: var(--p-shadow); --shadow-card: var(--p-shadow);
  --focus: 0 0 0 3px #fff, 0 0 0 5px var(--p-teal);
  --ok-ink: var(--p-mint-ink); --ok-bg: var(--p-mint); --ok-line: #BFE8D8;
  font-family: var(--f-body);
}

/* ---------- Base + mesh backdrop ---------- */
html { background: var(--p-mist); }
body { font-family: var(--f-body); color: var(--p-ink); background: var(--p-mist); position: relative; isolation: isolate; }
body::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 460px; z-index: -1; pointer-events: none;
  background:
    radial-gradient(60vw 240px at 12% 18%, rgba(14,159,134,.30), transparent 70%),
    radial-gradient(70vw 280px at 92% 6%, rgba(47,125,246,.16), transparent 70%),
    radial-gradient(65vw 250px at 58% 82%, rgba(57,201,58,.16), transparent 70%),
    #EAF3EF;
  -webkit-mask-image: linear-gradient(180deg, #000 55%, transparent); mask-image: linear-gradient(180deg, #000 55%, transparent); }
h1, h2, h3, .panel-title, .x4-state-title, .price-card-title, .how-title { font-family: var(--f-head); color: var(--p-ink); }
h1 { font-weight: 800; letter-spacing: -.03em; }
h2, h3 { font-weight: 800; letter-spacing: -.02em; }
code, .evse-id, #evse-label, .cp-paycard-num, .x4-alert-code { font-family: var(--f-mono); }
::selection { background: var(--p-mint); color: var(--p-ink); }
.inline-link { color: var(--p-pine); text-decoration-color: rgba(11,93,75,.35); text-underline-offset: 3px; }
.inline-link:hover { text-decoration-color: currentColor; }
.eyebrow, .panel-kicker, .auth-main .panel-meta { color: var(--p-muted); font: 700 .78rem/1.2 var(--f-body); letter-spacing: .06em; }
.field-hint, .cp-lead, .cp-k, .section-lead, .hero-lead, .panel-note, .card p, .fineprint, .x4-state-text { color: var(--p-muted); }

/* ---------- Header: translucent glass ---------- */
.site-header, .app-bar { background: rgba(244,246,245,.72); -webkit-backdrop-filter: blur(16px) saturate(1.3); backdrop-filter: blur(16px) saturate(1.3);
  border-bottom: 1px solid rgba(225,231,228,.7); }
.site-nav a:not(.btn) { color: var(--p-ink); font-weight: 500; }
.nav-toggle, .header-nav .btn-ghost, .app-bar .btn-ghost { background: rgba(255,255,255,.72); border: 1px solid rgba(255,255,255,.95);
  border-radius: 999px; box-shadow: 0 2px 10px rgba(12,26,23,.06); color: var(--p-ink); font-weight: 600; }
.nav-toggle-bar { background: var(--p-ink); box-shadow: 0 4px 0 var(--p-ink), 0 -4px 0 var(--p-ink); }
.site-nav { background: rgba(255,255,255,.96); }
@media (min-width: 901px) { .site-nav { background: transparent; } }

/* ---------- Buttons (≥48px, centred) ---------- */
.btn { font-family: var(--f-head); font-weight: 700; letter-spacing: .005em; border-radius: var(--p-r-md); min-height: 48px; }
.btn-primary { background: linear-gradient(180deg, var(--p-pine-2), var(--p-pine)); border-color: var(--p-pine); color: #fff;
  box-shadow: 0 1px 0 rgba(255,255,255,.22) inset, 0 10px 24px -10px rgba(11,93,75,.55); }
.btn-primary:hover { filter: brightness(1.06); }
.btn-ghost { background: #fff; color: var(--p-ink); border: 1px solid var(--p-line); box-shadow: var(--p-shadow-sm); }
.btn-ghost:hover { background: #F8FAF9; border-color: #D3DCD8; }
.auth-submit, .x4-stack .btn, .cp-actions .btn, #pm-form .btn, #step-session .auth-form .btn { min-height: 56px; font-size: 1.05rem; }

/* busy / success / error / cooldown — keeps x4-btnbusy behaviour (fill + shimmer), premium colours */
.x4-act.is-busy, .x4-act.is-busy:hover { background: #E8EEEB; border-color: #E8EEEB; color: var(--p-muted); box-shadow: none; }
.x4-act.is-busy::before { background: linear-gradient(90deg, rgba(14,159,134,.16), rgba(14,159,134,.28)); }
.x4-act.is-busy::after { background: linear-gradient(90deg, transparent, rgba(255,255,255,.65), transparent); }
.x4-act.is-busy .x4-spin, .x4-spin { border-color: rgba(91,107,102,.25); border-top-color: var(--p-pine); border-width: 2.5px; }
.x4-act.btn-ghost.is-busy, .x4-act.btn-ghost.is-busy:hover { background: #EEF3F1; border-color: var(--p-line); color: var(--p-muted); }
.x4-act.is-success, .x4-act.is-success:hover { background: var(--p-mint); border-color: var(--p-mint); color: var(--p-ok); box-shadow: 0 0 0 4px rgba(14,159,134,.14); }
.x4-act.is-error { background: var(--p-clay-bg) !important; border-color: #F3C9C7 !important; color: #B23A36 !important; box-shadow: none !important; }
.x4-act.is-cooldown, .x4-act.is-cooldown:hover { background: #EEF2F0; border-color: var(--p-line); color: var(--p-muted); box-shadow: none; }
.x4-act.is-expired, .x4-act.is-expired:hover { background: #E3E8E6; border-color: #E3E8E6; color: var(--p-muted); box-shadow: none; }

/* ---------- Inputs (≥16px) ---------- */
.field-label { font-weight: 600; color: var(--p-ink); }
.field-input, .auth-form .field-input { min-height: 54px; border-radius: var(--p-r-sm); border: 1px solid var(--p-line); background: #fff;
  color: var(--p-ink); font-family: var(--f-body); font-size: max(16px, 1rem); transition: border-color .15s, box-shadow .15s; }
.field-input::placeholder { color: #8A9893; }
.field-input:focus, .field-input:focus-visible { outline: none; border-color: var(--p-teal); background: #fff; box-shadow: 0 0 0 4px rgba(14,159,134,.14); }
.field.has-error .field-input { border-color: var(--p-clay); background: #fff; box-shadow: 0 0 0 4px rgba(217,83,79,.12); }
.field.has-error .field-input:focus { box-shadow: 0 0 0 4px rgba(217,83,79,.18); border-color: var(--p-clay); }
.field.is-valid .field-input { border-color: var(--p-teal); }
.field-error { color: #B23A36; }
.field-error::before { background: var(--p-clay); }
.field-check input[type="checkbox"], .cp-setting input[type="checkbox"] { accent-color: var(--p-pine); }
.x4-pw-toggle { color: var(--p-pine); font-weight: 700; }
.x4-meter span { background: #DCE3E0; }
.x4-meter[data-score="1"] span:nth-child(-n+1) { background: var(--p-clay); }
.x4-meter[data-score="2"] span:nth-child(-n+2) { background: var(--p-amber); }
.x4-meter[data-score="3"] span:nth-child(-n+3) { background: var(--p-teal); }
.x4-meter[data-score="4"] span { background: var(--p-grad); }

/* ---------- Alerts (mockup .msg) ---------- */
.x4-alert { border: 0; border-left: 0; border-radius: var(--p-r-sm); background: var(--p-clay-bg); color: var(--p-clay-ink);
  padding: 13px 14px; font-size: .95rem; font-weight: 500; line-height: 1.45; gap: 10px; }
.x4-alert-ico { width: 20px; height: 20px; background: var(--p-clay); font-size: .78rem; }
.x4-alert-title { color: var(--p-clay-ink); font-weight: 700; }
.x4-alert-code { color: #A0524F; }
.x4-alert.is-warn { background: var(--p-amber-bg); color: var(--p-amber-ink); }
.x4-alert.is-warn .x4-alert-ico { background: var(--p-amber); }
.x4-alert.is-warn .x4-alert-title { color: var(--p-amber-ink); }
.x4-alert.is-success { background: var(--p-mint); color: var(--p-mint-ink); }
.x4-alert.is-success .x4-alert-ico { background: var(--p-ok); }
.x4-alert.is-success .x4-alert-title { color: var(--p-mint-ink); }
.x4-alert.is-info { background: var(--p-sky-bg); color: #1D4FA8; }
.x4-alert.is-info .x4-alert-ico { background: var(--p-sky); }
.x4-alert.is-info .x4-alert-title { color: #1D4FA8; }
.x4-countdown { border: 0; border-radius: 999px; background: var(--p-sky-bg); color: var(--p-sky-ink); font-weight: 600; padding: 8px 14px; min-height: 40px; width: fit-content; }
.x4-countdown.is-low { background: var(--p-amber-bg); color: var(--p-amber-ink); }
.x4-countdown.is-over { background: var(--p-clay-bg); color: var(--p-clay-ink); border-radius: var(--p-r-sm); width: auto; }

/* ---------- Generic premium surfaces (reusable: .x4p-card / .x4p-glass) ---------- */
.surface-panel, .card, .cp-card, .x4p-card, .x4-paycard, .how-step, .price-card, .side-card {
  background: var(--p-card); border: 1px solid var(--p-line); border-radius: var(--p-r); box-shadow: var(--p-shadow-sm); }
.x4p-glass, .auth-form.surface-panel, .cp-welcome, .price-card, .evse-live-panel, #step-vorpruefung, .auth-main .x4p-evse {
  background: rgba(255,255,255,.74); -webkit-backdrop-filter: blur(18px) saturate(1.4); backdrop-filter: blur(18px) saturate(1.4);
  border: 1px solid rgba(255,255,255,.95); box-shadow: var(--p-shadow); }
.section-alt { background: transparent; border-block: 0; }
.section-alt .surface-panel, .section-alt .app-panel { background: var(--p-card); }
.x4p-card-head { display: flex; justify-content: space-between; align-items: center; gap: .75rem; margin: 0 0 .75rem; }
.x4p-card-head > h2, .x4p-card-head > h3 { margin: 0; }
.x4p-list { list-style: none; margin: 0; padding: 0; }
.x4p-list > li { display: flex; justify-content: space-between; align-items: center; gap: .75rem; min-height: 56px; padding: .7rem 0; border-bottom: 1px solid var(--p-line); }
.x4p-list > li:last-child { border-bottom: 0; }
.x4p-badge, .cp-badge { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 0 11px; border-radius: 999px; border: 0;
  font: 600 .8rem/1 var(--f-body); background: #EEF2F0; color: var(--p-muted); white-space: nowrap; }
.x4p-badge.is-ok, .cp-badge.is-ok { background: var(--p-mint); color: var(--p-ok); }
.x4p-badge.is-warn, .cp-badge.is-warn { background: var(--p-amber-bg); color: #8A5A0B; }
.x4p-badge.is-err { background: var(--p-clay-bg); color: #B23A36; }
.x4p-badge.is-live { background: var(--p-sky-bg); color: var(--p-sky-ink); }
.x4p-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr)); gap: 10px; }
.x4p-stat { background: #fff; border: 1px solid var(--p-line); border-radius: 18px; padding: 14px 12px; }
.x4p-stat .v { font: 800 1.35rem/1.1 var(--f-head); letter-spacing: -.02em; margin-top: 6px; font-variant-numeric: tabular-nums; }

/* ---------- Footer ---------- */
.site-footer { background: var(--p-ink); }
.footer-nav a { color: rgba(255,255,255,.78); }

/* =================================================================
   LANDING (index.html)
   ================================================================= */
.hero { padding-top: 2rem; }
@media (max-width: 420px) { .hero-copy h1 { font-size: 2.6rem; } }
.hero-copy h1 { font-weight: 800; letter-spacing: -.045em; line-height: 1.02; color: var(--p-ink); }
.hero-line, .hero-line:first-child { color: var(--p-ink); }            /* slogan stays without green */
.hero-line:first-child::after { display: none; }
.hero-lead { font-size: 1.02rem; line-height: 1.6; }
.hero-location { display: inline-flex; align-items: center; gap: .4rem; min-height: 34px; padding: 0 .8rem; border-radius: 999px;
  background: rgba(255,255,255,.75); border: 1px solid rgba(255,255,255,.95); box-shadow: 0 2px 10px rgba(12,26,23,.05); font-size: .9rem; }
.hero-media { border-radius: var(--p-r); border: 1px solid rgba(255,255,255,.9); box-shadow: var(--p-shadow); }
.card { padding: 1.25rem; }
.card-icon { width: 44px; height: 44px; border-radius: 14px; background: var(--p-mint); border: 0; color: var(--p-pine); }
.card h3 { font-size: 1.12rem; }
.section h2 { font-weight: 800; letter-spacing: -.035em; }
.fact-list li { border-bottom-color: var(--p-line); }

/* price hero */
.price-card { padding: 1.5rem 1.5rem 1.35rem; max-width: 30rem; }
.price-card-title { font-size: 1.1rem; font-weight: 800; letter-spacing: -.01em; margin: 0 0 .1rem; }
.price-card-power { font-size: .92rem; margin: 0 0 1rem; }
.price-card-price { border-top: 0; padding-top: 0; }
.price-card-amount { font: 800 clamp(3rem, 15vw, 4.75rem)/.9 var(--f-head); letter-spacing: -.05em; color: var(--p-ink); font-variant-numeric: tabular-nums; }
.price-card-note { margin-top: .9rem; display: inline-flex; align-items: center; min-height: 32px; padding: 0 .8rem; border-radius: 999px;
  background: var(--p-mint); color: var(--p-ok); font-weight: 600; font-size: .88rem; }

/* live status (Frei = grün, Belegt = rot, Außer Betrieb = grau) */
.evse-status-row { background: #fff; border: 1px solid var(--p-line); border-radius: var(--p-r-sm); }
.evse-status-row .evse-id { font-family: var(--f-mono); font-weight: 500; color: var(--p-ink); }
.evse-ico-wrap { border-radius: 12px; }
.evse-badge { border-radius: 999px; font: 600 .8rem/1 var(--f-body); }
.evse-row--frei .evse-ico-wrap { background: var(--p-mint); color: var(--p-ok); }
.evse-badge--frei { background: var(--p-mint); color: var(--p-ok); }
.evse-row--belegt .evse-ico-wrap { background: var(--p-clay-bg); color: var(--p-clay); }
.evse-badge--belegt { background: var(--p-clay-bg); color: #B23A36; }
.evse-row--offline .evse-ico-wrap, .evse-row--unbekannt .evse-ico-wrap { background: #EEF2F0; color: #7D8A86; }
.evse-badge--offline, .evse-badge--unbekannt { background: #EEF2F0; color: #55635F; }
.evse-badge--loading { background: var(--p-sky-bg); color: var(--p-sky-ink); }
.panel-title { font-weight: 800; letter-spacing: -.02em; }

/* So funktioniert's (5 steps) */
.how-step { padding: 1rem 1.1rem; }
.how-ico { width: 48px; height: 48px; border-radius: 50%; background: var(--p-mint); color: var(--p-pine); }
.how-num { color: var(--p-teal); }
.how-title { font-weight: 800; letter-spacing: -.01em; }
.how-figure { border-radius: var(--p-r-sm); border-color: var(--p-line); background: #F7F9F8; }
.how-figure.is-missing .how-figure-ph { background: repeating-linear-gradient(135deg, #F4F6F5 0 12px, #EDF1EF 12px 24px); color: #9AA8A3; }
.how-figure figcaption { border-top-color: var(--p-line); color: var(--p-muted); }

/* =================================================================
   AUTH (login / register / verify-email / set-password)
   ================================================================= */
.auth-main h1 { font-size: clamp(2rem, 8.5vw, 2.6rem); line-height: 1.05; letter-spacing: -.04em; }
.auth-main .eyebrow { color: var(--p-muted); }
.auth-form.surface-panel { border-radius: var(--p-r); padding: 1.25rem; }
.auth-form { font-size: 1.05em; }
.auth-form .field-label { font-size: .92rem; color: var(--p-muted); font-weight: 600; }
.auth-form .field-input { font-size: 1.0625rem; min-height: 54px; }
.auth-steps li { background: rgba(255,255,255,.7); color: var(--p-muted); border: 1px solid rgba(255,255,255,.95); font-weight: 600; }
.auth-steps li.is-active { background: var(--p-pine); color: #fff; border-color: var(--p-pine); box-shadow: 0 8px 18px -10px rgba(11,93,75,.6); }
.auth-steps li.is-done { background: var(--p-mint); color: var(--p-ok); border-color: var(--p-mint); }
.x4-state-icon { background: var(--p-mint); color: var(--p-pine); }
.x4-state-icon.is-warn { background: var(--p-amber-bg); color: var(--p-amber); }
.x4-state-icon.is-error { background: var(--p-clay-bg); color: var(--p-clay); }
.x4-state-icon.is-loading { background: #EEF2F0; }
.x4-state-icon.is-loading .x4-spin { border-color: rgba(91,107,102,.18); border-top-color: var(--p-teal); }
.x4-mailchip { background: var(--p-mint); border-color: transparent; color: var(--p-mint-ink); }
.x4-tips { background: #F7F9F8; border-color: var(--p-line); border-radius: var(--p-r-sm); }
@media (max-width: 480px) {
  .auth-form.surface-panel { padding: 1.1rem !important; border-radius: 20px; }
  .auth-form .field-input { font-size: 1.0625rem !important; min-height: 54px !important; }
  .auth-form .field-label { font-size: .92rem !important; }
}

/* =================================================================
   PORTAL (portal/index.html) — generic card classes; future sections
   ("Meine Ladevorgänge", "Meine Rechnungen") can use .cp-card + .x4p-list / .x4p-stats / .x4p-badge
   ================================================================= */
.app-main { padding-top: 1.25rem; }
.cp-stack { gap: 14px; }
.cp-card { padding: 1.25rem; }
.cp-card > h2 { font-size: 1.12rem; font-weight: 800; letter-spacing: -.02em; }
.cp-welcome h1 { font-size: clamp(1.8rem, 7.5vw, 2.3rem); letter-spacing: -.04em; }
.cp-slogan { color: var(--p-muted); font-weight: 600; }   /* slogan without green */
.cp-rows { border-top-color: var(--p-line); }
.cp-rows li { border-bottom-color: var(--p-line); }
.cp-v { font-weight: 600; color: var(--p-ink); }
#pm-msg { background: #F4F6F5; color: var(--p-ink); border-radius: var(--p-r-sm); }
.cp-paycard { border-radius: 20px; box-shadow: 0 16px 32px -16px rgba(12,26,23,.45); }
.cp-paycard-num { font-family: var(--f-mono); }
.cp-paycard-top .cp-badge { background: rgba(221,245,236,.95); color: var(--p-ok); }
.cp-paycard-top .cp-badge.is-warn { background: #FFF1D6; color: #6B4100; }
.cp-setting small { color: var(--p-muted); }
@media (min-width: 720px) { .cp-card { padding: 1.5rem; } .cp-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } }

/* =================================================================
   /c/<EVSE> — customer-pay.html  (pay page is owned/rewritten by Entwicklung; NOT linked yet)
   Defensive: every rule targets an existing ID/class only and makes no assumptions about step order,
   guest-vs-account layout or visibility. New markup gets the generic look via .surface-panel/.btn/.x4-act/
   .x4-alert/.x4p-card/.x4p-badge; optional opt-in hooks: .x4p-evse, .x4p-progress, .x4p-sticky.
   ================================================================= */
.auth-main .auth-section:has(#step-choose) { padding-bottom: 2rem; }
#page-h1 { font-size: clamp(2rem, 8.5vw, 2.6rem); letter-spacing: -.04em; line-height: 1.05; margin-bottom: .4rem; }
#page-lead { color: var(--p-muted); }
/* station / EVSE card */
.x4p-evse { border-radius: var(--p-r) !important; padding: 18px !important; }
.x4p-evse-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-top: .35rem;
  padding: 12px 14px; border-radius: var(--p-r-sm); background: rgba(244,246,245,.85); border: 1px solid var(--p-line); }
.x4p-evse #evse-label { font-size: 1.02rem; font-weight: 500; border: 0; background: none; padding: 0; color: var(--p-ink); letter-spacing: .01em; }
.x4p-evse .x4p-plug { display: inline-flex; align-items: center; gap: 6px; font-size: .8rem; color: var(--p-muted); white-space: nowrap; }
.x4p-evse #meta-line { font-size: .82rem; color: var(--p-muted); }
/* step progress (CSS-only, follows visible step) */
.x4p-progress { display: none; gap: 6px; margin: 4px 2px 14px; }
.x4p-progress i { flex: 1; height: 4px; border-radius: 4px; background: #DCE3E0; }
.auth-wrap:has(#step-choose:not([hidden])) .x4p-progress,
.auth-wrap:has(#step-pay:not([hidden])) .x4p-progress,
.auth-wrap:has(#step-account:not([hidden])) .x4p-progress,
.auth-wrap:has(#step-done:not([hidden])) .x4p-progress { display: flex; }
.x4p-progress i:nth-child(1),
.auth-wrap:has(#step-pay:not([hidden])) .x4p-progress i:nth-child(-n+2),
.auth-wrap:has(#step-account:not([hidden])) .x4p-progress i:nth-child(-n+2),
.auth-wrap:has(#step-done:not([hidden])) .x4p-progress i { background: var(--p-grad); background-size: 300% 100%; }
/* Vorprüfung / status card (neutral glass; no layout-state guessing — stays correct if the step structure changes) */
#step-vorpruefung { border-radius: var(--p-r) !important; padding: 16px 18px !important; }
#vorpruefung-msg { font-size: 1rem !important; font-weight: 600; color: var(--p-ink); }
#vorpruefung-price { display: inline-flex; align-items: center; min-height: 32px; padding: 6px 12px; border-radius: 12px; line-height: 1.35;
  background: var(--p-mint); color: var(--p-ok); font-weight: 600; font-size: .88rem; }
#vorpruefung-price[hidden] { display: none !important; }
/* errors */
#err:not([hidden]) { display: block; padding: 13px 14px; border-radius: var(--p-r-sm); background: var(--p-clay-bg); color: var(--p-clay-ink) !important; font-size: .95rem; font-weight: 600; line-height: 1.45; }
/* step choose: sticky "Sofort laden" bar on phones */
#step-choose .x4p-sum { display: none; }
#btn-guest:not(.is-busy):not(.is-success)::before { content: ""; width: 18px; height: 18px; flex: 0 0 auto; background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 2 4 14h7l-1 8 9-12h-7z'/%3E%3C/svg%3E") center/contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 2 4 14h7l-1 8 9-12h-7z'/%3E%3C/svg%3E") center/contain no-repeat; }
#btn-guest, #btn-login { min-height: 56px !important; }
@media (max-width: 559px) {
  .auth-main:has(#step-choose:not([hidden]) .x4p-sticky):not(:has(#login-box:not([hidden]))) { padding-bottom: 150px; }   /* only if the opt-in sticky wrapper exists */
  #step-choose:not(:has(#login-box:not([hidden]))) .x4p-sticky { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
    padding: 12px max(20px, env(safe-area-inset-left)) calc(16px + env(safe-area-inset-bottom));
    background: rgba(244,246,245,.86); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); border-top: 1px solid rgba(225,231,228,.8); }
  #step-choose:not(:has(#login-box:not([hidden]))) .x4p-sum { display: flex; justify-content: space-between; font-size: .82rem; color: var(--p-muted); margin: 0 2px 10px; }
  #step-choose .x4p-sum b { color: var(--p-ink); font-weight: 600; }
}
/* step pay: one-step pay card */
.x4-paycard { border-radius: var(--p-r); padding: 18px; box-shadow: var(--p-shadow); border: 1px solid rgba(255,255,255,.95);
  background: rgba(255,255,255,.85); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); }
.x4-paycard-kicker { color: var(--p-muted); font-weight: 700; letter-spacing: .06em; }
.x4-paycard-amount { font: 800 2rem/1.05 var(--f-head); letter-spacing: -.04em; color: var(--p-ink); }
.x4-paycard-amount small { font: 600 .85rem var(--f-body); color: var(--p-muted); letter-spacing: 0; }
.x4-paycard-info { background: var(--p-mint); color: var(--p-mint-ink); border-radius: var(--p-r-sm); font-weight: 500; padding: 12px 14px; }
.x4-back { border-color: var(--p-line); color: var(--p-ink); background: #fff; font-weight: 600; }
.x4-back:hover { background: #F4F6F5; }
.x4-skel { border-radius: var(--p-r-sm); background: linear-gradient(90deg, #EEF2F0 0%, #F8FAF9 40%, #EEF2F0 80%); background-size: 200% 100%; }
.x4-spin-blue { border-color: rgba(47,125,246,.25); border-top-color: var(--p-sky); }
#payment-element { margin-bottom: .25rem; }
.x4-paymsg { color: var(--p-muted); }
.x4-secure { color: #6B7A75; }
/* AUTORISIEREN (#btn-confirm) + STARTEN (#btn-start), both .x4-paybtn.x4-blue: BLUE at rest → blue fill/progress sweep while working → GREEN "Autorisiert" (Entwicklung requirement) */
.x4-blue, .x4-paybtn.x4-blue { background: linear-gradient(180deg, #3D88F8, var(--p-sky)); border-color: var(--p-sky); color: #fff;
  box-shadow: 0 1px 0 rgba(255,255,255,.25) inset, 0 10px 24px -10px rgba(47,125,246,.6); }
.x4-paybtn.x4-blue { min-height: 58px; border-radius: var(--p-r-md); font: 700 1.08rem/1.2 var(--f-head); }
.x4-paybtn.x4-blue.is-busy, .x4-paybtn.x4-blue.is-busy:hover { background: #1F63D6; border-color: #1F63D6; color: #fff; box-shadow: 0 10px 24px -12px rgba(47,125,246,.6); }
.x4-paybtn.x4-blue.is-busy::before { background: linear-gradient(90deg, var(--p-sky), var(--p-teal) 70%, var(--p-logo)); opacity: .95; }
.x4-paybtn.x4-blue.is-busy .x4-spin { border-color: rgba(255,255,255,.4); border-top-color: #fff; }
.x4-paybtn.x4-blue.is-success, .x4-paybtn.x4-blue.is-success:hover { background: linear-gradient(135deg, #0B7A52, #13A05A 55%, #2FB344); border-color: #13A05A; color: #fff;
  box-shadow: 0 0 0 5px rgba(57,201,58,.22), 0 12px 26px -12px rgba(19,160,90,.7); }
.x4-paybtn.x4-blue.is-error { background: var(--p-clay-bg) !important; color: #B23A36 !important; }
.x4-paybtn.x4-blue.is-expired { background: #E3E8E6; border-color: #E3E8E6; color: var(--p-muted); box-shadow: none; }
/* other in-page x4-blue busy buttons keep the blue family */
.x4-blue.is-busy:not(.x4-paybtn) { background: #1F63D6; border-color: #1F63D6; color: #fff; }
/* authorized + live session */
#step-done { border-radius: var(--p-r) !important; padding: 22px 18px !important; text-align: left; }
#done-msg { font: 800 1.35rem/1.25 var(--f-head) !important; letter-spacing: -.02em; color: var(--p-ink); }
#done-msg::before { content: ""; display: block; width: 64px; height: 64px; margin: 0 0 14px; border-radius: 50%;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%230B5D4B'/%3E%3Cstop offset='1' stop-color='%230E9F86'/%3E%3C/linearGradient%3E%3C/defs%3E%3Ccircle cx='32' cy='32' r='32' fill='url(%23g)'/%3E%3Cpath d='M20 33l8 8 16-17' fill='none' stroke='%23fff' stroke-width='5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat; box-shadow: 0 0 0 9px rgba(14,159,134,.12); }
#done-info { list-style: none; padding: 0 !important; margin-top: 14px !important; }
#done-info li { padding: 10px 0; border-bottom: 1px solid var(--p-line); font-size: .92rem; color: var(--p-muted); }
#done-info li:last-child { border-bottom: 0; }
#step-session { border-radius: var(--p-r) !important; }
#ses-title { font: 800 1.35rem/1.2 var(--f-head) !important; letter-spacing: -.02em; }
#ses-live > .surface-panel { border-radius: 18px; box-shadow: none; padding: 14px 12px !important; }
#ses-live .field-hint { font-size: .72rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--p-muted); }
#ses-live > .surface-panel > div:last-child { font-family: var(--f-head); font-weight: 800 !important; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
#ses-live > .surface-panel:last-child:has(#lv-cost) { background: linear-gradient(135deg, var(--p-pine), #0B7A65); color: #fff; border-color: transparent; }
#ses-live > .surface-panel:last-child:has(#lv-cost) .field-hint { color: rgba(255,255,255,.85); }


/* ---------- /c/ acctlink (2026-11-02): account card, saved cards, Starten, Neue Karte, inline guest login ---------- */
/* saved-card radio list (rendered by JS: label.x4-card[.is-sel] > input[type=radio] + span + span.x4-card-exp) */
.x4-cards { gap: 8px; margin: 0 0 6px; }
.x4-card { min-height: 56px; padding: 12px 14px; gap: 12px; border: 1px solid var(--p-line); border-radius: var(--p-r-sm); background: #fff;
  font-weight: 600; color: var(--p-ink); font-variant-numeric: tabular-nums; cursor: pointer; transition: border-color .15s, box-shadow .15s, background .15s; }
.x4-card:hover { border-color: #C9D3CF; }
.x4-card input { width: 20px; height: 20px; accent-color: var(--p-sky); flex: 0 0 auto; }
.x4-card:has(input:focus-visible) { box-shadow: 0 0 0 4px rgba(47,125,246,.18); }
.x4-card.is-sel { border-color: var(--p-sky); background: #F3F7FF; box-shadow: 0 0 0 1px var(--p-sky) inset; }
.x4-card .x4-card-exp { font: 500 .85rem/1 var(--f-mono); color: var(--p-muted); }
#acct-cards-label { color: var(--p-muted); font-size: .92rem; }
#acct-nocards:not([hidden]) { padding: 12px 14px; border-radius: var(--p-r-sm); background: var(--p-amber-bg); color: var(--p-amber-ink); font-weight: 500; }
/* account card + secondary actions */
#step-account .x4-paycard-info:empty { display: none; }
#btn-newcard { width: 100%; min-height: 52px; margin-top: 12px; }
#btn-newcard:not(.is-busy):not(.is-success)::before { content: "+"; font: 700 1.2rem/1 var(--f-head); margin-right: 2px; }
#newcard-box:not([hidden]) { margin-top: 12px; padding: 14px; border-radius: 18px; background: #F7F9F8; border: 1px solid var(--p-line); }
#newcard-box .form-actions .btn { min-height: 52px; flex: 1 1 10rem; }
#setup-element { min-height: 120px; }
#acct-who { font-weight: 600; color: var(--p-ink); }
/* inline guest login (form#login-box inside #step-choose) */
#login-box:not([hidden]) { margin: 14px 0 0; padding: 16px; border-radius: var(--p-r); font-size: 1rem;
  background: rgba(255,255,255,.85); border: 1px solid rgba(255,255,255,.95); box-shadow: var(--p-shadow);
  -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); display: grid; gap: 14px; }
#login-box .field-label { font-size: .92rem; color: var(--p-muted); }
#login-box .field-input { min-height: 54px; font-size: 1.0625rem; width: 100%; }
#login-box #btn-login-submit { min-height: 56px; width: 100%; font-size: 1.05rem; }
#login-box .x4-alert { margin: 0; }
#login-box .field-hint { margin: 0; }
/* disabled secondary/primary actions (e.g. #btn-savecard until the card form is complete); pay buttons keep the page's own light-blue disabled state */
.btn:disabled:not(.is-busy):not(.is-success):not(.x4-paybtn) { opacity: .5; box-shadow: none; cursor: not-allowed; transform: none; }
