/* Royal Dream Locations hub. Uses the ORIGINAL homepage design tokens and Services/Fleet hero.
   app.css + services.css must load before this stylesheet; do not fork the hero styling. */
.locations-page { font-family:var(--rd-font-body); color:var(--rd-text); background:var(--rd-primary-bg); }
.locations-page .services-hero__word { font-size:clamp(140px,21vw,355px); }
.locations-page .site-nav__links a[aria-current="page"] { color:var(--rd-accent); }
.locations-page main { overflow:hidden; }
.locations-page .services-section { scroll-margin-top:80px; }
.locations-page :focus-visible { outline:3px solid var(--rd-accent); outline-offset:4px; }


/* Keep heading text as the descriptive clickable anchor on location/fleet cards. */
.locations-page .locations-city-card h3 a,
.locations-page .locations-fleet-card h3 a {
  color: inherit;
  text-decoration: none;
  transition: color .2s ease;
}
.locations-page .locations-city-card h3 a:hover,
.locations-page .locations-fleet-card h3 a:hover { color: var(--rd-dark); }

/* The shared .services-page a rule overrides button modifier colors otherwise.
   Restore the original Services button colors on the Locations page only. */
.locations-page a.services-button--dark { color: #fff; }
.locations-page a.services-button--accent { color: var(--rd-text); }
.locations-page a.services-button--ghost { color: #fff; }

/* Directory picker + card grid */
.locations-picker { display:grid; grid-template-columns:minmax(0,1.6fr) 178px minmax(190px,0.8fr) auto; gap:14px; align-items:center; padding:23px 25px; margin:0 0 28px; border:1px solid var(--rd-border); border-radius:24px; background:#fff; box-shadow:0 14px 46px rgba(24,33,35,.06); }
.locations-picker strong { display:block; font-size:12px; font-weight:800; letter-spacing:.15em; color:var(--rd-olive); }
.locations-picker p { margin:6px 0 0; font-size:13px; line-height:1.55; color:var(--rd-muted); }
.locations-picker label { font-size:12px; color:var(--rd-muted); font-weight:800; text-align:right; }
.locations-picker select { width:100%; min-width:0; min-height:51px; border:1px solid var(--rd-border); border-radius:14px; padding:0 15px; color:var(--rd-text); background:var(--rd-primary-bg); cursor:pointer; }
.locations-picker .services-button { min-height:51px; font-size:11px; white-space:nowrap; }
.locations-picker .services-button[aria-disabled="true"] { opacity:.7; }
.locations-card-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; align-items:stretch; }
.locations-city-card { display:flex; flex-direction:column; overflow:hidden; border:1px solid var(--rd-border); border-radius:25px; background:#fff; box-shadow:0 16px 46px rgba(18,48,55,.055); transition:box-shadow .28s ease,border-color .28s ease; }
.locations-city-card:hover { border-color:#a5ae9b; box-shadow:0 24px 55px rgba(18,48,55,.13); }
.locations-city-card__image { display:block; position:relative; overflow:hidden; height:206px; background:var(--rd-dark); }
.locations-city-card__image img { display:block; width:100%; height:100%; object-fit:cover; transition:transform .65s cubic-bezier(.2,.7,.3,1); }
.locations-city-card:hover .locations-city-card__image img { transform:scale(1.055); }
.locations-city-card__image::after { content:""; position:absolute; inset:0; background:linear-gradient(0deg,rgba(8,25,28,.35),transparent 70%); pointer-events:none; }
.locations-city-card__image span { position:absolute; z-index:1; left:18px; bottom:15px; display:grid; place-items:center; width:37px; height:37px; border:1px solid rgba(255,255,255,.5); border-radius:50%; color:#fff; font-family:var(--rd-font-accent); font-size:21px; }
.locations-city-card__body { display:flex; flex-direction:column; flex:1; padding:24px; }
.locations-city-card__kicker { margin:0 0 9px!important; font-size:10px!important; font-weight:800; letter-spacing:.19em; color:var(--rd-olive)!important; }
.locations-city-card h3 { margin:0 0 12px; font-size:clamp(21px,1.55vw,27px); line-height:1.08; letter-spacing:-.045em; }
.locations-city-card p { color:var(--rd-muted); font-size:13px; line-height:1.68; margin:0 0 14px; }
.locations-city-card__areas { color:var(--rd-text)!important; font-weight:650; }
.locations-city-card dl { margin:auto 0 20px; padding-top:14px; border-top:1px solid var(--rd-border); }
.locations-city-card dt { margin-top:9px; font-size:10px; color:var(--rd-olive); letter-spacing:.08em; text-transform:uppercase; font-weight:800; }
.locations-city-card dd { margin:4px 0 11px; color:var(--rd-muted); font-size:12px; line-height:1.5; }
.locations-text-link { display:inline-flex; align-items:center; justify-content:space-between; gap:12px; color:var(--rd-dark)!important; font-size:11px; letter-spacing:.06em; font-weight:800; }
.locations-text-link:hover { color:var(--rd-olive)!important; }
.locations-text-link span { font-size:18px; }
.locations-caption { color:var(--rd-muted); max-width:1000px; font-size:12px; margin:18px 0 0; }

/* Fleet comparison */
.locations-fleet-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:16px; }
.locations-fleet-card { display:flex; flex-direction:column; min-width:0; border-radius:24px; background:#fff; border:1px solid var(--rd-border); overflow:hidden; }
.locations-fleet-card>a { display:block; height:185px; background:#dbe1da; overflow:hidden; }
.locations-fleet-card img { width:100%; height:100%; object-fit:cover; transition:transform .5s; }
.locations-fleet-card:hover img { transform:scale(1.04); }
.locations-fleet-card>div { padding:19px; display:flex; flex:1; flex-direction:column; }
.locations-fleet-card small { color:var(--rd-olive); font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.12em; }
.locations-fleet-card h3 { margin:10px 0; font-size:21px; line-height:1.12; letter-spacing:-.035em; }
.locations-fleet-card p { margin:0 0 18px; color:var(--rd-muted); font-size:12px; line-height:1.7; }
.locations-fleet-card .locations-text-link { margin-top:auto; }

/* Two pricing tables use the homepage JSON, not divergent editorial price claims. */
.locations-pricing-panel { margin-bottom:20px; border:1px solid var(--rd-border); border-radius:26px; background:#fff; box-shadow:0 15px 45px rgba(24,33,35,.035); overflow:hidden; }
.locations-panel-head { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:10px; padding:26px 28px; border-bottom:1px solid var(--rd-border); }
.locations-panel-head span { font-size:10px; letter-spacing:.17em; color:var(--rd-olive); font-weight:800; }
.locations-panel-head h3 { font-size:25px; letter-spacing:-.04em; line-height:1.1; margin:0; }
.locations-table-wrap { overflow:auto; }
.locations-table-wrap table { width:100%; min-width:650px; border-collapse:collapse; text-align:left; }
.locations-table-wrap th,.locations-table-wrap td { padding:20px 28px; font-size:13px; border-bottom:1px solid var(--rd-border); }
.locations-table-wrap thead th { background:var(--rd-secondary-bg); text-transform:uppercase; letter-spacing:.06em; font-size:11px; color:var(--rd-olive); }
.locations-table-wrap tbody th { font-weight:800; }
.locations-table-wrap tbody tr:last-child th,.locations-table-wrap tbody tr:last-child td { border-bottom:0; }
.locations-table-wrap td { font-weight:700; color:var(--rd-dark); }
.locations-pricing-note { padding:0 28px 25px; margin:15px 0 0; color:var(--rd-muted); font-size:12px; line-height:1.7; }
.locations-monthly-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; padding:23px 26px 0; }
.locations-monthly-grid article { padding:21px; border:1px solid var(--rd-border); border-radius:16px; background:var(--rd-primary-bg); }
.locations-monthly-grid span { display:block; color:var(--rd-muted); font-size:12px; font-weight:700; }
.locations-monthly-grid strong { display:block; margin:10px 0; font-size:clamp(20px,2vw,27px); letter-spacing:-.04em; line-height:1.12; color:var(--rd-dark); }
.locations-monthly-grid p { font-size:12px; color:var(--rd-muted); line-height:1.65; margin:0; }
.locations-scope { padding:26px 30px; border:1px solid var(--rd-border); border-radius:24px; background:var(--rd-secondary-bg); }
.locations-scope h3 { margin:0 0 20px; font-size:27px; letter-spacing:-.035em; }
.locations-scope>div { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; }
.locations-scope h4 { margin:0 0 7px; font-size:14px; }
.locations-scope p { margin:0; font-size:12px; line-height:1.7; color:var(--rd-muted); }

/* Service / airport / route / compliance sections */
.locations-page .services-section--dark .services-section__head p { color:rgba(255,255,255,.73); }
.locations-service-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.locations-service-grid article { display:flex; flex-direction:column; padding:27px; border:1px solid rgba(255,255,255,.2); border-radius:24px; background:rgba(255,255,255,.05); }
.locations-service-grid h3 { margin:0 0 12px; font-size:23px; line-height:1.1; letter-spacing:-.035em; }
.locations-service-grid p { margin:0 0 22px; color:rgba(255,255,255,.73); font-size:13px; line-height:1.7; }
.locations-service-grid a { margin-top:auto; color:var(--rd-accent); font-size:11px; font-weight:800; letter-spacing:.08em; }
.locations-airport-layout { display:grid; grid-template-columns:1fr 1fr; gap:28px; align-items:stretch; }
.locations-airport-visual { min-height:440px; border-radius:25px; background:var(--rd-dark); overflow:hidden; }
.locations-airport-visual img { display:block; width:100%; height:100%; object-fit:cover; }
.locations-airport-info { display:flex; flex-direction:column; justify-content:center; background:var(--rd-secondary-bg); border-radius:25px; padding:clamp(24px,4vw,53px); }
.locations-airport-info h3 { font-size:clamp(25px,3vw,35px); line-height:1.06; letter-spacing:-.04em; margin:0 0 18px; }
.locations-airport-info ul { padding-left:21px; margin:0; }
.locations-airport-info li { margin-bottom:14px; font-size:13px; line-height:1.75; }
.locations-airport-info>p { font-size:12px; color:var(--rd-muted); line-height:1.7; }
.locations-airport-info .services-button { align-self:flex-start; margin-top:15px; }
.locations-route-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.locations-route-grid article { display:flex; flex-direction:column; min-height:210px; padding:27px; border:1px solid var(--rd-border); border-radius:24px; background:#fff; }
.locations-route-path { display:flex; align-items:center; flex-wrap:wrap; gap:10px; font-size:19px; line-height:1.15; letter-spacing:-.03em; }
.locations-route-path span { color:var(--rd-olive); font-size:24px; }
.locations-route-grid p { margin:17px 0 20px; color:var(--rd-muted); font-size:13px; line-height:1.65; }
.locations-route-grid a { margin-top:auto; font-size:11px; font-weight:800; letter-spacing:.08em; color:var(--rd-olive); }
.locations-compliance-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:20px; }
.locations-compliance-grid article { padding:22px 20px 25px; border-top:3px solid var(--rd-olive); background:#fff; border-radius:0 0 18px 18px; }
.locations-compliance-grid h3 { font-size:20px; letter-spacing:-.035em; margin:0 0 12px; line-height:1.18; }
.locations-compliance-grid p { color:var(--rd-muted); font-size:13px; line-height:1.65; margin:0; }
.locations-sources { margin:26px 0 0; font-size:12px; line-height:1.75; color:var(--rd-muted); }
.locations-sources a { color:var(--rd-dark); text-decoration:underline; text-underline-offset:3px; }

/* Reuse Services' original contact form, footer, FAQ and reveal transitions unchanged. */
@media (max-width:1250px) {
 .locations-picker { grid-template-columns:1fr auto; }
 .locations-picker>div { grid-column:1/-1; }
 .locations-picker label { text-align:left; }
 .locations-card-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .locations-fleet-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .locations-scope>div,.locations-service-grid,.locations-compliance-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:900px) {
 .locations-card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .locations-route-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .locations-airport-layout { grid-template-columns:1fr; }
 .locations-airport-visual { min-height:320px; max-height:430px; }
}
@media (max-width:680px) {
 .locations-page .services-hero__word { font-size:clamp(100px,22vw,180px); bottom:0; }
 .locations-picker { grid-template-columns:1fr; }
 .locations-picker>div { grid-column:auto; }
 .locations-picker label { text-align:left; }
 .locations-picker .services-button { width:100%; }
 .locations-card-grid,.locations-fleet-grid,.locations-monthly-grid,.locations-scope>div,.locations-service-grid,.locations-route-grid,.locations-compliance-grid { grid-template-columns:1fr; }
 .locations-city-card__image { height:230px; }
 .locations-fleet-card>a { height:230px; }
 .locations-monthly-grid { gap:11px; }
 .locations-panel-head { padding:22px; }
 .locations-panel-head h3 { font-size:22px; }
 .locations-table-wrap th,.locations-table-wrap td { padding:16px; }
 .locations-pricing-note { padding:0 20px 22px; }
 .locations-airport-info { padding:27px; }
}
@media (prefers-reduced-motion:reduce) {
 .locations-city-card__image img,.locations-fleet-card img { transition:none!important; transform:none!important; }
}
