/*
Theme Name: GLM Modern Heritage
Theme URI: https://www.greatlakesmarine.net
Author: Great Lakes Marine
Description: Modern heritage design for Great Lakes Marine, built from the approved site preview. Child theme of Twenty Twenty-Four. Palette and type taken directly from the preview design tokens.
Template: twentytwentyfour
Version: 0.12.67
Text Domain: glm-modern-heritage
*/

:root{
  --glm-navy:#0a2a4a;
  --glm-navy-deep:#061c33;
  --glm-navy-band:#0d3055;
  --glm-ink:#0b2239;
  --glm-ink-soft:#2e4c66;
  --glm-muted:#42607a;
  --glm-lake:#0f6da8;
  --glm-lake-bright:#35a9e1;
  --glm-gold:#e8a33d;
  --glm-surface:#fbf7ec;
  --glm-bg:#c7d8e8;
}

html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }
body{
  background-color:#c7d8e8;
  background-image:url('assets/chart-navy.png');
  background-size:1150px auto;
  background-position:center top;
  color:var(--glm-ink);
  line-height:1.55;
}

/* Header band */
.glm-header{ background:var(--glm-surface); color:var(--glm-ink); }
.glm-header a{ color:var(--glm-ink-soft); }

/* Footer band */
.glm-footer{ background:var(--glm-navy-deep); color:#c3d8ea; }
.glm-footer a{ color:#eaf3fa; }

/* Buttons */
.wp-block-button__link{ border-radius:4px; }

/* Nautical chart bands (Lake Michigan chart, from the preview) */
.glm-band-chart{
  background-color:#bcd3e5;
  background-image:url('assets/chart-navy.png'),linear-gradient(180deg,#d9e8f2,#bcd3e5);
  background-size:1150px auto,cover;
  background-position:center top,center;
}
.glm-band-sand{
  background-color:#e9d8b2;
  background-image:url('assets/chart-navy.png'),linear-gradient(180deg,#f4ead0,#e9d8b2);
  background-size:1150px auto,cover;
  background-position:center top,center;
}
.glm-band-chart-navy{
  background-color:var(--glm-navy-band);
  background-image:url('assets/chart-white.png'),linear-gradient(160deg,#0d3055,#0a2a4a 55%,#061c33);
  background-size:1150px auto,cover;
  background-position:center top,center;
  color:#eaf3fa;
}
.glm-band-chart-navy h1,.glm-band-chart-navy h2,.glm-band-chart-navy h3{ color:#eaf3fa; }

/* Boat grid cards (Boats for Sale, Cobalt grid) */
.glm-boat-card{ position:relative; background:var(--glm-surface); border:1px solid #b4cbdc; border-radius:14px; padding:0; overflow:hidden; box-shadow:0 18px 40px -18px rgba(6,28,51,.35); display:flex; flex-direction:column; }
.wp-block-post-template .glm-boat-card{ height:100%; box-sizing:border-box; }
.glm-boat-card .wp-block-post-featured-image{ margin:0; background:#fff; }
.glm-boat-card .wp-block-post-featured-image img{ border-radius:0; display:block; }
.glm-boat-card .glm-card-photo{ margin:0; background:#fff; }
.glm-tag{ position:absolute; top:14px; left:14px; z-index:2; background:var(--glm-lake); color:#fff; font-size:.7rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; padding:6px 11px; border-radius:999px; }
.glm-tag-used{ background:var(--glm-navy); }
.glm-tag-pending{ background:#b3541e; }
.glm-tag-sold{ background:var(--glm-navy-deep); }
/* Sold drama (0.12.44, owner request): a sold boat's photo is greyed out with
   a large diagonal SOLD band across it, replacing the small corner tag. */
.glm-boat-card:has(.glm-tag-sold) .glm-tag{ display:none; }
.glm-boat-card:has(.glm-tag-sold) .wp-block-post-featured-image,
.glm-boat-card:has(.glm-tag-sold) .glm-card-photo{ position:relative; display:block; overflow:hidden; }
.glm-boat-card:has(.glm-tag-sold) .wp-block-post-featured-image img,
.glm-boat-card:has(.glm-tag-sold) .glm-card-photo img{ filter:grayscale(1) brightness(.93); }
.glm-boat-card:has(.glm-tag-sold) .wp-block-post-featured-image::after,
.glm-boat-card:has(.glm-tag-sold) .glm-card-photo::after{ content:"SOLD"; position:absolute; top:50%; left:50%; width:150%; transform:translate(-50%,-50%) rotate(-16deg); background:#a41623; color:#fff; text-align:center; font:800 1.9rem 'Libre Franklin',sans-serif; letter-spacing:.35em; text-indent:.35em; padding:.3em 0; box-shadow:0 10px 28px rgba(6,28,51,.45); z-index:3; pointer-events:none; }
.glm-gallery.is-sold .glm-gallery-main{ filter:grayscale(1) brightness(.93); }
.glm-gallery.is-sold .glm-thumb img{ filter:grayscale(1); }
.glm-sold-banner{ position:absolute; top:50%; left:50%; width:150%; transform:translate(-50%,-50%) rotate(-16deg); background:#a41623; color:#fff; text-align:center; font:800 3rem 'Libre Franklin',sans-serif; letter-spacing:.35em; text-indent:.35em; text-transform:uppercase; padding:.25em 0; box-shadow:0 12px 32px rgba(6,28,51,.45); z-index:2; pointer-events:none; }
@media (max-width:781px){ .glm-sold-banner{ font-size:2rem; } .glm-boat-card:has(.glm-tag-sold) .wp-block-post-featured-image::after,.glm-boat-card:has(.glm-tag-sold) .glm-card-photo::after{ font-size:1.5rem; } }
.glm-boat-card h3{ font-size:1.28rem; font-weight:800; margin:20px 24px 6px; }
.glm-boat-card h3 a{ color:var(--glm-ink); text-decoration:none; }
.glm-boat-line{ color:var(--glm-ink-soft); font-weight:500; font-size:.94rem; margin:0 24px 16px; }
.glm-boat-specs{ display:flex; border-top:1px solid #c9d6e2; border-bottom:1px solid #c9d6e2; padding:10px 0; margin:0 24px 16px; }
.glm-boat-specs div{ flex:1; text-align:center; padding:0 4px; }
.glm-boat-specs div + div{ border-left:1px solid #c9d6e2; }
.glm-boat-specs strong{ display:block; font-size:.95rem; font-weight:800; color:var(--glm-ink); }
.glm-boat-specs span{ font-size:.68rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--glm-ink-soft); }
.glm-price-row{ margin:auto 24px 0; }
.glm-msrp{ font-size:.9rem; color:var(--glm-ink-soft); font-weight:500; }
.glm-msrp strong{ color:var(--glm-ink); font-size:1.02rem; }
.glm-our-price{ font-size:1.5rem; font-weight:900; color:var(--glm-ink); line-height:1.15; }
.glm-our-price small{ display:block; font-size:.72rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--glm-ink-soft); margin-bottom:2px; }
.glm-pending-price{ font-size:1.3rem; font-weight:900; color:#b3541e; }
.glm-sold-price{ font-size:1.3rem; font-weight:900; color:var(--glm-navy); }
.glm-ask-line{ display:flex; align-items:baseline; gap:10px; margin-top:2px; }
.glm-ask-label{ font-size:.9rem; font-weight:600; color:var(--glm-ink-soft); }
.glm-ask{ font-size:1.45rem; font-weight:900; color:var(--glm-lake); border-bottom:2px solid #cfe8f5; }
.glm-boat-card .glm-view-boat{ margin:14px 24px 24px; color:var(--glm-ink); font-weight:700; }
.glm-more-boats .glm-boat-card{ height:100%; }
.glm-more-boats .glm-boat-card a{ display:flex; flex-direction:column; height:100%; }
.glm-more-boats .glm-card-photo{ position:relative; display:block; }
.glm-view-boat{ color:var(--glm-lake); font-weight:600; margin:.2rem 0 0; }

/* Financing band */
.glm-financing-band{ background:var(--glm-navy); color:#eaf3fa; text-align:center; }
.glm-financing-band h2{ color:#eaf3fa; }

/* Boat detail (preview two-column layout) */
.glm-eyebrow{ font-size:.76rem; font-weight:800; letter-spacing:.24em; text-transform:uppercase; color:var(--glm-lake); margin:0 0 .4rem; }
.glm-facts{ border-top:2px solid var(--glm-navy); margin-top:1.2rem; }
.glm-facts .glm-fact{ display:flex; justify-content:space-between; gap:1rem; padding:.45rem 0; border-bottom:1px solid #b4cbdc; }
.glm-facts .glm-fact dt{ font-weight:700; color:var(--glm-ink-soft); }
.glm-facts .glm-fact dd{ margin:0; text-align:right; }
.glm-cta-row{ display:flex; flex-wrap:wrap; gap:.6rem; margin:1.1rem 0 .4rem; }
.glm-cta-row a{ display:inline-block; padding:.65rem 1.1rem; border-radius:4px; font-weight:700; text-decoration:none; }
.glm-cta-call{ background:var(--glm-navy); color:#fff !important; }
.glm-cta-mail{ background:#fff; color:var(--glm-navy) !important; border:2px solid var(--glm-navy); }
.glm-cta-print{ background:var(--glm-gold); color:var(--glm-ink) !important; }
.glm-print-head,.glm-print-foot{ display:none; }

/* The Price Inquiry / Email About This Boat dialogs were retired in 0.12.27:
   both boat-page controls are plain anchor links to #glm-ask-form now, and
   html smooth-scroll (below) carries the visitor to the form. */

/* Print: listings print as a clean one-page window sticker on plain white */
@media print{
  @page{ size:Letter; margin:0.35in 0.42in; }
  body{ background:#ffffff !important; }
  header,footer,.glm-header,.glm-footer,.wp-block-navigation,video,.no-print{ display:none !important; }
  .glm-band-chart,.glm-band-sand,.glm-band-chart-navy,.glm-financing-band{ background:#ffffff !important; color:#0b2239 !important; }
  .glm-print-head,.glm-print-foot{ display:block !important; }
}

/* Hero video + marquee + motion (v0.11) */
.glm-hero{ position:relative; overflow:hidden; }
.glm-hero-video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.glm-hero-photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.glm-hero > *:not(.glm-hero-video):not(.glm-hero-photo):not(.glm-hero-shade){ position:relative; z-index:1; }
.glm-site-version{ text-align:center; font-size:.72rem; opacity:.55; margin:.35rem 0 0; }
.glm-footer-login{ text-align:left; font-size:.8rem; margin:.6rem 0 0; opacity:.75; }
.glm-footer-legal{ font-size:.85rem; margin:.5rem 0 0; }
.glm-hero-shade{ position:absolute; inset:0; background:linear-gradient(90deg, rgba(6,28,51,.82) 0%, rgba(6,28,51,.45) 55%, rgba(6,28,51,.08) 100%); z-index:0; }
.glm-hero > *:not(.glm-hero-video):not(.glm-hero-shade){ position:relative; z-index:1; }
.glm-marquee{ overflow:hidden; background:var(--glm-navy-deep); color:#dcebf5; padding:.7rem 0; }
.glm-marquee-track{ display:flex; gap:2.6rem; white-space:nowrap; width:max-content; animation:glm-marquee 36s linear infinite; font-weight:700; letter-spacing:.14em; font-size:.85rem; text-transform:uppercase; }
.glm-marquee-track span::after{ content:"•"; margin-left:2.6rem; color:var(--glm-lake-bright); }
@keyframes glm-marquee{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@media (prefers-reduced-motion: reduce){ .glm-marquee-track{ animation:none; } }
.glm-reveal{ opacity:0; transform:translateY(16px); transition:opacity .7s ease, transform .7s ease; }
.glm-reveal.glm-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .glm-reveal{ opacity:1; transform:none; transition:none; } }

/* Grid filter chips */
.glm-chips{ display:flex; flex-wrap:wrap; gap:.5rem; margin:0 0 1rem; }
.glm-chip{ padding:.45rem 1rem; border-radius:999px; border:2px solid var(--glm-navy); background:#fff; color:var(--glm-navy); font-weight:700; cursor:pointer; }
.glm-chip.glm-chip-on{ background:var(--glm-navy); color:#fff; }
.glm-grid-count{ color:var(--glm-muted); font-weight:600; margin:.2rem 0 1rem; }

/* Photos inside cards/panels */
.glm-card-photo img, .glm-panel-photo img{ border-radius:10px; width:100%; height:auto; display:block; }
.glm-header-logo img{ height:43px; width:auto; display:block; }

/* Brand plate (About) */
.glm-brand-plate{ background:#ffffff; border-radius:14px; padding:1.4rem; box-shadow:0 18px 40px -18px rgba(6,28,51,.35); max-width:520px; margin-top:1.6rem; }
.glm-brand-plate img{ width:100%; height:auto; display:block; }

/* Map (Visit band + Contact) */
.glm-map{ margin-top:1.4rem; }
.glm-map iframe{ width:100%; height:340px; border:0; border-radius:12px; display:block; }
.glm-map-card{ background:#ffffff; color:var(--glm-ink); border-radius:12px; padding:1rem 1.2rem; margin-top:.8rem; max-width:520px; }
.glm-map-card a{ font-weight:700; }

/* Booking dialog (spec section 15) */
.glm-book-dialog{ border:none; border-radius:14px; padding:2rem; max-width:660px; width:calc(100% - 2rem); max-height:88vh; overflow:auto; box-shadow:0 24px 60px -18px rgba(6,28,51,.5); color:var(--glm-ink); }
.glm-book-dialog::backdrop{ background:rgba(4,16,31,.55); }
.glm-book-dialog h2{ margin:.2rem 0 .6rem; }
.glm-book-progress{ color:var(--glm-muted); font-weight:700; margin:.1rem 0 1rem; }
.glm-book-services{ display:grid; gap:.6rem; }
.glm-book-svc{ text-align:left; background:#fff; border:2px solid #b4cbdc; border-radius:10px; padding:.8rem 1rem; cursor:pointer; font-size:1rem; color:var(--glm-ink); }
.glm-book-svc strong{ display:block; }
.glm-book-svc span{ color:var(--glm-ink-soft); display:block; margin-top:.15rem; }
.glm-book-svc em{ color:var(--glm-lake); display:block; margin-top:.25rem; font-style:normal; font-weight:600; }
.glm-book-svc.glm-svc-on{ border-color:var(--glm-navy); background:#e3f2fa; }
.glm-book-hint{ color:var(--glm-muted); }
.glm-book-dates{ display:grid; gap:.6rem; margin:1rem 0; }
.glm-book-date{ padding:.8rem 1rem; border:2px solid var(--glm-navy); border-radius:10px; background:#fff; font-weight:700; cursor:pointer; text-align:left; font-size:1rem; color:var(--glm-navy); }
.glm-book-note{ background:#e3f2fa; border-radius:8px; padding:.7rem .9rem; }
.glm-book-dialog label{ display:block; font-weight:600; margin:.7rem 0; }
.glm-book-dialog input[type="text"],.glm-book-dialog input[type="tel"],.glm-book-dialog input[type="email"],.glm-book-dialog textarea{ display:block; width:100%; margin-top:.3rem; padding:.55rem .7rem; border:1px solid #b4cbdc; border-radius:6px; font-size:1rem; box-sizing:border-box; }
.glm-book-back{ background:none; border:none; color:var(--glm-lake); font-weight:700; cursor:pointer; padding:0; font-size:1rem; }
.glm-book-copy{ background:none; border:none; color:var(--glm-lake); font-weight:700; cursor:pointer; padding:0; font-size:1rem; text-decoration:underline; }
.glm-book-foot{ color:var(--glm-muted); border-top:1px solid #b4cbdc; padding-top:.8rem; margin-top:1.2rem; }
.glm-book-cable img{ max-width:320px; width:100%; border-radius:8px; }
#glm-book-todates:disabled{ opacity:.45; cursor:not-allowed; }
.glm-book-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; }
.glm-book-close{ flex:none; width:38px; height:38px; border-radius:50%; border:none; background:var(--glm-navy); color:#fff; font-size:1.3rem; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:0 4px 12px -4px rgba(6,28,51,.45); transition:background .15s ease, transform .15s ease; }
.glm-book-close:hover{ background:var(--glm-lake); transform:scale(1.06); }
#glm-book-todates,.glm-book-submit,.glm-book-done-btn{ display:block; width:100%; margin-top:1rem; padding:.85rem 1.2rem; background:var(--glm-navy); color:#fff; border:none; border-radius:10px; font-weight:700; font-size:1rem; cursor:pointer; transition:background .15s ease; }
#glm-book-todates:hover,.glm-book-submit:hover,.glm-book-done-btn:hover{ background:var(--glm-lake); }
#glm-book-todates::after{ content:" \2192"; }

/* Forms (Gravity Forms) branded to the site (Kellen 2026-10-27: the Ask About
   This Boat form "is very basic looking and doesn't seem to track with the
   rest of the site"). Covers the boat inquiry form and the contact form. */
.gform_wrapper{ --gf-form-input-bg-color:#ffffff; }
.gform_wrapper .gfield_label, .gform_wrapper label{ color:var(--glm-ink); font-weight:600; font-size:.95rem; }
.gform_wrapper .gfield_required{ color:#b3402a; }
.gform_wrapper .gfield{ margin-bottom:1.05rem; }
.gform_wrapper input[type="text"], .gform_wrapper input[type="email"], .gform_wrapper input[type="tel"], .gform_wrapper input[type="number"], .gform_wrapper input[type="url"], .gform_wrapper select, .gform_wrapper textarea{ width:100%; box-sizing:border-box; padding:.65rem .8rem; border:1.5px solid #b4cbdc; border-radius:8px; background:#ffffff; color:var(--glm-ink); font:inherit; font-size:1rem; }
.gform_wrapper textarea{ min-height:130px; }
.gform_wrapper input:focus, .gform_wrapper select:focus, .gform_wrapper textarea:focus{ border-color:var(--glm-lake); outline:none; box-shadow:0 0 0 3px rgba(15,109,168,.18); }
.gform_wrapper .gform_button, .gform_wrapper input[type="submit"], .gform_wrapper button[type="submit"]{ display:block; width:100%; margin-top:.4rem; padding:.85rem 1.2rem; background:var(--glm-navy); color:#ffffff; border:none; border-radius:10px; font-weight:700; font-size:1rem; cursor:pointer; transition:background .15s ease; }
.gform_wrapper .gform_button:hover, .gform_wrapper input[type="submit"]:hover, .gform_wrapper button[type="submit"]:hover{ background:var(--glm-lake); }
.gform_wrapper .charleft, .gform_wrapper .ginput_counter{ color:var(--glm-muted); font-size:.85rem; }
.gform_wrapper .gfield_description{ color:var(--glm-ink-soft); font-size:.9rem; }
.gform_wrapper .gfield_error input, .gform_wrapper .gfield_error textarea, .gform_wrapper .gfield_error select{ border-color:#b3402a; }
.glm-inquiry{ border-radius:14px; border:1.5px solid #e7dcc0; }
.glm-inquiry h2{ color:var(--glm-navy); }

/* Header + typography matched to the artifact (Kellen, 2026-10-27):
   navy utility strip over a cream surface band; headings in Libre Franklin
   900 with serif-italic accents, exactly as the preview renders them. */
.glm-utility{ background:var(--glm-navy-deep); color:#b9d2e4; font-size:.8rem; }
.glm-utility-in{ display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; padding-top:7px; padding-bottom:7px; }
.glm-utility a{ color:#eaf3fa; text-decoration:none; font-weight:600; }
.glm-utility a:hover{ color:var(--glm-lake-bright); }
.glm-utility-right{ display:flex; gap:22px; flex-wrap:wrap; }
.glm-u-item{ display:inline-flex; align-items:center; gap:6px; }
.glm-u-item svg{ width:13px; height:13px; flex:none; }
.glm-header{ background:var(--glm-surface); color:var(--glm-ink); border-bottom:1px solid #a6bfd4; box-shadow:0 6px 24px -14px rgba(6,28,51,.30); position:relative; z-index:50; }
.glm-header a{ color:var(--glm-ink-soft); }
.glm-header .wp-block-navigation{ font-size:.9rem; font-weight:600; }
.glm-header .wp-block-navigation__container{ column-gap:.3rem; row-gap:.3rem; flex-wrap:nowrap !important; }
.glm-header .wp-block-navigation-item{ flex:none; }
.glm-header .wp-block-navigation-item__content{ white-space:nowrap; background:#e7edf3; border-radius:999px; padding:.32rem .55rem; transition:background .15s ease,color .15s ease; }
@media (max-width:1400px){
.glm-header .wp-block-navigation{ font-size:.84rem; }
.glm-header .wp-block-navigation__container{ column-gap:.25rem; }
.glm-header .wp-block-navigation-item__content{ padding:.3rem .45rem; }
.glm-header-logo img{ height:36px; }
}
.glm-header .wp-block-navigation-item__content[aria-current="page"]{ background:#0a2a4a; color:#fff; }
.glm-header .wp-block-group{ flex-wrap:nowrap !important; }
.glm-header .wp-block-navigation a:hover{ background:#0a2a4a; color:#fff; }
.glm-header .wp-block-button__link{ background:var(--glm-lake) !important; color:#fff !important; border-radius:999px; padding:10px 14px; font-weight:700; white-space:nowrap; }
.glm-header .wp-block-button__link:hover{ background:var(--glm-navy) !important; }
h1 em, h2 em{ font-family:"Source Serif 4", Georgia, serif; font-style:italic; font-weight:500; }

/* Navy CTA band inside a section (preview .cta-band) */
.glm-cta-band{ background:var(--glm-navy); color:#eaf3fa; border-radius:14px; }
.glm-cta-band h2, .glm-cta-band h3{ color:#fff; }
.glm-cta-band p{ color:#b9d2e4; }
.glm-cta-band a{ color:#eaf3fa; }
.glm-cta-band .is-style-outline .wp-block-button__link{ color:#fff !important; border-color:rgba(255,255,255,.65); background:transparent; }

/* More boats mini-grid (detail pages) */
.glm-more-boats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:1.1rem; }
.glm-more-boats .glm-boat-card a{ text-decoration:none; color:inherit; display:block; }
.glm-more-boats .glm-card-photo img{ width:100%; height:auto; border-radius:8px; display:block; }

/* Homepage split panes (preview .whaler): photo half + navy copy panel */
.glm-split{ background:var(--glm-navy); border-radius:16px; overflow:hidden; gap:0; }
.glm-split .wp-block-column{ margin:0; }
.glm-split .glm-split-photo{ margin:0; height:100%; }
.glm-split .glm-split-photo img{ width:100%; height:100%; object-fit:cover; min-height:320px; display:block; }
.glm-split .glm-yamaha-shot img{ object-position:center 28%; }
.glm-split-copy{ padding:44px 46px; }
.glm-split .wp-block-button__link{ border-radius:999px; }
@media (max-width:781px){ .glm-split .glm-split-photo img{ min-height:230px; max-height:300px; } .glm-split-copy{ padding:30px 26px; } }

/* Whaler page: factory-ordering step cards + CTA band pills (artifact) */
.glm-step-card{ background:#fffdf4; border:1px solid #e3d5ae; border-radius:14px; padding:26px 28px; box-shadow:0 14px 30px -18px rgba(6,28,51,.35); }
.glm-step-num{ font-family:"Libre Franklin",sans-serif; font-weight:900; font-size:1.9rem; color:var(--glm-lake); margin:0 0 .3rem; }
.glm-step-card h3{ margin:.1rem 0 .5rem; }
.glm-cta-band .wp-block-button__link{ border-radius:999px; }

/* Hero stats: shared title height so the sub-lines align across columns */
.glm-hero-stats h3{ font-size:1.12rem; text-wrap:balance; min-height:2.35em; }
/* Hero stat sub-lines: sized to sit on ONE line each at desktop widths
   (Kellen, 2026-10-27: pull 'boaters / themselves / 1994 / roof' up) */
.glm-hero-stats p{ font-size:.75rem; letter-spacing:-.02em; }

/* --- Boat gallery + pricing (0.12.8) --- */
.glm-gallery-stage{ position:relative; border-radius:14px; overflow:hidden; background:#fff; }
.glm-gallery-main{ display:block; width:100%; aspect-ratio:4/3; object-fit:cover; cursor:zoom-in; }
.glm-gallery-badge{ position:absolute; top:14px; left:14px; background:#0f6da8; color:#fff; font:700 .72rem 'Libre Franklin',sans-serif; letter-spacing:.12em; text-transform:uppercase; padding:.45em 1em; border-radius:999px; }
.glm-gallery-prev,.glm-gallery-next{ position:absolute; top:50%; transform:translateY(-50%); width:44px; height:44px; border-radius:50%; border:0; background:rgba(10,42,74,.55); color:#fff; font-size:1.15rem; cursor:pointer; z-index:3; }
.glm-gallery-prev{ left:12px; } .glm-gallery-next{ right:12px; }
.glm-gallery-count{ position:absolute; right:14px; bottom:12px; background:rgba(10,42,74,.65); color:#fff; font:600 .8rem 'Libre Franklin',sans-serif; padding:.3em .8em; border-radius:999px; }
.glm-gallery-thumbs{ display:flex; gap:10px; margin-top:12px; overflow-x:auto; padding-bottom:4px; }
.glm-thumb{ flex:0 0 auto; width:86px; height:64px; border-radius:8px; overflow:hidden; border:2px solid transparent; padding:0; background:#fff; cursor:pointer; }
.glm-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.glm-thumb.is-active{ border-color:#0f6da8; }
.glm-thumb-video{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; background:#0a2a4a; color:#fff; font:700 .68rem 'Libre Franklin',sans-serif; }
.glm-thumb-video span{ font-size:1rem; } .glm-thumb-video em{ font-style:normal; letter-spacing:.08em; text-transform:uppercase; }
.glm-gallery-facade{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.6rem; text-align:center; padding:2rem; background:#0d3055; color:#eaf3fa; z-index:2; }
.glm-gallery-facade[hidden]{ display:none; }
.gv-kicker{ font:800 .78rem 'Libre Franklin',sans-serif; letter-spacing:.14em; text-transform:uppercase; color:#35a9e1; margin:0; }
.gv-text{ max-width:420px; margin:0; }
.gv-watch{ background:#e8a33d; color:#0a2a4a; border:0; font:800 .9rem 'Libre Franklin',sans-serif; padding:.7em 1.5em; border-radius:999px; cursor:pointer; }
.glm-gallery-embed{ position:absolute; inset:0; width:100%; height:100%; border:0; z-index:2; }
.glm-price-lead{ font:800 1.3rem 'Libre Franklin',sans-serif; color:#0b2239; margin:.4rem 0 .2rem; }
.glm-price-lead .ask,.glm-pr-row .ask{ color:#0f6da8; font-weight:800; text-decoration:none; }
.glm-price-note{ color:#42607a; margin:.1rem 0 .8rem; }
.glm-pr-row{ display:flex; justify-content:space-between; gap:1rem; padding:.5rem 0; border-bottom:1px dashed #b4cbdc; color:#0b2239; }
.glm-pr-row span:last-child{ font-weight:700; font-variant-numeric:tabular-nums; }
.glm-pr-row.is-total{ border-top:2px solid #0a2a4a; font-weight:800; }

/* Service cards: one shared photo frame so headings and links line up. */
.glm-service-cards{ align-items:stretch; }
.glm-service-cards .wp-block-column{ display:flex; flex-direction:column; }
.glm-service-cards .glm-card-photo{ aspect-ratio:16/10; overflow:hidden; border-radius:10px; margin:0; flex:none; }
.glm-service-cards .glm-card-photo img{ width:100%; height:100%; object-fit:cover; }
.glm-service-cards .glm-card-photo img[src*="yamaha.jpg"]{ object-position:center 28%; }
.glm-service-cards .wp-block-column > p:last-child{ margin-top:auto; }

/* Repower photo spots (artifact tiles, 0.12.9) */
.glm-photo-head{ font-weight:700; margin:.9rem 0 .5rem; }
.glm-photo-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:1rem; }
.glm-photo-spot{ position:relative; display:block; cursor:pointer; border:1.5px dashed #b4cbdc; border-radius:10px; background:#dcebf6; padding:12px 14px; margin:0 !important; transition:border-color .2s ease, background .2s ease; }
.glm-photo-spot:hover,.glm-photo-spot:focus-within{ border-color:#0f6da8; }
.glm-photo-spot.is-drag{ border-color:#0f6da8; background:#c9dff1; }
.glm-photo-spot strong{ display:block; font-size:.92rem; font-weight:800; color:#0b2239; }
.glm-photo-spot .glm-pick{ display:block; color:#0f6da8; font-weight:700; font-size:.85rem; margin-top:2px; }
.glm-photo-spot .glm-photo-names{ display:block; color:#42607a; font-size:.8rem; margin-top:4px; overflow-wrap:anywhere; }
.glm-photo-spot input[type="file"]{ position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
@media (max-width:560px){ .glm-photo-grid{ grid-template-columns:1fr; } }

/* Links on the navy service band: brighter blue for contrast (Kellen, 2026-10-27) */
.glm-band-chart-navy .glm-service-cards a, .glm-band-chart-navy p a{ color:#9fd7f5; }
.glm-band-chart-navy .glm-service-cards a:hover, .glm-band-chart-navy p a:hover{ color:#ffffff; }

/* Shrink wrap price sits with the card text; only the link pins to the bottom (Kellen, 2026-10-27) */
.glm-svc-price{ font-weight:800; margin:0 0 .35rem; }

/* Boat detail listing sections as framed panes, ported from the preview (.lsec) */
.glm-listing{ margin-top:46px; }
.glm-lsec{ background:#fbf7ec; border:1px solid #a6bfd4; border-radius:14px; padding:26px 30px; box-shadow:0 4px 18px -12px rgba(6,28,51,.2); }
.glm-lsec h2{ font-size:1.42rem; margin:0 0 4px; color:#0b2239; }
.glm-lsec-sub{ font-family:'Source Serif 4',Georgia,serif; font-style:italic; font-weight:500; color:#2e4c66; font-size:1rem; margin:0 0 14px; }
.glm-listing-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:24px; }
.glm-opts-list{ list-style:none; margin:0; padding:0; columns:2; column-gap:44px; }
.glm-opts-list li{ display:flex; justify-content:space-between; align-items:baseline; gap:14px; padding:7px 0; border-bottom:1px dashed #a6bfd4; break-inside:avoid; font-size:.96rem; color:#2e4c66; }
.glm-opt-price{ font-weight:800; color:#0b2239; white-space:nowrap; font-variant-numeric:tabular-nums; }
.glm-opts-portrait{ columns:1; }
.glm-lsec-options{ margin-top:22px; }
.glm-checks{ list-style:none; margin:0; padding:0; }
.glm-checks li{ position:relative; padding:7px 0 7px 30px; color:#2e4c66; font-size:.97rem; border-bottom:1px dashed #a6bfd4; }
.glm-checks li:last-child{ border-bottom:none; }
.glm-checks li::before{ content:'✓'; position:absolute; left:4px; top:9px; font-size:.92rem; font-weight:900; line-height:1; color:#0f6da8; }
.glm-fact-list{ display:grid; grid-template-columns:1fr 1fr; gap:0 22px; margin:0 0 8px; }
.glm-fact-list div{ padding:10px 0; border-bottom:1px dashed #a6bfd4; }
.glm-fact-list dt{ font-size:.7rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:#2e4c66; }
.glm-fact-list dd{ margin:2px 0 0; font-weight:700; font-size:.98rem; }
@media (max-width:680px){
  .glm-opts-list{ columns:1; }
  .glm-listing-grid{ grid-template-columns:1fr; }
  .glm-lsec{ padding:22px 22px; }
}

/* Interior page components (v0.12.24, ported from the preview artifact).
   Page hero: the photo is a layered background on the hero group itself
   (two-part gradient shade over the photo, set inline in the template), so
   no <img> sits in the hero and lazy-load rewriters cannot stack the photo
   above the panel the way the old .glm-hero-photo markup did on staging. */
.glm-page-hero{ position:relative; overflow:hidden; background-color:var(--glm-navy-deep); color:#eaf3fa; padding-top:72px; padding-bottom:78px; }
.glm-page-hero-in{ max-width:680px !important; margin-left:0 !important; margin-right:auto !important; }
.glm-page-hero .glm-crumbs{ font-size:.82rem; color:#b9d2e4; margin:0 0 14px; }
.glm-page-hero .glm-crumbs a{ color:#b9d2e4; text-decoration:none; }
.glm-page-hero .glm-crumbs a:hover{ color:#ffffff; }
.glm-page-hero .glm-kicker{ display:inline-flex; align-items:center; gap:10px; font-size:.76rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--glm-lake-bright); margin:0; }
.glm-page-hero .glm-kicker::before{ content:""; width:34px; height:2px; background:var(--glm-lake-bright); flex:none; }
.glm-page-hero h1{ color:#ffffff; font-size:clamp(2rem,4.4vw,3rem); line-height:1.08; font-weight:900; margin:16px 0 14px; text-wrap:balance; }
.glm-page-hero .glm-hero-intro{ font-size:1.08rem; color:#dcebf6; margin:0; max-width:36rem; }
@media (max-width:781px){
  .glm-page-hero{ padding-top:52px; padding-bottom:56px; }
}

/* Section heads: eyebrow + heading + intro constrained to ~720px,
   left-aligned inside the 1200px band (preview .section-head) */
.glm-section-head{ max-width:720px !important; margin-left:0 !important; margin-right:auto !important; margin-bottom:42px; }
.glm-section-head p{ color:var(--glm-muted); font-size:1.05rem; }

/* Heritage rows: copy + photo card, vertically centered (preview .heritage) */
.glm-heritage{ gap:54px; }
.glm-heritage-copy p{ color:var(--glm-muted); font-size:1.03rem; }
.glm-heritage-copy p strong{ color:var(--glm-ink); }
.glm-heritage-photo{ border-radius:14px; overflow:hidden; box-shadow:0 18px 40px -18px rgba(6,28,51,.35); }
.glm-heritage-photo img{ width:100%; height:100%; object-fit:cover; aspect-ratio:4/3.1; display:block; transition:transform .8s cubic-bezier(.22,.8,.3,1); }
.glm-heritage-photo:hover img{ transform:scale(1.04); }
@media (max-width:781px){
  .glm-heritage{ gap:30px; }
}

/* Split CTA band: text left, actions right (preview .cta-band + .cta-actions) */
.glm-cta-split .wp-block-columns{ margin-bottom:0; }
.glm-cta-split p{ max-width:34rem; }
.glm-cta-split .wp-block-buttons{ justify-content:flex-end; }
.glm-cta-split .wp-block-button__link{ padding:14px 26px; font-size:.98rem; }
.glm-cta-split .glm-btn-ghost .wp-block-button__link{ background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.55); backdrop-filter:blur(4px); }
.glm-cta-split .glm-btn-ghost .wp-block-button__link:hover{ background:rgba(255,255,255,.22); }
@media (max-width:781px){
  .glm-cta-split{ padding:34px 28px !important; }
  .glm-cta-split .wp-block-buttons{ justify-content:flex-start; }
}

/* Package cards, notice/note panes, FAQ (v0.12.26, ported from the preview
   .pkg / .pkg-tag / .notice-box / .note-box / .faq-item). Introduced on the
   Winterize Information and Shrink Wrapping pages; the Service page build
   reuses the same classes. Cards sit on the lake/sand chart bands, so they
   carry the cream surface like the listing panes (.glm-lsec). */
.glm-pkg-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.glm-pkg{ background:var(--glm-surface); border:1px solid #a6bfd4; border-radius:14px; padding:28px 30px; box-shadow:0 4px 18px -12px rgba(6,28,51,.2); transition:transform .3s cubic-bezier(.22,.8,.3,1), box-shadow .3s ease; }
.glm-pkg:hover{ transform:translateY(-4px); box-shadow:0 18px 40px -18px rgba(6,28,51,.35); }
.glm-pkg h3{ margin:0 0 4px; font-size:1.25rem; font-weight:800; color:var(--glm-ink); }
.glm-pkg-tag{ display:inline-block; font-size:.68rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--glm-lake); background:#e3f2fa; padding:5px 10px; border-radius:999px; margin:0 0 14px; }
.glm-pkg-sub{ color:var(--glm-muted); font-size:.94rem; margin:0 0 18px; }
.glm-pkg .wp-block-buttons{ margin-top:2px; }
.glm-pkg-grid .glm-note-box{ align-self:start; }
.glm-note-box{ background:var(--glm-surface); border:1px solid #a6bfd4; border-radius:14px; padding:20px 24px; color:var(--glm-ink-soft); font-size:.95rem; }
.glm-note-box p{ margin:0; }
.glm-note-box strong{ color:var(--glm-ink); }
.glm-notice-box{ background:var(--glm-surface); border:1px solid #a6bfd4; border-left:4px solid var(--glm-gold); border-radius:10px; padding:22px 26px; color:var(--glm-ink-soft); font-size:.97rem; }
.glm-notice-box h3{ margin:0 0 8px; font-size:1.08rem; color:var(--glm-ink); }
.glm-notice-box p{ margin:0 0 10px; }
.glm-notice-box p:last-child{ margin-bottom:0; }
.glm-section-head-center{ margin-left:auto !important; margin-right:auto !important; text-align:center; }
.glm-faq-list{ max-width:820px; margin-left:auto; margin-right:auto; }
details.glm-faq-item{ background:var(--glm-surface); border:1px solid #a6bfd4; border-radius:14px; margin-bottom:12px; overflow:hidden; transition:box-shadow .25s ease; }
details.glm-faq-item[open]{ box-shadow:0 10px 26px -14px rgba(6,28,51,.3); }
details.glm-faq-item summary{ cursor:pointer; list-style:none; display:flex; align-items:center; justify-content:space-between; gap:16px; font-weight:700; font-size:1.02rem; color:var(--glm-ink); padding:18px 22px; transition:color .2s ease; }
details.glm-faq-item summary::-webkit-details-marker{ display:none; }
details.glm-faq-item summary::after{ content:""; flex:none; width:10px; height:10px; border-right:2.5px solid var(--glm-lake); border-bottom:2.5px solid var(--glm-lake); transform:rotate(45deg); transition:transform .25s ease; margin-right:4px; }
details.glm-faq-item[open] summary::after{ transform:rotate(225deg); }
details.glm-faq-item summary:hover{ color:var(--glm-lake); }
details.glm-faq-item > p{ padding:0 22px 20px; color:var(--glm-muted); font-size:.98rem; max-width:44rem; margin:0; }
@media (max-width:820px){
  .glm-pkg-grid{ grid-template-columns:1fr; }
}

/* Service page components (v0.12.27, ported from the preview .svc-card /
   .parts-pair). Distinct glm-svc-* classes: the front page keeps its own
   .glm-service-cards treatment untouched. */
.glm-services{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.glm-svc-card{ background:var(--glm-surface); border:1px solid #a6bfd4; border-radius:14px; overflow:hidden; display:flex; flex-direction:column; box-shadow:0 4px 18px -12px rgba(6,28,51,.2); transition:transform .3s cubic-bezier(.22,.8,.3,1), box-shadow .3s ease; }
.glm-svc-card:hover{ transform:translateY(-6px); box-shadow:0 18px 40px -18px rgba(6,28,51,.35); }
.glm-svc-photo{ aspect-ratio:16/10; overflow:hidden; margin:0; flex:none; background:#e3f2fa; }
.glm-svc-photo img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s cubic-bezier(.22,.8,.3,1); }
.glm-svc-card:hover .glm-svc-photo img{ transform:scale(1.06); }
/* Kellen's Yamaha install photo is portrait; bias the crop up like the preview. */
.glm-svc-photo-yamaha img{ object-position:center 28%; }
.glm-svc-body{ padding:20px 22px 22px; display:flex; flex-direction:column; flex:1; }
.glm-svc-body h3{ margin:0 0 7px; font-size:1.1rem; font-weight:800; color:var(--glm-ink); }
.glm-svc-body p{ color:var(--glm-muted); font-size:.92rem; margin:0 0 14px; }
.glm-svc-body .glm-svc-price{ font-weight:800; color:var(--glm-lake); font-size:.95rem; margin:0 0 12px; }
.glm-svc-body p:has(> .glm-svc-link){ margin-top:auto; margin-bottom:0; }
.glm-svc-link{ display:inline-flex; align-items:center; gap:7px; font-weight:700; font-size:.9rem; color:var(--glm-ink); text-decoration:none; transition:color .2s ease, gap .2s ease; }
.glm-svc-link:hover{ color:var(--glm-lake); gap:11px; }
.glm-parts-pair{ display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:54px; align-items:stretch; }
@media (max-width:1080px){ .glm-services{ grid-template-columns:1fr 1fr; } }
@media (max-width:820px){
  .glm-services{ grid-template-columns:1fr; }
  .glm-parts-pair{ grid-template-columns:1fr; }
}

/* Booking dialog service tabs (v0.12.27): navy/lake underline tabs over the
   two service panels; selections persist across tabs. */
.glm-book-tabs{ display:flex; gap:.4rem; margin:0 0 1rem; border-bottom:2px solid #b4cbdc; }
.glm-book-tab{ flex:1 1 0; background:none; border:none; border-bottom:3px solid transparent; margin-bottom:-2px; padding:.6rem .4rem; font:inherit; font-weight:700; font-size:.97rem; color:var(--glm-muted); cursor:pointer; transition:color .15s ease, border-color .15s ease; }
.glm-book-tab:hover{ color:var(--glm-navy); }
.glm-book-tab.is-active{ color:var(--glm-navy); border-bottom-color:var(--glm-lake); }
.glm-book-panel{ margin-bottom:1rem; }
.glm-book-panel[hidden]{ display:none; }
@media (max-width:560px){ .glm-book-tab{ font-size:.88rem; } }

/* Gravity Forms layout tightening (v0.12.27, on top of the 0.12.23 branding):
   even field rhythm instead of the plug-in's loose gaps, sublabels sitting
   tight above their inputs, and the Name field's First/Last pair spread
   evenly across the full width. Applies to the boat inquiry form and the
   contact form alike (same .gform_wrapper). */
.gform_wrapper{ --gf-form-gap-y:1.1rem; }
.gform_wrapper .gform_fields{ row-gap:1.1rem; }
.gform_wrapper .gfield{ margin-bottom:1.1rem; }
.gform_wrapper .gfield_label{ margin-bottom:.35rem; }
.gform_wrapper .ginput_complex{ display:flex; flex-wrap:wrap; gap:.9rem 1rem; }
.gform_wrapper .ginput_complex > span{ flex:1 1 180px; min-width:0; display:flex; flex-direction:column; }
.gform_wrapper .ginput_complex > span > label{ order:-1; margin:0 0 .3rem; font-size:.88rem; }
.gform_wrapper .ginput_complex > span > input{ width:100%; }

/* --- 0.12.28: owner polish pass (Kellen, 2026-10-27) ---
   1) Homepage hero title steps down on laptop widths so the dealer line
      holds one line; "Since 1976" never strands the year on its own line.
   2) Hero stats: the shared min-height under the four stat headings is
      gone (it read as a blank line after each subhead).
   3) Gravity forms: the Name/Email complex fields span the full width in
      two even columns, field spacing comes from the grid gap alone (the
      stacked margin + gap read as dead space), inputs are a touch larger
      and softer, the boat Ask form puts Email and Phone side by side,
      and the Ask heading gets a gold accent rule.
   4) Phones: the header stacks with the logo centered and the phone
      button centered directly under it. */
.glm-hero-title{ font-size:2.8rem; line-height:1.1; }
.glm-hero-title em{ white-space:nowrap; }
@media (max-width:1400px){ .glm-hero-title{ font-size:2.4rem; } }
@media (max-width:1150px){ .glm-hero-title{ font-size:2.05rem; } }
@media (max-width:781px){ .glm-hero-title{ font-size:1.8rem; } }
.glm-hero-stats h3{ min-height:0; margin:0 0 .3rem; }
.glm-hero-stats p{ margin:0; }
.gform_wrapper .gfield{ margin-bottom:0; }
.gform_wrapper .ginput_complex{ display:grid; grid-template-columns:1fr 1fr; gap:.9rem 1rem; width:100%; }
.gform_wrapper .ginput_complex > span{ width:auto; min-width:0; display:flex; flex-direction:column; }
.gform_wrapper .ginput_complex > span > label{ order:-1; margin:0 0 .3rem; font-size:.88rem; }
.gform_wrapper .ginput_complex > span > input{ width:100%; }
.gform_wrapper input[type="text"], .gform_wrapper input[type="email"], .gform_wrapper input[type="tel"], .gform_wrapper input[type="number"], .gform_wrapper input[type="url"], .gform_wrapper select, .gform_wrapper textarea{ padding:.8rem .95rem; border-radius:10px; border-color:#a9c3d8; }
.glm-inquiry h2{ padding-bottom:.55rem; margin-bottom:.5rem; position:relative; }
.glm-inquiry h2::after{ content:""; position:absolute; left:0; bottom:0; width:64px; height:3px; border-radius:2px; background:var(--glm-gold); }
#glm-ask-form .gform_fields{ grid-template-columns:1fr 1fr; }
#glm-ask-form .gfield{ grid-column:1 / -1 !important; }
#glm-ask-form .gfield:nth-child(2), #glm-ask-form .gfield:nth-child(3){ grid-column:auto !important; }
@media (max-width:781px){
  #glm-ask-form .gfield:nth-child(2), #glm-ask-form .gfield:nth-child(3){ grid-column:1 / -1 !important; }
  .glm-header > .wp-block-group{ flex-direction:column; align-items:center; justify-content:center; gap:.35rem; }
  .glm-header > .wp-block-group > .wp-block-group{ flex-direction:column; align-items:center; gap:.35rem; }
  .glm-header .wp-block-buttons{ order:-1; }
  .glm-header nav{ justify-content:center; }
}

/* --- 0.12.29: Name field, third attempt, root-caused ---
   On the rendered page the Name complex's two sub-spans are wrapped in
   <p> elements (wpautop on the embedded form), so every "> span" rule
   from 0.12.27/0.12.28 silently missed and GF's size-auto columns shrank
   the inputs to the left third. The Email complex has no <p> wrappers,
   which is why it responded and the Name field never did. Fix: grid on
   the container, the <p> wrappers become the grid items, spans fill
   them, stray <br>s inside the name complex are hidden. */
.gform_wrapper .ginput_container_name{ display:grid; grid-template-columns:1fr 1fr; gap:.9rem 1rem; width:100%; }
.gform_wrapper .ginput_container_name > p{ margin:0; min-width:0; }
.gform_wrapper .ginput_container_name > p > span{ display:flex; flex-direction:column; width:100%; min-width:0; }
.gform_wrapper .ginput_container_name label{ order:-1; margin:0 0 .3rem; font-size:.88rem; }
.gform_wrapper .ginput_container_name input{ width:100%; }
.gform_wrapper .ginput_container_name br{ display:none; }

/* --- 0.12.30: Name field, the actual fix ---
   Gravity's own rule (.gform_wrapper.gravity-theme .ginput_complex,
   specificity 0-3-0) beat the theme's 0-2-0 display:grid in both prior
   attempts, leaving GF's flex in charge; flex shrink-wraps the <p>
   wrappers around the Name sub-spans, so the inputs sat at intrinsic
   width in the left third. These rules match GF's specificity and load
   after it. The Email complex (direct-child spans) gets the same grid,
   which renders identically to the flex layout it replaces. */
.gform_wrapper.gravity-theme .ginput_complex{ display:grid; grid-template-columns:1fr 1fr; gap:.9rem 1rem; width:100%; }
.gform_wrapper.gravity-theme .ginput_complex > span{ min-width:0; }
.gform_wrapper.gravity-theme .ginput_complex .ginput_full{ grid-column:1 / -1; }
.gform_wrapper.gravity-theme .ginput_container_name > p{ margin:0; min-width:0; }
.gform_wrapper.gravity-theme .ginput_container_name > p > span{ display:flex; flex-direction:column; width:100%; min-width:0; }
.gform_wrapper.gravity-theme .ginput_container_name label{ order:-1; margin:0 0 .3rem; font-size:.88rem; }
.gform_wrapper.gravity-theme .ginput_container_name input{ width:100%; }
.gform_wrapper.gravity-theme .ginput_container_name br{ display:none; }

/* --- 0.12.32: Boats / About / Contact interior rebuilds ---
   The last three simplified pages rebuilt to the preview artifact
   (interior-pages parity spec sections 3, 7, 8). assets/hero.jpg copied
   into the theme for the Boats hero and the About story photo. */
/* Boats: navy Whaler split panel inside the lake inventory band */
.glm-whaler-panel{ display:grid; grid-template-columns:1.05fr 1fr; border-radius:14px; overflow:hidden; background:linear-gradient(160deg,#0d3055,#061c33); margin-top:44px; box-shadow:0 18px 40px -18px rgba(6,28,51,.35); }
.glm-whaler-photo img{ width:100%; height:100%; object-fit:cover; display:block; min-height:320px; }
.glm-whaler-copy{ padding:2.6rem 2.8rem; color:#dcebf6; align-self:center; }
.glm-whaler-copy h2{ color:#ffffff; margin:.2rem 0 .7rem; }
.glm-whaler-copy .glm-eyebrow{ color:var(--glm-lake-bright); }
.glm-whaler-btn{ display:inline-block; background:var(--glm-lake); color:#ffffff; padding:.8rem 1.5rem; border-radius:999px; font-weight:700; text-decoration:none; }
.glm-whaler-btn:hover{ background:var(--glm-lake-bright); color:#061c33; }
@media (max-width:781px){ .glm-whaler-panel{ grid-template-columns:1fr; } .glm-whaler-photo img{ min-height:220px; } .glm-whaler-copy{ padding:2rem 1.6rem; } }
/* About: navy stats band */
.glm-stats-row{ text-align:center; }
.glm-stat-num{ font-size:2.6rem; font-weight:900; color:#ffffff; line-height:1.05; margin:0 0 .45rem; }
.glm-stat-label{ text-transform:uppercase; letter-spacing:.14em; font-size:.78rem; font-weight:600; color:#b9d2e4; margin:0; }
/* About: brand plate — cream, 660px, centered between story and timeline
   (overrides the white 520px base style, which only the old hero used) */
.glm-brand-plate{ background:#fbf7ec; max-width:660px; margin:64px auto 0; }
/* About: reviews band — score block left, copy right */
.glm-reviews-flex{ display:flex; gap:3.5rem; align-items:center; }
.glm-score{ flex:none; }
.glm-score-big{ font-size:4.2rem; font-weight:900; color:#ffffff; line-height:1; }
.glm-stars{ display:flex; gap:3px; margin:.55rem 0 .4rem; }
.glm-stars svg{ width:22px; height:22px; }
.glm-score-count{ color:#b9d2e4; margin:0; }
.glm-reviews-copy h2{ color:#ffffff; margin:0 0 .6rem; }
.glm-reviews-copy p{ color:#dcebf6; margin:0; max-width:36rem; }
@media (max-width:781px){ .glm-reviews-flex{ flex-direction:column; align-items:flex-start; gap:1.8rem; } }
/* Contact: info cards with lake icons */
.glm-info-card{ background:#fffdf4; border:1px solid #e3d5ae; border-radius:14px; padding:26px 28px; box-shadow:0 14px 30px -18px rgba(6,28,51,.35); }
.glm-info-card svg{ width:30px; height:30px; color:var(--glm-lake); display:block; }
.glm-info-card h3{ margin:.6rem 0 .4rem; }
.glm-info-card p{ margin:0; }
/* Contact: form panel (Gravity form sits inside, per the launch decision) */
.glm-form-panel{ background:#fbf7ec; border:1px solid #e3d5ae; border-radius:14px; padding:28px 30px; box-shadow:0 14px 30px -18px rgba(6,28,51,.35); }
.glm-form-panel h3{ margin:0 0 .4rem; }
.glm-contact-grid .glm-map{ margin-top:0; }
.glm-contact-grid .glm-map iframe{ height:420px; }

/* --- 0.12.33: whole boat card is clickable ---
   Owner report: on the Cobalt page the "View this boat" text did nothing
   — in the query-loop cards it was a plain paragraph with no link (only
   the homepage's hand-coded cards had real anchors). The card title is
   already a permalink, so stretch that link over the whole card (the
   card is position:relative): every part of the card — photo, name,
   blurb, specs, price, and the "View this boat" line — now navigates to
   the boat, matching the preview where the whole card is one link. The
   detail page's more-boats cards hand-render a single wrapping anchor
   with no title link inside, so they are unaffected. */
.glm-boat-card h3 a::after{ content:""; position:absolute; inset:0; z-index:2; }
.glm-boat-card .glm-view-boat{ color:var(--glm-lake); }
.glm-boat-card:hover .glm-view-boat{ text-decoration:underline; }

/* --- 0.12.34: hero Book Service button filled (template change) ---
   Owner request: the homepage hero's Book Service button was the outline
   style; it now carries the same gold fill as Browse Boats (template
   change in front-page.html — gold background, ink text; data-book=
   "general" behavior unchanged). No CSS change in this build. */

/* --- 0.12.35: mobile menu overlay styled ---
   Owner report (with phone screenshot): the phone navigation overlay was
   the WordPress default — plain white, black text, and a bare X close
   button. Restyle the open overlay to the site's navy/gold look: deep
   navy panel, large light links with hairline dividers, gold for the
   current page, a circular outlined close button, and a gold focus ring
   instead of the default black focus box. Scoped to .is-menu-open, so
   the desktop header is untouched. */
.wp-block-navigation__responsive-container.is-menu-open{
  background:linear-gradient(160deg,#0d3055 0%,#061c33 55%,#041222 100%);
  color:#eaf3fa;
  padding:1.4rem 1.6rem 2.2rem;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{
  /* 0.12.45: owner phone screenshot showed the close button overlapping
     the first menu item ("Home") — the 3.2rem top padding was being
     overridden in the cascade, leaving effectively none. Generous
     !important top padding guarantees the list starts well clear of
     the 46px close button (bottom edge ~3.9rem) at any cascade order. */
  padding-top:4.75rem !important;
  align-items:stretch;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{
  width:100%;
  gap:0;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item{
  border-bottom:1px solid rgba(234,243,250,.14);
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:last-child{
  border-bottom:none;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content{
  color:#eaf3fa;
  background:transparent;
  border-radius:0;
  font-size:1.3rem;
  font-weight:700;
  letter-spacing:.01em;
  padding:.72em .1em;
  width:100%;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover{
  color:var(--glm-gold);
}
.wp-block-navigation__responsive-container.is-menu-open .current-menu-item > .wp-block-navigation-item__content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content[aria-current="page"]{
  color:var(--glm-gold);
}
.wp-block-navigation__responsive-container.is-menu-open a:focus-visible{
  outline:2px solid var(--glm-gold);
  outline-offset:3px;
  border-radius:4px;
}
/* Close button: circular outlined tap target, gold on hover/focus */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close{
  top:1.1rem;
  right:1.2rem;
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  color:#eaf3fa;
  background:rgba(234,243,250,.06);
  border:1.5px solid rgba(234,243,250,.45);
  border-radius:50%;
  cursor:pointer;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close svg{
  width:20px;
  height:20px;
  display:block;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close:hover,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close:focus-visible{
  color:var(--glm-gold);
  border-color:var(--glm-gold);
  outline:none;
}

/* --- 0.12.36: card pairs aligned; factory-ordering anchor ---
   Owner, 2026-10-28: (1) Service page parts pair ("Extensive stock of
   genuine OEM parts" / "A word of caution on parts") — top-align them
   and make them the same size: .glm-parts-pair now stretches its items
   (rule above) and each notice box fills its grid cell. (2) Winterize
   page package cards "somewhat random" — the pkg grids now explicitly
   stretch and each card fills its cell, so paired cards share a top
   edge and a height. (3) The Boats page "How Factory Ordering Works"
   button now links to /boston-whaler/#factory-ordering, landing on the
   "Factory ordering, step by step" section itself (anchor added to that
   section in page-boston-whaler.html); scroll-margin keeps the heading
   clear of the top of the viewport. */
.glm-parts-pair .glm-notice-box{ height:100%; box-sizing:border-box; }
.glm-pkg-grid{ align-items:stretch; }
.glm-pkg-grid .glm-pkg{ height:100%; box-sizing:border-box; }
#factory-ordering{ scroll-margin-top:90px; }

/* --- 0.12.37: booking dialog description field (functions.php/glm.js) ---
   Owner, 2026-10-28: the Book Service popup should have a free text
   field that says "Describe to us what your boat needs". The details
   step's generic "Additional information" textarea is now labeled with
   exactly that, given a helper placeholder and an extra row; in the
   request email it arrives under "What the boat needs:". No CSS change
   in this build. */

/* --- 0.12.37 (addendum): Ask form phone tightening ---
   Owner's phone screenshot, 2026-10-28: the boat Ask form sprawls on a
   phone — the Email field's Enter/Confirm boxes stack with a tall dead
   gap between label and input and between the boxes, and the whole form
   scrolls forever. On desktop the layout was already verified tight;
   this is Gravity's small-screen behavior, which the theme never
   overrode. These ID-scoped rules outrank GF's class rules: on phones
   the fields' vertical rhythm tightens to 1rem, the email complex
   becomes one snug full-width column (Enter Email directly above
   Confirm Email, each full width), stray <br>/clear elements inside
   the complex are hidden, and complex spans size to their content
   instead of stretching. Desktop unchanged. */
@media (max-width:781px){
  #glm-ask-form .gform_fields{ row-gap:1rem; }
  #glm-ask-form .ginput_container_email{ grid-template-columns:1fr; gap:.55rem; }
  #glm-ask-form .ginput_complex > span{ align-self:start; width:100%; }
  #glm-ask-form .ginput_container_email br,
  #glm-ask-form .ginput_container_email .gf_clear{ display:none; }
  #glm-ask-form .ginput_container_email input{ width:100%; }
}

/* --- 0.12.37 (addendum 3): flow-margin guard for grid/flex pairs ---
   Root cause of the "uneven cards" reports, proven by measurement on
   0.12.36 (2026-10-28): paired cards came out EQUAL in height with
   shared bottoms, but every card after the first sat ~15px lower at
   the top. WordPress renders these group containers with the flow
   layout, whose global styles give every child except the first
   margin-block-start: var(--wp--style--block-gap) (1.2rem). Inside a
   CSS grid/flex row that margin shoves the later cards down (in a
   stretched row it also makes the first card look taller — the
   "Winterization card is taller" report). Grid and flex children must
   never carry that flow margin: the container's own gap does the
   spacing. */
.glm-services > *, .glm-parts-pair > *, .glm-pkg-grid > *,
.glm-contact-grid > *, .glm-reviews-flex > *{ margin-block-start:0 !important; }

/* --- 0.12.38: Ask form, as tight as possible ---
   Owner, 2026-10-28: make the boat Ask form as tight as possible to
   cut scrolling. Diagnosis (browser DOM pass on 0.12.37): no hidden or
   spacer field sits between Email and Phone; the dead space lives
   INSIDE the Email field — at desktop its label-to-input gaps measured
   60-80px against ~25-35px elsewhere, the signature of the stray <br>
   elements inside the email complex acting as flex items (the Name
   complex had them hidden in 0.12.30; the Email complex only had them
   hidden at phone widths). Companion change in the Gravity editor:
   form 3's Email field loses its "Confirm Email" box entirely (the
   single biggest height saving, ~a label + input + gaps). CSS here:
   stray <br>s hidden in the email complex at ALL widths; the email
   container's only grid children are its two spans (anything else —
   clear divs, stray paragraphs — is display:none); complex spans go
   back to plain block layout with tight sub-labels; the fields grid
   gap and GF's own gap variable drop to .85rem; fields align to the
   start of their rows; on phones the inquiry pane padding trims too. */
#glm-ask-form .gform_wrapper{ --gf-form-gap-y:.85rem; }
#glm-ask-form .gform_fields{ row-gap:.85rem; }
#glm-ask-form .gfield{ align-self:start; margin-bottom:0; padding-bottom:0; }
#glm-ask-form .ginput_container_email br{ display:none; }
#glm-ask-form .ginput_complex.ginput_container_email > :not(span){ display:none !important; }
#glm-ask-form .ginput_container_email{ gap:.5rem; }
#glm-ask-form .ginput_container_email > span{ display:block; }
#glm-ask-form .ginput_container_email label{ display:block; margin:0 0 .25rem; padding-top:0; }
#glm-ask-form .ginput_container_email input{ margin:0; }
@media (max-width:781px){
  .glm-inquiry{ padding-left:1.15rem !important; padding-right:1.15rem !important; }
  #glm-ask-form .gform_fields{ row-gap:.85rem; }
}

/* --- 0.12.46: Ask pane intro links never split across lines ---
   Owner phone screenshot (2026-10-29): the tightened form looks great,
   but the intro paragraph wrapped mid-phone-number ("303-791-" /
   "6100") and stranded the email on its own line. Keep the tel and
   mailto links whole so the paragraph wraps between words instead;
   both strings fit the phone-width pane on one line each. */
#glm-ask-form p a[href^="tel:"],
#glm-ask-form p a[href^="mailto:"]{
  white-space:nowrap;
}

/* --- 0.12.39: email input hidden by the 0.12.38 guard — fixed ---
   Defect in 0.12.38, caught by its own verification: with "Enable
   Email Confirmation" off, Gravity renders the single Email box as a
   bare <input> directly inside .ginput_container_email (no complex,
   no span) — and the 0.12.38 rule hiding every non-span child of that
   container hid the input itself, leaving only the "Email (Required)"
   label. The guard now applies only when the container is actually a
   complex (.ginput_complex.ginput_container_email), i.e. confirmation
   mode; in single-box mode nothing in that rule can touch the input. */

/* Boat photo lightbox (0.12.62): click the main gallery photo for a larger view. */
.glm-lightbox{ position:fixed; inset:0; z-index:9999; background:rgba(6,28,51,.95); display:flex; align-items:center; justify-content:center; }
.glm-lightbox[hidden]{ display:none; }
.glm-lb-img{ max-width:92vw; max-height:86vh; object-fit:contain; border-radius:10px; box-shadow:0 18px 60px rgba(0,0,0,.5); }
.glm-lb-img.is-sold{ filter:grayscale(1) brightness(.93); }
.glm-lb-close{ position:absolute; top:16px; right:18px; width:46px; height:46px; border-radius:50%; border:0; background:rgba(255,255,255,.12); color:#fff; font-size:1.5rem; line-height:1; cursor:pointer; z-index:2; }
.glm-lb-prev,.glm-lb-next{ position:absolute; top:50%; transform:translateY(-50%); width:52px; height:52px; border-radius:50%; border:0; background:rgba(255,255,255,.12); color:#fff; font-size:1.6rem; cursor:pointer; z-index:2; }
.glm-lb-prev{ left:16px; } .glm-lb-next{ right:16px; }
.glm-lb-count{ position:absolute; left:50%; transform:translateX(-50%); bottom:18px; background:rgba(255,255,255,.14); color:#fff; font:600 .85rem 'Libre Franklin',sans-serif; padding:.35em .9em; border-radius:999px; }
.glm-lb-close:hover,.glm-lb-prev:hover,.glm-lb-next:hover{ background:#0f6da8; }
@media (max-width:640px){ .glm-lb-prev{ left:8px; } .glm-lb-next{ right:8px; } .glm-lb-img{ max-width:96vw; max-height:88vh; } }
