*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --e1:#c8f0dc;--e2:#4dba80;--e3:#1a6e3f;--e4:#0a2e1a;
  --bg:#071a0e;--bg2:#0a2e1a;
  --gold:#c9a84c;--gold-l:#e8cc87;
  --white:#fefefe;--muted:rgba(255,255,255,.45);
  --cbg:rgba(255,255,255,.06);--cbr:rgba(255,255,255,.1);
  --r:14px;--rs:8px;--sh:0 8px 32px rgba(0,0,0,.35);
  --tr:.28s cubic-bezier(.4,0,.2,1);
  --font-heading:'Playfair Display',serif;
  --font-body:'DM Sans',sans-serif;
  --font-couple:'Playfair Display',serif;
  --font-tagline:'DM Sans',sans-serif;
}
html{scroll-behavior:smooth}
body{font-family:var(--font-body);background:var(--bg);color:var(--white);min-height:100vh;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}
body::before{content:'';position:fixed;inset:0;z-index:0;
  background:radial-gradient(ellipse 120% 80% at 20% 10%,rgba(var(--bg-r,26),var(--bg-g,110),var(--bg-b,63),.18),transparent 60%),
  radial-gradient(ellipse 80% 60% at 80% 90%,rgba(var(--bg-r,77),var(--bg-g,186),var(--bg-b,128),.1),transparent 55%),
  linear-gradient(160deg,var(--bg) 0%,var(--bg2) 40%,var(--bg) 100%);
  pointer-events:none}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--e3);border-radius:3px}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes scaleIn{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@keyframes spin{to{transform:rotate(360deg)}}

/* LOADING */
#loading{position:fixed;inset:0;z-index:999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--bg)}
.spin{width:36px;height:36px;border:3px solid rgba(255,255,255,.1);border-top-color:var(--e2);border-radius:50%;animation:spin .7s linear infinite}
#loading p{color:var(--muted);font-size:.88rem}


/* NAVBAR */
nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:58px;background:rgba(7,26,14,.9);backdrop-filter:blur(20px);border-bottom:1px solid var(--cbr)}
.nav-left{display:flex;align-items:center;gap:8px;cursor:pointer;flex-shrink:0}
.nav-logo{width:30px;height:30px;border-radius:50%;object-fit:cover;display:none}
.nav-brand{font-family:'Playfair Display',serif;font-size:1.1rem;color:var(--gold-l)}
.nav-brand em{font-style:italic;color:var(--e1)}
.nav-center{display:flex;gap:2px}
.nb{background:none;border:none;padding:6px 12px;border-radius:20px;color:rgba(255,255,255,.5);font-family:var(--font-body);font-size:.78rem;cursor:pointer;transition:var(--tr)}
.nb:hover{color:var(--white);background:rgba(255,255,255,.07)}
.nb.active{color:var(--e1);background:rgba(77,186,128,.12)}
.nav-right{flex-shrink:0}
.npill{border-radius:20px;padding:5px 12px;font-size:.75rem;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;cursor:pointer}
.npill-g{background:rgba(255,255,255,.07);border:1px solid var(--cbr);color:var(--e1)}
.npill-a{background:rgba(201,168,76,.1);border:1px solid rgba(201,168,76,.3);color:var(--gold-l);transition:var(--tr)}
.npill-a:hover{background:rgba(201,168,76,.18)}

/* OVERLAYS */
.ov{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:rgba(7,20,12,.65);backdrop-filter:blur(16px);padding:16px;animation:fadeIn .3s ease}
.ov.hide{display:none}
.ovc{background:linear-gradient(145deg,rgba(15,50,28,.97),rgba(7,26,14,.99));border:1px solid rgba(255,255,255,.12);border-radius:20px;padding:36px 28px;width:min(400px,100%);box-shadow:0 32px 80px rgba(0,0,0,.5);animation:scaleIn .35s ease;text-align:center}
.ov-ico{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--e3),var(--e4));border:1px solid rgba(77,186,128,.3);display:flex;align-items:center;justify-content:center;margin:0 auto 18px;font-size:1.4rem}
.ov-title{font-family:var(--font-heading);font-size:1.6rem;color:var(--white);margin-bottom:4px}
.ov-sub{font-size:.82rem;color:var(--muted);margin-bottom:24px;line-height:1.6}
.fg{margin-bottom:12px;text-align:left}
.fl{display:block;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--e2);margin-bottom:5px}
.fi{width:100%;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:var(--rs);padding:11px 14px;color:var(--white);font-family:var(--font-body);font-size:.88rem;outline:none;transition:var(--tr)}
.fi:focus{border-color:var(--e2);background:rgba(255,255,255,.1)}
.fi::placeholder{color:rgba(255,255,255,.25)}
.ferr{color:#f87878;font-size:.76rem;margin-top:4px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.chip{background:rgba(77,186,128,.15);border:1px solid rgba(77,186,128,.3);border-radius:20px;padding:4px 12px;font-size:.74rem;color:var(--e1);cursor:pointer;transition:var(--tr)}
.chip:hover{background:var(--e3);color:var(--white)}
.bm{width:100%;background:linear-gradient(135deg,var(--e2),var(--e3));border:none;border-radius:var(--rs);padding:12px;color:var(--white);font-family:var(--font-body);font-size:.88rem;font-weight:500;cursor:pointer;transition:var(--tr);margin-bottom:10px}
.bm:hover{opacity:.88;transform:translateY(-1px)}
.bm:disabled{opacity:.5;cursor:not-allowed;transform:none}
.bo{width:100%;background:transparent;border:1px solid rgba(255,255,255,.12);border-radius:var(--rs);padding:10px;color:rgba(255,255,255,.45);font-family:var(--font-body);font-size:.82rem;cursor:pointer;transition:var(--tr)}
.bo:hover{border-color:var(--e2);color:var(--e1)}
.bg{background:linear-gradient(135deg,var(--gold),var(--gold-l));border:none;border-radius:var(--rs);padding:12px 28px;color:#1a1000;font-family:var(--font-body);font-size:.88rem;font-weight:600;cursor:pointer;transition:var(--tr)}
.bg:hover{opacity:.88;transform:translateY(-2px);box-shadow:0 8px 24px rgba(201,168,76,.35)}
.bdng{background:rgba(248,120,120,.12);border:1px solid rgba(248,120,120,.3);border-radius:var(--rs);padding:6px 12px;color:#f87878;font-family:var(--font-body);font-size:.75rem;cursor:pointer;transition:var(--tr)}
.bdng:hover{background:rgba(248,120,120,.22)}
.div{display:flex;align-items:center;gap:10px;margin:12px 0;color:rgba(255,255,255,.2);font-size:.74rem}
.div::before,.div::after{content:'';flex:1;height:1px;background:rgba(255,255,255,.1)}
.sp{width:18px;height:18px;border:2px solid rgba(255,255,255,.15);border-top-color:var(--e2);border-radius:50%;animation:spin .7s linear infinite;display:inline-block;vertical-align:middle}

/* PAGE SWIPE SYSTEM */
#app{position:relative;z-index:1;overflow:hidden;touch-action:pan-y}
.pages-container{display:flex;width:500%;transition:transform .35s cubic-bezier(.4,0,.2,1)}

.page{width:20%;min-height:100vh;padding-top:58px;flex-shrink:0;height:100vh;overflow:hidden}
.page.active{overflow-y:auto;height:auto;min-height:100vh}

.pages-container.no-transition{transition:none}

/* HERO */
.hero{min-height:calc(100vh - 58px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px 60px;text-align:center}
.eyebrow{font-size:.7rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold-l);opacity:.8;margin-bottom:16px;animation:fadeUp .6s .1s ease both}
.couple-names{font-family:var(--font-couple);font-size:clamp(2.6rem,9vw,5.5rem);font-weight:400;line-height:1.05;color:var(--white);margin-bottom:12px;animation:fadeUp .6s .2s ease both}
.couple-names em{font-style:italic;color:var(--gold-l)}
.hero-date{font-size:.95rem;color:var(--e1);letter-spacing:.15em;margin-bottom:32px;opacity:.8;animation:fadeUp .6s .3s ease both}
.hero-tag{font-family:var(--font-tagline);max-width:340px;font-size:.88rem;line-height:1.8;color:var(--muted);margin:0 auto 40px;animation:fadeUp .6s .35s ease both}
.hero-cta{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;animation:fadeUp .6s .4s ease both}

/* SLIDESHOW */
.ss-sec{padding:0 20px 72px}
.s-eyebrow{text-align:center;font-size:.68rem;letter-spacing:.26em;text-transform:uppercase;color:var(--gold-l);opacity:.7;margin-bottom:8px}
.s-head{text-align:center;font-family:var(--font-heading);font-size:clamp(1.5rem,3.5vw,2.2rem);font-style:italic;color:var(--white);margin-bottom:36px}
.ss-wrap{position:relative;max-width:860px;margin:0 auto;border-radius:20px;overflow:hidden;aspect-ratio:16/9;background:rgba(255,255,255,.04);box-shadow:0 32px 80px rgba(0,0,0,.4)}
.slide{position:absolute;inset:0;opacity:0;transition:opacity 1.2s ease}
.slide.on{opacity:1}
.slide img{width:100%;height:100%;object-fit:cover;display:block}
.slide-info{position:absolute;bottom:0;left:0;right:0;padding:28px 24px 20px;background:linear-gradient(to top,rgba(7,26,14,.9),transparent);display:flex;align-items:flex-end;justify-content:space-between}
.slide-up{font-size:.85rem;color:var(--e1)}
.slide-hrt{color:#ff8fab;font-size:.9rem}
.ss-dots{display:flex;justify-content:center;gap:8px;margin-top:16px}
.ssdot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.2);border:none;cursor:pointer;padding:0;transition:var(--tr)}
.ssdot.on{background:var(--gold-l);width:20px;border-radius:3px}
.ss-empty{text-align:center;padding:48px 20px;color:var(--muted);font-size:.88rem;max-width:860px;margin:0 auto}

/* GALLERY & GRID SYSTEM */
.gal-wrap{padding:28px 16px 60px;max-width:1280px;margin:0 auto}
.gal-header{display:flex;flex-direction:column;align-items:center;margin-bottom:24px}
.gal-tabs{display:flex;gap:0;border-bottom:1px solid var(--cbr);width:100%}
.gal-tab{background:none;border:none;padding:10px 24px;color:var(--muted);font-family:var(--font-body);font-size:.85rem;letter-spacing:.05em;text-transform:uppercase;font-weight:500;cursor:pointer;transition:var(--tr);border-bottom:2px solid transparent;margin-bottom:-1px}
.gal-tab.on{color:var(--gold-l);border-bottom-color:var(--gold)}
.gal-tab:hover:not(.on){color:var(--white)}
.gal-layout{display:grid;grid-template-columns:260px 1fr;gap:24px;align-items:start}
.rank-card{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--r);padding:20px 16px;position:sticky;top:74px;touch-action:pan-y;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 90px);overflow-y:auto;overscroll-behavior:contain}
.rank-title{font-family:var(--font-heading);font-size:1.05rem;color:var(--gold-l);margin-bottom:2px}
.rank-sub{font-size:.71rem;color:var(--muted);margin-bottom:18px}
.podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:6px;align-items:end;margin-bottom:18px}
.pod{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;cursor:pointer}
.pod-img{width:100%;aspect-ratio:1;border-radius:8px;overflow:hidden;background:rgba(255,255,255,.05)}
.pod-img img{width:100%;height:100%;object-fit:cover}
.pod-medal{font-size:1.3rem;line-height:1}
.pod:nth-child(2) .pod-medal{font-size:1.7rem}
.pod-hrt{font-size:.66rem;color:var(--muted)}
.pod-name{font-size:.63rem;color:rgba(255,255,255,.38);max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rsep{height:1px;background:var(--cbr);margin:14px 0;position:relative}
.rsep::before{content:'4 - 10';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--bg);padding:0 8px;font-size:.6rem;letter-spacing:.15em;color:var(--e2);white-space:nowrap}
.rlist{display:flex;flex-direction:column;gap:7px}
.ritem{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:var(--rs);background:rgba(255,255,255,.03);cursor:pointer;transition:var(--tr)}
.ritem:hover{background:rgba(255,255,255,.07)}
.rnum{font-size:.68rem;color:var(--e2);width:18px;text-align:center;flex-shrink:0}
.rthumb{width:36px;height:36px;border-radius:6px;overflow:hidden;flex-shrink:0;background:rgba(255,255,255,.05)}
.rthumb img{width:100%;height:100%;object-fit:cover}
.rinfo{flex:1;min-width:0}
.rname{font-size:.73rem;color:var(--white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rtime{font-size:.62rem;color:var(--muted)}
.rhrt{font-size:.7rem;color:#ff8fab;flex-shrink:0}

/* Unified Grid */
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;display:none}
.pgrid.on{display:grid}
.mc{aspect-ratio:1;position:relative;overflow:hidden;background:var(--cbg);cursor:pointer;border-radius:0;border:none}
.mthumb{width:100%;height:100%;position:relative;background:rgba(255,255,255,.04);border-radius:0}
.mthumb img, .mthumb video{width:100%;height:100%;object-fit:cover;transition:transform .4s ease;display:block}
.mc:hover .mthumb img{transform:scale(1.05)}
.mc-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0.2);font-size:1.5rem;color:white;pointer-events:none}

.adel{position:absolute;top:6px;right:6px;background:rgba(248,120,120,.85);border:none;border-radius:6px;color:#fff;font-size:.68rem;padding:3px 7px;cursor:pointer;opacity:0;transition:var(--tr);z-index:2}
.mthumb:hover .adel{opacity:1}
/* Heart overlay on grid thumbnails */
.mc-heart{position:absolute;bottom:6px;left:6px;display:flex;align-items:center;gap:3px;background:rgba(0,0,0,.52);backdrop-filter:blur(4px);border-radius:10px;padding:3px 7px;font-size:.68rem;color:#ff8fab;pointer-events:none;z-index:2;line-height:1}
.mc-heart svg{flex-shrink:0}

/* UPLOAD */
.upl-wrap{min-height:calc(100vh - 58px);display:flex;align-items:flex-start;justify-content:center;padding:32px 16px 60px}
.upl-box{width:min(620px,100%)}
.upl-hdr{text-align:center;margin-bottom:24px}
.notice{background:rgba(77,186,128,.07);border:1px solid rgba(77,186,128,.2);border-radius:var(--rs);padding:14px 16px;margin-bottom:16px;font-size:.8rem;line-height:1.7;color:var(--e1)}
.notice strong{color:var(--gold-l)}
.bars{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.bar-c{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--rs);padding:12px 14px}
.bar-l{font-size:.7rem;color:var(--muted);margin-bottom:6px;display:flex;justify-content:space-between}
.bar-l span{color:var(--e1)}
.bar-t{height:5px;background:rgba(255,255,255,.08);border-radius:3px;overflow:hidden}
.bar-f{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--e2),var(--e1));transition:width .4s ease}
.bar-f.full{background:linear-gradient(90deg,#f87878,#ffaaaa)}
.dz{border:2px dashed rgba(77,186,128,.28);border-radius:var(--r);padding:44px 24px;text-align:center;cursor:pointer;background:rgba(77,186,128,.03);transition:var(--tr);position:relative;margin-bottom:18px}
.dz.over,.dz:hover{border-color:var(--e2);background:rgba(77,186,128,.07)}
.dz input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.dz-ico{font-size:2.2rem;margin-bottom:12px}
.dz-ttl{font-family:var(--font-heading);font-size:1.3rem;color:var(--white);margin-bottom:5px}
.dz-sub{font-size:.8rem;color:var(--muted)}
.bdgs{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:12px}
.bdg{background:rgba(77,186,128,.11);border:1px solid rgba(77,186,128,.22);border-radius:20px;padding:3px 10px;font-size:.68rem;color:var(--e1)}
.drv-btn{display:flex;align-items:center;gap:8px;background:rgba(201,168,76,.08);border:1px solid rgba(201,168,76,.25);border-radius:var(--rs);padding:12px 16px;color:var(--gold-l);font-size:.82rem;cursor:pointer;transition:var(--tr);width:100%;margin-bottom:14px;font-family:var(--font-body)}
.drv-btn:hover{background:rgba(201,168,76,.14)}
.cwarn{background:rgba(201,168,76,.07);border:1px solid rgba(201,168,76,.22);border-radius:var(--rs);padding:11px 14px;font-size:.78rem;color:var(--gold-l);margin-bottom:12px;display:flex;gap:8px}
.qlist{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.qi{background:rgba(255,255,255,.04);border:1px solid var(--cbr);border-radius:var(--rs);padding:11px 13px}
.qi-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.qi-name{flex:1;font-size:.8rem;color:var(--white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qi-size{font-size:.68rem;color:var(--muted);flex-shrink:0}
.qst{font-size:.68rem;padding:2px 8px;border-radius:10px;flex-shrink:0}
.st-w{background:rgba(255,255,255,.07);color:rgba(255,255,255,.3)}
.st-u{background:rgba(77,186,128,.17);color:var(--e1)}
.st-d{background:rgba(77,186,128,.25);color:#7affc8}
.st-e{background:rgba(248,120,120,.17);color:#f87878}
.st-c{background:rgba(201,168,76,.17);color:var(--gold-l)}
.ptrack{height:3px;background:rgba(255,255,255,.07);border-radius:2px;overflow:hidden}
.pbar{height:100%;border-radius:2px;transition:width .25s ease;background:linear-gradient(90deg,var(--e2),var(--e1))}
.pbar.d{background:linear-gradient(90deg,var(--e2),#7affc8)}
.pbar.e{background:linear-gradient(90deg,#f87878,#ffaaaa)}
.ppct{font-size:.65rem;color:var(--muted);text-align:right;margin-top:3px}
.drv-note{background:rgba(255,255,255,.04);border:1px solid var(--cbr);border-radius:var(--rs);padding:14px 16px;font-size:.78rem;color:var(--muted);line-height:1.7;margin-top:12px}
.drv-note a{color:var(--gold-l);text-decoration:none}

/* PERSONAL GALLERY */
.pg{margin-top:32px;padding-top:24px;border-top:1px solid var(--cbr)}
.pg-title{font-family:var(--font-heading);font-size:1.2rem;color:var(--gold-l);margin-bottom:4px}
.pg-sub{font-size:.75rem;color:var(--muted);margin-bottom:18px}
.pg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pgc{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--rs);overflow:hidden}
.pg-thumb{width:100%;aspect-ratio:1;overflow:hidden;cursor:pointer;background:rgba(255,255,255,.04)}
.pg-thumb img,.pg-thumb video{width:100%;height:100%;object-fit:cover;display:block}
.pg-info{padding:7px 8px}
.pg-hrt{font-size:.72rem;color:#ff8fab;margin-bottom:5px}
.pg-arch{font-size:.68rem;color:var(--gold-l);background:rgba(201,168,76,.1);border-radius:4px;padding:2px 6px;display:inline-block;margin-bottom:5px}
.pg-del{width:100%;background:none;border:1px solid rgba(248,120,120,.25);border-radius:6px;padding:5px;color:rgba(248,120,120,.7);font-family:var(--font-body);font-size:.72rem;cursor:pointer;transition:var(--tr)}
.pg-del:hover{background:rgba(248,120,120,.1);border-color:#f87878;color:#f87878}
.del-note{background:rgba(248,120,120,.07);border:1px solid rgba(248,120,120,.2);border-radius:var(--rs);padding:10px 12px;font-size:.78rem;color:#f87878;margin-bottom:8px}

/* LIGHTBOX (True Pinch-to-Zoom & Pan) */
.lb{position:fixed;inset:0;z-index:2000;background:rgba(4,14,8,.97);display:none;flex-direction:column;align-items:center;padding:0;touch-action:none;overflow:hidden}
.lb.show{display:flex}
.lb-stage{position:relative;width:100%;flex:1;overflow:hidden;touch-action:none;display:flex;align-items:center}
.lb-wrap{display:flex;width:100%;height:100%;transition:transform 0.35s cubic-bezier(0.15, 0.3, 0.25, 1)}
.lb-slide{flex:0 0 100%;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:20px;position:relative}
.lb-slide img, .lb-slide video{max-width:100%;max-height:85vh;object-fit:contain;border-radius:12px;transform-origin:center;will-change:transform}

.lb-arrow{position:fixed;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.12);border:none;color:var(--white);width:44px;height:44px;border-radius:50%;font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--tr);z-index:5;backdrop-filter:blur(6px)}
.lb-arrow:hover{background:rgba(255,255,255,.22)}
.lb-prev{left:16px}
.lb-next{right:16px}
.lb-close{position:fixed;top:16px;right:16px;background:rgba(255,255,255,.1);border:none;color:var(--white);width:36px;height:36px;border-radius:50%;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--tr);z-index:5}
.lb-close:hover{background:rgba(255,255,255,.2)}
.lb-counter{position:fixed;top:20px;left:50%;transform:translateX(-50%);font-size:.78rem;color:rgba(255,255,255,.5);z-index:5}
.lb-bar{display:flex;align-items:center;gap:12px;background:rgba(7,26,14,.9);border:1px solid var(--cbr);border-radius:30px;padding:8px 18px;backdrop-filter:blur(10px);flex-wrap:wrap;justify-content:center;margin-bottom:20px;position:relative;z-index:5}
.lb-up{font-size:.8rem;color:var(--e1)}
.lb-hb{display:flex;align-items:center;gap:6px;background:none;border:none;color:rgba(255,255,255,.4);font-size:.85rem;cursor:pointer;transition:var(--tr);font-family:var(--font-body);padding:4px 10px;border-radius:20px}
.lb-hb:hover,.lb-hb.on{color:#ff8fab;background:rgba(255,143,171,.1)}
.lb-hb.on svg{fill:#ff8fab}
.lb-dl{display:flex;align-items:center;gap:5px;background:rgba(77,186,128,.1);border:1px solid rgba(77,186,128,.3);border-radius:20px;padding:4px 12px;color:var(--e1);font-size:.78rem;cursor:pointer;font-family:var(--font-body);transition:var(--tr);border:none}
.lb-dl:hover{background:rgba(77,186,128,.2)}
.lb-adel{display:flex;align-items:center;gap:5px;background:rgba(248,120,120,.1);border:1px solid rgba(248,120,120,.3);border-radius:20px;padding:4px 12px;color:#f87878;font-size:.78rem;cursor:pointer;font-family:var(--font-body);transition:var(--tr)}
.lb-adel:hover{background:rgba(248,120,120,.2)}

/* CONFIRM */
.conf-wrap{position:fixed;inset:0;z-index:300;display:none;align-items:center;justify-content:center;background:rgba(7,20,12,.7);backdrop-filter:blur(10px);padding:16px}
.conf-wrap.show{display:flex}
.conf-card{background:linear-gradient(145deg,rgba(15,50,28,.98),rgba(7,26,14,.99));border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:28px 24px;width:min(340px,100%);text-align:center;animation:scaleIn .3s ease}
.conf-title{font-family:var(--font-heading);font-size:1.2rem;color:var(--white);margin-bottom:8px}
.conf-msg{font-size:.82rem;color:var(--muted);line-height:1.6;margin-bottom:22px}
.conf-btns{display:flex;gap:10px}
.conf-btns button{flex:1;padding:10px;border-radius:var(--rs);font-family:var(--font-body);font-size:.84rem;cursor:pointer;transition:var(--tr)}
.cc{background:transparent;border:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.5)}
.cc:hover{border-color:var(--e2);color:var(--e1)}
.cd{background:rgba(248,120,120,.15);border:1px solid rgba(248,120,120,.35);color:#f87878}
.cd:hover{background:rgba(248,120,120,.25)}

/* THEME PICKER */
.theme-popup{position:fixed;inset:0;z-index:150;display:none;align-items:flex-end;justify-content:center;background:rgba(7,20,12,.7);backdrop-filter:blur(16px);padding:0;overscroll-behavior:contain;touch-action:none}
.theme-popup.show{display:flex}
.theme-sheet{background:linear-gradient(180deg,rgba(15,50,28,.99),rgba(7,26,14,1));border-top:1px solid rgba(255,255,255,.12);border-radius:20px 20px 0 0;width:100%;max-width:700px;max-height:85vh;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:24px 20px 40px;animation:slideUp .35s cubic-bezier(.4,0,.2,1)}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.theme-sheet-handle{width:40px;height:4px;background:rgba(255,255,255,.2);border-radius:2px;margin:0 auto 20px}
.theme-sheet-title{font-family:var(--font-heading);font-size:1.2rem;color:var(--gold-l);margin-bottom:4px;text-align:center}
.theme-sheet-sub{font-size:.76rem;color:var(--muted);text-align:center;margin-bottom:20px}
.theme-group-title{font-size:.68rem;letter-spacing:.15em;text-transform:uppercase;color:var(--e2);margin-bottom:10px;margin-top:20px}
.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-bottom:8px}
.theme-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:10px 12px;cursor:pointer;transition:var(--tr);position:relative}
.theme-card:hover{border-color:var(--e2);background:rgba(255,255,255,.08)}
.theme-card.active{border-color:var(--gold-l);background:rgba(201,168,76,.1)}
.theme-card.active::after{content:'✓';position:absolute;top:6px;right:8px;font-size:.7rem;color:var(--gold-l)}
.theme-dots{display:flex;gap:3px;margin-bottom:6px}
.theme-dot{width:16px;height:16px;border-radius:50%;flex-shrink:0}
.theme-name{font-size:.74rem;color:var(--white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.theme-custom-section{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:16px;margin-top:16px}
.custom-theme-title{font-size:.8rem;color:var(--gold-l);margin-bottom:12px;font-weight:500}
.custom-theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.custom-swatch{display:flex;align-items:center;gap:6px}
.custom-swatch-lbl{font-size:.65rem;color:var(--muted);flex:1}
.custom-swatch-dot{width:24px;height:24px;min-width:24px;border-radius:50%;border:1px solid rgba(255,255,255,.2);cursor:pointer;-webkit-appearance:none;appearance:none}
.custom-name-row{display:flex;gap:8px;margin-bottom:10px}
.custom-name-row input{flex:1;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:var(--rs);padding:8px 12px;color:var(--white);font-family:var(--font-body);font-size:.82rem;outline:none}
.custom-theme-saved{margin-top:12px}
.saved-theme-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--rs);background:rgba(255,255,255,.03);margin-bottom:6px}
.saved-theme-dots{display:flex;gap:2px}
.saved-theme-dot{width:12px;height:12px;border-radius:50%}
.saved-theme-name{flex:1;font-size:.78rem;color:var(--white)}
.saved-theme-apply{background:none;border:1px solid rgba(77,186,128,.3);border-radius:6px;padding:3px 10px;color:var(--e1);font-size:.7rem;cursor:pointer;font-family:var(--font-body)}
.saved-theme-del{background:none;border:none;color:rgba(248,120,120,.6);font-size:.8rem;cursor:pointer;padding:4px}

/* FONT PICKER */
.font-picker-section{background:rgba(255,255,255,.04);border:1px solid var(--cbr);border-radius:var(--r);padding:18px;margin-bottom:16px}
.font-picker-title{font-size:.82rem;color:var(--gold-l);margin-bottom:12px;font-weight:500}
.font-options{display:flex;flex-direction:column;gap:8px}
.font-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--rs);background:rgba(255,255,255,.03);cursor:pointer;border:1px solid transparent;transition:var(--tr)}
.font-option:hover{border-color:rgba(77,186,128,.3)}
.font-option.active{border-color:var(--gold-l);background:rgba(201,168,76,.08)}
.font-preview{font-size:1.1rem;color:var(--white);flex:1}
.font-label{font-size:.7rem;color:var(--muted)}
.font-style-badge{font-size:.65rem;background:rgba(77,186,128,.15);border:1px solid rgba(77,186,128,.3);border-radius:10px;padding:2px 7px;color:var(--e1)}

/* ADMIN */
.adm-wrap{padding:28px 16px 60px;max-width:1060px;margin:0 auto}
.adm-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;padding-bottom:18px;border-bottom:1px solid var(--cbr);gap:12px;flex-wrap:wrap}
.adm-h1{font-family:var(--font-heading);font-size:1.6rem;color:var(--gold-l)}
.adm-sub{font-size:.76rem;color:var(--muted);margin-top:2px}
.rpill{background:rgba(201,168,76,.12);border:1px solid rgba(201,168,76,.28);border-radius:20px;padding:4px 13px;font-size:.72rem;color:var(--gold-l)}
.lbtn{background:transparent;border:1px solid rgba(255,80,80,.22);color:rgba(255,130,130,.6);border-radius:var(--rs);padding:6px 14px;font-family:var(--font-body);font-size:.76rem;cursor:pointer;transition:var(--tr)}
.lbtn:hover{border-color:#f87878;color:#f87878;background:rgba(248,120,120,.06)}
.adm-tabs{display:flex;gap:0;border-bottom:1px solid var(--cbr);margin-bottom:24px}
.adm-tab{background:none;border:none;padding:10px 20px;color:var(--muted);font-family:var(--font-body);font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:var(--tr);border-bottom:2px solid transparent;margin-bottom:-1px}
.adm-tab.on{color:var(--gold-l);border-bottom-color:var(--gold)}
.adm-tab:hover:not(.on){color:var(--white)}
.adm-tab-content{display:none}
.adm-tab-content.on{display:block}
.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:22px}
.sc{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--r);padding:16px 12px;text-align:center}
.sn{font-family:var(--font-heading);font-size:1.9rem;color:var(--gold-l)}
.sl{font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:2px}
.adm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px}
.ac{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--r);padding:22px}
.at{font-family:var(--font-heading);font-size:1rem;color:var(--gold-l);margin-bottom:3px}
.ad{font-size:.73rem;color:var(--muted);margin-bottom:16px;line-height:1.6}
.af{margin-bottom:11px}
.al{display:block;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--e2);margin-bottom:4px}
.ai{width:100%;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.09);border-radius:var(--rs);padding:10px 12px;color:var(--white);font-family:var(--font-body);font-size:.85rem;outline:none;transition:var(--tr)}
.ai:focus{border-color:var(--e2);background:rgba(255,255,255,.09)}
.ai::placeholder{color:rgba(255,255,255,.2)}
.ab{background:linear-gradient(135deg,var(--e2),var(--e3));border:none;border-radius:var(--rs);padding:10px 20px;color:var(--white);font-family:var(--font-body);font-size:.82rem;font-weight:500;cursor:pointer;transition:var(--tr);width:100%}
.ab:hover{opacity:.85;transform:translateY(-1px)}
.clrg{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.cll{font-size:.65rem;color:var(--muted);margin-bottom:4px}
.clr{display:flex;align-items:center;gap:6px}
.cldot{width:32px;height:32px;min-width:32px;border-radius:6px;border:1px solid rgba(255,255,255,.1);cursor:pointer;padding:0;-webkit-appearance:none;appearance:none;overflow:hidden}
.clin{flex:1;min-width:0;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.09);border-radius:6px;padding:6px 8px;color:var(--white);font-family:var(--font-body);font-size:.74rem;outline:none;width:100%}
.clin:focus{border-color:var(--e2)}
.logo-drop{border:2px dashed var(--cbr);border-radius:var(--rs);padding:20px;text-align:center;cursor:pointer;position:relative;margin-bottom:10px;transition:var(--tr)}
.logo-drop:hover{border-color:var(--e2)}
.logo-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.logo-prev{width:52px;height:52px;border-radius:50%;object-fit:cover;margin:0 auto 7px;display:block;border:2px solid var(--e3)}
.dlbtn{width:100%;background:linear-gradient(135deg,var(--gold),var(--gold-l));border:none;border-radius:var(--rs);padding:12px;color:#1a1000;font-family:var(--font-body);font-size:.86rem;font-weight:600;cursor:pointer;transition:var(--tr);display:flex;align-items:center;justify-content:center;gap:7px}
.dlbtn:hover{opacity:.88;transform:translateY(-2px)}
.asep{height:1px;background:var(--cbr);margin:12px 0}
.rlbl{font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--e2);margin-bottom:7px}
.syncbanner{background:rgba(77,186,128,.07);border:1px solid rgba(77,186,128,.2);border-radius:var(--rs);padding:10px 14px;font-size:.8rem;color:var(--e1);margin-bottom:18px;display:flex;align-items:center;gap:8px}
.dot-g{width:8px;height:8px;border-radius:50%;background:#4dff99;flex-shrink:0}
.warn-banner{background:rgba(248,120,120,.07);border:1px solid rgba(248,120,120,.2);border-radius:var(--rs);padding:10px 14px;font-size:.8rem;color:#f87878;margin-bottom:12px}
.reset-btns{display:flex;gap:10px;flex-wrap:wrap}
.rbtn{flex:1;min-width:140px;padding:11px 16px;border-radius:var(--rs);font-family:var(--font-body);font-size:.82rem;cursor:pointer;transition:var(--tr)}
.rbtn-soft{background:rgba(201,168,76,.12);color:var(--gold-l);border:1px solid rgba(201,168,76,.3)}
.rbtn-soft:hover{background:rgba(201,168,76,.2)}
.rbtn-hard{background:rgba(248,120,120,.12);color:#f87878;border:1px solid rgba(248,120,120,.3)}
.rbtn-hard:hover{background:rgba(248,120,120,.22)}
.guest-list{display:flex;flex-direction:column;gap:8px}
.guest-item{background:rgba(255,255,255,.04);border:1px solid var(--cbr);border-radius:var(--rs);padding:12px 14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.guest-name-txt{font-size:.88rem;color:var(--white);flex:1;min-width:100px}
.guest-meta{font-size:.72rem;color:var(--muted)}
.guest-actions{display:flex;gap:6px}
.gbtn{padding:4px 10px;border-radius:6px;font-family:var(--font-body);font-size:.72rem;cursor:pointer;transition:var(--tr)}
.gbtn-del{background:rgba(248,120,120,.12);color:#f87878;border:1px solid rgba(248,120,120,.3)}
.gbtn-del:hover{background:rgba(248,120,120,.22)}
.gbtn-out{background:rgba(201,168,76,.1);color:var(--gold-l);border:1px solid rgba(201,168,76,.3)}
.gbtn-out:hover{background:rgba(201,168,76,.18)}

/* Developer popup */
.dev-popup{position:fixed;inset:0;z-index:150;display:none;align-items:center;justify-content:center;background:rgba(7,20,12,.7);backdrop-filter:blur(16px);padding:16px}
.dev-popup.show{display:flex}
.dev-card{background:linear-gradient(145deg,rgba(15,50,28,.97),rgba(7,26,14,.99));border:1px solid rgba(255,255,255,.12);border-radius:20px;padding:36px 28px;width:min(360px,100%);text-align:center;animation:scaleIn .35s ease}
.dev-photo{width:80px;height:80px;border-radius:50%;object-fit:cover;margin:0 auto 16px;display:block;border:3px solid var(--e2)}
.dev-photo-placeholder{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,var(--e3),var(--e4));border:3px solid var(--e2);margin:0 auto 16px;display:flex;align-items:center;justify-content:center;font-size:2rem}
.dev-name{font-family:var(--font-heading);font-size:1.4rem;color:var(--white);margin-bottom:4px}
.dev-title-txt{font-size:.78rem;color:var(--muted);margin-bottom:24px}
.dev-contacts{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}
.dev-contact{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.05);border:1px solid var(--cbr);border-radius:var(--rs);padding:10px 14px;text-decoration:none;color:var(--white);transition:var(--tr)}
.dev-contact:hover{background:rgba(255,255,255,.1);border-color:var(--e2)}
.dev-contact-icon{font-size:1.2rem;flex-shrink:0}
.dev-contact-text{text-align:left}
.dev-contact-label{font-size:.65rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.dev-contact-val{font-size:.84rem;color:var(--e1)}
.dev-close{background:transparent;border:1px solid var(--cbr);border-radius:var(--rs);padding:8px 20px;color:var(--muted);font-family:var(--font-body);font-size:.82rem;cursor:pointer;transition:var(--tr)}
.dev-close:hover{border-color:var(--e2);color:var(--e1)}

/* Developer photo crop */
.crop-wrap{position:fixed;inset:0;z-index:250;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.95);flex-direction:column;gap:16px;padding:20px}
.crop-wrap.show{display:flex}
.crop-canvas-wrap{position:relative;width:min(320px,80vw);height:min(320px,80vw);border-radius:50%;overflow:hidden;border:3px solid var(--e2)}
.crop-canvas-wrap img{position:absolute;transform-origin:center;user-select:none;-webkit-user-select:none}
.crop-corners{position:absolute;inset:0;border-radius:50%;border:2px dashed rgba(255,255,255,.5);pointer-events:none}
.crop-instructions{font-size:.8rem;color:var(--muted);text-align:center}
.crop-btns{display:flex;gap:10px}

/* Footer */
.footer{position:relative;z-index:1;text-align:center;padding:24px 16px;border-top:1px solid var(--cbr);font-size:.7rem;color:rgba(255,255,255,.18);letter-spacing:.07em}
.footer b{color:var(--e2)}
.footer-dev{display:inline-block;margin-top:8px;font-size:.72rem;color:var(--muted);cursor:pointer;transition:var(--tr);border-bottom:1px dashed rgba(255,255,255,.2)}
.footer-dev:hover{color:var(--e1);border-bottom-color:var(--e2)}

/* Shareable page */
.share-page{min-height:100vh;background:var(--bg);padding:40px 20px;position:relative;z-index:1}
.share-header{text-align:center;margin-bottom:32px}
.share-hero{font-family:var(--font-couple);font-size:clamp(2rem,6vw,3.5rem);color:var(--white);margin-bottom:8px}
.share-date{font-size:.9rem;color:var(--e1);letter-spacing:.15em;margin-bottom:24px}
.share-instructions{background:rgba(77,186,128,.07);border:1px solid rgba(77,186,128,.2);border-radius:var(--r);padding:20px 24px;max-width:700px;margin:0 auto 32px;font-size:.84rem;line-height:1.8;color:var(--e1)}
.share-instructions h3{font-family:var(--font-heading);font-size:1.1rem;color:var(--gold-l);margin-bottom:12px}
.share-instructions .step{background:rgba(255,255,255,.04);border-radius:var(--rs);padding:10px 14px;margin-bottom:8px;border-left:3px solid var(--e2)}
.share-dl-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-bottom:32px}
.share-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;max-width:1200px;margin:0 auto}
.share-card{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--rs);overflow:hidden;cursor:pointer;transition:var(--tr)}
.share-card:hover{transform:translateY(-3px);box-shadow:var(--sh)}
.share-card img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.share-card-info{padding:8px 10px;display:flex;align-items:center;justify-content:space-between}
.share-card-up{font-size:.72rem;color:var(--e1)}
.share-card-dl{background:none;border:1px solid rgba(77,186,128,.3);border-radius:6px;padding:3px 8px;color:var(--e1);font-size:.7rem;cursor:pointer;font-family:var(--font-body);transition:var(--tr)}
.share-card-dl:hover{background:rgba(77,186,128,.15)}
.share-videos{max-width:1200px;margin:32px auto 0}
.share-videos h3{font-family:var(--font-heading);font-size:1.3rem;color:var(--gold-l);margin-bottom:16px}
.share-video-card{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--r);overflow:hidden;margin-bottom:16px}
.share-video-card video{width:100%;max-height:300px;object-fit:cover;display:block}
.share-video-info{padding:10px 14px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.iphone-note{background:rgba(201,168,76,.07);border:1px solid rgba(201,168,76,.2);border-radius:var(--rs);padding:10px 14px;font-size:.78rem;color:var(--gold-l);margin-bottom:16px}

/* TOAST */
.toast-wrap{position:fixed;bottom:16px;right:16px;z-index:400;display:flex;flex-direction:column;gap:7px;max-width:300px;pointer-events:none}
.toast{background:rgba(10,30,18,.97);border:1px solid var(--cbr);border-radius:var(--rs);padding:10px 16px;font-size:.8rem;color:var(--white);box-shadow:var(--sh);display:flex;align-items:center;gap:8px;animation:slideIn .3s ease;pointer-events:auto}
.toast.s{border-color:var(--e2)}.toast.e{border-color:#f87878}.toast.i{border-color:var(--gold)}

/* ═══════════════════════════════════════
   PHOTO BOOTH PAGE
   ═══════════════════════════════════════ */
.pb-wrap{padding:28px 20px 80px;max-width:1100px;margin:0 auto}
.pb-header{text-align:center;margin-bottom:28px}
.pb-header .s-eyebrow{margin-bottom:6px}
.pb-header .s-head{margin-bottom:8px}
.pb-header p{color:var(--muted);font-size:.88rem;max-width:480px;margin:0 auto}

/* Tab system for booth */
.pb-tabs{display:flex;gap:0;border-bottom:1px solid var(--cbr);margin-bottom:24px}
.pb-tab{background:none;border:none;padding:10px 22px;color:var(--muted);font-family:var(--font-body);font-size:.84rem;letter-spacing:.05em;text-transform:uppercase;font-weight:500;cursor:pointer;transition:var(--tr);border-bottom:2px solid transparent;margin-bottom:-1px}
.pb-tab.on{color:var(--gold-l);border-bottom-color:var(--gold)}
.pb-tab:hover:not(.on){color:var(--white)}
.pb-tab-content{display:none}
.pb-tab-content.on{display:block}

/* Favorites list */
.fav-empty{text-align:center;padding:48px 20px;color:var(--muted)}
.fav-empty .fav-ico{font-size:2.4rem;margin-bottom:12px;opacity:.4}
.fav-list{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}
.fav-item{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--r);overflow:hidden;display:flex;align-items:center;gap:12px;padding:10px 14px}
.fav-thumb{width:56px;height:56px;border-radius:8px;object-fit:cover;flex-shrink:0;cursor:pointer}
.fav-info{flex:1;min-width:0}
.fav-name{font-size:.84rem;color:var(--white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fav-meta{font-size:.71rem;color:var(--muted);margin-top:2px}
.fav-actions{display:flex;gap:6px;align-items:center}
.fav-move{background:none;border:1px solid var(--cbr);border-radius:6px;color:var(--muted);font-size:.9rem;width:28px;height:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--tr)}
.fav-move:hover{border-color:var(--e2);color:var(--e1)}
.fav-remove{background:rgba(248,120,120,.1);border:1px solid rgba(248,120,120,.25);border-radius:6px;color:#f87878;font-size:.7rem;padding:4px 10px;cursor:pointer;font-family:var(--font-body);transition:var(--tr)}
.fav-remove:hover{background:rgba(248,120,120,.22)}

/* Filter bar */
.fav-filter-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;align-items:center}
.fav-filter-label{font-size:.71rem;color:var(--muted);letter-spacing:.07em;text-transform:uppercase}
.fav-filter-btn{background:none;border:1px solid var(--cbr);border-radius:20px;padding:4px 12px;font-size:.75rem;color:var(--muted);cursor:pointer;font-family:var(--font-body);transition:var(--tr)}
.fav-filter-btn.on{background:rgba(201,168,76,.15);border-color:var(--gold);color:var(--gold-l)}
.fav-filter-btn:hover:not(.on){border-color:var(--e2);color:var(--e1)}

/* Fav download section */
.fav-dl-bar{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--r);padding:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:8px}
.fav-dl-info{font-size:.82rem;color:var(--muted)}
.fav-dl-info strong{color:var(--e1)}
.fav-dl-btn{background:linear-gradient(135deg,var(--gold),var(--gold-l));border:none;border-radius:var(--rs);padding:10px 20px;color:#1a1000;font-family:var(--font-body);font-size:.84rem;font-weight:600;cursor:pointer;transition:var(--tr);display:flex;align-items:center;gap:7px;white-space:nowrap}
.fav-dl-btn:hover{opacity:.88;transform:translateY(-1px)}
.fav-dl-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}

/* Photo Booth Studio */
.pbs-layout{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}
.pbs-canvas-col{position:relative}
.pbs-sidebar{position:relative}

/* Template selector - no template set banner */
.pb-no-template{background:rgba(201,168,76,.06);border:1px solid rgba(201,168,76,.2);border-radius:var(--r);padding:32px 20px;text-align:center}
.pb-no-template .pbo-ico{font-size:2rem;margin-bottom:10px}
.pb-no-template p{font-size:.84rem;color:var(--muted);max-width:340px;margin:0 auto}

/* Strip canvas area */
.pb-strip-outer{background:rgba(0,0,0,.5);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;align-items:center;gap:12px;border:1px solid var(--cbr)}
.pb-strip-label{font-size:.7rem;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;align-self:flex-start}
.pb-strip-canvas{position:relative;border-radius:8px;overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,.6)}
#pb-canvas{display:block;border-radius:8px}

/* Slot buttons */
.pb-slots{display:flex;flex-direction:column;gap:6px;width:100%;margin-top:4px}
.pb-slot-btn{background:rgba(255,255,255,.04);border:1.5px dashed rgba(255,255,255,.15);border-radius:8px;padding:8px 14px;color:var(--muted);font-family:var(--font-body);font-size:.78rem;cursor:pointer;transition:var(--tr);display:flex;align-items:center;gap:8px}
.pb-slot-btn:hover{border-color:var(--e2);color:var(--e1);background:rgba(255,255,255,.07)}
.pb-slot-btn.filled{border-style:solid;border-color:rgba(255,255,255,.1);color:var(--white)}
.pb-slot-btn .slot-thumb{width:28px;height:28px;border-radius:4px;object-fit:cover;flex-shrink:0}
.pb-slot-filled{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:10px;margin-bottom:6px;}

/* Sidebar controls */
.pbs-section{background:var(--cbg);border:1px solid var(--cbr);border-radius:var(--r);padding:16px;margin-bottom:12px}
.pbs-section-title{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--e2);margin-bottom:12px;font-weight:500}
.pbs-tpl-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:8px}
.pbs-tpl-card{border-radius:8px;overflow:hidden;cursor:pointer;border:2px solid transparent;transition:var(--tr);position:relative}
.pbs-tpl-card:hover{border-color:var(--e2)}
.pbs-tpl-card.active{border-color:var(--gold)}
.pbs-tpl-card canvas{display:block;width:100%;height:auto}
.pbs-tpl-name{font-size:.65rem;text-align:center;color:var(--muted);padding:4px 2px;background:rgba(0,0,0,.3)}

/* Filter chips */
.pb-filter-row{display:flex;gap:6px;flex-wrap:wrap}
.pb-filter-chip{background:rgba(255,255,255,.05);border:1px solid var(--cbr);border-radius:20px;padding:4px 11px;font-size:.73rem;color:var(--muted);cursor:pointer;font-family:var(--font-body);transition:var(--tr)}
.pb-filter-chip.on{background:rgba(77,186,128,.12);border-color:var(--e2);color:var(--e1)}
.pb-filter-chip:hover:not(.on){border-color:rgba(255,255,255,.25);color:var(--white)}

/* CTA download */
.pb-dl-bar{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap}
.pb-dl-btn{flex:1;min-width:140px;background:linear-gradient(135deg,var(--gold),var(--gold-l));border:none;border-radius:var(--rs);padding:12px 18px;color:#1a1000;font-family:var(--font-body);font-size:.86rem;font-weight:600;cursor:pointer;transition:var(--tr);display:flex;align-items:center;justify-content:center;gap:8px}
.pb-dl-btn:hover{opacity:.88;transform:translateY(-1px)}
.pb-dl-btn:disabled{opacity:.35;cursor:not-allowed;transform:none}
.pb-reset-btn{background:rgba(255,255,255,.04);border:1px solid var(--cbr);border-radius:var(--rs);padding:12px 18px;color:var(--muted);font-family:var(--font-body);font-size:.84rem;cursor:pointer;transition:var(--tr)}
.pb-reset-btn:hover{border-color:var(--e2);color:var(--e1)}

/* Photo picker modal */
.pb-picker{position:fixed;inset:0;z-index:200;display:none;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.7);backdrop-filter:blur(12px)}
.pb-picker.show{display:flex}
.pb-picker-card{background:linear-gradient(145deg,rgba(15,50,28,.98),rgba(7,26,14,.99));border:1px solid var(--cbr);border-radius:20px 20px 0 0;width:100%;max-width:640px;max-height:80vh;display:flex;flex-direction:column;padding:20px;overflow:hidden}
.pb-picker-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.pb-picker-title{font-family:var(--font-heading);font-size:1.1rem;color:var(--gold-l)}
.pb-picker-close{background:none;border:1px solid var(--cbr);border-radius:8px;padding:5px 12px;color:var(--muted);cursor:pointer;font-family:var(--font-body);font-size:.8rem;transition:var(--tr)}
.pb-picker-close:hover{border-color:var(--e2);color:var(--e1)}
.pb-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:6px;overflow-y:auto;flex:1}
.pb-picker-item{aspect-ratio:1;border-radius:8px;overflow:hidden;cursor:pointer;border:2px solid transparent;transition:var(--tr);position:relative}
.pb-picker-item:hover{border-color:var(--e2);transform:scale(1.03)}
.pb-picker-item.selected{border-color:var(--gold)}
.pb-picker-item img{width:100%;height:100%;object-fit:cover;display:block}
.pb-picker-item .pb-pi-check{position:absolute;top:4px;right:4px;width:18px;height:18px;border-radius:50%;background:var(--gold);display:none;align-items:center;justify-content:center;font-size:.65rem;color:#1a1000;font-weight:700}
.pb-picker-item.selected .pb-pi-check{display:flex}
.pb-picker-src-tabs{display:flex;gap:8px;margin-bottom:12px}
.pb-picker-src-btn{background:none;border:1px solid var(--cbr);border-radius:8px;padding:6px 14px;color:var(--muted);font-size:.78rem;font-family:var(--font-body);cursor:pointer;transition:var(--tr)}
.pb-picker-src-btn.on{background:rgba(77,186,128,.12);border-color:var(--e2);color:var(--e1)}
.pb-picker-upload-zone{border:2px dashed var(--cbr);border-radius:var(--rs);padding:24px;text-align:center;cursor:pointer;position:relative;transition:var(--tr)}
.pb-picker-upload-zone:hover{border-color:var(--e2)}
.pb-picker-upload-zone input{position:absolute;inset:0;opacity:0;cursor:pointer}

/* Admin booth settings in admin panel */
.pb-tpl-admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.pb-tpl-adm-card{border-radius:10px;overflow:hidden;cursor:pointer;border:2px solid transparent;transition:var(--tr);position:relative}
.pb-tpl-adm-card:hover{border-color:var(--e2);transform:translateY(-2px)}
.pb-tpl-adm-card.active{border-color:var(--gold)}
.pb-tpl-adm-card canvas{display:block;width:100%}
.bdt-svg-wrap{display:block;width:100%}
.bdt-svg-wrap svg{display:block;width:100%;height:auto}
.pb-tpl-adm-name{font-size:.65rem;text-align:center;color:var(--muted);padding:4px;background:rgba(0,0,0,.4)}
.pb-tpl-adm-check{position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:50%;background:var(--gold);display:none;align-items:center;justify-content:center;font-size:.7rem;color:#1a1000;font-weight:700}
.pb-tpl-adm-card.active .pb-tpl-adm-check{display:flex}

@media(max-width:768px){
  .pbs-layout{grid-template-columns:1fr}
  .pbs-sidebar{order:-1}
  .pb-wrap{padding:20px 12px 72px}
  .pb-picker-grid{grid-template-columns:repeat(auto-fill,minmax(75px,1fr))}
  .pbs-tpl-grid{grid-template-columns:repeat(3,1fr)}
}

/* MOBILE */
@media(max-width:768px){
  nav{padding:0 14px;height:54px}
  .page{padding-top:54px}
  .nav-brand{font-size:1rem}
  .nav-center{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .nav-center::-webkit-scrollbar{display:none}
  .nb{padding:5px 9px;font-size:.72rem;white-space:nowrap}
  .npill{padding:4px 10px;font-size:.7rem;max-width:110px}
  .hero{padding:32px 16px 48px;min-height:calc(100vh - 54px)}
  .couple-names{font-size:clamp(2.2rem,12vw,3.5rem)}
  .ss-sec{padding:0 16px 56px}
  .ss-wrap{aspect-ratio:4/3;border-radius:14px}
  .gal-layout{grid-template-columns:1fr;gap:16px}
  .gal-wrap{padding:20px 12px 48px}
  .rank-card{position:static;padding:16px 14px;max-height:none;overflow-y:visible}
  .pgrid{grid-template-columns:repeat(3,1fr);gap:2px}
  .mc{border-radius:0}
  .upl-wrap{padding:20px 14px 48px}
  .dz{padding:32px 16px}
  .bars{grid-template-columns:1fr 1fr}
  .adm-wrap{padding:20px 12px 48px}
  .adm-grid{grid-template-columns:1fr}
  .stats-row{gap:8px}
  .sn{font-size:1.6rem}
  .adm-top{flex-direction:column;align-items:flex-start}
  .ovc{padding:28px 20px}
  .pg-grid{grid-template-columns:repeat(3,1fr);gap:6px}
  .adel{opacity:1}
  .lb-arrow{width:36px;height:36px;font-size:1rem}
  .lb-prev{left:8px}
  .lb-next{right:8px}
  .clrg{grid-template-columns:1fr 1fr}
  .reset-btns{flex-direction:column}
  .share-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
  .theme-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}
  .adm-tabs{overflow-x:auto}
  .adm-tab{white-space:nowrap;font-size:.72rem;padding:8px 14px}
}

/* ─── CLOSING SEQUENCE ─────────────────────────────────────────── */
#closing-banner{position:fixed;top:58px;left:0;right:0;z-index:49;background:rgba(7,20,12,.97);backdrop-filter:blur(10px);border-top:1px solid rgba(201,168,76,.25);border-bottom:1px solid rgba(201,168,76,.25);padding:7px 20px;display:none;align-items:center;justify-content:space-between;gap:10px}
#closing-banner.show{display:flex}
body.closing-active .page{padding-top:96px}
.closing-timer{font-family:var(--font-heading);font-size:1.1rem;color:var(--gold-l);font-weight:600;letter-spacing:.05em;min-width:70px;text-align:center}
.closing-msg{font-size:.75rem;color:var(--muted);flex:1;text-align:center}
#closing-overlay{position:fixed;inset:0;z-index:2000;display:none;align-items:center;justify-content:center;flex-direction:column;background:#050e07;overflow:hidden}
#closing-overlay.show{display:flex}
.closing-content{position:relative;z-index:10;text-align:center;padding:32px 24px;max-width:420px}
.cl-anim-btn{transition:all .2s}
.cl-anim-btn:hover{border-color:rgba(255,255,255,.25)!important;background:rgba(255,255,255,.07)!important;color:var(--e1)!important}
.cl-anim-btn.active{border-color:rgba(201,168,76,.5)!important;background:rgba(201,168,76,.1)!important;color:var(--gold-l)!important}
.closing-icon{font-size:2.8rem;margin-bottom:16px}
.closing-overlay-sub{font-size:.82rem;color:var(--muted);line-height:1.7;margin-bottom:16px}
.closing-content h2{font-family:var(--font-heading);font-size:1.4rem;color:var(--gold-l);margin-bottom:12px;line-height:1.4}
.closing-content p{font-size:.85rem;color:var(--muted);line-height:1.7;margin-bottom:16px}
.closing-contacts{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.closing-contact-btn{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:12px 16px;color:var(--e1);font-size:.82rem;text-decoration:none;display:flex;align-items:center;gap:10px}
.cl-curtain-l,.cl-curtain-r{position:absolute;top:0;height:100%;width:50%;background:linear-gradient(135deg,#1a0a00,#3d2800,#7a5500,#3d2800,#1a0a00);z-index:1;transition:transform 2.5s cubic-bezier(.4,0,.2,1)}
.cl-curtain-l{left:0;transform:translateX(-100%)}
.cl-curtain-r{right:0;transform:translateX(100%)}
.cl-curtain-l.in{transform:translateX(0)}
.cl-curtain-r.in{transform:translateX(0)}
.cl-petal{position:absolute;border-radius:50% 50% 50% 0;opacity:0;pointer-events:none}
.cl-vignette{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 0%,#000 100%);opacity:0;z-index:1;transition:opacity 3.5s ease}
.cl-vignette.in{opacity:1}
.cl-glow{position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(120,60,10,.5) 0%,transparent 60%);opacity:0;z-index:1;transition:opacity 2.5s ease}
.cl-glow.in{opacity:1}
.cl-star{position:absolute;border-radius:50%;background:#f0d080;opacity:0;pointer-events:none}
.cl-lb-top,.cl-lb-bot{position:absolute;left:0;width:100%;background:#000;z-index:1;transition:transform 2s cubic-bezier(.4,0,.2,1)}
.cl-lb-top{top:0;height:80px;transform:translateY(-100%)}
.cl-lb-bot{bottom:0;height:80px;transform:translateY(100%)}
.cl-lb-top.in{transform:translateY(0)}
.cl-lb-bot.in{transform:translateY(0)}