@font-face{font-family:'Italiana';src:url('./Italiana.ttf') format('truetype');font-display:swap;font-weight:400}@font-face{font-family:'Study Sans';src:url('./DM-Sans.ttf') format('truetype');font-display:swap;font-weight:400}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--canvas);color:var(--ink);font:400 18px/1.55 'Study Sans',Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-underline-offset:5px;text-decoration-thickness:1px}a,button,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit}button,summary{cursor:pointer}img{display:block;width:100%;height:100%;object-fit:cover}figure{margin:0}figcaption,.small{font-size:14px;line-height:1.5}figcaption{padding-top:12px}p{margin:0 0 1.5em}h1,h2,h3{font-weight:400;margin:0;text-wrap:balance}h1,h2{font-family:var(--display),Georgia,serif;letter-spacing:-.045em;line-height:.98}h2{font-size:clamp(44px,5.3vw,80px)}h3{font-size:24px;line-height:1.2}h1{font-size:clamp(70px,8vw,132px)}h1>span{display:block}h1 .and{font-size:.45em;line-height:1.2;letter-spacing:0}nav a,.concept-bar a,.monogram{text-decoration:none}a:hover{text-decoration:underline}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid currentColor;outline-offset:5px}.skip{position:fixed;top:10px;left:10px;transform:translateY(-180%);z-index:20;background:var(--ink);color:var(--canvas);padding:14px}.skip:focus{transform:none}.concept-bar{display:flex;justify-content:space-between;padding:10px 4vw;font-size:14px;border-bottom:1px solid color-mix(in srgb,var(--ink) 20%,transparent)}header{display:flex;align-items:center;justify-content:space-between;padding:24px 4vw;gap:20px}.monogram{font-family:var(--display),serif;font-size:28px}.monogram span{opacity:.55}nav{display:flex;align-items:center;gap:38px;font-size:16px}nav a{display:flex;align-items:center;min-height:44px}.overline{font-size:14px;letter-spacing:.09em;text-transform:uppercase;display:block;line-height:1.6}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:36px;padding:16px 24px;background:var(--accent);color:var(--on-accent);border:1px solid var(--accent);text-decoration:none;font-size:16px;line-height:1.4;min-height:56px;transition:opacity .15s}.button:hover{opacity:.85;text-decoration:none}.hero{margin:0 4vw;position:relative}.hero-location{font-size:18px;max-width:25ch}.hero .button{margin-top:16px}.section{padding:110px 6vw;scroll-margin-top:16px}.story{display:grid;grid-template-columns:1fr 1.6fr;gap:8vw;margin-top:70px;border-top:1px solid color-mix(in srgb,var(--ink) 25%,transparent)}.story-label{display:flex;flex-direction:column;justify-content:space-between}.story-initials{font-family:var(--display);font-size:100px;letter-spacing:-.08em;line-height:1}.story-prose h2{max-width:16ch;margin-bottom:36px}.story-prose>p{max-width:47ch;font-size:20px}.text-link{display:inline-flex;align-items:center;gap:30px;min-height:44px;padding:8px 0;background:none;border:0;color:inherit;font-size:16px;text-decoration:underline}.day{display:grid;grid-template-columns:1fr 1.6fr;gap:8vw;background:var(--accent);color:var(--on-accent)}.day-heading h2{margin:30px 0}.day-heading p{max-width:28ch}.day-heading .small{opacity:.85}.schedule{list-style:none;padding:0;margin:0}.schedule li{display:grid;grid-template-columns:40px 1fr auto;gap:20px;padding:32px 0;border-top:1px solid color-mix(in srgb,currentColor 35%,transparent);align-items:start}.schedule li:last-child{border-bottom:1px solid color-mix(in srgb,currentColor 35%,transparent)}.schedule h3{font-family:var(--display);font-size:32px;margin:0 0 14px}.schedule p{font-size:16px;max-width:28ch;margin:0}.day-number,.day-time{font-size:14px;line-height:2;white-space:nowrap}.place{display:grid;grid-template-columns:1.35fr 1fr;gap:8vw;align-items:center}.place figure img{aspect-ratio:5/6;max-height:740px}.place-copy h2{margin:24px 0;font-size:clamp(40px,4vw,60px)}.place-type{min-height:530px;border:1px solid currentColor;padding:50px;display:flex;align-items:center;justify-content:center;position:relative}.place-type:before{content:'';inset:16px;border:1px solid currentColor;position:absolute}.place-type span{font:400 clamp(48px,6vw,80px)/1 var(--display);text-align:center;max-width:9ch}.guest-notes{margin-top:40px}details{border-top:1px solid color-mix(in srgb,var(--ink) 30%,transparent);padding:16px 0}summary{min-height:44px;padding:8px 0;font-size:16px}details p{font-size:16px;margin:12px 0 4px}.response{display:grid;grid-template-columns:1fr 1.4fr;gap:10vw;border-top:1px solid color-mix(in srgb,var(--ink) 30%,transparent)}.response h2{margin:24px 0 30px}.response-intro p{max-width:28ch}.demo-note{font-size:16px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:24px}label{font-size:16px;display:block;margin-bottom:28px}label span{font-size:14px}input,select,textarea{display:block;width:100%;background:transparent;color:var(--ink);border:0;border-bottom:1px solid var(--ink);border-radius:0;padding:16px 0;font-size:16px}select option{background:var(--canvas);color:var(--ink)}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:var(--ink);opacity:.65}form>.button{width:100%;margin-top:12px}#reply-preview{border:1px solid var(--ink);padding:24px;margin-top:24px;font-size:18px;overflow-wrap:anywhere}#reset-reply{margin-top:10px}[hidden]{display:none!important}footer{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;padding:60px 6vw;background:var(--ink);color:var(--canvas);align-items:center;font-size:16px}.footer-names{font:400 44px/1.1 var(--display);margin:0}.footer-note{grid-column:1/-1;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);padding-top:24px;font-size:14px;max-width:none;margin:0}.paper-art{display:flex;align-items:center;justify-content:center;flex-direction:column;min-height:480px;font:400 150px/.9 var(--display);position:relative}.art-rule{width:2px;height:100px;background:currentColor;transform:rotate(35deg);margin:20px}.paper-art:before{content:'';position:absolute;inset:8%;border:1px solid currentColor;border-radius:50%}.hero figure{overflow:hidden}.hero-photo{object-position:50% 35%}
/* Twelve compositional families: each changes first sight, reading order and physical form. */
.split .hero{display:grid;grid-template-columns:1fr 1fr;min-height:730px}.split .hero-copy{padding:75px 6vw 50px 2vw;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}.split h1{margin:40px 0}.split .hero-visual{position:relative}.split .hero-visual img{height:730px}.split .hero-visual figcaption{position:absolute;bottom:0;left:0;background:var(--canvas);padding:14px 22px}.poster .hero{padding-top:20px}.poster-top{display:flex;justify-content:space-between;border-top:2px solid;padding-top:20px;font-size:16px}.poster h1{font-size:clamp(90px,14vw,210px);display:flex;align-items:baseline;justify-content:space-between;padding:40px 0;gap:20px;letter-spacing:-.07em}.poster h1 .and{color:var(--accent);font-size:.6em}.poster-bottom{display:grid;grid-template-columns:1fr 1fr 2fr;gap:4vw;align-items:start}.poster-bottom p{font-size:30px;max-width:12ch;line-height:1.15}.poster-bottom figure{height:360px}.poster-bottom .button{margin:0}.invitation .hero{padding:28px 9vw 60px}.invitation-border{text-align:center;position:relative;border:1px solid;padding:64px 30px;outline:1px solid;outline-offset:10px}.invitation h1{display:flex;justify-content:center;align-items:center;gap:26px;font-size:clamp(60px,7.5vw,118px);margin:50px 0}.invitation-date p{margin:10px 0 20px}.edge-word{font-size:14px;writing-mode:vertical-rl;position:absolute;right:3vw;top:70px;letter-spacing:.15em;text-transform:uppercase}.arch .hero{display:grid;grid-template-columns:.8fr 1.5fr .45fr;gap:4vw;align-items:center;padding-top:28px}.arch-caption p{font:400 46px/1.05 var(--display);margin:40px 0;max-width:10ch}.arch-window{border:1px solid currentColor;border-radius:48% 48% 0 0;min-height:650px;padding:70px 20px 20px;overflow:hidden;text-align:center;position:relative}.arch-window h1{font-size:clamp(64px,7vw,110px);position:relative;z-index:2}.arch-window .hero-photo{position:absolute;inset:0;opacity:.2;filter:grayscale(1);z-index:0}.arch-window .paper-art{min-height:180px;font-size:60px;opacity:.45;flex-direction:row;gap:25px}.arch-window .paper-art:before{display:none}.arch-window .art-rule{height:65px}.arch-place{writing-mode:vertical-rl;font-size:18px;justify-self:center}.ticket .hero{display:grid;grid-template-columns:2fr 1fr;gap:0;border:1px solid var(--ink);margin-top:25px}.ticket-main{padding:55px 5vw}.ticket-main h1{display:flex;gap:20px;align-items:baseline;font-size:clamp(56px,6vw,100px);margin:40px 0}.ticket-main p:not(.overline){max-width:26ch}.ticket-stub{border-left:1px dashed;padding:50px 4vw;display:flex;flex-direction:column;justify-content:space-between;gap:20px}.ticket-initials{font:400 100px/1 var(--display);letter-spacing:-.08em}.ticket-line{height:8px;background:repeating-linear-gradient(90deg,currentColor 0 1px,transparent 1px 6px)}.ticket-stub p{font-size:16px;margin:0}.ticket-photo{grid-column:1/-1;max-height:360px;border-top:1px solid}.ticket-photo img{height:360px;object-position:50% 40%}.column .hero{display:grid;grid-template-columns:.55fr 1.2fr 1fr;gap:4vw;padding-top:35px;align-items:center}.column-date{display:flex;flex-direction:column;gap:80px;border-top:1px solid;padding-top:24px;font-size:16px;align-self:stretch}.column-center h1{margin-bottom:36px}.column-center>p{max-width:20ch}.column-photo{height:650px}.column-photo .paper-art{height:100%;background:var(--accent);color:var(--on-accent)}.frame .hero{display:grid;grid-template-columns:1.3fr 1fr;border:1px solid;margin-top:25px;min-height:690px}.frame-inner{padding:64px 30px;text-align:center;outline:1px solid;outline-offset:-15px;display:flex;align-items:center;flex-direction:column;justify-content:center}.frame-inner h1{margin:35px 0;font-size:clamp(64px,6.8vw,110px)}.frame-inner .button{margin-top:30px}.frame-photo img{height:690px}.frame-flower{background:var(--accent);color:var(--on-accent);font:400 400px/1 Georgia;display:flex;align-items:center;justify-content:center;overflow:hidden}.asymmetric .hero{display:grid;grid-template-columns:1.1fr 1fr;gap:3vw 8vw;padding:40px 3vw}.asym-title{grid-column:1;grid-row:1}.asym-title h1{font-size:clamp(60px,7.8vw,125px);margin-top:38px}.asym-photo{grid-column:2;grid-row:1/3;height:620px;margin-top:75px}.asym-note{grid-column:1;max-width:32ch}.asym-note>p:first-child{font:400 34px/1.1 var(--display)}.asym-photo .paper-art{height:100%;background:var(--accent);color:var(--on-accent)}.masthead-top{display:flex;justify-content:space-between;font-size:14px;border-top:1px solid;padding:14px 0}.masthead h1{display:flex;align-items:center;justify-content:center;gap:28px;font-size:clamp(70px,10vw,154px);border-block:3px double;padding:36px 0}.masthead-content{display:grid;grid-template-columns:1fr 1.7fr 1fr;gap:32px;padding-top:32px}.masthead-content h2{font-size:42px;margin-bottom:24px;line-height:1.05}.masthead-content p{font-size:16px}.masthead-content figure{height:440px}.masthead-content aside{padding-left:24px;border-left:1px solid}.masthead-content aside .overline{margin-bottom:24px}.masthead-content aside a{font-size:16px}.gallery-heading{display:flex;align-items:end;justify-content:space-between;gap:4vw;margin:24px 0 50px}.gallery-heading h1{font-size:clamp(64px,7.5vw,115px)}.gallery-heading h1 .and{display:inline-block;font-size:.6em}.gallery-heading>div{max-width:28ch}.gallery-heading p{margin:15px 0}.gallery-cover{display:grid;grid-template-columns:1.6fr 1fr;gap:6vw}.gallery-cover figure img{height:530px}.gallery-cover>div{display:flex;flex-direction:column;justify-content:space-between;padding:28px 0}.gallery-cover>div>p{font:400 48px/1.1 var(--display);max-width:12ch}.gallery-mark{font:400 180px/1 var(--display);letter-spacing:-.08em;color:var(--accent)}.horizon .hero{text-align:center}.horizon-heading{padding:44px 0 50px}.horizon h1{display:flex;justify-content:center;gap:30px;align-items:baseline;font-size:clamp(68px,9vw,140px);margin:24px 0}.horizon-heading p{margin:0}.horizon-photo{position:relative;height:520px}.horizon-photo img{object-position:50% 40%}.horizon-photo figcaption{position:absolute;bottom:0;left:0;background:var(--canvas);font:400 30px/1.2 var(--display);padding:25px 30px;max-width:23ch;text-align:left}.banner-top{display:flex;align-items:center;justify-content:space-between;gap:4vw;padding:20px 0}.banner-top p{max-width:18ch;font-size:20px;line-height:1.2;margin:0}.banner h1{display:flex;justify-content:space-between;gap:20px;align-items:baseline;font-size:clamp(70px,11vw,175px);padding:32px 0 45px;border-top:1px solid}.banner h1 .and{font-size:.55em}.banner-photo{height:490px}.banner-place{padding:18px 0;font-size:16px;text-align:right}
/* Lower-page rhythm follows the invitation's physical language. */
.program .story{grid-template-columns:.6fr 1.8fr}.program .story-prose{display:grid;grid-template-columns:1fr 1fr;gap:30px}.program .story-prose h2{font-size:60px;grid-row:1/3}.program .story-prose>p{font-size:18px}.program .day{grid-template-columns:1fr}.program .day-heading{display:flex;align-items:end;justify-content:space-between;gap:30px}.program .day-heading h2{margin:0}.program .day-heading .overline{display:none}.program .schedule li{grid-template-columns:80px 1fr 180px}.program .schedule li>div{display:grid;grid-template-columns:1fr 1fr;gap:40px}.program .schedule h3{margin:0}.stationery .story{grid-template-columns:1fr;text-align:center;gap:32px}.stationery .story-label{align-items:center}.stationery .story-initials{display:none}.stationery .story-prose h2{margin:0 auto 32px;max-width:17ch}.stationery .story-prose>p{margin:0 auto 24px;max-width:48ch}.stationery .day{margin:0 4vw;padding:75px 5vw}.stationery .place-type{border-radius:48% 48% 0 0}.stationery .place-type:before{border-radius:48% 48% 0 0}.concept-priya-nate-wedding .poster h1{letter-spacing:-.08em}.concept-priya-nate-wedding .hero-photo{filter:grayscale(1)}.concept-amara-kai-wedding .poster-bottom figure{transform:translateY(-5px)}.concept-pia-david-wedding img{filter:grayscale(1)}.concept-lachlan-helena-wedding .invitation-border{border-width:3px}.concept-lachlan-helena-wedding .invitation-border:before,.concept-lachlan-helena-wedding .invitation-border:after{content:'';position:absolute;inset:20px;border:1px solid;pointer-events:none}.concept-lachlan-helena-wedding .invitation-border:after{inset:30px}.concept-noir-romance-wedding .invitation-border{border-block:1px solid;border-inline:0;outline:none}.concept-noir-romance-wedding h1{flex-direction:column;gap:10px;font-size:130px}.concept-gilded-restrained .invitation-border{border-radius:48% 48% 0 0;outline:none;padding-top:110px}.concept-gilded-restrained h1{display:block;margin:26px 0;font-size:94px}.concept-amalfi-coast .arch-window{background:var(--accent);color:var(--on-accent)}.concept-hana-kieran-wedding .column-photo{border-radius:50% 50% 0 0}.concept-ruby-fletcher-wedding .ticket-main{background:var(--accent);color:var(--on-accent)}.concept-ruby-fletcher-wedding .ticket-main .button{border-color:currentColor}.concept-wabi-kintsugi .paper-art .art-rule{width:3px;clip-path:polygon(0 0,100% 0,60% 40%,100% 100%,0 100%,30% 45%);height:170px}.concept-ivory-tide-wedding .paper-art:before{border-radius:0}.concept-champagne-meridian-wedding .ticket-initials{border-bottom:1px solid;padding-bottom:40px}
@media(min-width:1700px){body{max-width:1800px;margin:auto}.hero{margin-inline:70px}.section{padding-inline:110px}}
@media(max-width:1000px){h1{font-size:78px}.section{padding:80px 5vw;gap:5vw}.hero{margin:0 5vw}.split .hero{min-height:620px}.split .hero-visual img{height:620px}.split .hero-copy{padding:40px 4vw 40px 0}.poster h1,.banner h1{font-size:12vw}.invitation h1{font-size:64px}.arch .hero{grid-template-columns:.7fr 1.3fr}.arch-place{writing-mode:horizontal-tb;grid-column:1/-1}.arch-window{min-height:600px}.ticket-main h1{display:block;font-size:76px}.column .hero{grid-template-columns:1fr 1fr}.column-date{grid-column:1/-1;flex-direction:row;justify-content:space-between;gap:20px}.column-photo{height:600px}.masthead-content{grid-template-columns:1fr 1.4fr}.masthead-content aside{grid-column:1/-1;border-left:0;border-top:1px solid;padding:24px 0;display:grid;grid-template-columns:1fr 2fr;gap:20px}.masthead-content aside a{grid-column:2}.gallery-heading h1{font-size:72px}.frame-inner h1{font-size:70px}.frame .hero{grid-template-columns:1.2fr 1fr;min-height:620px}.frame-photo img{height:620px}.asym-title h1{font-size:84px}.program .story-prose{display:block}.program .story-prose h2{margin-bottom:30px}.form-row{grid-template-columns:1fr;gap:0}.schedule li{grid-template-columns:25px 1fr;gap:10px}.day-time{grid-column:2}.place-type{padding:30px}.horizon h1{font-size:9vw}.program .day-heading{align-items:start}.program .day-heading .small{max-width:16ch}}
@media(max-width:600px){body{font-size:17px}.concept-bar{padding:10px 20px;font-size:12px}.concept-bar>span{display:none}header{padding:14px 20px;gap:12px}.monogram{font-size:24px}nav{gap:16px;font-size:14px}nav a{min-height:44px}nav a:first-child{display:none}.hero{margin:0 20px}.overline{font-size:13px;letter-spacing:.07em}.button{min-height:54px;padding:15px 20px;gap:30px;font-size:16px}h1{font-size:72px}h2{font-size:48px}.section{padding:64px 24px;gap:32px}.story{margin-top:50px;grid-template-columns:1fr}.story-label{flex-direction:row;align-items:center}.story-initials{font-size:44px}.story-prose h2{margin-bottom:28px}.story-prose>p{font-size:18px}.day{grid-template-columns:1fr;gap:20px}.day-heading h2{margin:24px 0}.day-heading h2 br{display:none}.day-heading p{max-width:none;margin-bottom:14px}.schedule li{padding:25px 0;grid-template-columns:28px 1fr}.schedule h3{font-size:28px}.day-time{grid-column:2;font-size:14px}.place{grid-template-columns:1fr;gap:34px}.place figure img{aspect-ratio:6/5}.place-copy h2{font-size:44px}.place-type{min-height:330px}.place-type span{font-size:58px}.response{grid-template-columns:1fr;gap:22px}.response h2 br{display:none}.response-intro p{max-width:34ch}.response h2{font-size:54px;margin:20px 0}.form-row{display:block}footer{padding:45px 24px;grid-template-columns:1fr;gap:28px}.footer-names{font-size:48px}.footer-note{font-size:14px}figcaption{font-size:13px}.split .hero{display:flex;flex-direction:column;min-height:0}.split .hero-copy{padding:30px 4px 38px}.split h1{margin:24px 0;font-size:76px;display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}.split h1>span{display:inline}.split h1 .and{font-size:.65em}.split .hero-location{max-width:30ch;margin-bottom:0}.split .hero-visual img{height:460px}.split .hero-visual figcaption{padding:12px 16px}.poster-top{display:block;padding-top:16px}.poster-top>span:last-child{display:block;margin-top:8px;font-size:14px}.poster h1{font-size:78px;display:block;padding:25px 0;line-height:.9}.poster h1>span{display:inline}.poster h1 .and{font-size:.8em;margin-inline:10px}.poster-bottom{display:flex;flex-direction:column;gap:24px}.poster-bottom p{font-size:26px;max-width:24ch;margin:0}.poster-bottom figure{height:350px;width:100%}.invitation .hero{padding:20px 12px 30px}.invitation-border{padding:40px 15px;outline-offset:7px}.invitation h1{display:block;font-size:66px;margin:24px 0}.invitation h1 .and{font-size:.5em;margin:12px 0}.invitation-date p{font-size:16px;margin:14px 0}.edge-word{display:none}.arch .hero{display:flex;flex-direction:column;padding-top:22px;gap:24px}.arch-caption{width:100%;display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between}.arch-caption p{font-size:30px;max-width:11ch;margin:0}.arch-caption .overline{width:100%}.arch-caption .button{margin:0;gap:20px}.arch-window{width:100%;min-height:520px;padding:70px 15px 20px}.arch-window h1{font-size:76px}.arch-window .paper-art{min-height:140px}.arch-place{font-size:16px;margin:0}.ticket .hero{grid-template-columns:1fr;margin-top:14px}.ticket-main{padding:32px 24px}.ticket-main h1{font-size:68px;margin:22px 0}.ticket-main h1 .and{display:inline;font-size:.6em}.ticket-main h1>span{display:inline}.ticket-main h1 span:last-child{display:block}.ticket-main p{font-size:18px;margin-bottom:12px}.ticket-stub{border-left:0;border-top:1px dashed;padding:24px;display:grid;grid-template-columns:1fr 1fr;gap:20px;font-size:14px}.ticket-initials{font-size:64px;grid-row:1/3}.ticket-stub .overline{font-size:14px}.ticket-stub>p:last-child{display:none}.ticket-line{grid-column:1/-1}.ticket-photo,.ticket-photo img{max-height:340px;height:340px}.column .hero{display:flex;flex-direction:column;align-items:stretch;gap:30px;padding-top:18px}.column-date{gap:15px;font-size:14px}.column-date>*{max-width:48%}.column-center h1{font-size:78px;margin:0 0 24px;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.column-center h1>span{display:inline}.column-center h1 .and{font-size:.6em}.column-center>p{max-width:28ch;margin-bottom:12px}.column-photo{height:420px}.frame .hero{display:flex;flex-direction:column;margin-top:15px;min-height:0}.frame-inner{padding:42px 24px}.frame-inner h1{font-size:72px;margin:24px 0}.frame-inner .button{margin-top:22px}.frame-inner>.overline:first-child{font-size:13px;max-width:24ch}.frame-photo img{height:420px}.frame-flower{height:290px;font-size:260px}.asymmetric .hero{display:flex;flex-direction:column;gap:24px;padding:20px 4px}.asym-title h1{font-size:72px;margin-top:24px}.asym-title h1>span{display:inline}.asym-title h1 .and{font-size:.7em;margin:0 8px}.asym-title h1>span:last-child{display:block}.asym-note{order:2;max-width:none}.asym-note>p:first-child{font-size:28px;margin-bottom:16px}.asym-note .hero-location{font-size:16px;margin:0}.asym-photo{order:3;height:440px;margin:0;width:100%}.masthead-top{display:flex;flex-wrap:wrap;gap:10px;font-size:12px}.masthead-top>span:last-child{width:100%;font-size:14px}.masthead h1{display:block;font-size:70px;padding:25px 0;line-height:1}.masthead h1>span{display:inline}.masthead h1 .and{font-size:.6em;margin:0 10px}.masthead-content{display:flex;flex-direction:column;padding-top:26px;gap:25px}.masthead-content h2{font-size:38px;max-width:14ch;margin-bottom:16px}.masthead-content>div>p{display:none}.masthead-content figure{height:420px}.masthead-content aside{display:none}.gallery-heading{display:block;margin:20px 0 32px}.gallery-heading h1{font-size:66px;margin-bottom:24px}.gallery-heading h1>span{display:inline}.gallery-heading h1 .and{margin:0 10px}.gallery-heading h1>span:last-child{display:block}.gallery-heading>div{max-width:none}.gallery-heading p{font-size:16px}.gallery-heading .button{margin-top:6px}.gallery-cover{grid-template-columns:1fr;gap:24px}.gallery-cover figure img{height:420px}.gallery-cover>div{padding:0;flex-direction:row;gap:20px;align-items:center}.gallery-cover>div>p{font-size:28px;max-width:14ch;margin:0}.gallery-mark{font-size:80px}.horizon-heading{padding:25px 0 35px}.horizon h1{display:block;font-size:72px;line-height:1.02;margin:22px 0}.horizon h1>span{display:inline}.horizon h1 .and{font-size:.6em;margin:0 10px}.horizon h1>span:last-child{display:block}.horizon-heading p{font-size:16px}.horizon-photo{height:450px}.horizon-photo figcaption{font-size:26px;padding:20px 22px;max-width:18ch}.banner-top{flex-wrap:wrap;gap:16px;padding:20px 0}.banner-top p{font-size:18px;max-width:14ch}.banner-top .overline{max-width:15ch;text-align:right}.banner-top .button{margin:0}.banner h1{display:block;font-size:70px;line-height:1;padding:24px 0}.banner h1>span{display:inline}.banner h1 .and{font-size:.6em;margin:0 8px}.banner h1>span:last-child{display:block}.banner-photo{height:420px}.banner-place{font-size:14px}.program .story{grid-template-columns:1fr}.program .story-prose h2{font-size:48px}.program .day-heading{display:block}.program .day-heading h2{margin-bottom:26px}.program .day-heading .small{max-width:none}.program .schedule li{grid-template-columns:28px 1fr}.program .schedule li>div{display:block}.program .schedule h3{margin-bottom:12px}.program .day-time{grid-column:2}.stationery .day{margin:0 20px;padding:45px 24px}.stationery .story{padding-inline:24px}.concept-noir-romance-wedding h1{font-size:92px}.concept-gilded-restrained .invitation-border{padding-top:70px}.concept-gilded-restrained h1{font-size:62px}.concept-lachlan-helena-wedding .invitation-border:before{inset:8px}.concept-lachlan-helena-wedding .invitation-border:after{inset:14px}.concept-lachlan-helena-wedding .invitation-border{padding-inline:24px}.concept-lachlan-helena-wedding h1{font-size:58px}.concept-champagne-meridian-wedding .ticket-initials{border-bottom:0;padding-bottom:0}}
@media(max-width:360px){nav{gap:12px}h1,.split h1,.column-center h1,.asym-title h1,.poster h1,.banner h1,.masthead h1,.horizon h1{font-size:60px}.gallery-heading h1,.ticket-main h1,.frame-inner h1{font-size:58px}.invitation h1,.concept-gilded-restrained h1{font-size:50px}.concept-lachlan-helena-wedding h1{font-size:47px}.arch-caption{display:block}.arch-caption p{font-size:28px;max-width:none;margin:16px 0}.arch-window h1{font-size:64px}.hero{margin-inline:16px}.column-date{font-size:13px}.poster-bottom p{font-size:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
@media print{.concept-bar,nav,form,.button{display:none}.section{padding:30px}.hero-photo{max-height:500px}.day,footer{background:white;color:black}}
/* Long names wrap as deliberate two-line posters on narrow screens. */
@media(max-width:600px){.poster h1>span:last-child{display:block}.poster h1 .and{margin-right:0}.concept-jayson-kathryn-wedding.split h1{font-size:66px}.concept-vivienne-declan-wedding.split h1{font-size:66px}}
@media(max-width:360px){.concept-jayson-kathryn-wedding.split h1,.concept-vivienne-declan-wedding.split h1{font-size:56px}.gallery-heading h1{font-size:56px}}
/* The body follows the invitation format, rather than repeating one card system. */
.place.without-photo{display:block;padding-block:75px}.without-photo .place-copy{display:grid;grid-template-columns:1.2fr 1fr;gap:20px 7vw;align-items:start}.without-photo .place-copy>.overline{grid-column:1/-1}.without-photo .place-copy h2{grid-column:1;grid-row:2/5;margin:0;max-width:16ch}.without-photo .guest-notes{grid-column:1/-1;margin-top:20px;display:grid;grid-template-columns:1fr 1fr;gap:50px}.without-photo .place-copy>p{margin:0}.attire strong{font-weight:400;font-size:14px;text-transform:uppercase;letter-spacing:.06em}.attire{font-size:22px}.program .day{background:var(--canvas);color:var(--ink);border-block:2px solid;margin:0 4vw;padding:60px 0}.program .day-heading h2{font-size:clamp(58px,7vw,100px)}.program .day-time{font:400 36px/1 var(--display);text-align:right}.program .response{background:var(--accent);color:var(--on-accent)}.program input,.program select,.program textarea{color:var(--on-accent);border-color:currentColor}.program input::placeholder,.program textarea::placeholder{color:var(--on-accent)}.program form>.button{background:var(--on-accent);color:var(--accent)}.program #reply-preview{border-color:currentColor}.stationery .day{display:block;text-align:center;border:1px solid var(--ink);background:var(--canvas);color:var(--ink)}.stationery .day-heading h2{font-size:62px}.stationery .day-heading p{max-width:none}.stationery .schedule{display:flex;justify-content:space-between;gap:36px;text-align:left;margin-top:55px}.stationery .schedule li{display:flex;flex-direction:column;gap:16px;flex:1;border-top:1px solid;padding:25px 0 0}.stationery .schedule li:last-child{border-bottom:0}.stationery .schedule .day-time{order:-1;font:400 28px/1 var(--display)}.stationery .schedule .day-number{display:none}.stationery .response{margin:0 4vw 70px;border:1px solid;padding:65px 5vw}.stationery footer{background:var(--accent);color:var(--on-accent)}.ticket .story{grid-template-columns:1fr 2fr;border-top-style:dashed}.ticket .day{margin-inline:4vw;border-radius:0}.ticket .day-heading h2{font-size:70px}.column .story{padding-top:70px}.column .story-prose h2{max-width:14ch}.horizon .place{grid-template-columns:1fr;gap:50px}.horizon .place figure img{aspect-ratio:2.2/1;max-height:550px}.horizon .place-copy{display:grid;grid-template-columns:1fr 1fr;gap:15px 70px}.horizon .place-copy>h2{grid-column:1;grid-row:2/5;margin:0}.horizon .place-copy>.overline{grid-column:1/-1}.horizon .guest-notes{margin:20px 0 0;grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:70px}.gallery .story{background:var(--ink);color:var(--canvas);margin-top:80px;border:0}.gallery .story-initials{display:none}.asymmetric .day-heading h2{font-size:76px}.frame .response-intro{border-right:1px solid;padding-right:40px}
@media(max-width:600px){.without-photo .place-copy{display:block}.without-photo .place-copy h2{margin:24px 0}.without-photo .place-copy>p{margin-bottom:20px}.without-photo .guest-notes{display:block}.place.without-photo{padding:50px 24px}.program .day{padding:45px 4px;margin-inline:20px}.program .day-time{font-size:26px;text-align:left}.program .schedule li{gap:16px}.stationery .day{padding:42px 24px}.stationery .day-heading h2{font-size:48px}.stationery .schedule{display:block;margin-top:30px}.stationery .schedule li{display:grid;grid-template-columns:1fr;gap:18px;padding:24px 0}.stationery .schedule .day-time{grid-column:1;font-size:26px}.stationery .response{margin:0 20px 45px;padding:40px 24px}.ticket .story{grid-template-columns:1fr}.ticket .day{margin:0 20px;padding:40px 24px}.ticket .day-heading h2{font-size:48px}.horizon .place figure img{aspect-ratio:6/5}.horizon .place-copy{display:block}.horizon .place-copy>h2{margin:24px 0}.horizon .guest-notes{display:block}.gallery .story{margin-top:50px}.asymmetric .day-heading h2{font-size:48px}.frame .response-intro{padding:0;border:0}}
@media(max-width:600px){.concept-noir-romance-wedding .invitation-border{padding-top:24px;padding-bottom:30px}.concept-noir-romance-wedding h1{font-size:76px;margin:20px 0}.ticket-main h1 .and{margin-inline:8px}}
@media(max-width:600px){.column-photo .paper-art,.asym-photo .paper-art{min-height:0;font-size:120px}.column-photo .paper-art .art-rule,.asym-photo .paper-art .art-rule{height:85px;margin:12px}}

/* Generated architecture scenes sit below the names so the invitation stays legible. */
.has-generated-hero.arch .arch-window{padding:65px 0 0;display:flex;flex-direction:column;min-height:650px}
.has-generated-hero.arch .arch-window h1{padding:0 24px;margin-bottom:35px}
.has-generated-hero.arch .arch-window .hero-photo{position:static;opacity:1;filter:none;height:360px;flex:1;min-height:320px;object-position:50% 55%}
@media(max-width:600px){.has-generated-hero.arch .arch-window{padding-top:55px;min-height:0}.has-generated-hero.arch .arch-window .hero-photo{height:320px;min-height:320px;flex:none}}
