/* ================= Base & Variables ================= */
:root{
  --ivory:#fffaf5;
  --ink:#3f3b37;
  --accent:#f9cf88;   /* soft gold */
  --gold:#f5c26b;
  /* Aliases to satisfy older classes */
  --navy: var(--ink);
}

html, body { height: 100%; }
body{
  background-color: var(--ivory) !important;
  color: rgba(75,71,70,1) !important;
  text-transform: none;
  line-height: 1.5;
  letter-spacing: .05em;
  font-size: 16px;
  font-family: 'Larken Light', serif !important;
  font-weight: 400;
  font-style: normal;
}
a{ color:#f5c26b; text-decoration:none; }

}
a:hover {
   color:#dfbe71;
}

.container{ max-width:1280px; }

/* Utilities */
.object-fit-cover{ object-fit:cover; }
.py-6{ padding-block:4.5rem; }
.py-7{ padding-block:5rem; }
.py-lg-8{ padding-top:6.5rem; padding-bottom:6.5rem; }
.bg-ivory{
  background: var(--ivory);
  background-image: radial-gradient(rgba(0,0,0,.02) 1px, transparent 1px);
  background-size: 14px 14px;
}
.bg-white{ background-color:#fdfdfd !important; }
.card{ background-color:#fdfdfd !important; }
.text-ink{ color:var(--ink); }
.text-navy{ color:var(--ink); }     /* normalize old helper */
.text-accent{ color:var(--accent); }
.ls-1{ letter-spacing:1px; }

/* ================= Navbar & Offcanvas ================= */
.navbar-brand:hover{ color:#ddc5a2; }

.pagination {
    --bs-pagination-padding-x: 0.75rem;
    --bs-pagination-padding-y: 0.375rem;
    --bs-pagination-font-size: 1rem;
    --bs-pagination-color: #000;
    --bs-pagination-bg: #fffaf6;
    --bs-pagination-border-width: var(--bs-border-width);
    --bs-pagination-border-color: var(--accent);
    --bs-pagination-border-radius: var(--bs-border-radius);
    --bs-pagination-hover-color: #ada898;
    --bs-pagination-hover-bg: var(--bs-tertiary-bg);
    --bs-pagination-hover-border-color: var(--bs-border-color);
    --bs-pagination-focus-color: var(--bs-link-hover-color);
    --bs-pagination-focus-bg: var(--bs-secondary-bg);
    --bs-pagination-active-color: #000;
    --bs-pagination-active-bg: #fffaf6;
    --bs-pagination-active-border-color: var(--accent);
    --bs-pagination-disabled-color: var(--accent);
    --bs-pagination-disabled-bg: var(--accent);
    --bs-pagination-disabled-border-color: var(--accent);
    display: flex
;
    padding-left: 0;
    list-style: none;
}

.active>.page-link, .page-link.active {
    z-index: 3;
    color: #000;
    background-color: #fff;
    border-color: #000;
}

.brand-perla{
  color: var(--accent);
  font-weight: 800;
  letter-spacing:.16em;
  font-size: clamp(1.4rem, 3.2vw, 2.4rem);
  font-family: "le-monde-livre-classic-byol", serif;
}

@media (max-width: 576px) {
  .brand-perla { font-size: clamp(2.1rem, 5vw, 2.6rem); }
}

/* Hamburger */
.burger{ width:40px; height:28px; display:flex; flex-direction:column; justify-content:space-between; }
.burger-line{ height:2px; width:100%; background:var(--ink); border-radius:2px; transition:transform .25s ease, opacity .25s ease; }
.burger:hover .burger-line{ transform:scaleX(.9); }

/* Fullscreen menu */
.offcanvas-fullscreen{
  height:100vh; min-height:100vh; border:0; background:var(--ivory);
  display:flex; flex-direction:column; overflow:hidden;
}
@supports (height: 100dvh){
  .offcanvas-fullscreen{ height:100dvh; min-height:100dvh; }
}
@supports (height: 100svh){
  .offcanvas-fullscreen{ height:100svh; min-height:100svh; }
}
.offcanvas-fullscreen .offcanvas-header{ border-bottom:1px solid rgba(0,0,0,.06); }
.offcanvas-fullscreen .offcanvas-body{
  flex:1 1 auto; overflow-y:auto; -webkit-overflow-scrolling:touch;
  padding-bottom: calc(1rem + env(safe-area-inset-bottom,0px));
}
.menu-heading{
  text-transform:uppercase; letter-spacing:.22em; font-size:.85rem;
  color:var(--ink); opacity:.75; margin-bottom:.75rem;
}
.menu-list li + li{ margin-top:.35rem; }
.menu-list a{ color:var(--ink); text-decoration:none; font-size:1.1rem; }
.menu-list a:hover{ opacity:.85; text-decoration:underline; text-underline-offset:3px; }

/* ================= Hero ================= */
.hero-overlay{
  background: linear-gradient(rgba(0,0,0,.4), rgba(0,0,0,.2));
  pointer-events: none;
}

/* ================= Editorial Section ================= */
.section-title-display{
  font-family: 'Larken Light', serif !important;
  text-transform: uppercase;
  letter-spacing: .14em; /* unified */
  font-weight: 300;
  line-height: 1;
  font-size: 45px;
  color: var(--accent);
}

.editorial-hero{
  color:var(--ink);
  background:
    radial-gradient(rgba(0,0,0,.02) 1px, transparent 1px) 0 0/14px 14px,
    var(--ivory);
}
.display-editorial{
  letter-spacing:.02em;
  line-height:1.05;
  font-size: clamp(2rem, 6vw, 3.75rem);
  margin:0;
}

.display-editorial-h3 {
   letter-spacing:.02em;
  line-height:1.05;
  font-size: 2.5rem;
  margin:0;
}

.display-editorial .line{ display:block; }
.display-editorial .up{
  text-transform: uppercase;
  letter-spacing:.18em;
  position:relative;
}
.display-editorial .up::after{
  content:""; display:block; width:72px; height:2px; background:var(--accent);
  margin:.6rem auto 0; opacity:.9;
}
.intro{ max-width:720px; color:#6b6b6b; }
.divider-orn{
  width:1px; height:120px; margin-inline:auto;
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.15),transparent);
}
@keyframes riseIn{ from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:translateY(0);} }
.display-editorial .line{ animation: riseIn .5s ease both; }
.display-editorial .line:nth-child(2){ animation-delay:.08s; }
.display-editorial .line:nth-child(3){ animation-delay:.16s; }
.display-editorial .line:nth-child(4){ animation-delay:.24s; }
@media (prefers-reduced-motion: reduce){ .display-editorial .line{ animation:none; } }

/* ================= Masonry (Best Shots) ================= */
.bestshots-masonry{ column-count:2; column-gap:1rem; }
.bestshot{ break-inside:avoid; -webkit-column-break-inside:avoid; margin:0 0 1rem; }
.bestshot img{ display:block; width:100%; height:auto; }
@media (min-width:768px){
  .bestshots-masonry{ column-count:3; column-gap:1.5rem; }
  .bestshot{ margin-bottom:1.5rem; }
}
@media (min-width:1200px){
  .bestshots-masonry{ column-gap:2rem; }
  .bestshot{ margin-bottom:2rem; }
}

/* ================= About slab ================= */
.about-slab .row > [class*="col-"]{ position:relative; z-index:1; }
.about-script{
  position:absolute; z-index:0; left:26%; top:6%; transform: translateX(-20%);
  font-family:"Playfair Display","Canela","Garamond",serif;
  font-style:italic; font-weight:500; line-height:.8; white-space:nowrap;
  font-size: clamp(6rem, 22vw, 28rem);
  color:#ba943a; opacity:.10; pointer-events:none; mix-blend-mode: normal;
}
@media (max-width:991.98px){
  .about-script{ left:50%; top:10%; font-size: clamp(4rem, 32vw, 14rem); opacity:.12; }
}
.about-quote{ color:#0f0f0f; margin:0; }

/* Stats */
.stat-number{
  font-family: ui-serif, "Georgia", "Times New Roman", serif;
  font-weight:300; line-height:1;
  font-size: clamp(3rem, 10vw, 7.5rem);
  color:#e9d4a6; letter-spacing:.02em; opacity:.9;
}
.stat-label{
  text-transform:uppercase; letter-spacing:.22em; font-size:.9rem;
  color:#223048;
}

/* ================= Testimonials ================= */
.testimonials-slab{
  background:
    radial-gradient(rgba(0,0,0,.02) 1px, transparent 1px) 0 0/14px 14px,
    var(--ivory);
}
.rating-pill{
  display:inline-flex; align-items:center; gap:.5rem;
  padding:.4rem .7rem; border:1px solid rgba(0,0,0,.12);
  border-radius:999px; color:#6b6b6b; background:#fff;
}
.rating-pill .pill-icon{ width:20px; height:20px; }
.rating-pill .pill-stars{ height:16px; }

.testimonial-card{ background:#fff; transition:transform .2s ease, box-shadow .2s ease; }
.testimonial-card:hover{ transform:translateY(-2px); box-shadow:0 .75rem 1.5rem rgba(0,0,0,.08); }
.quote-mark{
  position:absolute; left:.65rem; top:.35rem; font-size:3rem;
  color:rgba(0,0,0,.06); line-height:1;
}
.clamp-6{
  display:-webkit-box; -webkit-line-clamp:6; -webkit-box-orient:vertical; overflow:hidden;
}

/* ================= Featured Weddings (with all fixes) ================= */

/* Aspect + section bg */
.ratio-3x4{ --bs-aspect-ratio: calc(4/3 * 100%); }
.featured-portfolio{
  background:
    radial-gradient(rgba(0,0,0,.02) 1px, transparent 1px) 0 0/14px 14px,
    var(--ivory);
}
.eyebrow{ text-transform:uppercase; letter-spacing:.22em; color:#7a756e; font-size:.8rem; }

/* Card media + subtle hover (desktop only; see media query below) */
.wedding-card .media img{ transition: transform .45s ease; }
.wedding-card .media-scrim{
  position:absolute; inset:0;
  background: linear-gradient(to bottom, rgba(0,0,0,.0), rgba(0,0,0,.18));
  opacity:0; transition:opacity .35s ease;
}
.wedding-card .hover-cta{
  position:absolute; left:50%; bottom:14px; transform:translateX(-50%) translateY(8px);
  background:rgba(0,0,0,.55); color:#fff; font-size:.9rem;
  padding:.35rem .7rem; border-radius:999px;
  opacity:0; transition: all .35s ease; white-space:nowrap;
}
.wedding-card:hover .media img{ transform: scale(1.04); }
.wedding-card:hover .media-scrim{ opacity:1; }
.wedding-card:hover .hover-cta{ opacity:1; transform:translateX(-50%) translateY(0); }
.wedding-card .title{ line-height:1.25; }

/* --- Fix: prevent odd circular mask/halo on Safari/WebKit --- */
.wedding-card .media,
.wedding-card .media *,
.wedding-card .ratio,
.wedding-card .ratio *{
  -webkit-mask: none !important;
  -webkit-mask-image: none !important;
  mask: none !important;
  mask-image: none !important;
  clip-path: none !important;
  mix-blend-mode: normal !important;
}
.border-wedding, .border-wedding *{
  -webkit-mask-image:none !important; mask-image:none !important;
}
/* Keep cards rectangular */
.wedding-card .ratio,
.wedding-card .ratio > *{
  border-radius:.75rem;
  overflow:hidden;
}
/* Remove iOS tap ripple on anchors */
.wedding-card a{ -webkit-tap-highlight-color: transparent; }

/* Only show hover polish where hover really exists */
@media (hover:hover) and (pointer:fine){
  .wedding-card .ratio img{ transition: transform .45s ease; }
  .wedding-card:hover .ratio img{ transform: scale(1.04); }
  .wedding-card:hover .media-scrim{ opacity:1; }
  .wedding-card:hover .hover-cta{ opacity:1; }
}
/* Touch devices: no overlays to avoid artifacts */
@media (hover:none){
  .wedding-card .media-scrim,
  .wedding-card .hover-cta{ display:none !important; }
}

/* Carousel controls (custom ghost buttons) */
.carousel-nav{
  position:absolute; top:50%; transform:translateY(-50%);
  width:44px; height:44px; border-radius:999px;
  background:#fff; color:var(--ink); border:1px solid rgba(0,0,0,.12);
  display:flex; align-items:center; justify-content:center;
  z-index:3; box-shadow:0 .5rem 1rem rgba(0,0,0,.06);
}
.carousel-nav:hover{ background:#fff; color:#000; }
.carousel-nav.prev{ left:12px; }
.carousel-nav.next{ right:12px; }
.carousel-nav span{ font-size:1.5rem; line-height:1; }

/* Indicators as small dashes */
.indicators-dash [data-bs-target]{ width:36px; height:2px; border:0; background:rgba(0,0,0,.25); margin:0 .25rem; }
.indicators-dash .active{ background:#000; }

/* Buttons + tiny helpers reused here */
.btn-primary{ background-color:#f5c26b !important; border:0; }
.btn-dark{ background:#1b1b1b; border-color:#1b1b1b; }
.border-start{ border-left: var(--bs-border-width) var(--bs-border-style) #d4b588 !important; }

/* ===== Mobile-first swipe track (Cardsnap) ===== */
.cardsnap-wrap{ position:relative; }
.cardsnap-track{
  display:grid;
  grid-auto-flow: column;
  grid-auto-columns: min(88%, 440px);      /* 1 card per view on phones */
  gap: clamp(1rem, 3.5vw, 2rem);
  overflow-x:auto;
  scroll-snap-type: x mandatory;
  scroll-padding-left: clamp(1rem, 4vw, 2rem);
  padding: .25rem clamp(1rem, 4vw, 2rem) .75rem;
  -webkit-overflow-scrolling: touch;
}
.cardsnap-track::-webkit-scrollbar{ display:none; }
.cardsnap-card{ scroll-snap-align: center; }
@media (min-width:768px){
  .cardsnap-track{ grid-auto-columns: calc(50% - clamp(1rem,3.5vw,2rem)/2); } /* 2-up */
  .cardsnap-card{ scroll-snap-align: start; }
}
@media (min-width:1200px){
  .cardsnap-track{ grid-auto-columns: calc(33.333% - (2 * clamp(1rem,3.5vw,2rem))/3); } /* 3-up */
}
/* Edge fades */
.cardsnap-fade{
  position:absolute; top:0; bottom:0; width:42px; pointer-events:none; z-index:2;
  background: linear-gradient(to right, var(--ivory), rgba(255,255,255,0));
}
.cardsnap-fade.right{ right:0; transform: scaleX(-1); }
.cardsnap-fade.left{ left:0; }
/* Round arrows for cardsnap usage too */
.cardsnap-arrow{
  position:absolute; top:50%; transform:translateY(-50%);
  width:44px; height:44px; border-radius:999px;
  border:1px solid rgba(0,0,0,.12);
  background:#fff; color:var(--ink);
  display:flex; align-items:center; justify-content:center;
  z-index:3; box-shadow:0 .5rem 1rem rgba(0,0,0,.06);
}
.cardsnap-arrow:hover{ background:#fff; color:#000; }
.cardsnap-arrow.prev{ left:.35rem; }
.cardsnap-arrow.next{ right:.35rem; }
.cardsnap-arrow span{ font-size:1.5rem; line-height:1; }

/* Title type */
.featured-title{
  font-family:"Playfair Display","Canela","Garamond",serif;
  font-size: clamp(1.05rem, 1.15vw, 1.35rem);
  line-height:1.2; color:#0f0f0f;
}

/* Instagram: mobile swipe + desktop grid */
.ig-track{
  display:grid;
  grid-auto-flow: column;
  grid-auto-columns: min(78%, 360px); /* big, tappable squares */
  gap: clamp(0.75rem, 3vw, 1rem);
  overflow-x:auto;
  scroll-snap-type: x mandatory;
  scroll-padding-left: clamp(1rem, 4vw, 2rem);
  padding: .25rem clamp(1rem, 4vw, 2rem) .75rem;
  -webkit-overflow-scrolling: touch;
}
.ig-track::-webkit-scrollbar{ display:none; }
.ig-card{ scroll-snap-align: start; }

.ig-fade{
  position:absolute; top:0; bottom:0; width:36px; pointer-events:none; z-index:2;
  background: linear-gradient(to right, var(--ivory), rgba(255,255,255,0));
}
.ig-fade.right{ right:0; transform: scaleX(-1); }
.ig-fade.left{ left:0; }

@media (hover:hover) and (pointer:fine){
  .insta-slab .ratio img{ transition: transform .35s ease; }
  .insta-slab a:hover .ratio img{ transform: scale(1.04); }
}

/* ===== About (editorial) ===== */
.about-feature{
  position: relative;
}

/* Big outline headline that bridges columns on desktop */
.about-display{
  position: absolute;
  top: clamp(1rem, 6vw, 3rem);
  left: 50%;
  transform: translateX(-6%);        /* nudges it across the gutter */
  z-index: 1;
  margin: 0;
  font-family: 'Larken Light', serif;
  text-transform: uppercase;
  letter-spacing: .18em;
  line-height: 1;
  font-weight: 700;
  font-size: clamp(2.2rem, 7.2vw, 6rem);
  color: transparent;                 /* outlined text */
  -webkit-text-stroke: 2px rgba(63,59,55,.9); /* ink */
  text-shadow:
    0 0 0 rgba(63,59,55,.9);          /* non-webkit fallback */
  pointer-events: none;
}

/* Photo wrapper (keeps same vibe as your site) */
.about-photo{
  background: #fff;
}

/* Body copy */
.about-copy{
  max-width: 50ch;
  font-size: 1rem;
  line-height: 1.9;
  color: rgba(75,71,70,1);
}

/* Small caps helper (reuses your palette) */
.smallcaps{
  text-transform: uppercase;
  letter-spacing: .22em;
  font-size: .85rem;
}

/* Responsive: stack + center on mobile, headline becomes normal flow */
@media (max-width: 991.98px){
  .about-display{
    position: static;
    transform: none;
    text-align: center;
    font-size: clamp(2rem, 10vw, 3.25rem);
    -webkit-text-stroke: 1.5px rgba(63,59,55,.9);
    margin-bottom: 1rem;
  }
  .about-copy{
    margin-inline: auto;
    text-align: left;                /* keep body easy to read */
  }
}


/* ===== Minimal Footer ===== */
.footer-min{
  border-top: 1px solid rgba(0,0,0,.06);
  padding-block: 2.75rem;
}

.footer-brand{
  font-family: "le-monde-livre-classic-byol", serif;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-weight: 800;
  font-size: clamp(1.25rem, 2.6vw, 1.75rem);
  color: var(--gold);              /* keep your brand tone */
  text-decoration: none;
}
.footer-brand:hover{ opacity: .85; }

.footer-nav a{
  color: var(--ink);
  text-decoration: none;
}
.footer-nav a:hover{
  text-decoration: none;
  text-underline-offset: 3px;
}

/* dot separators */
.footer-nav .list-inline-item:not(:last-child)::after{
  content: "•";
  opacity: .45;
  margin-left: .75rem;
  margin-right: .25rem;
}

.footer-meta{
  color: rgba(0,0,0,.45);
}

