/* Booking and confirmation pages. Extends styles.css and itinerary.css; never restates their tokens. */
.book{padding-block:34px 70px}
.test-banner{background:#fff4d6;border:1px solid #f0d58a;border-radius:12px;padding:12px 16px;font-size:14px;line-height:1.5;margin:0 0 26px}
.test-banner code{background:#fff;border-radius:6px;padding:1px 6px;font-size:13px}
.notice{background:#f3ebe1;border-radius:12px;padding:12px 16px;margin:0 0 20px}
.book-grid{display:grid;grid-template-columns:1.25fr .9fr;gap:48px;align-items:start}
.book h1{font:600 clamp(32px,4.4vw,48px)/1.08 var(--serif);color:var(--plum);margin:10px 0 14px}
.book .lede{font-size:17px;line-height:1.6;color:#4c4350;max-width:52ch;margin:0 0 26px}
#book-form fieldset{border:0;padding:0;margin:0 0 22px}
#book-form legend{font:600 18px var(--serif);color:var(--plum);margin-bottom:12px}
#book-form label{display:block;font-size:13px;font-weight:500;color:#4c4350;margin-bottom:14px}
#book-form input:not([type=checkbox]),#book-form select{display:block;width:100%;margin-top:6px;height:52px;padding:0 14px;
  border:1px solid var(--line);border-radius:10px;background:#fff;font:400 16px var(--sans);color:var(--ink)}
#book-form input:focus,#book-form select:focus{outline:2px solid var(--copper);outline-offset:1px;border-color:var(--copper)}
#book-form select:disabled{background:#f6f1ea;color:#4c4350;opacity:1}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.hp{position:absolute!important;left:-9999px}
.consent{display:flex!important;gap:12px;align-items:flex-start;background:#f6f1ea;border-radius:12px;padding:14px 16px;font-size:14px!important;line-height:1.5}
.consent input{width:20px;height:20px;margin-top:2px;flex:none;accent-color:var(--plum)}
.form-error{color:#9b2c2c;background:#fbeaea;border-radius:10px;padding:10px 14px;font-size:14px}
#pay-btn{width:100%;justify-content:center;margin-top:6px}
#pay-btn:disabled{opacity:.6;cursor:wait}
.secure-note{font-size:12px;color:#7a6f79;text-align:center;margin:10px 0 0}
.summary{background:var(--plum);color:#f4e7dc;border-radius:18px;padding:28px;position:sticky;top:20px}
.summary .eyebrow{color:#f0b27a}
.summary h2{font:600 26px/1.15 var(--serif);margin:8px 0 4px;color:#fff}
.summary-dates{font-size:13px;opacity:.85;margin:0 0 18px}
.summary .plan tr.today th,.summary .plan tr.today td{color:#f0b27a;font-weight:600}
.plan tr.total th,.plan tr.total td{font-weight:600;border-bottom:0;padding-top:12px}
.summary .fineprint{font-size:12px;line-height:1.55;opacity:.8;margin:14px 0 0}
.booked{max-width:720px}
.receipt{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;margin:6px 0 30px}
.receipt span{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#7a6f79}
.receipt b{display:block;font:600 18px var(--serif);color:var(--plum);margin-top:4px;word-break:break-all}
.booked h2{font:600 24px var(--serif);color:var(--plum);margin:0 0 6px}
.schedule{width:100%;max-width:520px;border-collapse:collapse;margin:14px 0 30px}
.schedule th,.schedule td{text-align:left;padding:11px 0;border-bottom:1px solid var(--line);font-size:15px;font-weight:400;color:var(--ink)}
.schedule td{text-align:right}
@media (max-width:860px){
  .book-grid{grid-template-columns:1fr;gap:28px}
  .summary{position:static;order:-1}
  .row2{grid-template-columns:1fr;gap:0}
  .receipt{grid-template-columns:1fr}
}

/* Step 2: Authorize.net's card form, embedded. The frame's own styling is theirs; everything around
   it is ours, so it reads as part of the page rather than a hand-off. */
.pay-step h2{font:600 28px/1.15 var(--serif);color:var(--plum);margin:6px 0 6px}
.pay-for{font-size:14px;color:#6c5f6a;margin:0 0 18px}
.step-back{margin:0 0 8px}
.step-back .text-button{font:500 13px var(--sans);color:var(--copper);background:none;border:0;padding:0;cursor:pointer}
.pay-frame{position:relative;background:#fff;border:1px solid var(--line);border-radius:16px;padding:8px 6px;
  box-shadow:0 14px 34px rgba(65,32,60,.10);min-height:120px}
.pay-frame iframe{display:block;width:100%;border:0;transition:height .2s ease}
.pay-loading{position:absolute;inset:0;display:grid;place-items:center;margin:0;font-size:14px;color:#7a6f79}
.secure-badge{margin-top:14px}

/* a display value beats the hidden attribute; the loading note stayed on top of the card form */
.pay-loading[hidden],.pay-step[hidden],#book-form[hidden]{display:none!important}
/* Phones: during the card step the form comes first and the trip summary drops below it. */
@media(max-width:860px){body.is-paying .summary{order:1}}
.pay-frame iframe{min-height:0}
/* Optional add-on in the booking form */
#book-form .addon{display:flex!important;gap:12px;align-items:flex-start;margin-top:14px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fff8;font-size:14px;line-height:1.5;cursor:pointer}
#book-form .addon input{margin-top:3px;width:18px;height:18px;flex:none;accent-color:var(--plum)}
.addon b{display:block;color:var(--plum)}
#book-form .addon[hidden]{display:none!important}
.test-banner[hidden]{display:none!important}
