/* ==========================================================================
   ARGO Transfers & Touring — public site stylesheet
   --------------------------------------------------------------------------
   Copied verbatim from the approved design (index.html). Edited by hand and
   served as is: no build step, no copy anywhere else.

   Only two rules differ from the design, both because their content now
   comes from the admin instead of being written into the stylesheet:
   - .hero-media.has-image reads the photo from --hero-image/--hero-position
     (set on the element by the view) instead of an embedded base64 image;
   - .hero-media:after reads the watermark ("E400") from data-watermark.
   Everything the design did not have is at the end of the file.
   ========================================================================== */
:root{--ink:#111214;--paper:#f5f5f3;--white:#fff;--silver:#d8dadd;--muted:#696c72;--line:#d7d8da;--wine:#9c1d32;--wine2:#761325;--serif:Georgia,'Times New Roman',serif;--sans:Inter,Arial,Helvetica,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 var(--sans)}
a{color:inherit;text-decoration:none}
button,input,select{font:inherit}
.site-header{height:78px;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;background:rgba(17,18,20,.96);color:#fff;position:fixed;top:0;left:0;right:0;z-index:20;border-bottom:1px solid rgba(255,255,255,.12);backdrop-filter:blur(16px)}
.brand,.footer-brand{display:flex;align-items:center;gap:13px}
.brand-mark{width:42px;height:42px;border:1px solid #8f9094;display:grid;place-items:center;font:italic 21px var(--serif);color:#fff;position:relative}
.brand-mark:after{content:'';width:31px;height:2px;background:var(--wine);position:absolute;transform:rotate(-9deg)}
.brand strong,.footer-brand strong{display:block;font-size:.8rem;letter-spacing:.24em}
.brand small,.footer-brand small{display:block;color:#b9bbc0;font-size:.6rem;letter-spacing:.2em;margin-top:2px}
nav{display:flex;align-items:center;gap:27px;font-size:.77rem;text-transform:uppercase;letter-spacing:.1em}
nav a{color:#d9dadd}
nav a:hover{color:#fff}
.nav-cta{border:1px solid #6f7074;padding:11px 16px}
.menu-toggle{display:none}
.hero{min-height:830px;background:#101113;color:#fff;position:relative;display:grid;grid-template-columns:1fr 420px;gap:5vw;align-items:center;padding:130px 6vw 80px;overflow:hidden}
.hero-media{position:absolute;inset:0;background:radial-gradient(circle at 72% 46%,#3a3d43 0,#1b1d20 34%,#101113 68%);background-size:cover;background-position:center}
.hero-media:after{content:attr(data-watermark);position:absolute;right:-2vw;bottom:-12vh;font:24vw/.8 var(--serif);color:rgba(255,255,255,.025);letter-spacing:-.09em}
.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,9,10,.93) 0%,rgba(10,11,12,.7) 47%,rgba(10,11,12,.2) 100%)}
.hero-copy,.booking-card{position:relative;z-index:2}
.hero-copy{max-width:760px}
.eyebrow,.section-kicker{text-transform:uppercase;letter-spacing:.2em;font-size:.72rem;font-weight:700;color:var(--wine);margin:0 0 20px}
.section-kicker.light{color:#d48b98}
.hero h1{font:400 clamp(3.2rem,6.8vw,7.1rem)/.94 var(--serif);letter-spacing:-.055em;margin:0 0 28px}
.hero h1 em{font-weight:400;color:#d4d5d7}
.hero-copy>p:not(.eyebrow){max-width:620px;color:#c7c9cd;font-size:1.12rem}
.hero-actions{display:flex;gap:13px;margin:38px 0 48px}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 22px;border:1px solid transparent;text-transform:uppercase;letter-spacing:.1em;font-weight:700;font-size:.73rem;cursor:pointer}
.button.primary{background:var(--wine);color:#fff}
.button.primary:hover{background:#b32840}
.button.ghost{border-color:#696b70;color:#fff}
.button.pale{background:#fff;color:#151619}
.button.full{width:100%;margin-top:8px}
.trust-row{display:flex;flex-wrap:wrap;gap:20px;color:#aeb0b4;font-size:.77rem;text-transform:uppercase;letter-spacing:.08em}
.trust-row span:before{content:'•';color:var(--wine);margin-right:9px}
.booking-card{background:#f7f7f5;color:var(--ink);padding:28px;box-shadow:0 28px 70px rgba(0,0,0,.35)}
.form-heading{display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:19px;margin-bottom:19px}
.form-heading span{font:1.35rem var(--serif)}
.form-heading strong{color:var(--wine);font-size:1rem}
.booking-card label{display:block;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:#606269;margin:15px 0 7px}
.booking-card input,.booking-card select{width:100%;height:47px;border:1px solid #c9cace;background:#fff;border-radius:0;padding:0 12px;color:#1b1c1f}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-note{font-size:.7rem;color:#777a80;margin:12px 0 0}
.form-success{color:#325e43;font-size:.78rem;background:#eaf3ed;padding:10px}
.section-pad{padding:100px 7vw}
.intro{text-align:center}
.intro h2,.section-heading h2,.why h2,.faq h2,.final-cta h2{font:400 clamp(2.3rem,4.3vw,4.6rem)/1.03 var(--serif);letter-spacing:-.04em;margin:0}
.intro-text{max-width:760px;margin:26px auto 58px;color:var(--muted);font-size:1.05rem}
.service-grid{display:grid;grid-template-columns:repeat(3,1fr);text-align:left;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.service-grid article{padding:40px 36px;border-right:1px solid var(--line)}
.service-grid article:last-child{border:0}
.service-grid article>span{font:italic 1rem var(--serif);color:var(--wine)}
.service-grid h3{font:1.6rem var(--serif);margin:28px 0 12px}
.service-grid p{color:var(--muted);min-height:80px}
.service-grid a,.journey-card>a{font-size:.76rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700}
.rates{background:#fff}
.section-heading{display:grid;grid-template-columns:1.5fr 1fr;gap:10vw;align-items:end;margin-bottom:55px}
.section-heading>p{color:var(--muted);max-width:520px;margin:0}
.rate-list{border-top:1px solid #bcbec2}
.rate-list>div{display:flex;justify-content:space-between;gap:24px;padding:20px 6px;border-bottom:1px solid var(--line)}
.rate-list span{color:#4c4f54}
.rate-list b{font:1.25rem var(--serif);white-space:nowrap}
.fineprint,.route-note{font-size:.75rem;color:#73767b;margin-top:20px}
.hire{background:linear-gradient(135deg,#791326,#a51f37);color:#fff}
.hire-card{display:grid;grid-template-columns:1.7fr 1fr;gap:8vw;align-items:center}
.hire-card h2{font:400 clamp(3rem,5vw,5.5rem)/.96 var(--serif);margin:0 0 25px}
.hire-card p{color:#efd7dc;max-width:590px}
.hire-price{border-left:1px solid rgba(255,255,255,.3);padding-left:7vw;display:flex;flex-direction:column;align-items:flex-start}
.hire-price small{text-transform:uppercase;letter-spacing:.17em}
.hire-price strong{font:6rem/.95 var(--serif);margin-top:15px}
.hire-price span{margin-bottom:28px;color:#efd7dc}
.occasion-row{display:flex;justify-content:space-between;gap:20px;padding-top:70px;margin-top:70px;border-top:1px solid rgba(255,255,255,.23);text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:#f2dce0}
.journey-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.journey-card{min-height:610px;padding:42px;color:#fff;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.journey-card:before{content:'';position:absolute;inset:0;background:linear-gradient(20deg,rgba(5,6,7,.92),rgba(18,19,22,.35));z-index:0}
.journey-card>*{position:relative;z-index:1}
.tablelands{background:linear-gradient(145deg,#3c4147,#151619)}
.daintree{background:linear-gradient(145deg,#4a2b2e,#151619)}
.journey-top{display:flex;justify-content:space-between;text-transform:uppercase;letter-spacing:.14em;font-size:.7rem}
.journey-top b{font:italic 2.1rem var(--serif);color:rgba(255,255,255,.36)}
.journey-card>div:nth-child(2)>p:first-child{text-transform:uppercase;letter-spacing:.16em;color:#dca2ad;font-size:.69rem}
.journey-card h3{font:400 2.5rem/1.04 var(--serif);margin:10px 0 18px;max-width:480px}
.journey-card p{color:#d4d5d7}
.journey-card ul{list-style:none;padding:0;margin:20px 0;border-top:1px solid rgba(255,255,255,.24)}
.journey-card li{display:flex;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.2);padding:12px 0;color:#d5d6d8}
.vehicle{background:#151619;color:#fff;display:grid;grid-template-columns:1.35fr 1fr;gap:7vw;align-items:end}
.vehicle-copy h2{font:400 clamp(2.7rem,5vw,5.2rem)/.98 var(--serif);margin:0 0 26px}
.vehicle-copy>p:last-child{color:#b9bbc0;max-width:580px}
.vehicle-specs{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #515358;border-bottom:1px solid #515358}
.vehicle-specs div{padding:25px 12px;border-right:1px solid #515358}
.vehicle-specs div:last-child{border:0}
.vehicle-specs strong{display:block;font:2.8rem var(--serif)}
.vehicle-specs span{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:#aeb0b4}
.amenities{grid-column:1/-1;list-style:none;display:grid;grid-template-columns:repeat(6,1fr);padding:40px 0 0;margin:40px 0 0;border-top:1px solid #393b3f;gap:18px;color:#c1c3c6;font-size:.76rem;text-transform:uppercase;letter-spacing:.07em}
.amenities li:before{content:'—';color:var(--wine);margin-right:7px}
.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:10vw}
.why-grid>div{display:grid;grid-template-columns:1fr 1fr;gap:25px}
.why-grid p{margin:0;color:var(--muted)}
.why-grid strong{color:var(--ink);font-size:1.03rem}
.faq{display:grid;grid-template-columns:.75fr 1.25fr;gap:9vw;background:#fff}
.accordion{border-top:1px solid var(--line)}
details{border-bottom:1px solid var(--line);padding:18px 0}
summary{font-weight:700;cursor:pointer;list-style:none;padding-right:32px;position:relative}
summary:after{content:'+';position:absolute;right:4px;color:var(--wine);font-size:1.4rem;font-weight:400}
details[open] summary:after{content:'−'}
details p{color:var(--muted);max-width:680px}
.final-cta{text-align:center;background:var(--wine2);color:#fff}
.final-cta h2{font-size:clamp(3rem,7vw,7rem)}
.final-cta>p:not(.section-kicker){color:#e3bec5}
.final-cta .button{margin-top:18px}
footer{background:#0e0f11;color:#bbbcc0;padding:70px 7vw 30px;display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:45px;font-size:.75rem}
footer>div:not(.footer-brand){display:flex;flex-direction:column;gap:9px}
footer>div>strong{color:#fff;text-transform:uppercase;letter-spacing:.13em;font-size:.68rem;margin-bottom:8px}
.legal{grid-column:1/-1;border-top:1px solid #303136;padding-top:23px;margin-top:25px;color:#77797d}
.hero-media.has-image{background-image:linear-gradient(90deg,rgba(8,9,10,.15),rgba(8,9,10,0)),var(--hero-image);background-position:var(--hero-position,center);background-size:cover}
@media(max-width:980px){.site-header{height:68px}
.menu-toggle{display:block;background:transparent;border:1px solid #55575c;color:#fff;padding:8px 12px;text-transform:uppercase;font-size:.7rem;letter-spacing:.12em}
.site-header nav{display:none;position:absolute;top:68px;left:0;right:0;background:#111214;padding:20px 5vw;flex-direction:column;align-items:flex-start}
.site-header nav.open{display:flex}
.hero{grid-template-columns:1fr;padding-top:125px}
.booking-card{max-width:620px}
.section-heading,.faq,.vehicle{grid-template-columns:1fr}
.service-grid{grid-template-columns:1fr}
.service-grid article{border-right:0;border-bottom:1px solid var(--line)}
.service-grid article:last-child{border-bottom:0}
.service-grid p{min-height:auto}
.journey-grid{grid-template-columns:1fr}
.amenities{grid-template-columns:repeat(3,1fr)}
.why-grid{grid-template-columns:1fr}
.hire-card{grid-template-columns:1fr}
.hire-price{border-left:0;border-top:1px solid rgba(255,255,255,.3);padding:35px 0 0}
.occasion-row{flex-wrap:wrap}
footer{grid-template-columns:1fr 1fr}
.legal{grid-column:1/-1}
}
@media(max-width:640px){.brand strong{font-size:.67rem}
.brand small{font-size:.52rem}
.hero{padding:110px 5vw 60px;min-height:auto}
.hero-actions{flex-direction:column;align-items:stretch}
.trust-row{display:grid}
.booking-card{padding:20px}
.form-grid{grid-template-columns:1fr}
.section-pad{padding:72px 6vw}
.section-heading{gap:25px}
.service-grid article{padding:30px 20px}
.rate-list>div{font-size:.84rem}
.hire-price strong{font-size:4.8rem}
.occasion-row{display:grid;grid-template-columns:1fr 1fr}
.journey-card{padding:28px;min-height:580px}
.journey-card h3{font-size:2rem}
.vehicle-specs{grid-template-columns:1fr}
.vehicle-specs div{border-right:0;border-bottom:1px solid #515358}
.amenities{grid-template-columns:1fr 1fr}
.why-grid>div{grid-template-columns:1fr}
.faq{gap:40px}
footer{grid-template-columns:1fr}
.legal{grid-column:1}
.footer-brand{margin-bottom:15px}
}

/* ARGO Option 02 — interlocking A/G black and champagne-gold identity */
:root{--gold:#caa45c;--gold-bright:#e8c980;--gold-dark:#8c682d;--paper:#f6f4ef;--line:#d9d4c8;--wine:var(--gold);--wine2:#0b0c0d}
.brand-mark{display:none}
.brand img{display:block;width:275px;height:auto}
.footer-brand img{display:block;width:min(100%,315px);height:auto}
.eyebrow,.section-kicker{color:var(--gold-dark)}
.section-kicker.light{color:var(--gold-bright)}
.button.primary{background:linear-gradient(135deg,var(--gold-bright),var(--gold));color:#111}
.button.primary:hover{background:linear-gradient(135deg,#f0d797,#d7b166)}
.form-heading strong{color:var(--gold-dark)}
.hire{background:radial-gradient(circle at 84% 20%,#2b261c 0,#151514 34%,#090a0b 72%);border-top:1px solid #6f5528;border-bottom:1px solid #6f5528}
.hire-card p,.hire-price span{color:#d7d0c2}
.hire-price strong{color:var(--gold-bright)}
.journey-card>div:nth-child(2)>p:first-child{color:var(--gold-bright)}
.final-cta{background:linear-gradient(135deg,#171512,#08090a);border-top:1px solid #73572a}
.final-cta>p:not(.section-kicker){color:#d8d0c1}
@media(max-width:640px){.brand img{width:205px}.footer-brand img{width:275px}}

/* Exact Option 02 stacked lockup proportions */
.site-header{height:100px}
.brand img{width:205px}
.hero{padding-top:152px}
.footer-brand img{width:min(100%,260px)}
@media(max-width:980px){.site-header{height:82px}.site-header nav{top:82px}.brand img{width:166px}.hero{padding-top:130px}}
@media(max-width:640px){.brand img{width:150px}.footer-brand img{width:225px}}

/* Sedan pricing */
.hire-packages{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:48px;border-top:1px solid #756747;padding-top:28px}
.hire-packages div{display:flex;justify-content:space-between;gap:12px;font-size:1rem}
.hire-packages strong{color:var(--gold-bright)}
.hire-note{color:#d7d0c2;font-size:.875rem;margin-top:24px}
.form-note,.fineprint,.route-note{font-size:.875rem}
.journey-card li{gap:16px;flex-wrap:wrap}
.form-heading{gap:16px;flex-wrap:wrap}
@media(max-width:640px){.hire-packages{grid-template-columns:1fr 1fr;gap:20px}.rate-list>div{font-size:1rem}.rate-list b{font-size:1.125rem}}
/* Keep ARGO's full email and domain readable on narrow screens. */
.contact-details a,.contact-details span,.form-note a,.form-success a{overflow-wrap:anywhere}

/* Second block of the design */
.brand-mark{width:46px;height:46px;font:italic 30px/.9 var(--serif);padding-right:2px}
.brand-mark:after{width:35px;transform:rotate(-13deg)}
.brand strong,.footer-brand strong{font-size:.92rem;letter-spacing:.32em}
.brand small,.footer-brand small{font-size:.54rem;letter-spacing:.16em;white-space:nowrap}
@media(max-width:640px){.brand small{font-size:.45rem;letter-spacing:.1em}.brand strong{font-size:.78rem}}
  

/* ==========================================================================
   Additions — not in the design, needed by the live site
   ========================================================================== */

/* Photos chosen in the admin. Without one, every section keeps the design's
   plain background exactly.

   Journey card: the photo is its own layer (.journey-photo, last child of
   the card) so it can zoom and drift without moving the text. It sits under
   the design's dark veil (.journey-card:before) and 40px taller than the card,
   which is the room the parallax moves it in. */
.journey-card{isolation:isolate}
.journey-card>.journey-photo{position:absolute;inset:-40px 0;z-index:-1;background:var(--journey-image) var(--journey-position,center)/cover no-repeat}

/* Hourly hire: the design's gold radial, made translucent over the photo. */
.hire.has-image{background-image:radial-gradient(circle at 84% 20%,rgba(43,38,28,.6) 0,rgba(21,21,20,.86) 34%,rgba(9,10,11,.95) 72%),var(--section-image);background-size:cover;background-position:var(--section-position,center)}

/* Vehicle: the photo fills the right side, fading out under the heading. */
.vehicle.has-image{position:relative;isolation:isolate}
.vehicle.has-image:before{content:'';position:absolute;top:0;right:0;bottom:0;left:35%;z-index:-1;background:linear-gradient(90deg,#151619 0%,rgba(21,22,25,.88) 30%,rgba(21,22,25,.74) 100%),var(--section-image) var(--section-position,center)/cover no-repeat}
@media(max-width:980px){.vehicle.has-image:before{left:0;background:linear-gradient(180deg,#151619 0%,rgba(21,22,25,.86) 45%,rgba(21,22,25,.72) 100%),var(--section-image) var(--section-position,center)/cover no-repeat}}

/* Closing call to action: the design's dark gradient over the photo. */
.final-cta.has-image{background-image:linear-gradient(135deg,rgba(23,21,18,.8),rgba(8,9,10,.9)),var(--section-image);background-size:cover;background-position:var(--section-position,center)}

/* Booking form: field errors, the spam trap, and the sending state. */
.form-error{color:#9c1d32;font-size:.75rem;margin:6px 0 0}
.booking-card [aria-invalid="true"]{border-color:#9c1d32}
.hp-field{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.booking-card button[disabled]{opacity:.65;cursor:progress}
.form-turnstile{margin-top:16px}

/* The hero does not clip (the design's overflow:hidden): the form inside it
   may reach past its bottom when error messages make it longer, while the
   hero keeps its height (site.js gives the form a matching negative margin).
   What does overflow — the zoomed, parallaxed photo and the "E400"
   watermark — sits in .hero-backdrop, which clips instead. overflow:clip,
   not hidden: hidden is a scroll container, and an anchor to #book once
   scrolled a clipped hero *inside itself*. The margin keeps the form clear
   of the fixed header (100px, 82px on tablets and phones). */
.hero{overflow:visible}
.hero-backdrop{position:absolute;inset:0;overflow:hidden;overflow:clip}
#book{scroll-margin-top:124px}
@media(max-width:980px){#book{scroll-margin-top:100px}}

/* Menu anchors (#transfers, #hire…) stop where the section begins — its top
   edge right under the fixed header — instead of hiding the section's first
   100px (its padding) behind the header, which landed on the heading. */
main>section[id]{scroll-margin-top:100px}
@media(max-width:980px){main>section[id]{scroll-margin-top:82px}}

/* Rate rows and hourly packages that open the form with their service
   selected (data-book-fare, see site.js). */
[data-book-fare]{cursor:pointer}
.rate-list>div[data-book-fare]:hover,.rate-list>div[data-book-fare]:focus-visible{background-color:rgba(202,164,92,.07);box-shadow:inset 2px 0 0 var(--gold);outline:0}

/* Rates table, on request: rows grouped under small gold titles, and every
   clickable row ends in an arrow ("Book →" when pointed at) so it reads as
   a link. Non-clickable rows keep an invisible arrow, so all prices line up. */
.rate-hint{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin:0 0 14px;font-size:.7rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-dark)}
.rate-list:has(>.rate-group:first-child){border-top:0}
.rate-group{margin:38px 0 0;padding:0 6px 12px;border-bottom:1px solid #bcbec2;font-size:.68rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-dark)}
.rate-group:first-child{margin-top:0}
.rate-cta{display:inline-flex;align-items:center;gap:0;margin-left:16px;font:700 .95rem/1 var(--sans);color:var(--gold-dark);vertical-align:2px}
.rate-cta i{font:700 .66rem/1 var(--sans);font-style:normal;letter-spacing:.16em;text-transform:uppercase;max-width:0;overflow:hidden;opacity:0;white-space:nowrap}
.rate-cta.is-spacer{visibility:hidden}
.rate-list>div[data-book-fare]:hover .rate-cta i,.rate-list>div[data-book-fare]:focus-visible .rate-cta i{max-width:5em;opacity:1;margin-right:8px}
@media(max-width:640px){.rate-cta{margin-left:10px}.rate-hint{justify-content:flex-start;margin:-12px 0 34px;padding-top:16px;border-top:1px solid var(--line)}.rate-group{padding-bottom:10px}}
.hire-packages>div[data-book-fare]:hover,.hire-packages>div[data-book-fare]:focus-visible{background-color:rgba(202,164,92,.12);outline:0}
.hire-packages>div[data-book-fare]:hover small,.hire-packages>div[data-book-fare]:focus-visible small{opacity:1}

/* Hourly packages, redesigned on request: in the design each package was a
   label and a price pushed to the two ends of a wide column, so the four
   ran into one another and were hard to read over the photo. Now each is
   its own panel — duration above, price large below — divided by hairlines. */
.hire-packages{gap:0;padding-top:0;border-bottom:1px solid #756747}
.hire-packages>div{flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:12px;padding:28px 26px 24px;border-right:1px solid rgba(117,103,71,.55);background-color:rgba(9,10,11,.4)}
.hire-packages>div:last-child{border-right:0}
.hire-packages span{text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;font-weight:700;color:#d7d0c2}
.hire-packages strong{font:400 2.5rem/1 var(--serif);color:var(--gold-bright)}
.hire-packages small{margin-top:4px;font-size:.7rem;text-transform:uppercase;letter-spacing:.14em;color:#efe6d2;opacity:.7}
@media(max-width:980px){.hire-packages strong{font-size:2.1rem}}
@media(max-width:640px){
  .hire-packages{grid-template-columns:1fr 1fr;gap:0}
  .hire-packages>div{padding:22px 18px 20px}
  .hire-packages>div:nth-child(2n){border-right:0}
  .hire-packages>div:nth-child(-n+2){border-bottom:1px solid rgba(117,103,71,.55)}
  .hire-packages strong{font-size:1.9rem}
}

/* Legal pages (Privacy, Terms): the site's dark band for the title, then
   the text in a readable column, styled for what the rich editor produces —
   headings, paragraphs, bold, lists, links, quotes. */
.legal-hero{background:linear-gradient(135deg,#171512,#08090a);color:#fff;padding:190px 7vw 72px;border-bottom:1px solid #73572a}
.legal-hero h1{font:400 clamp(2.6rem,5vw,4.8rem)/1 var(--serif);letter-spacing:-.04em;margin:0}
.legal-updated{margin:22px 0 0;color:#b9bbc0;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}
.legal-body{max-width:860px;margin:0 auto;padding:80px 7vw 100px;color:#3d4045;font-size:1.02rem;line-height:1.75}
.legal-intro{font:400 1.35rem/1.55 var(--serif);color:var(--ink);margin:0 0 40px}
.legal-body h2{font:400 1.85rem/1.15 var(--serif);color:var(--ink);letter-spacing:-.02em;margin:56px 0 16px;padding-top:28px;border-top:1px solid var(--line)}
.legal-body h3{font-size:1.02rem;font-weight:700;color:var(--ink);margin:30px 0 8px}
.legal-body p{margin:0 0 16px}
.legal-body ul,.legal-body ol{margin:0 0 18px;padding-left:1.3em}
.legal-body li{margin:0 0 8px;padding-left:4px}
.legal-body li::marker{color:var(--gold-dark)}
.legal-body strong{color:var(--ink)}
.legal-body a{color:var(--gold-dark);text-decoration:underline;text-underline-offset:3px}
.legal-body blockquote{margin:24px 0;padding:4px 0 4px 22px;border-left:2px solid var(--gold);color:var(--ink);font-style:italic}
.legal-back{margin:60px 0 0;padding-top:28px;border-top:1px solid var(--line);font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.legal-back a{text-decoration:none}
@media(max-width:980px){.legal-hero{padding-top:150px}}
@media(max-width:640px){.legal-hero{padding:130px 6vw 56px}.legal-body{padding:56px 6vw 80px;font-size:1rem}.legal-intro{font-size:1.18rem}.legal-body h2{font-size:1.55rem}}

/* 404 and the other error pages: the closing call-to-action's dark band. */
.error-page{min-height:78vh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:180px 7vw 100px;background:linear-gradient(135deg,#171512,#08090a);color:#fff}
.error-page h1{font:400 clamp(2.8rem,6vw,6rem)/.98 var(--serif);letter-spacing:-.045em;margin:0 0 24px;max-width:900px}
.error-page>p:not(.section-kicker){color:#d8d0c1;max-width:600px;font-size:1.08rem;margin:0}
.error-actions{display:flex;flex-wrap:wrap;gap:13px;margin-top:38px}
@media(max-width:640px){.error-page{padding:130px 6vw 80px}.error-actions{flex-direction:column;align-items:stretch}}

/* WhatsApp: a quiet round button in the corner, in the site's dark and gold. */
.whatsapp{position:fixed;right:22px;bottom:22px;z-index:30;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:#0e0f11;color:var(--gold-bright);border:1px solid rgba(202,164,92,.6);box-shadow:0 12px 30px rgba(0,0,0,.35)}
.whatsapp svg{width:28px;height:28px}
.whatsapp:hover,.whatsapp:focus-visible{background:var(--gold);color:#0e0f11;outline:0}
@media(max-width:640px){.whatsapp{right:16px;bottom:16px;width:52px;height:52px}}

/* Phones: one 16px gutter for the page, and cards that sit inside a section
   don't add a second wide one, so text uses the screen instead of stacking
   into tall narrow columns. Paired form fields and the three vehicle figures
   stay side by side. */
@media(max-width:640px){
  .site-header,.hero,.section-pad,footer,.legal-hero,.legal-body,.error-page{padding-left:16px;padding-right:16px}
  .site-header nav{padding-left:16px;padding-right:16px}
  .hero{padding-bottom:40px}
  .section-pad{padding-top:60px;padding-bottom:60px}
  .booking-card{padding:20px 16px}
  .service-grid article{padding:26px 0}
  .rate-list>div,.rate-group{padding-left:0;padding-right:0}
  .journey-card{padding:24px 20px;min-height:0;gap:36px}
  .vehicle-specs{grid-template-columns:repeat(3,1fr)}
  .vehicle-specs div{padding:20px 10px 18px;border-bottom:0;border-right:1px solid #515358}
  .vehicle-specs div:first-child{padding-left:0}
  .vehicle-specs div:last-child{border-right:0}
  .vehicle-specs strong{font-size:2rem}
  .vehicle-specs span{font-size:.6rem;letter-spacing:.06em}
  .hire-packages>div{padding:20px 14px 18px}
}
@media(min-width:360px) and (max-width:640px){.form-grid{grid-template-columns:1fr 1fr}}

/* ==========================================================================
   Motion — sober on purpose: short distances, soft easing.
   Everything here only runs for visitors who have not asked their system
   for reduced motion, and only once JavaScript has started (html.js-anim,
   set by public/js/motion.js in <head>). Without either, the page is the
   static design.
   ========================================================================== */
@media (prefers-reduced-motion:no-preference){
  :root{--ease-out:cubic-bezier(.2,.7,.2,1)}

  /* Hero entrance: copy in sequence, form from the right, photo settles. */
  .js-anim .hero-copy>*{opacity:0;translate:0 24px;transition:opacity .9s var(--ease-out),translate .9s var(--ease-out)}
  .js-anim .hero-copy>:nth-child(1){transition-delay:.15s}
  .js-anim .hero-copy>:nth-child(2){transition-delay:.3s}
  .js-anim .hero-copy>:nth-child(3){transition-delay:.5s}
  .js-anim .hero-copy>:nth-child(4){transition-delay:.65s}
  .js-anim .hero-copy>:nth-child(5){transition-delay:.8s}
  .js-anim .hero h1 em{opacity:0;transition:opacity 1.2s .55s ease}
  .js-anim .booking-card{opacity:0;translate:40px 0;transition:opacity 1s .45s var(--ease-out),translate 1s .45s var(--ease-out)}
  .js-anim .hero-media{scale:1.08;transition:scale 2.8s var(--ease-out);will-change:translate,scale}
  .js-anim.is-loaded .hero-copy>*,.js-anim.is-loaded .booking-card{opacity:1;translate:0 0}
  .js-anim.is-loaded .hero h1 em{opacity:1}
  .js-anim.is-loaded .hero-media{scale:1}

  /* Scroll reveal: site.js marks the elements and staggers siblings. */
  .js-anim .reveal{opacity:0;translate:0 26px;transition:opacity .8s var(--ease-out),translate .8s var(--ease-out);transition-delay:var(--reveal-delay,0s)}
  .js-anim .reveal.is-visible{opacity:1;translate:0 0}

  /* Header darkens once the page moves. */
  .site-header{transition:background-color .4s ease,box-shadow .4s ease}
  .site-header.is-scrolled{background-color:rgba(9,10,11,.98);box-shadow:0 12px 30px rgba(0,0,0,.35)}

  /* Menu links: a gold underline draws in. */
  nav a:not(.nav-cta){background:linear-gradient(var(--gold),var(--gold)) 0 100%/0 1px no-repeat;transition:background-size .35s var(--ease-out),color .3s}
  nav a:not(.nav-cta):hover{background-size:100% 1px}
  .nav-cta{transition:border-color .3s,color .3s}
  .nav-cta:hover{border-color:var(--gold)}

  /* Buttons: a light sweeps across the gold ones. */
  .button{position:relative;overflow:hidden;transition:background-color .3s,border-color .3s,color .3s}
  .button.primary:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.5) 50%,transparent 70%);translate:-120% 0;transition:translate .9s var(--ease-out)}
  .button.primary:hover:after{translate:120% 0}
  .button.ghost:hover{border-color:var(--gold)}
  .button.pale:hover{background:#f3ead6}

  /* Link arrows (→) slide forward; site.js wraps them in .arrow. */
  .arrow{display:inline-block;transition:translate .35s var(--ease-out)}
  a:hover .arrow{translate:5px 0}

  /* Rate rows and packages answer the pointer (colours in the static rule). */
  .rate-list>div{transition:background-color .3s,box-shadow .3s}
  .rate-cta i{transition:max-width .4s var(--ease-out),opacity .3s ease,margin-right .4s var(--ease-out)}
  .rate-cta{transition:translate .35s var(--ease-out)}
  .rate-list>div[data-book-fare]:hover .rate-cta{translate:3px 0}
  .hire-packages>div{transition:background-color .3s}
  .hire-packages small{transition:opacity .3s,translate .35s var(--ease-out)}
  .hire-packages>div[data-book-fare]:hover small{translate:4px 0}

  /* The drop-down glows once when a link has just chosen its service. */
  .booking-card select.is-preselected{animation:preselect 1.6s var(--ease-out)}
  @keyframes preselect{0%,35%{box-shadow:0 0 0 3px rgba(202,164,92,.55);border-color:var(--gold)}100%{box-shadow:0 0 0 3px rgba(202,164,92,0)}}

  /* Journey cards lift; their photo slowly closes in. */
  .journey-card{transition:translate .5s var(--ease-out),box-shadow .5s var(--ease-out)}
  .journey-card:hover{translate:0 -6px;box-shadow:0 24px 50px rgba(0,0,0,.28)}
  .journey-card>.journey-photo{transition:scale 1.2s var(--ease-out);will-change:translate}
  .journey-card:hover>.journey-photo{scale:1.05}

  /* The fare beside "Plan your journey" changes with a small lift. */
  #fare-display.is-changing{animation:fare-change .45s var(--ease-out)}
  @keyframes fare-change{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}

  /* FAQ: site.js animates the height; the sign turns. */
  summary:after{transition:rotate .3s var(--ease-out),scale .3s var(--ease-out)}
  details[open] summary:after{rotate:180deg}

  .whatsapp{transition:background-color .3s,color .3s,scale .3s var(--ease-out)}
  .whatsapp:hover{scale:1.06}
  .js-anim .whatsapp{opacity:0;translate:0 16px;transition:opacity .6s 1.4s var(--ease-out),translate .6s 1.4s var(--ease-out),background-color .3s,color .3s,scale .3s var(--ease-out)}
  .js-anim.is-loaded .whatsapp{opacity:1;translate:0 0}

  /* FAQ hover: the question turns gold, its sign grows a touch and the
     rule under it warms to gold. Nothing moves. */
  .accordion details{transition:border-color .4s ease}
  .accordion summary{transition:color .3s ease}
  .accordion details:hover{border-bottom-color:var(--gold)}
  .accordion details:hover summary,.accordion summary:focus-visible{color:var(--gold-dark)}
  .accordion details:hover summary:after{scale:1.25}
}

/* Booking form: the Terms & Privacy tick box, right above the button. The
   design styles every .booking-card label as a small capital heading; this
   one is a sentence. */
.booking-card .form-consent{display:flex;align-items:flex-start;gap:10px;margin:20px 0 16px;font-size:.875rem;font-weight:400;letter-spacing:0;text-transform:none;line-height:1.45;color:#4c4f54;cursor:pointer}
.booking-card .form-consent input{flex:none;width:18px;height:18px;margin:1px 0 0;padding:0;accent-color:var(--gold-dark);cursor:pointer}
.booking-card .form-consent input[aria-invalid="true"]{outline:2px solid #9c1d32;outline-offset:2px}
.form-consent a{color:inherit;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
.form-consent a:hover{color:var(--gold-dark)}
.form-consent+.form-error{margin:-8px 0 14px}
/* Once sent, the thank-you covers the form it answers instead of being
   added under it: the card, and the hero, keep their height. */
.booking-card .form-success:not([hidden]){position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:22px;margin:0;padding:40px 32px;background:#f7f7f5;font-size:1rem;line-height:1.55;color:#325e43}
.form-success a[href^="tel:"]{white-space:nowrap}
.booking-card .form-success:not([hidden])::before{content:'✓';display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--gold);border-radius:50%;font-size:1.3rem;color:var(--gold-dark)}

/* Rates: room between the gold line a bookable row shows on hover/tap
   (inset 2px, above) and its text. The same on every row and group title,
   so the names and prices stay in one column. */
.rate-list>div,.rate-group{padding-left:16px;padding-right:16px}
.rate-hint{padding-right:16px}

/* Footer: "ABN 83 314 563 104" never splits across two lines. */
.legal-number{white-space:nowrap}

@media(max-width:640px){
  /* "Select a route to book it": on a phone the rows say it themselves. */
  .rate-hint{display:none}
  .rate-list>div,.rate-group{padding-left:12px;padding-right:12px}
  .footer-brand{justify-content:center}
}

/* Maintenance mode reminder, shown only to whoever is logged in to the admin
   (layout). Bottom-left: the WhatsApp button holds the other corner. */
.maintenance-notice{position:fixed;left:16px;bottom:16px;z-index:40;max-width:calc(100% - 112px);margin:0;padding:10px 14px;background:#111214;color:#f5ecd5;border:1px solid var(--gold);font-size:.78rem;line-height:1.4;box-shadow:0 10px 30px rgba(0,0,0,.3)}
.maintenance-notice a{color:var(--gold-bright);text-decoration:underline;text-underline-offset:3px}
