/* ═══════════════════════════════════════════════
   CSA FamilyCloud — Johnson Heritage Family
   Tobacco Brown #4A2C0A · Harvest Gold #C8922A
   Nathalie, Virginia · Halifax County
   ═══════════════════════════════════════════════ */

/* ── Variables ───────────────────────────────── */
:root {
  --primary:       #4A2C0A;
  --primary-light: #7A4A1A;
  --primary-dark:  #2A1505;
  --primary-muted: rgba(74,44,10,0.6);
  --accent:        #C8922A;
  --accent-light:  #E8B84B;
  --accent-pale:   #F5D98A;
  --cream:         #FAF6EF;
  --tan:           #F0E8D8;
  --stone:         #8A7060;
  --dark:          #1A1008;
  --white:         #ffffff;
  --serif:         Georgia, 'Times New Roman', serif;
  --sans:          -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --max-w:         1080px;
}

/* ── Reset ───────────────────────────────────── */
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html  { scroll-behavior:smooth; }
body  { font-family:var(--sans); background:var(--cream); color:var(--dark); overflow-x:hidden; }
img   { max-width:100%; display:block; }
button{ cursor:pointer; font-family:var(--sans); }
ul    { list-style:none; }
a     { text-decoration:none; }

/* ── CRITICAL: hidden attribute fix ─────────────
   Prevents CSS display:flex overriding hidden    */
[hidden]             { display: none !important; }
#lightbox[hidden]    { display: none !important; }
#album-modal[hidden] { display: none !important; }

/* ── Keyframes ───────────────────────────────── */
@keyframes fadeUp  { from{opacity:0;transform:translateY(14px)} to{opacity:1;transform:translateY(0)} }
@keyframes loadbar { 0%{width:0;margin-left:0} 50%{width:55%} 100%{width:0;margin-left:100%} }

/* ── Monogram ────────────────────────────────── */
.monogram {
  width:60px; height:60px;
  border:1.5px solid var(--accent); border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-size:24px; color:var(--accent);
}

/* ── Loading ─────────────────────────────────── */
#loading {
  position:fixed; inset:0; z-index:9000;
  background:var(--primary-dark);
  display:flex; align-items:center; justify-content:center;
}
.load-card   { text-align:center; }
.load-card .monogram { margin:0 auto 18px; }
.load-text   { font-size:11px; letter-spacing:3px; text-transform:uppercase; color:rgba(200,146,42,.5); margin-bottom:16px; }
.load-bar    { width:200px; height:2px; background:rgba(200,146,42,.15); border-radius:1px; overflow:hidden; margin:0 auto; }
.load-fill   { height:100%; background:var(--accent); animation:loadbar 1.5s ease-in-out infinite; }

/* ── Nav ─────────────────────────────────────── */
nav {
  position:sticky; top:0; z-index:200;
  background:rgba(74,44,10,.97); backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(200,146,42,.25);
}
.nav-inner {
  max-width:var(--max-w); margin:0 auto; padding:0 44px;
  display:flex; align-items:center; justify-content:space-between; height:64px;
}
.nav-brand   { display:flex; align-items:center; gap:12px; }
.nav-mono    { width:38px; height:38px; font-size:15px; flex-shrink:0; }
.nav-title   { font-family:var(--serif); font-size:16px; color:var(--white); }
.nav-links   { display:flex; gap:30px; }
.nav-links a { font-size:13px; color:rgba(255,255,255,.6); letter-spacing:.4px; transition:color .2s; }
.nav-links a:hover { color:var(--accent-light); }

/* ── Hero ────────────────────────────────────── */
.hero {
  height:88vh; min-height:520px; position:relative;
  display:flex; align-items:center; justify-content:center;
  text-align:center; overflow:hidden;
}
.hero-bg {
  position:absolute; inset:0;
  background:
    linear-gradient(180deg,rgba(74,44,10,.45) 0%,rgba(74,44,10,.15) 40%,rgba(74,44,10,.65) 100%),
    linear-gradient(145deg,#4A2C0A 0%,#8B5A2A 25%,#6B7A3A 55%,#3A5A2A 75%,#2A1505 100%);
}
.hero-content { position:relative; z-index:2; padding:0 20px; animation:fadeUp .7s ease both; }
.hero-loc    { font-size:11px; letter-spacing:4px; text-transform:uppercase; color:var(--accent-light); margin-bottom:18px; }
.hero-title  { font-family:var(--serif); font-size:64px; font-weight:400; color:var(--white); line-height:1.05; margin-bottom:16px; text-shadow:0 2px 28px rgba(0,0,0,.4); }
.hero-line   { width:54px; height:1px; background:var(--accent); margin:0 auto 20px; }
.hero-tag    { font-size:17px; color:rgba(255,255,255,.75); font-style:italic; font-family:var(--serif); }

/* ── Sections ────────────────────────────────── */
.section       { padding:90px 0; }
.section-cream { background:var(--cream); }
.section-tan   { background:var(--tan); }
.section-dark  { background:var(--primary-dark); }
.container     { max-width:var(--max-w); margin:0 auto; padding:0 44px; }
.label         { font-size:11px; letter-spacing:3px; text-transform:uppercase; color:var(--accent); display:block; margin-bottom:9px; }
.label-light   { color:var(--accent-light); }
.section-title { font-family:var(--serif); font-size:38px; font-weight:400; color:var(--primary); margin-bottom:13px; line-height:1.15; }
.section-title-light { color:var(--white); }
.divider       { width:46px; height:2px; background:var(--accent); margin-bottom:34px; }
.divider-center{ margin-left:auto; margin-right:auto; }
.section-center{ text-align:center; margin-bottom:52px; }
.body-text     { font-size:15px; line-height:1.85; color:var(--stone); max-width:680px; }

/* ── Our Story ───────────────────────────────── */
.story-grid  { display:grid; grid-template-columns:1fr 1fr; gap:70px; align-items:center; }
.story-stats { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.stat-card   { background:var(--primary); border-radius:12px; padding:28px 18px; text-align:center; }
.stat-gold   { background:var(--accent-light); }
.stat-num    { font-family:var(--serif); font-size:40px; color:var(--accent); display:block; margin-bottom:5px; }
.stat-label  { font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:rgba(255,255,255,.45); }

/* ── Gallery ─────────────────────────────────── */
.album-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.album-card {
  border-radius:12px; overflow:hidden; cursor:pointer;
  transition:transform .3s,box-shadow .3s;
}
.album-card:hover { transform:scale(1.022); box-shadow:0 12px 40px rgba(0,0,0,.2); }
.album-cover { aspect-ratio:4/3; position:relative; overflow:hidden; background:#c8a87a; }
.album-cover img { width:100%; height:100%; object-fit:cover; transition:transform .4s; }
.album-card:hover .album-cover img { transform:scale(1.06); }
.album-placeholder { width:100%; height:100%; background:linear-gradient(135deg,var(--primary),var(--accent)); }
.album-overlay { position:absolute; inset:0; background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.55)); }
.album-info  { padding:12px 14px; background:var(--white); }
.album-name  { font-size:14px; font-weight:500; color:var(--primary); display:block; margin-bottom:2px; }
.album-count { font-size:12px; color:var(--stone); }
.gallery-msg { font-size:14px; color:var(--stone); padding:40px 0; text-align:center; grid-column:1/-1; }

/* ── Album Modal ─────────────────────────────── */
#album-modal {
  position:fixed; inset:0; z-index:800;
  background:rgba(0,0,0,.75);
  display:flex; align-items:center; justify-content:center; padding:20px;
}
.modal-box {
  background:var(--white); border-radius:14px;
  width:100%; max-width:900px; max-height:90vh;
  display:flex; flex-direction:column; overflow:hidden;
}
.modal-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:15px 20px; border-bottom:1px solid rgba(0,0,0,.08);
}
.modal-header h3 { font-family:var(--serif); font-size:20px; color:var(--primary); }
.modal-header button { background:none; border:none; font-size:18px; color:var(--stone); padding:4px 8px; border-radius:4px; }
.modal-header button:hover { background:rgba(0,0,0,.06); }
.photo-grid {
  padding:14px; overflow-y:auto;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:10px;
}
.photo-thumb { aspect-ratio:4/3; border-radius:8px; overflow:hidden; cursor:pointer; position:relative; }
.photo-thumb img { width:100%; height:100%; object-fit:cover; transition:transform .3s; }
.photo-thumb:hover img { transform:scale(1.05); }
.photo-overlay {
  position:absolute; inset:0; background:rgba(74,44,10,.4);
  opacity:0; transition:opacity .2s;
  display:flex; align-items:center; justify-content:center;
  color:white; font-size:20px;
}
.photo-thumb:hover .photo-overlay { opacity:1; }

/* ── Lightbox ────────────────────────────────── */
#lightbox {
  position:fixed; inset:0; z-index:1000;
  background:rgba(0,0,0,.93);
  display:flex; align-items:center; justify-content:center;
}
#lb-close {
  position:fixed; top:18px; right:20px;
  background:rgba(255,255,255,.12); border:none; color:white;
  font-size:19px; width:40px; height:40px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; transition:background .2s;
}
#lb-close:hover { background:rgba(255,255,255,.25); }
#lb-prev, #lb-next {
  background:rgba(255,255,255,.1); border:none; color:white;
  font-size:28px; width:48px; height:48px; border-radius:50%;
  cursor:pointer; transition:background .2s; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
}
#lb-prev:hover, #lb-next:hover { background:rgba(255,255,255,.2); }
#lb-prev:disabled, #lb-next:disabled { opacity:.25; cursor:default; }
#lb-img-wrap { display:flex; align-items:center; justify-content:center; flex:1; }
#lb-img-wrap img { max-width:82vw; max-height:86vh; border-radius:5px; object-fit:contain; }
#lb-count { position:fixed; bottom:20px; left:50%; transform:translateX(-50%); color:rgba(255,255,255,.55); font-size:13px; }

/* ── Timeline ────────────────────────────────── */
.timeline { position:relative; max-width:780px; margin:0 auto; }
.timeline::before {
  content:''; position:absolute; left:50%; top:0; bottom:0;
  width:1px; background:rgba(200,146,42,.25); transform:translateX(-50%);
}
.tl-item    { display:grid; grid-template-columns:1fr 48px 1fr; gap:28px; margin-bottom:46px; align-items:center; }
.tl-right   { text-align:right; }
.tl-left    { text-align:left; }
.tl-event   { font-family:var(--serif); font-size:17px; color:var(--white); margin-bottom:8px; line-height:1.3; }
.tl-event-gold { color:var(--accent-light); }
.tl-detail  { font-size:13px; color:rgba(255,255,255,.45); line-height:1.65; }
.tl-dot {
  width:48px; height:48px; border-radius:50%;
  background:var(--primary-dark); border:1.5px solid var(--accent);
  display:flex; align-items:center; justify-content:center;
  margin:0 auto; position:relative; z-index:1;
}
.tl-dot-gold { border-color:var(--accent-light); background:rgba(200,146,42,.12); }
.tl-year     { font-family:var(--serif); font-size:11px; color:var(--accent); }
.tl-year-gold{ color:var(--accent-light); }
.tl-spacer   { display:block; }

/* ── Family Members ──────────────────────────── */
.member-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:22px; margin-bottom:28px; }
.member-card { text-align:center; }
.avatar {
  width:80px; height:80px; border-radius:50%;
  margin:0 auto 12px;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-size:26px; color:var(--white);
}
.member-name { font-family:var(--serif); font-size:13px; color:var(--primary); margin-bottom:3px; }
.member-role { font-size:11px; color:var(--stone); line-height:1.5; }
.member-note { text-align:center; font-size:13px; color:var(--stone); font-style:italic; }

/* ── Footer ──────────────────────────────────── */
footer { background:#150A02; padding:52px 44px; text-align:center; }
.footer-mono { width:50px; height:50px; border:1px solid rgba(200,146,42,.35); border-radius:50%; display:flex; align-items:center; justify-content:center; margin:0 auto 14px; font-family:var(--serif); font-size:19px; color:var(--accent); }
.footer-name { font-family:var(--serif); font-size:18px; color:rgba(255,255,255,.65); margin-bottom:8px; }
.footer-text { font-size:13px; color:rgba(255,255,255,.3); margin-bottom:3px; }
.footer-csa  { margin-top:20px; padding-top:16px; border-top:1px solid rgba(255,255,255,.06); font-size:11px; color:rgba(255,255,255,.18); letter-spacing:.4px; }

/* ── Error toast ─────────────────────────────── */
#error-toast {
  position:fixed; bottom:22px; left:50%; transform:translateX(-50%);
  background:#C00000; color:white; padding:11px 18px;
  border-radius:8px; font-size:13px; z-index:9999; max-width:90vw;
}

/* ── Responsive ──────────────────────────────── */
@media(max-width:900px){ .member-grid{ grid-template-columns:repeat(3,1fr); } }
@media(max-width:768px){
  .hero-title   { font-size:40px; }
  .story-grid   { grid-template-columns:1fr; gap:40px; }
  .album-grid   { grid-template-columns:1fr 1fr; }
  .member-grid  { grid-template-columns:repeat(2,1fr); }
  .nav-links    { display:none; }
  .nav-inner,.container { padding:0 20px; }
  .tl-item      { grid-template-columns:48px 1fr; }
  .tl-spacer    { display:none; }
  .tl-right     { text-align:left; order:2; }
  .tl-dot       { order:1; margin:0; }
  .timeline::before { left:24px; }
}
@media(max-width:480px){
  .album-grid   { grid-template-columns:1fr; }
  .member-grid  { grid-template-columns:repeat(2,1fr); }
}

/* ── Login Screen ── */
.login-screen {
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  background:var(--primary-dark);
}
.login-card {
  background:rgba(255,255,255,.05); border:1px solid rgba(200,146,42,.2);
  border-radius:18px; padding:48px; width:400px; text-align:center;
}
.login-card .monogram { margin:0 auto 20px; }
.login-title  { font-family:var(--serif); font-size:24px; font-weight:400; color:#fff; margin-bottom:6px; }
.login-sub    { font-size:11px; color:rgba(255,255,255,.4); letter-spacing:2px; text-transform:uppercase; margin-bottom:24px; }
.login-label  { font-size:13px; color:rgba(255,255,255,.5); margin-bottom:16px; }
.social-btn {
  display:block; width:100%; padding:12px; margin-bottom:10px;
  border-radius:8px; border:1px solid rgba(255,255,255,.15);
  background:rgba(255,255,255,.06); color:#fff; font-size:14px;
  cursor:pointer; transition:all .2s;
}
.social-btn:hover { background:rgba(255,255,255,.14); border-color:rgba(200,146,42,.4); }
.login-footer { margin-top:20px; font-size:11px; color:rgba(255,255,255,.25); }

/* ── Logout Button ── */
#logout-btn {
  background: none;
  border: 1px solid rgba(255,255,255,.3);
  color: rgba(255,255,255,.7);
  font-size: 12px;
  padding: 5px 12px;
  border-radius: 5px;
  cursor: pointer;
  transition: all .2s;
}
#logout-btn:hover {
  background: rgba(255,255,255,.1);
  border-color: var(--accent);
  color: var(--accent-light);
}
