/* Eye Clinic Appointment Manager — public booking wizard */
.ecam-booking{--ecam-accent:#155e75;--ecam-accent-dim:color-mix(in srgb,var(--ecam-accent) 12%,white);--ecam-ink:#0f172a;--ecam-muted:#64748b;--ecam-border:#e2e8f0;--ecam-surface:#ffffff;--ecam-radius:16px;max-width:720px;margin:2rem auto;font-family:inherit;color:var(--ecam-ink)}
.ecam-booking *{box-sizing:border-box}
.ecam-booking form{position:relative;background:var(--ecam-surface);border:1px solid var(--ecam-border);border-radius:var(--ecam-radius);box-shadow:0 20px 45px -20px rgba(15,23,42,.18),0 2px 8px rgba(15,23,42,.05);padding:2rem;overflow:hidden}
/* honeypot: off-screen rather than display:none, since some bots specifically skip display:none/visibility:hidden fields */
.ecam-hp{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden}
.ecam-booking header{margin-bottom:1.4rem}
.ecam-kicker{color:var(--ecam-accent);font-size:.78rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase}
.ecam-booking h2{margin:.25rem 0 .4rem;font-size:1.9rem;letter-spacing:-.01em}
.ecam-booking header p{margin:.2rem 0;color:var(--ecam-muted)}
.ecam-privacy-note{font-size:.85rem;background:var(--ecam-accent-dim);border-radius:10px;padding:.6rem .8rem;margin-top:.7rem!important}

/* progress bar */
.ecam-progress{display:flex;align-items:center;gap:0;margin:1.4rem 0 1.8rem}
.ecam-progress-step{flex:1;display:flex;flex-direction:column;align-items:center;gap:.4rem;position:relative;font-size:.72rem;font-weight:700;color:var(--ecam-muted);text-transform:uppercase;letter-spacing:.04em}
.ecam-progress-step .ecam-dot{width:30px;height:30px;border-radius:50%;background:#f1f5f9;border:2px solid var(--ecam-border);display:flex;align-items:center;justify-content:center;font-size:.85rem;color:var(--ecam-muted);transition:all .25s ease;z-index:1}
.ecam-progress-step::before{content:"";position:absolute;top:15px;left:-50%;width:100%;height:2px;background:var(--ecam-border);z-index:0;transition:background .25s ease}
.ecam-progress-step:first-child::before{display:none}
.ecam-progress-step.is-done .ecam-dot,.ecam-progress-step.is-active .ecam-dot{background:var(--ecam-accent);border-color:var(--ecam-accent);color:#fff}
.ecam-progress-step.is-active .ecam-dot{box-shadow:0 0 0 5px var(--ecam-accent-dim)}
.ecam-progress-step.is-done::before,.ecam-progress-step.is-active::before{background:var(--ecam-accent)}
.ecam-progress-step.is-active,.ecam-progress-step.is-done{color:var(--ecam-ink)}

/* steps */
.ecam-step{display:none;animation:ecamFadeIn .35s ease}
.ecam-step.is-active{display:block}
@keyframes ecamFadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

.ecam-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:0 0 1rem}
.ecam-booking label{display:grid;gap:.4rem;font-weight:600;font-size:.9rem;margin:0 0 .9rem}
.ecam-booking input,.ecam-booking select,.ecam-booking textarea{border:1.5px solid var(--ecam-border);border-radius:10px;padding:.7rem .8rem;font:inherit;background:#fff;transition:border-color .15s,box-shadow .15s;width:100%}
.ecam-booking input:focus,.ecam-booking select:focus,.ecam-booking textarea:focus{outline:none;border-color:var(--ecam-accent);box-shadow:0 0 0 4px var(--ecam-accent-dim)}
.ecam-booking fieldset{border:0;padding:0;margin:0 0 1rem}
.ecam-booking fieldset legend{font-weight:700;padding:0 0 .5rem;font-size:.95rem}
.ecam-booking fieldset label{display:flex;align-items:center;gap:.55rem;font-size:.9rem;font-weight:400;margin:.4rem 0}
.ecam-booking fieldset input[type=checkbox]{width:auto}

/* service picker as cards */
.ecam-option-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.7rem;margin-bottom:1.1rem}
.ecam-option-card{position:relative;border:1.5px solid var(--ecam-border);border-radius:12px;padding:.85rem 1rem;cursor:pointer;transition:all .15s ease;background:#fff}
.ecam-option-card:hover{border-color:var(--ecam-accent);transform:translateY(-1px)}
.ecam-option-card.is-selected{border-color:var(--ecam-accent);background:var(--ecam-accent-dim);box-shadow:0 0 0 3px var(--ecam-accent-dim)}
.ecam-option-card strong{display:block;font-size:.95rem}
.ecam-option-card small{color:var(--ecam-muted);display:block;margin-top:.15rem;font-size:.8rem}
.ecam-option-card .ecam-check{position:absolute;top:.6rem;right:.6rem;width:18px;height:18px;border-radius:50%;border:2px solid var(--ecam-border);transition:all .15s}
.ecam-option-card.is-selected .ecam-check{border-color:var(--ecam-accent);background:var(--ecam-accent)}
.ecam-option-card.is-selected .ecam-check::after{content:"✓";color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;height:100%}

/* time slot buttons */
.ecam-slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:.5rem;margin:.3rem 0 1rem;max-height:230px;overflow-y:auto;padding-right:2px}
.ecam-slot{border:1.5px solid var(--ecam-border);border-radius:9px;padding:.55rem .3rem;background:#fff;font-weight:600;font-size:.85rem;cursor:pointer;transition:all .12s ease;text-align:center}
.ecam-slot:hover{border-color:var(--ecam-accent)}
.ecam-slot.is-selected{background:var(--ecam-accent);border-color:var(--ecam-accent);color:#fff}
.ecam-slot.is-taken{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8;cursor:default}
.ecam-slot-grid.has-selection .ecam-slot.is-taken{display:none}
.ecam-slot-empty,.ecam-slot-loading{grid-column:1/-1;color:var(--ecam-muted);font-size:.88rem;padding:.6rem 0}
.ecam-change-time{padding:.4rem .9rem!important;font-size:.82rem!important;margin-bottom:1rem}

/* review step */
.ecam-review{border:1.5px dashed var(--ecam-border);border-radius:12px;padding:1rem 1.1rem;margin-bottom:1.1rem;display:grid;gap:.5rem}
.ecam-review-row{display:flex;justify-content:space-between;gap:1rem;font-size:.9rem;padding:.3rem 0;border-bottom:1px solid #f1f5f9}
.ecam-review-row:last-child{border-bottom:0}
.ecam-review-row span:first-child{color:var(--ecam-muted)}
.ecam-review-row span:last-child{font-weight:600;text-align:right}

/* nav buttons */
.ecam-nav{display:flex;justify-content:space-between;align-items:center;gap:.8rem;margin-top:1.3rem}
.ecam-booking button{background:var(--ecam-accent);border:0;border-radius:10px;color:#fff;padding:.8rem 1.4rem;font-weight:700;cursor:pointer;font:inherit;transition:filter .15s,transform .1s;display:inline-flex;align-items:center;gap:.5rem}
.ecam-booking button:hover{filter:brightness(1.08)}
.ecam-booking button:active{transform:scale(.98)}
.ecam-booking button:disabled{opacity:.6;cursor:not-allowed;filter:none}
.ecam-btn-secondary{background:transparent!important;color:var(--ecam-ink)!important;border:1.5px solid var(--ecam-border)!important}
.ecam-btn-secondary:hover{border-color:var(--ecam-accent)!important}
.ecam-spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:ecamSpin .7s linear infinite}
@keyframes ecamSpin{to{transform:rotate(360deg)}}

.ecam-field-error{border-color:#dc2626!important}
.ecam-error-text{color:#dc2626;font-size:.8rem;font-weight:600;margin-top:.25rem}
.ecam-result{font-weight:600}
.ecam-notice{padding:1rem;background:#fff7ed;border-left:4px solid #f97316;border-radius:8px}

/* success screen */
.ecam-success{text-align:center;padding:1rem 0 .5rem;animation:ecamFadeIn .4s ease}
.ecam-success-icon{width:64px;height:64px;border-radius:50%;background:var(--ecam-accent-dim);color:var(--ecam-accent);display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;font-size:1.8rem;animation:ecamPop .4s cubic-bezier(.34,1.56,.64,1)}
@keyframes ecamPop{0%{transform:scale(0)}80%{transform:scale(1.1)}100%{transform:scale(1)}}
.ecam-success h3{margin:.2rem 0;font-size:1.3rem}
.ecam-success .ecam-booking-id{display:inline-block;margin:.6rem 0;font-family:ui-monospace,monospace;background:var(--ecam-accent-dim);color:var(--ecam-accent);padding:.3rem .7rem;border-radius:8px;font-weight:700}

@media(max-width:600px){
  .ecam-grid,.ecam-option-grid{grid-template-columns:1fr}
  .ecam-booking form{padding:1.25rem;border-radius:12px}
  .ecam-progress-step{font-size:.6rem}
}
