/* =====================================================================
   Clay auth — the soft, extruded look for the pages a doctor meets before
   he is inside his clinic: the clinic finder (panel), the clinic login,
   the Google / phone-code broker and the self-serve signup wizard.

   Scoped to `html.clay-auth`, so nothing else in the product changes.
   Loaded AFTER each page's own <style>, so it restyles the page's existing
   classes without touching markup, ids, names or JS hooks.

   Colour comes from the design-system tokens (tokens.css): --ds-primary
   and --ds-accent-2 follow the user's chosen palette (data-palette on
   <html>) and the `.dark` class. Every shadow is derived from those, with
   separate highlight / shade values per mode, so all six palettes and
   dark mode stay coherent. Nothing here is a fixed hue except the
   neutral bases the tints are mixed into.
   ===================================================================== */

html.clay-auth {
    --c-primary:   var(--ds-primary, #4F46E5);
    --c-primary-2: var(--ds-accent-2, var(--c-primary));
    --c-on-primary: #FFFFFF;
    --c-btn-1: var(--c-primary-2);
    --c-btn-2: var(--c-primary);

    --c-bg:      color-mix(in srgb, var(--c-primary) 7%, #ECEFF6);
    --c-surface: color-mix(in srgb, var(--c-primary) 3%, #FBFCFF);
    --c-sunken:  color-mix(in srgb, var(--c-primary) 8%, #E7EBF3);
    --c-ink:     #141A2E;
    --c-muted:   #586178;
    --c-line:    color-mix(in srgb, var(--c-primary) 14%, #DCE1EC);
    --c-danger:  #C81E1E;
    --c-success: #047857;

    /* light source top-start: a bright highlight, a primary-tinted shade */
    --c-hi:    rgba(255, 255, 255, 0.95);
    --c-hi-in: rgba(255, 255, 255, 0.85);
    --c-shade: color-mix(in srgb, var(--c-primary) 26%, rgba(30, 36, 60, 0.30));
    --c-shade-soft: color-mix(in srgb, var(--c-primary) 20%, rgba(30, 36, 60, 0.18));

    --clay-out:
        14px 16px 34px var(--c-shade-soft),
        -10px -10px 26px var(--c-hi),
        inset 2px 2px 3px var(--c-hi-in),
        inset -3px -4px 10px color-mix(in srgb, var(--c-shade-soft) 55%, transparent);
    --clay-out-sm:
        6px 8px 16px var(--c-shade-soft),
        -5px -5px 12px var(--c-hi),
        inset 1px 1px 2px var(--c-hi-in),
        inset -2px -3px 6px color-mix(in srgb, var(--c-shade-soft) 45%, transparent);
    --clay-in:
        inset 4px 5px 10px var(--c-shade-soft),
        inset -4px -4px 9px var(--c-hi-in);
    --clay-btn:
        6px 10px 20px color-mix(in srgb, var(--c-primary) 42%, transparent),
        -4px -4px 12px var(--c-hi),
        inset 2px 3px 4px rgba(255, 255, 255, 0.38),
        inset -3px -5px 9px color-mix(in srgb, #000 22%, transparent);
    --clay-btn-press:
        2px 3px 8px color-mix(in srgb, var(--c-primary) 35%, transparent),
        inset 3px 4px 9px color-mix(in srgb, #000 24%, transparent),
        inset -2px -2px 5px rgba(255, 255, 255, 0.22);
    --clay-ring: 0 0 0 3px var(--c-surface), 0 0 0 6px color-mix(in srgb, var(--c-primary) 70%, transparent);

    --clay-r-card: 30px;
    --clay-r-ctl: 999px;
    --clay-r-tile: 22px;
    --clay-ease: cubic-bezier(.34, 1.4, .64, 1);

    /* Re-point every page's own tokens at the clay ones, so the rules each
       page already has (text colours, links, notes) follow the theme too. */
    --page: var(--c-bg); --surface: var(--c-surface); --alt: var(--c-sunken); --line: var(--c-line);
    --ink: var(--c-ink); --faint: var(--c-muted);
    --bg: var(--c-bg); --card: var(--c-surface); --text: var(--c-ink); --border: var(--c-line);
    --muted: var(--c-muted);
    --accent: var(--c-primary); --accent-hover: var(--c-primary); --accent-wash: color-mix(in srgb, var(--c-primary) 10%, var(--c-surface));
    --danger: var(--c-danger); --bad: var(--c-danger); --success: var(--c-success);
    color-scheme: light;
}

html.clay-auth.dark {
    --c-bg:      color-mix(in srgb, var(--c-primary) 9%, #0B1020);
    --c-surface: color-mix(in srgb, var(--c-primary) 10%, #171E30);
    --c-sunken:  color-mix(in srgb, var(--c-primary) 6%, #0D1222);
    --c-ink:     #EEF1F8;
    --c-muted:   #A3ADC2;
    --c-line:    color-mix(in srgb, var(--c-primary) 22%, #2A3348);
    --c-danger:  #FB7185;
    --c-success: #34D399;
    --c-on-primary: #FFFFFF;

    /* dark palettes use light primaries; deepen the button fill so white text keeps its contrast */
    --c-btn-1: color-mix(in srgb, var(--c-primary-2) 72%, #0B1020);
    --c-btn-2: color-mix(in srgb, var(--c-primary) 60%, #0B1020);
    --c-hi:    color-mix(in srgb, var(--c-primary) 5%, rgba(255, 255, 255, 0.06));
    --c-hi-in: rgba(255, 255, 255, 0.08);
    --c-shade: rgba(0, 0, 0, 0.62);
    --c-shade-soft: rgba(0, 0, 0, 0.50);
    --clay-btn:
        6px 10px 22px color-mix(in srgb, var(--c-primary) 30%, rgba(0, 0, 0, 0.55)),
        -3px -3px 10px var(--c-hi),
        inset 2px 3px 4px rgba(255, 255, 255, 0.28),
        inset -3px -5px 9px rgba(0, 0, 0, 0.30);
    color-scheme: dark;
}

/* ---------- page ---------- */
html.clay-auth body {
    background:
        radial-gradient(60% 45% at 15% 0%, color-mix(in srgb, var(--c-primary) 16%, transparent), transparent 70%),
        radial-gradient(50% 40% at 100% 100%, color-mix(in srgb, var(--c-primary-2) 14%, transparent), transparent 70%),
        var(--c-bg) !important;
    background-attachment: fixed !important;
    color: var(--c-ink);
}
html.clay-auth body::before,
html.clay-auth .wash { display: none !important; }
/* the login page's line-wave canvas: kept running, but only a whisper behind the clay */
html.clay-auth #waveContainer { opacity: .12; }

/* ---------- cards ---------- */
html.clay-auth .card,
html.clay-auth .login-card,
html.clay-auth .broker-card,
html.clay-auth .modal-box {
    background: var(--c-surface) !important;
    border: 0 !important;
    border-radius: var(--clay-r-card) !important;
    box-shadow: var(--clay-out) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    color: var(--c-ink);
}
html.clay-auth .login-card { padding: 2.25rem 2rem; }

/* brand marks become little clay tiles */
html.clay-auth .brand img,
html.clay-auth .mark > img,
html.clay-auth .broker-logo img,
html.clay-auth .clinic-logo img {
    background: var(--c-surface);
    border-radius: 18px;
    padding: 6px;
    box-shadow: var(--clay-out-sm);
}
html.clay-auth .brand img { width: 46px; height: 46px; }
html.clay-auth .broker-logo img { max-width: 84px; }
html.clay-auth .clinic-name,
html.clay-auth .broker-title,
html.clay-auth h1, html.clay-auth .title { color: var(--c-ink); font-weight: 800; }

/* ---------- pressed-in fields ---------- */
html.clay-auth input[type=text],
html.clay-auth input[type=password],
html.clay-auth input[type=tel],
html.clay-auth input[type=email],
html.clay-auth input:not([type]),
html.clay-auth .form-control {
    background: var(--c-sunken) !important;
    border: 0 !important;
    border-radius: var(--clay-r-ctl) !important;
    box-shadow: var(--clay-in) !important;
    color: var(--c-ink) !important;
    padding: 14px 20px;
    min-height: 50px;
    transition: box-shadow .2s ease, background-color .2s ease;
}
html.clay-auth input:focus,
html.clay-auth .form-control:focus {
    outline: none !important;
    border: 0 !important;
    padding: 14px 20px;
    background: color-mix(in srgb, var(--c-primary) 5%, var(--c-sunken)) !important;
    box-shadow: var(--clay-in), 0 0 0 3px color-mix(in srgb, var(--c-primary) 45%, transparent) !important;
}
html.clay-auth input::placeholder { color: var(--c-muted) !important; opacity: .8; }

/* login: underline fields → pills, icon and eye inside them (logical sides) */
html.clay-auth .form-floating { padding: 0 !important; margin-bottom: 1.1rem; font-size: 16px; }
html.clay-auth .form-floating::after { display: none !important; }
html.clay-auth .form-floating > .form-control {
    width: 100% !important;
    height: 54px;
    padding-block: 0 !important;
    padding-inline: 52px 20px !important;
}
html.clay-auth .password-toggle-container > .form-control { padding-inline-end: 52px !important; }
html.clay-auth .form-floating .field-icon,
html.clay-auth [dir] .form-floating .field-icon {
    top: 50% !important;
    left: auto; right: auto;
    inset-inline-start: 20px;
    color: var(--c-primary);
    text-align: center;
}
html.clay-auth .password-toggle-btn,
html.clay-auth [dir] .password-toggle-btn {
    top: 50% !important;
    left: auto; right: auto;
    inset-inline-end: 12px;
    width: 34px; height: 34px;
    border-radius: 50%;
    color: var(--c-muted);
    background: var(--c-surface);
    box-shadow: var(--clay-out-sm);
}
html.clay-auth .form-check { color: var(--c-muted) !important; }
html.clay-auth .form-check-input {
    border: 0;
    background-color: var(--c-sunken);
    box-shadow: var(--clay-in);
    border-radius: 7px !important;
}
html.clay-auth .form-check-input:checked {
    background-color: var(--c-primary) !important;
    border-color: var(--c-primary) !important;
}

/* ---------- chunky buttons ---------- */
html.clay-auth .btn.primary,
html.clay-auth .btn-primary,
html.clay-auth .btn-brand,
html.clay-auth .card .btn:not(.quiet):not(.google) {
    background: linear-gradient(150deg, var(--c-btn-1), var(--c-btn-2)) !important;
    color: var(--c-on-primary) !important;
    border: 0 !important;
    border-radius: var(--clay-r-ctl) !important;
    box-shadow: var(--clay-btn) !important;
    font-weight: 800;
    min-height: 52px;
    padding: 14px 22px;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    transition: transform .18s var(--clay-ease), box-shadow .18s ease, filter .18s ease;
}
html.clay-auth .login-card .btn-primary { width: 100% !important; }
html.clay-auth .card .btn:disabled,
html.clay-auth .btn-brand:disabled { opacity: .5; filter: saturate(.6); }

/* secondary buttons: raised surface tiles */
html.clay-auth .btn.google,
html.clay-auth .broker-card .btn-google,
html.clay-auth .langbtn,
html.clay-auth .langlink,
html.clay-auth .copy,
html.clay-auth .pick,
html.clay-auth .pick button,
html.clay-auth .channel-btn {
    background: var(--c-surface) !important;
    color: var(--c-ink);
    border: 0 !important;
    box-shadow: var(--clay-out-sm) !important;
    transition: transform .18s var(--clay-ease), box-shadow .18s ease, background-color .18s ease;
}
html.clay-auth .btn.google,
html.clay-auth .broker-card .btn-google { border-radius: var(--clay-r-ctl) !important; min-height: 52px; }
html.clay-auth .langbtn,
html.clay-auth .langlink,
html.clay-auth .copy { border-radius: var(--clay-r-ctl) !important; color: var(--c-muted); }
html.clay-auth .pick,
html.clay-auth .pick button,
html.clay-auth .channel-btn { border-radius: var(--clay-r-tile) !important; padding: 14px 16px !important; }

/* the selected specialty / sign-in door sits pressed into the card */
html.clay-auth .pick[aria-checked="true"] {
    background: color-mix(in srgb, var(--c-primary) 10%, var(--c-sunken)) !important;
    box-shadow: var(--clay-in), 0 0 0 2px color-mix(in srgb, var(--c-primary) 60%, transparent) !important;
}
html.clay-auth .pick .mark,
html.clay-auth .pick .mark img { border-radius: 14px; }
html.clay-auth .pick .mark {
    display: grid; place-items: center;
    background: var(--c-surface);
    box-shadow: var(--clay-out-sm);
    border-radius: 14px;
}
html.clay-auth .pick .mark img { box-shadow: none; padding: 0; background: none; }
html.clay-auth .channel-icon { border-radius: 16px; box-shadow: var(--clay-out-sm); }
html.clay-auth .channel-icon.sms { background: linear-gradient(150deg, var(--c-btn-1), var(--c-btn-2)); }

/* Google's own button on the clinic login keeps Google's colours and mark
   (see the note in login.php) — only its shape joins the clay family. */
html.clay-auth .login-card .btn-google {
    border-radius: var(--clay-r-ctl);
    height: 52px;
    box-shadow: var(--clay-out-sm);
    transition: transform .18s var(--clay-ease), box-shadow .18s ease;
}
html.clay-auth .alt-code { color: var(--c-muted) !important; border-radius: var(--clay-r-ctl); }
html.clay-auth .alt-code:hover { color: var(--c-primary) !important; }
html.clay-auth .btn.quiet { background: none !important; box-shadow: none !important; color: var(--c-muted); border-radius: var(--clay-r-ctl); }

/* ---------- motion: lift on hover, squash on press ---------- */
@media (hover: hover) {
    html.clay-auth .btn:not(:disabled):not(.quiet):hover,
    html.clay-auth .btn-primary:hover,
    html.clay-auth .btn-brand:not(:disabled):hover,
    html.clay-auth .btn-google:not(:disabled):hover,
    html.clay-auth .pick:not(:disabled):hover,
    html.clay-auth .pick button:hover,
    html.clay-auth .channel-btn:hover,
    html.clay-auth .langbtn:hover,
    html.clay-auth .langlink:hover,
    html.clay-auth .copy:hover { transform: translateY(-2px); }
    html.clay-auth .pick:not([aria-checked="true"]):hover,
    html.clay-auth .pick button:hover,
    html.clay-auth .channel-btn:hover,
    html.clay-auth .btn.google:hover { background: color-mix(in srgb, var(--c-primary) 5%, var(--c-surface)) !important; }
}
html.clay-auth .btn:not(:disabled):active,
html.clay-auth .btn-primary:active,
html.clay-auth .btn-brand:not(:disabled):active {
    transform: translateY(1px) scale(.98);
    box-shadow: var(--clay-btn-press) !important;
}
html.clay-auth .pick:not(:disabled):active,
html.clay-auth .pick button:active,
html.clay-auth .channel-btn:active,
html.clay-auth .btn.google:active,
html.clay-auth .btn-google:not(:disabled):active,
html.clay-auth .langbtn:active,
html.clay-auth .langlink:active,
html.clay-auth .copy:active,
html.clay-auth .password-toggle-btn:active {
    transform: scale(.97);
    box-shadow: var(--clay-in) !important;
}

/* ---------- focus: a visible ring on every control ---------- */
html.clay-auth :focus-visible,
html.clay-auth .btn-google:focus-visible,
html.clay-auth .alt-code:focus-visible {
    outline: none !important;
    box-shadow: var(--clay-ring) !important;
}
html.clay-auth input:focus-visible,
html.clay-auth .form-control:focus-visible {
    box-shadow: var(--clay-in), 0 0 0 3px color-mix(in srgb, var(--c-primary) 55%, transparent) !important;
}
html.clay-auth #themeToggleInput:focus-visible + .slider { box-shadow: var(--clay-ring); }

/* ---------- messages: soft inset wells ---------- */
html.clay-auth .err,
html.clay-auth .alert,
html.clay-auth .alt-status,
html.clay-auth .status,
html.clay-auth .banner {
    border: 0 !important;
    border-radius: 20px !important;
    box-shadow: var(--clay-in);
    background: color-mix(in srgb, var(--c-danger) 10%, var(--c-sunken)) !important;
    color: var(--c-danger) !important;
}
html.clay-auth .alert-warning,
html.clay-auth .banner.warn {
    background: color-mix(in srgb, #F59E0B 14%, var(--c-sunken)) !important;
    color: color-mix(in srgb, #B45309 80%, var(--c-ink)) !important;
}
html.clay-auth .alt-status-working,
html.clay-auth .status-info {
    background: color-mix(in srgb, var(--c-primary) 10%, var(--c-sunken)) !important;
    color: var(--c-primary) !important;
}
html.clay-auth .status-done {
    background: color-mix(in srgb, var(--c-success) 12%, var(--c-sunken)) !important;
    color: var(--c-success) !important;
}

/* ---------- wizard pieces ---------- */
html.clay-auth .bars { gap: 6px; }
html.clay-auth .bars i {
    height: 9px; border-radius: 99px;
    background: var(--c-sunken); box-shadow: var(--clay-in);
}
html.clay-auth .bars i.on {
    background: linear-gradient(90deg, var(--c-primary-2), var(--c-primary));
    box-shadow: 0 2px 6px color-mix(in srgb, var(--c-primary) 35%, transparent);
}
html.clay-auth .track { height: 12px; border-radius: 99px; background: var(--c-sunken); box-shadow: var(--clay-in); }
html.clay-auth .track i { border-radius: 99px; background: linear-gradient(90deg, var(--c-primary-2), var(--c-primary)); }
html.clay-auth .spin { border-color: var(--c-sunken); border-top-color: var(--c-primary); }
html.clay-auth .hintcard,
html.clay-auth .tip {
    background: var(--c-sunken); border-radius: var(--clay-r-tile); box-shadow: var(--clay-in);
}
html.clay-auth .rows {
    border: 0; border-radius: var(--clay-r-tile);
    background: var(--c-sunken); box-shadow: var(--clay-in);
}
html.clay-auth .row { border-top-color: var(--c-line); }
html.clay-auth .rule i { border-color: var(--c-line); box-shadow: var(--clay-in); }
html.clay-auth .rule.on i { box-shadow: none; }
html.clay-auth .modal-overlay { background: color-mix(in srgb, var(--c-bg) 55%, rgba(10, 14, 28, .55)); }
html.clay-auth .modal-close { border-radius: 50%; }
html.clay-auth .sep::before,
html.clay-auth .sep::after,
html.clay-auth .alt-divider::before,
html.clay-auth .alt-divider::after { background: var(--c-line) !important; height: 2px; border-radius: 2px; }
html.clay-auth .alt-divider { color: var(--c-muted) !important; }
html.clay-auth .secure-login-text { color: var(--c-muted) !important; }

html.clay-auth .topbar .mark { color: var(--c-ink); text-decoration: none; }

/* ---------- the finder's clinic chooser ---------- */
html.clay-auth .pick .mark { color: var(--c-primary); }

/* ---------- reduced motion: keep the look, drop the movement ---------- */
@media (prefers-reduced-motion: reduce) {
    html.clay-auth *,
    html.clay-auth *::before,
    html.clay-auth *::after {
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
    html.clay-auth .btn:hover, html.clay-auth .btn:active,
    html.clay-auth .btn-primary:hover, html.clay-auth .btn-primary:active,
    html.clay-auth .btn-brand:hover, html.clay-auth .btn-brand:active,
    html.clay-auth .btn-google:hover, html.clay-auth .btn-google:active,
    html.clay-auth .pick:hover, html.clay-auth .pick:active,
    html.clay-auth .pick button:hover, html.clay-auth .pick button:active,
    html.clay-auth .channel-btn:hover, html.clay-auth .channel-btn:active,
    html.clay-auth .langbtn:hover, html.clay-auth .langlink:hover,
    html.clay-auth .copy:hover, html.clay-auth .copy:active { transform: none !important; }
    html.clay-auth .spin { animation-duration: 3s !important; animation-iteration-count: infinite !important; }
    html.clay-auth #waveContainer { display: none; }
}

@media (max-width: 480px) {
    html.clay-auth .card,
    html.clay-auth .login-card,
    html.clay-auth .broker-card { border-radius: 26px !important; }
    html.clay-auth .login-card { padding: 1.75rem 1.25rem; }
}

/* Light/dark switch injected by clay-auth-head.php */
html.clay-auth .clay-theme-btn {
    font: inherit; font-size: 15px; line-height: 1; cursor: pointer;
    width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center;
    background: var(--c-surface); color: var(--c-muted); border: 0;
    border-radius: var(--clay-r-ctl); box-shadow: var(--clay-out-sm);
    transition: transform .18s var(--clay-ease), box-shadow .18s ease;
}
html.clay-auth .clay-theme-btn:hover { color: var(--c-ink); }
html.clay-auth .clay-theme-btn:active { transform: scale(.96); }
html.clay-auth .clay-theme-btn.beside-abs { position: absolute; top: 14px; inset-inline-end: 64px; }
html.clay-auth .clay-theme-btn.floating { position: fixed; top: 16px; inset-inline-end: 16px; z-index: 50; }
html.clay-auth .topbar .clay-theme-btn { margin-inline-start: auto; margin-inline-end: 8px; }
html.clay-auth .topbar .clay-theme-btn + .langlink { margin-inline-start: 0; }
