/* SorialChat — wedding invitation */
:root{
  --bg:#150f0c;
  --bg2:#1d1612;
  --panel:#281d17;
  --gold:#d4af37;
  --gold-soft:#e8c86a;
  --rose:#c96a7c;
  --rose-soft:#e8a0ae;
  --cream:#f5e9d8;
  --txt:#f5e9d8;
  --dim:#b8a48e;
  --err:#f15c6d;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:auto}
body{background:var(--bg);color:var(--txt);font-family:Cairo,'Segoe UI',sans-serif;font-size:16px;overflow-x:hidden}
.hide{display:none!important}
#bgMusic{position:fixed;top:-99px;left:0;opacity:0;width:0;height:0}

/* ============ SCENE / ENVELOPE ============ */
.scene{position:fixed;inset:0;background:
  radial-gradient(1200px 800px at 50% -10%,#3a241c 0%,var(--bg) 60%);
  display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:200;
  cursor:pointer;}
.envelope{position:relative;width:min(420px,86vw);aspect-ratio:270/350;
  margin:90px 0 40px;}
.envelope-back{position:absolute;inset:0;background:linear-gradient(160deg,#5a3a24,#3a241c 60%,#2a1a13);
  border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.6);}
.envelope-back::after{content:"";position:absolute;top:0;left:0;right:0;height:46%;
    background:linear-gradient(to bottom,transparent,var(--bg2));border-radius:8px 8px 0 0;}
.envelope-flap{position:absolute;top:0;left:0;right:0;height:50%;
    background:linear-gradient(160deg,#6b4426,#4a2e1c 70%);
    border-radius:8px 8px 0 0;
    transform-origin:top center;z-index:3;
    transition:transform .8s cubic-bezier(.22,1,.36,1);}
.envelope-flap::before{content:"";position:absolute;top:0;left:0;right:0;height:50%;
    background:linear-gradient(to bottom,transparent,var(--bg2));border-radius:8px 8px 0 0;}
.envelope-flap.open{transform:rotateX(180deg);}
.envelope-front{position:absolute;inset:0;background:linear-gradient(160deg,#6b4426,#4a2e1c 70%);
    border-radius:8px;z-index:4;box-shadow:0 20px 60px rgba(0,0,0,.6);
    display:flex;align-items:center;justify-content:center;transition:transform .7s ease .15s;}
.envelope.open .envelope-front{transform:translateY(-110%) rotate(-4deg);opacity:.95;}
.wax-seal{position:relative;z-index:5;width:64px;height:64px;border-radius:50%;
    background:radial-gradient(circle at 35% 30%,#f0d48a,#c9a227 55%,#8a6a10);
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 4px 14px rgba(0,0,0,.5), inset 0 2px 4px rgba(255,255,255,.5);
    font-family:'Amiri',serif;font-weight:700;font-size:18px;color:#5a4206;}
.names-on-envelope{position:absolute;bottom:12px;left:0;right:0;text-align:center;z-index:5;
    display:flex;justify-content:center;align-items:center;gap:10px;font-family:'Amiri',serif;}
.groom-name{font-size:22px;color:var(--cream);font-weight:700;}
.bride-name{font-size:22px;color:var(--cream);font-weight:700;}
.and-symbol{color:var(--rose);font-size:20px;}
.envelope-inner{position:absolute;inset:0;z-index:6;pointer-events:none;}
.invitation-card{position:absolute;top:4%;left:6%;right:6%;bottom:4%;pointer-events:auto;
    background:linear-gradient(170deg,#f7ecd9,#ecd9b8);border-radius:10px;padding:22px 18px;
    box-shadow:0 18px 40px rgba(0,0,0,.5);transform:perspective(600px) rotateY(-8deg);transform-origin:left center;}
.card-front{text-align:center;}
.bismillah{font-size:13px;color:#7a5c33;font-family:'Amiri',serif;font-weight:700;letter-spacing:1px}
.verse{font-family:'Amiri',serif;font-size:16px;color:#4a3423;line-height:1.8;margin-top:10px;font-weight:700}
.verse-ref{font-family:'Amiri',serif;font-size:13px;color:#8a6a3a;margin-top:6px}
.tap-hint{position:absolute;bottom:18px;inset-inline:0;text-align:center;color:var(--dim);
    font-size:14px;z-index:10;letter-spacing:1px;animation:pulse 2s infinite;}

/* ============ MAIN CONTENT ============ */
.main-content{min-height:100vh;position:relative;background:var(--bg);padding-top:70px;}
.section{position:relative;padding:90px 0 90px;overflow:hidden;}
.container{width:min(1100px,92vw);margin:0 auto;position:relative;z-index:2;}
.section-title{font-family:'Amiri',serif;font-size:clamp(28px,5vw,44px);text-align:center;font-weight:700;
    color:var(--cream);margin-bottom:10px;}
.section-title span{color:var(--gold);}
.section-subtitle{text-align:center;color:var(--dim);font-family:'Amiri',serif;font-size:17px;margin-bottom:40px;}

/* ---- couple ---- */
.couple-section{background:radial-gradient(800px 500px at 50% 20%,#2c1d15 0%,var(--bg2) 70%);text-align:center;}
.couple-card{display:flex;align-items:center;justify-content:center;gap:clamp(10px,3vw,30px);flex-wrap:wrap;}
.person{flex:0 1 260px;text-align:center;}
.photo-frame{position:relative;width:min(300px,70vw);aspect-ratio:4/5;margin:0 auto;border-radius:18px;
    background:linear-gradient(160deg,#3a241c,#2a1a13);padding:12px;box-shadow:0 20px 50px rgba(0,0,0,.55);
    border:1px solid rgba(212,175,55,.25);}
.photo-frame::before{content:"";position:absolute;inset:7px;border:2px solid rgba(212,175,55,.45);
    border-radius:12px;pointer-events:none;}
.photo-frame img{width:100%;height:100%;object-fit:cover;border-radius:10px;display:block;background:#000;}
.frame-decoration{position:absolute;inset:0;border-radius:12px;pointer-events:none;
    background:linear-gradient(135deg,transparent 40%,rgba(212,175,55,.25) 50%,transparent 60%);
    background-size:200% 200%;}
.name{font-family:'Amiri',serif;font-size:clamp(30px,5vw,44px);font-weight:700;margin-top:16px;color:var(--cream);}
.title{color:var(--gold);font-size:15px;letter-spacing:4px;text-transform:uppercase;font-family:Cairo;font-weight:600;}
.union-symbol{color:var(--rose);display:flex;flex-direction:column;align-items:center;gap:8px;margin:20px 0;}
.hearts-knot{width:70px;height:70px;transform:rotate(-90deg);}
.date{font-family:'Amiri',serif;font-size:19px;color:var(--txt);letter-spacing:2px;}

/* ---- invitation ---- */
.invitation-section{background:linear-gradient(180deg,var(--bg2),var(--bg));text-align:center;}
.parchment-bg{position:absolute;inset:0;background:
    repeating-linear-gradient(0deg,rgba(212,175,55,.025) 0 2px,transparent 2px 6px),
    radial-gradient(900px 500px at 50% 0%,#33221a 0%,transparent 70%);
    pointer-events:none;}
.invitation-card-main{max-width:760px;margin:0 auto;background:linear-gradient(170deg,#f7ecd9,#e8d3b0);
    border-radius:16px;padding:34px 28px;position:relative;box-shadow:0 30px 70px rgba(0,0,0,.6);
    border:1px solid rgba(212,175,55,.4);transform:perspective(1200px) rotateX(2deg);transform-origin:50% 50%;margin-top:30px;}
.ornament{text-align:center;font-size:22px;color:var(--gold);}
.ornament.top{color:#8a6a3a;}.ornament.bottom{color:#8a6a3a;}
.bismillah-large{font-family:'Amiri',serif;font-size:22px;color:#7a5c33;font-weight:700;letter-spacing:3px;margin-top:8px}
.verse-main{font-family:'Amiri',serif;font-size:clamp(18px,2.6vw,24px);color:#4a3423;line-height:2;font-weight:700;margin-top:14px}
.verse-ref-main{font-family:'Amiri',serif;font-size:15px;color:#8a6a3a;margin-top:8px}
.invitation-body{text-align:center;margin-top:22px}
.opening{font-family:'Amiri',serif;font-size:18px;color:#5a4228;line-height:1.9}
.names-big{font-family:'Amiri',serif;font-size:clamp(40px,8vw,64px);font-weight:700;margin:18px 0 14px;
    background:linear-gradient(90deg,#a05a6a,#c96a7c 40%,#d4af37 70%,#a05a6a);-webkit-background-clip:text;background-clip:text;color:transparent;display:flex;justify-content:center;gap:18px;align-items:center;flex-wrap:wrap;}
.groom-big{color:#8a3a4e;}.bride-big{color:#a05a6a;}
.heart-sep{color:var(--rose);font-size:40px;animation:beat 1.6s infinite;}
@keyframes beat{0%,100%{transform:scale(1)}12%{transform:scale(1.18)}24%{transform:scale(1)}}
.details-grid{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:20px}
.detail-item{display:flex;gap:10px;align-items:center;background:rgba(212,175,55,.08);
    padding:12px 16px;border-radius:12px;min-width:min(240px,80vw);}
.detail-icon{font-size:26px}
.detail-label{display:block;font-size:12px;color:#8a6a3a;letter-spacing:1px}
.detail-value{display:block;font-family:'Amiri',serif;font-size:16px;font-weight:700;color:#4a3423;margin-top:2px}
.detail-value-miladi{display:block;font-size:13px;color:#8a6a3a;margin-top:2px}
.closing{font-family:'Amiri',serif;font-size:16px;color:#5a4228;line-height:2;margin-top:20px;font-weight:700}
.parents{margin-top:16px;padding-top:14px;border-top:1px dashed rgba(122,92,51,.5);font-family:'Amiri',serif;font-size:15px;color:#6a4f30;line-height:1.9}
.parent-names{font-weight:700}

/* ---- memories gallery ---- */
.memories-section{background:radial-gradient(900px 500px at 50% 30%,#261a13 0%,var(--bg) 70%);text-align:center;}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:30px}
.gallery-item{position:relative;border-radius:16px;overflow:hidden;background:var(--panel);aspect-ratio:4/3;
    display:flex;align-items:center;justify-content:center;box-shadow:0 14px 34px rgba(0,0,0,.5);border:1px solid rgba(212,175,55,.18);}
.gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s;}
.gallery-item:hover img{transform:scale(1.06);}
.gallery-item .cap{position:absolute;bottom:0;left:0;right:0;padding:10px;background:linear-gradient(to top,rgba(0,0,0,.75),transparent);
    font-family:'Amiri',serif;font-size:14px;color:var(--txt);text-align:center;}

/* ---- guestbook ---- */
.guestbook-section{background:linear-gradient(180deg,var(--bg2),var(--bg));text-align:center;}
.guestbook-form{background:rgba(212,175,55,.06);border:1px solid rgba(212,175,55,.25);
    border-radius:16px;padding:18px;max-width:620px;margin:0 auto 30px;}
.form-row{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.form-row input, .form-row select{width:100%;background:var(--bg2);border:1px solid var(--panel2);color:var(--txt);
    padding:12px;border-radius:10px;font-size:15px;font-family:inherit;outline:none;}
.form-row input:focus,.form-row select:focus{border-color:var(--gold);}
.form-row select{background:var(--bg2);color:var(--txt);}
.form-row .fld{flex:1;min-width:180px;}
.guestbook-form textarea{width:100%;background:var(--bg2);border:1px solid var(--panel2);color:var(--txt);
    padding:12px;border-radius:10px;font-size:15px;font-family:inherit;outline:none;resize:vertical;}
.guestbook-form textarea:focus{border-color:var(--gold);}
.btn-submit{background:linear-gradient(135deg,#c96a7c,#d4af37);color:#2a140c;border:none;border-radius:12px;
    padding:13px 22px;font-size:16px;font-weight:700;cursor:pointer;font-family:inherit;width:100%;margin-top:12px;
    box-shadow:0 8px 20px rgba(201,106,124,.35);}
.btn-submit:active{transform:scale(.98);}
.messages-list{display:flex;flex-direction:column;gap:12px;max-width:720px;margin:0 auto;}
.guest-msg{background:var(--panel);border:1px solid rgba(212,175,55,.2);border-radius:14px;padding:14px 16px;
    text-align:right;position:relative;}
.guest-msg .gm-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.guest-msg .gm-name{font-weight:700;color:var(--gold);font-size:14px;}
.guest-msg .gm-for{font-size:12px;color:var(--dim);}
.guest-msg .gm-text{font-family:'Amiri',serif;font-size:16px;color:var(--txt);line-height:1.7;}
.guest-msg .gm-time{font-size:11px;color:var(--dim);margin-top:6px;}
.guest-empty{color:var(--dim);text-align:center;padding:20px;font-family:'Amiri',serif;font-size:15px;}

/* ---- music toggle ---- */
.music-toggle{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);z-index:150;width:56px;height:56px;
    border-radius:50%;background:rgba(212,175,55,.9);color:#2a140c;border:none;font-size:24px;cursor:pointer;
    box-shadow:0 10px 30px rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;}
.music-icon{font-size:24px;}
.music-icon.paused{display:none;}

/* ---- lightbox ---- */
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:300;display:flex;align-items:center;justify-content:center}
.lb-close{position:fixed;top:18px;left:18px;background:var(--panel);color:var(--txt);border:none;border-radius:50%;
    width:44px;height:44px;font-size:18px;cursor:pointer;z-index:302;}
.lb-prev{position:fixed;top:50%;transform:translateY(-50%) translateX(18px);background:var(--panel);color:var(--txt);
    border:none;border-radius:50%;width:44px;height:44px;font-size:20px;cursor:pointer;z-index:302;}
.lb-next{position:fixed;top:50%;transform:translateY(-50%) translateX(-18px);background:var(--panel);color:var(--txt);
    border:none;border-radius:50%;width:44px;height:44px;font-size:20px;cursor:pointer;z-index:302;}
.lb img{max-width:92vw;max-height:74vh;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.6);}
.lb p{position:absolute;bottom:24px;text-align:center;font-family:'Amiri',serif;font-size:16px;color:var(--txt);background:rgba(0,0,0,.5);padding:8px 18px;border-radius:20px;}

/* ---- toast ---- */
.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(40,29,23,.95);color:var(--txt);
    padding:12px 22px;border-radius:12px;font-size:14px;z-index:400;box-shadow:0 10px 30px rgba(0,0,0,.5);border:1px solid rgba(212,175,55,.3);}

/* ---- footer ---- */
.footer{text-align:center;padding:50px 20px 40px;background:var(--bg2);}
.footer-verse{font-family:'Amiri',serif;font-size:20px;color:var(--gold);line-height:2.2;}
.footer-credit{color:var(--dim);font-size:13px;margin-top:8px;}
.social-icons{display:flex;gap:12px;justify-content:center;margin-top:18px;}
.social-icon{font-size:26px;background:var(--panel);width:52px;height:52px;border-radius:50%;display:flex;
    align-items:center;justify-content:center;text-decoration:none;border:1px solid rgba(212,175,55,.25);}

/* ---- reveal animations ---- */
.reveal{opacity:0;transform:translateY(40px);transition:opacity .8s ease,transform .8s cubic-bezier(.22,1,.36,1);}
.reveal.visible{opacity:1;transform:translateY(0);}

@media (max-width:640px){
  .section{padding:64px 0 64px;}
  .invitation-card-main{padding:24px 16px;}
  .names-big{font-size:clamp(32px,9vw,52px);}
  .detail-item{min-width:100%;}
}
