/* chrome.css — shared chrome added by scripts/build.mjs on every page:
   text-size scaling, skip link, breadcrumb, prev/next pager, consent banner, chat additions,
   quote-form states, plain/legal page layout, focus + reduced-motion. Uses tokens from styles.css. */

html{font-size:calc(100% * var(--text-scale,1));}
html[data-text-scale]{scroll-behavior:auto;}

/* ---- accessibility helpers ---- */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.skip-link{position:absolute;left:12px;top:-60px;z-index:2000;background:var(--navy);color:#fff;padding:10px 16px;border-radius:10px;font-family:var(--font-head);font-weight:700;font-size:.9375rem;transition:top .15s ease;}
.skip-link:focus{top:12px;outline:3px solid var(--accent);outline-offset:2px;}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px;}
.btn:focus-visible,.chat-chip:focus-visible,.text-size-btn:focus-visible{outline-offset:2px;}
/* the header is a compact bar: let it grow with the text-size control up to 112.5%, then hold,
   so the navigation never wraps into two rows on desktop (body copy keeps scaling to 137.5%) */
.site-header .header-inner,.topbar-inner{zoom:calc(min(var(--text-scale,1),1.125) / var(--text-scale,1));}
@media (max-width:1100px){.site-header .header-inner,.topbar-inner{zoom:calc(1 / var(--text-scale,1));}}

/* ---- top bar above the header: Google "Add to Preferred Sources" pill + the real Google rating (2026-11-04).
   It scrolls away; only .site-header is sticky. ---- */
.topbar{background:#F3F6F9;border-bottom:1px solid #E4EAF0;}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;padding-block:5px;}
/* "Boaters' Preferred Service": Google-coloured, but no Google logo and no claim that Google awarded it;
   it links to the real reviews that back it up */
.pref-badge{position:relative;display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid #DADCE0;border-radius:999px;padding:4px 12px 4px 7px;font-family:var(--font-body);font-size:.75rem;font-weight:600;line-height:1.1;letter-spacing:.01em;color:#202124;white-space:nowrap;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease;}
.pref-badge::before{content:"";position:absolute;inset:auto 0 0;height:2px;background:linear-gradient(90deg,#4285F4 0 25%,#EA4335 25% 50%,#FBBC05 50% 75%,#34A853 75%);opacity:.9;}
.pref-badge:hover{border-color:#BDC1C6;box-shadow:0 1px 3px rgba(60,64,67,.18);}
.pref-badge:focus-visible{border-radius:999px;}
.pref-badge-icon{display:block;flex-shrink:0;}
.topbar-rating{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-head);font-size:.8125rem;font-weight:600;color:var(--navy);white-space:nowrap;}
.topbar-rating strong{font-weight:800;}
.topbar-stars{color:#F3BF27;letter-spacing:1px;}
.topbar-count{color:var(--gray-text);}
.topbar-rating:hover .topbar-count{color:var(--icon-blue);text-decoration:underline;}
@media (max-width:640px){
  .topbar-inner{min-height:36px;padding-block:4px;}
  .pref-badge{font-size:.71875rem;padding:4px 10px 4px 6px;gap:6px;}
  .pref-badge-icon{width:15px;height:15px;}
  .topbar-count{display:none;}
}
@media (max-width:359px){.topbar-stars{display:none;}}
.main-nav > a,.main-nav .nav-dropdown,.header-actions .phone,.header-actions .btn{white-space:nowrap;}
.main-nav a.is-ancestor{color:var(--icon-blue);}
.main-nav a[aria-current="page"]{color:var(--icon-blue);}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important;}
}

/* ---- site-wide motion (2026-11-04). script.js adds .cl-reveal/.cl-in below the fold; the hero entrance is
   CSS only (no flash before scripts run). Only `opacity`, `translate` and `scale` are animated, never
   `transform`, so components keep their own transforms and hover lifts. ---- */
@media (prefers-reduced-motion:no-preference){
  @keyframes cl-rise{from{opacity:0;translate:0 26px;}to{opacity:1;translate:none;}}
  main :has(> h1) > *{animation:cl-rise .85s cubic-bezier(.2,.7,.2,1) backwards;}
  main :has(> h1) > :nth-child(2){animation-delay:.1s;}
  main :has(> h1) > :nth-child(3){animation-delay:.2s;}
  main :has(> h1) > :nth-child(4){animation-delay:.3s;}
  main :has(> h1) > :nth-child(n+5){animation-delay:.4s;}

  .cl-reveal{opacity:0;translate:0 28px;transition:opacity .75s cubic-bezier(.2,.7,.2,1) var(--cl-d,0ms),translate .75s cubic-bezier(.2,.7,.2,1) var(--cl-d,0ms);}
  .cl-reveal.cl-zoom{translate:none;scale:.96;transition:opacity .9s ease var(--cl-d,0ms),scale 1.1s cubic-bezier(.2,.7,.2,1) var(--cl-d,0ms);}
  .cl-reveal.cl-in{opacity:1;translate:none;scale:none;}

  /* a light sweep across the main calls to action every few seconds */
  .btn-accent,.header-actions .btn-navy{position:relative;overflow:hidden;isolation:isolate;}
  .btn-accent::after,.header-actions .btn-navy::after{
    content:"";position:absolute;top:-2px;bottom:-2px;left:-60%;width:45%;z-index:-1;pointer-events:none;
    background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);
    translate:0 0;transform:skewX(-20deg);
    animation:cl-shine 6s ease-in-out 2s infinite;
  }
  .header-actions .btn-navy::after{background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);animation-delay:3.5s;}
  @keyframes cl-shine{0%{translate:0 0;}26%,100%{translate:430% 0;}}
}
.site-header{transition:box-shadow .3s ease;}
.site-header.is-scrolled{box-shadow:0 10px 28px -18px rgba(0,38,75,.38);}
.cl-num{font-variant-numeric:tabular-nums;}

/* styles.css resets list-style on ul only; every page that styles an <ol> as cards otherwise shows stray numbers */
ol[class]{list-style:none;}

/* ---- gallery switch ----
   2026-10-23: every before & after gallery is OFF until real photos replace the AI comps. Gallery markup carries
   data-gallery; the home page's "Gallery Coming Soon" stand-ins carry data-gallery-soon. To turn galleries back on,
   change this selector to [data-gallery-soon] and delete the deck-repairs rule under it. */
[data-gallery]{display:none!important;}
/* deck-repairs shares its #repairs band with the deck-layers diagram: center the diagram while its gallery is off */
.dr-results-inner:has(> [data-gallery]){grid-template-columns:minmax(0,1fr);justify-items:center;}
/* Intros whose media column is a hidden comp before/after collapse to one centred column. */
:is(.bgr-intro-inner,.bd-intro-inner,.dg-intro-inner,.drs-intro-inner,.err-intro-inner,.imr-intro-inner,.mcr-intro-inner,.mcp-intro-inner,.scn-intro-inner,.ss-intro-inner,.wcr-intro-inner,.gc-match-inner):has(> [data-gallery]){grid-template-columns:minmax(0,1fr);justify-items:center;}
:is(.bgr-intro-inner,.bd-intro-inner,.dg-intro-inner,.drs-intro-inner,.err-intro-inner,.imr-intro-inner,.mcr-intro-inner,.mcp-intro-inner,.scn-intro-inner,.ss-intro-inner,.wcr-intro-inner,.gc-match-inner):has(> [data-gallery]) > :not([data-gallery]){width:100%;max-width:920px;}
.dr-results-inner:has(> [data-gallery]) .dr-layers{padding-right:0;width:100%;max-width:1120px;}

/* ---- breadcrumb ---- */
.breadcrumb{background:var(--navy-2);color:#fff;font-size:.8125rem;font-family:var(--font-head);border-bottom:1px solid rgba(255,255,255,.08);}
.breadcrumb ol{list-style:none;margin:0;padding:10px 0;display:flex;flex-wrap:wrap;gap:4px 0;align-items:center;}
.breadcrumb li{display:flex;align-items:center;color:rgba(255,255,255,.72);min-width:0;}
.breadcrumb li+li::before{content:"\203A";margin:0 10px;color:var(--accent);font-size:1.0625rem;line-height:1;}
.breadcrumb a{color:rgba(255,255,255,.85);text-decoration:none;padding:4px 0;}
.breadcrumb a:hover{color:var(--accent);}
.breadcrumb li[aria-current="page"]{color:#fff;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60vw;}

/* ---- prev / next pager ---- */
.pager{background:var(--light-bg);border-top:1px solid rgba(0,38,75,.08);}
.pager-inner{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:center;padding-top:18px;padding-bottom:18px;}
.pager-link{display:flex;align-items:center;gap:12px;color:var(--navy);text-decoration:none;font-family:var(--font-head);font-weight:700;font-size:.9375rem;min-height:48px;border-radius:14px;padding:6px 10px;transition:background .15s ease;}
.pager-link:hover{background:var(--icon-bg);}
.pager-next{justify-self:end;text-align:right;}
.pager-text{display:flex;flex-direction:column;line-height:1.25;}
.pager-text small{font-family:var(--font-body);font-weight:500;color:var(--gray-text);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;}
.pager-arrow{font-size:1.75rem;line-height:1;color:var(--icon-blue);}
.pager-all{display:flex;flex-direction:column;align-items:center;gap:2px;font-family:var(--font-head);font-weight:700;font-size:.8125rem;color:var(--icon-blue);text-decoration:none;text-align:center;}
.pager-count{font-family:var(--font-body);font-weight:500;color:var(--gray-text);font-size:.75rem;}
@media (max-width:640px){
  .pager-inner{grid-template-columns:1fr 1fr;}
  .pager-all{grid-column:1 / -1;order:-1;}
  .pager-link{font-size:.875rem;}
}

/* ---- text-size controls (above the chat avatar) ---- */
.text-size{display:flex;gap:6px;background:#fff;border:1px solid rgba(0,38,75,.12);border-radius:999px;padding:4px;box-shadow:0 6px 18px rgba(0,38,75,.16);}
.text-size-btn{width:34px;height:34px;border-radius:50%;background:var(--light-bg);color:var(--navy);font-family:var(--font-head);font-weight:800;font-size:1.125rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s ease,color .15s ease;}
.text-size-btn:hover{background:var(--icon-bg);}
.text-size-btn[disabled]{opacity:.35;cursor:not-allowed;}
.text-size-btn[disabled]:hover{background:var(--light-bg);}
.chat-widget{max-width:calc(100vw - 24px);}

/* ---- consent banner ---- */
.consent{position:fixed;left:16px;bottom:16px;z-index:998;max-width:min(480px,calc(100vw - 32px));}
.consent[hidden]{display:none;}
.consent-card{background:#fff;color:var(--navy);border-radius:18px;box-shadow:0 20px 50px rgba(0,28,59,.28);border:1px solid rgba(0,38,75,.08);padding:18px 18px 16px;display:flex;flex-direction:column;gap:12px;}
.consent-text strong{font-family:var(--font-head);font-size:.9375rem;display:block;margin-bottom:4px;}
.consent-text p{margin:0;font-size:.8125rem;line-height:1.5;color:var(--gray-text);}
.consent-text a{color:var(--icon-blue);}
.consent-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.consent-actions .btn{padding:9px 14px;font-size:.8125rem;min-height:40px;}
.btn-outline{background:transparent;color:var(--navy);border:1.5px solid rgba(0,38,75,.25);}
.btn-outline:hover{background:var(--light-bg);}
.consent-link{background:none;border:0;color:var(--icon-blue);font-family:var(--font-head);font-weight:700;font-size:.8125rem;padding:8px 4px;cursor:pointer;text-decoration:underline;}
.consent-options{display:flex;flex-direction:column;gap:10px;border-top:1px solid rgba(0,38,75,.08);padding-top:12px;}
.consent-options[hidden]{display:none;}
.consent-option{display:flex;gap:10px;align-items:flex-start;font-size:.8125rem;line-height:1.45;color:var(--navy);cursor:pointer;}
.consent-option input{margin-top:3px;width:18px;height:18px;flex-shrink:0;accent-color:var(--navy);}
.consent-options .btn{align-self:flex-start;}
.consent-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:100%;min-height:200px;padding:20px;text-align:center;background:var(--light-bg);border-radius:inherit;}
.consent-placeholder p{margin:0;font-size:.8125rem;color:var(--gray-text);max-width:34ch;}
.consent-placeholder-link{font-size:.8125rem;color:var(--icon-blue);}
.consent-short,.consent-mini{display:none;}
.consent:not([hidden]){animation:consent-in .45s cubic-bezier(.2,.8,.2,1) both;}
@keyframes consent-in{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}
@media (max-width:640px){
  /* phones: a slim one-row bar beside the chat button instead of the full card (2026-11-04) */
  .consent{left:10px;right:88px;bottom:20px;max-width:none;}
  .consent:not([hidden]){animation-delay:1.2s;}
  .chat-widget.open~.consent{display:none;}
  .consent-card{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:6px 6px 6px 12px;border-radius:16px;box-shadow:0 10px 28px rgba(0,28,59,.22);}
  .consent-text{flex:1 1 auto;min-width:0;}
  .consent-text strong,.consent-text p{display:none;}
  .consent-text .consent-short{display:block;font-size:.75rem;line-height:1.3;font-weight:600;color:var(--navy);}
  .consent-full,.consent-link{display:none;}
  .consent-mini{display:inline;}
  .consent-actions{gap:6px;flex-wrap:nowrap;}
  .consent-actions .btn{padding:6px 10px;font-size:.75rem;min-height:34px;}
  /* Customize (or the footer's Cookie Preferences) opens the full card again */
  .consent:has(.consent-options:not([hidden])){right:12px;bottom:12px;z-index:1000;}
  .consent:has(.consent-options:not([hidden])) .consent-card{flex-direction:column;align-items:stretch;padding:14px;}
  .consent:has(.consent-options:not([hidden])) .consent-text strong{display:block;}
  .consent:has(.consent-options:not([hidden])) .consent-short{display:none;}
}
@media (max-width:374px){
  .consent-opt{display:none;}
  .consent-short a{text-transform:capitalize;}
}

/* ---- chat widget additions ---- */
.chat-attach{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--gray-text);cursor:pointer;flex-shrink:0;transition:background .15s ease,color .15s ease;}
.chat-attach:hover{background:var(--icon-bg);color:var(--navy);}
.chat-attach:focus-within{outline:3px solid var(--accent);outline-offset:2px;}
.chat-disclosure{margin:0;padding:6px 14px 10px;font-size:.6875rem;line-height:1.4;color:var(--gray-text);background:#fff;border-top:1px solid rgba(0,38,75,.06);}
.chat-disclosure a{color:var(--icon-blue);}
.chat-msg a{color:var(--icon-blue);font-weight:600;text-decoration:underline;text-underline-offset:2px;}
.chat-msg-user a{color:var(--accent-btn);}
.chat-msg p{margin:0 0 6px;}
.chat-msg p:last-child{margin-bottom:0;}
.chat-msg-system{align-self:center;font-size:.75rem;color:var(--gray-text);background:transparent;box-shadow:none;padding:2px 8px;text-align:center;}
.chat-msg-error{align-self:flex-start;background:#FFF1EE;color:#8A2E1F;border:1px solid #F4C3B8;}
.chat-links{display:flex;flex-direction:column;gap:6px;align-self:flex-start;max-width:82%;}
.chat-link{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid rgba(0,38,75,.14);border-radius:12px;padding:9px 12px;color:var(--navy);font-family:var(--font-head);font-weight:700;font-size:.8125rem;text-decoration:none;box-shadow:0 1px 4px rgba(0,38,75,.08);}
.chat-link:hover{border-color:var(--accent);background:var(--icon-bg);}
.chat-link::after{content:"\203A";margin-left:auto;color:var(--icon-blue);font-size:1.125rem;line-height:1;}
.chat-photos{display:flex;flex-wrap:wrap;gap:6px;align-self:flex-end;max-width:82%;}
.chat-photos img{width:72px;height:72px;object-fit:cover;border-radius:10px;border:2px solid var(--navy);}
.chat-card{align-self:flex-start;max-width:92%;background:#fff;border:1px solid rgba(0,38,75,.12);border-radius:14px;padding:12px 14px;font-size:.8125rem;box-shadow:0 1px 4px rgba(0,38,75,.08);}
.chat-card dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;}
.chat-card dt{color:var(--gray-text);font-weight:600;}
.chat-card dd{margin:0;color:var(--navy);overflow-wrap:anywhere;}
.chat-chip[disabled]{opacity:.5;cursor:default;}
.chat-chip-primary{background:var(--navy);color:#fff;border-color:var(--navy);}
.chat-chip-primary:hover{background:var(--navy-2);}
.chat-input-row input:disabled{opacity:.6;}
.chat-messages{scroll-behavior:smooth;overscroll-behavior:contain;}

/* ---- chat quote flow: progress bar + quick-fill widgets (script.js WIDGETS, lib/chat/quoteflow.ts) ---- */
.chat-panel.chat-panel-quoting{width:min(400px, calc(100vw - 40px));height:min(640px, calc(100vh - 120px));}
.chat-progress{display:flex;align-items:center;gap:10px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,38,75,.08);flex-shrink:0;}
.chat-progress-track{flex:1;height:6px;border-radius:99px;background:var(--icon-bg);overflow:hidden;}
.chat-progress-track span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--icon-blue),var(--accent));transition:width .35s ease;}
.chat-progress em{font-style:normal;font-size:.6875rem;font-weight:600;color:var(--gray-text);white-space:nowrap;}
.cq{align-self:stretch;display:flex;flex-direction:column;gap:9px;background:#fff;border:1px solid rgba(0,38,75,.12);border-radius:14px;padding:12px;box-shadow:0 1px 4px rgba(0,38,75,.08);animation:cq-in .2s ease;}
@keyframes cq-in{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.cq-label{margin:2px 0 -3px;font-size:.6563rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gray-text);}
.cq-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;}
.cq-tile{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:5px;min-height:76px;padding:9px 4px 8px;border:1.5px solid rgba(0,38,75,.13);border-radius:12px;background:#fff;color:var(--navy);text-align:center;font-family:var(--font-body);cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .1s ease;}
.cq-tile svg{color:var(--icon-blue);flex-shrink:0;}
.cq-tile strong{font-family:var(--font-head);font-size:.7188rem;font-weight:700;line-height:1.2;}
.cq-tile:hover{border-color:var(--accent);background:var(--icon-bg);}
.cq-tile:active,.cq-size:active{transform:scale(.97);}
.cq-pills{display:flex;flex-wrap:wrap;gap:6px;}
.cq-pill{padding:6px 11px;border:1.5px solid rgba(0,38,75,.16);border-radius:999px;background:#fff;color:var(--navy);font-family:var(--font-body);font-size:.7813rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;}
.cq-pill:hover{border-color:var(--accent);}
.cq-pill[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff;}
.cq-row{display:grid;grid-template-columns:1fr 92px;gap:7px;}
.cq input:not([type=file]),.cq select{width:100%;min-height:40px;padding:8px 10px;border:1.5px solid rgba(0,38,75,.16);border-radius:10px;background:#fff;color:var(--navy);font-family:var(--font-body);font-size:16px;}
.cq input:focus,.cq select:focus{outline:none;border-color:var(--icon-blue);box-shadow:0 0 0 3px rgba(28,148,220,.18);}
.cq-actions{display:flex;align-items:center;gap:12px;margin-top:2px;}
.cq-next{min-height:38px;padding:8px 18px;border:0;border-radius:999px;background:var(--navy);color:#fff;font-family:var(--font-head);font-size:.8125rem;font-weight:700;cursor:pointer;}
.cq-next:hover{background:var(--navy-2);}
.cq-next:disabled{opacity:.4;cursor:default;}
.cq-skip{padding:6px 2px;border:0;background:none;color:var(--icon-blue);font-family:var(--font-body);font-size:.7813rem;font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer;}
.cq-error{margin:0;font-size:.7813rem;color:#8A2E1F;}
.cq-error[hidden]{display:none;}
.cq-sizes{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;}
.cq-size{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;min-height:74px;padding:8px 4px;border:1.5px solid rgba(0,38,75,.13);border-radius:12px;background:#fff;color:var(--icon-blue);cursor:pointer;transition:border-color .15s ease,background .15s ease;}
.cq-size span{color:var(--navy);font-family:var(--font-body);font-size:.7188rem;font-weight:600;line-height:1.2;}
.cq-size:hover{border-color:var(--accent);background:var(--icon-bg);}
.cq-boat-wrap{display:flex;justify-content:center;}
.cq-boat{width:100%;max-width:190px;height:auto;}
.cq-zone{fill:#EEF6FC;stroke:var(--navy);stroke-width:1.6;cursor:pointer;transition:fill .15s ease;}
.cq-zone:hover{fill:#CFE7F8;}
.cq-zone:focus{outline:none;}
.cq-zone:focus-visible{stroke:var(--icon-blue);stroke-width:3;}
.cq-zone[aria-pressed="true"]{fill:var(--accent);}
.cq-boat text{font-family:var(--font-body);font-size:10.5px;font-weight:700;fill:var(--navy);pointer-events:none;}
.cq-photo-btns{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;}
.cq-photo{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;border:1.5px dashed rgba(0,38,75,.28);border-radius:12px;background:var(--light-bg);color:var(--navy);font-family:var(--font-head);font-size:.8125rem;font-weight:700;cursor:pointer;transition:border-color .15s ease,background .15s ease;}
.cq-photo svg{color:var(--icon-blue);}
.cq-photo:hover{border-color:var(--icon-blue);background:var(--icon-bg);}
.cq-photo:focus-within{outline:3px solid var(--accent);outline-offset:2px;}
.cq-tile:focus-visible,.cq-size:focus-visible,.cq-pill:focus-visible,.cq-next:focus-visible,.cq-skip:focus-visible{outline:3px solid var(--accent);outline-offset:2px;}
@media (prefers-reduced-motion:reduce){.cq{animation:none;}.chat-progress-track span{transition:none;}}

@media (max-width:640px){
  .chat-widget{right:12px;bottom:12px;gap:10px;}
  .chat-widget.open{top:0;left:0;right:0;bottom:0;max-width:none;align-items:stretch;gap:0;}
  .chat-widget.open .chat-panel{width:100%;height:100dvh;max-height:none;border-radius:0;animation:none;}
  .chat-widget.open .chat-toggle,.chat-widget.open .text-size{display:none;}
  .chat-panel-header{padding-top:calc(14px + env(safe-area-inset-top));}
  .chat-input-row{padding-bottom:calc(12px + env(safe-area-inset-bottom));}
  .chat-msg{max-width:88%;}
}
@media (max-width:640px) and (orientation:landscape){
  .chat-widget.open .chat-panel-header{padding-top:10px;padding-bottom:8px;}
  .chat-disclosure{display:none;}
}

/* ---- quote form states ---- */
.field-photos{display:flex;flex-direction:column;gap:8px;}
.field-photos-label{display:flex;align-items:center;gap:10px;font-family:var(--font-head);font-weight:700;font-size:.875rem;color:var(--navy);cursor:pointer;flex-wrap:wrap;}
.field-photos-label small{font-family:var(--font-body);font-weight:500;color:var(--gray-text);font-size:.75rem;}
.field-photos input[type="file"]{font-size:.8125rem;color:var(--gray-text);max-width:100%;}
.photo-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px;}
.photo-list:empty{display:none;}
.photo-list li{display:flex;align-items:center;gap:8px;background:var(--light-bg);border:1px solid rgba(0,38,75,.1);border-radius:10px;padding:4px 8px 4px 4px;font-size:.75rem;color:var(--navy);max-width:100%;}
.photo-list img{width:40px;height:40px;object-fit:cover;border-radius:7px;flex-shrink:0;}
.photo-list li.is-error{background:#FFF1EE;border-color:#F4C3B8;color:#8A2E1F;}
.photo-list button{background:none;border:0;color:var(--gray-text);font-size:1rem;line-height:1;padding:4px;cursor:pointer;}
.photo-list button:hover{color:#8A2E1F;}
.hp-field{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;}
.cf-turnstile{min-height:65px;}
.cf-turnstile:empty{display:none;}
.form-status{margin:0;font-size:.8125rem;line-height:1.45;color:var(--gray-text);}
.form-status:empty{display:none;}
.form-status.is-error{color:#8A2E1F;background:#FFF1EE;border:1px solid #F4C3B8;border-radius:10px;padding:10px 12px;}
.form-status.is-info{color:var(--navy);}
.contact-submit[aria-busy="true"]{opacity:.75;cursor:progress;}
.contact-submit[aria-busy="true"] .contact-submit-label::after{content:"\2026";}
.form-success{display:block;background:#EAF8EF;border:1px solid #BFE8CC;color:#114D2C;border-radius:14px;padding:14px 16px;font-size:.875rem;line-height:1.5;}
.form-success[hidden]{display:none;}
.form-success strong{font-family:var(--font-head);display:block;margin-bottom:4px;}
.form-success p{margin:0;}
.form-success a{color:inherit;font-weight:700;}
.field.is-invalid input,.field.is-invalid select,.field.is-invalid textarea{box-shadow:0 0 0 2px #E85C4A inset;}
.field-error{font-size:.75rem;color:#8A2E1F;margin:-6px 0 0 4px;}
.field-error:empty{display:none;}

/* ---- plain pages (legal, sitemap, 404) ---- */
.page-plain{padding:48px 0 72px;background:#fff;color:var(--navy);}
.page-plain h1{font-family:var(--font-head);font-size:clamp(1.75rem,3.4vw,2.625rem);line-height:1.15;margin:8px 0 18px;}
.page-plain .page-updated{color:var(--gray-text);font-size:.875rem;margin-bottom:28px;}
.legal-article{max-width:76ch;font-size:1rem;line-height:1.7;color:#1f3550;}
.legal-article h2{font-family:var(--font-head);font-size:1.375rem;margin:40px 0 12px;color:var(--navy);scroll-margin-top:90px;}
.legal-article h3{font-family:var(--font-head);font-size:1.0625rem;margin:24px 0 8px;color:var(--navy);}
.legal-article p,.legal-article li{margin:0 0 12px;}
.legal-article ul,.legal-article ol{padding-left:22px;margin:0 0 16px;}
.legal-article ul{list-style:disc;}
.legal-article ol{list-style:decimal;}
.legal-article table{border-collapse:collapse;width:100%;font-size:.875rem;margin:12px 0 20px;}
@media (max-width:760px){.legal-article table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;}.legal-article table td,.legal-article table th{white-space:normal;min-width:140px;}}
.legal-article th,.legal-article td{border:1px solid rgba(0,38,75,.14);padding:8px 10px;text-align:left;vertical-align:top;}
.legal-article th{background:var(--light-bg);font-family:var(--font-head);}
.legal-article a{color:var(--icon-blue);}
.legal-note{background:#FFF7E6;border:1px solid #F3D9A4;border-radius:12px;padding:12px 14px;font-size:.875rem;color:#5B4200;margin:0 0 24px;}
.legal-toc{background:var(--light-bg);border-radius:14px;padding:16px 20px;margin:0 0 28px;font-size:.875rem;}
.legal-toc ol{margin:0;padding-left:20px;columns:2;column-gap:28px;}
.legal-toc li{margin:0 0 6px;break-inside:avoid;}
@media (max-width:640px){.legal-toc ol{columns:1;}}
.sm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:28px 40px;margin-top:28px;}
.sm-group h2{font-family:var(--font-head);font-size:1.0625rem;margin:0 0 10px;color:var(--navy);border-bottom:2px solid var(--accent);padding-bottom:6px;}
.sm-group ul{list-style:none;margin:0;padding:0;}
.sm-group li{padding:4px 0;padding-left:calc(var(--d,0) * 16px);font-size:.9375rem;}
.sm-group a{color:#1f3550;text-decoration:none;}
.sm-group a:hover{color:var(--icon-blue);text-decoration:underline;}
.not-found{text-align:center;padding:72px 0 96px;}
.not-found p{color:var(--gray-text);max-width:46ch;margin:0 auto 24px;}
.not-found .btn{margin:4px;}

/* ==========================================================================
   Footer (partials/footer.html), 1:1 with "Captain Levi's Nautical Footer
   Mockup" at 1536px. The comp is 2172px wide, so 1 comp px = 0.707 page px.
   ft-palms.jpg / ft-boat.jpg are the comp's photo with the copy painted out;
   ft-wave.svg is the comp's three ribbons traced; the wordmark is a matted
   comp crop; the avatar is the site's own Captain Levi (captain-chat.png).
   Desktop >=1280, tablet 768-1279, phone <768.
   ========================================================================== */
.ft{position:relative;overflow:hidden;color:#fff;background:#001e3a;}
.ft-top{position:relative;background:linear-gradient(180deg,#00223f 0%,#001f3c 60%,#001e3a 100%);}
.ft-art{position:absolute;inset:0;pointer-events:none;}
.ft-art img{position:absolute;top:0;height:95.3%;width:auto;max-width:none;}
.ft-art-palms{left:0;
  -webkit-mask-image:linear-gradient(90deg,#000 72%,transparent 100%);mask-image:linear-gradient(90deg,#000 72%,transparent 100%);}
.ft-art-boat{right:0;
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 19%);mask-image:linear-gradient(90deg,transparent 0%,#000 19%);}

.ft-main{
  position:relative;z-index:1;
  max-width:1536px;margin-inline:auto;
  display:grid;
  grid-template-columns:348px 183px 217px 288px minmax(0,1fr);
  align-items:start;
  padding:62px 0 0 clamp(32px,calc(50vw - 602px),166px);
  min-height:382px;
}
.ft-col{position:relative;min-width:0;}
.ft-nav,.ft-contact{min-height:310px;margin-top:3px;padding-left:27px;border-left:1px solid rgba(132,163,196,.32);}

.ft-logo{display:flex;align-items:flex-start;width:fit-content;margin-bottom:13.8px;}
.ft-logo-avatar{
  flex:none;width:60px;height:60px;border-radius:50%;margin-top:3.9px;
  background:#fff;overflow:hidden;
  box-shadow:0 0 0 1.5px rgba(255,255,255,.85),0 6px 16px -6px rgba(0,0,0,.6);
}
.ft-logo-avatar img{width:100%;height:100%;object-fit:cover;}
.ft-logo-word{width:184px;height:auto;margin:-3px 0 0 11px;}
.ft-brand-title{
  font-family:var(--font-head);font-weight:700;color:#fff;
  font-size:1.125rem;line-height:1.295;
  margin:0 0 9.1px;max-width:290px;
}
.ft-brand-sub{font-size:.8875rem;line-height:1.31;color:#a6bdd3;margin:0 0 31px;max-width:288px;}
.ft-trust{list-style:none;margin:0 0 0 -6px;padding:0;display:flex;flex-wrap:wrap;row-gap:14px;width:max-content;max-width:calc(100% - 24px);}
.ft-trust li{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:0 13px;border-left:1px solid rgba(132,163,196,.28);
  font-family:var(--font-head);font-weight:500;font-size:.7rem;line-height:1.33;color:#fff;
}
.ft-trust li:first-child{border-left:0;padding-left:0;}
.ft-trust li:last-child{padding-right:0;}
.ft-trust svg{height:25.5px;width:auto;color:#39c4f8;margin-bottom:8.5px;}

.ft-title{
  font-family:var(--font-head);font-weight:700;font-size:1.1125rem;line-height:1.2;
  color:#fff;margin:1.3px 0 24px;position:relative;
}
.ft-title::after{content:"";position:absolute;left:0;bottom:-11px;width:29px;height:2px;border-radius:2px;background:#39b6da;}
.ft-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;}
.ft-links li{display:flex;}
.ft-links-quick{gap:15.3px;padding-top:15.1px;}
.ft-links-services{gap:13px;padding-top:11.6px;}
.ft-links a{
  position:relative;display:inline-flex;align-items:center;
  padding-left:25px;font-size:.8125rem;line-height:1.2;color:#e9ecef;
  transition:color .15s ease;
}
.ft-links a::before{
  content:"";position:absolute;left:0;top:50%;width:6px;height:6px;
  border-right:2px solid #36cef7;border-bottom:2px solid #36cef7;
  transform:translateY(-50%) rotate(-45deg);
}
.ft-links a:hover{color:var(--accent);}

.ft-contact-list{list-style:none;margin:0 0 19.3px;padding:2px 0 0;display:flex;flex-direction:column;gap:12px;}
.ft-contact-list li:nth-child(2){margin-top:-3.8px;}
.ft-contact-list li:nth-child(3){margin-top:6.2px;}
.ft-contact-list li:nth-child(4){margin-top:4.1px;}
.ft-contact-list li:nth-child(3) .ft-contact-icon{margin-top:-4px;}
.ft-contact-list li:nth-child(4) .ft-contact-icon{margin-top:-5px;}
.ft-contact-list li:nth-child(3) small:first-of-type{margin-top:1.8px;}
.ft-contact-list li{display:flex;align-items:flex-start;gap:12px;}
.ft-contact-list li:first-child,.ft-contact-list li:nth-child(2){align-items:center;}
.ft-contact-icon{
  flex:none;width:30px;height:30px;border-radius:50%;
  border:1.5px solid #20afdb;color:#cdecfa;
  display:flex;align-items:center;justify-content:center;
}
.ft-contact-icon svg{width:15px;height:15px;}
.ft-contact-list div{display:flex;flex-direction:column;}
.ft-contact-strong{font-weight:600;font-size:.83rem;line-height:1.3;color:#fff;}
a.ft-contact-strong:hover{color:var(--accent);}
.ft-contact-list small{font-size:.75rem;line-height:1.3;color:#a6bdd3;}
.ft-contact-list small.ft-contact-note{margin-top:4px;}
.ft-quote{
  display:inline-flex;align-items:center;gap:12px;
  height:42px;margin-left:-4px;padding:0 19px 0 20px;border-radius:999px;
  background:linear-gradient(180deg,#5bd3fd 0%,#45c8fc 100%);
  color:#06223f;font-family:var(--font-head);font-weight:700;font-size:.9rem;
  box-shadow:0 8px 18px -10px rgba(69,200,252,.7);
  transition:filter .15s ease,transform .15s ease;
}
.ft-quote:hover{filter:brightness(1.07);transform:translateY(-1px);}

.ft-tagline{
  position:relative;margin:1px 0 0 1px;width:max-content;
  font-family:var(--font-script);font-weight:700;font-size:2.4rem;line-height:.98;color:#fff;
  transform:rotate(-8deg);transform-origin:left top;
}
.ft-tagline span{display:block;}
.ft-tagline span + span{margin-left:2px;}
.ft-tagline svg{display:block;width:146px;height:16px;margin:3px 0 0 4px;color:#36c3f2;}

.ft-wave{position:relative;z-index:1;display:block;width:100%;height:clamp(26px,4.14vw,90px);margin-top:-1px;}

.ft-bottom{
  max-width:1536px;margin-inline:auto;
  display:flex;align-items:center;gap:20px;
  padding:0 37px 15px 44px;min-height:66.5px;
}
.ft-copyright{margin:0;font-size:.875rem;color:#a5bbd0;}
/* The © is the staff sign-in (/app): no visual hint, it reads as plain text. */
.ft-staff{color:inherit;text-decoration:none;cursor:text;}
.ft-legal{display:flex;align-items:center;flex-wrap:wrap;margin-left:auto;margin-right:66px;}
.ft-legal a,.ft-legal-btn{
  font-size:.78rem;color:#a3b7cc;padding:0 14px;line-height:1.5;
  border-left:1px solid #158cba;transition:color .15s ease;
}
.ft-legal > :first-child{border-left:0;padding-left:0;}
.ft-legal > :last-child{padding-right:0;}
.ft-legal-btn{background:none;border-top:0;border-right:0;border-bottom:0;font-family:inherit;cursor:pointer;}
.ft-legal a:hover,.ft-legal-btn:hover{color:#fff;}
.ft-social{display:flex;gap:10px;}
.ft-social-link{
  width:34px;height:34px;border-radius:50%;border:1.5px solid #18a2d3;color:#fff;
  display:flex;align-items:center;justify-content:center;transition:background .15s ease;
}
.ft-social-link svg{width:18px;height:18px;}
.ft-social-link:hover{background:rgba(24,162,211,.25);}

/* ---- tablet: brand + tagline over the boat, then the three link columns ---- */
@media (max-width:1279px){
  .ft-art img{height:430px;}
  .ft-art-palms{
    -webkit-mask-image:linear-gradient(90deg,#000 60%,transparent 100%),linear-gradient(180deg,#000 70%,transparent 100%);
    -webkit-mask-composite:source-in;
    mask-image:linear-gradient(90deg,#000 60%,transparent 100%),linear-gradient(180deg,#000 70%,transparent 100%);
    mask-composite:intersect;
  }
  .ft-art-boat{
    -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 30%),linear-gradient(180deg,#000 72%,transparent 100%);
    -webkit-mask-composite:source-in;
    mask-image:linear-gradient(90deg,transparent 0%,#000 30%),linear-gradient(180deg,#000 72%,transparent 100%);
    mask-composite:intersect;
  }
  .ft-main{
    grid-template-columns:repeat(3,minmax(0,1fr));
    padding:56px clamp(24px,5vw,56px) 34px;
    row-gap:44px;min-height:0;
  }
  .ft-brand{grid-column:1 / 3;grid-row:1;}
  .ft-tagline{grid-column:3;grid-row:1;justify-self:end;align-self:start;margin:18px 4% 0 0;transform-origin:center;}
  .ft-nav,.ft-contact{grid-row:2;min-height:0;margin-top:0;}
  .ft-nav:first-of-type{border-left:0;padding-left:0;}
  .ft-bottom{padding-inline:clamp(24px,5vw,56px);flex-wrap:wrap;justify-content:center;column-gap:24px;row-gap:10px;padding-block:16px;}
  .ft-legal{margin:0;justify-content:center;}
}
@media (max-width:1023px){
  .ft-main{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
  .ft-brand{grid-column:1 / -1;}
  .ft-tagline{position:absolute;grid-column:auto;grid-row:auto;top:58px;right:7%;margin:0;font-size:2.1rem;transform-origin:left top;}
  .ft-contact{grid-column:1 / -1;grid-row:3;border-left:0;padding-left:0;}
  .ft-contact-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;}
  .ft-contact-list li:nth-child(n){margin-top:0;}
  .ft-contact-list li:nth-child(n) .ft-contact-icon{margin-top:0;}
}

/* ---- phone: the boat photo becomes a band at the top with the tagline on it ---- */
@media (max-width:767px){
  .ft-art-palms{display:none;}
  .ft-art-boat{
    top:0;right:0;width:100%;height:232px;object-fit:cover;object-position:78% 40%;
    -webkit-mask-image:linear-gradient(180deg,#000 55%,transparent 100%);mask-image:linear-gradient(180deg,#000 55%,transparent 100%);
  }
  .ft-main{grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:214px 20px 30px;row-gap:34px;column-gap:16px;}
  .ft-tagline{top:34px;left:20px;right:auto;font-size:2rem;text-shadow:0 2px 12px rgba(0,20,40,.55);}
  .ft-logo{margin-bottom:18px;}
  .ft-brand-title{max-width:none;}
  .ft-brand-sub{max-width:none;margin-bottom:26px;}
  .ft-trust{width:auto;margin-left:0;justify-content:space-between;}
  .ft-trust li{flex:1 1 0;padding:0 6px;}
  .ft-trust li:first-child{padding-left:0;}
  .ft-nav{grid-row:2;padding-left:0;border-left:0;}
  .ft-nav + .ft-nav{padding-left:16px;border-left:1px solid rgba(132,163,196,.32);}
  .ft-links-quick,.ft-links-services{gap:4px;padding-top:0;}
  .ft-links a{min-height:34px;padding-left:20px;}
  .ft-contact-list{grid-template-columns:minmax(0,1fr);gap:14px;}
  .ft-quote{width:100%;justify-content:center;height:48px;}
  .ft-bottom{flex-direction:column;padding:18px 20px 22px;text-align:center;}
  .ft-copyright{font-size:.8125rem;}
  .ft-legal{row-gap:4px;}
  .ft-legal a,.ft-legal-btn{padding:8px 10px;}
  .ft-social-link{width:42px;height:42px;}
}
@media (max-width:359px){
  .ft-main{grid-template-columns:minmax(0,1fr);}
  .ft-nav + .ft-nav{grid-row:3;padding-left:0;border-left:0;}
  .ft-contact{grid-row:4;}
  .ft-trust{flex-wrap:wrap;row-gap:14px;}
  .ft-trust li{flex:1 1 40%;border-left:0;}
}
