/*
Theme Name:     New Life Funeral
Theme URI:      
Description:    Custom theme written for New Life Funeral, based on Hello Elementor.
Author:         merctraider
Author URI:     https://merctraider.me
Template:       hello-elementor
Version:        0.6.0
*/

/* ===================================================================
   Design Tokens
   Source of truth for spacing, radius, and shadow across the whole
   site. Every rule below references these variables instead of raw
   px/em values, so changing a number here updates the entire site
   consistently.
   =================================================================== */
:root{
	--space-1:4px;
	--space-2:8px;
	--space-3:12px;
	--space-4:16px;
	--space-5:24px;
	--space-6:32px;
	--space-7:48px;
	--space-8:64px;
	--space-9:96px;
	--space-10:128px;

	--space-account-header: 10rem;
	--radius-sm:2px;
	--radius-md:4px;
	--radius-lg:6px;
	--radius-pill:999px;
	--shadow-sm:0 1px 2px rgba(15,27,45,0.08);
	--shadow-md:0 4px 16px rgba(15,27,45,0.10);
	--shadow-lg:0 12px 32px rgba(15,27,45,0.14);
	--border-width:1px;
	--container-max:1120px;
}

/* ===================================================================
   Global Typography & Spacing System
   Overrides Elementor's atomic base classes (.e-heading-base,
   .e-paragraph-base, .e-flexbox-base) which ship with zero margin/gap
   by default. This makes every heading, paragraph, and button group
   site-wide space nicely out of the box — not just on this page.

   Values below are mapped from the approved design file's actual
   spacing rhythm onto the token scale above. Where a design value sat
   between two tokens, calc() combines two tokens to hit it exactly
   rather than introducing a new magic number:
     - eyebrow → heading gap:      14–18px in the design  → --space-4 (16px)
     - heading → paragraph gap:    20–24px in the design  → --space-5 (24px)
     - card H3 → paragraph gap:    10–14px in the design  → --space-3 (12px)
     - paragraph bottom (default): ~14–16px in the design → --space-4 (16px)
     - button/CTA row gap:         16px in the design      → --space-4 (exact)

   NOTE ON !important: Elementor's own base CSS sets "margin:0px" as a
   shorthand on headings/paragraphs and loads after this stylesheet, so
   !important is required to win that specific tie. If you ever want a
   one-off exception on a single element, add a custom CSS class to it
   in Elementor's Advanced tab and add a rule for that class further
   down in this file — rules listed later in the same file win ties.
   =================================================================== */

body a{
	color: var(--brand-accent);
}

.surface-inverse a:hover{
	color: var(--white);
}

/* Headings: consistent line-height + breathing room below every heading */
.elementor .e-heading-base {
	line-height: 1.25 !important;
	margin: 0 0 var(--space-5) 0 !important;
}

/* Eyebrow / small heading style (e.g. category labels above a main heading):
   tighter spacing so it reads as a label, not a second headline */
.elementor .small-heading.e-heading-base {
	margin: 0 0 var(--space-4) 0 !important;
}

/* Paragraphs: readable line-height + space below every paragraph */
.elementor .e-paragraph-base {
	line-height: 1.65 !important;
	margin: 0 0 var(--space-4) 0 !important;
}

/* Prevent the last text element in a stacked block from adding extra
   trailing space before whatever comes next (e.g. a button row) */
.elementor .e-div-block-base > :last-child {
	margin-bottom: 0 !important;
}

/* Flex rows (icon rows, button rows, etc. built with Elementor's shared
   flexbox base) get sensible default spacing instead of touching.
   A specific gap set in the Elementor editor for one element will still
   override this, since that CSS loads after and is more specific. */
.elementor .e-flexbox-base {
	gap: var(--space-4);
}

/* Space above a button/CTA group that follows a heading or paragraph */
.elementor .e-heading-base + .e-div-block-base,
.elementor .e-paragraph-base + .e-div-block-base {
	margin-top: var(--space-6);
}

/* Elementor's atomic e-div-block/e-con containers are flex containers under the hood
   (row or column depending on settings) even though they don't carry .e-flexbox-base.
   Using gap here instead of sibling margins means it works correctly regardless of
   flex-direction, so we don't have to guess row vs. column per-instance. */
.elementor .e-div-block-base,
.elementor .e-con {
	gap: var(--space-4);
}

/* ===================================================================
   Section & Layout Rhythm
   Utility classes matching the approved design's recurring page
   structure. Apply these as CSS classes (Elementor Advanced tab →
   CSS Classes) to any container/section widget to inherit the same
   rhythm used throughout the homepage design.
   =================================================================== */

/* Standard content section: 96px vertical, 32px horizontal padding
   (matches every section in the design except the hero and footer) */
.section-rhythm {
	padding: var(--space-9) var(--space-6) !important;
}

/* Hero section: 10rem top / 64px bottom (design's one intentional exception) */
.section-hero {
	padding: var(--space-account-header) var(--space-6) var(--space-8) !important;
}

/* Footer: 72px top / 32px bottom */
.section-footer {
	padding: calc(var(--space-8) + var(--space-2)) var(--space-6) var(--space-6) !important;
}

/* Section intro block (eyebrow + H2 + optional lead paragraph), centered,
   max-width 720px, with the exact 56px gap the design uses before
   whatever grid/content follows it */
.section-header {
	max-width: 720px;
	margin: 0 auto calc(var(--space-7) + var(--space-2)) auto !important;
	text-align: center;
}

/* Content container matching the design's max-width */
.container-rhythm {
	max-width: var(--container-max);
	margin: 0 auto;
}

/* Grid gap utilities matching each grid seen in the design:
   4-col icon grid (36px), 3-col cards (28px), 4-col packages (24px),
   2-col hero/about layout (64px) */
.grid-gap-icons  { gap: calc(var(--space-6) + var(--space-1)) !important; }
.grid-gap-cards  { gap: calc(var(--space-5) + var(--space-1)) !important; }
.grid-gap-tight  { gap: var(--space-5) !important; }
.grid-gap-split  { gap: var(--space-8) !important; }

/* Card padding + radius + shadow matching services/packages/testimonial cards */
.card-rhythm, .card-rhythm-light {
	padding: var(--space-6) !important;
	background: var(--surface-card);
	border: var(--border-width) solid var(--border-subtle);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-sm);
}

.card-rhythm .e-heading-base,
.card-rhythm .e-paragraph-base,
.card-rhythm > .elementor-widget-text-editor {
	color: var(--text-on-navy) !important;
}

/* Light card variant: white background instead of charcoal, with dark text forced
   to match — pair with .card-rhythm (e.g. class="card-rhythm card-rhythm-light").
   Base .card-rhythm still supplies padding/border/radius/shadow; this only
   overrides background + text color. */
.card-rhythm-light {
	background: var(--surface-page) !important;
	border-color: var(--border-default) !important;
}

.card-rhythm-light:hover{
	background: var(--charcoal) !important;
	cursor: pointer;
}

.card-rhythm-light .e-heading-base,
.card-rhythm-light .e-paragraph-base,
.card-rhythm-light > .elementor-widget-text-editor {
	color: var(--brand-primary) !important;
}



.card-rhythm-light:hover .e-paragraph-base,
.card-rhythm-light:hover > .elementor-widget-text-editor {
	color: var(--text-on-navy) !important;
	cursor: pointer;
}
.card-rhythm-light:hover .e-heading-base,
.card-rhythm-light:hover .eyebrow {
	color: var(--brand-accent) !important;
	text-decoration: underline;
}

.card-rhythm-light .eyebrow { color: var(--brand-accent) !important; }
.card-rhythm-light .quote-mark { color: var(--brand-accent); }



/* ===================================================================
   Color Tokens — 4-Color System
   Every color on the site now derives from exactly four brand colors.
   Downstream rules (buttons, cards, footer, surfaces) reference the
   semantic aliases below, not the four raw values directly — so the
   whole site re-themes by editing this block alone.
   =================================================================== */
:root{
	/* The only 4 brand colors */
	--dark-charcoal:#12141D;
	--charcoal:#202027;
	--background-charcoal:#20232d;
	--gold:#F8B536;

	/* Pure white — a neutral needed for readable text on a dark UI,
	   not a brand color choice. */
	--white:#ffffff;
	--sunken-white: #F3F1EB; 

	/* Semantic aliases: swap these, not the rules that use them */
	--surface-page:var(--white);
	--surface-card:var(--charcoal);
	--surface-sunken:var(--sunken-white);
	--surface-inverse:var(--dark-charcoal);

	--text-primary:var(--white);
	--text-secondary:rgba(255,255,255,.75);
	--text-muted:rgba(255,255,255,.55);
	--text-on-navy:var(--white);
	--text-on-gold:var(--dark-charcoal);

	--brand-primary:var(--dark-charcoal);
	--brand-primary-hover:var(--charcoal);
	--brand-accent:var(--gold);
	--brand-accent-hover:color-mix(in srgb, var(--gold) 85%, black);

	--border-subtle:rgba(255,255,255,.08);
	--border-default:rgba(255,255,255,.15);
	--border-gold:var(--gold);
	--focus-ring:var(--gold);

	/* Functional status colors — not brand colors, kept separate */
	--success:#4d6b4f;
	--warning:#a9812f;
	--danger:#8a3b32;
}

/* Site-wide dark background + default text color, since the whole
   site (not just accent sections) now runs on this palette. */
body {
	background: var(--surface-page) !important;
	color: var(--text-primary);
}

/* ===================================================================
   Buttons — Primary (gold) & Outline
   Matches the two hero CTA buttons: a solid gold "WhatsApp Kelvin"
   button and a transparent bordered "Call" button. Both share the same
   shape/type rhythm (padding, radius, letter-spacing) and only differ
   in fill vs outline. Works on Elementor button widgets AND plain
   links — apply as a CSS class in Elementor's Advanced tab, or use
   directly on an <a>/<button>.
   =================================================================== */
   a.elementor-button{
	padding: 25px 50px; 
   }
   
   header a.elementor-button{
	padding: 20px 40px;
   }

   


/* ===================================================================
   Layout Helpers for New Sections
   Grid layouts, image placeholders, icon circles, and the hero trust
   badge row — needed to build out the remaining homepage sections
   from the approved design.
   =================================================================== */

/* Grid layout utilities: pair with a grid-gap-* class above for spacing */
.grid-2, .grid-3, .grid-4 { display: grid !important; }
.grid-2 { grid-template-columns: repeat(2, 1fr) !important; }
.grid-3 { grid-template-columns: repeat(3, 1fr) !important; }
.grid-4 { grid-template-columns: repeat(4, 1fr) !important; }

/* Icon circle used in the "Why New Life" feature row */
.icon-circle {
	width: 56px;
	height: 56px;
	margin: 0 auto var(--space-5) auto;
	border: var(--border-width) solid var(--border-gold);
	border-radius: var(--radius-pill);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: 'Playfair Display', serif;
	font-size: 20px;
	color: var(--brand-accent);
}

/* Image placeholder blocks — swap for real photos later. Aspect ratio
   variants match the design's hero (4:3), service cards (4:3), and
   about portrait (3:4). */
.img-placeholder {
	background: var(--surface-sunken);
	border: var(--border-width) solid var(--border-subtle);
	border-radius: var(--radius-md);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--text-muted);
	font-size: 13px;
	text-align: center;
	padding: var(--space-4);
}
.img-placeholder-4-3 { aspect-ratio: 4 / 3; }
.img-placeholder-3-4 { aspect-ratio: 3 / 4; }

/* Trust-badge row under the hero CTA buttons (light labels + hairline
   divider designed to sit on a dark/inverse background) */
.trust-badges {
	display: flex !important;
	gap: var(--space-6) !important;
	flex-wrap: wrap;
	padding-top: var(--space-6) !important;
	margin-top: var(--space-6) !important;
	border-top: var(--border-width) solid rgba(255,255,255,.15) !important;
}
.trust-badges > * {
	font-family: 'Playfair Display', serif;
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--gold);
}

/* Small uppercase gold label used above section headings, package tags,
   and testimonial attributions throughout the design */
.eyebrow {
	display: block;
	color: var(--brand-accent);
	font-family: 'Playfair Display', serif;
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	margin: 0 0 var(--space-4) 0 !important;
}

/* Large decorative quote glyph used in testimonial cards */
.quote-mark {
	font-family: 'Source Serif 4', serif;
	font-style: italic;
	font-size: 28px;
	line-height: 1;
	color: var(--gold);
	margin: 0 0 var(--space-2) 0 !important;
}

/* Alternating section surfaces */
.surface-sunken { background: var(--surface-sunken) !important; }
.surface-inverse {
	background: var(--surface-inverse) !important;
}
.surface-inverse .e-heading-base,
.surface-inverse .e-paragraph-base,
.surface-inverse > .elementor-widget-text-editor {
	color: var(--text-on-navy) !important;
}
.surface-inverse .eyebrow { color: var(--gold) !important; }

/* Misc layout helpers used when assembling the design's sections */
.text-center { text-align: center !important; }
.no-pad { padding: 0 !important; }
.card-body-pad {
	padding: calc(var(--space-6) - var(--space-1)) calc(var(--space-6) - var(--space-1)) calc(var(--space-6) + var(--space-1)) !important;
}
.cta-narrow {
	max-width: 720px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

/* ===================================================================
   Responsiveness
   Elementor's atomic system only becomes responsive when a breakpoint
   variant is explicitly defined per element (normally done by picking
   a device in the editor's responsive switcher). The homepage sections
   were written directly, so none of that existed yet — these media
   queries add it back in, using the site's own configured breakpoints
   (Kit → Layout: tablet up to 1024px, mobile up to 767px).
   =================================================================== */

/* Tablet: 4-col grids drop to 2 columns */
@media (max-width: 1024px) {
	.grid-4 { grid-template-columns: repeat(2, 1fr) !important; }
	.section-rhythm,
	.section-hero {
		padding-left: var(--space-5) !important;
		padding-right: var(--space-5) !important;
	}
}

/* Mobile: everything collapses to a single column and stacks */
@media (max-width: 767px) {
	.grid-2, .grid-3, .grid-4 {
		grid-template-columns: 1fr !important;
	}

	/* Reduce large section padding so content doesn't feel over-spaced
	   on a small screen, while keeping the same proportional rhythm */
	.section-rhythm {
		padding: var(--space-7) var(--space-4) !important;
	}
	.section-hero {
		padding: var(--space-account-header) var(--space-4) var(--space-6) !important;
		
	}
	.section-footer {
		padding: var(--space-6) var(--space-4) var(--space-4) !important;
	}

	/* Hero and About columns stack instead of sitting side by side */
	.elementor-element-c673689 {
		flex-direction: column !important;
	}

	/* Section intro blocks lose their fixed max-width so they use full
	   width on small screens */
	.section-header {
		max-width: 100% !important;
	}

	/* Button rows (hero + bottom CTA) stack full-width instead of
	   squeezing two buttons into a narrow row */
	.btn-row {
		flex-direction: column !important;
		align-items: stretch !important;
	}
	.btn-row .elementor-widget-button + .elementor-widget-button {
		margin-inline-start: 0 !important;
		margin-top: var(--space-3) !important;
	}
	.btn-row .btn-gold,
	.btn-row .btn-outline {
		width: 100%;
	}

	/* Trust badges stack vertically with tighter spacing */
	.trust-badges {
		flex-direction: column !important;
		gap: var(--space-3) !important;
	}

	/* Grid gaps tighten slightly on mobile since columns are now full-width */
	.grid-gap-icons, .grid-gap-cards, .grid-gap-split {
		gap: var(--space-5) !important;
	}
}

/* ===================================================================
   Image Frame
   Decorative offset border used around the hero image in the approved
   design: a thin gold outline that floats outside the image itself
   (not touching its edges), matching an editorial "framed portrait"
   look. Apply to the image's wrapper element (not the <img> itself).
   =================================================================== */
.img-frame {
	position: relative;
}
.img-frame::before {
	content: '';
	position: absolute;
	inset: -14px;
	border: var(--border-width) solid var(--gold);
	border-radius: var(--radius-md);
	pointer-events: none;
}

/* Add site-specific / one-off custom styles below this line */

/* ===================================================================
   Site Footer (Elementor footer template #125)
   Three-column brand / quick links / contact row, hairline divider,
   then a copyright + motto bar. All layout lives here rather than in
   per-element Elementor styles so the whole footer can be retuned
   from one place.

   Vertical padding comes from the existing .section-footer utility
   above (72px top / 32px bottom) - not repeated here.

   NOTE ON !important: three separate later-loading stylesheets have to
   be beaten - (a) this file's own global .e-heading-base /
   .e-paragraph-base margin resets, (b) Elementor's atomic base CSS,
   and (c) Elementor's frontend button CSS (.elementor-button sets its
   own padding / background / radius). Each use below is one of those
   three ties, not sloppiness.
   =================================================================== */

.elementor .site-footer {
	flex-direction: column;
	gap: 0;
}

/* Elementor's atomic base (base-desktop.css) loads after this file and sets
   "padding:10px; min-width:30px" on EVERY e-div-block. Left alone that
   inflates the 1px hairline divider into a 20px bar and insets each column
   by 10px, so the footer no longer lines up with the rest of the page.
   Zeroed here at 3-class specificity, which beats the 2-class base rule. */
.elementor .site-footer .footer-cols,
.elementor .site-footer .footer-col,
.elementor .site-footer .footer-divider,
.elementor .site-footer .footer-bottom {
	padding: 0;
	min-width: 0;
}

/* --- Top column row ------------------------------------------------ */
.elementor .site-footer .footer-cols {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1.2fr;
	gap: var(--space-7);
	width: 100%;
	max-width: var(--container-max);
	margin: 0 auto;
}

.elementor .site-footer .footer-col {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-2);
}

/* Column labels reuse the site-wide .eyebrow token (gold, uppercase,
   letterspaced); only the spacing needs overriding here. */
.elementor .site-footer .footer-col-heading {
	color: var(--brand-accent) !important;
	margin: 0 0 var(--space-3) 0 !important;
}

/* --- Brand column -------------------------------------------------- */
.elementor .site-footer .footer-logo {
	margin-bottom: var(--space-4);
}
.elementor .site-footer .footer-logo img {
	width: 120px;
	height: auto;
	display: block;
}
.elementor .site-footer .footer-tagline {
	color: var(--gold);
	font-size: 15px;
	line-height: 1.7 !important;
	max-width: 320px;
	margin: 0 !important;
}

/* --- Link lists ---------------------------------------------------- */
/* Cancel the global "space out adjacent buttons" rule - in the footer
   these button widgets are stacked text links, not a button row. */
.elementor .site-footer .elementor-widget-button + .elementor-widget-button {
	margin-inline-start: 0 !important;
}

.elementor .site-footer .footer-nav-link .elementor-button,
.elementor .site-footer .footer-contact-link .elementor-button {
	display: inline-block !important;
	padding: 0 !important;
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	color: var(--white) !important;
	font-family: 'Source Serif 4', serif !important;
	font-size: 15px !important;
	line-height: 1.5 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	text-decoration: none !important;
	transition: color .2s ease;
}
.elementor .site-footer .footer-nav-link .elementor-button { font-weight: 500 !important; }
.elementor .site-footer .footer-contact-link .elementor-button { font-weight: 600 !important; }

.elementor .site-footer .footer-nav-link .elementor-button:hover,
.elementor .site-footer .footer-nav-link .elementor-button:focus-visible,
.elementor .site-footer .footer-contact-link .elementor-button:hover,
.elementor .site-footer .footer-contact-link .elementor-button:focus-visible {
	color: var(--brand-accent) !important;
}

.elementor .site-footer .footer-address {
	color: var(--text-muted);
	font-size: 14px;
	line-height: 1.6 !important;
	max-width: 240px;
	margin: var(--space-1) 0 0 0 !important;
}

/* --- Divider ------------------------------------------------------- */
.elementor .site-footer .footer-divider {
	width: 100%;
	max-width: var(--container-max);
	height: 1px;
	background: rgba(255, 255, 255, .15);
	margin: var(--space-8) auto var(--space-6) auto;
}

/* --- Copyright bar ------------------------------------------------- */
.elementor .site-footer .footer-bottom {
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--space-3);
	width: 100%;
	max-width: var(--container-max);
	margin: 0 auto;
}
.elementor .site-footer .footer-copyright {
	color: var(--text-muted);
	font-size: 13px;
	margin: 0 !important;
}
.elementor .site-footer .footer-motto {
	color: var(--brand-accent);
	font-family: 'Source Serif 4', serif;
	font-style: italic;
	font-size: 13px;
	margin: 0 !important;
}

/* --- Footer responsiveness ----------------------------------------
   Written by hand because content saved straight to _elementor_data
   has no per-breakpoint style variants. Breakpoints match the Kit
   (tablet <= 1024px, mobile <= 767px). */
@media (max-width: 1024px) {
	.elementor .site-footer .footer-cols {
		grid-template-columns: 1fr 1fr;
		column-gap: var(--space-6);
		row-gap: var(--space-7);
	}
	.elementor .site-footer .footer-brand {
		grid-column: 1 / -1;
	}
}

@media (max-width: 767px) {
	.elementor .site-footer .footer-cols {
		grid-template-columns: 1fr;
		gap: var(--space-6);
	}
	.elementor .site-footer .footer-tagline,
	.elementor .site-footer .footer-address {
		max-width: 100%;
	}
	.elementor .site-footer .footer-divider {
		margin: var(--space-6) auto var(--space-5) auto;
	}
	.elementor .site-footer .footer-bottom {
		flex-direction: column;
		align-items: flex-start;
		gap: var(--space-2);
	}
}

/** ===================================================================
   Post Content Styling
   Overrides the default spacing of Gutenberg blocks inside the
   Elementor "Post Content" widget, so that posts and pages built
   with Gutenberg match the same spacing rhythm as the rest of the site.
   =================================================================== */


/* Paragraphs */
.elementor-widget-theme-post-content .wp-block-paragraph {
	margin: 0 0 var(--space-5) 0;
}

/* Headings */
.elementor-widget-theme-post-content .wp-block-heading {
	margin: var(--space-8) 0 var(--space-4) 0;
}
.elementor-widget-theme-post-content h2.wp-block-heading {
	padding-bottom: var(--space-3);
}
.elementor-widget-theme-post-content > .wp-block-heading:first-child,
.elementor-widget-theme-post-content > p:first-child + .wp-block-heading {
	margin-top: 0;
}

/* Lists */
.elementor-widget-theme-post-content p + .wp-block-list {
	margin-bottom: var(--space-5);
}

/* Images / figures */
.elementor-widget-theme-post-content figure.wp-block-image {
	margin: var(--space-7) 0;
}
.elementor-widget-theme-post-content figure.wp-block-image figcaption {
	margin-top: var(--space-2);
}

.elementor-widget-theme-post-content a{
	color: var(--brand-accent);
}


/* Mobile override */
@media (max-width: 767px) {
	.elementor-widget-theme-post-content h2.wp-block-heading {
		margin-top: var(--space-7);
	}

	.elementor-widget-theme-post-content figure.wp-block-image {
		margin: var(--space-5) 0;
	}
}