/* ==========================
   Positive Image Photography
   ========================== */

:root{
  --bg:#333333;
  --surface:#2a2a2a;
  --text:#dddddd;
  --muted:#dcdcdc;
  --accent:#e00000;
  --accent-contrast:#ffffff;
  --ring: rgba(68,230,195,.35);
  --maxw:1200px;
  --radius:18px;
  --shadow:0 10px 30px rgba(0,0,0,.35);
}

*{ box-sizing:border-box; }
html,body{ height:100%; }
body{
  margin:0;
  font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);
  color:var(--text);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{ max-width:100%; height:auto; display:block; border-radius:12px; }
a{ color:inherit; text-decoration:none; }
.container{ max-width:var(--maxw); margin-inline:auto; padding:clamp(16px,2vw,28px); }
html {
  scroll-behavior: smooth;
}
/* =================
   Header
   ================= */
.site-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: rgba(51, 51, 51, 0.8);  /* 80% opaque = 20% transparent */
  border-bottom: 1px solid rgba(255, 255, 255, .06);
  backdrop-filter: saturate(120%) blur(6px);
}
.header-inner{ display:flex; align-items:center; justify-content:space-between; gap:16px; }
.brand{ display:flex; align-items:center; gap:12px; font-weight:700; letter-spacing:.2px; }
/* Override old brand-logo size */
.brand-logo {
  width: auto !important;
  height: auto !important;
  max-height: 100px;   /* desktop */
}
@media (max-width: 768px) {
  .brand-logo { max-height: 72px !important; }
}
@media (max-width: 480px) {
  .brand-logo { max-height: 60px !important; }
}

.brand-name{ display:none; }
@media (min-width:640px){ .brand-name{ display:inline-block; color:#eee; } }

.site-header nav{ display:flex; gap:clamp(10px,2vw,22px); align-items:center; flex-wrap:wrap; }
.site-header nav a{ opacity:.9; }
.site-header nav a:hover{ opacity:1; }

/* Logo sizing + hover */
.site-logo img,
.brand-logo{
  height:64px; width:auto; object-fit:contain; display:block; transition:transform .25s ease;
}
@media (max-width:768px){ .site-logo img,.brand-logo{ height:48px; } }
@media (max-width:480px){ .site-logo img,.brand-logo{ height:40px; } }
.site-logo:hover img{ transform:scale(1.05); }
.logo-on-dark .site-logo img{ filter:brightness(1.15) contrast(1.05); }

/* =================
   Sections / Hero
   ================= */
.section{ padding:clamp(20px,5vw,36px) 0; }
.section-head{ margin-bottom:clamp(18px,3vw,26px); }
.section h2{ font-size:clamp(24px,3vw,38px); line-height:1.2; margin:0 0 8px; color:#eee; }
.section-head p{ margin:0; color:var(--muted); }

/* Static hero (not used when Swiper present) */
.hero{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(20px,4vw,48px); align-items:center; padding-top:40px; }
.hero-image{ box-shadow:var(--shadow); border-radius:clamp(14px,2vw,22px); }
.hero h1{ font-size:clamp(32px,4vw,56px); line-height:1.05; margin:0 0 12px; color:#f0f0f0; letter-spacing:.2px; }
.hero p{ font-size:clamp(16px,2vw,20px); color:var(--muted); margin:0 0 18px; }
.trust{ display:flex; gap:18px; flex-wrap:wrap; margin:14px 0 0; padding:0; list-style:none; color:#d6d6d6; font-weight:500; }
.cta{ display:flex; gap:12px; flex-wrap:wrap; }

/* =================
   Cards / Grids
   ================= */
.grid{ display:grid; gap:clamp(16px,2.5vw,24px); }
.cards-3{ grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); }
.card{
  background:linear-gradient(180deg,#3a3a3a,#2f2f2f);
  border:1px solid rgba(255,255,255,.06);
  padding:clamp(16px,2.2vw,22px);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
}
.card h3{ margin:6px 0 8px; color:#f0f0f0; }
.card p{ margin:0; color:var(--muted); }
.card-icon{ font-size:24px; opacity:.9; }

/* =================
   Gallery
   ================= */
.gallery{ grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); }
.gallery figure{ margin:0; }
.gallery img{ aspect-ratio:4/3; object-fit:cover; }

/* =================
   Pricing
   ================= */
.price .price-tag{ font-size:clamp(28px,3vw,36px); font-weight:800; margin:4px 0 12px; color:#fff; }
.list{ padding-left:20px; }
.list li{ margin:6px 0; color:#d3d3d3; }

/* =================
   About
   ================= */
.about-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(20px,4vw,48px); align-items:center; }
.about-copy h3{ margin:0 0 8px; color:#eee; }
.about-image{ box-shadow:var(--shadow); }

/* =================
   Contact / Form
   ================= */
.form-grid{ grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); }
.form-grid .full{ grid-column:1/-1; }

.simple-form{
  background:#333333;
  color:#ffffff;
  border:1px solid rgba(255,255,255,.08);
  padding:clamp(16px,2.2vw,22px);
  border-radius:18px;
  box-shadow:0 10px 30px rgba(0,0,0,.35);
}
.simple-form label{ display:grid; gap:8px; }
.simple-form span{ color:#ffffff; font-weight:600; }
.simple-form input,
.simple-form textarea{
  width:100%;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.18);
  background:#2b2b2b;
  color:#ffffff;
  outline:none;
}
.simple-form input:focus,
.simple-form textarea:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 6px rgba(68,230,195,.25);
}
.simple-form .hp{ position:absolute; left:-9999px; opacity:0; height:0; width:0; }
.simple-form button{ margin-top:20px; }

/* Floor Plan calculator */
.calc{ margin-top:14px; display:grid; gap:8px; }
.calc label{ font-size:20px; color:#40ff93; }
.calc input{
  padding:10px; border-radius:10px;
  border:2px solid rgba(204,204,204,.15);
  background:#2b2b2b; color:#40ff93; font-size:1.2rem;
}
.card.price .calc-result{ font-weight:800; color:#40ff93; font-size:1.2rem; }

/* =================
   Footer
   ================= */
.site-footer{ border-top:1px solid rgba(255,255,255,.08); margin-top:40px; }
.site-footer .container{ display:flex; gap:18px; align-items:center; justify-content:space-between; flex-wrap:wrap; }
.site-footer nav{ display:flex; gap:14px; }
.fine{ color:#a5a5a5; font-size:13px; }

/* =================
   Global mobile fixes
   ================= */
html,body{ max-width:100%; overflow-x:hidden; }
img,video,svg,canvas,iframe{ max-width:100%; height:auto; display:block; }
.section p,.section h1,.section h2,.section h3{ overflow-wrap:anywhere; }

/* =================
   Swiper Hero
   ================= */
.hero-swiper{
  position:relative;
  height:clamp(420px,70vh,760px);
  overflow:hidden;
  background:#222;
}
.hero-swiper .swiper,
.hero-swiper .swiper-wrapper,
.hero-swiper .swiper-slide{ height:100%; }
.hero-swiper .swiper-slide{ position:relative; }
.hero-swiper .swiper-slide img{
  width:100%; height:100%; object-fit:cover; display:block;
}

/* pagination + arrows */
.hero-swiper .swiper-pagination-bullet{ background:rgba(255,255,255,.7); opacity:.7; }
.hero-swiper .swiper-pagination-bullet-active{ background:var(--accent); opacity:1; }
.hero-swiper .swiper-button-prev,
.hero-swiper .swiper-button-next{ color:#fff; text-shadow:0 6px 18px rgba(0,0,0,.45); }

/* overlay content */
.hero-overlay{
  position:absolute; inset:0; display:grid; place-items:center start;
  pointer-events:none;
}
.hero-overlay .cta{ pointer-events:auto; }
.hero-overlay h1{
  font-size:clamp(32px,4vw,56px);
  line-height:1.05; margin:0 0 12px; color:#f0f0f0;
}
.hero-overlay p{ color:var(--muted); margin:0 0 18px; }
@media (max-width:640px){ .hero-overlay .cta .btn{ padding:10px 14px; } }

/* =================
   Animated Portfolio
   ================= */
.portfolio-grid{ display:grid; grid-template-columns:repeat(12,1fr); gap:14px; }
.p-card{
  grid-column:span 4;
  position:relative; overflow:hidden; border-radius:16px;
  background:#2b2b2b; transform:translateY(18px); opacity:0;
  transition:transform .7s ease, opacity .7s ease, box-shadow .3s ease;
  box-shadow:0 8px 24px rgba(0,0,0,.28); cursor:zoom-in;
}
.p-card img{
  width:100%; height:100%; aspect-ratio:4/3; object-fit:cover; display:block;
  transform:scale(2.0); transition:transform .7s ease;
}
.p-card figcaption{
  position:absolute; inset:auto 0 0 0;
  padding:10px 12px;
  background:linear-gradient(to top,rgba(0,0,0,.55),rgba(0,0,0,0));
  color:#fff; font-weight:600; font-size:14px;
  opacity:0; transform:translateY(10px);
  transition:opacity .35s ease, transform .35s ease;
}
.p-card:hover,.p-card:focus-within{ box-shadow:0 12px 34px rgba(0,0,0,.4); }
.p-card:hover img{ transform:scale(1.08); }
.p-card:hover figcaption{ opacity:1; transform:translateY(0); }
.p-card.revealed{ transform:translateY(0); opacity:1; }
.lightbox{
  position:fixed; inset:0; display:none; background:rgba(0,0,0,.92);
  z-index:1000; align-items:center; justify-content:center;
}
.lightbox.open{ display:flex; }
.lb-img{
  max-width:min(92vw,1400px); max-height:80vh; object-fit:contain;
  border-radius:12px; box-shadow:0 20px 60px rgba(0,0,0,.6);
}
.lb-caption{
  position:fixed; bottom:24px; left:50%; transform:translateX(-50%);
  color:#fff; background:rgba(0,0,0,.4); padding:6px 10px; border-radius:10px; font-size:14px;
}
.lb-close,.lb-prev,.lb-next{
  position:fixed; top:18px; background:rgba(255,255,255,.12); color:#fff;
  border:0; border-radius:12px; padding:8px 12px; font-size:26px; cursor:pointer;
  backdrop-filter:blur(4px);
}
.lb-close{ right:18px; }
.lb-prev,.lb-next{ top:50%; transform:translateY(-50%); font-size:34px; }
.lb-prev{ left:16px; } .lb-next{ right:16px; }

/* Responsive columns for portfolio */
@media (max-width:980px){ .p-card{ grid-column:span 6; } }
@media (max-width:560px){ .p-card{ grid-column:span 12; } }

/* Reduced motion accessibility */
@media (prefers-reduced-motion: reduce){
  .p-card, .p-card img, .p-card figcaption{ transition:none !important; transform:none !important; }
}

/* =================
   Responsive layout
   ================= */
@media (max-width:920px){
  .hero{ grid-template-columns:1fr; }
  .about-grid{ grid-template-columns:1fr; }
}
@media (max-width:480px){
  body{ font-size:16px; line-height:1.7; }
  .section{ padding:28px 0; }
  .section h2{ font-size:22px; }
}
/* Keep nav links slightly dim, but NOT the button */
.site-header nav a.btn { opacity: 1; }

/* Belt-and-suspenders */
.site-header nav .btn-accent{
  background: var(--accent);
  color: var(--accent-contrast);
  border-color: transparent;
}
/* ===== Buttons ===== */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:12px 20px;              /* size */
  border-radius:18px;             /* rounded corners */
  font-weight:700;
  line-height:1;
  border:1px solid transparent;
  cursor:pointer;
  text-decoration:none;
  transition: transform .15s ease, box-shadow .2s ease, opacity .2s ease;
}
.btn:hover{ transform: translateY(-1px); }
.btn:active{ transform: translateY(0); }

/* Variants */
.btn-accent{
  background: var(--accent);
  color: var(--accent-contrast);
  box-shadow: 0 8px 22px rgba(224,0,0,.35);
}
.btn-accent:hover{ box-shadow: 0 10px 26px rgba(224,0,0,.45); }

.btn-outline{
  background: transparent;
  color: #e6e6e6;
  border-color: rgba(255,255,255,.22);
}
.btn-outline:hover{
  border-color: var(--accent);
  color: #ffffff;
}

/* Sizes (optional helpers) */
.btn-lg{ padding:14px 24px; border-radius:22px; font-size:1.05rem; }
.btn-sm{ padding:9px 14px; border-radius:14px; font-size:.95rem; }

/* Header nav: don’t dim buttons */
.site-header nav a.btn{ opacity:1; }

/* Site Logo */
/* ==== Logo sizing overrides (place at end) ==== */

/* Default desktop logo */
.brand-logo {
  height: 90px;       /* good size for laptops/desktops */
  width: auto;
  object-fit: contain;
  display: block;
}

/* Tablet */
@media (max-width: 768px) {
  .brand-logo {
    height: 70px;
  }
}

/* Mobile */
@media (max-width: 480px) {
  .brand-logo {
    height: 100px;   /* ensures it doesn't shrink too tiny */
  }
}
/* === Make logo large on phones and allow room === */
@media (max-width: 600px){
  /* ensure the header can grow and items wrap */
  .site-header .header-inner{
    display: flex;
    align-items: left;
    justify-content: left;
    flex-wrap: wrap;                 /* nav drops under logo */
    row-gap: 8px;                    /* space between rows */
    padding-top: 8px;
    padding-bottom: 8px;
  }

  /* keep brand on its own row */
  .brand{
    flex: 0 0 100%;
    display: flex;
    align-items: left;
    justify-content: left;         /* center the logo */
  }

  /* FORCE bigger logo on mobile */
  .brand-logo{
    height: 90px !important;         /* ← make this bigger if you want */
    width: auto !important;
    max-width: 90vw;                  /* don’t overflow the viewport */
    object-fit: contain;
  }

  /* make buttons a touch smaller so they fit under the big logo */
  .site-header nav .btn{
    padding: 10px 14px;
    border-radius: 16px;
  }

  /* reduce link spacing so everything fits nicely */
  .site-header nav{
    gap: 10px;
    justify-content: left;
    flex-wrap: wrap;
    width: 100%;
  }
}.card a {
  color: inherit;
  text-decoration: none;
  transition: color 0.2s ease;
}

.card a:hover {
  color: var(--accent);
}
/* Footer CTA */
.footer-cta {
  text-align: center;
  margin: 18px 0;
}

.footer-cta .btn {
  padding: 14px 28px;
  font-size: 1.1rem;
  border-radius: 22px;
  background: var(--accent);
  color: var(--accent-contrast);
  box-shadow: 0 8px 24px rgba(224,0,0,.4);
}

.footer-cta .btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 28px rgba(224,0,0,.5);
}
