/* ═══════════════════════════════════════════════════════
   DESIGN TOKENS
═══════════════════════════════════════════════════════ */
:root {
  --deep-black:   #080610;
  --rich-purple:  #3b1a5a;
  --mid-purple:   #5c2d8a;
  --light-purple: #9b59b6;
  --pale-purple:  #dcc6f5;
  --muted-lilac:  #cdb4e8;
  --gold:         #e0b84a;
  --gold-light:   #f5d878;
  --ivory:        #faf6ee;
  --candle-red:   #c0392b;
  --candle-orange:#e67e22;
  --candle-yellow:#f1c40f;
  --text-mid:     #d4b8f0;
  --text-light:   #b89ed4;
  --nav-bg:       rgba(10,6,20,0.95);
  --banner-h:     36px;
  --nav-h:        56px;
}

/* ═══ RESET ═══ */
*, *::before, *::after { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:smooth; }
body {
  background:var(--deep-black);
  color:var(--ivory);
  font-family:'EB Garamond',Georgia,serif;
  font-size:18px; line-height:1.75;
  overflow-x:hidden;
}

/* ═══ PARTICLES ═══ */
.particles { position:fixed; inset:0; pointer-events:none; z-index:0; overflow:hidden; }
.particle {
  position:absolute; width:2px; height:2px;
  background:var(--gold-light); border-radius:50%; opacity:0;
  animation:floatUp linear infinite;
}
@keyframes floatUp {
  0%   { opacity:0;   transform:translateY(0) scale(0.5); }
  10%  { opacity:0.7; }
  90%  { opacity:0.3; }
  100% { opacity:0;   transform:translateY(-100vh) scale(1.5); }
}

/* ═══ PIGEONS ═══ */
.pigeon-container { position:fixed; inset:0; pointer-events:none; z-index:10; overflow:hidden; }
.pigeon { position:absolute; font-size:24px; opacity:0; filter:drop-shadow(0 0 5px rgba(255,255,255,0.4)); }
.p1 { top:22%; animation:flyAcross 28s linear infinite; }
.p2 { top:45%; animation:flyAcross 38s linear infinite; animation-delay:13s; }
@keyframes flyAcross {
  0%   { left:-10%; opacity:0;   transform:scale(0.5) translateY(0); }
  10%  { opacity:0.6; }
  50%  { transform:scale(1) translateY(-20px); }
  90%  { opacity:0.5; }
  100% { left:110%; opacity:0;   transform:scale(0.5) translateY(0); }
}

/* ═══ SCROLLING BANNER ═══ */
.top-banner {
  position:fixed; top:0; left:0; width:100%;
  height:var(--banner-h);
  background:linear-gradient(90deg,#1a0f2e,#2c1a4d);
  border-bottom:1px solid rgba(224,184,74,0.4);
  overflow:hidden; z-index:1001;
  display:flex; align-items:center;
}
.top-banner-text {
  white-space:nowrap; display:inline-block;
  padding-left:100%;
  animation:scrollText 26s linear infinite;
  font-family:'EB Garamond',serif;
  font-size:1rem; letter-spacing:0.04em;
  color:var(--gold-light);
}
.top-banner-text:hover { animation-play-state:paused; }
@keyframes scrollText {
  0%   { transform:translateX(0); }
  100% { transform:translateX(-100%); }
}

/* ═══ STICKY NAV ═══ */
.site-nav {
  position:fixed;
  top:var(--banner-h); left:0; right:0;
  z-index:1000;
  background:var(--nav-bg);
  backdrop-filter:blur(12px);
  border-bottom:1px solid rgba(224,184,74,0.2);
  height:var(--nav-h);
  display:flex; align-items:center;
  padding:0 20px;
  transition:box-shadow 0.3s;
}
.site-nav.scrolled { box-shadow:0 2px 20px rgba(0,0,0,0.5); }

.nav-inner {
  max-width:1100px; width:100%; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between;
  position:relative;
}

/* Brand with thumbnail */
.nav-brand {
  display:flex; align-items:center; gap:10px;
  font-family:'Cinzel',serif; font-size:0.82rem;
  color:var(--gold-light); letter-spacing:0.07em;
  flex-shrink:0;
}
.nav-thumb {
  width:32px; height:32px; border-radius:50%; overflow:hidden;
  border:1.5px solid var(--gold); flex-shrink:0;
}
.nav-thumb img { width:100%; height:100%; object-fit:cover; }
.nav-brand span { white-space:nowrap; }

/* Hamburger — hidden on desktop */
.nav-hamburger {
  display:none;
  background:none;
  border:1px solid rgba(224,184,74,0.35);
  color:var(--gold); font-size:1.25rem;
  padding:4px 11px; border-radius:5px; cursor:pointer;
  line-height:1;
}

/* Nav links — horizontal on desktop */
.nav-links {
  list-style:none;
  display:flex; gap:2px; align-items:center;
}
.nav-links a {
  display:block; padding:7px 13px;
  color:var(--text-mid); text-decoration:none;
  font-family:'EB Garamond',serif; font-size:0.93rem;
  border-radius:5px; letter-spacing:0.03em;
  transition:color 0.2s, background 0.2s; white-space:nowrap;
}
.nav-links a:hover  { color:var(--gold-light); background:rgba(224,184,74,0.1); }
.nav-logout         { color:#dd9999 !important; }
.nav-logout:hover   { color:#ffaaaa !important; background:rgba(180,30,30,0.1) !important; }

/* ─── MOBILE NAV ─── */
@media (max-width:720px) {
  .nav-hamburger { display:block; }

  .nav-links {
    /* Hidden by default — shown when .open is added by JS */
    display:none;
    flex-direction:column;
    position:absolute;
    top:var(--nav-h);       /* drops below the nav bar */
    left:-20px; right:-20px;
    background:rgba(8,4,18,0.98);
    border-top:1px solid rgba(224,184,74,0.15);
    border-bottom:1px solid rgba(224,184,74,0.15);
    padding:10px 0 16px;
    gap:0; z-index:999;
  }
  .nav-links.open { display:flex; }

  .nav-links li { width:100%; }
  .nav-links a   { padding:13px 24px; border-radius:0; font-size:1rem; }
}

/* ═══ HERO ═══ */
.hero {
  min-height:100vh;
  /* push down past banner + nav */
  padding-top:calc(var(--banner-h) + var(--nav-h));
  position:relative;
  display:flex; align-items:center; justify-content:center;
  background:
    radial-gradient(ellipse 80% 60% at 50% 40%, rgba(92,45,138,0.5) 0%, transparent 70%),
    radial-gradient(ellipse 50% 40% at 70% 80%, rgba(59,26,90,0.4) 0%, transparent 60%),
    linear-gradient(180deg, #080610 0%, #12091e 50%, #0a0614 100%);
  overflow:hidden;
}
.hero::before {
  content:''; position:absolute; inset:0;
  background-image:
    repeating-linear-gradient(0deg, transparent, transparent 59px, rgba(224,184,74,0.04) 60px),
    repeating-linear-gradient(90deg, transparent, transparent 59px, rgba(224,184,74,0.04) 60px);
  pointer-events:none;
}
.hero-veil {
  position:absolute; inset:0;
  background:radial-gradient(ellipse 100% 100% at 50% 0%, rgba(8,6,16,0) 50%, rgba(8,6,16,0.8) 100%);
}
.hero-content {
  position:relative; z-index:2; text-align:center;
  padding:60px 20px 80px; max-width:700px; width:100%;
}

/* Smooth scroll offset for anchor sections */
#biography, #gallery, #tribute-form, #tributes-wall {
  scroll-margin-top:calc(var(--banner-h) + var(--nav-h) + 16px);
}

.in-loving-memory {
  font-family:'Cormorant Garamond',serif; font-style:italic;
  font-size:1rem; letter-spacing:0.3em; color:var(--gold);
  text-transform:uppercase; margin-bottom:36px;
  opacity:0; animation:fadeSlideUp 1s ease 0.3s forwards;
}

/* Portrait */
/* ═══════════════════ PORTRAIT FRAME ═══════════════════ */
.portrait-frame {
  position: relative;
  width: 220px;
  height: 220px;
  margin: 0 auto 30px;

  opacity: 0;
  animation: fadeSlideUp 1s ease 0.6s forwards;
}

/* Decorative rings */
.portrait-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  pointer-events: none;
}

.outer-ring {
  inset: -14px;
  border: 1px solid rgba(224,184,74,0.35);
  animation: rotateSlow 20s linear infinite;
}

.inner-ring {
  inset: -6px;
  border: 1px dashed rgba(224,184,74,0.7);
  animation: rotateSlow 15s linear infinite reverse;
}

/* ═══════════════════ PHOTO CONTAINER ═══════════════════ */
.portrait-photo {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  overflow: hidden;

  display: flex;
  align-items: center;
  justify-content: center;

  background: #1a0f2e;

  /* soft glow */
  box-shadow: 
    0 0 25px rgba(224,184,74,0.25),
    inset 0 0 10px rgba(0,0,0,0.4);
}

/* ═══════════════════ IMAGE (MOST IMPORTANT) ═══════════════════ */
.portrait-photo img {
  width: 100%;
  height: 100%;

  object-fit: cover;              /* 🔥 keeps face dominant */
  object-position: center 20%;    /* 🔥 adjust face position */

  transition: opacity 0.6s ease-in-out;

  opacity: 1;
}

/* Candle */
.candle-wrap { display:flex; justify-content:center; margin:6px 0 20px; opacity:0; animation:fadeSlideUp 1s ease 0.9s forwards; }
.candle { position:relative; display:flex; flex-direction:column; align-items:center; animation: candleSway 3s ease-in-out infinite; }
.flame { position:relative; width:18px; height:36px; display:flex; align-items:flex-end; justify-content:center; margin-bottom:-2px; }
.flame::before {
  content:''; position:absolute; bottom:0; left:50%; transform:translateX(-50%);
  width:18px; height:36px;
  background:radial-gradient(ellipse 60% 100% at 50% 100%, var(--candle-orange) 30%, var(--candle-red) 60%, transparent 100%);
  border-radius:50% 50% 30% 30%/60% 60% 30% 30%; filter:blur(1px);
  animation: flickerOuter 0.9s infinite;
  filter: blur(1.5px) brightness(1.1);
}
.flame-inner {
  position:absolute; bottom:4px; left:50%; transform:translateX(-50%);
  width:8px; height:20px;
  background:radial-gradient(ellipse 60% 100% at 50% 100%, var(--candle-yellow) 20%, var(--candle-orange) 70%, transparent 100%);
  border-radius:50% 50% 30% 30%/60% 60% 30% 30%;
  animation: flickerInner 0.6s infinite;
  filter: brightness(1.3);
}
@keyframes flickerOuter {
  0%   { transform:translateX(-50%) scaleX(1)   scaleY(1)   rotate(0deg);   opacity:1; }
  15%  { transform:translateX(-52%) scaleX(0.9) scaleY(1.1) rotate(-2deg); opacity:0.9; }
  30%  { transform:translateX(-48%) scaleX(1.1) scaleY(0.9) rotate(2deg);  opacity:1; }
  45%  { transform:translateX(-51%) scaleX(0.95)scaleY(1.05)rotate(-1deg); opacity:0.85; }
  60%  { transform:translateX(-49%) scaleX(1.05)scaleY(0.95)rotate(1deg);  opacity:0.95; }
  75%  { transform:translateX(-53%) scaleX(0.9) scaleY(1.1) rotate(-3deg); opacity:0.9; }
  100% { transform:translateX(-50%) scaleX(1)   scaleY(1)   rotate(0deg);  opacity:1; }
}
@keyframes flickerInner {
  0%   { transform:translateX(-50%) scaleX(1)   scaleY(1); }
  20%  { transform:translateX(-52%) scaleX(0.8) scaleY(1.2); }
  40%  { transform:translateX(-48%) scaleX(1.2) scaleY(0.85); }
  60%  { transform:translateX(-51%) scaleX(0.9) scaleY(1.1); }
  80%  { transform:translateX(-49%) scaleX(1.1) scaleY(0.9); }
  100% { transform:translateX(-50%) scaleX(1)   scaleY(1); }
}
.candle-body { width:22px; height:60px; background:linear-gradient(180deg,#e8d5c0,#d4b896 40%,#c9a87a); border-radius:3px 3px 0 0; box-shadow:inset -4px 0 8px rgba(0,0,0,0.2),0 0 20px rgba(230,126,34,0.35); }
.candle-base { width:28px; height:6px; background:linear-gradient(180deg,#b8956a,#8a6a42); border-radius:3px; }
.drips span  { position:absolute; width:4px; background:linear-gradient(180deg,#e8d5c0,#d4b896); border-radius:0 0 4px 4px; opacity:0.7; }
.drips span:nth-child(1){height:10px;top:2px;left:2px;}
.drips span:nth-child(2){height:7px;top:0;right:4px;}
.drips span:nth-child(3){height:5px;top:4px;left:8px;}
.candle::after {
   animation: glowPulse 1s infinite;
  content:''; position:absolute; bottom:-10px; left:50%; transform:translateX(-50%);
  width:60px; height:20px;
  background:radial-gradient(ellipse,rgba(230,126,34,0.4) 0%,transparent 70%);
  border-radius:50%; animation:glowPulse 2s ease-in-out infinite alternate;
}
@keyframes glowPulse {
  0%   { opacity:0.5; transform:translateX(-50%) scale(1); }
  50%  { opacity:1;   transform:translateX(-50%) scale(1.25); }
  100% { opacity:0.6; transform:translateX(-50%) scale(1.05); }
}

/* Hero text */
.name { font-family:'Cinzel',serif; font-size:clamp(1.6rem,4vw,2.6rem); font-weight:600; color:var(--gold-light); letter-spacing:0.06em; line-height:1.3; text-shadow:0 2px 20px rgba(224,184,74,0.5); margin-bottom:10px; opacity:0; animation:fadeSlideUp 1s ease 1.1s forwards; }
.dates { font-family:'Cinzel',serif; font-size:1.05rem; color:var(--gold); letter-spacing:0.25em; margin-bottom:4px; opacity:0; animation:fadeSlideUp 1s ease 1.2s forwards; }
.dates-sub { font-family:'Cormorant Garamond',serif; font-style:italic; font-size:0.95rem; color:var(--muted-lilac); letter-spacing:0.15em; margin-bottom:16px; opacity:0; animation:fadeSlideUp 1s ease 1.3s forwards; }
.hero-quote { font-family:'Cormorant Garamond',serif; font-style:italic; font-size:1.15rem; color:var(--pale-purple); max-width:480px; margin:0 auto 30px; opacity:0; animation:fadeSlideUp 1s ease 1.5s forwards; }

.hero-nav-btns { display:flex; gap:12px; flex-wrap:wrap; justify-content:center; opacity:0; animation:fadeSlideUp 1s ease 1.7s forwards; }
.hero-btn { padding:10px 22px; background:rgba(92,45,138,0.35); border:1px solid rgba(224,184,74,0.4); border-radius:8px; color:var(--gold-light); text-decoration:none; font-family:'EB Garamond',serif; font-size:0.95rem; letter-spacing:0.05em; transition:all 0.3s; }
.hero-btn:hover { background:rgba(92,45,138,0.6); box-shadow:0 0 20px rgba(92,45,138,0.5); transform:translateY(-2px); }

@keyframes fadeSlideUp { from{opacity:0;transform:translateY(24px);}to{opacity:1;transform:translateY(0);} }

/* Audio player */
.memorial-audio-container {
  margin:32px auto 0; padding:18px 20px;
  max-width:500px; text-align:center;
  background:rgba(59,26,90,0.2);
  border:1px solid rgba(224,184,74,0.2);
  border-radius:12px; backdrop-filter:blur(5px);
  opacity:0; animation:fadeSlideUp 1s ease 2s forwards;
}
.audio-label { font-family:'Cormorant Garamond',serif; font-style:italic; font-size:0.95rem; color:var(--gold-light); margin-bottom:10px; letter-spacing:0.05em; }
.memorial-audio-container audio { width:100%; border-radius:6px; }

/* ═══ SECTION COMMON ═══ */
.bio-section, .gallery-section, .form-section, .wall-section { position:relative; padding:80px 20px; }
.bio-section     { background:linear-gradient(180deg,#0f0c1e,#130e22); }
.gallery-section { background:linear-gradient(180deg,#0c0818,#100d1e); }
.form-section    { background:linear-gradient(180deg,#0f0c1e,#130e22); }
.wall-section    { background:linear-gradient(180deg,#0a0614,#0e0c1a); }
.section-inner   { max-width:900px; margin:0 auto; }
.section-title   { font-family:'Cinzel',serif; font-size:clamp(1.4rem,3vw,2rem); color:var(--gold-light); text-align:center; letter-spacing:0.1em; margin-bottom:10px; }
.section-sub     { text-align:center; color:var(--muted-lilac); font-style:italic; margin-bottom:36px; font-size:0.95rem; }
.section-sub strong { color:var(--gold); font-style:normal; }
.bio-divider     { width:120px; height:2px; margin:0 auto 32px; background:linear-gradient(90deg,transparent,var(--gold),transparent); opacity:0.6; }

/* ═══ BIOGRAPHY ═══ */
.bio-body { max-width:720px; margin:0 auto; background:rgba(92,45,138,0.12); border:1px solid rgba(224,184,74,0.15); border-radius:12px; padding:36px 40px; }
.bio-body p { margin-bottom:18px; color:var(--ivory); font-size:1.05rem; line-height:1.85; }
.bio-body strong { color:var(--gold-light); font-weight:600; }
.bio-closing { margin-top:24px !important; color:var(--pale-purple) !important; font-size:1rem !important; border-top:1px solid rgba(224,184,74,0.15); padding-top:18px; }
.bio-placeholder { background:rgba(224,184,74,0.08); border:1px dashed rgba(224,184,74,0.3); border-radius:6px; padding:12px 16px; font-size:0.9rem !important; color:var(--gold) !important; }

/* ═══ GALLERY ═══ */
.gallery-public-upload { text-align:center; margin-bottom:20px; }
.gallery-upload-label { display:inline-flex; align-items:center; gap:8px; padding:10px 22px; border:1px dashed rgba(224,184,74,0.5); border-radius:8px; cursor:pointer; color:var(--gold); font-family:'EB Garamond',serif; font-size:0.95rem; transition:all 0.2s; }
.gallery-upload-label:hover { background:rgba(224,184,74,0.08); border-color:var(--gold); }
.gallery-upload-label input { display:none; }
.gallery-upload-hint { display:block; margin-top:8px; font-size:0.82rem; color:var(--text-light); font-style:italic; }
.gallery-admin-panel { text-align:center; margin-bottom:16px; }

.gallery-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:14px; }
.gallery-item { position:relative; border-radius:8px; overflow:hidden; border:1px solid rgba(224,184,74,0.2); aspect-ratio:4/3; cursor:pointer; transition:transform 0.25s,box-shadow 0.25s; background:#1a0f2e; }
.gallery-item:hover { transform:scale(1.03); box-shadow:0 8px 30px rgba(92,45,138,0.5); }
.gallery-item img { width:100%; height:100%; object-fit:cover; display:block; transition:opacity 0.3s; }
.gallery-item:hover img { opacity:0.82; }

.gallery-overlay { position:absolute; bottom:0; left:0; right:0; background:linear-gradient(transparent,rgba(8,6,16,0.88)); padding:24px 8px 8px; display:flex; flex-direction:column; align-items:center; gap:5px; opacity:0; transition:opacity 0.25s; }
.gallery-item:hover .gallery-overlay { opacity:1; }
.gallery-uploader { font-size:0.72rem; color:var(--muted-lilac); font-style:italic; text-align:center; }
.gallery-caption  { position:absolute; bottom:0; left:0; right:0; background:linear-gradient(transparent,rgba(8,6,16,0.85)); padding:20px 10px 8px; font-size:0.78rem; color:var(--pale-purple); font-style:italic; text-align:center; }
.gallery-item-btns { display:flex; gap:6px; }
.gallery-dl-btn { background:rgba(224,184,74,0.2); border:1px solid rgba(224,184,74,0.5); color:var(--gold-light); border-radius:5px; width:30px; height:30px; font-size:0.85rem; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background 0.2s; }
.gallery-dl-btn:hover { background:rgba(224,184,74,0.45); }
.gallery-delete-btn { background:rgba(180,30,30,0.75); border:none; color:#fff; border-radius:5px; width:30px; height:30px; font-size:0.82rem; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background 0.2s; }
.gallery-delete-btn:hover { background:rgba(220,50,50,1); }
.gallery-empty { grid-column:1/-1; text-align:center; color:var(--text-light); font-style:italic; padding:40px; }

/* Gallery upload modal */
.gallery-upload-box { max-width:440px; }

/* ═══ LIGHTBOX ═══ */
.lightbox-overlay { position:fixed; inset:0; z-index:2000; background:rgba(5,3,12,0.93); display:flex; align-items:center; justify-content:center; backdrop-filter:blur(4px); }
.lightbox-overlay img { max-width:90vw; max-height:85vh; object-fit:contain; border:1px solid rgba(224,184,74,0.3); border-radius:6px; box-shadow:0 0 60px rgba(92,45,138,0.5); }
.lightbox-close { position:absolute; top:20px; right:24px; background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.2); color:#fff; font-size:1.3rem; width:40px; height:40px; border-radius:50%; cursor:pointer; transition:background 0.2s; }
.lightbox-close:hover { background:rgba(255,255,255,0.25); }
.lightbox-prev, .lightbox-next { position:absolute; top:50%; transform:translateY(-50%); background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.15); color:var(--gold-light); font-size:2rem; width:48px; height:48px; border-radius:50%; cursor:pointer; transition:background 0.2s; line-height:1; }
.lightbox-prev { left:20px; }
.lightbox-next { right:20px; }
.lightbox-prev:hover,.lightbox-next:hover { background:rgba(92,45,138,0.5); }

/* ═══ STATUS BANNER ═══ */
.status-banner { padding:14px 20px; border-radius:8px; margin-bottom:24px; font-size:0.95rem; text-align:center; border:1px solid; }
.status-banner.success { background:rgba(46,139,46,0.15); border-color:rgba(46,139,46,0.4); color:#a8e6a8; }
.status-banner.error   { background:rgba(180,30,30,0.15); border-color:rgba(180,30,30,0.4); color:#ffaaaa; }
.status-banner.closed  { background:rgba(92,45,138,0.2);  border-color:rgba(155,89,182,0.4); color:var(--pale-purple); }

/* ═══ FORM ═══ */
.form-row.two-col { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.form-group { margin-bottom:24px; }
label { display:block; font-family:'Cormorant Garamond',serif; font-size:0.88rem; letter-spacing:0.15em; text-transform:uppercase; color:var(--pale-purple); margin-bottom:8px; }
label span { color:var(--gold); }
label .optional { color:var(--text-light); font-size:0.8em; text-transform:none; letter-spacing:0; }
input[type="text"],select,textarea { width:100%; padding:12px 16px; background:rgba(255,255,255,0.06); border:1px solid rgba(224,184,74,0.3); border-radius:6px; color:var(--ivory); font-family:'EB Garamond',serif; font-size:1rem; transition:border-color 0.3s,box-shadow 0.3s; outline:none; }
input[type="text"]:focus,select:focus,textarea:focus { border-color:rgba(224,184,74,0.7); box-shadow:0 0 0 3px rgba(224,184,74,0.1); background:rgba(255,255,255,0.09); }
select option { background:#1a0f2e; color:var(--ivory); }
textarea { resize:vertical; min-height:120px; }
.file-drop { position:relative; border:1px dashed rgba(224,184,74,0.35); border-radius:8px; min-height:100px; display:flex; align-items:center; justify-content:center; cursor:pointer; transition:border-color 0.3s,background 0.3s; overflow:hidden; }
.file-drop:hover { border-color:rgba(224,184,74,0.75); background:rgba(224,184,74,0.05); }
.file-drop input[type="file"] { position:absolute; inset:0; opacity:0; cursor:pointer; width:100%; height:100%; }
.file-drop-label { display:flex; flex-direction:column; align-items:center; gap:6px; pointer-events:none; color:var(--text-light); font-size:0.9rem; }
.upload-icon { font-size:2rem; }
.file-drop-label small { font-size:0.78rem; opacity:0.75; }
.file-preview { position:absolute; inset:0; display:none; align-items:center; justify-content:center; background:rgba(8,6,16,0.7); }
.file-preview img { max-height:90px; max-width:90%; border-radius:4px; border:1px solid var(--gold); }
.pdf-drop { border-color:rgba(224,184,74,0.25); }
.pdf-selected { padding:14px 18px; display:flex; align-items:center; gap:12px; color:var(--ivory); font-size:0.9rem; }
.pdf-icon { font-size:1.5rem; flex-shrink:0; }
.remove-file { margin-left:auto; background:transparent; border:1px solid rgba(224,184,74,0.3); color:var(--text-light); border-radius:4px; padding:4px 10px; font-size:0.78rem; cursor:pointer; transition:all 0.2s; }
.remove-file:hover { border-color:#e74c3c; color:#e74c3c; }
.field-hint { display:block; margin-top:6px; font-size:0.8rem; color:var(--text-light); font-style:italic; }
.btn-submit { width:100%; padding:16px 24px; background:linear-gradient(135deg,#3b1a5a,#6030a0,#3b1a5a); border:1px solid rgba(224,184,74,0.55); border-radius:8px; color:var(--gold-light); font-family:'Cinzel',serif; font-size:1rem; letter-spacing:0.12em; cursor:pointer; transition:all 0.3s; }
.btn-submit:hover { box-shadow:0 0 35px rgba(92,45,138,0.6); transform:translateY(-1px); }

/* ═══ WALL CONTROLS ═══ */
.wall-controls { text-align:center; margin-bottom:30px; display:flex; gap:10px; flex-wrap:wrap; justify-content:center; }
.btn-download { padding:10px 24px; background:transparent; border:1px solid var(--gold); color:var(--gold); border-radius:6px; font-family:'Cormorant Garamond',serif; font-size:1rem; cursor:pointer; letter-spacing:0.05em; transition:all 0.3s; }
.btn-download:hover { background:rgba(224,184,74,0.1); box-shadow:0 0 20px rgba(224,184,74,0.2); }

/* ═══ TRIBUTE CARDS ═══ */
.tributes-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:24px; }
.loading-msg { grid-column:1/-1; text-align:center; color:var(--text-light); font-style:italic; padding:40px; }
.tribute-card { background:linear-gradient(145deg,rgba(92,45,138,0.22),rgba(17,8,32,0.6)); border:1px solid rgba(224,184,74,0.25); border-radius:12px; padding:24px; position:relative; overflow:hidden; transition:transform 0.3s,box-shadow 0.3s; }
.tribute-card::before { content:''; position:absolute; top:0; left:0; right:0; height:2px; background:linear-gradient(90deg,transparent,var(--gold),transparent); opacity:0.6; }
.tribute-card:hover { transform:translateY(-4px); box-shadow:0 12px 40px rgba(59,26,90,0.55); }
.card-header { display:flex; gap:14px; align-items:flex-start; margin-bottom:14px; }
.card-avatar { width:52px; height:52px; border-radius:50%; overflow:hidden; flex-shrink:0; background:linear-gradient(135deg,var(--rich-purple),var(--mid-purple)); border:2px solid rgba(224,184,74,0.5); display:flex; align-items:center; justify-content:center; font-family:'Cinzel',serif; font-size:1.1rem; color:var(--gold); }
.card-avatar img { width:100%; height:100%; object-fit:cover; }
.card-meta { flex:1; }
.card-name { font-family:'Cinzel',serif; font-size:0.95rem; color:var(--gold-light); margin-bottom:2px; }
.card-relation { font-size:0.82rem; color:var(--muted-lilac); font-style:italic; }
.card-date { font-size:0.75rem; color:var(--text-light); }
.card-message { font-size:0.97rem; color:var(--ivory); line-height:1.75; font-style:italic; }
.card-photo { margin-top:14px; border-radius:8px; overflow:hidden; border:1px solid rgba(224,184,74,0.2); }
.card-photo img { width:100%; height:160px; object-fit:cover; display:block; }
.card-pdf-link { display:inline-flex; align-items:center; gap:6px; margin-top:12px; padding:6px 14px; background:rgba(224,184,74,0.1); border:1px solid rgba(224,184,74,0.3); border-radius:20px; color:var(--gold); font-size:0.8rem; text-decoration:none; letter-spacing:0.05em; transition:all 0.2s; }
.card-pdf-link:hover { background:rgba(224,184,74,0.2); }
.card-candle { position:absolute; bottom:14px; right:16px; font-size:1.1rem; opacity:0.5; }
.card-actions { display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin-top:10px; padding-top:10px; border-top:1px solid rgba(224,184,74,0.12); }
.card-ref { display:inline-block; font-family:'Courier New',monospace; font-size:0.72rem; color:var(--text-light); background:rgba(255,255,255,0.04); border:1px solid rgba(224,184,74,0.15); border-radius:4px; padding:3px 9px; letter-spacing:0.08em; }
.card-ref::before { content:'REF: '; color:var(--gold); opacity:0.75; }
.btn-dl-single { display:inline-flex; align-items:center; gap:4px; padding:5px 12px; background:transparent; border:1px solid rgba(224,184,74,0.3); border-radius:5px; color:var(--gold); font-size:0.78rem; cursor:pointer; text-decoration:none; letter-spacing:0.04em; transition:all 0.2s; font-family:'EB Garamond',serif; }
.btn-dl-single:hover { background:rgba(224,184,74,0.1); border-color:var(--gold); }

/* ═══ MODALS ═══ */
.modal-overlay { position:fixed; inset:0; z-index:1000; background:rgba(5,2,10,0.88); backdrop-filter:blur(6px); display:flex; align-items:center; justify-content:center; animation:fadeIn 0.3s ease; }
@keyframes fadeIn { from{opacity:0;}to{opacity:1;} }
.modal-box { background:linear-gradient(145deg,#1a0f2e,#2d1045); border:1px solid rgba(224,184,74,0.45); border-radius:16px; padding:40px 36px; max-width:420px; width:90%; text-align:center; box-shadow:0 20px 60px rgba(0,0,0,0.6),0 0 80px rgba(92,45,138,0.35); animation:slideUp 0.4s ease; }
@keyframes slideUp { from{transform:translateY(30px);opacity:0;}to{transform:translateY(0);opacity:1;} }
.modal-candle { font-size:2.8rem; margin-bottom:14px; }
.modal-title  { font-family:'Cinzel',serif; font-size:1.3rem; color:var(--gold-light); margin-bottom:12px; }
.modal-msg    { color:var(--muted-lilac); font-style:italic; line-height:1.7; margin-bottom:24px; }
.modal-ref-box { background:rgba(0,0,0,0.25); border:1px solid rgba(224,184,74,0.3); border-radius:8px; padding:12px 18px; margin:0 0 24px; font-size:0.82rem; color:var(--muted-lilac); line-height:1.8; }
.modal-ref-box strong { display:block; font-family:'Courier New',monospace; font-size:1rem; color:var(--gold-light); letter-spacing:0.1em; margin-top:4px; }
.modal-close-btn { padding:12px 36px; background:linear-gradient(135deg,#3b1a5a,#6030a0); border:1px solid rgba(224,184,74,0.55); border-radius:8px; color:var(--gold-light); font-family:'Cinzel',serif; font-size:0.95rem; letter-spacing:0.1em; cursor:pointer; transition:all 0.3s; }
.modal-close-btn:hover { box-shadow:0 0 24px rgba(92,45,138,0.6); transform:translateY(-1px); }
.admin-modal-box    { max-width:380px; }
.admin-input-wrap   { margin:16px 0 10px; }
.admin-password-input { width:100%; padding:12px 16px; background:rgba(255,255,255,0.06); border:1px solid rgba(224,184,74,0.4); border-radius:8px; color:var(--ivory); font-family:'EB Garamond',serif; font-size:1rem; outline:none; transition:border-color 0.3s,box-shadow 0.3s; text-align:center; letter-spacing:0.15em; }
.admin-password-input:focus { border-color:rgba(224,184,74,0.8); box-shadow:0 0 0 3px rgba(224,184,74,0.1); }
.admin-error { color:#ffaaaa; font-size:0.85rem; text-align:center; margin-bottom:10px; background:rgba(180,30,30,0.15); border:1px solid rgba(180,30,30,0.3); border-radius:6px; padding:8px 12px; }
.admin-modal-actions { display:flex; gap:10px; justify-content:center; }
.btn-cancel { background:transparent !important; border-color:rgba(255,255,255,0.2) !important; color:var(--text-light) !important; }
.btn-cancel:hover { color:var(--ivory) !important; }
.brochure-box { max-width:600px; width:95%; max-height:90vh; overflow-y:auto; }
.brochure-preview { background:#fff; color:#1a0f2e; border-radius:8px; padding:24px 28px; margin:16px 0; font-family:Georgia,serif; text-align:left; border:1px solid rgba(224,184,74,0.3); }
.brochure-header { text-align:center; border-bottom:1.5px solid #c9a84c; padding-bottom:14px; margin-bottom:18px; }
.brochure-header-title { font-family:'Cinzel',serif; font-size:0.82rem; color:#3b1a5a; letter-spacing:0.05em; }
.brochure-header-dates { font-size:0.78rem; color:#7a5490; font-style:italic; margin-top:3px; }
.brochure-name { font-family:'Cinzel',serif; font-size:1.2rem; color:#3b1a5a; font-weight:600; margin-bottom:3px; }
.brochure-meta { font-size:0.82rem; color:#7a5490; margin-bottom:14px; }
.brochure-photo { max-width:160px; max-height:140px; object-fit:cover; border-radius:5px; border:1px solid #c9a84c; margin-bottom:12px; display:block; }
.brochure-editable { width:100%; border:1px dashed #c9a84c; border-radius:6px; padding:12px 14px; font-family:Georgia,serif; font-size:0.98rem; font-style:italic; color:#1a0f2e; line-height:1.75; resize:vertical; background:#fdfaf4; outline:none; transition:border-color 0.2s; }
.brochure-editable:focus { border-color:#3b1a5a; }
.edit-hint { display:block; margin-top:6px; font-size:0.75rem; color:#9b59b6; font-style:italic; }
.brochure-actions { display:flex; gap:10px; flex-wrap:wrap; justify-content:center; margin-top:4px; }
.btn-brochure-action { padding:10px 20px; border-radius:7px; font-family:'EB Garamond',serif; font-size:0.95rem; cursor:pointer; transition:all 0.25s; border:1px solid; }
.btn-print { background:linear-gradient(135deg,#3b1a5a,#6030a0); color:var(--gold-light); border-color:rgba(224,184,74,0.5); }
.btn-print:hover { box-shadow:0 0 20px rgba(92,45,138,0.5); transform:translateY(-1px); }
.btn-word  { background:rgba(224,184,74,0.1); color:var(--gold); border-color:rgba(224,184,74,0.4); }
.btn-word:hover { background:rgba(224,184,74,0.2); }
.btn-close { background:transparent; color:var(--text-light); border-color:rgba(255,255,255,0.15); }
.btn-close:hover { color:var(--ivory); border-color:rgba(255,255,255,0.3); }

/* ═══ FOOTER ═══ */
.site-footer { background:#060410; text-align:center; padding:40px 20px; border-top:1px solid rgba(224,184,74,0.18); color:var(--text-light); font-size:0.9rem; }
.candle-row  { font-size:1.5rem; letter-spacing:0.5em; margin-bottom:12px; opacity:0.75; }
.footer-sub  { color:var(--text-light); font-size:0.8rem; margin-top:6px; }
.footer-nav  { margin-top:18px; display:flex; gap:20px; flex-wrap:wrap; justify-content:center; }
.footer-nav a { color:var(--text-light); text-decoration:none; font-size:0.85rem; transition:color 0.2s; }
.footer-nav a:hover { color:var(--gold); }

/* ═══ RESPONSIVE ═══ */
@media (max-width:600px) {
  .form-row.two-col { grid-template-columns:1fr; }
  .tributes-grid { grid-template-columns:1fr; }
  .portrait-frame,.portrait-photo { width:160px; height:160px; }
  .gallery-grid { grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); }
  .bio-body { padding:24px 20px; }
  .hero-nav-btns { flex-direction:column; align-items:center; }
  .memorial-audio-container { margin:20px 0 0; }
}
