/* ── TOKENS ──────────────────────────────────── */
:root {
  --cream:  #f5f0e8;
  --parchm: #ede5d4;
  --ink:    #1a1612;
  --warm:   #2c2018;
  --gold:   #b8924a;
  --gold2:  #d4a85c;
  --rose:   #c4856a;
  --shadow: rgba(26,22,18,0.10);
  --danger: #b04a4a;
  --safe:   #4a7c5a;
  --f-display: 'Cormorant Garamond', Georgia, serif;
  --f-body:    'Jost', sans-serif;
  --ease-expo:   cubic-bezier(0.16,1,0.3,1);
  --ease-spring: cubic-bezier(0.34,1.56,0.64,1);
}

/* ── RESET ───────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--f-body);background:var(--cream);color:var(--ink);min-height:100vh}

/* ── NOISE TEXTURE ───────────────────────────── */
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:1000;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
}

/* ── HEADER ──────────────────────────────────── */
header{
  position:sticky;top:0;z-index:500;height:64px;padding:0 40px;
  background:rgba(245,240,232,0.92);backdrop-filter:blur(16px);
  border-bottom:1px solid rgba(184,146,74,0.18);
  display:flex;justify-content:space-between;align-items:center;
}
.header-logo{font-family:var(--f-display);font-size:22px;font-weight:300;letter-spacing:.05em;color:var(--ink)}
.header-logo em{font-style:italic;color:var(--gold)}
nav{display:flex;align-items:center;gap:6px}
.nav-link{
  font-size:13px;font-weight:400;letter-spacing:1.5px;text-transform:uppercase;
  color:rgba(26,22,18,.55);text-decoration:none;padding:8px 14px;border-radius:2px;
  transition:color .2s,background .2s;
}
.nav-link:hover{color:var(--ink);background:rgba(184,146,74,.08)}
.nav-link.active{color:var(--gold)}
.nav-link.danger{color:var(--danger);border:1px solid rgba(176,74,74,.25)}
.nav-link.danger:hover{background:rgba(176,74,74,.08)}
.nav-divider{width:1px;height:18px;background:rgba(184,146,74,.2);margin:0 4px}

/* ── PAGE HEADER ─────────────────────────────── */
.page-header{text-align:center;padding:60px 30px 50px}
.page-eyebrow{font-size:12px;letter-spacing:4px;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
.page-title{
  font-family:var(--f-display);font-size:clamp(36px,5vw,58px);
  font-weight:300;color:var(--ink);letter-spacing:-.02em;line-height:1.1;
}
.page-title em{font-style:italic;color:var(--gold)}

/* ── ORNAMENT ────────────────────────────────── */
.ornament{display:flex;align-items:center;gap:16px;justify-content:center;margin:0 auto 50px}
.ornament-line{width:60px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}
.ornament-line:last-child{background:linear-gradient(90deg,var(--gold),transparent)}
.ornament-diamond{width:5px;height:5px;background:var(--gold);transform:rotate(45deg)}

/* ── CARD GALLERY ────────────────────────────── */
.gallery{columns:4 260px;column-gap:20px;max-width:1400px;margin:0 auto}
.card{
  break-inside:avoid;margin-bottom:20px;background:white;border-radius:3px;
  overflow:hidden;box-shadow:0 8px 24px var(--shadow),0 2px 6px rgba(26,22,18,.05);
  transition:transform .5s var(--ease-expo),box-shadow .4s;position:relative;
}
.card:hover{transform:translateY(-4px);box-shadow:0 24px 60px rgba(26,22,18,.14),0 4px 12px rgba(26,22,18,.06)}
.card-bar{height:2px;background:linear-gradient(90deg,var(--gold),var(--rose))}
.card-img-wrap{position:relative;overflow:hidden}
.card-img-wrap::after{
  content:'';position:absolute;inset:0;opacity:0;transition:opacity .4s;
  background:linear-gradient(180deg,transparent 50%,rgba(26,22,18,.25) 100%);
}
.card:hover .card-img-wrap::after{opacity:1}
.card img{width:100%;display:block;transition:transform .7s var(--ease-expo)}
.card:hover img{transform:scale(1.04)}
.card-body{padding:20px 20px 16px}
.card-body::before{
  content:'';display:block;height:1px;margin-bottom:16px;
  background:linear-gradient(90deg,transparent,rgba(184,146,74,.25),transparent);
}
.card-name{font-family:var(--f-display);font-size:19px;font-weight:400;color:var(--ink);margin-bottom:6px}
.card-wish{font-size:14px;font-weight:300;color:rgba(26,22,18,.55);line-height:1.7;margin-bottom:12px}
.card-date{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:rgba(184,146,74,.6);margin-bottom:14px}
.card.wish-only{background:linear-gradient(135deg,var(--parchm) 0%,var(--cream) 100%)}
.card.wish-only .card-bar{background:linear-gradient(90deg,var(--rose),var(--gold))}
.card.wish-only .card-wish{font-family:var(--f-display);font-style:italic;font-size:16px;color:var(--warm);line-height:1.9}
.quote-mark{font-family:var(--f-display);font-size:52px;line-height:.5;color:var(--gold);opacity:.3;display:block;margin-bottom:10px}

/* ── PANEL ───────────────────────────────────── */
.panel{background:white;border-radius:3px;overflow:hidden;box-shadow:0 8px 32px var(--shadow)}
.panel-bar{height:2px;background:linear-gradient(90deg,var(--gold),var(--rose))}
.panel-bar.alt{background:linear-gradient(90deg,var(--rose),var(--gold))}
.panel-head{padding:26px 28px 18px;border-bottom:1px solid rgba(184,146,74,.12)}
.panel-title{font-family:var(--f-display);font-size:26px;font-weight:300;color:var(--ink)}
.panel-title em{font-style:italic;color:var(--gold)}
.panel-sub{font-size:14px;font-weight:300;color:rgba(26,22,18,.4);margin-top:4px;line-height:1.6}
.panel-body{padding:26px 28px}

/* ── FLOATING LABEL FIELD ────────────────────── */
.field{position:relative;margin-bottom:16px}
.field input,.field textarea{
  width:100%;padding:22px 16px 10px;background:var(--cream);
  border:1px solid rgba(26,22,18,.12);border-radius:2px;
  font-family:var(--f-body);font-size:16px;font-weight:300;color:var(--ink);
  outline:none;transition:border-color .3s,background .3s;resize:none;
}
.field input:focus,.field textarea:focus{border-color:var(--gold);background:white}
.field label{
  position:absolute;left:16px;top:15px;font-size:15px;font-weight:300;
  color:rgba(26,22,18,.4);pointer-events:none;transition:all .22s var(--ease-expo);
}
.field input:focus~label,.field input:not(:placeholder-shown)~label,
.field textarea:focus~label,.field textarea:not(:placeholder-shown)~label{
  top:5px;font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--gold);
}
.hint{font-size:13px;font-weight:300;color:rgba(26,22,18,.35);margin:6px 0 16px;line-height:1.5}

/* ── BUTTONS ─────────────────────────────────── */
.btn-submit{
  width:100%;padding:17px;background:var(--ink);color:var(--cream);
  border:none;border-radius:2px;font-family:var(--f-body);
  font-size:12px;letter-spacing:3px;text-transform:uppercase;
  cursor:pointer;margin-top:4px;position:relative;overflow:hidden;transition:transform .2s;
}
.btn-submit::before{
  content:'';position:absolute;inset:0;opacity:0;transition:opacity .4s;
  background:linear-gradient(135deg,var(--gold),var(--rose));
}
.btn-submit:hover{transform:translateY(-1px)}
.btn-submit:hover::before{opacity:1}
.btn-submit span{position:relative;z-index:1}

.btn{
  flex:1;padding:10px 0;border:none;border-radius:2px;
  font-family:var(--f-body);font-size:11px;font-weight:400;letter-spacing:2px;
  text-transform:uppercase;text-align:center;text-decoration:none;cursor:pointer;
  transition:opacity .2s,transform .2s var(--ease-spring);display:inline-block;
}
.btn:hover{opacity:.82;transform:translateY(-1px)}
.btn-download{background:var(--ink);color:var(--cream)}
.btn-delete{background:transparent;color:var(--danger);border:1px solid rgba(176,74,74,.3)}
.btn-delete:hover{background:rgba(176,74,74,.07)}

/* ── MSG ─────────────────────────────────────── */
.msg{
  padding:13px 16px;border-radius:2px;font-size:14px;font-weight:300;
  margin-bottom:18px;border-left:3px solid;line-height:1.5;
}
.msg.error{background:rgba(176,74,74,.07);color:var(--danger);border-color:var(--danger)}
.msg.success{background:rgba(74,124,90,.07);color:#3a6b4a;border-color:#4a7c5a}

/* ── TOAST ───────────────────────────────────── */
.toast{
  position:fixed;bottom:40px;left:50%;
  transform:translateX(-50%) translateY(80px);
  background:var(--ink);color:var(--cream);font-size:13px;letter-spacing:1px;
  padding:14px 28px;border-left:3px solid var(--gold);
  opacity:0;transition:transform .5s var(--ease-spring),opacity .4s;
  pointer-events:none;z-index:9000;white-space:nowrap;
}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1}

/* ── FOOTER ──────────────────────────────────── */
footer{text-align:center;padding:40px 30px;border-top:1px solid rgba(184,146,74,.15);background:var(--parchm)}
.footer-copy{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:rgba(26,22,18,.3)}
.footer-copy a{color:rgba(184,146,74,.6);text-decoration:none;transition:color .2s}
.footer-copy a:hover{color:var(--gold)}

/* ── ADMIN TABLE ─────────────────────────────── */
table{width:100%;border-collapse:collapse}
thead tr{border-bottom:1px solid rgba(184,146,74,.2)}
th{font-size:11px;font-weight:400;letter-spacing:2px;text-transform:uppercase;color:rgba(26,22,18,.35);padding:0 16px 14px;text-align:left}
td{padding:16px;font-size:15px;font-weight:300;color:var(--ink);border-bottom:1px solid rgba(26,22,18,.05);vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr{transition:background .2s}
tbody tr:hover{background:rgba(184,146,74,.04)}
.td-id{font-family:var(--f-display);font-size:22px;color:rgba(184,146,74,.5);width:40px}
.td-date{font-size:13px;color:rgba(26,22,18,.35);letter-spacing:.5px;white-space:nowrap}
.badge-you{font-size:11px;letter-spacing:1px;text-transform:uppercase;background:rgba(184,146,74,.12);color:var(--gold);padding:3px 8px;border-radius:20px}
.btn-del{
  font-size:11px;font-weight:400;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--danger);background:transparent;border:1px solid rgba(176,74,74,.25);
  padding:7px 14px;border-radius:2px;text-decoration:none;
  transition:background .2s,transform .2s var(--ease-spring);display:inline-block;
}
.btn-del:hover{background:rgba(176,74,74,.07);transform:translateY(-1px)}

/* ── CURRENT BADGE ───────────────────────────── */
.current-badge{
  display:inline-flex;align-items:center;gap:8px;
  background:rgba(184,146,74,.08);border:1px solid rgba(184,146,74,.2);
  border-radius:2px;padding:8px 14px;margin-bottom:20px;
  font-size:15px;font-weight:300;color:var(--warm);
}
.current-badge span{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--gold)}

/* ── ADMIN STATS ─────────────────────────────── */
.stats{
  display:flex;justify-content:center;max-width:600px;margin:0 auto 60px;
  border:1px solid rgba(184,146,74,.2);border-radius:3px;overflow:hidden;
}
.stat{flex:1;padding:20px 24px;text-align:center;background:white;border-right:1px solid rgba(184,146,74,.15)}
.stat:last-child{border-right:none}
.stat-num{font-family:var(--f-display);font-size:36px;font-weight:300;color:var(--gold);line-height:1;margin-bottom:6px}
.stat-label{font-size:12px;letter-spacing:2px;text-transform:uppercase;color:rgba(26,22,18,.4)}

/* ── BULK TOOLBAR ────────────────────────────── */
.bulk-toolbar{
  position:sticky;top:64px;z-index:400;
  background:rgba(245,240,232,.97);backdrop-filter:blur(16px);
  border-bottom:1px solid rgba(184,146,74,.22);border-top:2px solid var(--gold);
  display:flex;align-items:center;gap:10px;padding:10px 40px;
  transform:translateY(-110%);opacity:0;
  transition:transform .4s var(--ease-expo),opacity .3s;pointer-events:none;
}
.bulk-toolbar.visible{transform:translateY(0);opacity:1;pointer-events:all}
.bulk-count{font-size:13px;letter-spacing:2px;text-transform:uppercase;color:rgba(26,22,18,.5);flex:1}
.bulk-count strong{font-family:var(--f-display);font-size:22px;font-weight:300;color:var(--gold);margin-right:4px;vertical-align:middle}
.bulk-btn{
  font-family:var(--f-body);font-size:12px;font-weight:400;letter-spacing:2px;
  text-transform:uppercase;padding:10px 20px;border-radius:2px;border:none;cursor:pointer;
  text-decoration:none;display:inline-flex;align-items:center;gap:7px;
  transition:opacity .2s,transform .2s var(--ease-spring);white-space:nowrap;
}
.bulk-btn:hover{opacity:.8;transform:translateY(-1px)}
.bulk-btn-download{background:var(--ink);color:var(--cream)}
.bulk-btn-delete{background:transparent;color:var(--danger);border:1px solid rgba(176,74,74,.3)}
.bulk-btn-delete:hover{background:rgba(176,74,74,.07)}
.bulk-btn-clear{background:transparent;color:rgba(26,22,18,.4);border:1px solid rgba(26,22,18,.14)}
.bulk-btn-clear:hover{color:var(--ink);border-color:rgba(26,22,18,.3)}

/* ── TOP ACTIONS ─────────────────────────────── */
.top-actions{display:flex;justify-content:center;gap:10px;margin-bottom:36px}
.top-btn{
  font-family:var(--f-body);font-size:12px;letter-spacing:2px;text-transform:uppercase;
  padding:12px 24px;border-radius:2px;border:none;cursor:pointer;
  text-decoration:none;display:inline-flex;align-items:center;gap:8px;
  transition:opacity .2s,transform .2s var(--ease-spring);
}
.top-btn:hover{opacity:.82;transform:translateY(-1px)}
.top-btn-dl{background:var(--ink);color:var(--cream)}
.top-btn-sel{background:transparent;color:var(--ink);border:1px solid rgba(26,22,18,.2)}
.top-btn-sel.active{border-color:var(--gold);color:var(--gold)}

/* ── CARD CHECKBOX ───────────────────────────── */
.card-check-wrap{position:absolute;top:10px;left:10px;z-index:10;opacity:0;transition:opacity .2s}
.card-check-wrap.select-mode{opacity:1}
.card-check{
  width:22px;height:22px;border-radius:3px;
  border:2px solid rgba(255,255,255,.9);background:rgba(26,22,18,.35);
  backdrop-filter:blur(6px);appearance:none;cursor:pointer;
  transition:background .15s,border-color .15s;display:block;position:relative;
}
.card-check:checked{background:var(--gold);border-color:var(--gold)}
.card-check:checked::after{
  content:'';position:absolute;left:5px;top:2px;width:5px;height:9px;
  border:2px solid white;border-top:none;border-left:none;transform:rotate(45deg);
}
.card.selected{box-shadow:0 0 0 2px var(--gold),0 8px 24px var(--shadow)}

/* ── CARD ACTIONS ────────────────────────────── */
.actions{display:flex;gap:8px;padding-top:12px;border-top:1px solid rgba(26,22,18,.06)}

/* ── ZIP ERROR ───────────────────────────────── */
.zip-error{
  max-width:560px;margin:0 auto 40px;background:white;border-radius:3px;
  border-left:3px solid var(--gold);box-shadow:0 4px 20px var(--shadow);padding:22px 28px;
}
.zip-error-title{font-family:var(--f-display);font-size:20px;font-weight:400;color:var(--ink);margin-bottom:10px}
.zip-error-title em{font-style:italic;color:var(--gold)}
.zip-error p{font-size:13px;font-weight:300;color:rgba(26,22,18,.6);line-height:1.7;margin-bottom:6px}
.zip-error code{background:var(--cream);border:1px solid rgba(184,146,74,.2);border-radius:2px;padding:2px 8px;font-family:monospace;font-size:13px;color:var(--gold)}

/* ── EMPTY STATE ─────────────────────────────── */
.empty{text-align:center;padding:80px 30px;max-width:400px;margin:0 auto}
.empty-icon{font-family:var(--f-display);font-size:64px;color:var(--gold);opacity:.3;margin-bottom:20px}
.empty-text{font-family:var(--f-display);font-style:italic;font-size:20px;color:var(--warm);opacity:.6}

/* ── GALLERY LAYOUT PAGES ────────────────────── */
.gallery-wrap{padding:0 30px 100px}
.main-grid{max-width:1100px;margin:0 auto;padding:0 30px 100px;display:grid;grid-template-columns:1fr 1.6fr;gap:30px;align-items:start}
.main-grid-2{max-width:900px;margin:0 auto;padding:0 30px 100px;display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}

/* ── INDEX-ONLY: HERO ────────────────────────── */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:80px 30px;overflow:hidden}
.hero-bg{
  position:absolute;inset:0;
  background:radial-gradient(ellipse 80% 60% at 20% 30%,rgba(184,146,74,.12) 0%,transparent 60%),
    radial-gradient(ellipse 60% 80% at 80% 70%,rgba(196,133,106,.10) 0%,transparent 60%),
    radial-gradient(ellipse 100% 100% at 50% 50%,var(--parchm) 0%,var(--cream) 100%);
  animation:heroShift 12s ease-in-out infinite alternate;
}
@keyframes heroShift{0%{background-position:0% 0%}100%{background-position:3% 3%}}
.hero-ring{
  position:absolute;border-radius:50%;border:1px solid rgba(184,146,74,.18);
  animation:ringPulse 8s ease-in-out infinite;pointer-events:none;
}
.hero-ring:nth-child(1){width:500px;height:500px;top:-120px;right:-150px;animation-delay:0s}
.hero-ring:nth-child(2){width:340px;height:340px;bottom:-80px;left:-100px;animation-delay:-3s;border-color:rgba(196,133,106,.15)}
.hero-ring:nth-child(3){width:200px;height:200px;top:15%;left:10%;animation-delay:-6s}
@keyframes ringPulse{0%,100%{transform:scale(1) rotate(0deg);opacity:.6}50%{transform:scale(1.05) rotate(4deg);opacity:1}}
.hero-content{position:relative;z-index:2}
.eyebrow{font-weight:300;font-size:11px;letter-spacing:4px;text-transform:uppercase;color:var(--gold);margin-bottom:28px;opacity:0;transform:translateY(20px);animation:fadeUp 1s var(--ease-expo) .3s forwards}
.hero-title{font-family:var(--f-display);font-weight:300;font-size:clamp(52px,10vw,120px);line-height:.95;color:var(--ink);letter-spacing:-.02em;opacity:0;animation:fadeUp 1.2s var(--ease-expo) .5s forwards}
.hero-title em{font-style:italic;color:var(--gold)}
.hero-title .line2{display:block;font-size:clamp(28px,5vw,58px);font-weight:300;letter-spacing:.15em;color:var(--warm);margin-top:10px;font-style:normal}
.ornament.hero-orn{margin:32px auto;opacity:0;animation:fadeUp 1s var(--ease-expo) .9s forwards}
.hero-sub{font-family:var(--f-display);font-style:italic;font-size:clamp(16px,2.5vw,22px);font-weight:300;color:var(--warm);opacity:0;animation:fadeUp 1s var(--ease-expo) 1.1s forwards;max-width:500px;margin:0 auto 44px;line-height:1.6}
.hero-cta{
  display:inline-flex;align-items:center;gap:12px;background:transparent;
  border:1px solid var(--gold);color:var(--gold);font-weight:300;font-size:11px;
  letter-spacing:3px;text-transform:uppercase;padding:16px 32px;text-decoration:none;
  transition:background .4s,color .4s,transform .3s var(--ease-spring);
  opacity:0;animation:fadeUp 1s var(--ease-expo) 1.3s forwards;
}
.hero-cta:hover{background:var(--gold);color:var(--cream);transform:translateY(-2px)}
.hero-cta svg{transition:transform .3s var(--ease-spring)}
.hero-cta:hover svg{transform:translateY(4px)}
.scroll-hint{position:absolute;bottom:40px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0;animation:fadeIn 1s ease 2s forwards;z-index:2}
.scroll-line{width:1px;height:50px;background:linear-gradient(to bottom,var(--gold),transparent);animation:scrollDrop 2s ease-in-out infinite}
@keyframes scrollDrop{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.scroll-label{font-size:9px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);opacity:.6}

/* ── INDEX-ONLY: SECTION/FORM/LIGHTBOX ───────── */
.section-header{text-align:center;padding:80px 30px 50px}
.section-label{font-size:10px;letter-spacing:4px;text-transform:uppercase;color:var(--gold);font-weight:400;margin-bottom:16px}
.section-title{font-family:var(--f-display);font-size:clamp(36px,5vw,64px);font-weight:300;line-height:1.1;color:var(--ink);letter-spacing:-.02em}
.section-title em{font-style:italic;color:var(--gold)}
.form-section{padding:0 20px 80px}
.form-inner{max-width:660px;margin:0 auto;background:white;border-radius:4px;overflow:hidden;box-shadow:0 40px 80px rgba(26,22,18,.10),0 4px 16px rgba(26,22,18,.06)}
.form-top-bar{height:3px;background:linear-gradient(90deg,var(--gold),var(--rose),var(--gold2));background-size:200% 100%;animation:barShimmer 4s linear infinite}
@keyframes barShimmer{0%{background-position:0% 50%}100%{background-position:200% 50%}}
.form-body{padding:48px 48px 40px}
.form-title{font-family:var(--f-display);font-size:32px;font-weight:300;color:var(--ink);margin-bottom:8px;letter-spacing:-.01em}
.form-subtitle{font-size:13px;font-weight:300;color:rgba(26,22,18,.5);margin-bottom:36px;line-height:1.6}
.field textarea{min-height:110px;padding-top:22px}
.check-row{display:flex;align-items:center;gap:12px;margin-bottom:28px}
.check-row input{display:none}
.check-box{width:22px;height:22px;border:1.5px solid rgba(26,22,18,.2);border-radius:3px;display:grid;place-items:center;flex-shrink:0;transition:border-color .2s,background .2s}
.check-row input:checked+.check-box{background:var(--gold);border-color:var(--gold)}
.check-box svg{opacity:0;transform:scale(0);transition:all .2s var(--ease-spring)}
.check-row input:checked+.check-box svg{opacity:1;transform:scale(1)}
.check-label{font-size:13px;font-weight:300;color:rgba(26,22,18,.6)}
.file-drop{
  border:1.5px dashed rgba(184,146,74,.4);border-radius:3px;padding:32px;
  text-align:center;transition:border-color .3s,background .3s;
  margin-bottom:28px;position:relative;overflow:hidden;
}
.file-drop:hover,.file-drop.dragover{border-color:var(--gold);background:rgba(184,146,74,.04)}
.file-drop input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.file-icon{width:40px;height:40px;margin:0 auto 12px;opacity:.4;transition:opacity .3s,transform .3s var(--ease-spring)}
.file-drop:hover .file-icon{opacity:.7;transform:translateY(-3px)}
.file-text{font-size:13px;font-weight:300;color:rgba(26,22,18,.5);line-height:1.8}
.file-text span{display:block;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--gold);margin-bottom:4px}
.file-preview{display:none;margin-top:12px}
.file-preview img{max-height:120px;border-radius:2px;object-fit:cover}
.gallery-section{padding:0 20px 100px}
.gallery.index-gal{columns:4 280px;column-gap:20px}
.card.index-card{transform:translateY(40px);opacity:0;transition:transform .7s var(--ease-expo),opacity .7s var(--ease-expo),box-shadow .4s}
.card.index-card.visible{transform:translateY(0);opacity:1}
.card.index-card:hover{transform:translateY(-4px) scale(1.005)}
.card.index-card .card-img-wrap::after{background:linear-gradient(135deg,rgba(255,255,255,.15) 0%,rgba(255,255,255,0) 50%,rgba(184,146,74,.1) 100%)}
.card-name.index{font-size:18px;margin-bottom:8px}
.card-wish.index{font-size:13px;color:rgba(26,22,18,.62)}
.card-date.index{margin-top:14px;font-size:10px}
.card.wish-only.index{padding:32px}
.card.wish-only.index .card-body{padding:0}
.card.wish-only.index .card-body::before{display:none}
.card.wish-only.index .card-wish{font-size:16px;line-height:1.9}
.card img,.lb-img{-webkit-user-drag:none;user-select:none;pointer-events:none}
#lightbox{position:fixed;inset:0;z-index:8000;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .4s}
#lightbox.active{opacity:1;pointer-events:all}
.lb-backdrop{position:absolute;inset:0;background:rgba(26,22,18,.92);backdrop-filter:blur(8px)}
.lb-img-wrap{position:relative;z-index:1;max-width:90vw;max-height:90svh;transform:scale(.92);transition:transform .5s var(--ease-spring);display:flex;align-items:center;justify-content:center}
#lightbox.active .lb-img-wrap{transform:scale(1)}
#lightbox-img{max-width:90vw;max-height:85svh;width:auto;height:auto;border-radius:3px;display:block;box-shadow:0 60px 120px rgba(0,0,0,.6)}
.lb-spinner{width:40px;height:40px;border:2px solid rgba(255,255,255,.2);border-top-color:var(--gold);border-radius:50%;animation:spin .7s linear infinite;position:absolute}
@keyframes spin{to{transform:rotate(360deg)}}
.lb-close{position:absolute;top:-16px;right:-16px;width:40px;height:40px;background:var(--gold);border-radius:50%;border:none;color:white;font-size:20px;display:grid;place-items:center;transition:transform .3s var(--ease-spring),background .2s;z-index:2;cursor:pointer}
.lb-close:hover{transform:rotate(90deg) scale(1.1);background:var(--rose)}
.footer-monogram{font-family:var(--f-display);font-size:48px;font-weight:300;color:var(--gold);letter-spacing:.1em;margin-bottom:16px;opacity:.7}

/* ── ANIMATIONS ──────────────────────────────── */
@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{to{opacity:1}}

/* ── RESPONSIVE ──────────────────────────────── */
@media(max-width:1100px){.gallery,.gallery.index-gal{columns:3}}
@media(max-width:900px){header{padding:0 20px}}
@media(max-width:780px){.main-grid{grid-template-columns:1fr}}
@media(max-width:768px){.gallery,.gallery.index-gal{columns:2}.form-body{padding:32px 24px 28px}}
@media(max-width:680px){.main-grid-2{grid-template-columns:1fr}}
@media(max-width:650px){
  .gallery{columns:2}.stats{flex-direction:column;border:none;gap:1px}
  .stat{border-right:none;border-bottom:1px solid rgba(184,146,74,.15)}
  nav{gap:2px}.nav-link{padding:6px 8px;font-size:10px}.nav-divider{display:none}
}
@media(max-width:480px){.gallery,.gallery.index-gal{columns:1}.form-body{padding:24px 18px 20px}}
@media(max-width:420px){.gallery{columns:1}}
