/*!
  Template:  Belloria | Wedding Planner & Venue HTML Template
  Version:   1.0.0
  Author:    MOONSHOTS
  Website:   https://m00nshots.dev
  Contact:   build@m00nshots.dev
  Copyright: (c) 2026 m00nshots. All rights reserved.
*/
/* ==========================================================================
   BELLORIA THEME — Wedding Planner & Venue
   Design language: romantic stationery. Ivory paper, mauve plum ink, petal
   peach washes and olive-gold foil lines. Invitation cards with double rules
   and corner flourishes, rounded-arch / oval / circle photo masks, Great Vibes
   script accents, botanical line dividers, centred symmetrical compositions
   and soft double-outline pill buttons.
   --------------------------------------------------------------------------
   01. Tokens (light / dark)          10. Budget planner (signature)
   02. Base, typography, ornaments    11. Checklist timeline (signature)
   03. Buttons & links                12. Package builder (signature)
   04. Header & drawer                13. Home heroes (4 variations)
   05. Invitation card & corners      14. Home sections
   06. Photo masks                    15. Real weddings, letters, CTA
   07. Restyled core sections         16. Inner pages
   08. Forms & pills                  17. Footer & 404
   09. Save-the-date & countdown
   ========================================================================== */

/* 01. Tokens ------------------------------------------------------------- */
:root {
  --plum: #6e3f58; --plum-d: #4a2539; --peach: #f6d9c9; --ivory: #fffaf4; --gold: #a88b4a; --gold-ink: #8a6f33;
  --bg: #fffaf4; --bg-2: #fbf0e8; --bg-peach: #fbe6da; --surface: #ffffff; --surface-2: #f8e7dd;
  --text: #3b2230; --muted: #7a6070; --line: rgba(110, 63, 88, .16);
  --ink: #3b2230; --ink-muted: #7a6070;
  --foil: rgba(168, 139, 74, .7); --foil-2: rgba(168, 139, 74, .38);
  --primary: #6e3f58; --primary-2: #a88b4a; --accent: #f6d9c9; --on-primary: #fffaf4;
  --script: #8a6f33;
  --font-head: "Prata", Georgia, serif; --font-body: "Raleway", system-ui, sans-serif;
  --font-logo: "Great Vibes", "Brush Script MT", cursive; --logo-weight: 400; --logo-size: 2.15rem; --logo-tracking: 0;
  --head-weight: 400; --head-tracking: 0;
  --radius-sm: 10px; --radius: 20px; --radius-lg: 28px; --radius-btn: 999px;
  --gradient: linear-gradient(135deg, #6e3f58, #a88b4a);
  --shadow: 0 26px 50px -32px rgba(74, 37, 57, .45);
  --shadow-lg: 0 44px 90px -40px rgba(74, 37, 57, .5);
  --header-h: 86px;
  --paper: #fffaf4;
}
[data-theme="dark"] {
  --bg: #1c1117; --bg-2: #24161e; --bg-peach: #2a1922; --surface: #2b1b24; --surface-2: #36222e;
  --text: #f8ece4; --muted: #c6aebb; --line: rgba(246, 217, 201, .14);
  --ink: #f8ece4; --ink-muted: #c6aebb;
  --foil: rgba(207, 177, 115, .6); --foil-2: rgba(207, 177, 115, .3);
  --primary: #f6d9c9; --on-primary: #2b1320; --gold: #cfb173; --gold-ink: #d9bd83; --script: #e2c58a;
  --shadow: 0 26px 50px -30px rgba(0, 0, 0, .8); --shadow-lg: 0 44px 90px -40px rgba(0, 0, 0, .85);
}

/* 02. Base, typography, ornaments --------------------------------------- */
body { font-size: 16.5px; letter-spacing: .01em; }
h1, h2, h3, h4 { text-wrap: balance; }
.h2 { font-size: clamp(2rem, 4vw, 3.3rem); line-height: 1.12; }
.h3 { font-size: clamp(1.35rem, 2vw, 1.7rem); }
.h2 em, .hero__title em, .page-header h1 em, .bl-hero4__big em {
  font-family: var(--font-logo); font-style: normal; font-weight: 400; color: var(--script);
  font-size: 1.32em; line-height: .8; letter-spacing: 0; padding-inline: .04em;
}
.lead { color: var(--muted); }
::selection { background: var(--peach); color: #3b2230; }
.section { isolation: isolate; }
.section--alt { background: var(--bg-2); }
.bl-sec--peach { background: var(--bg-peach); }
.eyebrow, .bl-mini {
  font-family: var(--font-body); font-size: .7rem; font-weight: 600; letter-spacing: .28em; text-transform: uppercase; color: var(--gold-ink);
}
.eyebrow { gap: 14px; margin-bottom: 18px; }
.eyebrow::before, .section-head--center .eyebrow::after { content: ""; width: 7px; height: 7px; border-radius: 0; background: transparent; border: 1px solid var(--gold); transform: rotate(45deg); }
.bl-mini { display: block; }
.section-head { margin-bottom: clamp(40px, 5vw, 64px); }
.section-head .h2 { margin-bottom: .3em; }
.bl-head--row { align-items: end; }
.bl-sprig { display: block; width: 190px; max-width: 70%; height: auto; margin: 8px auto 18px; color: var(--gold); overflow: visible; }
.bl-sprig path, .bl-sprig ellipse { fill: none; stroke: currentColor; stroke-width: 1; stroke-linecap: round; stroke-linejoin: round; }
.bl-sprig .f { fill: currentColor; stroke: none; }
.bl-script { font-family: var(--font-logo); font-weight: 400; color: var(--script); }
.bl-center { justify-content: center; }
.chip { background: var(--surface-2); }
.card { border-radius: var(--radius); background: var(--surface); }
.card:hover { transform: none; border-color: var(--foil); }
.icon-box { border-radius: 50%; background: transparent; border: 1px solid var(--foil); color: var(--primary); }
:focus-visible { outline-color: var(--gold); }

/* 03. Buttons & links ---------------------------------------------------- */
.btn {
  min-height: 52px; padding: 15px 30px; gap: 10px; font-size: .74rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase;
  box-shadow: inset 0 0 0 3px var(--btn-bg), inset 0 0 0 4px color-mix(in srgb, var(--btn-fg) 45%, transparent);
}
.btn::after { background: rgba(255, 250, 244, .12); }
.btn:hover { box-shadow: inset 0 0 0 3px var(--btn-bg), inset 0 0 0 4px color-mix(in srgb, var(--btn-fg) 70%, transparent), 0 16px 30px -18px rgba(74, 37, 57, .6); }
.btn .ti { font-size: 1.05rem; }
.btn--gradient { background: var(--btn-bg); }
.btn--ghost { --btn-bg: transparent; --btn-fg: var(--text); border-color: color-mix(in srgb, var(--text) 55%, transparent); box-shadow: inset 0 0 0 3px transparent, inset 0 0 0 4px var(--foil-2); }
.btn--ghost::after { background: color-mix(in srgb, var(--peach) 40%, transparent); }
[data-theme="dark"] .btn--ghost::after { background: rgba(246, 217, 201, .07); }
.btn--ghost:hover { box-shadow: inset 0 0 0 3px transparent, inset 0 0 0 4px var(--foil); }
.btn--sm { min-height: 44px; padding: 11px 22px; }
.btn--lg { min-height: 60px; padding: 18px 36px; }
.btn--light { --btn-bg: var(--ivory); --btn-fg: #3b2230; }
.bl-link, .link-arrow {
  position: relative; display: inline-flex; align-items: center; gap: 8px; padding-bottom: 5px;
  font-size: .7rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: var(--text);
}
.bl-link::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; border-block: 1px solid var(--gold); transition: transform .5s var(--ease); transform-origin: left; }
.bl-link:hover::after { transform: scaleX(.4); }
.bl-link .ti { transition: transform .4s var(--ease); }
.bl-link:hover .ti { transform: translateX(4px); }

/* 04. Header & drawer ---------------------------------------------------- */
.site-header.is-scrolled { height: 70px; background: color-mix(in srgb, var(--bg) 92%, transparent); box-shadow: none; border-bottom: 3px double var(--foil-2); }
.logo { gap: 10px; padding-top: 4px; }
.logo__mark { width: 34px; height: 34px; border-radius: 50%; background: transparent; border: 1px solid var(--gold); color: var(--gold); font-size: .95rem; box-shadow: inset 0 0 0 3px var(--bg), inset 0 0 0 4px var(--foil-2); }
.site-header--light:not(.is-scrolled) .logo__mark { color: #fff; border-color: rgba(255,255,255,.7); box-shadow: none; }
.icon-btn { border-color: var(--foil-2); }
@media (min-width: 1024px) {
  .nav__menu { padding: 4px 8px; border: 1px solid var(--foil-2); border-radius: 999px; box-shadow: inset 0 0 0 3px transparent, inset 0 0 0 4px var(--foil-2); background: color-mix(in srgb, var(--bg) 55%, transparent); }
  .site-header--light:not(.is-scrolled) .nav__menu { background: rgba(28, 17, 23, .18); border-color: rgba(255,255,255,.35); box-shadow: none; backdrop-filter: blur(6px); }
  .nav__menu > li + li::before { content: ""; position: absolute; left: -3px; top: 50%; width: 5px; height: 5px; margin-top: -2.5px; transform: rotate(45deg); background: var(--gold); opacity: .7; }
}
.nav__link { padding: 10px 16px; font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; border-radius: 999px; }
.nav__link:hover, .nav__link.is-active { color: var(--primary); background: color-mix(in srgb, var(--peach) 45%, transparent); }
[data-theme="dark"] .nav__link:hover, [data-theme="dark"] .nav__link.is-active { background: rgba(246, 217, 201, .08); }
.site-header--light:not(.is-scrolled) .nav__link.is-active { color: #fff; background: rgba(255,255,255,.14); }
@media (min-width: 1024px) and (max-width: 1279px) { .nav__link { padding: 10px 11px; letter-spacing: .12em; } }
.dropdown { border-radius: 18px; border-color: var(--foil-2); padding: 10px; }
.dropdown a { border-radius: 999px; font-size: .9rem; }
.dropdown a:hover { background: color-mix(in srgb, var(--peach) 55%, transparent); color: var(--plum); }
[data-theme="dark"] .dropdown a:hover { background: rgba(246, 217, 201, .08); color: var(--text); }
.bl-hbtn { --btn-bg: transparent; --btn-fg: var(--text); border-color: color-mix(in srgb, var(--text) 50%, transparent); }
.site-header--light:not(.is-scrolled) .bl-hbtn { --btn-fg: #fff; border-color: rgba(255,255,255,.6); }
.drawer__panel { background: var(--bg); border-left: 3px double var(--foil-2); }
.drawer__nav a { font-family: var(--font-head); font-size: 1.2rem; font-weight: 400; }
.drawer__nav .sub { font-family: var(--font-body); font-size: .95rem; }
@media (max-width: 767px) { .logo { --logo-size: 1.85rem; } }

/* 05. Invitation card & corners ----------------------------------------- */
.bl-inv {
  position: relative; isolation: isolate; text-align: center; background: var(--surface); color: var(--text);
  border: 1px solid var(--foil); padding: clamp(48px, 6vw, 76px) clamp(26px, 5vw, 64px); box-shadow: var(--shadow);
}
.bl-inv::before { content: ""; position: absolute; inset: 7px; border: 1px solid var(--foil-2); pointer-events: none; z-index: -1; }
.bl-inv__in { position: relative; min-width: 0; }
.bl-corner { position: absolute; width: 42px; height: 42px; color: var(--gold); pointer-events: none; }
.bl-corner svg { width: 100%; height: 100%; overflow: visible; }
.bl-corner path { fill: none; stroke: currentColor; stroke-width: 1.2; stroke-linecap: round; }
.bl-corner .f { fill: currentColor; stroke: none; }
.bl-corner--tl { top: 14px; left: 14px; }
.bl-corner--tr { top: 14px; right: 14px; transform: scaleX(-1); }
.bl-corner--bl { bottom: 14px; left: 14px; transform: scaleY(-1); }
.bl-corner--br { bottom: 14px; right: 14px; transform: scale(-1); }
.bl-inv--plain { text-align: left; padding: clamp(40px, 4vw, 52px) clamp(22px, 3vw, 36px); }
.bl-inv--plain .bl-corner { width: 30px; height: 30px; }
.bl-inv--plain .bl-sprig { margin-left: 0; }
.bl-std__kicker { margin: 0 0 14px; font-size: .68rem; font-weight: 700; letter-spacing: .32em; text-transform: uppercase; color: var(--gold-ink); }

/* 06. Photo masks -------------------------------------------------------- */
.bl-mask { position: relative; display: block; }
.bl-mask img { position: relative; z-index: 1; width: 100%; display: block; transition: transform 1.2s var(--ease); }
.bl-mask::after { content: ""; position: absolute; inset: -9px; border: 1px solid var(--foil); pointer-events: none; transition: inset .7s var(--ease); }
.bl-mask--arch img, .bl-mask--arch::after { border-radius: 1000px 1000px 6px 6px; }
.bl-mask--oval img, .bl-mask--oval::after { border-radius: 50%; }
.bl-mask--circle img { aspect-ratio: 1; border-radius: 50%; }
.bl-mask--circle::after { border-radius: 50%; }
.bl-mask--wide img, .bl-mask--wide::after { border-radius: 50% 50% 14px 14px / 42% 42% 14px 14px; }
.bl-mask--soft img, .bl-mask--soft::after { border-radius: 180px 180px 18px 18px; }
.bl-mask:hover::after { inset: -13px; }
.bl-mask--arch, .bl-mask--soft, .bl-mask--wide { overflow: visible; }

/* 07. Restyled core sections -------------------------------------------- */
.stat__num { font-family: var(--font-head); font-weight: 400; letter-spacing: 0; color: var(--primary); }
.stat__label { font-size: .7rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; }
.stats--bordered .stat { border-left-color: var(--foil-2); }
.process { gap: 24px; }
.step { text-align: center; padding: 48px 26px 32px; border-color: var(--foil-2); border-radius: 200px 200px 18px 18px / 110px 110px 18px 18px; background: var(--surface); }
.step__num { display: block; padding: 0; background: none; color: var(--script); font-family: var(--font-logo); font-size: 2.6rem; font-weight: 400; line-height: 1; }
.step h3 { font-weight: 400; margin-top: 14px; }
.accordion { border-top: 3px double var(--foil-2); }
.accordion__item { border-bottom-color: var(--foil-2); }
.accordion__btn { font-weight: 400; line-height: 1.35; }
.accordion__icon { border-color: var(--foil); color: var(--gold-ink); }
.accordion__item.is-open .accordion__icon { background: var(--primary); color: var(--on-primary); }
.tabs__btn { border-color: var(--foil-2); font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; }
.tabs__btn.is-active, .tabs__btn:hover { background: var(--primary); border-color: var(--primary); color: var(--on-primary); box-shadow: inset 0 0 0 3px var(--primary), inset 0 0 0 4px color-mix(in srgb, var(--on-primary) 45%, transparent); }

/* 08. Forms & pills ------------------------------------------------------ */
.input, .select, .textarea { border-radius: 12px; border-color: var(--line); background: var(--surface); }
.input:focus, .select:focus, .textarea:focus { border-color: var(--gold); box-shadow: 0 0 0 4px rgba(168, 139, 74, .2); }
.field label, .field legend { display: block; margin-bottom: 8px; padding: 0; font-size: .7rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.form-success { color: #4d5a2b; background: rgba(168, 139, 74, .16); }
[data-theme="dark"] .form-success { color: #e2c58a; }
.newsletter { border-color: var(--foil-2); }
.newsletter .btn { box-shadow: none; }
.bl-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.bl-pill { position: relative; }
.bl-pill input, .bl-tier input, .bl-pkg input, .bl-add input, .bl-task input, .bl-accept input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.bl-pill span { display: inline-flex; align-items: center; min-height: 42px; padding: 0 18px; border: 1px solid var(--line); border-radius: 999px; font-size: .86rem; font-weight: 500; cursor: pointer; transition: all .3s; }
.bl-pill span:hover { border-color: var(--foil); }
.bl-pill input:checked + span { background: var(--primary); border-color: var(--primary); color: var(--on-primary); }
.bl-pill input:focus-visible + span, .bl-tier input:focus-visible + span, .bl-pkg input:focus-visible + .bl-pkg__box, .bl-add input:focus-visible + .bl-add__box, .bl-task input:focus-visible + .bl-task__box, .bl-accept input:focus-visible + span { outline: 2px solid var(--gold); outline-offset: 3px; }
.bl-filters { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-bottom: 48px; }
.bl-filter { min-height: 42px; padding: 0 20px; border: 1px solid var(--line); border-radius: 999px; font-size: .7rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); transition: all .3s; }
.bl-filter:hover { border-color: var(--foil); color: var(--text); }
.bl-filter.is-active { background: var(--primary); border-color: var(--primary); color: var(--on-primary); }
.bl-empty { text-align: center; color: var(--muted); }

/* 09. Save-the-date & countdown (signature) ------------------------------ */
.bl-std { display: grid; gap: 64px; align-items: center; }
@media (min-width: 1024px) { .bl-std { grid-template-columns: 1fr 1fr; gap: 72px; } }
.bl-std__vis { position: relative; max-width: 560px; width: 100%; margin-inline: auto; padding-bottom: 14%; }
.bl-std__photo { width: 68%; }
.bl-std__card { position: absolute; z-index: 2; right: 0; bottom: 0; width: 64%; padding: 40px 18px 34px; transform: rotate(2.5deg); }
.bl-std__card .bl-corner { width: 28px; height: 28px; top: 12px; }
.bl-std__card .bl-corner--bl, .bl-std__card .bl-corner--br { top: auto; bottom: 12px; }
.bl-std__names { margin: 0; font-family: var(--font-logo); font-size: clamp(2rem, 4.6vw, 3rem); line-height: 1.05; color: var(--primary); }
.bl-std__names span { color: var(--script); }
.bl-std__card .bl-sprig { width: 120px; margin: 4px auto 10px; }
.bl-std__date { margin: 0 0 4px; font-family: var(--font-head); font-size: clamp(.95rem, 1.6vw, 1.1rem); }
.bl-std__place { margin: 0 0 12px; font-size: .78rem; color: var(--muted); }
.bl-std__note { margin: 0; font-size: .62rem; font-weight: 600; letter-spacing: .24em; text-transform: uppercase; color: var(--gold-ink); }
.bl-std__txt { min-width: 0; }
.bl-cd { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(8px, 1.6vw, 16px); margin: 32px 0 18px; max-width: 520px; }
.bl-cd__unit { position: relative; display: flex; flex-direction: column; align-items: center; padding: 22px 4px 14px; background: var(--surface); border: 1px solid var(--foil); border-radius: 999px 999px 10px 10px; }
.bl-cd__unit::before { content: ""; position: absolute; inset: 4px; border: 1px solid var(--foil-2); border-radius: inherit; pointer-events: none; }
.bl-cd__num { font-family: var(--font-head); font-size: clamp(1.6rem, 3.6vw, 2.7rem); line-height: 1.1; color: var(--primary); font-variant-numeric: tabular-nums; }
.bl-cd__lbl { font-size: .58rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.bl-cd__to { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 28px; color: var(--muted); font-size: .92rem; }
.bl-cd__to .ti { color: var(--gold); font-size: 1.15rem; }
.bl-cd__to b { color: var(--text); font-weight: 600; }

/* 10. Budget planner (signature) ---------------------------------------- */
.bl-budget { display: grid; gap: 48px; align-items: start; }
@media (min-width: 1024px) { .bl-budget { grid-template-columns: .9fr 1.1fr; gap: 64px; } }
.bl-budget__controls { display: grid; gap: 30px; min-width: 0; }
.bl-field { border: 0; margin: 0; padding: 0; min-width: 0; }
.bl-field__lbl { display: flex; justify-content: space-between; align-items: baseline; width: 100%; padding: 0; margin-bottom: 14px; font-size: .7rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.bl-field__lbl output { font-family: var(--font-head); font-size: 2rem; letter-spacing: 0; color: var(--primary); text-transform: none; line-height: 1; }
.bl-range { -webkit-appearance: none; appearance: none; width: 100%; height: 6px; border-radius: 6px; background: linear-gradient(90deg, var(--primary) 0 var(--p, 36%), var(--surface-2) var(--p, 36%)); outline-offset: 8px; }
.bl-range::-webkit-slider-thumb { -webkit-appearance: none; width: 26px; height: 26px; border-radius: 50%; background: var(--primary); border: 4px solid var(--bg); box-shadow: 0 0 0 1px var(--gold); cursor: grab; }
.bl-range::-moz-range-thumb { width: 18px; height: 18px; border-radius: 50%; background: var(--primary); border: 4px solid var(--bg); box-shadow: 0 0 0 1px var(--gold); cursor: grab; }
.bl-range__scale { display: flex; justify-content: space-between; margin-top: 10px; font-size: .72rem; color: var(--muted); }
.bl-tiers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.bl-tier { position: relative; }
.bl-tier span { display: flex; flex-direction: column; align-items: center; height: 100%; padding: 20px 8px 16px; text-align: center; border: 1px solid var(--line); border-radius: 120px 120px 14px 14px; background: var(--surface); cursor: pointer; transition: all .3s; }
.bl-tier b { font-family: var(--font-head); font-weight: 400; font-size: 1.15rem; }
.bl-tier small { font-size: .74rem; color: var(--muted); line-height: 1.3; }
.bl-tier span:hover { border-color: var(--foil); }
.bl-tier input:checked + span { border-color: var(--primary); background: color-mix(in srgb, var(--peach) 50%, var(--surface)); box-shadow: inset 0 0 0 3px var(--surface), inset 0 0 0 4px var(--foil); }
[data-theme="dark"] .bl-tier input:checked + span { background: #3a2431; }
.bl-budget__note { display: flex; gap: 8px; align-items: flex-start; margin: 0; font-size: .85rem; color: var(--muted); }
.bl-budget__note .ti { color: var(--gold); margin-top: 3px; }
.bl-budget__out { min-width: 0; }
.bl-budget__total { text-align: center; padding-bottom: 20px; margin-bottom: 8px; border-bottom: 3px double var(--foil-2); }
.bl-budget__total b { display: block; font-family: var(--font-head); font-weight: 400; font-size: clamp(2.4rem, 5vw, 3.6rem); line-height: 1.1; color: var(--primary); }
.bl-budget__pg { font-size: .85rem; color: var(--muted); }
.bl-bars { margin-bottom: 24px; }
.bl-bar { padding: 12px 0; }
.bl-bar__top { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; font-size: .92rem; }
.bl-bar__top .ti { color: var(--gold); font-size: 1.1rem; }
.bl-bar__lbl { flex: 1; min-width: 0; }
.bl-bar__pct { font-size: .72rem; font-weight: 600; color: var(--muted); }
.bl-bar__amt { min-width: 76px; text-align: right; font-family: var(--font-head); font-weight: 400; }
.bl-bar__track { height: 8px; border-radius: 8px; background: var(--surface-2); overflow: hidden; }
.bl-bar__track i { display: block; height: 100%; width: 0; border-radius: inherit; background: linear-gradient(90deg, var(--plum), #a0607f); transition: width .9s var(--ease); }
[data-theme="dark"] .bl-bar__track i { background: linear-gradient(90deg, #c98aa8, var(--peach)); }
.bl-bar.is-hl .bl-bar__lbl { font-weight: 700; }
.bl-bar.is-hl .bl-bar__track i { background: linear-gradient(90deg, var(--gold), #d4b577); }
.bl-bar.is-hl { position: relative; }
.bl-bar.is-hl::before { content: ""; position: absolute; inset: 2px -14px; z-index: -1; border-radius: 12px; background: color-mix(in srgb, var(--peach) 45%, transparent); }
[data-theme="dark"] .bl-bar.is-hl::before { background: rgba(207, 177, 115, .1); }
.bl-bar--muted .bl-bar__track i { background: repeating-linear-gradient(45deg, var(--foil) 0 4px, transparent 4px 8px); }

/* 11. Checklist timeline (signature) ------------------------------------ */
.bl-check__bar { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 28px; max-width: 820px; margin: 0 auto 56px; padding: 18px 28px; border: 1px solid var(--foil-2); border-radius: 999px; background: var(--surface); box-shadow: inset 0 0 0 4px var(--surface), inset 0 0 0 5px var(--foil-2); }
.bl-check__prog b { font-family: var(--font-head); font-weight: 400; font-size: 1.2rem; }
.bl-check__track { flex: 1 1 200px; height: 8px; border-radius: 8px; background: var(--surface-2); overflow: hidden; }
.bl-check__track i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--gold), var(--primary)); border-radius: inherit; transition: width .7s var(--ease); }
.bl-check__bar .bl-link::after { display: none; }
.bl-tl { position: relative; display: grid; gap: 28px; list-style: none; padding: 0; margin: 0; }
.bl-tl::before { content: ""; position: absolute; top: 0; bottom: 0; left: 21px; width: 3px; border-inline: 1px solid var(--foil-2); }
.bl-tl__group { position: relative; padding-left: 64px; min-width: 0; }
.bl-tl__node { position: absolute; left: 0; top: 22px; z-index: 1; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--foil); background: var(--bg); color: var(--foil-2); font-size: 1rem; transition: all .4s var(--ease); }
.section--alt .bl-tl__node { background: var(--bg-2); }
.bl-tl__group.is-started .bl-tl__node { color: var(--gold); border-color: var(--gold); }
.bl-tl__group.is-done .bl-tl__node { background: var(--primary); border-color: var(--primary); color: var(--on-primary); box-shadow: 0 0 0 5px color-mix(in srgb, var(--primary) 15%, transparent); }
.bl-tl__card { padding: 26px 26px 20px; border: 1px solid var(--line); border-radius: 22px; background: var(--surface); transition: border-color .4s; }
.bl-tl__group.is-done .bl-tl__card { border-color: var(--foil); }
.bl-tl__when { margin: 0; font-family: var(--font-logo); font-size: 1.9rem; line-height: 1.1; color: var(--script); }
.bl-tl__card h3 { font-size: 1.25rem; margin: 2px 0 12px; }
.bl-tl__tasks li { border-top: 1px dotted var(--line); }
.bl-task { display: flex; align-items: flex-start; gap: 12px; padding: 10px 0; cursor: pointer; font-size: .95rem; }
.bl-task__box { flex: none; display: grid; place-items: center; width: 22px; height: 22px; margin-top: 1px; border: 1px solid var(--gold); border-radius: 50%; color: transparent; font-size: .8rem; transition: all .3s; }
.bl-task input:checked + .bl-task__box { background: var(--primary); border-color: var(--primary); color: var(--on-primary); }
.bl-task input:checked ~ .bl-task__txt { color: var(--muted); text-decoration: line-through; text-decoration-color: var(--gold); }
.bl-tl__count { margin: 10px 0 0; font-size: .68rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
@media (min-width: 1024px) {
  .bl-tl { grid-template-columns: 1fr 1fr; column-gap: 112px; row-gap: 0; }
  .bl-tl::before { left: 50%; margin-left: -1.5px; }
  .bl-tl__group { padding-left: 0; padding-bottom: 28px; }
  .bl-tl__group:nth-child(odd) { grid-column: 1; }
  .bl-tl__group:nth-child(even) { grid-column: 2; }
  .bl-tl__group:nth-child(1) { grid-row: 1 / span 2; } .bl-tl__group:nth-child(2) { grid-row: 2 / span 2; }
  .bl-tl__group:nth-child(3) { grid-row: 3 / span 2; } .bl-tl__group:nth-child(4) { grid-row: 4 / span 2; }
  .bl-tl__group:nth-child(5) { grid-row: 5 / span 2; } .bl-tl__group:nth-child(6) { grid-row: 6 / span 2; }
  .bl-tl__group:nth-child(7) { grid-row: 7 / span 2; } .bl-tl__group:nth-child(8) { grid-row: 8 / span 2; }
  .bl-tl__group:nth-child(odd) .bl-tl__node { left: auto; right: -78px; }
  .bl-tl__group:nth-child(even) .bl-tl__node { left: -78px; }
  .bl-tl__group:nth-child(odd) .bl-tl__card { text-align: right; }
  .bl-tl__group:nth-child(odd) .bl-task { flex-direction: row-reverse; }
}

/* 12. Package builder (signature) --------------------------------------- */
.bl-pkgs { display: grid; gap: 20px; border: 0; margin: 0 0 48px; padding: 0; min-width: 0; }
@media (min-width: 768px) { .bl-pkgs { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.bl-pkg { position: relative; display: block; min-width: 0; }
.bl-pkg__box { position: relative; display: flex; flex-direction: column; align-items: center; height: 100%; padding: 52px 24px 26px; text-align: center; background: var(--surface); border: 1px solid var(--line); border-radius: 240px 240px 18px 18px / 130px 130px 18px 18px; cursor: pointer; transition: border-color .35s, box-shadow .35s, transform .5s var(--ease); }
.bl-pkg__box:hover { border-color: var(--foil); transform: translateY(-4px); }
.bl-pkg input:checked + .bl-pkg__box { border-color: var(--primary); box-shadow: inset 0 0 0 5px var(--surface), inset 0 0 0 6px var(--foil), var(--shadow); }
.bl-pkg__tag { font-size: .64rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: var(--gold-ink); }
.bl-pkg__name { margin-top: 10px; font-family: var(--font-head); font-weight: 400; font-size: clamp(1.35rem, 2vw, 1.7rem); }
.bl-pkg__price { margin: 6px 0 12px; font-family: var(--font-head); font-size: clamp(1.9rem, 3vw, 2.5rem); color: var(--primary); line-height: 1.1; }
.bl-pkg__price small { font-family: var(--font-logo); font-size: 1.4rem; color: var(--script); }
.bl-pkg__desc { font-size: .92rem; color: var(--muted); margin-bottom: 20px; }
.bl-pkg__pick { margin-top: auto; display: inline-flex; align-items: center; gap: 6px; min-height: 38px; padding: 0 18px; border: 1px solid var(--line); border-radius: 999px; font-size: .66rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; }
.bl-pkg__pick .ti, .bl-pkg__pick em { display: none; font-style: normal; }
.bl-pkg input:checked + .bl-pkg__box .bl-pkg__pick { background: var(--primary); border-color: var(--primary); color: var(--on-primary); }
.bl-pkg input:checked + .bl-pkg__box .bl-pkg__pick .ti, .bl-pkg input:checked + .bl-pkg__box .bl-pkg__pick em { display: inline; }
.bl-pkg input:checked + .bl-pkg__box .bl-pkg__pick i:not(.ti) { display: none; }
.bl-pkg__pick i:not(.ti) { font-style: normal; }
.bl-build__grid { display: grid; gap: 40px; }
@media (min-width: 1024px) { .bl-build__grid { grid-template-columns: minmax(0, 1fr) 340px; gap: 48px; align-items: start; } }
@media (min-width: 1280px) { .bl-build__grid { grid-template-columns: minmax(0, 1fr) 380px; gap: 64px; } }
.bl-build__main { min-width: 0; }
.bl-compare { overflow-x: auto; border: 1px solid var(--foil-2); border-radius: 22px; background: var(--surface); -webkit-overflow-scrolling: touch; }
.bl-compare table { width: 100%; min-width: 560px; border-collapse: collapse; font-size: .92rem; }
.bl-compare th, .bl-compare td { padding: 14px 16px; border-bottom: 1px solid var(--line); text-align: center; }
.bl-compare tbody tr:last-child > * { border-bottom: 0; }
.bl-compare tbody th { text-align: left; font-weight: 500; }
.bl-compare thead th { font-family: var(--font-head); font-weight: 400; font-size: 1.05rem; border-bottom: 3px double var(--foil-2); }
.bl-compare thead th:first-child { text-align: left; }
.bl-compare .is-sel { background: color-mix(in srgb, var(--peach) 42%, transparent); color: var(--primary); font-weight: 600; }
[data-theme="dark"] .bl-compare .is-sel { background: rgba(246, 217, 201, .07); }
.bl-yes { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--gold); color: var(--gold-ink); font-size: .85rem; }
.is-sel .bl-yes { background: var(--primary); color: var(--on-primary); border-color: var(--primary); }
.bl-no { color: var(--muted); opacity: .6; }
.bl-build__h { margin: 44px 0 18px; font-size: 1.4rem; }
.bl-adds { display: grid; gap: 12px; }
@media (min-width: 640px) { .bl-adds { grid-template-columns: 1fr 1fr; } }
.bl-add { position: relative; display: block; min-width: 0; }
.bl-add__box { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 16px; background: var(--surface); cursor: pointer; transition: all .3s; }
.bl-add__box > .ti { flex: none; display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: color-mix(in srgb, var(--peach) 60%, transparent); color: var(--plum); font-size: 1.15rem; }
[data-theme="dark"] .bl-add__box > .ti { background: rgba(246, 217, 201, .1); color: var(--peach); }
.bl-add__txt { flex: 1; min-width: 0; line-height: 1.3; }
.bl-add__txt b { display: block; font-weight: 600; font-size: .93rem; }
.bl-add__txt small { color: var(--gold-ink); font-weight: 600; }
.bl-switch { flex: none; position: relative; width: 42px; height: 24px; border-radius: 24px; border: 1px solid var(--foil); transition: background .3s; }
.bl-switch::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: var(--foil); transition: transform .35s var(--ease), background .3s; }
.bl-add input:checked + .bl-add__box { border-color: var(--primary); }
.bl-add input:checked + .bl-add__box .bl-switch { background: var(--primary); border-color: var(--primary); }
.bl-add input:checked + .bl-add__box .bl-switch::after { transform: translateX(18px); background: var(--on-primary); }
.bl-build__sum { min-width: 0; }
@media (min-width: 1024px) { .bl-build__sum { position: sticky; top: 100px; } }
.bl-build__sum h3 { font-size: 1.6rem; margin: 6px 0 0; }
.bl-build__sum .bl-sprig { width: 140px; margin: 10px 0 12px; }
.bl-sum__list li { display: flex; justify-content: space-between; gap: 12px; padding: 11px 0; border-bottom: 1px dotted var(--line); font-size: .93rem; }
.bl-sum__list li b { font-family: var(--font-head); font-weight: 400; white-space: nowrap; }
.bl-sum__list li.is-add span { color: var(--muted); }
.bl-sum__total { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin: 20px 0 12px; padding: 14px 22px; border-radius: 999px; background: var(--peach); color: #3b2230; }
[data-theme="dark"] .bl-sum__total { background: #3a2431; color: var(--text); }
.bl-sum__total span { font-size: .68rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; }
.bl-sum__total b { font-family: var(--font-head); font-weight: 400; font-size: 1.8rem; }
.bl-sum__note { font-size: .82rem; color: var(--muted); }

/* 13. Home heroes -------------------------------------------------------- */
.hero { isolation: isolate; padding-top: calc(var(--header-h) + clamp(32px, 5vw, 64px)); }
.hero__title { font-size: clamp(2.5rem, 5.6vw, 5rem); line-height: 1.1; letter-spacing: 0; }
/* 1: invitation triptych */
.bl-hero1 { background: radial-gradient(ellipse 60% 50% at 50% 30%, var(--bg-peach), transparent 70%); }
.bl-hero1__grid { display: grid; gap: 28px 18px; grid-template-columns: 1fr 1fr; grid-template-areas: "card card" "l r"; align-items: center; }
.bl-hero1__card { grid-area: card; }
.bl-hero1__side--l { grid-area: l; }
.bl-hero1__side--r { grid-area: r; margin-top: 48px; }
.bl-hero1__card .hero__title { font-size: clamp(2.3rem, 4.6vw, 4.3rem); margin-bottom: 8px; }
.bl-hero1__card .lead { margin: 0 auto 30px; max-width: 46ch; }
@media (min-width: 1024px) {
  .bl-hero1__grid { grid-template-columns: .66fr 1.4fr .66fr; grid-template-areas: "l card r"; gap: 40px; }
  .bl-hero1__side--l { margin-top: 110px; }
  .bl-hero1__side--r { margin-top: -80px; }
}
.bl-hero1__facts { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px 0; margin-top: clamp(40px, 5vw, 64px); }
.bl-hero1__facts li { display: flex; align-items: baseline; gap: 8px; padding: 0 clamp(14px, 3vw, 36px); position: relative; }
.bl-hero1__facts li + li::before { content: ""; position: absolute; left: -3px; top: 50%; width: 6px; height: 6px; transform: rotate(45deg); border: 1px solid var(--gold); }
.bl-hero1__facts b { font-family: var(--font-head); font-weight: 400; font-size: 1.5rem; color: var(--primary); }
.bl-hero1__facts span { font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
/* 2: full-bleed estate + framed card */
.bl-hero2 { align-items: center; padding-top: calc(var(--header-h) + 40px); padding-bottom: 48px; }
.bl-hero2::before { background: linear-gradient(180deg, rgba(28, 12, 22, .5) 0%, rgba(28, 12, 22, .22) 45%, rgba(28, 12, 22, .66) 100%); }
.bl-hero2 .container { display: flex; flex-direction: column; align-items: center; }
.bl-hero2__card { --text: var(--ink); --muted: var(--ink-muted); --line: rgba(110, 63, 88, .16); max-width: 780px; background: color-mix(in srgb, var(--surface) 93%, transparent); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
[data-theme="dark"] .bl-hero2__card { --line: rgba(246, 217, 201, .14); }
.bl-hero2__card .hero__title { max-width: 16ch; margin: 0 auto 6px; font-size: clamp(2.3rem, 5vw, 4.4rem); }
.bl-hero2__card .lead { margin: 0 auto 28px; }
.bl-hero2__facts { display: grid; grid-template-columns: repeat(2, auto); justify-content: center; gap: 14px 32px; margin-top: 36px; color: #fff; }
@media (min-width: 768px) { .bl-hero2__facts { grid-template-columns: repeat(4, auto); gap: 0; } .bl-hero2__facts li + li { border-left: 1px solid rgba(255,255,255,.35); } }
.bl-hero2__facts li { display: flex; align-items: center; gap: 10px; padding: 0 24px; font-size: .9rem; }
.bl-hero2__facts .ti { font-size: 1.2rem; color: var(--peach); }
.bl-hero2__facts b { font-family: var(--font-head); font-weight: 400; font-size: 1.2rem; }
/* 3: destination postcard */
.bl-hero3 { background: radial-gradient(ellipse 50% 60% at 80% 40%, var(--bg-peach), transparent 70%); }
.bl-hero3__grid { display: grid; gap: 56px; align-items: center; }
@media (min-width: 1024px) { .bl-hero3__grid { grid-template-columns: 1fr 1fr; gap: 56px; } }
.bl-hero3__txt { min-width: 0; }
.bl-hero3__txt .hero__title { max-width: 12ch; }
.bl-hero3__pass { display: flex; align-items: center; flex-wrap: wrap; gap: 16px 26px; margin-top: 40px; padding: 18px 0; border-block: 1px dashed var(--foil); }
.bl-hero3__pass b { font-family: var(--font-head); font-weight: 400; font-size: 1.25rem; }
.bl-hero3__plane .ti { font-size: 1.4rem; color: var(--gold); }
.bl-hero3__vis { position: relative; min-width: 0; padding-bottom: 60px; }
.bl-hero3__oval { width: 80%; margin-left: auto; }
.bl-post {
  position: absolute; left: 0; bottom: 0; z-index: 3; width: min(62%, 380px); padding: 24px 26px 24px; transform: rotate(-4deg);
  background: #fbf4ea; color: #3b2230; border-radius: 6px; box-shadow: 0 30px 60px -28px rgba(0,0,0,.55);
  background-image: linear-gradient(90deg, transparent calc(58% - .5px), rgba(110, 63, 88, .25) calc(58% - .5px) calc(58% + .5px), transparent calc(58% + .5px));
}
.bl-post__stamp { position: absolute; right: 18px; top: 18px; width: 64px; padding: 5px; background: #fff; -webkit-mask: radial-gradient(circle 4px at 4px 4px, transparent 97%, #000) -4px -4px / 9px 9px; mask: radial-gradient(circle 4px at 4px 4px, transparent 97%, #000) -4px -4px / 9px 9px; }
.bl-post__stamp img { aspect-ratio: 5/6; }
.bl-postmark { position: absolute; right: 52px; top: 42px; width: 92px; color: rgba(110, 63, 88, .55); transform: rotate(-12deg); pointer-events: none; }
.bl-postmark circle, .bl-postmark .w { fill: none; stroke: currentColor; stroke-width: 1.4; }
.bl-postmark text { fill: currentColor; font-family: var(--font-body); font-size: 8.5px; font-weight: 700; letter-spacing: 1.6px; }
.bl-postmark .d { font-size: 11px; letter-spacing: 1px; }
.bl-post__hi { margin: 34px 0 6px; font-family: var(--font-logo); font-size: 1.9rem; line-height: 1; color: #6e3f58; max-width: 58%; }
.bl-post__txt { max-width: 56%; margin: 0 0 10px; font-size: .8rem; line-height: 1.5; color: #5d4552; }
.bl-post__sig { margin: 0; font-family: var(--font-logo); font-size: 1.4rem; color: #8a6f33; }
.bl-post__lines { position: absolute; right: 20px; bottom: 26px; width: 34%; display: grid; gap: 14px; }
.bl-post__lines i { height: 1px; background: rgba(110, 63, 88, .3); }
@media (max-width: 639px) {
  .bl-hero3__oval { width: 92%; margin-inline: auto; }
  .bl-post { position: relative; width: 94%; margin: -60px auto 0; }
  .bl-hero3__vis { padding-bottom: 0; }
}
/* 4: wreath */
.bl-hero4 { background: radial-gradient(circle at 50% 45%, var(--bg-peach), transparent 60%); padding-bottom: clamp(56px, 7vw, 100px); }
.bl-hero4__grid { display: grid; gap: 36px; justify-items: center; text-align: center; }
.bl-hero4__word { max-width: 360px; min-width: 0; }
.bl-hero4__word .eyebrow { display: inline-flex; }
.bl-hero4__big { margin: 0 0 14px; font-family: var(--font-head); font-size: clamp(3rem, 6.4vw, 6rem); line-height: 1; color: var(--text); }
.bl-hero4__big em { font-size: 1.1em; }
.bl-hero4__word .btn-group { justify-content: center; margin-top: 24px; }
.bl-hero4__ring { position: relative; width: min(520px, 88vw); aspect-ratio: 1; }
.bl-wreath { position: absolute; inset: 0; width: 100%; height: 100%; color: var(--gold); overflow: visible; }
.bl-wreath .v { fill: none; stroke: currentColor; stroke-width: 1.2; }
.bl-wreath .t { stroke-width: .8; stroke-dasharray: 2 6; opacity: .7; }
.bl-wreath path { fill: color-mix(in srgb, var(--gold) 16%, transparent); stroke: currentColor; stroke-width: 1; stroke-linejoin: round; }
.bl-wreath .b { fill: none; stroke: var(--primary); stroke-width: 1.4; stroke-linecap: round; }
.bl-wreath .p { fill: var(--peach); stroke: var(--plum); stroke-width: .8; }
[data-theme="dark"] .bl-wreath .p { stroke: var(--peach); fill: #6e3f58; }
.bl-wreath .f { fill: currentColor; stroke: none; }
.bl-hero4__photo { position: absolute; inset: 15%; }
.bl-hero4__photo::after { display: none; }
@media (min-width: 1024px) {
  .bl-hero4__grid { grid-template-columns: 1fr auto 1fr; gap: 40px; align-items: center; }
  .bl-hero4__ring { width: min(520px, 42vw); }
  .bl-hero4__word--l { justify-self: end; text-align: right; }
  .bl-hero4__word--r { justify-self: start; text-align: left; }
  .bl-hero4__word--r .btn-group { justify-content: flex-start; }
}

/* 14. Home sections ------------------------------------------------------ */
.bl-press { padding-block: 34px; border-block: 3px double var(--foil-2); }
.bl-press__t { margin: 0 0 14px; text-align: center; font-size: .66rem; font-weight: 700; letter-spacing: .3em; text-transform: uppercase; color: var(--muted); }
.bl-press__row { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 0; }
.bl-press__row span { position: relative; padding: 0 clamp(14px, 2.4vw, 32px); font-family: var(--font-head); font-size: clamp(1rem, 1.8vw, 1.35rem); color: var(--muted); }
.bl-press__row span + span::before { content: "✦"; position: absolute; left: -6px; top: 50%; transform: translateY(-50%); font-size: .6rem; color: var(--gold); }
.bl-svcs { display: grid; gap: 64px 32px; }
@media (min-width: 768px) { .bl-svcs { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .bl-svc:nth-child(2) { margin-top: 64px; } }
.bl-svc { text-align: center; min-width: 0; }
.bl-svc .bl-mask { width: min(340px, 78%); margin: 0 auto 28px; }
.bl-svc__n { display: inline-grid; place-items: center; width: 40px; height: 40px; margin-bottom: 10px; border: 1px solid var(--gold); transform: rotate(45deg); font-family: var(--font-head); font-size: .9rem; color: var(--gold-ink); }
.bl-svc__n { line-height: 1; }
.bl-svc h3 { font-size: 1.6rem; margin: 6px 0 10px; }
.bl-svc p { color: var(--muted); max-width: 34ch; margin: 0 auto 18px; }
.bl-story__vis { position: relative; max-width: 520px; width: 100%; margin-inline: auto; padding: 0 8% 8% 0; }
.bl-story__small { position: absolute; right: 0; bottom: 0; width: 38%; z-index: 2; }
.bl-story__small img { border: 7px solid var(--bg); }
.bl-story .stats { grid-template-columns: repeat(2, 1fr); gap: 28px; margin: 8px 0 32px; }
.bl-story .stat { text-align: center; padding: 18px 8px; border: 1px solid var(--foil-2); border-radius: 999px 999px 14px 14px; }
.bl-sign { display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px 14px; margin: 0; }
.bl-sign .bl-script { font-size: 2.4rem; line-height: 1; }
.bl-sign > span:last-child { font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.bl-spaces { display: grid; gap: 56px 32px; }
@media (min-width: 768px) { .bl-spaces { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.bl-space { text-align: center; min-width: 0; }
.bl-space .bl-mask { width: min(360px, 80%); margin: 0 auto 26px; }
.bl-space h3 { font-size: 1.6rem; margin: 6px 0 8px; }
.bl-space p { color: var(--muted); max-width: 34ch; margin: 0 auto; }
.bl-dine__vis { position: relative; max-width: 540px; width: 100%; margin-inline: auto; padding: 0 0 12% 10%; }
.bl-dine__b { position: absolute; left: 0; bottom: 0; width: 40%; z-index: 2; }
.bl-dine__b img { border: 7px solid var(--bg); }
.bl-menu { margin: 0 0 20px; }
.bl-menu li { display: flex; align-items: baseline; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.bl-menu span { font-family: var(--font-head); font-size: 1.1rem; }
.bl-menu i { flex: 1; min-width: 20px; border-bottom: 1px dotted var(--foil); }
.bl-menu b { font-weight: 600; font-size: .9rem; color: var(--gold-ink); white-space: nowrap; }
.bl-stays { display: grid; gap: 40px 28px; }
@media (min-width: 768px) { .bl-stays { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.bl-stay { text-align: center; min-width: 0; }
.bl-stay .bl-mask { margin: 10px 10px 24px; }
.bl-stay h3 { font-size: 1.4rem; margin-bottom: 6px; }
.bl-stay p { color: var(--muted); margin: 0; }
.bl-dests { display: grid; gap: 56px 28px; }
@media (min-width: 640px) { .bl-dests { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .bl-dests { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.bl-dest { text-align: center; min-width: 0; }
.bl-dest .bl-mask { width: min(340px, 82%); margin: 0 auto 24px; }
.bl-dest h3 { font-size: 1.6rem; margin: 4px 0 8px; }
.bl-dest p { color: var(--muted); max-width: 32ch; margin: 0 auto 14px; }
.bl-dest__season { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border: 1px solid var(--foil-2); border-radius: 999px; font-size: .78rem; color: var(--muted); }
.bl-dest__season .ti { color: var(--gold); }
.bl-cs__tabs { justify-content: center; }
.bl-story-panel { display: grid; gap: 40px; align-items: center; max-width: 1080px; margin-inline: auto; }
.bl-story-panel[hidden] { display: none; }
@media (min-width: 768px) { .bl-story-panel { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 64px; } }
.bl-cs__img { max-width: 380px; width: 88%; margin-inline: auto; }
.bl-cs__txt { min-width: 0; }
.bl-cs__txt .h3 { font-size: clamp(1.8rem, 3vw, 2.6rem); margin: 6px 0 22px; }
.bl-cs__sw { display: flex; flex-wrap: wrap; gap: 14px 18px; margin-bottom: 24px; }
.bl-cs__sw span { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.bl-cs__sw i { width: 54px; height: 54px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 1px rgba(0,0,0,.08), 0 0 0 4px var(--bg-peach), 0 0 0 5px var(--foil-2); }
.bl-cs__sw em { font-style: normal; font-size: .62rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }

/* 15. Real weddings, letters, CTA --------------------------------------- */
.bl-weds { display: grid; gap: 56px 28px; }
@media (min-width: 640px) { .bl-weds { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .bl-weds { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.bl-wed { min-width: 0; }
.bl-wed[hidden] { display: none; }
.bl-wed__link { display: flex; flex-direction: column; align-items: center; text-align: center; }
.bl-wed .bl-mask { width: min(360px, 84%); margin: 10px auto 22px; overflow: hidden; }
.bl-wed .bl-mask { overflow: visible; }
.bl-wed__link:hover .bl-mask img { transform: scale(1.03); }
.bl-wed__cat { font-size: .64rem; font-weight: 700; letter-spacing: .26em; text-transform: uppercase; color: var(--gold-ink); }
.bl-wed__names { margin: 4px 0 2px; font-family: var(--font-logo); font-size: clamp(2.1rem, 3vw, 2.6rem); line-height: 1.15; color: var(--primary); font-weight: 400; }
.bl-wed__place { margin: 0; font-family: var(--font-head); }
.bl-wed__meta { margin: 4px 0 0; font-size: .82rem; color: var(--muted); }
.bl-letters { display: grid; gap: 32px; }
@media (min-width: 1024px) { .bl-letters { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 36px; } }
.bl-letter {
  position: relative; display: flex; flex-direction: column; padding: 38px 32px 30px; background: var(--surface); border: 1px solid var(--line); border-radius: 4px; box-shadow: var(--shadow);
  background-image: repeating-linear-gradient(180deg, transparent 0 33px, color-mix(in srgb, var(--gold) 14%, transparent) 33px 34px);
}
.bl-letter::before { content: ""; position: absolute; top: -1px; left: 50%; width: 54px; height: 54px; margin-left: -27px; transform: translateY(-50%); border-radius: 50%; background: radial-gradient(circle at 40% 35%, #8f5575, var(--plum) 60%, var(--plum-d)); box-shadow: 0 6px 14px -6px rgba(0,0,0,.5), inset 0 0 0 5px rgba(255,255,255,.08); }
.bl-letter::after { content: "B"; position: absolute; top: -1px; left: 50%; transform: translate(-50%, -50%); font-family: var(--font-logo); font-size: 1.7rem; color: rgba(255, 250, 244, .85); }
@media (min-width: 1024px) { .bl-letter:nth-child(odd) { transform: rotate(-1deg); } .bl-letter:nth-child(even) { transform: rotate(1.2deg); margin-top: 24px; } }
.bl-letter__dear { font-family: var(--font-logo); font-size: 1.9rem; color: var(--script); line-height: 1.2; margin-top: 6px; }
.bl-letter blockquote { margin: 8px 0 26px; font-family: var(--font-head); font-size: 1.08rem; line-height: 1.7; }
.bl-letter figcaption { display: flex; align-items: center; gap: 16px; margin-top: auto; }
.bl-letter__img { width: 58px; flex: none; }
.bl-letter__img::after { inset: -5px; }
.bl-letter__sig { display: block; font-family: var(--font-logo); font-size: 1.8rem; line-height: 1.1; color: var(--primary); }
.bl-letter__where { font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.bl-cta__in { display: grid; gap: 32px; align-items: center; }
.bl-cta__img { display: none; }
@media (min-width: 1024px) { .bl-cta__in { grid-template-columns: .55fr 1.2fr .55fr; gap: 44px; } .bl-cta__img { display: block; } .bl-cta__img--l { margin-top: 90px; } .bl-cta__img--r { margin-top: -70px; } }
.bl-cta__card .h2 { max-width: 15ch; margin-inline: auto; }
.bl-cta__card .lead { margin: 0 auto 28px; }

/* 16. Inner pages -------------------------------------------------------- */
.bl-ph .grid-lines, .page-header .grid-lines { display: none; }
.page-header { text-align: center; background: radial-gradient(ellipse 60% 70% at 50% 0%, var(--bg-peach), transparent 70%); }
.page-header h1 { font-weight: 400; letter-spacing: 0; line-height: 1.1; font-size: clamp(2.6rem, 6.4vw, 5.2rem); max-width: 18ch; margin-inline: auto; margin-bottom: .3em; }
.page-header h1 em { line-height: 1; }
.page-header .breadcrumb { justify-content: center; font-size: .68rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; }
.page-header .breadcrumb .ti { color: var(--gold); }
.page-header .lead { margin-inline: auto; }
.bl-ph__sprig { margin: 18px auto 22px; width: 220px; }
.bl-ph__img { max-width: 1100px; margin: clamp(36px, 5vw, 56px) auto 0; padding: 0 10px; }
.bl-detail-hero__kicker { margin: 0 0 10px; font-size: .7rem; font-weight: 700; letter-spacing: .3em; text-transform: uppercase; color: var(--gold-ink); }
.bl-detail-hero h1 em { font-size: 1.1em; }
.bl-detail-hero__img { max-width: 1240px; margin: 24px auto 0; padding: 0 10px; }
.bl-detail { display: grid; gap: 48px; align-items: start; }
@media (min-width: 1024px) { .bl-detail { grid-template-columns: 340px minmax(0, 1fr); gap: 72px; } .bl-detail__facts { position: sticky; top: 100px; } }
.bl-detail__facts h2 { margin: 6px 0 14px; }
.bl-facts li { display: flex; gap: 14px; align-items: center; padding: 12px 0; border-top: 1px dotted var(--line); }
.bl-facts .ti { flex: none; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--foil); color: var(--gold-ink); font-size: 1.1rem; }
.bl-facts b { font-weight: 500; }
.bl-detail__body { max-width: 68ch; font-size: 1.06rem; }
.bl-detail__body p { color: var(--text); }
.bl-dropcap::first-letter { float: left; margin: .06em .12em 0 0; font-family: var(--font-head); font-size: 4.4em; line-height: .8; color: var(--primary); }
.bl-pull { margin: 40px 0; padding: 28px 0; text-align: center; border-block: 3px double var(--foil-2); }
.bl-pull .bl-script { font-size: clamp(1.8rem, 3.4vw, 2.6rem); line-height: 1.3; }
.bl-detail__credits { margin-top: 44px; padding-top: 28px; border-top: 1px solid var(--line); }
.bl-detail__credits h3 { margin-bottom: 16px; }
.bl-detail__credits ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 24px; }
@media (min-width: 768px) { .bl-detail__credits ul { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.bl-detail__credits li { font-family: var(--font-head); }
.bl-detail__credits b { display: block; font-family: var(--font-body); font-size: .66rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.bl-mosaic { column-count: 2; column-gap: 20px; }
@media (min-width: 768px) { .bl-mosaic { column-count: 3; column-gap: 28px; } }
@media (min-width: 1280px) { .bl-mosaic { column-count: 4; } }
.bl-mo { break-inside: avoid; margin: 0; padding: 12px 10px 20px; }
.bl-next { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 24px; padding-block: 28px; border-block: 3px double var(--foil-2); }
.bl-next a { display: flex; align-items: center; gap: 16px; min-width: 0; }
.bl-next b { display: block; font-family: var(--font-head); font-weight: 400; font-size: 1.2rem; }
.bl-next .bl-mask { width: 64px; flex: none; }
.bl-next .bl-mask::after { inset: -5px; }
.bl-next .ti { font-size: 1.3rem; color: var(--gold); }
.bl-vals { display: grid; gap: 40px 28px; }
@media (min-width: 640px) { .bl-vals { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .bl-vals { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.bl-vals li { text-align: center; min-width: 0; }
.bl-val__ic { display: inline-grid; place-items: center; width: 66px; height: 82px; margin-bottom: 16px; border: 1px solid var(--foil); border-radius: 999px 999px 10px 10px; color: var(--primary); font-size: 1.5rem; box-shadow: inset 0 0 0 4px var(--bg-2), inset 0 0 0 5px var(--foil-2); }
.bl-vals h3 { font-size: 1.3rem; margin-bottom: 8px; }
.bl-vals p { color: var(--muted); margin: 0 auto; max-width: 30ch; }
.bl-team { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px 20px; }
@media (min-width: 1024px) { .bl-team { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; } }
.bl-member { text-align: center; min-width: 0; }
.bl-member .bl-mask { margin: 10px 10px 22px; }
.bl-member h3 { font-size: clamp(1.05rem, 1.8vw, 1.35rem); margin-bottom: 4px; }
.bl-member p { margin: 0; font-size: .74rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.bl-faq { max-width: 880px; margin-inline: auto; }
.bl-contact { display: grid; gap: 48px; align-items: start; }
@media (min-width: 1024px) { .bl-contact { grid-template-columns: minmax(0, 1.35fr) minmax(0, .65fr); gap: 56px; } }
.bl-rsvp__card { padding-top: clamp(52px, 6vw, 72px); }
.bl-rsvp__h { font-size: clamp(1.8rem, 3.4vw, 2.6rem); margin-bottom: 0; }
.bl-rsvp { text-align: left; margin-top: 8px; }
.bl-rsvp__set { border: 0; margin: 0; padding: 0; min-width: 0; }
.bl-accept { position: relative; display: flex; }
.bl-accept span { display: flex; align-items: center; gap: 12px; cursor: pointer; font-family: var(--font-logo); font-size: 1.6rem; color: var(--script); line-height: 1.2; }
.bl-accept span::before { content: ""; flex: none; width: 22px; height: 22px; border: 1px solid var(--gold); border-radius: 50%; transition: all .3s; }
.bl-accept input:checked + span::before { background: var(--primary); border-color: var(--primary); box-shadow: inset 0 0 0 4px var(--surface); }
.bl-contact__aside { display: grid; gap: 22px; min-width: 0; }
.bl-contact__img { width: min(300px, 80%); margin: 10px auto 12px; }
.bl-contact__list li { display: flex; gap: 14px; align-items: center; padding: 14px 0; border-bottom: 1px dotted var(--line); }
.bl-contact__list b { font-weight: 500; }
.bl-ci { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--foil); color: var(--gold-ink); font-size: 1.15rem; }
.bl-contact__aside .socials { margin-top: 0; }

/* 17. Footer & 404 ------------------------------------------------------- */
.bl-foot {
  position: relative; margin-top: 14px; padding-top: clamp(64px, 8vw, 96px); background: var(--plum-d); color: #fbeee6;
  --text: #fbeee6; --muted: rgba(251, 238, 230, .68); --line: rgba(251, 238, 230, .16); --surface: #5a2f47; --surface-2: #663851;
  --primary: #f6d9c9; --on-primary: #3b2230; --gold: #d2b476; --gold-ink: #dcc089; --script: #e2c58a; --foil: rgba(210, 180, 118, .6); --foil-2: rgba(210, 180, 118, .3);
}
[data-theme="dark"] .bl-foot { background: #140b10; --surface: #221520; border-top: 1px solid rgba(210, 180, 118, .2); }
.bl-foot::before { content: ""; position: absolute; left: 0; right: 0; top: -1px; height: 14px; background: radial-gradient(circle at 12px 0, var(--bg) 11px, transparent 11.5px) 0 0 / 24px 14px repeat-x; }
[data-theme="dark"] .bl-foot::before { display: none; }
.bl-foot__news { max-width: 760px; margin: 0 auto; }
.bl-foot__news .bl-inv { text-align: center; background: color-mix(in srgb, var(--surface) 55%, transparent); box-shadow: none; }
.bl-foot__news .newsletter { margin: 18px auto 0; background: transparent; }
.bl-foot__news .newsletter .btn { --btn-bg: var(--primary); --btn-fg: var(--on-primary); }
.bl-foot__nh { font-size: clamp(1.5rem, 3vw, 2.1rem); margin-bottom: 8px; }
.bl-foot__news p { color: var(--muted); }
.bl-foot__grid { display: grid; gap: 40px; padding-block: 64px 48px; text-align: center; }
@media (min-width: 768px) {
  .bl-foot__grid { grid-template-columns: 1fr 1.4fr 1fr; align-items: start; }
  .bl-foot__grid > :first-child { text-align: right; }
  .bl-foot__grid > :last-child { text-align: left; }
}
.bl-foot__brand .logo { --logo-size: 3rem; justify-content: center; }
@media (max-width: 767px) { .bl-foot__brand { order: -1; } }
.bl-foot__brand .logo__mark { display: none; }
.bl-foot__brand .bl-sprig { margin: 10px auto 16px; }
.bl-foot__brand p { color: var(--muted); max-width: 44ch; margin-inline: auto; }
.bl-foot__addr { font-size: .9rem; }
.bl-foot__brand .socials { justify-content: center; }
.bl-foot h4 { font-family: var(--font-body); font-size: .68rem; font-weight: 700; letter-spacing: .26em; text-transform: uppercase; color: var(--gold-ink); margin-bottom: 16px; }
.bl-foot__col li { padding: 5px 0; }
.bl-foot__col a { color: var(--muted); transition: color .3s; }
.bl-foot__col a:hover { color: var(--text); }
.bl-foot .socials a { border-color: var(--foil-2); }
.bl-foot .socials a:hover { background: var(--primary); color: var(--on-primary); }
.bl-foot__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; padding-block: 24px; border-top: 3px double var(--foil-2); font-size: .85rem; color: var(--muted); }
.error-page { background: radial-gradient(ellipse 50% 50% at 50% 40%, var(--bg-peach), transparent 70%); }
.error-page .code { font-family: var(--font-logo); font-weight: 400; letter-spacing: 0; line-height: 1.1; padding: 0 .1em; }
.error-page h1 { font-weight: 400; }
.preloader__bar::after { background: var(--gold); }
.to-top { background: var(--primary); color: var(--on-primary); }
.cursor { background: var(--gold); }

/* Small-screen refinements ---------------------------------------------- */
@media (max-width: 639px) {
  .bl-svc .bl-mask, .bl-space .bl-mask, .bl-dest .bl-mask, .bl-wed .bl-mask { width: 66%; }
  .bl-svcs, .bl-spaces, .bl-dests, .bl-weds { gap: 48px; }
  .bl-hero1__facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; }
  .bl-hero1__facts li { flex-direction: column; align-items: center; gap: 2px; padding: 0 6px; text-align: center; }
  .bl-hero1__facts li + li::before { top: 16px; }
  .bl-hero1__facts span { font-size: .6rem; letter-spacing: .12em; }
  .step { padding: 36px 22px 26px; }
  .bl-pkg__box { padding: 40px 20px 22px; }
  .bl-pkg__desc { margin-bottom: 14px; }
  .bl-compare::after { content: "Swipe to compare →"; position: sticky; left: 0; display: block; padding: 10px 16px; font-size: .72rem; color: var(--muted); }
}
