/* =====================================================
   SABAICAN — Design system (Lot 9)
   =====================================================
   Tokens + shared components. Per-tenant branding override
   via inline <style>:root { --brand: #XXXXXX }</style>.
   ===================================================== */

:root {
    --brand: #4A6FA5;
    --brand-soft:  rgba(74, 111, 165, .08);
    /* Lot 13.1 — fallback values; the booking page overrides them inline
       with rgba derived from the tenant's actual branding_color. */
    --brand-tint:  rgba(74, 111, 165, .06);
    --brand-tint2: rgba(74, 111, 165, .02);
    --brand-glow:  rgba(74, 111, 165, .22);
    --bg: #f5f6f8;
    --surface: #fff;
    --text: #1a1a2e;
    --text-soft: #555;
    --text-muted: #888;
    --border: #d0d3d8;
    --border-soft: #eef0f3;
    --radius-sm: 6px;
    --radius: 8px;
    --radius-lg: 12px;
    --shadow-card: 0 2px 12px rgba(0,0,0,.04);
    --shadow-elevated: 0 4px 24px rgba(0,0,0,.06);
    --space-xs: .35rem;
    --space-sm: .65rem;
    --space-md: 1rem;
    --space-lg: 1.5rem;
    --space-xl: 2rem;
    --transition: .15s ease;
    color-scheme: light;
}

/* =====================================================
   Lot G-font — Inter, SELF-HOSTED (zero CDN, no external request).
   Drop the .woff2 files under /assets/fonts/inter/ (see the README there).
   Inter is licensed under the SIL Open Font License. font-display:swap →
   text shows immediately in the fallback, then swaps to Inter (no FOIT).
   Latin subset, weights 400/500/600/700/800, normal only.
   ===================================================== */
@font-face { font-family:'Inter'; font-style:normal; font-weight:400; font-display:swap; src:url('/assets/fonts/inter/Inter-Regular.woff2') format('woff2'); }
@font-face { font-family:'Inter'; font-style:normal; font-weight:500; font-display:swap; src:url('/assets/fonts/inter/Inter-Medium.woff2') format('woff2'); }
@font-face { font-family:'Inter'; font-style:normal; font-weight:600; font-display:swap; src:url('/assets/fonts/inter/Inter-SemiBold.woff2') format('woff2'); }
@font-face { font-family:'Inter'; font-style:normal; font-weight:700; font-display:swap; src:url('/assets/fonts/inter/Inter-Bold.woff2') format('woff2'); }
@font-face { font-family:'Inter'; font-style:normal; font-weight:800; font-display:swap; src:url('/assets/fonts/inter/Inter-ExtraBold.woff2') format('woff2'); }

/* Fraunces (serif) — auto-hébergée ; utilisée par --f-serif (chiffre du jour, heure, prix de la fiche RDV). */
@font-face { font-family:'Fraunces'; font-style:normal; font-weight:400; font-display:swap; src:url('/assets/fonts/fraunces/Fraunces-Regular.woff2') format('woff2'); }
@font-face { font-family:'Fraunces'; font-style:normal; font-weight:500; font-display:swap; src:url('/assets/fonts/fraunces/Fraunces-Medium.woff2') format('woff2'); }
@font-face { font-family:'Fraunces'; font-style:normal; font-weight:600; font-display:swap; src:url('/assets/fonts/fraunces/Fraunces-SemiBold.woff2') format('woff2'); }

* { box-sizing: border-box; }

/* HTML5 [hidden] must always win — fixes Lot 13 cropper modal bug where
   .crop-modal { display: flex } shadowed the UA default. */
[hidden] { display: none !important; }

html, body {
    margin: 0;
    padding: 0;
    background: var(--bg);
    color: var(--text);
    font-family: 'Inter', ui-sans-serif, system-ui, "Segoe UI", sans-serif;
    font-size: 16px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

a { color: var(--brand); text-decoration: none; transition: opacity var(--transition); }
a:hover { opacity: .8; }

/* ----- Top bar / navigation ----- */
header.topbar {
    background: var(--brand);
    color: #fff;
    padding: .85rem 1.5rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
header.topbar h1 { margin: 0; font-size: 1.05rem; font-weight: 600; }
header.topbar a { color: #fff; }
header.topbar .right { display: flex; gap: 1.25rem; align-items: center; font-size: .9rem; }
header.topbar .right .email,
header.topbar .right span:not(.lang) { opacity: .85; }
header.topbar .lang-picker { font-size: .8rem; opacity: .8; }
header.topbar .lang-picker a { margin-left: .35rem; }
header.topbar .lang-picker a.active { font-weight: 700; opacity: 1; text-decoration: underline; }

nav.tabs {
    background: var(--surface);
    border-bottom: 1px solid var(--border-soft);
    padding: 0 1.5rem;
    display: flex;
    gap: .25rem;
    overflow-x: auto;
}
nav.tabs a {
    padding: .9rem 1rem;
    color: var(--text-soft);
    border-bottom: 3px solid transparent;
    font-size: .95rem;
    white-space: nowrap;
    transition: color var(--transition), border-color var(--transition);
}
nav.tabs a:hover { color: var(--text); opacity: 1; }
nav.tabs a.active { color: var(--brand); border-bottom-color: var(--brand); font-weight: 600; }

main.page { width: 100%; max-width: 72rem; margin: 1.5rem auto; padding: 0 1.5rem; }
main.page.narrow { max-width: 56rem; }
main.page.wide { max-width: 90rem; }

h1.page-title {
    margin: 0 0 1.25rem;
    font-size: 1.5rem;
    color: var(--text);
    font-weight: 600;
    letter-spacing: -0.01em;
}

/* ----- Cards ----- */
.card {
    background: var(--surface);
    padding: var(--space-lg);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
    margin-bottom: var(--space-lg);
}
.card h2 { margin-top: 0; font-size: 1rem; color: #666; text-transform: uppercase; letter-spacing: .04em; font-weight: 600; }
.card h2.normal { color: var(--text); text-transform: none; letter-spacing: 0; font-size: 1.1rem; }

/* ----- Grids ----- */
.grid { display: grid; gap: var(--space-md); }
@media (min-width: 700px) { .grid-3 { grid-template-columns: repeat(3, 1fr); } }
.row { display: grid; gap: var(--space-md); }
@media (min-width: 700px) { .row-2 { grid-template-columns: 1fr 1fr; } }

/* ----- Text helpers ----- */
.muted { color: var(--text-muted); }
.small { font-size: .85rem; }
.stat-big { font-size: 2rem; font-weight: 700; color: var(--brand); letter-spacing: -.02em; }
.text-right { text-align: right; }

/* ----- Buttons ----- */
.btn {
    display: inline-block;
    padding: .55rem 1rem;
    background: var(--brand);
    color: #fff !important;
    border: 0;
    border-radius: var(--radius);
    cursor: pointer;
    text-decoration: none;
    font-size: .95rem;
    font-family: inherit;
    transition: filter var(--transition), box-shadow var(--transition), transform var(--transition);
    box-shadow: 0 1px 2px rgba(0,0,0,.05);
}
.btn:hover { filter: brightness(.94); box-shadow: 0 2px 6px rgba(0,0,0,.08); opacity: 1; }
.btn:active { transform: translateY(1px); }
.btn:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.btn-light { background: var(--surface); color: var(--brand) !important; border: 1px solid var(--border); }
.btn-light:hover { background: var(--bg); }
.btn-danger { background: #d23a30; }
.btn-block { width: 100%; padding: .85rem; font-size: 1rem; }

/* ----- Forms ----- */
label {
    display: block;
    font-size: .85rem;
    color: #333;
    margin: 0 0 var(--space-xs);
    font-weight: 500;
}
input[type=text], input[type=email], input[type=tel], input[type=password],
input[type=date], input[type=datetime-local], input[type=time], input[type=number],
input[type=search], textarea, select {
    width: 100%;
    padding: .55rem .75rem;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    font-size: 1rem;
    font-family: inherit;
    background: var(--surface);
    color: var(--text);
    transition: border-color var(--transition), box-shadow var(--transition);
}
input:focus, textarea:focus, select:focus {
    outline: none;
    border-color: var(--brand);
    box-shadow: 0 0 0 3px var(--brand-soft);
}
textarea { resize: vertical; min-height: 5rem; line-height: 1.5; }
input:disabled, textarea:disabled, select:disabled { background: var(--bg); color: var(--text-muted); }
.field { margin-bottom: var(--space-md); }

/* ----- Tables ----- */
table.list { width: 100%; border-collapse: collapse; font-size: .92rem; }
table.list th, table.list td { text-align: left; padding: .65rem .5rem; border-bottom: 1px solid var(--border-soft); }
table.list th { color: #666; font-weight: 600; font-size: .85rem; text-transform: uppercase; letter-spacing: .03em; }
table.list tr:hover td { background: var(--bg); }

/* ----- Banners ----- */
.error-banner { background: #fdecea; color: #a3201a; padding: .75rem 1rem; border-radius: var(--radius); margin-bottom: var(--space-md); }
.success-banner { background: #e7f6ec; color: #16713b; padding: .75rem 1rem; border-radius: var(--radius); margin-bottom: var(--space-md); }

/* ----- Pills ----- */
.pill { display: inline-block; padding: .15rem .55rem; border-radius: 99px; font-size: .8rem; font-weight: 500; }
.pill-active     { background: #e7f6ec; color: #16713b; }
.pill-archived   { background: #f0f1f3; color: #666; }
.pill-pending    { background: #fff4e0; color: #8a5a00; } /* R7a-1 — awaiting approval */
.pill-scheduled  { background: #e9efff; color: #2d4ea8; }
.pill-confirmed  { background: #e7f6ec; color: #16713b; }
.pill-completed  { background: #f0f1f3; color: #555; }
.pill-cancelled  { background: #fdecea; color: #a3201a; }
.pill-no_show    { background: #fff4e0; color: #8a5a00; }
.pill-draft      { background: #f0f1f3; color: #555; }
.pill-sent       { background: #fff4e0; color: #8a5a00; }
.pill-paid       { background: #e7f6ec; color: #16713b; }
.pill-overdue    { background: #fdecea; color: #a3201a; }
.pill-refunded   { background: #f0f1f3; color: #555; }
.pill-test       { background: #fff8c4; color: #6a5b00; }
/* Lot Tarifs & dispo — service availability mode pill + clash warning */
.pill-mode       { background: #eef1f6; color: #4a5b77; margin-left: .4rem; font-size: .72rem; vertical-align: middle; }
.svc-mode-warn   { color: #9a5b06; margin-top: .25rem; }

/* ----- Toolbar ----- */
.toolbar { display: flex; gap: .75rem; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-bottom: var(--space-md); }
.search-box input { max-width: 24rem; }

/* ----- Calendar (Lot 9 grid) ----- */
.calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
    background: var(--border-soft);
    border-radius: var(--radius);
    overflow: hidden;
}
.calendar-grid .dow {
    background: var(--surface);
    text-align: center;
    padding: .65rem .25rem;
    font-size: .8rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: .03em;
    font-weight: 600;
}
.calendar-grid .cell {
    background: var(--surface);
    min-height: 7.5rem;
    padding: .4rem;
    display: flex;
    flex-direction: column;
    gap: .25rem;
    transition: background var(--transition);
}
.calendar-grid .cell.empty { background: var(--bg); }
.calendar-grid .cell.closed { background: #fafbfc; }
.calendar-grid .cell.today { background: #fffae6; }
/* R2b — exceptionally blocked day (vacation / day_off / holiday): striped, visually
   distinct from the flat-grey weekly 'closed'. Scoped classes; no global token redefined. */
.calendar-grid .cell.blocked {
    background: repeating-linear-gradient(135deg, var(--brand-tint), var(--brand-tint) 6px, #fff 6px, #fff 12px);
}
.calendar-grid .cell.blocked .day-num { color: var(--text-muted); font-weight: 400; }
.cal-tag {
    display: inline-block; margin-top: .15rem; padding: .05rem .4rem; border-radius: 999px;
    font-size: .62rem; font-weight: 600; line-height: 1.45; white-space: nowrap;
    max-width: 100%; overflow: hidden; text-overflow: ellipsis;
}
.cal-tag-holiday { background: var(--brand-soft); color: var(--brand); }
.cal-tag-block   { background: var(--border-soft); color: var(--text-soft); }
.calendar-grid .cell .day-num {
    font-weight: 600;
    color: var(--text);
    font-size: .9rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.calendar-grid .cell.closed .day-num,
.calendar-grid .cell.empty .day-num { color: var(--text-muted); font-weight: 400; }
.calendar-grid .cell a.appt {
    display: block;
    background: var(--brand);
    color: #fff !important;
    padding: .15rem .35rem;
    border-radius: var(--radius-sm);
    font-size: .72rem;
    line-height: 1.25;
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-grid .cell a.appt:hover { filter: brightness(.92); opacity: 1; }
.calendar-grid .cell .more { font-size: .7rem; color: var(--text-muted); }
@media (max-width: 700px) {
    .calendar-grid .cell { min-height: 5rem; padding: .25rem; }
    .calendar-grid .cell a.appt { font-size: .65rem; padding: .1rem .25rem; }
    .calendar-grid .dow { font-size: .7rem; }
}

/* ----- Print stylesheet baseline ----- */
@media print {
    header.topbar, nav.tabs, .toolbar, .no-print { display: none !important; }
    body { background: #fff !important; }
    .card { box-shadow: none; border: 1px solid #ddd; }
}

/* =====================================================
   LOT 13 — BOOKING PREMIUM (mobile-first)
   ===================================================== */

.container { max-width: 64rem; margin: 0 auto; padding: 0 1.25rem; }

body.booking-public { background: #fff; }

.booking-topbar {
    position: sticky; top: 0; z-index: 50;
    background: rgba(255,255,255,.94);
    backdrop-filter: saturate(180%) blur(8px);
    -webkit-backdrop-filter: saturate(180%) blur(8px);
    border-bottom: 1px solid var(--border-soft);
    padding: .65rem 1rem;
    display: flex; justify-content: space-between; align-items: center;
    font-size: .9rem;
}
.booking-topbar-name { color: var(--text); }
.lang-picker { color: var(--text-muted); font-size: .85rem; display: flex; gap: .35rem; align-items: center; }
.lang-picker a { color: var(--text-muted); }
.lang-picker a.active { color: var(--brand); font-weight: 700; }

/* =====================================================
   LOT 13.1 — Premium hero: framed banner, soft tint,
   subtle brand-derived glow. No more redundant H1.
   ===================================================== */

/* The hero "stage" carries the subtle tint behind the framed image. */
.hero-stage {
    padding: 1.25rem 0 .25rem;
    background: linear-gradient(180deg, var(--brand-tint) 0%, var(--brand-tint2) 70%, #fff 100%);
}
.hero-stage .container { padding: 0 1rem; }

/* Banner model — image inside a rounded card, floated on the tint. */
.hero-frame {
    border-radius: 18px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 4px 18px var(--brand-glow), 0 1px 2px rgba(0,0,0,.04);
}
.hero-frame .hero-bg {
    aspect-ratio: 16/6;
    background-size: cover;
    background-position: center;
    background-color: var(--brand);
    display: block;
}
.hero-frame .hero-bg-fallback { aspect-ratio: 16/6; }

/* Logo-centered model — round logo card on the tint background. */
.hero-stage-logo { padding-top: 2rem; padding-bottom: 1rem; text-align: center; }
.hero-stage-logo .hero-logo-wrap {
    width: 7rem; height: 7rem; margin: 0 auto 1rem;
    border-radius: 50%; overflow: hidden;
    box-shadow: 0 4px 18px var(--brand-glow), 0 1px 3px rgba(0,0,0,.06);
    background: #fff;
}
.hero-stage-logo .hero-logo { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero-stage-logo .hero-logo-initial {
    width: 100%; height: 100%; color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 3rem; font-weight: 700;
}

/* Photo-side model — photo + text column. */
.hero-stage-side { padding: 0; }
.hero-stage-side .hero-side-grid {
    display: flex; flex-direction: column;
    background: linear-gradient(180deg, var(--brand-tint) 0%, #fff 100%);
}
.hero-stage-side .hero-side-photo {
    width: 100%; aspect-ratio: 4/5; max-height: 22rem; overflow: hidden;
}
.hero-stage-side .hero-side-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero-stage-side .hero-side-fallback {
    width: 100%; height: 100%;
    display: flex; align-items: center; justify-content: center;
    color: #fff; font-size: 5rem; font-weight: 700;
}
.hero-stage-side .hero-side-text { padding: 1.5rem 1.25rem 2rem; }
.hero-stage-side .hero-side-text .booking-eyebrow { margin: 0 0 .5rem; }
.hero-stage-side .hero-side-text .booking-subline { margin: 0 0 1rem; }
.hero-stage-side .hero-intro { color: var(--text); line-height: 1.65; margin: 0; }

/* Eyebrow + subline (replaces the redundant H1). */
.booking-eyebrow-block { text-align: center; padding: 1.1rem 0 .25rem; }
.booking-eyebrow {
    margin: 0;
    color: var(--brand);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .18em;
    text-transform: uppercase;
}
.booking-subline {
    margin: .5rem 0 0;
    color: var(--text-soft);
    font-size: 1.05rem;
    line-height: 1.45;
    max-width: 34rem;
    margin-left: auto; margin-right: auto;
}

.booking-intro { padding: 1.25rem 0; border-bottom: 1px solid var(--border-soft); }
.booking-intro p { margin: 0; color: var(--text); line-height: 1.65; max-width: 38rem; }

/* =====================================================
   LOT 13.1 — Services as horizontal selectable rows.
   This list IS the service selector (Calendly pattern).
   ===================================================== */
.booking-services { padding: 1.75rem 0 1.5rem; }
.booking-services h2 {
    margin: 0 0 1rem; font-size: 1.35rem; color: var(--text);
    letter-spacing: -.01em; font-weight: 600; text-transform: none;
}

.service-list { display: flex; flex-direction: column; gap: .65rem; }

.service-row {
    display: grid;
    grid-template-columns: 4px 1fr auto;
    gap: 1rem;
    align-items: center;
    width: 100%;
    padding: 1rem 1rem 1rem .85rem;
    background: #fff;
    border: 1.5px solid var(--border);
    border-radius: var(--radius-lg);
    cursor: pointer;
    font: inherit; text-align: left; color: inherit;
    transition: border-color var(--transition), background var(--transition), box-shadow var(--transition), transform var(--transition);
}
.service-row:hover {
    border-color: var(--brand);
    background: var(--brand-tint);
}
.service-row:focus-visible {
    outline: 2px solid var(--brand);
    outline-offset: 2px;
}
.service-row.is-selected {
    border-color: var(--brand);
    background: var(--brand-soft);
    box-shadow: 0 2px 10px var(--brand-glow);
}

.service-row .sr-accent {
    width: 4px; align-self: stretch;
    border-radius: 99px;
    background: var(--brand);
    min-height: 2.5rem;
}

.service-row .sr-main { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.service-row .sr-name { font-size: 1.05rem; font-weight: 600; color: var(--text); line-height: 1.3; }
.service-row .sr-desc {
    font-size: .9rem; color: var(--text-soft); line-height: 1.45;
    /* Truncate at 2 lines to keep rows compact on long descriptions. */
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden;
}

.service-row .sr-pricecol {
    display: flex; flex-direction: column; align-items: flex-end;
    text-align: right; gap: .15rem; white-space: nowrap;
}
.service-row .sr-price {
    font-size: 1.2rem; font-weight: 700; color: var(--text);
    font-variant-numeric: tabular-nums;
}
.service-row .sr-pricemeta { font-size: .8rem; color: var(--text-muted); }

/* Badge appears only on the selected row. */
.service-row .sr-badge {
    display: none;
    margin-top: .25rem;
    font-size: .7rem; font-weight: 700; letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--brand);
}
.service-row.is-selected .sr-badge { display: inline; }

/* =====================================================
   Booking form — date + contact only (service comes from
   the selector above; confirmation banner below).
   ===================================================== */
.booking-form-section { padding: 1rem 0 7rem; background: var(--bg); }

.selected-service-banner {
    display: flex; align-items: center; gap: .9rem;
    background: #fff;
    border: 1.5px solid var(--brand);
    border-left-width: 4px;
    border-radius: var(--radius-lg);
    padding: .85rem 1rem;
    margin-bottom: 1rem;
    box-shadow: 0 2px 8px var(--brand-glow);
    flex-wrap: wrap;
}
.selected-service-banner .ssb-label {
    font-size: .7rem; font-weight: 700; letter-spacing: .08em;
    text-transform: uppercase; color: var(--brand);
}
.selected-service-banner .ssb-content {
    flex: 1; min-width: 0;
    display: flex; flex-direction: column; gap: .1rem;
}
.selected-service-banner .ssb-content strong { font-size: 1rem; color: var(--text); }
.selected-service-banner .ssb-content small { font-size: .85rem; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.selected-service-banner .ssb-change {
    font-size: .85rem; color: var(--brand); font-weight: 600;
    text-decoration: none; white-space: nowrap;
}
.selected-service-banner .ssb-change:hover { text-decoration: underline; }

.step-block {
    background: var(--surface); padding: 1.5rem 1.25rem;
    border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
    margin-bottom: 1rem;
}
.step-title {
    margin: 0 0 1.25rem; font-size: 1.1rem; color: var(--brand);
    font-weight: 700; letter-spacing: 0; text-transform: none;
}

.form-error-inline {
    margin-top: .75rem; color: #b00020; font-size: .9rem; text-align: center;
}

/* Slots grid */
.slot-grid { display: grid; gap: .5rem; grid-template-columns: repeat(auto-fill, minmax(5.5rem, 1fr)); margin-top: .5rem; }
.slot-chip {
    padding: .75rem .5rem; text-align: center;
    border: 1.5px solid var(--border); border-radius: var(--radius);
    background: #fff; cursor: pointer;
    font-size: .95rem; font-family: inherit; color: var(--text);
    font-variant-numeric: tabular-nums; min-height: 44px;
    transition: border-color var(--transition), background var(--transition);
}
.slot-chip:hover { border-color: var(--brand); }
.slot-chip.selected { background: var(--brand); color: #fff; border-color: var(--brand); }

.btn-large { padding: 1rem 1.25rem; font-size: 1.05rem; font-weight: 600; }
.honey { position: absolute !important; left: -9999px !important; height: 0 !important; width: 0 !important; opacity: 0 !important; }

/* Sticky mobile CTA */
.sticky-cta {
    position: fixed; bottom: 0; left: 0; right: 0;
    background: var(--surface); border-top: 1px solid var(--border-soft);
    padding: .75rem 1rem; box-shadow: 0 -4px 16px rgba(0,0,0,.06); z-index: 40;
}
.sticky-cta a {
    display: block; text-align: center;
    background: var(--brand); color: #fff !important;
    padding: .85rem; border-radius: var(--radius);
    font-weight: 600; text-decoration: none;
}
.sticky-cta a:hover { opacity: 1; filter: brightness(.95); }

.booking-footer { padding: 1rem; text-align: center; color: var(--text-muted); font-size: .85rem; margin-bottom: 4rem; }

@media (min-width: 700px) {
    .hero-stage { padding: 2rem 0 .5rem; }
    .hero-frame .hero-bg, .hero-frame .hero-bg-fallback { aspect-ratio: 16/5; }
    .hero-stage-logo { padding-top: 3rem; padding-bottom: 1.25rem; }
    .hero-stage-logo .hero-logo-wrap { width: 9rem; height: 9rem; }
    .booking-eyebrow { font-size: .85rem; }
    .booking-subline { font-size: 1.15rem; }

    .hero-stage-side .hero-side-grid { flex-direction: row; align-items: stretch; }
    .hero-stage-side .hero-side-photo { width: 40%; aspect-ratio: auto; max-height: none; min-height: 22rem; }
    .hero-stage-side .hero-side-text { flex: 1; padding: 3rem 2.25rem; align-self: center; }

    .service-row { padding: 1.1rem 1.25rem 1.1rem 1rem; gap: 1.25rem; }
    .service-row .sr-name { font-size: 1.1rem; }
    .service-row .sr-price { font-size: 1.3rem; }

    .step-block { padding: 1.75rem 2rem; }
    .sticky-cta { display: none; }
    .booking-footer { margin-bottom: 0; }
}

/* =====================================================
   LOT 13 — ADMIN BRANDING PAGE
   ===================================================== */
.model-grid { display: grid; gap: 1rem; grid-template-columns: 1fr; margin-top: 1rem; }
@media (min-width: 700px) { .model-grid { grid-template-columns: repeat(3, 1fr); } }
.model-card {
    display: flex; flex-direction: column; gap: .65rem;
    padding: 1rem; border: 2px solid var(--border); border-radius: var(--radius-lg);
    cursor: pointer; background: #fff;
    transition: border-color var(--transition), background var(--transition);
}
.model-card:hover { border-color: var(--brand); }
.model-card.active { border-color: var(--brand); background: var(--brand-soft); }
.model-card input { position: absolute; opacity: 0; pointer-events: none; }
.model-card .mc-body { display: flex; flex-direction: column; gap: .15rem; }
.model-card .mc-body strong { font-size: 1rem; color: var(--text); }
.model-card .mc-preview {
    border-radius: var(--radius);
    background: linear-gradient(135deg, #cdd6e6 0%, #e5ebf3 100%);
    aspect-ratio: 16/9; position: relative;
}
.model-card .mc-banner::before {
    content: ''; position: absolute; left: 8%; right: 8%; top: 25%; bottom: 25%;
    background: rgba(255,255,255,.75); border-radius: 4px;
}
.model-card .mc-logo_centered::before {
    content: ''; position: absolute; left: 50%; top: 50%;
    width: 38%; aspect-ratio: 1; transform: translate(-50%, -50%);
    background: rgba(255,255,255,.85); border-radius: 50%;
}
.model-card .mc-photo_side::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 45%;
    background: rgba(255,255,255,.7);
    border-top-left-radius: var(--radius); border-bottom-left-radius: var(--radius);
}

.hero-preview-wrap { margin: 1rem 0; }
.hero-preview-wrap img { max-width: 100%; max-height: 18rem; height: auto; display: block; border-radius: var(--radius); box-shadow: var(--shadow-card); }

/* Cropper modal */
.crop-modal { position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.crop-modal .cm-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.6); }
.crop-modal .cm-dialog {
    position: relative; background: #fff; border-radius: var(--radius-lg);
    box-shadow: var(--shadow-elevated); padding: 1.5rem;
    max-width: 48rem; width: 100%; max-height: 92vh; overflow: auto;
    display: flex; flex-direction: column; gap: 1rem;
}
.crop-modal .cm-stage { background: #f5f6f8; border-radius: var(--radius); overflow: hidden; max-height: 60vh; }
.crop-modal .cm-stage img { max-width: 100%; display: block; }
.crop-modal .cm-actions { display: flex; gap: .5rem; justify-content: flex-end; }

/* =====================================================
   LOT 14 — Settings sub-nav, radio cards, helpers
   ===================================================== */
.subnav {
    display: flex; gap: .25rem; overflow-x: auto;
    margin: -.5rem -.5rem 1.5rem; padding: 0 .5rem;
    border-bottom: 1px solid var(--border-soft);
}
.subnav a {
    padding: .65rem 1rem; color: var(--text-soft);
    border-bottom: 3px solid transparent; font-size: .9rem;
    white-space: nowrap; text-decoration: none;
    transition: color var(--transition), border-color var(--transition);
}
.subnav a:hover { color: var(--text); opacity: 1; }
.subnav a.active { color: var(--brand); border-bottom-color: var(--brand); font-weight: 600; }

/* Radio cards reused on taxes settings + booking. (Lot 14 generalizes
   the .service-radio pattern from Lot 13.) */
.radio-card {
    display: flex; gap: .85rem; align-items: flex-start;
    padding: 1rem; margin-bottom: .65rem;
    border: 2px solid var(--border); border-radius: var(--radius-lg);
    cursor: pointer; background: #fff;
    transition: border-color var(--transition), background var(--transition);
}
.radio-card:hover { border-color: var(--brand); }
.radio-card input { position: absolute; opacity: 0; pointer-events: none; }
.radio-card.checked { border-color: var(--brand); background: var(--brand-soft); }
.radio-card .rc-body { display: flex; flex-direction: column; gap: .15rem; flex: 1; }
.radio-card .rc-body strong { font-size: 1rem; color: var(--text); }
.radio-card .rc-body small { color: var(--text-muted); font-size: .85rem; line-height: 1.5; }

/* Small button helper (used in services CRUD table actions). */
.btn.small { padding: .25rem .65rem; font-size: .85rem; }

/* Worked-example dl on the taxes page. */
dl.example-dl {
    display: grid; grid-template-columns: 1fr auto; gap: .25rem 1rem;
    margin: .75rem 0 0; font-size: .95rem;
}
dl.example-dl dt { color: var(--text-soft); }
dl.example-dl dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }

/* Tax indicator next to a booking price. */
.tax-note { font-size: .8em; color: var(--text-muted); font-weight: 400; }
.service-price .tax-note { font-weight: 400; }

/* Services CRUD — drag-and-drop reorder (SortableJS, Lot 14 follow-up). */
table.services-table td.drag-handle {
    width: 1.5rem;
    color: var(--text-muted);
    cursor: grab;
    user-select: none;
    text-align: center;
    padding: .65rem .25rem;
    letter-spacing: -2px;
    font-weight: 700;
}
table.services-table td.drag-handle:hover { color: var(--brand); }
table.services-table tr:active td.drag-handle,
table.services-table .sortable-chosen td.drag-handle { cursor: grabbing; }
table.services-table .sortable-ghost {
    opacity: .35;
    background: var(--brand-soft);
}
table.services-table .sortable-chosen {
    background: var(--surface);
    box-shadow: 0 4px 12px rgba(0,0,0,.08);
}
table.services-table tr.is-archived td.drag-handle { cursor: default; visibility: hidden; }
@media (hover: none) {
    /* Touch devices : larger drag handle target. */
    table.services-table td.drag-handle { font-size: 1.25rem; padding: .85rem .35rem; }
}

/* =====================================================
   LOT 20-A.2 — Premium client profile (Concept A)
   Reuses --brand / --brand-tint / --shadow-card / .stat-big.
   Page-scoped additions; no rewrite of existing rules.
   ===================================================== */

/* Sticky action bar shared by clients/view.php and edit.php. */
.admin-sticky-actions {
    position: sticky; top: 0; z-index: 30;
    display: flex; gap: .5rem; flex-wrap: wrap; align-items: center;
    padding: .75rem 0; margin-bottom: 1rem;
    background: var(--bg);
    border-bottom: 1px solid var(--border-soft);
}


/* Hero header: avatar + name/contact + actions. */
.client-hero {
    display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
    margin-bottom: 1.25rem;
}
.client-avatar {
    flex: 0 0 auto;
    width: 4rem; height: 4rem; border-radius: 50%;
    background: var(--brand); color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.6rem; font-weight: 700; letter-spacing: -.02em;
    box-shadow: var(--shadow-card);
}
.client-hero-main { flex: 1; min-width: 12rem; }
.client-hero-name {
    margin: 0; font-size: 1.7rem; font-weight: 700; color: var(--text);
    letter-spacing: -.01em; line-height: 1.15;
}
.client-hero-sub { color: var(--text-muted); font-size: .95rem; margin-top: .2rem; }
.client-hero-actions { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }

/* KPI band: auto-fit cards, each hides cleanly when its datum is absent. */
.client-kpis {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: 1rem; margin-bottom: 1.5rem;
}
.client-kpi { background: var(--surface); padding: 1rem 1.25rem; border-radius: var(--radius-lg); box-shadow: var(--shadow-card); }
.client-kpi .kpi-label { color: var(--text-muted); font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; }
.client-kpi .kpi-value { font-size: 1.5rem; font-weight: 700; color: var(--brand); letter-spacing: -.02em; margin-top: .15rem; }
.client-kpi .kpi-value.kpi-value-sm { font-size: 1.1rem; }

/* Two-column layout (left dense, right taller). Stacks on mobile. */
.client-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; align-items: start; }
.client-cols > div { display: flex; flex-direction: column; gap: 1.25rem; }
@media (max-width: 700px) {
    .client-cols { grid-template-columns: 1fr; }
    .client-avatar { width: 3.25rem; height: 3.25rem; font-size: 1.3rem; }
    .client-hero-name { font-size: 1.4rem; }
}

/* Lot 20-B — read-only SOAP note view: spacing between fields in a section. */
.note-field + .note-field { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--border-soft); }

/* Lot 20-C — SOAP note edit: auto-grow textareas + discreet security pill. */
.note-textarea { overflow: hidden; resize: none; }
.pill-secure { background: #e7f6ec; color: #16713b; }

/* ===== Lot 20-D / 24 — Premium list: sticky live-search + chips + status pills =====
   .list-* = generic standard (clients, appointments, invoices…) ;
   .notes-* = frozen historical aliases sharing the same rules (session notes). */
/* Sticky search toolbar (sits above the table card). */
.notes-toolbar, .list-toolbar { position: sticky; top: 0; z-index: 5; background: var(--bg); padding: .85rem 0 .65rem; margin-bottom: .75rem; }
.notes-search, .list-search { position: relative; }
.notes-search svg, .list-search svg { position: absolute; left: .9rem; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: var(--text-muted); pointer-events: none; }
.notes-search input, .list-search input { width: 100%; box-sizing: border-box; padding: .7rem 2.5rem .7rem 2.6rem; border: 1px solid var(--border); border-radius: 99px; font-size: 1rem; background: var(--surface); color: var(--text); transition: border-color .15s, box-shadow .15s; }
.notes-search input:focus, .list-search input:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-glow); }
.notes-clear, .list-clear { position: absolute; right: .55rem; top: 50%; transform: translateY(-50%); display: none; align-items: center; justify-content: center; width: 26px; height: 26px; border: none; border-radius: 99px; background: var(--border-soft); color: var(--text-soft); font-size: 1.1rem; line-height: 1; cursor: pointer; }
.notes-clear:hover, .list-clear:hover { background: var(--border); }

/* Quick-filter chips. */
.notes-chips, .list-chips { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .7rem; }
.notes-chip, .list-chip { border: 1px solid var(--border); background: var(--surface); color: var(--text-soft); padding: .35rem .85rem; border-radius: 99px; font-size: .85rem; cursor: pointer; transition: all .15s; }
.notes-chip:hover, .list-chip:hover { border-color: var(--brand); color: var(--brand); }
.notes-chip.active, .list-chip.active { background: var(--brand); border-color: var(--brand); color: #fff; }
.notes-chip-count, .list-chip-count { opacity: .7; font-size: .78rem; }

/* Status pills DEDICATED to session notes — do NOT touch the shared
   .pill-completed / .pill-draft (used by superadmin/* and invoice-public). */
.pill-note-done { background: #e7f6ec; color: #16713b; }
.pill-note-todo { background: #fff4e0; color: #8a5a00; }

/* Lot A — invoice client typeahead dropdown (segments reuse .slot-chip as-is). */
.client-typeahead { position: relative; }
.client-typeahead-results {
    position: absolute; z-index: 20; left: 0; right: 0; top: calc(100% + 2px);
    margin: 0; padding: .25rem; list-style: none;
    background: var(--surface); border: 1px solid var(--border);
    border-radius: var(--radius); box-shadow: var(--shadow-elevated);
    max-height: 16rem; overflow-y: auto;
}
.client-typeahead-results[hidden] { display: none; }
.client-typeahead-item { list-style: none; padding: .5rem .6rem; border-radius: var(--radius-sm); cursor: pointer; transition: background .12s; }
/* Hover AND keyboard-active share the exact same, clearly visible highlight. */
.client-typeahead-item:hover,
.client-typeahead-item.active {
    background: var(--brand-soft);
    color: var(--brand);
    box-shadow: inset 0 0 0 1px var(--brand-soft);
}
.client-typeahead-item[aria-disabled="true"] { cursor: default; background: none; box-shadow: none; color: inherit; }

/* Lot A retouche — tighten the Client & Issue-date fields (less empty space).
   max-width on the .client-typeahead CONTAINER so the absolute dropdown stays
   aligned; width:100% keeps both full-width below the 700px grid breakpoint. */
.inv-client-dates .client-typeahead { max-width: 420px; width: 100%; }
.inv-client-dates input[type="date"] { max-width: 240px; width: 100%; }

/* Lot B — invoice flat service cards (click = add a line + brief flash; no persistent state). */
.service-card-grid { display: grid; gap: .5rem; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); margin-top: .5rem; }
.service-card {
    display: flex; flex-direction: column; gap: .15rem; text-align: left;
    padding: .65rem .8rem; min-height: 44px;
    border: 1.5px solid var(--border); border-radius: var(--radius);
    background: #fff; cursor: pointer; font-family: inherit; color: var(--text);
    transition: border-color var(--transition), background var(--transition), transform .08s;
}
.service-card:hover { border-color: var(--brand); }
.service-card:active { transform: scale(.99); }
.service-card:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.service-card-name { font-weight: 600; }
.service-card-meta { font-size: .85rem; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.service-card.flash { animation: serviceCardFlash .4s ease; }
@keyframes serviceCardFlash { 0% { background: var(--brand); color: #fff; } 100% { background: #fff; color: var(--text); } }

/* Refined hover for premium list tables. */
table.notes-table tbody tr, table.list-table tbody tr { transition: background .12s; }
table.notes-table tbody tr:hover td, table.list-table tbody tr:hover td { background: var(--brand-tint); }

/* Mobile < 640px: rows become stacked cards (scoped to premium list tables). */
@media (max-width: 640px) {
    table.notes-table thead, table.list-table thead { display: none; }
    table.notes-table, table.notes-table tbody, table.notes-table tr, table.notes-table td,
    table.list-table, table.list-table tbody, table.list-table tr, table.list-table td { display: block; width: 100%; box-sizing: border-box; }
    table.notes-table tr, table.list-table tr { border: 1px solid var(--border-soft); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); background: var(--surface); margin-bottom: .7rem; padding: .35rem .25rem; }
    table.notes-table td, table.list-table td { border: none; padding: .3rem 1rem; }
    table.notes-table td.text-right, table.list-table td.text-right { text-align: left; padding: .3rem 1rem .8rem; }
}

/* =====================================================================
   Lot Premium UI — public booking refonte + mode cards + reglettes editor
   Prefixes: .bk-* (booking), .sm-* (settings mode cards), .rg-* (reglettes).
   Clinic = blue, Home = green. --brand is set inline per tenant.
   ===================================================================== */
:root{
  --bk-clin:#185fa5; --bk-clin-bg:#e9f2fb; --bk-clin-bd:#bcd7f2;
  --bk-dom:#0f6e56;  --bk-dom-bg:#e4f5ef;  --bk-dom-bd:#aee0cf;
  --bk-amber:#b4790b; --bk-amber-bg:#fbf0e3;
  --bk-border:#e7eaef; --bk-muted:#667085; --bk-faint:#9aa3b2; --bk-text:#101828;
  --bk-ease:cubic-bezier(.22,.61,.36,1);
}
.bk-i{width:18px;height:18px;flex-shrink:0;vertical-align:middle}
.bk-body{font-family:'Inter',ui-sans-serif,system-ui,"Segoe UI",sans-serif;color:var(--bk-text);margin:0;line-height:1.5;-webkit-font-smoothing:antialiased;
  background:radial-gradient(1200px 600px at 8% -10%,var(--bk-tint,rgba(74,111,165,.08)),transparent 55%),#eef1f5}
.bk-topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:14px;padding:13px 22px;background:rgba(255,255,255,.85);backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--bk-border)}
.bk-topbar-name{font-weight:700;letter-spacing:-.01em}
.bk-lang{margin-left:auto;display:flex;gap:6px;font-size:13px;color:var(--bk-faint)}
.bk-lang a{color:var(--bk-muted);text-decoration:none}
.bk-lang a.on{font-weight:700;color:var(--brand)}
.bk-wrap{max-width:1080px;margin:0 auto;padding:24px 22px 60px;display:grid;grid-template-columns:minmax(0,1fr) 374px;gap:16px;align-items:start}
.bk-wrap-narrow{max-width:680px;margin:0 auto;padding:30px 22px}
.bk-hero{grid-column:1 / -1;display:flex;align-items:center;gap:14px}
.bk-hero-lg{width:54px;height:54px;border-radius:15px;background:linear-gradient(145deg,var(--brand),#3a5a8a);color:#fff;display:grid;place-items:center;font-weight:800;font-size:22px}
.bk-hero h1{font-size:22px;letter-spacing:-.02em;margin:0}
.bk-hero p{color:var(--bk-muted);font-size:13.5px;margin:0}
.bk-hero p a{color:var(--brand);font-weight:600}
/* ===== Lot R2 — public booking header models (banner / logo_centered / minimal).
   Faithful copy of _mockups/booking-page/demo-booking.html. Text + chips use cqw
   against the banner (container-type:inline-size) so they scale in proportion and
   never clip. Brand colour drives the accents. Each top-level block spans the full
   .bk-wrap grid row (grid-column:1/-1), like .bk-hero. ===== */
.bk-bn{grid-column:1 / -1;position:relative;border-radius:22px;overflow:hidden;aspect-ratio:16/5;background:#cdd9e1 center/cover no-repeat;box-shadow:0 20px 55px rgba(16,40,56,.16);container-type:inline-size}
.bk-bn .bk-scrim{position:absolute;inset:0;z-index:1}
.bk-bn.cl.al-left   .bk-scrim{background:linear-gradient(90deg, rgba(9,19,27,.66) 0%, rgba(9,19,27,.30) 40%, transparent 72%)}
.bk-bn.cl.al-right  .bk-scrim{background:linear-gradient(270deg, rgba(9,19,27,.66) 0%, rgba(9,19,27,.30) 40%, transparent 72%)}
.bk-bn.cl.al-center .bk-scrim{background:linear-gradient(0deg, rgba(9,19,27,.74) 0%, rgba(9,19,27,.22) 50%, transparent 82%)}
.bk-bn.fc.al-left   .bk-scrim{background:linear-gradient(90deg, rgba(255,255,255,.7) 0%, rgba(255,255,255,.3) 44%, transparent 74%)}
.bk-bn.fc.al-right  .bk-scrim{background:linear-gradient(270deg, rgba(255,255,255,.7) 0%, rgba(255,255,255,.3) 44%, transparent 74%)}
.bk-bn.fc.al-center .bk-scrim{background:linear-gradient(0deg, rgba(255,255,255,.76) 0%, rgba(255,255,255,.26) 50%, transparent 84%)}
.bk-bn .bk-gp{position:absolute;z-index:2;max-width:68%;padding:2cqw 2.6cqw}
.bk-bn.al-left .bk-gp{text-align:left}.bk-bn.al-center .bk-gp{text-align:center}.bk-bn.al-right .bk-gp{text-align:right}
.bk-bn .bk-gp-nm{font-size:3.6cqw;font-weight:800;letter-spacing:-.02em;line-height:1.08}
.bk-bn .bk-gp-sb{font-size:1.75cqw;font-weight:500;margin-top:.5cqw}
.bk-bn .bk-gp-tl{font-size:1.4cqw;margin-top:.9cqw}
.bk-bn.cl .bk-gp{color:#fff}.bk-bn.cl .bk-gp-nm,.bk-bn.cl .bk-gp-sb,.bk-bn.cl .bk-gp-tl{text-shadow:0 1px 8px rgba(0,0,0,.34)}
.bk-bn.cl .bk-gp-sb a{color:#fff;text-decoration:underline}
.bk-bn.fc .bk-gp{color:#1b3445}.bk-bn.fc .bk-gp-sb{color:#3a4a57}.bk-bn.fc .bk-gp-tl{color:#52606d}
.bk-bn .bk-gp-chips{display:flex;gap:.8cqw;flex-wrap:wrap;margin-top:1.3cqw}
.bk-bn.al-center .bk-gp-chips{justify-content:center}.bk-bn.al-right .bk-gp-chips{justify-content:flex-end}
.bk-bn .bk-gp-chip{display:inline-flex;align-items:center;gap:.5cqw;border-radius:3cqw;padding:.6cqw 1.05cqw;font-size:1.15cqw;font-weight:600}
.bk-bn .bk-gp-chip .bk-i{width:1.25cqw;height:1.25cqw}
.bk-bn.cl .bk-gp-chip{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.34);color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.bk-bn.fc .bk-gp-chip{background:#fff;color:#1b3445;border:1px solid #e3e9ee;box-shadow:0 3px 10px rgba(16,40,56,.14)}
.bk-bn.fc .bk-gp-chip .bk-i{color:var(--brand)}
/* logo_centered card */
.bk-hc{grid-column:1 / -1;background:#fff;border:1px solid #e8eef3;border-radius:22px;padding:32px;text-align:center;box-shadow:0 10px 30px rgba(16,40,56,.05)}
.bk-hc-logo{width:88px;height:88px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:34px;font-weight:800;margin:0 auto 14px;box-shadow:0 8px 22px var(--bk-glow)}
.bk-hc-nm{font-size:25px;font-weight:800}
.bk-hc-sb{font-size:14px;color:var(--bk-muted);margin-top:3px}
.bk-hc-sb a{color:var(--brand);font-weight:600}
/* trust-badge strip (logo_centered + minimal) */
.bk-bstrip{grid-column:1 / -1;display:flex;gap:9px;flex-wrap:wrap}
.bk-bstrip-c{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid #e8eef3;border-radius:20px;padding:8px 13px;font-size:12.5px;font-weight:600;color:#3a4a57;box-shadow:0 2px 8px rgba(16,40,56,.04)}
.bk-bstrip-c .bk-i{width:15px;height:15px;color:var(--brand)}
/* Lot R3-live — preview mode only: hide inactive header variants + empty/off nodes.
   The !important ensures `hidden` wins over the explicit display:flex on chips/strips.
   These selectors only match elements that exist with ?preview=1 → no normal-page effect. */
.bk-pv-variant{grid-column:1 / -1;display:flex;flex-direction:column;gap:16px}
.bk-pv-variant[hidden]{display:none}
[data-pv][hidden]{display:none !important}
.bk-main{min-width:0;display:flex;flex-direction:column;gap:16px}
.bk-step{background:#fff;border:1px solid var(--bk-border);border-radius:18px;padding:18px 20px;box-shadow:0 1px 3px rgba(16,24,40,.05)}
.bk-step-h{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.bk-step-n{width:24px;height:24px;border-radius:50%;background:var(--bk-soft,rgba(74,111,165,.10));color:#3a5a8a;font-weight:700;font-size:13px;display:grid;place-items:center}
.bk-step-t{font-weight:650;font-size:15px}
.bk-errors{background:#fdecea;color:#a3201a;padding:.7rem 1rem;border-radius:11px;margin-bottom:4px;font-size:13.5px}
.bk-errors div{padding:1px 0}
.bk-muted{color:var(--bk-muted)} .bk-small{font-size:12.5px}
.bk-honey{position:absolute;left:-9999px;height:0;width:0;opacity:0}
.bk-svc{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;border:1.5px solid var(--bk-border);border-radius:12px;padding:13px 15px;cursor:pointer;background:#fff;transition:all .15s var(--bk-ease);margin-bottom:9px;font-family:inherit}
.bk-svc:last-child{margin-bottom:0}
.bk-svc:hover{border-color:#c7d3e6}
.bk-svc.on{border-color:var(--brand);background:var(--bk-tint,rgba(74,111,165,.05))}
.bk-svc-nm{font-weight:600;font-size:14.5px;display:block}
.bk-svc-meta{font-size:12.5px;color:var(--bk-muted)}
.bk-svc-right{display:flex;align-items:center;gap:14px}
.bk-svc-price{font-weight:700;font-size:15px;white-space:nowrap}
.bk-rb{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--bk-border);display:grid;place-items:center;color:#fff}
.bk-rb .bk-i{width:12px;height:12px;opacity:0}
.bk-svc.on .bk-rb{border-color:var(--brand);background:var(--brand)}
.bk-svc.on .bk-rb .bk-i{opacity:1}
/* Lot S-3b-1 — duration selector (offer-driven), individual booking flow */
.bk-durwrap{margin:0 0 16px}
.bk-durlabel{font-size:.8rem;font-weight:700;letter-spacing:.01em;color:var(--bk-muted);margin-bottom:8px}
.bk-durseg{display:flex;flex-wrap:wrap;gap:10px}
.bk-durpill{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    min-width:5.5rem;border:1.5px solid var(--bk-border);border-radius:13px;padding:11px 16px;cursor:pointer;
    background:#fff;font-family:inherit;font-size:.95rem;font-weight:800;color:var(--bk-ink,#1d2939);
    line-height:1.1;text-align:center;transition:all .15s var(--bk-ease)}
.bk-durpill:hover{border-color:var(--brand);box-shadow:0 2px 10px rgba(74,111,165,.10)}
.bk-durpill.on{border-color:var(--brand);background:var(--brand-soft)}
.bk-durpill.on,.bk-durpill.on .bk-durpill-p{color:var(--brand)}
.bk-durpill-p{display:block;font-size:.82rem;font-weight:600;color:var(--bk-muted)}
/* Lot S-3b-2a — recap hint: a first-visit discount may apply (server-side at confirmation) */
.bk-rnote{display:flex;align-items:center;gap:8px;margin:10px 0 0;padding:9px 12px;border-radius:10px;background:var(--brand-soft);color:var(--brand);font-size:.82rem;font-weight:600;line-height:1.35}
.bk-rnote svg,.bk-rnote .bk-i{width:16px;height:16px;flex:none}
/* Lot A — booking journey: forced location (waiting state), per-service duration accordion */
.bk-needpick{margin-top:12px;font-size:13px;color:#9a6a00;background:#fff7e0;border:1px solid #f1d98a;border-radius:9px;padding:9px 12px;display:flex;gap:8px;align-items:center}
.bk-needpick .bk-i,.bk-needpick svg{width:16px;height:16px;color:#c9890a;flex:none}
.bk-waitflag{display:none;font-size:12.5px;color:var(--bk-faint);font-style:italic;margin:2px 0 0 37px;align-items:center;gap:6px}
.bk-waitflag .bk-i,.bk-waitflag svg{width:14px;height:14px;flex:none}
.bk-step.is-locked .bk-waitflag,.bk-recap.is-locked .bk-waitflag{display:flex}
/* lock everything in a gated step except its header + the waiting flag */
.bk-step.is-locked > *:not(.bk-step-h):not(.bk-waitflag){opacity:.45;filter:grayscale(.25);pointer-events:none}
.bk-recap.is-locked .bk-rbody{opacity:.5;filter:grayscale(.25);pointer-events:none}
.bk-step3-needdur{font-size:13.5px;color:var(--brand);background:var(--brand-soft);border:1px solid var(--bk-border);border-radius:9px;padding:11px 13px;display:flex;gap:8px;align-items:center;margin-top:4px}
.bk-step3-needdur .bk-i,.bk-step3-needdur svg{width:16px;height:16px;color:var(--brand);flex:none}
/* per-service duration accordion (solo) */
.bk-svc-item{margin-bottom:9px}
.bk-svc-item:last-child{margin-bottom:0}
.bk-svc-item .bk-svc{margin-bottom:0}
.bk-svc-dur{max-height:0;overflow:hidden;transition:max-height .28s ease;margin:0 8px}
.bk-svc-dur.open{max-height:260px}
.bk-svc-dur-in{background:#f8fafc;border:1px solid #e3eaf2;border-top:0;border-radius:0 0 12px 12px;padding:14px 16px;margin-top:-6px}
.bk-svc-dur .bk-durlabel{display:flex;gap:6px;align-items:center;margin-bottom:9px;text-transform:uppercase}
.bk-svc-dur .bk-durlabel .bk-i,.bk-svc-dur .bk-durlabel svg{width:14px;height:14px;flex:none}
.bk-dur-single{font-size:13.5px;color:var(--brand);background:var(--brand-soft);border:1px solid var(--bk-border);border-radius:9px;padding:10px 13px;display:flex;gap:8px;align-items:center}
.bk-dur-single .bk-i,.bk-dur-single svg{width:16px;height:16px;color:var(--brand);flex:none}
.bk-opt{color:var(--bk-faint);font-weight:500;font-size:12px}
/* Lot A2 / D1 — "current offers" promo banner, PREMIUM brand-gradient version.
   --brand-d (darker brand) is derived from --brand when not defined by the tenant. */
.bk-promo{grid-column:1 / -1;position:relative;overflow:hidden;display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 0;padding:16px 20px;border:0;border-radius:14px;color:#fff;background:linear-gradient(120deg,var(--brand-d,color-mix(in srgb,var(--brand) 72%,#000)),var(--brand));box-shadow:0 16px 34px -12px color-mix(in srgb,var(--brand) 55%,transparent)}
.bk-promo-ic{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.18);color:#fff;display:grid;place-items:center;flex:none}
.bk-promo-ic svg,.bk-promo-ic .bk-i{width:18px;height:18px}
.bk-promo-ttl{font-size:14px;font-weight:800;color:#fff}
.bk-promo-pills{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
.bk-promo-pill{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--brand-d,color-mix(in srgb,var(--brand) 80%,#000));background:#fff;border:0;border-radius:999px;padding:6px 12px;box-shadow:0 4px 12px rgba(16,24,40,.22)}
.bk-promo-pill svg,.bk-promo-pill .bk-i{width:15px;height:15px;flex:none;color:var(--brand)}
.bk-promo-pill .d{color:#c0392b;font-weight:800}
@media(max-width:560px){.bk-promo-pills{margin-left:0;width:100%}}
.bk-modeseg{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:4px}
.bk-mopt{display:flex;align-items:center;gap:12px;border:1.5px solid var(--bk-border);border-radius:12px;padding:14px;cursor:pointer;background:#fff;font-family:inherit;text-align:left;transition:all .15s var(--bk-ease)}
.bk-mopt .bk-i{width:24px;height:24px;color:var(--bk-muted)}
.bk-mt{font-weight:650;font-size:14px;display:block}
.bk-md{font-size:11.5px;color:var(--bk-faint)}
.bk-mopt.clinic.on{border-color:var(--bk-clin);background:var(--bk-clin-bg)}
.bk-mopt.clinic.on .bk-i,.bk-mopt.clinic.on .bk-mt{color:var(--bk-clin)}
.bk-mopt.home.on{border-color:var(--bk-dom);background:var(--bk-dom-bg)}
.bk-mopt.home.on .bk-i,.bk-mopt.home.on .bk-mt{color:var(--bk-dom)}
/* Lot Tarifs & dispo — a mono-mode service locks the other mode option */
.bk-mopt.bk-disabled{opacity:.4;cursor:not-allowed;pointer-events:none}
.bk-clinic-addr{margin-top:14px;margin-bottom:16px;display:flex;align-items:center;gap:9px;font-size:13px;color:var(--bk-clin);background:var(--bk-clin-bg);border:1px solid var(--bk-clin-bd);border-radius:11px;padding:10px 13px}
.bk-zonebox{margin-top:14px;margin-bottom:16px;border-top:1px dashed var(--bk-border);padding-top:14px}
.bk-zonebox label{font-size:12.5px;font-weight:600;display:block;margin-bottom:6px}
.bk-zl-sub{font-size:12px;color:var(--bk-faint);font-weight:400}
.bk-zonebox input{width:200px;max-width:100%;border:1px solid var(--bk-border);border-radius:10px;padding:10px 12px;font-size:15px;font-family:inherit;background:#fbfcfe;text-transform:uppercase;letter-spacing:.06em}
.bk-zonebox input:focus{outline:none;border-color:var(--bk-dom);box-shadow:0 0 0 3px rgba(15,110,86,.15);background:#fff}
.bk-zmsg{margin-top:11px;font-size:13px;font-weight:600;display:none;align-items:center;gap:8px;padding:10px 13px;border-radius:11px}
.bk-zmsg .bk-i{width:17px;height:17px}
.bk-zmsg.ok{display:flex;background:var(--bk-dom-bg);color:var(--bk-dom)}
.bk-zmsg.no{display:flex;background:var(--bk-amber-bg);color:var(--bk-amber)}
/* Lot C-familles — group booking composer */
.bkg-entry{display:inline-flex;align-items:center;gap:8px;margin-top:12px;font-size:13px;font-weight:650;color:var(--brand);background:none;border:1px dashed var(--bk-border);padding:10px 14px;border-radius:11px;text-decoration:none;transition:all .15s var(--bk-ease)}
.bkg-entry:hover{border-color:var(--brand);background:var(--bk-soft)}
.bkg-entry .bk-i{width:16px;height:16px}
/* Lot R-booking-polish-3 — group "common care + exceptions" (mockup #09).
   One care for everyone (.bkg-common); each person = a card with name(s) + an
   inherited/custom care control, and a FULL-WIDTH override selector below. */
.bkg-common{background:var(--bk-tint);border:1px solid var(--bk-soft);border-radius:13px;padding:13px 14px;margin-bottom:14px}
.bkg-common-lbl{display:block;font-size:11px;font-weight:700;color:var(--brand);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}
.bkg-sel{width:100%;border:1px solid var(--bk-border);border-radius:11px;padding:10px 12px;font-size:14px;font-family:inherit;color:var(--bk-text);background:#fff;cursor:pointer}
.bkg-sel:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--bk-glow)}
/* Lot D3 — common duration selector (reuse .bk-durpill/.bk-durseg) */
.bkg-common-dur{margin:0 0 14px}
.bkg-common-dur .bk-durseg{flex-wrap:wrap}
/* Lot D3-refonte — group person row (mockup §C): brand vars, inline icons, no CDN */
.gp-person{border:1.5px solid var(--bk-border);border-radius:13px;padding:12px 14px;margin-bottom:10px;background:#fff}
.gp-person.you{background:var(--brand-soft)}
.gp-row1{display:flex;align-items:center;gap:10px}
.gp-ava{width:32px;height:32px;border-radius:999px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;flex:none}
.gp-ava svg,.gp-ava .bk-i{width:17px;height:17px}
.gp-you{font-weight:700;color:var(--bk-text)}
.gp-in{flex:1;min-width:0;border:1.5px solid var(--bk-border);border-radius:9px;padding:9px 11px;font-size:14px;font-family:inherit;background:#fff;color:var(--bk-text)}
.gp-in:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--bk-glow)}
.gp-del{margin-left:auto;border:0;background:transparent;color:var(--bk-faint);cursor:pointer;display:grid;place-items:center;width:30px;height:30px;border-radius:8px;flex:none}
.gp-del:hover{background:#fbeaea;color:#b9302e}
.gp-del svg,.gp-del .bk-i{width:16px;height:16px}
.gp-row2{display:flex;align-items:center;gap:10px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--bk-border);flex-wrap:wrap}
.gp-summary{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--bk-muted)}
.gp-summary svg,.gp-summary .bk-i{width:15px;height:15px;color:var(--brand);flex:none}
.gp-summary b{color:var(--bk-text)}
.gp-faint{color:var(--bk-faint)}
.gp-custom-btn{margin-left:auto;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--bk-border);background:#fff;border-radius:9px;padding:7px 11px;font-size:12.5px;font-weight:650;color:var(--bk-text);cursor:pointer;font-family:inherit}
.gp-custom-btn:hover{border-color:var(--brand);background:var(--brand-soft)}
.gp-custom-btn.on{background:var(--brand-soft);border-color:var(--brand)}
.gp-custom-btn svg,.gp-custom-btn .bk-i{width:15px;height:15px}
.gp-custom{max-height:0;overflow:hidden;transition:max-height .3s ease}
.gp-custom.open{max-height:420px}
.gp-custom-in{margin-top:10px;padding:13px;background:var(--bk-tint);border:1px solid var(--bk-border);border-radius:11px}
.gp-flabel{font-size:12px;font-weight:700;color:var(--bk-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:7px;display:flex;gap:6px;align-items:center}
.gp-flabel svg,.gp-flabel .bk-i{width:13px;height:13px;color:var(--brand)}
.gp-select{width:100%;border:1.5px solid var(--bk-border);border-radius:9px;padding:9px 11px;font-size:14px;background:#fff;margin-bottom:12px;font-family:inherit;color:var(--bk-text)}
.gp-select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--bk-glow)}
.gp-back{margin-top:10px;display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--brand);cursor:pointer}
.gp-back svg,.gp-back .bk-i{width:13px;height:13px}
.bkg-person{border:1px solid var(--bk-border);border-radius:14px;padding:12px 13px;margin-bottom:10px;background:#fcfdff}
.bkg-ptop{display:flex;align-items:center;gap:10px}
.bkg-names{display:grid;grid-template-columns:1fr 1fr;gap:9px;flex:1;min-width:0}
.bkg-who{display:flex;align-items:center;gap:8px;border:1px solid var(--bk-border);border-radius:11px;padding:9px 11px;background:#fbfcfe;min-height:42px}
.bkg-who.you{flex:1;background:var(--bk-tint);border-color:var(--bk-soft);font-weight:600;color:var(--bk-text)}
.bkg-who .bk-i{width:16px;height:16px;color:var(--brand);flex-shrink:0}
.bkg-pn{border:1px solid var(--bk-border);border-radius:11px;padding:9px 11px;background:#fbfcfe;min-height:42px;font-size:14px;font-family:inherit;color:var(--bk-text);width:100%}
.bkg-pn:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--bk-glow)}
.bkg-pright{display:flex;align-items:center;gap:9px;flex:none;margin-left:auto}
.bkg-inherit{font-size:12px;color:var(--bk-muted);text-align:right;max-width:180px;line-height:1.35}
.bkg-inherit b{color:var(--bk-text);font-weight:600}
.bkg-inherit-tag{display:block;font-size:11px;color:var(--bk-faint)}
.bkg-inherit.custom{color:var(--brand);font-weight:600}
.bkg-diff{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--brand);background:none;border:none;cursor:pointer;white-space:nowrap;font-family:inherit;padding:0}
.bkg-diff .bk-i{width:14px;height:14px}
.bkg-del{width:34px;height:40px;border-radius:10px;border:1px solid var(--bk-border);background:#fff;color:var(--bk-faint);cursor:pointer;font-size:16px;flex:none}
.bkg-del:hover{border-color:#e8a3a3;color:#c0392b;background:#fdecec}
.bkg-del-sp{width:34px;flex:none}
.bkg-override{margin-top:11px;border-top:1px dashed var(--bk-border);padding-top:11px}
.bkg-ovlbl{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;color:var(--bk-faint);margin-bottom:7px}
.bkg-revert{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;color:var(--brand);background:none;border:none;cursor:pointer;white-space:nowrap;font-family:inherit;padding:0}
.bkg-revert .bk-i{width:12px;height:12px}
.bkg-add{margin-top:4px;display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:650;color:var(--brand);background:none;border:1px dashed var(--bk-soft);padding:9px 13px;border-radius:11px;cursor:pointer;font-family:inherit}
.bkg-add:hover:not(:disabled){background:var(--bk-soft);border-color:var(--brand)}
.bkg-add:disabled{opacity:.45;cursor:not-allowed}
.bkg-add .bk-i{width:15px;height:15px}
/* Lot R-booking-polish — actions row (add person + back to single) */
.bkg-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:4px}
.bkg-actions .bkg-add{margin-top:0}
.bkg-single{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:650;color:var(--brand);background:var(--bk-soft);border:1px solid transparent;padding:9px 13px;border-radius:11px;text-decoration:none;cursor:pointer;font-family:inherit}
.bkg-single:hover{background:var(--bk-tint);border-color:var(--brand)}
.bkg-single .bk-i{width:15px;height:15px}
/* Lot R-booking-polish — week month title above the day strip */
/* Lot R-booking-polish-2 — month title as a centered blue pill, same size as the
   selected-day header (.bk-sc-day), with a bit more vertical breathing room. */
.bk-wkmonth{display:block;width:fit-content;margin:10px auto 16px;font-size:15.5px;font-weight:700;letter-spacing:-.2px;color:var(--brand);background:var(--bk-soft);border-radius:999px;padding:6px 18px}
.bk-wkmonth:empty{display:none}
.bkg-cap{font-size:12px;color:var(--bk-faint);margin-top:9px}
.bkg-tl{margin-top:4px}
.bkg-tlrow{display:flex;align-items:center;justify-content:space-between;gap:13px;padding:10px 0;border-top:1px solid var(--bk-border)}
.bkg-tlwho{display:flex;flex-direction:column;min-width:0}
.bkg-tlwho strong{font-size:14px}
.bkg-tlwho small{font-size:12.5px;color:var(--bk-muted)}
.bkg-tlprice{font-weight:700;font-size:14px;white-space:nowrap}
.bkg-gap{font-size:11px;color:var(--bk-faint);padding:4px 0}
@media(max-width:560px){.bkg-ptop{flex-wrap:wrap}.bkg-names{flex:1 1 100%}.bkg-pright{margin-left:0;text-align:left}.bkg-inherit{text-align:left;max-width:none}}

/* Lot Pause Booking — public closed message */
.bk-paused{text-align:center;padding:38px 26px;background:#fff;border:1px solid var(--bk-border,#e7eaef);border-radius:18px;box-shadow:0 10px 30px -16px rgba(16,24,40,.18)}
.bk-paused-ic{width:52px;height:52px;margin:0 auto 16px;border-radius:14px;display:grid;place-items:center;background:var(--bk-amber-bg,#fdf3e3);color:var(--bk-amber,#b5740c)}
.bk-paused-ic svg{width:26px;height:26px}
.bk-paused-h{font-size:19px;font-weight:700;letter-spacing:-.2px;margin:0 0 8px}
.bk-paused-p{font-size:14.5px;color:var(--text-soft,#667085);line-height:1.6;margin:0;max-width:440px;margin-left:auto;margin-right:auto}
.bk-wknav{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}
.bk-wk-lbl{font-weight:650;font-size:14px}
.bk-wknav button{width:32px;height:32px;border-radius:9px;border:1px solid var(--bk-border);background:#fff;cursor:pointer;display:grid;place-items:center;color:var(--bk-muted)}
.bk-wknav button:hover{border-color:var(--brand);color:var(--brand)}
.bk-week{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}
.bk-week-loading{grid-column:1 / -1;text-align:center;color:var(--bk-muted);font-size:13px;padding:24px}
.bk-day{border:1px solid var(--bk-border);border-radius:12px;padding:9px 6px;background:#fbfcfe;min-height:120px}
.bk-dh{text-align:center;margin-bottom:9px}
.bk-dw{font-size:10px;font-weight:700;text-transform:uppercase;color:var(--bk-faint);letter-spacing:.03em}
.bk-dn{font-size:16px;font-weight:700;margin-top:1px}
.bk-day.closed{background:#f4f5f7}
.bk-day.closed .bk-dn,.bk-day.closed .bk-dw{color:#c4cad4}
.bk-slot{display:block;width:100%;border:none;border-radius:8px;padding:7px 3px;margin-bottom:5px;font-size:12px;font-weight:650;font-family:inherit;cursor:pointer;transition:all .14s var(--bk-ease)}
.bk-slot.clinic{background:var(--bk-clin-bg);color:var(--bk-clin)}
.bk-slot.home{background:var(--bk-dom-bg);color:var(--bk-dom)}
.bk-slot:hover{transform:translateY(-1px);box-shadow:0 1px 3px rgba(16,24,40,.12)}
.bk-slot.sel{background:var(--brand);color:#fff}
.bk-none{font-size:11px;color:#bcc2cc;text-align:center;font-style:italic;margin-top:14px}
.bk-weekprompt{display:flex;gap:8px;align-items:center;justify-content:center;font-size:13px;color:var(--bk-muted);text-align:center;padding:26px 16px;border:1px dashed var(--bk-border);border-radius:12px}
.bk-hint{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--bk-muted);margin-top:12px}
.bk-hint .bk-i{width:14px;height:14px;color:var(--brand)}
.bk-cfields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.bk-cfield label{font-size:12.5px;font-weight:600;display:block;margin-bottom:5px}
.bk-cfield input{width:100%;border:1px solid var(--bk-border);border-radius:10px;padding:10px 12px;font-size:14px;font-family:inherit;background:#fbfcfe}
.bk-cfield input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--bk-glow,rgba(74,111,165,.22));background:#fff}
.bk-cfield.full{grid-column:1 / -1}
.bk-recap{position:sticky;top:78px;background:#fff;border:1px solid var(--bk-border);border-radius:18px;box-shadow:0 6px 18px -6px rgba(16,24,40,.12);overflow:hidden}
/* Lot R-booking-polish-3-fix — "Practical info": card BACK INSIDE the recap column,
   under "Your appointment". 7-day grid laid out 3·3·1 for the narrow column. */
.bk-info{background:#fff;border:1px solid var(--bk-border);border-radius:18px;padding:16px 18px;box-shadow:0 6px 20px rgba(16,40,56,.05);margin-top:16px}
.bk-info-h{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:#1b3445;margin-bottom:14px}
.bk-info-h .bk-i{width:16px;height:16px;color:var(--brand)}
.bk-hr-sec + .bk-hr-sec{margin-top:18px}
.bk-hr-h{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:#2a4456;margin-bottom:6px}
.bk-hr-h .bk-i{width:14px;height:14px;color:var(--brand)}
.bk-hr-addr{font-size:11.5px;color:var(--bk-muted);margin-bottom:10px}
.bk-hr-row{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:4px 0;color:#5a6b7a}
.bk-hr-row b{color:#1b3445;font-weight:600}
/* 7-day grid */
.bk-hr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;text-align:center}
.bk-hr-col{border:1px solid var(--bk-border);border-radius:11px;padding:9px 5px;background:#fcfdff}
.bk-hr-col.off{background:#f6f7fa;color:var(--bk-faint)}
.bk-hr-dn{font-size:11px;font-weight:800;color:var(--bk-muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.02em}
.bk-hr-dot{width:8px;height:8px;border-radius:50%;background:var(--brand);margin:0 auto 7px}
.bk-hr-col.off .bk-hr-dot{background:#cdd5e0}
.bk-hr-hh{font-size:10px;line-height:1.5;color:#1b3445;white-space:nowrap}
.bk-hr-col.off .bk-hr-hh{color:var(--bk-faint)}
@media(max-width:560px){.bk-hr-grid{grid-template-columns:repeat(2,1fr)}}
.bk-hr-note{font-size:11px;color:var(--bk-muted);margin-top:14px;display:flex;gap:6px;align-items:flex-start;line-height:1.4}
.bk-hr-note .bk-i{width:13px;height:13px;flex:none;margin-top:1px;color:var(--bk-muted)}
.bk-rh{padding:15px 18px;background:linear-gradient(135deg,var(--brand),#3a5a8a);color:#fff}
.bk-rt{font-weight:700;font-size:15px}
.bk-rs{font-size:12px;opacity:.85}
.bk-rbody{padding:16px 18px}
.bk-rrow{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid var(--bk-border);font-size:13px}
.bk-rrow .bk-i{width:16px;height:16px;color:var(--brand);margin-top:1px}
.bk-k{color:var(--bk-muted);min-width:50px}
.bk-v{font-weight:600;margin-left:auto;text-align:right}
.bk-v.empty{color:var(--bk-faint);font-weight:400}
/* Lot D2 — decomposed taxes in the recap (Subtotal / tax lines) */
.bk-rsub,.bk-rtax{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:13px;color:var(--bk-muted);padding:7px 0 0}
.bk-rsub .bk-v,.bk-rtax .bk-v{font-weight:600;color:var(--bk-text)}
.bk-rsub{padding-top:10px;margin-top:4px;border-top:1px solid var(--bk-border)}
.bk-total{display:flex;justify-content:space-between;align-items:baseline;margin-top:12px;padding-top:12px;border-top:2px solid var(--bk-border)}
.bk-tl{font-weight:600}
.bk-tv{font-weight:800;font-size:20px}
.bk-cta{margin-top:14px;width:100%;padding:13px;border-radius:12px;border:none;cursor:pointer;background:linear-gradient(135deg,var(--brand),#3a5a8a);color:#fff;font-weight:700;font-size:14.5px;transition:all .15s var(--bk-ease)}
.bk-cta:disabled{background:#cdd4df;cursor:not-allowed}
.bk-cta:not(:disabled):hover{transform:translateY(-1px)}
.bk-trust{font-size:11px;color:var(--bk-faint);text-align:center;margin-top:9px;display:flex;align-items:center;justify-content:center;gap:5px}
.bk-trust .bk-i{width:12px;height:12px}
@media(max-width:860px){.bk-wrap{grid-template-columns:1fr}.bk-recap{position:static;order:3}.bk-week{grid-template-columns:repeat(7,minmax(72px,1fr));overflow-x:auto}.bk-modeseg{grid-template-columns:1fr}.bk-cfields{grid-template-columns:1fr}}

/* settings: practice-mode premium cards */
/* Lot G-mode-ui-A — restyled IN PLACE to mockup 03 (.pmode look). Class names,
   #sm-practice and the .sm-chk check behaviour are preserved (JS hooks intact). */
.sm-modes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:6px 0 4px}
.sm-mode{position:relative;background:#fff;border:1.5px solid #e8eef3;border-radius:14px;padding:14px;cursor:pointer;text-align:left;transition:.13s;font-family:inherit}
.sm-mode:hover{border-color:#bcd0dc}
.sm-mi{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;margin-bottom:10px;background:#eef2f5;color:#54607f}
.sm-mi .ck-ic{width:19px;height:19px}
.sm-mt{font-weight:700;font-size:13px;display:block}
.sm-md{font-size:11px;color:#9aa7b2;margin-top:3px;display:block;line-height:1.4}
.sm-chk{position:absolute;top:12px;right:12px;width:18px;height:18px;border-radius:50%;border:1.5px solid #cdd9e1;display:grid;place-items:center;color:#fff}
.sm-chk .ck-ic{width:11px;height:11px;opacity:0}
.sm-mode.on{border-color:var(--brand);background:#f4f9fc}
.sm-mode.on .sm-mi{background:#eaf2f6;color:var(--brand)}
.sm-mode.on .sm-chk{background:var(--brand);border-color:var(--brand)}
.sm-mode.on .sm-chk .ck-ic{opacity:1}
.sm-clinic{margin-top:16px;border-top:1px solid #e8eef3;padding-top:14px}
@media(max-width:680px){.sm-modes{grid-template-columns:1fr}}

/* settings: reglettes hours editor */
.rg-howto{display:flex;gap:18px;flex-wrap:wrap;background:#f4f7f9;border:1px solid #e8eef3;border-radius:12px;padding:11px 16px;margin:6px 0 14px}
.rg-h{display:flex;align-items:flex-start;gap:10px;flex:1;min-width:200px;font-size:11.5px;color:#6b7c8d}
.rg-hic{width:30px;height:30px;border-radius:9px;background:#eaf2f6;color:var(--brand);display:grid;place-items:center;flex-shrink:0}
.rg-hic .ck-ic{width:16px;height:16px}
.rg-legend{display:flex;gap:16px;font-size:11.5px;color:#6b7c8d;margin-bottom:8px}
.rg-li{display:inline-flex;align-items:center;gap:7px}
.rg-dot{width:11px;height:11px;border-radius:3px}.rg-dot.c{background:#2f6d8f}.rg-dot.h{background:#1c7a52}
.rg-ruler{display:flex;align-items:center;height:26px;gap:10px}
.rg-lblcol{width:104px;flex-shrink:0}
.rg-rtrack{flex:1;position:relative;height:100%}
.rg-rmark{position:absolute;top:50%;transform:translate(-50%,-50%);font-size:10px;color:#9aa7b2;pointer-events:none;white-space:nowrap}
.rg-day{display:flex;align-items:center;gap:10px;padding:14px 0;border-top:1px solid #f1f5f8;min-height:68px}
.rg-day .rg-dn{font-weight:600;font-size:12.5px}
.rg-day .rg-ds{font-size:10.5px;color:#9aa7b2;margin-top:2px}
.rg-track{flex:1;position:relative;height:40px;touch-action:none}
.rg-track-bg{position:absolute;inset:0;border-radius:9px;background:#f4f7f9;border:1px solid #e8eef3}
.rg-day.closed .rg-track-bg{background:#f4f5f7}
.rg-hline{position:absolute;top:0;bottom:0;width:1px;background:var(--border-soft,#e7eaef);opacity:.7;pointer-events:none}
.rg-seg{position:absolute;top:5px;bottom:5px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:grab;user-select:none;touch-action:none;z-index:5;overflow:visible}
.rg-seg.clinic{background:#e4eef5;border:1px solid #9fc2d8}
.rg-seg.home{background:#e6f4ec;border:1px solid #9fd3b6}
.rg-seg:active{cursor:grabbing}
.rg-seg-time{font-size:11.5px;font-weight:700;white-space:nowrap;pointer-events:none}
.rg-seg.clinic .rg-seg-time{color:#1d5a78}.rg-seg.home .rg-seg-time{color:#1c7a52}
/* Lot G-reglette-labels(-2) — Option D external labels. Both modes live in the DOM;
   CSS flips them via .narrow (set by JS with hysteresis) → no per-frame flicker. */
.rg-seg-above,.rg-seg-below{display:none;position:absolute;left:50%;transform:translateX(-50%);font-size:11px;font-weight:600;color:#6b7c8d;white-space:nowrap;pointer-events:none;line-height:1}
.rg-seg-above{bottom:100%;margin-bottom:3px}
.rg-seg-below{top:100%;margin-top:3px}
.rg-seg.narrow .rg-seg-time{display:none}
.rg-seg.narrow .rg-seg-above,.rg-seg.narrow .rg-seg-below{display:block}
.rg-handle{position:absolute;top:50%;transform:translateY(-50%);width:13px;height:30px;border-radius:5px;cursor:ew-resize;z-index:10;opacity:.8}
.rg-handle.l{left:3px}.rg-handle.r{right:3px}
.rg-seg.clinic .rg-handle{background:#5f9ec0}.rg-seg.home .rg-handle{background:#5fb288}
.rg-addcol{width:46px;flex-shrink:0;display:flex;justify-content:flex-end}
.rg-addone{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;cursor:pointer;border:1px dashed #cdd9e1;background:#fff;color:#9aa7b2;font-family:inherit;transition:all .14s}
.rg-addone:hover{background:var(--brand);border-color:var(--brand);color:#fff}
.rg-addone .ck-ic{width:16px;height:16px}
.rg-menu{position:fixed;z-index:9000;background:#fff;border:1px solid var(--bk-border);border-radius:14px;box-shadow:0 18px 40px -14px rgba(16,24,40,.3);padding:7px;display:none;min-width:172px}
.rg-menu.show{display:block}
.rg-mtitle{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--bk-faint);padding:5px 12px 7px}
.rg-mi{display:flex;align-items:center;gap:9px;width:100%;padding:10px 12px;border:none;background:none;border-radius:9px;cursor:pointer;font-size:13.5px;font-weight:600;font-family:inherit;text-align:left}
.rg-mi.c{color:var(--bk-clin)}.rg-mi.c:hover{background:var(--bk-clin-bg)}
.rg-mi.h{color:var(--bk-dom)}.rg-mi.h:hover{background:var(--bk-dom-bg)}
.rg-mi .ck-ic{width:17px;height:17px}
.rg-pop{position:fixed;z-index:9000;width:272px;background:#fff;border:1px solid var(--bk-border);border-radius:16px;box-shadow:0 18px 40px -14px rgba(16,24,40,.3);padding:16px;display:none}
.rg-pop.show{display:block}
.rg-pop h4{font-size:14px;font-weight:700;margin:0 0 13px;display:flex;align-items:center;gap:8px}
.rg-pop h4 .ck-ic{width:16px;height:16px;color:var(--brand)}
.rg-seg2{display:flex;background:#eef1f5;border:1px solid var(--bk-border);border-radius:10px;padding:3px;margin-bottom:13px}
.rg-seg2 button{flex:1;border:none;background:none;padding:8px;border-radius:8px;cursor:pointer;font-size:12.5px;font-weight:650;color:var(--bk-muted);font-family:inherit;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.rg-seg2 button .ck-ic{width:14px;height:14px}
.rg-seg2 button.on.c{background:#fff;color:var(--bk-clin)}
.rg-seg2 button.on.h{background:#fff;color:var(--bk-dom)}
.rg-tlabel{font-size:11.5px;font-weight:600;color:var(--bk-muted);margin-bottom:6px}
.rg-times{display:flex;align-items:center;gap:9px;margin-bottom:15px}
.rg-times input{flex:1;border:1px solid var(--bk-border);border-radius:9px;padding:9px 10px;font-size:15px;font-family:inherit;background:#fbfcfe}
.rg-times input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--bk-glow,rgba(74,111,165,.22))}
.rg-times span{color:var(--bk-faint)}
.rg-pop-act{display:flex;align-items:center;justify-content:space-between}
.rg-del{background:none;border:none;color:#c0392b;font-weight:650;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:inherit}
.rg-del .ck-ic{width:15px;height:15px}
.rg-ok{padding:8px 20px;border-radius:9px;border:none;background:var(--brand);color:#fff;font-weight:650;font-size:13px;cursor:pointer;font-family:inherit}
.rg-tooltip{position:fixed;background:#101828;color:#fff;font-size:12px;font-weight:600;padding:5px 10px;border-radius:7px;pointer-events:none;z-index:9998;display:none;white-space:nowrap}
@media(max-width:680px){.rg-day{flex-wrap:wrap}.rg-lblcol{width:100%}.rg-track{flex:1 1 100%;order:2}.rg-addcol{width:100%;order:3;justify-content:flex-start;margin-top:8px}.rg-ruler{display:none}}

/* =====================================================================
   Lot Créneaux — booking "Day + periods" presentation + admin segmented
   ===================================================================== */
.bk-wknav .bk-navbtn{flex-shrink:0;width:36px;height:36px;border-radius:50%;border:1px solid var(--bk-border);background:#fff;color:var(--bk-muted);cursor:pointer;display:grid;place-items:center}
.bk-wknav .bk-navbtn:hover{background:#eef1f5;color:var(--brand);border-color:var(--brand)}
.bk-daystrip{display:flex;gap:6px;flex:1;overflow-x:auto;scrollbar-width:none}
.bk-daystrip::-webkit-scrollbar{display:none}
.bk-daypill{flex:1;min-width:52px;min-height:62px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:visible;padding:9px 5px;border-radius:10px;border:1.5px solid var(--bk-border);background:#fff;cursor:pointer;font-family:inherit;transition:all .15s var(--bk-ease);user-select:none}
.bk-dp-dow{font-size:10.5px;font-weight:700;color:var(--bk-muted);letter-spacing:.4px;text-transform:uppercase;line-height:1;margin-bottom:4px}
.bk-dp-num{font-size:17px;font-weight:700;color:var(--bk-text);line-height:1.1;display:block}
.bk-dp-dot{width:5px;height:5px;border-radius:50%;background:var(--bk-dom);margin-top:5px;opacity:0;transition:opacity .2s}
.bk-daypill:hover:not(.closed):not(.past):not(.selected){border-color:var(--brand);background:#f5f7fb}
.bk-daypill.selected{border-color:var(--brand);background:var(--brand)}
.bk-daypill.selected .bk-dp-dow,.bk-daypill.selected .bk-dp-num{color:#fff}
.bk-daypill.selected .bk-dp-dot{opacity:1;background:rgba(255,255,255,.7)}
.bk-daypill.closed{cursor:not-allowed;opacity:.45;background:#eef1f5}
.bk-daypill.closed .bk-dp-num{color:var(--bk-muted)}
.bk-daypill.past{cursor:not-allowed;opacity:.4;background:#eef1f5}
.bk-daypill.past .bk-dp-num{color:var(--bk-muted);text-decoration:line-through}
.bk-daypill.empty{cursor:not-allowed;opacity:.5}
.bk-slotscard{background:#fff;border:1px solid var(--bk-border);border-radius:14px;overflow:hidden;margin-top:14px;transition:opacity .2s var(--bk-ease)}
.bk-slotscard.is-loading{opacity:.5;pointer-events:none}
.bk-slots-loading{padding:28px;text-align:center;color:var(--bk-muted);font-size:13px}
.bk-sc-head{padding:15px 18px 12px;border-bottom:1px solid var(--bk-border);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.bk-sc-day{font-size:15.5px;font-weight:700;letter-spacing:-.2px}
.bk-sc-count{font-size:12px;font-weight:600;color:var(--bk-dom);background:var(--bk-dom-bg);border:1px solid var(--bk-dom-bd);border-radius:20px;padding:2px 10px}
.bk-sc-soin{margin-left:auto;font-size:12px;color:var(--bk-muted);background:#eef1f5;border:1px solid var(--bk-border);border-radius:20px;padding:2px 10px;display:inline-flex;align-items:center;gap:4px}
.bk-sc-soin .bk-i{width:12px;height:12px}
.bk-period{padding:14px 18px;border-bottom:1px solid var(--bk-border)}
.bk-period:last-child{border-bottom:none}
.bk-period-h{display:flex;align-items:center;gap:8px;margin-bottom:11px}
.bk-period-ic{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:#eef1f5;color:var(--bk-muted)}
.bk-period-ic .bk-i{width:15px;height:15px}
.bk-period-nm{font-size:13px;font-weight:700;letter-spacing:.1px}
.bk-period-ct{font-size:12px;color:var(--bk-muted)}
.bk-chips{display:flex;flex-wrap:wrap;gap:8px}
.bk-chip{min-width:72px;padding:9px 12px;border-radius:10px;background:var(--bk-dom-bg);border:1.5px solid var(--bk-dom-bd);color:var(--bk-dom);font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;text-align:center;letter-spacing:.2px;transition:all .15s var(--bk-ease)}
.bk-chip:hover{background:#c5edd8;border-color:var(--bk-dom);transform:translateY(-1px)}
.bk-chip.selected{background:var(--bk-dom);border-color:#0a5a45;color:#fff;transform:translateY(-1px)}
/* Lot Créneaux polish — slot colours follow the chosen mode. Default = green
   (home). Clinic = blue, applied via the mode class on the slots container. */
.bk-slotscard.bk-mode-clinic .bk-sc-count{color:var(--bk-clin);background:var(--bk-clin-bg);border-color:var(--bk-clin-bd)}
.bk-slotscard.bk-mode-clinic .bk-chip{background:var(--bk-clin-bg);border-color:var(--bk-clin-bd);color:var(--bk-clin)}
.bk-slotscard.bk-mode-clinic .bk-chip:hover{background:#d2e5f7;border-color:var(--bk-clin)}
.bk-slotscard.bk-mode-clinic .bk-chip.selected{background:var(--bk-clin);border-color:#0e4a82;color:#fff}
.bk-empty{padding:36px 20px;text-align:center;color:var(--bk-muted)}
.bk-empty-ic{width:46px;height:46px;background:#eef1f5;border-radius:50%;display:grid;place-items:center;margin:0 auto 12px;color:var(--bk-faint)}
.bk-empty-ic .bk-i{width:22px;height:22px}
.bk-empty-t{font-size:14.5px;font-weight:600;color:var(--bk-muted);margin-bottom:3px}
.bk-empty-s{font-size:12.5px;color:#9ba8bb}
/* admin: segmented interval control */
.sm-segmented{display:inline-flex;background:var(--border-soft,#e7eaef);border-radius:10px;padding:3px;gap:2px}
.sm-seg-btn{background:none;border:none;padding:7px 18px;border-radius:8px;font-size:14px;font-weight:600;color:var(--text-soft,#667085);cursor:pointer;font-family:inherit;transition:all .18s}
.sm-seg-btn.on{background:#fff;color:var(--brand);box-shadow:0 1px 6px rgba(16,24,40,.10)}
.sm-seg-btn:hover:not(.on){color:var(--text,#101828)}

/* =====================================================================
   Lot B — onboarding assistant (.ob-*) + dashboard setup guide (.setup-*)
   ===================================================================== */
.ob-body{margin:0;font-family:'Inter',ui-sans-serif,system-ui,"Segoe UI",sans-serif;color:#1a2230;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(1100px 560px at 10% -8%,rgba(74,111,165,.10),transparent 60%),#eef1f6}
.ob-app{width:880px;max-width:100%;background:#fff;border-radius:22px;box-shadow:0 30px 70px rgba(25,45,85,.14);display:flex;overflow:hidden;min-height:540px}
.ob-left{flex:1;padding:32px 36px;display:flex;flex-direction:column}
.ob-brand{display:flex;align-items:center;gap:10px;margin-bottom:22px;font-weight:600}
.ob-logo{width:28px;height:28px;border-radius:8px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:800;font-size:14px}
.ob-dots{margin-left:auto;display:flex;gap:6px}
.ob-dot{width:7px;height:7px;border-radius:50%;background:#cfd6e3;transition:.3s}
.ob-dot.on{background:var(--brand);width:22px;border-radius:4px}
.ob-body-steps{flex:1}
.ob-step{display:none}
.ob-step.on{display:block;animation:obup .42s cubic-bezier(.22,1,.36,1)}
@keyframes obup{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.ob-step h1{font-size:23px;font-weight:600;margin:0 0 8px;letter-spacing:-.2px;text-transform:none}
.ob-lead{color:#5b6472;font-size:15.5px;line-height:1.6;margin:0 0 16px}
.ob-qn{font-size:13px;color:#97a1b2;margin-bottom:8px}
.ob-left input[type=text],.ob-left input[type=number]{padding:12px 13px;border:1.5px solid #e6e9ef;border-radius:12px;font-size:15px;font-family:inherit}
.ob-left input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(74,111,165,.10)}
.ob-step[data-s="1"] input{width:100%}
.ob-modes{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}
.ob-mode{cursor:pointer;border:2px solid #e6e9ef;border-radius:15px;padding:16px 10px;text-align:center;background:#fff;font-family:inherit;transition:transform .15s,border-color .15s,background .15s}
.ob-mode:hover{border-color:#6e8fbe;transform:translateY(-3px)}
.ob-mode.sel{border-color:var(--brand);background:rgba(74,111,165,.10)}
.ob-mi{width:42px;height:42px;border-radius:12px;background:rgba(74,111,165,.10);color:var(--brand);display:grid;place-items:center;margin:0 auto 9px}
.ob-mode b{font-weight:600;font-size:14px}
.ob-svcs{display:flex;flex-direction:column;gap:9px}
.ob-svc{display:flex;align-items:center;gap:8px}
.ob-svc-name{flex:1;min-width:0}
.ob-svc-dur{width:70px}.ob-svc-price{width:84px}
.ob-unit{color:#9aa3b2;font-size:13px}
.ob-ok{width:50px;height:50px;border-radius:15px;background:#e7f6ec;color:#16834a;display:grid;place-items:center;margin-bottom:14px}
.ob-nav{display:flex;justify-content:space-between;align-items:center;margin-top:22px;padding-top:18px;border-top:1px solid #e6e9ef}
.ob-btn{border:0;border-radius:12px;padding:12px 22px;font-size:15px;font-weight:500;cursor:pointer;background:var(--brand);color:#fff;display:inline-flex;align-items:center;gap:8px;font-family:inherit;transition:.15s}
.ob-btn:hover{filter:brightness(.94)}
.ob-btn.ghost{background:#fff;color:#5b6472;border:1.5px solid #e6e9ef}
.ob-btn svg{width:18px;height:18px}
.ob-right{width:300px;background:linear-gradient(160deg,#eef2f8,#e3e9f3);display:flex;align-items:center;justify-content:center;padding:24px}
.ob-phone{width:212px;background:#0e1726;border-radius:34px;padding:9px;box-shadow:0 20px 50px rgba(20,35,70,.28)}
.ob-scr{background:#fff;border-radius:26px;overflow:hidden;min-height:380px;display:flex;flex-direction:column}
.ob-notch{height:22px;display:grid;place-items:center}.ob-notch span{width:52px;height:5px;border-radius:3px;background:#e4e8ef}
.ob-pad{padding:14px 15px 16px;flex:1;display:flex;flex-direction:column}
.ob-pn{text-align:center;font-weight:600;color:var(--brand);font-size:15px;min-height:19px}
.ob-ps{text-align:center;font-size:10.5px;color:#9aa3b2;margin-bottom:10px}
.ob-pbadge{text-align:center;min-height:24px;margin-bottom:8px}
.ob-pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:4px 11px;border-radius:20px;background:rgba(74,111,165,.10);color:var(--brand)}
.ob-pv-svcs{border-top:1px solid #eef1f6;padding-top:11px;flex:1}
.ob-pv-row{display:flex;justify-content:space-between;font-size:11.5px;padding:9px 11px;border:1px solid #eef1f6;border-radius:10px;margin-bottom:7px}
.ob-pbtn{margin-top:auto;border:0;border-radius:11px;padding:11px;font-size:12px;background:var(--brand);color:#fff;font-family:inherit}
@media(max-width:720px){.ob-app{flex-direction:column}.ob-right{width:100%;order:-1;padding:18px}.ob-modes{grid-template-columns:1fr}}
/* dashboard "finish your setup" guide */
.setup-guide{background:linear-gradient(180deg,rgba(74,111,165,.06),#fff);border:1px solid var(--border-soft,#e7eaef);border-radius:var(--radius-lg,14px);padding:18px 20px;margin-bottom:18px;box-shadow:var(--shadow-card,0 1px 3px rgba(16,24,40,.07))}
.setup-guide-h strong{font-size:15.5px}
.setup-guide-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px}
.setup-link{flex:1;min-width:180px;display:block;border:1px solid var(--border-soft,#e7eaef);border-radius:12px;padding:12px 14px;background:#fff;text-decoration:none;color:inherit;transition:all .15s}
.setup-link:hover{border-color:var(--brand);box-shadow:0 4px 14px -6px rgba(74,111,165,.3);transform:translateY(-1px)}
.setup-link-t{display:block;font-weight:650;font-size:14px;color:var(--brand)}
.setup-link-d{display:block;font-size:12.5px;color:var(--text-soft,#667085);margin-top:2px}

/* Lot Pause Booking — admin dashboard banner */
.pause-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  background:linear-gradient(180deg,rgba(217,119,6,.10),#fff);border:1px solid #f5d9a8;border-radius:var(--radius-lg,14px);
  padding:14px 18px;margin-bottom:18px;box-shadow:var(--shadow-card,0 1px 3px rgba(16,24,40,.07))}
.pause-banner-t{font-weight:650;font-size:14.5px;color:#9a5b06}

/* =====================================================================
   Lot D-admin-1 — Cockpit "Ma journée" (.cck-*) + .badge
   ===================================================================== */
:root{ --cck-home:#7b5cd6; --cck-home-l:#efeafb; --cck-clinic:#2f8fb3; --cck-clinic-l:#e4f3f8;
  --cck-ok:#1f9d6b; --cck-danger:#c0473f; --cck-line:#e6eaf0; --cck-muted:#6b7785; }
/* shared badge (mode markers) */
.badge{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;font-weight:700;padding:3px 9px;border-radius:20px;line-height:1.4}
.badge svg{width:12px;height:12px}
.badge.home{background:var(--cck-home-l);color:var(--cck-home)}
.badge.clinic{background:var(--cck-clinic-l);color:var(--cck-clinic)}
/* to-confirm banner */
.cck-banner{display:flex;align-items:center;gap:10px;background:#fbf3e2;border:1px solid #f0dca6;border-radius:14px;padding:12px 16px;margin-bottom:16px;text-decoration:none;color:#8a5a00;font-weight:600;font-size:.92rem}
.cck-banner svg{width:18px;height:18px;color:#c98a14}
.cck-banner .cck-banner-go{margin-left:auto}
/* Lot Fin d'essai — soft "trial ending soon" reminder (blue/info, additive) */
.cck-banner-soon{background:#eaf3fb;border-color:#c5dcf2;color:#1f5b94}
.cck-banner-soon svg{color:#2f7fc4}
/* day header + nav */
.cck-dayhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.cck-daytitle h2{font-size:1.4rem;font-weight:800;letter-spacing:-.02em;margin:0}
.cck-daytitle p{font-size:.85rem;color:var(--cck-muted);text-transform:capitalize}
/* KPIs */
.cck-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}
.cck-kpi{background:#fff;border:1px solid var(--cck-line);border-radius:14px;padding:14px 16px;box-shadow:0 1px 2px rgba(20,30,50,.05),0 8px 24px rgba(20,30,50,.05)}
.cck-kpi-lab{font-size:.72rem;color:var(--cck-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600;display:flex;align-items:center;gap:5px}
.cck-kpi-lab svg{width:14px;height:14px}
.cck-kpi-val{font-size:1.7rem;font-weight:800;margin-top:4px;letter-spacing:-.02em}
.cck-kpi-val small{font-size:.9rem;font-weight:600;color:var(--cck-muted)}
.cck-kpi.accent{background:linear-gradient(135deg,var(--brand),#3a5985);border:none;color:#fff}
.cck-kpi.accent .cck-kpi-lab{color:#cdddf2}
.cck-kpi.accent .cck-kpi-val small{color:#cdddf2}
@media(max-width:600px){.cck-kpis{grid-template-columns:1fr}}
/* clinic bar */
.cck-clinicbar{display:flex;align-items:center;gap:10px;background:var(--cck-clinic-l);border:1px solid #c7e4ee;border-radius:14px;padding:12px 16px;margin-bottom:18px;flex-wrap:wrap}
.cck-clinicbar svg{color:var(--cck-clinic);width:18px;height:18px;flex-shrink:0}
.cck-cb-t{font-weight:600;font-size:.9rem}
.cck-cb-a{font-size:.82rem;color:var(--cck-muted)}
.cck-clinicbar a{margin-left:auto;display:inline-flex;align-items:center;gap:5px;border:1px solid #c7e4ee;background:#fff;border-radius:9px;padding:7px 12px;font-size:.8rem;font-weight:600;color:var(--cck-clinic);text-decoration:none}
.cck-clinicbar a svg{width:14px;height:14px}
/* itinerary */
.cck-itin{background:#fff;border:1px solid var(--cck-line);border-radius:14px;box-shadow:0 1px 2px rgba(20,30,50,.05);margin-bottom:18px;overflow:hidden}
.cck-itin-h{display:flex;align-items:center;gap:9px;padding:13px 16px;border-bottom:1px solid var(--cck-line);font-weight:700;font-size:.92rem}
.cck-itin-h svg{color:var(--cck-home);width:18px;height:18px}
.cck-itin-km{margin-left:auto;font-size:.78rem;font-weight:600;color:var(--cck-muted)}
.cck-stops{padding:6px 16px 14px}
.cck-stop{display:flex;align-items:flex-start;gap:12px;padding:9px 0;position:relative}
.cck-stop:not(:last-child)::after{content:"";position:absolute;left:13px;top:30px;bottom:-9px;width:2px;background:var(--cck-line)}
.cck-stop-dot{width:26px;height:26px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-size:.74rem;font-weight:700;color:#fff;z-index:1;background:var(--cck-home)}
.cck-stop-body{flex:1;min-width:0}
.cck-stop-l1{font-size:.86rem;font-weight:600}
.cck-stop-l1 .cck-stop-time{color:var(--cck-muted);font-weight:600;margin-right:6px}
.cck-stop-grp{color:var(--brand);font-weight:700;font-size:.8rem}
.cck-stop-l2{font-size:.8rem;color:var(--cck-muted)}
.cck-stop-maps{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;border:1px solid var(--cck-line);background:#fff;border-radius:9px;padding:6px 11px;font-size:.78rem;font-weight:600;color:var(--brand);text-decoration:none}
.cck-stop-maps svg{width:14px;height:14px}
/* section label + gaps */
.cck-sectionlab{font-size:.78rem;font-weight:700;color:var(--cck-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 4px 10px}
.cck-gap{display:flex;align-items:center;gap:8px;color:var(--cck-muted);font-size:.78rem;padding:5px 0 5px 78px}
.cck-gap svg{width:14px;height:14px}
.cck-gap.travel{color:var(--cck-home)}
/* appointment card */
.cck-appt{display:flex;gap:14px;background:#fff;border:1px solid var(--cck-line);border-radius:14px;box-shadow:0 1px 2px rgba(20,30,50,.05);padding:14px;margin-bottom:10px}
.cck-when{width:64px;flex-shrink:0;text-align:right;padding-right:14px;border-right:2px solid var(--cck-line)}
.cck-when .cck-h{font-size:1.05rem;font-weight:800}
.cck-when .cck-dur{font-size:.72rem;color:var(--cck-muted);margin-top:2px}
.cck-main{flex:1;min-width:0}
.cck-row1{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:3px}
.cck-cli{font-size:1rem;font-weight:700}
.cck-svc{font-size:.86rem;color:var(--cck-muted)}
.cck-addr{display:flex;align-items:center;gap:6px;font-size:.82rem;color:var(--cck-muted);margin-top:5px}
.cck-addr svg{width:14px;height:14px;flex-shrink:0}
.cck-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}
.cck-act{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--cck-line);background:#fff;border-radius:9px;padding:7px 11px;font-size:.8rem;font-weight:600;color:var(--text,#1f2733);text-decoration:none;cursor:pointer;font-family:inherit}
.cck-act svg{width:14px;height:14px}
.cck-act:hover{background:var(--bg,#f4f6fa)}
.cck-act.call{color:var(--cck-ok);border-color:#bfe6d4}
.cck-act.done{color:var(--cck-ok)}
.cck-act.absent{color:var(--cck-danger)}
.cck-act.primary{background:var(--brand);color:#fff;border-color:var(--brand)}
/* family group box */
.cck-group{border:1.5px solid #eef3fa;border-radius:14px;padding:8px 8px 2px;margin-bottom:10px;background:#fbfcfe}
.cck-group-h{display:flex;align-items:center;gap:7px;font-size:.8rem;font-weight:700;color:var(--brand);padding:5px 8px 9px}
.cck-group-h svg{width:15px;height:15px}
.cck-group .cck-appt{box-shadow:none;margin-bottom:8px}
/* empty state */
.cck-empty{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--cck-muted);background:#fff;border:1px dashed var(--cck-line);border-radius:14px;padding:36px 20px;text-align:center}
.cck-empty svg{width:26px;height:26px}
@media(max-width:560px){.cck-gap{padding-left:8px}.cck-when{width:54px}}

/* =====================================================================
   Lot D-admin-2 — Calendar day/week views (.cal-day-* / .cal-week-*)
   Reuses .badge + the mode colours from D-admin-1. Month grid untouched.
   ===================================================================== */
.cal-viewseg{display:inline-flex;background:#fff;border:1px solid var(--cck-line);border-radius:11px;padding:3px;gap:2px}
.cal-vbtn{border:none;background:none;font-size:.85rem;font-weight:600;color:var(--cck-muted);padding:8px 16px;border-radius:8px;text-decoration:none}
.cal-vbtn.on{background:var(--brand);color:#fff}
.cal-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cal-navbtn{width:36px;height:36px;border:1px solid var(--cck-line);background:#fff;border-radius:9px;display:grid;place-items:center;color:var(--text,#1f2733);text-decoration:none}
.cal-navbtn:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.cal-navbtn svg{width:17px;height:17px}
.cal-rangelab{font-weight:700;font-size:.95rem;min-width:150px;text-align:center;text-transform:capitalize}
/* DAY — hour rail */
.cal-day{background:#fff;border:1px solid var(--cck-line);border-radius:14px;box-shadow:0 1px 2px rgba(20,30,50,.05);padding:8px 0;overflow:hidden}
.cal-day-closed{display:flex;align-items:center;gap:7px;color:var(--cck-muted);font-weight:600;font-size:.85rem;padding:10px 16px}
.cal-day-closed svg{width:16px;height:16px}
.cal-hour{display:flex;min-height:56px;border-top:1px solid var(--cck-line)}
.cal-hour:first-child{border-top:none}
.cal-rail{width:62px;flex-shrink:0;text-align:right;padding:8px 12px 0 0;font-size:.76rem;color:var(--cck-muted);font-weight:600}
.cal-slot{flex:1;padding:7px 14px 7px 0;display:flex;flex-direction:column;gap:6px;justify-content:center;min-width:0}
.cal-hour.off{background:repeating-linear-gradient(45deg,#fafbfc,#fafbfc 9px,#f3f5f8 9px,#f3f5f8 18px)}
.cal-dev{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;border-left:4px solid var(--cck-home);background:var(--cck-home-l);text-decoration:none;color:var(--text,#1f2733);min-width:0}
.cal-dev.clinic{border-left-color:var(--cck-clinic);background:var(--cck-clinic-l)}
.cal-dev-t{font-size:.82rem;font-weight:800;width:46px;flex-shrink:0}
.cal-dev-b{min-width:0;flex:1;display:flex;flex-direction:column}
.cal-dev-n{font-weight:700;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-dev-s{font-size:.78rem;color:var(--cck-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-dev .badge{flex-shrink:0;margin-left:auto}
.cal-grp{color:var(--brand);font-weight:700}
/* WEEK — compact 7-day agenda */
.cal-week{display:flex;flex-direction:column;gap:10px}
.cal-wday{background:#fff;border:1px solid var(--cck-line);border-radius:14px;box-shadow:0 1px 2px rgba(20,30,50,.05);overflow:hidden;display:flex}
.cal-wday.today{border-color:var(--brand);box-shadow:0 0 0 2px #eef3fa,0 1px 2px rgba(20,30,50,.05)}
.cal-wday.closed{background:#fafbfc}
.cal-wdate{width:88px;flex-shrink:0;padding:14px;text-align:center;border-right:1px solid var(--cck-line);background:#fcfdfe;text-decoration:none;color:var(--text,#1f2733);display:block}
.cal-wday.today .cal-wdate{background:var(--brand);color:#fff}
.cal-wdow{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--cck-muted)}
.cal-wday.today .cal-wdow{color:#dce7f5}
.cal-wnum{display:block;font-size:1.5rem;font-weight:800;line-height:1.1}
.cal-wcnt{display:block;font-size:.7rem;color:var(--cck-muted);margin-top:2px}
.cal-wday.today .cal-wcnt{color:#dce7f5}
.cal-wevents{flex:1;padding:10px 12px;display:flex;flex-direction:column;gap:6px;min-width:0;justify-content:center}
.cal-wev{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:9px;background:#f4f6fa;text-decoration:none;color:var(--text,#1f2733)}
.cal-wev:hover{background:#eef3fa}
.cal-wtime{font-size:.82rem;font-weight:700;width:44px;flex-shrink:0}
.cal-wdot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.cal-wev.h .cal-wdot{background:var(--cck-home)} .cal-wev.c .cal-wdot{background:var(--cck-clinic)}
.cal-wname{font-size:.85rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.cal-wmode{font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:12px;margin-left:auto;flex-shrink:0}
.cal-wmode.h{background:var(--cck-home-l);color:var(--cck-home)} .cal-wmode.c{background:var(--cck-clinic-l);color:var(--cck-clinic)}
.cal-wempty{font-size:.82rem;color:var(--cck-muted);padding:4px 10px}
.cal-wclosed{font-size:.8rem;color:var(--cck-muted);font-weight:600;padding:6px 10px;display:flex;align-items:center;gap:6px}
.cal-wclosed svg{width:14px;height:14px}
@media(max-width:560px){.cal-wdate{width:70px;padding:10px}.cal-wnum{font-size:1.25rem}.cal-rangelab{min-width:110px}}

/* =====================================================================
   Micro-lot — premium signup (.su2-*) + onboarding service editor add-ons
   ===================================================================== */
.su2-body{margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;color:#101828;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(1200px 600px at 8% -10%,rgba(74,111,165,.10),transparent 55%),#eef1f5}
.su2-app{width:900px;max-width:100%;background:#fff;border-radius:24px;box-shadow:0 30px 70px -20px rgba(25,45,85,.30);display:flex;overflow:hidden;min-height:560px}
.su2-left{width:42%;padding:36px 34px;color:#fff;position:relative;background:linear-gradient(160deg,var(--brand),#3a5a8a);display:flex;flex-direction:column}
.su2-brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px}
.su2-pill{width:32px;height:32px;border-radius:10px;background:rgba(255,255,255,.18);display:grid;place-items:center;font-weight:800}
.su2-lead-h{font-size:25px;font-weight:700;letter-spacing:-.3px;line-height:1.25;margin-top:34px}
.su2-lead-p{font-size:14px;color:rgba(255,255,255,.82);margin-top:10px;line-height:1.6}
.su2-vals{margin-top:24px;display:flex;flex-direction:column;gap:14px}
.su2-val{display:flex;align-items:flex-start;gap:11px;font-size:13.5px;color:rgba(255,255,255,.92)}
.su2-vi{width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.16);display:grid;place-items:center;flex-shrink:0}
.su2-vi svg{width:17px;height:17px}
.su2-teaser{margin-top:auto;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);border-radius:14px;padding:13px;display:flex;align-items:center;gap:11px}
.su2-ph{width:38px;height:54px;border-radius:8px;background:rgba(255,255,255,.9);flex-shrink:0;display:flex;flex-direction:column;gap:3px;padding:6px 5px}
.su2-ph span{height:5px;border-radius:3px;background:rgba(74,111,165,.25)}
.su2-ph span:nth-child(1){width:70%}.su2-ph span:nth-child(3){width:85%}
.su2-tt{font-size:12px;color:rgba(255,255,255,.92);line-height:1.4}
.su2-right{flex:1;padding:30px 36px;display:flex;flex-direction:column;justify-content:center}
.su2-langbar{display:flex;justify-content:center;gap:8px;font-size:13px;font-weight:600;margin-bottom:14px;color:#9aa3b2}
.su2-langbar a{color:#9aa3b2;text-decoration:none}.su2-langbar a.on{color:var(--brand)}
.su2-h1{font-size:23px;font-weight:700;letter-spacing:-.3px;text-transform:none;margin:0}
.su2-sub{color:#667085;font-size:14px;margin:6px 0 18px}
.su2-honey{position:absolute;left:-9999px;height:0;width:0;opacity:0}
.su2-f{margin-bottom:14px}
.su2-f label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px}
.su2-req{color:var(--brand)}
.su2-in{position:relative;display:flex;align-items:center}
.su2-in input{width:100%;border:1.5px solid #e7eaef;border-radius:12px;padding:12px 14px;font-size:15px;font-family:inherit;background:#fbfcfe;transition:.15s}
.su2-in input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(74,111,165,.10);background:#fff}
.su2-prefix input{padding-left:108px}
.su2-px{position:absolute;left:14px;font-size:14px;color:#9aa3b2;pointer-events:none}
.su2-eye{position:absolute;right:10px;width:32px;height:32px;border:none;background:none;cursor:pointer;color:#9aa3b2;display:grid;place-items:center;border-radius:8px}
.su2-eye svg{width:18px;height:18px}
.su2-eye:hover{color:var(--brand);background:rgba(74,111,165,.10)}
.su2-hint{font-size:12px;color:#9aa3b2;margin-top:5px}
.su2-match{font-size:12px;margin-top:5px;display:none;align-items:center;gap:5px}
.su2-match.ok{display:flex;color:#0f6e56}.su2-match.no{display:flex;color:#b4790b}
.su2-match svg{width:13px;height:13px}
.su2-right select{width:100%;border:1.5px solid #e7eaef;border-radius:12px;padding:12px 14px;font-size:15px;font-family:inherit;background:#fbfcfe}
.su2-right select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(74,111,165,.10)}
.su2-cta{margin-top:8px;width:100%;padding:14px;border-radius:13px;border:none;cursor:pointer;background:linear-gradient(135deg,var(--brand),#3a5a8a);color:#fff;font-weight:700;font-size:15px;box-shadow:0 12px 24px -10px rgba(74,111,165,.22);display:flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;transition:.15s}
.su2-cta:hover{transform:translateY(-1px)}.su2-cta svg{width:18px;height:18px}
.su2-legal{font-size:12px;color:#9aa3b2;text-align:center;margin-top:14px;line-height:1.5}
.su2-legal a{color:var(--brand);text-decoration:none}
.su2-back{display:block;text-align:center;font-size:13px;color:#667085;text-decoration:none;margin-top:12px}
.su2-success{display:flex;flex-direction:column;align-items:center;text-align:center;padding:10px}
.su2-ok{width:64px;height:64px;border-radius:18px;background:#e4f5ef;color:#0f6e56;display:grid;place-items:center;margin-bottom:18px}
.su2-ok svg{width:32px;height:32px}
.su2-tip{font-size:12.5px;color:#9aa3b2;margin-top:10px}
@media(max-width:720px){.su2-app{flex-direction:column}.su2-left{width:100%;padding:26px}.su2-teaser{display:none}.su2-right{padding:26px}}
/* onboarding service editor */
.ob-svc-head{display:grid;grid-template-columns:1fr 88px 92px 32px;gap:10px;font-size:12px;font-weight:600;color:#9aa3b2;padding:0 2px 8px}
.ob-svc-row{display:grid;grid-template-columns:1fr 88px 92px 32px;gap:10px;align-items:center;margin-bottom:9px}
.ob-svc-row input{padding:11px 12px;border:1.5px solid #e6e9ef;border-radius:11px;font-size:14px;font-family:inherit;background:#fbfcfe;width:100%}
.ob-svc-row input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(74,111,165,.10);background:#fff}
.ob-suf{position:relative;display:flex;align-items:center}
.ob-suf input{padding-right:30px}
.ob-u{position:absolute;right:11px;font-size:12.5px;color:#9aa3b2;pointer-events:none}
.ob-del{width:32px;height:32px;border:1px solid #e6e9ef;background:#fff;border-radius:9px;color:#9aa3b2;cursor:pointer;font-size:17px;line-height:1}
.ob-del:hover{border-color:#e8a3a3;color:#c0392b;background:#fdecec}
.ob-addsvc{margin-top:4px;display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--brand);background:none;border:1px dashed rgba(74,111,165,.25);padding:9px 13px;border-radius:10px;cursor:pointer;font-family:inherit}
.ob-addsvc:hover:not(:disabled){background:rgba(74,111,165,.08);border-color:var(--brand)}
.ob-addsvc:disabled{opacity:.45;cursor:not-allowed}
.ob-addsvc svg{width:16px;height:16px}
.ob-cap{font-size:12px;color:#9aa3b2;margin-top:8px}
.ob-next{margin-top:16px;background:rgba(74,111,165,.08);border:1px solid #bcd7f2;border-radius:13px;padding:13px 15px;display:flex;gap:11px;align-items:flex-start}
.ob-next-i{color:var(--brand);flex-shrink:0;margin-top:1px}.ob-next-i svg{width:20px;height:20px}
.ob-next-t{font-size:13.5px;line-height:1.55;color:#33415c}
.ob-pv-row{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:10.5px;padding:8px 10px;border:1px solid #eef1f6;border-radius:9px;margin-bottom:6px}
.ob-pv-l{color:#1a2230;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ob-pv-r{color:var(--brand);font-weight:700;white-space:nowrap}
.ob-pv-min{color:#9aa3b2;font-weight:500}
.ob-pv-empty{font-size:10.5px;color:#9aa3b2;text-align:center;padding:18px 4px}

/* =====================================================================
   Lot C-portail-2a — Premium client portal (.pt-*). Accent = var(--brand)
   (tenant branding). Additive only — no existing class touched.
   ===================================================================== */
:root{ --pt-line:#dfe6ef; --pt-soft:#98a2b3; --pt-muted:#667085; --pt-ink:#101828;
  --pt-surface:#fff; --pt-surface2:#f1f6f8; --pt-bg:#eef4f7; --pt-ok:#08715c; --pt-ok-soft:#e8f7ef;
  --pt-blue-soft:#e8f3fb; --pt-danger:#b24536; --pt-shadow:0 18px 50px rgba(16,24,40,.08); --pt-shadow-soft:0 8px 24px rgba(16,24,40,.05); }
.pt-body{ background:radial-gradient(circle at 88% 0%,rgba(74,143,123,.08),transparent 32rem),linear-gradient(180deg,#f7fbfd,var(--pt-bg)); min-height:100vh; color:var(--pt-ink); }
.pt-shell{ width:min(1040px,100%); margin:0 auto; padding:24px 24px 60px; }
/* top bar */
.pt-bar{ display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:20px; flex-wrap:wrap; }
.pt-brand{ display:flex; gap:11px; align-items:center; }
.pt-mark{ width:38px; height:38px; border-radius:11px; background:var(--brand); color:#fff; display:grid; place-items:center; flex-shrink:0; }
.pt-mark svg{ width:20px; height:20px; }
.pt-bn{ font-weight:700; }
.pt-bm{ font-size:.78rem; color:var(--pt-muted); }
.pt-barright{ display:flex; align-items:center; gap:12px; }
.pt-nav{ display:flex; gap:4px; background:var(--pt-surface); border:1px solid var(--pt-line); border-radius:30px; padding:4px; box-shadow:var(--pt-shadow-soft); }
.pt-nav a{ font-size:.84rem; font-weight:600; color:var(--pt-muted); text-decoration:none; padding:8px 16px; border-radius:24px; }
.pt-nav a.on{ background:var(--brand); color:#fff; }
.pt-logout{ font-size:.82rem; font-weight:600; color:var(--pt-muted); text-decoration:none; }
.pt-logout:hover{ color:var(--brand); }
/* headings */
.pt-h1{ font-size:1.55rem; font-weight:800; letter-spacing:-.02em; margin:0; }
.pt-sub{ color:var(--pt-muted); margin:2px 0 20px; }
/* RDV — next + quick actions */
.pt-top{ display:grid; grid-template-columns:1.5fr 1fr; gap:16px; margin-bottom:16px; }
.pt-next{ background:var(--brand); color:#fff; border-radius:18px; padding:26px; position:relative; overflow:hidden; box-shadow:var(--pt-shadow); }
.pt-next::after{ content:""; position:absolute; right:-50px; top:-50px; width:200px; height:200px; border-radius:50%; background:rgba(255,255,255,.08); }
.pt-next .lab{ font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.78); font-weight:700; }
.pt-next .when{ font-size:1.7rem; font-weight:800; letter-spacing:-.02em; margin-top:8px; }
.pt-next .svc{ color:rgba(255,255,255,.88); margin-top:3px; }
.pt-next .facts{ margin-top:16px; display:flex; flex-direction:column; gap:7px; font-size:.86rem; color:rgba(255,255,255,.92); position:relative; z-index:1; }
.pt-next .facts span{ display:flex; gap:8px; }
.pt-next .fk{ color:rgba(255,255,255,.7); width:72px; flex-shrink:0; }
.pt-next .acts{ margin-top:20px; display:flex; gap:10px; flex-wrap:wrap; position:relative; z-index:1; }
.pt-bw{ background:#fff; color:var(--brand); border:none; border-radius:10px; padding:11px 18px; font:inherit; font-weight:700; font-size:.85rem; cursor:pointer; text-decoration:none; display:inline-flex; gap:7px; align-items:center; }
.pt-bw svg{ width:15px; height:15px; }
.pt-bw.g{ background:rgba(255,255,255,.16); color:#fff; }
.pt-qa{ display:grid; grid-template-rows:repeat(3,1fr); gap:12px; }
.pt-qtile{ background:var(--pt-surface); border:1px solid var(--pt-line); border-radius:14px; box-shadow:var(--pt-shadow-soft); padding:14px 16px; display:flex; gap:13px; align-items:center; text-decoration:none; color:inherit; transition:.15s; }
.pt-qtile:hover{ transform:translateY(-2px); border-color:var(--brand); }
.pt-qi{ width:40px; height:40px; border-radius:11px; background:var(--pt-blue-soft); color:var(--brand); display:grid; place-items:center; flex-shrink:0; }
.pt-qi svg{ width:19px; height:19px; }
.pt-qt{ font-weight:700; font-size:.92rem; }
.pt-qs{ font-size:.78rem; color:var(--pt-muted); }
/* section label + rows */
.pt-lab2{ font-size:.72rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--pt-soft); margin:24px 2px 12px; }
.pt-row{ background:var(--pt-surface); border:1px solid var(--pt-line); border-radius:14px; box-shadow:var(--pt-shadow-soft); padding:16px 18px; margin-bottom:11px; display:grid; grid-template-columns:54px 1fr auto; gap:16px; align-items:center; }
.pt-row.past{ opacity:.75; }
.pt-dd{ text-align:center; }
.pt-dd .n{ font-size:1.35rem; font-weight:800; color:var(--brand); line-height:1; }
.pt-dd .m{ font-size:.68rem; font-weight:700; text-transform:uppercase; color:var(--pt-muted); }
.pt-s{ font-weight:700; }
.pt-meta{ font-size:.83rem; color:var(--pt-muted); margin-top:3px; display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.pt-chip{ font-size:.68rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--brand); background:var(--pt-blue-soft); border-radius:6px; padding:2px 8px; }
.pt-chip.dom{ color:var(--pt-ok); background:var(--pt-ok-soft); }
.pt-gp{ font-size:.8rem; color:var(--pt-muted); margin-top:5px; }
.pt-lnk{ font-size:.84rem; font-weight:600; color:var(--brand); text-decoration:none; white-space:nowrap; }
.pt-lnk.x{ color:var(--pt-danger); }
.pt-pipe{ color:var(--pt-line); margin:0 6px; }
.pt-trust{ font-size:.76rem; color:var(--brand); display:flex; gap:7px; align-items:center; justify-content:center; margin-top:24px; }
.pt-trust svg{ width:14px; height:14px; }
.pt-seeall{ display:block; text-align:center; margin-top:6px; font-size:.84rem; font-weight:600; color:var(--brand); text-decoration:none; }
/* receipts */
.pt-rstats{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-bottom:20px; }
.pt-rstat{ background:var(--pt-surface); border:1px solid var(--pt-line); border-radius:14px; box-shadow:var(--pt-shadow-soft); padding:16px 18px; }
.pt-rstat .k{ font-size:.72rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--pt-soft); display:flex; gap:7px; align-items:center; }
.pt-rstat .k svg{ width:14px; height:14px; color:var(--brand); }
.pt-rstat .v{ font-size:1.5rem; font-weight:800; margin-top:6px; letter-spacing:-.01em; }
.pt-rstat.accent{ background:var(--brand); color:#fff; border:none; }
.pt-rstat.accent .k, .pt-rstat.accent .k svg{ color:rgba(255,255,255,.82); }
.pt-yr{ font-size:.72rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--pt-soft); margin:6px 2px 12px; }
.pt-recu{ background:var(--pt-surface); border:1px solid var(--pt-line); border-radius:14px; box-shadow:var(--pt-shadow-soft); padding:15px 18px; margin-bottom:11px; display:grid; grid-template-columns:46px 1fr auto auto; gap:16px; align-items:center; transition:.15s; }
.pt-recu:hover{ border-color:var(--brand); }
.pt-rico{ width:46px; height:46px; border-radius:12px; background:var(--pt-blue-soft); color:var(--brand); display:grid; place-items:center; }
.pt-rico svg{ width:21px; height:21px; }
.pt-rt{ font-weight:700; }
.pt-rs{ font-size:.8rem; color:var(--pt-muted); margin-top:2px; display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.pt-paid{ font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--pt-ok); background:var(--pt-ok-soft); border-radius:6px; padding:2px 8px; display:inline-flex; gap:4px; align-items:center; }
.pt-paid svg{ width:11px; height:11px; }
.pt-ramt{ font-weight:800; font-variant-numeric:tabular-nums; font-size:1.05rem; white-space:nowrap; }
.pt-dlbtn{ border:1.5px solid var(--pt-line); background:var(--pt-surface); border-radius:10px; padding:9px 14px; font:inherit; font-weight:600; font-size:.82rem; color:var(--brand); text-decoration:none; display:inline-flex; gap:7px; align-items:center; white-space:nowrap; }
.pt-dlbtn:hover{ border-color:var(--brand); background:var(--pt-blue-soft); }
.pt-dlbtn svg{ width:15px; height:15px; }
/* profile */
.pt-cols{ display:grid; grid-template-columns:300px 1fr; gap:18px; align-items:start; }
.pt-summary{ background:var(--brand); color:#fff; border-radius:18px; box-shadow:var(--pt-shadow); padding:26px 22px; text-align:center; position:relative; overflow:hidden; }
.pt-summary::after{ content:""; position:absolute; right:-40px; top:-40px; width:160px; height:160px; border-radius:50%; background:rgba(255,255,255,.08); }
.pt-ava{ width:84px; height:84px; border-radius:24px; background:rgba(255,255,255,.18); display:grid; place-items:center; font-size:1.8rem; font-weight:800; margin:0 auto 14px; position:relative; z-index:1; }
.pt-summary .nm{ font-size:1.2rem; font-weight:800; }
.pt-summary .e{ font-size:.84rem; color:rgba(255,255,255,.85); margin-top:2px; word-break:break-all; }
.pt-meta2{ margin-top:18px; border-top:1px solid rgba(255,255,255,.16); padding-top:16px; display:flex; flex-direction:column; gap:10px; text-align:left; font-size:.84rem; position:relative; z-index:1; }
.pt-meta2 .r{ display:flex; gap:10px; align-items:center; color:rgba(255,255,255,.92); }
.pt-meta2 svg{ width:15px; height:15px; color:rgba(255,255,255,.8); flex-shrink:0; }
.pt-secbadge{ margin-top:16px; background:rgba(255,255,255,.14); border-radius:10px; padding:10px; font-size:.78rem; display:flex; gap:8px; align-items:center; justify-content:center; position:relative; z-index:1; }
.pt-secbadge svg{ width:15px; height:15px; }
.pt-form{ background:var(--pt-surface); border:1px solid var(--pt-line); border-radius:18px; box-shadow:var(--pt-shadow-soft); padding:24px; margin-bottom:16px; }
.pt-fh{ font-weight:800; font-size:1.05rem; margin-bottom:18px; }
.pt-grp{ font-size:.72rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--pt-soft); margin:18px 0 12px; }
.pt-grp:first-of-type{ margin-top:0; }
.pt-fg{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.pt-f{ display:flex; flex-direction:column; gap:6px; }
.pt-f.full{ grid-column:1/-1; }
.pt-f label{ font-size:.78rem; font-weight:600; color:var(--pt-muted); }
.pt-f input{ border:1.5px solid var(--pt-line); background:var(--pt-surface2); border-radius:10px; padding:11px 13px; font:inherit; font-weight:500; color:var(--pt-ink); outline:none; transition:.15s; width:100%; }
.pt-f input:focus{ border-color:var(--brand); background:#fff; box-shadow:0 0 0 3px var(--pt-blue-soft); }
.pt-f input:disabled{ color:var(--pt-soft); background:#f3f5f7; }
.pt-seg{ display:inline-flex; background:var(--pt-surface2); border:1.5px solid var(--pt-line); border-radius:10px; padding:3px; gap:3px; }
.pt-seg button{ border:none; background:none; font:inherit; font-weight:600; font-size:.86rem; color:var(--pt-muted); padding:9px 22px; border-radius:8px; cursor:pointer; }
.pt-seg button.on{ background:var(--brand); color:#fff; }
.pt-pactions{ margin-top:22px; padding-top:18px; border-top:1px solid var(--pt-line); display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.pt-btn{ background:var(--brand); color:#fff; border:none; border-radius:10px; padding:12px 22px; font:inherit; font-weight:700; font-size:.88rem; cursor:pointer; display:inline-flex; gap:8px; align-items:center; }
.pt-btn svg{ width:16px; height:16px; }
.pt-ghostbtn{ border:1.5px solid var(--pt-line); background:var(--pt-surface); border-radius:10px; padding:11px 18px; font:inherit; font-weight:600; font-size:.85rem; color:var(--brand); text-decoration:none; cursor:pointer; display:inline-flex; gap:7px; align-items:center; }
.pt-ghostbtn svg{ width:15px; height:15px; }
@media(max-width:780px){ .pt-top, .pt-cols, .pt-rstats{ grid-template-columns:1fr; } .pt-fg{ grid-template-columns:1fr; } .pt-recu{ grid-template-columns:46px 1fr auto; } .pt-recu .pt-dlbtn{ grid-column:2/-1; justify-self:start; } }

/* =====================================================================
   Lot C-portail-fix — password show/hide eye (works with .pt-*, admin, signup)
   ===================================================================== */
.pw-wrap{ position:relative; }
.pw-wrap input{ width:100%; padding-right:42px; }
.pw-eye{ position:absolute; right:8px; top:50%; transform:translateY(-50%); background:none; border:none; cursor:pointer; color:var(--text-muted,#667085); display:grid; place-items:center; padding:4px; }
.pw-eye svg{ width:18px; height:18px; }
.pw-eye .pw-ic-off{ display:none; }
.pw-eye.on .pw-ic-on{ display:none; }
.pw-eye.on .pw-ic-off{ display:block; }

/* =====================================================================
   Lot C-portail-2b — premium portal auth cards (login / forgot / reset)
   Additive namespace .pt-auth-* reusing tenant tokens. Accent = --brand
   (validated hex injected per tenant). No CDN. Touches no existing class.
   ===================================================================== */
.pt-auth-page{
    font-family:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    min-height:100vh; margin:0; display:flex; flex-direction:column;
    align-items:center; justify-content:center; gap:16px; padding:24px;
    background:
        radial-gradient(circle at 50% -10%, var(--brand-glow), transparent 36rem),
        linear-gradient(180deg,#f7fbfd,var(--bg));
    color:var(--text);
}
.pt-auth-langs{ display:inline-flex; gap:4px; align-items:center; font-size:.8rem; color:var(--text-muted); }
.pt-auth-langs a{ color:var(--text-muted); text-decoration:none; padding:2px 7px; border-radius:8px; }
.pt-auth-langs a.on{ color:var(--brand); font-weight:700; }

.pt-auth-card{
    width:min(420px,100%); background:var(--surface);
    border:1px solid var(--border,#e6eaf0); border-radius:20px;
    box-shadow:var(--shadow-elevated); overflow:hidden;
}
.pt-auth-top{
    background:var(--brand); color:#fff; padding:28px 28px 22px;
    text-align:center; position:relative; overflow:hidden;
}
.pt-auth-top::after{
    content:""; position:absolute; right:-40px; top:-40px;
    width:150px; height:150px; border-radius:50%; background:rgba(255,255,255,.10);
}
.pt-auth-mark{
    width:52px; height:52px; border-radius:15px; background:rgba(255,255,255,.18);
    display:grid; place-items:center; margin:0 auto 12px; position:relative; z-index:1;
}
.pt-auth-mark svg{ width:26px; height:26px; }
.pt-auth-clinic{ font-size:1.15rem; font-weight:800; position:relative; z-index:1; }
.pt-auth-sub{ font-size:.8rem; color:rgba(255,255,255,.85); margin-top:2px; position:relative; z-index:1; }

.pt-auth-body{ padding:26px 28px 24px; }
.pt-auth-body h1{ font-size:1.2rem; font-weight:800; letter-spacing:-.01em; color:var(--text); margin:0; text-transform:none; }
.pt-auth-lead{ color:var(--text-muted); font-size:.88rem; margin:3px 0 20px; }

.pt-auth-f{ margin-bottom:14px; }
.pt-auth-f label{ display:block; font-size:.78rem; font-weight:600; color:var(--text-muted); margin-bottom:6px; }
.pt-auth-f input{
    width:100%; border:1.5px solid var(--border,#dfe6ef); background:#f1f6f8;
    border-radius:11px; padding:12px 13px; font:inherit; font-weight:500; color:var(--text);
    outline:none; transition:border-color .15s, box-shadow .15s, background .15s;
}
.pt-auth-f input:focus{ border-color:var(--brand); background:#fff; box-shadow:0 0 0 3px var(--brand-soft); }
.pt-auth-f .pw-wrap input{ padding-right:42px; }

.pt-auth-row{ display:flex; justify-content:flex-end; margin:-4px 0 18px; }
.pt-auth-link{ font-size:.82rem; font-weight:600; color:var(--brand); text-decoration:none; }
.pt-auth-link:hover{ text-decoration:underline; }
.pt-auth-btn{
    width:100%; background:var(--brand); color:#fff; border:none; border-radius:12px;
    padding:13px; font:inherit; font-weight:700; font-size:.92rem; cursor:pointer;
    display:inline-flex; gap:8px; align-items:center; justify-content:center; transition:filter .15s;
}
.pt-auth-btn:hover{ filter:brightness(.94); }
.pt-auth-btn:focus-visible{ outline:2px solid var(--brand); outline-offset:2px; }
.pt-auth-btn svg{ width:16px; height:16px; }
.pt-auth-alt{ text-align:center; font-size:.84rem; color:var(--text-muted); margin-top:16px; }
.pt-auth-alt a{ color:var(--brand); font-weight:600; }
.pt-auth-foot{
    padding:14px; border-top:1px solid var(--border,#e6eaf0); text-align:center;
    font-size:.74rem; color:var(--text-muted); display:flex; gap:6px;
    align-items:center; justify-content:center;
}
.pt-auth-foot svg{ width:13px; height:13px; color:var(--brand); }
.pt-auth-banner{ padding:.8rem 1rem; border-radius:11px; font-size:.88rem; margin-bottom:16px; }
.pt-auth-banner.ok{ background:#e8f7ef; color:#08715c; }
.pt-auth-banner.err{ background:#fdecea; color:#a3201a; }

/* =====================================================
   Lot F-5 — Portail « Profils liés » (sobre / éditorial, pas de cartes IA)
   Sections séparées par un filet, lignes en liste discrète. Lecture seule.
   ===================================================== */
.pt-lk-sec{ margin:26px 0 0; }
.pt-lk-head{ font-size:1.02rem; font-weight:800; letter-spacing:-.01em; color:var(--pt-ink);
    padding-bottom:9px; border-bottom:1px solid var(--pt-line); }
.pt-lk-subhead{ font-size:.83rem; color:var(--pt-muted); margin:8px 2px 4px; }
.pt-lk-row{ display:flex; align-items:flex-start; gap:14px; padding:15px 2px; border-bottom:1px solid var(--pt-line); }
.pt-lk-row:last-child{ border-bottom:none; }
.pt-lk-ini{ flex:none; width:38px; height:38px; border-radius:50%; display:grid; place-items:center;
    font-size:.82rem; font-weight:700; color:var(--brand); background:var(--pt-blue-soft); margin-top:2px; }
.pt-lk-main{ flex:1; min-width:0; }
.pt-lk-name{ font-size:.96rem; font-weight:700; color:var(--pt-ink); display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.pt-lk-tag{ font-size:.7rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
    color:var(--pt-muted); border:1px solid var(--pt-line); border-radius:5px; padding:1px 7px; }
.pt-lk-meta{ font-size:.84rem; color:var(--pt-muted); margin-top:3px; }
.pt-lk-intake{ font-size:.8rem; font-weight:600; margin-top:6px; }
.pt-lk-intake.is-done{ color:var(--pt-ok); }
.pt-lk-intake.is-todo{ color:var(--pt-danger); }
.pt-lk-note{ font-size:.84rem; color:var(--pt-muted); margin:12px 2px 0; line-height:1.5; }
.pt-lk-intake a{ color:inherit; text-decoration:underline; text-underline-offset:2px; }

/* =====================================================
   Lot F-4b — Portail : intake patient (CTA tableau de bord + encart chiffré + consentement)
   ===================================================== */
.pt-intake-cta{ display:flex; align-items:center; gap:14px; margin:0 0 18px; padding:15px 18px;
    background:var(--pt-surface); border:1px solid var(--pt-line); border-radius:14px;
    box-shadow:var(--pt-shadow-soft); text-decoration:none; color:inherit; transition:.15s; }
.pt-intake-cta:hover{ border-color:var(--brand); box-shadow:var(--pt-shadow); }
.pt-intake-cta-ic{ width:42px; height:42px; border-radius:11px; background:var(--pt-blue-soft);
    color:var(--brand); display:grid; place-items:center; flex-shrink:0; }
.pt-intake-cta-tx{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.pt-intake-cta-tx strong{ font-size:.96rem; color:var(--pt-ink); }
.pt-intake-cta-tx span{ font-size:.84rem; color:var(--pt-muted); }
.pt-intake-cta-go{ color:var(--pt-soft); flex-shrink:0; }

.pt-intake-lock{ display:flex; align-items:center; gap:9px; background:var(--pt-ok-soft); color:var(--pt-ok);
    border-radius:10px; padding:.7rem .9rem; font-size:.82rem; margin:14px 0; }
.pt-intake-consent{ display:flex; gap:10px; align-items:flex-start; background:var(--pt-surface2);
    border-radius:10px; padding:.8rem 1rem; margin:8px 0 4px; font-size:.86rem; color:var(--pt-ink); cursor:pointer; }
.pt-intake-consent input{ margin-top:3px; flex-shrink:0; }

/* =====================================================================
   Lot dashboard — Tableau de bord « comme à la maison » (bleu Sabaican).
   Namespace .dash-* (isolé du chrome .adm-* et de la modale .cm-*).
   Le cadre (max-width, padding-x, margin) vient de main.page ; ce bloc
   ne fait QUE le contenu. Référence visuelle : maquette 05c-maison-bleu.
   Les boutons d'action des cartes réutilisent .cck-actions/.cck-act.
   ===================================================================== */
.dash{
  --d-cream-200:#f1f6fc; --d-cream-300:#e3edf8;
  --d-sage-100:#eef3fb; --d-sage-200:#dbe6f4; --d-sage-300:#bcd0ea;
  --d-sage-400:#7b9fd1; --d-sage-700:#345585;
  --d-brand:#4A6FA5; --d-brand-dark:#3a5a86; --d-brand-soft:#e6edf6;
  --d-amber-50:#fbf3e2; --d-amber-200:#f2dca8; --d-amber-700:#9c6f1f;
  --d-teal-50:#e3f4f1; --d-teal-200:#bfe3dc; --d-teal-700:#2f7a6e;
  --d-ink-900:#27384f; --d-ink-700:#46596f; --d-ink-500:#7e8ea2; --d-ink-300:#aebccd;
  --d-r-lg:24px; --d-r-md:18px;
  --d-shadow-soft:0 18px 40px -22px rgba(58,90,134,.40);
  --d-shadow-card:0 14px 34px -24px rgba(45,70,110,.42);
  --d-shadow-hover:0 22px 48px -22px rgba(74,111,165,.48);
  --d-serif:Georgia,"Times New Roman",serif;
  color:var(--d-ink-900); line-height:1.55;
}
.dash svg{ width:18px; height:18px; }

/* Daybar v2 — flèches ⟨ date centrée (Fraunces) ⟩ + bouton contextuel dessous */
.dash-daybar{ display:flex; flex-direction:column; align-items:center; gap:18px; margin-bottom:20px; }
.dash-daybar-row{ display:flex; align-items:center; gap:18px; }
.dash-arw{ width:48px; height:48px; border-radius:50%; background:#fff; border:1px solid #dbe6f4; display:grid;
  place-items:center; color:#3a5a86; box-shadow:0 8px 18px -8px rgba(58,90,134,.4); transition:.16s; text-decoration:none; }
.dash-arw:hover{ background:#eef4fb; border-color:var(--brand); transform:translateY(-1px); box-shadow:0 12px 24px -10px rgba(58,90,134,.55); }
.dash-arw svg{ width:25px; height:25px; }
.dash-daydate{ font-family:"Fraunces",Georgia,serif; font-size:27px; color:#27384f; letter-spacing:.2px; line-height:1;
  white-space:nowrap; min-width:230px; text-align:center; }
.dash-today-back{ display:inline-flex; align-items:center; gap:7px; font-size:13px; font-weight:700; color:#fff;
  background:var(--brand); border:1px solid var(--brand); border-radius:999px; padding:8px 18px; text-decoration:none; transition:.15s; }
.dash-today-back:hover{ background:#3a5a86; }
.dash-today-back svg{ width:15px; height:15px; }
.dash-today-here{ display:inline-flex; align-items:center; gap:7px; font-size:12.5px; font-weight:700; color:#7e8ea2;
  background:#f4f6f9; border:1px solid #e1ebf6; border-radius:999px; padding:8px 18px; cursor:default; }
.dash-pip{ width:7px; height:7px; border-radius:50%; background:#3fb27f; display:inline-block; }

/* Hero accueil */
.dash-hero{ position:relative; overflow:hidden; border-radius:var(--d-r-lg);
  background:radial-gradient(700px 320px at 88% 0%, #dbe8f8 0%, rgba(219,232,248,0) 60%),
             linear-gradient(135deg,#eef4fb 0%, #e3edf8 100%);
  border:1px solid #d6e2f1; border-left:5px solid var(--d-brand);
  padding:34px 40px; margin-bottom:28px; box-shadow:var(--d-shadow-soft); }
.dash-hero-illus{ position:absolute; inset:0; pointer-events:none; }
.dash-hero-ban{ position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center right; opacity:.7; }
.dash-hero-scrim{ position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(90deg,
    rgba(238,244,251,.57) 0%,
    rgba(238,244,251,.17) 50%,
    rgba(238,244,251,0) 78%); }
.dash-hero-content{ position:relative; z-index:2; max-width:680px; }
.dash-eyebrow{ display:inline-flex; align-items:center; gap:8px; font-size:.78rem; letter-spacing:.6px;
  text-transform:uppercase; color:var(--d-sage-700); background:rgba(255,255,255,.7);
  border:1px solid var(--d-sage-200); border-radius:999px; padding:6px 14px; margin-bottom:16px; }
.dash-eyebrow svg{ width:15px; height:15px; }
.dash-hero h1{ font-family:var(--d-serif); font-size:2.2rem; line-height:1.14; font-weight:400;
  color:var(--d-ink-900); letter-spacing:.2px; margin:0 0 12px; }
.dash-hero h1 em{ color:var(--d-brand); font-style:italic; }
.dash-story{ font-size:1.04rem; color:var(--d-ink-700); max-width:600px; line-height:1.7; margin:0; }
.dash-story strong{ color:var(--d-sage-700); font-weight:600; }
.dash-hero-stats{ display:flex; gap:30px; margin-top:22px; flex-wrap:wrap; }
.dash-hero-stat{ display:flex; flex-direction:column; }
.dash-hero-stat .v{ font-family:var(--d-serif); font-size:1.4rem; color:var(--d-ink-900); }
.dash-hero-stat .v small{ font-size:.85rem; color:var(--d-ink-500); }
.dash-hero-stat .l{ font-size:.8rem; color:var(--d-ink-500); margin-top:2px; }

/* Colonnes */
.dash-columns{ display:grid; grid-template-columns:1fr 350px; gap:28px; align-items:start; }
.dash-section-title{ font-family:var(--d-serif); font-size:1.28rem; color:var(--d-ink-900);
  margin:0 0 6px; display:flex; align-items:center; gap:10px; }
.dash-section-title svg{ width:20px; height:20px; color:var(--d-brand); }
.dash-section-sub{ font-size:.88rem; color:var(--d-ink-500); margin:0 0 18px; }

/* Prochain focus */
.dash-focus{ position:relative; overflow:hidden; border-radius:var(--d-r-lg); padding:26px 28px; margin-bottom:28px;
  background:linear-gradient(135deg,var(--d-brand) 0%,var(--d-brand-dark) 100%);
  color:#fff; box-shadow:0 22px 46px -24px rgba(74,111,165,.85); }
.dash-focus .tag{ display:inline-flex; align-items:center; gap:7px; font-size:.76rem; letter-spacing:.6px;
  text-transform:uppercase; opacity:.92; background:rgba(255,255,255,.16); border-radius:999px;
  padding:6px 13px; margin-bottom:16px; }
.dash-focus .tag svg{ width:15px; height:15px; }
.dash-focus-row{ display:flex; align-items:center; gap:18px; position:relative; z-index:2; flex-wrap:wrap; }
.dash-focus-time{ font-family:var(--d-serif); font-size:1.9rem; line-height:1;
  background:rgba(255,255,255,.14); border-radius:18px; padding:14px 18px; text-align:center; }
.dash-focus-time small{ display:block; font-size:.7rem; letter-spacing:1px; opacity:.8; margin-top:4px; text-transform:uppercase; }
.dash-focus-info h3{ font-family:var(--d-serif); font-weight:400; font-size:1.4rem; margin:0 0 4px; }
.dash-focus-info p{ opacity:.92; font-size:.94rem; margin:0; }
.dash-focus-info .meta{ display:flex; gap:14px; margin-top:8px; flex-wrap:wrap; font-size:.84rem; opacity:.9; }
.dash-focus-info .meta span{ display:inline-flex; align-items:center; gap:5px; }
.dash-focus-info .meta svg{ width:14px; height:14px; }
.dash-focus-empty{ position:relative; z-index:2; font-size:.96rem; opacity:.92; }
.dash-focus-actions{ display:flex; gap:10px; margin-top:20px; position:relative; z-index:2; flex-wrap:wrap; }
.dash-fbtn{ display:inline-flex; align-items:center; gap:8px; border-radius:13px; padding:10px 16px;
  font-size:.9rem; font-weight:600; cursor:pointer; border:none; text-decoration:none;
  transition:transform .15s ease,box-shadow .2s ease; }
.dash-fbtn svg{ width:17px; height:17px; }
.dash-fbtn-primary{ background:#fff; color:var(--d-brand-dark); }
.dash-fbtn-ghost{ background:rgba(255,255,255,.14); color:#fff; border:1px solid rgba(255,255,255,.3); }
.dash-fbtn:hover{ transform:translateY(-2px); box-shadow:0 12px 24px -12px rgba(0,0,0,.4); }

/* Timeline */
.dash-timeline{ position:relative; padding-left:4px; }
.dash-tl-item{ position:relative; display:flex; gap:18px; padding:0 0 8px; }
.dash-tl-rail{ display:flex; flex-direction:column; align-items:center; width:60px; flex-shrink:0; position:relative; }
.dash-tl-time{ font-family:var(--d-serif); font-size:1rem; color:var(--d-ink-900); white-space:nowrap; }
.dash-tl-dot{ width:13px; height:13px; border-radius:50%; background:#fff; position:relative;
  border:3px solid var(--d-sage-400); box-shadow:0 0 0 2px #fff, 0 1px 3px rgba(52,85,133,.28); margin:6px 0; }
.dash-tl-line{ width:3px; flex:1; background:linear-gradient(180deg,var(--d-sage-400),var(--d-sage-300)); border-radius:3px; }
.dash-tl-item:last-child .dash-tl-line{ display:none; }
/* repere « moment present » (serveur) */
.dash-tl-item.is-past .dash-tl-line, .dash-tl-item.is-now .dash-tl-line{ background:linear-gradient(180deg,var(--d-brand),var(--d-brand-dark)); }
.dash-tl-item.is-past .dash-tl-dot{ background:var(--d-brand); border-color:var(--d-brand); }
.dash-tl-item.is-past .dash-appt{ opacity:.62; }
.dash-tl-item.is-past .dash-tl-time{ opacity:.62; }
.dash-tl-done{ position:absolute; top:-2px; left:50%; transform:translateX(-50%); color:var(--d-brand); display:grid; place-items:center; }
.dash-tl-done svg{ width:11px; height:11px; }
.dash-tl-item.is-now .dash-tl-dot{ background:var(--d-brand); border-color:var(--d-brand);
  box-shadow:0 0 0 2px #fff,0 0 0 5px rgba(74,111,165,.35); animation:dash-dot-pulse 2s ease-in-out infinite; }
@keyframes dash-dot-pulse{ 0%,100%{ box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(74,111,165,.40); } 50%{ box-shadow:0 0 0 2px #fff,0 0 0 9px rgba(74,111,165,.10); } }
.dash-tl-item.is-now .dash-appt{ border-color:var(--d-brand); box-shadow:0 0 0 2px var(--d-brand), 0 22px 46px -22px rgba(74,111,165,.6); }
.dash-now-marker{ display:inline-flex; align-items:center; gap:5px; margin-top:6px; font-size:.68rem; font-weight:700;
  letter-spacing:.02em; color:var(--d-brand-dark); background:var(--d-brand-soft); border:1px solid #cdddef;
  border-radius:999px; padding:2px 8px; white-space:nowrap; }
.dash-now-marker .tick{ width:6px; height:6px; border-radius:50%; background:var(--d-brand); flex-shrink:0; }

/* Carte RDV */
.dash-appt{ flex:1; min-width:0; margin-bottom:16px; background:#fff; border:1px solid #e1ebf6;
  border-radius:var(--d-r-md); padding:18px 20px; box-shadow:var(--d-shadow-card);
  transition:transform .16s ease,box-shadow .2s ease,border-color .2s ease; }
.dash-appt:hover{ transform:translateY(-2px); box-shadow:var(--d-shadow-hover); border-color:#cdd9e8; }
.dash-appt.is-warn{ border-color:var(--d-amber-200); background:linear-gradient(180deg,#fffaf0,#fff); }
.dash-appt-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.dash-appt-person{ display:flex; align-items:center; gap:13px; min-width:0; }
.dash-appt-ava{ width:44px; height:44px; border-radius:50%; flex-shrink:0; display:grid; place-items:center;
  font-family:var(--d-serif); font-size:1rem; color:var(--d-sage-700);
  background:radial-gradient(circle at 30% 25%,#eaf1fa,#d5e2f2); border:2px solid #fff; box-shadow:0 4px 10px -6px rgba(52,85,133,.5); }
.dash-appt-ava.home{ color:var(--d-brand-dark); background:radial-gradient(circle at 30% 25%,#e8f0fa,#d2e0f2); }
.dash-appt-person h4{ font-size:1.02rem; color:var(--d-ink-900); font-weight:600; margin:0; }
.dash-appt-person .care{ font-size:.86rem; color:var(--d-ink-500); }
.dash-appt-amount{ font-family:var(--d-serif); font-size:1.1rem; color:var(--d-sage-700); white-space:nowrap; }
.dash-appt-meta{ display:flex; gap:8px; flex-wrap:wrap; margin-top:13px; }
.dash-chip{ display:inline-flex; align-items:center; gap:6px; font-size:.78rem; padding:5px 11px; border-radius:999px;
  background:var(--d-sage-100); color:var(--d-sage-700); border:1px solid var(--d-sage-200); }
.dash-chip svg{ width:13px; height:13px; }
.dash-chip.loc-home{ background:var(--d-brand-soft); color:var(--d-brand-dark); border-color:#d3e0f0; }
.dash-badge{ display:inline-flex; align-items:center; gap:6px; font-size:.78rem; padding:5px 11px; border-radius:999px; font-weight:600; }
.dash-badge svg{ width:13px; height:13px; }
.dash-badge-ready{ background:var(--d-teal-50); color:var(--d-teal-700); border:1px solid var(--d-teal-200); }
.dash-badge-warn{ background:var(--d-amber-50); color:var(--d-amber-700); border:1px solid var(--d-amber-200); }
.dash-badge-now{ background:var(--d-brand); color:#fff; border:1px solid var(--d-brand-dark); }
.dash-badge-now .dot{ width:8px; height:8px; border-radius:50%; background:#fff; display:inline-block; animation:dash-badge-pulse 1.6s ease-in-out infinite; }
@keyframes dash-badge-pulse{ 0%,100%{ box-shadow:0 0 0 0 rgba(255,255,255,.55); } 50%{ box-shadow:0 0 0 5px rgba(255,255,255,0); } }
.dash-appt .cck-actions{ margin-top:14px; }

/* Interludes (pause / trajet) */
.dash-interlude{ flex:1; min-width:0; margin-bottom:16px; display:flex; align-items:center; gap:14px;
  padding:13px 18px; border-radius:var(--d-r-md); border:1px dashed var(--d-sage-300);
  background:rgba(238,243,251,.6); color:var(--d-sage-700); font-size:.92rem; }
.dash-interlude svg{ width:20px; height:20px; flex-shrink:0; color:var(--d-brand); }
.dash-interlude.trip{ border-color:#cdd9e8; background:rgba(230,237,246,.6); color:var(--d-brand-dark); }

/* Cartes laterales */
.dash-side-card{ background:#fff; border:1px solid #e1ebf6; border-radius:var(--d-r-lg); padding:22px;
  margin-bottom:22px; box-shadow:var(--d-shadow-card); position:relative; overflow:hidden; }
.dash-side-card h3{ font-family:var(--d-serif); font-size:1.12rem; margin:0 0 4px; color:var(--d-ink-900);
  display:flex; align-items:center; gap:9px; }
.dash-side-card h3 svg{ width:18px; height:18px; color:var(--d-brand); }
.dash-side-card .hint{ font-size:.84rem; color:var(--d-ink-500); margin:0 0 16px; }

/* Lot dispo — bloc « Disponibilités du jour » (jetons --d-* du dashboard). */
.dispo-nums{ display:flex; gap:10px; margin:4px 0 0; }
.dispo-num{ flex:1; text-align:center; padding:12px 8px; border-radius:var(--d-r-md); background:var(--d-sage-100); }
.dispo-num.free{ background:var(--d-teal-50); }
.dispo-num .v{ display:block; font-family:var(--d-serif); font-size:1.5rem; line-height:1; color:var(--d-brand-dark); }
.dispo-num.free .v{ color:var(--d-teal-700); }
.dispo-num .l{ display:block; font-size:.76rem; color:var(--d-ink-500); margin-top:5px; }
.dispo-bar{ height:9px; border-radius:6px; background:var(--d-sage-100); margin:16px 0 8px; overflow:hidden; }
.dispo-bar i{ display:block; height:100%; border-radius:6px; background:linear-gradient(90deg,var(--d-sage-400),var(--d-brand)); }
.dispo-bar.full i{ background:linear-gradient(90deg,var(--d-teal-200),var(--d-teal-700)); }
.dispo-pct{ display:flex; justify-content:space-between; font-size:.78rem; color:var(--d-ink-500); }
.dispo-pct b{ color:var(--d-ink-700); font-weight:600; }
.dispo-next{ display:flex; align-items:center; gap:8px; margin-top:14px; padding:10px 12px; border-radius:12px;
  background:var(--d-cream-200); font-size:.84rem; color:var(--d-ink-700); }
.dispo-next svg{ width:15px; height:15px; color:var(--d-sage-400); flex-shrink:0; }
.dispo-next b{ color:var(--d-ink-900); font-weight:600; }
.dispo-next.done{ background:var(--d-teal-50); color:var(--d-teal-700); }
.dispo-next.done svg{ color:var(--d-teal-700); }
.dispo-cap{ font-size:.8rem; color:var(--d-ink-500); margin-top:12px; text-align:center; }
.dispo-cap b{ color:var(--d-ink-900); font-weight:600; }
.dispo-cta{ display:flex; align-items:center; justify-content:center; gap:9px; margin-top:16px; width:100%;
  padding:13px 16px; border-radius:14px; border:none; cursor:pointer; background:var(--d-brand); color:#fff;
  font-size:.92rem; font-weight:600; font-family:inherit; text-decoration:none;
  box-shadow:0 10px 22px -12px rgba(74,111,165,.7); transition:.16s; }
.dispo-cta:hover{ background:var(--d-brand-dark); transform:translateY(-1px); box-shadow:var(--d-shadow-hover); }
.dispo-cta svg{ width:17px; height:17px; }
.dispo-cta.ghost{ background:#fff; color:var(--d-brand); border:1px solid var(--d-sage-200); box-shadow:none; }
.dispo-cta.ghost:hover{ background:var(--d-sage-100); }
.dispo-rest{ text-align:center; padding:6px 0 2px; }
.dispo-rest svg{ width:40px; height:40px; color:var(--d-sage-300); }
.dispo-rest .t{ font-family:var(--d-serif); font-size:1.15rem; color:var(--d-ink-700); margin-top:8px; }
.dispo-rest .s{ font-size:.82rem; color:var(--d-ink-500); margin-top:3px; }

/* =====================================================================
   Lot 2a — Réservation par téléphone (modale guidée .pb-*, namespace isolé).
   Réf : DesignPageMaquette/Leonard/resa-telephone-2026-07-02.html.
   Palette locale (la modale est rendue hors du conteneur .dash).
   ===================================================================== */
.pb-overlay{ --p-brand:#4A6FA5; --p-brand-d:#3a5a86; --p-soft:#e6edf6; --p-s1:#eef3fb; --p-s2:#dbe6f4;
  --p-s3:#bcd0ea; --p-s4:#7b9fd1; --p-s7:#345585; --p-ink9:#27384f; --p-ink7:#46596f; --p-ink5:#7e8ea2;
  --p-ink3:#aebccd; --p-cream2:#f1f6fc; --p-teal50:#e3f4f1; --p-teal7:#2f7a6e; --p-serif:Georgia,"Times New Roman",serif;
  position:fixed; inset:0; z-index:1100; display:none; padding:24px; overflow:auto;
  background:rgba(18,30,52,.28); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.pb-overlay.open{ display:flex; align-items:flex-start; justify-content:center; }
.pb-modal{ width:460px; max-width:96vw; margin:auto; background:#fff; border:1px solid #e1ebf6; border-radius:24px;
  box-shadow:0 26px 60px -30px rgba(45,70,110,.55); overflow:hidden; color:var(--p-ink9); }
.pb-top{ display:flex; align-items:center; gap:11px; padding:18px 20px; border-bottom:1px solid var(--p-s1); }
.pb-tic{ width:34px; height:34px; border-radius:11px; background:var(--p-soft); color:var(--p-brand); display:grid; place-items:center; flex-shrink:0; }
.pb-tic svg{ width:18px; height:18px; }
.pb-top h2{ font-family:var(--p-serif); font-size:1.06rem; font-weight:600; margin:0; flex:1; }
.pb-x{ width:30px; height:30px; border-radius:9px; display:grid; place-items:center; color:var(--p-ink5); background:var(--p-s1); border:none; cursor:pointer; }
.pb-x svg{ width:16px; height:16px; }
.pb-steps{ display:flex; gap:6px; padding:12px 20px 0; }
.pb-s{ flex:1; display:flex; align-items:center; gap:7px; font-size:.78rem; color:var(--p-ink3); font-weight:600; }
.pb-n{ width:22px; height:22px; border-radius:50%; display:grid; place-items:center; font-size:.72rem; background:var(--p-s1); color:var(--p-ink5); flex-shrink:0; }
.pb-s.on{ color:var(--p-brand-d); } .pb-s.on .pb-n{ background:var(--p-brand); color:#fff; }
.pb-s.done .pb-n{ background:var(--p-teal7); color:#fff; }
.pb-bar{ height:3px; background:var(--p-s1); margin:12px 20px 0; border-radius:3px; overflow:hidden; }
.pb-bar i{ display:block; height:100%; background:var(--p-brand); border-radius:3px; transition:width .2s ease; }
.pb-body{ padding:18px 20px 4px; }
.pb-lab{ display:block; font-size:.78rem; font-weight:600; color:var(--p-ink7); margin:0 0 6px; }
.pb-fld{ width:100%; padding:11px 13px; border:1px solid var(--p-s2); border-radius:12px; font-size:.9rem; font-family:inherit; color:var(--p-ink9); background:#fff; }
.pb-fld::placeholder{ color:var(--p-ink3); }
.pb-fld:focus{ outline:none; border-color:var(--p-brand); box-shadow:0 0 0 3px var(--p-soft); }
.pb-row2{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.pb-mt{ margin-top:14px; }
.pb-search{ position:relative; }
.pb-ic{ position:absolute; left:12px; top:50%; transform:translateY(-50%); color:var(--p-ink3); }
.pb-ic svg{ width:16px; height:16px; display:block; }
.pb-search .pb-fld{ padding-left:36px; }
.pb-results{ margin-top:8px; }
.pb-results:not(:empty){ border:1px solid var(--p-s1); border-radius:12px; overflow:hidden; }
.pb-res{ display:flex; align-items:center; gap:11px; padding:10px 12px; cursor:pointer; }
.pb-res + .pb-res{ border-top:1px solid var(--p-s1); }
.pb-res:hover{ background:var(--p-s1); }
.pb-nores{ padding:12px; font-size:.82rem; color:var(--p-ink5); text-align:center; }
.pb-ava{ width:34px; height:34px; border-radius:10px; background:var(--p-soft); color:var(--p-brand-d); display:grid; place-items:center; font-weight:700; font-size:.85rem; flex-shrink:0; }
.pb-nm{ font-size:.88rem; font-weight:600; } .pb-sub{ font-size:.76rem; color:var(--p-ink5); }
.pb-pick{ margin-left:auto; font-size:.74rem; color:var(--p-brand); font-weight:600; }
.pb-sep{ display:flex; align-items:center; gap:12px; margin:16px 0; color:var(--p-ink3); font-size:.76rem; }
.pb-sep::before, .pb-sep::after{ content:''; height:1px; flex:1; background:var(--p-s1); }
.pb-newcli{ padding:14px; border:1px solid var(--p-s2); border-radius:14px; background:#fbfdff; }
.pb-tt{ font-size:.78rem; font-weight:700; color:var(--p-ink7); margin:0 0 10px; }
.pb-clichip{ display:inline-flex; align-items:center; gap:9px; padding:7px 12px; border-radius:999px; background:var(--p-teal50); color:var(--p-teal7); font-size:.84rem; font-weight:600; }
.pb-clichip .pb-ava{ width:24px; height:24px; border-radius:7px; font-size:.72rem; background:#fff; }
.pb-seg{ display:flex; border:1px solid var(--p-s2); border-radius:12px; overflow:hidden; margin-top:2px; }
.pb-seg button{ flex:1; padding:10px; border:none; background:#fff; font-family:inherit; font-size:.85rem; font-weight:600; color:var(--p-ink5); cursor:pointer; display:flex; align-items:center; justify-content:center; gap:7px; }
.pb-seg button svg{ width:15px; height:15px; }
.pb-seg button.on{ background:var(--p-brand); color:#fff; }
.pb-durs{ display:flex; gap:7px; margin-top:10px; flex-wrap:wrap; }
.pb-dur{ padding:7px 13px; border:1px solid var(--p-s2); border-radius:999px; font-size:.8rem; color:var(--p-ink7); cursor:pointer; background:#fff; }
.pb-dur.on{ background:var(--p-brand); color:#fff; border-color:var(--p-brand); }
/* Lot 2b — cartes personne (groupe) */
.pb-person{ border:1px solid var(--p-s2); border-radius:14px; padding:13px; margin-top:12px; }
.pb-ph{ display:flex; align-items:center; gap:9px; }
.pb-pava{ width:28px; height:28px; border-radius:8px; background:var(--p-soft); color:var(--p-brand-d); display:grid; place-items:center; font-weight:700; font-size:.76rem; flex-shrink:0; }
.pb-pwho{ font-size:.86rem; font-weight:600; }
.pb-ptag{ font-size:.7rem; color:var(--p-ink5); background:var(--p-s1); padding:2px 8px; border-radius:999px; }
.pb-pdel{ margin-left:auto; color:var(--p-ink3); cursor:pointer; font-size:.9rem; line-height:1; padding:2px 6px; }
.pb-pdel:hover{ color:#b4382f; }
.pb-addp{ display:flex; align-items:center; justify-content:center; gap:8px; width:100%; margin-top:12px; padding:10px;
  border:1px dashed var(--p-s3); border-radius:12px; color:var(--p-brand); background:transparent; font-family:inherit;
  font-size:.84rem; font-weight:600; cursor:pointer; }
.pb-addp svg{ width:15px; height:15px; }
.pb-grpnote{ display:flex; gap:8px; margin-top:12px; padding:10px 12px; border-radius:12px; background:var(--p-cream2);
  font-size:.78rem; color:var(--p-ink5); align-items:center; }
.pb-grpnote svg{ width:15px; height:15px; color:var(--p-s4); flex-shrink:0; }
.pb-slots{ display:flex; flex-wrap:wrap; gap:7px; }
.pb-slot{ padding:8px 13px; border:1px solid var(--p-s2); border-radius:10px; font-size:.82rem; color:var(--p-ink7); cursor:pointer; background:#fff; }
.pb-slot.on{ background:var(--p-brand); color:#fff; border-color:var(--p-brand); }
.pb-muted{ font-size:.82rem; color:var(--p-ink5); }
.pb-recap{ margin-top:14px; border:1px solid var(--p-s2); border-radius:14px; overflow:hidden; }
.pb-money{ background:var(--p-s1); padding:12px 13px; }
.pb-ln{ display:flex; justify-content:space-between; font-size:.82rem; color:var(--p-ink5); margin-bottom:4px; }
.pb-tot{ display:flex; justify-content:space-between; font-size:1.02rem; font-weight:700; color:var(--p-ink9); margin-top:6px; }
.pb-tot .pb-v{ font-family:var(--p-serif); }
.pb-err{ margin-top:12px; padding:10px 12px; border-radius:12px; background:#fdecea; color:#9c2b22; font-size:.82rem; }
.pb-foot{ display:flex; gap:10px; padding:16px 20px; border-top:1px solid var(--p-s1); margin-top:14px; }
.pb-btn{ flex:1; padding:12px; border-radius:12px; border:none; font-family:inherit; font-size:.9rem; font-weight:600; cursor:pointer; display:flex; align-items:center; justify-content:center; gap:8px; text-decoration:none; }
.pb-btn svg{ width:16px; height:16px; }
.pb-ghost{ background:#fff; color:var(--p-ink7); border:1px solid var(--p-s2); flex:0 0 auto; padding:12px 18px; }
.pb-prim{ background:var(--p-brand); color:#fff; box-shadow:0 10px 22px -12px rgba(74,111,165,.7); }
.pb-ok{ background:var(--p-teal7); color:#fff; box-shadow:0 10px 22px -12px rgba(47,122,110,.7); }
.pb-btn.dis{ opacity:.45; pointer-events:none; }
@media(max-width:680px){ .pb-overlay{ padding:0; } .pb-modal{ width:100%; max-width:100vw; min-height:100vh; border-radius:0; } }

/* Revenu */
.dash-revenue{ text-align:center; padding:6px 0 2px; }
.dash-revenue .amt{ font-family:var(--d-serif); font-size:2.4rem; color:var(--d-brand-dark); line-height:1; }
.dash-revenue .amt small{ font-size:1.1rem; color:var(--d-sage-400); }
.dash-revenue .cap{ font-size:.84rem; color:var(--d-ink-500); margin-top:6px; }
.dash-rev-bar{ height:9px; border-radius:6px; background:var(--d-sage-100); margin:16px 0 8px; overflow:hidden; }
.dash-rev-bar i{ display:block; height:100%; border-radius:6px; background:linear-gradient(90deg,var(--d-sage-400),var(--d-brand)); }
.dash-rev-split{ display:flex; justify-content:space-between; font-size:.78rem; color:var(--d-ink-500); }

/* Cloture */
.dash-todo-list{ list-style:none; display:flex; flex-direction:column; gap:4px; margin:0; padding:0; }
.dash-todo{ display:flex; align-items:flex-start; gap:12px; padding:11px 12px; border-radius:14px;
  transition:background .2s ease; text-decoration:none; }
.dash-todo:hover{ background:var(--d-cream-200); }
.dash-todo-ic{ width:30px; height:30px; border-radius:9px; flex-shrink:0; display:grid; place-items:center;
  background:var(--d-brand-soft); color:var(--d-brand-dark); }
.dash-todo-ic svg{ width:16px; height:16px; }
.dash-todo.urgent .dash-todo-ic{ background:var(--d-amber-50); color:var(--d-amber-700); }
.dash-todo-text{ font-size:.9rem; color:var(--d-ink-700); line-height:1.4; align-self:center; }
.dash-todo-text .who{ color:var(--d-ink-900); font-weight:600; }
.dash-todo-text .tagdue{ color:var(--d-amber-700); font-size:.76rem; font-weight:600; background:var(--d-amber-50);
  border:1px solid var(--d-amber-200); border-radius:6px; padding:1px 7px; margin-left:6px; }
.dash-todo-money{ margin-left:auto; align-self:center; font-family:var(--d-serif); color:var(--d-sage-700); font-size:.88rem; flex-shrink:0; }
.dash-todo-group{ font-size:.78rem; color:var(--d-ink-500); }
.dash-closing-empty{ display:flex; align-items:center; gap:10px; font-size:.9rem; color:var(--d-teal-700);
  background:var(--d-teal-50); border:1px solid var(--d-teal-200); border-radius:14px; padding:12px 14px; }
.dash-closing-empty svg{ width:18px; height:18px; }
.dash-closing-block + .dash-closing-block{ margin-top:14px; }
.dash-closing-lab{ font-size:.74rem; letter-spacing:.04em; text-transform:uppercase; color:var(--d-ink-500);
  font-weight:700; margin:0 0 4px 2px; }

/* Encouragement */
.dash-encourage{ margin-top:30px; border-radius:var(--d-r-lg); overflow:hidden; position:relative;
  background:linear-gradient(135deg,#eaf2fb 0%,#e3edf8 100%); border:1px solid var(--d-sage-200);
  border-left:5px solid var(--d-sage-400); padding:28px 36px; box-shadow:var(--d-shadow-soft); }
.dash-encourage .inner{ position:relative; z-index:2; max-width:640px; }
.dash-encourage h2{ font-family:var(--d-serif); font-size:1.5rem; font-weight:400; color:var(--d-sage-700); margin:0 0 8px; }
.dash-encourage p{ color:var(--d-ink-700); font-size:1rem; line-height:1.65; margin:0; font-style:italic; }
.dash-encourage-illus{ position:absolute; right:0; bottom:0; opacity:.85; pointer-events:none; }

@media(max-width:1040px){ .dash-columns{ grid-template-columns:1fr; } }
@media(max-width:680px){
  .dash-hero{ padding:26px 20px; }
  .dash-hero h1{ font-size:1.7rem; }
  .dash-focus-time{ font-size:1.6rem; }
  .dash-tl-rail{ width:46px; }
}

/* =====================================================================
   Lot fiche v18 — Fiche RDV + onglets d'action latéraux (cascade imbriquée).
   Corps partagé .fiche-* rendu par view.php (page) ET peek.php (popup).
   Réf : DesignPageMaquette/Leonard/fiche-onglets-lateraux-v18-2026-07-01.html.
   Police serif = Fraunces si auto-hébergée sous /fonts/, sinon Georgia (fallback).
   ===================================================================== */
.fiche-stage{ --f-brand:#4A6FA5; --f-brand-d:#2f4f80; --f-ink:#22344c; --f-ink2:#5a6b81; --f-muted:#93a1b3;
  --f-paleA:#e8f1fc; --f-paleB:#d3e3f5; --f-line:#eef2f8; --f-ok:#1f9d61; --f-warn:#c98a3f; --f-violet:#6a63d8;
  --f-tabc:#fff; --f-serif:"Fraunces",Georgia,"Times New Roman",serif;
  position:relative; display:flex; align-items:center; width:fit-content; max-width:100%; color:var(--f-ink); }

/* ===== Carte principale (coin bas-droit CARRÉ pour le raccord des onglets) ===== */
.fiche-A{ position:relative; z-index:3; display:flex; width:880px; max-width:96vw; min-height:560px; margin:0 auto;
  background:#fff; border-radius:30px 30px 0 30px; overflow:hidden;
  box-shadow:0 40px 72px -46px rgba(15,35,65,.5), 0 14px 30px -22px rgba(15,35,65,.32); }

/* ----- ZONE GAUCHE : ambiance (fondu clair, texte bleu foncé) ----- */
.fiche-left{ position:relative; width:43%; overflow:hidden; padding:26px 28px 24px; display:flex; flex-direction:column;
  background:linear-gradient(160deg,var(--f-paleA),var(--f-paleB)); }
.fiche-left .fiche-bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.92; }
.fiche-left .fiche-fade{ position:absolute; inset:0; background:linear-gradient(104deg,rgba(232,241,252,.97) 0%,rgba(232,241,252,.74) 40%,rgba(232,241,252,.14) 76%,rgba(232,241,252,0) 100%); }
.fiche-left>*{ position:relative; z-index:2; color:var(--f-brand-d); }
.fiche-lefthead{ display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.fiche-dateblock{ min-width:0; }
.fiche-dsm{ font-size:12.5px; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--f-brand); opacity:.85; }
.fiche-dnum{ font-family:var(--f-serif); font-size:62px; font-weight:500; line-height:.9; letter-spacing:-.01em; margin:3px 0 4px; }
.fiche-badges{ display:flex; flex-direction:column; gap:7px; align-items:flex-end; margin-top:3px; flex:none; }
.fiche-lpill{ font-size:12px; font-weight:600; padding:6px 12px; border-radius:999px; display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
.fiche-lpill svg{ width:14px; height:14px; }
.fiche-lpill.ok{ color:var(--f-ok); background:#e7f7ee; }
.fiche-lpill.warn{ color:var(--f-warn); background:#fcf3e2; }
.fiche-lpill.neutral{ color:var(--f-ink2); background:#eef2f8; }
.fiche-lpill.fam{ color:var(--f-brand-d); background:#eef4fc; }
.fiche-divd{ display:flex; align-items:center; gap:10px; margin:18px 0; }
.fiche-divd .l{ flex:1; height:1px; background:linear-gradient(90deg,transparent,#b9cde6,transparent); }
.fiche-divd .d{ width:6px; height:6px; border-radius:50%; background:#b9cde6; }
.fiche-time{ font-family:var(--f-serif); font-size:41px; font-weight:500; display:flex; align-items:center; gap:14px; line-height:1; }
.fiche-time svg{ width:26px; height:26px; color:var(--f-brand); opacity:.75; }
.fiche-svc{ display:flex; align-items:center; gap:10px; font-size:15px; color:var(--f-ink); font-weight:500; margin-top:18px; }
.fiche-chip{ font-size:12px; color:var(--f-ink2); background:#eaf1fa; border-radius:999px; padding:4px 11px; font-weight:500; }
.fiche-amt{ font-family:var(--f-serif); font-size:42px; font-weight:500; margin:13px 0 2px; letter-spacing:-.01em; }
.fiche-brk{ font-size:13px; color:var(--f-ink2); }
.fiche-ronds{ display:flex; align-items:flex-start; justify-content:space-between; margin-top:auto; padding:8px 6px 0; }
.fiche-rond{ margin-top:26px; text-decoration:none; }
.fiche-rond.go{ margin-top:0; }
.fiche-rc{ width:86px; height:86px; border-radius:50%; background:#fff; display:flex; flex-direction:column; align-items:center;
  justify-content:center; gap:3px; color:var(--f-brand-d); box-shadow:0 16px 32px -16px rgba(30,60,100,.55); cursor:pointer;
  transition:transform .15s ease; }
.fiche-rc svg{ width:24px; height:24px; }
.fiche-rlbl{ font-size:12px; font-weight:600; }
.fiche-rond:hover .fiche-rc{ transform:translateY(-3px); }
.fiche-rond.go .fiche-rc{ width:108px; height:108px; background:linear-gradient(135deg,#5c86dc,#3f63c4); color:#fff;
  box-shadow:0 24px 44px -18px rgba(60,90,190,.72); }
.fiche-rond.go .fiche-rc svg{ width:30px; height:30px; color:#fff; }
.fiche-rond.go .fiche-rlbl{ font-size:13px; color:#fff; }

/* ----- ZONE DROITE : contenu ----- */
.fiche-right{ width:57%; padding:24px 28px; position:relative; }
.fiche-rtop{ position:absolute; top:20px; right:22px; display:flex; gap:8px; z-index:3; }
.fiche-rbtn{ width:34px; height:34px; border-radius:50%; background:#f1f5fa; border:none; display:grid; place-items:center;
  color:var(--f-muted); cursor:pointer; text-decoration:none; }
.fiche-rbtn svg{ width:17px; height:17px; }
.fiche-rbtn:hover{ background:#e6edf6; color:var(--f-brand-d); }

/* Frise de parcours */
.fiche-pipe{ display:flex; align-items:flex-start; }
.fiche-right.has-rtop .fiche-pipe{ padding-right:86px; } /* place pour agrandir + fermer */
.fiche-pstep{ flex:1; display:flex; flex-direction:column; align-items:center; gap:7px; position:relative; }
.fiche-pdot{ width:34px; height:34px; border-radius:50%; display:grid; place-items:center; background:#eef2f7;
  color:#aebccd; z-index:2; border:2px solid #eef2f7; }
.fiche-pdot svg{ width:16px; height:16px; }
.fiche-pstep.done .fiche-pdot{ background:var(--f-brand); color:#fff; border-color:var(--f-brand); }
.fiche-pstep.now .fiche-pdot{ background:#fff; color:var(--f-brand); border-color:var(--f-brand); box-shadow:0 0 0 4px rgba(74,111,165,.16); }
.fiche-pl{ font-size:11px; color:var(--f-muted); font-weight:500; text-align:center; }
.fiche-pstep.done .fiche-pl, .fiche-pstep.now .fiche-pl{ color:var(--f-brand-d); }
.fiche-pline{ position:absolute; top:16px; left:-50%; width:100%; height:2px; background:#e7ecf3; z-index:1; }
.fiche-pstep.done .fiche-pline{ background:var(--f-brand); }
.fiche-pstep:first-child .fiche-pline{ display:none; }

/* Adresse + mini-carte */
.fiche-block{ border:1px solid var(--f-line); border-radius:16px; padding:13px 15px; margin-top:20px; display:flex; align-items:center; gap:14px; }
.fiche-pin{ width:38px; height:38px; border-radius:50%; background:#eef4fb; color:var(--f-brand); display:grid; place-items:center; flex:none; }
.fiche-pin svg{ width:18px; height:18px; }
.fiche-block-txt{ flex:1; min-width:0; }
.fiche-a1{ font-size:10.5px; color:var(--f-muted); font-weight:700; text-transform:uppercase; letter-spacing:.05em; }
.fiche-a2{ font-size:13.5px; color:var(--f-ink); margin-top:2px; }
.fiche-map{ width:118px; height:56px; border-radius:11px; overflow:hidden; flex:none; border:1px solid var(--f-line); }
.fiche-map svg{ display:block; width:118px; height:56px; }

/* Mot du client (papier) */
.fiche-note{ background:linear-gradient(180deg,#fff9ef,#fdf3e2); border:1px solid #f1e2bf; border-radius:16px; padding:14px 16px;
  margin-top:13px; display:flex; gap:13px; position:relative; overflow:hidden; }
.fiche-q{ width:38px; height:38px; border-radius:50%; background:#fff; color:var(--f-warn); display:grid; place-items:center; flex:none;
  box-shadow:0 4px 12px -6px rgba(150,110,30,.4); }
.fiche-q svg{ width:18px; height:18px; }
.fiche-nl{ font-size:10.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--f-warn); }
.fiche-note p{ margin:5px 0 0; font-size:13.5px; color:#6a5a2e; font-style:italic; line-height:1.5; max-width:84%; font-family:var(--f-serif); position:relative; z-index:2; }
.fiche-leaf{ position:absolute; right:-4px; bottom:-8px; opacity:.5; color:#e6c877; }

/* Personnes (intake par existence seulement) */
.fiche-plab{ font-size:10.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--f-muted);
  display:flex; align-items:center; gap:6px; margin:20px 0 8px; }
.fiche-plab svg{ width:13px; height:13px; }
.fiche-prow{ display:flex; align-items:center; gap:13px; border:1px solid var(--f-line); border-radius:14px; padding:11px 13px; margin-bottom:9px; }
.fiche-av{ width:38px; height:38px; border-radius:50%; display:grid; place-items:center; font-weight:700; font-size:12px; flex:none;
  color:var(--f-brand-d); background:#eef4fb; }
.fiche-person-main{ min-width:0; }
.fiche-pn{ font-size:13.5px; font-weight:600; }
.fiche-pn small{ color:var(--f-muted); font-weight:500; }
.fiche-ps{ font-size:12px; color:var(--f-muted); }
.fiche-pk{ margin-left:auto; flex-shrink:0; font-size:11.5px; font-weight:700; display:inline-flex; align-items:center; gap:5px; padding:5px 10px; border-radius:999px; }
.fiche-pk svg{ width:13px; height:13px; }
.fiche-pk.ok{ color:var(--f-ok); background:#e7f7ee; }
.fiche-pk.warn{ color:var(--f-warn); background:#fcf3e2; }

/* ===== Onglets d'action latéraux : pile ANCRÉE EN BAS, imbriquée en cascade ===== */
.fiche-railtabs{ position:absolute; left:calc(100% - 9px); bottom:0; z-index:1; }
.fiche-tabs{ display:flex; flex-direction:column; }
.fiche-tab-form{ display:contents; } /* le bouton devient l'item de la pile (chevauchement uniforme) */
.fiche-tab{ position:relative; z-index:var(--z,1); display:flex; align-items:center; gap:10px; width:150px; min-height:74px;
  margin-top:-10px; padding:10px 14px 10px 24px; border:1px solid #eef2f7; border-left:none; border-right:none;
  border-radius:0 30px 30px 0; background:linear-gradient(155deg,#6d8ec6,#43689f); text-decoration:none; text-align:left;
  font-family:inherit; box-shadow:0 9px 16px -8px rgba(30,55,95,.26); cursor:pointer;
  transition:transform .2s cubic-bezier(.33,0,.2,1),box-shadow .2s ease,filter .2s ease; }
.fiche-tab:first-child{ margin-top:0; }
/* liseré = fond coloré de l'onglet révélé sur ~6px à droite par la face blanche (::before) */
.fiche-tab.done{ background:linear-gradient(155deg,#34b478,#178a52); }
.fiche-tab.vio{ background:linear-gradient(155deg,#8079eb,#574fc6); }
.fiche-tab.abs{ background:linear-gradient(155deg,#e59191,#cf6c6c); }
.fiche-tab::before{ content:''; position:absolute; top:0; bottom:0; left:0; right:6px; z-index:1; border-radius:0 24px 24px 0; background:var(--f-tabc); }
.fiche-tab.done::before{ background:linear-gradient(90deg,#f1faf5,var(--f-tabc) 60%); }
.fiche-tab.vio::before{ background:linear-gradient(90deg,#f6f5fd,var(--f-tabc) 60%); }
.fiche-tab.abs::before{ background:linear-gradient(90deg,#fdf2f2,var(--f-tabc) 60%); }
.fiche-tab>*{ position:relative; z-index:2; }
.fiche-tab-ic{ width:23px; height:23px; flex:none; color:var(--f-brand); transition:transform .2s ease; }
.fiche-tab.done .fiche-tab-ic{ color:var(--f-ok); }
.fiche-tab.vio .fiche-tab-ic{ color:var(--f-violet); }
.fiche-tab.abs .fiche-tab-ic{ color:#c8605c; }
.fiche-tl{ font-size:13.5px; font-weight:600; color:var(--f-ink); line-height:1.2; }
.fiche-tab.done .fiche-tl{ color:var(--f-ok); }
.fiche-tab.vio .fiche-tl{ color:var(--f-violet); }
.fiche-tab.abs .fiche-tl{ color:#bf5551; }
/* hover premium : sort de la pile, avance +8px, se soulève, ombre + liseré + icône (aucun reflow) */
.fiche-tab:hover{ opacity:1; transform:translate(8px,-2px); z-index:40; box-shadow:0 16px 30px -12px rgba(30,55,95,.42); filter:saturate(1.14) brightness(1.05); }
.fiche-tab:hover .fiche-tab-ic{ transform:scale(1.12); }

/* ----- Popup shell (modale) : panneau = wrapper NU, ne clippe PAS les onglets ----- */
.fiche-modal{ position:fixed; inset:0; z-index:1000; display:none; padding:24px 24px 24px 48px; overflow:auto;
  background:rgba(18,30,52,.16); backdrop-filter:blur(7px) saturate(1.05); -webkit-backdrop-filter:blur(7px) saturate(1.05); }
.fiche-modal.open{ display:flex; align-items:center; justify-content:flex-start; animation:fiche-fade .18s ease-out; }
.fiche-modal-panel{ position:relative; width:auto; max-width:96vw; margin:auto 0;
  background:transparent; border:none; box-shadow:none; border-radius:0; padding:0; overflow:visible; }
.fiche-modal-body{ overflow:visible; }
.fiche-modal.open .fiche-A{ animation:fiche-pop .18s cubic-bezier(.34,1.2,.5,1); }
@keyframes fiche-fade{ from{ opacity:0; } to{ opacity:1; } }
@keyframes fiche-pop{ from{ opacity:0; transform:scale(.97); } to{ opacity:1; transform:none; } }
/* Dans le popup : on borne la hauteur de la fiche et la colonne droite scrolle. */
.fiche-modal .fiche-A{ max-height:calc(100vh - 48px); }
.fiche-modal .fiche-right{ overflow-y:auto; }
.fiche-modal-loading{ text-align:center; color:#8694a6; padding:60px 30px; font-size:1.4rem; }

/* ----- Responsive : onglets en ruban empilé sous la carte (fallback mobile propre) ----- */
@media(max-width:900px){
  .fiche-stage{ flex-direction:column; align-items:stretch; }
  .fiche-A{ flex-direction:column; width:100%; min-height:0; border-radius:24px; }
  .fiche-left{ width:100%; }
  .fiche-right{ width:100%; }
  .fiche-right.has-rtop .fiche-pipe{ padding-right:0; }
  .fiche-modal .fiche-A{ max-height:none; }
  .fiche-modal .fiche-right{ overflow-y:visible; }
  /* onglets : deviennent une liste pleine largeur sous la carte */
  .fiche-railtabs{ position:static; margin-top:10px; }
  .fiche-tabs{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:8px; }
  .fiche-tab{ width:auto; min-height:56px; margin-top:0; border:1px solid #e6ecf4; border-radius:14px; justify-content:flex-start; padding:12px 16px; }
  .fiche-tab::before{ display:none; }
  .fiche-tab{ background:#fff; }
  .fiche-tab.done{ background:#f1faf5; } .fiche-tab.vio{ background:#f6f5fd; } .fiche-tab.abs{ background:#fdf2f2; }
  .fiche-tab:hover{ transform:none; box-shadow:0 8px 18px -10px rgba(30,55,95,.35); }
}
@media(max-width:680px){
  .fiche-modal{ padding:0; }
  .fiche-modal-panel{ width:100%; max-width:100vw; }
  .fiche-A{ max-width:100vw; border-radius:0; }
  .fiche-rtop .fiche-rbtn[href]{ display:none; } /* mobile : pas d'agrandir (feuille plein écran) */
}

/* ============================================================================
   Lot page-new — page « Nouveau rendez-vous » (façon Victor). Namespace .apt-*
   (aucune collision avec .pb-* du popup ni .dash-*). Jetons --d-* scopés sur
   .apt-page. Design lifté de DesignPageMaquette/Leonard/booking-page-therapeute.
   ============================================================================ */
.apt-page{
  --d-cream-200:#f1f6fc; --d-sage-100:#eef3fb; --d-sage-200:#dbe6f4; --d-sage-300:#bcd0ea;
  --d-sage-400:#7b9fd1; --d-sage-700:#345585;
  --d-brand:#4A6FA5; --d-brand-dark:#3a5a86; --d-brand-soft:#e6edf6;
  --d-teal-50:#e3f4f1; --d-teal-200:#bfe3dc; --d-teal-500:#3f9e8c; --d-teal-700:#2f7a6e;
  --d-rose-50:#fdecec; --d-rose-500:#d06a6a; --d-amber-50:#fbf3e2; --d-amber-700:#9c6f1f;
  --d-violet-50:#f0edfb; --d-violet-600:#6a5fc7;
  --d-ink-900:#27384f; --d-ink-700:#46596f; --d-ink-500:#7e8ea2; --d-ink-300:#aebccd;
  --d-r-lg:20px; --d-shadow-card:0 14px 34px -24px rgba(45,70,110,.42); --d-shadow-hover:0 22px 48px -22px rgba(74,111,165,.48);
  --d-serif:Georgia,"Times New Roman",serif;
  color:var(--d-ink-900);
}
/* This page carries its own premium header (.apt-hd) — hide the layout's plain title. */
.page:has(> #apt-page) > h1.page-title{ display:none; }
.apt-page *{ box-sizing:border-box; }
.apt-page svg{ width:16px; height:16px; flex-shrink:0; }
.apt-page button{ font-family:inherit; cursor:pointer; }
.apt-nojs{ margin-bottom:14px; padding:12px 16px; border-radius:12px; background:#fbf3e2; color:#9c6f1f; font-size:.9rem; }
.apt-nojs a{ color:#9c6f1f; font-weight:600; }

.apt-shell{ background:#fff; border:1px solid #e1ebf6; border-radius:22px; box-shadow:0 30px 70px -50px rgba(45,70,110,.5); overflow:hidden; }
.apt-hd{ display:flex; align-items:center; gap:16px; padding:22px 28px 14px; }
.apt-hdic{ width:48px; height:48px; border-radius:14px; background:linear-gradient(135deg,var(--d-brand),var(--d-brand-dark)); color:#fff; display:grid; place-items:center; flex-shrink:0; box-shadow:0 10px 20px -8px var(--d-brand); }
.apt-hdic svg{ width:23px; height:23px; }
.apt-hd h1{ font-family:var(--d-serif); font-size:1.5rem; margin:0 0 3px; font-weight:600; }
.apt-hd p{ margin:0; color:var(--d-ink-500); font-size:.9rem; }

.apt-steps{ display:flex; align-items:center; padding:4px 30px 18px; gap:6px; }
.apt-step{ display:flex; align-items:center; gap:9px; }
.apt-step .apt-n{ width:28px; height:28px; border-radius:50%; display:grid; place-items:center; font-size:.82rem; font-weight:700; background:var(--d-sage-100); color:var(--d-ink-500); flex-shrink:0; transition:.25s; }
.apt-step .apt-n svg{ width:14px; height:14px; }
.apt-step .apt-t{ font-size:.9rem; font-weight:600; color:var(--d-ink-300); white-space:nowrap; }
.apt-step.on .apt-n{ background:var(--d-brand); color:#fff; box-shadow:0 6px 16px -6px var(--d-brand); }
.apt-step.on .apt-t{ color:var(--d-ink-900); }
.apt-step.done .apt-n{ background:var(--d-teal-500); color:#fff; }
.apt-step.done .apt-t{ color:var(--d-ink-700); }
.apt-step.apt-clk{ cursor:pointer; }
.apt-line{ flex:1; height:2px; background:var(--d-sage-100); margin:0 4px; border-radius:2px; min-width:18px; }
.apt-line.done{ background:var(--d-teal-200); }

.apt-body{ display:grid; grid-template-columns:1fr 336px; border-top:1px solid var(--d-sage-100); }
.apt-main{ padding:22px 28px 14px; min-height:480px; background:linear-gradient(180deg,#fbfdff,#f5f9ff); }
.apt-aside{ background:linear-gradient(180deg,#edf3fb,#e2ecf8); border-left:1px solid var(--d-sage-100); padding:22px 20px; }

.apt-ctx{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:20px; }
.apt-ctxc{ display:flex; align-items:center; gap:13px; background:linear-gradient(135deg,#e9f1fb,#dae6f5); border:1px solid var(--d-sage-300); border-radius:var(--d-r-lg); padding:14px 16px; }
.apt-ctxc .apt-cic{ width:42px; height:42px; border-radius:13px; background:#fff; color:var(--d-brand-dark); display:grid; place-items:center; font-weight:700; flex-shrink:0; box-shadow:0 4px 10px -5px rgba(45,70,110,.4); }
.apt-ck{ font-size:.66rem; text-transform:uppercase; letter-spacing:.08em; color:var(--d-sage-700); font-weight:700; }
.apt-cv{ font-size:.96rem; font-weight:600; margin-top:2px; }
.apt-cs{ font-size:.78rem; color:var(--d-ink-500); }
.apt-cedit{ margin-left:auto; display:inline-flex; align-items:center; gap:5px; font-size:.8rem; color:var(--d-brand); font-weight:600; background:none; border:none; }

.apt-panel{ background:#fff; border:1px solid var(--d-sage-200); border-radius:var(--d-r-lg); padding:22px 24px; box-shadow:var(--d-shadow-card); }
.apt-panel h2{ font-family:var(--d-serif); font-size:1.2rem; margin:0 0 4px; font-weight:600; }
.apt-psub{ font-size:.86rem; color:var(--d-ink-500); margin:0 0 16px; }
.apt-lab{ display:block; font-size:.76rem; font-weight:600; color:var(--d-ink-700); margin:0 0 6px; }
.apt-fld{ width:100%; padding:11px 13px; border:1px solid var(--d-sage-200); border-radius:11px; font-size:.92rem; font-family:inherit; color:var(--d-ink-900); background:#fff; transition:.15s; }
.apt-fld:focus{ outline:none; border-color:var(--d-brand); box-shadow:0 0 0 3px var(--d-brand-soft); }
.apt-row2{ display:grid; grid-template-columns:1fr 1fr; gap:11px; }
.apt-mt{ margin-top:14px; } .apt-mt8{ margin-top:8px; }
.apt-block{ border:1px solid var(--d-sage-200); border-radius:16px; padding:16px 18px; margin-bottom:16px; }
.apt-bh{ font-size:.94rem; font-weight:700; margin:0 0 12px; display:flex; align-items:center; gap:8px; }
.apt-bh svg{ width:17px; height:17px; color:var(--d-brand); }
.apt-req{ color:var(--d-rose-500); } .apt-opt{ color:var(--d-ink-300); }

.apt-seg{ display:inline-flex; border:1px solid var(--d-sage-200); border-radius:12px; overflow:hidden; }
.apt-seg button{ padding:10px 18px; border:none; background:#fff; font-size:.88rem; font-weight:600; color:var(--d-ink-500); display:flex; align-items:center; gap:8px; transition:.15s; }
.apt-seg button svg{ width:16px; height:16px; }
.apt-seg button.on{ background:var(--d-brand); color:#fff; }
.apt-zone{ display:flex; align-items:center; gap:8px; margin-top:12px; padding:10px 13px; border-radius:11px; font-size:.85rem; }
.apt-zone svg{ width:16px; height:16px; }
.apt-zone.ok{ background:var(--d-teal-50); color:var(--d-teal-700); }
.apt-zone.ko{ background:var(--d-rose-50); color:var(--d-rose-500); }
.apt-zone.neutral{ background:var(--d-sage-100); color:var(--d-ink-500); }
.apt-zone.warn{ background:var(--d-amber-50); color:var(--d-amber-700); }

.apt-search{ position:relative; }
.apt-search .apt-ic{ position:absolute; left:13px; top:50%; transform:translateY(-50%); color:var(--d-ink-300); }
.apt-search .apt-fld{ padding-left:40px; }
.apt-results{ margin-top:10px; display:flex; flex-direction:column; gap:7px; }
.apt-nores{ padding:12px 4px; color:var(--d-ink-300); font-size:.85rem; }
.apt-res{ display:flex; align-items:center; gap:13px; padding:11px 14px; border:1px solid var(--d-sage-100); border-radius:13px; background:#fff; transition:.14s; text-align:left; width:100%; }
.apt-res:hover{ border-color:var(--d-brand); background:var(--d-sage-100); }
.apt-res.sel{ border-color:var(--d-brand); background:var(--d-brand-soft); box-shadow:0 0 0 3px var(--d-brand-soft); }
.apt-ava{ width:40px; height:40px; border-radius:12px; background:var(--d-sage-200); color:var(--d-brand-dark); display:grid; place-items:center; font-weight:700; font-size:.9rem; flex-shrink:0; }
.apt-res .apt-nm{ font-size:.95rem; font-weight:600; } .apt-res .apt-sub2{ font-size:.8rem; color:var(--d-ink-500); }
.apt-res .apt-tag{ margin-left:auto; font-size:.7rem; color:var(--d-teal-700); background:var(--d-teal-50); padding:4px 10px; border-radius:999px; font-weight:600; }
.apt-sep{ display:flex; align-items:center; gap:14px; margin:16px 0; color:var(--d-ink-300); font-size:.78rem; }
.apt-sep::before,.apt-sep::after{ content:''; height:1px; flex:1; background:var(--d-sage-100); }
.apt-newbtn{ display:flex; align-items:center; justify-content:center; gap:9px; width:100%; padding:12px; border:1px dashed var(--d-sage-300); border-radius:13px; color:var(--d-brand); background:var(--d-sage-100); font-size:.9rem; font-weight:600; }
.apt-newcli{ border:1px solid var(--d-brand); border-radius:15px; padding:16px 18px; background:linear-gradient(180deg,#fbfdff,#f4f9ff); box-shadow:0 0 0 3px var(--d-brand-soft); }
.apt-newcli .apt-nh{ font-size:.9rem; font-weight:700; margin:0 0 12px; display:flex; align-items:center; gap:8px; }
.apt-newcli .apt-nh svg{ width:15px; height:15px; color:var(--d-brand); }
.apt-newcli .apt-nh .apt-x{ margin-left:auto; background:none; border:none; font-size:.8rem; color:var(--d-ink-500); }

.apt-pcard{ border:1px solid var(--d-sage-200); border-radius:15px; padding:13px 15px; margin-top:11px; background:#fff; transition:.15s; position:relative; }
.apt-pcard.tit{ background:linear-gradient(135deg,#f1f6fd,#eaf1fb); border-color:var(--d-sage-300); }
.apt-pcard::before{ content:''; position:absolute; left:0; top:14px; bottom:14px; width:3px; border-radius:3px; background:var(--d-sage-300); }
.apt-pcard.tit::before{ background:var(--d-brand); }
.apt-prow{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.apt-pava{ width:32px; height:32px; border-radius:10px; background:var(--d-sage-200); color:var(--d-brand-dark); display:grid; place-items:center; font-weight:700; font-size:.78rem; flex-shrink:0; }
.apt-pcard.tit .apt-pava{ background:var(--d-brand); color:#fff; }
.apt-pnm{ font-size:.94rem; font-weight:600; }
.apt-ptag{ font-size:.66rem; color:#fff; background:var(--d-brand); padding:3px 9px; border-radius:999px; font-weight:600; }
.apt-pfld{ padding:8px 11px; border:1px solid var(--d-sage-200); border-radius:9px; font-size:.88rem; font-family:inherit; width:130px; }
.apt-pdel{ margin-left:auto; width:26px; height:26px; border-radius:50%; display:grid; place-items:center; color:var(--d-ink-500); background:var(--d-sage-100); border:none; transition:.14s; }
.apt-pdel:hover{ background:var(--d-rose-50); color:var(--d-rose-500); }
.apt-pdel svg{ width:14px; height:14px; }
.apt-srow{ display:flex; align-items:center; gap:10px; margin-top:11px; flex-wrap:wrap; }
.apt-psvc{ width:240px; flex:none; padding:9px 12px; border:1px solid var(--d-sage-200); border-radius:10px; font-size:.9rem; font-family:inherit; color:var(--d-ink-900); background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%237e8ea2' stroke-width='2'%3E%3Cpath d='m2 4 4 4 4-4'/%3E%3C/svg%3E") no-repeat right 12px center; -webkit-appearance:none; appearance:none; }
.apt-durw{ display:inline-flex; align-items:center; gap:5px; }
.apt-durc{ padding:7px 11px; border:1px solid var(--d-sage-200); border-radius:9px; font-size:.82rem; color:var(--d-ink-700); background:#fff; transition:.12s; }
.apt-durc.on{ background:var(--d-brand); color:#fff; border-color:var(--d-brand); }
.apt-dmin{ font-size:.76rem; color:var(--d-ink-500); }
.apt-pprice{ font-family:var(--d-serif); font-size:1.02rem; color:var(--d-ink-900); margin-left:auto; min-width:96px; text-align:right; }
.apt-pprice.apt-muted{ color:var(--d-ink-300); }
.apt-ptax{ font-family:inherit; font-size:.68rem; font-weight:600; color:var(--d-ink-500); }
.apt-muted{ color:var(--d-ink-300); }
.apt-addp{ display:flex; align-items:center; justify-content:center; gap:9px; width:100%; margin-top:12px; padding:11px; border:1px dashed var(--d-sage-300); border-radius:13px; color:var(--d-brand); background:transparent; font-size:.88rem; font-weight:600; transition:.14s; }
.apt-addp:hover{ background:var(--d-sage-100); border-color:var(--d-brand); }

.apt-toggle{ display:inline-flex; align-items:center; gap:8px; font-size:.82rem; color:var(--d-ink-700); cursor:pointer; user-select:none; }
.apt-toggle input{ position:absolute; opacity:0; width:0; height:0; }
.apt-toggle .apt-tk{ width:36px; height:21px; border-radius:999px; background:var(--d-sage-300); position:relative; transition:.2s; flex-shrink:0; }
.apt-toggle .apt-tk::after{ content:''; position:absolute; top:2px; left:2px; width:17px; height:17px; border-radius:50%; background:#fff; transition:.22s cubic-bezier(.34,1.4,.6,1); box-shadow:0 1px 3px rgba(20,40,70,.35); }
.apt-toggle input:checked + .apt-tk{ background:var(--d-brand); }
.apt-toggle input:checked + .apt-tk::after{ transform:translateX(15px); }

.apt-tabs{ display:flex; gap:6px; margin-bottom:16px; }
.apt-tab{ display:flex; align-items:center; gap:8px; padding:9px 15px; border:none; background:none; font-size:.9rem; font-weight:600; color:var(--d-ink-500); border-bottom:2px solid transparent; }
.apt-tab.on{ color:var(--d-brand); border-bottom-color:var(--d-brand); }
.apt-quick{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:18px; }
.apt-qk{ text-align:left; padding:14px 15px; border:1px solid var(--d-sage-200); border-radius:15px; background:#fff; position:relative; transition:.14s; }
.apt-qk:hover{ border-color:var(--d-brand); box-shadow:var(--d-shadow-hover); transform:translateY(-2px); }
.apt-qk.on{ border-color:var(--d-brand); background:var(--d-brand-soft); box-shadow:0 0 0 2px var(--d-brand-soft); }
.apt-qk[disabled]{ opacity:.5; pointer-events:none; }
.apt-qk .apt-qkk{ display:inline-flex; align-items:center; gap:6px; font-size:.66rem; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--d-sage-700); }
.apt-qk .apt-qkk svg{ width:13px; height:13px; }
.apt-qkd{ font-size:.86rem; color:var(--d-ink-700); margin-top:8px; }
.apt-qkt{ font-family:var(--d-serif); font-size:1.5rem; color:var(--d-brand-dark); line-height:1; margin:3px 0 0; }
.apt-qkr{ position:absolute; top:13px; right:13px; width:19px; height:19px; border-radius:50%; border:2px solid var(--d-sage-300); }
.apt-qk.on .apt-qkr{ border-color:var(--d-brand); background:var(--d-brand); box-shadow:inset 0 0 0 3px #fff; }
.apt-timeline{ display:flex; align-items:flex-start; gap:2px; padding:4px 0; }
.apt-tlnav{ width:32px; height:32px; border-radius:50%; border:1px solid var(--d-sage-200); background:#fff; color:var(--d-brand); display:grid; place-items:center; flex-shrink:0; margin-top:12px; }
.apt-tltrack{ flex:1; display:flex; align-items:flex-start; }
.apt-day{ flex:1; min-width:60px; text-align:center; background:none; border:none; padding:0 2px; }
.apt-day .apt-dlab{ font-size:.72rem; font-weight:600; color:var(--d-ink-700); } .apt-day.closed .apt-dlab{ color:var(--d-rose-500); }
.apt-drow{ height:24px; display:flex; align-items:center; justify-content:center; position:relative; }
.apt-drow::before{ content:''; position:absolute; left:-50%; right:-50%; top:50%; height:2px; background:var(--d-sage-100); z-index:0; }
.apt-day:first-child .apt-drow::before{ left:50%; } .apt-day:last-child .apt-drow::before{ right:50%; }
.apt-dot{ width:13px; height:13px; border-radius:50%; background:var(--d-teal-500); position:relative; z-index:1; border:3px solid #fff; box-shadow:0 0 0 1px var(--d-teal-200); }
.apt-day.closed .apt-dot{ background:var(--d-rose-500); box-shadow:0 0 0 1px var(--d-rose-500); }
.apt-day.full .apt-dot{ background:var(--d-ink-300); box-shadow:0 0 0 1px var(--d-sage-300); }
.apt-day.on .apt-dot{ background:var(--d-brand); box-shadow:0 0 0 4px var(--d-brand-soft); transform:scale(1.15); }
.apt-dcnt{ font-size:.66rem; color:var(--d-ink-500); margin-top:4px; line-height:1.3; }
.apt-dtime{ font-size:.7rem; color:var(--d-ink-700); font-weight:600; } .apt-day.on .apt-dlab{ color:var(--d-brand-dark); }
.apt-monthlink{ text-align:right; font-size:.8rem; color:var(--d-brand); font-weight:600; margin:8px 2px 0; cursor:pointer; }
.apt-cal{ border:1px solid var(--d-sage-200); border-radius:15px; padding:14px; background:#fff; }
.apt-calh{ display:flex; align-items:center; justify-content:center; gap:14px; margin-bottom:10px; font-family:var(--d-serif); font-size:1.05rem; }
.apt-calh svg{ width:18px; height:18px; color:var(--d-brand); cursor:pointer; }
.apt-caldow{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; margin-bottom:6px; }
.apt-caldow span{ text-align:center; font-size:.68rem; font-weight:700; color:var(--d-ink-300); }
.apt-calgrid{ display:grid; grid-template-columns:repeat(7,1fr); gap:5px; }
.apt-cell{ aspect-ratio:1; border:1px solid transparent; border-radius:11px; display:flex; flex-direction:column; align-items:center; justify-content:center; background:var(--d-sage-100); gap:1px; }
.apt-cell .apt-cn{ font-size:.9rem; font-weight:600; }
.apt-cfree{ font-size:.6rem; font-weight:700; color:var(--d-teal-700); line-height:1; }
.apt-cell.empty{ background:none; }
.apt-cell.past{ background:none; } .apt-cell.past .apt-cn{ color:var(--d-ink-300); }
.apt-cell.closed{ background:var(--d-rose-50); } .apt-cell.closed .apt-cn{ color:var(--d-rose-500); } .apt-cell.closed .apt-cfree{ color:var(--d-rose-500); font-weight:600; }
.apt-cell.avail{ cursor:pointer; transition:.12s; } .apt-cell.avail:hover{ background:var(--d-brand-soft); border-color:var(--d-sage-300); }
.apt-cell.on{ background:var(--d-brand); } .apt-cell.on .apt-cn{ color:#fff; } .apt-cell.on .apt-cfree{ color:#fff; }
/* FIX 3 — repère discret « au-delà de la fenêtre de réservation en ligne » (non bloquant) */
.apt-day.beyond .apt-dot{ box-shadow:0 0 0 1px var(--d-amber-700), 0 0 0 4px var(--d-amber-50); }
.apt-cell.beyond{ position:relative; }
.apt-cell.beyond::after{ content:''; position:absolute; top:4px; right:4px; width:5px; height:5px; border-radius:50%; background:var(--d-amber-700); }

.apt-buckets{ display:grid; grid-template-columns:1fr 1.4fr 1fr; gap:16px; margin-top:16px; background:var(--d-cream-200); border-radius:15px; padding:15px; }
.apt-bkh{ display:flex; align-items:center; gap:7px; font-size:.8rem; font-weight:600; color:var(--d-ink-700); margin-bottom:9px; }
.apt-bkh svg{ width:15px; height:15px; color:var(--d-sage-400); }
.apt-bkslots{ display:flex; flex-wrap:wrap; gap:7px; }
.apt-slot{ padding:8px 13px; border:1px solid var(--d-sage-200); border-radius:10px; font-size:.85rem; color:var(--d-ink-700); background:#fff; transition:.12s; }
.apt-slot::after{ content:''; display:block; width:5px; height:5px; border-radius:50%; background:var(--d-teal-500); margin:5px auto 0; }
.apt-slot:hover{ border-color:var(--d-brand); } .apt-slot.on{ background:var(--d-brand); color:#fff; border-color:var(--d-brand); } .apt-slot.on::after{ background:#fff; }
.apt-bkempty{ font-size:.8rem; color:var(--d-ink-300); display:flex; align-items:center; gap:7px; padding:9px 12px; border:1px dashed var(--d-sage-200); border-radius:10px; }
.apt-empty{ font-size:.86rem; color:var(--d-ink-500); padding:16px; text-align:center; border:1px dashed var(--d-sage-200); border-radius:12px; }
.apt-selbar{ display:flex; align-items:center; gap:10px; margin-top:15px; padding:12px 15px; border-radius:12px; background:linear-gradient(135deg,var(--d-brand),var(--d-brand-dark)); color:#fff; font-size:.9rem; }
.apt-selbar .apt-loc{ margin-left:auto; display:inline-flex; align-items:center; gap:6px; font-size:.8rem; opacity:.85; }

.apt-confrow{ display:flex; align-items:center; gap:13px; padding:13px 4px; border-bottom:1px solid var(--d-sage-100); }
.apt-confrow:last-of-type{ border-bottom:none; }
.apt-confrow .apt-cic{ width:36px; height:36px; border-radius:11px; background:var(--d-brand-soft); color:var(--d-brand); display:grid; place-items:center; flex-shrink:0; }
.apt-confrow .apt-ck{ font-size:.72rem; color:var(--d-ink-500); } .apt-confrow .apt-cv{ font-size:.96rem; font-weight:600; }
.apt-cright{ margin-left:auto; text-align:right; font-family:var(--d-serif); font-size:.9rem; }
.apt-cright small{ color:var(--d-ink-500); font-size:.8rem; }
.apt-conftax{ background:var(--d-sage-100); border-radius:13px; padding:14px 16px; margin-top:8px; }
.apt-conftax .apt-tl{ display:flex; justify-content:space-between; font-size:.86rem; color:var(--d-ink-500); margin-bottom:5px; }
.apt-conftax .apt-tt{ display:flex; justify-content:space-between; font-size:1.05rem; font-weight:700; color:var(--d-ink-900); margin-top:7px; padding-top:9px; border-top:1px solid var(--d-sage-200); }
.apt-conftax .apt-tt span:last-child{ font-family:var(--d-serif); }
.apt-success{ text-align:center; padding:38px 20px; }
.apt-sic{ width:72px; height:72px; border-radius:50%; background:var(--d-teal-50); color:var(--d-teal-700); display:grid; place-items:center; margin:0 auto 14px; }
.apt-sic svg{ width:36px; height:36px; } .apt-success h2{ font-family:var(--d-serif); font-size:1.4rem; margin:0 0 6px; } .apt-success p{ color:var(--d-ink-500); margin:0; }

.apt-ask{ font-size:.66rem; text-transform:uppercase; letter-spacing:.09em; color:var(--d-sage-700); font-weight:700; margin-bottom:14px; }
.apt-ashero{ width:62px; height:62px; border-radius:18px; background:#fff; border:1px solid var(--d-sage-200); display:grid; place-items:center; color:var(--d-brand); margin:0 auto 18px; box-shadow:var(--d-shadow-card); }
.apt-ashero svg{ width:28px; height:28px; }
.apt-asitem{ display:flex; gap:11px; padding:12px 0; border-bottom:1px solid var(--d-sage-300); }
.apt-asitem .apt-aic{ color:var(--d-sage-400); flex-shrink:0; margin-top:1px; }
.apt-asitem .apt-ak{ font-size:.7rem; color:var(--d-ink-500); } .apt-asitem .apt-av{ font-size:.9rem; font-weight:600; margin-top:2px; }
.apt-asitem .apt-av.empty{ color:var(--d-ink-300); font-weight:500; font-style:italic; }
.apt-asitem .apt-av small{ display:block; font-weight:500; color:var(--d-ink-500); font-size:.8rem; }
.apt-astotal{ margin-top:14px; background:#fff; border:1px solid var(--d-sage-200); border-radius:13px; padding:13px 15px; box-shadow:var(--d-shadow-card); }
.apt-astotal .apt-tl{ display:flex; justify-content:space-between; font-size:.82rem; color:var(--d-ink-500); margin-bottom:5px; }
.apt-astotal .apt-tt{ display:flex; justify-content:space-between; font-size:1.02rem; font-weight:700; color:var(--d-ink-900); margin-top:6px; padding-top:8px; border-top:1px solid var(--d-sage-100); }
.apt-astotal .apt-tt span:last-child{ font-family:var(--d-serif); color:var(--d-brand-dark); }
.apt-ashint{ display:flex; gap:9px; margin-top:14px; padding:12px 13px; border-radius:12px; background:#fff; border:1px solid var(--d-sage-200); font-size:.79rem; color:var(--d-ink-700); line-height:1.4; }
.apt-ashint svg{ width:16px; height:16px; flex-shrink:0; color:var(--d-brand); }
.apt-assec{ text-align:center; font-size:.72rem; color:var(--d-ink-300); margin-top:16px; display:flex; align-items:center; justify-content:center; gap:6px; } .apt-assec svg{ width:13px; height:13px; }

.apt-foot{ display:flex; align-items:center; padding:18px 28px; border-top:1px solid var(--d-sage-100); background:#fff; }
.apt-btn{ display:inline-flex; align-items:center; gap:9px; padding:12px 23px; border-radius:13px; font-size:.94rem; font-weight:600; border:1px solid transparent; transition:.15s; }
.apt-btn svg{ width:17px; height:17px; }
.apt-btn.ghost{ background:#fff; color:var(--d-ink-700); border-color:var(--d-sage-200); }
.apt-btn.prim{ background:linear-gradient(135deg,var(--d-brand),var(--d-brand-dark)); color:#fff; margin-left:auto; box-shadow:0 12px 26px -12px var(--d-brand); }
.apt-btn.prim:hover{ transform:translateY(-1px); box-shadow:var(--d-shadow-hover); }
.apt-btn.dis{ opacity:.4; pointer-events:none; box-shadow:none; }
.apt-btn.ok{ background:linear-gradient(135deg,var(--d-teal-500),var(--d-teal-700)); color:#fff; margin-left:auto; box-shadow:0 12px 26px -12px var(--d-teal-700); }
.apt-err{ margin-top:14px; padding:11px 14px; border-radius:11px; background:var(--d-rose-50); color:var(--d-rose-500); font-size:.85rem; }

/* A2 — bouton retour flottant (remplace la bande grise .admin-sticky-actions ici) */
.apt-back{ display:inline-flex; align-items:center; gap:8px; margin:0 0 16px 4px; padding:9px 16px; border-radius:12px;
  background:rgba(255,255,255,.7); border:1px solid var(--d-sage-200); color:var(--d-brand-dark); font-size:.88rem; font-weight:600;
  text-decoration:none; backdrop-filter:blur(6px); transition:.15s; }
.apt-back:hover{ background:#fff; border-color:var(--d-sage-300); transform:translateX(-2px); box-shadow:var(--d-shadow-card); }
.apt-back svg{ width:16px; height:16px; }

/* B — carte « membre » + sélecteur de membres (violet) */
.apt-pcard.mem{ background:linear-gradient(135deg,#f4f2fc,#efeaf9); border-color:#ddd4f2; }
.apt-pcard.mem::before{ background:var(--d-violet-600); }
.apt-pcard.mem .apt-pava{ background:var(--d-violet-600); color:#fff; }
.apt-pmemtag{ font-size:.66rem; color:#fff; background:var(--d-violet-600); padding:3px 9px; border-radius:999px; font-weight:600; }
.apt-mempick{ margin-top:12px; border:1px solid var(--d-violet-600); border-radius:15px; padding:15px 17px; background:linear-gradient(180deg,#fbfaff,#f5f2fd); box-shadow:0 0 0 3px var(--d-violet-50); }
.apt-mph{ font-size:.9rem; font-weight:700; margin:0 0 4px; display:flex; align-items:center; gap:8px; }
.apt-mph svg{ width:17px; height:17px; color:var(--d-violet-600); }
.apt-mph .apt-x{ margin-left:auto; background:none; border:none; font-size:.8rem; color:var(--d-ink-500); }
.apt-mplab{ font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--d-violet-600); font-weight:700; margin:12px 0 8px; }
.apt-memchips{ display:flex; flex-direction:column; gap:7px; }
.apt-memchip{ display:flex; align-items:center; gap:11px; padding:10px 13px; border:1px solid #e2dbf3; border-radius:12px; background:#fff; text-align:left; transition:.13s; width:100%; }
.apt-memchip:hover{ border-color:var(--d-violet-600); background:#faf9ff; }
.apt-memchip .apt-ava{ width:34px; height:34px; border-radius:10px; background:var(--d-violet-50); color:var(--d-violet-600); font-size:.8rem; }
.apt-memchip .apt-nm{ font-size:.9rem; font-weight:600; } .apt-memchip .apt-rel{ font-size:.76rem; color:var(--d-ink-500); }
.apt-memadd{ margin-left:auto; color:var(--d-violet-600); font-weight:700; font-size:1.1rem; }
.apt-memnew{ display:flex; align-items:center; justify-content:center; gap:9px; width:100%; margin-top:10px; padding:11px; border:1px dashed var(--d-sage-300); border-radius:12px; color:var(--d-brand); background:#fff; font-size:.86rem; font-weight:600; }
/* Pastille « N membres » sur les cartes de recherche client (thème violet, discrète) */
.apt-membadge{ margin-left:auto; font-size:.7rem; color:var(--d-violet-600); background:var(--d-violet-50); padding:4px 9px; border-radius:999px; font-weight:600; white-space:nowrap; }
.apt-membadge + .apt-tag{ margin-left:8px; }

/* A3 — popup de confirmation (overlay flouté + coche animée) */
.apt-toastov{ position:fixed; inset:0; background:rgba(30,45,70,.28); backdrop-filter:blur(4px); display:grid; place-items:center; z-index:1000; opacity:0; pointer-events:none; transition:.25s; }
.apt-toastov.show{ opacity:1; }
.apt-toast{ background:#fff; border-radius:22px; padding:34px 44px; text-align:center; box-shadow:0 40px 90px -30px rgba(30,50,90,.5); transform:scale(.9); transition:.3s cubic-bezier(.34,1.4,.6,1); }
.apt-toastov.show .apt-toast{ transform:scale(1); }
.apt-tic{ width:72px; height:72px; border-radius:50%; background:var(--d-teal-50); color:var(--d-teal-700); display:grid; place-items:center; margin:0 auto 16px; animation:apt-pop .4s cubic-bezier(.34,1.5,.6,1); }
.apt-tic svg{ width:38px; height:38px; }
@keyframes apt-pop{ 0%{transform:scale(.4);opacity:0} 100%{transform:scale(1);opacity:1} }
.apt-toast h2{ font-family:var(--d-serif); font-size:1.4rem; margin:0 0 6px; }
.apt-toast p{ color:var(--d-ink-500); margin:0; font-size:.9rem; }
.apt-redir{ margin-top:14px; font-size:.8rem; color:var(--d-ink-300); display:inline-flex; align-items:center; gap:7px; }
.apt-spin{ width:14px; height:14px; border:2px solid var(--d-sage-300); border-top-color:var(--d-brand); border-radius:50%; animation:apt-sp .7s linear infinite; }
@keyframes apt-sp{ to{transform:rotate(360deg)} }

@media(max-width:980px){
  .apt-body{ grid-template-columns:1fr; }
  .apt-ctx,.apt-quick,.apt-buckets{ grid-template-columns:1fr; }
  .apt-aside{ border-left:none; border-top:1px solid var(--d-sage-100); }
}

/* ============================================================================
   Lot Agenda — page « Rendez-vous » (Modèle A). Namespace .rv-* scopé à #rv-root.
   Jetons sémantiques --rv-* locaux ; marque = notre --brand (#4A6FA5) global.
   Design lifté de DesignPageMaquette/Leonard/page-rendezvous v6.
   ============================================================================ */
.rv-root{
  --rv-line:#ecedf1; --rv-line2:#f3f4f7;
  --rv-i9:#19212e; --rv-i7:#37414f; --rv-i5:#6a7382; --rv-i4:#9aa2af;
  --rv-soft:#eef2f9; --rv-b6:#3a5a86;
  --rv-done:#43a07a; --rv-done-bg:#e9f4ee; --rv-done-tx:#2f8560;
  --rv-pend:#867dc0; --rv-pend-bg:#eeecf8; --rv-pend-tx:#5a53a0;
  --rv-pause:#cba25a; --rv-pause-bg:#f6efe1; --rv-pause-tx:#8a6c39;
  --rv-closed:#eceef2; --rv-closed-tx:#8b93a2;
  --rv-today:#f0f5fd; --rv-today-bd:#e2ebf7; /* ambiance « aujourd'hui » (blocs + cartes) */
  --rv-paper:#f9fbfe; /* « presque blanc » — grandes surfaces de la page Rendez-vous */
  --rv-sh-s:0 1px 2px rgba(25,33,46,.04); --rv-sh:0 1px 3px rgba(25,33,46,.05),0 8px 22px rgba(25,33,46,.05);
  --rv-serif:Georgia,"Times New Roman",serif;
  color:var(--rv-i7);
}
.rv-root *{ box-sizing:border-box; }
.rv-root svg{ width:18px; height:18px; flex:none; stroke-width:1.8; }

.rv-actionbar{ display:flex; align-items:center; gap:14px; margin-bottom:6px; }
.rv-subtitle{ color:var(--rv-b6); font-weight:600; font-size:.86rem; }
.rv-actionbar .btn{ margin-left:auto; }
.rv-tabs{ display:flex; align-items:center; gap:4px; border-bottom:1px solid var(--rv-line); margin-bottom:18px; }
.rv-tab{ position:relative; padding:12px 15px; color:var(--rv-i5); font-weight:600; cursor:pointer; border:0; background:none; font-family:inherit; font-size:.9rem; border-radius:9px 9px 0 0; }
.rv-tab:hover{ color:var(--rv-i7); }
.rv-tab.on{ color:var(--rv-b6); }
.rv-tab.on::after{ content:""; position:absolute; left:12px; right:12px; bottom:-1px; height:2.5px; background:var(--brand); border-radius:3px; }
.rv-tabsp{ flex:1; }
.rv-tablink{ color:var(--rv-i5); font-weight:500; padding:11px 12px; font-size:.86rem; }
.rv-tablink:hover{ color:var(--rv-i7); }
.rv-panel{ display:none; }
.rv-panel.on{ display:block; animation:rv-fade .2s ease; }
@keyframes rv-fade{ from{opacity:0;transform:translateY(5px)} to{opacity:1;transform:none} }
@keyframes rv-pulse{ 0%,100%{box-shadow:0 0 0 0 rgba(74,111,165,.4)} 50%{box-shadow:0 0 0 5px rgba(74,111,165,0)} }
.rv-loading{ padding:32px; text-align:center; color:var(--rv-i4); }

/* week strip */
.rv-weekbar{ display:flex; align-items:center; gap:12px; margin-bottom:8px; }
.rv-wknav{ width:40px; height:40px; flex:none; border:1px solid var(--rv-line); background:#fff; border-radius:50%; display:grid; place-items:center; cursor:pointer; color:var(--rv-i5); box-shadow:var(--rv-sh-s); transition:.16s; }
.rv-wknav:hover{ background:var(--brand); border-color:var(--brand); color:#fff; transform:translateY(-1px); }
.rv-wknav.dis{ opacity:.35; pointer-events:none; }
.rv-weekwin{ flex:1; overflow:hidden; }
.rv-weekdays{ display:grid; grid-template-columns:repeat(7,1fr); gap:8px; }
.rv-wktrack{ display:flex; width:200%; }
.rv-wkslide{ flex:0 0 50%; max-width:50%; }
.rv-dp{ border:1px solid var(--rv-line); background:var(--rv-paper); border-radius:14px; padding:10px 6px 9px; cursor:pointer; transition:.13s; text-align:center; box-shadow:var(--rv-sh-s); }
.rv-dp:hover{ border-color:#dbe0ea; transform:translateY(-1px); }
.rv-dp .rv-wd{ font-size:.66rem; color:var(--rv-i4); font-weight:700; text-transform:uppercase; letter-spacing:.05em; }
.rv-dp .rv-dn{ font-size:1.25rem; color:var(--rv-i9); font-weight:750; line-height:1.15; margin:1px 0; }
.rv-dp .rv-dn .rv-mo{ font-size:.7rem; font-weight:600; color:var(--rv-i4); } .rv-dp.on .rv-dn .rv-mo{ color:rgba(255,255,255,.8); }
.rv-dp .rv-cn{ font-size:.66rem; color:var(--rv-b6); font-weight:700; background:var(--rv-soft); border-radius:20px; padding:1px 0; display:block; }
.rv-dp .rv-cn.z{ color:var(--rv-i4); background:var(--rv-line2); }
.rv-dp.on{ background:var(--brand); border-color:var(--brand); box-shadow:0 8px 18px rgba(74,111,165,.28); }
.rv-dp.on .rv-wd,.rv-dp.on .rv-dn{ color:#fff; } .rv-dp.on .rv-cn{ background:rgba(255,255,255,.2); color:#fff; }
.rv-dp.today .rv-dn{ color:var(--rv-b6); } .rv-dp.today.on .rv-dn{ color:#fff; }
.rv-dp.today:not(.on){ background:#d7e4f6; border-color:#bcd2ee; } /* jour courant repérable dans la frise */
.rv-weeklabel{ text-align:center; font-size:.78rem; color:var(--rv-i4); font-weight:600; margin:0 0 16px; }

/* horizontal timeline */
.rv-htl{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); padding:14px 20px 12px; margin-bottom:18px; }
.rv-htl.today{ background:var(--rv-today); border-color:var(--rv-today-bd); }
.rv-htl-hd{ display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.rv-htl-hd .rv-ttl{ font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--rv-i4); font-weight:700; }
.rv-htl-body{ position:relative; padding-top:26px; }
.rv-htl-ruler{ position:relative; height:16px; border-bottom:1px solid var(--rv-line2); }
.rv-htl-ruler .rv-hh{ position:absolute; transform:translateX(-50%); font-size:.7rem; color:var(--rv-i4); font-weight:600; top:0; white-space:nowrap; }
.rv-htl-ruler .rv-hh.st{ transform:none; } .rv-htl-ruler .rv-hh.en{ transform:translateX(-100%); }
.rv-htl-cards{ position:relative; height:82px; margin-top:8px; }
.rv-tcard{ position:absolute; top:0; bottom:0; border-radius:11px; border:1px solid var(--rv-line); background:#fff; padding:8px 9px; overflow:visible; cursor:pointer; transition:.12s; text-decoration:none; display:block; }
.rv-tcard:hover{ box-shadow:var(--rv-sh-s); z-index:20; transform:translateY(-1px); }
.rv-tcard.now:hover{ z-index:20; }
.rv-tcard .rv-tr{ font-size:.66rem; color:var(--rv-i5); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:flex; align-items:center; gap:4px; }
.rv-tcard .rv-tr svg{ width:12px; height:12px; }
.rv-tcard .rv-nm{ font-weight:700; color:var(--rv-i9); font-size:.78rem; margin-top:4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rv-tcard .rv-sub{ font-size:.66rem; color:var(--rv-i5); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rv-tcard.done{ background:var(--rv-done-bg); border-color:#d5e9dd; } .rv-tcard.done .rv-tr,.rv-tcard.done svg{ color:var(--rv-done-tx); }
.rv-tcard.now{ background:var(--brand); border-color:var(--brand); box-shadow:0 6px 16px rgba(74,111,165,.28); z-index:4; } .rv-tcard.now .rv-tr,.rv-tcard.now .rv-nm,.rv-tcard.now .rv-sub,.rv-tcard.now svg{ color:#fff; }
.rv-tcard.pend{ background:var(--rv-pend-bg); border-color:#e0dcf2; } .rv-tcard.pend .rv-tr,.rv-tcard.pend svg{ color:var(--rv-pend-tx); }
.rv-tcard.pause{ background:var(--rv-pause-bg); border-color:#eaddbf; } .rv-tcard.pause .rv-tr,.rv-tcard.pause svg{ color:var(--rv-pause-tx); }
.rv-tcard.free{ background:#fbfcfd; border:1.5px dashed #d7dee8; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:2px; }
.rv-tcard.free .rv-fl{ color:var(--rv-b6); font-weight:700; font-size:.78rem; }
.rv-tcard.closed{ background:var(--rv-closed); border:1.5px dashed #d3d8e0; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; color:var(--rv-closed-tx); gap:2px; }
.rv-tcard.closed .rv-fl.closed{ color:var(--rv-closed-tx); font-weight:700; font-size:.78rem; }
.rv-htl-rail{ position:relative; height:24px; margin-top:2px; }
.rv-htl-rail::before{ content:""; position:absolute; left:0; right:0; top:11px; height:2px; background:var(--rv-line); }
.rv-rdot{ position:absolute; top:5px; transform:translateX(-50%); width:13px; height:13px; border-radius:50%; background:#fff; border:2.5px solid var(--rv-i4); }
.rv-rdot.done{ border-color:var(--rv-done); background:var(--rv-done); } .rv-rdot.now{ border-color:var(--brand); background:var(--brand); animation:rv-pulse 2.6s infinite; }
.rv-rdot.pend{ border-color:var(--rv-pend); background:var(--rv-pend); } .rv-rdot.pause{ border-color:var(--rv-pause); background:var(--rv-pause-bg); }
.rv-rdot.conf,.rv-rdot.sched{ border-color:#8ba0c6; background:#8ba0c6; } .rv-rdot.free,.rv-rdot.closed{ border-color:#c8cfda; background:#fff; }
.rv-nowl{ position:absolute; top:6px; width:2px; border-left:2px dashed var(--brand); z-index:6; height:108px; }
.rv-nowb{ position:absolute; top:-24px; transform:translateX(-50%); background:var(--brand); color:#fff; font-size:.7rem; font-weight:700; padding:2px 9px; border-radius:20px; white-space:nowrap; z-index:7; }
.rv-htl-legend{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; padding:14px 2px 2px; margin-top:8px; border-top:1px solid var(--rv-line2); }
.rv-htl-legend i{ display:inline-flex; align-items:center; gap:6px; font-size:.72rem; color:var(--rv-i5); font-style:normal; } .rv-htl-legend i b{ width:11px; height:11px; border-radius:50%; display:inline-block; }
.rv-htl-legend .rv-add{ margin-left:auto; color:var(--rv-b6); font-weight:600; display:inline-flex; align-items:center; gap:6px; text-decoration:none; }

.rv-bodygrid{ display:grid; grid-template-columns:1fr 332px; gap:20px; align-items:start; }
.rv-vlist{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); padding:8px 20px 14px; }
.rv-vlist.today{ background:var(--rv-today); border-color:var(--rv-today-bd); } /* même bleu pâle que la timeline H le jour même */
.rv-aside.today .rv-card2{ background:var(--rv-today); border-color:var(--rv-today-bd); } /* Conseil + À traiter, jour courant */
.rv-tl-row{ display:grid; grid-template-columns:68px 24px 1fr; align-items:stretch; }
.rv-tl-time{ padding-top:22px; text-align:right; padding-right:8px; white-space:nowrap; }
.rv-tl-time .rv-hh{ font-weight:700; color:var(--rv-i7); font-size:.8rem; } .rv-tl-time .rv-nowt{ color:#c9564d; font-size:.66rem; font-weight:700; }
.rv-tl-rail{ position:relative; display:flex; justify-content:center; }
.rv-tl-rail::before{ content:""; position:absolute; top:0; bottom:0; width:2px; background:var(--rv-line); left:50%; transform:translateX(-50%); }
.rv-tl-dot{ position:relative; z-index:1; width:13px; height:13px; border-radius:50%; background:#fff; border:2.5px solid var(--rv-i4); margin-top:26px; }
.rv-tl-dot.done{ border-color:var(--rv-done); background:var(--rv-done); } .rv-tl-dot.now{ border-color:var(--brand); background:var(--brand); }
.rv-tl-dot.free{ border-color:#c8cfda; background:#fff; } .rv-tl-dot.pause{ border-color:var(--rv-pause); background:var(--rv-pause-bg); }
.rv-tl-dot.pend{ border-color:var(--rv-pend); background:var(--rv-pend-bg); } .rv-tl-dot.conf,.rv-tl-dot.sched{ border-color:#8ba0c6; background:#8ba0c6; }
.rv-tl-body{ padding:11px 0; }
.rv-apt{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; border:1px solid #c9d3e2; border-left:4px solid var(--rv-i4); border-radius:13px; padding:13px 16px; transition:.13s; background:var(--rv-paper); }
.rv-apt:hover{ border-color:#dbe0ea; box-shadow:var(--rv-sh-s); }
.rv-apt.st-done{ border-left-color:var(--rv-done); background:#fbfdfc; }
.rv-apt.st-now{ border-left-color:var(--brand); background:#f8fafd; box-shadow:0 4px 16px rgba(74,111,165,.08); }
.rv-apt.st-conf,.rv-apt.st-sched{ border-left-color:#8ba0c6; } .rv-apt.st-pend{ border-left-color:var(--rv-pend); }
.rv-apt .rv-av{ width:42px; height:42px; border-radius:12px; display:grid; place-items:center; font-weight:700; font-size:.84rem; flex:none; background:#eef1f7; color:var(--rv-i7); }
.rv-apt.st-now .rv-av{ background:var(--brand); color:#fff; }
.rv-apt .rv-who{ flex:1 1 190px; min-width:150px; }
.rv-apt .rv-nm{ font-weight:700; color:var(--rv-i9); font-size:.9rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rv-apt .rv-meta{ color:var(--rv-i5); font-size:.78rem; margin-top:2px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.rv-apt .rv-meta .rv-loc{ display:inline-flex; align-items:center; gap:4px; white-space:nowrap; }
.rv-apt .rv-rgt{ display:flex; align-items:center; gap:10px; flex:none; margin-left:auto; }
.rv-block{ display:flex; align-items:center; gap:13px; border-radius:13px; padding:12px 16px; }
.rv-block.pause{ background:var(--rv-pause-bg); border:1px solid #ecdcb6; } .rv-block.free{ background:#fbfcfd; border:1px dashed #d7dee8; } .rv-block.closed{ background:var(--rv-closed); border:1px dashed #d3d8e0; color:var(--rv-closed-tx); }
.rv-block .rv-bic{ width:38px; height:38px; border-radius:11px; display:grid; place-items:center; flex:none; }
.rv-block.pause .rv-bic{ background:#ecdcb6; color:var(--rv-pause-tx); } .rv-block.free .rv-bic{ background:#eef1f6; color:var(--rv-i5); } .rv-block.closed .rv-bic{ background:#dfe3ea; color:var(--rv-closed-tx); }
.rv-block .rv-bt{ flex:1; } .rv-block .rv-bt b{ color:var(--rv-i9); font-weight:700; } .rv-block.closed .rv-bt b{ color:var(--rv-closed-tx); } .rv-block .rv-bt div{ font-size:.78rem; color:var(--rv-i5); }

.rv-pill{ font-size:.72rem; font-weight:700; border-radius:8px; padding:3px 10px; white-space:nowrap; display:inline-flex; align-items:center; gap:5px; }
.rv-pill.done,.rv-pill.conf{ background:var(--rv-done-bg); color:var(--rv-done-tx); } .rv-pill.blue{ background:var(--rv-soft); color:var(--rv-b6); }
.rv-pill.pend{ background:var(--rv-pend-bg); color:var(--rv-pend-tx); } .rv-pill.grey{ background:#eef0f4; color:var(--rv-i5); }
.rv-btn{ display:inline-flex; align-items:center; gap:8px; border-radius:10px; border:1px solid var(--rv-line); background:#fff; color:var(--rv-i7); padding:9px 14px; font-weight:600; font-size:.8rem; cursor:pointer; font-family:inherit; text-decoration:none; box-shadow:var(--rv-sh-s); transition:.13s; }
.rv-btn:hover{ border-color:#dbe0ea; background:#fbfcfe; }
.rv-btn.pri{ background:var(--brand); border-color:var(--brand); color:#fff; box-shadow:0 6px 15px rgba(74,111,165,.24); }
.rv-btn.pri:hover{ background:var(--rv-b6); }
.rv-btn.sm{ padding:7px 12px; font-size:.78rem; border-radius:9px; }
.rv-btn svg{ width:15px; height:15px; }

.rv-aside{ display:flex; flex-direction:column; gap:16px; }
.rv-focus{ background:linear-gradient(155deg,#3c4a66,#41506f); border-radius:18px; padding:18px; color:#fff; box-shadow:0 12px 26px rgba(46,58,84,.22); }
.rv-focus .rv-lab{ font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.72); font-weight:700; }
.rv-focus .rv-fnm{ font-family:var(--rv-serif); font-size:1.3rem; margin:6px 0 3px; } .rv-focus .rv-when{ font-weight:600; font-size:.8rem; color:#e7ecf5; } .rv-focus .rv-focus-sub{ color:rgba(255,255,255,.78); font-size:.78rem; margin-top:2px; }
.rv-focus .rv-btn.go{ margin-top:15px; width:100%; justify-content:center; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.26); color:#fff; box-shadow:none; }
.rv-focus .rv-btn.go:hover{ background:rgba(255,255,255,.22); }
.rv-card2{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); padding:15px 16px; }
.rv-sechd{ font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--rv-i4); font-weight:700; margin:0 0 12px; display:flex; align-items:center; gap:8px; }
.rv-tip{ display:flex; gap:9px; align-items:flex-start; font-size:.82rem; color:var(--rv-i7); line-height:1.45; } .rv-tip svg{ width:16px; height:16px; color:var(--rv-done); flex:none; margin-top:1px; }
.rv-fin-ph{ font-size:.82rem; color:var(--rv-i5); } .rv-sumline{ display:flex; flex-direction:column; padding:7px 0; border-bottom:1px solid var(--rv-line2); } .rv-sumline:last-child{ border-bottom:0; } .rv-sumline b{ color:var(--rv-i9); } .rv-sumline span{ font-size:.78rem; color:var(--rv-i5); }
.rv-emptyday{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); padding:44px 24px; text-align:center; }
.rv-emptyday .rv-ic{ width:58px; height:58px; border-radius:18px; background:var(--rv-done-bg); color:var(--rv-done-tx); display:grid; place-items:center; margin:0 auto 14px; } .rv-emptyday .rv-ic svg{ width:26px; height:26px; }
.rv-emptyday h3{ margin:0 0 5px; color:var(--rv-i9); font-family:var(--rv-serif); font-size:1.2rem; } .rv-emptyday p{ margin:0; color:var(--rv-i5); }
.rv-finalize-ph{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); padding:48px 24px; text-align:center; }
.rv-finalize-ph .rv-ic{ width:58px; height:58px; border-radius:18px; background:var(--rv-pend-bg); color:var(--rv-pend-tx); display:grid; place-items:center; margin:0 auto 14px; } .rv-finalize-ph .rv-ic svg{ width:26px; height:26px; }
.rv-finalize-ph h3{ margin:0 0 5px; color:var(--rv-i9); font-family:var(--rv-serif); font-size:1.2rem; } .rv-finalize-ph p{ margin:0; color:var(--rv-i5); }
@media(max-width:1180px){ .rv-bodygrid{ grid-template-columns:1fr; } }

/* ---- Onglet « Tous » : liste groupée par jour (Lot 2, façon Victor) ---- */
.rv-pill.rose{ background:#f7ecec; color:#a1545a; }
.rv-listwrap{ display:flex; flex-direction:column; gap:13px; }
.rv-dgroup{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:16px; box-shadow:0 1px 2px rgba(30,41,59,.05),0 10px 26px -10px rgba(30,45,80,.20); overflow:hidden; transition:box-shadow .2s,border-color .2s; }
.rv-dgroup:hover{ box-shadow:0 2px 6px rgba(30,41,59,.07),0 16px 40px -12px rgba(30,45,80,.27); }
.rv-dgroup.today{ border-color:var(--rv-today-bd); box-shadow:0 0 0 1px var(--rv-today-bd),0 1px 3px rgba(25,33,46,.05),0 14px 34px -12px rgba(74,111,165,.26); }
.rv-dghd{ width:100%; display:flex; align-items:center; gap:11px; padding:13px 18px; background:linear-gradient(180deg,#e7ebf4,#dde4ef); border-bottom:1px solid #ccd5e3; cursor:pointer; user-select:none; text-align:left; transition:background .15s; }
.rv-dghd:hover{ background:linear-gradient(180deg,#d6dfec,#cbd6e6); }
.rv-dgroup.today .rv-dghd{ background:linear-gradient(180deg,#cfe0f7,#bcd2f2); border-bottom-color:#a9c6ee; }
.rv-dgroup.today .rv-dghd:hover{ background:linear-gradient(180deg,#c5d9f5,#b1caf0); }
.rv-dgroup.collapsed .rv-dghd{ border-bottom-color:transparent; }
.rv-dgdate{ font-size:.9rem; color:var(--rv-i9); font-weight:700; } .rv-dgroup.today .rv-dgdate{ color:var(--rv-b6); }
.rv-load{ display:inline-flex; align-items:flex-end; gap:3px; padding:5px 8px; background:#fff; border:1px solid #d3ddec; border-radius:9px; box-shadow:var(--rv-sh-s); }
.rv-load i{ width:4px; border-radius:2px; background:#c2c8d2; } .rv-load i.on{ background:var(--brand); }
.rv-dgroup.today .rv-load{ border-color:var(--rv-today-bd); } .rv-dgroup.today .rv-load i.on{ background:var(--rv-b6); }
.rv-dgsp{ flex:1; }
.rv-dgct{ font-size:.8rem; color:var(--rv-i5); font-weight:500; }
.rv-dgcare{ font-size:.8rem; color:var(--rv-i5); font-weight:500; }
.rv-dgchev{ color:var(--rv-i4); display:grid; place-items:center; width:23px; height:23px; border-radius:7px; flex:none; transition:transform .34s cubic-bezier(.4,0,.2,1),background .15s,color .15s; } .rv-dgchev svg{ width:17px; height:17px; }
.rv-dghd:hover .rv-dgchev{ background:rgba(74,111,165,.12); color:var(--rv-b6); }
.rv-dgroup.collapsed .rv-dgchev{ transform:rotate(-90deg); }
.rv-dgbody{ display:grid; grid-template-rows:1fr; transition:grid-template-rows .35s cubic-bezier(.4,0,.2,1); }
.rv-dgroup.collapsed .rv-dgbody{ grid-template-rows:0fr; }
.rv-dgbody-inner{ overflow:hidden; min-height:0; transition:opacity .26s ease; } .rv-dgroup.collapsed .rv-dgbody-inner{ opacity:0; }
.rv-arow{ display:grid; grid-template-columns:68px 16px 40px minmax(0,1.3fr) minmax(0,1fr) 78px auto 30px; gap:14px; align-items:center; padding:11px 18px; border-bottom:1px solid var(--rv-line2); cursor:pointer; transition:background .1s; position:relative; }
.rv-arow:last-child{ border-bottom:0; } .rv-arow:hover{ background:#f4f8fd; }
.rv-arow.sel{ background:var(--rv-soft); box-shadow:inset 3px 0 0 var(--brand); }
.rv-atm{ font-weight:700; color:var(--rv-i9); font-size:.84rem; white-space:nowrap; }
.rv-sd{ width:9px; height:9px; border-radius:50%; justify-self:center; background:#8ba0c6; }
.rv-sd.done{ background:var(--rv-done); } .rv-sd.conf,.rv-sd.sched{ background:#8ba0c6; } .rv-sd.pend{ background:var(--rv-pend); } .rv-sd.cancelled{ background:#c99; } .rv-sd.noshow{ background:var(--rv-i4); }
.rv-arow .rv-av{ width:40px; height:40px; border-radius:11px; background:#eef1f6; color:var(--rv-i7); display:grid; place-items:center; font-weight:750; font-size:.76rem; }
.rv-acw{ min-width:0; } .rv-acw b{ color:var(--rv-i9); font-weight:650; font-size:.9rem; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .rv-acw span{ color:var(--rv-i5); font-size:.78rem; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-top:1px; }
.rv-alc{ color:var(--rv-i5); font-size:.82rem; display:inline-flex; align-items:center; gap:6px; min-width:0; } .rv-alc svg{ width:15px; height:15px; color:var(--rv-i4); flex:none; } .rv-alc span{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rv-adur{ color:var(--rv-i5); font-size:.78rem; }
.rv-ast{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.rv-menu{ display:grid; place-items:center; color:var(--rv-i4); text-decoration:none; border-radius:8px; padding:4px; } .rv-menu svg{ width:17px; height:17px; } .rv-menu:hover{ background:var(--rv-line2); color:var(--brand); }

/* Master-détail + résumé/graphique (onglet Tous, Lot A design) */
.rv-split{ display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:20px; align-items:start; margin-top:6px; }
#rv-detail{ align-self:stretch; }
.rv-sum{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:16px; box-shadow:var(--rv-sh-s); padding:16px 18px; min-height:96px; box-sizing:border-box; display:flex; align-items:center; gap:20px; margin-bottom:14px; }
.rv-sum-l{ flex:1; min-width:0; }
.rv-sum-row{ display:flex; align-items:baseline; flex-wrap:wrap; font-size:.84rem; color:var(--rv-i5); }
.rv-sum-n{ font-size:1.18rem; font-weight:750; color:var(--rv-i9); letter-spacing:-.01em; font-variant-numeric:tabular-nums; }
.rv-sum-u{ margin:0 3px 0 5px; } .rv-sum-dv{ color:#c2c8d2; margin:0 12px; }
.rv-sum-wait .rv-sum-n{ color:var(--rv-pend-tx); } .rv-sum-wait .rv-sum-u{ color:var(--rv-pend-tx); }
.rv-sum-dot{ width:7px; height:7px; border-radius:50%; background:var(--rv-pend); display:inline-block; margin-right:7px; transform:translateY(-1px); }
.rv-sum-cap{ font-size:.75rem; color:var(--rv-i4); margin-top:9px; } .rv-sum-cap b{ color:var(--rv-i5); font-weight:650; }
.rv-chart{ display:flex; align-items:flex-end; align-self:center; gap:7px; height:54px; flex:none; }
.rv-chart .bar{ display:flex; flex-direction:column; align-items:center; gap:5px; }
.rv-chart .bk{ width:20px; border-radius:6px 6px 3px 3px; background:var(--rv-today-bd); min-height:4px; }
.rv-chart .bar.hi .bk{ background:#a9bcda; } .rv-chart .bar.tod .bk{ background:var(--brand); }
.rv-chart .bl{ font-size:.6rem; color:var(--rv-i4); font-weight:700; } .rv-chart .bar.tod .bl{ color:var(--rv-b6); }
.rv-detail{ position:sticky; top:16px; background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); overflow:hidden; }
.rv-dt-top{ padding:20px 20px 16px; display:flex; align-items:center; gap:13px; border-bottom:1px solid var(--rv-line2); position:relative; }
.rv-dt-av{ width:52px; height:52px; border-radius:15px; background:var(--brand); color:#fff; display:grid; place-items:center; font-weight:750; font-size:1.12rem; flex:none; }
.rv-dt-nm{ font-size:1rem; font-weight:750; color:var(--rv-i9); } .rv-dt-since{ font-size:.75rem; color:var(--rv-i4); margin-top:2px; }
.rv-dt-close{ position:absolute; top:14px; right:14px; color:var(--rv-i4); cursor:pointer; border-radius:8px; padding:3px; background:none; border:0; } .rv-dt-close:hover{ background:var(--rv-line2); color:var(--rv-i7); } .rv-dt-close svg{ width:18px; height:18px; }
.rv-dt-body{ padding:14px 20px; }
.rv-dt-row{ display:flex; align-items:center; gap:12px; padding:9px 0; border-bottom:1px solid #f1f2f6; font-size:.82rem; }
.rv-dt-row:last-child{ border-bottom:0; }
.rv-dt-ic{ width:30px; height:30px; border-radius:9px; background:#f3f4f7; color:var(--rv-i4); display:grid; place-items:center; flex:none; } .rv-dt-ic svg{ width:15px; height:15px; }
.rv-dt-k{ color:var(--rv-i4); font-size:.68rem; letter-spacing:.04em; text-transform:uppercase; font-weight:700; width:92px; flex:none; }
.rv-dt-v{ color:var(--rv-i7); font-weight:600; flex:1; text-align:right; } .rv-dt-v.nowrap{ white-space:nowrap; }
.rv-dt-row.when .rv-dt-k{ width:auto; padding-right:10px; }
.rv-dt-act{ padding:14px 20px 18px; display:flex; flex-direction:column; gap:8px; border-top:1px solid var(--rv-line2); }
.rv-dt-open{ display:inline-flex; align-items:center; justify-content:center; gap:8px; width:100%; border-radius:11px; background:var(--brand); border:1px solid var(--brand); color:#fff; padding:10px 14px; font-weight:600; font-size:.82rem; text-decoration:none; box-shadow:0 8px 18px -4px rgba(74,111,165,.42); transition:.13s; } .rv-dt-open:hover{ background:var(--rv-b6); } .rv-dt-open svg{ width:16px; height:16px; }
.rv-dt-sec{ display:flex; align-items:center; gap:10px; padding:9px 11px; border-radius:10px; color:var(--rv-i5); font-size:.82rem; font-weight:600; cursor:pointer; text-decoration:none; } .rv-dt-sec:hover{ background:#f3f4f7; } .rv-dt-sec svg{ width:16px; height:16px; color:var(--rv-i4); }
.rv-dt-sec.inert{ cursor:default; opacity:.5; } .rv-dt-sec.inert:hover{ background:none; }
.rv-dt-none{ padding:56px 24px; text-align:center; color:var(--rv-i4); } .rv-dt-none .ic{ width:50px; height:50px; border-radius:15px; background:#f3f4f7; display:grid; place-items:center; margin:0 auto 12px; color:#c2c8d2; } .rv-dt-none .ic svg{ width:22px; height:22px; }

/* Lot B — contrôles toolbar : Période (popover + calendrier) / Statut (menu) / Tri + badge jour */
.rv-toolbar{ display:flex; align-items:center; gap:9px; flex-wrap:wrap; flex:1; margin:0; }
.rv-toolbar-sp{ flex:1; }
.rv-ctl{ position:relative; }
.rv-ctl-btn{ display:inline-flex; align-items:center; gap:8px; border:1px solid var(--rv-line); background:#fff; border-radius:10px; padding:8px 12px; font-weight:600; font-size:.82rem; color:var(--rv-i7); cursor:pointer; font-family:inherit; box-shadow:var(--rv-sh-s); white-space:nowrap; }
.rv-ctl-btn:hover{ border-color:#dfe2ea; }
.rv-ctl-btn .lb{ color:var(--rv-i4); font-weight:600; font-size:.7rem; }
.rv-ctl-btn>svg{ width:15px; height:15px; color:var(--rv-i4); }
.rv-ctl-btn.on{ border-color:var(--brand); box-shadow:0 0 0 3px var(--rv-soft); }
.rv-sortbtn{ display:inline-flex; align-items:center; gap:7px; border:1px solid var(--rv-line); background:#fff; border-radius:10px; padding:8px 12px; font-size:.78rem; font-weight:600; color:var(--rv-i5); cursor:pointer; box-shadow:var(--rv-sh-s); white-space:nowrap; font-family:inherit; }
.rv-sortbtn:hover{ border-color:#dfe2ea; } .rv-sortbtn svg{ width:14px; height:14px; color:var(--rv-i4); }
.rv-smenu{ position:absolute; top:calc(100% + 6px); left:0; background:#fff; border:1px solid var(--rv-line); border-radius:13px; box-shadow:0 22px 50px -16px rgba(25,35,66,.30); padding:6px; min-width:196px; z-index:60; display:none; }
.rv-smenu.open{ display:block; animation:rv-popin .13s ease; }
@keyframes rv-popin{ from{ opacity:0; transform:translateY(-4px); } to{ opacity:1; transform:none; } }
.rv-mi{ display:flex; align-items:center; gap:9px; padding:9px 11px; border-radius:9px; font-size:.82rem; color:var(--rv-i7); cursor:pointer; font-weight:500; width:100%; background:none; border:0; font-family:inherit; text-align:left; }
.rv-mi:hover{ background:var(--rv-soft); } .rv-mi.on{ color:var(--rv-b6); font-weight:700; }
.rv-mi-dot{ width:8px; height:8px; border-radius:50%; flex:none; }
.rv-mi-ck{ margin-left:auto; color:var(--brand); opacity:0; display:inline-flex; } .rv-mi.on .rv-mi-ck{ opacity:1; } .rv-mi-ck svg{ width:15px; height:15px; }
.rv-pop{ position:absolute; top:calc(100% + 6px); left:0; background:#fff; border:1px solid var(--rv-line); border-radius:16px; box-shadow:0 22px 50px -16px rgba(25,35,66,.30); z-index:70; display:none; overflow:hidden; }
.rv-pop.open{ display:flex; animation:rv-popin .14s ease; }
.rv-pop-presets{ width:186px; flex:none; border-right:1px solid var(--rv-line2); padding:8px; display:flex; flex-direction:column; gap:1px; background:#fcfdff; }
.rv-preset{ padding:9px 12px; border-radius:9px; font-size:.82rem; font-weight:600; color:var(--rv-i7); cursor:pointer; background:none; border:0; font-family:inherit; text-align:left; }
.rv-preset:hover{ background:var(--rv-soft); } .rv-preset.on{ background:var(--brand); color:#fff; }
.rv-pop-cal{ padding:14px 16px; width:272px; }
.rv-cal-hd{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.rv-cal-nav{ width:30px; height:30px; border-radius:8px; border:1px solid var(--rv-line); background:#fff; display:grid; place-items:center; cursor:pointer; color:var(--rv-i5); } .rv-cal-nav svg{ width:16px; height:16px; }
.rv-cal-nav:hover{ border-color:var(--brand); color:var(--brand); }
.rv-cal-title{ font-weight:700; color:var(--rv-i9); font-size:.82rem; text-transform:capitalize; }
.rv-cal-grid{ display:grid; grid-template-columns:repeat(7,34px); grid-auto-rows:33px; align-content:start; justify-content:center; }
.rv-cal-dow{ display:grid; place-items:center; font-size:.62rem; color:#c2c8d2; font-weight:700; text-transform:uppercase; height:24px; }
.rv-cal-d{ display:grid; place-items:center; font-size:.8rem; border-radius:9px; cursor:pointer; color:var(--rv-i7); margin:1px 0; }
.rv-cal-d.empty{ visibility:hidden; cursor:default; } .rv-cal-d:hover:not(.empty){ background:var(--rv-soft); } .rv-cal-d.today{ font-weight:800; color:var(--rv-b6); }
.rv-cal-d.in-range{ background:var(--rv-today-bd); border-radius:0; } .rv-cal-d.range-s{ background:var(--brand); color:#fff; border-radius:9px 0 0 9px; } .rv-cal-d.range-e{ background:var(--brand); color:#fff; border-radius:0 9px 9px 0; } .rv-cal-d.range-s.range-e{ border-radius:9px; }
.rv-cal-foot{ margin-top:10px; padding-top:11px; border-top:1px solid var(--rv-line2); display:flex; flex-direction:column; gap:9px; } .rv-cal-sel{ font-size:.72rem; color:var(--rv-i5); text-align:center; }
.rv-ctl-apply{ display:inline-flex; align-items:center; justify-content:center; border-radius:9px; background:var(--brand); border:1px solid var(--brand); color:#fff; padding:8px 12px; font-weight:600; font-size:.78rem; cursor:pointer; font-family:inherit; box-shadow:0 6px 15px rgba(74,111,165,.24); } .rv-ctl-apply:hover{ background:var(--rv-b6); }
.rv-dgbadge{ font-size:.6rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:var(--rv-b6); background:var(--rv-soft); border-radius:20px; padding:2px 9px; }
.rv-dgroup.today .rv-dgbadge{ color:#fff; background:var(--brand); }
/* Toolbar « Tous » = carte dans la colonne gauche (même contour #c9d3e2 que les autres blocs). */
.rv-col{ min-width:0; }
.rv-listbar{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:16px; box-shadow:var(--rv-sh-s); padding:10px 12px; margin-bottom:14px; }
/* Recherche à la MÊME hauteur que les boutons (scopé à la toolbar ; .list-search global intact). */
.rv-toolbar .list-search{ flex:1; min-width:220px; }
.rv-toolbar .list-search input{ padding:8px 34px 8px 34px; border-radius:10px; font-size:.82rem; }
.rv-toolbar .list-search svg{ left:.7rem; width:16px; height:16px; }
.rv-toolbar .list-clear{ right:.4rem; width:22px; height:22px; font-size:1rem; }

@media(max-width:1120px){ .rv-split{ grid-template-columns:1fr; } .rv-detail{ position:static; margin-top:14px; } }
@media(max-width:1080px){
  .rv-arow{ grid-template-columns:68px 16px 40px minmax(0,1.4fr) 74px auto 30px; }
  .rv-alc{ display:none; }
}
@media(max-width:720px){
  .rv-chart{ display:none; }
  .rv-arow{ grid-template-columns:44px 1fr auto; grid-auto-rows:auto; row-gap:4px; padding:12px 14px; }
  .rv-arow .rv-sd,.rv-arow .rv-av,.rv-adur{ display:none; }
  .rv-atm{ grid-row:1/3; align-self:start; }
  .rv-acw{ grid-column:2; } .rv-ast{ grid-column:2/4; }
  .rv-menu{ grid-column:3; grid-row:1; }
}

/* ---- Onglet « À finaliser » : liste compacte (Lot 3) ---- */
.rv-tabcount{ background:var(--brand); color:#fff; font-size:.66rem; font-weight:700; border-radius:20px; padding:1px 7px; margin-left:6px; }
.rv-fin-intro{ color:var(--rv-i5); font-size:.86rem; margin:-2px 0 16px; }
.rv-fin-sec{ max-width:900px; margin:0 0 20px; }
.rv-fin-hd{ display:flex; align-items:center; gap:9px; margin:0 0 9px; font-size:.9rem; color:var(--rv-i9); }
.rv-fin-hd b{ font-weight:700; }
.rv-fin-ct{ background:var(--rv-line2); color:var(--rv-i5); font-size:.7rem; font-weight:700; border-radius:20px; padding:1px 8px; }
.rv-fin-ic{ width:26px; height:26px; border-radius:8px; display:grid; place-items:center; flex:none; } .rv-fin-ic svg{ width:15px; height:15px; }
.rv-fin-ic.note{ background:var(--rv-pause-bg); color:var(--rv-pause-tx); }
.rv-fin-ic.form{ background:var(--rv-pend-bg); color:var(--rv-pend-tx); }
.rv-fin-ic.inv,.rv-fin-ic.pay{ background:var(--rv-done-bg); color:var(--rv-done-tx); }
.rv-fin-list{ list-style:none; margin:0; padding:0; background:var(--rv-paper); border:1px solid var(--rv-line); border-radius:14px; overflow:hidden; box-shadow:var(--rv-sh-s); }
.rv-fin-row{ display:grid; grid-template-columns:34px minmax(180px,1.4fr) minmax(120px,auto) 160px; gap:13px; align-items:center; padding:11px 15px; border-bottom:1px solid var(--rv-line2); cursor:pointer; transition:.1s; }
.rv-fin-row:last-child{ border-bottom:0; } .rv-fin-row:hover{ background:#fafbfd; }
.rv-fin-av{ width:34px; height:34px; border-radius:10px; background:#eef1f6; color:var(--rv-i7); display:grid; place-items:center; font-weight:750; font-size:.72rem; }
.rv-fin-who{ min-width:0; } .rv-fin-who b{ color:var(--rv-i9); font-weight:650; font-size:.88rem; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .rv-fin-who span{ color:var(--rv-i5); font-size:.78rem; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rv-fin-grp{ font-size:.66rem; color:var(--rv-b6); background:var(--rv-soft); border-radius:20px; padding:1px 7px; font-weight:700; margin-left:5px; }
.rv-fin-when{ color:var(--rv-i5); font-size:.8rem; white-space:nowrap; }
.rv-fin-cta{ justify-self:end; display:inline-flex; align-items:center; gap:7px; border-radius:9px; border:1px solid var(--rv-line); background:#fff; color:var(--rv-i7); padding:7px 13px; font-weight:600; font-size:.78rem; text-decoration:none; box-shadow:var(--rv-sh-s); transition:.13s; white-space:nowrap; }
.rv-fin-cta:hover{ border-color:#dbe0ea; background:#fbfcfe; }
.rv-fin-cta.pri{ background:var(--brand); border-color:var(--brand); color:#fff; box-shadow:0 6px 15px rgba(74,111,165,.24); } .rv-fin-cta.pri:hover{ background:var(--rv-b6); }
.rv-fin-clear{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); padding:48px 24px; text-align:center; max-width:900px; }
.rv-fin-clear .rv-ic{ width:58px; height:58px; border-radius:18px; background:var(--rv-done-bg); color:var(--rv-done-tx); display:grid; place-items:center; margin:0 auto 14px; } .rv-fin-clear .rv-ic svg{ width:26px; height:26px; }
.rv-fin-clear h3{ margin:0 0 5px; color:var(--rv-i9); font-family:var(--rv-serif); font-size:1.2rem; } .rv-fin-clear p{ margin:0; color:var(--rv-i5); }
@media(max-width:720px){
  .rv-fin-row{ grid-template-columns:34px 1fr auto; }
  .rv-fin-when{ display:none; }
}

/* ---- Agenda passe 2 : couleurs unifiées + jours fermés + journée vide ---- */
/* « à venir » (confirmed/scheduled) = bleu léger, aligné timeline ↔ liste */
.rv-tcard.up{ background:var(--rv-soft); border-color:#d5dfef; } .rv-tcard.up .rv-tr,.rv-tcard.up svg{ color:var(--rv-b6); }
.rv-rdot.up{ border-color:#8ba0c6; background:#8ba0c6; }
/* pastille « AUJOURD'HUI » + jour fermé dans la frise */
.rv-dp .rv-wd.now{ color:var(--rv-b6); font-size:.6rem; letter-spacing:.03em; }
.rv-dp.on .rv-wd.now{ color:#fff; }
.rv-dp.closed{ background:#f4f5f8; } .rv-dp.closed .rv-cn{ color:var(--rv-closed-tx); background:var(--rv-line2); }
.rv-dp.closed.on{ background:var(--brand); } .rv-dp.closed.on .rv-cn{ color:#fff; background:rgba(255,255,255,.2); }
/* état « Journée fermée » + banderole */
.rv-closedday .rv-ic.closed{ background:var(--rv-closed); color:var(--rv-closed-tx); }
.rv-closedbanner{ display:flex; align-items:center; gap:9px; background:#f4f5f8; border:1px solid var(--rv-line); border-radius:12px; padding:10px 14px; margin-bottom:14px; color:var(--rv-closed-tx); font-size:.85rem; font-weight:600; } .rv-closedbanner svg{ width:16px; height:16px; }
/* journée VIDE (ouverte) : carte contenue + raccourcis */
.rv-freeday{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); padding:34px 24px; text-align:center; }
.rv-freeday .rv-ic{ width:56px; height:56px; border-radius:18px; background:var(--rv-line2); color:var(--rv-i5); display:grid; place-items:center; margin:0 auto 13px; } .rv-freeday .rv-ic svg{ width:26px; height:26px; }
.rv-freeday h3{ margin:0 0 5px; color:var(--rv-i9); font-family:var(--rv-serif); font-size:1.25rem; } .rv-freeday p{ margin:0 0 16px; color:var(--rv-i5); }
.rv-shorts{ gap:12px; }
.rv-short{ display:block; background:var(--rv-paper); border:1px solid var(--rv-line); border-radius:16px; box-shadow:var(--rv-sh-s); padding:14px 16px; text-decoration:none; text-align:left; font-family:inherit; cursor:pointer; width:100%; transition:.13s; }
.rv-short:hover{ border-color:#dbe0ea; box-shadow:var(--rv-sh); }
.rv-short b{ display:block; color:var(--rv-i9); font-size:1.05rem; font-weight:700; margin-top:4px; } .rv-short b.rv-muted{ color:var(--rv-i4); font-weight:600; font-size:.9rem; }
.rv-short span{ color:var(--rv-i5); font-size:.8rem; }
.rv-goto-fin{ display:block; border:1px solid var(--rv-line); background:var(--rv-paper); font-family:inherit; cursor:pointer; text-align:left; width:100%; padding:14px 16px; }
.rv-goto-fin .rv-sechd{ margin-bottom:6px; }
.rv-goto-fin .rv-fin-actions{ margin-top:2px; } /* pas de marge basse : hauteur = contenu + 2×padding */
.rv-fin-big{ font-size:1.6rem; font-weight:800; color:var(--brand); line-height:1; }
/* résumé du jour restreint */
.rv-sumcount{ font-size:1.05rem; font-weight:700; color:var(--rv-i9); }
.rv-sumhead{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }
.rv-ds-care{ font-size:.72rem; font-weight:700; color:var(--rv-b6); background:var(--rv-soft); border-radius:7px; padding:3px 9px; white-space:nowrap; }
.rv-sumrow{ display:flex; align-items:center; gap:9px; padding:5px 0; font-size:.84rem; color:var(--rv-i7); } .rv-sumrow svg{ width:15px; height:15px; color:var(--rv-i4); flex:none; }

/* ---- « À finaliser » : sous-onglets (chips, distincts des onglets principaux) ---- */
.rv-fsub-tabs{ display:flex; gap:8px; flex-wrap:wrap; margin:0 0 16px; max-width:900px; }
.rv-fsub{ display:inline-flex; align-items:center; gap:8px; border:1px solid var(--rv-line); background:#fff; border-radius:12px; padding:8px 12px; font-family:inherit; font-size:.84rem; font-weight:600; color:var(--rv-i5); cursor:pointer; box-shadow:var(--rv-sh-s); transition:.13s; }
.rv-fsub:hover{ border-color:#dbe0ea; color:var(--rv-i7); }
.rv-fsub .rv-fin-ic{ width:22px; height:22px; border-radius:7px; } .rv-fsub .rv-fin-ic svg{ width:13px; height:13px; }
.rv-fsub.on{ background:var(--brand); border-color:var(--brand); color:#fff; box-shadow:0 6px 15px rgba(74,111,165,.24); }
.rv-fsub.on .rv-fin-ic{ background:rgba(255,255,255,.18) !important; color:#fff !important; }
.rv-fct{ min-width:20px; text-align:center; background:var(--rv-line2); color:var(--rv-i5); font-size:.7rem; font-weight:700; border-radius:20px; padding:1px 7px; }
.rv-fsub.on .rv-fct{ background:rgba(255,255,255,.22); color:#fff; }
.rv-fsub-panel{ display:none; } .rv-fsub-panel.on{ display:block; animation:rv-fade .18s ease; }
.rv-fsub-empty{ display:flex; align-items:center; gap:9px; max-width:900px; background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:14px; box-shadow:var(--rv-sh-s); padding:22px 20px; color:var(--rv-i5); font-size:.9rem; } .rv-fsub-empty svg{ width:18px; height:18px; color:var(--rv-done); flex:none; }

/* ============================================================================
   Agenda passe 3 — fonds de statut UNIFIÉS (timeline horizontale ↔ liste) +
   « Disponible » en teal réservé. Overrides des passes précédentes.
   ============================================================================ */
.rv-root{ --teal:#1596a3; --teal-bg:#e9f8fa; --teal-tx:#0f7a86; --teal-bd:#b6e2e8;
  --green-tile:#dcefe4; --blue-tile:#e2ebfb; --violet-tile:#e9e3f7; }
/* Timeline horizontale — tuiles */
.rv-tcard.done{ background:var(--green-tile); border-color:#c9e6d4; }
.rv-tcard.up{ background:var(--blue-tile); border-color:#cfdcf5; }
.rv-tcard.pend{ background:var(--violet-tile); border-color:#dcd3f0; }
.rv-tcard.free{ background:var(--teal-bg); border:1.5px dashed var(--teal-bd); } .rv-tcard.free .rv-fl{ color:var(--teal-tx); }
/* Liste verticale — mêmes fonds + liseré gauche assorti */
.rv-apt.st-done{ background:var(--green-tile); border-left-color:var(--rv-done); }
.rv-apt.st-conf,.rv-apt.st-sched{ background:var(--blue-tile); border-left-color:var(--brand); }
.rv-apt.st-pend{ background:var(--violet-tile); border-left-color:var(--rv-pend); }
/* Pastilles de statut lisibles sur fond teinté → fond blanc */
.rv-apt .rv-rgt .rv-pill{ background:#fff; box-shadow:inset 0 0 0 1px rgba(20,40,70,.06); }
/* « Disponible » = teal : liste (liseré gauche + icône + texte) + rail + rdot */
.rv-block.free{ background:var(--teal-bg); border:1px dashed var(--teal-bd); border-left:4px solid var(--teal); }
.rv-block.free .rv-bic{ background:#d3eef1; color:var(--teal-tx); }
.rv-block.free .rv-bt b{ color:var(--teal-tx); }
.rv-tl-dot.free{ border-color:var(--teal); background:var(--teal-bg); }
.rv-rdot.free{ border-color:var(--teal); background:var(--teal); }
/* Bouton « Aujourd'hui » de la nav semaine */
.rv-today-btn{ flex:none; border:1px solid var(--rv-line); background:#fff; color:var(--rv-b6); border-radius:12px; padding:0 14px; height:40px; font-family:inherit; font-size:.84rem; font-weight:600; cursor:pointer; box-shadow:var(--rv-sh-s); transition:.16s; }
.rv-today-btn:hover{ background:var(--brand); border-color:var(--brand); color:#fff; }
.rv-today-btn.dis{ opacity:.45; pointer-events:none; }

/* ---- Agenda passe 4 : bulles au survol (timeline) + « actions » ---- */
.rv-tcard-tip{ position:absolute; left:50%; bottom:calc(100% + 12px); transform:translateX(-50%); background:#2c3652; color:#fff; border-radius:12px; padding:11px 13px; min-width:168px; max-width:230px; box-shadow:0 16px 34px -12px rgba(20,30,55,.6); opacity:0; visibility:hidden; transition:.16s; z-index:30; pointer-events:none; text-align:left; }
.rv-tcard-tip::after{ content:''; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:7px solid transparent; border-top-color:#2c3652; }
.rv-tcard:hover .rv-tcard-tip{ opacity:1; visibility:visible; }
.rv-tt-t{ font-size:.72rem; font-weight:700; color:#cdd7ec; margin-bottom:3px; white-space:nowrap; }
.rv-tt-nm{ font-size:.92rem; font-weight:700; color:#fff; }
.rv-tt-sub{ font-size:.76rem; color:#aeb9d4; margin-top:1px; }
.rv-tt-row{ display:flex; align-items:center; gap:5px; font-size:.76rem; color:#aeb9d4; margin-top:6px; } .rv-tt-row svg{ width:13px; height:13px; color:#8b98ba; }
.rv-tt-st{ font-size:.72rem; font-weight:700; margin-top:6px; }
.rv-fin-actions{ font-size:.72rem; color:var(--rv-i5); font-weight:600; margin-top:2px; }

/* ============================================================================
   Lot À-traiter — centre de traitement (.at-*). Porté de la maquette, mappé sur
   nos tokens (--rv-* et --brand). Inline dans #rv-root → les tokens rv- s'héritent.
   ============================================================================ */
.at-wrap{ display:grid; grid-template-columns:minmax(0,1fr) 322px; gap:20px; align-items:start; }
.at-main{ display:flex; flex-direction:column; gap:16px; min-width:0; }
.at-hero{ display:flex; align-items:center; gap:16px; background:linear-gradient(120deg,#eef3fb,#e9eef8); border:1px solid #c9d3e2; border-radius:18px; padding:17px 20px; box-shadow:var(--rv-sh-s); }
.at-hero-ic{ width:52px; height:52px; border-radius:15px; background:#fff; color:var(--brand); display:grid; place-items:center; flex:none; box-shadow:var(--rv-sh-s); } .at-hero-ic svg{ width:23px; height:23px; }
.at-hero-t{ flex:1; min-width:0; }
.at-hero-n{ font-size:1.35rem; font-weight:750; color:var(--rv-i9); font-family:var(--rv-serif); line-height:1.1; }
.at-hero-sub{ font-size:.82rem; color:var(--rv-i5); margin-top:3px; }
.at-hero-meta{ font-size:.78rem; color:var(--rv-b6); font-weight:600; margin-top:3px; }
.at-filters{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.at-chip{ display:inline-flex; align-items:center; gap:7px; border:1px solid var(--rv-line); background:var(--rv-paper); border-radius:10px; padding:8px 12px; font-size:.8rem; font-weight:600; color:var(--rv-i5); cursor:pointer; box-shadow:var(--rv-sh-s); }
.at-chip:hover{ border-color:#dbe0ea; } .at-chip.on{ background:var(--brand); border-color:var(--brand); color:#fff; }
.at-chip .n{ background:var(--rv-line2); color:var(--rv-i5); font-size:.68rem; font-weight:700; border-radius:20px; padding:0 7px; } .at-chip.on .n{ background:rgba(255,255,255,.22); color:#fff; }
.at-search{ flex:1; min-width:170px; display:flex; align-items:center; gap:9px; background:var(--rv-paper); border:1px solid var(--rv-line); border-radius:10px; padding:8px 12px; color:var(--rv-i4); box-shadow:var(--rv-sh-s); }
.at-search svg{ width:16px; height:16px; flex:none; } .at-search input{ border:0; outline:0; background:transparent; width:100%; font-size:.84rem; font-family:inherit; color:var(--rv-i7); }
.at-donow{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); padding:18px 20px; position:relative; overflow:hidden; }
.at-donow::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:linear-gradient(var(--brand),var(--rv-pend)); }
.at-dn-hd{ display:flex; align-items:center; gap:10px; font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--rv-i4); font-weight:700; margin-bottom:14px; }
.at-dn-prio{ margin-left:auto; background:var(--rv-pause-bg); color:var(--rv-pause-tx); border-radius:20px; padding:3px 11px; font-size:.7rem; font-weight:700; text-transform:none; letter-spacing:0; display:inline-flex; align-items:center; gap:5px; } .at-dn-prio svg{ width:12px; height:12px; }
.at-dn-top{ display:flex; align-items:center; gap:14px; }
.at-dn-av{ width:48px; height:48px; border-radius:14px; background:var(--brand); color:#fff; display:grid; place-items:center; font-weight:750; font-size:.95rem; flex:none; }
.at-dn-nm{ font-weight:750; color:var(--rv-i9); font-size:1.05rem; }
.at-dn-meta{ color:var(--rv-i5); font-size:.82rem; margin-top:1px; }
.at-dn-why{ display:flex; align-items:center; gap:8px; background:var(--rv-pause-bg); color:var(--rv-pause-tx); border-radius:11px; padding:9px 12px; font-size:.8rem; font-weight:600; margin:14px 0; } .at-dn-why svg{ width:15px; height:15px; flex:none; }
.at-prep{ display:flex; align-items:center; gap:9px; background:var(--rv-pend-bg); color:var(--rv-pend-tx); border-radius:11px; padding:12px 13px; font-size:.8rem; font-weight:600; margin:16px 0 6px; } .at-prep svg{ width:16px; height:16px; flex:none; }
.at-empty{ padding:32px; text-align:center; color:var(--rv-i4); }
.at-steps{ display:flex; align-items:flex-start; margin:16px 4px 6px; }
.at-step{ flex:1; display:flex; flex-direction:column; align-items:center; gap:7px; position:relative; }
.at-step .sic{ width:36px; height:36px; border-radius:50%; display:grid; place-items:center; background:var(--rv-line2); color:var(--rv-i4); border:2px solid var(--rv-line); z-index:1; } .at-step .sic svg{ width:16px; height:16px; }
.at-step .slb{ font-size:.7rem; color:var(--rv-i4); font-weight:600; text-align:center; }
.at-step::before{ content:""; position:absolute; top:18px; left:-50%; width:100%; height:2px; background:var(--rv-line); }
.at-step:first-child::before{ display:none; }
.at-step.done .sic{ background:var(--rv-done-bg); color:var(--rv-done-tx); border-color:var(--rv-done); } .at-step.done .slb{ color:var(--rv-done-tx); } .at-step.done::before{ background:var(--rv-done); }
.at-step.active .sic{ background:var(--brand); color:#fff; border-color:var(--brand); box-shadow:0 0 0 4px var(--rv-soft); } .at-step.active .slb{ color:var(--rv-b6); font-weight:700; }
.at-dn-actions{ display:flex; align-items:center; gap:18px; margin-top:16px; flex-wrap:wrap; }
.at-dn-actions .rv-btn.pri{ padding:11px 20px; }
.at-dn-links{ display:flex; align-items:center; gap:16px; font-size:.82rem; } .at-dn-links a{ display:inline-flex; align-items:center; gap:6px; color:var(--rv-i5); cursor:pointer; text-decoration:none; } .at-dn-links a:hover{ color:var(--rv-b6); } .at-dn-links svg{ width:15px; height:15px; }
.at-queue{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh-s); overflow:hidden; }
.at-q-hd{ padding:14px 18px; font-weight:700; color:var(--rv-i9); font-size:.9rem; border-bottom:1px solid var(--rv-line2); }
.at-grp-lb{ font-size:.66rem; letter-spacing:.06em; text-transform:uppercase; font-weight:700; padding:13px 18px 5px; }
.at-grp-lb.late{ color:#a1545a; } .at-grp-lb.today{ color:var(--rv-b6); } .at-grp-lb.soon{ color:var(--rv-pause-tx); } .at-grp-lb.old{ color:var(--rv-i4); }
.at-row{ display:flex; align-items:center; gap:13px; padding:12px 18px; border-top:1px solid var(--rv-line2); cursor:pointer; }
.at-row:hover{ background:#fafbfd; }
.at-row .dot{ width:8px; height:8px; border-radius:50%; flex:none; }
.at-row .dot.rose{ background:#c9787e; } .at-row .dot.amber{ background:var(--rv-pause); } .at-row .dot.blue{ background:var(--brand); } .at-row .dot.grey{ background:#c1c8d4; }
.at-row .av{ width:38px; height:38px; border-radius:11px; background:#eef1f6; color:var(--rv-i7); display:grid; place-items:center; font-weight:750; font-size:.72rem; flex:none; }
.at-row .who{ flex:1 1 auto; min-width:0; } .at-row .who b{ display:block; color:var(--rv-i9); font-weight:650; font-size:.88rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .at-row .who span{ color:var(--rv-i5); font-size:.78rem; }
.at-row .need{ text-align:right; flex:none; max-width:200px; } .at-row .need b{ display:block; font-size:.78rem; color:var(--rv-i7); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .at-row .need span{ font-size:.72rem; color:var(--rv-i4); }
.at-row .rv-btn{ flex:none; }
.at-aside{ display:flex; flex-direction:column; gap:16px; }
.at-card{ background:var(--rv-paper); border:1px solid #c9d3e2; border-radius:18px; box-shadow:var(--rv-sh); padding:16px 17px; }
.at-card-hd{ display:flex; align-items:center; gap:9px; font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--rv-i4); font-weight:700; margin-bottom:12px; } .at-card-hd svg{ width:15px; height:15px; color:var(--rv-i4); }
.at-aside-ph{ font-size:.82rem; color:var(--rv-i5); }
.at-close-row{ display:flex; align-items:center; gap:11px; padding:6px 0; font-size:.82rem; color:var(--rv-i7); }
.at-close-row .cnum{ width:26px; height:26px; border-radius:8px; background:var(--rv-done-bg); color:var(--rv-done-tx); display:grid; place-items:center; font-weight:750; font-size:.78rem; flex:none; }
.at-close-foot{ border-top:1px solid var(--rv-line2); margin-top:11px; padding-top:12px; font-size:.78rem; color:var(--rv-i5); }
.at-card .rv-btn{ width:100%; justify-content:center; margin-top:13px; }
.at-watch{ display:flex; align-items:center; gap:11px; padding:10px 0; font-size:.8rem; color:var(--rv-i7); border-bottom:1px solid var(--rv-line2); } .at-watch:last-child{ border-bottom:0; }
.at-watch .wic{ width:30px; height:30px; border-radius:9px; display:grid; place-items:center; flex:none; } .at-watch .wic svg{ width:15px; height:15px; }
.at-watch .wic.form{ background:var(--rv-pend-bg); color:var(--rv-pend-tx); } .at-watch .wic.note{ background:var(--rv-pause-bg); color:var(--rv-pause-tx); } .at-watch .wic.pay{ background:var(--rv-done-bg); color:var(--rv-done-tx); }
@media(max-width:1000px){ .at-wrap{ grid-template-columns:1fr; } }
