:root{--ink:#422a36;--ink-dark:#30212a;--plum:#633b4e;--plum-deep:#352330;--wine:#813d4d;--gold:#bb9261;--light-gold:#dec7a4;--paper:#f8f3eb;--paper-deep:#efe6d7;--cream:#fffaf1;--sage:#596c56;--line:rgba(104,68,53,.19);--dock-h:74px;--font-sans:'DM Sans','Segoe UI',sans-serif;--font-serif:'Playfair Display',Georgia,serif;--font-script:'Italianno','Brush Script MT',Georgia,serif;--font-telugu:'Noto Serif Telugu','Noto Sans Telugu',serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6rem}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;overflow-x:clip}body.locked{overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:4px}img{max-width:100%;display:block}a{color:inherit}svg{width:1.1rem;height:1.1rem;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}::selection{background:#d4b9a1;color:#301a25}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}.section{position:relative}.noise{pointer-events:none;position:fixed;z-index:80;inset:0;opacity:.115;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.6' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.26'/%3E%3C/svg%3E")}.site-progress{height:2px;position:fixed;z-index:155;top:0;left:0;width:100%;background:rgba(238,218,185,.22)}.site-progress span{height:100%;width:0;display:block;background:linear-gradient(90deg,#bd966b,#e8d7ad);transform-origin:left}
/* Book-opening overlay */
.opening-screen{position:fixed;z-index:200;inset:0;color:#f8e8d2;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse 75% 52% at 50% 43%,#754c59 0%,#492b3c 42%,#211923 100%);overflow:hidden;transition:opacity 1.05s ease,visibility 1.05s}.opening-screen.is-gone{opacity:0;visibility:hidden;pointer-events:none}.opening-screen:before,.opening-screen:after{content:'';position:absolute;inset:22px;border:1px solid rgba(228,187,133,.24);pointer-events:none}.opening-screen:after{inset:32px;border-color:rgba(228,187,133,.12)}.opening-stars{position:absolute;inset:0;background:radial-gradient(circle at 12% 12%,#e7b968 0 1px,transparent 2px),radial-gradient(circle at 88% 22%,#e7b968 0 1px,transparent 2px),radial-gradient(circle at 25% 73%,#f1d1a0 0 1px,transparent 2px),radial-gradient(circle at 72% 68%,#f1d1a0 0 1px,transparent 2px),radial-gradient(circle at 44% 9%,#f1d1a0 0 1px,transparent 2px);opacity:.7;animation:starBlink 4s ease infinite alternate}.opening-head{z-index:2;display:flex;align-items:center;flex-direction:column;gap:9px;margin-bottom:clamp(17px,5vh,36px)}.tiny-caps{font-size:.62rem;letter-spacing:.32em;opacity:.72}.opening-head [lang=te]{font-family:var(--font-telugu);color:#edc58c;font-size:1.7rem}.book-perspective{perspective:1800px;z-index:2;filter:drop-shadow(0 30px 22px rgba(0,0,0,.4))}.invitation-book{position:relative;width:min(73vw,340px);height:min(43vh,430px);min-height:260px;border-radius:9px;transform:rotate(-2deg);box-shadow:0 18px 0 -9px #d7c2a1,0 23px 0 -10px #9a7959,0 0 0 9px rgba(169,124,91,.23);transform-style:preserve-3d}.book-inside{position:absolute;inset:0;background:radial-gradient(circle at 50% 25%,#fff8e7 0%,#e8d5b6 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:#5e3e44;text-align:center;border:7px ridge #c4a274}.inside-sigil{font-size:2rem;color:#b99066}.book-inside small{font-size:.59rem;letter-spacing:.26em}.book-inside strong{font-family:var(--font-serif);font-size:clamp(1.45rem,5.7vw,2.4rem);font-weight:500;line-height:1.45}.book-inside strong i{font-family:var(--font-script);font-weight:400;font-size:1.5em;color:#b18a62}.book-inside>span{font-size:.6rem;letter-spacing:.18em}.door-panel{position:absolute;z-index:2;top:0;height:100%;width:50.2%;overflow:hidden;border:3px solid #a78351;box-shadow:inset 0 0 0 7px #533226,inset 0 0 0 10px rgba(213,169,110,.8);background-color:#503022;background-size:cover;backface-visibility:hidden;transition:transform 1.75s cubic-bezier(.15,.62,.18,1)}.door-panel:after{content:'';position:absolute;inset:12px;border:1px solid rgba(251,208,131,.55);box-shadow:0 0 0 5px rgba(46,24,18,.38)}.door-panel-left{left:0;transform-origin:left center;border-radius:7px 0 0 7px;background-image:url('assets/art/door-left.webp');background-position:center}.door-panel-right{right:0;transform-origin:right center;border-radius:0 7px 7px 0;background-image:url('assets/art/door-right.webp');background-position:center}.door-pattern{position:absolute;inset:22px;border:1px solid rgba(255,223,150,.3)}.book-center-seal{position:absolute;z-index:5;top:50%;left:50%;width:67px;height:67px;transform:translate(-50%,-50%);display:grid;place-items:center;color:#5b352e;background:radial-gradient(circle,#f5dda4 0,#b88b48 68%,#855b32 100%);border-radius:50%;border:3px double #fff2bf;box-shadow:0 5px 25px #251313c9;font-size:2rem;transition:opacity .3s}.opening-screen.is-opening .door-panel-left{transform:rotateY(-153deg)}.opening-screen.is-opening .door-panel-right{transform:rotateY(153deg)}.opening-screen.is-opening .book-center-seal{opacity:0}.open-action{z-index:3;display:flex;align-items:center;gap:18px;margin-top:clamp(26px,6vh,56px);background:#e4c59a;color:#3f2835;border:0;border-radius:80px;padding:16px 25px;font-size:.7rem;text-transform:uppercase;letter-spacing:.17em;font-weight:700;box-shadow:0 6px 30px #110b1385;transition:transform .3s,box-shadow .3s}.open-action:hover{transform:translateY(-4px);box-shadow:0 12px 36px #110b13b9}.open-action svg{width:20px;height:20px}.audio-note{position:relative;z-index:2;font-size:.65rem;letter-spacing:.05em;opacity:.65;margin-top:19px}.opening-screen.is-opening .open-action,.opening-screen.is-opening .audio-note{opacity:0;pointer-events:none}
/* Controls */
.top-toolbar{position:fixed;z-index:90;right:clamp(18px,3vw,40px);top:clamp(18px,3vw,35px);display:flex;gap:10px}.toolbar-pill,.toolbar-circle{background:rgba(255,250,240,.89);backdrop-filter:blur(14px);color:var(--ink);border:1px solid rgba(118,85,60,.17);box-shadow:0 4px 25px rgba(45,28,31,.13);height:40px}.toolbar-pill{min-width:74px;border-radius:24px;padding:0 13px;font-family:var(--font-telugu);font-size:.78rem}.toolbar-circle{width:40px;border-radius:50%;display:grid;place-items:center;position:relative}.toolbar-circle svg{height:17px;width:17px}.toolbar-circle.is-playing{background:#573745;color:#ffead2;border-color:#ac815d}.audio-bars{display:none;position:absolute;right:4px;bottom:8px;gap:2px;align-items:flex-end;height:11px}.audio-bars i{display:block;width:2px;height:5px;background:#f4d9ad;animation:bars .65s linear infinite alternate}.audio-bars i:nth-child(2){height:9px;animation-delay:.12s}.audio-bars i:nth-child(3){height:4px;animation-delay:.27s}.toolbar-circle.is-playing .audio-bars{display:flex}
/* Hero */
.hero{min-height:100svh;display:flex;align-items:center;justify-content:center;text-align:center;color:#fbf0df;background:radial-gradient(ellipse 65% 58% at 50% 56%,#65424b 0%,#482b3c 65%,#2f202b 100%);padding:110px 24px 125px;isolation:isolate;overflow:hidden}.temple-banner{position:absolute;z-index:-1;top:0;left:0;right:0;height:37%;background-image:linear-gradient(0deg,#462c39 3%,rgba(45,31,37,.22) 75%),url('assets/art/temple-panorama.webp');background-size:cover;background-position:center 34%;opacity:.65;filter:saturate(.72)}.hero:after{content:'';position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at center,transparent 14%,rgba(19,9,17,.34) 100%)}.hero-arch{position:absolute;z-index:0;top:7.5%;left:50%;width:min(86vw,830px);height:100%;transform:translateX(-50%);border:1px solid rgba(225,190,137,.25);border-radius:48% 48% 0 0/26% 26% 0 0;pointer-events:none}.arch-inner{position:absolute;inset:10px;border:1px solid rgba(221,180,113,.18);border-radius:48% 48% 0 0/26% 26% 0 0}.hero-content{position:relative;z-index:2;width:100%;max-width:760px;display:flex;flex-direction:column;align-items:center}.lotus-mark{font-size:2.5rem;color:#d4ad7e;line-height:1;animation:ornamentFloat 5.3s ease-in-out infinite;margin-bottom:20px}.hero-blessing{font-family:var(--font-telugu);color:#f0d3ad;margin:0 0 10px;font-size:clamp(.73rem,1.8vw,.98rem)}.overline{font-size:.62rem;letter-spacing:.34em;line-height:1.8;color:#eed0af;margin:0 0 23px}.hero-names{display:flex;flex-direction:column;align-items:center;margin:0;font-family:var(--font-script);font-weight:400;font-size:clamp(4.25rem,12vw,9.4rem);line-height:.69;letter-spacing:-.015em;text-shadow:0 8px 33px rgba(18,6,10,.25)}.hero-names span{display:block;white-space:nowrap}.hero-names .ampersand{font-family:var(--font-serif);font-weight:400;font-style:italic;font-size:.39em;color:#cfac7f;margin:.34em auto .31em}.hero-names-telugu{font-family:var(--font-telugu);font-size:clamp(.9rem,2.4vw,1.3rem);margin:42px 0 15px;color:#ead8c6;letter-spacing:.05em}.hero-names-telugu span{font-size:.7em;color:#f1d6a5;margin:0 15px}.gold-rule{display:flex;align-items:center;width:min(45vw,260px);gap:15px;margin:3px 0 14px;color:#dab78a;font-family:serif}.gold-rule:before,.gold-rule:after{content:'';height:1px;background:linear-gradient(to right,transparent,#a98662);flex:1}.gold-rule:after{transform:rotate(180deg)}.hero-date{font-size:.77rem;letter-spacing:.17em;text-transform:uppercase;color:#e5cba8;margin:5px 0 23px}.countdown{display:flex;gap:13px;align-items:baseline;justify-content:center;padding:10px 22px 13px;border-top:1px solid rgba(248,209,154,.2);border-bottom:1px solid rgba(248,209,154,.2)}.countdown>div{display:flex;min-width:52px;flex-direction:column;gap:6px}.countdown strong{font-family:var(--font-serif);font-weight:400;font-size:clamp(1.15rem,3.5vw,1.7rem);font-variant-numeric:tabular-nums;color:#fff6e8}.countdown span{font-size:.51rem;letter-spacing:.2em;color:#e1b888}.countdown em{font-style:normal;font-size:.9rem;color:#b89471}.hero-message{font-family:var(--font-serif);font-size:clamp(.92rem,2vw,1.2rem);font-style:italic;margin:23px 0 21px;color:#eedbc8}.hero-button{display:flex;align-items:center;gap:24px;border:1px solid #d2ae81;border-radius:100px;padding:13px 22px;background:rgba(230,197,155,.07);color:#f8e8d3;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;transition:background .25s,transform .25s}.hero-button:hover{background:rgba(230,197,155,.19);transform:translateY(-3px)}.swipe-hint{position:absolute;z-index:2;bottom:95px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:7px;align-items:center;color:rgba(249,231,200,.7)}.swipe-hint span{font-size:.5rem;letter-spacing:.27em;white-space:nowrap}.swipe-hint svg{width:15px;height:15px;animation:arrowDown 1.8s ease infinite}.hero-corner{position:absolute;color:#d8b58b;opacity:.45;font-size:1.2rem}.corner-tl{left:5%;top:11%}.corner-tr{right:5%;top:11%}.corner-bl{left:5%;bottom:10%}.corner-br{right:5%;bottom:10%}.floating-petals{position:absolute;inset:0;pointer-events:none;overflow:hidden}.petal{position:absolute;top:-5%;left:var(--left);font-size:var(--size);color:#e2bca0;opacity:0;animation:petalFall var(--duration) linear var(--delay) infinite;transform:rotate(var(--rotation));filter:blur(var(--blur))}
/* Introductory chapter */
.chapter-page,.event-heading{min-height:91svh;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:100px 24px 120px;overflow:hidden;background:#f4ede1}.chapter-intro{background:radial-gradient(circle at 50% 45%,#fffdf7,#f6eddf 68%,#eee3d2 100%)}.chapter-frame{position:absolute;inset:38px 7%;border:1px solid #ceb48e;border-radius:47% 47% 4px 4px/25% 25% 4px 4px;opacity:.46;pointer-events:none}.chapter-frame:before{content:'';position:absolute;inset:10px;border:1px solid #ceb48e;border-radius:inherit}.chapter-index{color:#a47c57;font-size:.63rem;letter-spacing:.22em;text-transform:uppercase;font-weight:700}.chapter-decoration{color:#c79d70;letter-spacing:1.2rem;font-size:1.15rem;margin:18px 0}.chapter-page h2,.event-heading h2,.venues-section h2,.rsvp-section h2{font-family:var(--font-serif);font-size:clamp(2.5rem,7.8vw,5.7rem);line-height:1.24;font-weight:400;margin:20px 0;color:#4e303b;letter-spacing:-.05em}.chapter-page h2{max-width:790px}.telugu-emphasis{font-family:var(--font-telugu);font-size:clamp(.9rem,2vw,1.25rem);color:#976b63;margin:0;line-height:1.9}.chapter-body{font-family:var(--font-serif);font-size:clamp(1rem,2.5vw,1.3rem);line-height:1.85;max-width:470px;color:#806c69;margin:28px auto 0}.chapter-number{position:absolute;bottom:13%;font-family:var(--font-serif);font-size:1rem;color:#c4a785;letter-spacing:.2em}
/* Story pages */
.story-page{min-height:100svh;padding:85px max(5vw,22px) 120px;display:flex;align-items:center;justify-content:center;overflow:hidden;isolation:isolate}.story-inner{max-width:1250px;width:100%;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:clamp(35px,8vw,110px);margin:0 auto}.story-groom{background:linear-gradient(126deg,#eae0cf,#f4e9db 46%,#e9d9c8)}.story-bride{background:linear-gradient(126deg,#f5e5e6,#fcf1e9 49%,#ecdcdb)}.story-bride .story-inner{direction:rtl}.story-bride .story-inner>*{direction:ltr}.story-ceremony{background:linear-gradient(120deg,#f4e9dc,#fdf3e8 60%,#f0e5d5)}.story-family{background:linear-gradient(130deg,#e5e8db,#f5f2e7 55%,#e9ebdf)}.story-background-word{position:absolute;top:6%;right:2%;z-index:-1;font-family:var(--font-serif);font-size:clamp(8rem,24vw,24rem);line-height:1;color:#9f7a64;opacity:.07;letter-spacing:-.15em;pointer-events:none}.story-bride .story-background-word{right:auto;left:4%}.photo-stage{height:min(73svh,690px);width:min(100%,500px);position:relative;border-radius:215px 215px 9px 9px;overflow:visible;filter:drop-shadow(0 26px 30px #4f332d2a);transform-origin:50% 80%}.photo-stage:after{content:'';position:absolute;inset:13px;border:1px solid rgba(255,239,198,.75);border-radius:inherit;pointer-events:none}.photo-stage img{height:100%;width:100%;object-fit:cover;border-radius:inherit;object-position:center 38%;background:#d9c6b2}.story-groom .photo-stage img{object-position:50% 35%}.story-bride .photo-stage img{object-position:50% 24%}.story-ceremony .photo-stage img{object-position:50% 28%}.story-family .photo-stage img{object-position:center 45%}.photo-border{position:absolute;z-index:-1;inset:-17px;transform:translate(14px,6px);border:1px solid rgba(176,131,92,.65);border-radius:240px 240px 9px 9px}.photo-index{position:absolute;bottom:23px;left:25px;z-index:2;color:#fff;font-size:.7rem;letter-spacing:.22em;text-shadow:0 1px 8px #302028}.photo-flower{position:absolute;font-size:4.2rem;bottom:-20px;right:-22px;color:#bf9374;text-shadow:0 7px 18px #3d1f2845}.story-copy{display:flex;align-items:flex-start;flex-direction:column;max-width:520px}.eyebrow{font-size:.67rem;font-weight:700;letter-spacing:.24em;color:#997456;text-transform:uppercase;display:flex;align-items:center;gap:16px;line-height:1.8}.thin-line{display:inline-block;width:35px;height:1px;background:#b29371}.story-copy h2{font-family:var(--font-serif);font-weight:400;letter-spacing:-.055em;line-height:1.08;font-size:clamp(3.3rem,7vw,7rem);margin:23px 0 14px}.story-copy h2 em,.event-heading h2 em,.venues-section h2 em,.rsvp-section h2 em{font-weight:400;color:#ab716e}.story-copy .telugu-name{font-size:1.45rem;color:#98765f;margin:1rem 0 1.3rem;font-family:var(--font-telugu)}.story-quote{font-family:var(--font-serif);font-size:clamp(1.15rem,2vw,1.45rem);line-height:1.9;max-width:380px;color:#806b63;margin:15px 0 36px}.story-signature{font-family:var(--font-script);font-size:2rem;color:#aa8364}.story-groom .photo-stage{transform:rotate(-2deg)}.story-bride .photo-stage{transform:rotate(2deg)}.story-ceremony .photo-stage{height:min(76svh,720px);width:min(100%,480px)}.story-family .family-stage{width:min(100%,550px);height:min(76svh,750px)}
/* Birthday collage */
.story-birthday{background:radial-gradient(ellipse at 50% 35%,#8c5361,#563746 68%,#3d2b39);color:#fff3e3;flex-direction:column;text-align:center;padding:100px 24px 130px;min-height:112svh}.birthday-copy{max-width:770px;margin:0 auto 25px;z-index:2}.story-birthday .eyebrow{color:#e3c49b;justify-content:center}.story-birthday h2{font-family:var(--font-serif);font-size:clamp(2.7rem,6.5vw,5.5rem);line-height:1.13;font-weight:400;letter-spacing:-.055em;margin:14px 0 5px}.story-birthday .telugu-emphasis{color:#e6d0b3}.birthday-copy>p:last-child{font-family:var(--font-serif);font-style:italic;color:#f0ded3;opacity:.85;font-size:clamp(.91rem,1.8vw,1.13rem);margin:12px 0}.birthday-spread{display:flex;justify-content:center;align-items:center;gap:clamp(10px,3vw,50px);width:100%;padding:20px 15px;max-width:900px;position:relative}.polaroid{width:min(38vw,330px);margin:0;padding:11px 11px 21px;background:#fff8ec;box-shadow:0 20px 45px #1d131a70;transform:rotate(-7deg);color:#805f5c}.polaroid.photo-right{transform:rotate(7deg) translateY(15px)}.polaroid img{width:100%;height:min(44vh,390px);object-fit:cover;object-position:center 36%;background:#e1d7c5}.polaroid figcaption{font-family:var(--font-script);font-size:2rem;margin-top:9px}.birthday-glitter{position:absolute;top:7%;left:50%;transform:translateX(-50%);color:#ead3a3;opacity:.75;letter-spacing:1.4rem}.star-spray{position:absolute;bottom:3%;font-size:7rem;color:#edc990;opacity:.18}
/* Blessings */
.blessing-section{background:linear-gradient(145deg,#f6f0e7,#fff9ef);min-height:82svh;padding:100px 22px 130px;display:flex;align-items:center;flex-direction:column;justify-content:center;text-align:center}.blessing-ornament{font-size:3rem;color:#b6906b;margin-bottom:24px}.blessing-section h2{font:400 clamp(1.9rem,4.5vw,4.4rem)/1.4 var(--font-serif);letter-spacing:-.045em;margin:28px 0 10px}.blessing-section h2 span{font-family:var(--font-script);color:#bc9571;font-size:1.2em}.parents-telugu{font-size:1rem}.fine-rule{height:1px;width:140px;background:linear-gradient(90deg,transparent,#b28d69,transparent);margin:30px auto}.blessing-message{max-width:640px;font:italic clamp(1.03rem,2.2vw,1.35rem)/1.95 var(--font-serif);color:#816b61}.hash-tag{font-family:var(--font-script);font-size:3rem;color:#994b55;margin-top:20px}
/* Events */
.event-heading{background:#4c313d;color:#faecdc;min-height:93svh;padding-bottom:120px}.event-heading .chapter-index{color:#d3ad7b}.event-heading h2{color:#fbe8d7;max-width:880px;margin-top:35px}.event-heading h2 em{color:#d2a981}.event-heading .telugu-emphasis{color:#e4bca6}.event-heading .chapter-body{color:#d9c3b4}.event-heading-sun{font-size:4rem;color:#d4ae7d;margin:5px auto 36px;animation:ornamentFloat 5s ease-in-out infinite}.flip-prompt{position:absolute;bottom:95px;display:flex;flex-direction:column;align-items:center;gap:9px;font-size:.55rem;letter-spacing:.25em;color:#c9a380}.flip-prompt svg{height:20px;width:20px}.event-stack{position:relative;padding-bottom:45px;background:linear-gradient(180deg,#4c313d 0%,#ebdfcd 7%,#f8f1e7 45%,#eee5d8 100%)}.event-scene{min-height:95svh;display:flex;align-items:center;justify-content:center;padding:32px 20px 98px;position:relative;perspective:1600px}.event-scene+.event-scene{margin-top:-6svh}.event-scene:nth-child(even){background:linear-gradient(160deg,rgba(152,115,87,.035),transparent 60%)}.event-card{position:relative;width:min(100%,635px);min-height:min(78svh,690px);display:flex;flex-direction:column;border-radius:17px;background:#fffaf1;box-shadow:0 32px 80px #3d252b2d,0 4px 20px #3d252b1d;border:1px solid #e3d2b7;overflow:hidden;transform-origin:center 20%;backface-visibility:hidden}.event-card:before{content:'';position:absolute;z-index:2;inset:12px;pointer-events:none;border:1px solid rgba(170,122,74,.4);border-radius:8px}.event-card:not(.is-visible){opacity:.65;transform:translateY(70px) scale(.9) rotateY(-12deg);filter:blur(3px)}.event-card.is-visible{animation:cardUnfold 1.16s cubic-bezier(.13,.75,.24,1) both}.event-scene:nth-child(even) .event-card.is-visible{animation-name:cardUnfoldRight}.event-scene:nth-child(3n) .event-card.is-visible{animation-name:cardUnfoldDepth}.event-card::after{content:'✧';position:absolute;z-index:3;top:17px;right:25px;font-family:var(--font-serif);color:#c5a378;font-size:1.55rem}.event-card-art{height:clamp(162px,25svh,250px);background:#d2b8a1;overflow:hidden;position:relative}.event-card-art img{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform 1.8s ease}.event-card.is-visible .event-card-art img{transform:scale(1.055)}.event-card-art:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#fffaf1 0%,#fffaf100 38%)}.event-card-body{position:relative;text-align:center;display:flex;flex-direction:column;align-items:center;flex:1;padding:15px clamp(18px,4vw,42px) 40px}.event-card-num{font-size:.61rem;font-weight:700;letter-spacing:.3em;color:#ad8763;margin-top:4px}.event-card-kicker{font-size:.6rem;letter-spacing:.19em;color:#9f7e69;text-transform:uppercase;margin:13px 0 10px}.event-card h3{font:400 clamp(2.05rem,5.5vw,3.7rem)/1.13 var(--font-serif);letter-spacing:-.04em;margin:5px 0 5px;color:#633d46}.event-card .event-telugu{font-family:var(--font-telugu);font-size:clamp(.88rem,2vw,1.1rem);color:#966860;margin:5px 0 6px}.event-mandala{font:1.3rem var(--font-serif);color:#c9a176;margin:9px 0}.event-meta{display:flex;align-items:center;flex-direction:column;gap:8px;color:#6f5b51}.event-date{font-family:var(--font-serif);font-size:clamp(1.05rem,2.3vw,1.32rem);letter-spacing:.055em}.event-time{font-family:var(--font-serif);font-size:1.1rem;font-style:italic;color:#986d5f}.event-venue{font-size:.75rem;letter-spacing:.055em;line-height:1.6;font-weight:700;margin:9px 0 16px;color:#695344}.event-card .event-link{display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:11px 17px;min-height:42px;border-radius:40px;border:1px solid #aa835c;text-decoration:none;color:#7c554a;font-size:.67rem;font-weight:700;letter-spacing:.13em;transition:background .25s,color .25s}.event-card .event-link:hover{background:#704958;color:#fff}.event-card .event-link svg{height:16px;width:16px}.event-card .event-bottom-decoration{position:absolute;bottom:10px;font-family:var(--font-serif);font-size:.65rem;letter-spacing:.19em;color:#c0a78b}.event-scene:nth-child(2) .event-card{background:#f7f0e4}.event-scene:nth-child(2) .event-card-art:after{background:linear-gradient(0deg,#f7f0e4,#f7f0e400 38%)}.event-scene:nth-child(4) .event-card{background:#fdf8ef}.event-scene:nth-child(7) .event-card{background:#f7efe6}.event-scene:nth-child(8) .event-card{background:#fff8f0;border-color:#cfab83}.event-scene:nth-child(8) .event-card h3{color:#8a3544}.event-scene:nth-child(8) .event-card-art:after{background:linear-gradient(0deg,#fff8f0,#fff8f000 39%)}
/* Venues */
.venues-section{padding:110px 24px 140px;text-align:center;background:#f6eee2}.venues-section h2{margin:30px auto 18px}.venues-summary{font:italic 1.12rem/1.8 var(--font-serif);color:#8e766f}.venue-grid{max-width:1160px;margin:55px auto 0;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;text-align:left}.venue-card{position:relative;background:linear-gradient(155deg,#fffaf2,#f0e5d9);border:1px solid #ddc9ad;border-radius:19px;min-height:332px;display:flex;align-items:flex-start;flex-direction:column;padding:35px 28px;box-shadow:0 16px 40px #76594e12;transition:transform .3s,box-shadow .3s}.venue-card:hover{transform:translateY(-6px);box-shadow:0 24px 43px #76594e24}.venue-icon{font-size:2.2rem;color:#b58b64;line-height:1}.venue-number{position:absolute;right:30px;top:34px;color:#c5a882;font:.88rem var(--font-serif)}.venue-card h3{font:500 1.55rem/1.25 var(--font-serif);letter-spacing:-.02em;margin:30px 0 5px}.venue-card p{color:#796a61;font-size:.84rem;line-height:1.7;margin:3px 0}.venue-muted{font-size:.75rem!important;color:#ab8c79!important}.venue-card a{margin-top:auto;padding-top:24px;display:flex;align-items:center;gap:12px;font-size:.63rem;font-weight:700;letter-spacing:.12em;text-decoration:none;color:#906551}.venue-card a svg{height:15px;width:15px}
/* RSVP */
.rsvp-section{background:radial-gradient(ellipse at 50% 45%,#6c4755,#4b303e 65%,#372530);color:#f7ead7;text-align:center;padding:110px 20px 140px;min-height:100svh;display:flex;align-items:center;justify-content:center;overflow:hidden}.rsvp-section h2{color:#f9e9d3}.rsvp-section h2 em{color:#d1aa84}.rsvp-section .chapter-index{color:#d9b38c}.rsvp-arch{position:absolute;inset:55px max(5vw,22px) 40px;border:1px solid rgba(221,184,136,.23);border-radius:45% 45% 0 0/13% 13% 0 0;pointer-events:none}.rsvp-arch:after{content:'';position:absolute;inset:10px;border:1px solid rgba(221,184,136,.14);border-radius:inherit}.rsvp-content{max-width:550px;width:100%;position:relative;z-index:2}.rsvp-section h2{margin:20px auto}.rsvp-intro{font:italic 1rem/1.8 var(--font-serif);color:#ecdad1}.rsvp-form{text-align:left;display:grid;gap:10px;max-width:440px;margin:34px auto 0}.rsvp-form label{font-size:.68rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:#e4c69f;margin-top:12px}.rsvp-form input,.rsvp-form select{width:100%;height:49px;color:#2f2430;background:#fff9ee;border:1px solid #cfb398;border-radius:10px;padding:10px 15px;appearance:auto}.rsvp-submit{border:0;background:#ecd1a7;border-radius:50px;color:#4c2b3a;min-height:51px;margin-top:15px;display:flex;align-items:center;justify-content:center;gap:13px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;font-size:.69rem;transition:transform .2s,background .2s}.rsvp-submit:hover{transform:translateY(-2px);background:#f5e1c5}.rsvp-disclaimer{font-size:.67rem;line-height:1.6;text-align:center;color:#d4bcb5;margin:6px 0 0}
/* End and app dock */
.site-ending{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:15px;min-height:65svh;padding:85px 20px 155px;background:#f8f1e5}.ending-symbol{font-size:3.2rem;color:#b39570}.site-ending h2{font:400 clamp(2.1rem,5vw,4.7rem)/1.3 var(--font-script);color:#68414c;margin:0}.site-ending h2 i{color:#b28e73}.site-ending>p:not(.telugu-emphasis){font:italic 1.02rem/1.8 var(--font-serif);color:#8a7265;max-width:450px;margin:0}.ending-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px;margin:17px 0}.ending-actions a,.ending-actions button{text-decoration:none;border:1px solid #c4a481;color:#6c4a42;border-radius:40px;background:transparent;display:inline-flex;gap:9px;align-items:center;padding:12px 16px;font-size:.69rem;font-weight:700;letter-spacing:.03em}.ending-actions svg{width:15px;height:15px}.site-ending small{font-size:.62rem;letter-spacing:.1em;color:#a68a7a;line-height:1.7}
.mobile-dock{position:fixed;z-index:95;bottom:15px;left:50%;transform:translateX(-50%);height:var(--dock-h);width:min(96vw,540px);border-radius:25px;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;padding:8px 7px;background:rgba(255,251,244,.94);backdrop-filter:blur(22px) saturate(1.2);-webkit-backdrop-filter:blur(22px) saturate(1.2);box-shadow:0 9px 44px rgba(55,27,35,.28),inset 0 1px #fff;border:1px solid rgba(172,141,105,.35)}.nav-button{border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;height:100%;color:#806b61;border-radius:17px;padding:4px 1px;transition:background .25s,color .25s,transform .25s}.nav-button span{font-size:.59rem;letter-spacing:.02em;font-weight:700;white-space:nowrap}.nav-button svg{height:20px;width:20px}.nav-button.is-active{background:#62404d;color:#fff2df}.nav-button:active{transform:scale(.95)}.toast{position:fixed;z-index:120;bottom:105px;left:50%;transform:translate(-50%,20px);min-width:200px;max-width:88vw;background:#34232e;color:#fff7eb;padding:13px 19px;border-radius:30px;font-size:.77rem;line-height:1.5;box-shadow:0 12px 40px #1a101c4d;text-align:center;opacity:0;visibility:hidden;transition:transform .3s,opacity .3s,visibility .3s}.toast.show{opacity:1;visibility:visible;transform:translate(-50%,0)}
/* Chapter reveal states, controlled by intersection observer */
.reveal-section .reveal-photo{opacity:0;filter:blur(11px);transform:translate3d(-95px,35px,0) rotate(-7deg) scale(.86);transition:transform 1.15s cubic-bezier(.16,.78,.2,1),filter 1.25s ease,opacity .8s ease}.reveal-section .reveal-copy{opacity:0;transform:translate3d(70px,36px,0);filter:blur(5px);transition:transform 1.05s .18s cubic-bezier(.16,.78,.2,1),opacity 1s .15s ease,filter .9s .15s ease}.reveal-section.is-in-view .reveal-photo{transform:translate3d(0,0,0) rotate(-2deg) scale(1);opacity:1;filter:blur(0)}.reveal-section.is-in-view .reveal-copy{transform:translate3d(0,0,0);opacity:1;filter:blur(0)}.story-bride.reveal-section .reveal-photo{transform:translate3d(100px,30px,0) rotate(9deg) scale(.86)}.story-bride.reveal-section.is-in-view .reveal-photo{transform:translate3d(0,0,0) rotate(2deg) scale(1)}.story-birthday.reveal-section .photo-left{transform:translate3d(-140px,100px,0) rotate(-23deg) scale(.7)}.story-birthday.reveal-section .photo-right{transform:translate3d(140px,100px,0) rotate(23deg) scale(.7);transition-delay:.17s}.story-birthday.reveal-section.is-in-view .photo-left{transform:translate3d(0,0,0) rotate(-7deg) scale(1)}.story-birthday.reveal-section.is-in-view .photo-right{transform:translate3d(0,15px,0) rotate(7deg) scale(1)}.story-ceremony.reveal-section .reveal-photo{transform:translate3d(-30px,120px,0) rotateY(38deg) scale(.85)}.story-ceremony.reveal-section.is-in-view .reveal-photo{transform:translate3d(0,0,0) rotateY(0) scale(1)}.story-family.reveal-section .reveal-photo{transform:translate3d(0,95px,0) scale(.76);clip-path:inset(32% 27% round 50%)}.story-family.reveal-section.is-in-view .reveal-photo{transform:translate3d(0,0,0) scale(1);clip-path:inset(0 0 round 0)}
@keyframes petalFall{0%{transform:translate3d(0,-30px,0) rotate(0);opacity:0}12%{opacity:.52}82%{opacity:.42}100%{transform:translate3d(var(--drift),105svh,0) rotate(580deg);opacity:0}}@keyframes starBlink{from{opacity:.28}to{opacity:.8}}@keyframes ornamentFloat{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-10px) rotate(8deg)}}@keyframes arrowDown{0%,100%{transform:translateY(0)}55%{transform:translateY(7px)}}@keyframes bars{to{height:11px}}@keyframes cardUnfold{from{opacity:.3;clip-path:inset(25% 31% round 80px);transform:translateY(120px) rotateY(-20deg) rotate(-6deg) scale(.73);filter:blur(9px)}to{opacity:1;clip-path:inset(0 0 round 0);transform:translateY(0) rotateY(0) rotate(0) scale(1);filter:blur(0)}}@keyframes cardUnfoldRight{from{opacity:.25;clip-path:inset(27% 38% round 70px);transform:translateY(65px) rotateY(27deg) rotate(7deg) scale(.75);filter:blur(7px)}to{opacity:1;clip-path:inset(0 0 round 0);transform:translateY(0) rotateY(0) rotate(0) scale(1);filter:blur(0)}}@keyframes cardUnfoldDepth{from{opacity:.1;clip-path:circle(5% at 50% 45%);transform:translateY(85px) rotateX(22deg) scale(.7);filter:blur(9px)}to{opacity:1;clip-path:circle(100% at 50% 50%);transform:translateY(0) rotateX(0) scale(1);filter:blur(0)}}
@media(min-width:1200px){.hero{min-height:900px}.story-page{min-height:820px}.event-scene{min-height:850px}.event-heading{min-height:800px}}@media(max-width:950px){.story-inner{gap:45px}.venue-grid{gap:12px}.venue-card{padding:30px 22px}.story-copy h2{font-size:clamp(2.7rem,6.8vw,5rem)}}
@media(max-width:700px){:root{--dock-h:69px}.top-toolbar{top:15px;right:14px}.hero{padding:92px 16px 135px;min-height:100svh}.hero-arch{width:94vw;top:8%;border-radius:46% 46% 0 0/17% 17% 0 0}.hero-names{font-size:clamp(4.45rem,16.6vw,7.1rem)}.hero-names-telugu{margin-top:32px}.hero-date{font-size:.64rem;letter-spacing:.12em}.hero-blessing{margin-bottom:16px}.overline{letter-spacing:.18em;font-size:.56rem}.lotus-mark{margin-bottom:12px}.swipe-hint{bottom:93px}.chapter-page,.event-heading{min-height:85svh;padding:95px 26px 122px}.chapter-frame{inset:25px 22px}.chapter-page h2,.event-heading h2{font-size:clamp(2.25rem,9vw,3.5rem)}.chapter-body{font-size:1.04rem}.story-page{min-height:100svh;display:flex;align-items:center;padding:81px 23px 128px}.story-inner{display:flex;flex-direction:column;gap:25px;justify-content:center;align-items:center}.story-bride .story-inner{direction:ltr}.photo-stage,.story-family .family-stage,.story-ceremony .photo-stage{height:clamp(340px,48svh,530px);width:min(82vw,390px)}.story-copy{align-items:center;text-align:center;max-width:410px}.story-copy h2{font-size:clamp(2.9rem,12vw,4.4rem);margin:8px 0 0}.story-quote{font-size:1.07rem;line-height:1.6;margin:10px auto 8px}.story-copy .telugu-name{font-size:1.08rem;margin:7px 0 5px}.story-background-word{font-size:34vw;top:6%;right:7%}.photo-border{inset:-10px;transform:translate(9px,6px)}.photo-index{font-size:.57rem;bottom:17px}.story-signature{font-size:1.55rem}.story-birthday{padding:92px 12px 140px;min-height:90svh}.story-birthday h2{font-size:clamp(2.5rem,10vw,3.7rem)}.birthday-spread{gap:4px;margin-top:10px}.polaroid{width:44vw;padding:6px 6px 10px}.polaroid img{height:clamp(260px,39svh,420px)}.polaroid figcaption{font-size:1.5rem;margin-top:5px}.birthday-copy>p:last-child{margin:8px auto;max-width:300px}.blessing-section{min-height:80svh;padding:90px 22px 120px}.blessing-section h2{font-size:clamp(1.8rem,7vw,2.5rem)}.event-heading{min-height:88svh}.event-heading-sun{font-size:3rem;margin-bottom:20px}.event-heading h2{font-size:clamp(2.15rem,9.6vw,3.6rem)}.flip-prompt{bottom:92px}.event-scene{min-height:86svh;padding:18px 16px 95px}.event-scene+.event-scene{margin-top:-7svh}.event-card{min-height:min(71svh,660px);border-radius:19px}.event-card-art{height:clamp(155px,21svh,215px)}.event-card-body{padding:14px 18px 35px}.event-card h3{font-size:clamp(2.05rem,7vw,2.9rem)}.event-card-kicker{margin:9px 0 4px}.event-card .event-telugu{font-size:.95rem;margin:3px 0}.event-mandala{margin:6px 0}.event-date{font-size:1.08rem}.event-time{font-size:1.02rem}.event-venue{margin:8px 0 10px}.event-card .event-link{min-height:38px;padding:8px 14px}.venue-grid{grid-template-columns:1fr;max-width:480px;margin-top:30px;gap:15px}.venues-section{padding:91px 22px 133px}.venues-section h2{font-size:2.65rem;margin:21px auto}.venue-card{min-height:235px;padding:25px}.venue-card h3{margin:18px 0 4px}.rsvp-section{padding:100px 26px 142px}.rsvp-section h2{font-size:clamp(2.4rem,9.2vw,3.6rem)}.site-ending{min-height:65svh;padding-bottom:146px}.mobile-dock{bottom:max(10px,env(safe-area-inset-bottom));height:var(--dock-h);width:calc(100vw - 20px);border-radius:20px}.nav-button{gap:5px;border-radius:15px}.nav-button span{font-size:.56rem}.nav-button svg{height:19px;width:19px}}
@media(max-width:380px){.hero-names{font-size:17vw}.hero-message{font-size:.9rem}.story-page{padding-inline:18px}.photo-stage,.story-family .family-stage,.story-ceremony .photo-stage{height:clamp(300px,45svh,445px)}.story-copy h2{font-size:2.65rem}.story-quote{font-size:1rem}.event-card-art{height:145px}.event-card h3{font-size:2.05rem}.event-card-body{padding:10px 14px 33px}.event-date{font-size:1rem}.event-meta{gap:5px}.event-card .event-telugu{font-size:.85rem}.event-venue{font-size:.72rem}.opening-screen:before{inset:13px}.opening-screen:after{inset:20px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal-section .reveal-photo,.reveal-section .reveal-copy,.event-card:not(.is-visible){opacity:1;transform:none;filter:none;clip-path:none}}
/* Telugu translations use an actual Telugu type family and more forgiving line spacing. */
html[lang=te] .chapter-page h2,html[lang=te] .event-heading h2,html[lang=te] .venues-section h2,html[lang=te] .rsvp-section h2,html[lang=te] .story-copy h2,html[lang=te] .story-birthday h2,html[lang=te] .event-card h3{font-family:var(--font-telugu);letter-spacing:0;line-height:1.52}
html[lang=te] .story-copy h2{font-size:clamp(2rem,5.4vw,4rem)}
html[lang=te] .event-card h3{font-size:clamp(1.6rem,4.5vw,2.7rem)}
html[lang=te] .event-card-kicker,html[lang=te] .eyebrow,html[lang=te] .chapter-index{letter-spacing:.05em}
html[lang=te] .hero-date,html[lang=te] .overline,html[lang=te] .hero-button{letter-spacing:.02em}
@media(max-width:700px){html[lang=te] .chapter-page h2,html[lang=te] .event-heading h2,html[lang=te] .venues-section h2,html[lang=te] .rsvp-section h2{font-size:clamp(1.7rem,7.5vw,2.8rem)}html[lang=te] .story-copy h2{font-size:2rem}html[lang=te] .story-birthday h2{font-size:2.1rem}html[lang=te] .event-card h3{font-size:1.75rem}}
