:root{--ink:#35382f;--paper:#faf9f5;--accent:#684a38;--soft:#ece7db;--line:color-mix(in srgb,var(--ink) 18%,transparent);--serif:Cormorant,Georgia,serif;--sans:Manrope,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.8}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}img{display:block;max-width:100%}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button:disabled{cursor:wait;opacity:.65}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.1}h2{font-size:clamp(2.5rem,5vw,3.6rem)}h3{font-size:2rem}.eyebrow{font-size:.75rem;letter-spacing:.24em;font-weight:600;line-height:1.6;text-transform:uppercase}.iconify{width:20px;height:20px;flex-shrink:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}
/* Collection */
.catalog-header{max-width:1400px;margin:auto;padding:32px 5%;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #deded4}.brand{font-size:1.8rem;letter-spacing:-1.5px;font-family:var(--serif);text-decoration:none;line-height:1}.brand span{font-style:italic}.brand small{font:9px var(--sans);display:block;letter-spacing:2.4px;margin-top:10px}.edition{font-size:.75rem;letter-spacing:.13em}.catalog{max-width:1400px;padding:0 5%;margin:auto}.catalog-intro{padding:70px 0 40px}.catalog-intro h1{font-size:clamp(2.5rem,5vw,4.8rem);letter-spacing:-.03em;margin:18px 0 24px}.catalog-intro h1 em{font-weight:400;color:#796748}.catalog-intro>p:last-child{max-width:490px;color:#687064;font-size:1rem}.filters{display:flex;gap:8px;padding:20px 0 35px;flex-wrap:wrap}.filters button{border:1px solid #d7d8cd;background:transparent;border-radius:30px;padding:9px 25px;min-height:46px;font-size:.875rem}.filters button[aria-pressed=true]{background:#384638;color:#fff;border-color:#384638}.theme-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:44px 25px;padding-bottom:75px}.theme-card{min-width:0}.card-art{position:relative;display:block;aspect-ratio:2/3;overflow:hidden;background:#e9e3d9;text-decoration:none;color:var(--cover-ink)}.card-art>img{height:100%;width:100%;object-fit:cover;transition:transform .9s}.card-letter{position:absolute;inset:16% 11% auto;text-align:center;pointer-events:none}.card-letter>span,.card-letter>small{font-size:9px;letter-spacing:2px}.card-letter h2{font-size:clamp(2.3rem,3.3vw,3.7rem);line-height:1.02;margin:20px 0;overflow-wrap:anywhere}.card-letter h2 i{font-size:.6em}.card-open{position:absolute;inset:auto 14px 14px;background:rgba(255,255,255,.94);color:#393c31;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;font-size:.8rem;transform:translateY(140%);transition:transform .35s}.card-art:hover .card-open,.card-art:focus-visible .card-open{transform:translateY(0)}.card-art:hover>img{transform:scale(1.035)}.card-details{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:20px}.card-details p{font-size:.75rem;color:#73766e}.card-details h3{font-size:1.65rem;margin-top:5px}.card-details h3 a{text-decoration:none}.swatches{display:flex;gap:4px}.swatches i{height:10px;width:10px;border-radius:50%;border:1px solid #3331}.card-description{font-size:.8rem;line-height:1.7;color:#74776f;margin-top:10px}.catalog-footer{border-top:1px solid #deded4;max-width:1400px;margin:auto;padding:35px 5%;display:flex;align-items:center;justify-content:space-between;gap:20px}.catalog-footer span{font:1.7rem var(--serif)}.catalog-footer p{font-size:.8rem;color:#71766c}
/* Invitation */
.invitation{background:var(--soft)}.invitation.locked{overflow:hidden}.ambient{position:fixed;left:0;top:0;bottom:0;right:min(560px,45%);overflow:hidden;background:var(--accent);color:#fff9ed}.ambient-art{width:100%;height:100%;object-fit:cover;filter:brightness(.6);object-position:center}.ambient:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#0001,#0000 30%,#0005)}.ambient-copy{position:absolute;inset:auto 12% 12%;z-index:1;max-width:500px}.ambient-copy h2{font-size:clamp(3.5rem,5vw,6.5rem);margin:22px 0}.ambient-copy p:last-child{font-size:.875rem;max-width:330px;opacity:.8;margin-top:30px}.ambient-brand{position:absolute;left:12%;top:6%;z-index:1;font:1.8rem var(--serif)}.invitation-shell{margin-left:auto;width:min(560px,45%);background:var(--paper);min-height:100svh;position:relative;box-shadow:-10px 0 80px #0002}.cover{position:fixed;inset:0 0 0 auto;width:min(560px,45%);z-index:50;overflow:auto;overscroll-behavior:contain;background:var(--paper);color:var(--cover-ink)}.cover-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;min-height:780px}.cover-inner{position:relative;z-index:1;text-align:center;min-height:max(100svh,780px);display:flex;flex-direction:column;align-items:center;padding:110px 15% 100px}.cover .eyebrow{font-size:.7rem;letter-spacing:.2em}.cover-names{font-size:clamp(3.6rem,5vw,5.6rem);line-height:.96;margin:35px 0 28px;overflow-wrap:anywhere;font-weight:500}.cover-names span{display:block}.cover-names i{display:block;font-size:.45em;line-height:1.4;font-weight:400}.cover-date{font-size:.85rem;letter-spacing:.18em}.guest-block{margin:45px 0 25px;line-height:1.7;max-width:100%;overflow-wrap:anywhere}.guest-block p{font-size:.75rem}.guest-block strong{font-family:var(--serif);font-size:1.7rem;line-height:1.3;display:block;margin-top:7px}.btn{display:inline-flex;gap:10px;align-items:center;justify-content:center;background:var(--accent);color:#fff;padding:13px 22px;border:1px solid var(--accent);border-radius:3px;min-height:50px;text-decoration:none;font-size:.875rem;line-height:1.5;transition:transform .2s,filter .2s}.btn:hover{filter:brightness(1.1);transform:translateY(-2px)}.btn.secondary{background:transparent;color:var(--accent)}.cover .btn{background:var(--cover-ink);color:var(--paper);border-color:var(--cover-ink);box-shadow:0 8px 24px #0001}.regal .cover .btn{color:var(--accent)}.cover-note{margin-top:14px;font-size:.7rem;letter-spacing:.1em;opacity:.7}.section{padding:80px 45px;text-align:center;position:relative;scroll-margin-top:20px}.section>.eyebrow{margin-bottom:17px;color:var(--accent)}.section h2{margin-bottom:24px}.section p{font-size:1rem;line-height:1.9}.opening{min-height:92svh;display:flex;flex-direction:column;justify-content:center;overflow:hidden;padding-top:100px;padding-bottom:110px}.opening:before{content:'';position:absolute;inset:0;background-image:var(--art);background-size:cover;opacity:.22;mask-image:linear-gradient(transparent 10%,black);pointer-events:none}.opening>*{position:relative}.monogram{width:100px;height:100px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;margin:0 auto 40px;font:2.5rem var(--serif);letter-spacing:-6px;padding-right:6px;color:var(--accent);box-shadow:0 0 0 8px var(--paper),0 0 0 9px var(--line)}.opening h1{font-size:4rem;line-height:1.1;margin:20px 0 25px;overflow-wrap:anywhere}.opening h1 i{font-size:.65em}.quote{font:italic 1.5rem/1.65 var(--serif)!important;margin:30px auto;max-width:400px}.tiny-line{display:block;height:1px;width:55px;background:var(--accent);margin:35px auto}.scroll-cue{margin:30px auto 0;display:flex;align-items:center;gap:10px;font-size:.75rem;text-decoration:none}.couple-section{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.couple-intro{max-width:390px;margin:0 auto 40px}.person{margin:38px auto 0}.portrait{height:150px;width:125px;border:1px solid var(--line);margin:0 auto 24px;display:grid;place-items:center;border-radius:80px 80px 8px 8px;background:var(--soft);font:4rem var(--serif);color:var(--accent);position:relative;overflow:hidden}.portrait img{width:100%;height:100%;object-fit:cover}.person>p{font-size:.8rem;max-width:320px;margin:12px auto}.couple-and{font:italic 3.8rem var(--serif);display:block;color:var(--accent);margin:12px auto}.events-section{background:var(--soft)}.countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-block:1px solid var(--line);padding:22px 0;margin:35px 0 40px}.countdown>div+div{border-left:1px solid var(--line)}.countdown b{font:2.3rem var(--serif);display:block;line-height:1.2;font-variant-numeric:tabular-nums}.countdown span{font-size:.7rem;letter-spacing:.06em}.countdown-ended{margin:25px 0}.event{border:1px solid var(--line);padding:34px 25px;background:var(--paper);margin:20px 0}.event>.iconify{width:29px;height:29px;margin:0 auto 18px;color:var(--accent)}.event h3{font-size:2.6rem;margin-bottom:20px}.event-date{display:flex;align-items:center;justify-content:center;gap:17px;margin-bottom:15px}.event-date b{font:3.4rem var(--serif);border-inline:1px solid var(--line);padding:0 18px;line-height:1.2}.event-date span{font-size:.8rem;max-width:75px;line-height:1.5}.event p{font-size:.9rem}.event .btn{margin-top:20px;width:100%}.venue-block{margin-top:36px}.venue-block h3{font-size:1.9rem;margin-bottom:12px}.venue-block .btn{margin-top:20px}.venue-example{font-size:.75rem!important;opacity:.8;margin-top:12px}.map-frame{width:100%;height:270px;border:0;margin-top:25px}.story-section{border-bottom:1px solid var(--line)}.timeline{margin-top:45px;text-align:left}.story-item{display:grid;grid-template-columns:65px minmax(0,1fr);gap:20px;position:relative;padding-bottom:40px}.story-item:last-child{padding-bottom:0}.story-item:before{content:'';position:absolute;left:73px;top:13px;bottom:0;border-left:1px solid var(--line)}.story-item:last-child:before{display:none}.story-year{font:1.3rem var(--serif);color:var(--accent)}.story-copy{padding-left:16px;position:relative}.story-copy:before{content:'';position:absolute;left:-15px;top:9px;width:7px;height:7px;border:1px solid var(--accent);background:var(--paper);border-radius:50%}.story-copy h3{font-size:1.8rem;margin-bottom:13px}.story-copy p{font-size:.85rem}.gallery{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gallery button{padding:0;border:0;background:var(--soft);overflow:hidden}.gallery button:first-child{grid-column:span 2}.gallery img{width:100%;height:220px;object-fit:cover;transition:transform .6s}.gallery button:first-child img{height:330px}.gallery button:hover img{transform:scale(1.04)}.lightbox{border:0;padding:0;background:var(--paper);max-width:min(900px,92vw);max-height:90svh}.lightbox::backdrop{background:#111c}.lightbox img{max-height:75svh;width:100%;object-fit:contain}.lightbox button{display:block;border:0;padding:12px 25px;background:var(--paper);margin-left:auto;min-height:48px}.rsvp-section{background:var(--soft)}.rsvp-form{text-align:left;margin-top:30px}.field{display:block;margin-bottom:20px}.field>span{font-size:.85rem;display:block;font-weight:600;margin-bottom:7px}.field input,.field textarea,.field select{width:100%;padding:13px 14px;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:3px;min-height:50px;font-size:1rem}.field textarea{resize:vertical;min-height:130px}.attendance{padding:0;border:0;margin:0 0 20px}.attendance legend{font-size:.85rem;margin-bottom:10px;font-weight:600}.radio-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.radio-choice{padding:12px 10px;border:1px solid var(--line);background:var(--paper);font-size:.8rem;display:flex;gap:8px;align-items:center;cursor:pointer}.radio-choice:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--paper))}.radio-choice input{accent-color:var(--accent);width:16px;height:16px}.consent{display:flex;align-items:flex-start;gap:10px;font-size:.75rem;line-height:1.6;margin-bottom:22px}.consent input{margin-top:4px;accent-color:var(--accent);width:17px;height:17px;flex-shrink:0}.rsvp-form>.btn{width:100%}.demo-note{font-size:.75rem!important;line-height:1.6!important;margin:20px 0;color:var(--ink);opacity:.85}.gift-section{border-bottom:1px solid var(--line)}.gift-section>.iconify{color:var(--accent);width:28px;height:28px;margin-bottom:18px}.gift-section .btn{margin-top:27px}.closing-section{padding-bottom:130px;background-image:linear-gradient(var(--paper),color-mix(in srgb,var(--paper) 85%,transparent)),var(--art);background-size:cover;background-position:bottom}.closing-section h2{margin-top:35px;font-size:3.8rem}.signature{display:block;font:1.2rem var(--serif);margin-top:40px;opacity:.7}.bottom-nav{position:fixed;z-index:20;bottom:max(14px,env(safe-area-inset-bottom));right:calc((min(560px,45vw) - min(460px,calc(45vw - 32px)))/2);width:min(460px,calc(45vw - 32px));display:flex;justify-content:space-around;background:color-mix(in srgb,var(--paper) 93%,transparent);backdrop-filter:blur(15px);border:1px solid var(--line);box-shadow:0 8px 30px #0001;border-radius:10px;padding:7px 4px}.bottom-nav a{font-size:.625rem;text-decoration:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;flex:1;min-height:48px;line-height:1.3}.bottom-nav a .iconify{height:21px;width:21px}.bottom-nav a[aria-current=true]{color:var(--accent);background:var(--soft);border-radius:6px}.music-button{position:fixed;bottom:93px;right:18px;width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--paper);z-index:25}.preview-bar{position:fixed;z-index:70;left:24px;bottom:24px;display:flex;gap:1px;background:var(--paper);color:var(--ink);box-shadow:0 4px 24px #0002;border:1px solid var(--line);border-radius:5px;overflow:hidden}.preview-bar a,.preview-bar button{background:none;border:0;color:inherit;display:flex;align-items:center;gap:8px;padding:11px 16px;min-height:46px;font-size:.75rem;text-decoration:none}.preview-bar button{border-left:1px solid var(--line)}.theme-dialog{border:1px solid var(--line);padding:25px;width:min(600px,calc(100vw - 28px));max-height:85svh;background:var(--paper);color:var(--ink)}.theme-dialog::backdrop{background:#17201ac;backdrop-filter:blur(5px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:25px}.dialog-head h2{font-size:2rem}.icon-btn{width:44px;height:44px;border:1px solid var(--line);background:transparent;display:grid;place-items:center}.theme-options{display:grid;grid-template-columns:1fr 1fr;gap:15px}.theme-option{display:flex;align-items:center;gap:12px;text-decoration:none;border:1px solid var(--line);padding:8px}.theme-option[aria-current=true]{border-color:var(--accent)}.theme-option img{width:53px;height:77px;object-fit:cover}.theme-option strong{display:block;font:1.3rem var(--serif);line-height:1.1}.theme-option small{display:block;font-size:.65rem;margin-top:6px;line-height:1.4}.swal2-popup{font-family:var(--sans)!important;background:var(--paper)!important;color:var(--ink)!important;border:1px solid var(--line)!important;border-radius:5px!important}.swal2-title{font-family:var(--serif)!important;font-size:2rem!important;font-weight:500!important}.swal2-html-container{font-size:.95rem!important}.swal2-confirm{background:var(--accent)!important;border-radius:3px!important;min-height:48px}.gift-account{border:1px solid var(--line);margin:12px 0;padding:20px;text-align:left}.gift-account b{display:block;font-size:1.2rem;margin:8px 0;overflow-wrap:anywhere}.gift-account p{font-size:.8rem}.gift-account button{margin-top:14px;width:100%}
/* Different compositions */
.botanical .cover-names{font-style:italic}.botanical .cover-inner{padding-top:105px}.botanical .person:nth-of-type(1){margin-left:0;margin-right:45px}.botanical .person:nth-of-type(2){margin-right:0;margin-left:45px}.botanical .portrait{height:180px;width:150px;border-radius:100px}.botanical .event{border-radius:130px 130px 8px 8px;padding-top:55px}.botanical .quote{font-size:1.8rem!important}.regal .opening,.regal .closing-section{background:var(--accent);color:var(--paper)}.regal .opening:before{opacity:.32}.regal .opening .eyebrow,.regal .opening .monogram{color:var(--paper)}.regal .opening .monogram{box-shadow:none;border-color:#fff5}.regal .opening .tiny-line{background:var(--paper)}.regal .cover-inner{padding-top:140px}.regal .event{border:1px solid var(--accent);outline:1px solid var(--line);outline-offset:5px;margin:28px 5px}.tapestry .cover-inner{padding-top:100px}.tapestry .cover-names{font-size:4.6rem}.tapestry .opening h1{text-align:left;font-size:4.6rem}.tapestry .opening{align-items:flex-start;text-align:left}.tapestry .opening .monogram{margin-left:10px}.tapestry .opening .quote{margin-left:0}.tapestry .couple-wrap{display:grid;grid-template-columns:1fr 1fr;gap:18px}.tapestry .couple-and{display:none}.tapestry .portrait{width:105px;height:125px;border-radius:0}.tapestry .person h3{font-size:2rem}.tapestry .event{text-align:left;border-left:5px solid var(--accent)}.tapestry .event-date{justify-content:flex-start}.tapestry .event>.iconify{margin-left:0}
@media(min-width:1500px){.invitation-shell,.cover{width:600px}.ambient{right:600px}.bottom-nav{right:65px;width:470px}.section{padding-left:55px;padding-right:55px}}
@media(max-width:1050px){.theme-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.ambient{right:50%}.invitation-shell,.cover{width:50%}.bottom-nav{width:calc(50vw - 30px);right:15px}.cover-inner{padding-inline:13%}.section{padding-inline:30px}}
@media(max-width:760px){.ambient{display:none}.invitation-shell,.cover{width:100%;max-width:600px;margin-inline:auto}.cover{left:0}.bottom-nav{width:calc(100% - 28px);max-width:460px;right:50%;transform:translateX(50%)}.cover-art{min-height:740px}.cover-inner{min-height:max(100svh,740px);padding-top:100px;padding-bottom:80px;padding-inline:18%}.cover-names{font-size:4.9rem}.section{padding:75px 32px}.opening{min-height:90svh;padding:95px 38px}.preview-bar{left:12px;bottom:auto;top:12px}.preview-bar a,.preview-bar button{padding:8px 12px;min-height:40px;font-size:.7rem}.closing-section{padding-bottom:140px}.music-button{bottom:92px}.catalog-header{padding:25px 6%}.edition{font-size:.625rem}.catalog{padding-inline:6%}.catalog-intro{padding-top:45px}.catalog-intro h1{font-size:3.4rem}.theme-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:35px 16px}.card-letter h2{font-size:2.7rem;margin:14px 0}.card-letter>span,.card-letter>small{font-size:7px;letter-spacing:1px}.card-details{align-items:flex-start}.card-details h3{font-size:1.5rem}.swatches{padding-top:6px;gap:3px}.swatches i{width:7px;height:7px}.card-description{font-size:.75rem}.card-open{transform:translateY(0);inset:auto 8px 8px;padding:9px;font-size:.7rem}.catalog-footer{padding:26px 6%}.catalog-footer p{max-width:160px;text-align:right;line-height:1.5}.regal .cover-inner{padding-top:125px}}
@media(max-width:390px){.catalog-intro h1{font-size:2.7rem}.catalog-intro .eyebrow{font-size:.65rem}.filters{gap:5px}.filters button{padding:9px 16px;font-size:.8rem}.theme-grid{gap:30px 12px}.card-letter h2{font-size:2.15rem}.card-details h3{font-size:1.3rem}.card-details{display:block}.swatches{padding-top:9px}.cover-inner{padding-inline:15%}.cover-names{font-size:4.4rem}.section{padding-inline:24px}.section h2{font-size:2.8rem}.theme-options{grid-template-columns:1fr}.radio-choice{font-size:.75rem}.event-date{gap:10px}.tapestry .person h3{font-size:1.65rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;animation-iteration-count:1!important}}
@media print{.ambient,.cover,.preview-bar,.bottom-nav,.music-button,.rsvp-form{display:none!important}.invitation-shell{width:100%;margin:0;box-shadow:none}.section{break-inside:avoid;padding:30px}.opening{min-height:0}.btn{display:none}.closing-section{padding-bottom:30px}}

h1,h2,h3{overflow-wrap:anywhere}
/* RuangJanji production adapter: no visual redesign; only safe runtime states. */
html{font-family:Arial,sans-serif}.invitation-shell[aria-busy="true"]{pointer-events:none}.event-list:empty,.timeline:empty{display:none}.gift-section[hidden],.story-section[hidden],.gallery-section[hidden]{display:none!important}.demo-note{display:none!important}
