/* Custom Dry Docks – front-end styles. Mobile first. Colours/fonts come from theme.json presets. */
:root {
	--cdd-ink: var(--wp--preset--color--ink, #08131d);
	--cdd-navy: var(--wp--preset--color--navy, #0b2236);
	--cdd-brand: var(--wp--preset--color--brand, #1876ad);
	--cdd-accent: var(--wp--preset--color--accent, #0756ea);
	--cdd-sky: var(--wp--preset--color--sky, #2ea3f2);
	--cdd-foam: var(--wp--preset--color--foam, #eef4f8);
	--cdd-mist: var(--wp--preset--color--mist, #d9d9d9);
	--cdd-slate: var(--wp--preset--color--slate, #475569);
	--cdd-radius: 18px;
	--cdd-shadow: 0 10px 30px rgba(8, 19, 29, .08), 0 2px 6px rgba(8, 19, 29, .05);
	--cdd-header-h: 72px;
	--cdd-wide: var(--wp--style--global--wide-size, 1200px);
	--cdd-gutter: clamp(1rem, 4vw, 2rem);
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--cdd-header-h) + 12px); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition: none !important; animation: none !important; } }
body { margin: 0; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: hidden; }
img, video, iframe { max-width: 100%; height: auto; }
a { text-underline-offset: .18em; }
:focus-visible { outline: 3px solid var(--cdd-sky); outline-offset: 3px; border-radius: 4px; }

.screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important; }
.skip-link:focus { clip: auto; clip-path: none; height: auto; width: auto; left: 1rem; top: 1rem; z-index: 1000; background: #fff; color: var(--cdd-ink); padding: .75rem 1rem; border-radius: 8px; box-shadow: var(--cdd-shadow); }

/* ---------- Header ---------- */
.site-header { position: sticky; top: 0; z-index: 100; background: rgba(8, 19, 29, .92); backdrop-filter: saturate(160%) blur(10px); -webkit-backdrop-filter: saturate(160%) blur(10px); border-bottom: 1px solid rgba(255,255,255,.08); }
.admin-bar .site-header { top: 46px; }
@media (min-width: 783px) { .admin-bar .site-header { top: 32px; } }
.site-header__inner { max-width: var(--cdd-wide); margin: 0 auto; padding: 0 var(--cdd-gutter); min-height: var(--cdd-header-h); display: flex; align-items: center; gap: .75rem; }
.site-branding { margin-right: auto; display: flex; align-items: center; }
.site-branding .custom-logo-link { display: block; line-height: 0; }
.site-branding .custom-logo { width: auto; height: 46px; }
.header-call, .menu-toggle { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 999px; color: #fff; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.14); cursor: pointer; padding: 0; }
.header-call { background: var(--cdd-accent); border-color: var(--cdd-accent); }
.menu-toggle__close { display: none; }
.menu-toggle[aria-expanded="true"] .menu-toggle__open { display: none; }
.menu-toggle[aria-expanded="true"] .menu-toggle__close { display: inline-flex; }

.main-navigation { position: fixed; inset: var(--cdd-header-h) 0 auto 0; background: var(--cdd-ink); max-height: calc(100vh - var(--cdd-header-h)); overflow-y: auto; padding: .5rem var(--cdd-gutter) 1.5rem; transform: translateY(-8px); opacity: 0; visibility: hidden; transition: opacity .2s ease, transform .2s ease, visibility .2s; border-bottom: 1px solid rgba(255,255,255,.08); }
.admin-bar .main-navigation { top: calc(var(--cdd-header-h) + 46px); }
.main-navigation.is-open { opacity: 1; visibility: visible; transform: none; }
.main-navigation ul { list-style: none; margin: 0; padding: 0; }
.main-navigation a { display: block; color: #fff; text-decoration: none; font-weight: 600; padding: .85rem .25rem; border-bottom: 1px solid rgba(255,255,255,.08); }
.main-navigation .sub-menu a { padding-left: 1.25rem; font-weight: 500; color: #cfe3f1; }
.main-navigation .current-menu-item > a, .main-navigation .current_page_item > a { color: var(--cdd-sky); }
.main-navigation .menu-item-has-children > a::after { content: ""; display: inline-block; width: .45em; height: .45em; margin-left: .5em; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-.2em) rotate(45deg); opacity: .7; }
.main-navigation .cta > a { margin-top: 1rem; text-align: center; background: var(--cdd-accent); border-radius: 999px; border: 0; padding: .85rem 1.25rem; }
.main-navigation .cta > a:hover { background: #fff; color: var(--cdd-ink); }

@media (min-width: 1000px) {
	.header-call, .menu-toggle { display: none; }
	.main-navigation { position: static; inset: auto; transform: none; opacity: 1; visibility: visible; background: none; padding: 0; overflow: visible; max-height: none; border: 0; }
	.main-navigation > ul { display: flex; align-items: center; gap: .25rem; }
	.main-navigation a { border: 0; padding: .55rem .8rem; border-radius: 999px; font-size: .97rem; }
	.main-navigation a:hover { background: rgba(255,255,255,.08); }
	.main-navigation li { position: relative; }
	.main-navigation .sub-menu { position: absolute; left: 0; top: calc(100% + 6px); min-width: 220px; background: #fff; border-radius: 14px; padding: .5rem; box-shadow: 0 20px 40px rgba(0,0,0,.25); opacity: 0; visibility: hidden; transform: translateY(6px); }
	.main-navigation .sub-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -10px; height: 10px; }
	.main-navigation li:hover > .sub-menu, .main-navigation li:focus-within > .sub-menu, .main-navigation li.is-open > .sub-menu { opacity: 1; visibility: visible; transform: none; }
	.main-navigation .sub-menu a { color: var(--cdd-ink); padding: .65rem .85rem; border-radius: 10px; }
	.main-navigation .sub-menu a:hover { background: var(--cdd-foam); color: var(--cdd-accent); }
	.main-navigation .cta > a { margin: 0 0 0 .5rem; padding: .65rem 1.2rem; white-space: nowrap; }
	.site-branding .custom-logo { height: 52px; }
}

/* ---------- Generic sections (block patterns) ---------- */
.site-main > article > .entry-content > *:first-child, .entry-content > .alignfull:first-child { margin-top: 0; }
.entry-content > .alignfull { margin-top: 0; margin-bottom: 0; }
.entry-content > .alignfull + .alignfull { margin-top: 0; }
.entry-content > :last-child { margin-bottom: 0; }
.site-main { min-height: 40vh; }
.site-main > article > .entry-content:not(:has(> .alignfull)) , .narrow { max-width: 760px; margin-left: auto; margin-right: auto; padding: 3rem var(--cdd-gutter); }

.cdd-section { padding-top: var(--wp--preset--spacing--60); padding-bottom: var(--wp--preset--spacing--60); }
.cdd-section > * { max-width: var(--cdd-wide) !important; }
.cdd-section--foam { background: var(--cdd-foam); }
.cdd-section--dark { background: linear-gradient(160deg, var(--cdd-navy) 0%, var(--cdd-ink) 100%); color: #dbe7f0; }
.cdd-section--dark h2, .cdd-section--dark h3 { color: #fff; }
.cdd-section--dark a:not(.wp-element-button) { color: #8fd0ff; }
.cdd-center { text-align: center; }
.cdd-center .wp-block-buttons { justify-content: center; }
.eyebrow { text-transform: uppercase; letter-spacing: .14em; font-size: .78rem; font-weight: 700; color: var(--cdd-brand); margin-bottom: .25rem !important; }
.cdd-section--dark .eyebrow, .cdd-hero .eyebrow { color: var(--cdd-sky); }
.lead { font-size: 1.18rem; color: var(--cdd-slate); }
.cdd-section--dark .lead { color: #c4d6e4; }
.cdd-section h2 { margin-top: 0; }

.wp-block-button.is-style-outline > .wp-block-button__link { background: transparent; border: 2px solid currentColor; color: var(--cdd-accent); padding: calc(.85rem - 2px) calc(1.6rem - 2px); }
.wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--cdd-accent); color: #fff; border-color: var(--cdd-accent); }
.wp-element-button { transition: background-color .15s ease, color .15s ease, transform .15s ease; }
.wp-element-button:hover { transform: translateY(-1px); }
.cdd-section--dark .wp-block-button__link { background: #fff; color: var(--cdd-ink); }
.cdd-section--dark .wp-block-button__link:hover { background: var(--cdd-sky); color: var(--cdd-ink); }

/* Hero */
.cdd-hero { color: #fff; padding-top: clamp(4rem, 10vw, 7rem); padding-bottom: clamp(4rem, 10vw, 7rem); }
/* Overlay only behind the text column, fading out so the photo (sunset, boat) shows on the right.
   Measured on the real pixels behind the text: body text >= 4.5:1, headline >= 3:1. */
.cdd-hero .wp-block-cover__background { background: linear-gradient(100deg, rgba(8,19,29,.92) 0%, rgba(8,19,29,.72) 45%, rgba(8,19,29,.25) 100%) !important; opacity: 1 !important; }
.cdd-hero:not(.cdd-hero--page) > .wp-block-cover__background { background: linear-gradient(90deg, rgba(8,19,29,.45) 0%, rgba(8,19,29,.4) 28%, rgba(8,19,29,.22) 42%, rgba(8,19,29,0) 55%) !important; opacity: 1 !important; }
.cdd-hero:not(.cdd-hero--page) .cdd-hero__lead { max-width: 29em; }
.cdd-hero:not(.cdd-hero--page) .cdd-hero__chips li { background: rgba(8,19,29,.55); border-color: rgba(255,255,255,.22); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.cdd-hero .wp-block-cover__inner-container { text-shadow: 0 2px 12px rgba(0,0,0,.55), 0 1px 3px rgba(0,0,0,.5); }
.cdd-hero .wp-block-button__link { text-shadow: none; }
.cdd-hero .eyebrow { color: #8fd0ff; }
.cdd-hero:not(.cdd-hero--page) .eyebrow { color: #fff; }
.cdd-hero .wp-block-cover__inner-container { max-width: var(--cdd-wide); width: 100%; }
.cdd-hero .wp-block-cover__inner-container > * { max-width: 680px; margin-left: 0 !important; }
.cdd-hero__title { color: #fff !important; font-size: clamp(2.4rem, 6.5vw, 4.4rem) !important; line-height: 1.04; letter-spacing: -.02em; margin: .35rem 0 1rem; text-wrap: balance; }
.cdd-hero__lead { font-size: clamp(1.08rem, 2vw, 1.3rem); color: #dbe7f0; max-width: 34em; }
.cdd-hero .wp-block-buttons { margin-top: 1.75rem; gap: .75rem; }
.cdd-hero .wp-block-button.is-style-outline > .wp-block-button__link { color: #fff; }
.cdd-hero .wp-block-button.is-style-outline > .wp-block-button__link:hover { background: #fff; color: var(--cdd-ink); border-color: #fff; }
.cdd-hero__chips { list-style: none; padding: 0; margin: 2rem 0 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.cdd-hero__chips li { font-size: .88rem; font-weight: 600; padding: .45rem .85rem .45rem 2rem; border-radius: 999px; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.18); position: relative; }
.cdd-hero__chips li::before { content: ""; position: absolute; left: .85rem; top: 50%; width: .5rem; height: .85rem; border-right: 2px solid var(--cdd-sky); border-bottom: 2px solid var(--cdd-sky); transform: translateY(-65%) rotate(45deg); }
.cdd-hero--page { padding-top: clamp(3rem, 8vw, 5rem); padding-bottom: clamp(3rem, 8vw, 5rem); }
.cdd-hero--page .cdd-hero__title { font-size: clamp(2.2rem, 5.5vw, 3.6rem) !important; }
/* Light page heroes (Boat Docks, Contact): soft shade behind the text column only, photo stays bright.
   Measured on real pixels at 1280/1440/1920/390: eyebrow >= 4.5:1, H1 >= 3:1, lead >= 4.5:1 (median). */
.cdd-hero--light > .wp-block-cover__background { background: linear-gradient(90deg, rgba(8,19,29,.55) 0%, rgba(8,19,29,.45) 40%, rgba(8,19,29,.15) 65%, rgba(8,19,29,0) 85%) !important; opacity: 1 !important; }
.cdd-hero--light .eyebrow { color: #fff; }
@media (max-width: 719px) {
	.cdd-hero--light > .wp-block-cover__background { background: rgba(8,19,29,.46) !important; }
}

/* Page hero for templates without H1 in content */
.page-hero { background: linear-gradient(160deg, var(--cdd-navy), var(--cdd-ink)); color: #fff; padding: clamp(3rem, 8vw, 5rem) var(--cdd-gutter); }
.page-hero__inner { max-width: var(--cdd-wide); margin: 0 auto; }
.page-hero__title { color: #fff; margin: 0; font-size: clamp(2.2rem, 5.5vw, 3.6rem); }
.page-hero__lead, .page-hero__meta { color: #c4d6e4; margin: .75rem 0 0; }
.page-hero .search-form { margin-top: 1.25rem; }

/* Service cards: start below the hero with a small white gap (no overlap) */
.cdd-service__img--jetski img { object-position: 50% 52%; }
.cdd-section--overlap { padding-top: 1.5rem; margin-top: 0 !important; position: relative; z-index: 2; padding-bottom: var(--wp--preset--spacing--50); }
@media (max-width: 719px) { .cdd-section--overlap { padding-top: 1.125rem; } }
.cdd-services { gap: 1.5rem !important; }
.cdd-service { background: #fff; border-radius: var(--cdd-radius); box-shadow: var(--cdd-shadow); overflow: hidden; display: flex; flex-direction: column; }
.cdd-service__img { margin: 0 !important; aspect-ratio: 16 / 9; overflow: hidden; }
.cdd-service__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.cdd-service:hover .cdd-service__img img { transform: scale(1.04); }
.cdd-service__body { padding: 1.5rem 1.5rem 1.75rem; margin: 0 !important; }
.cdd-service__body h2 { font-size: 1.6rem; margin: 0 0 .5rem; }
.cdd-service__body h2 a { color: inherit; text-decoration: none; }
.cdd-service__body .wp-block-buttons { margin-top: 1.25rem; }

/* Split layouts */
.cdd-split { gap: clamp(1.5rem, 4vw, 4rem) !important; align-items: center !important; }
.cdd-split--wide-right > .wp-block-column:last-child { flex-grow: 1.4 !important; }
.cdd-features { display: grid; gap: 1rem; margin-top: 1.75rem; }
@media (min-width: 640px) { .cdd-features { grid-template-columns: 1fr 1fr; } }
.cdd-feature { background: #fff; border: 1px solid #e3ebf1; border-radius: 14px; padding: 1.25rem 1.25rem 1.1rem; margin: 0 !important; }
.cdd-section--foam .cdd-feature { border-color: transparent; box-shadow: var(--cdd-shadow); }
.cdd-feature h3 { font-size: 1.12rem; margin: 0 0 .4rem; }
.cdd-feature p { margin: 0; color: var(--cdd-slate); font-size: .97rem; }
.cdd-feature__icon { margin: 0 0 .75rem !important; width: 52px; height: 52px; border-radius: 12px; background: var(--cdd-navy); display: grid; place-items: center; }
.cdd-feature__icon img { width: 34px; height: 34px; object-fit: contain; }
.cdd-features-grid { margin-top: 2.5rem; gap: 1rem !important; }

.cdd-video-card { background: var(--cdd-ink); border-radius: var(--cdd-radius); padding: 1rem; box-shadow: var(--cdd-shadow); max-width: 420px; margin-left: auto !important; margin-right: auto !important; }
.cdd-video-title { color: #fff !important; font-size: .82rem !important; text-transform: uppercase; letter-spacing: .16em; margin: .25rem .25rem .85rem !important; font-weight: 700; }
.cdd-portrait-video { margin: 0; }
.cdd-portrait-video video { width: 100%; aspect-ratio: 9 / 16; object-fit: cover; border-radius: 12px; background: #000; display: block; }

/* Dock range */
.cdd-docks { gap: 1rem !important; margin-top: 2rem; }
.cdd-dock-card { background: #fff; border-radius: 16px; padding: 1rem 1rem 1.15rem; box-shadow: 0 1px 2px rgba(8,19,29,.06); border: 1px solid #e3ebf1; margin: 0 !important; transition: box-shadow .2s ease, transform .2s ease; }
.cdd-dock-card:hover { box-shadow: var(--cdd-shadow); transform: translateY(-2px); }
.cdd-dock-card__media { margin: 0 0 .75rem !important; aspect-ratio: 3 / 2; display: grid; place-items: center; background: radial-gradient(circle at 50% 60%, #ffffff 0%, #f1f5f8 100%); border-radius: 12px; overflow: hidden; }
.cdd-dock-card__media img, .cdd-dock-card__media video { width: 100%; height: 100%; object-fit: contain; }
.cdd-dock-card__type { margin: 0 !important; font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .12em; color: var(--cdd-brand); }
.cdd-dock-card h3 { font-size: 1.08rem; margin: .2rem 0 .35rem; }
.cdd-dock-card__price { margin: 0 !important; font-size: .92rem; }
.cdd-dock-card__price a { font-weight: 600; text-decoration: none; }
.cdd-dock-card__price a::after { content: " →"; }

/* Image tiles & galleries */
.cdd-mosaic, .cdd-gallery { gap: .75rem !important; }
.cdd-gallery { margin-top: 2rem; }
.cdd-tile { margin: 0 !important; border-radius: 14px; overflow: hidden; aspect-ratio: 1 / 1; background: var(--cdd-mist); }
.cdd-tile img, .cdd-tile a { display: block; width: 100%; height: 100%; }
.cdd-tile img { object-fit: cover; transition: transform .4s ease; }
.cdd-tile:hover img { transform: scale(1.04); }
.cdd-tile--tall { aspect-ratio: 4 / 5; }
.cdd-mosaic--3 { margin-top: .75rem; }
.cdd-mosaic--3 .cdd-tile { aspect-ratio: 4 / 3; }
.cdd-feature-img { margin: 0 !important; border-radius: var(--cdd-radius); overflow: hidden; box-shadow: var(--cdd-shadow); }
.cdd-feature-img img { width: 100%; display: block; }
.cdd-gallery + .wp-block-buttons { margin-top: 2rem; }

/* Link tiles (Boat & Jet Ski) */
.cdd-link-tiles { gap: 1rem !important; margin-top: 2rem; }
.cdd-link-tile { position: relative; border-radius: var(--cdd-radius); overflow: hidden; margin: 0 !important; min-height: 280px; }
.cdd-link-tile__img { margin: 0 !important; position: absolute; inset: 0; }
.cdd-link-tile__img img, .cdd-link-tile__img a { width: 100%; height: 100%; display: block; object-fit: cover; }
.cdd-link-tile::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 40%, rgba(8,19,29,.85)); pointer-events: none; }
.cdd-link-tile__label { position: absolute; left: 1.25rem; right: 1.25rem; bottom: 1rem; z-index: 1; margin: 0 !important; }
.cdd-link-tile__label a { color: #fff !important; text-decoration: none; font-weight: 800; letter-spacing: .1em; font-size: 1.05rem; }
.cdd-link-tile__label a::after { content: " →"; }
.cdd-grow-card { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); border-radius: var(--cdd-radius); padding: 1.75rem; margin: 0 !important; display: flex; flex-direction: column; justify-content: center; }
.cdd-grow-card h3 { margin-top: 0; font-size: 1.4rem; }

/* Testimonials */
.cdd-quotes { gap: 1rem !important; margin-top: 2rem; }
.cdd-quote { background: #fff; border-radius: var(--cdd-radius); padding: 1.6rem 1.6rem 1.4rem; box-shadow: var(--cdd-shadow); margin: 0 !important; display: flex; flex-direction: column; position: relative; }
.cdd-quote::before { content: "★★★★★"; color: #f5b301; letter-spacing: .15em; font-size: .9rem; margin-bottom: .6rem; }
.cdd-quote h3 { font-size: 1.12rem; margin: 0 0 .5rem; }
.cdd-quote__text { color: var(--cdd-slate); font-size: .98rem; margin: 0 0 1rem !important; flex: 1; }
.cdd-quote__name { margin: 0 !important; font-weight: 700; color: var(--cdd-navy); }

/* Enquiry */
.cdd-section--enquiry { background: linear-gradient(180deg, #fff 0%, var(--cdd-foam) 100%); }
.cdd-section--enquiry ul { padding-left: 1.2rem; color: var(--cdd-slate); }
.cdd-form-card, .contact-band__form .wpcf7, .cdd-section--enquiry .wp-block-column:last-child { }
.cdd-section--enquiry .wp-block-column:last-child, .cdd-form-card { background: #fff; border-radius: var(--cdd-radius); box-shadow: var(--cdd-shadow); padding: clamp(1.25rem, 3vw, 2rem); }
.cdd-form-title { font-size: 1.35rem !important; margin-top: 0 !important; }
.cdd-form-fallback p:first-child { color: var(--cdd-slate); }
.cdd-admin-note { font-size: .85rem; background: #fff7e0; border: 1px dashed #e0b84a; padding: .6rem .8rem; border-radius: 8px; color: #6b4e00; }

/* Forms (CF7 and generic) */
.wpcf7 form p { margin: 0 0 .9rem; }
.wpcf7 label { font-weight: 600; font-size: .92rem; color: var(--cdd-navy); }
input[type="text"], input[type="email"], input[type="tel"], input[type="search"], input[type="url"], textarea, select {
	width: 100%; font: inherit; color: var(--cdd-ink); background: #fff; border: 1.5px solid #cfdbe5; border-radius: 10px; padding: .75rem .9rem; transition: border-color .15s, box-shadow .15s;
}
input:focus, textarea:focus, select:focus { outline: none; border-color: var(--cdd-accent); box-shadow: 0 0 0 4px rgba(7, 86, 234, .15); }
textarea { min-height: 140px; }
input[type="submit"], button[type="submit"] { font: inherit; font-weight: 700; background: var(--cdd-accent); color: #fff; border: 0; border-radius: 999px; padding: .85rem 1.8rem; cursor: pointer; }
input[type="submit"]:hover, button[type="submit"]:hover { background: var(--cdd-navy); }
.search-form { display: flex; gap: .5rem; }

/* Contact page */
.cdd-info-grid { gap: 1rem !important; margin-top: 1.5rem; }
.cdd-info { background: var(--cdd-foam); border-radius: 14px; padding: 1.1rem 1.2rem; margin: 0 !important; }
.cdd-info h3 { font-size: 1rem; margin: 0 0 .35rem; text-transform: uppercase; letter-spacing: .08em; color: var(--cdd-brand); }
.cdd-info p { margin: 0; }
.cdd-map-wrap { line-height: 0; }
.cdd-map { width: 100%; height: 420px; border: 0; display: block; filter: saturate(.9); }
.cdd-callout { background: var(--cdd-foam); border-left: 4px solid var(--cdd-accent); padding: .9rem 1.1rem; border-radius: 0 10px 10px 0; font-size: .95rem; letter-spacing: .02em; }
.cdd-section--dark .cdd-callout { background: rgba(255,255,255,.06); }
.cdd-caps { font-size: .95rem; letter-spacing: .03em; color: var(--cdd-navy); }
.cdd-panel { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); border-radius: var(--cdd-radius); padding: 1.75rem; }
.cdd-badge { display: inline-block; background: var(--cdd-sky); color: var(--cdd-ink); padding: .45rem .9rem; border-radius: 999px; font-size: .9rem; }
.cdd-badge strong { color: var(--cdd-ink); }
.cdd-subhead { margin-top: 3rem !important; }
.cdd-videos { gap: 1rem !important; margin-top: 1rem; }
.cdd-videos .wp-block-video { margin: 0; }
.cdd-videos video { border-radius: 14px; background: #000; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.cdd-prose > * { max-width: 760px !important; }
.cdd-prose h2 { font-size: 1.5rem; margin-top: 2.25rem; }
.cdd-prose h3 { font-size: 1.15rem; margin-top: 1.75rem; }

/* ---------- Contact band (global, above footer) ---------- */
.contact-band { background: linear-gradient(160deg, var(--cdd-navy) 0%, var(--cdd-ink) 100%); color: #dbe7f0; padding: var(--wp--preset--spacing--60) var(--cdd-gutter); }
.contact-band__inner { max-width: var(--cdd-wide); margin: 0 auto; display: grid; gap: clamp(1.5rem, 4vw, 4rem); align-items: start; }
@media (min-width: 900px) { .contact-band__inner { grid-template-columns: 1fr 1.1fr; } .contact-band__inner--no-form { grid-template-columns: 1fr; } .contact-band__inner--no-form .contact-list { grid-template-columns: repeat(3, 1fr); } }
.contact-band h2 { color: #fff; margin: .25rem 0 .5rem; font-size: var(--wp--preset--font-size--x-large); }
.contact-band .eyebrow { color: var(--cdd-sky); margin: 0; }
.contact-band__intro { color: #c4d6e4; font-size: 1.1rem; margin-top: 0; }
.contact-list { list-style: none; margin: 1.75rem 0 0; padding: 0; display: grid; gap: 1rem; }
.contact-list li { display: flex; gap: .9rem; align-items: flex-start; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1); border-radius: 14px; padding: 1rem 1.1rem; }
.contact-list .cdd-icon { flex: none; color: var(--cdd-sky); margin-top: .15rem; }
.contact-list h3 { color: #fff; font-size: .98rem; margin: 0 0 .2rem; font-weight: 600; }
.contact-list a { color: #fff; font-weight: 700; font-size: 1.1rem; text-decoration: none; }
.contact-list a:hover { color: var(--cdd-sky); }
.contact-band__form { background: #fff; color: var(--cdd-ink); border-radius: var(--cdd-radius); padding: clamp(1.25rem, 3vw, 2rem); box-shadow: 0 30px 60px rgba(0,0,0,.25); }
.contact-band__form .wp-element-button { color: #fff; text-decoration: none; display: inline-block; padding: .85rem 1.6rem; border-radius: 999px; background: var(--cdd-accent); font-weight: 700; }

/* ---------- Footer ---------- */
.site-footer { background: #050c13; color: #9fb3c3; font-size: .95rem; }
.site-footer__inner { max-width: var(--cdd-wide); margin: 0 auto; padding: 3rem var(--cdd-gutter) 2rem; display: grid; gap: 2rem; }
@media (min-width: 800px) { .site-footer__inner { grid-template-columns: 1.3fr 1fr 1fr; } }
.site-footer .custom-logo { height: 48px; width: auto; }
.site-footer__brand p { margin: .75rem 0 0; max-width: 28ch; }
.site-footer__heading { color: #fff; font-size: .8rem; text-transform: uppercase; letter-spacing: .14em; margin: 0 0 .9rem; }
.site-footer a { color: #dbe7f0; text-decoration: none; }
.site-footer a:hover { color: var(--cdd-sky); }
.site-footer__contact p { display: flex; gap: .6rem; align-items: flex-start; margin: 0 0 .6rem; }
.site-footer__contact .cdd-icon { flex: none; color: var(--cdd-sky); width: 18px; height: 18px; margin-top: .2rem; }
.site-footer__nav ul { list-style: none; margin: 0; padding: 0; columns: 2; }
.site-footer__nav li { margin-bottom: .5rem; break-inside: avoid; }
.site-footer__nav .cta a { color: var(--cdd-sky); }
.site-footer__legal { border-top: 1px solid rgba(255,255,255,.08); text-align: center; padding: 1.25rem var(--cdd-gutter); font-size: .85rem; }
.site-footer__legal p { margin: 0; }

/* ---------- Archives ---------- */
.archive-layout { max-width: var(--cdd-wide); margin: 0 auto; padding: 3rem var(--cdd-gutter); }
.post-grid { display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.post-card { background: #fff; border: 1px solid #e3ebf1; border-radius: var(--cdd-radius); overflow: hidden; }
.post-card__thumb img { width: 100%; aspect-ratio: 16/9; object-fit: cover; display: block; }
.post-card__body { padding: 1.25rem; }
.post-card__title { font-size: 1.25rem; margin: 0 0 .25rem; }
.post-card__title a { color: inherit; text-decoration: none; }
.post-card__meta { color: var(--cdd-slate); font-size: .85rem; margin: 0 0 .5rem; }
.nav-links { display: flex; gap: .5rem; justify-content: center; margin-top: 2rem; }
.nav-links .page-numbers { padding: .5rem .85rem; border-radius: 8px; background: var(--cdd-foam); text-decoration: none; }
.nav-links .current { background: var(--cdd-accent); color: #fff; }
.entry-thumb { max-width: var(--cdd-wide); margin: 2rem auto 0; padding: 0 var(--cdd-gutter); }
.entry-thumb img { border-radius: var(--cdd-radius); }

/* WP core alignment helpers for classic content */
.alignleft { float: left; margin: .3rem 1.5rem 1rem 0; }
.alignright { float: right; margin: .3rem 0 1rem 1.5rem; }
.aligncenter { display: block; margin-left: auto; margin-right: auto; }
.wp-caption-text, figcaption { font-size: .85rem; color: var(--cdd-slate); }
.cdd-form-grid { display: grid; gap: 0 1rem; }
@media (min-width: 560px) { .cdd-form-grid { grid-template-columns: 1fr 1fr; } }
.wpcf7-spinner { vertical-align: middle; }
.wpcf7-not-valid-tip { font-size: .85rem; }

/* Layout refinements */
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; }
@media (min-width: 720px) {
	.cdd-services { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
	.cdd-mosaic:not(.cdd-mosaic--3) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
	.cdd-mosaic--3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}
@media (min-width: 960px) {
	.cdd-link-tiles { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
	.cdd-quotes { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
	.cdd-docks { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
}
.site-footer__nav li:has(> a[href="#"]) { display: none; }
.site-footer__widgets .widget-title, .site-footer__widgets h2 { color: #fff; font-size: .8rem; text-transform: uppercase; letter-spacing: .14em; margin: 0 0 .9rem; }
.site-footer__widgets ul { list-style: none; padding: 0; margin: 0; }
@media (max-width: 719px) {
	.cdd-docks { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: .6rem !important; }
	.cdd-dock-card { padding: .6rem .6rem .8rem; border-radius: 12px; }
	.cdd-dock-card h3 { font-size: .95rem; }
	.cdd-dock-card__type { font-size: .66rem; }
	.cdd-dock-card__price { font-size: .82rem; }
	.cdd-mosaic, .cdd-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: .5rem !important; }
	.cdd-link-tile { min-height: 220px; }
	.cdd-hero__chips li { font-size: .8rem; }
}
.cdd-statement { font-size: clamp(1.35rem, 2.4vw, 1.75rem) !important; line-height: 1.3 !important; }
.cdd-feature__icon { background: var(--cdd-foam); }
@media (min-width: 960px) { .cdd-features-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } }
.cdd-split:has(.cdd-form-card), .cdd-section--enquiry .cdd-split { align-items: flex-start !important; }
@media (min-width: 720px) {
	.cdd-gallery--2, .cdd-videos { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
.cdd-gallery--2 { margin-top: 0; }
.cdd-gallery--2 .cdd-tile--tall { aspect-ratio: 4 / 3; }
.cdd-dock-card__price a { white-space: nowrap; }

/* ---------- 3D dock slider (scroll-snap; works without JS) ---------- */
.cdd-slider { position: relative; margin-top: 2rem !important; max-width: 1000px !important; }
.cdd-slider__track {
	display: flex; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scroll-behavior: smooth;
	overscroll-behavior-x: contain; scrollbar-width: none; position: relative;
	background: radial-gradient(ellipse at 50% 35%, #ffffff 0%, #e6f2fb 45%, #c4def1 100%);
	border-radius: 24px; box-shadow: inset 0 0 0 1px rgba(24, 118, 173, .12), var(--cdd-shadow);
}
.cdd-slider__track::-webkit-scrollbar { display: none; }
.cdd-slider__track:focus-visible { outline: 3px solid var(--cdd-sky); outline-offset: 4px; }
@media (prefers-reduced-motion: reduce) { .cdd-slider__track { scroll-behavior: auto; } }
.cdd-slider__track > .cdd-slide {
	flex: 0 0 100%; margin: 0 !important; scroll-snap-align: center; scroll-snap-stop: always;
	background: none; border: 0; box-shadow: none; border-radius: 0; transform: none !important;
	padding: clamp(1rem, 3vw, 2rem) clamp(1rem, 7vw, 5rem) clamp(1.25rem, 3vw, 2rem); text-align: center;
}
.cdd-slide .cdd-dock-card__media { aspect-ratio: 16 / 9; background: none; max-width: 760px; margin: 0 auto .5rem !important; border-radius: 0; }
.cdd-slide .cdd-dock-card__media img, .cdd-slide .cdd-dock-card__media video { width: 100%; height: 100%; object-fit: contain; mix-blend-mode: multiply; }
.cdd-slide .cdd-dock-card__type { font-size: .78rem; margin-top: .25rem !important; }
.cdd-slide h3 { font-size: clamp(1.25rem, 2.6vw, 1.7rem); margin: .15rem 0 .35rem; }
.cdd-slide .cdd-dock-card__price { font-size: 1rem; }

.cdd-slider__btn {
	position: absolute; top: calc(50% - 40px); transform: translateY(-50%); z-index: 2;
	width: 52px; height: 52px; border-radius: 999px; border: 0; cursor: pointer; display: grid; place-items: center;
	background: #fff; color: var(--cdd-navy); box-shadow: 0 6px 18px rgba(8, 19, 29, .18); transition: background .15s, color .15s;
}
.cdd-slider__btn:hover { background: var(--cdd-accent); color: #fff; }
.cdd-slider__btn svg { width: 24px; height: 24px; }
.cdd-slider__btn--prev { left: 12px; }
.cdd-slider__btn--next { right: 12px; }
.cdd-slider__nav { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-top: 1rem; flex-wrap: wrap; }
.cdd-slider__counter { font-weight: 700; color: var(--cdd-navy); font-variant-numeric: tabular-nums; min-width: 4.5em; text-align: center; }
.cdd-slider__dots { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; }
.cdd-slider__dot { width: 9px; height: 9px; padding: 0; border-radius: 999px; border: 0; background: #b9cfdf; cursor: pointer; transition: width .2s, background .2s; }
.cdd-slider__dot[aria-current="true"] { width: 26px; background: var(--cdd-accent); }
/* enlarge tap target without changing the look */
.cdd-slider__dot { position: relative; }
.cdd-slider__dot::after { content: ""; position: absolute; inset: -8px -3px; }
@media (max-width: 719px) {
	.cdd-slider__btn { width: 42px; height: 42px; top: calc(50% - 50px); }
	.cdd-slider__btn--prev { left: 6px; }
	.cdd-slider__btn--next { right: 6px; }
	.cdd-slider__dots { display: none; } /* counter only on small screens */
	.cdd-slider__track > .cdd-slide { padding-left: 3.25rem; padding-right: 3.25rem; }
}

/* ---------- Header: solid in every state (WCAG AA) ----------
   Ink #08131d background: white links 18.7:1, current item sky #2ea3f2 6.8:1, sub-menu links #cfe3f1 14.2:1,
   CTA white on #0756ea 5.9:1. Fully opaque so light sections underneath can never wash the text out. */
.site-header { background: var(--cdd-ink); -webkit-backdrop-filter: none; backdrop-filter: none; transition: box-shadow .2s ease; }
.site-header.is-scrolled { box-shadow: 0 6px 24px rgba(0, 0, 0, .28); }
.main-navigation a { color: #fff; }
.main-navigation .current-menu-item > a, .main-navigation .current_page_item > a, .main-navigation .current-menu-ancestor > a { color: var(--cdd-sky); }
@media (min-width: 1000px) {
	.main-navigation .sub-menu a { color: var(--cdd-ink); }
	.main-navigation .sub-menu .current-menu-item > a { color: var(--cdd-accent); }
}
@media (max-width: 999px) {
	.main-navigation { background: var(--cdd-ink); }
}

/* ---------- Slider arrows live in the nav row; overlaid beside the image only on wider screens ---------- */
.cdd-slider__nav { position: static; }
@media (max-width: 719px) {
	.cdd-slider__btn { position: static; transform: none; width: 44px; height: 44px; box-shadow: 0 3px 10px rgba(8, 19, 29, .15); }
	.cdd-slider__nav { gap: .75rem; }
	.cdd-slider__nav .cdd-slider__btn--prev { order: 0; }
	.cdd-slider__nav .cdd-slider__counter { order: 1; }
	.cdd-slider__nav .cdd-slider__btn--next { order: 2; }
	.cdd-slider__track > .cdd-slide { padding-left: 1rem; padding-right: 1rem; }
}

/* ---------- Existing CF7 form (#1382) markup from the Divi era: .cdd_one_half / .cdd_one_half_last / .cdd_one_full ---------- */
.wpcf7-form .clear { display: none; }
.wpcf7-form .cdd_one_half p, .wpcf7-form .cdd_one_half_last p, .wpcf7-form .cdd_one_full p { margin: 0 0 .9rem; }
.wpcf7-form .cdd_one_half label, .wpcf7-form .cdd_one_half_last label, .wpcf7-form .cdd_one_full label { display: block; margin-bottom: .3rem; }
@media (min-width: 560px) {
	.wpcf7-form:has(.cdd_one_half) { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
	.wpcf7-form:has(.cdd_one_half) > * { grid-column: 1 / -1; }
	.wpcf7-form:has(.cdd_one_half) > .cdd_one_half { grid-column: 1; }
	.wpcf7-form:has(.cdd_one_half) > .cdd_one_half_last { grid-column: 2; }
}

/* WP Rocket lazy rendering must never hide the closing blocks of the page (see inc/wp-rocket.php). */
.contact-band[data-wpr-lazyrender], .site-footer[data-wpr-lazyrender] { content-visibility: visible !important; contain-intrinsic-size: none !important; }

/* ---------- Home hero photo (centre console boat on dock, media 1912) ----------
   Phones: extra top padding lets the sunset sky show above the text; the overlay ramps from clear
   at the top to dark where the text starts (px stops, because the text starts after the fixed padding). */
@media (max-width: 719px) {
	.cdd-hero:not(.cdd-hero--page) { padding-top: 10.5rem; }
	.cdd-hero:not(.cdd-hero--page) > .wp-block-cover__image-background { object-position: 72% 50% !important; } /* keep the boat (right of frame) in view */
	.cdd-hero:not(.cdd-hero--page) { padding-bottom: 9rem; } /* clear strip so the dock shows above the cards */
	.cdd-hero:not(.cdd-hero--page) > .wp-block-cover__background { background: linear-gradient(180deg, rgba(8,19,29,0) 0, rgba(8,19,29,0) 110px, rgba(8,19,29,.42) 220px, rgba(8,19,29,.42) calc(100% - 190px), rgba(8,19,29,.06) calc(100% - 60px), rgba(8,19,29,0) 100%) !important; }
}

/* Our Work project gallery (core Gallery block) – square, lazy-loaded thumbnails: 4 columns desktop, 3 tablet, 2 mobile. */
.wp-block-gallery.has-nested-images.cdd-work-gallery { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; margin-top: 1.5rem; }
.wp-block-gallery.has-nested-images.cdd-work-gallery figure.wp-block-image:not(#individual-image) { width: auto !important; margin: 0; aspect-ratio: 1 / 1; border-radius: 12px; overflow: hidden; background: var(--cdd-mist); }
.wp-block-gallery.has-nested-images.cdd-work-gallery figure.wp-block-image a { display: block; width: 100%; height: 100%; }
.wp-block-gallery.has-nested-images.cdd-work-gallery figure.wp-block-image img { width: 100%; height: 100% !important; object-fit: cover; transition: transform .4s ease; }
.wp-block-gallery.has-nested-images.cdd-work-gallery figure.wp-block-image a:hover img { transform: scale(1.04); }
.wp-block-gallery.has-nested-images.cdd-work-gallery figure.wp-block-image a:focus-visible { outline: 3px solid var(--cdd-accent, #0b5cff); outline-offset: -3px; }
.cdd-work-gallery + .cdd-subhead { margin-top: 3rem; }
@media (max-width: 959px) { .wp-block-gallery.has-nested-images.cdd-work-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 719px) { .wp-block-gallery.has-nested-images.cdd-work-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; } }
@media (prefers-reduced-motion: reduce) { .cdd-work-gallery img { transition: none !important; } }

/* Lightbox (assets/js/site.js) */
.cdd-lb { position: fixed; inset: 0; z-index: 10000; display: flex; align-items: center; justify-content: center; background: rgba(4, 10, 16, .94); padding: 3.5rem 1rem 4rem; touch-action: pan-y; }
.cdd-lb[hidden] { display: none; }
.cdd-lb__figure { margin: 0; max-width: min(1024px, 100%); max-height: 100%; display: flex; flex-direction: column; align-items: center; }
.cdd-lb__img { display: block; max-width: 100%; max-height: calc(100vh - 9rem); max-height: calc(100dvh - 9rem); width: auto; height: auto; border-radius: 8px; background: #111; }
.cdd-lb__cap { color: #e9f0f5; font-size: .95rem; line-height: 1.4; text-align: center; margin-top: .75rem; max-width: 60ch; }
.cdd-lb__count { position: absolute; top: 1rem; left: 1rem; color: #e9f0f5; font-size: .9rem; }
.cdd-lb button { position: absolute; display: grid; place-items: center; width: 48px; height: 48px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, .14); color: #fff; font-size: 1.6rem; line-height: 1; cursor: pointer; }
.cdd-lb button:hover { background: rgba(255, 255, 255, .26); }
.cdd-lb button:focus-visible { outline: 3px solid #8fd0ff; outline-offset: 2px; }
.cdd-lb__close { top: .6rem; right: .6rem; }
.cdd-lb__prev { left: .6rem; top: 50%; transform: translateY(-50%); }
.cdd-lb__next { right: .6rem; top: 50%; transform: translateY(-50%); }
@media (max-width: 719px) { .cdd-lb__prev, .cdd-lb__next { top: auto; bottom: .75rem; transform: none; } .cdd-lb__prev { left: calc(50% - 60px); } .cdd-lb__next { right: calc(50% - 60px); } }
html.cdd-lb-open { overflow: hidden; }

