/* Dino Jungle Birthday - Original mobile-first illustration theme */
:root{--forest:#164b33;--deep:#0d382a;--leaf:#3e873f;--mint:#d5f0b4;--cream:#fff8e5;--sand:#f6e5b8;--orange:#f8a33c;--sun:#ffca52;--ink:#1d4631;--muted:#617863}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#143f2b;color:var(--ink);font-family:"Trebuchet MS",Arial,sans-serif;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ffa432;outline-offset:3px}a{text-decoration:none}img{display:block;max-width:100%}svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}h1,h2,h3,p{margin-top:0}.symbol-bank{position:absolute;width:0;height:0;overflow:hidden}.page-shell{width:min(100%,480px);margin:auto;background:var(--cream);min-height:100vh;position:relative;box-shadow:0 26px 90px #04190b66;overflow:clip;isolation:isolate}.is-closed{overflow:hidden}.is-closed .bottom-nav,.is-closed .music-toggle{visibility:hidden;pointer-events:none}.section-pad{padding:75px 28px 82px;position:relative}.section-title{font-family:"Trebuchet MS",Arial,sans-serif;font-size:clamp(39px,10.3vw,53px);font-weight:1000;line-height:1.06;letter-spacing:-2.3px;text-align:center;color:var(--deep);margin:11px 0 14px;text-shadow:1px 1px 0 #bed5ac}.section-title em{font-style:normal;color:#ec842f;font-weight:1000}.eyebrow{text-align:center;font-weight:1000;letter-spacing:2.2px;font-size:10px;color:#728d59;margin:0}.section-caption{max-width:330px;margin:0 auto 16px;text-align:center;font-size:14px;color:#55715a;line-height:1.7}.reveal{opacity:0;transform:translateY(22px);transition:opacity .65s ease,transform .65s cubic-bezier(.2,.7,.2,1)}.reveal.is-visible{opacity:1;transform:translateY(0)}
/* Desktop jungle side stage */
.desktop-atmosphere{position:fixed;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 48% 20%,#50894b 0,transparent 59%),repeating-linear-gradient(130deg,#0d3a2c 0 27px,#10402e 28px 46px);z-index:-1}.desktop-atmosphere::before,.desktop-atmosphere::after{content:"";position:absolute;border:27px solid #8cc25b;border-radius:100% 0 100% 0;width:165px;height:84px;opacity:.37;transform:rotate(-26deg);top:80px;left:5%}.desktop-atmosphere::after{left:auto;right:4%;top:auto;bottom:160px;transform:rotate(26deg)}.deco-sun{position:absolute;width:300px;height:300px;top:9%;right:8%;background:#ffd87e;border-radius:50%;filter:blur(3px);opacity:.07}.big-side-label{font-size:clamp(100px,18vw,260px);color:#77b65510;position:absolute;top:30%;left:-3%;font-weight:1000;letter-spacing:-17px;transform:rotate(-12deg)}.desk-dino{position:absolute;width:min(30vw,360px);bottom:-60px;opacity:.65}.desk-dino.left{left:0;transform:rotate(-9deg)}.desk-dino.right{right:0;transform:rotate(8deg)}
/* Hero */
.hero{min-height:785px;background:#9be1d4;position:relative;isolation:isolate}.hero-sky{position:absolute;inset:0;background:linear-gradient(180deg,#72d1ee 0%,#b6e8d7 43%,#9ccf72 78%,#235e30 100%);z-index:-1}.hero-sky::before{content:"";position:absolute;width:260px;height:200px;left:23%;top:95px;filter:blur(14px);border-radius:50%;background:#fff9ce91}.hero-top{padding:20px 22px 0;gap:8px}.jungle-brand{display:flex;align-items:center;gap:8px;color:var(--deep);font-weight:1000;font-size:13px;line-height:.98;text-shadow:0 1px 0 #fff}.jungle-brand small{display:block;font-size:7px;letter-spacing:1.9px;margin-top:4px}.brand-paw{font-size:27px;filter:drop-shadow(1px 2px 0 #fff4af)}.top-ticket{background:#fff4d9d9;border:1px dashed #3f874d;border-radius:16px;padding:10px 11px;font-size:9px;letter-spacing:1px;font-weight:1000;color:#285b3d}.hero-title-block{padding:12px 14px 0}.hero-overline{color:#205d4e;font-size:10px;font-weight:1000;letter-spacing:2.1px;margin:20px 0 0}.roar-heading{font-weight:1000;color:#ffbf49;font-size:clamp(102px,31vw,152px);line-height:1.01;letter-spacing:-12px;transform:rotate(-4deg);-webkit-text-stroke:6px #164c3d;paint-order:stroke fill;text-shadow:5px 8px 0 #ef783e,8px 12px 0 #175540;filter:drop-shadow(1px 3px 0 #fff4b2)}.roar-heading span{display:inline-block;transform:rotate(15deg)}.hero-present{font-size:11px;color:#356b43;font-weight:1000;letter-spacing:3px;margin:0 0 10px}.hero-name{font-size:clamp(34px,10.2vw,48px);font-weight:1000;line-height:1.12;letter-spacing:-1.6px;color:#fdf4cc;-webkit-text-stroke:3px #22563d;paint-order:stroke fill;text-shadow:2px 5px 0 #23573a;margin:0}.hero-name>span:first-child{color:#ffd554;font-size:1.25em}.hero-name .name-second{font-size:.84em;white-space:nowrap}.hero-age-pill{margin:13px auto 0;background:#f39c3b;color:#fffbea;border:3px solid #fbeac0;border-radius:45px;box-shadow:0 5px 0 #c97531;padding:9px 19px;display:inline-flex;gap:14px;align-items:center;font-size:13px;font-weight:1000;letter-spacing:1.7px}.pill-star{color:#ffe273}.corner-leaf{position:absolute;top:-44px;width:210px;z-index:4;pointer-events:none;filter:drop-shadow(0 7px 3px #083e251a)}.leaf-tl{left:-47px;transform:rotate(-6deg)}.leaf-tr{right:-47px;transform:scaleX(-1) rotate(-6deg)}.floating-shape{position:absolute;z-index:3;color:#ffdb7d;font-size:23px;text-shadow:0 2px 0 #3b995b;animation:float 3s ease-in-out infinite}.star-1{left:8%;top:310px}.star-2{right:9%;top:395px;animation-delay:1s}.hero-scene{height:390px;margin-top:-8px;overflow:visible;z-index:2}.scene-image{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:center 63%;mask-image:linear-gradient(180deg,transparent 0,#000 16%)}.dino{position:absolute;filter:drop-shadow(1px 9px 3px #214d2966);will-change:transform;animation:dinoBob 3.2s ease-in-out infinite;pointer-events:none}.dino-green{width:62%;left:-19%;top:25px;z-index:2;transform-origin:bottom center}.dino-orange{width:58%;right:-16%;top:26px;z-index:2;animation-delay:.8s}.dino-blue{width:41%;left:-12%;bottom:-1px;z-index:3;animation-delay:1.5s}.dino-tri{width:43%;right:-11%;bottom:-4px;z-index:3;animation-delay:.7s}.hero-info-plaque{position:absolute;z-index:4;left:50%;bottom:8px;transform:translateX(-50%) rotate(-2deg);padding:12px 21px;background:#fff2c3;border:3px solid #397743;border-radius:24px;box-shadow:0 5px 0 #235c35;text-align:center;width:max-content;max-width:78%;display:flex;flex-direction:column;gap:3px}.plaque-label{font-weight:1000;letter-spacing:1.5px;color:#ad682e;font-size:8px}.hero-info-plaque strong{font-size:14px;color:#1d5939;line-height:1.1}.hero-info-plaque>span:last-child{font-size:11px;font-weight:900;color:#5a8b46}.hero-bottom{background:#235e30;color:#fff0c1;min-height:65px;position:relative;z-index:4}.hero-bottom::before{content:"";position:absolute;top:-16px;width:100%;height:28px;background:#235e30;clip-path:polygon(0 65%,8% 25%,15% 60%,22% 5%,30% 52%,37% 30%,43% 56%,52% 13%,59% 60%,70% 10%,77% 48%,85% 11%,95% 55%,100% 22%,100% 100%,0 100%)}.scroll-down{font-size:10px;font-weight:1000;letter-spacing:2px;color:#fff2bd;padding:10px 20px;z-index:1}.scroll-down span{padding-left:9px;font-size:15px}.hero-groundline{width:48px;height:3px;background:#b8d889;border-radius:9px}.jungle-marquee{height:44px;background:#efa34e;border-block:3px solid #265333;overflow:hidden;display:flex;align-items:center;white-space:nowrap;color:#22553c;font-weight:1000;letter-spacing:1.5px;font-size:12px}.marquee-track{min-width:max-content;animation:marquee 19s linear infinite}
/* Invitation */
.intro-section{background:#fff6dd;text-align:center;background-image:radial-gradient(#eccb9c45 1.5px,transparent 1.5px);background-size:24px 24px}.section-speck{position:absolute;color:#b4d788;font-size:42px}.speck-a{left:20px;top:44px}.speck-b{right:20px;top:109px;color:#e8ae60}.intro-paper{position:relative;margin:35px auto 20px;background:#fffdf4;padding:37px 26px 30px;border-radius:16px 15px 24px 22px;box-shadow:0 12px 0 #e8cd9c,0 15px 26px #7357211d;border:2px dashed #b2c98e;text-align:left;transform:rotate(-1deg);max-width:390px}.intro-paper.is-visible{transform:rotate(-1deg)}.intro-paper p{line-height:1.75;font-size:14px;color:#49694d}.intro-paper strong{color:#1c5837}.intro-hello{font-size:19px!important;font-weight:900;margin-bottom:8px}.intro-stamp{position:absolute;right:-9px;top:-25px;border-radius:50%;border:4px solid #fff1d5;background:#f8a345;color:#265b3e;display:flex;align-items:center;justify-content:center;flex-direction:column;transform:rotate(14deg);font-weight:1000;text-align:center;font-size:11px;line-height:.99;width:78px;height:78px;box-shadow:0 4px 0 #a87642}.intro-stamp span{font-size:22px;padding-top:5px}.intro-sign{font-style:italic;font-weight:900;color:#e88c43!important}.age-highlight{margin:41px auto 0;border-radius:22px;background:#d3ebac;max-width:340px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:25px 15px 24px;position:relative;border:3px solid #bfdc93;box-shadow:0 7px 0 #b8d08b}.age-highlight>span{font-size:10px;letter-spacing:2px;font-weight:1000;color:#4a8444}.age-highlight strong{font-size:96px;color:#2e7a45;font-weight:1000;line-height:1;letter-spacing:-7px;text-shadow:2px 4px 0 #fff7d8;display:flex;align-items:center;gap:12px}.age-highlight strong small{font-size:21px;line-height:1;letter-spacing:-.8px;text-align:left;color:#ed9040;text-shadow:none}.age-highlight img{position:absolute;width:85px;right:-17px;bottom:-17px;transform:rotate(18deg)}
/* Countdown */
.countdown-section{background:radial-gradient(circle at 50% -10%,#367d49,#12432f 69%,#092f25);color:#fff6d7;overflow:hidden;padding-bottom:89px}.countdown-section::before,.footer-section::before{content:"";position:absolute;inset:0;background-image:radial-gradient(#d5ef9860 1.2px,transparent 1.2px);background-size:24px 24px;opacity:.12;pointer-events:none}.eyebrow-sand{color:#b4e19a}.on-dark{color:#fff9d8}.on-dark em{color:#ffc052}.timer-grid{margin:28px auto 17px;max-width:405px}.timer-cell{background:#fff6d4;color:#17472f;border:3px solid #a8ca76;border-radius:16px;padding:17px 2px 11px;box-shadow:0 5px 0 #5b8b4a;display:flex;flex-direction:column;gap:8px}.timer-cell strong{font-size:clamp(26px,8vw,37px);line-height:1;font-weight:1000;font-variant-numeric:tabular-nums}.timer-cell span{font-weight:1000;font-size:9px;letter-spacing:1px;color:#83965a}.countdown-caption{max-width:300px;margin:24px auto 0;font-size:13px;line-height:1.7;color:#c0dba5;position:relative;z-index:1}.countdown-egg{width:100px;position:absolute;bottom:-25px;right:-21px;transform:rotate(-23deg);opacity:.7}.countdown-deco{position:absolute;color:#ffa443;font-size:55px}.d1{top:35px;right:18px}.d2{bottom:30px;left:16px;font-size:26px}
/* Details ticket */
.details-section{background:#e5edc3}.event-ticket{margin:35px 0 28px;border-radius:20px;background:#fffae7;overflow:hidden;box-shadow:0 10px 0 #b9ca95,0 16px 30px #31572e2a;border:2px solid #347c4b}.ticket-header{background:#317c4c;color:#fff7d8;display:flex;justify-content:space-between;font-size:10px;font-weight:1000;letter-spacing:1.3px;padding:17px 17px}.ticket-body{padding:13px 23px 17px}.ticket-row{display:flex;gap:15px;align-items:center;margin:18px 0}.ticket-row>div:last-child{flex:1;min-width:0}.ticket-icon{flex:0 0 52px;height:52px;display:grid;place-items:center;border-radius:15px;background:#def1bc;color:#277447}.ticket-icon svg{width:25px;height:25px}.ticket-kicker{display:block;font-size:10px;color:#7b9767;font-weight:1000;letter-spacing:1.5px;margin-bottom:5px}.ticket-row strong{display:block;font-size:16px;line-height:1.28;color:#234d37}.ticket-row small{display:block;font-size:12px;color:#769073;line-height:1.6;margin-top:3px}.ticket-divider{border-top:3px dashed #aac48c;position:relative}.ticket-divider::before,.ticket-divider::after{content:"";width:26px;height:26px;border-radius:50%;background:#e5edc3;position:absolute;top:-15px;left:-14px;border-right:2px solid #347c4b}.ticket-divider::after{left:auto;right:-14px;border:0;border-left:2px solid #347c4b}.ticket-footer{padding:20px 22px;font-weight:1000;letter-spacing:1px;font-size:10px;color:#648c57;display:flex;justify-content:space-between}.ticket-serial{font-size:9px}.button-stack{margin-top:32px}.action-btn{min-height:56px;padding:15px 20px;display:flex;justify-content:center;gap:11px;align-items:center;text-align:center;border-radius:15px;font-weight:1000;letter-spacing:1px;font-size:12px;box-shadow:0 5px 0 #aabf87;transition:transform .2s,box-shadow .2s}.action-btn:hover{transform:translateY(-2px)}.action-btn:active{transform:translateY(4px);box-shadow:none}.action-btn svg{width:19px;height:19px}.action-btn span{font-size:19px}.action-orange{background:#f3983e;color:#234932;box-shadow:0 5px 0 #b77339;border:2px solid #23563b}.action-outline{background:#fff9e8;color:#286344;border:2px solid #408558}
/* Timeline */
.agenda-section{background:#fff8e6}.agenda-list{position:relative;margin:34px 0 26px}.agenda-list::before{content:"";position:absolute;left:28px;top:23px;bottom:24px;width:3px;background:repeating-linear-gradient(to bottom,#90bd5d 0 10px,transparent 10px 19px)}.agenda-item{display:flex;align-items:start;gap:18px;position:relative;margin:0 0 17px}.agenda-emoji{flex:none;width:58px;height:58px;border-radius:18px;display:grid;place-items:center;background:#d7edb4;border:3px solid #acd184;font-size:28px;position:relative;z-index:1;transform:rotate(-5deg)}.agenda-card{background:#fffefa;flex:1;border:1.5px solid #e4d8b5;border-radius:18px;padding:17px 17px 19px;box-shadow:0 5px 0 #e6d9ae}.agenda-time{font-size:11px;color:#eb8d38;font-weight:1000;letter-spacing:1.4px}.agenda-card strong{display:block;color:#286044;font-size:16px;margin:6px 0}.agenda-card p{font-size:12px;color:#627965;line-height:1.55;margin:0}.dress-card{display:flex;align-items:center;gap:18px;margin:32px 0 0;padding:21px;background:#d5edbb;border-radius:18px;border:2px dashed #6fb65c}.dress-icon{font-size:39px}.dress-card strong{display:block;font-size:16px;color:#306741}.dress-card p{font-size:12px;line-height:1.6;color:#62855a;margin:5px 0 0}
/* Gallery */
.gallery-section{background:#dcedc4}.gallery-grid{margin:28px 0 0}.gallery-item{background:#fffcf0;border:6px solid #fffdf2;border-radius:16px;box-shadow:0 7px 0 #accb93;cursor:pointer;text-align:left;padding:0;transform:rotate(-2deg);transition:transform .2s,box-shadow .2s;overflow:hidden}.gallery-item:nth-child(even){transform:rotate(2deg)}.gallery-item:hover,.gallery-item:focus-visible{transform:rotate(0) translateY(-4px);box-shadow:0 11px 0 #accb93}.gallery-item img{width:100%;aspect-ratio:1;object-fit:cover;background:#cde8b6}.gallery-item span{display:block;font-size:11px;font-weight:1000;color:#417a4a;text-align:center;padding:10px 5px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gallery-hint{display:flex;align-items:center;justify-content:center;gap:7px;margin:26px 0 0;font-size:11px;color:#568653}.gallery-hint svg{width:16px;height:16px}.gallery-empty{grid-column:1/-1;text-align:center;padding:40px 18px;border-radius:18px;background:#fff9e4;color:#4f7851;font-weight:700;font-size:13px}
/* RSVP / wishes */
.rsvp-section{background:#fff5dc}.form-card{border-radius:22px;background:#fffefa;border:2px solid #d7deb5;box-shadow:0 8px 0 #e0e5ba;padding:25px 23px;display:flex;flex-direction:column;text-align:left}.form-card label{font-size:12px;color:#416749;font-weight:1000;display:block;margin:12px 0 8px}.form-card label:first-child{margin-top:0}.form-card input,.form-card select,.form-card textarea{width:100%;border:2px solid #d1dcb9;border-radius:12px;background:#f8faef;padding:15px 15px;outline:none;color:#254f3a;font-size:14px;transition:border .18s,background .18s}.form-card input:focus,.form-card select:focus,.form-card textarea:focus{border-color:#eea149;background:#fffdf7}.form-card textarea{resize:vertical;min-height:110px}.form-submit{margin-top:22px;border:2px solid #265a3f;border-radius:13px;background:#3b9351;color:#fff8da;padding:16px 18px;display:flex;align-items:center;justify-content:center;gap:9px;font-weight:1000;letter-spacing:1px;font-size:13px;box-shadow:0 5px 0 #206135}.form-submit:hover{background:#2b7b47}.form-submit span{font-size:19px}.form-note{text-align:center;font-size:10px;color:#a1a791;margin:16px 0 0;line-height:1.5}.rsvp-results{margin:25px auto 0;padding:21px;background:#f8e3b1;border:2px dashed #cda866;border-radius:20px;max-width:335px;text-align:center;display:flex;flex-direction:column;gap:4px}.rsvp-results span{font-size:10px;letter-spacing:2px;font-weight:1000;color:#a47735}.rsvp-results strong{font-size:52px;color:#3e8250}.rsvp-results small{color:#987e55;font-size:11px}.wishes-section{background:#e9f1d6}.wishes-section .form-card{margin-top:26px}.wishes-list{margin-top:30px;display:grid;gap:13px}.wish-card{background:#fffef2;padding:19px 19px 18px;border:2px solid #d1dfbc;border-radius:15px;position:relative}.wish-card::before{content:'“';font-family:Georgia,serif;color:#f1ae52;font-size:58px;line-height:.7;position:absolute;right:18px;top:16px;opacity:.7}.wish-card-top{display:flex;align-items:center;gap:9px;padding-right:35px}.wish-avatar{width:38px;height:38px;border-radius:50%;background:#bde0a0;display:grid;place-items:center;font-size:19px}.wish-card strong{font-size:13px;color:#326546;word-break:break-word}.wish-card p{font-size:13px;line-height:1.65;color:#6b8068;margin:9px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.wish-card time{display:block;font-size:10px;color:#9eb08b;margin-top:12px}.wishes-more{background:#d5e9bf;border:1px solid #9bbf8c;border-radius:12px;padding:13px;color:#316a49;font-size:12px;font-weight:1000;width:100%;cursor:pointer}
/* Optional */
.gift-section{background:#fff4d3;text-align:center}.gift-card{padding:28px 20px;border-radius:23px;background:#fffefa;display:flex;flex-direction:column;align-items:center;gap:9px;border:2px solid #ded8a9}.gift-symbol{font-size:56px}.gift-card small{color:#9b9466;letter-spacing:2px}.gift-card strong{color:#255d42;font-size:23px}.gift-card>span{color:#55835c;word-break:break-all}.copy-button{margin-top:11px;background:#eaa04b;border:0;border-radius:11px;padding:13px 15px;font-size:12px;font-weight:1000;color:#fff}.copy-button svg{width:16px;height:16px;display:inline-block;vertical-align:middle;margin-right:6px}.gift-card img{max-width:180px;margin-top:10px}.extras-section{background:#dfedcf}.extras-list{display:grid;gap:10px}.milestone{border-radius:15px;padding:18px;background:#fff8e6}.milestone strong{display:block;margin:8px 0 5px}.milestone p{font-size:12px;margin:0}.extras-section video{width:100%;margin:10px 0;border-radius:15px}.extras-section .action-btn{margin-top:16px}
/* Footer */
.footer-section{background:radial-gradient(ellipse at 50% 0,#3a8a4c,#10442e 72%);color:#fff6d5;text-align:center;min-height:585px;padding-top:74px;padding-bottom:127px;overflow:hidden}.footer-title{font-size:clamp(75px,21vw,106px);line-height:.88;color:#fff3c8;font-weight:1000;letter-spacing:-5px;text-shadow:4px 5px 0 #0d5632;position:relative;z-index:1;margin:26px 0}.footer-title em{font-style:normal;color:#ffc15d}.footer-dino{width:180px;height:180px;position:absolute;bottom:2px;right:-36px;opacity:.96;transform:rotate(-10deg)}.footer-message{font-size:13px;line-height:1.8;max-width:330px;margin:28px auto;color:#dce8c8;position:relative;z-index:1}.footer-message strong{color:#ffd982}.footer-from{font-size:10px;letter-spacing:1.3px;font-weight:1000;color:#9cc792;margin:0 auto 27px}.footer-from span{display:block;font-size:17px;color:#fff3d0;margin-top:7px}.footer-actions{position:relative;z-index:1}.share-button{display:flex;align-items:center;gap:8px;border-radius:20px;padding:13px 17px;color:#174c34;background:#ffd376;font-weight:1000;font-size:11px;border:2px solid #fbebbd}.share-button svg{width:18px;height:18px}.footer-small{position:absolute;bottom:73px;left:0;right:0;font-size:10px;letter-spacing:1.8px;color:#76b787;font-weight:1000}
/* navigation/music/progress */
.bottom-nav{display:flex;align-items:center;justify-content:space-around;position:fixed;z-index:50;bottom:0;width:min(100%,480px);padding:11px 4px calc(10px + env(safe-area-inset-bottom));background:#fffbeaee;backdrop-filter:blur(14px);border-top:2px solid #cfe0b6;box-shadow:0 -8px 30px #18473022}.nav-item{font-size:9px;display:flex;flex:1;align-items:center;flex-direction:column;gap:4px;font-weight:900;color:#789372;min-width:0}.nav-item svg{width:20px;height:20px}.nav-item.active{color:#2c8a53}.music-toggle{position:fixed;z-index:51;right:max(calc((100vw - 480px)/2 + 15px),15px);bottom:calc(79px + env(safe-area-inset-bottom));width:49px;height:49px;border-radius:50%;background:#ffb04d;border:3px solid #fff7d5;color:#245837;box-shadow:0 4px 0 #a56b31;display:grid;place-items:center;transition:transform .2s}.music-toggle svg{width:24px;height:24px}.music-toggle.playing{animation:softPulse 2.1s ease-in-out infinite}.reading-progress{position:fixed;top:0;left:max(calc((100vw - 480px)/2),0px);width:0;height:4px;background:#ffa73c;z-index:60;pointer-events:none}.toast{position:fixed;z-index:200;left:50%;bottom:120px;transform:translate(-50%,12px);max-width:min(calc(100vw - 45px),405px);padding:13px 20px;border-radius:14px;background:#183e2f;color:#fff9e7;text-align:center;font-size:12px;line-height:1.5;box-shadow:0 8px 18px #12392545;opacity:0;visibility:hidden;transition:opacity .2s,transform .2s;pointer-events:none}.toast.show{opacity:1;visibility:visible;transform:translate(-50%,0)}
/* Cover screen */
.cover{position:fixed;z-index:100;top:0;left:50%;transform:translateX(-50%);width:min(100%,480px);height:100dvh;min-height:590px;background:#24633e;display:block;overflow:hidden;text-align:center;transition:opacity .55s ease,visibility .55s ease}.cover.is-dismissed{opacity:0;visibility:hidden;pointer-events:none}.cover-scene{position:absolute;inset:0 0 31%;background:linear-gradient(#85d6de,#a4dca9)}.cover-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 17%}.cover-scene::after{content:"";position:absolute;bottom:0;left:0;right:0;height:34%;background:linear-gradient(transparent,#184b33)}.cover-leaf{position:absolute;width:205px;top:-42px;z-index:2}.cover-leaf-a{left:-48px}.cover-leaf-b{right:-48px;transform:scaleX(-1)}.cover-rex,.cover-orange,.cover-bronto{position:absolute;z-index:2;filter:drop-shadow(0 6px 3px #164b3455);animation:dinoBob 3s ease-in-out infinite}.cover-rex{width:59%;left:-11%;bottom:29%}.cover-orange{width:59%;right:-11%;bottom:29%;animation-delay:1s}.cover-bronto{width:34%;left:33%;bottom:24%;animation-delay:.5s}.cover-body{position:absolute;z-index:3;left:0;right:0;bottom:0;min-height:54%;padding:38px 27px calc(31px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#226641,#0a3b2c);border-radius:48% 48% 0 0 / 42px 42px 0 0;box-shadow:0 -10px 0 #d2df9c1a;color:#fff7d3;display:flex;align-items:center;flex-direction:column}.cover-stamp{font-size:10px;font-weight:1000;letter-spacing:2px;color:#cae4a5}.cover-roar{font-size:clamp(67px,20vw,100px);letter-spacing:-5px;line-height:.95;color:#ffc352;font-weight:1000;margin:13px 0 3px;-webkit-text-stroke:2px #104b30;paint-order:stroke fill;text-shadow:4px 6px 0 #ed813d;transform:rotate(-4deg)}.cover h2{font-size:19px;line-height:1.5;font-weight:800;margin:0}.cover h2 strong{font-weight:1000;font-size:26px;color:#ffd775}.cover-sub{font-size:12px;line-height:1.6;color:#cfe3bf;margin:12px 0 0}.guest-invite{margin:19px auto 19px;border-top:1px dashed #83a871;border-bottom:1px dashed #83a871;width:80%;padding:12px 0;display:flex;flex-direction:column;gap:3px}.guest-invite small{font-size:9px;color:#a1cfa3;letter-spacing:1.6px}.guest-invite strong{font-size:18px;line-height:1.2;max-width:100%;overflow-wrap:anywhere}.open-invitation{width:100%;max-width:320px;background:#ffc259;color:#234a35;border:3px solid #fff4c8;border-radius:40px;min-height:57px;display:flex;align-items:center;gap:12px;justify-content:center;font-weight:1000;font-size:12px;letter-spacing:.8px;box-shadow:0 5px 0 #c17737;transition:background-color .2s}.open-invitation svg{width:20px;height:20px}.open-invitation span{font-size:20px}.cover-note{font-size:10px;color:#afd29d;margin:18px 0 0}.cover-note span{color:#ffc259}
/* Gallery lightbox */
.lightbox:not([hidden]){position:fixed;z-index:170;inset:0;background:#071e17ee;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:15px;padding:55px 18px;color:#fff9e1}.lightbox img{max-width:min(100%,600px);max-height:75dvh;object-fit:contain;border-radius:17px;box-shadow:0 15px 55px #0007}.lightbox p{font-size:14px;text-align:center}.lightbox-close{position:absolute;right:22px;top:22px;border:0;width:40px;height:40px;background:#fff4d8;color:#163e2e;display:grid;place-items:center;border-radius:50%}.lightbox-close svg{width:25px;height:25px}
/* General hidden compliance: Tailwind display utilities must not override hidden attribute */
[hidden]{display:none!important}
@keyframes dinoBob{0%,100%{translate:0 0}50%{translate:0 -9px}}@keyframes float{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-12px) rotate(10deg)}}@keyframes marquee{to{transform:translateX(-50%)}}@keyframes softPulse{0%,100%{scale:1}50%{scale:1.045}}
@media(max-width:360px){.section-pad{padding-left:21px;padding-right:21px}.top-ticket{font-size:8px;padding:9px 8px}.roar-heading{font-size:102px}.hero{min-height:741px}.hero-scene{height:365px}.hero-overline{font-size:9px}.cover-body{min-height:58%;padding:27px 20px 21px}.cover-roar{margin-top:9px}.cover h2 strong{font-size:23px}.guest-invite{margin:12px 0}.cover-sub{margin:8px 0 0}.cover-note{margin:12px 0 0}}
@media (min-width:481px){.section-title{font-size:50px}.roar-heading{font-size:148px}.hero-name{font-size:46px}}
@media(max-height:740px){.cover-scene{inset:0 0 40%}.cover-body{min-height:62%;padding-top:23px}.cover-roar{font-size:67px;margin:7px 0}.cover h2 strong{font-size:22px}.guest-invite{margin:10px auto}.cover-sub{margin:6px 0}.cover-note{margin:8px 0}.open-invitation{min-height:50px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}

/* Optional personalization */
.hero-name.long-name>span:first-child{font-size:.95em}.hero-name.very-long-name>span:first-child{font-size:.73em}
.child-photo-wrap{display:flex;justify-content:center;margin:38px auto 0}.child-photo-frame{width:min(240px,80%);padding:9px 9px 13px;border:5px solid #f9e0a1;background:#fff9e4;border-radius:35% 35% 16px 16px;box-shadow:0 9px 0 #d6b77f;transform:rotate(3deg)}.child-photo-frame img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:35% 35% 10px 10px;background:#dcf0b6}.child-photo-frame span{display:block;padding-top:13px;font-weight:1000;letter-spacing:1.8px;font-size:9px;color:#4c8452;text-align:center}
