/* ============================================================
   KISAH KITA — SETIAP DETIK BERSAMAMU
   Romantic Mobile-First Cinematic Love Story
   ============================================================ */

:root {
    --color-bg: #fdf6f3;
    --color-bg-alt: #faf0ec;
    --color-bg-dark: #1a1215;
    --color-primary: #d4a574;
    --color-primary-light: #edd5bb;
    --color-accent: #d4787e;
    --color-accent-light: #f0b8bd;
    --color-accent-dark: #c05a62;
    --color-rose: #f0c8cf;
    --color-rose-light: #fae7ec;
    --color-rose-dark: #d4888e;
    --color-blush: #fbe5e8;
    --color-cream: #fef9f6;
    --color-gold: #c9a96e;
    --color-text: #3d2328;
    --color-text-light: #7a5c63;
    --color-text-muted: #a88c93;
    --color-white: #ffffff;
    --color-glass-bg: rgba(255, 245, 243, 0.35);
    --color-glass-border: rgba(255, 220, 215, 0.5);
    --color-glass-bg-dark: rgba(255, 245, 243, 0.15);
    --font-display: 'Playfair Display','Cormorant Garamond',Georgia,serif;
    --font-script: 'Dancing Script',cursive;
    --font-body: 'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
    --font-serif: 'Cormorant Garamond',Georgia,serif;
    --section-padding: 64px 20px;
    --glass-blur: blur(24px);
    --transition-smooth: 0.6s cubic-bezier(0.25,0.46,0.45,0.94);
    --transition-bounce: 0.5s cubic-bezier(0.34,1.56,0.64,1);
    --shadow-sm: 0 2px 12px rgba(180,120,120,0.06);
    --shadow-md: 0 8px 36px rgba(180,120,120,0.08);
    --shadow-lg: 0 20px 60px rgba(180,120,120,0.12);
    --shadow-xl: 0 32px 80px rgba(180,120,120,0.14);
    --shadow-rose: 0 8px 32px rgba(212,120,126,0.18);
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;font-size:16px}
body{
    font-family:var(--font-body);
    background:linear-gradient(180deg,var(--color-bg) 0%,var(--color-cream) 50%,var(--color-bg-alt) 100%);
    color:var(--color-text);line-height:1.75;overflow-x:hidden;
    -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
    -webkit-tap-highlight-color:transparent;
}
img{max-width:100%;height:auto;display:block}
a{text-decoration:none;color:inherit}
button{cursor:pointer;border:none;background:none;font-family:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation}

/* Particles */
#particlesCanvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}

/* ==================== NAV — Bottom Bar Mobile ==================== */
.nav{
    display:none;
    position:fixed;bottom:0;left:0;right:0;z-index:1000;padding:env(safe-area-inset-bottom,0) 0 0 0;
    background:rgba(253,246,243,0.88);backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px);
    border-top:1px solid rgba(255,220,215,0.45);
    box-shadow:0 -4px 30px rgba(180,120,120,0.08);
    transition:all var(--transition-smooth);
}
.nav.scrolled{background:rgba(253,246,243,0.94)}
.nav-inner{display:flex;align-items:center;justify-content:center;padding:6px 8px}
.nav-logo{display:none}
.nav-links{display:flex;list-style:none;gap:0;flex:1;justify-content:space-around;overflow-x:auto;scrollbar-width:none;padding:0 4px}
.nav-links::-webkit-scrollbar{display:none}
.nav-links a{
    display:flex;flex-direction:column;align-items:center;padding:8px 9px;
    font-size:0.66rem;font-weight:500;color:var(--color-text-muted);
    border-radius:12px;transition:all 0.25s;white-space:nowrap;position:relative;gap:3px;
}
.nav-links a::before{content:'❤️';font-size:0.55rem;opacity:0;transform:translateY(4px);transition:all 0.3s}
.nav-links a.active{color:var(--color-accent-dark);font-weight:700}
.nav-links a.active::before{opacity:1;transform:translateY(0)}
.nav-links a:active{background:rgba(212,120,126,0.1)}
.nav-toggle{display:none}

/* Music toggle */
.music-toggle{
    position:fixed;top:12px;right:12px;font-size:1.3rem;border-radius:50%;
    background:rgba(255,245,243,0.7);backdrop-filter:blur(20px);
    border:1px solid rgba(255,220,215,0.4);width:44px;height:44px;
    display:flex;align-items:center;justify-content:center;
    z-index:1001;box-shadow:var(--shadow-sm);transition:all var(--transition-bounce);
}
.music-toggle:active{transform:scale(0.9)}
.music-toggle.muted{background:rgba(255,245,243,0.4);opacity:0.55}

/* Memory Counter */
.memory-counter{position:fixed;top:68px;right:12px;z-index:900;pointer-events:none}
.counter-inner{
    background:rgba(255,245,243,0.75);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
    border:1px solid rgba(255,220,215,0.5);border-radius:18px;padding:10px 16px;
    text-align:center;box-shadow:var(--shadow-sm);
}
.counter-number{
    display:block;font-family:var(--font-display);font-size:1.6rem;font-weight:700;
    background:linear-gradient(135deg,var(--color-accent),var(--color-rose-dark));
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1;
}
.counter-label{display:block;font-size:0.62rem;color:var(--color-text-light);text-transform:uppercase;letter-spacing:2px;margin-top:3px}

/* Scene */
.scene{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;position:relative;z-index:1;padding-bottom:24px}
.chapter-scene{padding:var(--section-padding);padding-bottom:64px;min-height:auto}
.alt-bg{background:linear-gradient(180deg,var(--color-bg-alt) 0%,var(--color-blush) 50%,var(--color-bg-alt) 100%)}
.chapter-container{max-width:1100px;width:100%;margin:0 auto}

/* ==================== Opening Scene ==================== */
.opening-scene{min-height:100vh;min-height:100dvh;position:relative;overflow:hidden;padding:0}
.opening-bg{position:absolute;inset:0;z-index:0}
.opening-image{position:absolute;inset:-20px;background-size:cover;background-position:center}
.ken-burns{animation:kenBurns 25s ease-in-out infinite alternate}
@keyframes kenBurns{0%{transform:scale(1) translate(0,0)}100%{transform:scale(1.12) translate(-1.5%,-1.5%)}}
.opening-overlay{
    position:absolute;inset:0;
    background:linear-gradient(170deg,rgba(30,10,15,0.78) 0%,rgba(30,10,15,0.38) 45%,rgba(45,12,22,0.62) 100%);
}
.opening-content{position:relative;z-index:2;text-align:center;padding:28px 22px;max-width:550px;width:100%}
.opening-subtitle{
    font-family:var(--font-body);font-size:clamp(1.1rem,4.2vw,1.45rem);font-weight:500;
    color:rgba(255,235,228,0.95);margin-bottom:6px;
    text-shadow:0 2px 30px rgba(0,0,0,0.45);line-height:1.5;
}
.opening-title{
    font-family:var(--font-display);font-size:clamp(2.4rem,9vw,5rem);font-weight:700;
    background:linear-gradient(180deg,#fff 15%,#f5d5d8 100%);
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
    line-height:1.1;margin-bottom:16px;filter:drop-shadow(0 4px 30px rgba(0,0,0,0.5));
}
.opening-divider{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:28px}
.divider-line{width:44px;height:1px;background:rgba(255,220,215,0.5)}
.divider-heart{font-size:1rem;animation:heartPulse 2s ease-in-out infinite;filter:drop-shadow(0 0 8px rgba(255,150,160,0.5))}
@keyframes heartPulse{0%,100%{transform:scale(1)}30%{transform:scale(1.35)}60%{transform:scale(0.9)}}
.opening-scroll-hint{
    position:absolute;bottom:100px;left:50%;transform:translateX(-50%);
    color:rgba(255,228,218,0.7);font-size:0.72rem;letter-spacing:4px;text-transform:uppercase;
    animation:floatHint 2.5s ease-in-out infinite;
}
@keyframes floatHint{0%,100%{transform:translateX(-50%) translateY(0);opacity:0.5}50%{transform:translateX(-50%) translateY(10px);opacity:1}}
.opening-hearts{position:absolute;inset:0;pointer-events:none;z-index:1}

/* Rose Corner Decorations */
.rose-corner{position:absolute;font-size:2rem;z-index:3;pointer-events:none;opacity:0.5;animation:roseFloat 4s ease-in-out infinite}
.rose-tl{top:16px;left:16px;animation-delay:0s}
.rose-tr{top:16px;right:16px;animation-delay:1s}
.rose-bl{bottom:100px;left:16px;animation-delay:2s}
.rose-br{bottom:100px;right:16px;animation-delay:3s}
@keyframes roseFloat{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-8px) rotate(5deg)}}

/* Buttons */
.btn-primary{
    display:inline-block;padding:15px 34px;
    background:linear-gradient(135deg,var(--color-accent),var(--color-rose-dark));
    color:white;font-family:var(--font-body);font-size:0.92rem;font-weight:600;
    border-radius:50px;letter-spacing:0.5px;transition:all var(--transition-bounce);
    box-shadow:0 8px 28px rgba(200,100,110,0.35);position:relative;overflow:hidden;touch-action:manipulation;
}
.btn-primary::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,var(--color-rose-dark),var(--color-accent));opacity:0;transition:opacity 0.4s}
.btn-primary:active{transform:scale(0.96);box-shadow:0 6px 20px rgba(200,100,110,0.3)}
.btn-primary span{position:relative;z-index:1}

.btn-secondary{
    display:inline-block;padding:13px 28px;background:var(--color-glass-bg);backdrop-filter:blur(14px);
    border:1.5px solid var(--color-glass-border);color:var(--color-text);
    font-size:0.88rem;font-weight:600;border-radius:50px;
    transition:all var(--transition-bounce);box-shadow:var(--shadow-sm);touch-action:manipulation;
}
.btn-secondary:active{transform:scale(0.96);background:rgba(255,245,240,0.55)}

/* Chapter Header */
.chapter-header{text-align:center;margin-bottom:44px}
.chapter-number{font-family:var(--font-body);font-size:1rem;font-weight:600;color:var(--color-accent);display:block;margin-bottom:6px;letter-spacing:0.08em;text-transform:uppercase}
.chapter-title{
    font-family:var(--font-display);font-size:clamp(1.7rem,5vw,2.8rem);font-weight:600;
    background:linear-gradient(135deg,var(--color-text),var(--color-accent-dark));
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.3;
}
.ornament{color:var(--color-rose-dark);font-size:0.85rem;letter-spacing:8px;margin-top:8px;opacity:0.8}

/* Chapter intro text */
.chapter-intro{text-align:center;font-family:var(--font-body);font-size:1.05rem;color:var(--color-accent-dark);margin-bottom:32px;opacity:0.9;line-height:1.7}

/* Glass */
.glass{
    background:var(--color-glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
    border:1px solid var(--color-glass-border);border-radius:18px;box-shadow:var(--shadow-sm);
}

/* ==================== Chapter 1 — Hari Bertemu ==================== */
.chapter1-content{display:grid;grid-template-columns:1fr;gap:32px;align-items:center;text-align:center}
.chapter1-photo{display:flex;justify-content:center;order:-1}
.photo-frame{
    position:relative;border-radius:24px;overflow:hidden;
    box-shadow:var(--shadow-xl),0 0 0 7px rgba(255,245,243,0.55);max-width:280px;width:100%;margin:0 auto;
}
.photo-frame img{width:100%;aspect-ratio:auto;object-fit:contain;transition:transform 1.4s ease}
.photo-frame:active img{transform:scale(1.03)}
.photo-shine{
    position:absolute;top:0;left:-100%;width:60%;height:100%;
    background:linear-gradient(90deg,transparent,rgba(255,255,255,0.22),transparent);
    transform:skewX(-20deg);animation:photoShine 5s ease-in-out infinite;
}
@keyframes photoShine{0%,100%{left:-100%}50%{left:150%}}
.luxury-frame{border:3px solid rgba(255,220,215,0.5);outline:1px solid rgba(180,120,120,0.12);outline-offset:-9px}
.chapter1-details{display:flex;flex-direction:column;gap:14px;align-items:center}
.detail-card{display:flex;align-items:center;gap:14px;padding:15px 20px;border-radius:16px;width:100%;max-width:320px}
.detail-icon{font-size:1.7rem;flex-shrink:0}
.detail-info{display:flex;flex-direction:column;align-items:flex-start}
.detail-label{font-size:0.68rem;text-transform:uppercase;letter-spacing:2.5px;color:var(--color-text-muted);font-weight:600}
.detail-value{font-family:var(--font-display);font-size:1.15rem;color:var(--color-text);font-weight:500}
.chapter1-quote{
    font-family:var(--font-body);font-size:1.08rem;font-weight:500;color:var(--color-accent-dark);
    line-height:1.8;padding:20px 12px;text-align:center;
    position:relative;
}
.chapter1-quote::before,.chapter1-quote::after{content:'❤️';position:absolute;font-size:0.65rem;opacity:0.35;font-style:normal}
.chapter1-quote::before{top:4px;left:4px}
.chapter1-quote::after{bottom:4px;right:4px}
.floating-hearts-mini{position:relative;min-height:80px;pointer-events:none}

/* ==================== Chapter 2 — Galeri Horizontal ==================== */
.horizontal-gallery{
    overflow-x:auto;overflow-y:hidden;padding:6px 0 20px;cursor:grab;
    scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;
    scroll-behavior:smooth;margin:0 -20px;padding-left:20px;padding-right:20px;
}
.horizontal-gallery::-webkit-scrollbar{display:none}
.horizontal-gallery:active{cursor:grabbing}
.gallery-track{display:flex;gap:18px;width:max-content}
.memory-card{
    flex-shrink:0;width:240px;border-radius:18px;overflow:hidden;
    transition:all var(--transition-bounce);box-shadow:var(--shadow-sm);
}
.memory-card:active{transform:scale(0.97)}
.memory-card-img{position:relative;width:100%;aspect-ratio:4/5;overflow:hidden;background:#fdf0f2}
.memory-card-img img{width:100%;height:100%;object-fit:contain;transition:transform 1.2s ease}
.heart-burst{
    position:absolute;bottom:8px;right:8px;font-size:1.2rem;
    animation:heartBurst 2.5s ease-in-out infinite;opacity:0.8;
    filter:drop-shadow(0 2px 6px rgba(0,0,0,0.2));
}
@keyframes heartBurst{0%,100%{transform:scale(1)}40%{transform:scale(1.4)}70%{transform:scale(0.85)}}
.memory-card-info{padding:14px 12px}
.memory-emoji{font-size:1.3rem;display:block;margin-bottom:4px}
.memory-card-info h3{font-family:var(--font-display);font-size:1.15rem;font-weight:600;margin-bottom:3px;color:var(--color-text);line-height:1.4}
.memory-card-info p{font-size:0.78rem;color:var(--color-text-light);line-height:1.5;margin-bottom:6px}
.memory-date{font-size:0.68rem;color:var(--color-accent);font-weight:600;text-transform:uppercase;letter-spacing:1.5px}

.gallery-nav{display:flex;justify-content:center;gap:12px;margin-top:16px}
.gallery-arrow{
    width:42px;height:42px;border-radius:50%;
    background:rgba(255,245,243,0.55);backdrop-filter:blur(12px);
    border:1.5px solid rgba(255,220,215,0.4);font-size:1rem;
    color:var(--color-accent-dark);display:flex;align-items:center;justify-content:center;
    transition:all var(--transition-bounce);box-shadow:var(--shadow-sm);touch-action:manipulation;
}
.gallery-arrow:active{transform:scale(0.88);background:rgba(255,255,255,0.7)}

/* ==================== Chapter 3 — Polaroid ==================== */
.polaroid-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:26px 14px;padding:6px 0}
.polaroid{
    background:#fffefd;padding:9px 9px 36px;
    box-shadow:0 3px 18px rgba(180,120,120,0.1),0 1px 3px rgba(0,0,0,0.03);
    border-radius:3px;cursor:pointer;transition:all var(--transition-bounce);
    transform:rotate(var(--rot,0deg));position:relative;touch-action:manipulation;
}
.polaroid:nth-child(odd){--rot:-2.5deg}
.polaroid:nth-child(even){--rot:2deg}
.polaroid:nth-child(3n){--rot:-1deg}
.polaroid:nth-child(5n){--rot:3deg}
.polaroid:active{transform:rotate(0deg) translateY(-5px) scale(1.03);box-shadow:var(--shadow-lg);z-index:2}
.polaroid-img{width:100%;aspect-ratio:3/4;object-fit:contain;border-radius:2px;background:#fefefe}
.polaroid-caption{position:absolute;bottom:9px;left:7px;right:7px;text-align:center;font-family:var(--font-body);font-size:0.92rem;font-weight:500;color:var(--color-text-light);line-height:1.45}

/* ==================== Chapter 4 — Garis Masa ==================== */
.timeline{position:relative;padding:16px 0}
.timeline::before{
    content:'';position:absolute;left:25px;top:0;bottom:0;width:4px;border-radius:999px;
    background:linear-gradient(to bottom,#e9aab0 0%,#d4787e 50%,#e9aab0 100%);
    box-shadow:0 0 0 1px rgba(255,245,243,0.85),0 0 16px rgba(212,120,126,0.45);
}
.timeline-item{display:grid;grid-template-columns:50px 1fr;gap:14px;align-items:start;margin-bottom:40px;position:relative}
.timeline-content{padding:16px;border-radius:16px;grid-column:2;text-align:left}
.timeline-content img{border-radius:12px;aspect-ratio:3/4;object-fit:contain;width:100%;margin-bottom:8px;box-shadow:var(--shadow-sm);background:#fdf0f2}
.timeline-content:active img{transform:scale(1.02)}
.timeline-content h3{font-family:var(--font-display);font-size:1.2rem;font-weight:600;margin-bottom:2px;color:var(--color-text);line-height:1.4}
.timeline-date{display:inline-block;font-size:0.7rem;color:var(--color-accent);text-transform:uppercase;letter-spacing:1.5px;font-weight:600;margin-bottom:3px}
.timeline-content p{font-size:0.82rem;color:var(--color-text-light);margin-top:3px;line-height:1.6}
.timeline-dot{
    width:16px;height:16px;border-radius:50%;
    background:linear-gradient(135deg,var(--color-accent),var(--color-rose-dark));
    border:3px solid var(--color-bg-alt);box-shadow:0 0 0 4px rgba(240,200,207,0.5);
    justify-self:center;z-index:2;margin-top:10px;
}
@keyframes dotPop{0%{transform:scale(0)}60%{transform:scale(1.3)}100%{transform:scale(1)}}

/* ==================== Chapter 5 — Grid ==================== */
.masonry-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;grid-auto-flow:dense}
.masonry-item{position:relative;border-radius:12px;overflow:hidden;cursor:pointer;aspect-ratio:3/4;background:#fdf0f2;transition:all var(--transition-bounce);box-shadow:var(--shadow-sm)}
.masonry-item:nth-child(3n){grid-row:span 2}
.masonry-item img{width:100%;height:100%;object-fit:contain;transition:transform 1s ease}
.masonry-item:active img{transform:scale(1.04)}
.masonry-overlay{
    position:absolute;inset:0;
    background:linear-gradient(to top,rgba(55,18,28,0.65),transparent 55%);
    display:flex;align-items:flex-end;justify-content:center;padding:14px;opacity:1;transition:opacity 0.4s ease;
}
.masonry-overlay span{color:white;font-family:var(--font-body);font-size:0.95rem;font-weight:500;line-height:1.45;text-shadow:0 2px 10px rgba(0,0,0,0.4);text-align:center}

/* ==================== Orientation-adaptive image classes ==================== */
.photo-frame{background:#fdf0f2}
.memory-card-img.img-portrait{aspect-ratio:9/16}
.memory-card-img.img-landscape{aspect-ratio:4/3}
.polaroid.img-landscape .polaroid-img{aspect-ratio:4/3}
.timeline-content.img-landscape img{aspect-ratio:4/3}
.masonry-item.img-landscape{aspect-ratio:4/3}

/* ==================== Chapter 6 — Peta ==================== */
.geo-section{text-align:center;margin-bottom:32px}
.geo-question{font-family:var(--font-body);font-size:1.15rem;font-weight:500;color:var(--color-text);margin-bottom:18px;line-height:1.7}
.geo-note{font-size:0.95rem;color:var(--color-text-muted);margin-top:10px;line-height:1.6}
.map-container{max-width:900px;margin:0 auto}
#leafletMap{width:100%;height:320px;border-radius:18px;overflow:hidden;box-shadow:var(--shadow-lg);border:2px solid rgba(255,220,215,0.4)}
.map-caption{margin-top:14px;padding:16px 18px;text-align:center}
.map-caption p{font-family:var(--font-body);font-size:1rem;font-weight:500;color:var(--color-accent-dark);line-height:1.7}
.map-distance{font-family:var(--font-body)!important;font-size:0.95rem!important;color:var(--color-text-light)!important;margin-top:8px!important;line-height:1.6!important}

/* ==================== Chapter 7 — Surat ==================== */
.letter-scene{position:relative;overflow:hidden}
.letter-bg{position:absolute;inset:-20px;background-size:cover;background-position:center}
.ken-burns-slow{animation:kenBurnsSlow 40s ease-in-out infinite alternate}
@keyframes kenBurnsSlow{0%{transform:scale(1) translate(0,0)}100%{transform:scale(1.06) translate(-0.8%,-0.8%)}}
.letter-overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(20,5,10,0.82),rgba(28,8,14,0.72));z-index:0}
.letter-scene .chapter-container{position:relative;z-index:1}
.letter-scene .chapter-header .chapter-number,
.letter-scene .chapter-header .chapter-title,
.letter-scene .chapter-header .ornament{color:var(--color-white)}
.letter-scene .chapter-title{-webkit-text-fill-color:white;background:none}
.letter-container{max-width:600px;margin:0 auto;padding:18px;border-radius:20px;background:rgba(255,248,245,0.1)!important;backdrop-filter:blur(30px)!important;border:1px solid rgba(255,220,215,0.2)}
.letter-paper{padding:24px 20px;background:rgba(254,249,246,0.97);border-radius:5px;box-shadow:0 6px 36px rgba(0,0,0,0.2);position:relative}
.letter-content{font-family:var(--font-body);font-size:1.08rem;line-height:1.95;color:var(--color-text);min-height:160px}
.letter-content p{margin-bottom:12px}
.letter-signature{margin-top:24px;text-align:right;font-family:var(--font-body)}
.letter-signature p{font-size:1rem;color:var(--color-text-light);line-height:1.8}
.signature-name{
    font-size:1.4rem!important;font-weight:700;
    background:linear-gradient(135deg,var(--color-accent),var(--color-rose-dark));
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-top:2px!important;
}
.typewriter-cursor{display:inline-block;width:2px;height:1.1em;background:var(--color-accent);margin-left:2px;vertical-align:text-bottom;animation:blink 0.9s step-end infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}

/* ==================== Geolocation Gate ==================== */
.geolock-overlay{
    position:fixed;inset:0;background:rgba(20,5,10,0.88);z-index:3000;
    display:flex;align-items:center;justify-content:center;padding:20px;
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.geolock-overlay.hidden{display:none}
.geolock-card{
    max-width:420px;width:100%;padding:36px 28px;text-align:center;
    background:rgba(255,248,245,0.9)!important;backdrop-filter:blur(24px)!important;
    border-radius:24px;border:1px solid rgba(255,220,215,0.6);
}
.geolock-icon{font-size:3.5rem;margin-bottom:16px;animation:heartPulse 2s ease-in-out infinite}
.geolock-title{
    font-family:var(--font-display);font-size:1.55rem;font-weight:600;
    color:var(--color-accent-dark);margin-bottom:8px;
}
.geolock-desc{
    font-family:var(--font-body);font-size:1rem;color:var(--color-text-light);font-weight:500;
    line-height:1.7;margin-bottom:16px;
}
.geolock-note{font-size:0.95rem;color:var(--color-text-muted);margin-bottom:24px;line-height:1.6}
.geolock-btn{width:100%;max-width:320px}
.geolock-status{
    margin-top:14px;font-size:0.98rem;color:var(--color-accent);min-height:28px;line-height:1.6;
    transition:all 0.3s;
}
.geolock-status.error{color:#c05a62}

/* ==================== Final Scene ==================== */
.final-scene{min-height:100vh;min-height:100dvh;position:relative;overflow:hidden;background:var(--color-bg-dark);padding:0}
.final-slideshow{position:absolute;inset:0}
.final-slideshow .slide-img{position:absolute;inset:0;background-size:contain;background-position:center;background-repeat:no-repeat;background-color:#1a0a0c;opacity:0;transition:opacity 2.5s ease-in-out;animation:kenBurns 22s ease-in-out infinite alternate}
.final-slideshow .slide-img.active{opacity:1}
.final-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,5,10,0.78),rgba(20,8,12,0.82));z-index:1}
.final-content{position:relative;z-index:2;text-align:center;padding:28px 22px;max-width:600px}
.final-message{margin-bottom:32px}
.final-text{
    font-family:var(--font-display);font-size:clamp(1.05rem,3vw,1.5rem);
    color:var(--color-white);line-height:1.7;margin-bottom:8px;font-weight:400;
    text-shadow:0 2px 30px rgba(0,0,0,0.4);
}
.final-text-large{
    font-size:clamp(1.2rem,3.5vw,1.9rem);font-weight:600;margin-top:18px;font-style:italic;
    background:linear-gradient(180deg,#fff,#f0c8cf);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}

/* Final Scene Romantic Elements */
.final-hearts-row{display:flex;justify-content:center;gap:12px;margin-bottom:24px;font-size:1.4rem;animation:fadeIn 1.8s forwards;opacity:0}
.final-hearts-row span{animation:heartPulse 2s ease-in-out infinite}
.final-hearts-row span:nth-child(1){animation-delay:0s}
.final-hearts-row span:nth-child(2){animation-delay:0.3s}
.final-hearts-row span:nth-child(3){animation-delay:0.6s}
.final-hearts-row span:nth-child(4){animation-delay:0.9s}
.final-hearts-row span:nth-child(5){animation-delay:1.2s}
.final-sparkles{position:absolute;inset:0;pointer-events:none;z-index:2}
.final-sparkle{position:absolute;font-size:1rem;animation:sparklePop 1.6s ease-out forwards;opacity:0}
@keyframes sparklePop{0%{opacity:0;transform:scale(0) rotate(0deg)}30%{opacity:1;transform:scale(1.3) rotate(60deg)}100%{opacity:0;transform:scale(0.3) rotate(180deg) translateY(-45px)}}
.final-cta{margin-top:8px}
.lightbox{
    position:fixed;inset:0;background:rgba(10,3,6,0.97);z-index:2000;
    display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 0.35s ease;
}
.lightbox.open{opacity:1;pointer-events:all}
.lightbox-close{
    position:absolute;top:14px;right:14px;font-size:2rem;color:white;z-index:2001;
    width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,0.08);
    display:flex;align-items:center;justify-content:center;transition:all var(--transition-bounce);touch-action:manipulation;
}
.lightbox-close:active{transform:scale(0.9);background:rgba(255,255,255,0.2)}
.lightbox-prev,.lightbox-next{display:none}
.lightbox-content{max-width:94vw;max-height:90vh;display:flex;flex-direction:column;align-items:center}
.lightbox-content img{max-width:94vw;max-height:75vh;object-fit:contain;border-radius:6px;box-shadow:0 20px 60px rgba(0,0,0,0.5)}
.lightbox-caption{margin-top:12px;color:rgba(255,235,228,0.9);font-family:var(--font-body);font-size:1.05rem;font-weight:500;text-align:center;line-height:1.7}

/* Animations */
.reveal{opacity:0;transform:translateY(30px);transition:all 0.7s cubic-bezier(0.25,0.46,0.45,0.94)}
.reveal.visible{opacity:1;transform:translateY(0)}
.reveal-left{opacity:0;transform:translateX(-24px);transition:all 0.7s cubic-bezier(0.25,0.46,0.45,0.94)}
.reveal-left.visible{opacity:1;transform:translateX(0)}
.reveal-right{opacity:0;transform:translateX(24px);transition:all 0.7s cubic-bezier(0.25,0.46,0.45,0.94)}
.reveal-right.visible{opacity:1;transform:translateX(0)}
.fade-in-up{opacity:0;transform:translateY(30px);animation:fadeInUp 1s forwards}
@keyframes fadeInUp{to{opacity:1;transform:translateY(0)}}
.fade-in{opacity:0;animation:fadeIn 1s forwards}
@keyframes fadeIn{to{opacity:1}}
.delay-1{animation-delay:0.35s}.delay-2{animation-delay:0.7s}.delay-3{animation-delay:1.05s}.delay-4{animation-delay:1.4s}.delay-5{animation-delay:1.8s}.delay-6{animation-delay:2.2s}

/* Floating elements */
.floating-heart{position:absolute;pointer-events:none;font-size:1.2rem;animation:floatUpHeart 5s ease-in forwards;opacity:0;will-change:transform,opacity}
@keyframes floatUpHeart{0%{opacity:0;transform:translateY(0) scale(0.3) rotate(-30deg)}15%{opacity:0.9}70%{opacity:0.35}100%{opacity:0;transform:translateY(-180px) scale(1.1) rotate(25deg)}}
.floating-petal{position:absolute;pointer-events:none;animation:petalFall 8s linear forwards;opacity:0;will-change:transform,opacity}
@keyframes petalFall{0%{opacity:0;transform:translateY(-30px) rotate(0deg) translateX(0)}10%{opacity:0.7}85%{opacity:0.15}100%{opacity:0;transform:translateY(100vh) rotate(540deg) translateX(80px)}}

/* Scroll Progress */
.scroll-progress{position:fixed;top:0;left:0;height:3px;background:linear-gradient(90deg,var(--color-rose),var(--color-accent),var(--color-rose-dark));z-index:1001;transition:width 0.15s linear;border-radius:0 2px 2px 0;box-shadow:0 0 12px rgba(212,120,126,0.4)}

/* ==================== RESPONSIVE — Tablet & Desktop ==================== */
@media (min-width:768px){
    :root{--section-padding:80px 32px;font-size:16px}
    .nav{display:block}
    .nav{top:0;bottom:auto;background:transparent;backdrop-filter:none;border-top:none;box-shadow:none;padding:16px 24px;transition:all var(--transition-smooth)}
    .nav.scrolled{background:rgba(253,246,243,0.85);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);box-shadow:var(--shadow-sm)}
    .nav-inner{padding:0;justify-content:space-between}
    .nav-logo{display:block;font-family:var(--font-display);font-size:1.3rem;color:var(--color-text);opacity:0.95}
    .nav-logo:hover{opacity:1}
    .nav-links{flex:0;gap:2px}
    .nav-links a{flex-direction:row;padding:8px 14px;font-size:0.78rem;gap:4px}
    .nav-links a::before{font-size:0.5rem}
    .music-toggle{position:static;top:auto;right:auto;z-index:auto}

    .chapter1-content{grid-template-columns:1fr 1fr;gap:44px;text-align:left}
    .chapter1-photo{order:0}.photo-frame{max-width:360px}
    .chapter1-details{align-items:flex-start}

    .polaroid-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:34px 22px}
    .polaroid{padding:11px 11px 44px}.polaroid-caption{font-size:1rem}

    .timeline::before{left:50%;transform:translateX(-50%)}
    .timeline-item{grid-template-columns:1fr 44px 1fr;gap:0;margin-bottom:52px}
    .timeline-item:nth-child(odd) .timeline-content{grid-column:1;text-align:right;padding-right:26px}
    .timeline-item:nth-child(even) .timeline-content{grid-column:3;text-align:left;padding-left:26px}
    .timeline-dot{grid-column:2;margin-top:10px}

    .masonry-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
    .masonry-item:nth-child(5n){grid-column:span 2}

    #leafletMap{height:420px}
    .letter-container{padding:28px}.letter-paper{padding:36px 32px}
    .memory-counter{top:80px;right:24px}.counter-number{font-size:2rem}.counter-label{font-size:0.7rem}.counter-inner{padding:14px 22px}
    .opening-content{padding:40px}.opening-scroll-hint{bottom:36px}
    .scene{padding-bottom:0}.chapter-scene{padding-bottom:var(--section-padding)}
}

@media (min-width:1024px){
    .memory-card{width:270px}
    .photo-frame{max-width:400px}
    .polaroid-grid{grid-template-columns:repeat(4,1fr);gap:40px 26px}
    .masonry-grid{grid-template-columns:repeat(4,1fr);gap:14px}
    .timeline-content img{max-width:340px}
    .timeline-item:nth-child(odd) .timeline-content img{margin-left:auto}

    .polaroid:hover{transform:rotate(0deg) translateY(-10px) scale(1.05);box-shadow:var(--shadow-xl)}
    .masonry-overlay{opacity:0}
    .masonry-item:hover .masonry-overlay{opacity:1}
    .masonry-item:hover img{transform:scale(1.06)}
    .memory-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
    .memory-card:hover .memory-card-img img{transform:scale(1.05)}
    .photo-frame:hover img{transform:scale(1.05)}
    .timeline-content:hover img{transform:scale(1.03)}
}

@media (prefers-reduced-motion:reduce){
    *,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important}
    html{scroll-behavior:auto}
}
