/* Passport Save the Date — passport booklet / boarding pass / luggage tags / stamps. Fonts local. */
@font-face{font-family:'Cormorant Garamond';src:url('../../fonts/cormorant-garamond-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('../../fonts/cormorant-garamond-600.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('../../fonts/cormorant-garamond-700.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('../../fonts/cormorant-garamond-italic-500.woff2') format('woff2');font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:'Great Vibes';src:url('../../fonts/great-vibes-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Jost';src:url('../../fonts/jost-300.woff2') format('woff2');font-weight:300;font-display:swap}
@font-face{font-family:'Jost';src:url('../../fonts/jost-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Jost';src:url('../../fonts/jost-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Mukta';src:url('../../fonts/mukta-devanagari-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Mukta';src:url('../../fonts/mukta-devanagari-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Mukta';src:url('../../fonts/mukta-devanagari-600.woff2') format('woff2');font-weight:600;font-display:swap}
:root{--paper:#f7f3ea;--paper2:#eee7d6;--navy:#14203a;--navy2:#1f3159;--ink:#2b2b33;--gold:#b98a2f;--gold-l:#e6c87a;--red:#a63a2c;--line:#d8cfb6}
*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}
body{font-family:'Jost',sans-serif;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}button{font-family:inherit}
section,header,footer{padding:clamp(40px,7vw,76px) 20px}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease}.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}.pp-cover,.pp-stamp{transition:none!important}}
.sec-script{font-family:'Great Vibes',cursive;font-size:2rem;color:var(--red);text-align:center;line-height:1.1}
.sec-title{font-family:'Cormorant Garamond',serif;font-weight:600;font-size:clamp(1.7rem,4.5vw,2.4rem);text-align:center;margin:6px 0 26px;color:var(--navy)}
.floating-music{position:fixed;left:16px;bottom:16px;z-index:900;width:48px;height:48px;border-radius:50%;border:1px solid rgba(185,138,47,.65);background:rgba(20,32,58,.9);color:var(--gold-l);display:flex;align-items:center;justify-content:center;cursor:pointer}
.floating-music svg{width:22px;height:22px}.floating-music.playing{background:var(--navy2);color:#fff}
/* INTRO — PASSPORT BOOKLET */
.pp-intro{position:relative;min-height:92vh;display:flex;align-items:center;justify-content:center;overflow:hidden;text-align:center}
.pp-intro-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pp-intro-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,32,58,.62),rgba(20,32,58,.78))}
.pp-intro-inner{position:relative;z-index:2;width:min(480px,100%);color:#fff}
.pp-eyebrow{letter-spacing:.32em;text-transform:uppercase;font-size:.78rem;color:var(--gold-l);margin-bottom:20px}
.pp-stage{position:relative;height:360px;perspective:1200px;margin:0 auto 22px;max-width:340px}
.pp-inside{position:absolute;inset:0;background:#fdfaf1;color:var(--ink);border-radius:6px 14px 14px 6px;box-shadow:0 24px 50px rgba(0,0,0,.4);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px 18px;overflow:hidden}
.pp-inside-photo{width:120px;height:120px;object-fit:cover;border-radius:6px;border:3px solid var(--paper2)}
.pp-inside-names{font-family:'Great Vibes',cursive;font-size:1.85rem;color:var(--navy);line-height:1.15}
.pp-inside-word{letter-spacing:.2em;text-transform:uppercase;font-size:.66rem;color:#7a7264}
.pp-stamp{position:absolute;right:14px;bottom:16px;width:118px;height:118px;border:3px solid var(--red);border-radius:50%;color:var(--red);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;transform:rotate(-12deg) scale(2.4);opacity:0;transition:transform .45s cubic-bezier(.2,1.6,.4,1) .75s,opacity .3s ease .75s;background:rgba(253,250,241,.55);font-size:.58rem;letter-spacing:.14em;text-transform:uppercase}
.pp-stamp strong{font-family:'Cormorant Garamond',serif;font-size:1rem;letter-spacing:.05em}
.pp-stage.open .pp-stamp{transform:rotate(-12deg) scale(1);opacity:1}
.pp-cover{position:absolute;inset:0;background:linear-gradient(145deg,var(--navy2),var(--navy) 60%,#0d1730);border-radius:6px 14px 14px 6px;box-shadow:0 24px 50px rgba(0,0,0,.45);transform-origin:left center;transition:transform 1s cubic-bezier(.6,.05,.3,1);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:28px 18px;cursor:pointer;backface-visibility:hidden;border-left:6px solid rgba(230,200,122,.5);color:#fff}
.pp-stage.open .pp-cover{transform:rotateY(-142deg)}
.pp-cover-globe{font-size:2.6rem;color:var(--gold-l);line-height:1}
.pp-cover-word{letter-spacing:.42em;text-transform:uppercase;font-size:1.25rem;color:var(--gold-l);text-indent:.42em}
.pp-cover-sub{font-family:'Great Vibes',cursive;font-size:1.6rem;color:#fff}
.pp-cover-names{letter-spacing:.3em;font-size:.8rem;color:#cbbf9f;border:1px solid rgba(230,200,122,.55);border-radius:999px;padding:6px 14px}
.open-btn{background:var(--red);color:#fff;border:none;padding:13px 30px;border-radius:999px;letter-spacing:.16em;text-transform:uppercase;font-size:.78rem;cursor:pointer}
.pp-stage.open~.open-btn{opacity:.35;pointer-events:none}
.pp-intro-names{margin-top:18px;font-family:'Cormorant Garamond',serif;font-size:1.25rem}.pp-intro-names span{color:var(--gold-l);font-family:'Great Vibes',cursive;font-size:1.5rem}
/* HERO — BOARDING PASS */
.bp-hero{background:var(--paper);text-align:center}
.hero-eyebrow{letter-spacing:.32em;text-transform:uppercase;font-size:.76rem;color:var(--gold)}
.hero-quote{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.15rem;color:#6d6455;max-width:560px;margin:14px auto 0}
.pass{max-width:760px;margin:30px auto 0;display:flex;background:#fffdf6;border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 46px rgba(20,32,58,.18);overflow:hidden;text-align:left}
.pass-main{flex:1 1 auto;padding:24px clamp(16px,4vw,30px);min-width:0}
.pass-head{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:space-between;border-bottom:2px dashed var(--line);padding-bottom:12px}
.pass-air{letter-spacing:.18em;font-size:.78rem;font-weight:500;color:var(--navy)}
.pass-class{letter-spacing:.18em;font-size:.68rem;color:var(--red)}
.pass-label{letter-spacing:.26em;text-transform:uppercase;font-size:.64rem;color:var(--gold);margin-top:16px}
.pass-names{font-family:'Cormorant Garamond',serif;font-weight:700;font-size:clamp(1.8rem,6vw,2.9rem);line-height:1.1;color:var(--navy);display:flex;flex-wrap:wrap;gap:.3em;align-items:baseline}
.pass-names .amp{font-family:'Great Vibes',cursive;font-weight:400;color:var(--red);font-size:.8em}
.pass-parents{color:#7a7264;font-size:.92rem;margin-top:6px}
.pass-route{display:flex;align-items:center;gap:12px;margin-top:20px}
.route-cell{display:flex;flex-direction:column;gap:2px}.route-to{text-align:right;margin-left:auto}
.route-label{letter-spacing:.2em;text-transform:uppercase;font-size:.6rem;color:#9a8f76}
.route-cell strong{font-family:'Cormorant Garamond',serif;font-size:1.25rem;color:var(--navy)}
.route-plane{flex:1 1 auto;display:flex;align-items:center;gap:6px;color:var(--gold);min-width:40px}
.route-line{flex:1;border-top:2px dotted var(--gold)}
.pass-fields{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:20px;border-top:1px solid var(--line);padding-top:14px}
.pass-fields div{display:flex;flex-direction:column;gap:2px;min-width:0}
.pass-fields span{letter-spacing:.18em;text-transform:uppercase;font-size:.58rem;color:#9a8f76}
.pass-fields strong{font-family:'Cormorant Garamond',serif;font-size:1.02rem;color:var(--navy);overflow-wrap:anywhere}
.pass-barcode{height:34px;margin-top:18px;background:repeating-linear-gradient(90deg,var(--navy) 0 2px,transparent 2px 5px,var(--navy) 5px 6px,transparent 6px 11px,var(--navy) 11px 14px,transparent 14px 17px)}
.pass-stub{flex:0 0 132px;background:var(--navy);color:#fff;border-left:2px dashed rgba(230,200,122,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:18px 10px;text-align:center}
.stub-label{letter-spacing:.22em;text-transform:uppercase;font-size:.6rem;color:var(--gold-l)}
.stub-day{font-family:'Cormorant Garamond',serif;font-weight:700;font-size:2.6rem;line-height:1}
.stub-my{letter-spacing:.2em;font-size:.72rem;color:var(--gold-l)}
.stub-city{font-family:'Cormorant Garamond',serif;font-size:1.05rem;margin-top:4px;overflow-wrap:anywhere}
.stub-save{margin-top:10px;border:2px solid var(--red);color:#ffb4a3;border-radius:6px;padding:6px 8px;font-size:.62rem;letter-spacing:.2em;line-height:1.5;transform:rotate(-6deg)}
.hero-photo{max-width:760px;margin:26px auto 0;border-radius:12px;overflow:hidden;box-shadow:0 16px 38px rgba(20,32,58,.2)}
.hero-photo img{width:100%;height:280px;object-fit:cover}
.hero-photo figcaption{background:#fffdf6;padding:12px;font-family:'Great Vibes',cursive;font-size:1.35rem;color:var(--red);text-align:center}
/* BOARDING CALL */
.call-sec{background:#fffdf6}
.call-text{max-width:620px;margin:0 auto;text-align:center;line-height:1.7;color:#5d564a}
/* COUNTDOWN — LUGGAGE TAGS */
.tag-sec{background:var(--paper2)}
.tags{display:flex;flex-wrap:nowrap;gap:clamp(8px,2.5vw,18px);max-width:680px;margin:0 auto}
.tag-unit{flex:1 1 0;max-width:155px;margin:0 auto;background:linear-gradient(160deg,#fdf6dd,#f1dfae);border:1px solid #cdb271;border-radius:10px 10px 10px 26px;padding:22px 4px 12px;text-align:center;position:relative;box-shadow:0 8px 18px rgba(20,32,58,.12)}
.tag-unit::before{content:'';position:absolute;top:-9px;left:50%;transform:translateX(-50%);width:34px;height:14px;border:2px solid var(--gold);border-bottom:none;border-radius:14px 14px 0 0}
.tag-hole{position:absolute;top:7px;left:50%;transform:translateX(-50%);width:11px;height:11px;border-radius:50%;background:var(--paper2);border:2px solid var(--gold)}
.tag-num{display:block;font-family:'Cormorant Garamond',serif;font-weight:700;font-size:clamp(1.7rem,7vw,2.7rem);color:var(--navy);line-height:1;margin-top:6px}
.tag-lab{display:block;letter-spacing:.2em;text-transform:uppercase;font-size:.62rem;color:var(--red);margin-top:6px}
.tag-foot{display:block;font-size:.56rem;letter-spacing:.06em;color:#8a7434;margin-top:8px}
/* SCRATCH */
.psd-scratch{background:var(--paper);text-align:center}
.scratch-sub{letter-spacing:.22em;text-transform:uppercase;font-size:.72rem;color:var(--gold);margin:4px 0 22px}
.psd-scratch-wrap{position:relative;max-width:420px;margin:0 auto;border-radius:10px;overflow:hidden;box-shadow:0 16px 38px rgba(20,32,58,.2);background:linear-gradient(135deg,#fdf6dd,#f3e3b3)}
.psd-scratch-under{padding:34px 18px 30px}
.scratch-label{letter-spacing:.26em;text-transform:uppercase;font-size:.66rem;color:var(--red)}
.scratch-date{font-family:'Cormorant Garamond',serif;font-weight:700;font-size:1.45rem;color:var(--navy);margin:8px 0 4px}
.scratch-venue{color:#6d6455}
.psd-scratch-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair}
.psd-scratch-canvas.cleared{opacity:0;pointer-events:none;transition:opacity .6s ease}
.scratch-hint{margin-top:14px;color:#8a8172;font-size:.85rem}
/* ITINERARY */
.itin-sec{background:#fffdf6}
.itin-card{max-width:740px;margin:0 auto;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 34px rgba(20,32,58,.13);overflow:hidden}
.itin-head{display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:space-between;background:var(--navy);color:#fff;padding:13px 20px;letter-spacing:.16em;font-size:.7rem;text-transform:uppercase}
.itin-status{color:var(--gold-l)}
.itin-leg{display:flex;gap:16px;padding:20px;align-items:flex-start}
.itin-leg+.itin-leg{border-top:1px dashed var(--line)}
.itin-stamp{flex:0 0 74px;width:74px;height:74px;border:3px solid var(--red);border-radius:50%;color:var(--red);display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(-8deg);background:rgba(255,253,246,.7)}
.itin-stamp span{font-size:.56rem;letter-spacing:.16em}
.itin-stamp strong{font-family:'Cormorant Garamond',serif;font-size:1.5rem;line-height:1}
.itin-stamp.small{flex-basis:58px;width:58px;height:58px;border-width:2px}
.itin-stamp.small strong{font-size:1.15rem}
.itin-body{min-width:0}
.itin-body h3{font-family:'Cormorant Garamond',serif;font-size:1.45rem;color:var(--navy)}
.itin-body h4{font-family:'Cormorant Garamond',serif;font-size:1.18rem;color:var(--navy)}
.itin-when{color:var(--red);margin:3px 0 6px}
.itin-desc{color:#5d564a;line-height:1.6}
.itin-loc{margin-top:6px;color:var(--navy2);font-weight:500}
.itin-group{padding:14px 20px 2px;font-family:'Cormorant Garamond',serif;font-size:1.2rem;color:var(--navy)}
/* NOTES */
.notes-sec{background:var(--paper)}
.notes{max-width:900px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.note-card{background:#fffdf6;border:1px solid var(--line);border-radius:8px;padding:20px;line-height:1.6;color:#5d564a}
.note-card h4{font-family:'Cormorant Garamond',serif;font-size:1.25rem;color:var(--navy);margin-bottom:8px}
/* GALLERY — STAMP TILES */
.stampgal-sec{background:var(--navy);color:#fff}.stampgal-sec .sec-title{color:#fff}.stampgal-sec .sec-script{color:var(--gold-l)}
.stampgal{max-width:980px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
.stamp-tile{position:relative;background:#fffdf6;color:var(--ink);border-radius:8px;padding:8px;transform:rotate(-.8deg)}
.stamp-tile:nth-child(even){transform:rotate(.9deg)}
.stamp-tile img{width:100%;height:190px;object-fit:cover;border-radius:5px}
.tile-stamp{position:absolute;top:16px;right:16px;width:82px;height:82px;border:2.5px solid rgba(230,200,122,.95);border-radius:50%;color:#fff;background:rgba(20,32,58,.45);display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(10deg);font-size:.5rem;letter-spacing:.12em;text-align:center;padding:4px}
.tile-stamp strong{font-family:'Cormorant Garamond',serif;font-size:.82rem;letter-spacing:.03em}
.stamp-tile figcaption{font-family:'Great Vibes',cursive;font-size:1.25rem;color:var(--red);text-align:center;padding:9px 4px 5px}
/* DESTINATION */
.dest-sec{position:relative;text-align:center;color:#fff;overflow:hidden}
.dest-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dest-shade{position:absolute;inset:0;background:rgba(20,32,58,.64)}
.dest-inner{position:relative;z-index:2;max-width:640px;margin:0 auto}
.dest-eyebrow{letter-spacing:.3em;text-transform:uppercase;font-size:.72rem;color:var(--gold-l)}
.dest-name{font-family:'Cormorant Garamond',serif;font-size:clamp(1.9rem,6vw,2.8rem);margin:10px 0}
.dest-addr{line-height:1.65;color:#f1ead6}.dest-when{margin-top:10px;color:var(--gold-l);font-family:'Cormorant Garamond',serif;font-size:1.15rem}
.btn-map{display:inline-block;margin-top:18px;background:var(--red);color:#fff;text-decoration:none;padding:12px 26px;border-radius:999px;letter-spacing:.14em;text-transform:uppercase;font-size:.75rem}
/* RSVP — BOARDING-PASS STUB FORM */
.rsvp-sec{background:var(--paper2)}
.stubpass{max-width:760px;margin:0 auto;display:flex;background:#fffdf6;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 42px rgba(20,32,58,.17);overflow:hidden}
.stub-side{flex:0 0 178px;background:var(--navy);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:26px 14px;text-align:center;border-right:2px dashed rgba(230,200,122,.6)}
.stub-side .stub-label{letter-spacing:.22em;text-transform:uppercase;font-size:.6rem;color:var(--gold-l)}
.stub-names{font-family:'Great Vibes',cursive;font-size:1.35rem;line-height:1.3}
.stub-day{font-family:'Cormorant Garamond',serif;font-size:1.12rem;color:var(--gold-l)}
.stub-city{font-family:'Cormorant Garamond',serif;font-size:1rem;overflow-wrap:anywhere}
.stub-seat{letter-spacing:.16em;font-size:.6rem;color:#cbbf9f}
.stub-barcode{width:80%;height:26px;margin-top:8px;background:repeating-linear-gradient(90deg,#fff 0 2px,transparent 2px 5px,#fff 5px 6px,transparent 6px 10px,#fff 10px 13px,transparent 13px 16px);opacity:.75}
.stub-main{flex:1 1 auto;padding:30px clamp(18px,5vw,34px);min-width:0}
.stub-main .sec-title{margin-bottom:10px}
.rsvp-sub{color:#6d6455;line-height:1.6;margin-bottom:20px;text-align:center}
.rsvp-form{text-align:left;display:grid;gap:14px}
.rsvp-form label{font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;color:var(--navy);display:grid;gap:6px}
.rsvp-form .opt{text-transform:none;letter-spacing:0;color:#9a8f76}
.rsvp-form input,.rsvp-form select,.rsvp-form textarea{font-family:inherit;font-size:1rem;padding:11px 12px;border:1px solid var(--line);background:rgba(238,231,214,.5);border-radius:6px;color:var(--ink);width:100%}
.rsvp-form input:focus,.rsvp-form select:focus,.rsvp-form textarea:focus{outline:none;border-color:var(--gold)}
.btn-submit{background:var(--red);color:#fff;border:none;padding:14px;border-radius:999px;letter-spacing:.16em;text-transform:uppercase;font-size:.8rem;cursor:pointer;margin-top:6px}
.rsvp-thanks{text-align:center}.rsvp-thanks p{color:#5d564a;line-height:1.6}
/* COLOPHON */
.colophon{background:var(--navy);color:#e9e2cf;text-align:center}
.foot-quote{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.15rem;max-width:560px;margin:0 auto 16px}
.foot-mono{font-family:'Cormorant Garamond',serif;font-size:1.4rem;color:var(--gold-l)}
.foot-names{font-family:'Great Vibes',cursive;font-size:1.8rem;margin:6px 0}.foot-date{letter-spacing:.2em;color:#cbbf9f}.credit{margin-top:14px;font-size:.78rem;color:#a99f83}
@media(max-width:620px){
.pass{flex-direction:column}.pass-stub{flex-basis:auto;flex-direction:row;flex-wrap:wrap;gap:4px 12px;border-left:none;border-top:2px dashed rgba(230,200,122,.6);padding:12px}.stub-day{font-size:1.8rem}
.stubpass{flex-direction:column}.stub-side{flex-basis:auto;border-right:none;border-bottom:2px dashed rgba(230,200,122,.6);padding:18px 12px}
.pass-fields{grid-template-columns:repeat(2,1fr)}
.pp-stage{height:340px}.hero-photo img{height:220px}
.itin-leg{gap:12px;padding:16px 14px}.itin-stamp{flex-basis:60px;width:60px;height:60px}
}
