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'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'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'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&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 & 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 » Feed" href="https://ladmanstudios.com/feed/" /><link rel="alternate" type="application/rss+xml" title="Ladman Studios » 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&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&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 — ADDITIONAL CSS · COMPLETE 25 This file IS your whole Additional CSS panel. 26 Select all in Customize → Additional CSS, delete, paste this. 27 28 Built in four layers, in this order and for this reason: 29 30 1 · FONTS one @import, and it must be the first thing 31 in the file or the browser throws it away 32 2 · YOUR CSS unchanged, verbatim. This is the structural 33 layer your blog posts depend on — grids, 34 spacing, the jump-nav columns, the carousel 35 fix. Nothing here was edited. 36 3 · 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 · THEME header, footer, archives, buttons, forms — 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 · YOUR EXISTING CSS — 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 · BLOG RESTYLE 131 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 132
133/* ============================================================ 134 LADMAN STUDIOS — 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 — 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 — 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 · 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 — 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 — lighter on dark, 7.9:1 */ 183 --ls-black: #FFFFFF; /* ← inverted: headings + link text */ 184 --ls-white: #0C0A12; /* ← 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 · 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 · BUTTONS — 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; /* ← 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 · 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 · 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 — 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 — 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 · SITE-WIDE THEME 360 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 361 362/* ============================================================ 363 LADMAN STUDIOS — GLOBAL STYLESHEET 364 v1 · site-wide restyle · 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 → Customize → Additional CSS → paste → 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 — 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 · TOKENS 392 ============================================================ */ 393 394:root{ 395 /* dark ground — 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 — 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 — 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 · 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 · HEADINGS 460 Restrained on purpose. These are the sizes for ordinary 461 pages and posts — 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 ·
490 SINGLE BLOG POSTS 491 Dark, same as the rest of the site — 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 · BLOG INDEX & ARCHIVES — 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 · 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 · HEADER & FOOTER 577 Set the wordmark in Customize → Header → Logo → 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 · 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 · 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 · 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 · 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 — 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 → 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 — 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 · 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 —
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 · RELATED POSTS + POST NAV — 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 — 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 — 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 — 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 — 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 — 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 · 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 — 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 — 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 — "halation" — 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 — 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 — 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 · 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 — 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 — 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 — 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 — 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 · 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 → 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 — leave 1219 those completely alone. */ 1220.a2a_svg, .a2a_svg svg, .heateor_sssp_svg{ fill: revert; color: revert; } 1221 1222 1223/* ============================================================ 1224 PRE-FLIGHT — 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 — 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 · 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 — 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 — 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 — 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 — no YouTube iframe loads until 1388 someone actually clicks — 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 · GALLERY ON MOBILE — 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 — 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` — 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 · 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 · The row becomes a column. `transform:none` is the line 1474 that actually kills the carousel — 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 · 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 · 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 · 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 · 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 — 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 — width x 2/3 — 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 — 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 · 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 · REVIEWS PAGE — 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 — 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 — there is no 1628 selector for "text after a <br>" — 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 — 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 — 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 — "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 — 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 · EXPERIENCE GUIDE (/experience-guide/) 1774 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1775
1776/* ============================================================ 1777 WHAT THIS IS 1778 1779 The guide already had a complete design system of its own — 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 — a token swap 1788 instead of a rebuild. 1789 1790 --m-bg #1a1614 → #08070A the site's ink 1791 --m-bg-soft #221d1a → #100D16 panels 1792 --m-text #f3efec → #D6D2DC body copy 1793 --m-muted #9a938d → #8E8898 captions, meta 1794 --m-red #e5433f → #B98CFF accent 1795 --m-serif Lora → Fraunces 1796 --m-display Anton → Anton (already correct) 1797 --m-sans Inter → 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:` — 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 — 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 · 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 · 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 — 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 · 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 — 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 · 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 — 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 · LABELS IN THE MONO VOICE ---- 1893 Kickers and captions were Inter uppercase. DM Mono is the 1894 apparatus voice everywhere else — 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 · 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 · 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 — 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 · 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 · 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 — 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 — 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) — 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 — 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 — 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 — nothing to add here. */ 2013 2014 2015/* ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2016 LAYER 8 · KADENCE BUTTONS + ACCORDIONS 2017 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2018 2019/* ============================================================ 2020 Written for the Albums page, but scoped to the BLOCK TYPES 2021 rather than to that page — 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 · 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 · 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 · KADENCE IMAGES — 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 · THE JOURNAL (/blog/) + SITE-WIDE SEARCH FIELD 2122 Ladman Studios · v3 "The Collected Edition" 2123 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2124 2125 ââ WHERE THIS GOES âââââââââââââââââââââââââââââââââââââââââ 2126 Appearance → Customize → 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` — pure white. The v3 2134 site-wide theme turns headings white. So: 2135 2136 · H1 "The Ladman Studios Journal!" #FFF on #FFF → 1:1 2137 Completely invisible. Not dim — gone. 2138 · Intro paragraph #D6D2DC on #FFF → 1.4:1 2139 · Facebook / Instagram icons #FFF on #FFF → invisible 2140 · VENUES / GUIDES / WEDDINGS #B98CFF on #FFF → 2.2:1 2141 · "SEARCH" label #8E8898 on #FFF → 3.2:1 2142 · A stray #D8D8D8 grey block behind the H1 2143 · The SEARCH button was #D62828 — 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 — 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 · hard-coded hex, no `var()` to fail if a stale cached 2163 stylesheet is missing a token 2164 · `-webkit-text-fill-color`, which overrides `color` on 2165 form fields and is the usual reason typed text vanishes 2166 · an explicit `:-webkit-autofill` block. Chrome repaints an 2167 autofilled field with its OWN colours and ignores plain 2168 `color` — 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 — they 2178 are meant to be paper. 2179 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2180 2181 2182/* ============================================================ 2183 1 · THE JOURNAL MASTHEAD — LIGHT BAND → DARK GROUND 2184 2185 â ï¸ SCOPE — 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 — same generated 2188 block id — 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 — #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 — 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 — 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 · THE SEARCH FIELD — 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 <= 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 < 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='wrapper']/*[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='wrapper']/*[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 — 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 — 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='wrapper']/*[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 · Connecticut</p><h1 class="fr fr-xl">Your Experience & 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 — 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='wrapper']/*[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 — 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 — 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 — 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 — 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 — The experiences</p><h2 class="fr fr-lg">Four experiences</h2><p class="lede" style="margin-top:1.1rem">The coverage never changes — 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 — 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 — 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 & 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 & 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='wrapper']/*[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 — 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 — 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 & Greet</h3><p>Weâll schedule a meet & 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 & 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='wrapper']/*[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 & greet on the calendar from there.</p><p class="close-meta"> <a href="tel:18603372756">860.337.2756</a> · <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='wrapper']/*[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>© 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.