/* ═══════════════════════════════════════════════════════════════
   Kostopoulos Car Electric — "Modern SaaS" theme
   -------------------------------------------------------------
   Cyan + slate + glass-morphism. Inter typography throughout.
   Inspired by the ServiceBook landing-page aesthetic but tuned
   for our workshop-app surfaces (kanban, plate badges, voice notes).
   Light by default; dark theme retained behind [data-theme="dark"].
   ═══════════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap');

:root {
    color-scheme: light dark;

    /* ── Typography (Inter does everything) ──────────────────── */
    --font-display: 'Inter', ui-sans-serif, system-ui, sans-serif;
    --font-body:    'Inter', ui-sans-serif, system-ui, sans-serif;
    --font-mono:    'JetBrains Mono', ui-monospace, "SF Mono", Menlo, monospace;

    /* ── Surfaces (slate-50 base, glass cards) ───────────────── */
    --bg:          #F8FAFC;        /* slate-50 — near-white app background */
    --bg-2:        #F1F5F9;        /* slate-100 — section alternation */
    --surface-1:   #FFFFFF;        /* primary card surface */
    --surface-2:   #F8FAFC;        /* nested raised surface */
    --surface-3:   #EEF2F7;        /* input wells */
    --surface-hi:  #E2E8F0;        /* hover */
    --glass-bg:    rgba(255,255,255,.7);
    --glass-bg-strong: rgba(255,255,255,.85);

    /* ── Lines ────────────────────────────────────────────────── */
    --line:         #E2E8F0;       /* slate-200 */
    --line-strong:  #CBD5E1;       /* slate-300 */
    --line-dashed:  rgba(20,28,40,.10);

    /* ── Ink (slate text scale) ──────────────────────────────── */
    --ink:         #1A1A2E;        /* near-black navy headings */
    --ink-muted:   #334155;        /* slate-700 body */
    --ink-faint:   #64748B;        /* slate-500 helper */
    --ink-ghost:   #94A3B8;        /* slate-400 placeholder */

    /* ── Brand (cyan / teal scale) ───────────────────────────── */
    --k-blue:       #54A7CA;       /* primary cyan */
    --k-blue-2:     #7BBFD9;       /* primary light */
    --k-blue-dark:  #3D8FB0;       /* primary dark */
    --k-blue-deep:  #2D6A87;       /* deep teal — secondary */
    --primary-glow: rgba(84,167,202,.25);

    /* Stamp / accent kept warm only where the workshop metaphor matters
       (workshop callouts, danger zones) — not on neutral chrome. */
    --k-red:        #DC4F3E;
    --k-red-dark:   #B43B2C;
    --amber:        #E6A33A;
    --green:        #00B086;       /* mint — completed states */
    --green-dark:   #00936F;

    /* EU plate (real-life plate look, stays canonical) */
    --eu-blue:      #1B3C8F;
    --eu-yellow:    #F9CF5B;
    --plate-cream:  #F8F2D8;
    --plate-ink:    #141414;

    /* ── Shadows (soft glass) ────────────────────────────────── */
    --shadow-sm: 0 1px 2px rgba(20,28,40,.04);
    --shadow-md: 0 4px 20px rgba(20,28,40,.06), 0 1px 3px rgba(20,28,40,.04);
    --shadow-lg: 0 24px 60px rgba(20,28,40,.10), 0 6px 18px rgba(20,28,40,.05);
    --shadow-glow: 0 0 0 3px var(--primary-glow), 0 12px 28px rgba(84,167,202,.22);
    --shadow-inset: inset 0 1px 0 rgba(255,255,255,.90);
    --shadow-pill: 0 18px 40px -12px rgba(20,28,40,.18), 0 6px 14px -4px rgba(20,28,40,.10), 0 1px 2px rgba(20,28,40,.05);

    /* ── Radii (pill-heavy, ServiceBook style) ───────────────── */
    --r-sm: 10px;
    --r-md: 14px;
    --r-lg: 18px;
    --r-xl: 24px;
    --r-pill: 999px;
}

/* ── Dark theme override (slate-900 base + cyan accents) ────── */
[data-theme="dark"] {
    --bg:          #0F172A;        /* slate-900 */
    --bg-2:        #1E293B;        /* slate-800 */
    --surface-1:   #1E293B;
    --surface-2:   #253247;
    --surface-3:   #334155;
    --surface-hi:  #3F4D63;
    --glass-bg:    rgba(30,41,59,.7);
    --glass-bg-strong: rgba(30,41,59,.85);

    --line:         #334155;
    --line-strong:  #475569;
    --line-dashed:  rgba(255,255,255,.08);

    --ink:         #F1F5F9;        /* slate-100 */
    --ink-muted:   #CBD5E1;        /* slate-300 */
    --ink-faint:   #94A3B8;        /* slate-400 */
    --ink-ghost:   #64748B;        /* slate-500 */

    --k-blue:       #7BBFD9;
    --k-blue-2:     #A1D2E5;
    --k-blue-dark:  #54A7CA;
    --k-blue-deep:  #3D8FB0;
    --primary-glow: rgba(123,191,217,.30);

    --k-red:        #F47A6B;
    --k-red-dark:   #DC4F3E;
    --amber:        #F3C661;
    --green:        #3FD9AF;
    --green-dark:   #00B086;

    --plate-cream:  #F3EFE0;

    --shadow-sm: 0 1px 2px rgba(0,0,0,.4);
    --shadow-md: 0 4px 20px rgba(0,0,0,.35), 0 1px 3px rgba(0,0,0,.5);
    --shadow-lg: 0 24px 60px rgba(0,0,0,.50), 0 6px 18px rgba(0,0,0,.30);
    --shadow-glow: 0 0 0 3px rgba(123,191,217,.30), 0 12px 28px rgba(123,191,217,.22);
    --shadow-inset: inset 0 1px 0 rgba(255,255,255,.06);
    --shadow-pill: 0 -2px 0 rgba(255,255,255,.04) inset, 0 24px 48px rgba(0,0,0,.55), 0 6px 14px rgba(0,0,0,.35);
}

/* ═══════════════════════════════════════════════════════════════
   Reset + body
   ═══════════════════════════════════════════════════════════════ */

* { -webkit-tap-highlight-color: transparent; }
*, *::before, *::after { box-sizing: border-box; }

html, body {
    margin: 0;
    padding: 0;
    height: 100%;
    background: var(--bg);
    color: var(--ink);
    font-family: var(--font-body);
    font-feature-settings: "ss01","cv11";
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    overscroll-behavior-y: contain;
}

/* Geometric grid + dot pattern + corner gradient glows — ServiceBook style.
   Two layered backgrounds: a faint cyan grid for structure, soft radial
   glows in the corners for depth. Fixed-position so they stay put during
   scroll, pointer-events:none so they never block interaction. */
body::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background-image:
        radial-gradient(ellipse at 10% 20%, rgba(84,167,202,.08), transparent 50%),
        radial-gradient(ellipse at 90% 80%, rgba(45,106,135,.06), transparent 50%),
        linear-gradient(rgba(84,167,202,.06) 1px, transparent 1px),
        linear-gradient(90deg, rgba(84,167,202,.06) 1px, transparent 1px);
    background-size: 100% 100%, 100% 100%, 60px 60px, 60px 60px;
}
body::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background-image: radial-gradient(rgba(84,167,202,.18) 1px, transparent 1px);
    background-size: 30px 30px;
    -webkit-mask-image: radial-gradient(ellipse at 50% 50%, black 20%, transparent 70%);
    mask-image: radial-gradient(ellipse at 50% 50%, black 20%, transparent 70%);
}
[data-theme="dark"] body::before {
    background-image:
        radial-gradient(ellipse at 10% 20%, rgba(123,191,217,.10), transparent 50%),
        radial-gradient(ellipse at 90% 80%, rgba(84,167,202,.08), transparent 50%),
        linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
    background-size: 100% 100%, 100% 100%, 60px 60px, 60px 60px;
}
[data-theme="dark"] body::after {
    background-image: radial-gradient(rgba(123,191,217,.18) 1px, transparent 1px);
}

a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; color: inherit; }

@supports (padding: max(0px)) {
    body {
        padding-left: max(0px, env(safe-area-inset-left));
        padding-right: max(0px, env(safe-area-inset-right));
    }
}

/* ═══════════════════════════════════════════════════════════════
   Login page
   ═══════════════════════════════════════════════════════════════ */

.login-body {
    /* The login is a single, always-dark hero surface — independent of the
       app theme — so both sides read as ONE cohesive screen (no seam). */
    --bg:          #0A1017;
    --surface-1:   #141E29;
    --surface-2:   #18232F;
    --surface-3:   #1B2733;
    --line:        rgba(255,255,255,.09);
    --line-strong: rgba(255,255,255,.16);
    --ink:         #EAF2F9;
    --ink-muted:   #B2C1D1;
    --ink-faint:   #8392A4;
    --ink-ghost:   #5E6E80;
    --glass-bg:        rgba(20,30,41,.50);
    --glass-bg-strong: rgba(20,30,41,.66);
    color-scheme: dark;
    min-height: 100vh;
    min-height: 100dvh;
    background:
        radial-gradient(1100px 720px at 16% -10%, rgba(84,167,202,.17), transparent 56%),
        radial-gradient(1000px 820px at 104% 116%, rgba(45,106,135,.20), transparent 60%),
        linear-gradient(180deg, #0C141D 0%, #0A0F16 100%);
    position: relative;
    overflow: hidden;
}
/* Faint blueprint grid, masked to a soft pool — runs continuously across
   both panels so nothing reads as a separate box. */
.login-body::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
    background-size: 48px 48px;
    -webkit-mask-image: radial-gradient(1300px 820px at 32% 18%, #000 26%, transparent 78%);
            mask-image: radial-gradient(1300px 820px at 32% 18%, #000 26%, transparent 78%);
    pointer-events: none;
}
/* Login card reads correctly on the always-dark surface regardless of the
   global data-theme (which only the rest of the app honours). */
.login-body .login-card {
    border-color: rgba(255,255,255,.08);
    box-shadow: 0 30px 80px -24px rgba(0,0,0,.62), inset 0 1px 0 rgba(255,255,255,.05);
}
.login-body .login-input { background: rgba(255,255,255,.04); }
.login-body .login-input:focus { background: rgba(255,255,255,.07); }

.login-container { width: 100%; max-width: 460px; position: relative; z-index: 1; }

.login-card {
    background: var(--glass-bg-strong);
    -webkit-backdrop-filter: blur(30px);
            backdrop-filter: blur(30px);
    border: 1px solid rgba(255,255,255,.95);
    border-radius: var(--r-xl);
    padding: 36px 28px 28px;
    box-shadow: var(--shadow-lg);
    position: relative;
    overflow: hidden;
}
[data-theme="dark"] .login-card {
    background: var(--glass-bg-strong);
    border-color: rgba(255,255,255,.06);
}
.login-card::before {
    content: "";
    position: absolute;
    top: 0; left: 20%; right: 20%;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--k-blue), transparent);
    opacity: .65;
}

/* Login screen — actual workshop sign photo */
.login-logo {
    display: block;
    width: 100%;
    max-width: 380px;
    height: auto;
    margin: 0 auto 28px;
    border-radius: 12px;
    box-shadow:
        0 14px 28px -14px rgba(20,28,40,.30),
        0 4px 8px -4px rgba(20,28,40,.18),
        inset 0 0 0 1px rgba(255,255,255,.06);
}
[data-theme="dark"] .login-logo {
    box-shadow:
        0 14px 28px -14px rgba(0,0,0,.55),
        0 4px 8px -4px rgba(0,0,0,.4),
        inset 0 0 0 1px rgba(255,255,255,.04);
}

.brand-mark {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    margin: 0 auto 28px;
    max-width: 340px;
}
.brand-mark .tag {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--k-blue-2);
}
.brand-mark .wordmark {
    position: relative;
    font-family: var(--font-display);
    font-weight: 800;
    font-style: normal;
    font-size: clamp(34px, 8vw, 46px);
    line-height: 1;
    letter-spacing: -.025em;
    color: var(--ink);
    padding: 8px 0 14px;
}
.brand-mark .wordmark::after {
    content: "";
    position: absolute;
    left: -8px; right: -8px; bottom: 6px;
    height: 18px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 18' fill='none'><path d='M0 9 L70 9 L85 2 L95 16 L105 2 L115 16 L125 2 L135 9 L165 9 L180 2 L190 16 L200 2 L210 9 L280 9' stroke='%2354A7CA' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat: no-repeat;
    background-size: 100% 100%;
    filter: drop-shadow(0 0 8px rgba(84,167,202,.5));
    animation: ecg-pulse 2.8s ease-in-out infinite;
}
@keyframes ecg-pulse {
    0%, 100% { opacity: .82; transform: translateY(0); }
    42%      { opacity: 1;   transform: translateY(-.5px); }
    50%      { opacity: .55; transform: translateY(0); }
}
.brand-mark .sub {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: .26em;
    text-transform: uppercase;
    color: var(--k-blue);
}

.login-title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 24px;
    text-align: center;
    margin: 0;
    color: var(--ink);
    letter-spacing: -.01em;
}
.login-subtitle {
    margin: 6px 0 28px;
    text-align: center;
    color: var(--ink-muted);
    font-size: 13px;
}
.login-footer {
    margin-top: 22px;
    font-size: 11px;
    text-align: center;
    color: var(--ink-faint);
    letter-spacing: .08em;
    text-transform: uppercase;
}

/* ═══════════════════════════════════════════════════════════════
   Buttons
   ═══════════════════════════════════════════════════════════════ */

.btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 46px;
    padding: 0 22px;
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 14px;
    letter-spacing: .01em;
    border-radius: var(--r-pill);   /* full pill, ServiceBook style */
    border: 1px solid transparent;
    color: var(--ink);
    transition: transform .08s ease, background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
    -webkit-user-select: none;
    user-select: none;
    white-space: nowrap;
}
.btn:focus-visible { outline: 2px solid var(--k-blue); outline-offset: 2px; }
.btn:active:not(:disabled) { transform: translateY(1px); }
.btn:disabled { opacity: .45; cursor: not-allowed; }
.btn-block { display: flex; width: 100%; }
.btn-lg { height: 54px; font-size: 15px; padding: 0 28px; letter-spacing: .02em; }
.btn-sm { height: 34px; font-size: 12px; padding: 0 14px; }

.btn-primary {
    background: linear-gradient(180deg, var(--k-blue-2), var(--k-blue));
    border-color: var(--k-blue-dark);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.30),
        0 1px 0 rgba(20,28,40,.06),
        0 10px 22px -8px var(--primary-glow);
    color: #fff;
}
.btn-primary:hover:not(:disabled) {
    background: linear-gradient(180deg, var(--k-blue), var(--k-blue-dark));
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.22),
        0 1px 0 rgba(20,28,40,.08),
        0 14px 28px -10px var(--primary-glow);
}

.btn-secondary {
    background: var(--surface-1);
    border-color: var(--line-strong);
    color: var(--ink);
    box-shadow: var(--shadow-sm), var(--shadow-inset);
}
.btn-secondary:hover:not(:disabled) { background: var(--surface-2); border-color: var(--ink-ghost); }

.btn-danger {
    background: linear-gradient(180deg, #DA6850, var(--k-red));
    border-color: var(--k-red-dark);
    color: #fff;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.18), 0 1px 0 rgba(20,28,40,.18), 0 8px 18px -8px rgba(200,82,58,.55);
}
.btn-danger:hover:not(:disabled) { background: linear-gradient(180deg, var(--k-red), var(--k-red-dark)); }

.btn-ghost {
    background: transparent;
    color: var(--k-blue);
}
.btn-ghost:hover:not(:disabled) { background: rgba(31,58,95,.07); }

/* ═══════════════════════════════════════════════════════════════
   Fields
   ═══════════════════════════════════════════════════════════════ */

.field { display: block; margin-bottom: 18px; }
.field-label {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--ink-muted);
    margin-bottom: 8px;
}
.field-label .optional {
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 10px;
    color: var(--ink-faint);
    letter-spacing: .04em;
    text-transform: none;
}
.field-input, .field-textarea {
    width: 100%;
    padding: 12px 14px;
    height: 48px;
    font-family: var(--font-body);
    font-size: 16px;
    color: var(--ink);
    background: var(--surface-1);
    border: 1px solid var(--line-strong);
    border-radius: var(--r-md);
    outline: none;
    transition: border-color .12s ease, box-shadow .12s ease, background-color .12s ease;
}
.field-input::placeholder, .field-textarea::placeholder { color: var(--ink-ghost); }
.field-textarea { height: auto; min-height: 140px; resize: vertical; line-height: 1.55; padding: 14px; }
.field-input:focus, .field-textarea:focus {
    border-color: var(--k-blue);
    box-shadow: 0 0 0 3px rgba(31,58,95,.15);
    background: var(--surface-1);
}
.field-hint { margin-top: 6px; font-size: 12px; color: var(--ink-muted); }
.field-error { margin-top: 6px; font-size: 12px; color: var(--k-red); letter-spacing: .02em; }
.field.has-error .field-input, .field.has-error .field-textarea { border-color: var(--k-red); box-shadow: 0 0 0 3px rgba(200,82,58,.18); }

/* The big plate search input */
.plate-input {
    width: 100%;
    height: 76px;
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 30px;
    letter-spacing: .26em;
    text-align: center;
    text-transform: uppercase;
    color: var(--ink);
    background: var(--surface-1);   /* aligned with the app palette (no cream plate look) */
    border: 1px solid var(--line-strong);
    border-radius: var(--r-lg);
    outline: none;
    box-shadow: var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.6);
    transition: border-color .12s ease, box-shadow .12s ease;
}
[data-theme="dark"] .plate-input { box-shadow: var(--shadow-sm); }
.plate-input::placeholder {
    color: var(--ink-ghost);
    font-weight: 700;
    letter-spacing: .2em;
}
.plate-input:focus {
    border-color: var(--k-blue);
    box-shadow: 0 0 0 3px rgba(84,167,202,.18);
}

/* ═══════════════════════════════════════════════════════════════
   TopBar
   ═══════════════════════════════════════════════════════════════ */

.topbar {
    position: sticky;
    top: 0;
    z-index: 40;
    background: rgba(248,250,252,.75);
    -webkit-backdrop-filter: saturate(160%) blur(20px);
    backdrop-filter: saturate(160%) blur(20px);
    border-bottom: 1px solid rgba(255,255,255,.6);
}
[data-theme="dark"] .topbar {
    background: rgba(15,23,42,.75);
    border-bottom-color: rgba(255,255,255,.06);
}

@supports (padding: env(safe-area-inset-top)) {
    .topbar { padding-top: env(safe-area-inset-top); }
}

.topbar-inner {
    max-width: 760px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 14px;
    height: 62px;
}
.topbar-title {
    flex: 1;
    min-width: 0;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 17px;
    letter-spacing: -.01em;
    color: var(--ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.topbar-back, .topbar-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: var(--r-pill);
    color: var(--ink-muted);
    transition: background-color .12s ease, color .12s ease;
}
.topbar-back:hover, .topbar-action:hover { background: var(--surface-3); color: var(--ink); }

.topbar-brand {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    padding: 6px 12px 7px 10px;
    border-radius: var(--r-pill);
    transition: background-color .12s ease;
    flex-shrink: 0;
    color: var(--ink);
}
.topbar-brand:hover { background: var(--surface-3); }
.topbar-brand .brand-pulse {
    display: inline-block;
    color: var(--k-blue);   /* the ECG pulse now uses the primary cyan */
    flex-shrink: 0;
    transform: translateY(1px);
}
.topbar-brand .brand-name {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 19px;
    letter-spacing: -.015em;
    line-height: 1;
    color: inherit;
    /* Tabular-ish feature settings keep the wordmark crisp on small screens */
    font-feature-settings: "ss01", "cv11";
}
@media (max-width: 380px) {
    .topbar-brand .brand-name { font-size: 17px; }
    .topbar-brand { gap: 7px; padding: 6px 10px; }
}

.topbar-link {
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 14px;
    letter-spacing: 0;
    color: var(--k-blue);
    padding: 8px 12px;
    border-radius: var(--r-sm);
    transition: background-color .12s ease;
}
.topbar-link:hover { background: rgba(31,58,95,.08); }

/* ── Topbar right cluster ───────────────────── */
.topbar-right {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: auto;
}

.spinner-inline {
    width: 28px;
    height: 28px;
    margin: 18px auto;
    border: 3px solid color-mix(in srgb, var(--ink) 10%, transparent);
    border-top-color: var(--k-blue);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

/* ── Theme toggle (sun/moon) ─────────────────────────────────── */
.theme-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: var(--r-pill);
    color: var(--ink-muted);
    background: transparent;
    transition: background-color .15s ease, color .15s ease, transform .25s ease;
}
.theme-toggle:hover { background: var(--surface-2); color: var(--ink); }
.theme-toggle:active { transform: rotate(-15deg); }

/* ═══════════════════════════════════════════════════════════════
   Screen container + bottom-nav offset
   ═══════════════════════════════════════════════════════════════ */

.screen {
    position: relative;
    z-index: 1;
    max-width: 760px;
    margin: 0 auto;
    padding: 22px 16px calc(132px + env(safe-area-inset-bottom));
}
.screen.no-tabs {
    padding-bottom: calc(56px + env(safe-area-inset-bottom));
}

.card {
    position: relative;
    background: var(--glass-bg);
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    border: 1px solid rgba(255,255,255,.9);
    border-radius: var(--r-xl);
    padding: 22px;
    box-shadow: var(--shadow-md);
}
[data-theme="dark"] .card {
    background: var(--glass-bg);
    border-color: rgba(255,255,255,.06);
    box-shadow: var(--shadow-md), var(--shadow-inset);
}
.card + .card { margin-top: 14px; }

/* "Ticket" variant retained for screens that still want the perforated
   look (entry detail). Same glass treatment, but with the perforated top. */
.card-ticket {
    border-radius: var(--r-lg);
    background:
        radial-gradient(circle at 8px 0, transparent 4px, var(--glass-bg-strong) 4.5px) top left / 16px 8px repeat-x,
        var(--glass-bg-strong);
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    padding-top: 28px;
}

.section-title {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin: 28px 4px 12px;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .18em;
    color: var(--ink-faint);
}
.section-title a, .section-title .action {
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13px;
    color: var(--k-blue);
    letter-spacing: 0;
    text-transform: none;
}

/* ═══════════════════════════════════════════════════════════════
   Search hero
   ═══════════════════════════════════════════════════════════════ */

.search-hero { padding: 30px 22px; }
.search-hero .label {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--k-blue);
    margin: 0 0 6px;
}
.search-hero h1 {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: clamp(28px, 7vw, 36px);
    letter-spacing: -.022em;
    line-height: 1.05;
    margin: 0 0 8px;
    color: var(--ink);
}
.search-hero p {
    margin: 0 0 22px;
    color: var(--ink-muted);
    font-size: 14.5px;
    line-height: 1.5;
}

/* ═══════════════════════════════════════════════════════════════
   License plate
   ═══════════════════════════════════════════════════════════════ */

.plate {
    display: inline-flex;
    align-items: stretch;
    vertical-align: middle;
    font-family: var(--font-mono);
    border: 2px solid #0A0A0A;
    border-radius: 6px;
    overflow: hidden;
    background: linear-gradient(180deg, #FFFCEB, var(--plate-cream));
    box-shadow: inset 0 0 0 2px rgba(255,255,255,.6), 0 2px 0 rgba(20,28,40,.3);
    color: var(--plate-ink);
    -webkit-user-select: none;
    user-select: none;
}
.plate-eu {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 4px 6px 5px;
    background: linear-gradient(180deg, #1E47A8, var(--eu-blue));
    color: #fff;
    font-family: var(--font-body);
    line-height: 1;
    min-width: 22px;
}
.plate-eu .stars {
    color: var(--eu-yellow);
    font-size: 9px;
    letter-spacing: .5px;
}
.plate-eu .country {
    font-weight: 800;
    font-size: 10px;
    letter-spacing: .04em;
}
.plate-body {
    padding: 6px 12px 7px;
    font-weight: 700;
    font-size: 18px;
    letter-spacing: .16em;
    white-space: nowrap;
}

.plate-sm .plate-eu { padding: 2px 4px 3px; min-width: 18px; }
.plate-sm .plate-eu .stars { font-size: 7px; }
.plate-sm .plate-eu .country { font-size: 8px; }
.plate-sm .plate-body { padding: 3px 8px 4px; font-size: 13px; letter-spacing: .14em; }

.plate-lg .plate-eu { padding: 8px 10px 9px; min-width: 30px; }
.plate-lg .plate-eu .stars { font-size: 12px; }
.plate-lg .plate-eu .country { font-size: 14px; }
.plate-lg .plate-body { padding: 10px 18px 12px; font-size: 28px; letter-spacing: .2em; }

.plate-xl .plate-eu { padding: 10px 12px 11px; min-width: 36px; }
.plate-xl .plate-eu .stars { font-size: 14px; }
.plate-xl .plate-eu .country { font-size: 16px; }
.plate-xl .plate-body { padding: 12px 22px 14px; font-size: 34px; letter-spacing: .22em; }

/* ═══════════════════════════════════════════════════════════════
   Lists
   ═══════════════════════════════════════════════════════════════ */

.list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.list-item-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 14px 16px;
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    transition: border-color .12s ease, background-color .12s ease, transform .08s ease, box-shadow .15s ease;
    cursor: pointer;
    box-shadow: var(--shadow-sm);
}
.list-item-link:hover { border-color: var(--line-strong); background: var(--surface-2); box-shadow: var(--shadow-md); }
.list-item-link:active { transform: translateY(1px); }
.list-item-main { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 6px; }
.list-item-sub {
    font-size: 13px;
    color: var(--ink-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.list-item-aside {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--ink-faint);
    white-space: nowrap;
    letter-spacing: .02em;
}

/* Customer/owner cards with score-color border */
.list-item-link.score-good     { border-left: 4px solid var(--green); }
.list-item-link.score-watch    { border-left: 4px solid var(--amber); }
.list-item-link.score-flag     { border-left: 4px solid var(--k-red); }
.list-item-link.score-none     { border-left: 4px solid var(--ink-ghost); }

/* ═══════════════════════════════════════════════════════════════
   Score badges (primed for Stage 2 behavior score)
   ═══════════════════════════════════════════════════════════════ */

.score-pip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 9px 4px;
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    border: 1px solid transparent;
}
.score-pip.good   { background: rgba(110,139,67,.14); color: #506831; border-color: rgba(110,139,67,.28); }
.score-pip.watch  { background: rgba(214,147,48,.16); color: #8E5F1A; border-color: rgba(214,147,48,.32); }
.score-pip.flag   { background: rgba(200,82,58,.14); color: #8E3320; border-color: rgba(200,82,58,.32); }
.score-pip.none   { background: var(--surface-3); color: var(--ink-faint); border-color: var(--line); }
[data-theme="dark"] .score-pip.good  { color: #BDD89A; }
[data-theme="dark"] .score-pip.watch { color: #F1C275; }
[data-theme="dark"] .score-pip.flag  { color: #F2A395; }
[data-theme="dark"] .score-pip.none  { color: var(--ink-muted); }
.score-pip.none .score-dot { background: var(--ink-faint); opacity: .65; }

.score-dot {
    display: inline-block;
    width: 8px; height: 8px;
    border-radius: 50%;
    background: currentColor;
}

/* Pinned warning banner on the owner detail screen */
.warning-banner {
    margin-bottom: 14px;
    padding: 14px 16px;
    background:
        repeating-linear-gradient(-45deg, rgba(200,82,58,.06) 0 10px, transparent 10px 20px),
        rgba(200,82,58,.10);
    border: 1px solid rgba(200,82,58,.35);
    border-radius: var(--r-md);
    color: var(--k-red-dark);
    font-size: 14px;
    line-height: 1.5;
    font-weight: 500;
    display: flex;
    gap: 12px;
    align-items: flex-start;
}
.warning-banner strong { font-weight: 700; }
[data-theme="dark"] .warning-banner { color: #F2A395; }

/* Compact warning strip used inside owner cards on the Customers list */
.warning-strip {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    background: rgba(200,82,58,.08);
    border: 1px solid rgba(200,82,58,.25);
    border-radius: var(--r-sm);
    color: var(--k-red-dark);
    font-size: 12.5px;
    line-height: 1.35;
}
.warning-strip .warn-ico {
    transform: rotate(45deg); /* turns the close × into a thicker plus mark */
    flex-shrink: 0;
}
[data-theme="dark"] .warning-strip { color: #F2A395; }

/* Tag chips */
.tag-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
}
.tag-chip {
    display: inline-flex;
    align-items: center;
    padding: 4px 12px 5px;
    background: var(--surface-3);
    border: 1px solid var(--line);
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-size: 12.5px;
    font-weight: 600;
    color: var(--ink-muted);
    letter-spacing: .02em;
    line-height: 1.25;
}
/* Selectable tag picker (used in entry forms) */
.tag-picker {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 4px;
}
.tag-chip.selectable {
    cursor: pointer;
    transition: background-color .12s ease, border-color .12s ease, color .12s ease, transform .08s ease;
    padding: 7px 14px 8px;
    font-size: 13px;
    background: var(--surface-1);
}
.tag-chip.selectable:hover { border-color: var(--line-strong); }
.tag-chip.selectable:active { transform: translateY(1px); }
.tag-chip.selectable.active {
    background: var(--k-blue);
    border-color: var(--k-blue-dark);
    color: #fff;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.12), 0 2px 6px -2px rgba(31,58,95,.4);
}

/* ─── Cost field (€ prefix + numeric input) ─── */
.cost-field {
    position: relative;
    display: flex;
    align-items: center;
}
.cost-field .cost-prefix {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 16px;
    color: var(--ink-muted);
    pointer-events: none;
}
.cost-field .cost-input {
    padding-left: 30px;
    font-family: var(--font-mono);
    font-weight: 700;
    letter-spacing: .02em;
}

/* ─── Paid toggle (segmented) ─── */
.paid-toggle {
    display: flex;
    background: var(--surface-3);
    border: 1px solid var(--line);
    border-radius: var(--r-pill);
    padding: 4px;
    gap: 4px;
}
.paid-segment {
    flex: 1;
    padding: 9px 12px;
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13px;
    color: var(--ink-muted);
    transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.paid-segment.active {
    background: var(--surface-1);
    color: var(--ink);
    box-shadow: var(--shadow-sm);
}
.paid-toggle.is-paid .paid-segment.active {
    background: var(--green);
    color: #fff;
}

/* ─── Follow-up segmented (wrapping chip row) ─── */
.follow-up-select {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 4px;
}
.follow-up-chip {
    appearance: none;
    border: 1px solid var(--line-strong);
    background: var(--surface-1);
    color: var(--ink-muted);
    padding: 7px 13px 8px;
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 12.5px;
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
    cursor: pointer;
}
.follow-up-chip:hover { border-color: var(--ink-faint); }
.follow-up-chip.active.tier-watch { background: var(--amber); color: #fff; border-color: var(--amber); }
.follow-up-chip.active.tier-flag  { background: var(--k-red); color: #fff; border-color: var(--k-red); }
.follow-up-chip.active.tier-good  { background: var(--green); color: #fff; border-color: var(--green); }
.follow-up-chip.active.tier-none  { background: var(--surface-3); color: var(--ink); border-color: var(--line-strong); }

/* Read-only follow-up badge inside entry cards */
.follow-up-badge {
    display: inline-flex;
    align-items: center;
    padding: 3px 9px 4px;
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 11.5px;
    letter-spacing: .02em;
    line-height: 1.3;
}
.follow-up-badge.tier-watch { background: rgba(214,147,48,.16); color: #8E5F1A; border: 1px solid rgba(214,147,48,.3); }
.follow-up-badge.tier-flag  { background: rgba(200,82,58,.14); color: #8E3320; border: 1px solid rgba(200,82,58,.3); }
.follow-up-badge.tier-good  { background: rgba(110,139,67,.14); color: #506831; border: 1px solid rgba(110,139,67,.3); }
[data-theme="dark"] .follow-up-badge.tier-watch { color: #F1C275; }
[data-theme="dark"] .follow-up-badge.tier-flag  { color: #F2A395; }
[data-theme="dark"] .follow-up-badge.tier-good  { color: #BDD89A; }

/* ─── Entry card footer (tags + cost + follow-up + km row) ─── */
.entry-card-footer {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--line-dashed);
    min-height: 1px;
}
.entry-card-footer:empty { display: none; }
.entry-mileage { margin-top: 0 !important; }
.entry-cost {
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 13px;
    padding: 3px 10px 4px;
    border-radius: var(--r-pill);
    letter-spacing: .01em;
}
.entry-cost.paid   { background: rgba(110,139,67,.14); color: #506831; border: 1px solid rgba(110,139,67,.3); }
.entry-cost.unpaid { background: rgba(200,82,58,.10); color: #8E3320; border: 1px solid rgba(200,82,58,.3); }
[data-theme="dark"] .entry-cost.paid   { color: #BDD89A; }
[data-theme="dark"] .entry-cost.unpaid { color: #F2A395; }

/* ─── Plate scanner (Stage 2E) ─── */
.scan-screen { padding-top: 8px; }
.scan-stage {
    position: relative;
    border-radius: var(--r-xl);
    overflow: hidden;
    background: #0A0E14;
    aspect-ratio: 4 / 3;
    margin: 0 -2px;
    box-shadow: var(--shadow-lg);
}
.scan-video {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.scan-overlay {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        linear-gradient(180deg,
            rgba(10,14,20,.55) 0%,
            rgba(10,14,20,.10) 30%,
            rgba(10,14,20,.10) 70%,
            rgba(10,14,20,.55) 100%);
}
.scan-cutout {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 82%;
    aspect-ratio: 520 / 113;   /* real EU plate (520 mm × 113 mm = 4.6:1) */
    border: 3px solid rgba(255,255,255,.85);
    border-radius: 10px;
    box-shadow:
        0 0 0 9999px rgba(10,14,20,.35),
        inset 0 0 0 2px rgba(0,0,0,.45);
}
.scan-cutout::before, .scan-cutout::after {
    content: "";
    position: absolute;
    width: 22px;
    height: 22px;
    border: 4px solid var(--eu-yellow);
}
.scan-cutout::before {
    top: -4px; left: -4px;
    border-right: none;
    border-bottom: none;
    border-top-left-radius: 8px;
}
.scan-cutout::after {
    bottom: -4px; right: -4px;
    border-left: none;
    border-top: none;
    border-bottom-right-radius: 8px;
}
.scan-hint {
    position: absolute;
    bottom: 14px;
    left: 14px;
    right: 14px;
    text-align: center;
    color: rgba(255,255,255,.92);
    font-size: 13px;
    font-weight: 500;
    margin: 0;
    text-shadow: 0 1px 4px rgba(0,0,0,.5);
}
.scan-actions { margin-top: 18px; }

.scan-result-card {
    margin-top: 18px;
    padding: 22px 18px;
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    box-shadow: var(--shadow-md);
    text-align: center;
}
.scan-result-card.miss {
    background:
        repeating-linear-gradient(45deg, rgba(200,82,58,.04) 0 10px, transparent 10px 20px),
        var(--surface-1);
    border-color: rgba(200,82,58,.3);
}
.scan-result-label {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--ink-faint);
    margin-bottom: 14px;
}
.scan-result-card.miss .scan-result-label { color: var(--k-red-dark); }
[data-theme="dark"] .scan-result-card.miss .scan-result-label { color: #F2A395; }
.scan-result-plate {
    display: flex;
    justify-content: center;
}

/* ═══════════════════════════════════════════════════════════════
   Wave 5B-pre — Parts waiting tab + VIN decoder + web search
   ═══════════════════════════════════════════════════════════════ */

.parts-waiting-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.parts-waiting-card {
    /* Stronger left edge in the workshop-amber to signal "needs attention". */
    border-left: 4px solid var(--amber);
    padding: 18px 20px 20px;
}

.parts-waiting-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}
.parts-waiting-age {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.1;
}
.parts-waiting-age strong {
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 14px;
    color: #B07B1F;
}
[data-theme="dark"] .parts-waiting-age strong { color: var(--amber); }

.parts-waiting-vehicle {
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 14.5px;
    color: var(--ink);
    margin: 0 0 4px;
}

.parts-waiting-customer {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: center;
    margin: 6px 0 12px;
    font-size: 13px;
    color: var(--ink-muted);
}
.parts-waiting-phone {
    padding: 0 !important;
    font-weight: 600;
}

.parts-waiting-notes {
    margin: 0 0 12px;
    padding: 10px 12px;
    background: color-mix(in srgb, var(--amber) 8%, var(--surface-2));
    border-left: 3px solid var(--amber);
    border-radius: var(--r-md);
    font-style: italic;
    font-size: 13.5px;
    line-height: 1.45;
    color: var(--ink);
    white-space: pre-wrap;
    word-break: break-word;
}

.parts-waiting-grid {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 0 0 12px;
    padding: 10px 12px;
    background: var(--surface-2);
    border: 1px dashed var(--line-strong);
    border-radius: var(--r-md);
}
.parts-waiting-cell {
    display: grid;
    grid-template-columns: 110px 1fr;
    align-items: center;
    gap: 10px;
    font-size: 13px;
}
.parts-waiting-cell dt {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--ink-faint);
    margin: 0;
}
.parts-waiting-cell dd {
    margin: 0;
    color: var(--ink);
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.parts-waiting-vin-block {
    margin-bottom: 10px;
}

/* VIN decoder result panel ──────────────────────────────── */
.vin-decoder-result {
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    padding: 12px 14px;
}
.vin-decoder-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 4px 12px;
    margin: 0;
}
@media (min-width: 480px) {
    .vin-decoder-grid {
        grid-template-columns: minmax(0, 140px) minmax(0, 1fr);
    }
}
.vin-decoder-grid dt {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--ink-faint);
    margin: 0;
    padding-top: 2px;
}
.vin-decoder-grid dd {
    margin: 0 0 2px;
    color: var(--ink);
    font-size: 13.5px;
}

/* Web-search action row ──────────────────────────────────── */
.web-search-actions {
    margin-top: 6px;
}
.web-search-label {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--ink-faint);
    margin: 0 0 8px;
}
.web-search-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.web-search-link {
    text-decoration: none !important;
}

/* ═══════════════════════════════════════════════════════════════
   Wave 5A — Suppliers + Parts inventory
   ═══════════════════════════════════════════════════════════════ */

/* Settings → Workshop nav rows ───────────────────────────── */
.settings-nav { padding: 18px 18px 8px; }
.settings-nav-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 6px;
    border-bottom: 1px dashed var(--line-dashed);
    color: var(--ink);
    text-decoration: none;
    transition: background-color .12s ease;
    border-radius: var(--r-sm);
}
.settings-nav-row:last-child { border-bottom: none; }
.settings-nav-row:hover { background: var(--surface-2); }
.settings-nav-icon {
    width: 36px; height: 36px;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 50%;
    background: color-mix(in srgb, var(--k-blue) 14%, var(--surface-1));
    color: var(--k-blue);
    flex-shrink: 0;
}
.settings-nav-text {
    flex: 1; min-width: 0;
    display: flex; flex-direction: column; gap: 2px;
}
.settings-nav-text strong {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 15px;
    color: var(--ink);
    letter-spacing: -.005em;
}
.settings-nav-text .muted { font-size: 12.5px; }
.settings-nav-arrow {
    color: var(--ink-faint);
    font-size: 20px;
    flex-shrink: 0;
}

/* Part card in list ──────────────────────────────────────── */
.part-card {
    border-left: 4px solid var(--line-strong);
}
.part-card.is-ok    { border-left-color: var(--green); }
.part-card.is-low   { border-left-color: var(--amber); }
.part-card.is-out   { border-left-color: var(--k-red); }
.part-card.is-archived,
.list-item-link.is-archived {
    opacity: .55;
}

.part-stock {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    flex-shrink: 0;
}
.part-stock-qty {
    font-family: var(--font-mono);
    font-weight: 800;
    font-size: 22px;
    color: var(--ink);
    line-height: 1;
}
.part-stock.is-low .part-stock-qty   { color: #8E5F1A; }
.part-stock.is-out .part-stock-qty   { color: var(--k-red); }
[data-theme="dark"] .part-stock.is-low .part-stock-qty { color: var(--amber); }
.part-stock-warn {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 10.5px;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.part-stock.is-low .part-stock-warn { color: var(--amber); }
.part-stock.is-out .part-stock-warn { color: var(--k-red); }

.part-price-row {
    display: flex;
    gap: 8px;
    align-items: baseline;
}

/* Part detail — big stock counter with +/− ──────────────── */
.part-stock-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 18px;
    background: var(--surface-2);
    border: 1.5px solid var(--line);
    border-radius: var(--r-lg);
    margin-top: 8px;
}
.part-stock-card-ok  { border-color: color-mix(in srgb, var(--green) 30%, var(--line)); background: color-mix(in srgb, var(--green) 4%, var(--surface-2)); }
.part-stock-card-low { border-color: color-mix(in srgb, var(--amber) 35%, var(--line)); background: color-mix(in srgb, var(--amber) 5%, var(--surface-2)); }
.part-stock-card-out { border-color: color-mix(in srgb, var(--k-red) 35%, var(--line)); background: color-mix(in srgb, var(--k-red) 5%, var(--surface-2)); }
.part-stock-card-num {
    font-family: var(--font-mono);
    font-weight: 800;
    font-size: 36px;
    color: var(--ink);
    text-align: center;
    flex: 1;
    line-height: 1;
}
.part-stock-card-num strong { font-family: inherit; font-weight: 800; }
.part-stock-warn-row {
    margin: 8px 0 0;
    color: var(--k-red);
    font-weight: 700;
    font-size: 13px;
}

.checkbox-row input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--k-blue);
}

/* ═══════════════════════════════════════════════════════════════
   Wave 3 — task list + DVI inspection
   ═══════════════════════════════════════════════════════════════ */

/* Task list editor / display ─────────────────────────────── */
.task-list-field { margin-top: 4px; }
.task-list-progress {
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 11px;
    color: var(--k-blue-deep);
    margin-left: 10px;
    background: color-mix(in srgb, var(--k-blue) 12%, var(--surface-1));
    padding: 2px 8px;
    border-radius: var(--r-pill);
    letter-spacing: .02em;
    text-transform: none;
}
.task-list {
    list-style: none;
    padding: 0;
    margin: 8px 0 10px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.task-item {
    display: grid;
    grid-template-columns: 26px 1fr auto;
    align-items: center;
    gap: 10px;
    padding: 8px 12px 8px 8px;
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    transition: background-color .12s ease;
}
.task-item.is-done { background: color-mix(in srgb, var(--green) 6%, var(--surface-2)); }
.task-item.is-done .task-text-input,
.task-item.is-done .task-text {
    text-decoration: line-through;
    text-decoration-color: color-mix(in srgb, var(--green) 60%, transparent);
    color: var(--ink-faint);
}
.task-check {
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    border: 1.5px solid var(--line-strong);
    background: var(--surface-1);
    color: transparent;
    cursor: pointer;
    font-weight: 800;
    font-size: 14px;
    line-height: 1;
    transition: background-color .12s ease, border-color .12s ease, color .12s ease;
}
.task-check:hover { border-color: var(--ink-faint); }
.task-item.is-done .task-check {
    background: var(--green);
    border-color: var(--green-dark);
    color: #fff;
}
.task-text-input {
    appearance: none;
    background: transparent;
    border: 0;
    outline: none;
    padding: 4px 0;
    font-family: var(--font-body);
    font-size: 14px;
    color: var(--ink);
    width: 100%;
}
.task-text-input:focus { background: var(--surface-1); border-radius: 6px; padding-left: 6px; padding-right: 6px; }
.task-text {
    font-family: var(--font-body);
    font-size: 14px;
    color: var(--ink);
}
.task-remove {
    appearance: none;
    background: none;
    border: 0;
    color: var(--ink-faint);
    font-size: 18px;
    width: 24px;
    height: 24px;
    line-height: 1;
    cursor: pointer;
    border-radius: 50%;
    transition: background-color .12s ease, color .12s ease;
}
.task-remove:hover { background: color-mix(in srgb, var(--k-red) 12%, transparent); color: var(--k-red); }
.task-add-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 8px;
    align-items: center;
    margin-top: 6px;
}
.task-add-row .field-input { margin: 0; }

/* DVI inspection form ─────────────────────────────────────── */
.inspection-form { margin-top: 4px; }
.inspection-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.inspection-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 10px 12px;
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
}
@media (min-width: 480px) {
    .inspection-row {
        grid-template-columns: 1fr auto;
        align-items: center;
    }
}
.inspection-row-label {
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 14px;
    color: var(--ink);
}
.inspection-row-status {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 4px;
}
.inspection-pill {
    appearance: none;
    background: var(--surface-1);
    border: 1.5px solid var(--line-strong);
    color: var(--ink-muted);
    padding: 4px 10px 5px;
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 11.5px;
    letter-spacing: .02em;
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease, border-color .12s ease;
}
.inspection-pill:hover { border-color: var(--ink-faint); }
.inspection-pill:disabled { cursor: default; }
.inspection-pill.is-active.inspection-pill-ok {
    background: var(--green); border-color: var(--green-dark); color: #fff;
}
.inspection-pill.is-active.inspection-pill-attention {
    background: var(--amber); border-color: #B07B1F; color: #fff;
}
.inspection-pill.is-active.inspection-pill-critical {
    background: var(--k-red); border-color: var(--k-red-dark); color: #fff;
}
.inspection-pill.is-active.inspection-pill-na {
    background: var(--ink-ghost); border-color: var(--ink-faint); color: #fff;
}
.inspection-note {
    grid-column: 1 / -1;
    margin: 4px 0 0;
}
.inspection-note-readonly {
    grid-column: 1 / -1;
    margin: 4px 0 0;
    font-size: 12.5px;
    font-style: italic;
}

/* Read-only inspection summary on EntryDetail ─────────────── */
.inspection-summary {
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    padding: 12px 14px;
}
.inspection-summary-line {
    margin: 0;
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13.5px;
    color: var(--ink);
    letter-spacing: .02em;
}
.inspection-summary-list {
    list-style: none;
    padding: 0;
    margin: 8px 0 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.inspection-summary-row {
    display: flex;
    gap: 8px;
    align-items: baseline;
    font-size: 13px;
    line-height: 1.4;
    padding: 4px 0;
    border-radius: 6px;
}
.inspection-summary-icon {
    font-weight: 800;
    width: 16px;
    text-align: center;
}
.inspection-summary-row.inspection-pill-attention .inspection-summary-icon { color: #B07B1F; }
.inspection-summary-row.inspection-pill-critical  .inspection-summary-icon { color: var(--k-red); }
.inspection-summary-label { font-weight: 600; color: var(--ink); }

/* ═══════════════════════════════════════════════════════════════
   Wave 2 — Schedule / appointments
   ═══════════════════════════════════════════════════════════════ */

/* Toolbar at the top of /schedule and /events — tab strip + nav. */
.schedule-view-tabs {
    display: inline-flex;
    gap: 2px;
    background: var(--surface-3);
    padding: 4px;
    border-radius: var(--r-pill);
    margin-bottom: 12px;
}
.schedule-view-tab {
    appearance: none;
    background: none;
    border: 0;
    padding: 7px 18px;
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13px;
    color: var(--ink-muted);
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease;
}
.schedule-view-tab:hover { color: var(--ink); }
.schedule-view-tab.is-active {
    background: var(--surface-1);
    color: var(--ink);
    box-shadow: var(--shadow-sm);
}

.schedule-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin: 14px 0 0;
    flex-wrap: wrap;
}
.schedule-nav {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.schedule-nav-btn {
    appearance: none;
    background: var(--surface-2);
    border: 1px solid var(--line);
    width: 38px;
    height: 38px;
    border-radius: var(--r-pill);
    color: var(--ink-muted);
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease;
}
.schedule-nav-btn:hover { background: var(--surface-3); color: var(--ink); }
.schedule-today-btn {
    appearance: none;
    background: var(--surface-2);
    border: 1px solid var(--line);
    padding: 0 14px;
    height: 38px;
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13px;
    color: var(--ink);
    cursor: pointer;
    transition: background-color .12s ease;
}
.schedule-today-btn:hover { background: var(--surface-3); }
.schedule-range {
    margin: 12px 0 0;
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 15px;
    color: var(--ink);
}

.schedule-card { padding: 14px; overflow: auto; }
.schedule-empty {
    text-align: center;
    padding: 28px 16px;
    font-size: 13.5px;
}

/* ── Day view ── */
.schedule-day-head {
    margin: 0 0 10px;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 14.5px;
    color: var(--ink);
    text-transform: capitalize;
}
.schedule-day-grid {
    list-style: none;
    padding: 0;
    margin: 0;
}
.schedule-day-row {
    display: grid;
    grid-template-columns: 56px 1fr;
    gap: 10px;
    align-items: stretch;
    min-height: 56px;
    padding: 6px 0;
    border-top: 1px dashed var(--line-dashed);
    cursor: pointer;
}
.schedule-day-row:hover .schedule-day-slot { background: var(--surface-2); }
.schedule-day-row:first-child { border-top: none; }
.schedule-day-hour {
    font-family: var(--font-mono);
    font-weight: 600;
    font-size: 12px;
    color: var(--ink-faint);
    align-self: flex-start;
    padding-top: 6px;
}
.schedule-day-slot {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 44px;
    border-radius: var(--r-md);
    padding: 4px;
    transition: background-color .15s ease;
}

/* ── Week view ── */
.schedule-week {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.schedule-week-head,
.schedule-week-grid {
    display: grid;
    grid-template-columns: 50px repeat(7, minmax(80px, 1fr));
    gap: 1px;
    background: var(--line);
    border-radius: var(--r-md);
    overflow: hidden;
    min-width: 640px;
}
.schedule-week-head {
    margin-bottom: 1px;
}
.schedule-week-day-head {
    background: var(--surface-1);
    padding: 8px 6px;
    text-align: center;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 12px;
    color: var(--ink);
    text-transform: uppercase;
    letter-spacing: .04em;
}
.schedule-week-day-head .muted {
    font-weight: 500;
    color: var(--ink-faint);
    text-transform: none;
    margin-left: 4px;
    letter-spacing: 0;
}
.schedule-week-day-head.is-today {
    background: color-mix(in srgb, var(--k-blue) 12%, var(--surface-1));
    color: var(--k-blue-deep);
}
.schedule-week-hour {
    background: var(--surface-1);
    padding: 6px 4px;
    font-family: var(--font-mono);
    font-weight: 600;
    font-size: 10.5px;
    color: var(--ink-faint);
    text-align: right;
}
.schedule-week-cell {
    background: var(--surface-1);
    min-height: 52px;
    padding: 4px;
    display: flex;
    flex-direction: column;
    gap: 3px;
    cursor: pointer;
    transition: background-color .12s ease;
}
.schedule-week-cell:hover { background: var(--surface-2); }

/* ── Month view ── */
.schedule-month-head {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 1px;
    margin-bottom: 6px;
}
.schedule-month-head span {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    color: var(--ink-faint);
    text-transform: uppercase;
    letter-spacing: .12em;
    text-align: center;
    padding: 6px 0;
}
.schedule-month-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
}
.schedule-month-cell {
    appearance: none;
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    min-height: 72px;
    padding: 6px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    cursor: pointer;
    transition: background-color .12s ease, border-color .12s ease;
    position: relative;
}
.schedule-month-cell:hover { background: var(--surface-2); border-color: var(--line-strong); }
.schedule-month-cell.is-out { opacity: .35; }
.schedule-month-cell.is-today {
    background: color-mix(in srgb, var(--k-blue) 10%, var(--surface-1));
    border-color: color-mix(in srgb, var(--k-blue) 35%, var(--line));
}
.schedule-month-cell-num {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 13px;
    color: var(--ink);
}
.schedule-month-cell.is-today .schedule-month-cell-num { color: var(--k-blue-deep); }
.schedule-month-cell-count {
    position: absolute;
    top: 6px;
    right: 6px;
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 10.5px;
    color: var(--ink-faint);
}
.schedule-month-cell-list {
    list-style: none;
    padding: 0;
    margin: auto 0 0;
    display: flex;
    flex-wrap: wrap;
    gap: 3px;
}
.schedule-month-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--k-blue);
}

/* ── Appointment block ── */
.appt-block {
    appearance: none;
    width: 100%;
    background: var(--k-blue);
    color: #fff;
    border: 0;
    border-radius: var(--r-sm);
    padding: 4px 6px 5px;
    text-align: left;
    cursor: pointer;
    box-shadow: 0 1px 2px rgba(20,28,40,.10);
    font-family: var(--font-body);
    display: flex;
    flex-direction: column;
    gap: 1px;
    transition: transform .08s ease, box-shadow .12s ease, filter .12s ease;
}
.appt-block:hover { filter: brightness(1.08); box-shadow: 0 4px 10px rgba(20,28,40,.14); }
.appt-block:active { transform: translateY(1px); }
.appt-block-time {
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 10.5px;
    letter-spacing: .04em;
    opacity: .85;
}
.appt-block-plate {
    font-weight: 700;
    font-size: 13px;
    letter-spacing: .02em;
    line-height: 1.1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.appt-block-type {
    font-size: 11.5px;
    opacity: .85;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.appt-block.is-compact {
    padding: 3px 5px 4px;
    font-size: 11px;
}
.appt-block.is-compact .appt-block-time { font-size: 9.5px; }
.appt-block.is-compact .appt-block-plate { font-size: 11.5px; }

/* Status palette */
.appt-status-scheduled { background: var(--k-blue); }
.appt-status-done {
    background: var(--green);
}
.appt-status-cancelled {
    background: var(--ink-ghost);
    color: rgba(255,255,255,.85);
}
.appt-status-no-show {
    background: var(--k-red);
}
.schedule-month-dot.appt-status-done       { background: var(--green); }
.schedule-month-dot.appt-status-cancelled  { background: var(--ink-ghost); }
.schedule-month-dot.appt-status-no-show    { background: var(--k-red); }

/* Status pill on detail screen */
.appt-detail-hero { padding: 22px 22px 24px; }
.appt-detail-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
}
.appt-status-pill {
    display: inline-flex;
    align-items: center;
    padding: 5px 14px 6px;
    border-radius: var(--r-pill);
    color: #fff;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: .02em;
}
.appt-overdue {
    margin-top: 8px;
    color: var(--k-red);
    font-weight: 700;
    font-size: 13px;
}
.appt-actions-grid {
    display: grid;
    gap: 8px;
    grid-template-columns: 1fr;
    margin-top: 10px;
}

/* Duration row (number input + "λεπτά" suffix) */
.duration-row {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 10px;
}
.duration-row .field-input { margin: 0; }

/* ═══════════════════════════════════════════════════════════════
   Wave 1 — propulsion badge, owner tag editor, mileage chart, ΑΦΜ
   ═══════════════════════════════════════════════════════════════ */

/* Propulsion badge on Car Detail. Cyan for EV/PHEV (HV warning),
   amber for Hybrid, neutral for the rest. */
.propulsion-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 4px 0 12px;
    padding: 4px 12px 5px;
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: .02em;
    background: color-mix(in srgb, var(--k-blue) 12%, var(--surface-1));
    color: var(--k-blue-deep);
    border: 1px solid color-mix(in srgb, var(--k-blue) 30%, var(--line));
}
.propulsion-ev,
.propulsion-phev {
    background: color-mix(in srgb, var(--amber) 14%, var(--surface-1));
    color: #8E5F1A;
    border-color: color-mix(in srgb, var(--amber) 38%, var(--line));
}
.propulsion-hybrid {
    background: color-mix(in srgb, var(--green) 14%, var(--surface-1));
    color: var(--green-dark);
    border-color: color-mix(in srgb, var(--green) 32%, var(--line));
}
.propulsion-warn {
    font-weight: 800;
    color: var(--k-red);
    letter-spacing: .04em;
}
[data-theme="dark"] .propulsion-ev,
[data-theme="dark"] .propulsion-phev { color: var(--amber); }

/* The PropulsionSelect "is on a high-voltage type" visual hint — adds a
   thin amber underline so the user sees they've picked something serious. */
.field-input.propulsion-hv {
    border-color: color-mix(in srgb, var(--amber) 40%, var(--line-strong));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--amber) 18%, transparent);
}

/* ── Owner tag editor + filter chips ── */
.owner-tag-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}
.owner-tag {
    appearance: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 11px 6px;
    border-radius: var(--r-pill);
    border: 1px solid var(--line-strong);
    background: var(--surface-2);
    color: var(--ink-muted);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 12.5px;
    letter-spacing: .01em;
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease, border-color .12s ease;
}
.owner-tag:hover { background: var(--surface-3); border-color: var(--ink-faint); }
.owner-tag.is-active {
    background: var(--k-blue);
    border-color: var(--k-blue-dark);
    color: #fff;
}
.owner-tag-x {
    appearance: none;
    background: none;
    border: 0;
    margin-left: 2px;
    padding: 0 0 0 2px;
    font-size: 16px;
    line-height: 1;
    color: rgba(255,255,255,.85);
    cursor: pointer;
}
.owner-tag-input-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 8px;
    align-items: center;
}
.owner-tag-input-row .field-input { margin: 0; }

/* ── VAT input — monospace, fixed width so it reads as an id ── */
.vat-input {
    font-family: var(--font-mono);
    font-weight: 600;
    letter-spacing: .08em;
    text-align: left;
}

/* ── Mileage chart card ── */
.mileage-card {
    padding: 18px 20px 16px;
}
.mileage-card-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    margin-bottom: 10px;
}
.mileage-card-latest {
    font-family: var(--font-body);
    font-size: 12px;
    color: var(--ink-faint);
    letter-spacing: .02em;
}
.mileage-card-latest strong {
    font-family: var(--font-mono);
    font-weight: 700;
    color: var(--ink);
    font-size: 13px;
}
.mileage-svg {
    display: block;
    width: 100%;
    height: 120px;
    margin: 0;
}
.mileage-card-stat {
    margin: 8px 0 0;
    font-size: 12.5px;
    color: var(--ink-muted);
}
.mileage-card-stat strong {
    font-family: var(--font-mono);
    color: var(--ink);
}
.mileage-empty {
    text-align: left;
    padding: 16px 20px 18px;
}

/* ═══════════════════════════════════════════════════════════════
   No-plate notice + plate-rename ("danger zone") card
   ═══════════════════════════════════════════════════════════════ */

.no-plate-notice {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 6px 0 14px;
    padding: 10px 12px;
    background: color-mix(in srgb, var(--k-blue) 7%, var(--surface-1));
    border: 1px solid color-mix(in srgb, var(--k-blue) 28%, var(--line));
    border-left: 4px solid var(--k-blue);
    border-radius: var(--r-md);
    color: var(--ink);
    font-size: 13.5px;
    line-height: 1.4;
}
.no-plate-notice svg { color: var(--k-blue); flex-shrink: 0; }

.rename-card {
    /* Subtle warning tint so the section reads as a destructive operation
       distinct from the regular edit form above it. */
    border-color: color-mix(in srgb, var(--k-red) 28%, var(--line));
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--k-red) 5%, transparent), transparent 40%),
        var(--surface-1);
}
.rename-card .rate-toggle {
    color: var(--k-red-dark);
}
[data-theme="dark"] .rename-card .rate-toggle { color: #F2A395; }

/* The select used by PlateCategorySelect — same chrome as a TextField but
   with a native dropdown arrow on the right. */
.plate-category-select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding-right: 38px;
    background-image:
        linear-gradient(45deg, transparent 50%, var(--ink-muted) 50%),
        linear-gradient(135deg, var(--ink-muted) 50%, transparent 50%);
    background-position: calc(100% - 18px) 50%, calc(100% - 13px) 50%;
    background-size: 5px 5px;
    background-repeat: no-repeat;
    cursor: pointer;
}

.alert-info {
    background: color-mix(in srgb, var(--k-blue) 7%, var(--surface-1));
    border: 1px solid color-mix(in srgb, var(--k-blue) 28%, var(--line));
    border-radius: var(--r-md);
    color: var(--ink);
    padding: 10px 12px;
    font-size: 13.5px;
}

/* ═══════════════════════════════════════════════════════════════
   No-role denial screen (logged-in user without ADMIN role)
   ═══════════════════════════════════════════════════════════════ */

.no-role-screen {
    padding-bottom: calc(40px + env(safe-area-inset-bottom));
}
.no-role-card {
    text-align: center;
    padding: 36px 24px 28px;
}
.no-role-card .no-role-icon {
    width: 72px;
    height: 72px;
    margin: 4px auto 18px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--k-blue) 14%, var(--surface-1));
    color: var(--k-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--k-blue) 35%, transparent);
}
.no-role-card h1 { color: var(--ink); }
.no-role-card p.muted {
    max-width: 30ch;
    margin: 0 auto 6px;
}
.no-role-card .btn-secondary { margin-top: 18px; }

/* ═══════════════════════════════════════════════════════════════
   Owner autocomplete (typeahead on the NewCar customer-name field)
   ═══════════════════════════════════════════════════════════════ */

.autocomplete-wrap {
    position: relative;
    /* Field already has its own bottom margin; we don't add to it so the
       dropdown sits flush against the input it belongs to. */
}

.autocomplete-list {
    position: absolute;
    top: calc(100% - 14px); /* overlap the .field bottom margin slightly */
    left: 0;
    right: 0;
    z-index: 30;
    list-style: none;
    margin: 0;
    padding: 6px;
    background: var(--surface-1);
    border: 1px solid var(--line-strong);
    border-radius: var(--r-md);
    box-shadow: var(--shadow-lg);
    max-height: 280px;
    overflow-y: auto;
    animation: autocomplete-in .14s ease both;
}
@keyframes autocomplete-in {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

.autocomplete-item {
    padding: 10px 12px;
    border-radius: var(--r-sm);
    cursor: pointer;
    transition: background-color .12s ease;
}
.autocomplete-item:hover,
.autocomplete-item:focus,
.autocomplete-item[aria-selected="true"] { background: var(--surface-2); }
.autocomplete-item + .autocomplete-item { margin-top: 2px; }

.autocomplete-row {
    display: flex;
    align-items: center;
    gap: 10px;
}
.autocomplete-main { flex: 1; min-width: 0; }
.autocomplete-name {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 15px;
    color: var(--ink);
    line-height: 1.25;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.autocomplete-sub {
    margin-top: 2px;
    font-family: var(--font-mono);
    font-size: 12px;
    color: var(--ink-muted);
    letter-spacing: .02em;
}

/* Inline status chip below the autocomplete input */
.autocomplete-status {
    margin: -10px 0 14px;  /* pulls up against the .field margin */
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 10px 6px;
    border-radius: var(--r-pill);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.3;
}
.autocomplete-status.linked {
    background: rgba(110,139,67,.14);
    border: 1px solid rgba(110,139,67,.3);
    color: #506831;
}
.autocomplete-status.new {
    background: rgba(31,58,95,.08);
    border: 1px solid rgba(31,58,95,.22);
    color: var(--k-blue);
}
[data-theme="dark"] .autocomplete-status.linked { color: #BDD89A; }
[data-theme="dark"] .autocomplete-status.new    { color: var(--k-blue-2); }

.autocomplete-unlink {
    appearance: none;
    margin-left: auto;
    background: transparent;
    border: 0;
    color: inherit;
    text-decoration: underline;
    font-size: 11.5px;
    font-weight: 600;
    cursor: pointer;
    padding: 0 0 0 8px;
}

/* ═══════════════════════════════════════════════════════════════
   Owner tier indicator (the colored dot next to a plate)
   ═══════════════════════════════════════════════════════════════ */

/* Wrap that places a plate badge and its tier dot on one baseline */
.plate-with-tier {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.plate-with-tier-xl { gap: 12px; }

.tier-dot {
    appearance: none;
    border: 2px solid var(--ink-faint);
    background: var(--surface-3);
    color: var(--ink-faint);
    border-radius: 50%;
    padding: 0;
    margin: 0;
    cursor: default;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    transition: transform .12s ease, box-shadow .15s ease;
}
.tier-dot.is-clickable { cursor: pointer; }
.tier-dot.is-clickable:hover { transform: scale(1.06); box-shadow: 0 4px 10px -2px rgba(20,28,40,.25); }
.tier-dot.is-clickable:active { transform: scale(.95); }
.tier-dot:disabled { cursor: default; }

.tier-dot-sm { width: 22px; height: 22px; }
.tier-dot-md { width: 28px; height: 28px; }
.tier-dot-lg { width: 38px; height: 38px; }

.tier-dot-good  { background: var(--green);  border-color: #5A7335; }
.tier-dot-watch { background: var(--amber);  border-color: #B47A1F; }
.tier-dot-flag  { background: var(--k-red);  border-color: var(--k-red-dark); }
.tier-dot-good, .tier-dot-watch, .tier-dot-flag { color: #fff; }

/* Grey "?" for unrated / no owner. Bigger glyph at each size. */
.tier-dot-none { background: var(--surface-3); border-color: var(--ink-ghost); color: var(--ink-muted); }
.tier-dot-q {
    font-family: var(--font-display);
    font-weight: 800;
    line-height: 1;
}
.tier-dot-sm .tier-dot-q { font-size: 14px; }
.tier-dot-md .tier-dot-q { font-size: 17px; }
.tier-dot-lg .tier-dot-q { font-size: 22px; }

/* ═══════════════════════════════════════════════════════════════
   Owner summary popup (PIN-gated)
   ═══════════════════════════════════════════════════════════════ */

.summary-backdrop {
    position: fixed;
    inset: 0;
    z-index: 95;
    background: rgba(20,28,40,.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding: 16px;
    animation: fade-in .18s ease both;
}
@media (min-width: 480px) { .summary-backdrop { align-items: center; } }
[data-theme="dark"] .summary-backdrop { background: rgba(0,0,0,.6); }

.summary-card {
    position: relative;
    width: 100%;
    max-width: 460px;
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    padding: 24px 22px 20px;
    box-shadow: var(--shadow-lg);
    animation: confirm-up .25s cubic-bezier(.2,.7,.2,1) both;
}
.summary-close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 36px;
    height: 36px;
    border: 0;
    background: transparent;
    color: var(--ink-muted);
    border-radius: var(--r-pill);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease;
}
.summary-close:hover { background: var(--surface-2); color: var(--ink); }

.summary-title {
    margin: 0 28px 10px 0;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 20px;
    letter-spacing: -.01em;
    color: var(--ink);
}

.summary-pin-hint { margin: 0 0 14px; font-size: 14px; line-height: 1.5; }
.summary-pin-input {
    text-align: center;
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 22px;
    letter-spacing: .4em;
    padding-left: .4em;
    height: 60px;
}

.summary-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    margin-bottom: 14px;
}
.summary-phone {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 14px;
    font-weight: 600;
    color: var(--k-blue);
    text-decoration: none;
}
.summary-phone:hover { text-decoration: underline; }

.summary-notes h4 { margin-bottom: 4px; }
.summary-empty { padding: 4px 0 8px; }

/* ═══════════════════════════════════════════════════════════════
   Quick-info (i) button + popup — γραμματεία fast lookup
   ═══════════════════════════════════════════════════════════════ */

.car-info-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    flex: 0 0 auto;
    border-radius: var(--r-pill);
    border: 1px solid var(--line);
    background: var(--surface-1);
    color: var(--ink-faint);
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease, border-color .12s ease;
}
.car-info-btn:hover {
    background: var(--surface-2);
    color: var(--k-blue-dark);
    border-color: var(--line-strong);
}
.car-info-btn-sm { width: 26px; height: 26px; }

.cinfo-plate { display: flex; justify-content: center; margin: 4px 0 2px; }
.cinfo-makeline {
    margin: 10px 0 0;
    text-align: center;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 15px;
    color: var(--ink);
}
.cinfo-body { margin-top: 6px; }
.cinfo-loading { display: flex; justify-content: center; padding: 28px 0; }
.cinfo-section {
    margin: 16px 0 0;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--ink-faint);
}
.cinfo-rows { display: grid; gap: 8px; margin: 10px 0 0; }
.cinfo-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 14px;
    margin: 0;
}
.cinfo-row dt { font-size: 13px; color: var(--ink-faint); flex: 0 0 auto; }
.cinfo-row dd {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--ink);
    text-align: right;
    word-break: break-word;
    min-width: 0;
}
.cinfo-row dd a {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--k-blue-dark);
    text-decoration: none;
    font-weight: 600;
}
.cinfo-row dd a:hover { text-decoration: underline; }
.cinfo-overdue { color: var(--k-red) !important; }
.cinfo-empty { margin: 10px 0 0; font-size: 14px; }
.cinfo-actions {
    display: flex;
    gap: 10px;
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid var(--line);
}
.cinfo-actions .btn { flex: 1; text-decoration: none; }

/* ═══════════════════════════════════════════════════════════════
   Συμβάντα kanban board
   ═══════════════════════════════════════════════════════════════ */

.kanban {
    margin-top: 18px;
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
}
@media (min-width: 768px) {
    .kanban { grid-template-columns: 1fr 1fr; gap: 16px; }
}

.kanban-col {
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    padding: 14px 12px 16px;
    background: var(--surface-2);
    min-height: 180px;
}
.kanban-col.tone-watch {
    background:
        linear-gradient(180deg, rgba(214,147,48,.08), transparent 60%),
        var(--surface-2);
    border-color: rgba(214,147,48,.25);
}
.kanban-col.tone-good {
    background:
        linear-gradient(180deg, rgba(110,139,67,.08), transparent 60%),
        var(--surface-2);
    border-color: rgba(110,139,67,.28);
}

.kanban-col-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 4px 6px 12px;
    border-bottom: 1px dashed var(--line-dashed);
    margin-bottom: 12px;
}
.kanban-col-title {
    margin: 0;
    font-family: var(--font-display);
    font-size: 16px;
    font-weight: 700;
    letter-spacing: -.005em;
    color: var(--ink);
}
.kanban-col.tone-watch  .kanban-col-title { color: #8E5F1A; }
.kanban-col.tone-good   .kanban-col-title { color: #506831; }
[data-theme="dark"] .kanban-col.tone-watch  .kanban-col-title { color: #F1C275; }
[data-theme="dark"] .kanban-col.tone-good   .kanban-col-title { color: #BDD89A; }

.kanban-col-count {
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 13px;
    padding: 2px 9px 3px;
    border-radius: var(--r-pill);
    background: var(--surface-1);
    color: var(--ink-muted);
    border: 1px solid var(--line);
    min-width: 28px;
    text-align: center;
}

.kanban-empty {
    padding: 28px 14px;
    text-align: center;
    background:
        repeating-linear-gradient(45deg, rgba(20,28,40,.018) 0 10px, transparent 10px 20px),
        var(--surface-1);
    border: 1px dashed var(--line-strong);
    border-radius: var(--r-lg);
    color: var(--ink-muted);
    font-size: 13.5px;
}

.kanban-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }

.kanban-card {
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: 14px 14px 12px;
    box-shadow: var(--shadow-sm);
    cursor: pointer;
    transition: transform .12s ease, box-shadow .15s ease, border-color .12s ease;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.kanban-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
    border-color: var(--line-strong);
}
.kanban-card:active { transform: translateY(0); }

.kanban-card-plate { display: flex; }
.kanban-card-meta {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}
.kanban-card-make {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 16px;
    color: var(--ink);
    letter-spacing: -.005em;
    line-height: 1.25;
    word-break: break-word;
}
.kanban-card-customer {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: var(--ink-muted);
    font-weight: 500;
}
.kanban-card-customer svg { flex-shrink: 0; opacity: .85; }
.kanban-card-time { font-size: 11.5px; }

.kanban-action {
    width: 100%;
    margin-top: 4px;
    /* Reuse .btn .btn-primary base styles from ./buttons; nothing extra needed */
}

/* ═══════════════════════════════════════════════════════════════
   ConfirmDialog (modal with big tap targets)
   ═══════════════════════════════════════════════════════════════ */

.confirm-backdrop {
    position: fixed;
    inset: 0;
    z-index: 90;
    background: rgba(20,28,40,.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding: 16px;
    animation: fade-in .18s ease both;
}
@media (min-width: 480px) {
    .confirm-backdrop { align-items: center; }
}
[data-theme="dark"] .confirm-backdrop { background: rgba(0,0,0,.6); }

.confirm-card {
    width: 100%;
    max-width: 440px;
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    padding: 22px 22px 18px;
    box-shadow: var(--shadow-lg);
    animation: confirm-up .25s cubic-bezier(.2,.7,.2,1) both;
}
@keyframes confirm-up {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
}

.confirm-title {
    margin: 0 0 8px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 20px;
    letter-spacing: -.01em;
    color: var(--ink);
}
.confirm-card.danger .confirm-title { color: var(--k-red-dark); }
[data-theme="dark"] .confirm-card.danger .confirm-title { color: #F2A395; }

.confirm-body {
    margin: 0 0 20px;
    color: var(--ink-muted);
    font-size: 14.5px;
    line-height: 1.5;
}
.confirm-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}
@media (max-width: 380px) {
    .confirm-actions { grid-template-columns: 1fr; }
}

/* ─── Voice recorder + voice list (Stage 2D) ─── */
.voice-recorder {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 16px;
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
}
.voice-record-btn {
    appearance: none;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--k-blue);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    box-shadow:
        0 6px 14px -4px rgba(31,58,95,.45),
        inset 0 1px 0 rgba(255,255,255,.2);
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease, background-color .2s ease;
    flex-shrink: 0;
}
.voice-record-btn:hover { transform: translateY(-1px); box-shadow: 0 10px 22px -6px rgba(31,58,95,.5); }
.voice-record-btn:active { transform: translateY(0) scale(.96); }
.voice-record-btn:disabled { opacity: .5; cursor: not-allowed; }
.voice-record-btn.recording {
    background: var(--k-red);
    box-shadow:
        0 6px 14px -4px rgba(200,82,58,.5),
        inset 0 1px 0 rgba(255,255,255,.2);
    position: relative;
}
/* Ripple ring — animates a transform/opacity pseudo-element so the GPU keeps
   the work on the composite thread instead of repainting box-shadow each frame. */
.voice-record-btn.recording::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid rgba(200,82,58,.55);
    pointer-events: none;
    animation: voice-pulse 1.4s ease-out infinite;
    will-change: transform, opacity;
}
@keyframes voice-pulse {
    0%   { transform: scale(1);    opacity: .8; }
    100% { transform: scale(1.55); opacity: 0;  }
}

.voice-recorder-status {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    flex: 1;
    min-width: 0;
}
.voice-rec-dot {
    display: inline-block;
    width: 10px; height: 10px;
    border-radius: 50%;
    background: var(--k-red);
    animation: voice-blink 1s ease-in-out infinite;
    flex-shrink: 0;
}
@keyframes voice-blink {
    0%, 100% { opacity: 1; }
    50%      { opacity: .35; }
}
.voice-rec-label { font-weight: 600; font-size: 14px; color: var(--ink); }
.voice-rec-time {
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 16px;
    color: var(--k-red);
    margin-left: auto;
    letter-spacing: .04em;
}
.voice-rec-hint  { font-size: 13.5px; color: var(--ink-muted); }
.voice-rec-error { font-size: 13px; color: var(--k-red-dark); }
[data-theme="dark"] .voice-rec-error { color: #F2A395; }

/* List of saved voice notes (or one pending preview) */
.voice-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.voice-row {
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: 10px 12px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    box-shadow: var(--shadow-sm);
}
.voice-row audio {
    width: 100%;
    height: 36px;
    /* Native controls keep their browser look — only constrain size */
}
.voice-row-meta {
    display: flex;
    gap: 10px;
    align-items: center;
    font-size: 12px;
    color: var(--ink-muted);
}
.voice-row-time { font-weight: 700; }
.voice-row-by { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.voice-row-hint { flex: 1; min-width: 0; }
.voice-row-del {
    appearance: none;
    background: transparent;
    border: 1px solid var(--line);
    color: var(--ink-muted);
    width: 32px;
    height: 32px;
    border-radius: var(--r-sm);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.voice-row-del:hover { background: rgba(200,82,58,.08); border-color: var(--k-red); color: var(--k-red); }
.voice-row-pending { border-style: dashed; }

/* Entry detail meta-row (richer pills) */
.entry-meta-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}
.entry-meta-pill {
    padding: 5px 12px 6px;
    border-radius: var(--r-pill);
    background: var(--surface-3);
    border: 1px solid var(--line);
    font-size: 12.5px;
    font-weight: 600;
    color: var(--ink-muted);
}
.entry-meta-pill.cost.paid   { background: rgba(110,139,67,.14); color: #506831; border-color: rgba(110,139,67,.3); }
.entry-meta-pill.cost.unpaid { background: rgba(200,82,58,.10); color: #8E3320; border-color: rgba(200,82,58,.3); }
[data-theme="dark"] .entry-meta-pill.cost.paid   { color: #BDD89A; }
[data-theme="dark"] .entry-meta-pill.cost.unpaid { color: #F2A395; }

/* ─── Score tier editor (3 colored buttons per axis) ─── */
.tier-editor { margin-top: 22px; }
.tier-editor-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
}
.tier-editor-head h3 {
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--ink-faint);
    margin: 0;
}
/* Single row of 3 big tier buttons (text-labelled pills). */
.tier-row {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.tier-btn {
    appearance: none;
    width: 100%;
    min-height: 52px;
    padding: 12px 8px;
    border-radius: var(--r-md);
    border: 2px solid currentColor;
    background: transparent;
    cursor: pointer;
    transition: background-color .15s ease, transform .12s ease, box-shadow .15s ease;
    color: var(--ink-ghost);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 14.5px;
    letter-spacing: .01em;
    line-height: 1.2;
}
.tier-btn:hover:not(:disabled) { transform: translateY(-1px); }
.tier-btn:active:not(:disabled) { transform: translateY(0); }
.tier-btn:disabled { opacity: .5; cursor: not-allowed; }

.tier-btn-flag  { color: var(--k-red); }
.tier-btn-watch { color: var(--amber); }
.tier-btn-good  { color: var(--green); }

.tier-btn.active {
    background: currentColor;
    color: var(--ink-ghost);  /* placeholder, overridden below */
    box-shadow: 0 0 0 4px rgba(20,28,40,.04), 0 6px 14px -4px rgba(20,28,40,.22);
}
/* Active state: the colour stays in the bg via currentColor; we re-tint the
   text to white so it reads against the tier fill. */
.tier-btn-flag.active  { color: var(--k-red);  }
.tier-btn-watch.active { color: var(--amber);  }
.tier-btn-good.active  { color: var(--green);  }
.tier-btn.active       { background: currentColor; }
.tier-btn.active       { color: currentColor; } /* keep the border tint */
.tier-btn-flag.active,
.tier-btn-watch.active,
.tier-btn-good.active  {
    /* When active we want: bg = tier color, text = white. Achieved by setting
       a custom text color (not currentColor) while bg uses the tier-coloured
       border-color — easier expressed without currentColor magic. */
    color: #fff;
    background: var(--btn-active-bg, currentColor);
}
.tier-btn-flag.active  { background: var(--k-red);  border-color: var(--k-red-dark);  }
.tier-btn-watch.active { background: var(--amber);  border-color: #B47A1F;             }
.tier-btn-good.active  { background: var(--green);  border-color: #5A7335;             }

/* Read-only score bars (owner detail card, kept for is_rated owners) */
.score-readout { display: flex; flex-direction: column; gap: 12px; }
.score-row { margin: 0; }
.score-row-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 6px;
}
.score-row-label {
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13px;
    color: var(--ink);
}
.score-row-value {
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 13px;
    color: var(--ink-muted);
    min-width: 32px;
    text-align: right;
    letter-spacing: .04em;
}
.score-row-good   .score-row-value { color: var(--green); }
.score-row-watch  .score-row-value { color: var(--amber); }
.score-row-flag   .score-row-value { color: var(--k-red); }
.score-bar {
    height: 8px;
    border-radius: 999px;
    background: var(--surface-3);
    overflow: hidden;
    position: relative;
}
.score-bar-fill {
    height: 100%;
    border-radius: 999px;
    transition: width .25s ease;
    background: var(--green);
}
.score-row-watch .score-bar-fill { background: var(--amber); }
.score-row-flag  .score-bar-fill { background: var(--k-red); }

/* ─── Αξιολόγηση disclosure on NewCar ─── */
.rate-disclosure { margin: 18px 0 6px; }
.rate-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 9px 14px 10px;
    background: var(--surface-3);
    border: 1px solid var(--line);
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13px;
    color: var(--ink);
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease;
}
.rate-toggle:hover { background: var(--surface-2); border-color: var(--line-strong); }
.rate-toggle[aria-expanded="true"] {
    background: var(--surface-1);
    border-color: var(--k-blue);
    color: var(--k-blue);
}
.rate-disclosure-body {
    margin-top: 14px;
    padding: 14px 16px 4px;
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    animation: rate-slide-down .22s cubic-bezier(.2,.7,.2,1) both;
}
@keyframes rate-slide-down {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ═══════════════════════════════════════════════════════════════
   Car detail
   ═══════════════════════════════════════════════════════════════ */

.car-hero {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 26px 18px 22px;
    background:
        radial-gradient(600px 200px at 50% -20%, rgba(31,58,95,.07), transparent 60%),
        var(--surface-1);
}
[data-theme="dark"] .car-hero { background: radial-gradient(600px 200px at 50% -20%, rgba(46,140,232,.1), transparent 60%), linear-gradient(180deg, var(--surface-1), var(--surface-2)); }
.car-hero .tagline {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--ink-faint);
}
.car-hero .makemodel {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 20px;
    color: var(--ink);
    letter-spacing: -.01em;
}

.meta-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 22px;
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px dashed var(--line-dashed);
}
.meta-item {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.meta-item dt {
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--ink-faint);
}
.meta-item dd {
    margin: 0;
    font-size: 14.5px;
    color: var(--ink);
    word-break: break-word;
}
.meta-item dd a { color: var(--k-blue); border-bottom: 1px dashed rgba(31,58,95,.4); }
.meta-item.full { grid-column: 1 / -1; }
.meta-item dd.mono { font-family: var(--font-mono); font-size: 13px; letter-spacing: .02em; }

/* ═══════════════════════════════════════════════════════════════
   Entry timeline
   ═══════════════════════════════════════════════════════════════ */

.entries-list {
    position: relative;
    padding-left: 18px;
    list-style: none;
    margin: 0;
}
.entries-list::before {
    content: "";
    position: absolute;
    left: 5px; top: 6px; bottom: 6px;
    width: 1px;
    background: linear-gradient(180deg, var(--k-blue) 0%, var(--line) 80%, transparent 100%);
    opacity: .5;
}
.entries-list > li { position: relative; margin-bottom: 12px; }
.entries-list > li::before {
    content: "";
    position: absolute;
    left: -18px; top: 22px;
    width: 11px; height: 11px;
    border-radius: 50%;
    background: var(--k-red);
    box-shadow: 0 0 0 3px var(--bg), 0 0 12px rgba(200,82,58,.35);
}

.entry-card {
    display: block;
    padding: 16px 18px;
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    transition: border-color .12s ease, background-color .12s ease, transform .08s ease, box-shadow .12s ease;
    cursor: pointer;
    box-shadow: var(--shadow-sm);
}
.entry-card:hover { border-color: var(--line-strong); background: var(--surface-2); box-shadow: var(--shadow-md); }
.entry-card:active { transform: translateY(1px); }
.entry-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
}
.entry-date {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 16px;
    color: var(--ink);
    letter-spacing: -.01em;
}
.entry-sub {
    margin-top: 3px;
    font-size: 12px;
    color: var(--ink-muted);
}
.entry-photos-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px 5px;
    background: var(--surface-3);
    border: 1px solid var(--line-strong);
    border-radius: var(--r-pill);
    font-family: var(--font-mono);
    font-size: 12px;
    font-weight: 700;
    color: var(--ink-muted);
}
.entry-notes {
    margin-top: 12px;
    font-size: 14.5px;
    line-height: 1.55;
    color: var(--ink);
    white-space: pre-wrap;
    word-break: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.entry-notes.muted { color: var(--ink-faint); font-style: italic; }
.entry-mileage {
    margin-top: 12px;
    font-family: var(--font-mono);
    font-size: 12px;
    color: var(--ink-muted);
    letter-spacing: .04em;
}
.entry-mileage strong { color: var(--k-blue); font-weight: 700; }

/* ═══════════════════════════════════════════════════════════════
   Photo grid
   ═══════════════════════════════════════════════════════════════ */

.photo-grid {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}
@media (min-width: 640px) { .photo-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.photo-tile {
    position: relative;
    padding-top: 100%;
    background: var(--surface-3);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    overflow: hidden;
    transition: transform .1s ease, border-color .12s ease, box-shadow .15s ease;
}
.photo-tile:hover { transform: translateY(-2px); border-color: var(--line-strong); box-shadow: var(--shadow-md); }
.photo-tile img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.photo-tile button.delete {
    position: absolute;
    top: 6px; right: 6px;
    width: 28px; height: 28px;
    border: 0;
    border-radius: 50%;
    background: rgba(20,28,40,.78);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    transition: background-color .12s ease;
}
.photo-tile button.delete:hover { background: var(--k-red); }

.lightbox {
    position: fixed;
    inset: 0;
    background: rgba(20,28,40,.78);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    z-index: 60;
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
}
[data-theme="dark"] .lightbox { background: rgba(5,7,10,.92); }
.lightbox img {
    max-width: 100%;
    max-height: 88vh;
    border-radius: var(--r-md);
    box-shadow: var(--shadow-lg);
}
.lightbox .close {
    position: absolute;
    top: 16px; right: 16px;
    width: 42px; height: 42px;
    border: 1px solid rgba(255,255,255,.4);
    border-radius: 999px;
    background: rgba(20,28,40,.55);
    color: #fff;
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    transition: background-color .12s ease;
}
.lightbox .close:hover { background: var(--k-red); }

/* ── Photo carousel — swipeable, with prev/next + dots ──── */
.lightbox.carousel { padding: 0; }
.carousel-stage {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    padding: 64px 16px 84px;
    touch-action: pan-y;     /* allow vertical scroll, capture horiz swipes */
    -webkit-user-select: none;
            user-select: none;
}
.carousel-img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    border-radius: var(--r-md);
    box-shadow: var(--shadow-lg);
    animation: carousel-fade .18s ease-out;
    -webkit-user-drag: none;
}
@keyframes carousel-fade {
    from { opacity: .35; transform: scale(.985); }
    to   { opacity: 1;   transform: scale(1);    }
}
.carousel-counter {
    position: absolute;
    top: 18px;
    left: 50%;
    transform: translateX(-50%);
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 12.5px;
    letter-spacing: .08em;
    color: #fff;
    background: rgba(20,28,40,.55);
    border: 1px solid rgba(255,255,255,.25);
    border-radius: 999px;
    padding: 5px 14px;
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
}
.carousel-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 52px;
    height: 52px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: rgba(20,28,40,.55);
    color: #fff;
    border: 1px solid rgba(255,255,255,.35);
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 32px;
    line-height: 1;
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
    transition: background-color .12s ease, transform .1s ease, opacity .12s ease;
}
.carousel-nav:hover    { background: rgba(20,28,40,.78); }
.carousel-nav:active   { transform: translateY(-50%) scale(.96); }
.carousel-nav:disabled { opacity: .35; cursor: not-allowed; }
.carousel-prev { left: 16px; }
.carousel-next { right: 16px; }

.carousel-dots {
    position: absolute;
    bottom: 28px;
    left: 50%;
    transform: translateX(-50%);
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    border-radius: 999px;
    background: rgba(20,28,40,.45);
    border: 1px solid rgba(255,255,255,.18);
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
}
.carousel-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: rgba(255,255,255,.35);
    transition: background-color .15s ease, transform .15s ease;
    border: none;
    padding: 0;
}
.carousel-dot:hover { background: rgba(255,255,255,.6); }
.carousel-dot.is-active {
    background: #fff;
    transform: scale(1.25);
}

/* On phones with narrow screens, drop the side nav buttons in
   favour of swipe-only navigation — the buttons crowd the image. */
@media (max-width: 480px) {
    .carousel-nav { display: none; }
    .carousel-stage { padding: 60px 8px 80px; }
}

/* ── Kanban card phone — tel: link with a phone glyph ─── */
.kanban-card-phone {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-mono);
    font-weight: 600;
    font-size: 13px;
    color: var(--k-blue);
    text-decoration: none;
    margin-top: 2px;
    padding: 2px 0;
    width: max-content;
    border-radius: 4px;
    transition: color .12s ease;
}
.kanban-card-phone:hover {
    color: var(--k-blue-2);
    text-decoration: underline;
    text-decoration-thickness: 1.4px;
    text-underline-offset: 2px;
}
.kanban-card-phone svg { flex-shrink: 0; opacity: .85; }

/* ═══════════════════════════════════════════════════════════════
   Alerts + empty states
   ═══════════════════════════════════════════════════════════════ */

.alert {
    padding: 14px 16px;
    border-radius: var(--r-md);
    font-size: 14px;
    border: 1px solid;
    line-height: 1.45;
}
.alert-error { background: rgba(200,82,58,.07); color: var(--k-red-dark); border-color: rgba(200,82,58,.3); }
.alert-info  { background: rgba(31,58,95,.06); color: var(--k-blue); border-color: rgba(31,58,95,.22); }
[data-theme="dark"] .alert-error { color: #F7A6AB; }
[data-theme="dark"] .alert-info  { color: var(--k-blue-2); }

.alert-empty {
    padding: 40px 20px;
    text-align: center;
    background:
        repeating-linear-gradient(45deg, rgba(20,28,40,.018) 0 10px, transparent 10px 20px),
        var(--surface-2);
    border: 1px dashed var(--line-strong);
    border-radius: var(--r-lg);
    color: var(--ink-muted);
    font-size: 14.5px;
}

/* ═══════════════════════════════════════════════════════════════
   Spinner + loading
   ═══════════════════════════════════════════════════════════════ */

.app-preload {
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg);
}
.spinner {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 3px solid rgba(31,58,95,.18);
    border-top-color: var(--k-blue);
    animation: spin 720ms cubic-bezier(.6,.2,.4,1) infinite;
}
.spinner.sm { width: 18px; height: 18px; border-width: 2px; }
@keyframes spin { to { transform: rotate(360deg); } }
.center-flex { display: flex; align-items: center; justify-content: center; padding: 56px 0; }

/* ═══════════════════════════════════════════════════════════════
   Page transition / stagger
   ═══════════════════════════════════════════════════════════════ */

@keyframes slide-up {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}
.screen > * { animation: slide-up .35s cubic-bezier(.2,.6,.3,1) both; }
.screen > *:nth-child(1) { animation-delay: .02s; }
.screen > *:nth-child(2) { animation-delay: .08s; }
.screen > *:nth-child(3) { animation-delay: .14s; }
.screen > *:nth-child(4) { animation-delay: .2s; }
.screen > *:nth-child(5) { animation-delay: .26s; }

/* ═══════════════════════════════════════════════════════════════
   Utilities
   ═══════════════════════════════════════════════════════════════ */

.row  { display: flex; gap: 10px; align-items: center; }
.col  { display: flex; flex-direction: column; gap: 10px; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.muted { color: var(--ink-muted); }
.faint { color: var(--ink-faint); }
.mt-0  { margin-top: 0; }
.mt-2  { margin-top: 8px; }
.mt-4  { margin-top: 16px; }
.mt-6  { margin-top: 24px; }
.tab-uppercase { font-family: var(--font-body); font-weight: 700; font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-faint); }
.mono { font-family: var(--font-mono); letter-spacing: .02em; }
.sticky-bottom {
    position: sticky;
    bottom: calc(110px + env(safe-area-inset-bottom));
    display: flex;
    justify-content: flex-end;
    margin-top: 26px;
    z-index: 5;
}

/* ═══════════════════════════════════════════════════════════════
   Settings
   ═══════════════════════════════════════════════════════════════ */

.settings-label {
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--ink-faint);
    margin: 0 0 10px;
}
.settings-name { font-family: var(--font-display); font-size: 19px; font-weight: 700; color: var(--ink); letter-spacing: -.005em; }
.settings-email { font-family: var(--font-mono); color: var(--ink-muted); font-size: 13px; letter-spacing: .01em; }
.settings-role { margin-top: 8px; font-size: 12px; color: var(--ink-faint); }
.settings-role .chip {
    display: inline-block;
    padding: 2px 9px;
    margin-left: 6px;
    border-radius: 999px;
    background: rgba(31,58,95,.12);
    color: var(--k-blue);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 10px;
    letter-spacing: .1em;
    text-transform: uppercase;
}
.settings-role .chip.admin { background: rgba(200,82,58,.14); color: var(--k-red-dark); }
[data-theme="dark"] .settings-role .chip.admin { color: #F7A6AB; }

/* Settings — theme switcher row */
.theme-switch {
    display: flex;
    background: var(--surface-3);
    border: 1px solid var(--line);
    border-radius: var(--r-pill);
    padding: 4px;
    gap: 4px;
    margin-top: 12px;
}
.theme-switch button {
    flex: 1;
    padding: 9px 12px;
    border-radius: var(--r-pill);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13px;
    letter-spacing: 0;
    color: var(--ink-muted);
    transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}
.theme-switch button.active {
    background: var(--surface-1);
    color: var(--ink);
    box-shadow: var(--shadow-sm);
}

/* ═══════════════════════════════════════════════════════════════
   Upload buttons
   ═══════════════════════════════════════════════════════════════ */

.uploader-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.hidden-input { display: none; }

.progress {
    margin-top: 10px;
    height: 4px;
    background: var(--surface-3);
    border-radius: 999px;
    overflow: hidden;
}
.progress-bar {
    height: 100%;
    background: linear-gradient(90deg, var(--k-blue), var(--k-blue-2));
    transition: width .3s ease;
    border-radius: 999px;
}

/* ═══════════════════════════════════════════════════════════════
   Floating-pill BottomNav (Iconly-inspired)
   ═══════════════════════════════════════════════════════════════ */

.bottom-nav {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    display: flex;
    justify-content: center;
    pointer-events: none;
    padding: 0 14px calc(14px + env(safe-area-inset-bottom));
}

.bottom-nav-pill {
    pointer-events: auto;
    width: 100%;
    max-width: 480px;
    background: var(--glass-bg-strong);
    border: 1px solid rgba(255,255,255,.9);
    border-radius: var(--r-pill);
    padding: 8px 10px;
    display: grid;
    grid-template-columns: 1fr 1fr 76px 1fr 1fr;
    align-items: center;
    gap: 4px;
    box-shadow: var(--shadow-pill);
    position: relative;
    -webkit-backdrop-filter: blur(30px);
    backdrop-filter: blur(30px);
}
[data-theme="dark"] .bottom-nav-pill {
    background: rgba(30,41,59,.85);
    border-color: rgba(255,255,255,.06);
}

.bottom-nav-item {
    appearance: none;
    background: none;
    border: none;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 8px 2px 6px;
    border-radius: var(--r-md);
    color: var(--ink-faint);
    transition: color .18s ease, transform .12s ease;
    min-height: 56px;
}
.bottom-nav-item .label {
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 10.5px;
    letter-spacing: 0;
    line-height: 1;
    color: inherit;
}
.bottom-nav-item .icon {
    width: 22px;
    height: 22px;
    color: inherit;
}
.bottom-nav-item:hover { color: var(--ink-muted); }
.bottom-nav-item:active { transform: translateY(1px); }
.bottom-nav-item.active {
    color: var(--ink);
}
.bottom-nav-item.active .label { font-weight: 700; }

/* The center FAB */
.bottom-nav-fab {
    appearance: none;
    border: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 60px;
    height: 60px;
    margin: 0 auto;
    border-radius: 50%;
    background: var(--ink);
    color: var(--bg);
    box-shadow:
        0 12px 26px -8px rgba(20,28,40,.5),
        0 4px 8px -2px rgba(20,28,40,.3),
        inset 0 1px 0 rgba(255,255,255,.12);
    transition: transform .15s cubic-bezier(.2,.7,.2,1), box-shadow .2s ease;
    position: relative;
}
.bottom-nav-fab:hover { transform: translateY(-2px) scale(1.02); box-shadow: 0 18px 32px -8px rgba(20,28,40,.55), 0 6px 10px -2px rgba(20,28,40,.32); }
.bottom-nav-fab:active { transform: translateY(0) scale(.97); }
.bottom-nav-fab svg { width: 26px; height: 26px; }
[data-theme="dark"] .bottom-nav-fab { background: var(--k-blue); color: #fff; }
.bottom-nav-fab.is-open { transform: rotate(45deg); background: var(--k-red); color: #fff; }
.bottom-nav-fab.is-open:hover { transform: rotate(45deg) scale(1.04); }

/* ═══════════════════════════════════════════════════════════════
   FAB Action Sheet (drops up from bottom-nav)
   ═══════════════════════════════════════════════════════════════ */

.action-sheet-backdrop {
    position: fixed;
    inset: 0;
    z-index: 49;
    background: rgba(20,28,40,.18);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
    animation: fade-in .2s ease both;
}
[data-theme="dark"] .action-sheet-backdrop { background: rgba(0,0,0,.55); }
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }

.action-sheet {
    position: fixed;
    left: 50%;
    transform: translateX(-50%);
    bottom: calc(96px + env(safe-area-inset-bottom));
    z-index: 51;
    width: calc(100% - 28px);
    max-width: 420px;
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    padding: 8px;
    box-shadow: var(--shadow-lg);
    animation: sheet-up .25s cubic-bezier(.2,.7,.2,1) both;
}
[data-theme="dark"] .action-sheet { background: var(--surface-2); }
@keyframes sheet-up {
    from { opacity: 0; transform: translateX(-50%) translateY(12px); }
    to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}
.action-sheet button {
    display: flex;
    align-items: center;
    gap: 14px;
    width: 100%;
    text-align: left;
    padding: 14px 16px;
    border-radius: var(--r-md);
    background: transparent;
    color: var(--ink);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 15.5px;
    transition: background-color .12s ease;
}
.action-sheet button:hover { background: var(--surface-2); }
[data-theme="dark"] .action-sheet button:hover { background: var(--surface-3); }
.action-sheet button .icon-wrap {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: var(--r-md);
    background: var(--surface-3);
    color: var(--k-blue);
    flex-shrink: 0;
}
.action-sheet button.is-soon .icon-wrap { color: var(--ink-faint); }
.action-sheet button.is-soon { color: var(--ink-muted); }
.action-sheet button.is-soon::after {
    content: "ΣΥΝΤΟΜΑ";
    margin-left: auto;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 10px;
    letter-spacing: .14em;
    color: var(--ink-faint);
    background: var(--surface-3);
    padding: 3px 8px;
    border-radius: var(--r-pill);
}

/* ═══════════════════════════════════════════════════════════════
   Tablet+ tweaks
   ═══════════════════════════════════════════════════════════════ */

@media (min-width: 768px) {
    .screen { padding: 30px 24px calc(140px + env(safe-area-inset-bottom)); }
    .bottom-nav-pill { max-width: 540px; }
    .search-hero { padding: 38px 28px; }
}

@media (min-width: 1024px) {
    .screen { max-width: 880px; }
}

/* ═══════════════════════════════════════════════════════════════
   DASHBOARD SHELL — persistent sidebar (≥768px) + topbar.
   Collapses to the floating BottomNav on phones.
   ═══════════════════════════════════════════════════════════════ */

.app-shell {
    --side-w: 264px;
    --side-w-collapsed: 76px;
    --side-bg: #0E141B;
    --side-bg-2: #131C26;
    --side-line: rgba(255,255,255,.07);
    --side-text: #C3D0DD;
    --side-text-dim: #7E8EA0;
    --side-active-bg: rgba(84,167,202,.16);
    --side-active-text: #EAF5FA;
    --topbar-h: 64px;   /* shared by the topbar AND the sidebar brand block */
    min-height: 100vh;
    min-height: 100dvh;
}

/* ── Sidebar ───────────────────────────────────────────────────── */
.app-sidebar {
    position: fixed;
    top: 0; left: 0; bottom: 0;
    width: var(--side-w);
    z-index: 80;
    display: flex;
    flex-direction: column;
    background: var(--side-bg);
    color: var(--side-text);
    overflow-y: auto;
    overscroll-behavior: contain;
    transform: translateX(-100%);
    transition: transform .26s cubic-bezier(.2,.7,.2,1), width .2s ease;
    padding-bottom: env(safe-area-inset-bottom);
}
.app-shell.is-mobile-open .app-sidebar { transform: translateX(0); box-shadow: 0 0 60px rgba(0,0,0,.5); }

.app-sidebar-backdrop {
    position: fixed; inset: 0; z-index: 70;
    background: rgba(8,12,18,.5);
    -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
    animation: fade-in .2s ease both;
}

.app-brand {
    display: flex; align-items: center; gap: 12px;
    height: var(--topbar-h);   /* aligns exactly with the topbar to its right */
    padding: 0 18px;
    color: #fff;
    flex-shrink: 0;   /* no divider — brand flows into the sidebar as one surface */
}
.app-brand-mark {
    display: inline-flex; align-items: center; justify-content: center;
    width: 40px; height: 40px; flex-shrink: 0;
    border-radius: 12px;
    color: #5FD0F5;   /* bright electric cyan bolt */
    background: linear-gradient(150deg, #173445 0%, #0E1F2B 58%, #0B1720 100%);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.10),
        inset 0 0 0 1px rgba(95,191,217,.32),
        0 6px 16px -6px rgba(84,167,202,.45);
}
.app-brand-mark svg { filter: drop-shadow(0 0 6px rgba(95,208,245,.55)); }
.app-brand-text { display: flex; flex-direction: column; line-height: 1.05; min-width: 0; }
.app-brand-name {
    font-family: var(--font-display); font-weight: 800; font-size: 17px;
    letter-spacing: -.02em; color: #fff;
}
.app-brand-sub {
    font-family: var(--font-body); font-weight: 700; font-size: 9.5px;
    letter-spacing: .22em; text-transform: uppercase; color: var(--k-blue-2);
    margin-top: 3px;
}

.app-nav { flex: 1; padding: 12px 12px 16px; display: flex; flex-direction: column; gap: 4px; }
.app-nav-group { display: flex; flex-direction: column; gap: 2px; margin-top: 12px; }
.app-nav-group:first-child { margin-top: 0; }
.app-nav-group-label {
    font-family: var(--font-body); font-weight: 700; font-size: 10px;
    letter-spacing: .16em; text-transform: uppercase; color: var(--side-text-dim);
    padding: 8px 12px 4px;
}
.app-nav-item {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 12px;
    border-radius: var(--r-md);
    color: var(--side-text);
    font-family: var(--font-body); font-weight: 600; font-size: 14px;
    position: relative;
    transition: background-color .14s ease, color .14s ease;
}
.app-nav-item:hover { background: var(--side-bg-2); color: var(--side-active-text); }
.app-nav-item.active { background: var(--side-active-bg); color: var(--side-active-text); }
.app-nav-item.active::before {
    content: ""; position: absolute; left: 0; top: 8px; bottom: 8px;
    width: 3px; border-radius: 0 3px 3px 0; background: var(--k-blue);
}
.app-nav-icon { display: inline-flex; align-items: center; justify-content: center; width: 22px; flex-shrink: 0; }
.app-nav-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.app-nav-collapse {
    display: none;  /* desktop only — minimal chevron, eudr-x style */
    align-self: flex-end;
    align-items: center; justify-content: center;
    width: 30px; height: 30px;
    margin: 4px 14px calc(12px + env(safe-area-inset-bottom));
    border-radius: 8px;
    background: transparent; border: 1px solid var(--side-line);
    color: var(--side-text-dim);
    cursor: pointer; transition: background-color .14s ease, color .14s ease;
}
.app-nav-collapse:hover { background: var(--side-bg-2); color: var(--side-text); }
.app-nav-collapse svg { transition: transform .2s ease; }
.app-shell.is-collapsed .app-nav-collapse svg { transform: rotate(180deg); }

/* ── Topbar ────────────────────────────────────────────────────── */
.app-body { display: flex; flex-direction: column; min-height: 100dvh; min-width: 0; }
.app-topbar {
    position: sticky; top: 0; z-index: 60;
    display: flex; align-items: center; gap: 10px;
    height: var(--topbar-h);
    padding: 0 16px;
    background: var(--side-bg);   /* same charcoal as the sidebar */
    color: var(--side-text);
}
@supports (padding: env(safe-area-inset-top)) {
    .app-topbar { padding-top: env(safe-area-inset-top); height: calc(var(--topbar-h) + env(safe-area-inset-top)); }
}
.app-topbar-burger {
    display: inline-flex; align-items: center; justify-content: center;
    width: 42px; height: 42px; border-radius: var(--r-pill);
    color: var(--ink-muted); background: transparent; border: 0; cursor: pointer; flex-shrink: 0;
    transition: background-color .14s ease, color .14s ease;
}
.app-topbar-burger:hover { background: var(--surface-3); color: var(--ink); }
.app-topbar-brand {
    display: inline-flex; align-items: center; gap: 8px; color: var(--ink);
    padding: 4px 6px; flex-shrink: 0;
}
.app-topbar-brand .brand-pulse { color: var(--k-blue); }
.app-topbar-brand .brand-name {
    font-family: var(--font-display); font-weight: 800; font-size: 18px; letter-spacing: -.02em;
}
.app-topbar-search {
    position: relative; display: none; align-items: center; flex: 1; max-width: 420px;
}
.app-topbar-search-icon { position: absolute; left: 12px; color: var(--ink-ghost); pointer-events: none; }
.app-topbar-search-input {
    width: 100%; height: 40px; padding: 0 14px 0 38px;
    background: var(--surface-3); border: 1px solid transparent; border-radius: var(--r-pill);
    color: var(--ink); font-family: var(--font-body); font-size: 14px;
    transition: background-color .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.app-topbar-search-input::placeholder { color: var(--ink-ghost); }
.app-topbar-search-input:focus {
    outline: none; background: var(--surface-1);
    border-color: var(--k-blue); box-shadow: 0 0 0 3px rgba(84,167,202,.15);
}
.app-topbar-actions { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; flex-shrink: 0; }

/* ── User menu ─────────────────────────────────────────────────── */
.user-menu { position: relative; }
.user-menu-trigger {
    display: inline-flex; align-items: center; gap: 8px;
    height: 42px; padding: 0 10px 0 6px;
    border-radius: var(--r-pill); border: 1px solid transparent;
    background: transparent; color: var(--ink); cursor: pointer; max-width: 320px;
    transition: background-color .14s ease, border-color .14s ease;
}
.user-menu-trigger:hover { background: var(--surface-3); }
.user-avatar {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
    background: linear-gradient(160deg, var(--k-blue-2), var(--k-blue-dark));
    color: #fff; font-family: var(--font-display); font-weight: 800; font-size: 14px;
}
.user-avatar.lg { width: 42px; height: 42px; font-size: 18px; }
.user-menu-name {
    font-family: var(--font-body); font-weight: 600; font-size: 14px; color: var(--ink);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 230px;
    display: none;
}
.user-menu-caret { color: var(--ink-faint); transform: rotate(90deg); transition: transform .18s ease; }
.user-menu.is-open .user-menu-caret { transform: rotate(-90deg); }
.user-menu-backdrop { position: fixed; inset: 0; z-index: 90; }
.user-menu-pop {
    position: absolute; right: 0; top: calc(100% + 8px); z-index: 91;
    width: 248px; padding: 8px;
    background: var(--surface-1); border: 1px solid var(--line);
    border-radius: var(--r-lg); box-shadow: var(--shadow-lg);
    animation: autocomplete-in .14s ease both;
}
.user-menu-head { display: flex; align-items: center; gap: 12px; padding: 8px 8px 12px; border-bottom: 1px solid var(--line); margin-bottom: 6px; }
.user-menu-id { min-width: 0; }
.user-menu-id-name { font-family: var(--font-display); font-weight: 700; font-size: 14px; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.user-menu-id-email { font-size: 12px; color: var(--ink-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.user-menu-item {
    display: flex; align-items: center; gap: 12px;
    padding: 11px 10px; border-radius: var(--r-md);
    color: var(--ink-muted); font-family: var(--font-body); font-weight: 600; font-size: 14px;
    transition: background-color .12s ease, color .12s ease;
}
.user-menu-item:hover { background: var(--surface-2); color: var(--ink); }
.user-menu-item.danger { color: var(--k-red); }
.user-menu-item.danger:hover { background: color-mix(in srgb, var(--k-red) 10%, var(--surface-1)); }

/* ── Per-screen TopBar reflow inside the shell ─────────────────── */
.app-content .topbar-brand { display: none; }  /* sidebar already shows the brand */

/* ── Responsive: ≥768px shows sidebar, hides bottom-nav ────────── */
@media (min-width: 768px) {
    .app-shell { display: grid; grid-template-columns: var(--side-w) minmax(0, 1fr); }
    .app-shell.is-collapsed { grid-template-columns: var(--side-w-collapsed) minmax(0, 1fr); }
    /* width:auto lets the sidebar follow the grid track — without it the
       fixed 264px width overflowed the collapsed 76px column (collapse broke). */
    .app-sidebar { position: sticky; top: 0; height: 100dvh; width: auto; transform: none; box-shadow: none; overflow-x: hidden; }
    .app-sidebar-backdrop { display: none; }
    .app-nav-collapse { display: flex; }
    .app-topbar-burger { display: none; }
    .app-topbar-brand { display: none; }
    .app-topbar-search { display: flex; }
    .user-menu-name { display: inline; }
    .bottom-nav { display: none; }

    /* Content reflow — no bottom-nav offset, comfortable gutters. */
    .app-content .screen {
        max-width: 820px;
        margin: 0 auto;
        padding: 28px clamp(20px, 3vw, 40px) 56px;
    }
    .app-content .screen.dashboard { max-width: 1240px; }

    /* Flatten the per-screen topbar into a plain page header. */
    .app-content .topbar {
        position: static; background: transparent; border-bottom: 0;
        -webkit-backdrop-filter: none; backdrop-filter: none;
    }
    .app-content .topbar-inner { max-width: none; margin: 0 0 16px; padding: 0; height: auto; }
    .app-content .topbar-title { font-size: 24px; }

    /* Collapsed sidebar — icons only. */
    .app-shell.is-collapsed .app-brand { justify-content: center; padding: 18px 0 16px; }
    .app-shell.is-collapsed .app-brand-text,
    .app-shell.is-collapsed .app-nav-label,
    .app-shell.is-collapsed .app-nav-group-label { display: none; }
    .app-shell.is-collapsed .app-nav-item { justify-content: center; padding: 11px 0; }
    .app-shell.is-collapsed .app-nav-item.active::before { top: 6px; bottom: 6px; }
    .app-shell.is-collapsed .app-nav-collapse { align-self: center; margin-left: auto; margin-right: auto; }
}

/* ═══════════════════════════════════════════════════════════════
   Canonical Select (well-aligned dropdown)
   ═══════════════════════════════════════════════════════════════ */
.select-wrap { position: relative; display: block; }
.field-select {
    -webkit-appearance: none; -moz-appearance: none; appearance: none;
    width: 100%; height: 48px; padding: 12px 40px 12px 14px;
    font-family: var(--font-body); font-size: 16px; color: var(--ink);
    background: var(--surface-1);
    border: 1px solid var(--line-strong); border-radius: var(--r-md);
    outline: none; cursor: pointer;
    transition: border-color .12s ease, box-shadow .12s ease;
}
.field-select:focus { border-color: var(--k-blue); box-shadow: 0 0 0 3px rgba(84,167,202,.15); }
.field-select:disabled { opacity: .55; cursor: not-allowed; }
.select-caret {
    position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
    color: var(--ink-faint); pointer-events: none; display: inline-flex;
}
.select-caret svg { transform: rotate(90deg); }
.field.has-error .field-select { border-color: var(--k-red); box-shadow: 0 0 0 3px rgba(200,82,58,.18); }

/* ═══════════════════════════════════════════════════════════════
   Autocomplete dropdown — re-anchored flush under the input
   (was overlapping via top: calc(100% - 14px), which fought the
    field margin and drifted on mobile).
   ═══════════════════════════════════════════════════════════════ */
.autocomplete-wrap { margin-bottom: 18px; }
.autocomplete-list {
    top: calc(100% + 6px);
    margin-top: 0;
}

/* ═══════════════════════════════════════════════════════════════
   Dashboard home
   ═══════════════════════════════════════════════════════════════ */
.dash-head { margin-bottom: 20px; }
.dash-greeting {
    font-family: var(--font-display); font-weight: 800;
    font-size: clamp(24px, 4vw, 32px); letter-spacing: -.02em;
    color: var(--ink); margin: 0;
}
.dash-sub { margin: 4px 0 0; color: var(--ink-faint); font-size: 14px; }

/* Hero — the plate search leads the dashboard. */
.dash-hero {
    position: relative;
    z-index: 10;   /* lift the hero (and its dropdown) above the KPI tiles below */
    padding: 22px;
    margin-bottom: 18px;
    background:
        radial-gradient(680px 240px at 50% -30%, rgba(84,167,202,.13), transparent 70%),
        var(--glass-bg);
    border: 1px solid var(--line-strong);
}
.dash-hero-search { max-width: 560px; margin: 0 auto; }
.dash-hero-label {
    font-family: var(--font-body); font-weight: 700; font-size: 11px;
    letter-spacing: .16em; text-transform: uppercase; color: var(--ink-faint);
    margin: 0 0 12px; text-align: center;
}
.dash-hero-actions {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px;
    max-width: 560px; margin: 18px auto 0;
}
@media (min-width: 620px) { .dash-hero-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 768px) { .dash-hero { padding: 28px 28px 26px; } }

.dash-kpis {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px; margin-bottom: 18px;
}
.dash-tile {
    display: flex; align-items: center; gap: 14px;
    padding: 16px 18px; text-align: left;
    background: var(--surface-1); border: 1px solid var(--line);
    border-radius: var(--r-lg); box-shadow: var(--shadow-sm);
    cursor: pointer;
    transition: transform .1s ease, box-shadow .16s ease, border-color .16s ease;
}
.dash-tile:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); border-color: var(--line-strong); }
.dash-tile:active { transform: translateY(0); }
.dash-tile-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 46px; height: 46px; border-radius: var(--r-md); flex-shrink: 0;
}
.dash-tile-body { display: flex; flex-direction: column; min-width: 0; }
.dash-tile-value { font-family: var(--font-display); font-weight: 800; font-size: 26px; line-height: 1; color: var(--ink); }
.dash-tile-label { font-size: 12px; font-weight: 600; color: var(--ink-faint); margin-top: 4px; letter-spacing: .01em; }
.dash-tile.tone-blue   .dash-tile-icon { background: color-mix(in srgb, var(--k-blue) 14%, transparent); color: var(--k-blue-dark); }
.dash-tile.tone-amber  .dash-tile-icon { background: color-mix(in srgb, var(--amber) 18%, transparent); color: var(--amber); }
.dash-tile.tone-violet .dash-tile-icon { background: rgba(124,104,222,.16); color: #7C68DE; }
.dash-tile.tone-green  .dash-tile-icon { background: color-mix(in srgb, var(--green) 16%, transparent); color: var(--green-dark); }

.dash-grid { display: grid; grid-template-columns: 1fr; gap: 14px; }
.dash-col { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.dash-col .card + .card { margin-top: 0; }

.dash-section { padding: 18px; }
.dash-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.dash-section-title { font-family: var(--font-display); font-weight: 700; font-size: 16px; color: var(--ink); margin: 0; }
.dash-link { font-size: 13px; font-weight: 600; color: var(--k-blue); white-space: nowrap; }
.dash-link:hover { color: var(--k-blue-dark); }
.dash-empty { color: var(--ink-faint); font-size: 14px; padding: 6px 2px; margin: 0; }

.dash-rows { display: flex; flex-direction: column; gap: 4px; }
.dash-row {
    display: flex; align-items: center; gap: 12px;
    width: 100%; text-align: left;
    padding: 10px; border-radius: var(--r-md);
    background: transparent; border: 0; cursor: pointer;
    transition: background-color .12s ease;
}
.dash-row:hover { background: var(--surface-2); }
.dash-row-time { font-family: var(--font-mono); font-weight: 700; font-size: 13px; color: var(--ink-muted); width: 42px; flex-shrink: 0; }
.dash-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.dash-row-title { font-family: var(--font-display); font-weight: 600; font-size: 14px; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-row-sub { font-size: 12px; color: var(--ink-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-row-badge {
    font-family: var(--font-body); font-weight: 700; font-size: 11px;
    padding: 4px 9px; border-radius: var(--r-pill); white-space: nowrap; flex-shrink: 0;
}
.dash-row-badge.tone-amber { background: color-mix(in srgb, var(--amber) 18%, transparent); color: #9A6A14; }
.dash-row-badge.tone-blue  { background: color-mix(in srgb, var(--k-blue) 14%, transparent); color: var(--k-blue-dark); }
[data-theme="dark"] .dash-row-badge.tone-amber { color: var(--amber); }

.appt-status-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; background: var(--ink-ghost); }
.appt-status-dot.status-scheduled { background: var(--k-blue); }
.appt-status-dot.status-done      { background: var(--green); }
.appt-status-dot.status-cancelled { background: var(--ink-ghost); }
.appt-status-dot.status-no_show   { background: var(--k-red); }

.dash-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.dash-action {
    display: flex; align-items: center; gap: 10px;
    padding: 12px 14px; border-radius: var(--r-md);
    background: var(--surface-2); border: 1px solid var(--line);
    color: var(--ink); font-family: var(--font-body); font-weight: 600; font-size: 13.5px;
    transition: background-color .14s ease, border-color .14s ease, transform .1s ease;
}
.dash-action:hover { background: var(--surface-3); border-color: var(--line-strong); transform: translateY(-1px); }
.dash-action-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; border-radius: var(--r-sm); flex-shrink: 0;
    background: color-mix(in srgb, var(--k-blue) 12%, transparent); color: var(--k-blue-dark);
}
[data-theme="dark"] .dash-action-icon { color: var(--k-blue-2); }
.dash-action-label { min-width: 0; }

@media (min-width: 560px) {
    .dash-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 992px) {
    .dash-grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); align-items: start; }
}

/* ═══════════════════════════════════════════════════════════════
   PageHeader (in-content page title row) + wide list screens
   ═══════════════════════════════════════════════════════════════ */
.page-header { display: flex; align-items: center; gap: 14px; margin: 2px 0 20px; }
.page-back {
    display: inline-flex; align-items: center; justify-content: center;
    width: 42px; height: 42px; border-radius: var(--r-pill);
    color: var(--ink-muted); background: transparent; border: 0; cursor: pointer; flex-shrink: 0;
    transition: background-color .14s ease, color .14s ease;
}
.page-back:hover { background: var(--surface-3); color: var(--ink); }
.page-header-main { flex: 1; min-width: 0; }
.page-title {
    font-family: var(--font-display); font-weight: 800;
    font-size: clamp(22px, 3.2vw, 28px); letter-spacing: -.02em;
    color: var(--ink); margin: 0; line-height: 1.12;
    overflow: hidden; text-overflow: ellipsis;
}
.page-subtitle { margin: 3px 0 0; color: var(--ink-faint); font-size: 13.5px; }
.page-header-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

/* Pill-strip sub-navigation under a PageHeader (board/calendar/parts views). */
.page-subnav { margin: -4px 0 16px; }

@media (min-width: 768px) {
    .app-content .screen.wide { max-width: 1240px; }
    /* List/board screens flow into a responsive card grid on wide screens. */
    .screen.wide .list,
    .screen.wide .parts-waiting-list {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
        gap: 12px;
        align-items: start;
    }
    .screen.wide .parts-waiting-list { grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); }
    .screen.wide .list > li { margin: 0; }
}

/* ═══════════════════════════════════════════════════════════════
   Custom login — split brand panel + form
   ═══════════════════════════════════════════════════════════════ */
.login-split {
    display: grid; grid-template-columns: 1fr;
    min-height: 100vh; min-height: 100dvh;
}
.login-aside { display: none; }   /* brand panel — desktop only */
.login-main {
    display: flex; align-items: center; justify-content: center;
    padding: 32px 20px; position: relative;
}

.login-form { margin-top: 6px; text-align: left; }
.login-field { margin-bottom: 14px; }
.login-field label {
    display: block; font-family: var(--font-body); font-weight: 700;
    font-size: 11px; letter-spacing: .14em; text-transform: uppercase;
    color: var(--ink-muted); margin-bottom: 7px;
}
.login-input {
    width: 100%; height: 50px; padding: 0 14px;
    font-family: var(--font-body); font-size: 16px; color: var(--ink);
    background: var(--surface-1); border: 1px solid var(--line-strong);
    border-radius: var(--r-md); outline: none;
    transition: border-color .12s ease, box-shadow .12s ease;
}
.login-input::placeholder { color: var(--ink-ghost); }
.login-input:focus { border-color: var(--k-blue); box-shadow: 0 0 0 3px rgba(84,167,202,.15); }
.login-pw { position: relative; }
.login-pw .login-input { padding-right: 46px; }
.login-eye {
    position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
    width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center;
    background: transparent; border: 0; cursor: pointer; color: var(--ink-faint); border-radius: var(--r-pill);
}
.login-eye:hover { background: var(--surface-3); color: var(--ink); }
.login-submit { margin-top: 18px; }
.login-row-between { display: flex; align-items: center; justify-content: flex-end; margin-top: 12px; }
.login-link {
    background: none; border: 0; cursor: pointer; padding: 0;
    font-family: var(--font-body); font-weight: 600; font-size: 13px; color: var(--k-blue);
}
.login-link:hover { color: var(--k-blue-dark); text-decoration: underline; }
.login-alert {
    display: none; align-items: flex-start; gap: 8px;
    padding: 11px 13px; border-radius: var(--r-md);
    font-size: 13.5px; font-weight: 600; margin-bottom: 14px; line-height: 1.4;
}
.login-alert.show { display: flex; }
.login-alert.error { background: color-mix(in srgb, var(--k-red) 10%, var(--surface-1)); border: 1px solid color-mix(in srgb, var(--k-red) 32%, var(--line)); color: var(--k-red-dark); }
.login-alert.success { background: color-mix(in srgb, var(--green) 12%, var(--surface-1)); border: 1px solid color-mix(in srgb, var(--green) 30%, var(--line)); color: var(--green-dark); }
[data-theme="dark"] .login-alert.error { color: var(--k-red); }
[data-theme="dark"] .login-alert.success { color: var(--green); }

@media (min-width: 880px) {
    .login-split { grid-template-columns: minmax(0, 1.06fr) minmax(440px, 0.94fr); }
    .login-aside {
        display: flex; flex-direction: column; justify-content: center;
        padding: 56px clamp(40px, 5vw, 72px);
        background: transparent;   /* sits on the unified login-body surface — no seam */
        color: #fff; position: relative;
    }
    .login-aside .login-logo { max-width: 300px; margin: 0 0 28px; }
    .login-aside-foot { position: absolute; left: clamp(40px, 5vw, 72px); bottom: 44px; }
    .login-main { padding: 40px 28px; }
    .login-main .login-logo { display: none; }
    /* On desktop the brand lives in the left panel — keep the card clean. */
    .login-card .brand-mark { display: none; }
}
.login-aside-brand { display: flex; align-items: center; gap: 12px; }
.login-aside-mark {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; border-radius: 12px;
    color: var(--k-blue-2);
    background: linear-gradient(160deg, rgba(84,167,202,.26), rgba(84,167,202,.06));
    box-shadow: inset 0 0 0 1px rgba(84,167,202,.4);
}
.login-aside-name { font-family: var(--font-display); font-weight: 800; font-size: 22px; letter-spacing: -.02em; color: #fff; }
.login-aside-sub { font-family: var(--font-body); font-weight: 700; font-size: 10px; letter-spacing: .24em; text-transform: uppercase; color: var(--k-blue-2); margin-top: 3px; }
.login-aside-head { font-family: var(--font-display); font-weight: 800; font-size: clamp(28px, 3vw, 38px); line-height: 1.1; letter-spacing: -.02em; color: #fff; max-width: 14ch; }
.login-aside-tag { color: rgba(255,255,255,.7); font-size: 15px; margin-top: 14px; max-width: 34ch; line-height: 1.5; }
.login-aside-foot { font-size: 12px; color: rgba(255,255,255,.45); }

/* ═══════════════════════════════════════════════════════════════
   Dark topbar — it now shares the charcoal sidebar background, so its
   contents are restyled for a dark surface (continuous top strip).
   ═══════════════════════════════════════════════════════════════ */
.app-topbar-burger { color: var(--side-text); }
.app-topbar-burger:hover { background: var(--side-bg-2); color: #fff; }
.app-topbar-brand { color: #fff; }
.app-topbar-brand .brand-pulse { color: #5FD0F5; }
.app-topbar-search-icon { color: rgba(255,255,255,.45); }
.app-topbar-search-input {
    background: rgba(255,255,255,.07); color: #fff; border-color: rgba(255,255,255,.08);
}
.app-topbar-search-input::placeholder { color: rgba(255,255,255,.42); }
.app-topbar-search-input:focus {
    background: rgba(255,255,255,.12); border-color: var(--k-blue);
    box-shadow: 0 0 0 3px rgba(84,167,202,.25);
}
.app-topbar .theme-toggle { color: var(--side-text); }
.app-topbar .theme-toggle:hover { background: var(--side-bg-2); color: #fff; }
.app-topbar .user-menu-trigger { color: var(--side-text); }
.app-topbar .user-menu-trigger:hover { background: var(--side-bg-2); }
.app-topbar .user-avatar { box-shadow: 0 0 0 1px rgba(255,255,255,.12); }
.app-topbar .user-menu-name { color: var(--side-text); }
.app-topbar .user-menu-caret { color: var(--side-text-dim); }

/* ═══════════════════════════════════════════════════════════════
   Dashboard fits the viewport on desktop — no page scroll. The head,
   hero and KPI tiles are fixed; the detail lists scroll internally.
   ═══════════════════════════════════════════════════════════════ */
@media (min-width: 992px) {
    .app-content .screen.dashboard {
        height: calc(100dvh - var(--topbar-h));
        max-width: 1280px;
        padding: 16px clamp(20px, 3vw, 40px);
        display: flex; flex-direction: column; gap: 12px;
        overflow: hidden;
    }
    .dashboard .dash-head  { margin: 0; flex-shrink: 0; }
    .dashboard .dash-hero  { margin: 0; flex-shrink: 0; padding: 14px 20px; }
    .dashboard .dash-kpis  { margin: 0; flex-shrink: 0; }
    /* compact hero so the whole board fits the viewport */
    .dashboard .dash-hero-label { margin-bottom: 8px; }
    .dashboard .dash-hero .field { margin-bottom: 8px; }
    .dashboard .dash-hero .field-label { margin-bottom: 4px; }
    .dashboard .dash-hero .field-hint { display: none; }
    .dashboard .dash-hero .field-select,
    .dashboard .dash-hero .plate-category-select { height: 42px; }
    .dashboard .dash-hero .plate-input { height: 52px; font-size: 23px; }
    .dashboard .dash-hero .btn-lg { height: 46px; margin-top: 8px !important; }
    .dashboard .dash-hero-actions { margin-top: 10px; }
    .dashboard .dash-action { padding: 9px 11px; }
    /* Today's appointments fills the remaining height and scrolls inside. */
    .dashboard .dash-today {
        flex: 1; min-height: 0; margin: 0;
        display: flex; flex-direction: column; overflow: hidden;
    }
    .dashboard .dash-today .dash-rows { overflow-y: auto; min-height: 0; flex: 1; }
}

/* ═══════════════════════════════════════════════════════════════
   Global search (topbar) — live filter across the whole app
   ═══════════════════════════════════════════════════════════════ */
.gsearch { position: relative; display: none; align-items: center; flex: 1; max-width: 460px; }
@media (min-width: 768px) { .gsearch { display: flex; } }
.gsearch-icon { position: absolute; left: 12px; color: rgba(255,255,255,.45); pointer-events: none; z-index: 1; }
.gsearch-input {
    width: 100%; height: 40px; padding: 0 14px 0 38px;
    background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.08); border-radius: var(--r-pill);
    color: #fff; font-family: var(--font-body); font-size: 14px;
    transition: background-color .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.gsearch-input::placeholder { color: rgba(255,255,255,.42); }
.gsearch-input:focus {
    outline: none; background: rgba(255,255,255,.12);
    border-color: var(--k-blue); box-shadow: 0 0 0 3px rgba(84,167,202,.25);
}
.gsearch-backdrop { position: fixed; inset: 0; z-index: 90; }
.gsearch-pop {
    position: absolute; left: 0; right: 0; top: calc(100% + 8px); z-index: 91;
    max-height: 70vh; overflow-y: auto; padding: 6px;
    background: var(--surface-1); border: 1px solid var(--line);
    border-radius: var(--r-lg); box-shadow: var(--shadow-lg);
    animation: autocomplete-in .14s ease both;
}
.gsearch-group { padding: 2px 0; }
.gsearch-group + .gsearch-group { border-top: 1px solid var(--line); margin-top: 4px; padding-top: 4px; }
.gsearch-group-label {
    font-family: var(--font-body); font-weight: 700; font-size: 10px;
    letter-spacing: .14em; text-transform: uppercase; color: var(--ink-faint);
    padding: 8px 10px 4px;
}
.gsearch-item {
    display: flex; align-items: center; gap: 12px; width: 100%; text-align: left;
    padding: 9px 10px; border-radius: var(--r-md);
    background: transparent; border: 0; cursor: pointer; color: var(--ink);
    transition: background-color .12s ease;
}
.gsearch-item:hover { background: var(--surface-2); }
.gsearch-item-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px; border-radius: var(--r-sm); flex-shrink: 0;
    background: var(--surface-3); color: var(--k-blue);
}
.gsearch-item-text { display: flex; flex-direction: column; min-width: 0; }
.gsearch-item-label { font-family: var(--font-display); font-weight: 600; font-size: 14px; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gsearch-item-sub { font-size: 12px; color: var(--ink-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gsearch-empty { padding: 16px 12px; text-align: center; color: var(--ink-faint); font-size: 13.5px; }

/* ═══════════════════════════════════════════════════════════════
   Tablet (768–1199px) — compact shell: narrower sidebar, smaller
   chrome fonts/padding, so more room for content.
   ═══════════════════════════════════════════════════════════════ */
@media (min-width: 768px) and (max-width: 1199px) {
    .app-shell { --side-w: 208px; --topbar-h: 58px; }
    .app-brand-mark { width: 34px; height: 34px; }
    .app-brand-name { font-size: 15px; }
    .app-brand-sub  { font-size: 9px; letter-spacing: .18em; }
    .app-nav { padding: 10px 10px 12px; gap: 2px; }
    .app-nav-group { margin-top: 10px; }
    .app-nav-group-label { font-size: 9px; padding: 6px 10px 3px; }
    .app-nav-item { font-size: 13px; padding: 8px 10px; gap: 10px; }
    .app-nav-icon { width: 20px; }
    .gsearch { max-width: 340px; }

    .app-content .screen { padding: 18px clamp(16px, 2.2vw, 24px) 40px; }
    .card { padding: 18px; }
    .dash-greeting { font-size: 24px; }
    .dash-sub { font-size: 13px; }
    .dash-tile { padding: 12px 14px; gap: 12px; }
    .dash-tile-icon { width: 40px; height: 40px; }
    .dash-tile-value { font-size: 22px; }
    .dash-tile-label { font-size: 11.5px; }
    .dash-section { padding: 14px; }
    .dash-hero { padding: 16px 18px; }
    .dash-hero .plate-input { height: 62px; font-size: 26px; }
    .dash-hero-actions { margin-top: 14px; }
}

/* ═══════════════════════════════════════════════════════════════
   Large web (>=1200px) — widgets scale fluidly with the viewport
   (clamp + vw), the same idea as eudr-x's rem-scaling but applied
   directly since this app is sized in px, not rem.
   ═══════════════════════════════════════════════════════════════ */
@media (min-width: 1200px) {
    .app-content .screen.dashboard { max-width: min(1600px, 93vw); }
    .dashboard .dash-greeting   { font-size: clamp(26px, 2.3vw, 38px); }
    .dashboard .dash-hero       { padding: clamp(20px, 1.8vw, 34px); }
    .dashboard .dash-hero .plate-input { height: clamp(56px, 3vw, 72px); font-size: clamp(24px, 1.9vw, 32px); }
    .dashboard .dash-tile       { padding: clamp(14px, 1.1vw, 22px) clamp(16px, 1.3vw, 26px); }
    .dashboard .dash-tile-icon  { width: clamp(44px, 3vw, 58px); height: clamp(44px, 3vw, 58px); }
    .dashboard .dash-tile-value { font-size: clamp(24px, 1.7vw, 36px); }
    .dashboard .dash-tile-label { font-size: clamp(12px, .85vw, 15px); }
    .dashboard .dash-section       { padding: clamp(16px, 1.2vw, 24px); }
    .dashboard .dash-section-title { font-size: clamp(15px, 1vw, 20px); }
    .dashboard .dash-row-title  { font-size: clamp(14px, .95vw, 17px); }
    .dashboard .dash-row-time   { font-size: clamp(13px, .85vw, 15px); }
}

/* ═══════════════════════════════════════════════════════════════
   Custom Dropdown — a fully themed replacement for native <select>
   (the browser's native option popup can't be styled to match).
   ═══════════════════════════════════════════════════════════════ */
.dropdown { position: relative; display: block; }
.dropdown-trigger {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    width: 100%; height: 48px; padding: 0 14px;
    font-family: var(--font-body); font-size: 16px; color: var(--ink);
    background: var(--surface-1); border: 1px solid var(--line-strong);
    border-radius: var(--r-md); cursor: pointer; text-align: left;
    transition: border-color .12s ease, box-shadow .12s ease;
}
.dropdown-trigger:disabled { opacity: .55; cursor: not-allowed; }
.dropdown-trigger:focus-visible { outline: none; border-color: var(--k-blue); box-shadow: 0 0 0 3px rgba(84,167,202,.15); }
.dropdown.is-open .dropdown-trigger { border-color: var(--k-blue); box-shadow: 0 0 0 3px rgba(84,167,202,.15); }
.dropdown.propulsion-hv .dropdown-trigger { border-color: var(--amber); }
.dropdown-value { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dropdown-value.is-placeholder { color: var(--ink-ghost); }
.dropdown-caret { color: var(--ink-faint); flex-shrink: 0; transform: rotate(90deg); transition: transform .18s ease; }
.dropdown.is-open .dropdown-caret { transform: rotate(-90deg); }
.dropdown-list.dropdown-portal { right: auto; z-index: 9999; }
.dropdown-list {
    position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 41;
    margin: 0; padding: 6px; list-style: none;
    background: var(--surface-1); border: 1px solid var(--line-strong);
    border-radius: var(--r-md); box-shadow: var(--shadow-lg);
    max-height: 320px; overflow-y: auto;
    animation: autocomplete-in .14s ease both;
}
.dropdown-option {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 10px 12px; border-radius: var(--r-sm); cursor: pointer;
    font-size: 15px; color: var(--ink); line-height: 1.3;
    transition: background-color .1s ease;
}
.dropdown-option:hover { background: var(--surface-2); }
.dropdown-option.is-selected { background: color-mix(in srgb, var(--k-blue) 12%, transparent); color: var(--k-blue-dark); font-weight: 600; }
[data-theme="dark"] .dropdown-option.is-selected { color: var(--k-blue-2); }
.dropdown-option-label { overflow: hidden; text-overflow: ellipsis; }
.dropdown-check { color: var(--k-blue); flex-shrink: 0; }
