:root{
  --ink:rgb(17,24,20);
  --ink2:rgb(24,32,27);
  --bone:rgb(236,229,211);
  --bonedim:rgb(214,204,178);
  --gold:rgb(188,150,84);
  --wine:rgb(107,38,42);
  --heather:rgb(143,112,148);
  --bs-body-font-family:'Work Sans',sans-serif;
}
html{ overflow-x:hidden; }
body{ background:var(--bone); color:var(--ink); font-weight:300; overflow-x:hidden; max-width:100vw; }
h1,h2,h3,.font-serif{ font-family:'Fraunces',serif; font-weight:340; }
.eyebrow{ font-family:'JetBrains Mono',monospace; font-size:.7rem; letter-spacing:.2em; text-transform:uppercase; }

.btn-gold{ background:transparent; border:1px solid var(--heather); color:var(--heather); font-family:'JetBrains Mono',monospace; font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; padding:.7rem 1.6rem; border-radius:0; }
.btn-gold:hover{ background:var(--heather); color:var(--bone); }

/* Navbar */
.navbar{
  padding:1.4rem 0; transition:background .3s ease;
  background:linear-gradient(to bottom, rgba(10,10,8,.68) 0%, rgba(10,10,8,.32) 70%, rgba(10,10,8,0) 100%);
}
.navbar .navbar-brand{ font-family:'Fraunces',serif; color:var(--bone)!important; font-size:1.1rem; }
.navbar .nav-link{ color:var(--bone)!important; font-size:.74rem; letter-spacing:.12em; text-transform:uppercase; margin:0 .9rem; opacity:.85; }
.navbar .nav-link:hover, .navbar .nav-link.active{ opacity:1; }
.navbar.scrolled{ background:var(--ink) !important; box-shadow:0 2px 20px rgba(0,0,0,.3); }
.navbar-toggler{ border-color:rgba(241,236,224,.4); }
.navbar-toggler-icon{ filter:invert(1); }
@media (max-width:991.98px){
  .navbar-collapse.show, .navbar-collapse.collapsing{
    background:var(--ink); margin-top:1rem; padding:1.25rem; border-radius:2px;
    box-shadow:0 12px 30px rgba(0,0,0,.35);
  }
  .navbar-collapse .navbar-nav{ gap:.9rem; }
  .navbar-collapse .nav-link{ margin:0; }
}

/* Hero */
.hero{ position:relative; height:96vh; min-height:600px; display:flex; align-items:flex-end; overflow:hidden; }
.hero img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:saturate(.85) contrast(1.05) brightness(.85); }
.hero::after{ content:""; position:absolute; inset:0; background:linear-gradient(to top, rgba(10,10,8,.8) 0%, rgba(10,10,8,.35) 38%, rgba(10,10,8,.05) 65%); }
.hero-inner{ position:relative; z-index:2; padding-bottom:5rem; }
.hero-scrim{
  display:inline-block; padding:2.4rem 2.8rem; max-width:640px;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect width='16' height='16' fill='none'/%3E%3Cpath d='M0 8 L8 0' stroke='rgb(236,229,211)' stroke-width='1' opacity='0.05'/%3E%3Cpath d='M8 16 L16 8' stroke='rgb(236,229,211)' stroke-width='1' opacity='0.05'/%3E%3C/svg%3E"),
    linear-gradient(100deg, rgba(10,10,8,.62) 0%, rgba(10,10,8,.42) 70%, rgba(10,10,8,0) 100%);
  background-size:16px 16px, cover;
  border-radius:2px;
}
.kicker-gaelic{ font-family:'Fraunces',serif; font-style:italic; font-weight:340; color:var(--bonedim); font-size:1rem; display:block; margin-bottom:.6rem; opacity:.8; }
.hero h1{ color:var(--bone); font-size:clamp(2.6rem,6.5vw,5.2rem); line-height:1.02; max-width:14ch; }
.hero h1 em{ color:var(--gold); font-style:italic; }
.badge-award{ font-family:'JetBrains Mono',monospace; font-size:.7rem; letter-spacing:.1em; color:var(--heather); text-transform:uppercase; }
.badge-award::before{ content:""; display:inline-block; width:6px; height:6px; background:var(--heather); border-radius:50%; margin-right:8px; }

/* Abstract tartan-ribbon trim — a hairline nod to tartan, not a full plaid background */
.tartan-ribbon{
  height:10px; width:100%;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 12'%3E%3Crect width='40' height='12' fill='rgb(17,24,20)'/%3E%3Crect x='0' y='0' width='5' height='12' fill='rgb(107,38,42)'/%3E%3Crect x='9' y='0' width='1' height='12' fill='rgb(188,150,84)'/%3E%3Crect x='20' y='0' width='5' height='12' fill='rgb(143,112,148)'/%3E%3Crect x='29' y='0' width='1' height='12' fill='rgb(188,150,84)'/%3E%3C/svg%3E");
  background-repeat:repeat-x; background-size:40px 10px;
}

/* Page header (for interior pages without a full hero) */
.page-header{ background:var(--ink); color:var(--bone); padding:9rem 0 3.5rem; }
.page-header h1{ font-size:clamp(2rem,4vw,3rem); }
.page-header .eyebrow{ color:var(--gold); }

/* Page header with a background photo — used on gallery-forward pages (Portfolio, Recent Weddings) */
.page-header-photo{
  position:relative; background-size:cover; background-position:center;
  padding:11rem 0 4.5rem; overflow:hidden;
}
.page-header-photo::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(10,10,8,.72) 0%, rgba(10,10,8,.5) 55%, rgba(10,10,8,.82) 100%);
}
.page-header-photo .container{ position:relative; z-index:2; }

/* Alternating text/image split rows — used on long-copy pages (Wedding Photography, About Me) */
.split-section{ padding:0; margin-bottom:-1px; }
.split-section.tint{ background:rgb(228,220,199); }
.split-row{ display:grid; grid-template-columns:1fr 1fr; gap:0; align-items:stretch; width:100%; height:clamp(480px, 40vw, 720px); }
.split-row .split-text{ min-width:0; order:1; display:flex; flex-direction:column; justify-content:center; padding:3.25rem 2rem 3.25rem clamp(1.5rem, 5vw, 6rem); }
.split-row .split-image{ min-width:0; overflow:hidden; order:2; }
.split-row .split-image img{ display:block; width:100%; height:100%; object-fit:cover; }
.split-row.reverse{ grid-template-columns:1fr 1fr; }
.split-row.reverse .split-text{ order:2; padding:3.25rem clamp(1.5rem, 5vw, 6rem) 3.25rem 2rem; }
.split-row.reverse .split-image{ order:1; }
.split-text-only{ padding:3.25rem 0; }
@media (max-width:900px){
  .split-row, .split-row.reverse{ grid-template-columns:1fr; gap:0; height:auto; }
  .split-row .split-text, .split-row.reverse .split-text{ order:1; padding:1.75rem 1.5rem; }
  .split-row .split-image, .split-row.reverse .split-image{ order:2; aspect-ratio:5/4; }
  .split-text-only{ padding:2rem 0; }
}

/* Recognition strip */
.recognition{ background:var(--ink); color:var(--bonedim); padding:1.4rem 0; border-bottom:1px solid rgba(241,236,224,.12); font-family:'JetBrains Mono',monospace; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; }
.recognition strong{ color:var(--gold); }
@media (max-width:700px){
  .recognition .container{ flex-direction:column; align-items:center; text-align:center; gap:.6rem !important; }
}

section{ padding:6.5rem 0; }
section.intro { padding:2.5rem 0; }
section.intro.tint{ background:rgb(228,220,199); }

/* Gallery / lightbox */
.g-thumb{ overflow:hidden; cursor:pointer; border-radius:0; position:relative; }
.g-thumb img{ width:100%; aspect-ratio:4/5; object-fit:cover; transition:transform .5s ease; }
.g-thumb:hover img{ transform:scale(1.05); }
.g-cap{
  position:absolute; left:0; right:0; bottom:0; padding:14px 16px 12px;
  font-family:'JetBrains Mono',monospace; font-size:.68rem; letter-spacing:.06em; text-transform:uppercase;
  color:var(--bone); background:linear-gradient(to top, rgba(10,10,8,.75), transparent);
  opacity:0; transition:opacity .3s ease; pointer-events:none;
}
.g-thumb:hover .g-cap{ opacity:1; }

/* "Featured" tag on the Recent Weddings grid - set 'featured' => true on an entry
   in data/weddings.php to show it. */
.featured-badge{
  position:absolute; top:12px; left:12px; z-index:2;
  padding:5px 10px; font-family:'JetBrains Mono',monospace; font-size:.65rem;
  letter-spacing:.08em; text-transform:uppercase; color:var(--ink);
  background:var(--gold); border-radius:0;
}

/* Wedding gallery (couple's selection page) - single column, full uncropped photos,
   no lightbox: this is where the couple picks which prints/digitals they want. */
.wedding-gallery{ max-width:900px; }
.wedding-gallery img{ display:block; width:100%; height:auto; margin-bottom:1.5rem; }
.wedding-gallery img:last-child{ margin-bottom:0; }
.modal-content{ background:var(--ink); border-radius:0; border:none; padding:0; }
.modal-fullscreen .modal-content{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  height:100vh; padding:2rem 5%;
}
.modal-content img{ display:block; width:auto; height:auto; max-width:100%; max-height:85vh; margin:0 auto; }
.modal-cap{ padding:12px 20px; font-family:'JetBrains Mono',monospace; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:var(--gold); text-align:center; }
.btn-close{ filter:invert(1); }

/* Lightbox prev/next controls — fixed to the viewport edges, square, semi-transparent */
.lightbox-nav{
  position:fixed; top:50%; transform:translateY(-50%); z-index:1060;
  background:rgba(10,10,8,.5); border:1px solid rgba(241,236,224,.35); color:var(--bone);
  width:48px; height:48px; border-radius:4px; font-size:1.3rem; line-height:1;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  transition:background .2s ease;
}
.lightbox-nav:hover{ background:rgba(10,10,8,.85); }
.lightbox-prev{ left:24px; }
.lightbox-next{ right:24px; }
@media (max-width:600px){
  .lightbox-nav{ width:38px; height:38px; font-size:1rem; }
  .lightbox-prev{ left:10px; }
  .lightbox-next{ right:10px; }
}

/* Testimonial carousel */
.testi-section{ background:var(--ink); color:var(--bone); }
.carousel-item blockquote{ font-size:clamp(1.4rem,2.6vw,2rem); font-style:italic; max-width:760px; margin:0 auto 1.5rem; line-height:1.35; }
.avatar-circ{ width:52px; height:52px; border-radius:50%; background:var(--gold); color:var(--ink); display:inline-flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:500; margin-bottom:1rem; }
.carousel-indicators [data-bs-target]{ background:var(--heather); width:8px; height:8px; border-radius:50%; }

/* Packages cards */
.pkg-card{ background:transparent; border:1px solid rgba(20,20,16,.15); border-radius:0; height:100%; }
.pkg-card .card-body{ padding:2.4rem; display:flex; flex-direction:column; height:100%; }
.pkg-card .btn-gold{ margin-top:auto; align-self:flex-start; }
.pkg-card.featured{ background:var(--ink); color:var(--bone); border-color:var(--ink); }
.pkg-card .price{ font-family:'JetBrains Mono',monospace; color:var(--wine); }
.pkg-card.featured .price{ color:var(--heather); }
.pkg-card ul{ list-style:none; padding:0; font-size:.9rem; }
.pkg-card li{ padding:.5rem 0; border-top:1px solid rgba(0,0,0,.08); }
.pkg-card.featured li{ border-top:1px solid rgba(241,236,224,.15); }

/* Contact form */
.contact-section{ background:var(--ink); color:var(--bone); }
.form-control{ background:transparent; border:none; border-bottom:1px solid rgba(241,236,224,.3); border-radius:0; color:var(--bone); padding-left:0; }
.form-control:focus{ background:transparent; color:var(--bone); box-shadow:none; border-bottom-color:var(--heather); }
.form-label{ font-family:'JetBrains Mono',monospace; font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:#8c8873; }
.invalid-feedback{ color:var(--gold); }
.alert-sent{ background:transparent; border:1px solid var(--gold); color:var(--gold); border-radius:0; }

footer{ background:var(--bone); padding:3rem 0 2rem; font-size:.88rem; color:#5c5a4c; }
footer a{ color:inherit; text-decoration:none; }
.footer-bottom{
  margin-top:2rem; padding-top:1.2rem; border-top:1px solid rgba(20,20,16,.1);
  font-family:'JetBrains Mono',monospace; font-size:.7rem; color:#8c8873;
}
