
:root{
  --navy:#0c2f68;--navy2:#102f62;--navy-dark:#071f48;--gold:#bc9548;--gold-dark:#9f7831;
  --cream:#f8f3ea;--sand:#eee4d2;--ink:#1d2d4d;--muted:#65718a;--line:#d8dde5;--white:#fff;
  --shadow:0 16px 46px rgba(9,38,81,.12);--content:1180px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#eef2f6;color:var(--ink);font-family:"Montserrat",Arial,sans-serif;line-height:1.52;-webkit-font-smoothing:antialiased}img{display:block;max-width:100%}a{color:inherit}.skip-link{position:fixed;left:1rem;top:1rem;transform:translateY(-160%);z-index:9999;background:#fff;color:var(--navy);padding:.7rem 1rem;border-radius:.4rem;font-weight:700}.skip-link:focus{transform:none}

/* Full-width header only */
.site-header{width:100%;position:relative;background:#fff;box-shadow:0 8px 28px rgba(7,31,72,.10);z-index:100}
.header-visual{position:relative;width:100%;overflow:hidden;background:#fff}
.header-visual>img{width:100%;height:auto;min-height:210px;object-fit:cover;object-position:center top}
.header-nav{position:absolute;right:clamp(18px,3.2vw,60px);top:18px;z-index:4;display:flex;align-items:center;gap:4px;padding:7px 8px;border-radius:999px;background:rgba(255,255,255,.93);box-shadow:0 8px 25px rgba(7,31,72,.14);backdrop-filter:blur(6px)}
.header-nav a{display:inline-flex;align-items:center;text-decoration:none;color:var(--navy);font-size:12px;font-weight:800;padding:9px 10px;border-radius:999px;white-space:nowrap;transition:.15s ease}
.header-nav a:hover,.header-nav a.active{background:#eef2f7;color:var(--navy-dark)}
.header-nav .nav-book{background:var(--gold);color:#fff;padding-inline:14px}.header-nav .nav-book:hover{background:var(--gold-dark);color:#fff}.header-nav .lang{border-left:1px solid #dce2e8;border-radius:0;padding-left:12px;margin-left:3px}
.menu-toggle{display:none;position:absolute;right:16px;top:16px;z-index:5;border:0;background:rgba(255,255,255,.95);color:var(--navy);border-radius:999px;padding:10px 14px;font-weight:800;box-shadow:0 8px 22px rgba(7,31,72,.15)}

/* Main is deliberately NOT full width */
.main-shell{width:min(var(--content),calc(100% - 32px));margin:24px auto 36px;background:#fff;box-shadow:var(--shadow);overflow:hidden}
.proposal-band{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:28px;align-items:center;padding:24px 44px 26px;color:#fff;background:linear-gradient(115deg,#0a2e66 0%,#0b2d62 70%,#0d2855 100%);border-top:6px solid var(--gold)}
.eyebrow{margin:0 0 3px;color:#d7b36a;font-size:clamp(.95rem,1.7vw,1.35rem);font-weight:700;letter-spacing:.08em}.proposal-band h1{margin:0;color:#fff;font-size:clamp(1.45rem,3vw,2.45rem);line-height:1.08;font-weight:700;letter-spacing:.01em}.service-line{margin:12px 0 0;font-size:clamp(.82rem,1.4vw,1rem);letter-spacing:.12em;font-weight:600}.service-line span{color:var(--gold);padding:0 .45rem}.proposal-values{display:grid;gap:14px;border-left:3px solid var(--gold);padding-left:28px}.values-list{display:grid;gap:2px;font-size:.82rem;font-weight:700;letter-spacing:.12em}.quote-button,.contact-cta,.button{display:inline-flex;width:fit-content;align-items:center;justify-content:center;gap:9px;text-decoration:none;background:var(--gold);color:#fff;padding:10px 15px;border:0;border-radius:999px;font-weight:800;cursor:pointer;font:inherit;transition:.15s ease}.quote-button:hover,.contact-cta:hover,.button:hover{transform:translateY(-1px);background:var(--gold-dark)}.button.navy{background:var(--navy)}.button.ghost{background:#fff;color:var(--navy);border:1px solid var(--navy)}.button.full{width:100%}
.section-pad{padding:28px 44px}section h2{margin:0 0 8px;color:var(--navy);font-size:clamp(1.25rem,2.3vw,1.75rem);line-height:1.15;font-weight:800}p{margin:0 0 13px}.intro-section{display:grid;grid-template-columns:1.04fr .96fr;gap:38px;align-items:center;background:#fff}.about-copy p{font-size:.98rem}.fleet-card{overflow:hidden;background:#fff}.fleet-photo-wrap{position:relative}.fleet-photo-wrap img{width:100%;aspect-ratio:2.02/1;object-fit:cover}/* The Portuguese badge is already part of bus.jpg. Only the English pages use
   a translated HTML badge, sized to completely cover the Portuguese artwork below. */
.fleet-badge{display:none}
.fleet-badge-en{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;top:0;right:4px;width:40%;height:27%;padding:2px 10px 2px 22px;background:#c7a04a;color:#fff;clip-path:polygon(12% 0,100% 0,100% 100%,0 100%);text-align:center;font-size:.83rem;line-height:1.35;box-shadow:0 6px 20px rgba(42,29,7,.12)}.fleet-benefits{display:grid;grid-template-columns:repeat(4,1fr);padding:11px 0 2px}.benefit{text-align:center;padding:0 7px;border-right:1px solid #e6dcc9;font-size:.78rem}.benefit:last-child{border-right:0}.benefit strong,.benefit small{display:block}.benefit strong{color:var(--navy);margin-top:4px}.benefit small{color:var(--muted)}.icon-circle,.service-icon,.commitments>li>span,.side-icon{display:inline-grid;place-items:center;border-radius:50%}.icon-circle{width:40px;height:40px;background:var(--navy);color:var(--gold);font-size:1rem}
.services{padding-top:20px}.section-intro{margin-bottom:16px}.service-grid{display:grid;grid-template-columns:repeat(4,1fr)}.service-card{padding:8px 22px 2px;border-right:1px solid #dfd5c1}.service-card:first-child{padding-left:0}.service-card:last-child{border-right:0;padding-right:0}.service-icon{width:58px;height:58px;margin:0 auto 9px;background:var(--gold);color:#fff;font-size:1.45rem}.service-card h3{margin:0 0 6px;text-align:center;color:var(--navy);font-size:1rem;line-height:1.2;font-weight:800}.service-card ul{margin:0;padding-left:1.1rem;font-size:.86rem;color:#34415c}.service-card li{margin:2px 0}.service-card li::marker{color:var(--gold)}
.commercial-grid{display:grid;grid-template-columns:minmax(0,1.78fr) minmax(280px,.92fr);gap:24px;align-items:start;padding-top:22px}.pricing-panel>p{font-size:.9rem}.table-wrap{overflow-x:auto;border:1px solid #d9dfe8;border-radius:6px;background:#fff}table{width:100%;min-width:680px;border-collapse:collapse;font-size:.78rem}thead{background:var(--navy);color:#fff}th,td{padding:8px 10px;text-align:left;border-right:1px solid #cfd5df;border-bottom:1px solid #dfe3e9;vertical-align:middle}th:last-child,td:last-child{border-right:0}tbody tr:nth-child(even){background:#f6f7f9}tbody td:first-child{color:var(--navy);font-weight:700}.table-note{margin:10px 0 0;font-size:.72rem!important;color:#4f5d76}.partner-panel{background:var(--cream);border-radius:6px;padding:18px 18px 16px}.side-heading{display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:center;margin-bottom:5px}.side-heading h2{margin:0;font-size:1.12rem}.side-icon{width:38px;height:38px;color:var(--gold);font-size:1.55rem}.partnership-card p{font-size:.78rem;line-height:1.5}.commitment-card{margin-top:16px;padding-top:13px;border-top:1px solid #dfd3bd}.commitment-card h2{font-size:1.1rem}.commitments{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:5px}.commitments li{display:grid;grid-template-columns:32px 1fr;gap:8px;align-items:center}.commitments>li>span{width:29px;height:29px;background:var(--navy);color:var(--gold);font-size:.8rem}.commitments p{margin:0;font-size:.72rem;line-height:1.25}.commitments strong{color:var(--navy)}

/* Classic inner pages */
.inner-title{padding:28px 44px 24px;border-top:6px solid var(--gold);background:linear-gradient(115deg,#0a2e66,#0d2855);color:#fff}.inner-title .eyebrow{font-size:.85rem}.inner-title h1{margin:0;font-size:clamp(1.8rem,4vw,3rem);line-height:1.05}.inner-title p{max-width:780px;margin:11px 0 0;color:rgba(255,255,255,.88)}
.classic-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px}.classic-card{border:1px solid var(--line);background:#fff;padding:22px}.classic-card h3{margin:0 0 8px;color:var(--navy)}.classic-card p,.classic-card li{color:#4c5971}.classic-card ul{margin:10px 0 0;padding-left:1.2rem}.classic-card li::marker{color:var(--gold)}.image-card{padding:0;overflow:hidden}.image-card img{width:100%;height:100%;min-height:250px;object-fit:cover}.feature-row{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);margin-top:20px}.feature-row>div{text-align:center;padding:18px 12px;border-right:1px solid var(--line)}.feature-row>div:last-child{border-right:0}.feature-row i{display:grid;place-items:center;width:46px;height:46px;margin:0 auto 8px;border-radius:50%;background:var(--navy);color:var(--gold)}.feature-row strong{display:block;color:var(--navy)}.price-note{padding:16px 18px;background:var(--cream);border-left:4px solid var(--gold);margin-top:18px}.booking-layout,.contact-layout{display:grid;grid-template-columns:.72fr 1.28fr;gap:24px}.contact-panel{background:var(--navy);color:#fff;padding:24px}.contact-panel h2{color:#fff}.contact-panel a{display:block;color:#fff;text-decoration:none;margin:8px 0}.form-card{border:1px solid var(--line);padding:26px;background:#fff}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}.form-grid label{display:grid;gap:5px;color:var(--navy);font-size:.82rem;font-weight:700}.form-grid input,.form-grid select,.form-grid textarea{width:100%;border:1px solid #cbd2db;border-radius:6px;padding:11px 12px;font:inherit;background:#fff;color:var(--ink)}.form-grid textarea{resize:vertical}.full-span{grid-column:1/-1}

/* Full-width footer only */
.site-footer{width:100%;background:var(--navy-dark);color:#fff}
/* Fixed percentage columns keep the footer composition stable at different browser zoom levels. */
.footer-media{display:grid;grid-template-columns:24% 24% 24% 28%;min-height:215px}
.footer-photo{min-height:215px;overflow:hidden}
.footer-photo img{width:100%;height:100%;object-fit:cover}
/* mountains.jpg was cropped from the original flyer and contains a narrow piece of the
   original contact block on its right edge. Zoom the image slightly from the left so
   that strip can never become visible when the browser viewport gets wider. */
.footer-media>.footer-photo:nth-child(3) img{transform:scale(1.24);transform-origin:left center;object-position:left center}
.footer-contact{display:flex;flex-direction:column;justify-content:center;gap:7px;padding:22px 28px;background:linear-gradient(125deg,#0a2c60,#082450)}.footer-contact h2{margin:0 0 3px;color:#d7b36a;font-size:1rem;letter-spacing:.05em}.footer-contact a,.footer-contact p{margin:0;text-decoration:none;color:#fff;font-size:.76rem;overflow-wrap:anywhere}.footer-contact i{width:20px;color:var(--gold)}.footer-contact .contact-cta{margin-top:5px;color:#fff}.script-tagline{margin-top:5px!important;color:var(--gold)!important;font-family:"Marck Script",cursive;font-size:1.28rem!important;line-height:1.05;text-align:center;transform:rotate(-3deg)}.footer-bottom{background:var(--navy-dark);border-top:1px solid rgba(255,255,255,.12)}.footer-bottom-inner{width:min(var(--content),calc(100% - 32px));margin:auto;display:flex;justify-content:space-between;gap:18px;padding:13px 0;color:rgba(255,255,255,.76);font-size:.69rem}.footer-bottom p{margin:0}
.floating-whatsapp{position:fixed;right:22px;bottom:22px;z-index:1000;display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:#25d366;color:#fff;text-decoration:none;font-size:1.8rem;box-shadow:0 10px 28px rgba(0,0,0,.22)}

@media(max-width:1050px){.header-nav{gap:1px}.header-nav a{font-size:11px;padding:8px 7px}.proposal-band{grid-template-columns:1fr}.proposal-values{grid-template-columns:1fr auto;align-items:center}.service-grid{grid-template-columns:repeat(2,1fr);gap:24px 0}.service-card:nth-child(2){border-right:0}.service-card:nth-child(3){padding-left:0}.commercial-grid{grid-template-columns:1fr}.partner-panel{display:grid;grid-template-columns:1fr 1fr;gap:22px}.commitment-card{margin-top:0;padding-top:0;padding-left:18px;border-top:0;border-left:1px solid #dfd3bd}.footer-media{grid-template-columns:repeat(3,1fr)}.footer-contact{grid-column:1/-1;min-height:215px;align-items:center;text-align:center}.classic-grid{grid-template-columns:1fr}.booking-layout,.contact-layout{grid-template-columns:1fr}}
@media(max-width:860px){.header-visual>img{min-height:180px}.header-nav{display:none;position:absolute;right:14px;top:64px;width:min(330px,calc(100% - 28px));padding:14px;border-radius:14px;flex-direction:column;align-items:stretch;background:rgba(255,255,255,.98)}.header-nav.open{display:flex}.header-nav a{font-size:13px;padding:10px 12px}.header-nav .lang{border-left:0;border-top:1px solid #e1e5eb;border-radius:0;margin-left:0;padding-top:12px}.menu-toggle{display:block}.intro-section{grid-template-columns:1fr}.feature-row{grid-template-columns:repeat(2,1fr)}.feature-row>div:nth-child(2){border-right:0}.feature-row>div:nth-child(-n+2){border-bottom:1px solid var(--line)}}
@media(max-width:640px){body{background:#fff}.header-visual>img{height:190px;min-height:190px;object-fit:cover;object-position:center top}.main-shell{width:100%;margin:0;box-shadow:none}.proposal-band,.inner-title{padding:22px 20px 24px}.proposal-values{grid-template-columns:1fr;border-left-width:2px;padding-left:18px}.section-pad{padding:25px 20px}.fleet-benefits{grid-template-columns:repeat(2,1fr);gap:12px 0}.benefit:nth-child(2){border-right:0}.service-grid{grid-template-columns:1fr;gap:26px}.service-card,.service-card:first-child,.service-card:last-child,.service-card:nth-child(3){padding:0;border-right:0}.service-card{border-bottom:1px solid #e7dfd1;padding-bottom:22px!important}.service-card:last-child{border-bottom:0;padding-bottom:0!important}.partner-panel{grid-template-columns:1fr;padding:17px}.commitment-card{padding-left:0;padding-top:14px;border-left:0;border-top:1px solid #dfd3bd}.footer-media{grid-template-columns:1fr}.footer-photo{min-height:145px}.footer-contact{grid-column:auto;min-height:250px;padding:24px 18px}.footer-bottom-inner{flex-direction:column;text-align:center;align-items:center;gap:5px;padding:13px 14px}.form-grid{grid-template-columns:1fr}.full-span{grid-column:auto}.feature-row{grid-template-columns:1fr}.feature-row>div{border-right:0;border-bottom:1px solid var(--line)}.feature-row>div:last-child{border-bottom:0}.floating-whatsapp{width:50px;height:50px;right:15px;bottom:15px}}
@media print{body{background:#fff}.site-header{box-shadow:none}.header-nav,.menu-toggle,.floating-whatsapp,.quote-button{display:none!important}.main-shell{width:100%;margin:0;box-shadow:none}.section-pad{padding:18px 28px}.site-footer{break-inside:avoid}}

/* =========================================================
   v4.2 — MOBILE WIDTH / HEADER FIXES
   ========================================================= */

/* Prevent grid children (especially the tariff table) from forcing the
   whole page wider than the mobile viewport. */
.commercial-grid,
.commercial-grid > *,
.pricing-panel,
.partner-panel,
.partnership-card,
.commitment-card,
.table-wrap {
  min-width: 0;
  max-width: 100%;
}

.table-wrap {
  width: 100%;
  -webkit-overflow-scrolling: touch;
}

/* A long child should never create page-level horizontal scrolling. */
html, body {
  max-width: 100%;
  overflow-x: hidden;
}

@media (max-width: 640px) {
  /* The desktop banner is extremely wide (969 × 225). Center-cropping it
     removed the Salshine logo on phones. Anchor the crop to the left so the
     complete brand block is retained while the beach fills the remaining area. */
  .header-visual > img {
    width: 100%;
    height: 190px;
    min-height: 190px;
    object-fit: cover;
    object-position: left top;
  }

  /* Ensure every main-section box actually shrinks to the viewport. */
  .main-shell,
  .section-pad,
  .commercial-grid,
  .pricing-panel,
  .partner-panel {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }

  /* On phones show all tariff columns inside the screen rather than making
     the complete commercial section wider than the viewport. */
  .table-wrap {
    overflow-x: visible;
  }

  .table-wrap table {
    width: 100%;
    min-width: 0;
    table-layout: fixed;
    font-size: .64rem;
  }

  .table-wrap th,
  .table-wrap td {
    padding: 7px 5px;
    line-height: 1.28;
    overflow-wrap: anywhere;
    word-break: normal;
    hyphens: auto;
  }

  .table-wrap th:nth-child(1),
  .table-wrap td:nth-child(1) { width: 32%; }
  .table-wrap th:nth-child(2),
  .table-wrap td:nth-child(2) { width: 30%; }
  .table-wrap th:nth-child(3),
  .table-wrap td:nth-child(3) { width: 18%; }
  .table-wrap th:nth-child(4),
  .table-wrap td:nth-child(4) { width: 20%; }

  .pricing-panel > p,
  .table-note,
  .partnership-card p,
  .commitment-card p {
    max-width: 100%;
    overflow-wrap: break-word;
  }

  /* Prevent the icon/title grid from inheriting a min-content width from
     long Portuguese headings. */
  .side-heading {
    grid-template-columns: 38px minmax(0, 1fr);
  }
  .side-heading h2,
  .commitment-card h2 {
    min-width: 0;
    overflow-wrap: break-word;
  }
}

@media (max-width: 640px) {
  /* Same shrink protection for the secondary pages. */
  .intro-section > *,
  .service-grid > *,
  .classic-grid > *,
  .booking-layout > *,
  .contact-layout > *,
  .classic-card,
  .form-card,
  .contact-panel {
    min-width: 0;
    max-width: 100%;
  }

  .classic-card p,
  .classic-card li,
  .contact-panel p,
  .contact-panel a,
  .form-card,
  .inner-title p {
    overflow-wrap: break-word;
  }
}

/* =========================================================
   v4.3 — MOBILE NAVIGATION FIX
   The dropdown used to be clipped by .header-visual's overflow:hidden,
   so only the first few links were visible on iPhone.
   ========================================================= */
@media (max-width: 860px) {
  /* Let the dropdown extend below the 190px banner instead of being cut off. */
  .header-visual {
    overflow: visible;
  }

  .menu-toggle {
    z-index: 140;
  }

  .header-nav {
    z-index: 130;
    max-height: calc(100dvh - 92px);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    box-shadow: 0 16px 42px rgba(7,31,72,.24);
  }

  /* Keep every navigation item available even on short phone screens. */
  .header-nav.open {
    display: flex;
  }
}
