/* =============================================================================
 * FILE:      ES_Reserve.css
 * LOCATION:  public_html/assets/CSS/ES_Reserve.css (under the ease-see domain root)
 * PART OF:   ease-see (ease-see.com) - reservations, first step
 * PURPOSE:   The look of the reservation form that opens over a reservation
 *            page (panel #es-reserve, drawn by es_reserve_button_html() in
 *            Render/ES_Blocks.php; contents by Render/ES_Reserve.php; run by
 *            assets/JS/ES_Reserve.js).
 *            Kept in its OWN file on purpose - not added to ES_Core.css - and
 *            loaded only on pages that have a Reserve button opening the form.
 *            Colours, type and shape come from ES_Core.css's named settings
 *            (--es-ink, --es-ochre, --es-bone, --es-surface, --es-border,
 *            --es-muted, --es-danger, --es-warn-bg, --es-font, --es-radius):
 *            no values are copied here, so a brand change in ES_Core.css
 *            carries through.
 *            The phone field inside the form is the Contact Us one and is
 *            styled by ES_Core.css (.es-form-phone...); only its fit inside
 *            this form is set here.
 * LAYOUT:    Phone: the panel fills the screen; the Continue/Send bar is
 *            fixed to the foot. 760px and wider: a centred card over a
 *            dimmed page, the bar at the foot of the card.
 * CLASSES:   .es-rsv (panel) .es-rsv-card .es-rsv-x .es-rsv-body, then rsv-*
 *            for everything inside. State classes: is-shut, is-locked,
 *            is-empty, is-bad, is-waiting, is-alarm, is-new, is-extra,
 *            is-here, is-typed.
 * CREATED:   2026-10-08
 * UPDATED:   2026-10-08  (later, after the first look) MADE TO STAND OUT: the
 *            form blended into the page. It now sits on white, not the
 *            page's own off-white; has an ochre line under its heading band;
 *            and at 760px and wider the card has an ochre outline, a deeper
 *            shadow and a darker dimmed page behind it. On a phone it fills
 *            the screen, so the white ground and ochre line do the work.
 *            BRAND ROW at the top of the heading band (.es-rsv-brand): the
 *            ease-see logo beside the operator's logo on a light tile (or
 *            its name), joined by a fine line.
 * UPDATED:   2026-10-08  (later still) THE PAGE NO LONGER JUMPS when the form
 *            opens: the rule that hid the page's scrolling is gone (see the
 *            note above .es-rsv).
 * UPDATED:   2026-10-18  "YOUR BOOKING" LINE under the heading (.rsv-for):
 *            ochre, bold - what the form already knows (activity, town,
 *            delivery place). And a closed step that is already complete
 *            (.rsv-blk.is-done) is never greyed, and its heading carries a
 *            tick, so a place handed over by the page is seen at once.
 *            Nothing else changed.
 * UPDATED:   2026-10-19  THE HEADER REWORKED: the brand row is "ease-see &
 *            {operator name}" (.es-rsv-brand-amp; the operator's name in white,
 *            no logo tile); the activity and town in a soft colour
 *            (.rsv-for-what); the delivery / collection places as the main
 *            lines, white, bold, larger, with a map pin (.rsv-for-where). The
 *            old heading and intro line are no longer drawn; .rsv-for is no
 *            longer used. Nothing else changed.
 * =============================================================================
 */

/* --- the Reserve button when it opens the form (a <button>, not a link) --- */
button.es-reserve-btn { border: none; font-family: var(--es-font); cursor: pointer; }

/* --- the panel ----------------------------------------------------------- */
/* 2026-10-08: the page behind is NOT touched while the form is open (hiding
   its scrolling removed the scrollbar and made the whole page jump sideways).
   Scrolling is kept inside the form instead: overscroll-behavior here, and
   ES_Reserve.js stops the mouse wheel reaching the page. */
.es-rsv { position: fixed; inset: 0; z-index: 200; overscroll-behavior: contain; background: #fff; font-family: var(--es-font); color: var(--es-ink); }
.es-rsv[hidden] { display: none; }
.es-rsv * { box-sizing: border-box; }
.es-rsv-card { position: relative; height: 100%; display: flex; flex-direction: column; background: #fff; }
.es-rsv-body { flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; font-size: 17px; line-height: 1.4; }
.es-rsv-x {
  position: absolute; top: calc(8px + env(safe-area-inset-top, 0px)); right: 8px; z-index: 2;
  width: 44px; height: 44px; border: none; border-radius: 50%; background: transparent;
  color: #fff; font-size: 28px; line-height: 1; cursor: pointer;
}
.es-rsv-x:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.rsv-loading { padding: 48px 20px; text-align: center; color: var(--es-muted); }

/* --- heading band -------------------------------------------------------- */
.rsv-band { background: var(--es-ink); color: #fff; padding: calc(16px + env(safe-area-inset-top, 0px)) 60px 18px 18px; border-bottom: 4px solid var(--es-ochre); }

/* --- brand row: ease-see beside the operator ---------------------------- */
.es-rsv-brand { display: flex; align-items: center; gap: 12px; margin: 0 0 14px; min-height: 36px; }
.es-rsv-brand-es { display: flex; align-items: center; font-size: 21px; font-weight: 400; letter-spacing: .06em; color: #fff; white-space: nowrap; }
.es-rsv-brand-es picture { display: block; line-height: 0; }
.es-rsv-brand-es-img { display: block; height: 28px; width: auto; }
.es-rsv-brand-join { flex: none; width: 1px; height: 30px; background: rgba(255,255,255,.45); }
.es-rsv-brand-amp { flex: none; font-size: 22px; font-weight: 300; color: var(--es-ochre); line-height: 1; }   /* 2026-10-19 */
.es-rsv-brand-op { display: flex; align-items: center; min-width: 0; background: #fff; border-radius: var(--es-radius-sm); padding: 4px 8px; }
.es-rsv-brand-op picture { display: block; line-height: 0; }
.es-rsv-brand-op-img { display: block; height: 28px; width: auto; max-width: 150px; object-fit: contain; }
.es-rsv-brand-op-name { background: none; padding: 0; color: #fff; font-size: 17px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rsv-band h2 { margin: 0 0 4px; font-size: 24px; line-height: 1.15; font-weight: 600; color: #fff; }
.rsv-band p { margin: 0; opacity: .9; }
/* 2026-10-19: what the form already knows - the activity and town, then where */
.rsv-band p.rsv-for-what { margin: 0; opacity: 1; color: rgba(255,255,255,.72); font-size: 15px; line-height: 1.35; }
.rsv-band p.rsv-for-where { display: flex; align-items: flex-start; gap: 8px; margin: 8px 0 0; opacity: 1; color: #fff; font-size: 20px; font-weight: 600; line-height: 1.25; }
.rsv-band p.rsv-for-where svg { flex: none; margin-top: 2px; color: var(--es-ochre); }
.rsv-band p.rsv-for-where[hidden] { display: none; }

/* --- steps --------------------------------------------------------------- */
.rsv-form { padding: 0 18px 150px; max-width: 31rem; margin: 0 auto; }
.rsv-blk { border-bottom: 1px solid var(--es-border); padding: 18px 0 20px; }
.rsv-blk h3 { margin: 0 0 12px; font-size: 18px; font-weight: 600; }
.rsv-blk-sum { display: none; width: 100%; text-align: left; font: inherit; color: var(--es-ink); background: none; border: 0; padding: 0; cursor: pointer; }
.rsv-blk-sum b { display: block; font-size: 14px; font-weight: 600; color: var(--es-muted); }
.rsv-blk-sum span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rsv-blk.is-shut { padding: 12px 0; }
.rsv-blk.is-shut .rsv-blk-sum { display: block; }
.rsv-blk.is-shut .rsv-blk-body { display: none; }
.rsv-blk.is-locked .rsv-blk-sum { opacity: .45; }
.rsv-blk.is-locked .rsv-blk-sum b { font-size: 18px; color: var(--es-ink); }
/* 2026-10-18: a step already complete - shown, ticked, never greyed */
.rsv-blk.is-done .rsv-blk-sum { opacity: 1; }
.rsv-blk.is-done .rsv-blk-sum b { font-size: 14px; color: var(--es-muted); }
.rsv-blk.is-done .rsv-blk-sum b::after { content: " \2713"; color: var(--es-ok); font-weight: 700; }
.rsv-blk.is-done .rsv-blk-sum span { font-weight: 600; }

/* --- fields -------------------------------------------------------------- */
.rsv-f { margin-bottom: 13px; }
.rsv-f:last-child { margin-bottom: 0; }
.rsv-f label, .rsv-lab { display: block; font-size: 17px; font-weight: 600; margin-bottom: 6px; color: var(--es-ink); }
.rsv-f > input, .rsv-f > select, .rsv-f > div > input {
  width: 100%; min-height: 48px; padding: 9px 12px; font: inherit; font-size: 17px; color: var(--es-ink);
  background: #fff; border: 1.5px solid var(--es-border); border-radius: var(--es-radius);
  -webkit-appearance: none; appearance: none;
}
.rsv-f > select {
  background-image: linear-gradient(45deg, transparent 50%, var(--es-muted) 50%), linear-gradient(135deg, var(--es-muted) 50%, transparent 50%);
  background-position: calc(100% - 18px) 50%, calc(100% - 12px) 50%;
  background-size: 6px 6px; background-repeat: no-repeat; padding-right: 36px;
}
.rsv-f input:focus, .rsv-f select:focus { outline: none; border-color: var(--es-ochre); box-shadow: 0 0 0 2px rgba(195,154,77,.25); }
.rsv-f input.is-empty, .rsv-f select.is-empty, .rsv-f .es-form-phone.is-empty { background-color: var(--es-warn-bg); }
.rsv-f input.is-bad { border-color: var(--es-danger); }
.rsv-f input:disabled, .rsv-f select:disabled { background-color: var(--es-bone); color: var(--es-muted); }
.rsv-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
.rsv-note { font-size: 14px; color: var(--es-muted); margin: 7px 0 0; }
.rsv-note.is-alarm { color: var(--es-danger); font-weight: 600; }
.rsv-lab-gap { margin-top: 13px; }
.rsv-known { font-size: 14px; font-weight: 600; color: var(--es-ok); margin: 0 0 13px; }
/* the Contact Us phone field, fitted to this form's height and gap */
.rsv-f.es-form { display: block; gap: 0; }
.rsv-f.es-form .es-form-phone { min-height: 48px; border-width: 1.5px; border-radius: var(--es-radius); }
.rsv-f.es-form .es-form-input { font-size: 17px; }

/* --- place picking (bikes) ---------------------------------------------- */
.rsv-ghost {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; min-height: 48px;
  margin-top: 10px; padding: 8px 14px; font: inherit; font-weight: 600; text-align: left; color: var(--es-ink);
  background: var(--es-surface); border: 1.5px solid var(--es-ink); border-radius: var(--es-radius); cursor: pointer;
}
.rsv-ghost.rsv-geo { justify-content: flex-start; }
.rsv-ghost svg { flex: none; }
.rsv-ghost small { font-weight: 400; color: var(--es-muted); text-align: right; }
.rsv-plist { margin-top: 6px; border: 1.5px solid var(--es-border); border-radius: var(--es-radius); overflow: hidden; }
.rsv-plist button { display: block; width: 100%; min-height: 48px; padding: 9px 13px; font: inherit; text-align: left; color: var(--es-ink); background: var(--es-surface); border: 0; border-bottom: 1px solid var(--es-border); cursor: pointer; }
.rsv-plist button:last-child { border-bottom: 0; }
.rsv-plist button small { display: block; font-size: 14px; color: var(--es-muted); }
.rsv-plist button.is-here { font-weight: 600; }
.rsv-plist button.is-typed { color: var(--es-ochre-dk); }
.rsv-phead { margin: 0; padding: 7px 13px; font-size: 13px; font-weight: 600; color: var(--es-muted); background: var(--es-bone); border-bottom: 1px solid var(--es-border); }
.rsv-ask { margin-top: 11px; padding: 13px; background: var(--es-bone); border-radius: var(--es-radius); }
.rsv-ask p { margin: 0 0 10px; font-weight: 600; }
.rsv-chip { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 6px 8px 6px 13px; background: var(--es-bone); border: 1.5px solid var(--es-border); border-radius: var(--es-radius); }
.rsv-chip span { flex: 1; min-width: 0; font-weight: 600; }
.rsv-chip button { flex: none; min-height: 37px; padding: 0 11px; font: inherit; font-size: 14px; color: var(--es-ink); background: var(--es-surface); border: 1.5px solid var(--es-border); border-radius: var(--es-radius-sm); cursor: pointer; }
.rsv-tick { display: flex; gap: 11px; align-items: center; margin: 14px 0 13px; font-weight: 600; }
.rsv-tick input { flex: none; width: 26px; height: 26px; margin: 0; accent-color: var(--es-ink); }
#rsv_pin_more { margin-top: 13px; }

/* --- duration buttons ---------------------------------------------------- */
.rsv-durs { display: flex; gap: 8px; }
.rsv-durs button { flex: 1; min-height: 48px; font: inherit; font-weight: 600; color: var(--es-ink); background: var(--es-surface); border: 1.5px solid var(--es-border); border-radius: var(--es-radius); cursor: pointer; }
.rsv-durs button[aria-pressed="true"] { background: var(--es-ink); border-color: var(--es-ink); color: #fff; }
.rsv-durs button:disabled { background: var(--es-bone); color: var(--es-muted); cursor: default; }

/* --- counters and the line-up ------------------------------------------- */
.rsv-count { display: flex; align-items: center; gap: 12px; padding: 9px 0; }
.rsv-count + .rsv-count { border-top: 1px solid var(--es-bone); }
.rsv-what { flex: 1; min-width: 0; }
.rsv-what b { font-weight: 600; }
.rsv-what small { display: block; font-size: 14px; color: var(--es-muted); }
.rsv-step { display: flex; align-items: center; gap: 6px; }
.rsv-step button { width: 46px; height: 46px; border-radius: 50%; font: inherit; font-size: 24px; line-height: 1; color: var(--es-ink); background: var(--es-surface); border: 1.5px solid var(--es-border); cursor: pointer; }
.rsv-step button:disabled { color: var(--es-border); background: var(--es-bone); cursor: default; }
.rsv-step output { width: 32px; text-align: center; font-weight: 700; font-size: 19px; font-variant-numeric: tabular-nums; }
.rsv-lineup { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 2px 6px; margin-top: 14px; color: var(--es-ink); }
.rsv-lineup:empty { display: none; }
.rsv-lineup svg { flex: none; width: 3rem; height: 2rem; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.rsv-lineup svg.is-extra { width: 2.4rem; height: 1.6rem; color: var(--es-muted); }
.rsv-lineup svg .rsv-zap { fill: var(--es-ochre); stroke: var(--es-ochre); stroke-width: 1; }
.rsv-lineup svg.is-new { animation: rsv-roll-in .28s ease-out; }
@keyframes rsv-roll-in { from { opacity: 0; transform: translateX(-14px) scale(.7); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .rsv-lineup svg.is-new { animation: none; } }
.rsv-tally { margin: 6px 0 3px; font-size: 20px; font-weight: 700; }
.rsv-tally:empty { display: none; }

/* --- consent ------------------------------------------------------------- */
.rsv-agree { display: flex; gap: 12px; align-items: flex-start; padding: 18px 0 0; font-size: 14px; color: var(--es-muted); }
.rsv-agree[hidden] { display: none; }
.rsv-agree.is-alarm { color: var(--es-danger); font-weight: 600; }
.rsv-agree input { flex: none; width: 26px; height: 26px; margin: 1px 0 0; accent-color: var(--es-ink); }

/* --- the Continue / Send bar -------------------------------------------- */
.rsv-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1; background: #fff; border-top: 1px solid var(--es-border); padding: 11px 18px calc(11px + env(safe-area-inset-bottom, 0px)); }
.rsv-bar-row { display: flex; align-items: center; gap: 14px; max-width: 28.75rem; margin: 0 auto; }
.rsv-sum { flex: none; min-width: 72px; }
.rsv-sum small { display: block; font-size: 13px; color: var(--es-muted); }
.rsv-sum strong { font-size: 23px; line-height: 1.1; font-variant-numeric: tabular-nums; }
.rsv-send { flex: 1; min-height: 53px; padding: 0 13px; font: inherit; font-weight: 700; color: var(--es-ink); background: var(--es-ochre); border: 0; border-radius: var(--es-radius); cursor: pointer; }
.rsv-send:hover { background: var(--es-ochre-dk); }
.rsv-send:disabled { opacity: .6; cursor: default; }
.rsv-send.is-waiting, .rsv-send.is-waiting:hover { background: var(--es-border); color: var(--es-muted); }
.rsv-send:focus-visible, .rsv-blk-sum:focus-visible, .rsv-ghost:focus-visible { outline: 2px solid var(--es-ochre); outline-offset: 2px; }
.rsv-oops { max-width: 28.75rem; margin: 0 auto 9px; font-size: 14px; font-weight: 600; color: var(--es-danger); }
.rsv-oops:empty { display: none; }

/* --- thank-you ----------------------------------------------------------- */
.rsv-done { padding: 26px 18px 48px; max-width: 31rem; margin: 0 auto; }
.rsv-done:focus { outline: none; }
.rsv-done h3 { margin: 0 0 8px; font-size: 24px; }
.rsv-done p { margin: 0 0 18px; }
.rsv-done dl { margin: 0 0 22px; border-top: 1px solid var(--es-border); }
.rsv-done dl div { display: flex; justify-content: space-between; gap: 16px; padding: 11px 0; border-bottom: 1px solid var(--es-border); }
.rsv-done dt { color: var(--es-muted); }
.rsv-done dd { margin: 0; font-weight: 600; text-align: right; }
.rsv-done .rsv-send { width: 100%; }

.rsv-trap { position: absolute; left: -9999px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.es-rsv [hidden] { display: none !important; }

/* --- 760px and wider: a centred card over the dimmed page ---------------- */
@media (min-width: 760px) {
  .es-rsv { background: rgba(30,34,26,.72); display: flex; align-items: center; justify-content: center; padding: 24px; }
  .es-rsv[hidden] { display: none; }
  .es-rsv-card { width: 100%; max-width: 31rem; height: auto; max-height: 100%; border-radius: 14px; overflow: hidden;
                 box-shadow: 0 0 0 3px var(--es-ochre), 0 24px 70px rgba(30,34,26,.55); }
  .rsv-form { padding-bottom: 0; }
  .rsv-bar { position: sticky; left: auto; right: auto; margin: 18px -18px 0; }
  .rsv-done { padding-bottom: 28px; }
}

/* A desktop has no GPS: its "location" is a guess and can be far out, so
   "Use my location" is offered on touch devices only. */
@media (hover: hover) and (pointer: fine) {
  #rsv_geo_btn { display: none; }
}