/* ÉCLAT – luxe bridal look: pale blush page, soft-black type, bright pink as a small accent.
   Colours follow Elementor › Site Settings › Global Colours (Ink = primary, Pink = secondary, Blush = page background).
   Motion classes (add them in Advanced › CSS Classes):
   ec-letters  big title rises letter by letter on load       ec-write   script text writes itself in
   ec-lines    title lines rise one by one (split with <br>)   ec-rv      fades up when it scrolls into view
   ec-curtain  photo hides behind a blush curtain, then drifts ec-grow    photo opens from an arch shape
   ec-mast     magazine word squeezes in                        ec-prow    pink list row (photo follows the mouse) */
:root, body {
	--ec-ink: var(--e-global-color-primary, #1F1D1E);
	--ec-pink: var(--e-global-color-secondary, #EFB2CB);
	--ec-blush: var(--e-global-color-kink, #FDEDF2);
	--ec-rose: var(--e-global-color-accent, #B0567A);
	--ec-curtain: var(--e-global-color-kcurtain, #F4C9DA);
	--ec-white: #FFFFFF;
	--ec-display: "Instrument Serif", "Didot", "Bodoni 72", serif;
	--ec-script: "Pinyon Script", cursive;
	--ec-serif: "Cormorant Garamond", Georgia, serif;
	--ec-sans: "Jost", "Helvetica Neue", Arial, sans-serif;
	--eclat-head: var(--ec-display);
	--eclat-sans: var(--ec-sans);
	--eclat-body: var(--ec-serif);
}
html, body { background-color: var(--ec-blush); }
body { color: var(--e-global-color-text, #2E2A2B); }
::selection { background: var(--ec-pink); color: var(--ec-ink); }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* ---------- Header: thin row of menu links on blush ---------- */
#masthead { position: relative !important; }
.eclat-site-header { background: var(--ec-blush); }
.ec-nav { width: 100%; }
.ec-nav .elementor-button { background: transparent !important; padding: 10px 0 !important; position: relative; }
.ec-nav .elementor-button::after { content: ""; position: absolute; left: 0; right: 0; bottom: 4px; height: 1px; background: currentColor; transform: scaleX(0); transition: transform .45s cubic-bezier(.2,.7,.1,1); }
.ec-nav .elementor-button:hover::after { transform: scaleX(1); }
.ec-burger { display: none; }
@media (max-width: 1024px) {
	.ec-nav .ec-navlink { display: none !important; }
	.ec-burger { display: block; margin-left: auto; }
	.ec-brand-m { display: block !important; }
}
.ec-brand-m { display: none !important; }

/* ---------- Buttons ---------- */
.elementor-button { transition: background-color .4s, color .4s, border-color .4s, transform .4s !important; }
.elementor-widget-button:not(.ec-navlink) .elementor-button:hover { transform: translateY(-3px); }

/* ---------- Hero: full-bleed photo that slowly zooms out on load ---------- */
.e-con.ec-hero { position: relative; overflow: hidden; isolation: isolate; }
.e-con.ec-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background-image: inherit; background-size: cover; background-position: inherit; animation: ec-hz 2.8s cubic-bezier(.2,.7,.1,1) .2s both; }
.e-con.ec-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(31,29,30,0) 45%, rgba(31,29,30,.38)); pointer-events: none; }
@keyframes ec-hz { from { transform: scale(1.16); } to { transform: scale(1); } }
.ec-hero-text { position: sticky; top: 0; }

/* ---------- Letters, script and lines ---------- */
.ec-motion .ec-letters .ec-hl { display: inline-block; opacity: 0; transform: translateY(55%); animation: ec-rise 1.1s cubic-bezier(.2,.7,.1,1) forwards; }
@keyframes ec-rise { to { opacity: 1; transform: none; } }
.ec-motion .ec-write .elementor-heading-title { clip-path: inset(-20% 100% -20% 0); transition: clip-path 2s cubic-bezier(.6,0,.2,1); }
.ec-motion .ec-write.in .elementor-heading-title { clip-path: inset(-25% -5% -25% -5%); }
.ec-lines .ec-lw { display: block; overflow: hidden; padding: .14em 0 .05em; margin-top: -.14em; }
.ec-motion .ec-lines .ec-ln { display: block; transform: translateY(105%); transition: transform 1.2s cubic-bezier(.2,.7,.1,1); }
.ec-motion .ec-lines.in .ec-ln { transform: none; }
.ec-motion .ec-rv { opacity: 0; transform: translateY(46px); transition: opacity 1s ease, transform 1.2s cubic-bezier(.2,.7,.1,1); }
.ec-motion .ec-rv.in { opacity: 1; transform: none; }
.ec-motion .ec-mast .elementor-heading-title { opacity: 0; letter-spacing: .35em; transform: translateY(30px); transition: opacity 1.2s, letter-spacing 1.6s cubic-bezier(.2,.7,.1,1), transform 1.4s cubic-bezier(.2,.7,.1,1); }
.ec-motion .ec-mast.in .elementor-heading-title { opacity: 1; letter-spacing: -.02em; transform: none; }

/* ---------- Photos: curtain, drift, arch ---------- */
.ec-curtain .elementor-widget-container, .ec-grow .elementor-widget-container, .ec-photo .elementor-widget-container { position: relative; overflow: hidden; }
.ec-curtain img, .ec-photo img { display: block; scale: 1.16; will-change: translate, scale; }
.ec-cur { position: absolute; inset: 0; z-index: 2; background: var(--ec-curtain); transform-origin: top; transition: transform 1.4s cubic-bezier(.77,0,.18,1); pointer-events: none; }
.ec-curtain.in .ec-cur { transform: scaleY(0); }
.ec-motion .ec-grow .elementor-widget-container { clip-path: inset(12% 14% 0 14% round 220px 220px 0 0); transition: clip-path 1.8s cubic-bezier(.2,.7,.1,1); }
.ec-motion .ec-grow.in .elementor-widget-container { clip-path: inset(0 0 0 0 round 0); }
.ec-onphoto { position: relative; }
.ec-onphoto > .ec-mast { position: absolute !important; left: 0; right: 0; bottom: 5%; z-index: 3; }

/* ---------- Ribbons (scrolling words) ---------- */
.ec-rib .eclat-marquee { padding: 18px 0; }
.ec-rib .eclat-marquee__item { font-family: var(--ec-display); font-weight: 400; font-size: clamp(32px, 3.6vw, 54px); text-transform: uppercase; color: inherit; }
.ec-rib .eclat-marquee__sep { font-family: var(--ec-serif); font-style: italic; font-weight: 400; font-size: clamp(30px, 3.2vw, 46px); text-transform: none; margin: 0 .6em; color: var(--ec-pink); }
.ec-rib--dark { background: var(--ec-ink); color: var(--ec-blush); }
.ec-rib--pink { background: var(--ec-pink); color: var(--ec-ink); border-top: 1px solid var(--ec-ink); border-bottom: 1px solid var(--ec-ink); }
.ec-rib--pink .eclat-marquee__sep { color: var(--ec-blush); }

/* ---------- Pink list with a photo that follows the mouse ---------- */
.e-con.ec-prow { position: relative; overflow: visible; text-decoration: none; transition: background-color .45s; cursor: pointer; }
.e-con.ec-prow:hover { background-color: #E79CBB !important; }
.ec-prow .ec-pt { transition: transform .55s cubic-bezier(.2,.7,.1,1); position: relative; z-index: 2; }
.ec-prow:hover .ec-pt { transform: translateX(24px); }
.ec-prow .ec-arrow { position: relative; z-index: 2; opacity: 0; transform: translateX(-20px); transition: opacity .4s, transform .5s; }
.ec-prow:hover .ec-arrow { opacity: 1; transform: none; }
.ec-prow .ec-fol { position: absolute !important; left: 0; top: 0; width: 190px !important; z-index: 3; pointer-events: none; opacity: 0; scale: .6; rotate: -5deg; transition: opacity .35s, scale .5s cubic-bezier(.2,.7,.1,1), translate .25s cubic-bezier(.2,.7,.1,1); }
.ec-prow .ec-fol img { width: 190px !important; height: 240px !important; object-fit: cover; box-shadow: 0 24px 50px rgba(31,29,30,.25); }
.ec-prow:hover .ec-fol { opacity: 1; scale: 1; }
.ec-motion .ec-prow { opacity: 0; transform: translateX(-60px); }
.ec-motion .ec-prow.in { opacity: 1; transform: none; transition: background-color .45s, opacity 1s, transform 1.2s cubic-bezier(.2,.7,.1,1); }
@media (max-width: 767px) { .ec-prow .ec-fol { display: none; } }

/* ---------- Places list ---------- */
.ec-places .elementor-icon-list-text { transition: color .3s, letter-spacing .4s; }
.ec-places .elementor-icon-list-item:hover .elementor-icon-list-text { color: var(--ec-rose); letter-spacing: .42em; }

/* ---------- FAQ (Elementor accordion) ---------- */
.ec-faq .elementor-accordion-item { border: 0 !important; border-bottom: 1px solid rgba(31,29,30,.2) !important; }
.ec-faq .elementor-tab-title { padding: 24px 0 !important; }
.ec-faq .elementor-tab-content { padding: 0 0 24px !important; border: 0 !important; }

/* ---------- Footer heart ---------- */
.ec-heart { position: relative; width: 140px; height: 124px; margin: 0 auto; display: grid; place-items: center; }
.ec-heart svg { position: absolute; inset: 0; }
.ec-heart span { position: relative; font-family: var(--ec-script); font-size: 40px; color: var(--ec-blush); }

/* ---------- Inner pages: title band ---------- */
.e-con.ec-pagehead { position: relative; overflow: hidden; isolation: isolate; }
.e-con.ec-pagehead::before { content: ""; position: absolute; inset: 0; z-index: -1; background-image: inherit; background-size: cover; background-position: inherit; animation: ec-hz 2.4s cubic-bezier(.2,.7,.1,1) both; }
.e-con.ec-pagehead::after { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(31,29,30,.28); }

/* Editor and reduced motion: everything visible */
.elementor-editor-active .ec-rv, .elementor-editor-active .ec-prow { opacity: 1 !important; transform: none !important; }
@media (prefers-reduced-motion: reduce) {
	.ec-motion .ec-rv, .ec-motion .ec-prow, .ec-motion .ec-mast .elementor-heading-title, .ec-motion .ec-letters .ec-hl { opacity: 1 !important; transform: none !important; animation: none !important; letter-spacing: inherit !important; }
	.ec-motion .ec-lines .ec-ln { transform: none !important; }
	.ec-motion .ec-write .elementor-heading-title, .ec-motion .ec-grow .elementor-widget-container { clip-path: none !important; }
	.ec-cur { display: none; }
	.e-con.ec-hero::before, .e-con.ec-pagehead::before { animation: none; }
}

/* Dark step list (The Brides): pink text on hover instead of a pink row */
.e-con.ec-prow--dark:hover { background-color: transparent !important; }
.ec-prow--dark:hover .ec-pt .elementor-heading-title { color: var(--ec-pink) !important; }
.ec-prow--dark .ec-pt .elementor-heading-title { transition: color .4s; }
/* Words list over a photo (The Brides) */
.ec-motion .ec-words .elementor-icon-list-item { opacity: .1; letter-spacing: .6em; transition: opacity 1s, letter-spacing 1.2s cubic-bezier(.2,.7,.1,1); }
.ec-motion .ec-words.in .elementor-icon-list-item { opacity: 1; letter-spacing: 0; }
.ec-words .elementor-icon-list-item:nth-child(2) { transition-delay: .12s !important; } .ec-words .elementor-icon-list-item:nth-child(3) { transition-delay: .24s !important; } .ec-words .elementor-icon-list-item:nth-child(4) { transition-delay: .36s !important; } .ec-words .elementor-icon-list-item:nth-child(5) { transition-delay: .48s !important; } .ec-words .elementor-icon-list-item:nth-child(6) { transition-delay: .6s !important; } .ec-words .elementor-icon-list-item:nth-child(7) { transition-delay: .72s !important; }

/* ---------- Wedding morning timeline (ÉCLAT widget) ---------- */
.ec-tl { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 40px; align-items: start; }
.ec-tl__form { display: flex; flex-direction: column; gap: 22px; }
.ec-tl__form label { display: flex; flex-direction: column; gap: 10px; }
.ec-tl__form span, .ec-tl__k { font-family: var(--ec-sans); font-size: 11px; letter-spacing: .3em; text-transform: uppercase; font-weight: 500; color: var(--ec-ink); }
.ec-tl__form input, .ec-tl__form select { font-family: var(--ec-display); font-size: 34px; color: var(--ec-ink); background: #fff; border: 1px solid #E8CDD0; border-radius: 0; padding: 12px 16px; min-height: 64px; width: 100%; box-sizing: border-box; }
.ec-tl__form input:focus, .ec-tl__form select:focus { outline: none; border-color: var(--ec-ink); }
/* timeline fields: identical boxes on every browser (iOS draws time fields wider and centred) */
.ec-tl .ec-tl__form input, .ec-tl .ec-tl__form select { -webkit-appearance: none; appearance: none; display: block; width: 100%; max-width: 100%; min-width: 0; height: 64px; min-height: 64px; margin: 0; border: 1px solid var(--ec-ink); border-radius: 0; box-sizing: border-box; text-align: left; line-height: 1; }
.ec-tl .ec-tl__form input[type=time]::-webkit-date-and-time-value { text-align: left; margin: 0; }
.ec-tl .ec-tl__form input[type=time]::-webkit-datetime-edit { padding: 0; }
.ec-tl .ec-tl__form select { padding-right: 52px; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='20' viewBox='0 0 14 20'%3E%3Cpath d='M2 7l5-5 5 5M2 13l5 5 5-5' fill='none' stroke='%231F1D1E' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 18px center; }
@media (max-width: 767px) { .ec-tl .ec-tl__form input, .ec-tl .ec-tl__form select { height: 58px; min-height: 58px; font-size: 30px; } }

.ec-tl__result { background: #fff; padding: 34px 34px 30px; }
.ec-tl__big { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; padding-bottom: 24px; border-bottom: 1px solid var(--ec-ink); }
.ec-tl__big > div { display: flex; flex-direction: column; gap: 8px; }
.ec-tl__v { font-family: var(--ec-display); font-size: clamp(34px, 3.4vw, 56px); line-height: 1; white-space: nowrap; text-transform: uppercase; color: var(--ec-ink); }
.ec-tl__list { list-style: none; margin: 18px 0 0; padding: 0; }
.ec-tl__list li { display: flex; justify-content: space-between; gap: 16px; padding: 11px 0; border-bottom: 1px solid #F2DDE3; font-family: var(--ec-serif); font-size: 18px; color: var(--ec-ink); }
.ec-tl__list li span:first-child { font-variant-numeric: tabular-nums; }
.ec-tl__list li.is-bride { font-style: italic; color: var(--ec-rose); }
.ec-tl__note { font-family: var(--ec-serif); font-style: italic; font-size: 15px; margin: 18px 0 22px; color: #6b6365; }
.ec-tl__btn { display: inline-flex; align-items: center; min-height: 48px; padding: 0 34px; background: var(--ec-pink); border: 1px solid var(--ec-ink); color: var(--ec-ink); font-family: var(--ec-sans); font-size: 12px; letter-spacing: .3em; text-transform: uppercase; font-weight: 500; text-decoration: none; transition: background .4s, color .4s; }
.ec-tl__btn:hover { background: var(--ec-ink); color: var(--ec-blush); }
@media (max-width: 767px) { .ec-tl { grid-template-columns: 1fr; } .ec-tl__result { padding: 24px 20px; } .ec-tl__list li { font-size: 16px; flex-direction: column; gap: 2px; } }

/* ---------- Booking button that stays on screen (phones only) ---------- */
.ec-sticky { display: none; }
@media (max-width: 767px) {
	.ec-sticky { display: flex; align-items: center; justify-content: center; position: fixed; left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); z-index: 90; min-height: 50px; background: var(--ec-ink); color: var(--ec-blush) !important; font-family: var(--ec-sans); font-size: 12px; letter-spacing: .3em; text-transform: uppercase; font-weight: 500; text-decoration: none; box-shadow: 0 12px 30px rgba(31,29,30,.25); transform: translateY(160%); transition: transform .5s cubic-bezier(.2,.7,.1,1); }
	body.ec-scrolled .ec-sticky { transform: none; }
	body.ec-scrolled .eclat-totop { bottom: 76px !important; }
}
.ec-tl__tip { margin: 16px 0 0; padding: 12px 16px; background: var(--ec-blush, #FDEDF2); border-left: 2px solid var(--ec-rose, #B0567A); font-family: var(--ec-serif); font-style: italic; font-size: 16px; color: var(--ec-ink); }
/* contact form – wedding details fields sit on a tidy two-column grid */
.eclat-cf__extras { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.eclat-cf__extras .eclat-cf__x { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 8px; }
.eclat-cf__extras .eclat-cf__x--half { grid-column: auto; }
.eclat-cf__extras .eclat-cf__choice-list { margin-top: 4px; }
.eclat-cf button.eclat-ui-btn { font-family: var(--ec-sans); font-size: 12px; letter-spacing: .3em; text-transform: uppercase; font-weight: 500; min-height: 52px; padding: 0 38px; }
@media (max-width: 767px) { .eclat-cf__extras { grid-template-columns: 1fr; } .eclat-cf__extras .eclat-cf__x--half { grid-column: 1 / -1; } }
/* pricing guide signup – stacked fields keep a normal height */
.eclat-su__form--stacked { height: auto !important; }
.eclat-su__form--stacked input, .eclat-su__form--stacked .eclat-ui-btn { flex: 0 0 auto !important; height: auto; min-height: 54px; }
.eclat-su__form .eclat-ui-btn { font-family: var(--ec-sans); font-size: 12px; letter-spacing: .3em; text-transform: uppercase; font-weight: 500; }
/* ---------- phone polish ---------- */
html { overflow-x: clip; }
@media (max-width: 1024px) {
	.ec-header .elementor-heading-title { white-space: nowrap; }
}
@media (max-width: 767px) {
	/* sticky button in pink so it shows on dark and light sections */
	.ec-sticky { background: var(--ec-pink, #EFB2CB); color: var(--ec-ink) !important; border: 1px solid var(--ec-ink); }
	/* the sticky button replaces the back-to-top arrow on phones */
	.eclat-totop { display: none !important; }
	/* places list: centred, even rows */
	.ec-places .elementor-icon-list-items { justify-content: center; row-gap: 12px; }
	.ec-places .elementor-icon-list-item { margin: 0 12px !important; }
	/* footer copyright line centred */
	footer .elementor-widget-heading, footer .elementor-icon-list-items { text-align: center; justify-content: center; }
}
/* light hero photo (artist portrait on a pale wall): no dark fade at the bottom */
.e-con.ec-hero--light::after { background: none; }
.e-con[id] { scroll-margin-top: 90px; }
/* Two separate moves, so they never fight:
   – the reveal zoom uses the "scale" property and runs once
   – the scroll drift uses the "translate" property and follows the scroll instantly (no delay) */
.eclat-motion .eclat-unveil img { transform: none !important; scale: 1.22; transition: scale 2s cubic-bezier(.2,.7,.2,1) var(--kd, 0s) !important; }
.eclat-motion .eclat-unveil.is-in img { scale: 1; }
.eclat-motion .eclat-unveil.ec-curtain img, .eclat-motion .eclat-unveil.ec-photo img { scale: 1.32; }
.eclat-motion .eclat-unveil.is-in.ec-curtain img, .eclat-motion .eclat-unveil.is-in.ec-photo img { scale: 1.16; }
/* big photos with a magazine word (and any photo with the class ec-still): reveal, then stay still */
.eclat-motion .ec-onphoto .eclat-unveil.is-in img, .eclat-motion .eclat-unveil.is-in.ec-still img { scale: 1; }
.ec-onphoto img, .ec-still img { translate: none !important; }
/* phones: numbered dark steps stay on one line */
@media (max-width: 767px) {
	.ec-prow--dark { flex-wrap: nowrap !important; gap: 14px !important; align-items: baseline !important; }
	.ec-prow--dark .ec-pt .elementor-heading-title { font-size: 28px !important; line-height: 1.05 !important; }
	.ec-prow--dark .ec-arrow { display: none; }
}
/* phones: portfolio as a 2-column gallery */
@media (max-width: 767px) {
	.ec-pfcol { display: grid !important; grid-template-columns: 1fr 1fr; gap: 10px !important; margin-bottom: 10px; }
	.ec-pfcol > .elementor-widget-image { margin: 0 !important; width: 100% !important; }
	.ec-pfcol .elementor-widget-image img { height: 250px !important; width: 100% !important; object-fit: cover; }
}
/* phones: footer bottom line centred */
@media (max-width: 767px) {
	footer.e-con > .e-con:last-child, footer.e-con > .e-con-inner > .e-con:last-child { justify-content: center !important; text-align: center; }
	footer .elementor-icon-list-items.elementor-inline-items { justify-content: center; }
	footer .elementor-widget-heading .elementor-heading-title { text-align: center; }
}
.ec-letters .ec-hw { display: inline-block; white-space: nowrap; }
@media (max-width: 767px) { .ec-pagehead .ec-letters .elementor-heading-title { font-size: clamp(44px, 13vw, 64px) !important; } }
/* phones: script line under page titles sits just below, no overlap */
@media (max-width: 767px) {
	.ec-pagehead .elementor-widget-heading:last-child:not(.ec-letters):not(:first-child) { margin-top: 10px !important; }
	.ec-pagehead .elementor-widget-heading:last-child:not(.ec-letters):not(:first-child) .elementor-heading-title { font-size: 46px !important; line-height: 1.1 !important; }
}
