/* ======================================================================= Module de réservation — styles (préfixe bkg- pour éviter les collisions). Le thème vient des variables --bkg-*. À l'intégration, définis-les pour qu'elles épousent le site hôte (voir SKILL.md → « Thématisation »). Les valeurs par défaut ci-dessous forment un thème neutre clair sûr. ======================================================================= */ .bkg-scope{ --bkg-bg:#ffffff; --bkg-fg:#141414; --bkg-surface:#f6f6f4; --bkg-surface-2:#eeeeea; --bkg-muted:#5c594e; --bkg-primary:#111111; /* couleur d'accent (boutons, sélection) */ --bkg-primary-fg:#ffffff; /* texte SUR la couleur d'accent */ --bkg-primary-ink:#111111; /* accent en TEXTE sur fond clair (doit passer AA) */ --bkg-border:#e2e0d8; --bkg-radius:14px; --bkg-pill:999px; --bkg-font-display:inherit; --bkg-font-sans:inherit; } .bkg-scope,.bkg-scope *{box-sizing:border-box} .bkg-scope{color:var(--bkg-fg);font-family:var(--bkg-font-sans)} .bkg-scope button{font-family:inherit;cursor:pointer} .bkg-serif{font-family:var(--bkg-font-display)} .bkg-label{font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase} .bkg-scope :where(button,a,input,[tabindex]):focus-visible{outline:2px solid var(--bkg-primary-ink);outline-offset:2px;border-radius:var(--bkg-radius)} /* étapes */ .bkg-steps{display:flex;gap:8px;max-width:640px;margin:0 auto 26px} .bkg-st{flex:1;display:flex;flex-direction:column;gap:7px;align-items:center;text-align:center} .bkg-dot{width:100%;height:5px;border-radius:99px;background:var(--bkg-surface-2);transition:background .3s} .bkg-st.done .bkg-dot,.bkg-st.active .bkg-dot{background:var(--bkg-primary)} .bkg-st .bkg-n{font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--bkg-muted)} .bkg-st.active .bkg-n{color:var(--bkg-fg)} @media(max-width:620px){.bkg-st .bkg-n{display:none}} /* carte */ .bkg-card{background:var(--bkg-bg);border:1px solid var(--bkg-border);border-radius:calc(var(--bkg-radius) + 6px);padding:clamp(22px,4vw,38px);box-shadow:0 20px 50px -34px rgba(0,0,0,.4)} .bkg-h{margin-bottom:20px} .bkg-h .bkg-label{color:var(--bkg-primary-ink)} .bkg-h h3{font-family:var(--bkg-font-display);font-size:clamp(22px,4vw,32px);margin:6px 0 0;line-height:1.1;font-weight:500} .bkg-h p{color:var(--bkg-muted);font-size:14.5px;margin-top:6px} /* options */ .bkg-opts{display:grid;gap:12px} .bkg-opt{display:flex;align-items:center;gap:16px;width:100%;text-align:left;background:var(--bkg-surface);border:1.5px solid var(--bkg-border);border-radius:var(--bkg-radius);padding:16px 18px;transition:border-color .18s,background .18s;min-height:62px;color:var(--bkg-fg)} .bkg-opt:hover{border-color:var(--bkg-primary)} .bkg-opt[aria-pressed="true"]{border-color:var(--bkg-primary-ink);background:var(--bkg-surface-2)} .bkg-av{width:46px;height:46px;border-radius:50%;background:var(--bkg-surface-2);color:var(--bkg-primary-ink);display:flex;align-items:center;justify-content:center;font-family:var(--bkg-font-display);font-size:20px;flex-shrink:0} .bkg-otxt{flex:1;min-width:0} .bkg-otxt .bkg-t{font-weight:600;font-size:16px} .bkg-otxt .bkg-d{font-size:13px;color:var(--bkg-muted);margin-top:2px} .bkg-price{font-family:var(--bkg-font-display);font-size:22px;white-space:nowrap;font-variant-numeric:tabular-nums} .bkg-check{width:24px;height:24px;border-radius:50%;border:2px solid var(--bkg-border);flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .18s} .bkg-opt[aria-pressed="true"] .bkg-check{background:var(--bkg-primary-ink);border-color:var(--bkg-primary-ink)} .bkg-check svg{width:13px;height:13px;color:var(--bkg-primary-fg);opacity:0} .bkg-opt[aria-pressed="true"] .bkg-check svg{opacity:1} /* jours */ .bkg-days{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 10px;scroll-snap-type:x mandatory} .bkg-day{flex:0 0 auto;scroll-snap-align:start;background:var(--bkg-surface);border:1.5px solid var(--bkg-border);border-radius:14px;padding:12px 6px;width:76px;text-align:center;transition:all .18s;min-height:76px;color:var(--bkg-fg)} .bkg-day:hover{border-color:var(--bkg-primary)} .bkg-day[aria-pressed="true"]{background:var(--bkg-primary);border-color:var(--bkg-primary);color:var(--bkg-primary-fg)} .bkg-day .bkg-wd{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--bkg-muted)} .bkg-day[aria-pressed="true"] .bkg-wd{color:var(--bkg-primary-fg);opacity:.85} .bkg-day .bkg-dd{font-family:var(--bkg-font-display);font-size:26px;line-height:1.1;margin-top:2px} .bkg-day .bkg-mo{font-size:11px;color:var(--bkg-muted)} .bkg-day[aria-pressed="true"] .bkg-mo{color:var(--bkg-primary-fg);opacity:.85} /* créneaux */ .bkg-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px} .bkg-slot{background:var(--bkg-surface);border:1.5px solid var(--bkg-border);border-radius:12px;padding:14px 6px;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;transition:all .18s;min-height:48px;color:var(--bkg-fg)} .bkg-slot:hover{border-color:var(--bkg-primary)} .bkg-slot[aria-pressed="true"]{background:var(--bkg-primary);border-color:var(--bkg-primary-ink);color:var(--bkg-primary-fg)} .bkg-slot .bkg-rq{display:block;font-size:9.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--bkg-primary-ink);margin-top:3px} .bkg-empty{text-align:center;color:var(--bkg-muted);padding:28px 10px;font-size:14.5px} /* formulaire */ .bkg-field{margin-bottom:16px} .bkg-field label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px} .bkg-field input{width:100%;background:var(--bkg-surface);border:1.5px solid var(--bkg-border);border-radius:12px;padding:13px 15px;font-family:inherit;font-size:15.5px;color:var(--bkg-fg)} .bkg-field input:focus{border-color:var(--bkg-primary-ink);outline:none} .bkg-field .bkg-err{color:#9c3350;font-size:12.5px;margin-top:5px;display:none} .bkg-field.invalid .bkg-err{display:block} .bkg-field.invalid input{border-color:#c96a80} /* résumé */ .bkg-summary{background:var(--bkg-surface);border-radius:var(--bkg-radius);padding:20px 22px;display:grid;gap:12px} .bkg-r{display:flex;justify-content:space-between;gap:16px;font-size:14.5px} .bkg-r .bkg-k{color:var(--bkg-muted)} .bkg-r .bkg-v{font-weight:600;text-align:right} .bkg-tot{border-top:1px solid var(--bkg-border);padding-top:12px;font-family:var(--bkg-font-display);font-size:19px} /* boutons */ .bkg-nav{display:flex;gap:12px;margin-top:24px} .bkg-btn{border:none;border-radius:var(--bkg-pill);font-weight:700;font-size:15px;padding:15px 30px;min-height:52px;display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:opacity .18s,background .18s;text-decoration:none} .bkg-btn svg{width:17px;height:17px} .bkg-btn-p{background:var(--bkg-primary);color:var(--bkg-primary-fg);flex:1} .bkg-btn-p:hover{opacity:.9} .bkg-btn-p:disabled{opacity:.4;cursor:not-allowed} .bkg-btn-ghost{background:transparent;color:var(--bkg-fg);border:1.5px solid var(--bkg-border)} .bkg-btn-ghost:hover{border-color:var(--bkg-muted)} /* succès */ .bkg-done{text-align:center;padding:16px 0} .bkg-seal{width:84px;height:84px;border-radius:50%;background:var(--bkg-primary);display:flex;align-items:center;justify-content:center;margin:0 auto 20px} .bkg-seal svg{width:38px;height:38px;color:var(--bkg-primary-fg)} .bkg-done h3{font-family:var(--bkg-font-display);font-size:clamp(26px,5vw,38px);margin-bottom:12px;font-weight:500} .bkg-done p{color:var(--bkg-muted);max-width:420px;margin:0 auto 8px} .bkg-ref{display:inline-block;margin-top:14px;background:var(--bkg-surface);border-radius:var(--bkg-pill);padding:9px 20px;font-weight:600;letter-spacing:.04em} /* ===================== ADMIN ===================== */ .bkg-gate{max-width:400px;margin:40px auto;text-align:center} .bkg-gate .bkg-lock{width:64px;height:64px;border-radius:50%;background:var(--bkg-surface);display:flex;align-items:center;justify-content:center;margin:0 auto 20px} .bkg-gate .bkg-lock svg{width:28px;height:28px;color:var(--bkg-primary-ink)} .bkg-gate h2{font-family:var(--bkg-font-display);font-size:30px;margin-bottom:8px;font-weight:500} .bkg-gate p{color:var(--bkg-muted);margin-bottom:22px;font-size:14.5px} .bkg-inrow{display:flex;gap:10px} .bkg-gate input{flex:1;text-align:center;letter-spacing:.15em;font-size:18px;font-weight:600;background:var(--bkg-bg);border:1.5px solid var(--bkg-border);border-radius:12px;padding:14px;color:var(--bkg-fg)} .bkg-gate input:focus{border-color:var(--bkg-primary-ink);outline:none} .bkg-hint{font-size:12px;color:var(--bkg-muted);margin-top:14px} .bkg-ahead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px} .bkg-ahead .bkg-label{color:var(--bkg-primary-ink)} .bkg-ahead h1{font-family:var(--bkg-font-display);font-size:clamp(28px,5vw,42px);margin-top:6px;font-weight:500} .bkg-tools{display:flex;gap:8px;flex-wrap:wrap} .bkg-mini{border:1.5px solid var(--bkg-border);background:var(--bkg-bg);border-radius:var(--bkg-pill);padding:9px 16px;font-size:13px;font-weight:600;color:var(--bkg-fg);min-height:40px} .bkg-mini:hover{border-color:var(--bkg-muted)} .bkg-mini.danger{color:#9c3350;border-color:#e6c6ce} .bkg-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px} @media(max-width:620px){.bkg-stats{grid-template-columns:repeat(2,1fr)}} .bkg-stat{background:var(--bkg-bg);border:1px solid var(--bkg-border);border-radius:16px;padding:18px} .bkg-stat .bkg-num{font-family:var(--bkg-font-display);font-size:34px;line-height:1} .bkg-stat.acc .bkg-num{color:var(--bkg-primary-ink)} .bkg-stat .bkg-l{font-size:12px;color:var(--bkg-muted);margin-top:6px} .bkg-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px} .bkg-filters button{border:1.5px solid var(--bkg-border);background:var(--bkg-bg);border-radius:var(--bkg-pill);padding:9px 16px;font-size:13px;font-weight:600;color:var(--bkg-muted);min-height:40px} .bkg-filters button[aria-selected="true"]{background:var(--bkg-primary);color:var(--bkg-primary-fg);border-color:var(--bkg-primary)} .bkg-blist{display:grid;gap:12px} .bkg-bk{background:var(--bkg-bg);border:1px solid var(--bkg-border);border-radius:16px;padding:18px 20px;display:grid;grid-template-columns:1fr auto;gap:14px;align-items:start} .bkg-bk.st-confirmed{border-left:5px solid var(--bkg-primary)} .bkg-bk.st-pending{border-left:5px solid var(--bkg-surface-2)} .bkg-bk.st-declined{border-left:5px solid #e6c6ce;opacity:.72} .bkg-when{font-family:var(--bkg-font-display);font-size:22px;line-height:1.1} .bkg-svc{font-weight:600;margin-top:4px} .bkg-meta{font-size:13.5px;color:var(--bkg-muted);margin-top:6px;line-height:1.7} .bkg-meta b{color:var(--bkg-fg);font-weight:600} .bkg-badge{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 11px;border-radius:var(--bkg-pill);white-space:nowrap;align-self:start;justify-self:end} .badge-pending{background:var(--bkg-surface-2);color:var(--bkg-primary-ink)} .badge-confirmed{background:var(--bkg-primary);color:var(--bkg-primary-fg)} .badge-declined{background:var(--bkg-surface);color:var(--bkg-muted);border:1px solid var(--bkg-border)} .bkg-acts{grid-column:1 / -1;display:flex;gap:8px;flex-wrap:wrap;border-top:1px dashed var(--bkg-border);padding-top:14px} .bkg-act{border:none;border-radius:var(--bkg-pill);padding:9px 16px;font-size:13px;font-weight:700;min-height:40px;display:inline-flex;align-items:center;gap:7px} .bkg-act svg{width:14px;height:14px} .bkg-act-ok{background:var(--bkg-primary);color:var(--bkg-primary-fg)} .bkg-act-no{background:var(--bkg-surface);color:var(--bkg-fg);border:1.5px solid var(--bkg-border)} .bkg-act-del{background:transparent;color:#9c3350;margin-left:auto} .bkg-locknote{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--bkg-primary-ink);font-weight:600} .bkg-locknote svg{width:13px;height:13px} .bkg-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(120%);background:var(--bkg-fg);color:var(--bkg-bg);padding:13px 22px;border-radius:var(--bkg-pill);font-size:14px;font-weight:600;z-index:60;transition:transform .3s;box-shadow:0 18px 40px -12px rgba(0,0,0,.5);max-width:90vw;text-align:center} .bkg-toast.show{transform:translateX(-50%) translateY(0)} .bkg-banner{background:#fbe0e6;color:#8a2540;font-size:12.5px;text-align:center;padding:8px 16px;font-weight:500;border-radius:10px;margin-bottom:16px} .bkg-hidden{display:none!important} @media (prefers-reduced-motion: reduce){.bkg-scope *{transition:none!important;animation:none!important}}