/* Premier Car Service — Booking Form Styles */
/* Source of truth: github.com/LanNansa/premier-car-service */

:root {
      /* Transfeero-inspired near-black — neutral surfaces, refined gold. */
      --navy:#111214; --n2:#1c1d24; --n3:#26272f; --n4:#2f3040; --n5:#38394a;
      --gold:#c9a55a; --gl:#e8c98e; --gb:rgba(201,165,90,.18); --gd:rgba(201,165,90,.08);
      --cream:#d8dde6; --text:#d8dde6; --muted:#8090a8;
      --err:#ef4444; --warn:#f59e0b; --ok:#22c55e;
      --serif:"Cormorant Garamond",Georgia,serif;
      --sans:"DM Sans",sans-serif; --r:8px;
    }
    *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
    html{font-size:17px;scroll-behavior:smooth}
    body{background:var(--navy);color:var(--text);font-family:var(--sans);font-weight:300;line-height:1.65;min-height:100vh}
    a{color:var(--gold);text-decoration:none}
    input,select,textarea{font-family:var(--sans);font-size:1rem}

    /* HEADER */
    .bk-header{background:var(--n2);border-bottom:1px solid rgba(255,255,255,.07);padding:1.3rem 2rem;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.75rem;position:relative}
    .bk-header img{height:80px;width:auto}
    .back-link{font-size:.78rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);transition:color .2s;position:absolute;right:2rem;top:50%;transform:translateY(-50%)}
    .back-link::before{content:"← ";}.back-link:hover{color:var(--gold)}

    /* PROGRESS */
    .prog-wrap{background:var(--n2);border-bottom:1px solid rgba(255,255,255,.07);padding:1.2rem 2rem;position:relative;z-index:1}
    .prog-steps{display:flex;align-items:center;max-width:560px;margin:0 auto}
    .prog-step{display:flex;flex-direction:column;align-items:center;gap:.35rem;flex:1;position:relative}
    .prog-step:not(:last-child)::after{content:"";position:absolute;top:17px;left:50%;width:100%;height:1px;background:var(--n4);z-index:0}
    .prog-step.done:not(:last-child)::after,.prog-step.active:not(:last-child)::after{background:var(--gold)}
    .prog-dot{width:34px;height:34px;border-radius:50%;border:1px solid var(--n4);background:var(--n2);display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:600;color:var(--muted);z-index:1;transition:all .3s}
    .prog-step.active .prog-dot{border-color:var(--gold);background:var(--gold);color:var(--navy)}
    .prog-step.done .prog-dot{border-color:var(--gold);color:var(--gold)}
    .prog-step.done .prog-dot::after{content:"✓"}
    .prog-step.done .prog-dot span{display:none}
    .prog-label{font-size:.68rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:center}
    .prog-step.active .prog-label{color:var(--gold)}

    /* MAIN */
    /* !important defends <main> against Firefox extensions (download
       managers, ad/content blockers, reader-mode helpers) that inject
       userContent stylesheets hiding <main>. Operator's DevTools
       diagnostic confirmed: step3 had .active + display:block, but
       <main class="bk-main"> had computed display:none from an extension. */
    main.bk-main{display:block !important;max-width:740px;margin:0 auto;padding:2rem 1.5rem 5rem}
    .step-panel{display:none}.step-panel.active{display:block}
    .step-title{font-family:var(--serif);font-size:1.75rem;font-weight:300;color:var(--title,var(--cream));margin-bottom:.3rem}
    .step-title em{font-style:italic;color:var(--gl)}
    .step-sub{font-size:.88rem;color:var(--muted);margin-bottom:2rem;line-height:1.6}

    /* FIELDS */
    .fg{margin-bottom:1.3rem}
    .fl{display:block;font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:.45rem}
    .fl .req{color:var(--gold)}
    .fi{width:100%;background:var(--n3);border:1px solid var(--n4);border-radius:var(--r);color:var(--cream);padding:.7rem 1rem;font-size:.95rem;transition:border-color .2s,box-shadow .2s;outline:none;-webkit-appearance:none;appearance:none}
    .fi:focus{border-color:var(--gold);box-shadow:0 0 0 2px var(--gd)}
    /* Validation flash — applied by showE() for ~1.8s so the customer
       can't miss which field broke. Strong red border + pulsing glow so
       the field is unmistakable on focus. (Rev 120) */
    .fi.input-error-flash{border-color:#ef4444 !important;box-shadow:0 0 0 2px rgba(239,68,68,.35) !important;animation:pcs-err-flash 1.8s ease-out}
    @keyframes pcs-err-flash{0%{box-shadow:0 0 0 4px rgba(239,68,68,.55)}50%{box-shadow:0 0 0 2px rgba(239,68,68,.35)}100%{box-shadow:0 0 0 2px rgba(239,68,68,.35)}}
    /* Placeholder text — smaller + dimmer so empty fields are unmistakably
       different from filled ones. Operator feedback (Rev 117): pre-filled
       defaults that look identical to user input were causing booking
       errors (Safari time field, etc.). */
    .fi::placeholder{color:rgba(216,226,242,0.35);font-size:0.88em;font-weight:300;letter-spacing:0.01em}
    .fi:placeholder-shown{color:rgba(216,226,242,0.55)}

    /* Override browser autofill yellow — operator-reported (mobile): when
       Google Places picks an address or iOS prefills name, the field turns
       yellow and downstream validation refuses to advance until user
       retypes. Override matches our dark theme so autofilled values look
       identical to typed values. */
    .fi:-webkit-autofill,
    .fi:-webkit-autofill:hover,
    .fi:-webkit-autofill:focus,
    .fi:-webkit-autofill:active{
      -webkit-box-shadow: 0 0 0 30px var(--n3) inset !important;
      -webkit-text-fill-color: var(--cream) !important;
      caret-color: var(--cream);
      transition: background-color 9999s ease-out 0s;
    }

    /* Date input — empty placeholder ("yyyy-mm-dd") is barely visible
       against the navy background on mobile. Force opaque color so empty-
       state date fields are clearly visible. */
    input[type="date"].fi{
      color: var(--cream);
      -webkit-text-fill-color: var(--cream);
    }
    input[type="date"].fi::-webkit-datetime-edit-fields-wrapper{color:var(--cream)}
    input[type="date"].fi::-webkit-datetime-edit-year-field,
    input[type="date"].fi::-webkit-datetime-edit-month-field,
    input[type="date"].fi::-webkit-datetime-edit-day-field,
    input[type="date"].fi::-webkit-datetime-edit-text{color:var(--cream);opacity:1}
    input[type="date"].fi:invalid::-webkit-datetime-edit{
      color:rgba(216,226,242,0.6);
      /* Empty date: lighter but still readable on mobile */
    }
    input[type="date"].fi::-webkit-calendar-picker-indicator{
      filter:invert(0.7) sepia(1) saturate(2) hue-rotate(20deg);
      cursor:pointer;
    }

    /* Native time input — matches the admin Late-Night picker style.
       Renders as "HH:MM  a.m./p.m." with built-in AM/PM toggle on Mac/iOS
       Safari, device-native picker on Android. Larger numeric font + gold
       AM/PM tinting so the value reads cleanly against the rest of the form.
       Empty-state (-- : -- --) gets bumped contrast so it doesn't look like
       a blank text field on first glance. */
    input.fi[type="time"]{
      font-size:1.15rem;
      font-variant-numeric:tabular-nums;
      letter-spacing:.04em;
      font-weight:500;
      color:var(--cream);
      -webkit-text-fill-color:var(--cream);
    }
    input.fi[type="time"]::-webkit-datetime-edit{padding:0;color:var(--cream)}
    input.fi[type="time"]::-webkit-datetime-edit-fields-wrapper{color:var(--cream)}
    input.fi[type="time"]::-webkit-calendar-picker-indicator{
      filter:invert(0.7) sepia(1) saturate(2) hue-rotate(20deg);
      cursor:pointer;
      opacity:.85;
      margin-left:.4rem;
    }
    input.fi[type="time"]::-webkit-calendar-picker-indicator:hover{opacity:1}
    input.fi[type="time"]::-webkit-datetime-edit-ampm-field{
      color:var(--gold);
      font-weight:600;
      text-transform:lowercase;
      padding:0 .15em;
    }
    input.fi[type="time"]::-webkit-datetime-edit-hour-field,
    input.fi[type="time"]::-webkit-datetime-edit-minute-field{
      color:var(--cream);
      padding:0 .12em;
    }
    input.fi[type="time"]::-webkit-datetime-edit-hour-field:focus,
    input.fi[type="time"]::-webkit-datetime-edit-minute-field:focus,
    input.fi[type="time"]::-webkit-datetime-edit-ampm-field:focus{
      background:rgba(201,165,90,.18);
      color:var(--gold);
      outline:none;
      border-radius:2px;
    }
    input.fi[type="time"]::-webkit-datetime-edit-text{
      color:var(--gold);
      padding:0 .15em;
      font-weight:600;
    }
    /* Firefox empty-state placeholder text */
    input.fi[type="time"]::placeholder{color:rgba(216,226,242,0.6)}
    .fi.err{border-color:var(--err)}
    select.fi{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23c9a55a' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem;cursor:pointer}
    .g2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
    .g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem}
    .fe{font-size:.75rem;color:var(--err);margin-top:.3rem;display:none}
    .fe.show{display:block}
    .fh{font-size:.76rem;color:var(--muted);margin-top:.3rem;line-height:1.5}
    .divider{border:none;border-top:1px solid var(--n4);margin:1.6rem 0}
    .sec-lbl{font-size:.72rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:.9rem;display:flex;align-items:center;gap:.75rem}
    .sec-lbl::after{content:"";flex:1;height:1px;background:var(--n4)}

    /* INFO / NOTICE BOXES */
    .info-box{background:var(--n3);border:1px solid var(--n4);border-left:2px solid var(--gold);border-radius:var(--r);padding:.85rem 1.1rem;margin-bottom:1.2rem;font-size:.82rem;color:var(--muted);line-height:1.65}
    .info-box strong{color:var(--cream)}
    .notice{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.3);border-radius:var(--r);padding:.85rem 1.1rem;margin-bottom:1.2rem;font-size:.82rem;color:var(--warn);line-height:1.6}
    .notice strong{font-weight:600}

    /* PASSENGER SELECTOR */
    .pax-row{display:flex;align-items:center;gap:1rem;background:var(--n3);border:1px solid var(--n4);border-radius:var(--r);padding:.85rem 1.1rem}
    .pax-label{flex:1;font-size:.9rem;color:var(--cream);font-weight:500}
    .pax-sub{font-size:.75rem;color:var(--muted);margin-top:.1rem}
    .counter{display:flex;align-items:center;gap:.75rem}
    .cbtn{width:44px;height:44px;border:1px solid var(--gb);border-radius:12px;background:transparent;color:var(--gold);font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;line-height:1;flex-shrink:0}
    .cbtn:hover{background:var(--gd);border-color:var(--gold)}
    .cbtn:disabled{opacity:.3;cursor:not-allowed}
    .cval{font-size:1.1rem;font-weight:600;color:var(--cream);min-width:24px;text-align:center}

    /* LUGGAGE */
    .lug-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:.75rem}
    .lug-item{background:linear-gradient(180deg,var(--n3),var(--n2));border:1px solid var(--n4);border-radius:12px;padding:1rem;transition:border-color .2s,box-shadow .2s,transform .2s}
    .lug-item:hover{border-color:var(--gb);box-shadow:0 8px 22px -12px rgba(0,0,0,.65);transform:translateY(-1px)}
    .lug-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.2rem}
    .lug-name{font-size:.88rem;font-weight:500;color:var(--cream)}
    .lug-unit{font-size:.7rem;color:var(--gold);font-weight:600;background:var(--gd);border:1px solid var(--gb);padding:.18rem .5rem;border-radius:6px}
    .lug-desc{font-size:.73rem;color:var(--muted);margin-bottom:.75rem;line-height:1.4}
    /* COMBINED standard-luggage card (feature G) — one card, smallest→largest,
       icon scales with size, per-item unit values hidden */
    .lug-combined{background:linear-gradient(180deg,var(--n3),var(--n2));border:1px solid var(--n4);border-radius:12px;padding:.2rem 1rem .4rem;margin-bottom:.75rem}
    .lug-combined-hd{display:flex;justify-content:space-between;align-items:baseline;gap:.6rem;padding:.7rem .1rem .35rem;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
    .lug-combined-hd span{font-size:.72rem;font-weight:600;letter-spacing:.02em;text-transform:none;color:var(--gold);white-space:nowrap}
    .lug-row{display:flex;align-items:center;gap:.85rem;padding:.65rem .1rem;border-top:1px solid var(--n4)}
    .lug-row:first-of-type{border-top:none}
    .lug-row-icon{width:46px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--gold)}
    .lug-row-main{flex:1;min-width:0}
    .lug-row-name{font-size:.92rem;font-weight:500;color:var(--cream)}
    .lug-row-desc{font-size:.72rem;color:var(--muted);line-height:1.4;margin-top:.12rem}
    /* FLIGHT SUGGESTIONS (feature C) — that day's arrivals for the airline */
    .flight-suggest{margin-top:.65rem;background:var(--n2);border:1px solid var(--n4);border-radius:var(--r);padding:.7rem .85rem}
    .fs-head{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.55rem}
    .fs-head>span:first-child{font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
    .fs-unverified{font-size:.6rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--n3);border:1px solid var(--n4);border-radius:6px;padding:.14rem .5rem;white-space:nowrap}
    .fs-list{display:flex;flex-wrap:wrap;gap:.4rem}
    .fs-chip{display:flex;align-items:center;gap:.45rem;background:var(--n3);border:1px solid var(--n4);border-radius:999px;padding:.45rem .85rem;cursor:pointer;transition:all .2s}
    .fs-chip:hover{border-color:var(--gold);background:var(--gd);transform:translateY(-1px)}
    .fs-num{font-size:.82rem;font-weight:700;color:var(--gl)}
    .fs-meta{font-size:.68rem;color:var(--muted)}
    .fs-empty{font-size:.78rem;color:var(--muted);line-height:1.5}

    /* OVERSIZED — compact pill buttons */
    .over-grid{display:flex;flex-wrap:wrap;gap:.4rem}
    .over-btn{background:linear-gradient(180deg,var(--n3),var(--n2));border:1px solid var(--n4);border-radius:999px;padding:.5rem 1rem;min-height:40px;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:.4rem;user-select:none;white-space:nowrap}
    .over-btn:hover{border-color:var(--gb);transform:translateY(-1px)}
    .over-btn.sel{border-color:var(--gold);background:var(--gd);box-shadow:0 0 0 1px var(--gb),0 6px 16px -8px rgba(212,168,87,.45)}
    .over-icon{font-size:.95rem;line-height:1}
    .over-name{font-size:.78rem;font-weight:600;color:var(--muted)}
    .over-btn.sel .over-name{color:var(--gl)}
    .over-val{font-size:.68rem;color:var(--gold);margin-left:.15rem}

    /* OVERSIZED SUB-PANELS */
    .over-sub{background:var(--n2);border:1px solid var(--gb);border-radius:var(--r);padding:.9rem 1rem;margin-top:.5rem;margin-bottom:.25rem;display:none}
    .over-sub.show{display:block}
    .over-sub.sub-required-error{border-color:#fca5a5;border-left-width:3px;background:rgba(252,165,165,.06);animation:pcs-sub-shake .4s ease-in-out 2}
    .over-sub.sub-required-error::before{content:"\26A0 Please answer this question to continue";display:block;color:#fca5a5;font-size:.8rem;font-weight:600;margin-bottom:.6rem}
    @keyframes pcs-sub-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
    .osub-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.6rem}
    .osub-btn{background:var(--n3);border:1px solid var(--n4);border-radius:var(--r);min-height:44px;padding:.45rem 1rem;cursor:pointer;font-size:.78rem;font-weight:600;color:var(--muted);transition:all .2s;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center}
    .osub-btn:hover{border-color:var(--gb);color:var(--cream)}
    .osub-btn.sel{border-color:var(--gold);background:var(--gd);color:var(--gl)}
    .osub-label{font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin-bottom:.4rem}
    .dim-row{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}
    .dim-in{width:80px;background:var(--n3);border:1px solid var(--n4);border-radius:var(--r);color:var(--cream);padding:.5rem .7rem;font-size:.88rem;outline:none;-webkit-appearance:none;text-align:center}
    .dim-in:focus{border-color:var(--gold)}
    .dim-cm{font-size:.78rem;color:var(--muted)}
    .suv-warn{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.35);border-radius:var(--r);padding:.6rem .9rem;font-size:.78rem;color:var(--warn);margin-top:.5rem;display:none}
    .suv-warn.show{display:block}
    /* LUGGAGE TOTAL BAR */
    .lug-bar{background:var(--n3);border:1px solid var(--gb);border-radius:var(--r);padding:.85rem 1.1rem;display:flex;align-items:center;justify-content:space-between;margin-top:.75rem}
    .lb-left{flex:1}
    .lb-title{font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
    .lb-warn{font-size:.75rem;color:var(--warn);margin-top:.25rem;display:none}
    .lb-warn.show{display:block}
    .lb-right{text-align:right}
    .lb-total{font-family:var(--serif);font-size:1.5rem;font-weight:300;color:var(--gold);line-height:1}
    .lb-cap{font-size:.68rem;color:var(--muted)}

    /* CHILD SEATS */
    .seat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}
    .seat-item{background:var(--n3);border:1px solid var(--n4);border-radius:var(--r);padding:.9rem}
    .seat-icon{font-size:1.6rem;margin-bottom:.4rem}
    .seat-icon svg{width:26px;height:26px;color:var(--gold);display:block;margin:0 auto}
    .seat-name{font-size:.82rem;font-weight:600;color:var(--cream);margin-bottom:.2rem}
    .seat-age{font-size:.72rem;color:var(--muted);margin-bottom:.7rem}

    /* CALCULATE BTN */
    .calc-btn{width:100%;background:radial-gradient(140px circle at var(--sheen-x,50%) var(--sheen-y,12%),rgba(255,255,255,.6),rgba(255,255,255,0) 55%),linear-gradient(135deg,var(--gl),var(--gold));color:var(--button-text,var(--navy));font-family:var(--sans);font-size:.9rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:1.1rem;border:none;border-radius:var(--r);cursor:pointer;transition:transform .2s,box-shadow .2s;margin-top:1.5rem;display:flex;align-items:center;justify-content:center;gap:.75rem;box-shadow:0 8px 24px -8px rgba(212,168,87,.55)}
    .calc-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 30px -8px rgba(212,168,87,.7)}
    .calc-btn:disabled{opacity:.5;cursor:not-allowed}
    .calc-btn .sp{width:18px;height:18px;border:2px solid rgba(8,8,8,.3);border-top-color:var(--navy);border-radius:50%;animation:spin .8s linear infinite;display:none}
    .calc-btn.loading .sp{display:block}
    .calc-btn.loading .bt{opacity:.5}

    /* VEHICLE CARDS */
    .veh-section{margin-top:2rem;border-top:1px solid var(--gb);padding-top:2rem;display:none}
    .veh-section.show{display:block}
    .veh-card{background:var(--n3);border:1px solid var(--n4);border-radius:var(--r);padding:1.2rem 1.4rem;margin-bottom:.85rem;cursor:pointer;transition:all .2s;position:relative;display:flex;align-items:center;gap:1.1rem}
    .veh-card:hover:not(.disabled){border-color:var(--gb)}
    .veh-card.sel{border-color:var(--gold);background:var(--gd)}
    .veh-card.disabled{opacity:.35;cursor:not-allowed;pointer-events:none}
    .vc-radio{width:20px;height:20px;border:1px solid var(--n5);border-radius:50%;flex-shrink:0;position:relative;transition:all .2s}
    .veh-card.sel .vc-radio{border-color:var(--gold)}
    .veh-card.sel .vc-radio::after{content:"";width:10px;height:10px;background:var(--gold);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
    .vc-icon{font-size:1.8rem;flex-shrink:0}
    .vc-info{flex:1;min-width:0}
    .vc-name{font-family:var(--serif);font-size:1.1rem;font-weight:400;color:var(--cream);margin-bottom:.2rem}
    .vc-specs{font-size:.75rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:.75rem}
    .vc-price-wrap{text-align:right;flex-shrink:0}
    .vc-price{font-family:var(--serif);font-size:1.5rem;font-weight:300;color:var(--gold);line-height:1}
    .vc-plbl{font-size:.65rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:.15rem}
    .vc-badge{position:absolute;top:-1px;right:-1px;background:var(--gold);color:var(--navy);font-size:.6rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:.22rem .55rem;border-radius:0 var(--r) 0 var(--r)}
    .vc-unavail{position:absolute;top:-1px;left:-1px;background:var(--n5);color:var(--muted);font-size:.6rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.22rem .55rem;border-radius:var(--r) 0 var(--r) 0}

    /* BREAKDOWN */
    .breakdown{background:var(--n2);border:1px solid var(--n4);border-radius:var(--r);padding:1rem 1.2rem;margin-bottom:1.2rem;display:none}
    .breakdown.show{display:block}
    .bk-row{display:flex;justify-content:space-between;font-size:.82rem;padding:.2rem 0;color:var(--muted)}
    .bk-row.sur{color:var(--warn)}
    .bk-row.total{border-top:1px solid var(--n4);margin-top:.4rem;padding-top:.5rem;font-weight:600;color:var(--cream);font-size:.88rem}
    .bk-row.est-total{color:var(--gold);font-size:.95rem;font-weight:600}

    /* AIRPORT SECTION */
    .airport-box{background:var(--n3);border:1px solid var(--gb);border-radius:var(--r);padding:1.3rem;margin-bottom:1.3rem}
    .airport-box-title{font-size:.75rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--gold);margin-bottom:1.1rem;display:flex;align-items:center;gap:.5rem}
    .flight-wrap{position:relative}
    .flight-drop{position:absolute;top:100%;left:0;right:0;background:var(--n2);border:1px solid var(--gb);border-top:none;border-radius:0 0 var(--r) var(--r);z-index:20;max-height:190px;overflow-y:auto;display:none}
    .fd-item{padding:.7rem 1rem;cursor:pointer;font-size:.86rem;border-bottom:1px solid var(--n4);display:flex;justify-content:space-between;align-items:center;transition:background .15s}
    .fd-item:hover{background:var(--n3)}
    .fd-item:last-child{border-bottom:none}
    .fd-num{color:var(--cream);font-weight:500}
    .fd-info{color:var(--muted);font-size:.75rem;text-align:right}
    .fd-loading,.fd-empty{cursor:default;color:var(--muted);font-size:.8rem;display:block;text-align:left;line-height:1.5}
    .fd-loading:hover,.fd-empty:hover{background:transparent}
    /* Matched-flight confirmation */
    .flight-match{display:none;align-items:flex-start;gap:.6rem;margin-top:.65rem;background:rgba(201,165,90,.08);border:1px solid var(--gb);border-left:3px solid var(--gold);border-radius:var(--r);padding:.7rem .9rem}
    .flight-match .fm-check{color:var(--gold);font-weight:700;font-size:1rem;line-height:1.4}
    .flight-match .fm-text{font-size:.82rem;color:var(--cream);line-height:1.55}
    .flight-match .fm-text strong{color:var(--gl)}
    /* Manual-entry toggle */
    .manual-toggle{display:inline-block;margin-top:.6rem;background:none;border:none;padding:0;color:var(--muted);font-size:.78rem;text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .15s}
    .manual-toggle:hover{color:var(--gl)}
    .manual-toggle.open{color:var(--gl)}
    .manual-flight{background:var(--n2);border:1px solid var(--n4);border-radius:var(--r);padding:.9rem 1.1rem;margin-top:.6rem;display:none}
    .manual-flight.show{display:block}
    .manual-flight p{font-size:.78rem;color:var(--muted);margin-bottom:.6rem}

    /* PICKUP TYPE */
    .pu-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
    .pu-btn{background:var(--n3);border:1px solid var(--n4);border-radius:var(--r);padding:1rem;cursor:pointer;transition:all .2s;text-align:center}
    .pu-btn:hover{border-color:var(--gb)}
    .pu-btn.sel{border-color:var(--gold);background:var(--gd)}
    .pu-icon{font-size:1.5rem;margin-bottom:.3rem}
    .pu-icon svg{width:24px;height:24px;color:var(--gold);display:block;margin:0 auto}
    .pu-name{font-size:.85rem;font-weight:600;color:var(--cream);margin-bottom:.2rem}
    .pu-desc{font-size:.73rem;color:var(--muted);line-height:1.4}
    .pu-price{font-size:.75rem;color:var(--gold);font-weight:600;margin-top:.3rem}
    /* Larger line-art icons for the airport meet-type cards (curbside / greet) */
    .pu-icon-lg{margin-bottom:.45rem}
    .pu-icon-lg svg{width:36px;height:36px}
    /* Service-type picker (Step 1) — tighter than the airport pickup tiles */
    .svc-grid .pu-btn{padding:.6rem .55rem}
    .svc-grid .pu-icon{font-size:1.05rem;margin-bottom:.15rem}
    .svc-grid .pu-icon svg{width:23px;height:23px}
    .svc-grid .pu-name{font-size:.78rem;margin-bottom:.15rem}
    .svc-grid .pu-desc{font-size:.66rem;line-height:1.35}

    /* STOPS */
    .stops-row{display:flex;gap:.6rem;flex-wrap:wrap}
    .stop-btn{background:var(--n3);border:1px solid var(--n4);border-radius:var(--r);padding:.65rem 1.1rem;cursor:pointer;transition:all .2s;text-align:center;flex:1;min-width:70px}
    .stop-btn:hover{border-color:var(--gb)}
    .stop-btn.sel{border-color:var(--gold);background:var(--gd)}
    .stop-n{font-family:var(--serif);font-size:1.3rem;font-weight:300;color:var(--cream)}
    .stop-btn.sel .stop-n{color:var(--gold)}
    .stop-lbl{font-size:.65rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
    .stop-p{font-size:.68rem;color:var(--gold);margin-top:.1rem}

    /* CHECKBOX */
    .cb-group{display:flex;align-items:flex-start;gap:.75rem;cursor:pointer;margin-bottom:.9rem}
    .cb-group input[type="checkbox"]{display:none}
    .cb-box{width:20px;height:20px;border:1px solid var(--n4);border-radius:3px;background:var(--n3);flex-shrink:0;margin-top:2px;display:flex;align-items:center;justify-content:center;transition:all .2s}
    .cb-group input:checked + .cb-box{background:var(--gold);border-color:var(--gold)}
    .cb-group input:checked + .cb-box::after{content:"✓";font-size:.7rem;color:var(--navy);font-weight:700}
    .cb-lbl{font-size:.88rem;color:var(--text);line-height:1.5}
    .cb-lbl strong{color:var(--cream)}

    /* SUMMARY */
    .sum-box{background:linear-gradient(160deg,var(--n3),var(--n2));border:1px solid var(--gb);border-radius:12px;padding:1.3rem;margin-bottom:1.6rem}
    .sum-title{font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem}
    .sum-row{display:flex;justify-content:space-between;align-items:flex-start;padding:.35rem 0;border-bottom:1px solid var(--n4)}
    .sum-row:last-child{border-bottom:none}
    .sum-k{font-size:.8rem;color:var(--muted)}
    .sum-v{font-size:.8rem;color:var(--cream);font-weight:500;text-align:right;max-width:58%;line-height:1.4}
    .sum-total{background:var(--gd);border:1px solid var(--gb);border-radius:var(--r);padding:.85rem 1.1rem;display:flex;justify-content:space-between;align-items:center;margin-top:1rem}
    .sum-tl{font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
    .sum-ta{font-family:var(--serif);font-size:1.7rem;font-weight:300;color:var(--gold)}
    .sum-note{font-size:.73rem;color:var(--muted);margin-top:.6rem;line-height:1.5}

    /* ALL-INCLUSIVE BADGE — prominent gold seal shown under every price when
       the operator runs all-in pricing (config/pricing.allInclusive). Same
       markup is emitted by pcsAllInclusiveBadgeHTML() in booking-app.js and
       mirrored inline in vehicle-selection.html. */
    .pcs-allin-badge{position:relative;overflow:hidden;display:flex;align-items:center;gap:.75rem;margin:.7rem 0 0;padding:.72rem .95rem;border-radius:12px;background:linear-gradient(135deg,rgba(232,201,142,.20),rgba(201,165,90,.08));border:1px solid var(--gold);box-shadow:0 0 0 1px rgba(201,165,90,.16),0 10px 28px -14px rgba(201,165,90,.7)}
    .pcs-allin-badge::after{content:"";position:absolute;top:0;left:-60%;width:42%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.42),transparent);transform:skewX(-18deg);animation:pcs-allin-shine 4.8s ease-in-out infinite;pointer-events:none}
    @keyframes pcs-allin-shine{0%,58%{left:-60%}100%{left:135%}}
    .pcs-allin-seal{position:relative;z-index:1;flex-shrink:0;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--navy);background:radial-gradient(120% 120% at 30% 20%,var(--gl),var(--gold));box-shadow:0 2px 10px -2px rgba(201,165,90,.85),inset 0 1px 1px rgba(255,255,255,.55)}
    .pcs-allin-seal svg{display:block}
    .pcs-allin-text{position:relative;z-index:1;display:flex;flex-direction:column;gap:.12rem;min-width:0}
    .pcs-allin-title{font-family:var(--serif);font-size:1.14rem;font-weight:600;letter-spacing:.07em;line-height:1;text-transform:uppercase;color:var(--gold);background:linear-gradient(90deg,var(--gl),var(--gold));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
    .pcs-allin-sub{font-size:.7rem;color:var(--muted);line-height:1.35}
    .sum-note-allin{margin-top:.9rem}
    .sum-note-fine{font-size:.7rem;color:var(--muted);margin-top:.55rem;line-height:1.45}
    @media (prefers-reduced-motion:reduce){.pcs-allin-badge::after{animation:none;display:none}}

    /* CC */
    .cc-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
    .cc-full{grid-column:1/-1}
    .cc-icons{display:flex;gap:.4rem;margin-bottom:.4rem}
    .cc-icon{display:flex;align-items:center;justify-content:center;background:var(--n3);border:1px solid var(--n5);border-radius:6px;min-width:46px;height:30px;padding:.35rem .55rem;font-size:.64rem;color:var(--cream);font-weight:800;letter-spacing:.06em;transition:all .15s}
    .cc-icon.active{background:var(--gold);border-color:var(--gold);color:var(--navy);}
    .secure{display:flex;align-items:center;gap:.4rem;font-size:.73rem;color:var(--muted);margin-top:.6rem}
    .secure svg{width:14px;height:14px;color:var(--ok);flex-shrink:0}

    /* SIGNATURE */
    .sig-wrap{border:1px solid var(--n4);border-radius:var(--r);background:var(--n3);overflow:hidden;margin-bottom:1rem}
    .sig-bar{background:var(--n2);border-bottom:1px solid var(--n4);padding:.5rem 1rem;display:flex;justify-content:space-between;align-items:center}
    .sig-label{font-size:.73rem;color:var(--muted);font-weight:500}
    .sig-clear{font-size:.73rem;color:var(--gold);cursor:pointer;background:none;border:none;font-family:var(--sans)}
    .sig-clear:hover{text-decoration:underline}
    canvas#sigCanvas{display:block;width:100%;height:140px;cursor:crosshair;touch-action:none}

    /* WAIVER */
    .waiver-scroll{background:var(--n2);border:1px solid var(--n4);border-radius:var(--r);padding:1.1rem;max-height:260px;overflow-y:auto;margin-bottom:.9rem;font-size:.78rem;color:var(--muted);line-height:1.7}
    .waiver-scroll h4{color:var(--cream);font-size:.8rem;font-weight:600;margin-bottom:.3rem;margin-top:.75rem}
    .waiver-scroll h4:first-child{margin-top:0}
    .waiver-hint{font-size:.72rem;color:var(--muted);margin-bottom:.5rem;font-style:italic;display:flex;align-items:center;gap:.3rem}
    .waiver-hint::before{content:"↕";font-style:normal;font-size:.8rem}

    /* TRIP SUMMARY CARD */
    .trip-card{background:var(--n3);border:1px solid var(--n4);border-radius:var(--r);padding:1.2rem 1.4rem;margin-bottom:1.5rem}
    .trip-card-title{font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.9rem}
    .trip-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:.55rem .8rem}
    .trip-card-item{display:flex;flex-direction:column;gap:.1rem}
    .trip-card-lbl{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600}
    .trip-card-val{font-size:.83rem;color:var(--cream);line-height:1.35}
    .trip-card-full{grid-column:1/-1}
    @media(max-width:480px){.trip-card-grid{grid-template-columns:1fr}}

    /* NOTES PREVIEW */
    .notes-preview{background:var(--n2);border:1px solid var(--n4);border-radius:var(--r);padding:1rem 1.2rem;margin-bottom:1.2rem;font-size:.8rem;color:var(--muted);line-height:1.7}
    .notes-preview strong{color:var(--cream);display:block;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:.5rem}

    /* BUTTONS */
    .btn-next{width:100%;background:radial-gradient(140px circle at var(--sheen-x,50%) var(--sheen-y,12%),rgba(255,255,255,.6),rgba(255,255,255,0) 55%),linear-gradient(135deg,var(--gl),var(--gold));color:var(--button-text,var(--navy));font-family:var(--sans);font-size:.9rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:1.05rem;border:none;border-radius:var(--r);cursor:pointer;transition:transform .2s,box-shadow .2s;margin-top:1.4rem;box-shadow:0 8px 24px -8px rgba(212,168,87,.55)}
    .btn-next:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 30px -8px rgba(212,168,87,.7)}
    .btn-next:disabled{opacity:.5;cursor:not-allowed}
    .btn-back{width:100%;background:transparent;color:var(--muted);font-family:var(--sans);font-size:.8rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:.7rem;border:1px solid var(--n4);border-radius:var(--r);cursor:pointer;transition:all .2s;margin-top:.6rem}
    .btn-back:hover{border-color:var(--gb);color:var(--cream)}
    .btn-quote{width:100%;background:transparent;color:var(--gold);font-family:var(--sans);font-size:.9rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:1.05rem;border:2px solid var(--gold);border-radius:var(--r);cursor:pointer;transition:all .2s;margin-top:1.4rem;display:flex;align-items:center;justify-content:center;gap:.6rem}
    .btn-quote:hover:not(:disabled){background:rgba(201,165,90,.08);box-shadow:0 0 18px rgba(201,165,90,.18)}
    .btn-quote:disabled{opacity:.45;cursor:not-allowed}
    .btn-quote .sp{width:16px;height:16px;border:2px solid rgba(201,165,90,.3);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;display:none}
    .btn-quote.loading .sp{display:block}
    .btn-quote.loading .bt{opacity:.5}
    .quote-sent{display:none;align-items:center;gap:.6rem;background:rgba(201,165,90,.1);border:1px solid rgba(201,165,90,.35);border-radius:var(--r);padding:.8rem 1rem;margin-top:.75rem;font-size:.82rem;color:var(--gold);font-family:var(--sans)}
    .quote-sent.show{display:flex}
    .quote-sent-icon{font-size:1.1rem;flex-shrink:0}
    .btn-submit{width:100%;background:radial-gradient(140px circle at var(--sheen-x,50%) var(--sheen-y,12%),rgba(255,255,255,.6),rgba(255,255,255,0) 55%),linear-gradient(135deg,var(--gl),var(--gold));color:var(--button-text,var(--navy));font-family:var(--sans);font-size:.95rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:1.15rem;border:none;border-radius:var(--r);cursor:pointer;transition:transform .2s,box-shadow .2s;margin-top:1.4rem;display:flex;align-items:center;justify-content:center;gap:.75rem;box-shadow:0 8px 24px -8px rgba(212,168,87,.55)}
    .btn-submit:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 30px -8px rgba(212,168,87,.7)}
    .btn-submit:disabled{opacity:.5;cursor:not-allowed}
    .btn-submit .sp{width:18px;height:18px;border:2px solid rgba(8,8,8,.3);border-top-color:var(--navy);border-radius:50%;animation:spin .8s linear infinite;display:none}
    .btn-submit.loading .sp{display:block}
    .btn-submit.loading .bt{opacity:.5}

    /* LOADING */
    .ld-overlay{display:none;position:fixed;inset:0;background:rgba(8,9,11,.9);z-index:1000;align-items:center;justify-content:center;flex-direction:column;gap:1rem}
    .ld-overlay.show{display:flex}
    .ld-spin{width:48px;height:48px;border:3px solid var(--n4);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite}
    .ld-txt{font-size:.85rem;color:var(--muted)}

    /* SUCCESS */
    .success{text-align:center;padding:3rem 1rem}
    .success-icon{font-size:3.5rem;margin-bottom:1.3rem}
    .success-title{font-family:var(--serif);font-size:2rem;font-weight:300;color:var(--cream);margin-bottom:1rem}
    .success-title em{font-style:italic;color:var(--gl)}
    .success-body{font-size:.9rem;color:var(--muted);line-height:1.8;max-width:460px;margin:0 auto 1.8rem}
    .conf-box{background:var(--n3);border:1px solid var(--gb);border-radius:var(--r);padding:1rem 1.5rem;display:inline-block;margin-bottom:1.8rem}
    .conf-lbl{font-size:.7rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}
    .conf-num{font-family:var(--serif);font-size:1.8rem;font-weight:300;color:var(--gold)}

    @keyframes spin{to{transform:rotate(360deg)}}
    @keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
    .fade-in{animation:fadeUp .4s ease}
    ::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--n2)}::-webkit-scrollbar-thumb{background:var(--n4);border-radius:2px}

    @media(max-width:600px){
      .g2,.g3,.cc-grid{grid-template-columns:1fr}
      .cc-full{grid-column:1}
      .lug-grid{grid-template-columns:1fr}
      .over-grid{grid-template-columns:repeat(3,1fr)}
      .seat-grid{grid-template-columns:1fr 1fr}
      .pu-grid{grid-template-columns:1fr}
      .veh-card{flex-wrap:wrap}
      .vc-price-wrap{flex-basis:100%;text-align:left;margin-top:.5rem}
      .bk-header{flex-direction:column;align-items:center;padding:1rem}
      .back-link{position:static;transform:none}
    }
    @media(max-width:400px){.over-grid{grid-template-columns:repeat(2,1fr)}}

    /* Kill Google Maps error overlays injected into the DOM */
    .gm-err-container, .gm-err-content, .gm-err-message, .gm-err-autocomplete { display:none !important; }
    /* Suppress Maps watermark and dev warning overlays */
    .gmnoprint, .gm-style-cc, .gm-fullscreen-control { display:none !important; }
    .gm-style > div > div > div > div > div > div > div { pointer-events:none !important; }
    .fi.locked{background:var(--n2);color:var(--muted);border-color:rgba(201,165,90,.3);cursor:not-allowed;user-select:none}
    /* Google Maps pac-container styling */
    .pac-container{z-index:99999!important;border-radius:0 0 6px 6px;border:1px solid var(--gb);border-top:none;background:#1c1d24;box-shadow:0 8px 24px rgba(0,0,0,.5);font-family:var(--sans)}
    .pac-item{padding:.55rem 1rem;color:var(--cream);font-size:.88rem;cursor:pointer;border-top:1px solid rgba(255,255,255,.05)}
    .pac-item:hover,.pac-item-selected{background:rgba(201,165,90,.12)}
    .pac-item-query{color:var(--gold);font-weight:600}
    .pac-matched{color:var(--gold)}
    .pac-icon{display:none}
    /* Suppress Maps error overlays */
    .gm-err-container,.gm-err-content,.gm-err-message,.gm-err-autocomplete{display:none!important}
    .gmnoprint,.gm-style-cc{display:none!important}
    /* Suppress billing/auth error dialog */
    .dismissButton,.gm-style-pbc{display:none!important}
    div[style*="z-index: 1000000"]{display:none!important}
    /* Ensure inputs always visible */
    #pickupAddr,#dropoffAddr,[id^=stopAddr]{display:block!important;visibility:visible!important;opacity:1!important;position:relative!important;z-index:10!important}
