/* ==========================================================================
   Greyton Photography — shared design CSS (Divi 5 child theme)
   Tokens mirror the Divi Global Colours / Variables (GP White, Gold, Ink...).
   All text, images and links stay editable in the Divi Builder; this file
   only supplies layout polish, the "see-through script word" titles and the
   photography-specific components (masonry gallery, package cards, etc.).
   ========================================================================== */

:root {
	--gp-white: #ffffff;
	--gp-gold: #dfa63b;
	--gp-gold-hover: #c98f24;
	--gp-ink: #2b1f15;
	--gp-error: #9b2c1a;
	--gp-tint: #f5e6c8;
	--gp-max: 1184px;
	--gp-gutter: clamp(20px, 4vw, 48px);
	--gp-section: clamp(32px, 4.2vw, 56px);
	--gp-radius: 3px;
	--gp-head: 'Antic Didone', Georgia, serif;
	--gp-label: 'Josefin Sans', sans-serif;
	--gp-script: 'Petit Formal Script', cursive;
}

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body, body #page-container {
	background: var(--gp-white);
	color: var(--gp-ink);
	font-family: Georgia, serif;
}
body { font-size: clamp(16px, 1.4vw, 18px); line-height: 1.7; }
#main-content, #page-container { overflow-x: clip; }

/* Focus ring — Ink outline + Gold halo on every interactive element */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
	outline: 2px solid var(--gp-ink);
	outline-offset: 3px;
	box-shadow: 0 0 0 5px var(--gp-gold);
}

/* Divi theme chrome that the Theme Builder header/footer replaces */
#main-header, #top-header, #main-footer, #et-top-navigation, .et_pb_scroll_top { display: none !important; }
#page-container { padding-top: 0 !important; margin-top: 0 !important; }

/* ---------- Typography ---------- */
.gp h1, .gp h2, .gp h3, .gp h4,
.et_pb_section h1, .et_pb_section h2, .et_pb_section h3 {
	font-family: var(--gp-head);
	font-weight: 400;
	color: var(--gp-ink);
	padding-bottom: 0;
}
.gp-title h1, .gp-title h2 { text-transform: uppercase; letter-spacing: .04em; line-height: 1.15; margin: 0; }
.gp-title h1 { font-size: clamp(32px, 4.1vw, 52px); }
.gp-title h2 { font-size: clamp(26px, 3vw, 38px); }
.et_pb_section h3 { font-size: clamp(22px, 2.2vw, 28px); line-height: 1.2; }

.gp-eyebrow, .gp-label {
	font-family: var(--gp-label);
	font-weight: 600;
	font-size: 13px;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--gp-ink);
}
.gp-body p { font-size: clamp(16px, 1.4vw, 18px); line-height: 1.7; }
.gp-small, .gp-small p { font-size: 15px; line-height: 1.6; }

/* ---------- Title with see-through script word ---------- */
.gp-title { position: relative; }
.gp-title .et_pb_text_inner { position: relative; padding-top: clamp(22px, 2.8vw, 34px); }
.gp-title .gp-script {
	position: absolute;
	left: -.04em;
	top: 0;
	font-family: var(--gp-script);
	font-size: clamp(52px, 7.2vw, 87px);
	line-height: 1.2;
	color: rgba(223, 166, 59, .28);
	white-space: nowrap;
	pointer-events: none;
	user-select: none;
	z-index: 0;
}
.gp-title h1 + .gp-script, .gp-title--h1 .gp-script { font-size: clamp(64px, 9vw, 120px); }
.gp-title--h1 .et_pb_text_inner { padding-top: clamp(40px, 5vw, 60px); }
.gp-title h1, .gp-title h2 { position: relative; z-index: 1; }
.gp-title--center { text-align: center; }
.gp-title--center .gp-script { left: 50%; transform: translateX(-50%); }
.gp-title--xl .gp-script { font-size: clamp(84px, 14vw, 144px); }
.gp-title--xl h2 { font-size: clamp(56px, 8vw, 96px); }
.gp-title--xl .et_pb_text_inner { padding-top: clamp(60px, 8vw, 100px); }
.gp-on-dark .gp-title .gp-script, .gp-title.gp-on-dark .gp-script { color: rgba(255, 255, 255, .42); }
.gp-on-dark h1, .gp-on-dark h2, .gp-on-dark p, .gp-on-dark a { color: #fff; }

/* ---------- Buttons (Divi Button module: the class sits on the <a class="et_pb_button">) ---------- */
a.et_pb_button.gp-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	padding: 3px 28px 0 !important;
	border: 1.5px solid var(--gp-gold) !important;
	border-radius: 2px !important;
	background: var(--gp-gold) !important;
	color: var(--gp-ink) !important;
	font-family: var(--gp-label) !important;
	font-weight: 600 !important;
	font-size: 13px !important;
	letter-spacing: .16em !important;
	text-transform: uppercase !important;
	line-height: 1.2 !important;
	text-decoration: none;
	box-sizing: border-box;
	transition: background .2s ease, color .2s ease, border-color .2s ease;
}
a.et_pb_button.gp-btn::after, a.et_pb_button.gp-btn::before { display: none !important; content: none !important; }
a.et_pb_button.gp-btn:hover { background: var(--gp-gold-hover) !important; border-color: var(--gp-gold-hover) !important; color: var(--gp-ink) !important; padding: 3px 28px 0 !important; }
a.et_pb_button.gp-btn--outline { background: transparent !important; border-color: var(--gp-ink) !important; }
a.et_pb_button.gp-btn--outline:hover { background: var(--gp-gold) !important; border-color: var(--gp-gold) !important; }
a.et_pb_button.gp-btn--onphoto { background: transparent !important; border-color: #fff !important; color: #fff !important; }
a.et_pb_button.gp-btn--onphoto:hover { background: #fff !important; border-color: #fff !important; color: var(--gp-ink) !important; }
a.et_pb_button.gp-btn--text {
	background: transparent !important; min-height: 44px; padding: 3px 0 0 !important; border: 0 !important;
	border-bottom: 2px solid var(--gp-gold) !important; border-radius: 0 !important;
}
a.et_pb_button.gp-btn--text:hover { background: transparent !important; border-bottom-color: var(--gp-ink) !important; padding: 3px 0 0 !important; }
a.et_pb_button.gp-btn--full { width: 100%; }
.et_pb_button_module_wrapper:has(.gp-btn--center) { align-self: center; text-align: center; }
.et_pb_button_module_wrapper:has(.gp-btn--text) { margin-top: 8px; }

/* ---------- Layout scaffolding ---------- */
.gp-sec { padding: var(--gp-section) var(--gp-gutter) !important; }
.gp-sec--tight { padding-top: clamp(24px, 3vw, 40px) !important; padding-bottom: clamp(24px, 3vw, 40px) !important; }
.gp-sec > .et_pb_row, .gp-sec .et_pb_row.gp-row {
	width: 100% !important; max-width: var(--gp-max) !important; padding: 0 !important; margin-left: auto; margin-right: auto;
}
.gp-center { text-align: center; }
.gp-center .et_pb_text_inner { margin-left: auto; margin-right: auto; }
.gp-narrow .et_pb_text_inner { max-width: 760px; margin-left: auto; margin-right: auto; }
.gp-narrow p { text-wrap: pretty; }
.gp-border-top { border-top: 1px solid var(--gp-gold); }

/* ---------- Header (Theme Builder) ---------- */
.gp-header { background: var(--gp-white); border-bottom: 1px solid var(--gp-gold); padding: 0 !important; position: relative; z-index: 50; }
.gp-header > .et_pb_row { width: 100% !important; max-width: 1280px !important; padding: 12px var(--gp-gutter) !important; margin: 0 auto; }
.gp-header .et_pb_menu { background: transparent; }
.gp-header .et_pb_menu .et_pb_menu__wrap { justify-content: flex-end; }
.gp-header .et_pb_menu__logo img { width: 160px; height: auto; max-height: none; }
.gp-header .et_pb_menu .et-menu > li { padding-left: 32px; padding-right: 0; }
.gp-header .et_pb_menu .et-menu > li > a {
	font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .16em; text-transform: uppercase;
	color: var(--gp-ink); padding: 6px 0 3px; border-bottom: 2px solid transparent; opacity: 1; min-height: 44px; display: inline-flex; align-items: center;
}
.gp-header .et_pb_menu .et-menu > li.current-menu-item > a,
.gp-header .et_pb_menu .et-menu > li.current-menu-ancestor > a { border-bottom-color: var(--gp-gold); }
.gp-header .et_pb_menu .et-menu > li > a:hover { border-bottom-color: var(--gp-ink); opacity: 1; }
.gp-header .et_pb_menu .et-menu li.gp-menu-cta > a {
	background: var(--gp-gold); color: var(--gp-ink); padding: 3px 22px 0; border-radius: 2px; border-bottom: 0;
}
.gp-header .et_pb_menu .et-menu li.gp-menu-cta > a:hover { background: var(--gp-gold-hover); }
.gp-header .et_pb_menu .nav li ul, .gp-header .et_pb_menu .et-menu .sub-menu {
	background: #fff; border: 1px solid var(--gp-gold); border-top: 1px solid var(--gp-gold); box-shadow: 0 8px 24px rgba(43, 31, 21, .08); padding: 8px 0; min-width: 240px; width: 240px;
}
.gp-header .et_pb_menu .et-menu .sub-menu li a {
	font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .12em; text-transform: uppercase; color: var(--gp-ink);
	min-height: 44px; display: flex; align-items: center; padding: 3px 20px 0; width: 100%; border-left: 3px solid transparent;
}
.gp-header .et_pb_menu .et-menu .sub-menu li.current-menu-item a { border-left-color: var(--gp-gold); }
.gp-header .et_pb_menu .et-menu .sub-menu li a:hover { background: var(--gp-gold); color: var(--gp-ink); }
.gp-header .mobile_menu_bar::before { color: var(--gp-ink); }
.gp-header .et_mobile_menu { background: #fff; border-top: 1px solid var(--gp-gold); padding: 8px 20px 20px; }
.gp-header .et_mobile_menu li a {
	font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .16em; text-transform: uppercase; color: var(--gp-ink);
	border-bottom: 1px solid var(--gp-tint); padding: 14px 0 12px; min-height: 48px;
}
.gp-header .et_mobile_menu li.gp-menu-cta > a { background: var(--gp-gold); text-align: center; border-radius: 2px; margin-top: 12px; border: 0; }
@media (max-width: 980px) {
	.gp-header > .et_pb_row { padding: 0 12px 0 14px !important; }
	.gp-header .et_pb_menu__logo img { width: 112px; }
}

/* ---------- Footer (Theme Builder) ---------- */
.gp-footer { background: #fff; color: var(--gp-ink); border-top: 3px solid var(--gp-gold); padding: 80px var(--gp-gutter) 40px !important; }
.gp-footer > .et_pb_row { width: 100% !important; max-width: 1280px !important; padding: 0 !important; margin: 0 auto; }
.gp-footer .gp-foot-tag p { font-family: var(--gp-head); font-size: 26px; line-height: 1.25; max-width: 320px; }
.gp-footer .gp-foot-head { font-family: var(--gp-label); font-weight: 600; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; margin-bottom: 12px; display: block; }
.gp-footer ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.gp-footer li { padding: 0; font-size: 15px; }
.gp-footer a { color: var(--gp-ink); text-decoration: none; overflow-wrap: anywhere; }
.gp-footer a:hover { text-decoration: underline; text-decoration-color: var(--gp-gold); text-underline-offset: 4px; }
.gp-footer .gp-foot-legal { border-top: 1px solid var(--gp-gold); margin-top: 64px; padding-top: 24px; }
.gp-footer .gp-foot-legal p { font-size: 14px; margin: 0; }
.gp-footer .gp-foot-legal .et_pb_text_inner { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px 24px; }
.gp-footer .gp-foot-logo img { width: 200px; height: auto; margin-left: -12px; }
@media (max-width: 980px) { .gp-footer { padding: 56px 20px 100px !important; } }

/* Sticky mobile bar: Call + Book a shoot (phones only) */
.gp-mobilebar { display: none !important; }
@media (max-width: 767px) {
	.gp-mobilebar {
		display: block !important; position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
		background: #fff; border-top: 1px solid var(--gp-gold); padding: 10px 12px calc(10px + env(safe-area-inset-bottom)) !important;
	}
	.gp-mobilebar > .et_pb_row { width: 100% !important; padding: 0 !important; display: flex; gap: 10px; }
	.gp-mobilebar .et_pb_column { width: 50% !important; margin: 0 !important; }
	.gp-mobilebar .et_pb_button_module_wrapper, .gp-mobilebar a.et_pb_button { width: 100%; }
}

/* ---------- Hero (home) ---------- */
.gp-hero { position: relative; min-height: min(86vh, 820px); display: flex; align-items: flex-end; padding: 0 !important; overflow: hidden; }
.gp-hero > .et_pb_row { width: 100% !important; max-width: 1280px !important; padding: 0 var(--gp-gutter) clamp(48px, 7vw, 96px) !important; margin: 0 auto; position: static; z-index: 2; }
.gp-hero .gp-hero-title, .gp-hero .et_pb_button_module_wrapper { position: relative; z-index: 2; }
.gp-hero .gp-hero-script { position: absolute !important; left: 0; right: 0; top: 36%; width: 100% !important; z-index: 1; pointer-events: none; text-align: center; }
.gp-hero .gp-script-hero {
	display: block; text-align: center; transform: translateY(-50%);
	font-family: var(--gp-script); font-size: clamp(64px, 10vw, 150px); line-height: 1.2; color: rgba(255, 255, 255, .5);
	white-space: nowrap; pointer-events: none; user-select: none;
}
.gp-hero h1 { color: #fff; text-transform: uppercase; letter-spacing: .04em; font-size: clamp(32px, 4.1vw, 52px); max-width: 760px; }
.gp-hero .et_pb_button_module_wrapper { display: inline-block; margin-right: 12px; margin-top: 8px; }
@media (max-width: 767px) {
	.gp-hero { min-height: 125vw; }
	.gp-hero .et_pb_button_module_wrapper { display: block; margin-right: 0; }
	.gp-hero a.et_pb_button.gp-btn { width: 100%; }
}

/* ---------- Service banner (service pages) ---------- */
.gp-banner { position: relative; min-height: min(56vh, 520px); padding: 0 !important; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.gp-banner .gp-script-banner {
	font-family: var(--gp-script); font-size: clamp(64px, 12vw, 170px); line-height: 1.2; color: rgba(255, 255, 255, .5);
	text-align: center; pointer-events: none; user-select: none; display: block;
}
.gp-crumbs, .gp-crumbs p, .gp-crumbs a {
	font-family: var(--gp-label); font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: #fff; margin: 0; text-decoration: none;
}
.gp-crumbs a:hover { text-decoration: underline; text-underline-offset: 4px; }
.gp-banner > .et_pb_row { width: 100% !important; max-width: 1280px !important; padding: 0 var(--gp-gutter) !important; }

/* ---------- Intro / pairing text ---------- */
.gp-intro p { font-size: clamp(17px, 1.5vw, 20px); line-height: 1.75; text-wrap: pretty; }
.gp-intro p + p { margin-top: 18px; }

/* ---------- Service tiles ---------- */
.gp-tiles .gp-tile-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 56px 24px; }
.gp-tiles .gp-tile-row .et_pb_column { width: 100% !important; margin: 0 !important; }
.gp-tile .et_pb_image, .gp-tile .et_pb_image_wrap, .gp-tile img { display: block; width: 100%; }
.gp-tile img { aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--gp-radius); transition: opacity .3s ease; }
.gp-tile:hover img { opacity: .86; }
.gp-tile h3 { margin: 16px 0 8px; }
.gp-tile p { font-size: 16px; line-height: 1.6; margin-bottom: 8px; }
@media (max-width: 980px) { .gp-tiles .gp-tile-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
	.gp-tiles .gp-tile-row { grid-template-columns: minmax(0, 1fr); gap: 40px; }
	.gp-tiles .gp-tile-row + .gp-tile-row { margin-top: 40px !important; }
	.gp-tile img { aspect-ratio: 3 / 2; }
}

/* ---------- Tabs (home gallery filter) ---------- */
.gp-tabs.et_pb_tabs { border: 0; background: transparent; }
.gp-tabs .et_pb_tabs_controls { background: transparent; border: 0; display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 28px; }
.gp-tabs .et_pb_tabs_controls::after { display: none; }
.gp-tabs .et_pb_tabs_controls li {
	float: none; border: 1.5px solid transparent; background: transparent; border-radius: 2px; padding: 0; margin: 0;
}
.gp-tabs .et_pb_tabs_controls li a {
	font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .16em; text-transform: uppercase; color: var(--gp-ink);
	padding: 14px 20px 11px; min-height: 44px; display: block;
}
.gp-tabs .et_pb_tabs_controls li.et_pb_tab_active { background: var(--gp-gold); border-color: var(--gp-gold); }
.gp-tabs .et_pb_tabs_controls li:not(.et_pb_tab_active):hover { border-color: var(--gp-ink); }
.gp-tabs .et_pb_all_tabs { background: transparent; border: 0; }
.gp-tabs .et_pb_tab { padding: 0; }

/* ---------- Masonry gallery (Divi Gallery module, original photo shapes) ---------- */
.gp-gallery .et_pb_gallery_items { display: block !important; column-count: 3; column-gap: 14px; }
.gp-gallery .et_pb_gallery_item { float: none !important; width: 100% !important; margin: 0 0 14px !important; break-inside: avoid; clear: none !important; display: block !important; }
.gp-gallery .et_pb_gallery_image { border-radius: var(--gp-radius); overflow: hidden; }
.gp-gallery .et_pb_gallery_image img { display: block; width: 100%; height: auto !important; aspect-ratio: auto !important; object-fit: cover; transition: opacity .3s ease; }
.gp-gallery .et_pb_gallery_image:hover img { opacity: .86; }
.gp-gallery .et_overlay { display: none !important; }
.gp-gallery .et_pb_gallery_pagination { margin-top: 24px; text-align: center; }
.gp-gallery .et_pb_gallery_pagination a { font-family: var(--gp-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; font-size: 13px; color: var(--gp-ink); }
.gp-gallery .et_pb_gallery_pagination li.active a { border-bottom: 2px solid var(--gp-gold); }
@media (max-width: 767px) { .gp-gallery .et_pb_gallery_items { column-count: 2; column-gap: 8px; } .gp-gallery .et_pb_gallery_item { margin-bottom: 8px !important; } }

/* ---------- Package cards (Divi Pricing Tables) ---------- */
.gp-packages.et_pb_pricing { display: grid; grid-template-columns: repeat(var(--gp-cols, 3), minmax(0, 1fr)); gap: clamp(14px, 2vw, 24px); }
.gp-packages.gp-cols-2 { --gp-cols: 2; max-width: 820px; margin: 0 auto; }
.gp-packages.et_pb_pricing.gp-cols-1 { --gp-cols: 1; max-width: 400px !important; margin-left: auto !important; margin-right: auto !important; }
.gp-packages .et_pb_pricing_table { width: 100% !important; margin: 0 !important; float: none; padding: 0; border: 1px solid var(--gp-gold); border-radius: 4px; background: #fff; box-shadow: none; display: flex; flex-direction: column; }
.gp-packages .et_pb_pricing_table .et_pb_pricing_heading { background: transparent; padding: clamp(24px, 3vw, 36px) clamp(24px, 3vw, 36px) 0; text-align: left; }
.gp-packages .et_pb_pricing_heading h2 { font-family: var(--gp-head); font-weight: 400; font-size: 28px; line-height: 1.15; text-transform: none; letter-spacing: 0; padding: 0; color: var(--gp-ink); }
.gp-packages .et_pb_pricing_heading .et_pb_pricing_subtitle { font-family: var(--gp-label); font-weight: 600; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--gp-ink); padding-bottom: 8px; display: block; }
.gp-packages .et_pb_pricing_content_top { background: transparent; border: 0; padding: 20px clamp(24px, 3vw, 36px) 20px; margin: 0; border-bottom: 1px solid var(--gp-gold); margin: 0 clamp(24px, 3vw, 36px); padding-left: 0; padding-right: 0; text-align: left; }
.gp-packages .et_pb_dollar_sign, .gp-packages .et_pb_sum { font-family: var(--gp-label); font-weight: 600; font-size: 40px; letter-spacing: .02em; color: var(--gp-ink); line-height: 1.1; }
.gp-packages .et_pb_pricing_content { padding: 20px clamp(24px, 3vw, 36px) 0; flex: 1; }
.gp-packages .et_pb_pricing { padding: 0; margin: 0; }
.gp-packages .et_pb_pricing li { padding: 0 0 12px 30px; margin: 0; border: 0; font-size: 16px; line-height: 1.5; color: var(--gp-ink); position: relative; text-align: left; }
.gp-packages .et_pb_pricing li span::before, .gp-packages .et_pb_pricing li::before { content: none; }
.gp-packages .et_pb_pricing li::before { content: ''; position: absolute; left: 3px; top: .62em; width: 8px; height: 8px; border-radius: 50%; background: var(--gp-gold); }
.gp-packages .et_pb_pricing li span { color: inherit; }
.gp-packages .et_pb_button_wrapper { padding: 20px clamp(24px, 3vw, 36px) clamp(24px, 3vw, 36px); background: transparent; }
.gp-packages .et_pb_pricing_table_button {
	display: flex; align-items: center; justify-content: center; width: 100%; min-height: 52px; padding: 3px 12px 0 !important; border: 0 !important; border-radius: 2px !important;
	background: var(--gp-gold) !important; color: var(--gp-ink) !important; font-family: var(--gp-label) !important; font-weight: 600 !important; font-size: 13px !important;
	letter-spacing: .16em !important; text-transform: uppercase !important; text-align: center;
}
.gp-packages .et_pb_pricing_table_button::after { display: none !important; }
.gp-packages .et_pb_pricing_table_button:hover { background: var(--gp-gold-hover) !important; padding: 3px 12px 0 !important; }
.gp-packages-note { font-style: italic; text-align: center; }
.gp-pkg-flag { display: inline-block; font-family: var(--gp-label); font-weight: 600; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; background: var(--gp-tint); padding: 5px 8px 3px; }
@media (max-width: 980px) { .gp-packages.et_pb_pricing { grid-template-columns: 1fr; } }

/* ---------- "The shoot" section: tip card + text ---------- */
.gp-shoot > .et_pb_row { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 88px; align-items: start; }
.gp-shoot > .et_pb_row .et_pb_column { width: 100% !important; margin: 0 !important; }
.gp-shoot .gp-tip-col { order: 1; margin-top: 72px; }
.gp-shoot .gp-text-col { order: 2; }
.gp-tip { background: var(--gp-gold); color: var(--gp-ink); border-radius: 6px; padding: 40px 36px; }
.gp-tip .gp-tip-script { font-family: var(--gp-script); font-size: 30px; line-height: 1.2; display: block; margin-bottom: 14px; }
.gp-tip p { font-family: var(--gp-head); font-size: 24px; line-height: 1.45; text-wrap: pretty; margin: 0; }
.gp-tip p + p { font-family: Georgia, serif; font-size: 16px; line-height: 1.65; margin-top: 14px; }
.gp-activities-label { font-style: italic; font-size: 17px; margin: 8px 0 14px; display: block; }
.gp-activities ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 40px; }
.gp-activities li { display: flex; align-items: baseline; gap: 14px; font-family: var(--gp-head); font-size: 21px; line-height: 1.35; padding: 0; }
.gp-activities li::before { content: ''; flex: 0 0 auto; width: 7px; height: 7px; border-radius: 50%; background: var(--gp-gold); transform: translateY(-3px); }
@media (max-width: 980px) {
	.gp-shoot > .et_pb_row { grid-template-columns: 1fr; gap: 32px; }
	.gp-shoot .gp-tip-col { order: 2; margin-top: 0; }
	.gp-shoot .gp-text-col { order: 1; }
	.gp-tip { padding: 28px 24px; }
	.gp-tip p { font-size: 21px; }
	.gp-tip .gp-tip-script { font-size: 26px; }
	.gp-activities ul { grid-template-columns: 1fr; }
	.gp-activities li { font-size: 19px; }
}

/* ---------- Reviews (Divi Slider) ---------- */
.gp-reviews .et_pb_slider { background: transparent; }
.gp-reviews .et_pb_slide { background: transparent !important; padding: 0 !important; }
.gp-reviews .et_pb_container { min-height: 0 !important; height: auto; padding: 0 clamp(40px, 8vw, 96px); }
.gp-reviews .et_pb_slider_container_inner { padding: 0; }
.gp-reviews .et_pb_slide_description { padding: 0 !important; display: flex; flex-direction: column; text-align: left; position: relative; }
.gp-reviews .et_pb_slide_description::before {
	content: '\201C'; font-family: var(--gp-head); font-size: 96px; line-height: .7; color: var(--gp-gold); display: block; height: 48px; text-shadow: none;
}
.gp-reviews .et_pb_slide_content { order: 1; font-family: var(--gp-head); font-size: clamp(20px, 2.2vw, 28px); line-height: 1.4; color: var(--gp-ink); text-shadow: none; text-wrap: pretty; padding-bottom: 0; }
.gp-reviews .et_pb_slide_content p { font-size: inherit; line-height: inherit; color: inherit; }
.gp-reviews .et_pb_slide_title { order: 2; font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .16em; text-transform: uppercase; color: var(--gp-ink); margin-top: 20px; padding: 0; text-shadow: none; }
.gp-reviews .et-pb-arrow-prev, .gp-reviews .et-pb-arrow-next { color: var(--gp-ink); opacity: 1; width: 44px; height: 44px; }
.gp-reviews .et-pb-arrow-prev:hover, .gp-reviews .et-pb-arrow-next:hover { color: var(--gp-gold-hover); }
.gp-reviews .et-pb-controllers { display: none; }
.gp-review-prompt p { font-size: 17px; margin-bottom: 14px; }

/* ---------- About: steps and checklist ---------- */
.gp-steps .gp-step-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; }
.gp-steps .gp-step { width: 100% !important; margin: 0 !important; border-top: 1.5px solid var(--gp-ink); padding-top: 20px; }
.gp-steps .gp-step-n { font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .2em; display: block; margin-bottom: 12px; }
.gp-steps h3 { margin: 0 0 12px; font-size: 24px; }
.gp-steps p { font-size: 16px; line-height: 1.65; }
@media (max-width: 980px) { .gp-steps .gp-step-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { .gp-steps .gp-step-row { grid-template-columns: 1fr; } }
.gp-checks ul { list-style: none; padding: 0; margin: 12px 0 0; display: flex; flex-wrap: wrap; gap: 8px 28px; }
.gp-checks li { font-family: var(--gp-head); font-size: 21px; display: flex; align-items: baseline; gap: 12px; padding: 0; }
.gp-checks li::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--gp-gold); transform: translateY(-3px); }
.gp-portrait img, .gp-feature img { width: 100%; height: auto; border-radius: var(--gp-radius); display: block; }
.gp-portrait img { aspect-ratio: 4 / 5; object-fit: cover; }
.gp-feature img { aspect-ratio: 3 / 2; object-fit: cover; }
.gp-split > .et_pb_row { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(32px, 6vw, 88px); align-items: center; }
.gp-split > .et_pb_row .et_pb_column { width: 100% !important; margin: 0 !important; }
@media (max-width: 980px) { .gp-split > .et_pb_row { grid-template-columns: 1fr; } }

/* ---------- Book Now: contact cards + form ---------- */
.gp-contact-link a { font-family: var(--gp-head); font-size: clamp(22px, 2.4vw, 30px); color: var(--gp-ink); text-decoration: none; overflow-wrap: anywhere; }
.gp-contact-link .gp-label { display: block; margin-bottom: 4px; }
.gp-contact-link a:hover { text-decoration: underline; text-decoration-color: var(--gp-gold); text-underline-offset: 6px; }
.gp-form-card { background: #fff; border: 1px solid var(--gp-gold); border-radius: 4px; padding: clamp(24px, 4vw, 44px) clamp(20px, 4vw, 48px); }
.gp-form-card .wpforms-container { margin: 0; }
.gp-form-card .wpforms-field { padding: 0 0 22px; }
.gp-form-card .wpforms-field-label { font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .12em; text-transform: uppercase; color: var(--gp-ink); margin-bottom: 8px; }
.gp-form-card input[type=text], .gp-form-card input[type=email], .gp-form-card input[type=tel], .gp-form-card input[type=number], .gp-form-card select, .gp-form-card textarea {
	width: 100%; max-width: 100% !important; font-family: Georgia, serif; font-size: 17px; color: var(--gp-ink); background: #fff;
	border: 1.5px solid var(--gp-ink); border-radius: 2px; padding: 12px 14px; min-height: 52px; box-shadow: none;
}
.gp-form-card textarea { min-height: 150px; }
.gp-form-card input:focus, .gp-form-card select:focus, .gp-form-card textarea:focus { outline: 2px solid var(--gp-ink); outline-offset: 3px; box-shadow: 0 0 0 5px var(--gp-gold); }
.gp-form-card label.wpforms-error, .gp-form-card .wpforms-error { color: var(--gp-error); font-size: 15px; }
.gp-form-card input.wpforms-error, .gp-form-card select.wpforms-error, .gp-form-card textarea.wpforms-error { border-color: var(--gp-error); }
.gp-form-card .wpforms-submit-container { padding-top: 6px; }
.gp-form-card button.wpforms-submit {
	min-height: 52px; padding: 3px 28px 0; border: 0; border-radius: 2px; background: var(--gp-gold); color: var(--gp-ink);
	font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .16em; text-transform: uppercase; cursor: pointer; transition: background .2s ease;
}
.gp-form-card button.wpforms-submit:hover { background: var(--gp-gold-hover); }
.gp-form-card .wpforms-confirmation-container-full { background: var(--gp-tint); border: 0; color: var(--gp-ink); font-family: var(--gp-head); font-size: 22px; padding: 28px; }

/* ---------- CTA band ---------- */
.gp-cta { background: #fff; border-top: 1px solid var(--gp-gold); text-align: center; }
.gp-cta .gp-cta-quote p { font-family: var(--gp-head); font-size: clamp(26px, 3.4vw, 44px); line-height: 1.25; text-wrap: balance; }

/* ---------- Gallery filter bar (home) ---------- */
.gp-filter { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 28px; }
.gp-filter button {
	font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .16em; text-transform: uppercase; color: var(--gp-ink);
	background: transparent; border: 1.5px solid transparent; border-radius: 2px; padding: 14px 20px 11px; min-height: 44px; cursor: pointer; transition: border-color .2s ease, background .2s ease;
}
.gp-filter button:hover { border-color: var(--gp-ink); }
.gp-filter button.is-active { background: var(--gp-gold); border-color: var(--gp-gold); }
.gp-masonry { column-count: 3; column-gap: 14px; display: block; }
.gp-masonry .et_pb_module.gp-item, .gp-masonry .gp-item { break-inside: avoid; margin: 0 0 14px !important; }
.gp-masonry .gp-item img { display: block; width: 100%; height: auto; border-radius: var(--gp-radius); transition: opacity .3s ease; }
.gp-masonry .gp-item:hover img { opacity: .86; }
@media (max-width: 767px) { .gp-masonry { column-count: 2; column-gap: 8px; } .gp-masonry .gp-item { margin-bottom: 8px !important; } }
.gp-quote { margin: 0 0 40px; padding: 0 0 40px; border: 0; border-bottom: 1px solid var(--gp-gold); }
.gp-quote p { font-family: var(--gp-head); font-size: clamp(20px, 2.2vw, 28px); line-height: 1.4; }
.gp-quote cite { font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .16em; text-transform: uppercase; font-style: normal; display: block; margin-top: 16px; }
.gp-narrow-left .et_pb_text_inner { max-width: 760px; }

/* Header: hide menu-module search/cart icons (not in the design) */
.gp-header .et_pb_menu__search-button, .gp-header .et_pb_menu__cart-button, .gp-header .et_pb_menu__search-container { display: none !important; }


/* ---------- Divi 5 flex-module fixes: modules fill their column ---------- */
.gp-sec .et_pb_column > .et_pb_module:not(.et_pb_button_module_wrapper):not(.et_pb_image) { width: 100%; max-width: 100%; }
.et_pb_text.gp-center, .et_pb_text.gp-center .et_pb_text_inner { text-align: center; }
.et_pb_text.gp-narrow .et_pb_text_inner { max-width: 760px; margin-left: auto; margin-right: auto; }
.et_pb_text.gp-narrow-left .et_pb_text_inner { max-width: 760px; }
.gp-title.et_pb_text { width: 100%; }
.gp-title--center .et_pb_text_inner { text-align: center; }

/* ---------- Header v2 ---------- */
.gp-header .et_pb_menu_inner_container { display: flex; align-items: center; justify-content: space-between; }
.gp-header .et_pb_menu__logo-wrap { flex: 0 0 auto; }
.gp-header .et_pb_menu__wrap { flex: 0 1 auto; margin-left: auto; align-items: center; }
@media (min-width: 981px) {
	.gp-header .et_pb_menu__menu, .gp-header .et-menu-nav { display: flex; align-items: center; }
	.gp-header .et-menu { display: flex; align-items: center; }
	.gp-header .et-menu > li { align-self: center; padding: 0 0 0 32px; }
	.gp-header .et-menu > li.menu-item-has-children > a { padding-right: 16px !important; }
	.gp-header .et-menu > li.menu-item-has-children > a::after { right: 0 !important; top: 50% !important; margin-top: -10px; }
	.gp-header .et-menu > li.gp-menu-cta > a { min-height: 44px; display: inline-flex; align-items: center; }
}
@media (max-width: 980px) {
	.gp-header .et_pb_menu__menu { display: none !important; }
	.gp-header .et_pb_menu__wrap { margin-left: auto; }
	.gp-header .et_mobile_nav_menu { display: block !important; margin: 0; }
}

/* Hero v2: script word anchors to the section, not the column */
.gp-hero .et_pb_column { position: static !important; }
.gp-hero .gp-hero-script .et_pb_text_inner { padding: 0; }
.gp-hero .gp-hero-script { top: 38%; }

/* v3 tweaks */
.gp-hero .gp-script-hero { font-size: clamp(56px, 8vw, 118px); }
.gp-reviews .et_pb_slide_description { text-align: left !important; }
.gp-reviews .et_pb_slide_description::before { font-family: Georgia, serif; font-size: 80px; line-height: .8; height: 44px; }
.gp-reviews-sec .et_pb_button_module_wrapper { margin-top: 24px; }

/* v4: package heading order + shoot grid placement */
.gp-packages .et_pb_pricing_heading { display: flex; flex-direction: column-reverse; gap: 8px; }
.gp-packages .et_pb_pricing_heading .et_pb_best_value { font-family: var(--gp-label); font-weight: 600; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--gp-ink); line-height: 1.4; display: block; }
.gp-packages .et_pb_pricing_heading h2.et_pb_pricing_title { margin: 0; }
.gp-shoot > .et_pb_row { grid-auto-flow: row; }
.gp-shoot .gp-tip-col { grid-column: 1; grid-row: 1; }
.gp-shoot .gp-text-col { grid-column: 2; grid-row: 1; }
@media (max-width: 980px) { .gp-shoot .gp-tip-col { grid-column: 1; grid-row: 2; } .gp-shoot .gp-text-col { grid-column: 1; grid-row: 1; } }

/* trio on About */
.gp-trio-row { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.gp-trio-row .et_pb_column { width: 100% !important; margin: 0 !important; }
.gp-trio-row .gp-feature img { aspect-ratio: 3 / 2; }
@media (max-width: 767px) { .gp-trio-row { grid-template-columns: 1fr 1fr; } .gp-trio-row .et_pb_column:first-child { grid-column: 1 / -1; } }

/* v5: long script words, split-column titles */
.gp-banner-script { width: 100%; }
.gp-banner .gp-script-banner { white-space: nowrap; font-size: clamp(56px, 11vw, 160px); }
.gp-banner .gp-long .gp-script-banner { font-size: clamp(40px, 8vw, 118px); }
.gp-split .gp-title .gp-script { font-size: clamp(44px, 5.6vw, 80px); }
.gp-split .gp-title--h1 .gp-script { font-size: clamp(52px, 7vw, 100px); }
.gp-title .gp-script { max-width: 100vw; }

/* v6 mobile */
.gp-hero .gp-script-hero { font-size: clamp(40px, 8vw, 118px); }
@media (max-width: 767px) {
	.gp-hero .gp-script-hero { font-size: 15vw; white-space: normal; line-height: 1.05; padding: 0 20px; }
	.gp-mobilebar a.et_pb_button.gp-btn { font-size: 12px !important; letter-spacing: .1em !important; padding: 3px 8px 0 !important; min-height: 48px; white-space: nowrap; }
	.gp-banner .gp-script-banner { white-space: normal; }
}

/* v7 */
.gp-header .mobile_menu_bar::before, .gp-header .mobile_menu_bar::after { color: var(--gp-ink) !important; }

/* v8: tighter section rhythm, services arrow, review arrows, grid masonry */
.gp-title--h1 .et_pb_text_inner { padding-top: clamp(30px, 4vw, 48px); }
.gp-shoot .gp-tip-col { margin-top: 56px; }
.gp-footer { padding-top: 56px !important; }
.gp-footer .gp-foot-legal { margin-top: 40px; }

/* Services caret: centre it on the label instead of sitting on the top edge */
@media (min-width: 981px) {
	.gp-header .et-menu > li.menu-item-has-children > a { padding-right: 0 !important; }
	.gp-header .et-menu > li.menu-item-has-children > a::after {
		position: static !important; display: inline-block; margin: 0 0 0 6px !important; top: auto !important; right: auto !important;
		line-height: 1; font-size: 16px; transform: translateY(1px);
	}
}

/* Review slider arrows: always visible, never clipped */
.gp-reviews .et-pb-slider-arrows a, .gp-reviews .et-pb-arrow-prev, .gp-reviews .et-pb-arrow-next { opacity: 1 !important; transition: none !important; }
.gp-reviews .et-pb-arrow-prev { left: 0 !important; }
.gp-reviews .et-pb-arrow-next { right: 0 !important; }
.gp-reviews.et_pb_slider:hover .et-pb-arrow-prev { left: 0 !important; }
.gp-reviews.et_pb_slider:hover .et-pb-arrow-next { right: 0 !important; }
.gp-reviews .et-pb-slider-arrows a { margin-top: -22px; }
.gp-reviews .et_pb_slider_container_inner, .gp-reviews .et_pb_slides { overflow: visible; }
.gp-reviews .et_pb_container { padding-left: clamp(52px, 8vw, 96px); padding-right: clamp(52px, 8vw, 96px); }

/* Grid masonry (JS adds .is-grid, rows fill left-to-right so the last photo lands on the left) */
.gp-masonry.is-grid { display: grid; column-count: auto; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: 8px; column-gap: 14px; row-gap: 0; grid-auto-flow: dense; align-items: start; }
.gp-masonry.is-grid .gp-item { margin: 0 !important; width: 100%; }
@media (max-width: 767px) { .gp-masonry.is-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 8px; } }

/* v9: home intro as a styled pull quote with a see-through script name behind it */
.gp-intro-sec { padding-top: clamp(40px, 5vw, 72px) !important; padding-bottom: clamp(40px, 5vw, 72px) !important; }
.gp-pullquote-wrap .et_pb_text_inner { position: relative; max-width: 940px; margin: 0 auto; padding: clamp(56px, 8vw, 104px) 0 clamp(8px, 2vw, 24px); }
.gp-pullquote-wrap .gp-script {
	position: absolute; left: 50%; top: 0; transform: translateX(-50%); font-family: var(--gp-script);
	font-size: clamp(110px, 17vw, 230px); line-height: 1; color: rgba(223, 166, 59, .26); white-space: nowrap; pointer-events: none; user-select: none; z-index: 0;
}
.gp-pullquote { position: relative; z-index: 1; margin: 0; padding: 0; border: 0; text-align: center; }
.gp-pullquote::before {
	content: '\201C'; display: block; font-family: Georgia, serif; font-size: clamp(56px, 7vw, 84px); line-height: .7; height: clamp(28px, 3.4vw, 40px);
	color: var(--gp-gold); margin-bottom: clamp(10px, 1.6vw, 18px);
}
.gp-pullquote p { font-family: var(--gp-head); font-size: clamp(26px, 3.4vw, 44px); line-height: 1.3; color: var(--gp-ink); text-wrap: balance; margin: 0; padding: 0; }
.gp-pullquote cite {
	display: inline-flex; align-items: center; gap: 14px; margin-top: clamp(18px, 2.4vw, 28px); font-style: normal;
	font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .2em; text-transform: uppercase; color: var(--gp-ink);
}
.gp-pullquote cite::before, .gp-pullquote cite::after { content: ''; width: 36px; height: 1px; background: var(--gp-gold); }
@media (max-width: 767px) { .gp-pullquote-wrap .gp-script { font-size: 34vw; } }
@media (max-width: 767px) { .gp-pullquote-wrap .gp-script { font-size: 27vw; } }

/* reviews prompt: centred text and button */
.et_pb_text.gp-review-prompt, .gp-review-prompt .et_pb_text_inner { text-align: center; }
.gp-reviews-sec .et_pb_button_module_wrapper:has(.gp-btn--center) { align-self: center; }

/* v10: script words sit higher - about three quarters of the faded word is above the dark heading */
.gp-title { --gp-s: clamp(52px, 7.2vw, 87px); }
.gp-title.gp-title--h1 { --gp-s: clamp(64px, 9vw, 120px); }
.gp-title.gp-title--xl { --gp-s: clamp(84px, 14vw, 144px); }
.gp-split .gp-title { --gp-s: clamp(44px, 5.6vw, 80px); }
.gp-split .gp-title.gp-title--h1 { --gp-s: clamp(52px, 7vw, 100px); }
.gp-title.et_pb_text .et_pb_text_inner { padding-top: calc(var(--gp-s) * .86) !important; }
.gp-title.et_pb_text .gp-script { font-size: var(--gp-s) !important; top: 0; line-height: 1.05; }
@media (max-width: 767px) {
	.gp-title { --gp-s: clamp(46px, 13vw, 64px); }
	.gp-title.gp-title--h1 { --gp-s: clamp(54px, 16vw, 76px); }
	.gp-split .gp-title { --gp-s: clamp(46px, 13vw, 64px); }
	.gp-split .gp-title.gp-title--h1 { --gp-s: clamp(54px, 16vw, 76px); }
}

/* ==========================================================================
   v1.1.0 - enquiry topics + "Send your enquiry with..." chooser
   ========================================================================== */
.gp-topic-col { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-content: start; }
.gp-topic-col > * { margin: 0 !important; }
.gp-topic-col .gp-topic-intro, .gp-topic-col .gp-topic-fallback { grid-column: 1 / -1; }
.gp-topic-col .et_pb_button_module_wrapper { width: 100%; }
.gp-topic-col a.et_pb_button.gp-mail { width: 100%; min-height: 56px; padding-left: 12px !important; padding-right: 12px !important; text-align: center; }
.gp-topic-intro h2 { margin: 0 0 8px; font-size: clamp(24px, 2.4vw, 30px); line-height: 1.2; }
.gp-topic-intro p { margin: 0; }
.gp-topic-fallback { margin-top: 12px !important; padding-top: 20px; border-top: 1px solid var(--gp-gold); }
.gp-topic-fallback p { margin: 0 0 6px; }
.gp-topic-fallback a { color: var(--gp-ink); text-decoration: underline; text-decoration-color: var(--gp-gold); text-underline-offset: 4px; overflow-wrap: anywhere; }
.gp-copy { display: none; }
.gp-js .gp-copy {
	display: inline-flex; align-items: center; min-height: 44px; margin-left: 6px; padding: 3px 14px 0; cursor: pointer;
	background: transparent; color: var(--gp-ink); border: 1.5px solid var(--gp-ink); border-radius: 2px;
	font-family: var(--gp-label); font-weight: 600; font-size: 12px; letter-spacing: .14em; text-transform: uppercase;
}
.gp-js .gp-copy:hover, .gp-js .gp-copy:focus-visible { background: var(--gp-gold); border-color: var(--gp-gold); color: var(--gp-ink); }
@media (max-width: 575px) { .gp-topic-col { grid-template-columns: 1fr; } }

.gp-mailpick { position: fixed; inset: 0; z-index: 200; background: rgba(43, 31, 21, .55); display: flex; justify-content: center; align-items: center; padding: 20px; }
.gp-mailpick[hidden] { display: none !important; }
html.gp-mailpick-open { overflow: hidden; }
.gp-mailpick__dialog {
	position: relative; width: 100%; max-width: 480px; max-height: calc(100vh - 40px); overflow: auto; background: #fff; color: var(--gp-ink);
	border: 1px solid var(--gp-gold); border-radius: 4px; padding: 36px 28px 26px; box-shadow: 0 12px 40px rgba(43, 31, 21, .25);
}
.gp-mailpick__x {
	position: absolute; top: 8px; right: 8px; width: 44px; height: 44px; border: 0; background: none; color: var(--gp-ink);
	font-size: 28px; line-height: 1; cursor: pointer; border-radius: 2px;
}
.gp-mailpick__x:hover { background: var(--gp-gold); }
.gp-mailpick__h { margin: 0 0 8px; font-family: var(--gp-head); font-weight: 400; font-size: 28px; line-height: 1.2; color: var(--gp-ink); padding: 0; }
.gp-mailpick__topic { margin: 0 0 20px; font-size: 15px; line-height: 1.5; color: var(--gp-ink); }
.gp-mailpick__opts { display: flex; flex-direction: column; gap: 10px; }
.gp-mailpick__opt {
	display: flex; flex-direction: column; gap: 2px; align-items: flex-start; text-align: left; width: 100%; box-sizing: border-box; min-height: 56px;
	padding: 10px 16px; border: 1.5px solid var(--gp-ink); border-radius: 2px; background: #fff; color: var(--gp-ink);
	font: inherit; text-decoration: none; cursor: pointer; transition: background .15s ease, border-color .15s ease;
}
.gp-mailpick__opt strong { font-family: var(--gp-label); font-weight: 600; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; }
.gp-mailpick__opt span { font-size: 14px; color: var(--gp-ink); }
.gp-mailpick__opt:hover, .gp-mailpick__opt:focus-visible { background: var(--gp-gold); border-color: var(--gp-gold); color: var(--gp-ink); }
.gp-mailpick__opt:hover span, .gp-mailpick__opt:focus-visible span { color: var(--gp-ink); }
.gp-mailpick a:focus-visible, .gp-mailpick button:focus-visible { outline: 2px solid var(--gp-ink); outline-offset: 3px; box-shadow: 0 0 0 5px var(--gp-gold); }


/* v11: taller service banners that show the people; the script word drops to the bottom edge so faces stay clear */
.gp-banner { min-height: clamp(380px, min(56vw, 88vh), 880px); flex-direction: column; justify-content: flex-end; align-items: stretch; }
.gp-banner > .et_pb_row { padding-bottom: clamp(14px, 2.4vw, 36px) !important; }
.gp-banner .gp-script-banner { font-size: clamp(48px, 8vw, 130px); line-height: 1; }
.gp-banner .gp-long .gp-script-banner { font-size: clamp(36px, 6vw, 96px); }
@media (max-width: 767px) { .gp-banner { min-height: clamp(300px, 92vw, 520px); } .gp-banner .gp-script-banner { font-size: clamp(40px, 15vw, 72px); } .gp-banner .gp-long .gp-script-banner { font-size: clamp(30px, 10.5vw, 52px); } }
.gp-banner > .et_pb_row { margin-top: auto !important; margin-bottom: 0 !important; }
/* v12: on phones keep the banner close to the photo's own 3:2 shape so nobody is cropped out sideways */
@media (max-width: 767px) { .gp-banner { min-height: clamp(260px, 70vw, 440px); } }


/* v13: every service banner is exactly the same height (2:1 on desktop, capped to the screen; a touch taller on phones) */
.gp-banner { height: clamp(300px, min(50vw, 85vh), 800px) !important; min-height: 0 !important; }
@media (max-width: 767px) { .gp-banner { height: clamp(240px, 60vw, 360px) !important; min-height: 0 !important; } }
/* v14: phones - a little shorter so almost the whole width of each banner photo shows (nobody cut off at the sides) */
@media (max-width: 767px) { .gp-banner { height: clamp(200px, 54vw, 300px) !important; } }


/* v15: banner height no longer capped by window height (a wide, short window made the banner too flat and cropped heads);
   script word now sits in the vertical middle like the live site; softer overlay is set on the section in Divi */
.gp-banner { height: clamp(300px, 44vw, 860px) !important; justify-content: center !important; }
.gp-banner > .et_pb_row { margin-top: auto !important; margin-bottom: auto !important; padding-bottom: 0 !important; }
.gp-banner .gp-script-banner { color: rgba(255, 255, 255, .6); }
@media (max-width: 767px) { .gp-banner { height: clamp(200px, 54vw, 300px) !important; } }

/* v16: banner is never taller than what fits in the window under the header (so the people are never pushed below the fold on wide, short windows) */
.gp-banner { height: clamp(300px, min(44vw, calc(100vh - 110px)), 860px) !important; }
@media (max-width: 767px) { .gp-banner { height: clamp(200px, 54vw, 300px) !important; } }

/* v17: fill the window under the header exactly (header is ~64px; leave a little for the admin bar when logged in) */
.gp-banner { height: clamp(300px, min(44vw, calc(100vh - 80px)), 860px) !important; }
@media (max-width: 767px) { .gp-banner { height: clamp(200px, 54vw, 300px) !important; } }

/* ==========================================================================
   v1.2.0 - round 9: live-site typography, top contact bar, sentence-case menu,
   cream "Good to know" / "Joy" bands, calmer title spacing
   ========================================================================== */
:root {
	--gp-head: 'Josefin Sans', sans-serif;
	--gp-script: 'Petit Formal Script', handwriting;
	--gp-cream: #ebe3d2;
	--gp-script-tint: rgba(221, 204, 176, .6);   /* same cream-beige as the live site's script words */
	--gp-topbar: #ebbe5b;                        /* the live site's top contact bar */
}

/* Headings: Josefin Sans like the live site */
.gp-title h1, .gp-title h2 { font-family: var(--gp-head); font-weight: 300; letter-spacing: .06em; }
.gp-title h1 { font-size: clamp(28px, 3.6vw, 46px); }
.gp-title h2 { font-size: clamp(22px, 2.6vw, 34px); }
.gp-title--xl h2 { font-size: clamp(48px, 7vw, 84px); }
.et_pb_section h3, .gp-tile h3 { font-family: var(--gp-head); font-weight: 400; letter-spacing: .02em; }
.gp-pullquote p { font-family: var(--gp-head); font-weight: 300; font-size: clamp(22px, 2.9vw, 36px); line-height: 1.4; letter-spacing: .02em; }
.gp-reviews .et_pb_slide_content, .gp-quote p { font-family: var(--gp-head); font-weight: 300; font-size: clamp(18px, 2vw, 26px); line-height: 1.55; letter-spacing: .01em; }
.gp-packages .et_pb_pricing_heading h2 { font-family: var(--gp-head); font-weight: 400; font-size: 26px; letter-spacing: .02em; }
.gp-contact-link a { font-family: var(--gp-head); font-weight: 300; }
.gp-footer .gp-foot-tag p { font-family: var(--gp-head); font-weight: 300; font-size: 22px; letter-spacing: .03em; }
.gp-activities li, .gp-checks li { font-family: var(--gp-head); font-weight: 300; font-size: 19px; }
.gp-mailpick__h { font-family: var(--gp-head); font-weight: 300; letter-spacing: .04em; }
.gp-cta .gp-cta-quote p { font-family: var(--gp-head); font-weight: 300; letter-spacing: .03em; font-size: clamp(22px, 2.8vw, 36px); }

/* Faded script words: live-site tint and font stack */
.gp-title .gp-script { font-family: var(--gp-script); color: var(--gp-script-tint); }
.gp-banner .gp-script-banner { font-family: var(--gp-script); color: rgba(221, 204, 176, .6); }

/* More air between a section title and what follows it */
.gp-title.et_pb_text { margin-bottom: clamp(22px, 2.8vw, 40px) !important; }
.gp-gallery .gp-title.et_pb_text { margin-bottom: clamp(28px, 3.6vw, 52px) !important; }
.gp-title--center + .gp-body { margin-top: 0; }
.gp-pkgsec .gp-title.et_pb_text { margin-bottom: clamp(24px, 3vw, 44px) !important; }

/* Cream band: "Good to know" (service pages) and "Joy" (About) - title left, words right */
.gp-band { background: var(--gp-cream) !important; }
.gp-band > .et_pb_row { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(24px, 5vw, 80px); align-items: center; }
.gp-band .et_pb_column { width: 100% !important; margin: 0 !important; }
.gp-band .gp-title.et_pb_text { margin-bottom: 0 !important; }
.gp-band .gp-title .gp-script { color: rgba(190, 160, 110, .5); }
.gp-band-text p { font-size: clamp(17px, 1.5vw, 20px); line-height: 1.75; text-wrap: pretty; margin: 0; }
.gp-band-text p + p { margin-top: 14px; }
@media (max-width: 980px) { .gp-band > .et_pb_row { grid-template-columns: 1fr; } }

/* Activities list now sits under the intro paragraphs */
.gp-activities--centre { text-align: center; }
.gp-activities--centre .gp-activities-label { display: block; margin: 4px 0 14px; }
.gp-activities--centre ul { max-width: 640px; margin: 0 auto; justify-items: start; }

/* About: text left, portrait right */
.gp-split .gp-portrait img { aspect-ratio: 4 / 5; }

/* Top contact bar (Theme Builder header, above the menu) */
.gp-topbar { background: var(--gp-topbar); padding: 0 !important; position: relative; z-index: 60; }
.gp-topbar > .et_pb_row { width: 100% !important; max-width: 1280px !important; padding: 0 var(--gp-gutter) !important; margin: 0 auto; }
.gp-topbar-text .et_pb_text_inner { padding: 0; }
.gp-topbar__in { display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 40px; }
.gp-topbar__contact { display: flex; flex-wrap: wrap; gap: 0 24px; align-items: center; }
.gp-topbar a {
	font-family: var(--gp-label); font-weight: 400; font-size: 13px; letter-spacing: .04em; color: var(--gp-ink); text-decoration: none;
	min-height: 40px; display: inline-flex; align-items: center;
}
.gp-topbar a:hover, .gp-topbar a:focus-visible { text-decoration: underline; text-underline-offset: 4px; }
.gp-topbar__cta { font-weight: 600 !important; letter-spacing: .12em !important; text-transform: uppercase; font-size: 12px !important; }
/* Instagram icon (top bar and footer) */
.gp-ig { width: 22px; height: 22px; display: block; }
a.gp-ig-link { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; }
a.gp-ig-link:hover, a.gp-ig-link:focus-visible { opacity: .7; text-decoration: none; }
.gp-foot-list a.gp-ig-link { justify-content: flex-start; min-width: 0; }
@media (max-width: 767px) {
	.gp-topbar__contact a:not([href^="tel:"]):not(.gp-ig-link) { display: none; }
	.gp-topbar a { min-height: 44px; }
}

/* Main menu in sentence case; only "Book a shoot" stays uppercase */
.gp-header .et_pb_menu .et-menu > li:not(.gp-menu-cta) > a,
.gp-header .et_pb_menu .et-menu .sub-menu li a,
.gp-header .et_mobile_menu li:not(.gp-menu-cta) > a {
	text-transform: none; letter-spacing: .03em; font-size: 16px; font-weight: 400;
}
.gp-header .et_pb_menu .et-menu li.gp-menu-cta > a, .gp-header .et_mobile_menu li.gp-menu-cta > a { text-transform: uppercase; letter-spacing: .16em; font-size: 13px; font-weight: 600; }

/* Logo: at least 10px of breathing room all round */
.gp-header .et_pb_menu__logo { padding: 10px; box-sizing: content-box; }
.gp-header .et_pb_menu__logo img { display: block; }

/* v1.2.0 fix: centre the "Activities could include" label and list under the intro */
.et_pb_text.gp-activities--centre, .et_pb_text.gp-activities--centre .et_pb_text_inner { text-align: center; }
.gp-activities--centre .gp-activities-label { text-align: center; }

/* ==========================================================================
   v1.2.1 - transcript changes: centred reviews/titles on service pages,
   cream band behind home reviews, left-aligned About closing quote,
   faded script word a smidge lower
   ========================================================================== */
.gp-creambg { background: var(--gp-cream) !important; }
.gp-creambg .gp-title .gp-script { color: rgba(190, 160, 110, .5); }
.gp-reviews-sec--center .gp-reviews .et_pb_slide_description { text-align: center !important; align-items: center; }
.gp-reviews-sec--center .gp-reviews .et_pb_slide_description::before { margin-left: auto; margin-right: auto; }
.gp-reviews-sec--center .gp-reviews .et_pb_slide_content, .gp-reviews-sec--center .gp-reviews .et_pb_slide_title { text-align: center; }
.gp-cta--left, .gp-cta--left .gp-cta-quote, .gp-cta--left .gp-cta-quote p { text-align: left; }
.gp-cta--left .gp-cta-quote p { margin-left: 0; margin-right: 0; max-width: 820px; }
.gp-cta--left .et_pb_button_module_wrapper { align-self: flex-start; }
/* script word: bring it down a smidge (was 86% of the word above the heading, now 72%) */
.gp-title.et_pb_text .et_pb_text_inner { padding-top: calc(var(--gp-s) * .72) !important; }

/* v1.2.1 fix: Divi's slide title rule (white, 46px, bold) was beating ours - the reviewer name is a small ink label again */
.gp-reviews .et_pb_slide_description h2.et_pb_slide_title {
	font-family: var(--gp-label) !important; font-size: 13px !important; font-weight: 600 !important; letter-spacing: .16em !important;
	text-transform: uppercase; color: var(--gp-ink) !important; line-height: 1.4; margin: 20px 0 0 !important; padding: 0 !important;
}

/* ---------- Client round (Nov 2026) ---------- */
/* Google review prompt: its own gold box (the colour of the quotation marks and buttons) */
.gp-reviews-sec .gp-review-row { display: flex; justify-content: center; margin-top: 36px !important; }
.gp-reviews-sec .gp-review-row .et_pb_column.gp-review-box { background: var(--gp-gold); border-radius: 4px; padding: clamp(24px, 3vw, 40px) clamp(20px, 4vw, 48px) !important; width: 100%; max-width: 760px; margin-left: auto !important; margin-right: auto !important; text-align: center; }
.gp-review-box .gp-review-prompt p { color: var(--gp-ink); font-size: 18px; line-height: 1.6; margin: 0 0 18px; }
.gp-review-box .et_pb_button_module_wrapper { margin: 0 !important; }
.gp-review-box a.et_pb_button.gp-btn--ink { background: var(--gp-ink) !important; border-color: var(--gp-ink) !important; color: #fff !important; }
.gp-review-box a.et_pb_button.gp-btn--ink:hover, .gp-review-box a.et_pb_button.gp-btn--ink:focus-visible { background: #fff !important; border-color: #fff !important; color: var(--gp-ink) !important; }

/* Reviews sit in the cream band on every page, so the section is anchored */
.gp-reviews-sec--center.gp-creambg { border-top: 1px solid rgba(201, 143, 36, .35); }

/* Activities list: the same font as the rest of the copy */
.gp-activities-label, .gp-activities li, .gp-activities ul { font-family: Georgia, serif !important; font-weight: 400 !important; }
.gp-activities li { font-size: 18px; letter-spacing: 0; }
.gp-activities-label { font-size: 18px; }

/* Main copy at the top of service pages: justified on larger screens */
@media (min-width: 768px) {
	.gp-intro p { text-align: justify; text-justify: inter-word; hyphens: auto; -webkit-hyphens: auto; }
}

/* Instagram icon as the standalone link (About) and as the Book Now label */
.gp-ig-wrap .et_pb_text_inner { display: flex; }
a.gp-ig-link--solo { min-width: 44px; justify-content: flex-start; }
.gp-contact-link .gp-ig-label { display: block; margin-bottom: 4px; }
.gp-contact-link .gp-ig-label .gp-ig { width: 22px; height: 22px; display: block; }

/* Instagram icon that does not depend on the header/footer layout markup: if the link still carries the word,
   hide the word and draw the icon with a mask (takes the link colour). Links that already contain the SVG are left alone. */
.gp-topbar a[href*="instagram.com"]:not(.gp-ig-link),
.gp-foot-list a[href*="instagram.com"]:not(.gp-ig-link) {
	display: inline-flex; width: 44px; min-width: 44px; height: 44px; min-height: 44px; font-size: 0 !important; letter-spacing: 0; overflow: hidden; vertical-align: middle; position: relative;
}
.gp-topbar a[href*="instagram.com"]:not(.gp-ig-link)::before,
.gp-foot-list a[href*="instagram.com"]:not(.gp-ig-link)::before {
	content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 22px; transform: translate(-50%, -50%); background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='5'/%3E%3Ccircle cx='12' cy='12' r='4.2'/%3E%3Ccircle cx='17.3' cy='6.7' r='.7' fill='black' stroke='none'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='5'/%3E%3Ccircle cx='12' cy='12' r='4.2'/%3E%3Ccircle cx='17.3' cy='6.7' r='.7' fill='black' stroke='none'/%3E%3C/svg%3E") center / contain no-repeat;
}
.gp-foot-list a[href*="instagram.com"]:not(.gp-ig-link)::before { left: 11px; }
@media (max-width: 767px) { .gp-topbar__contact a[href*="instagram.com"] { display: inline-flex !important; } }
/* ---------- Accessibility (Nov 2026) ---------- */
.gp-skip { position: absolute; left: -9999px; top: 0; z-index: 100000; background: var(--gp-ink); color: #fff; padding: 12px 18px; font-family: var(--gp-label); text-decoration: none; }
.gp-skip:focus { left: 12px; top: 12px; outline: 2px solid var(--gp-gold); }
/* Footer logo: a full-size tap target (was 19px tall) */
.gp-footer .gp-foot-logo, .gp-footer .gp-foot-logo a { display: block; }
.gp-footer .gp-foot-logo a { min-height: 44px; }
.gp-footer .gp-foot-logo img { max-height: none; }

/* Privacy and photo-use pages */
.gp-legal { max-width: 760px; margin: 0 auto; }
.gp-legal h2 { font-family: var(--gp-head); font-weight: 600; font-size: 22px; letter-spacing: .02em; margin: 40px 0 12px; color: var(--gp-ink); }
.gp-legal ul { margin: 0 0 18px 1.2em; padding: 0; list-style: disc; }
.gp-legal li { margin-bottom: 6px; }
.gp-legal a { color: var(--gp-ink); text-decoration: underline; text-decoration-color: var(--gp-gold); text-underline-offset: 3px; }
