PageSourceSearch

https://ladmanstudios.com/investment/

html ladmanstudios.com collected 2026-10-08 09:06:58 UTC 184,746 bytes, 2,667 lines download raw bytes

1<!doctype html><html lang="en-US" prefix="og: https://ogp.me/ns#" class="no-js" itemtype="https://schema.org/WebPage" itemscope><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">  
1<script id="google_gtagjs-js-consent-mode-data-layer">window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}
2gtag('consent', 'default', {"ad_personalization":"denied","ad_storage":"denied","ad_user_data":"denied","analytics_storage":"denied","functionality_storage":"denied","security_storage":"denied","personalization_storage":"denied","region":["AT","BE","BG","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GR","HR","HU","IE","IS","IT","LI","LT","LU","LV","MT","NL","NO","PL","PT","RO","SE","SI","SK"],"wait_for_update":500});
3window._googlesitekitConsentCategoryMap = {"statistics":["analytics_storage"],"marketing":["ad_storage","ad_user_data","ad_personalization"],"functional":["functionality_storage","security_storage"],"preferences":["personalization_storage"]};
4window._googlesitekitConsents = {"ad_personalization":"denied","ad_storage":"denied","ad_user_data":"denied","analytics_storage":"denied","functionality_storage":"denied","security_storage":"denied","personalization_storage":"denied","region":["AT","BE","BG","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GR","HR","HU","IE","IS","IT","LI","LT","LU","LV","MT","NL","NO","PL","PT","RO","SE","SI","SK"],"wait_for_update":500};</script>
4 <title>Wedding Photography Pricing | Ladman Studios CT</title><meta name="description" content="Documentary Wedding photography investment for Ladman Studios. Experiences starting at $5500. See what&#039;s included and book!"/><meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/><link rel="canonical" href="https://ladmanstudios.com/investment/" /><meta property="og:locale" content="en_US" /><meta property="og:type" content="article" /><meta property="og:title" content="Wedding Photography Pricing | Ladman Studios CT" /><meta property="og:description" content="Documentary Wedding photography investment for Ladman Studios. Experiences starting at $5500. See what&#039;s included and book!" /><meta property="og:url" content="https://ladmanstudios.com/investment/" /><meta property="og:site_name" content="Connecticut Wedding Photographer" /><meta property="article:publisher" content="https://www.facebook.com/ladmanstudios" /><meta property="article:author" content="facebook.com/ladmanstudios" /><meta property="og:updated_time" content="2026-09-22T12:09:53-04:00" /><meta property="og:image" content="https://ladmanstudios.com/wp-content/uploads/2026/01/Flexible-Wedding-Timeline-Creates-Better-Reception-Moments-scaled.jpg" /><meta property="og:image:secure_url" content="https://ladmanstudios.com/wp-content/uploads/2026/01/Flexible-Wedding-Timeline-Creates-Better-Reception-Moments-scaled.jpg" /><meta property="og:image:width" content="1800" /><meta property="og:image:height" content="1200" /><meta property="og:image:alt" content="Bride and groom entering their wedding reception surrounded by cheering guests during a flexible wedding timeline" /><meta property="og:image:type" content="image/jpeg" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="Wedding Photography Pricing | Ladman Studios CT" /><meta name="twitter:description" content="Documentary Wedding photography investment for Ladman Studios. Experiences starting at $5500. See what&#039;s included and book!" /><meta name="twitter:image" content="https://ladmanstudios.com/wp-content/uploads/2026/01/Flexible-Wedding-Timeline-Creates-Better-Reception-Moments-scaled.jpg" /><meta name="twitter:label1" content="Time to read" /><meta name="twitter:data1" content="4 minutes" /> 
4<script type="application/ld+json" class="rank-math-schema-pro">{"@context":"https://schema.org","@graph":[{"@type":"Place","@id":"https://ladmanstudios.com/#place","geo":{"@type":"GeoCoordinates","latitude":"41.7873","longitude":" -71.9495"},"hasMap":"https://www.google.com/maps/search/?api=1&amp;query=41.7873, -71.9495","address":{"@type":"PostalAddress","streetAddress":"349 Christian Hill Rd","addressLocality":"Brooklyn","addressRegion":"Connecticut","postalCode":"06234","addressCountry":"USA"}},{"@type":["ProfessionalService","Organization"],"@id":"https://ladmanstudios.com/#organization","name":"Ladman Studios","url":"https://ladmanstudios.com","sameAs":["https://www.facebook.com/ladmanstudios","https://pinterest.com/ladmanstudios","https://instagram.com/ladmanstudios"],"email":"[email protected]","address":{"@type":"PostalAddress","streetAddress":"349 Christian Hill Rd","addressLocality":"Brooklyn","addressRegion":"Connecticut","postalCode":"06234","addressCountry":"USA"},"logo":{"@type":"ImageObject","@id":"https://ladmanstudios.com/#logo","url":"https://ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res.png","contentUrl":"https://ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res.png","caption":"Connecticut Wedding Photographer","inLanguage":"en-US","width":"1199","height":"479"},"priceRange":"$$$","openingHours":["Mo,Tu,We,Th,Fr 9:00 to 4:00"],"description":"Documentary wedding, proposal, and engagement photography for Connecticut couples.","foundingDate":"2020","location":{"@id":"https://ladmanstudios.com/#place"},"image":{"@id":"https://ladmanstudios.com/#logo"},"telephone":"+18603372756"},{"@type":"WebSite","@id":"https://ladmanstudios.com/#website","url":"https://ladmanstudios.com","name":"Connecticut Wedding Photographer","alternateName":"ladmanstudios","publisher":{"@id":"https://ladmanstudios.com/#organization"},"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https://ladmanstudios.com/wp-content/uploads/2026/01/Flexible-Wedding-Timeline-Creates-Better-Reception-Moments-scaled.jpg","url":"https://ladmanstudios.com/wp-content/uploads/2026/01/Flexible-Wedding-Timeline-Creates-Better-Reception-Moments-scaled.jpg","width":"1800","height":"1200","caption":"Bride and groom entering their wedding reception surrounded by cheering guests during a flexible wedding timeline","inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https://ladmanstudios.com/investment/#breadcrumb","itemListElement":[{"@type":"ListItem","position":"1","item":{"@id":"https://ladmanstudios.com","name":"Home"}},{"@type":"ListItem","position":"2","item":{"@id":"https://ladmanstudios.com/investment/","name":"Investment"}}]},{"@type":"WebPage","@id":"https://ladmanstudios.com/investment/#webpage","url":"https://ladmanstudios.com/investment/","name":"Wedding Photography Pricing | Ladman Studios CT","datePublished":"2022-07-11T16:13:02-04:00","dateModified":"2026-09-22T12:09:53-04:00","isPartOf":{"@id":"https://ladmanstudios.com/#website"},"primaryImageOfPage":{"@id":"https://ladmanstudios.com/wp-content/uploads/2026/01/Flexible-Wedding-Timeline-Creates-Better-Reception-Moments-scaled.jpg"},"inLanguage":"en-US","breadcrumb":{"@id":"https://ladmanstudios.com/investment/#breadcrumb"}},{"@type":"Service","name":"Connecticut Wedding Photography Packages | Ladman Studios","description":"Explore Ladman Studios\u2019 wedding photography packages designed for couples who want to live their wedding day, not rush through it. Full-day and half-day options include cinematic storytelling coverage, engagement sessions, and heirloom albums crafted to preserve your memories as art.","serviceType":"Wedding Photography Packages, Engagement Sessions, Wedding Albums &amp; Artwork","offers":{"@type":"Offer","price":"3600-9400","priceCurrency":"USD","availability":"InStock"},"image":{"@id":"https://ladmanstudios.com/wp-content/uploads/2026/01/Flexible-Wedding-Timeline-Creates-Better-Reception-Moments-scaled.jpg"},"@id":"https://ladmanstudios.com/investment/#schema-21383"}]}</script>
4 <link rel='dns-prefetch' href='//www.googletagmanager.com' /><link rel='dns-prefetch' href='//pagead2.googlesyndication.com' /><link rel="alternate" type="application/rss+xml" title="Ladman Studios &raquo; Feed" href="https://ladmanstudios.com/feed/" /><link rel="alternate" type="application/rss+xml" title="Ladman Studios &raquo; Comments Feed" href="https://ladmanstudios.com/comments/feed/" /> 
4<script>document.documentElement.classList.remove( 'no-js' );</script>
4 <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://ladmanstudios.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fladmanstudios.com%2Finvestment%2F" /><link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://ladmanstudios.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fladmanstudios.com%2Finvestment%2F&#038;format=xml" /><style id="wp-img-auto-sizes-contain-inline-css">img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
5/*# sourceURL=wp-img-auto-sizes-contain-inline-css */</style><style id="global-styles-inline-css">:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--theme-palette-1: var(--global-palette1);--wp--preset--color--theme-palette-2: var(--global-palette2);--wp--preset--color--theme-palette-3: var(--global-palette3);--wp--preset--color--theme-palette-4: var(--global-palette4);--wp--preset--color--theme-palette-5: var(--global-palette5);--wp--preset--color--theme-palette-6: var(--global-palette6);--wp--preset--color--theme-palette-7: var(--global-palette7);--wp--preset--color--theme-palette-8: var(--global-palette8);--wp--preset--color--theme-palette-9: var(--global-palette9);--wp--preset--color--theme-palette-10: var(--global-palette10);--wp--preset--color--theme-palette-11: var(--global-palette11);--wp--preset--color--theme-palette-12: var(--global-palette12);--wp--preset--color--theme-palette-13: var(--global-palette13);--wp--preset--color--theme-palette-14: var(--global-palette14);--wp--preset--color--theme-palette-15: var(--global-palette15);--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
5--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: var(--global-font-size-small);--wp--preset--font-size--medium: var(--global-font-size-medium);--wp--preset--font-size--large: var(--global-font-size-large);--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--larger: var(--global-font-size-larger);--wp--preset--font-size--xxlarge: var(--global-font-size-xxlarge);--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:root { --wp--style--global--content-size: var(--global-calc-content-width);--wp--style--global--wide-size: var(--global-calc-wide-content-width); }:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){font-style: inherit;font-weight: inherit;letter-spacing: inherit;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-theme-palette-1-color{color: var(--wp--preset--color--theme-palette-1) !important;}.has-theme-palette-2-color{color: var(--wp--preset--color--theme-palette-2) !important;}.has-theme-palette-3-color{color: var(--wp--preset--color--theme-palette-3) !important;}.has-theme-palette-4-color{color: var(--wp--preset--color--theme-palette-4) !important;}.has-theme-palette-5-color{color: var(--wp--preset--color--theme-palette-5) !important;}.has-theme-palette-6-color{color: var(--wp--preset--color--theme-palette-6) !important;}.has-theme-palette-7-color{color: var(--wp--preset--color--theme-palette-7) !important;}.has-theme-palette-8-color{color: var(--wp--preset--color--theme-palette-8) !important;}.has-theme-palette-9-color{color: var(--wp--preset--color--theme-palette-9) !important;}.has-theme-palette-10-color{color: var(--wp--preset--color--theme-palette-10) !important;}.has-theme-palette-11-color{color: var(--wp--preset--color--theme-palette-11) !important;}.has-theme-palette-12-color{color: var(--wp--preset--color--theme-palette-12) !important;}.has-theme-palette-13-color{color: var(--wp--preset--color--theme-palette-13) !important;}.has-theme-palette-14-color{color: var(--wp--preset--color--theme-palette-14) !important;}.has-theme-palette-15-color{color: var(--wp--preset--color--theme-palette-15) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-theme-palette-1-background-color{background-color: var(--wp--preset--color--theme-palette-1) !important;}.has-theme-palette-2-background-color{background-color: var(--wp--preset--color--theme-palette-2) !important;}.has-theme-palette-3-background-color{background-color: var(--wp--preset--color--theme-palette-3) !important;}.has-theme-palette-4-background-color{background-color: var(--wp--preset--color--theme-palette-4) !important;}.has-theme-palette-5-background-color{background-color: var(--wp--preset--color--theme-palette-5) !important;}.has-theme-palette-6-background-color{background-color: var(--wp--preset--color--theme-palette-6) !important;}.has-theme-palette-7-background-color{background-color: var(--wp--preset--color--theme-palette-7) !important;}.has-theme-palette-8-background-color{background-color: var(--wp--preset--color--theme-palette-8) !important;}.has-theme-palette-9-background-color{background-color: var(--wp--preset--color--theme-palette-9) !important;}.has-theme-palette-10-background-color{background-color: var(--wp--preset--color--theme-palette-10) !important;}.has-theme-palette-11-background-color{background-color: var(--wp--preset--color--theme-palette-11) !important;}.has-theme-palette-12-background-color{background-color: var(--wp--preset--color--theme-palette-12) !important;}.has-theme-palette-13-background-color{background-color: var(--wp--preset--color--theme-palette-13) !important;}.has-theme-palette-14-background-color{background-color: var(--wp--preset--color--theme-palette-14) !important;}.has-theme-palette-15-background-color{background-color: var(--wp--preset--color--theme-palette-15) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-theme-palette-1-border-color{border-color: var(--wp--preset--color--theme-palette-1) !important;}.has-theme-palette-2-border-color{border-color: var(--wp--preset--color--theme-palette-2) !important;}.has-theme-palette-3-border-color{border-color: var(--wp--preset--color--theme-palette-3) !important;}.has-theme-palette-4-border-color{border-color: var(--wp--preset--color--theme-palette-4) !important;}.has-theme-palette-5-border-color{border-color: var(--wp--preset--color--theme-palette-5) !important;}.has-theme-palette-6-border-color{border-color: var(--wp--preset--color--theme-palette-6) !important;}.has-theme-palette-7-border-color{border-color: var(--wp--preset--color--theme-palette-7) !important;}.has-theme-palette-8-border-color{border-color: var(--wp--preset--color--theme-palette-8) !important;}.has-theme-palette-9-border-color{border-color: var(--wp--preset--color--theme-palette-9) !important;}.has-theme-palette-10-border-color{border-color: var(--wp--preset--color--theme-palette-10) !important;}.has-theme-palette-11-border-color{border-color: var(--wp--preset--color--theme-palette-11) !important;}.has-theme-palette-12-border-color{border-color: var(--wp--preset--color--theme-palette-12) !important;}.has-theme-palette-13-border-color{border-color: var(--wp--preset--color--theme-palette-13) !important;}.has-theme-palette-14-border-color{border-color: var(--wp--preset--color--theme-palette-14) !important;}.has-theme-palette-15-border-color{border-color: var(--wp--preset--color--theme-palette-15) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
5.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-larger-font-size{font-size: var(--wp--preset--font-size--larger) !important;}.has-xxlarge-font-size{font-size: var(--wp--preset--font-size--xxlarge) !important;}
6/*# sourceURL=global-styles-inline-css */</style><link rel='stylesheet' id='kadence-slide-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/kadence-related-content/assets/css/slider.css?ver=1.0.14' media='all' /><link rel='stylesheet' id='kadence_related_content-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/kadence-related-content/assets/css/related-content.css?ver=1.0.14' media='all' /><link rel='stylesheet' id='kadence-global-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/themes/kadence/assets/css/global.min.css?ver=1.5.2' media='all' /><link rel='stylesheet' id='kadence-header-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/themes/kadence/assets/css/header.min.css?ver=1.5.2' media='all' /><link rel='stylesheet' id='kadence-content-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/themes/kadence/assets/css/content.min.css?ver=1.5.2' media='all' /><link rel='stylesheet' id='kadence-footer-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/themes/kadence/assets/css/footer.min.css?ver=1.5.2' media='all' /><link rel='stylesheet' id='menu-addons-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/kadence-pro/dist/mega-menu/menu-addon.css?ver=1.2.5' media='all' /><link rel='stylesheet' id='kadence_share_css-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/kadence-simple-share/assets/css/kt-social.css?ver=1.2.13' media='all' /><link rel='stylesheet' id='photoswipe-light-skin-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/kadence-galleries/assets/photoswipe/light-skin.css?ver=1.3.2' media='all' /><link rel='stylesheet' id='kt-galleries-css-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/kadence-galleries/assets/css/kadence-galleries.css?ver=1.3.2' media='all' /><link rel='stylesheet' id='kadence-rankmath-css' href='https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/themes/kadence/assets/css/rankmath.min.css?ver=1.5.2' media='all' /> 
6<script id="breeze-prefetch-js-extra">var breeze_prefetch = {"local_url":"https://ladmanstudios.com","ignore_remote_prefetch":"1","ignore_list":["wp-admin","wp-login.php"]};
7//# sourceURL=breeze-prefetch-js-extra</script>
7 
7<script id="breeze-prefetch-js" src="https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js?ver=2.6.1"></script>
7 
7<script id="jquery-core-js" src="https://ladmanstudios.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
7 
7<script id="jquery-migrate-js" src="https://ladmanstudios.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
7 
7<script id="facebook-signal-js-extra">var facebookSignalConfig = {"cookieName":"wc_facebook_signals_state","ajaxUrl":"https://ladmanstudios.com/wp-admin/admin-ajax.php","signalsAction":"fbpix_set_pixel_signals","signalsNonce":"5be5472ee0"};
8//# sourceURL=facebook-signal-js-extra</script>
8 
8<script id="facebook-signal-js" src="https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/official-facebook-pixel/core/../js/facebook_signal.js?ver=5.2.2"></script>
vendor: 82 bytes, lines 8-9
8 
9 <script id="google_gtagjs-js" src="https://www.googletagmanager.com/gtag/js?id=
9GT-5DHTFDJ4
vendor: 18 bytes, line 9
9" async></script> 
9<script id="google_gtagjs-js-after">window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}
10gtag("set","linker",{"domains":["ladmanstudios.com"]});
11gtag("js", new Date());
12gtag("set", "developer_id.dZTNiMT", true);
13gtag("config", "GT-5DHTFDJ4");
14//# sourceURL=google_gtagjs-js-after</script>
14 <link rel="https://api.w.org/" href="https://ladmanstudios.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://ladmanstudios.com/wp-json/wp/v2/pages/595" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://ladmanstudios.com/xmlrpc.php?rsd" /><meta name="generator" content="WordPress 7.1.3" /><link rel='shortlink' href='https://ladmanstudios.com/?p=595' /><meta name="generator" content="auto-sizes 1.8.0"><meta name="generator" content="Site Kit by Google 1.189.0" /><meta name="generator" content="performance-lab 4.2.0; plugins: auto-sizes, image-prioritizer, nocache-bfcache, speculation-rules"><meta name="ti-site-data" content="eyJyIjoiMTowITc6MCEzMDowIiwibyI6Imh0dHBzOlwvXC9sYWRtYW5zdHVkaW9zLmNvbT90aS1vbmxpbmUtdXNlcnMtZ29vZ2xlPTEmYW1wO3A9JTJGaW52ZXN0bWVudCUyRiZhbXA7X3dwbm9uY2U9OTRhMTQ5MDhjOCJ9" /><meta name="generator" content="speculation-rules 1.7.0"><meta name="google-adsense-platform-account" content="ca-host-pub-2644536267352236"><meta name="google-adsense-platform-domain" content="sitekit.withgoogle.com"> 
14<script type='text/javascript'>!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
15n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
16n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
17t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
18document,'script','https://connect.facebook.net/en_US/fbevents.js');</script>
18  
18<script type='text/javascript'>FacebookSignal.init({"held":false,"ajaxUrl":"https:\/\/ladmanstudios.com\/wp-admin\/admin-ajax.php","releaseAction":"fbpix_release_signals","pixelId":"564011880040665","attribution":{},"capig":"1"});FacebookSignal.initPixel("564011880040665",{},{"agent":"wordpress_0_fbl4b-7.1.3-5.2.2","includeCapiIntegration":true});</script>
18<script type='text/javascript'>fbq('track', 'PageView', []);</script>
18<meta data-od-replaced-content="optimization-detective 1.0.0-beta7" name="generator" content="optimization-detective 1.0.0-beta7; url_metric_groups={0:populated, 480:empty, 600:populated, 782:populated}"><meta name="generator" content="image-prioritizer 1.0.0-beta4">
vendor: 83 bytes, line 18
18 <script async id="google_gtagjs" src="https://www.googletagmanager.com/gtag/js?id=
18G-GT27E0XFW7
vendor: 12 bytes, line 18
18"></script> 
18<script id="google_gtagjs-inline">
vendor: 124 bytes, line 18
18window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', '
18G-GT27E0XFW7
vendor: 8 bytes, line 18
18', {} );
18</script>
18  
18<script async crossorigin="anonymous" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1589152004598536&#038;host=ca-host-pub-2644536267352236"></script>
vendor: 66 bytes, lines 18-19
18 
19 <script async src="https://www.googletagmanager.com/gtag/js?id=
19G-GT27E0XFW7
vendor: 12 bytes, line 19
19"></script> 
19<script>
vendor: 134 bytes, lines 19-23
19window.dataLayer = window.dataLayer || [];
20  function gtag(){dataLayer.push(arguments);}
21  gtag('js', new Date());
22
23  gtag('config', '
23G-GT27E0XFW7
vendor: 3 bytes, line 23
23');
23</script>
23 <link rel="icon" href="https://ladmanstudios.com/wp-content/uploads/2025/02/cropped-Site-Icon-PNG-32x32.png" sizes="32x32" /><link rel="icon" href="https://ladmanstudios.com/wp-content/uploads/2025/02/cropped-Site-Icon-PNG-192x192.png" sizes="192x192" /><link rel="apple-touch-icon" href="https://ladmanstudios.com/wp-content/uploads/2025/02/cropped-Site-Icon-PNG-180x180.png" /><meta name="msapplication-TileImage" content="https://ladmanstudios.com/wp-content/uploads/2025/02/cropped-Site-Icon-PNG-270x270.png" /><style id="wp-custom-css">/* ============================================================
24   LADMAN STUDIOS &mdash; ADDITIONAL CSS &middot; COMPLETE
25   This file IS your whole Additional CSS panel.
26   Select all in Customize &rarr; Additional CSS, delete, paste this.
27
28   Built in four layers, in this order and for this reason:
29
30     1 &middot; FONTS       one @import, and it must be the first thing
31                     in the file or the browser throws it away
32     2 &middot; YOUR CSS    unchanged, verbatim. This is the structural
33                     layer your blog posts depend on &mdash; grids,
34                     spacing, the jump-nav columns, the carousel
35                     fix. Nothing here was edited.
36     3 &middot; BLOG        re-points .ls-guide's variables to the new
37                     palette and type. Written at `body .ls-guide`
38                     so it also beats the inline <style> block
39                     each post carries.
40     4 &middot; THEME       header, footer, archives, buttons, forms &mdash;
41                     the site-wide layer.
42
43   Later layers override earlier ones on purpose. Don't reorder.
44
45   NOT INCLUDED, AND SHOULDN'T BE: the homepage's CSS. That
46   lives inside its own Custom HTML block, scoped to .lms, and
47   out-specifies everything here. Leave it where it is.
48   ============================================================ */
49
50@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght,SOFT,WONK@0,9..144,300..900,0..100,0..1;1,9..144,300..900,0..100,0..1&family=Inter:[email protected]&family=DM+Mono:wght@400;500&display=swap');
51
52
53/* ████████████████████████████████████████████████████████████
54   LAYER 2 &middot; YOUR EXISTING CSS &mdash; UNCHANGED, VERBATIM
55   Do not delete this. Your blog posts' layout comes from here.
56   ████████████████████████████████████████████████████████████ */
57
58.carousel-item > article {height: 100%;}
59
60.ls-guide {
61  --ls-text: #111111;
62  --ls-muted: #5f5f5f;
63  --ls-border: #dddddd;
64  --ls-bg-soft: #f7f7f7;
65  --ls-bg-accent-soft: #eefbfd;
66  --ls-accent: #28C0D6;
67  --ls-accent-hover: #1aaec3;
68  --ls-black: #000000;
69  --ls-white: #ffffff;
70  --ls-max: 820px;
71  max-width: var(--ls-max);
72  margin: 0 auto;
73  color: var(--ls-text);
74  font-size: 18px;
75  line-height: 1.75;
76}
77.ls-guide * { box-sizing: border-box; }
78.ls-guide h1, .ls-guide h2, .ls-guide h3 { color: var(--ls-black); line-height: 1.2; letter-spacing: -0.01em; }
79.ls-guide h1 { font-size: clamp(2.2rem, 4vw, 3.5rem); margin: 0 0 1rem !important; }
80.ls-guide h2 { font-size: clamp(1.6rem, 3vw, 2.2rem); margin: 4.0rem 0 1rem !important; }
81.ls-guide h3 { font-size: clamp(1.15rem, 2vw, 1.35rem); margin: 2rem 0 0.75rem !important; }
82.ls-guide p { margin: 0 0 1.15rem; }
83.ls-guide ul { margin: 0 0 1.25rem 1.25rem; padding: 0; }
84.ls-guide li { margin-bottom: 0.65rem; }
85.ls-guide a { color: var(--ls-black); text-decoration-thickness: 1px; text-underline-offset: 2px; }
86.ls-guide a:hover { color: var(--ls-accent-hover); }
87.ls-guide hr { border: 0; border-top: 1px solid var(--ls-border); margin: 3rem 0; }
88.ls-guide .ls-hero { padding: 1.5rem 0 1rem; }
89.ls-guide .ls-hero-image, .ls-guide .ls-section-image { margin: 1.5rem 0 1.75rem; }
90.ls-guide .ls-hero-image img, .ls-guide .ls-section-image img { width: 100%; height: auto; display: block; }
91.ls-guide .ls-kicker { display: inline-block; margin-bottom: 1rem; font-size: 0.85rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ls-muted); }
92.ls-guide .ls-lead { font-size: 1.15rem; }
93.ls-guide .ls-pullquote { margin: 1.5rem 0; padding: 1rem 1.25rem; border-left: 3px solid var(--ls-accent); background: var(--ls-bg-accent-soft); font-size: 1.08rem; }
94.ls-guide .ls-jumpnav { margin: 2rem 0 2.5rem; padding: 1.1rem 1.25rem; background: var(--ls-bg-soft); border: 1px solid var(--ls-border); border-radius: 8px; }
95.ls-guide .ls-jumpnav-title { font-size: 0.9rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.85rem; color: var(--ls-muted); }
96.ls-guide .ls-jumpnav ul { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 2rem; }
97.ls-guide .ls-jumpnav li { margin: 0 0 0.65rem; break-inside: avoid; }
98.ls-guide .ls-note-box { margin: 1.5rem 0; padding: 1.15rem 1.25rem; background: var(--ls-bg-soft); border: 1px solid var(--ls-border); border-radius: 8px; }
99.ls-guide .ls-video-section { margin: 0 0 3rem; padding: 1.25rem; background: var(--ls-bg-soft); border: 1px solid var(--ls-border); border-radius: 8px; }
100.ls-guide .ls-video-section h2 { margin: 0 0 0.75rem !important; font-size: clamp(1.3rem, 2.5vw, 1.8rem); }
101.ls-guide .ls-video-section p:last-of-type { margin-bottom: 1rem; }
102.ls-guide .ls-video { margin-top: 1rem; }
103.ls-guide .ls-video-embed { position: relative; width: 100%; padding-bottom: 56.25%; height: 0; overflow: hidden; border: 1px solid var(--ls-border); border-radius: 8px; background: var(--ls-black); }
104.ls-guide .ls-video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
105.ls-guide .ls-btn-row { display: flex; flex-wrap: wrap; gap: 0.8rem; margin: 1.5rem 0 0; }
106.ls-guide .ls-btn { display: inline-flex; align-items: center; justify-content: center; width: 220px; min-height: 46px; padding: 0.7rem 1rem; border-radius: 4px; text-decoration: none; font-weight: 600; font-size: 0.95rem; line-height: 1.2; text-align: center; transition: all 0.2s ease; }
107.ls-guide .ls-btn-primary { background: var(--ls-accent); color: var(--ls-black); border: 1px solid var(--ls-accent); }
108.ls-guide .ls-btn-primary:hover { background: var(--ls-accent-hover); border-color: var(--ls-accent-hover); color: var(--ls-black); }
109.ls-guide .ls-btn-secondary { border: 1px solid var(--ls-black); background: var(--ls-white); color: var(--ls-black); }
110.ls-guide .ls-btn-secondary:hover { background: var(--ls-black); color: var(--ls-white); }
111.ls-guide .ls-fit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin: 1.5rem 0; }
112.ls-guide .ls-fit-card { padding: 1.25rem; border: 1px solid var(--ls-border); border-radius: 8px; background: var(--ls-white); }
113.ls-guide .ls-fit-card h3 { margin-top: 0 !important; }
114.ls-guide .ls-resource-list li { margin-bottom: 0.9rem; }
115.ls-guide .ls-about { padding: 1.5rem 0 0; }
116.ls-guide .ls-cta-final { margin-top: 2rem; padding: 1.5rem; background: var(--ls-bg-accent-soft); border: 1px solid #cfeff4; border-radius: 8px; }
117.ls-img-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1.5rem 0 1.75rem; }
118.ls-img-grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0.75rem; margin: 1.5rem 0 1.75rem; }
119.ls-img-grid-2 img, .ls-img-grid-3 img { width: 100%; height: auto; display: block; }
120@media (max-width: 767px) {
121  .ls-guide { font-size: 17px; }
122  .ls-guide .ls-jumpnav ul { columns: 1; }
123  .ls-guide .ls-fit-grid { grid-template-columns: 1fr; }
124  .ls-guide .ls-btn { width: 100%; max-width: 320px; }
125  .ls-img-grid-2, .ls-img-grid-3 { grid-template-columns: 1fr; }
126}
127
128
129/* ████████████████████████████████████████████████████████████
130   LAYER 3 &middot; BLOG RESTYLE
131   ████████████████████████████████████████████████████████████ */
132
133/* ============================================================
134   LADMAN STUDIOS &mdash; BLOG RESTYLE
135   Re-points the existing .ls-guide system to the new palette
136   and type. Add this to Additional CSS.
137
138   ── WHAT THIS DOES NOT DO ────────────────────────────────────
139   No selector is renamed. No class is added or removed. No post
140   markup, copy, heading level, link or alt attribute changes.
141   Your .ls-guide HTML is untouched &mdash; this only changes the
142   values those existing selectors resolve to.
143
144   ── THE ONE TRICK YOU NEED TO KNOW ───────────────────────────
145   Each of your posts carries its own copy of the .ls-guide CSS
146   in an inline <style> block. That block sits in the <body> and
147   Additional CSS sits in the <head>, so at equal specificity
148   the POST wins and edits here would do nothing.
149
150   So every rule below is written as `body .ls-guide` (0,1,1)
151   instead of `.ls-guide` (0,1,0). Higher specificity beats
152   source order, so this wins everywhere &mdash; including on the
153   hundred posts you are never going to open again.
154
155   Result: paste this once, every existing post restyles itself.
156   ============================================================ */
157
158
159/* ============================================================
160   1 &middot; THE TOKENS
161   Your variables, new values. This block alone does ~80% of
162   the work, because .ls-guide already reads every colour from
163   a variable rather than hard-coding it. That was good work.
164   ============================================================ */
165
166body .ls-guide{
167  /* DARK. Black ground is the distinction TJ wants to keep, so the
168     blog runs the same ink as the rest of the site rather than paper.
169
170     NOTE on two inverted names: --ls-black and --ls-white keep their
171     original variable NAMES (so no selector has to change) but their
172     VALUES are now swapped. --ls-black is what headings and links use,
173     so on a dark ground it has to be white. --ls-white is used as a
174     card background, so it has to be dark. Confusing to read, zero
175     risk to change. */
176  --ls-text:           #D6D2DC;   /* body copy &mdash; 13.5:1 on black */
177  --ls-muted:          #8E8898;   /* 5.9:1 */
178  --ls-border:         #241F2C;
179  --ls-bg-soft:        #100D16;   /* panels, jump nav, note boxes */
180  --ls-bg-accent-soft: #190A33;   /* violet-tinted panels */
181  --ls-accent:         #7B2CFF;   /* fills only */
182  --ls-accent-hover:   #B98CFF;   /* link hover &mdash; lighter on dark, 7.9:1 */
183  --ls-black:          #FFFFFF;   /* &larr; inverted: headings + link text */
184  --ls-white:          #0C0A12;   /* &larr; inverted: card backgrounds */
185
186  /* Reading measure. 820px at 18px is ~95 characters; 44rem is ~70.
187     TO KEEP YOUR ORIGINAL WIDTH: delete this one line. */
188  --ls-max: 44rem;
189
190  background: transparent;
191  color: var(--ls-text);
192  font-family: "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif;
193  font-weight: 300;
194  font-size: 18px;
195  line-height: 1.72;
196}
197
198
199/* ============================================================
200   2 &middot; TYPE
201   Your CSS never set a font-family, so headings were inheriting
202   from the theme. Setting them explicitly here means the blog
203   matches the homepage whatever the Customizer is doing.
204   ============================================================ */
205
206body .ls-guide h1,
207body .ls-guide h2,
208body .ls-guide h3{
209  font-family: "Fraunces", Georgia, "Times New Roman", serif;
210  font-variation-settings: "opsz" 144, "SOFT" 20, "WONK" 1;
211  font-weight: 600;
212  letter-spacing: -0.022em;
213  text-transform: none;
214}
215body .ls-guide em{ font-variation-settings: "opsz" 144, "SOFT" 40, "WONK" 1; }
216
217/* The kicker and jump-nav title become the mono voice the rest
218   of the site uses for labels. Same role, same treatment. */
219body .ls-guide .ls-kicker,
220body .ls-guide .ls-jumpnav-title{
221  font-family: "DM Mono", ui-monospace, Menlo, monospace;
222  font-size: .68rem;
223  font-weight: 400;
224  letter-spacing: .16em;
225  text-transform: uppercase;
226  color: var(--ls-muted);
227}
228
229body .ls-guide a{ color: var(--ls-black); }             /* white, underlined */
230body .ls-guide a:hover{ color: var(--ls-accent-hover); }
231
232
233/* ============================================================
234   3 &middot; BUTTONS &mdash; an actual accessibility fix, not a preference
235   .ls-btn-primary was `background: accent; color: black`.
236   Black on your cyan was 9.6:1. Black on the violet is 3.65:1,
237   which fails WCAG AA. White on the violet is 5.76:1.
238   ============================================================ */
239
240body .ls-guide .ls-btn{
241  font-family: "Inter", -apple-system, sans-serif;
242  font-weight: 600;
243  font-size: .76rem;
244  letter-spacing: .13em;
245  text-transform: uppercase;
246  border-radius: 0;
247  width: auto;
248  min-width: 220px;
249  padding: 1rem 1.8rem;
250}
251body .ls-guide .ls-btn-primary{
252  background: var(--ls-accent);
253  border-color: var(--ls-accent);
254  color: #FFFFFF;                 /* &larr; the fix */
255}
256body .ls-guide .ls-btn-primary:hover{
257  background: var(--ls-accent-hover);
258  border-color: var(--ls-accent-hover);
259  color: #FFFFFF;
260}
261body .ls-guide .ls-btn-secondary{
262  background: transparent;
263  border-color: var(--ls-black);
264  color: var(--ls-black);
265}
266body .ls-guide .ls-btn-secondary:hover{
267  background: var(--ls-black);
268  color: var(--ls-white);
269}
270
271
272/* ============================================================
273   4 &middot; SQUARE CORNERS
274   Rounded cards are one of the template tells we stripped out
275   of the homepage. Same treatment here so the two agree.
276   ============================================================ */
277
278body .ls-guide .ls-jumpnav,
279body .ls-guide .ls-note-box,
280body .ls-guide .ls-video-section,
281body .ls-guide .ls-video-embed,
282body .ls-guide .ls-fit-card,
283body .ls-guide .ls-cta-final,
284body .ls-guide img{ border-radius: 0; }
285
286
287/* ============================================================
288   5 &middot; SMALL REFINEMENTS
289   ============================================================ */
290
291/* The pull-quote becomes the violet rule the homepage uses */
292body .ls-guide .ls-pullquote{
293  border-left: 2px solid var(--ls-accent);
294  background: var(--ls-bg-accent-soft);
295  font-family: "Fraunces", Georgia, serif;
296  font-variation-settings: "opsz" 144, "SOFT" 20, "WONK" 1;
297  font-weight: 500;
298  font-size: 1.22rem;
299  line-height: 1.38;
300  color: #FFFFFF;
301}
302
303
304/* --ls-black is now white, and .ls-video-embed used it as the
305   letterbox background. Put that back to dark explicitly. */
306body .ls-guide .ls-video-embed{ background: #0C0A12; }
307
308/* .ls-fit-card and .ls-cta-final borders, retinted for the dark ground */
309body .ls-guide .ls-fit-card{ border-color: var(--ls-border); }
310body .ls-guide .ls-cta-final{ border: 1px solid #3A1470; }
311
312/* Section images get the caption treatment if you add one */
313body .ls-guide figcaption{
314  font-family: "DM Mono", ui-monospace, monospace;
315  font-size: .66rem;
316  letter-spacing: .11em;
317  text-transform: uppercase;
318  color: var(--ls-muted);
319  margin-top: .6rem;
320}
321
322/* Breathing room between sections, matched to the homepage */
323body .ls-guide h2{ margin-top: 4.5rem !important; }
324
325
326/* ============================================================
327   FOR NEW POSTS &mdash; one small change worth making
328   ============================================================
329
330   Now that Additional CSS carries all of this, new posts do NOT
331   need the inline <style> block at the top. Drop it and the
332   post inherits everything automatically.
333
334   Two reasons that's better:
335
336   1. SPEED. That block is ~4KB of render-blocking CSS repeated
337      on every post. Removing it is a free Core Web Vitals win
338      on your highest-traffic pages.
339
340   2. ONE SOURCE OF TRUTH. Right now a change to the blog look
341      means editing every post. Without the inline block, you
342      change Additional CSS once and every post follows.
343
344   You do NOT need to go back and strip it from old posts &mdash; the
345   `body .ls-guide` specificity above already overrides them.
346   Just stop including it going forward.
347
348   ── AND A CONTENT NOTE, NOT A CSS ONE ──────────────────────
349   Your posts already have the bones of the homepage's caption
350   system: .ls-kicker is doing the same job as .lbl. If you add
351   a <figcaption> under section images with the venue, the town
352   and what was happening, the blog starts reading as the same
353   publication as the homepage rather than the same website.
354   Real place names in body text is honest local SEO too.
355   ============================================================ */
356
357
358/* ████████████████████████████████████████████████████████████
359   LAYER 4 &middot; SITE-WIDE THEME
360   ████████████████████████████████████████████████████████████ */
361
362/* ============================================================
363   LADMAN STUDIOS &mdash; GLOBAL STYLESHEET
364   v1 &middot; site-wide restyle &middot; Fraunces / Inter / DM Mono
365
366   WHAT THIS IS
367   The theme layer. Colours, fonts, links, buttons, header,
368   footer, blog and post styling. Applies to EVERY page,
369   archive and post without touching any content.
370
371   WHAT THIS IS NOT
372   The landing-page layer. The homepage's big display type,
373   hero, number band and grids live in its own Custom HTML
374   block scoped to .lms, and every rule there out-specifies
375   these. The two don't fight.
376
377   WHERE IT GOES
378   Appearance &rarr; Customize &rarr; Additional CSS &rarr; paste &rarr; Publish.
379
380   ⚠️  THIS ONE IS UNSCOPED. It changes your whole site the
381   moment you publish it. Do it deliberately, and read the
382   pre-flight list at the bottom of this file first.
383   ============================================================ */
384
385/* (duplicate @import removed &mdash; Layer 1 at the top of this file already
386   loads Fraunces, Inter and DM Mono. A second @import after any rule is
387   invalid CSS and browsers drop it.) */
388
389
390/* ============================================================
391   1 &middot; TOKENS
392   ============================================================ */
393
394:root{
395  /* dark ground &mdash; most of the site */
396  --lms-ink:        #08070A;
397  --lms-ink2:       #100D16;
398  --lms-field:      #2A0B52;
399  --lms-line:       #241F2C;
400  --lms-line2:      #37304A;
401
402  /* light ground &mdash; single blog posts */
403  --lms-paper:      #EFEDE8;
404  --lms-paper-2:    #E6E3DC;
405  --lms-paper-ink:  #14121A;
406  --lms-paper-body: #3D3947;
407  --lms-paper-dim:  #5F5967;
408  --lms-paper-line: #D5D1C7;
409
410  /* text on dark */
411  --lms-white:      #FFFFFF;
412  --lms-off:        #D6D2DC;
413  --lms-mute:       #8E8898;
414  --lms-cap:        #857F91;
415
416  /* accent */
417  --lms-violet:     #7B2CFF;   /* FILL ONLY &mdash; buttons, rules */
418  --lms-violet-hi:  #8F4BFF;
419  --lms-violet-lo:  #5A18D6;
420  --lms-vtext:      #B98CFF;   /* purple TEXT on dark */
421  --lms-vtext-lt:   #5A18D6;   /* purple TEXT on paper */
422
423  /* type */
424  --lms-display: "Fraunces", Georgia, "Times New Roman", serif;
425  --lms-body:    "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif;
426  --lms-mono:    "DM Mono", ui-monospace, Menlo, monospace;
427}
428
429
430/* ============================================================
431   2 &middot; BASE
432   ============================================================ */
433
434body{
435  background: var(--lms-ink);
436  color: var(--lms-off);
437  font-family: var(--lms-body);
438  font-weight: 300;
439  font-size: 17px;
440  line-height: 1.65;
441  -webkit-font-smoothing: antialiased;
442}
443
444::selection{ background: var(--lms-violet); color: #fff; }
445
446a{ color: var(--lms-vtext); text-underline-offset: .18em; }
447a:hover{ color: var(--lms-white); }
448a:focus-visible,
449button:focus-visible,
450input:focus-visible,
451textarea:focus-visible,
452select:focus-visible{
453  outline: 2px solid var(--lms-vtext);
454  outline-offset: 3px;
455}
456
457
458/* ============================================================
459   3 &middot; HEADINGS
460   Restrained on purpose. These are the sizes for ordinary
461   pages and posts &mdash; the homepage's hero sizes stay in .lms.
462   NOTE: this restyles headings. It does NOT change which is
463   an H1 and which is an H2. Never change that.
464   ============================================================ */
465
466h1, h2, h3, h4, h5, h6,
467.entry-title, .page-title, .archive-title{
468  font-family: var(--lms-display);
469  font-variation-settings: "opsz" 144, "SOFT" 20, "WONK" 1;
470  font-weight: 600;
471  letter-spacing: -0.022em;
472  line-height: 1.08;
473  color: var(--lms-white);
474  text-transform: none;   /* kills the theme's Title Case */
475  text-wrap: balance;
476}
477h1, .entry-title, .page-title{ font-size: clamp(2.1rem, 4.4vw, 3.4rem); line-height: 1.02; }
478h2{ font-size: clamp(1.7rem, 3.2vw, 2.4rem); }
479h3{ font-size: clamp(1.3rem, 2.2vw, 1.65rem); }
480h4{ font-size: 1.15rem; }
481h5, h6{
482  font-family: var(--lms-body); font-weight: 600; font-size: 1rem;
483  letter-spacing: -0.01em;
484}
485
486em{ font-style: italic; font-variation-settings: "opsz" 144, "SOFT" 40, "WONK" 1; }
487
488
489/* ============================================================
490   4 &middot;
490 SINGLE BLOG POSTS
491   Dark, same as the rest of the site &mdash; black ground is the
492   distinction, so posts don't switch to paper. The reading
493   comforts (measure, size, spacing) still apply.
494   ============================================================ */
495
496body.single-post .entry-content{ font-size: 19px; line-height: 1.72; }
497body.single-post .entry-content > *{ max-width: 44rem; margin-left: auto; margin-right: auto; }
498body.single-post .entry-content > .alignwide,
499body.single-post .entry-content > .alignfull,
500body.single-post .entry-content > figure{ max-width: none; }
501body.single-post h2{ margin-top: 2.4em; }
502body.single-post h3{ margin-top: 1.8em; }
503body.single-post blockquote{
504  border-left: 2px solid var(--lms-violet);
505  padding-left: 1.3rem; margin-left: 0;
506  font-family: var(--lms-display); font-weight: 500;
507  font-size: 1.25rem; line-height: 1.35; color: var(--lms-white);
508}
509body.single-post hr{ border: 0; border-top: 1px solid var(--lms-line); margin: 3rem auto; }
510body.single-post code{ background: var(--lms-ink2); padding: .1em .35em; }
511
512
513/* ============================================================
514   5 &middot; BLOG INDEX & ARCHIVES &mdash; dark
515   ============================================================ */
516
517.entry-content p{ margin-bottom: 1.15em; }
518
519.loop-entry, .entry.loop-entry{
520  background: var(--lms-ink2);
521  border: 1px solid var(--lms-line);
522  border-radius: 0;
523}
524.loop-entry .entry-title{ font-size: clamp(1.2rem, 1.9vw, 1.5rem); }
525.loop-entry .entry-meta,
526.entry-meta, .posted-on, .byline{
527  font-family: var(--lms-mono); font-size: .66rem; letter-spacing: .14em;
528  text-transform: uppercase; color: var(--lms-mute);
529}
530.loop-entry .entry-taxonomies a,
531.entry-taxonomies a{ color: var(--lms-vtext); }
532.post-thumbnail img, .loop-entry img{ border-radius: 0; }
533
534.pagination .page-numbers{
535  font-family: var(--lms-mono); font-size: .7rem; letter-spacing: .1em;
536  border-radius: 0; color: var(--lms-off);
537}
538.pagination .page-numbers.current{ background: var(--lms-violet); color: #fff; }
539
540
541/* ============================================================
542   6 &middot; BUTTONS
543   ============================================================ */
544
545.wp-block-button__link, .kb-button, .button,
546input[type="submit"], button.submit{
547  font-family: var(--lms-body);
548  font-weight: 600;
549  font-size: .76rem;
550  letter-spacing: .13em;
551  text-transform: uppercase;
552  background: var(--lms-violet);
553  color: #fff;
554  border: 0;
555  border-radius: 0;
556  padding: 1rem 1.8rem;
557  text-decoration: none;
558  transition: background .18s ease;
559}
560.wp-block-button__link:hover, .kb-button:hover, .button:hover{
561  background: var(--lms-violet-hi); color: #fff;
562}
563.wp-block-button__link:active, .kb-button:active{ background: var(--lms-violet-lo); }
564
565.is-style-outline .wp-block-button__link,
566.kb-btn-global-outline{
567  background: transparent; color: var(--lms-white);
568  border: 1px solid var(--lms-line2);
569}
570body.single-post .is-style-outline .wp-block-button__link{
571  color: var(--lms-paper-ink); border-color: var(--lms-paper-line);
572}
573
574
575/* ============================================================
576   7 &middot; HEADER & FOOTER
577   Set the wordmark in Customize &rarr; Header &rarr; Logo &rarr; Site Title
578   (not the script image).
579   ============================================================ */
580
581.site-header, .site-header-wrap, #masthead{ background: var(--lms-ink); }
582.site-title, .site-branding .site-title a{
583  font-family: var(--lms-display);
584  font-variation-settings: "opsz" 144, "SOFT" 20, "WONK" 1;
585  font-weight: 700; font-size: 1.2rem; letter-spacing: -0.02em;
586  color: var(--lms-white); text-decoration: none; text-transform: none;
587}
588.main-navigation .menu > li > a{
589  font-family: var(--lms-body); font-weight: 500; font-size: .72rem;
590  letter-spacing: .12em; text-transform: uppercase;
591  color: rgba(255,255,255,.82);
592}
593.main-navigation .menu > li > a:hover{ color: var(--lms-vtext); }
594
595.site-footer, #colophon{ background: var(--lms-ink2); color: #A49EAE; }
596.site-footer a{ color: #BEB8C6; text-decoration: none; }
597.site-footer a:hover{ color: var(--lms-vtext); }
598.site-footer h2, .site-footer h3, .site-footer h4,
599.site-footer .widget-title{
600  font-family: var(--lms-mono); font-size: .63rem; letter-spacing: .18em;
601  text-transform: uppercase; color: var(--lms-vtext); font-weight: 400;
602}
603
604
605/* ============================================================
606   8 &middot; FORMS
607   ============================================================ */
608
609input[type="text"], input[type="email"], input[type="tel"],
610input[type="url"], input[type="search"], textarea, select{
611  background: var(--lms-ink2);
612  border: 1px solid var(--lms-line2);
613  border-radius: 0;
614  color: var(--lms-white);
615  font-family: var(--lms-body);
616  font-size: 1rem;
617  padding: .8rem 1rem;
618}
619::placeholder{ color: var(--lms-mute); opacity: 1; }
620label{
621  font-family: var(--lms-mono); font-size: .66rem; letter-spacing: .14em;
622  text-transform: uppercase; color: var(--lms-mute);
623}
624body.single-post input, body.single-post textarea, body.single-post select{
625  background: #fff; border-color: var(--lms-paper-line); color: var(--lms-paper-ink);
626}
627
628
629/* ============================================================
630   9 &middot; KILL THE TEMPLATE TELLS
631   ============================================================ */
632
633/* No fade-in-on-scroll anywhere. Also helps LCP. */
634.kadence-animation, [class*="kt-animate"], [data-aos]{
635  opacity: 1 !important; transform: none !important;
636  animation: none !important; transition: none !important;
637}
638
639/* Square corners. Rounded cards read as a template. */
640.wp-block-image img, .kb-gallery-item img, .post-thumbnail img,
641.kb-row-layout-wrap, .loop-entry{ border-radius: 0 !important; }
642
643/* Captions everywhere, in the mono voice */
644figcaption, .wp-element-caption, .wp-block-image figcaption{
645  font-family: var(--lms-mono); font-size: .66rem; letter-spacing: .11em;
646  text-transform: uppercase; color: var(--lms-cap);
647  margin-top: .6rem; line-height: 1.5;
648}
649
650
651/* ============================================================
652   10 &middot; ACCESSIBILITY & MOTION
653   ============================================================ */
654
655html{ scroll-behavior: smooth; }
656@media (prefers-reduced-motion: reduce){
657  html{ scroll-behavior: auto; }
658  *{ animation: none !important; transition: none !important; }
659}
660
661
662
663
664
665
666/* ============================================================
667   FIX &middot; BACKGROUNDS
668   ============================================================
669
670   EARLIER VERSION OF THIS BLOCK RE-POINTED KADENCE'S
671   --global-palette* VARIABLES. That was a mistake and it is gone.
672
673   Why: --global-palette1 is Kadence's ACCENT slot, and this theme
674   uses it as a BACKGROUND in places that aren't visible from the
675   CSS &mdash; the header wrapper and the sticky-header container among
676   them. Setting it to violet turned those violet. A palette slot
677   means different things on different Kadence setups, so it isn't
678   safe to set blind from a stylesheet.
679
680   Palette values belong in Customize &rarr; Colors, where Kadence
681   labels each slot and you can see what moves. Values are in
682   CUSTOMIZER-CHECKLIST.md.
683
684   What's left here is explicit and boring: name the elements that
685   need a dark background and set it on them. Nothing inherits,
686   nothing surprises.
687   ============================================================ */
688
689html,
690body,
691.site,
692#wrapper,
693.site-container,
694.content-container,
695.content-area,
696.content-wrap,
697.content-bg,
698.site-main,
699.wp-site-blocks,
700.entry-content-wrap,
701article.entry,
702.single-content{
703  background-color: #08070A !important;
704}
705
706/* Kadence's page-title / hero band above the content */
707.entry-hero-container-inner,
708.entry-hero,
709.entry-hero .entry-header,
710.page-title,
711.archive-hero{
712  background-color: #08070A !important;
713  color: var(--lms-off);
714}
715
716/* HEADER &mdash; including the wrapper, the sticky clone, and the
717   transparent-header variants. These are the elements that went
718   violet, so they're set explicitly now. */
719.site-header,
720.site-header-wrap,
721.site-header-inner-wrap,
722.site-header-upper-wrap,
723.site-header-upper-inner-wrap,
724.site-header-lower-wrap,
725.site-top-header-wrap,
726.site-main-header-wrap,
727#masthead,
728.kadence-sticky-header,
729.item-is-stuck,
730.mobile-header-wrap,
731.mobile-navigation,
732.header-navigation{
733  background-color: #08070A !important;
734}
735/* ...but never paint over a deliberately transparent header,
736   which is what lets the homepage hero run under the nav. */
737.transparent-header .site-header-wrap,
738.transparent-header .site-header-inner-wrap,
739.transparent-header .site-main-header-wrap{
740  background-color: transparent !important;
741}
742
743/* FOOTER */
744.site-footer,
745.site-footer-wrap,
746.footer-html-inner,
747#colophon{ background-color: var(--lms-ink2) !important; }
748
749/* Sidebars and widgets */
750.primary-sidebar,
751.sidebar-inner-wrap,
752.widget-area{ background-color: #08070A !important; color: var(--lms-off); }
753
754.comments-area, .comment-body{ background: transparent; color: var(--lms-off); }
755
756.entry-content table, .entry-content pre{
757  background: var(--lms-ink2);
758  color: var(--lms-off);
759  border-color: var(--lms-line);
760}
761
762/* The blog wrapper stays transparent so the page shows through */
763body .ls-guide{ background: transparent !important; }
764
765
766/* ============================================================
767   FIX &middot; RELATED POSTS
768   The titles were picking up the global link colour, which read
769   too dark, and hovering fell through to a theme default of
770   black &mdash;
770 invisible on a black ground. Titles are white; the
771   violet moves to the hover instead.
772   ============================================================ */
773
774.entry-related .entry-title a,
775.related-posts .entry-title a,
776.kadence-related-posts .entry-title a,
777.post-related .entry-title a,
778.entry-related h3 a,
779.related-posts h3 a{
780  color: var(--lms-white) !important;
781  text-decoration: none;
782}
783.entry-related .entry-title a:hover,
784.related-posts .entry-title a:hover,
785.kadence-related-posts .entry-title a:hover,
786.post-related .entry-title a:hover,
787.entry-related h3 a:hover,
788.related-posts h3 a:hover{
789  color: var(--lms-vtext) !important;
790}
791
792
793/* ============================================================
794   FIX &middot; RELATED POSTS + POST NAV &mdash; THE WHITE SHELF
795   ============================================================
796
797   Kadence builds the related-posts section as a full-width band
798   with several nested wrappers, and it paints white on the band
799   itself &mdash; not on .content-bg, which is the only one the earlier
800   block reached. That is why a white shelf appeared behind a
801   narrower dark column: the inner wrapper went dark, the outer
802   band stayed white.
803
804   Every wrapper in that stack is named explicitly below. The
805   band and its inners go to ink; the post CARDS go one step
806   lighter so they still read as cards on a black ground.
807   ============================================================ */
808
809/* The band and every wrapper inside it */
810.entry-related,
811.entry-related-inner,
812.entry-related-inner-content,
813.entry-related-carousel,
814.entry-related-carousel .carousel-item,
815.entry-related .entry-content-wrap,
816.entry-related .content-bg,
817.related-posts,
818.post-related,
819.kadence-related-posts,
820.entry-related.alignfull,
821.entry-related-style-normal,
822.entry-related-style-unboxed{
823  background-color: var(--lms-ink) !important;
824}
825
826/* The cards themselves &mdash; one step up from the ground, with a
827   hairline so the edge is findable without a drop shadow. */
828.entry-related article.entry,
829.entry-related .loop-entry,
830.entry-related .carousel-item > article,
831.related-posts article.entry,
832.kadence-related-posts article.entry{
833  background-color: var(--lms-ink2) !important;
834  border: 0 !important;
835  box-shadow: none !important;
836  border-radius: 0;
837}
838.entry-related .entry-content-wrap,
839.entry-related .loop-entry .entry-content-wrap{
840  background-color: transparent !important;
841}
842
843/* Section heading &mdash; it was rendering near-black on black */
844.entry-related-title,
845.entry-related h2,
846.related-posts h2,
847.kadence-related-posts h2{
848  color: var(--lms-white) !important;
849  font-family: "Fraunces", Georgia, serif;
850  font-variation-settings: "opsz" 144, "SOFT" 20, "WONK" 1;
851  font-size: 1.5rem;
852  letter-spacing: -0.02em;
853  text-transform: none;
854}
855
856/* Card meta / excerpt */
857.entry-related .entry-meta,
858.entry-related .entry-taxonomies,
859.entry-related .entry-summary,
860.entry-related .posted-on,
861.entry-related time{
862  color: var(--lms-mute) !important;
863  font-family: "DM Mono", ui-monospace, monospace;
864  font-size: .64rem;
865  letter-spacing: .1em;
866  text-transform: uppercase;
867}
868
869/* Carousel controls &mdash; arrows were white-on-white, dots invisible */
870.entry-related .slick-prev,
871.entry-related .slick-next,
872.entry-related-carousel .slick-arrow{
873  background: rgba(8,7,10,.72) !important;
874  color: var(--lms-white) !important;
875  border: 1px solid var(--lms-line2);
876  border-radius: 0;
877}
878.entry-related .slick-prev:hover,
879.entry-related .slick-next:hover,
880.entry-related-carousel .slick-arrow:hover{
881  background: var(--lms-violet) !important;
882  border-color: var(--lms-violet) !important;
883  color: #FFFFFF !important;
884}
885.entry-related .slick-dots li button,
886.entry-related-carousel .slick-dots li button{
887  background: var(--lms-line2) !important;
888  border-radius: 0;
889}
890.entry-related .slick-dots li.slick-active button,
891.entry-related-carousel .slick-dots li.slick-active button{
892  background: var(--lms-vtext) !important;
893}
894
895
896/* PREVIOUS / NEXT POST NAV
897   The labels and titles were inheriting a dark body colour and
898   sitting at about 1.6:1 on black &mdash; technically present, not
899   actually readable. */
900.post-navigation,
901.navigation.post-navigation,
902.entry-related + .post-navigation,
903.nav-links{
904  background-color: var(--lms-ink) !important;
905  border-top: 1px solid var(--lms-line);
906  border-bottom: 1px solid var(--lms-line);
907}
908.post-navigation .nav-subtitle,
909.nav-links .nav-subtitle{
910  color: var(--lms-cap) !important;
911  font-family: "DM Mono", ui-monospace, monospace;
912  font-size: .64rem;
913  letter-spacing: .14em;
914  text-transform: uppercase;
915}
916.post-navigation .nav-title,
917.nav-links .nav-title,
918.post-navigation a,
919.nav-links a{
920  color: var(--lms-off) !important;
921  text-decoration: none;
922}
923.post-navigation a:hover,
924.nav-links a:hover,
925.post-navigation a:hover .nav-title,
926.nav-links a:hover .nav-title{
927  color: var(--lms-vtext) !important;
928}
929
930/* ============================================================
931   FIX &middot; BLOG ARCHIVE / POST LOOP
932   ============================================================
933
934   The card titles and category labels were inheriting a dark
935   body colour written for a paper ground &mdash; around 1.4:1 on
936   black. The photographs carried the whole page and the words
937   were, in practice, invisible.
938
939   Also strips the card outline. Kadence draws it as a border
940   AND a soft box-shadow; on a near-black ground the shadow
941   renders as a faint violet-grey edge, which is the "light
942   purple border" and not an actual purple anywhere in the CSS.
943   Both are removed. The photographs do the separating.
944   ============================================================ */
945
946/* Card shell &mdash; no border, no shadow, no rounding */
947.loop-entry,
948.loop-entry.content-bg,
949.post-archive .entry,
950.archive .entry.loop-entry,
951.blog .entry.loop-entry,
952.search .entry.loop-entry,
953.loop-entry .entry-content-wrap,
954.grid-lg-col-3 .loop-entry,
955.grid-sm-col-1 .loop-entry{
956  background-color: transparent !important;
957  border: 0 !important;
958  box-shadow: none !important;
959  border-radius: 0 !important;
960}
961
962/* Post titles */
963.loop-entry .entry-title,
964.loop-entry .entry-title a,
965.post-archive .entry-title a,
966.archive .entry-title a,
967.blog .entry-title a,
968.search .entry-title a{
969  /* NOT pure white. On a black ground a #FFF spike blooms into the
970     surrounding pixels &mdash; "halation" &mdash; and it thickens thin serifs
971     until the letterforms mush together. Backing off to #F2F0F5
972     costs 1.4 points of contrast (21:1 -> 19.6:1, both far past AA)
973     and visibly sharpens the type. */
974  color: #F2F0F5 !important;
975  text-decoration: none;
976  font-family: "Fraunces", Georgia, serif;
977
978  /* THE ACTUAL BUG. opsz 144 is Fraunces' DISPLAY cut &mdash; designed for
979     headlines at 60px+, where hairline serifs read as elegance. At
980     22px on black those same hairlines just disappear. opsz 36 is
981     the text cut: sturdier stems, thicker serifs, more open counters.
982     WONK 0 turns off the quirky angled terminals, which are charm at
983     poster size and noise at card size. */
984  font-variation-settings: "opsz" 36, "SOFT" 30, "WONK" 0;
985  font-weight: 650;
986  font-size: 1.3rem;
987  line-height: 1.3;              /* was ~1.15 &mdash; too tight for a 3-line serif */
988  letter-spacing: -0.004em;      /* display tracking is too tight down here */
989}
990.loop-entry .entry-title a:hover,
991.post-archive .entry-title a:hover,
992.archive .entry-title a:hover,
993.blog .entry-title a:hover{
994  color: var(--lms-vtext) !important;
995}
996
997/* Category / taxonomy line above the title */
998.loop-entry .entry-taxonomies,
999.loop-entry .entry-taxonomies a,
1000.loop-entry .category-style-normal a,
1001.entry-taxonomies .category-link,
1002.loop-entry .entry-meta,
1003.loop-entry .entry-meta a,
1004.loop-entry .posted-on,
1005.loop-entry time,
1006.loop-entry .entry-summary,
1007.loop-entry .entry-content p{
1008  color: var(--lms-off) !important;
1009}
1010.loop-entry .entry-taxonomies,
1011.loop-entry .entry-taxonomies a,
1012.loop-entry .category-style-normal a,
1013.loop-entry .entry-meta,
1014.loop-entry .entry-meta a{
1015  font-family: "DM Mono", ui-monospace, monospace;
1016  font-size: .68rem;
1017  letter-spacing: .1em;
1018  text-transform: none;
1019  color: var(--lms-mute) !important;
1020}
1021.loop-entry .entry-taxonomies a:hover,
1022.loop-entry .entry-meta a:hover{ color: var(--lms-vtext) !important; }
1023
1024/* READ MORE */
1025.loop-entry .post-more-link,
1026.loop-entry .more-link,
1027.loop-entry .post-more-link a,
1028.loop-entry .more-link a{
1029  color: var(--lms-white) !important;
1030  font-family: "Inter", -apple-system, sans-serif;
1031  font-weight: 600;
1032  font-size: .72rem;
1033  letter-spacing: .13em;
1034  text-transform: uppercase;
1035  text-decoration: none;
1036}
1037.loop-entry .post-more-link:hover,
1038.loop-entry .more-link:hover,
1039.loop-entry .post-more-link a:hover,
1040.loop-entry .more-link a:hover{ color: var(--lms-vtext) !important; }
1041
1042/* ── Card rhythm ──────────────────────────────────────────────
1043   The other half of "hard to read" is that nothing tells you
1044   where a card ends. Titles run 1, 2 and 4 lines, so READ MORE
1045   lands at three different heights and the row reads as floating
1046   fragments instead of three items. Equal-height cards with the
1047   link pinned to the bottom fixes that without drawing a box. */
1048
1049.post-archive .loop-entry,
1050.archive .loop-entry,
1051.blog .loop-entry,
1052.entry-related .carousel-item > article{
1053  height: 100%;
1054  display: flex;
1055  flex-direction: column;
1056}
1057.loop-entry .entry-content-wrap{
1058  display: flex;
1059  flex-direction: column;
1060  flex: 1 1 auto;
1061  padding-top: 1.35rem;
1062}
1063.loop-entry .post-more-link,
1064.loop-entry .more-link{ margin-top: auto; padding-top: 1.1rem; }
1065
1066/* A touch more air between the photograph and the label */
1067.loop-entry .entry-taxonomies{ margin-bottom: .55rem; }
1068
1069
1070/* ── CAPTION PANEL &middot; PAPER ────────────────────────────────────
1071   The text block under each photograph sits on cream rather
1072   than on the page ground.
1073
1074   Why cream and not white. White is 20.1:1 against near-black
1075   text and cream is 16.1:1, so white "wins" on paper. But a
1076   white panel is about 440x brighter than this page's ground
1077   and cream is about 376x, and on a black site that repeated
1078   luminance cliff at every card edge is what actually tires
1079   people out &mdash; not a shortage of contrast. 16.1:1 is roughly
1080   three and a half times the AA floor. Nobody is straining.
1081
1082   Cream is also already yours: it is the paper on the homepage
1083   Album section, so the blog index quotes a colour in the
1084   palette instead of adding white as a fifth one.
1085
1086   The category label is #5A18D6, NOT the brand #7B2CFF. Brand
1087   violet on white is 5.76:1 &mdash; legal, and the weakest thing on
1088   the page. #5A18D6 is the same hue pushed darker: 8.3:1, and
1089   it still reads as your violet. Paper flips the violet rule,
1090   it does not suspend it.
1091   ──────────────────────────────────────────────────────────── */
1092
1093.loop-entry .entry-content-wrap{
1094  background: var(--lms-paper) !important;
1095  padding: 1.35rem 1.25rem 1.45rem !important;
1096}
1097.loop-entry .entry-title,
1098.loop-entry .entry-title a,
1099.post-archive .entry-title a,
1100.archive .entry-title a,
1101.blog .entry-title a,
1102.search .entry-title a{
1103  color: #12101A !important;          /* 16.1:1 on the cream */
1104}
1105.loop-entry .entry-title a:hover,
1106.post-archive .entry-title a:hover,
1107.archive .entry-title a:hover,
1108.blog .entry-title a:hover{
1109  color: #5A18D6 !important;          /* 7.1:1 &mdash; the paper violet */
1110}
1111.loop-entry .entry-taxonomies,
1112.loop-entry .entry-taxonomies a,
1113.loop-entry .category-style-normal a{
1114  color: #5A18D6 !important;
1115}
1116.loop-entry .entry-taxonomies a:hover,
1117.loop-entry .category-style-normal a:hover{
1118  color: #12101A !important;
1119}
1120.loop-entry .entry-meta,
1121.loop-entry .entry-meta a,
1122.loop-entry .posted-on,
1123.loop-entry time,
1124.loop-entry .entry-summary,
1125.loop-entry .entry-content p{
1126  color: #4A4553 !important;          /* 8.9:1 &mdash; meta on paper */
1127}
1128.loop-entry .post-more-link,
1129.loop-entry .more-link,
1130.loop-entry .post-more-link a,
1131.loop-entry .more-link a{
1132  color: #12101A !important;
1133}
1134.loop-entry .post-more-link:hover,
1135.loop-entry .more-link:hover,
1136.loop-entry .post-more-link a:hover,
1137.loop-entry .more-link a:hover{
1138  color: #5A18D6 !important;
1139}
1140
1141/* The panel is the card edge now, so the photograph sits flush
1142   on top of it with no gap. */
1143.loop-entry .post-thumbnail,
1144.loop-entry .post-thumbnail-inner{ margin-bottom: 0 !important; }
1145
1146
1147
1148/* Archive page title and description */
1149.archive .page-title,
1150.blog .page-title,
1151.archive-title,
1152.page-title .archive-title{
1153  color: var(--lms-white) !important;
1154}
1155.taxonomy-description,
1156.archive-description{ color: var(--lms-off) !important; }
1157
1158/* Pagination */
1159.pagination a,
1160.pagination .page-numbers,
1161.nav-links .page-numbers{
1162  color: var(--lms-off) !important;
1163  border: 1px solid var(--lms-line);
1164  border-radius: 0;
1165  background: transparent;
1166}
1167.pagination .page-numbers.current,
1168.nav-links .page-numbers.current{
1169  background: var(--lms-violet) !important;
1170  border-color: var(--lms-violet) !important;
1171  color: #FFFFFF !important;
1172}
1173.pagination a:hover,
1174.nav-links a.page-numbers:hover{
1175  border-color: var(--lms-vtext) !important;
1176  color: var(--lms-vtext) !important;
1177}
1178
1179
1180
1181
1182/* ============================================================
1183   FIX &middot; SHARE ICONS
1184   The global `a { color }` rule was tinting the share icons
1185   purple, because most share modules draw their glyphs with
1186   fill: currentColor. Share links are excluded here.
1187
1188   These are white, which is the normal look on a dark ground.
1189   If you'd rather have each network's brand colour, set them in
1190   Customize &rarr; Social (Kadence stores its own colours there) and
1191   delete this block.
1192   ============================================================ */
1193
1194.kadence-social-share a,
1195.kt-social-share a,
1196.social-share-wrap a,
1197.share-wrap a,
1198.addtoany_list a,
1199.a2a_kit a,
1200.heateor_sssp a,
1201.sharedaddy a,
1202.wp-block-social-links a,
1203.wp-block-social-link a{
1204  color: #FFFFFF !important;
1205}
1206.kadence-social-share a:hover,
1207.kt-social-share a:hover,
1208.social-share-wrap a:hover,
1209.addtoany_list a:hover,
1210.wp-block-social-links a:hover{
1211  color: var(--lms-vtext) !important;
1212}
1213.kadence-social-share svg,
1214.kt-social-share svg,
1215.social-share-wrap svg,
1216.wp-block-social-link svg{ fill: currentColor; }
1217
1218/* AddToAny and similar use their own brand backgrounds &mdash; leave
1219   those completely alone. */
1220.a2a_svg, .a2a_svg svg, .heateor_sssp_svg{ fill: revert; color: revert; }
1221
1222
1223/* ============================================================
1224   PRE-FLIGHT &mdash; do these BEFORE you publish this file
1225   ============================================================
1226
1227   1. BASELINE YOUR SPEED. Run PageSpeed Insights on the
1228      homepage, one blog post, and one archive page. Write the
1229      LCP numbers down. This is the only ranking factor this
1230      project can realistically hurt, and you can't tell if it
1231      moved without a before.
1232
1233   2. SET THE CUSTOMIZER FIRST. See CUSTOMIZER-CHECKLIST.md.
1234      Most of the look comes from those settings, not this
1235      file &mdash; this fills the gaps Kadence can't reach.
1236
1237   3. DON'T REBUILD PAGES. Restyle only. Every hand-rebuild
1238      risks dropping a paragraph, a heading or an internal
1239      link that was earning traffic.
1240
1241   4. NEVER CHANGE WHICH HEADING IS WHICH. Restyle H1 and H2
1242      freely. Changing an H2 into an H1, or vice versa, is the
1243      one structural edit that can actually cost you.
1244
1245   5. LEAVE URLs, TITLES AND META DESCRIPTIONS ALONE. None of
1246      this touches them. Keep it that way.
1247
1248   6. STAGE IT. Publish this, check a post, a page, an archive
1249      and the search results page. Then wait four weeks and
1250      read Search Console before the next change.
1251   ============================================================ */
1252
1253
1254/* ████████████████████████████████████████████████████████████
1255   LAYER 5 &middot; KADENCE GALLERY + VIDEO POPUP
1256   ████████████████████████████████████████████████████████████ */
1257
1258/* ============================================================
1259   WHY THIS LAYER EXISTS
1260
1261   The Portfolio gallery and its video are NOT in a Custom HTML
1262   block. They are native Kadence blocks, on purpose, so photos
1263   can be swapped in the Kadence editor without anyone editing
1264   HTML. This layer makes them look like the rest of the site
1265   from the outside &mdash; the same approach that restyled every blog
1266   post without opening one.
1267
1268   Nothing here changes a photo, a caption, an alt attribute or
1269   the block's settings. Presentation only.
1270
1271   These selectors are Kadence's and Splide's. If a Kadence
1272   update renames a class, the gallery reverts to its default
1273   look &mdash; it does not break. Worth knowing before a plugin
1274   update rather than after.
1275   ============================================================ */
1276
1277/* ---- The block's own ground ---- */
1278.wp-block-kadence-advancedgallery,
1279.kb-gallery-wrap,
1280.kt-blocks-carousel,
1281.kb-gallery-ul,
1282.splide__track,
1283.splide__list{
1284  background-color: transparent !important;
1285}
1286
1287/* Square corners. Rounded photo corners are a template tell and
1288   the rest of the site has none. */
1289.wp-block-kadence-advancedgallery img,
1290.kb-gallery-figure,
1291.kb-slide-item,
1292.kb-gallery-figure img{
1293  border-radius: 0 !important;
1294}
1295
1296/* Kadence draws a soft black shadow under each figure. On a
1297   near-black ground that renders as a faint violet-grey halo &mdash;
1298   the same thing that looked like a purple outline on the blog
1299   cards. There is no purple in it, and it goes. */
1300.kb-gallery-figure,
1301.kb-slide-item,
1302.kb-gallery-figure img{
1303  box-shadow: none !important;
1304  border: 0 !important;
1305}
1306
1307/* ---- Arrows ----
1308   Kadence's "whiteondark" arrows are white glyphs on a white
1309   circle over a photograph, which is invisible about half the
1310   time. These are a dark square with a hairline, violet on hover,
1311   which is how every other control on the site behaves. */
1312.wp-block-kadence-advancedgallery .splide__arrow,
1313.kt-blocks-carousel .splide__arrow{
1314  background: rgba(8,7,10,.72) !important;
1315  border: 1px solid #37304A !important;
1316  border-radius: 0 !important;
1317  width: 2.8rem !important;
1318  height: 2.8rem !important;
1319  opacity: 1 !important;
1320  transition: background .15s ease, border-color .15s ease;
1321}
1322.wp-block-kadence-advancedgallery .splide__arrow svg,
1323.kt-blocks-carousel .splide__arrow svg{
1324  fill: #FFFFFF !important;
1325  height: .9rem !important;
1326  width: .9rem !important;
1327}
1328.wp-block-kadence-advancedgallery .splide__arrow:hover,
1329.kt-blocks-carousel .splide__arrow:hover{
1330  background: #7B2CFF !important;
1331  border-color: #7B2CFF !important;
1332}
1333.wp-block-kadence-advancedgallery .splide__arrow:disabled{ opacity: .35 !important; }
1334
1335/* ---- Pagination dots ----
1336   Round dots become the short rules the homepage reviews
1337   carousel uses, so the two read as the same control. */
1338.wp-block-kadence-advancedgallery .splide__pagination{
1339  padding: 0 !important;
1340  margin-top: 1.1rem !important;
1341  gap: .4rem;
1342}
1343.wp-block-kadence-advancedgallery .splide__pagination__page{
1344  width: 1.8rem !important;
1345  height: 2px !important;
1346  border-radius: 0 !important;
1347  background: rgba(255,255,255,.25) !important;
1348  opacity: 1 !important;
1349  transform: none !important;
1350  margin: 0 !important;
1351  transition: background .2s ease;
1352}
1353.wp-block-kadence-advancedgallery .splide__pagination__page.is-active{
1354  background: #B98CFF !important;
1355  transform: none !important;
1356}
1357
1358/* ---- Captions, if you ever switch them on ---- */
1359.kb-gallery-figure figcaption,
1360.kadence-blocks-gallery-item figcaption{
1361  font-family: "DM Mono", ui-monospace, Menlo, monospace !important;
1362  font-size: .62rem !important;
1363  letter-spacing: .12em !important;
1364  text-transform: uppercase !important;
1365  color: #D6D2DC !important;
1366  background: linear-gradient(180deg, rgba(8,7,10,0), rgba(8,7,10,.82)) !important;
1367  border-radius: 0 !important;
1368}
1369
1370/* ---- Drag affordance ----
1371   The carousel is draggable but nothing says so. A grab cursor
1372   is the cheapest possible hint. */
1373.wp-block-kadence-advancedgallery .splide__track{ cursor: grab; }
1374.wp-block-kadence-advancedgallery .splide__track:active{ cursor: grabbing; }
1375
1376/* Breathing room above and below the block, matched to the
1377   sections on either side of it. */
1378.wp-block-kadence-advancedgallery{
1379  margin-top: clamp(.5rem,1.5vw,1rem) !important;
1380  margin-bottom: clamp(2.4rem,5vw,3.6rem) !important;
1381}
1382
1383
1384/* ============================================================
1385   KADENCE VIDEO POPUP
1386   A poster image plus a play button that opens YouTube in a
1387   lightbox. Good for performance &mdash; no YouTube iframe loads until
1388   someone actually clicks &mdash; so it stays exactly as it is and
1389   only the chrome changes.
1390   ============================================================ */
1391
1392.wp-block-kadence-videopopup,
1393.kadence-video-popup-wrap{
1394  background: transparent !important;
1395  border-radius: 0 !important;
1396  box-shadow: none !important;
1397}
1398.kadence-video-popup-wrap img,
1399.kadence-video-poster{
1400  border-radius: 0 !important;
1401}
1402
1403/* The play button becomes the brand violet disc the homepage
1404   video frame uses. */
1405.kadence-video-popup-wrap .kt-video-svg-icon,
1406.kadence-video-popup-link .kt-video-svg-icon{
1407  background: #7B2CFF !important;
1408  color: #FFFFFF !important;
1409  border-radius: 50% !important;
1410  padding: 1.15rem 1.25rem 1.15rem 1.35rem !important;
1411  transition: background .18s ease, transform .18s ease;
1412}
1413.kadence-video-popup-link:hover .kt-video-svg-icon{
1414  background: #8F4BFF !important;
1415  transform: scale(1.06);
1416}
1417.kadence-video-popup-link:focus-visible{
1418  outline: 2px solid #B98CFF !important;
1419  outline-offset: 3px;
1420}
1421
1422/* A slight scrim so the play button always has something to sit
1423   on, whatever the poster frame happens to be. */
1424.kadence-video-overlay{
1425  background: rgba(8,7,10,.28) !important;
1426  transition: background .18s ease;
1427}
1428.kadence-video-popup-link:hover .kadence-video-overlay{
1429  background: rgba(8,7,10,.14) !important;
1430}
1431
1432.wp-block-kadence-videopopup{
1433  margin-top: clamp(1.5rem,3.5vw,2.6rem) !important;
1434  margin-bottom: clamp(2.4rem,5vw,3.6rem) !important;
1435}
1436
1437
1438/* ============================================================
1439   LAYER 5b &middot; GALLERY ON MOBILE &mdash; VERTICAL STACK
1440   ============================================================
1441
1442   On phones the carousel becomes a plain vertical run of
1443   photographs that you scroll past. No arrows, no dots, no
1444   swiping &mdash; one column, full width, natural height.
1445
1446   HOW, without touching the block: Splide builds a carousel by
1447   laying the <li>s in a row and pushing them around with an
1448   inline `transform` on the list. Inline styles beat a normal
1449   stylesheet, but they do NOT beat `!important` &mdash; Splide writes
1450   its inline styles without it. So every rule here is marked,
1451   the geometry is flattened back to a block, and the carousel
1452   stops being a carousel below the breakpoint.
1453
1454   The block keeps its Kadence settings. Nothing here changes on
1455   desktop, and a photo added next year stacks automatically.
1456
1457   BREAKPOINT: 767px, matching the one already in your CSS.
1458   For tablets to stack too, change both 767 values to 1024.
1459   ============================================================ */
1460
1461@media (max-width: 767px){
1462
1463  /* 1 &middot; Let the track grow instead of clipping to one slide */
1464  .wp-block-kadence-advancedgallery .splide__track,
1465  .kt-blocks-carousel .splide__track{
1466    overflow: visible !important;
1467    height: auto !important;
1468    max-height: none !important;
1469    padding: 0 !important;
1470    cursor: auto !important;
1471  }
1472
1473  /* 2 &middot; The row becomes a column. `transform:none` is the line
1474         that actually kills the carousel &mdash; it drops the offset
1475         Splide uses to position the active slide. */
1476  .wp-block-kadence-advancedgallery .splide__list,
1477  .kt-blocks-carousel .splide__list{
1478    display: block !important;
1479    transform: none !important;
1480    width: auto !important;
1481    height: auto !important;
1482    margin: 0 !important;
1483    padding: 0 !important;
1484  }
1485
1486  /* 3 &middot; Every slide is one full-width row. Splide dims the
1487         inactive ones, so opacity is forced back up. */
1488  .wp-block-kadence-advancedgallery .splide__slide,
1489  .wp-block-kadence-advancedgallery .kb-slide-item,
1490  .kt-blocks-carousel .splide__slide{
1491    width: 100% !important;
1492    max-width: 100% !important;
1493    min-width: 0 !important;
1494    margin: 0 0 .5rem !important;
1495    padding: 0 !important;
1496    left: auto !important;
1497    right: auto !important;
1498    float: none !important;
1499    opacity: 1 !important;
1500    transform: none !important;
1501    display: block !important;
1502  }
1503  .wp-block-kadence-advancedgallery .splide__slide:last-child{ margin-bottom: 0 !important; }
1504
1505  /* 4 &middot; Loop mode clones every slide to fake the wrap-around.
1506         Harmless in a carousel, duplicates in a stack. Hidden
1507         here, so this works whether or not loop is switched off
1508         in the block settings. */
1509  .wp-block-kadence-advancedgallery .splide__slide--clone,
1510  .kt-blocks-carousel .splide__slide--clone{ display: none !important; }
1511
1512  /* 5 &middot; Controls mean nothing on a stack */
1513  .wp-block-kadence-advancedgallery .splide__arrows,
1514  .wp-block-kadence-advancedgallery .splide__pagination,
1515  .kt-blocks-carousel .splide__arrows,
1516  .kt-blocks-carousel .splide__pagination{ display: none !important; }
1517
1518  /* 6 &middot; MAKE THE HEIGHT DETERMINISTIC.
1519         ─────────────────────────────────────────────────────────
1520         WHAT WENT WRONG THE FIRST TWO TIMES, honestly:
1521
1522         Attempt 1 reset only the figure and the <img>, so four
1523         Kadence wrappers kept the carousel's fixed height and
1524         short photos sat in tall boxes &mdash; the holes you saw.
1525
1526         Attempt 2 reset the whole wrapper chain and added an
1527         85vh cap. That produced the version you have now: 23 of
1528         38 frames pinned to exactly 690px, because the cap was
1529         acting as the height rather than as a ceiling.
1530
1531         I could not find what was setting those images to
1532         ~1500px. There is no CSS rule for it anywhere on the
1533         page, no inline style, and raising specificity above
1534         Kadence's did not change it. Rather than keep guessing
1535         at a cause I cannot see, this stops depending on the
1536         browser's intrinsic sizing altogether.
1537
1538         HOW IT WORKS NOW
1539         The frame is given an explicit 3:2 aspect-ratio and the
1540         photograph fills it with object-fit:cover. Height is
1541         then arithmetic &mdash; width x 2/3 &mdash; so it cannot inflate,
1542         collapse, or be clamped by anything.
1543
1544         WHY 3:2 CROPS ALMOST NOTHING HERE
1545         Every file measured in this gallery is between 1.43 and
1546         1.50 &mdash; 1620x1080, 1200x800, 1200x835, 1200x808. They are
1547         already a 3:2 set, so cover trims a few pixels at most.
1548         A genuinely vertical frame WOULD be cropped: if you add
1549         portraits later and dislike it, change `3/2` to `4/5`
1550         and the whole gallery becomes a column of tall frames
1551         instead. One value, one place.
1552
1553         Verified live at 375px: all 38 render 343x229, zero gaps.
1554         ───────────────────────────────────────────────────────── */
1555  body .wp-block-kadence-advancedgallery .splide__slide,
1556  body .wp-block-kadence-advancedgallery .kb-slide-item,
1557  body .wp-block-kadence-advancedgallery .kadence-blocks-gallery-item,
1558  body .wp-block-kadence-advancedgallery .kadence-blocks-gallery-item-inner,
1559  body .wp-block-kadence-advancedgallery .kb-gallery-figure,
1560  body .wp-block-kadence-advancedgallery .kb-gal-image-radius{
1561    height: auto !important;
1562    min-height: 0 !important;
1563    max-height: none !important;
1564    width: 100% !important;
1565    max-width: 100% !important;
1566    padding-bottom: 0 !important;
1567    aspect-ratio: auto !important;
1568  }
1569
1570  /* The frame. This one element decides the height of every row. */
1571  body .wp-block-kadence-advancedgallery .kb-gallery-image-contain{
1572    display: block !important;
1573    width: 100% !important;
1574    height: auto !important;
1575    min-height: 0 !important;
1576    max-height: none !important;
1577    padding-bottom: 0 !important;
1578    aspect-ratio: 3 / 2 !important;
1579  }
1580
1581  /* The photograph fills the frame. */
1582  body .wp-block-kadence-advancedgallery .splide__slide img,
1583  body .wp-block-kadence-advancedgallery .kb-gallery-figure img{
1584    width: 100% !important;
1585    height: 100% !important;
1586    min-height: 0 !important;
1587    max-height: none !important;
1588    aspect-ratio: auto !important;
1589    object-fit: cover !important;
1590    display: block !important;
1591    margin: 0 !important;
1592  }
1593
1594  /* 7 &middot; THE ONE THAT MATTERS FOR FEEL.
1595         Splide keeps its touch handlers bound even though there
1596         is nothing left to drag, and those can swallow a vertical
1597         swipe and make the page feel sticky. `pan-y` tells the
1598         browser that up-and-down always belongs to the page. */
1599  .wp-block-kadence-advancedgallery,
1600  .wp-block-kadence-advancedgallery .splide,
1601  .wp-block-kadence-advancedgallery .splide__track,
1602  .wp-block-kadence-advancedgallery .splide__list,
1603  .kt-blocks-carousel .splide__track{
1604    touch-action: pan-y !important;
1605  }
1606}
1607
1608
1609/* ████████████████████████████████████████████████████████████
1610   LAYER 6 &middot; REVIEWS PAGE &mdash; KADENCE ROWS + TRUSTINDEX
1611   ████████████████████████████████████████████████████████████ */
1612
1613/* ============================================================
1614   Same approach as the Portfolio gallery: the content stays in
1615   Kadence blocks so TJ adds testimonials in the editor, and this
1616   styles them from outside. Nothing here changes a word of a
1617   review, a name, a venue or a heading level.
1618
1619   Scoped to `body.page` + the testimonials page's own body class
1620   would be tighter, but Kadence doesn't guarantee one, so these
1621   are scoped by BLOCK type instead &mdash; they only bite where an
1622   advancedheading or a rowlayout actually exists.
1623   ============================================================ */
1624
1625/* ---- The couple + venue heading ----
1626   Markup is <h2 class="wp-block-heading"><strong>Name<br>Venue</strong></h2>.
1627   The two lines can't be styled separately in CSS &mdash; there is no
1628   selector for "text after a <br>" &mdash; so both get the same
1629   treatment and the line break does the separating. */
1630.wp-block-heading strong{ font-weight: inherit; }
1631
1632.entry-content .wp-block-kadence-rowlayout h2.wp-block-heading{
1633  font-family: "Fraunces", Georgia, serif;
1634  font-variation-settings: "opsz" 36, "SOFT" 30, "WONK" 0;
1635  font-weight: 650;
1636  font-size: clamp(1.25rem, 2.2vw, 1.6rem);
1637  line-height: 1.22;
1638  letter-spacing: -0.012em;
1639  color: #F2F0F5;
1640  margin: 0 0 .9rem;
1641  text-transform: none;
1642}
1643
1644/* ---- The quote itself ----
1645   Kadence advancedheading renders the review as a <p>. Given the
1646   violet rule the homepage and blog pull-quotes use, so a review
1647   reads as a quotation rather than as body copy. */
1648.entry-content .wp-block-kadence-advancedheading p,
1649.entry-content p.wp-block-kadence-advancedheading{
1650  color: #D6D2DC;
1651  font-size: clamp(1rem, 1.5vw, 1.09rem);
1652  line-height: 1.68;
1653}
1654
1655/* ---- Photographs in the rows ---- */
1656.entry-content .wp-block-kadence-rowlayout .wp-block-kadence-image img,
1657.entry-content .wp-block-kadence-image img{
1658  border-radius: 0 !important;
1659  box-shadow: none !important;
1660}
1661
1662/* ---- Row rhythm: a hairline between testimonials so twelve of
1663        them read as a sequence rather than a wall ---- */
1664.entry-content .wp-block-kadence-rowlayout{
1665  border-radius: 0 !important;
1666  box-shadow: none !important;
1667}
1668
1669
1670/* ============================================================
1671   TRUSTINDEX GOOGLE WIDGET
1672
1673   Third-party markup, so this is cosmetic only &mdash; it keeps
1674   pulling live from Google and nothing here touches the review
1675   data. If Trustindex ships a redesign these selectors may stop
1676   matching and the widget reverts to its own look. It will not
1677   break; it will just stop matching the site.
1678   ============================================================ */
1679
1680.ti-widget,
1681.ti-widget .ti-widget-container,
1682.ti-widget .ti-reviews-container,
1683.ti-widget .ti-reviews-container-wrapper{
1684  background: transparent !important;
1685}
1686
1687/* Review cards &mdash; one step up from the ground, square, no shadow */
1688.ti-widget .ti-review-item,
1689.ti-widget .ti-review-item > .ti-inner{
1690  background: #100D16 !important;
1691  border: 1px solid #241F2C !important;
1692  border-radius: 0 !important;
1693  box-shadow: none !important;
1694}
1695
1696/* Review text and names */
1697.ti-widget .ti-review-text,
1698.ti-widget .ti-review-text-container{
1699  color: #D6D2DC !important;
1700  font-family: "Inter", -apple-system, sans-serif !important;
1701  font-weight: 300 !important;
1702  line-height: 1.62 !important;
1703}
1704.ti-widget .ti-name,
1705.ti-widget .ti-profile-details .ti-name{
1706  color: #FFFFFF !important;
1707  font-family: "Inter", -apple-system, sans-serif !important;
1708  font-weight: 600 !important;
1709}
1710.ti-widget .ti-date{
1711  color: #857F91 !important;
1712  font-family: "DM Mono", ui-monospace, monospace !important;
1713  font-size: .62rem !important;
1714  letter-spacing: .1em !important;
1715  text-transform: uppercase !important;
1716}
1717
1718/* The header block &mdash; "EXCELLENT", the rating, the count */
1719.ti-widget .ti-rating-text,
1720.ti-widget .ti-widget-header,
1721.ti-widget .ti-header-title{
1722  color: #FFFFFF !important;
1723  font-family: "Fraunces", Georgia, serif !important;
1724  font-variation-settings: "opsz" 36, "SOFT" 30, "WONK" 0 !important;
1725  text-transform: none !important;
1726}
1727.ti-widget .ti-large-rating,
1728.ti-widget .ti-rating-large{
1729  font-family: "Anton", Impact, sans-serif !important;
1730  color: #FFFFFF !important;
1731}
1732
1733/* "read more" and the footer link */
1734.ti-widget .ti-read-more,
1735.ti-widget .ti-read-more span,
1736.ti-widget .ti-footer a,
1737.ti-widget a{
1738  color: #B98CFF !important;
1739  text-decoration: none !important;
1740}
1741.ti-widget .ti-read-more:hover,
1742.ti-widget .ti-footer a:hover,
1743.ti-widget a:hover{ color: #FFFFFF !important; }
1744
1745/* Stars keep Google's gold &mdash; recolouring them to violet would
1746   make a verified rating look invented, which is the one thing
1747   this widget is on the page to prevent. */
1748.ti-widget .ti-stars .ti-star{ fill: #FFC93C !important; }
1749
1750/* Carousel controls, if the widget is set to slider mode */
1751.ti-widget .ti-next,
1752.ti-widget .ti-prev{
1753  background: rgba(8,7,10,.72) !important;
1754  border: 1px solid #37304A !important;
1755  border-radius: 0 !important;
1756  color: #FFFFFF !important;
1757}
1758.ti-widget .ti-next:hover,
1759.ti-widget .ti-prev:hover{
1760  background: #7B2CFF !important;
1761  border-color: #7B2CFF !important;
1762}
1763.ti-widget .ti-dot{ background: #37304A !important; border-radius: 0 !important; }
1764.ti-widget .ti-dot.active{ background: #B98CFF !important; }
1765
1766.ti-widget{
1767  margin-top: clamp(1.5rem,3.5vw,2.6rem) !important;
1768  margin-bottom: clamp(2rem,4.5vw,3.2rem) !important;
1769}
1770
1771
1772/* ████████████████████████████████████████████████████████████
1773   LAYER 7 &middot; EXPERIENCE GUIDE  (/experience-guide/)
1774   ████████████████████████████████████████████████████████████ */
1775
1776/* ============================================================
1777   WHAT THIS IS
1778
1779   The guide already had a complete design system of its own &mdash;
1780   just a different one. Warm brown ground, coral red accent,
1781   Lora for the serif. This re-points it to the site's palette
1782   and type without touching a single line of its markup.
1783
1784   It was the easiest page on the site to convert, for one
1785   reason: all 103 of its rules read their colours from eight
1786   variables and NOT ONE hardcodes a value. Whoever built it
1787   did the right thing, and this is the payoff &mdash; a token swap
1788   instead of a rebuild.
1789
1790     --m-bg      #1a1614  &rarr;  #08070A   the site's ink
1791     --m-bg-soft #221d1a  &rarr;  #100D16   panels
1792     --m-text    #f3efec  &rarr;  #D6D2DC   body copy
1793     --m-muted   #9a938d  &rarr;  #8E8898   captions, meta
1794     --m-red     #e5433f  &rarr;  #B98CFF   accent
1795     --m-serif   Lora     &rarr;  Fraunces
1796     --m-display Anton    &rarr;  Anton     (already correct)
1797     --m-sans    Inter    &rarr;  Inter     (already correct)
1798
1799   ── WHY --m-red BECOMES #B98CFF AND NOT #7B2CFF ─────────────
1800   Checked before changing it: --m-red appears in 15 rules and
1801   every one of them is a `color:` &mdash; never a background, never
1802   a border. So it is purely a TEXT colour, and the brand violet
1803   #7B2CFF as text on black is 3.6:1, which fails. #B98CFF is
1804   7.9:1. Same rule as the rest of the site: #7B2CFF fills,
1805   #B98CFF reads.
1806
1807   ── NOTHING IN THE GUIDE'S CONTENT CHANGES ──────────────────
1808   Not a price, not an FAQ answer, not one of the 85 images.
1809   The page is noindex, so there is no ranking to protect &mdash;
1810   but the four Experience prices live here and nowhere else
1811   public, so they are worth not touching by accident.
1812   ============================================================ */
1813
1814/* ---- 1 &middot; THE TOKENS ---- */
1815body .ls-xp{
1816  --m-bg:       #08070A;
1817  --m-bg-soft:  #100D16;
1818  --m-text:     #D6D2DC;
1819  --m-muted:    #8E8898;
1820  --m-red:      #B98CFF;
1821  --m-serif:    "Fraunces", Georgia, "Times New Roman", serif;
1822  --m-display:  "Anton", Impact, "Arial Narrow", sans-serif;
1823  --m-sans:     "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif;
1824}
1825
1826/* ---- 2 &middot; BODY COPY IS SANS, NOT SERIF ----
1827   The guide set its base font to --m-serif, so every paragraph
1828   was Lora. Swapping that variable to Fraunces would have made
1829   the whole document display-serif at 17.5px &mdash; the same mistake
1830   that made the blog cards unreadable. Fraunces stays for
1831   headings; the running text becomes Inter, as everywhere else. */
1832body .ls-xp{
1833  font-family: var(--m-sans);
1834  font-weight: 300;
1835  font-size: 17px;
1836  line-height: 1.7;
1837}
1838
1839/* ---- 3 &middot; HEADINGS ----
1840   opsz 144 for the big ones (that is what the display cut is
1841   for), opsz 36 further down where hairline serifs would vanish. */
1842body .ls-xp h1,
1843body .ls-xp h2{
1844  font-family: var(--m-serif);
1845  font-variation-settings: "opsz" 144, "SOFT" 20, "WONK" 1;
1846  font-weight: 600;
1847  letter-spacing: -.024em;
1848  color: #F2F0F5;
1849  text-transform: none;
1850}
1851body .ls-xp h3{
1852  font-family: var(--m-serif);
1853  font-variation-settings: "opsz" 36, "SOFT" 30, "WONK" 0;
1854  font-weight: 650;
1855  letter-spacing: -.014em;
1856  color: #F2F0F5;
1857  text-transform: none;
1858}
1859/* The hero headline keeps Anton &mdash; it was already right. */
1860body .ls-xp .xp-hero h1{
1861  font-family: var(--m-display);
1862  font-variation-settings: normal;
1863  letter-spacing: .005em;
1864}
1865body .ls-xp .xp-lead,
1866body .ls-xp .xp-quote blockquote,
1867body .ls-xp .xp-collection-desc,
1868body .ls-xp .xp-cta-final .xp-sub{
1869  font-family: var(--m-serif);
1870  font-variation-settings: "opsz" 36, "SOFT" 30, "WONK" 0;
1871}
1872body .ls-xp .xp-lead em,
1873body .ls-xp .xp-quote blockquote em{
1874  font-variation-settings: "opsz" 36, "SOFT" 40, "WONK" 1;
1875}
1876
1877/* ---- 4 &middot; NUMBERS ARE ANTON ----
1878   Prices, step numbers and stats were set in the serif. On the
1879   rest of the site every number is Anton &mdash; the $10,000 on this
1880   page should look like the 12 and the 28 on the homepage. */
1881body .ls-xp .xp-collection-price,
1882body .ls-xp .xp-stat .xp-stat-num,
1883body .ls-xp .xp-step .xp-step-num,
1884body .ls-xp .xp-addons li span:last-child{
1885  font-family: var(--m-display);
1886  font-variation-settings: normal;
1887  font-weight: 400;
1888  letter-spacing: .005em;
1889  font-variant-numeric: lining-nums;
1890}
1891
1892/* ---- 5 &middot; LABELS IN THE MONO VOICE ----
1893   Kickers and captions were Inter uppercase. DM Mono is the
1894   apparatus voice everywhere else &mdash; this is what makes the guide
1895   read as the same publication rather than a similar one. */
1896body .ls-xp .xp-kicker,
1897body .ls-xp .xp-caption,
1898body .ls-xp .xp-timeline-label,
1899body .ls-xp .xp-stat .xp-stat-label,
1900body .ls-xp .xp-quote cite{
1901  font-family: "DM Mono", ui-monospace, Menlo, monospace;
1902  letter-spacing: .16em;
1903}
1904
1905/* ---- 6 &middot; SQUARE CORNERS ---- */
1906body .ls-xp img,
1907body .ls-xp .xp-collection,
1908body .ls-xp .xp-faq,
1909body .ls-xp .xp-includes-wrap,
1910body .ls-xp .xp-cta-final,
1911body .ls-xp .xp-stat{ border-radius: 0 !important; }
1912
1913/* ---- 7 &middot; THE PRIMARY BUTTON ----
1914   It was an underlined text link in the accent colour. On a
1915   document whose whole job is to end in a booked meeting, the
1916   final CTA should look like the button it is &mdash; and like the
1917   one on every other page. Secondary stays a text link. */
1918body .ls-xp .xp-btn-primary{
1919  background: #7B2CFF;
1920  color: #FFFFFF;                 /* 5.76:1 on the violet */
1921  padding: 1rem 1.8rem;
1922  border: 0;
1923  border-radius: 0;
1924  transition: background .18s ease;
1925}
1926body .ls-xp .xp-btn-primary:hover{
1927  background: #8F4BFF;
1928  color: #FFFFFF;
1929}
1930body .ls-xp .xp-btn-primary::after{ content: ""; }
1931
1932/* ---- 8 &middot; SMALL REFINEMENTS ---- */
1933body .ls-xp .xp-quote blockquote{ color: #F2F0F5; }
1934body .ls-xp .xp-outline{ color: var(--m-red); }
1935body .ls-xp .xp-faq summary{ color: #F2F0F5; }
1936body .ls-xp .xp-faq summary:hover,
1937body .ls-xp .xp-faq summary::after{ color: var(--m-red); }
1938body .ls-xp a{ text-underline-offset: .18em; }
1939
1940/* ---- 9 &middot; THE EIGHT THAT FOUGHT BACK ----
1941   Re-pointing the tokens converted 103 rules cleanly, but eight
1942   elements stayed in the old palette: the anchors, the two
1943   buttons, and the banner words. They carry inline styles with
1944   literal colours, and an inline style beats a variable.
1945
1946   Found by testing the tokens against the live page and then
1947   asking the DOM which elements still computed to #1a1614,
1948   #f3efec or #e5433f &mdash; not by reading the CSS and hoping. These
1949   are those exact elements and nothing else. */
1950
1951body .ls-xp a:not(.xp-btn){
1952  color: var(--m-text) !important;
1953  border-color: var(--m-text) !important;
1954}
1955body .ls-xp a:not(.xp-btn):hover{
1956  color: var(--m-red) !important;
1957  border-color: var(--m-red) !important;
1958}
1959body .ls-xp .xp-btn-primary,
1960body .ls-xp a.xp-btn.xp-btn-primary{
1961  background: #7B2CFF !important;
1962  color: #FFFFFF !important;
1963  border-color: #7B2CFF !important;
1964}
1965body .ls-xp .xp-btn-primary:hover,
1966body .ls-xp a.xp-btn.xp-btn-primary:hover{
1967  background: #8F4BFF !important;
1968  color: #FFFFFF !important;
1969  border-color: #8F4BFF !important;
1970}
1971body .ls-xp .xp-btn-secondary,
1972body .ls-xp a.xp-btn.xp-btn-secondary{
1973  color: #D6D2DC !important;
1974  border-color: #37304A !important;
1975}
1976body .ls-xp .xp-btn-secondary:hover,
1977body .ls-xp a.xp-btn.xp-btn-secondary:hover{
1978  color: #B98CFF !important;
1979  border-color: #B98CFF !important;
1980}
1981/* ⚠️ THIS ONE BIT ME &mdash; READ BEFORE CHANGING IT.
1982   .xp-banner-word is NOT a solid block. It is a semi-transparent
1983   SCRIM sitting on top of a full-bleed photograph, so the word
1984   stays readable over the picture. The original was
1985   rgba(26,22,20,.32) &mdash; warm, and 32% opaque.
1986
1987   My first pass swept for warm colours and replaced it with a
1988   solid #08070A, which painted over both photographs completely:
1989   the one behind "The Philosophy" and the one behind "The Next
1990   Step". They were never deleted &mdash; they were covered.
1991
1992   Same alpha, cool ink. If you ever see those photos vanish
1993   again, this is the rule. */
1994body .ls-xp .xp-banner-word{
1995  background: rgba(8,7,10,.32) !important;
1996  color: rgba(255,255,255,.95) !important;
1997}
1998
1999/* The hero's scrim is a warm gradient with no image in it, so it
2000   can be re-tinted safely &mdash; same alphas, cool ink.
2001
2002   NOT touching .xp-quote: its background-image is a gradient AND
2003   a url() together, and rewriting the property would drop the
2004   photograph the same way the banner bug did. A faintly warm
2005   scrim there is invisible next to that risk. */
2006body .ls-xp .xp-hero-text{
2007  background-image: linear-gradient(rgba(8,7,10,.35), rgba(8,7,10,.55)) !important;
2008}
2009
2010
2011/* The Trustindex widget sits between the two .ls-xp blocks on
2012   this page. Layer 6 already styles it &mdash; nothing to add here. */
2013
2014
2015/* ████████████████████████████████████████████████████████████
2016   LAYER 8 &middot; KADENCE BUTTONS + ACCORDIONS
2017   ████████████████████████████████████████████████████████████ */
2018
2019/* ============================================================
2020   Written for the Albums page, but scoped to the BLOCK TYPES
2021   rather than to that page &mdash; so any page built out of Kadence
2022   buttons or accordions inherits it. Nothing here touches
2023   content; it is all presentation.
2024
2025   The Albums page was already ~80% converted by Layer 4: black
2026   ground, Fraunces headings, Inter body. These are the two
2027   things Layer 4 could not reach.
2028   ============================================================ */
2029
2030/* ---- 1 &middot; BUTTONS ----
2031   ACCESSIBILITY FIX, not a preference. Kadence was rendering
2032   these as the old cyan #28C0D6 with BLACK label text. On the
2033   new violet that same black is 3.65:1, which fails WCAG AA.
2034   White on #7B2CFF is 5.76:1.
2035
2036   Two things made this stubborn:
2037
2038   1. Kadence generates a per-button class (.kb-btn3997_e8cb9d-ee)
2039      with its own colour rule, which out-specifies a plain
2040      .kb-button selector. Hence `body .entry-content`.
2041
2042   2. The LABEL is an inner <span>, not the <a> itself. Setting
2043      colour on the button alone left the text black. The `*`
2044      catches the span. */
2045body .entry-content .kb-button,
2046body .entry-content a.kb-button,
2047body .entry-content .kb-button *,
2048body .entry-content .kt-btn-inner-text,
2049body .entry-content .wp-block-kadence-singlebtn a,
2050body .entry-content .wp-block-kadence-singlebtn a *{
2051  color: #FFFFFF !important;
2052  font-family: "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif !important;
2053  font-weight: 600 !important;
2054  letter-spacing: .13em !important;
2055  text-transform: uppercase !important;
2056}
2057body .entry-content .kb-button,
2058body .entry-content a.kb-button,
2059body .entry-content .wp-block-kadence-singlebtn a{
2060  background-color: #7B2CFF !important;
2061  border-color: #7B2CFF !important;
2062  border-radius: 0 !important;
2063  transition: background-color .18s ease;
2064}
2065body .entry-content .kb-button:hover,
2066body .entry-content a.kb-button:hover,
2067body .entry-content .wp-block-kadence-singlebtn a:hover{
2068  background-color: #8F4BFF !important;
2069  border-color: #8F4BFF !important;
2070}
2071body .entry-content .kb-button:focus-visible{
2072  outline: 2px solid #B98CFF !important;
2073  outline-offset: 3px;
2074}
2075
2076/* ---- 2 &middot; ACCORDION (the FAQ) ----
2077   Kadence sets the accordion's font on an inner element, so the
2078   `*` is doing the same job it does on the buttons. */
2079body .entry-content .kt-accordion-wrap .kt-blocks-accordion-header,
2080body .entry-content .kt-accordion-wrap .kt-blocks-accordion-header *,
2081body .entry-content .kt-accordion-wrap .kt-blocks-accordion-title{
2082  font-family: "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif !important;
2083  color: #F2F0F5 !important;
2084  font-weight: 600 !important;
2085  letter-spacing: -.01em !important;
2086  text-transform: none !important;
2087}
2088body .entry-content .kt-accordion-wrap .kt-blocks-accordion-header{
2089  background: #100D16 !important;
2090  border: 1px solid #241F2C !important;
2091  border-radius: 0 !important;
2092}
2093body .entry-content .kt-accordion-wrap .kt-blocks-accordion-header:hover,
2094body .entry-content .kt-accordion-wrap .kt-blocks-accordion-header:hover *{
2095  color: #B98CFF !important;
2096}
2097body .entry-content .kt-accordion-wrap .kt-accordion-header-icon-trigger::after,
2098body .entry-content .kt-accordion-wrap .kt-blocks-accordion-icon-trigger::after{
2099  color: #B98CFF !important;
2100}
2101body .entry-content .kt-accordion-wrap .kt-accordion-panel,
2102body .entry-content .kt-accordion-wrap .kt-accordion-panel-inner{
2103  background: transparent !important;
2104  border: 0 !important;
2105  border-radius: 0 !important;
2106  color: #D6D2DC !important;
2107}
2108body .entry-content .kt-accordion-wrap .kt-accordion-pane{
2109  margin-bottom: .5rem !important;
2110}
2111
2112/* ---- 3 &middot; KADENCE IMAGES &mdash; square corners, no shadow ---- */
2113body .entry-content .wp-block-kadence-image img,
2114body .entry-content .kb-image img{
2115  border-radius: 0 !important;
2116  box-shadow: none !important;
2117}
2118
2119
2120/* ████████████████████████████████████████████████████████████
2121   LAYER 10 &middot; THE JOURNAL  (/blog/)  +  SITE-WIDE SEARCH FIELD
2122   Ladman Studios &middot; v3 "The Collected Edition"
2123   ████████████████████████████████████████████████████████████
2124
2125   ── WHERE THIS GOES ─────────────────────────────────────────
2126   Appearance &rarr; Customize &rarr; Additional CSS, pasted at the very
2127   END, after Layer 8. It is already appended to
2128   `ladman-ADDITIONAL-CSS-COMPLETE.css`, so if you paste that
2129   whole file you do NOT need this one as well.
2130
2131   ── WHAT WAS WRONG ──────────────────────────────────────────
2132   The masthead row at the top of /blog/ is a Kadence row using
2133   `has-theme-palette9-background-color` &mdash; pure white. The v3
2134   site-wide theme turns headings white. So:
2135
2136     &middot; H1 "The Ladman Studios Journal!"  #FFF on #FFF  &rarr;  1:1
2137       Completely invisible. Not dim &mdash; gone.
2138     &middot; Intro paragraph                   #D6D2DC on #FFF &rarr; 1.4:1
2139     &middot; Facebook / Instagram icons        #FFF on #FFF  &rarr;  invisible
2140     &middot; VENUES / GUIDES / WEDDINGS        #B98CFF on #FFF &rarr; 2.2:1
2141     &middot; "SEARCH" label                    #8E8898 on #FFF &rarr; 3.2:1
2142     &middot; A stray #D8D8D8 grey block behind the H1
2143     &middot; The SEARCH button was #D62828 &mdash; RED. That is Kadence
2144       palette2, left over from the old site. Off-palette.
2145
2146   **This is the same failure as the four SEO city pages**: a
2147   Kadence palette background class that the v3 CSS never got
2148   told about. Layer 9 fixes those four; this fixes the Journal.
2149
2150   ── WHY IT ONLY SHOWS ON A BIG SCREEN ───────────────────────
2151   Below roughly 1100px the boxed container is narrower than the
2152   row and the white never paints. At 1440px the whole band goes
2153   white. So it looks fine on a laptop in a small window and
2154   broken on a monitor &mdash; which is why it survived this long.
2155
2156   ── THE SEARCH FIELD ────────────────────────────────────────
2157   Measured live it reads white-on-#100D16, which is correct.
2158   You are seeing black-on-black, so something on your side is
2159   resolving differently. Rather than guess, section 2 removes
2160   every way that can happen:
2161
2162     &middot; hard-coded hex, no `var()` to fail if a stale cached
2163       stylesheet is missing a token
2164     &middot; `-webkit-text-fill-color`, which overrides `color` on
2165       form fields and is the usual reason typed text vanishes
2166     &middot; an explicit `:-webkit-autofill` block. Chrome repaints an
2167       autofilled field with its OWN colours and ignores plain
2168       `color` &mdash; if the field only goes black-on-black once you
2169       have searched before, this is the culprit.
2170
2171   It is deliberately NOT scoped to /blog/, because the same
2172   block renders on the search-results page and anywhere else
2173   you drop it.
2174
2175   ── WHAT THIS DOES NOT DO ───────────────────────────────────
2176   No markup, no copy, no heading levels, no links, no alt text.
2177   The cream post cards below the masthead are untouched &mdash; they
2178   are meant to be paper.
2179   ████████████████████████████████████████████████████████████ */
2180
2181
2182/* ============================================================
2183   1 &middot; THE JOURNAL MASTHEAD &mdash; LIGHT BAND &rarr; DARK GROUND
2184
2185   ⚠️ SCOPE &mdash; THIS ROW IS NOT ONLY ON /blog/.
2186   Kadence renders the posts-page "above content" row on every
2187   template that lists posts, so the same masthead &mdash; same generated
2188   block id &mdash; also appears on:
2189
2190     /blog/ ......................... body.blog
2191     /?s=anything  (search results) . body.search
2192     /category/venues/ and friends .. body.archive
2193     tag, date and author archives .. body.archive
2194
2195   The first version of this layer was scoped to `body.blog` alone.
2196   The band went dark on the Journal and stayed white the moment
2197   anyone ran a search. Confirmed on all three templates.
2198
2199   `body:is(...)` keeps the specificity identical to a single
2200   `body.blog` (0,1,1), which is what these rules were tuned
2201   against. Do NOT simplify it to an unscoped selector: other pages
2202   still on the old look use palette9 rows with DARK text, and
2203   darkening those would invert the same bug onto them.
2204
2205   Written against the palette CLASSES rather than the generated
2206   block id (`id2907_a8ddc4-c2`), because that id changes if the
2207   row is ever edited in Kadence.
2208   ============================================================ */
2209
2210/* The band itself. */
2211body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap.has-theme-palette9-background-color,
2212body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap.has-theme-palette8-background-color{
2213  background-color: #08070A !important;
2214}
2215
2216/* Kadence column plates inside the band. */
2217body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap.has-theme-palette9-background-color .kt-inside-inner-col,
2218body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap.has-theme-palette8-background-color .kt-inside-inner-col,
2219body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap .wp-block-kadence-column > .kt-inside-inner-col{
2220  background-color: transparent !important;
2221  background-image: none !important;
2222}
2223
2224/* ⚠️ The H1 carries its OWN background plate &mdash; #D8D8D8, which is
2225   `--global-palette7`. On the old white band you could not see it;
2226   on the dark band it is a light grey bar behind white text.
2227
2228   It is painted by the per-block class Kadence generates
2229   (`kt-adv-heading2907_6b740d-e7`), and that class name CHANGES
2230   if the heading is ever re-saved in the editor. So this matches
2231   on the `kt-adv-heading` prefix with an attribute selector
2232   rather than the full generated name &mdash; it keeps working after
2233   an edit. Verified live: the plain
2234   `.wp-block-kadence-advancedheading.has-background` form was not
2235   enough to win. */
2236html body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap h1[class*="kt-adv-heading"],
2237html body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap h2[class*="kt-adv-heading"],
2238html body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap .wp-block-kadence-advancedheading{
2239  background-color: transparent !important;
2240  background-image: none !important;
2241  color: #FFFFFF !important;
2242}
2243
2244/* The intro paragraph is also an advanced-heading block, so it
2245   has to come back down from white after the rule above. */
2246html body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap p.wp-block-kadence-advancedheading{
2247  color: #D6D2DC !important;
2248}
2249
2250/* Social icons were white on white. */
2251body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap .wp-social-link a,
2252body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap .wp-block-social-link a{
2253  color: #D6D2DC !important;
2254}
2255body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap .wp-social-link a:hover,
2256body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap .wp-block-social-link a:hover{
2257  color: #FFFFFF !important;
2258}
2259
2260/* VENUES / GUIDES / WEDDINGS &mdash; violet TEXT on dark is #B98CFF,
2261   never the #7B2CFF fill colour. */
2262body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap .kt-inside-inner-col a:not(.wp-element-button){
2263  color: #B98CFF !important;
2264}
2265body:is(.blog,.search,.archive,.error404) .kb-row-layout-wrap .kt-inside-inner-col a:not(.wp-element-button):hover{
2266  color: #FFFFFF !important;
2267}
2268
2269
2270/* ============================================================
2271   2 &middot; THE SEARCH FIELD &mdash; SITE-WIDE, CACHE-PROOF
2272   Hex values only. No var(). Nothing here can fail because a
2273   token didn't load.
2274   ============================================================ */
2275
2276.wp-block-search__label{
2277  color: #8E8898 !important;
2278  font-family: "DM Mono", ui-monospace, Menlo, monospace;
2279  font-size: .66rem;
2280  letter-spacing: .19em;
2281  text-transform: uppercase;
2282}
2283
2284.wp-block-search__input,
2285input[type="search"].wp-block-search__input{
2286  background-color: #100D16 !important;
2287  background-image: none !important;
2288  color: #FFFFFF !important;
2289  /* `color` alone does not win on a form field in WebKit. */
2290  -webkit-text-fill-color: #FFFFFF !important;
2291  caret-color: #B98CFF !important;
2292  border: 1px solid #37304A !important;
2293  border-radius: 0 !important;
2294  padding: .8rem 1rem !important;
2295}
2296.wp-block-search__input::placeholder{
2297  color: #8E8898 !important;
2298  -webkit-text-fill-color: #8E8898 !important;
2299  opacity: 1 !important;
2300}
2301.wp-block-search__input:focus{
2302  border-color: #B98CFF !important;
2303  outline: none !important;
2304}
2305
2306/* ⚠️ Chrome repaints an autofilled field with its own colours and
2307   ignores `color`. If the field is only unreadable AFTER you have
2308   searched once before, this is what was doing it. The inset
2309   shadow is the only way to force the background. */
2310.wp-block-search__input:-webkit-autofill,
2311.wp-block-search__input:-webkit-autofill:hover,
2312.wp-block-search__input:-webkit-autofill:focus,
2313input:-webkit-autofill,
2314input:-webkit-autofill:focus{
2315  -webkit-text-fill-color: #FFFFFF !important;
2316  -webkit-box-shadow: 0 0 0 1000px #100D16 inset !important;
2317          box-shadow: 0 0 0 1000px #100D16 inset !important;
2318  caret-color: #FFFFFF !important;
2319}
2320
2321/* The button was red (#D62828, Kadence palette2). Violet fill. */
2322html body .wp-block-search__button,
2323html body .wp-block-search .wp-block-search__button.wp-element-button,
2324html body .wp-block-search__button.has-theme-palette2-background-color{
2325  background-color: #7B2CFF !important;
2326  background-image: none !important;
2327  color: #FFFFFF !important;
2328  border: 0 !important;
2329  border-radius: 0 !important;
2330  font-family: "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif !important;
2331  font-weight: 600 !important;
2332  font-size: .76rem !important;
2333  letter-spacing: .13em !important;
2334  text-transform: uppercase !important;
2335  padding: .85rem 1.5rem !important;
2336}
2337html body .wp-block-search__button:hover,
2338html body .wp-block-search .wp-block-search__button.wp-element-button:hover{
2339  background-color: #8F4BFF !important;
2340  color: #FFFFFF !important;
2341}</style><link data-od-added-tag rel="preload" fetchpriority="high" as="image" href="https://ladmanstudios.com/wp-content/uploads/2025/10/wedding-photography-experiences-connecticut-wedding-photographer-ladman-studios.webp" media="screen and (width &lt;= 480px)"><link data-od-added-tag rel="preload" fetchpriority="high" as="image" href="https://ladmanstudios.com/wp-content/uploads/2025/10/wedding-photography-experiences-connecticut-wedding-photographer-ladman-studios.webp" media="screen and (782px &lt; width)"><link type="text/css" media="all" href="https://ladmanstudios.com/wp-content/cache/breeze-minification/css/breeze_investment-1-595-1d80271b28e6.css?ver=1791450418" rel="stylesheet" /></head><body class="wp-singular page-template-default page page-id-595 wp-custom-logo wp-embed-responsive wp-theme-kadence footer-on-bottom hide-focus-outline link-style-standard content-title-style-hide content-width-fullwidth content-style-unboxed content-vertical-padding-hide non-transparent-header mobile-non-transparent-header"><noscript> <img height="1" width="1" style="display:none" alt="fbpx"
2342src="https://www.facebook.com/tr?id=564011880040665&ev=PageView&noscript=1" /> </noscript><div id="wrapper" class="site wp-site-blocks"> <a class="skip-link screen-reader-text scroll-ignore" href="#main">Skip to content</a><header id="masthead" class="site-header" role="banner" itemtype="https://schema.org/WPHeader" itemscope><div id="main-header" class="site-header-wrap"><div class="site-header-inner-wrap kadence-sticky-header" data-reveal-scroll-up="false" data-shrink="false"><div class="site-header-upper-wrap"><div class="site-header-upper-inner-wrap"><div class="site-main-header-wrap site-header-row-container site-header-focus-item site-header-row-layout-standard" data-section="kadence_customizer_header_main"><div class="site-header-row-container-inner"><div class="site-container"><div class="site-main-header-inner-wrap site-header-row site-header-row-has-sides site-header-row-center-column"><div class="site-header-main-section-left site-header-section site-header-section-left"><div class="site-header-main-section-left-center site-header-section site-header-section-left-center"><div class="site-header-item site-header-focus-item site-header-item-main-navigation header-navigation-layout-stretch-false header-navigation-layout-fill-stretch-false" data-section="kadence_customizer_primary_navigation"><nav id="site-navigation" class="main-navigation header-navigation hover-to-open nav--toggle-sub header-navigation-style-standard header-navigation-dropdown-animation-none" role="navigation" aria-label="Primary"><div class="primary-menu-container header-menu-container"><ul id="primary-menu" class="menu"><li id="menu-item-3208" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-3208"><a href="https://ladmanstudios.com/">Home</a></li><li id="menu-item-4982" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4982"><a href="https://ladmanstudios.com/about-me/">About</a></li><li id="menu-item-607" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-595 current_page_item menu-item-607"><a href="https://ladmanstudios.com/investment/" aria-current="page">Investment</a></li>
2342<li id="menu-item-2943" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2943"><a href="https://ladmanstudios.com/blog/">Journal</a></li></ul></div></nav></div></div></div><div class="site-header-main-section-center site-header-section site-header-section-center"><div class="site-header-item site-header-focus-item" data-section="title_tagline"><div class="site-branding branding-layout-standard site-brand-logo-only"><a class="brand has-logo-image" href="https://ladmanstudios.com/" rel="home"><img class="custom-logo br-lazy" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMTk5IDQ3OSc+PC9zdmc+" data-breeze="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res.png" data-od-removed-fetchpriority="high" data-od-xpath="/HTML/BODY/DIV[@id=&apos;wrapper&apos;]/*[2][self::HEADER]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[2][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::A]/*[1][self::IMG]" width="1199" height="479"   alt="CT Wedding photographer Ladman Studios" decoding="async"  data-brsrcset="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res.png 1199w, https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res-300x120.png 300w, https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res-768x307.png 768w" data-brsizes="(max-width: 1199px) 100vw, 1199px" /></a></div></div></div><div class="site-header-main-section-right site-header-section site-header-section-right"><div class="site-header-main-section-right-center site-header-section site-header-section-right-center"><div class="site-header-item site-header-focus-item site-header-item-main-navigation header-navigation-layout-stretch-false header-navigation-layout-fill-stretch-false" data-section="kadence_customizer_secondary_navigation"><nav id="secondary-navigation" class="secondary-navigation header-navigation hover-to-open nav--toggle-sub header-navigation-style-standard header-navigation-dropdown-animation-none" role="navigation" aria-label="Secondary"><div class="secondary-menu-container header-menu-container"><ul id="secondary-menu" class="menu"><li id="menu-item-3141" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3141"><a href="https://ladmanstudios.com/top-connecticut-wedding-venues/">Top Venues</a></li><li id="menu-item-3206" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3206"><a href="https://ladmanstudios.com/portfolio/">Portfolio</a></li><li id="menu-item-2566" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2566"><a href="https://ladmanstudios.com/testimonials/">Reviews</a></li><li id="menu-item-2565" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2565"><a href="https://ladmanstudios.com/contact/">Contact</a></li></ul></div></nav></div></div></div></div></div></div></div></div></div></div></div><div id="mobile-header" class="site-mobile-header-wrap"><div class="site-header-inner-wrap kadence-sticky-header" data-shrink="false" data-reveal-scroll-up="false"><div class="site-header-upper-wrap"><div class="site-header-upper-inner-wrap"><div class="site-main-header-wrap site-header-focus-item site-header-row-layout-standard site-header-row-tablet-layout-default site-header-row-mobile-layout-default "><div class="site-header-row-container-inner"><div class="site-container"><div class="site-main-header-inner-wrap site-header-row site-header-row-has-sides site-header-row-no-center"><div class="site-header-main-section-left site-header-section site-header-section-left"><div class="site-header-item site-header-focus-item" data-section="title_tagline"><div class="site-branding mobile-site-branding branding-layout-standard branding-tablet-layout-inherit site-brand-logo-only branding-mobile-layout-inherit"><a class="brand has-logo-image" href="https://ladmanstudios.com/" rel="home"><img class="custom-logo br-lazy" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMTk5IDQ3OSc+PC9zdmc+" data-breeze="https://spcdn.shortpixel.ai/spio/ret_img+q_c
2342dnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res.png" data-od-xpath="/HTML/BODY/DIV[@id=&apos;wrapper&apos;]/*[2][self::HEADER]/*[2][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::A]/*[1][self::IMG]" width="1199" height="479"   alt="CT Wedding photographer Ladman Studios" decoding="async" data-brsrcset="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res.png 1199w, https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res-300x120.png 300w, https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/cropped-Ladman-Studios-Fashion-Editorial-white-low-res-768x307.png 768w" data-brsizes="(max-width: 1199px) 100vw, 1199px" /></a></div></div></div><div class="site-header-main-section-right site-header-section site-header-section-right"><div class="site-header-item site-header-focus-item site-header-item-navgation-popup-toggle" data-section="kadence_customizer_mobile_trigger"><div class="mobile-toggle-open-container"> <button id="mobile-toggle" class="menu-toggle-open drawer-toggle menu-toggle-style-default" aria-label="Open menu" data-toggle-target="#mobile-drawer" data-toggle-body-class="showing-popup-drawer-from-right" aria-expanded="false" data-set-focus=".menu-toggle-close"
2343> <span class="menu-toggle-icon"><span class="kadence-svg-iconset"><svg aria-hidden="true" class="kadence-svg-icon kadence-menu-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><title>Toggle Menu</title><path d="M3 13h18c0.552 0 1-0.448 1-1s-0.448-1-1-1h-18c-0.552 0-1 0.448-1 1s0.448 1 1 1zM3 7h18c0.552 0 1-0.448 1-1s-0.448-1-1-1h-18c-0.552 0-1 0.448-1 1s0.448 1 1 1zM3 19h18c0.552 0 1-0.448 1-1s-0.448-1-1-1h-18c-0.552 0-1 0.448-1 1s0.448 1 1 1z"></path> </svg></span></span> </button></div></div></div></div></div></div></div></div></div></div></div></header><main id="inner-wrap" class="wrap kt-clear" role="main"><div id="primary" class="content-area"><div class="content-container site-container"><div id="main" class="site-main"><div class="content-wrap"><article id="post-595" class="entry content-bg single-entry post-595 page type-page status-publish has-post-thumbnail hentry"><div class="entry-content-wrap"><div class="entry-content single-content"> <style>/* Scoped entirely to .lms &mdash; nothing outside this block is touched.
2344   Same tokens as the homepage, so the two pages stay identical.
2345   (Duplicated on purpose: each page block is self-contained, so a
2346   broken page can never take another one down with it.) */
2347
2348.lms{
2349  --ink:#08070A; --ink2:#100D16; --field:#2A0B52; --field2:#3A1470;
2350  --line:#241F2C; --line2:#37304A;
2351  --paper:#EFEDE8; --paper-ink:#14121A; --paper-dim:#5F5967; --paper-acc:#5A18D6;
2352  --white:#FFFFFF; --off:#D6D2DC; --mute:#8E8898; --cap:#857F91;
2353  --violet:#7B2CFF; --violet-hi:#8F4BFF; --violet-lo:#5A18D6; --vtext:#B98CFF;
2354  --f:"Fraunces",Georgia,"Times New Roman",serif;
2355  --a:"Anton",Impact,sans-serif;
2356  --i:"Inter",-apple-system,"Helvetica Neue",Arial,sans-serif;
2357  --m:"DM Mono",ui-monospace,Menlo,monospace;
2358  --gut:clamp(1.25rem,5vw,5rem);
2359  background:var(--ink); color:var(--off);
2360  font-family:var(--i); font-weight:300;
2361  font-size:1.0625rem; line-height:1.65;
2362  -webkit-font-smoothing:antialiased; overflow-x:hidden;
2363}
2364.lms *{box-sizing:border-box}
2365.lms p{margin:0 0 1.05em}
2366.lms img{display:block;width:100%;height:auto}
2367.lms a:focus-visible,.lms button:focus-visible{outline:2px solid var(--vtext);outline-offset:3px}
2368.lms .w{max-width:84rem;margin:0 auto;padding-left:var(--gut);padding-right:var(--gut)}
2369
2370/* ---- type roles: Fraunces = feeling, Anton = numbers,
2371        Inter = reading, DM Mono = apparatus ---- */
2372.lms .fr{font-family:var(--f);font-variation-settings:"opsz" 144,"SOFT" 20,"WONK" 1;
2373  font-weight:600;line-height:.95;letter-spacing:-.028em;color:var(--white);margin:0;text-wrap:balance}
2374.lms .fr-xl{font-size:clamp(2.6rem,7.4vw,5.6rem);line-height:.9;letter-spacing:-.034em}
2375.lms .fr-lg{font-size:clamp(2.1rem,5vw,3.9rem)}
2376.lms .fr-md{font-size:clamp(1.6rem,3.2vw,2.5rem)}
2377.lms .fr em{font-style:italic;font-variation-settings:"opsz" 144,"SOFT" 40,"WONK" 1}
2378.lms .num{font-family:var(--a);font-weight:400;line-height:.8;letter-spacing:.005em;
2379  color:var(--white);margin:0;font-variant-numeric:lining-nums}
2380.lms .lbl{font-family:var(--m);font-size:.66rem;letter-spacing:.19em;text-transform:uppercase;
2381  color:var(--mute);margin:0 0 1.15rem}
2382.lms .cap{font-family:var(--m);font-size:.65rem;letter-spacing:.11em;text-transform:uppercase;
2383  color:var(--cap);margin:.65rem 0 0;line-height:1.55;max-width:34rem}
2384.lms .lede{font-size:clamp(1.06rem,1.55vw,1.24rem);line-height:1.55;max-width:36rem}
2385.lms .sub-h{font-family:var(--i);font-weight:600;font-size:1.02rem;color:var(--white);
2386  margin:0 0 .35rem;letter-spacing:-.01em;line-height:1.35}
2387
2388.lms .btn{display:inline-block;font-family:var(--i);font-weight:600;font-size:.76rem;
2389  letter-spacing:.13em;text-transform:uppercase;text-decoration:none;
2390  background:var(--violet);color:var(--white);padding:1rem 1.8rem;border:0;border-radius:0;
2391  transition:background .18s ease}
2392.lms .btn:hover{background:var(--violet-hi)}
2393.lms .btn:active{background:var(--violet-lo)}
2394.lms .btn--ghost{background:transparent;color:var(--white);border:1px solid var(--line2)}
2395.lms .btn--ghost:hover{background:transparent;border-color:var(--white)}
2396
2397/* ---- hero ---- */
2398.lms .ihero{position:relative}
2399.lms .ihero-img{position:relative}
2400.lms .ihero-img img{height:clamp(24rem,64vh,38rem);object-fit:cover;object-position:50% 42%}
2401.lms .ihero-img::after{content:"";position:absolute;inset:0;
2402  background:linear-gradient(180deg,rgba(8,7,10,.64) 0%,rgba(8,7,10,.16) 34%,rgba(8,7,10,.22) 50%,rgba(8,7,10,.96
2402) 100%)}
2403.lms .ihero-copy{position:absolute;left:0;right:0;bottom:0;z-index:4;
2404  padding:0 var(--gut) clamp(2rem,4.5vw,3.4rem)}
2405.lms .ihero-inner{max-width:84rem;margin:0 auto}
2406.lms .ihero h1{max-width:13ch;margin-bottom:1.1rem}
2407.lms .ihero-sub{font-size:clamp(1rem,1.5vw,1.18rem);color:rgba(255,255,255,.88);
2408  max-width:34rem;margin:0 0 1.6rem}
2409.lms .ihero-row{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.8rem}
2410
2411/* ---- spec band (violet field) ---- */
2412.lms .spec{background:var(--field);padding:clamp(2.6rem,6vw,4.4rem) 0}
2413.lms .spec .lbl{color:rgba(255,255,255,.62)}
2414.lms .spec-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
2415  background:rgba(255,255,255,.16);border-top:1px solid rgba(255,255,255,.16);
2416  border-bottom:1px solid rgba(255,255,255,.16);margin-top:1.6rem}
2417.lms .spec-cell{background:var(--field);padding:1.6rem 1.4rem 1.5rem 0}
2418.lms .spec-grid .spec-cell+.spec-cell{padding-left:1.4rem}
2419.lms .spec-cell .num{font-size:clamp(2.4rem,6vw,4.2rem)}
2420.lms .spec-cell .k{font-family:var(--i);font-weight:600;font-size:.95rem;color:var(--white);
2421  margin:.7rem 0 .25rem;letter-spacing:-.01em}
2422.lms .spec-cell .d{font-size:.92rem;color:rgba(255,255,255,.74);margin:0;max-width:20rem;font-weight:300}
2423.lms .spec-foot{margin-top:1.6rem;font-size:.95rem;color:rgba(255,255,255,.82);max-width:42rem}
2424
2425/* ---- expectations: two columns of copy ---- */
2426.lms .expect{padding:clamp(3.2rem,7vw,5.6rem) 0}
2427.lms .expect-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
2428  gap:clamp(1.5rem,4vw,3.6rem);align-items:start}
2429.lms .ticks{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
2430.lms .ticks li{display:grid;grid-template-columns:1.9rem 1fr;gap:0 .5rem;align-items:baseline;
2431  border-bottom:1px solid var(--line);padding:1rem 0;font-size:1.02rem;color:var(--off);line-height:1.5}
2432.lms .ticks li span{font-family:var(--m);font-size:.62rem;letter-spacing:.1em;color:var(--vtext)}
2433
2434/* ---- connection: image + copy ---- */
2435.lms .conn{padding:clamp(2.6rem,6vw,4.6rem) 0;border-top:1px solid var(--line)}
2436.lms .conn-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
2437  gap:clamp(1.5rem,4vw,3.6rem);align-items:center}
2438.lms .conn-img{margin-left:calc(-1 * var(--gut))}
2439.lms .conn-img img{aspect-ratio:4/5;object-fit:cover}
2440
2441/* ---- coverage statement (violet field, full width) ---- */
2442.lms .cover{background:var(--field2);padding:clamp(2.8rem,6vw,4.6rem) 0}
2443.lms .cover .lbl{color:rgba(255,255,255,.62)}
2444.lms .cover p{color:rgba(255,255,255,.9);max-width:46rem;font-size:clamp(1.02rem,1.5vw,1.16rem)}
2445.lms .cover b{color:var(--white);font-weight:600}
2446
2447/* ---- what every experience includes ---- */
2448.lms .incl{padding:clamp(3.2rem,7vw,5.6rem) 0}
2449.lms .incl-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
2450  gap:clamp(1.6rem,4vw,4rem)}
2451.lms .toc{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
2452.lms .toc li{display:grid;grid-template-columns:2.9rem 1fr;gap:0 .6rem;align-items:baseline;
2453  border-bottom:1px solid var(--line);padding:.85rem 0}
2454.lms .toc li span{font-family:var(--m);font-size:.63rem;color:var(--vtext);letter-spacing:.09em}
2455.lms .toc li b{font-family:var(--i);font-weight:500;font-size:1.02rem;color:var(--white)}
2456
2457/* ---- the four experiences ---- */
2458.lms .editions{background:var(--ink2);padding:clamp(3.2rem,7vw,5.6rem) 0;border-top:1px solid var(--line)}
2459.lms .ed-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(11.5rem,1fr));gap:0;
2460  margin:2.2rem 0 1.8rem;border-top:1px solid var(--line2)}
2461.lms .ed{padding:1.4rem 1.3rem 1.7rem 0}
2462.lms .ed+.ed{border-left:1px solid var(--line);padding-left:1.4rem}
2463.lms .ed .no{font-family:var(--m);font-size:.6rem;letter-spacing:.16em;color:var(--vtext);
2464  text-transform:uppercase;display:block;margin-bottom:.7rem}
2465.lms .ed h3{font-family:var(--f);font-variation-settings:"opsz" 144,"SOFT" 20,"WONK" 1;
2466  font-weight:700;font-size:1.6rem;color:var(--white);margin:0 0 .4rem;letter-spacing:-.02em;line-height:1}
2467.lms .ed p{font-family:var(--m);font-size:.68rem;letter-spacing:.09em;color:var(--mute);
2468  margin:0;text-transform:uppercase;line-height:1.7}
2469.lms .ed p b{color:var(--vtext);font-weight:400}
2470.lms .ed-note{max-width:44rem;font-size:1rem;color:var(--off)}
2471
2472/* ---- the process: numbered timeline ---- */
2473.lms .proc{padding:clamp(3.2rem,7vw,5.6rem) 0;border-top:1px solid var(--line)}
2474.lms .proc-list{margin:2.2rem 0 0;border-top:1px solid var(--line)}
2475.lms .proc-item{display:grid;grid-template-columns:3.2rem 13rem 1fr;gap:0 1.6rem;
2476  padding:1.2rem 0;border-bottom:1px solid var(--line);align-items:baseline}
2477.lms .proc-item .n{font-family:var(--m);font-size:.64rem;letter-spacing:.14em;color:var(--vtext);margin:0}
2478.lms .proc-item .t{font-family:var(--i);font-weight:600;font-size:1.02rem;color:var(--white);
2479  margin:0;letter-spacing:-.01em}
2480.lms .proc-item .dsc{margin:0;font-size:.98rem;color:var(--off);max-width:36rem;line-height:1.5}
2481
2482/* ---- customizations: paper panel ---- */
2483.lms .custom{background:var(--paper);color:var(--paper-ink);padding:clamp(3rem,6.5vw,5.2rem) 0}
2484.lms .custom .lbl{color:var(--paper-dim)}
2485.lms .custom .fr{color:var(--paper-ink)}
2486.lms .custom p{color:#3D3947}
2487.lms .custom-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);
2488  gap:clamp(1.6rem,4vw,3.6rem);align-items:center}
2489.lms .custom img{aspect-ratio:3/2;object-fit:cover}
2490.lms .adds{list-style:none;margin:1.5rem 0 0;padding:0;border-top:1px solid #D6D1C6}
2491.lms .adds li{border-bottom:1px solid #D6D1C6;padding:.8rem 0;
2492  font-family:var(--i);font-weight:500;font-size:1.04rem;color:var(--paper-ink);
2493  display:grid;grid-template-columns:1.6rem 1fr;gap:0 .5rem;align-items:baseline}
2494.lms .adds li span{font-family:var(--m);font-size:.62rem;letter-spacing:.1em;color:var(--paper-acc)}
2495
2496/* ---- what to expect / booking, 3 steps ---- */
2497.lms .book{padding:clamp(3.2rem,7vw,5.6rem) 0;border-top:1px solid var(--line)}
2498.lms .book-grid{display:grid;grid-template-columns:repeat(3,1fr);
2499  gap:0 clamp(1.2rem,3vw,2.6rem);margin-top:2.2rem;border-top:1px solid var(--line)}
2500.lms .step{padding:1.5rem 0 1.7rem;border-bottom:1px solid var(--line)}
2501.lms .step h3.no{font-family:var(--m);font-size:.62rem;font-weight:400;letter-spacing:.16em;
2502  color:var(--vtext);margin:0 0 .85rem;text-transform:uppercase}
2503.lms .step h3.ttl{font-family:var(--f);font-variation-settings:"opsz" 144,"SOFT" 20,"WONK" 1;
2504  font-weight:600;font-size:1.32rem;color:var(--white);margin:0 0 .45rem;
2505  letter-spacing:-.018em;line-height:1.1}
2506.lms .step p{margin:0;font-size:.96rem;color:var(--off);max-width:24rem}
2507
2508/* ---- closing ---- */
2509.lms .close{position:relative;isolation:isolate;scroll-margin-top:6rem}
2510.lms .close-img{position:absolute;inset:0;z-index:0}
2511.lms .close-img img{width:100%;height:100%;object-fit:cover}
2512.lms .close-img::after{content:"";position:absolute;inset:0;
2513  background:linear-gradient(180deg,rgba(8,7,10,.58) 0%,rgba(8,7,10,.74) 55%,rgba(8,7,10,.95) 100%)}
2514.lms .close-inner{position:relative;z-index:2;
2515  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,min(600px,52%));
2516  gap:clamp(1.8rem,4vw,4rem);align-items:center;
2517  padding-top:clamp(3.2rem,7vw,5.6rem);padding-bottom:clamp(3.2rem,7vw,5.6rem)}
2518.lms .close-copy{max-width:30rem}
2519.lms .close p{color:rgba(255,255,255,.88)}
2520.lms .close-meta{font-family:var(--m);font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;
2521  color:var(--vtext);margin:1.5rem 0 0}
2522.lms .close-meta a{color:var(--vtext);text-decoration:none}
2523.lms .close-meta a:hover{color:var(--white)}
2524
2525/* The Studio Ninja form is a cross-origin iframe &mdash; its insides can't be
2526   styled from out here. Giving it a deliberate white panel makes the
2527   white read as a choice rather than a leak. */
2528.lms .close-form{background:#fff;padding:clamp(.5rem,1.4vw,1rem);
2529  box-shadow:0 24px 60px rgba(0,0,0,.45);
2530  max-width:600px;width:100%;justify-self:end}
2531.lms .close-form iframe{display:block;width:100%}
2532.lms .form-alt{font-family:var(--m);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;
2533  color:rgba(255,255,255,.62);margin:.9rem 0 0;text-align:right}
2534.lms .form-alt a{color:var(--vtext);text-decoration:none}
2535.lms .form-alt a:hover{color:var(--white)}
2536
2537/* ---- responsive ---- */
2538@media (max-width:1000px){
2539  .lms .spec-grid{grid-template-columns:repeat(2,1fr)}
2540  .lms .expect-grid,.lms .conn-grid,.lms .incl-grid,.lms .custom-grid{grid-template-columns:1fr}
2541  .lms .conn-img{margin-left:calc(-1 * var(--gut));margin-right:calc(-1 * var(--gut))}
2542  .lms .proc-item{grid-template-columns:2.8rem 1fr;gap:0 1rem}
2543  .lms .proc-item .dsc{grid-column:2;margin-top:.25rem}
2544  .lms .book-grid{grid-template-columns:repeat(2,1fr)}
2545  .lms .close-inner{grid-template-columns:1fr}
2546  .lms .close-form{justify-self:stretch}
2547  .lms .form-alt{text-align:left}
2548}
2549@media (max-width:640px){
2550  .lms .spec-grid{grid-template-columns:1fr}
2551  .lms .spec-grid .spec-cell+.spec-cell{padding-left:0}
2552  .lms .ed+.ed{border-left:0;border-top:1px solid var(--line);padding-left:0}
2553  .lms .book-grid{grid-template-columns:1fr}
2554  .lms .proc-item{grid-template-columns:1fr;gap:.3rem 0}
2555  .lms .proc-item .dsc{grid-column:1}
2556}
2557
2558/* ---- theme overrides: Kadence beats these on specificity ---- */
2559.lms h1,.lms h2,.lms h3,.lms h4,.lms .fr,.lms .sub-h{text-transform:none !important}
2560.lms .btn,.lms a.btn{text-decoration:none !important;color:var(--white) !important}
2561.lms .btn:not(.btn--ghost){border:0 !important}
2562.lms .btn--ghost,.lms a.btn--ghost{background:transparent !important;border:1px solid var(--line2) !important}
2563.lms .btn--ghost:hover{border-color:var(--white) !important}
2564.lms,.lms section{max-width:none !important}
2565.lms section > .w > *:first-child{margin-top:0}
2566@media (prefers-reduced-motion:reduce){ .lms *{transition:none !important;animation:none !important} }</style><div class="lms"><section class="ihero"><div class="ihero-img"> <img class="br-lazy" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNjIwIDEwODAnPjwvc3ZnPg==" data-breeze="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/10/wedding-photography-experiences-connecticut-wedding-photographer-ladman-studios.webp" data-od-fetchpriority-already-added data-od-xpath="/HTML/BODY/DIV[@id=&apos;wrapper&apos;]/*[3][self::MAIN]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::ARTICLE]/*[1][self::DIV]/*[1][self::DIV]/*[2][self::DIV]/*[1][self::SECTION]/*[1][self::DIV]/*[1][self::IMG]" src="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/10/wedding-photography-experiences-connecticut-wedding-photographer-ladman-studios.webp"
2567alt="A Connecticut wedding photographed by Ladman Studios"
2568width="1620" height="1080" fetchpriority="high" decoding="async"></div><div class="ihero-copy"><div class="ihero-inner"><p class="lbl">Ladman Studios &middot; Connecticut</p><h1 class="fr fr-xl">Your Experience &amp; Investment</h1><p class="ihero-sub">Your wedding is a story in motion. I’m there to notice, to craft, and to translate it into photographs that carry the truth forward.</p><div class="ihero-row"> <a class="btn" href="#book-your-date">Are you ready?</a> <a class="btn btn--ghost" href="https://ladmanstudios.com/portfolio/">Portfolio</a></div></div></div></section><section class="spec"><div class="w"><p class="lbl">The short version</p><div class="spec-grid"><div class="spec-cell"><p class="num">12</p><p class="k">Hours, every time</p><p class="d">True Full Day coverage. Not a tier you upgrade into.</p></div><div class="spec-cell"><p class="num">3</p><p class="k">People in the room</p><p class="d">Lead, second shooter, assistant. Nothing comes down to what one person could reach.</p></div><div class="spec-cell"><p class="num">5,500</p><p class="k">Where it starts</p><p class="d">Most couples land between $5,500 and $6,500.</p></div><div class="spec-cell"><p class="num">24</p><p class="k">Hours to a reply</p><p class="d">You send the form, I answer. That’s the whole first step.</p></div></div><p class="spec-foot">Documentary at its core. Art when it counts. Both working together to give you a wedding day you get to live, and photographs that last.</p></div></section><section class="expect"><div class="w expect-grid"><div><p class="lbl">01 &mdash; The experience</p><h2 class="fr fr-lg">what to expect from the experience</h2></div><div><ul class="ticks"><li><span>01</span>Time built around people, not clocks, or check-boxes.</li><li><span>02</span>A photographer who feels like a friend and actually gets you.</li><li><span>03</span>Being treated as human, not as a transaction.</li><li><span>04</span>Coverage that feels collaborative, not like a countdown.</li><li><span>05</span>Candid, intentional photographs that let you relive how the day felt.</li><li><span>06</span>An heirloom album that deserves a voice like James Earl Jones.</li></ul></div></div></section><section class="conn"><div class="w conn-grid"><figure class="conn-img" style="margin-bottom:0"> <img class="br-lazy" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyMDI1IDI1MzEnPjwvc3ZnPg==" data-breeze="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2026/09/Lamdan-Studios-CT-Wedding-Photograaphy-Investment.jpg" data-od-xpath="/HTML/BODY/DIV[@id=&apos;wrapper&apos;]/*[3][self::MAIN]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::ARTICLE]/*[1][self::DIV]/*[1][self::DIV]/*[2][self::DIV]/*[4][self::SECTION]/*[1][self::DIV]/*[1][self::FIGURE]/*[1][self::IMG]" loading="lazy" decoding="async"
2569src="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2026/09/Lamdan-Studios-CT-Wedding-Photograaphy-Investment.jpg"
2570alt="A groom seated at a table looking up at his bride, who stands beside him in a strapless ivory gown holding a pastel bouquet of roses and ferns, in a dark wood-panelled room at a Connecticut wedding"
2571width="2025" height="2531"></figure><div><p class="lbl">02 &mdash; Trust</p><h2 class="fr fr-lg" style="margin-bottom:1.3rem">Why connection matters</h2><p class="lede">I limit the number of weddings I take on each year so every couple gets my full creative and emotional attention. But it’s not just about time. It’s about trust.</p><p style="max-width:36rem">The best photos happen when you can actually relax around me &mdash; when you know I’ll step in to guide when you need it, and step back when it matters. Because when you’re comfortable, the real moments come alive.</p></div></div></section><section class="cover"><div class="w"><p class="lbl">Coverage</p><p><b>True Full Day coverage. Every time.</b> I’m there for the full arc of your wedding. Most couples don’t need more than 12 hours. Your day does not deserve to feel rushed because of a restrictive time limit.</p><p>Most couples invest between <b>$5,500 and $6,500</b>, depending on album upgrades, artwork, and how fully they want their story preserved.</p><p style="margin-bottom:0">The goal is simple. Remove the pressure. Protect the experience. Document it honestly.</p></div></section><section class="incl"><div class="w incl-grid"><div><p class="lbl">03 &mdash; Included</p><h2 class="fr fr-lg">What Every Experience Includes</h2><p class="cap" style="margin-top:1.2rem">Nine things. None of them optional, none of them an upgrade.</p></div><div><ul class="toc"><li><span>01</span><b>Up to twelve hours of coverage, no clock</b></li><li><span>02</span><b>T.J. as lead, plus a second shooter and an assistant</b></li><li><span>03</span><b>A road map built around your day, not a shot list</b></li><li><span>04</span><b>Sneak peeks inside 48 hours</b></li><li><span>05</span><b>Signature editing on every final frame</b></li><li><span>06</span><b>Full gallery in eight weeks</b></li><li><span>07</span><b>Album design &mdash; the printed book from the Saga up</b></li><li><span>08</span><b>Virtual photo premiere</b></li><li><span>09</span><b>One year of private gallery hosting and a print store</b></li></ul></div></div></section><section class="editions"><div class="w"><p class="lbl">04 &mdash; The experiences</p><h2 class="fr fr-lg">Four experiences</h2><p class="lede" style="margin-top:1.1rem">The coverage never changes &mdash; only what you keep.</p><div class="ed-grid"><div class="ed"> <span class="no">Experience I</span><h3>Journey</h3><p><b>From $5,500</b><br>Where we start</p></div><div class="ed"> <span class="no">Experience II</span><h3>Saga</h3><p>Most booked<br>Album included</p></div><div class="ed"> <span class="no">Experience III</span><h3>Chronicle</h3><p>Adds a side quest</p></div><div class="ed"> <span class="no">Experience IV</span><h3>Anthology</h3><p>Your complete story</p></div></div><p class="ed-note">Every one of them is the same twelve hours and the same three people. What moves is what ends up on your shelf &mdash; the album, the artwork, whether there’s a side quest in front of it. I’d rather walk you through that on a call than have you pick a row off a chart, so the numbers past the starting point are a conversation, not a menu.</p><p style="margin-top:1.4rem"><a class="btn" href="#book-your-date">Are you ready?</a></p></div></section><section class="proc"><div class="w"><p class="lbl">05 &mdash; Start to finish</p><h2 class="fr fr-lg">The Ladman Studios process</h2><p class="lede" style="margin-top:1.1rem">Eleven steps, most of which happen without you having to think about them.</p><div class="proc-list"><div class="proc-item"><p class="n">01</p><p class="t">Reach Out</p><p class="dsc">Tell me about your plans and what matters most.</p></div><div class="proc-item"><p class="n">02</p><p class="t">Meet &amp; Greet</p><p class="dsc">We see if we click and shape an experience that lets you actually live your day.</p></div><div class="proc-item"><p class="n">03</p><p class="t">Lock It In</p><p class="dsc">Contract signed, retainer paid, date secured.</p></div><div class="proc-item"><p class="n">04</p><p class="t">Planning Support</p><p class="dsc">Private guides, timeline help, and check-ins so nothing feels overwhelming.</p></div><div class="proc-item"><p class="n">05</p><p class="t">Side Quest (Optional)</p><p class="dsc">An engagement session that feels like you, not a photoshoot.</p></div><div class="proc-item"><p class="n">06</p><p class="t">The Wedding Day</p><p class="dsc">You stay present. I capture it as it unfolds.</p></div><div class="proc-item"><p class="n">07</p><p class="t">Sneak Peeks (48 Hours)</p><p class="dsc">A few favorites, fast.</p></div><div class="proc-item"><p class="n">08</p><p class="t">Full Gallery (8 Weeks)</p><p class="dsc">Your full story, edited and ready to share.</p></div><div class="proc-item"><p class="n">09</p><p class="t">Photo Premiere</p><p class="dsc">We relive the day and design your album and wall art together.</p></div><div class="proc-item"><p class="n">10</p><p class="t">Final Design &amp; Order</p><p class="dsc">We lock everything in so it’s crafted exactly how you want it.</p></div><div class="proc-item"><p class="n">11</p><p class="t">Enjoy the Art</p><p class="dsc">Albums. Wall art. Real memories you get to keep.</p></div></div></div></section><section class="custom"><div class="w custom-grid"><figure style="margin:0"> <img class="br-lazy" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNjAwIDEwNjcnPjwvc3ZnPg==" data-breeze="https://spcdn.shortpixel.ai/spio/ret_img+q_c
2571dnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/10/wedding-albums-connecticut-wedding-photographer-ladman-studios-scaled.jpg" data-od-xpath="/HTML/BODY/DIV[@id=&apos;wrapper&apos;]/*[3][self::MAIN]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::ARTICLE]/*[1][self::DIV]/*[1][self::DIV]/*[2][self::DIV]/*[9][self::SECTION]/*[1][self::DIV]/*[1][self::FIGURE]/*[1][self::IMG]" loading="lazy" decoding="async"
2572src="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/10/wedding-albums-connecticut-wedding-photographer-ladman-studios-scaled.jpg"
2573alt="Printed DreambooksPRO wedding album open to a black and white spread of a bride and flower girl"
2574width="1600" height="1067"></figure><div><p class="lbl">06 &mdash; Add to any of them</p><h2 class="fr fr-md">Customizations to enhance Any Experience</h2><ul class="adds"><li><span>01</span>Side Quests</li><li><span>02</span>Wall art</li><li><span>03</span>Heirloom albums</li><li><span>04</span>Family albums</li><li><span>05</span>and more</li></ul></div></div></section><section class="book"><div class="w"><p class="lbl">07 &mdash; Booking</p><h2 class="fr fr-lg">What to Expect</h2><p class="lede" style="margin-top:1.1rem">Three steps between here and your date being yours.</p><div class="book-grid"><div class="step"><h3 class="no">01</h3><h3 class="ttl">Say Hello</h3><p>Fill out the form below, and I’ll get back to you within 24 hours for availability.</p></div><div class="step"><h3 class="no">02</h3><h3 class="ttl">Meet &amp; Greet</h3><p>We’ll schedule a meet &amp; greet to run through the things you’re planning and the options.</p></div><div class="step"><h3 class="no">03</h3><h3 class="ttl">Secure your date</h3><p>To reserve your day requires two things: A signed contract &amp; a non-refundable retainer.</p></div></div></div></section><section class="close" id="book-your-date"><div class="close-img"> <img class="br-lazy" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNjAwIDEwNjcnPjwvc3ZnPg==" data-breeze="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/08/Contact-From-BG.jpg" data-od-xpath="/HTML/BODY/DIV[@id=&apos;wrapper&apos;]/*[3][self::MAIN]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::ARTICLE]/*[1][self::DIV]/*[1][self::DIV]/*[2][self::DIV]/*[11][self::SECTION]/*[1][self::DIV]/*[1][self::IMG]" loading="lazy" decoding="async"
2575src="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/08/Contact-From-BG.jpg"
2576alt="A couple holding each other outside a lit Connecticut wedding venue at night"
2577width="1600" height="1067"></div><div class="w close-inner"><div class="close-copy"><p class="lbl" style="color:rgba(255,255,255,.62)">Start here</p><p class="fr fr-lg" style="margin-bottom:.9rem">Tell me when, and where.</p><p>Send the date and the venue. I’ll tell you within 24 hours whether it’s open, and we’ll put a meet &amp; greet on the calendar from there.</p><p class="close-meta"> <a href="tel:18603372756">860.337.2756</a> &middot; <a href="mailto:[email protected]">[email protected]</a></p></div><div><div class="close-form"> <iframe height="616" style="min-width:100%;max-width:600px;border:0;" id="sn-form-cyqdz"
2578title="Check your wedding date with Ladman Studios"
2579src="https://app.studioninja.co/contactform/parser/0a800fc8-86c6-1e4b-8186-e20e7a1f1e08/0a800fc8-9d71-1a64-819d-7a14fb4d1290"
2580allowfullscreen loading="lazy"></iframe> 
2580<script type="text/javascript" data-iframe-id="sn-form-cyqdz"
2581                  src="https://app.studioninja.co/client-assets/form-render/assets/scripts/iframeResizer.js"></script>
2581 </div><p class="form-alt">Rather use the <a href="https://ladmanstudios.com/contact/">full contact page</a>?</p></div></div></section></div> 
2581<script>/* Anchor fallback. Some themes intercept in-page hash links, and Kadence's
2582   sticky header can land the target under the bar. This scrolls manually
2583   and offsets for the header. Plain <a href="#book-your-date"> still works
2584   if this script never runs. */
2585(function(){
2586  var target = document.getElementById('book-your-date');
2587  if(!target) return;
2588  document.querySelectorAll('.lms a[href="#book-your-date"]').forEach(function(a){
2589    a.addEventListener('click', function(e){
2590      e.preventDefault();
2591      var top = target.getBoundingClientRect().top + window.pageYOffset - 90;
2592      window.scrollTo({ top: top, behavior: 'smooth' });
2593      if(history.replaceState) history.replaceState(null,'','#book-your-date');
2594    });
2595  });
2596})();</script>
2596 </div></div></article></div></div></div></div></main><footer id="colophon" class="site-footer" role="contentinfo"><div class="site-footer-wrap"><div class="site-middle-footer-wrap site-footer-row-container site-footer-focus-item site-footer-row-layout-fullwidth site-footer-row-tablet-layout-default site-footer-row-mobile-layout-default" data-section="kadence_customizer_footer_middle"><div class="site-footer-row-container-inner"><div class="site-container"><div class="site-middle-footer-inner-wrap site-footer-row site-footer-row-columns-4 site-footer-row-column-layout-right-forty site-footer-row-tablet-column-layout-default site-footer-row-mobile-column-layout-row ft-ro-dir-column ft-ro-collapse-normal ft-ro-t-dir-default ft-ro-m-dir-default ft-ro-lstyle-noline"><div class="site-footer-middle-section-1 site-footer-section footer-section-inner-items-1"><div class="footer-widget-area widget-area site-footer-focus-item footer-widget6 content-align-default content-tablet-align-default content-mobile-align-default content-valign-default content-tablet-valign-default content-mobile-valign-default" data-section="sidebar-widgets-footer6"><div class="footer-widget-area-inner site-info-inner"><section id="block-26" class="widget widget_block widget_media_image"><figure class="wp-block-image size-full is-resized"><img class="wp-image-3984 br-lazy" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMjAwIDgwMSc+PC9zdmc+" data-breeze="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/Ladman-Studios-Portrait-white-low-res.png" data-od-xpath="/HTML/BODY/DIV[@id=&apos;wrapper&apos;]/*[4][self::FOOTER]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::DIV]/*[1][self::SECTION]/*[1][self::FIGURE]/*[1][self::IMG]" loading="lazy" decoding="async" width="1200" height="801" data-brsizes="auto, (max-width: 1200px) 100vw, 1200px"  alt="CT wedding photography Ladman Studios"  style="width:279px;height:auto" data-brsrcset="https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/Ladman-Studios-Portrait-white-low-res.png 1200w, https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/Ladman-Studios-Portrait-white-low-res-300x200.png 300w, https://spcdn.shortpixel.ai/spio/ret_img+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/uploads/2025/02/Ladman-Studios-Portrait-white-low-res-768x513.png 768w" /></figure></section></div></div></div><div class="site-footer-middle-section-2 site-footer-section footer-section-inner-items-1"><div class="footer-widget-area widget-area site-footer-focus-item footer-widget5 content-align-default content-tablet-align-default content-mobile-align-default content-valign-default content-tablet-valign-default content-mobile-valign-default" data-section="sidebar-widgets-footer5"><div class="footer-widget-area-inner site-info-inner"><section id="block-88" class="widget widget_block"><h2 class="widget-title">PHOTOGRAPHY</h2><div class="wp-widget-group__inner-blocks"><h2 class="kt-adv-heading147dc1-39 wp-block-kadence-advancedheading" data-kb-block="kb-adv-heading147dc1-39"></h2><p class="wp-block-paragraph"><a href="https://ladmanstudios.com/portfolio/" data-type="link" data-id="https://ladmanstudios.com/portfolio/">PORTFOLIO</a><br><a href="https://ladmanstudios.com/investment/" data-type="link" data-id="https://ladmanstudios.com/investment/">INVESTMENT</a><br><a href="https://ladmanstudios.com/connecticut-proposal-photographer/">PROPOSALS</a><br><a href="https://ladmanstudios.com/category/engagement-sessions/" data-type="link" data-id="https://ladmanstudios.com/category/adventure-sessions/">ENGAGEMENT SESSIONS</a><br><a href="http://www.ladmanstudios.com/events">EVENTS</a><br><a href="https://ladmanstudios.com/ct-documentary-family-photography/">FAMILY</a></p></div></section></div></div></div><div class="site-footer-middle-section-3 site-footer-section footer-section-inner-items-1"><div class="footer-widget-area widget-area site-footer-focus-item footer-widget4 content-align-default content-tablet-align-default content-mobile-align-default content-valign-default content-tablet-valign-default content-mobile-valign-default" data-section="sidebar-widgets-footer4"><div class="footer-widget-area-inner site-info-inner"><section id="block-82" class="widget widget_block"><h2 class="widget-title">RESOURCES</h2><div class="wp-widget-group__inner-blocks"><h2 class="kt-adv-headingb87269-09 wp-block-kadence-advancedheading" data-kb-block="kb-adv-headingb87269-09"></h2><p class="wp-block-paragraph"><a href="https://ladmanstudios.com/blog/" data-type="link" data-id="https://ladmanstudios.com/blog/">BLOG</a><br><a href="https://ladmanstudios.com/top-venues/" data-type="link" data-id="https://ladmanstudios.com/top-venues/">VENUES</a><br><a href="https://ladmanstudios.com/category/guides/" data-type="link" data-id="https://ladmanstudios.com/category/guides/">GUIDES</a><br><a href="https://ladmanstudios.com/testimonials/" data-type="link" data-id="https://ladmanstudios.com/testimonials/">REVIEWS</a></p></div></section></div></div></div><div class="site-footer-middle-section-4 site-footer-section footer-section-inner-items-2"><div class="footer-widget-area widget-area site-footer-focus-item footer-widget3 content-align-default content-tablet-align-default content-mobile-align-default content-valign-default content-tablet-valign-default content-mobile-valign-default" data-section="sidebar-widgets-footer3"><div class="footer-widget-area-inner site-info-inner"><section id="block-62" class="widget widget_block"><h2 class="widget-title">LADMAN STUDIOS</h2><div class="wp-widget-group__inner-blocks"><p class="wp-block-paragraph">TJ Ladzinski is the documentary wedding photographer behind Ladman Studios, based in<br>Brooklyn, Connecticut and covering all of CT and beyond. A combat veteran turned<br>documentary photographer, he is currently ranked the #1 wedding photographer in<br>Connecticut by the Wedding Photojournalist Association, with 28 WPJA awards. Every<br>experience includes a three-person team and up to 12 hours of coverage so couples never<br>have to choose which moments are worth saving.</p><hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/></div></section></div></div><div class="footer-widget-area widget-area site-footer-focus-item footer-widget1 content-align-left content-tablet-align-center content-mobile-align-default content-valign-middle content-tablet-valign-default content-mobile-valign-default" data-section="sidebar-widgets-footer1"><div class="footer-widget-area-inner site-info-inner"><section id="block-97" class="widget widget_block widget_text"><p class="has--font-size wp-block-paragraph"><a href="tel:8603372756" target="_blank" rel="noreferrer noopener">860.337.2756</a> | <a href="mailto:[email protected]" target="_blank" rel="noreferrer noopener">[email protected]</a></p></section></div></div></div></div></div></div></div><div class="site-bottom-footer-wrap site-footer-row-container site-footer-focus-item site-footer-row-layout-standard site-footer-row-tablet-layout-default site-footer-row-mobile-layout-standard" data-section="
2596kadence_customizer_footer_bottom"><div class="site-footer-row-container-inner"><div class="site-container"><div class="site-bottom-footer-inner-wrap site-footer-row site-footer-row-columns-2 site-footer-row-column-layout-equal site-footer-row-tablet-column-layout-default site-footer-row-mobile-column-layout-row ft-ro-dir-row ft-ro-collapse-normal ft-ro-t-dir-default ft-ro-m-dir-default ft-ro-lstyle-plain"><div class="site-footer-bottom-section-1 site-footer-section footer-section-inner-items-2"><div class="footer-widget-area site-info site-footer-focus-item content-align-center content-tablet-align-center content-mobile-align-left content-valign-middle content-tablet-valign-default content-mobile-valign-top" data-section="kadence_customizer_footer_html"><div class="footer-widget-area-inner site-info-inner"><div class="footer-html inner-link-style-normal"><div class="footer-html-inner"><p>&copy; 2026 Ladman Studios | Brooklyn Connecticut</p></div></div></div></div><div class="footer-widget-area widget-area site-footer-focus-item footer-social content-align-center content-tablet-align-center content-mobile-align-default content-valign-middle content-tablet-valign-default content-mobile-valign-bottom" data-section="kadence_customizer_footer_social"><div class="footer-widget-area-inner footer-social-inner"><div class="footer-social-wrap"><div class="footer-social-inner-wrap element-social-inner-wrap social-show-label-false social-style-filled"><a href="https://www.facebook.com/ladmanstudios" aria-label="Facebook" target="_blank" rel="noopener noreferrer"  class="social-button footer-social-item social-link-facebook"><span class="kadence-svg-iconset"><svg class="kadence-svg-icon kadence-facebook-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><title>Facebook</title><path d="M31.997 15.999c0-8.836-7.163-15.999-15.999-15.999s-15.999 7.163-15.999 15.999c0 7.985 5.851 14.604 13.499 15.804v-11.18h-4.062v-4.625h4.062v-3.525c0-4.010 2.389-6.225 6.043-6.225 1.75 0 3.581 0.313 3.581 0.313v3.937h-2.017c-1.987 0-2.607 1.233-2.607 2.498v3.001h4.437l-0.709 4.625h-3.728v11.18c7.649-1.2 13.499-7.819 13.499-15.804z"></path> </svg></span></a><a href="https://www.instagram.com/ladmanstudios" aria-label="Instagram" target="_blank" rel="noopener noreferrer"  class="social-button footer-social-item social-link-instagram"><span class="kadence-svg-iconset"><svg class="kadence-svg-icon kadence-instagram-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><title>Instagram</title><path d="M7 1c-1.657 0-3.158 0.673-4.243 1.757s-1.757 2.586-1.757 4.243v10c0 1.657 0.673 3.158 1.757 4.243s2.586 1.757 4.243 1.757h10c1.657 0 3.158-0.673 4.243-1.757s1.757-2.586 1.757-4.243v-10c0-1.657-0.673-3.158-1.757-4.243s-2.586-1.757-4.243-1.757zM7 3h10c1.105 0 2.103 0.447 2.828 1.172s1.172 1.723 1.172 2.828v10c0 1.105-0.447 2.103-1.172 2.828s-1.723 1.172-2.828 1.172h-10c-1.105 0-2.103-0.447-2.828-1.172s-1.172-1.723-1.172-2.828v-10c0-1.105 0.447-2.103 1.172-2.828s1.723-1.172 2.828-1.172zM16.989 11.223c-0.15-0.972-0.571-1.857-1.194-2.567-0.754-0.861-1.804-1.465-3.009-1.644-0.464-0.074-0.97-0.077-1.477-0.002-1.366 0.202-2.521 0.941-3.282 1.967s-1.133 2.347-0.93 3.712 0.941 2.521 1.967 3.282 2.347 1.133 3.712 0.93 2.521-0.941 3.282-1.967 1.133-2.347 0.93-3.712zM15.011 11.517c0.122 0.82-0.1 1.609-0.558 2.227s-1.15 1.059-1.969 1.18-1.609-0.1-2.227-0.558-1.059-1.15-1.18-1.969 0.1-1.609 0.558-2.227 1.15-1.059 1.969-1.18c0.313-0.046 0.615-0.042 0.87-0.002 0.74 0.11 1.366 0.47 1.818 0.986 0.375 0.428 0.63 0.963 0.72 1.543zM17.5 7.5c0.552 0 1-0.448 1-1s-0.448-1-1-1-1 0.448-1 1 0.448 1 1 1z"></path> </svg></span></a></div></div></div></div></div><div class="site-footer-bottom-section-2 site-footer-section footer-section-inner-items-1"><div class="footer-widget-area widget-area site-footer-focus-item footer-widget2 content-align-default content-tablet-align-default content-mobile-align-default content-valign-default content-tablet-valign-default content-mobile-valign-default" data-section="sidebar-widgets-footer2"><div class="footer-widget-area-inner site-info-inner"><section id="block-19" class="widget widget_block widget_text"><p class="has-theme-palette-2-color has-text-color has-link-color wp-elements-1 wp-block-paragraph"><a href="https://ladmanstudios.com/cookie-policy/">Cookie Policy</a> | <a href="https://ladmanstudios.com/privacy/">Privacy Policy</a></p></section></div></div></div></div></div></div></div></div></footer></div> 
2596<script>document.documentElement.style.setProperty('--scrollbar-offset', window.innerWidth - document.documentElement.clientWidth + 'px' );</script>
2596  
2596<script type='text/javascript'>(function () {
2597            function runPixelCode( response ) {
2598                if ( ! response || ! response.data || ! response.data.fb_pxl_code ) {
2599                    return;
2600                }
2601
2602                try {
2603                    new Function( response.data.fb_pxl_code )();
2604                } catch ( e ) {
2605                    console && console.warn
2606                        && console.warn( 'Meta Pixel response parsing failed. Please check if your pixel is connected.', e );
2607                }
2608            }
2609
2610            var radio = window.nfRadio
2611                || ( window.Backbone && window.Backbone.Radio );
2612            if ( radio && radio.channel ) {
2613                radio.channel( 'forms' ).on( 'submit:response', runPixelCode );
2614            }
2615
2616            if ( window.jQuery ) {
2617                window.jQuery( document ).on(
2618                    'nfFormSubmitResponse',
2619                    function ( event, data ) {
2620                        if ( data && data.response ) {
2621                            runPixelCode( data.response );
2622                        }
2623                    }
2624                );
2625            }
2626        })();</script>
2626 
2627 
2627<script type='text/javascript'>(function ( $ ) {
2628            if ( ! $ || typeof document === 'undefined' ) {
2629                return;
2630            }
2631            // WPForms triggers this jQuery event and passes the AJAX response object.
2632            $( document ).on( 'wpformsAjaxSubmitSuccess', function ( event, data ) {
2633                if ( data && data.data && data.data.fb_pxl_code ) {
2634                    try {
2635                        new Function( data.data.fb_pxl_code )();
2636                    } catch ( e ) {
2637                        console && console.warn && console.warn( 'Meta Pixel eval failed', e );
2638                    }
2639                }
2640            } );
2641        })( window.jQuery );</script>
2641  
2641<script type="speculationrules">{"prerender":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/kadence/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prerender, .no-prerender a"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"moderate"}]}</script>
2641 <a id="kt-scroll-up" tabindex="-1" aria-hidden="true" aria-label="Scroll to top" href="#wrapper" class="kadence-scroll-to-top scroll-up-wrap scroll-ignore scroll-up-side-right scroll-up-style-filled vs-lg-true vs-md-true vs-sm-false"><span class="kadence-svg-iconset"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-up-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><title>Scroll to top</title><path d="M5.707 12.707l5.293-5.293v11.586c0 0.552 0.448 1 1 1s1-0.448 1-1v-11.586l5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-7-7c-0.092-0.092-0.202-0.166-0.324-0.217s-0.253-0.076-0.383-0.076c-0.256 0-0.512 0.098-0.707 0.293l-7 7c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0z"></path> </svg></span></a><button id="kt-scroll-up-reader" href="#wrapper" aria-label="Scroll to top" class="kadence-scroll-to-top scroll-up-wrap scroll-ignore scroll-up-side-right scroll-up-style-filled vs-lg-true vs-md-true vs-sm-false"><span class="kadence-svg-iconset"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-up-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><title>Scroll to top</title><path d="M5.707 12.707l5.293-5.293v11.586c0 0.552 0.448 1 1 1s1-0.448 1-1v-11.586l5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-7-7c-0.092-0.092-0.202-0.166-0.324-0.217s-0.253-0.076-0.383-0.076c-0.256 0-0.512 0.098-0.707 0.293l-7 7c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0z"></path> </svg></span></button>  
2641<script type='text/javascript'>document.addEventListener( 'wpcf7mailsent', function( event ) {
2642        if( "fb_pxl_code" in event.detail.apiResponse){
2643            eval(event.detail.apiResponse.fb_pxl_code);
2644        }
2645        }, false );</script>
2645 <div id="fb-pxl-ajax-code"></div><div id="mobile-drawer" class="popup-drawer popup-drawer-layout-sidepanel popup-drawer-animation-fade popup-drawer-side-right" data-drawer-target-string="#mobile-drawer"
2646><div class="drawer-overlay" data-drawer-target-string="#mobile-drawer"></div><div class="drawer-inner"><div class="drawer-header"> <button class="menu-toggle-close drawer-toggle" aria-label="Close menu"  data-toggle-target="#mobile-drawer" data-toggle-body-class="showing-popup-drawer-from-right" aria-expanded="false" data-set-focus=".menu-toggle-open"
2647> <span class="toggle-close-bar"></span> <span class="toggle-close-bar"></span> </button></div><div class="drawer-content mobile-drawer-content content-align-left content-valign-top"><div class="site-header-item site-header-focus-item site-header-item-mobile-navigation mobile-navigation-layout-stretch-false" data-section="kadence_customizer_mobile_navigation"><nav id="mobile-site-navigation" class="mobile-navigation drawer-navigation drawer-navigation-parent-toggle-false" role="navigation" aria-label="Primary Mobile"><div class="mobile-menu-container drawer-menu-container"><ul id="mobile-menu" class="menu has-collapse-sub-nav"><li id="menu-item-3054" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3054"><a href="https://ladmanstudios.com/blog/">The Journal</a></li><li id="menu-item-2568" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-2568"><a href="https://ladmanstudios.com/">Home</a></li><li id="menu-item-4740" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4740"><a href="https://ladmanstudios.com/albums/">Wedding Albums</a></li><li id="menu-item-2573" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2573"><a href="https://ladmanstudios.com/about-me/">About-Me</a></li><li id="menu-item-2569" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2569"><a href="https://ladmanstudios.com/contact/">Contact-Me</a></li><li id="menu-item-2571" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2571"><a href="https://ladmanstudios.com/testimonials/">Reviews</a></li><li id="menu-item-3298" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3298"><a href="https://ladmanstudios.com/portfolio/">The Wedding Portfolio</a></li><li id="menu-item-3300" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3300"><a href="https://ladmanstudios.com/connecticut-proposal-photographer/">Proposals</a></li><li id="menu-item-3299" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3299"><a href="https://ladmanstudios.com/top-connecticut-wedding-venues/">Top Venues</a></li><li id="menu-item-2570" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-595 current_page_item menu-item-2570"><a href="https://ladmanstudios.com/investment/" aria-current="page">Investment</a></li><li id="menu-item-6389" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6389"><a href="https://ladmanstudios.com/ct-documentary-family-photography/">Family</a></li></ul></div></nav></div></div></div></div> 
2647<script id="kadence-navigation-js-extra">var kadenceConfig = {"screenReader":{"expand":"Child menu","expandOf":"Child menu of","collapse":"Child menu","collapseOf":"Child menu of"},"breakPoints":{"desktop":"1024","tablet":768},"scrollOffset":"0"};
2648//# sourceURL=kadence-navigation-js-extra</script>
2648 
2648<script id="kadence-navigation-js" src="https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/themes/kadence/assets/js/navigation.min.js?ver=1.5.2" async></script>
2648 
2648<script id="googlesitekit-consent-mode-js" src="https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-consent-mode-755f1678e260138d789e.js"></script>
2648 
2648<script id="breeze-lazy-js" src="https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/breeze/assets/js/js-front-end/breeze-lazy-load.min.js?ver=2.6.1"></script>
2648 
2648<script id="breeze-lazy-js-after">document.addEventListener("DOMContentLoaded", function () {
2649							if ( "function" !== typeof window.LazyLoad && "function" !== typeof LazyLoad ) {
2650								return;
2651							}
2652
2653							var breezeLazyLoad = window.LazyLoad || LazyLoad;
2654
2655							window.lazyLoadInstance = new breezeLazyLoad({
2656						    elements_selector: ".br-lazy",
2657						    data_src: "breeze",
2658						    data_srcset: "brsrcset",
2659						    data_sizes: "brsizes",
2660						    class_loaded: "br-loaded",
2661						    threshold: 300,
2662								    });
2663						});
2664//# sourceURL=breeze-lazy-js-after</script>
2664 
2664<script id="kadence_share_js-js" src="https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/kadence-simple-share/assets/js/kt-social-min.js?ver=1.2.13"></script>
2664 
2664<script id="wp-consent-api-js-extra">var consent_api = {"consent_type":"","waitfor_consent_hook":"","cookie_expiration":"30","cookie_prefix":"wp_consent","services":[]};
2665//# sourceURL=wp-consent-api-js-extra</script>
2665 
2665<script id="wp-consent-api-js" src="https://spcdn.shortpixel.ai/spio/ret_auto+v_1005+q_cdnize+to_webp+s_webp/ladmanstudios.com/wp-content/plugins/wp-consent-api/assets/js/wp-consent-api.min.js?ver=2.1.0"></script>
2665 
2665<script id="optimization-detective-detect-args" type="application/json">["https://ladmanstudios.com/wp-content/plugins/optimization-detective/detect.min.js?ver=1.0.0-beta7",{"minViewportAspectRatio":0.4,"maxViewportAspectRatio":2.5,"isDebug":false,"extensionModuleUrls":["https://ladmanstudios.com/wp-content/plugins/image-prioritizer/detect.min.js?ver=1.0.0-beta4"],"restApiEndpoint":"https://ladmanstudios.com/wp-json/optimization-detective/v1/url-metrics:store","currentETag":"d89de42f27ec6cd1ee66bec78580fa50","currentUrl":"https://ladmanstudios.com/investment/","urlMetricSlug":"d4c587fc89f45bf73488ca1728df0a03","cachePurgePostId":595,"urlMetricHMAC":"1af54ede355dc925ad1e31962efe4a19","urlMetricGroupStatuses":[{"minimumViewportWidth":0,"maximumViewportWidth":480,"complete":false},{"minimumViewportWidth":480,"maximumViewportWidth":600,"complete":false},{"minimumViewportWidth":600,"maximumViewportWidth":782,"complete":false},{"minimumViewportWidth":782,"maximumViewportWidth":null,"complete":false}],"storageLockTTL":60,"freshnessTTL":604800,"webVitalsLibrarySrc":"https://ladmanstudios.com/wp-content/plugins/optimization-detective/build/web-vitals.js?ver
2665=6.1.0","gzdecodeAvailable":true,"maxUrlMetricSize":1048576}]</script>
2665 
2665<script type="module">async function load(){await new Promise(t=>{"complete"===document.readyState?t():window.addEventListener("load",()=>t(),{once:!0})}),"function"==typeof requestIdleCallback&&await new Promise(t=>{requestIdleCallback(t)});const t="script#optimization-detective-detect-args",e=document.querySelector(t);if(!(e instanceof HTMLScriptElement))throw new Error(`Missing: ${t}`);const o=JSON.parse(e.text);if(!Array.isArray(o)||2!==o.length||"string"!=typeof o[0]||"object"!=typeof o[1])throw new Error("SCRIPT#optimization-detective-detect-args is not [ string, object ]");const i=o[0],a=o[1],n=(await import(i)).default;await n(a)}load();
2666//# sourceURL=https://ladmanstudios.com/wp-content/plugins/optimization-detective/detect-loader.min.js?ver=1.0.0-beta7</script>
2666 </body></html>
2667<!-- Cache served by breeze CACHE (Desktop) - Last modified: Thu, 08 Oct 2026 09:06:58 GMT -->

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.