/* ============================================================================
   Eagles Photography — SHARED STYLESHEET (styles.css)
   ----------------------------------------------------------------------------
   Loaded by index.html, services.html and portfolio.html.
   Contains everything common across the site:
     • Design tokens (colours, fonts, gradients) in :root
     • Global resets + the premium gradient backdrop
     • Header / navigation + mobile menu
     • Buttons, eyebrows, headings, scroll-reveal animation
     • Footer, social-logo buttons and the image lightbox
   Page-specific styling lives in a <style> block inside each HTML file.
   ============================================================================ */

/* ----------------------------------------------------------------------------
   1. DESIGN TOKENS
   Central place to tweak the whole site's look. Change a value here and it
   updates everywhere the var() is used.
   ---------------------------------------------------------------------------- */
:root{
  /* Backgrounds (dark luxury base) */
  --bg:#0c0d11;
  --bg-2:#111319;
  --bg-3:#171922;

  /* Text / ink colours */
  --ink:#f4f1e9;        /* primary text */
  --ink-soft:#b9b8ba;   /* secondary text */
  --ink-faint:#7d7c83;  /* captions, hints */

  /* Gold accent family */
  --gold:#e8b53f;
  --gold-bright:#f7cd63;
  --gold-deep:#b9851f;

  /* Silver + blue accents (used sparingly) */
  --silver:#d9dde4;
  --silver-deep:#9aa1ad;
  --blue:#2f6fe0;
  --blue-deep:#1c4fb0;

  /* Hairline / border colour (semi-transparent gold) */
  --line:rgba(232,181,63,.22);

  /* Typefaces:
       --serif  : elegant display serif for headings
       --sans   : clean utility sans for body + labels
       --script : flowing script reserved for the brand name (Great Vibes) */
  --serif:"Cormorant Garamond",Georgia,serif;
  --sans:"Jost",system-ui,sans-serif;
  --script:"Great Vibes",cursive;

  --maxw:1280px;        /* max content width */

  /* Premium base gradient used behind every page (requested brand gradient) */
  --grad-base:linear-gradient(135deg,#0a0a2a 0%,#2c2c2c 50%,#f7f7f7 100%);

  /* Per-category accent gradients (used on the Services packages + captions) */
  --grad-wedding:linear-gradient(135deg,#f7cd63,#e8b53f 45%,#d98a86);
  --grad-fashion:linear-gradient(135deg,#ff5cc4,#9b5cff);
  --grad-baby:linear-gradient(135deg,#7fc4ff,#f6a6c1);
  --grad-commercial:linear-gradient(135deg,#39d3c7,#2f6fe0);
}

/* ----------------------------------------------------------------------------
   2. GLOBAL RESET + BASE
   ---------------------------------------------------------------------------- */
*{margin:0;padding:0;box-sizing:border-box}      /* predictable sizing */
html{scroll-behavior:smooth}                      /* smooth in-page jumps */
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:300;
  line-height:1.7;
  overflow-x:hidden;                              /* never scroll sideways */
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--gold);color:#1a1407} /* branded text selection */
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}                 /* responsive images by default */

/* Premium gradient backdrop (fixed) + ambient glows.
   The dark veil over the gradient keeps text readable on every page. */
body::before{
  content:"";position:fixed;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(60% 50% at 12% 0%, rgba(232,181,63,.12), transparent 70%),   /* top-left gold glow */
    radial-gradient(50% 45% at 92% 8%, rgba(47,111,224,.14), transparent 70%),    /* top-right blue glow */
    radial-gradient(70% 60% at 85% 100%, rgba(247,205,99,.10), transparent 70%),  /* bottom warm glow */
    linear-gradient(180deg, rgba(10,11,20,.90), rgba(10,11,20,.93)),              /* dark legibility veil */
    var(--grad-base);                                                             /* the brand gradient */
  background-attachment:fixed;
}
/* Subtle film-grain texture layer (SVG noise) for a tactile, premium feel */
body::after{
  content:"";position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}

/* Centered content column used by every section */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 clamp(20px,5vw,64px);position:relative;z-index:3}

/* Small uppercase "eyebrow" label above headings */
.eyebrow{
  font-family:var(--sans);font-weight:500;font-size:.72rem;
  letter-spacing:.42em;text-transform:uppercase;color:var(--gold);
  display:inline-flex;align-items:center;gap:14px;
}
.eyebrow::before{content:"";width:34px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}

/* Headings + display type */
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.04;letter-spacing:.005em}
.display{font-size:clamp(2.7rem,8vw,6.6rem)}
h2.section-title{font-size:clamp(2.2rem,5vw,4rem);margin-top:.4em}
.italic{font-style:italic;color:var(--gold-bright)}   /* gold italic accent words */

/* ----------------------------------------------------------------------------
   3. HEADER / NAVIGATION
   Fixed bar that gains a blurred background once the page is scrolled.
   ---------------------------------------------------------------------------- */
header{
  position:fixed;top:0;left:0;right:0;z-index:50;
  transition:background .5s ease,backdrop-filter .5s ease,border-color .5s ease,padding .5s ease;
  border-bottom:1px solid transparent;
}
header.scrolled{                                   /* toggled by JS on scroll */
  background:rgba(12,13,17,.82);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.nav{display:flex;align-items:center;justify-content:space-between;padding:18px clamp(20px,5vw,64px);max-width:var(--maxw);margin:0 auto;transition:padding .5s}
header.scrolled .nav{padding-top:12px;padding-bottom:12px}

/* Brand lockup: logo image + studio name */
.brand{display:flex;align-items:center;gap:14px}
.brand img{height:54px;width:auto;border-radius:6px;filter:drop-shadow(0 4px 14px rgba(232,181,63,.25));transition:height .5s}
header.scrolled .brand img{height:44px}

/* Brand name uses the flowing Great Vibes script font */
.brand .bname{font-family:var(--script);font-size:2.05rem;line-height:.95;letter-spacing:.01em}
/* The "Photography" sub-label stays in the sans font so the tracked, uppercase
   text remains crisp and legible (script fonts don't read well letter-spaced). */
.brand .bname span{display:block;font-family:var(--sans);font-weight:400;font-size:.58rem;letter-spacing:.46em;text-transform:uppercase;color:var(--gold);margin-top:2px}

/* Desktop menu links with animated gold underline */
.menu{display:flex;align-items:center;gap:38px}
.menu a.link{font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);position:relative;padding:4px 0;transition:color .3s}
.menu a.link::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--gold);transition:width .35s ease}
.menu a.link:hover{color:var(--ink)}
.menu a.link.current{color:var(--gold)}            /* highlights the active page */
.menu a.link.current::after,.menu a.link:hover::after{width:100%}

/* ----------------------------------------------------------------------------
   4. BUTTONS
   ---------------------------------------------------------------------------- */
.btn{
  font-family:var(--sans);font-weight:500;font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;
  padding:14px 26px;border:1px solid var(--gold);color:#16120a;cursor:pointer;
  background:linear-gradient(135deg,var(--gold-bright),var(--gold) 45%,var(--gold-deep));
  position:relative;overflow:hidden;transition:transform .3s,box-shadow .3s;
  display:inline-block;
}
.btn::after{content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;            /* shine sweep on hover */
  background:linear-gradient(120deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-20deg);transition:left .6s}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 30px -8px rgba(232,181,63,.5)}
.btn:hover::after{left:130%}
.btn.ghost{background:transparent;color:var(--gold);border:1px solid var(--line)}            /* outline variant */
.btn.ghost:hover{border-color:var(--gold);color:var(--gold-bright);box-shadow:none}

/* Hamburger button (mobile only) — animates into an X when open */
.burger{display:none;flex-direction:column;gap:6px;background:none;border:0;cursor:pointer;padding:6px}
.burger span{width:26px;height:1.5px;background:var(--ink);transition:.3s}
.burger.open span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.burger.open span:nth-child(2){opacity:0}
.burger.open span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}

/* ----------------------------------------------------------------------------
   5. SCROLL-REVEAL + SECTION RHYTHM
   Elements with .reveal fade/slide in when JS adds .in (via IntersectionObserver)
   ---------------------------------------------------------------------------- */
.reveal{opacity:0;transform:translateY(34px);transition:opacity 1s cubic-bezier(.2,.7,.2,1),transform 1s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}

section{position:relative;padding:clamp(80px,11vw,150px) 0}   /* consistent vertical spacing */
.head-center{text-align:center;max-width:720px;margin:0 auto 64px}
.head-center p{color:var(--ink-soft);margin-top:18px}

/* ----------------------------------------------------------------------------
   6. SOCIAL LOGO BUTTONS
   Circular bordered buttons holding full-colour brand logos (Instagram,
   Gmail, WhatsApp). Each lifts and gains a branded glow on hover.
   ---------------------------------------------------------------------------- */
.socials{display:flex;gap:14px;margin-top:34px}
.socials a{width:46px;height:46px;border:1px solid var(--line);display:grid;place-items:center;
  color:var(--ink-soft);transition:.3s;border-radius:50%}
.socials a svg{width:22px;height:22px;display:block}      /* logo size inside the button */
.socials a.ig:hover{border-color:#e1306c;box-shadow:0 8px 20px -6px rgba(225,48,108,.5);transform:translateY(-3px)}
.socials a.wa:hover{border-color:#25d366;box-shadow:0 8px 20px -6px rgba(37,211,102,.5);transform:translateY(-3px)}
.socials a.gm:hover{border-color:#ea4335;box-shadow:0 8px 20px -6px rgba(234,67,53,.45);transform:translateY(-3px)}

/* ----------------------------------------------------------------------------
   7. FOOTER
   ---------------------------------------------------------------------------- */
footer{border-top:1px solid var(--line);padding:60px 0 40px;background:rgba(10,11,15,.4)}
.foot{display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap}
.foot .brand img{height:60px}
.foot-nav{display:flex;gap:28px;flex-wrap:wrap}
.foot-nav a{font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);transition:.3s}
.foot-nav a:hover{color:var(--gold)}
.copy{margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.74rem;color:var(--ink-faint)}
.copy a{color:var(--ink-faint)}.copy a:hover{color:var(--gold)}

/* ----------------------------------------------------------------------------
   8. LIGHTBOX (full-screen image viewer, used on the Portfolio page)
   ---------------------------------------------------------------------------- */
.lightbox{position:fixed;inset:0;z-index:100;background:rgba(6,7,10,.95);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;padding:40px}
.lightbox.show{display:flex}                       /* toggled open by JS */
.lightbox img{max-width:90vw;max-height:86vh;object-fit:contain;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.lightbox .x{position:absolute;top:24px;right:30px;font-size:2rem;color:var(--ink-soft);cursor:pointer;background:none;border:0;line-height:1}
.lightbox .x:hover{color:var(--gold)}
.lightbox .nav-arrow{position:absolute;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--ink-soft);font-size:2.4rem;cursor:pointer;padding:14px;transition:color .3s}
.lightbox .nav-arrow:hover{color:var(--gold)}
.lightbox .prev{left:18px}.lightbox .next{right:18px}

/* ----------------------------------------------------------------------------
   9. MOBILE MENU + RESPONSIVE TWEAKS (≤ 760px)
   ---------------------------------------------------------------------------- */
.mobile{display:none}                              /* hidden on desktop */
@media(max-width:760px){
  .menu{display:none}                              /* hide desktop links */
  .burger{display:flex}                            /* show hamburger */
  .brand .bname{font-size:1.6rem}                  /* script scales down on phones */
  .brand img{height:46px}
  .foot{flex-direction:column;text-align:center}

  /* Full-screen overlay menu that drops down when the hamburger is tapped */
  .mobile{display:block;position:fixed;inset:0;z-index:45;background:rgba(10,11,15,.97);backdrop-filter:blur(16px);
    transform:translateY(-100%);transition:transform .5s cubic-bezier(.4,0,.2,1);padding-top:120px}
  .mobile.open{transform:none}
  .mobile a{display:block;text-align:center;font-family:var(--serif);font-size:2rem;padding:14px;color:var(--ink)}
  .mobile a:hover{color:var(--gold)}
  .mobile .btn{display:inline-block;width:auto;margin:20px auto 0;color:#16120a}
  .mobile .mwrap{text-align:center}
}

/* ----------------------------------------------------------------------------
   10. ACCESSIBILITY — respect users who prefer reduced motion
   ---------------------------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}                /* show content without animating */
}
