@layer ds.reset{*,:before,:after{box-sizing:border-box}html{text-size-adjust:none}body,h1,h2,h3,p,figure,blockquote,dl,dd{margin:0}body{min-block-size:100dvh}img,picture{max-inline-size:100%;display:block}button,input,textarea,select{font:inherit}a{color:inherit}ul[role=list],ol[role=list]{margin:0;padding:0;list-style:none}}@layer ds.vendor;@layer ds.tokens{:root{--ds-space-unit:.5rem;--ds-space-05:calc(var(--ds-space-unit) * .5);--ds-space-10:var(--ds-space-unit);--ds-space-15:calc(var(--ds-space-unit) * 1.5);--ds-space-20:calc(var(--ds-space-unit) * 2);--ds-space-30:calc(var(--ds-space-unit) * 3);--ds-space-40:calc(var(--ds-space-unit) * 4);--ds-space-60:calc(var(--ds-space-unit) * 6);--ds-space-80:calc(var(--ds-space-unit) * 8);--ds-space-120:calc(var(--ds-space-unit) * 12);--ds-size-content:90rem;--ds-size-hit-min:2.75rem;--ds-radius-sm:.25rem;--ds-radius-md:.75rem;--ds-radius-lg:1.25rem;--ds-color-surface:#f1efe6;--ds-color-surface-raised:#f7f5ed;--ds-color-text:#171817;--ds-color-text-muted:#555751;--ds-color-border:#9b9d96;--ds-color-accent:#0047d8;--ds-color-on-accent:#fffdf5;--ds-font-body:"Helvetica Neue", "Arial Nova", helvetica, arial, sans-serif;--ds-font-display:"Arial Narrow", "Helvetica Neue", "Arial Nova", helvetica, arial, sans-serif;--ds-text-xs:.75rem;--ds-text-sm:.875rem;--ds-text-md:1rem;--ds-text-lg:clamp(1.125rem, 1rem + .35vw, 1.375rem);--ds-text-xl:clamp(1.75rem, 1.2rem + 1.6vw, 3rem);--ds-text-display:clamp(3rem, 2rem + 5vw, 7.5rem);--ds-leading-tight:.94;--ds-leading-body:1.55;--ds-shadow-raised:0 1.5rem 4rem color-mix(in srgb, var(--ds-color-text) 10%, transparent);--ds-motion-fast:.14s;--ds-motion-medium:.36s;--ds-motion-ease:cubic-bezier(.16, 1, .3, 1);--ds-focus-width:.1875rem;--ds-focus-offset:.1875rem;--ds-z-skip-link:10;color-scheme:light;--ds-font-mono:"SFMono-Regular", consolas, "Liberation Mono", monospace;--ds-wedding-rule:color-mix(in srgb, var(--ds-color-text) 54%, transparent);--ds-wedding-ink:#11120f;--ds-wedding-tobacco:#8b5a36;--ds-wedding-butter:#e5ce7c;--ds-wedding-sea:#95aaa0;--ds-wedding-glass-mask-opaque:#000;--ds-wedding-header-height:4rem;--ds-wedding-header-fade:2.5rem}}@layer ds.base{html{color-scheme:light dark;background:var(--ds-color-surface);font-family:var(--ds-font-body)}body{background:var(--ds-color-surface);color:var(--ds-color-text);font-size:var(--ds-text-md);line-height:var(--ds-leading-body);text-rendering:optimizelegibility}:where(h1,h2,h3,h4,h5,h6){text-wrap:balance}:where(p,li,dd,figcaption){text-wrap:pretty}:where(a,button,input,select,textarea):focus-visible{outline:var(--ds-focus-width) solid var(--ds-color-accent);outline-offset:var(--ds-focus-offset)}::selection{background:var(--ds-color-accent);color:var(--ds-color-on-accent)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}}@layer ds.primitives{.l-container{inline-size:min(100% - (var(--ds-space-20) * 2), var(--ds-size-content));margin-inline:auto}.l-stack{gap:var(--ds-space-20);display:grid}.l-cluster{gap:var(--ds-space-10);flex-wrap:wrap;align-items:center;display:flex}.u-visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;padding:0;position:absolute;overflow:hidden}}@layer ds.components;@layer ds.project{:root{background:var(--ds-color-surface)}html{scroll-padding-block-start:calc(var(--ds-wedding-header-height) + 1rem)}body{min-inline-size:20rem;overflow-x:clip}a{color:inherit}.skip-link{z-index:20;min-block-size:var(--ds-size-hit-min);padding:var(--ds-space-10) var(--ds-space-20);background:var(--ds-color-text);color:var(--ds-color-on-accent);font-family:var(--ds-font-mono);font-size:var(--ds-text-xs);text-transform:uppercase;align-items:center;display:inline-flex;position:fixed;inset-block-start:var(--ds-space-10);inset-inline-start:var(--ds-space-10);translate:0 -200%}.skip-link:focus{translate:0}.site-header{z-index:10;min-block-size:var(--ds-wedding-header-height);background:linear-gradient(110deg, color-mix(in srgb, var(--ds-color-surface-raised) 72%, transparent), color-mix(in srgb, var(--ds-color-surface) 46%, transparent));position:fixed;inset-block-start:0;inset-inline:0;translate:0}.site-header:before{content:"";z-index:0;inset-inline:0;inset-block:0 calc(var(--ds-wedding-header-fade) * -1);pointer-events:none;background:linear-gradient(to bottom, color-mix(in srgb, var(--ds-color-surface-raised) 34%, transparent) 0%, color-mix(in srgb, var(--ds-color-surface-raised) 20%, transparent) 56%, color-mix(in srgb, var(--ds-color-surface-raised) 8%, transparent) 79%, transparent 100%);backdrop-filter:blur(.75rem);mask-image:linear-gradient(to bottom, var(--ds-wedding-glass-mask-opaque) 0%, var(--ds-wedding-glass-mask-opaque) 52%, transparent 100%);position:absolute}.site-header[data-scroll-hidden]{translate:0 calc(-100% - var(--ds-wedding-header-fade) - 1px)}.site-header:focus-within{transition:none;translate:0}.site-header-inner{z-index:1;min-block-size:var(--ds-wedding-header-height);align-items:center;gap:0 var(--ds-space-20);grid-template-columns:auto 1fr;display:grid;position:relative}.wordmark,.header-date,.site-nav,.hero-kicker,.hero-label,.section-index,.schedule-code,.site-footer{font-family:var(--ds-font-mono);font-size:var(--ds-text-xs);letter-spacing:.08em;text-transform:uppercase;line-height:1.2}.wordmark{min-inline-size:var(--ds-size-hit-min);min-block-size:var(--ds-size-hit-min);color:var(--ds-color-accent);justify-content:center;align-items:center;gap:.45rem;font-weight:700;text-decoration:none;display:inline-flex}.header-date{color:var(--ds-color-text-muted);justify-self:end;margin:0}.site-nav{border-block-start:1px solid var(--ds-wedding-rule);grid-column:1/-1;grid-template-columns:repeat(3,1fr);display:grid}.site-nav a{min-block-size:var(--ds-size-hit-min);padding-inline:var(--ds-space-10);color:var(--ds-color-text);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.site-nav a+a{border-inline-start:1px solid var(--ds-wedding-rule)}.site-nav a:hover{background:var(--ds-color-accent);color:var(--ds-color-on-accent)}.hero{min-block-size:100svh;padding-block:calc(var(--ds-wedding-header-height) + 2rem) clamp(2rem, 4vw, 4rem);border-block-end:1px solid var(--ds-wedding-rule);grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.hero-kicker{border-block-end:1px solid var(--ds-wedding-rule);color:var(--ds-color-text-muted);grid-column:1/-1;justify-content:space-between;padding-block-end:var(--ds-space-10);display:flex}.hero-date{grid-area:2/1/auto/7;grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr) auto;align-items:center;margin-block-start:clamp(1rem,3vw,2rem);display:grid}.hero-date-unit{font-family:var(--ds-font-display);letter-spacing:-.09em;font-size:clamp(3.75rem,7vw,8rem);font-weight:700;font-stretch:75%;line-height:.74}.hero-date-year{color:var(--ds-color-accent)}.hero-date-rule{background:var(--ds-wedding-rule);transform-origin:0;block-size:1px;margin-inline:clamp(.55rem,2vw,2rem)}.hero-title-block{grid-area:3/1/auto/7;align-self:center;margin-block-start:clamp(2rem,4vw,4rem)}.hero-label{margin:0 0 var(--ds-space-10);color:var(--ds-color-accent)}.hero h1{font-family:var(--ds-font-display);letter-spacing:-.072em;text-transform:uppercase;flex-wrap:wrap;align-items:baseline;gap:0 .2em;margin:0;font-size:clamp(3.25rem,6.2vw,7rem);font-weight:700;font-stretch:75%;line-height:.84;display:flex}.title-ampersand{color:var(--ds-color-accent);font-family:var(--ds-font-mono);letter-spacing:0;font-size:.38em}.hero-portrait{min-block-size:0;block-size:min(56rem, calc(100svh - var(--ds-wedding-header-height) - 7.5rem));background:var(--ds-color-text);grid-area:2/8/5/-1;align-self:start;margin:clamp(2rem,4vw,4rem) 0 0;position:relative;overflow:hidden}.hero-portrait picture{block-size:100%;display:block}.hero-portrait img{object-fit:cover;object-position:center 42%;filter:grayscale()contrast(1.08);block-size:100%;inline-size:100%;display:block}.hero-portrait figcaption{gap:var(--ds-space-10);inline-size:min(17rem,72%);padding:var(--ds-space-20);background:var(--ds-color-accent);color:var(--ds-color-on-accent);display:grid;position:absolute;inset:auto 0 0 auto}.hero-portrait figcaption span{font-family:var(--ds-font-mono);font-size:var(--ds-text-xs);letter-spacing:.08em;text-transform:uppercase}.hero-portrait figcaption strong{font-family:var(--ds-font-display);letter-spacing:-.04em;text-transform:uppercase;font-size:clamp(1.5rem,2.4vw,2.35rem);font-stretch:75%;line-height:.95}.hero-intro{gap:var(--ds-space-20);border-block-start:1px solid var(--ds-wedding-rule);grid-area:4/1/auto/7;grid-template-columns:2fr 4fr;align-items:end;padding-block-start:var(--ds-space-30);display:grid}.hero-intro p{max-inline-size:35rem;margin:0}.hero-place{font-family:var(--ds-font-mono);font-size:var(--ds-text-sm);text-transform:uppercase}.text-link,.contact-link{min-block-size:var(--ds-size-hit-min);align-items:center;gap:var(--ds-space-10);color:var(--ds-color-text);font-family:var(--ds-font-mono);font-size:var(--ds-text-xs);letter-spacing:.04em;text-decoration:underline;text-decoration-color:var(--ds-color-accent);text-underline-offset:.35em;text-transform:uppercase;text-decoration-thickness:2px;display:inline-flex}.hero-intro .text-link{grid-column:2;justify-self:end}.section-frame{border-block-end:1px solid var(--ds-wedding-rule)}.programme{padding-block:clamp(5rem,10vw,9rem)}.programme-heading,.arrival{gap:0 var(--ds-space-20);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.section-index{color:var(--ds-color-accent);margin:0}.programme-heading .section-index{grid-column:1/4}.programme-heading h2{grid-column:4/10}.programme-note{color:var(--ds-color-text-muted);grid-column:10/-1;align-self:end;margin:0}.programme h2,.arrival h2,.dress-code h2{font-family:var(--ds-font-display);letter-spacing:-.065em;text-transform:uppercase;margin:0;font-size:clamp(2.75rem,6.2vw,6rem);font-weight:700;font-stretch:75%;line-height:.9}.schedule{border-block-start:1px solid var(--ds-wedding-rule);margin-block:clamp(4rem,8vw,7rem) 0;padding:0;list-style:none;position:relative}.schedule:before{content:"";background:var(--ds-color-accent);transform-origin:top;inline-size:2px;position:absolute;inset-block:0;inset-inline-start:calc(25% - 1px)}.schedule-item{border-block-end:1px solid var(--ds-wedding-rule);grid-template-columns:3fr 9fr;min-block-size:14rem;display:grid;position:relative}.schedule-item:before{content:"";z-index:1;border:2px solid var(--ds-color-accent);background:var(--ds-color-surface);block-size:.8rem;inline-size:.8rem;position:absolute;inset-block-start:2rem;inset-inline-start:calc(25% - .4rem)}.schedule-item-primary:before{background:var(--ds-color-accent)}.schedule time{padding:var(--ds-space-30) var(--ds-space-30) var(--ds-space-30) 0;color:var(--ds-color-accent);font-family:var(--ds-font-mono);letter-spacing:-.07em;font-size:clamp(2.35rem,6vw,5.5rem);font-weight:600;line-height:.9}.schedule-copy{min-inline-size:0;padding:var(--ds-space-30) 0 var(--ds-space-40) clamp(2rem, 6vw, 7rem)}.schedule-code{margin:0 0 var(--ds-space-20);color:var(--ds-color-text-muted)}.schedule-copy h3{font-family:var(--ds-font-display);letter-spacing:-.06em;text-transform:uppercase;margin:0;font-size:clamp(2.25rem,5vw,5rem);font-weight:700;font-stretch:75%;line-height:.9}.schedule-copy>p:not(.schedule-code){max-inline-size:39rem;margin:var(--ds-space-20) 0 0;color:var(--ds-color-text-muted);font-size:var(--ds-text-lg)}.schedule-copy>.text-link{margin-block-start:var(--ds-space-20)}.schedule-details{max-inline-size:39rem;border-block:1px solid var(--ds-wedding-rule);margin-block-start:var(--ds-space-20)}.schedule-details summary{min-block-size:var(--ds-size-hit-min);justify-content:space-between;align-items:center;gap:var(--ds-space-20);color:var(--ds-color-text);cursor:pointer;font-family:var(--ds-font-mono);font-size:var(--ds-text-xs);letter-spacing:.04em;text-transform:uppercase;list-style:none;display:flex}.schedule-details summary::-webkit-details-marker{display:none}.schedule-details summary:hover{color:var(--ds-color-accent)}.detail-mark{color:var(--ds-color-accent);font-size:1.4rem}.schedule-details-panel{gap:var(--ds-space-10);padding-block:0 var(--ds-space-20);color:var(--ds-color-text-muted);display:grid}.schedule-details-panel :where(p){margin:0}.arrival{padding-block:clamp(5rem,10vw,9rem)}.arrival-heading{grid-column:1/6}.arrival-heading h2{margin-block-start:var(--ds-space-40)}.arrival-list{border-block-start:1px solid var(--ds-wedding-rule);grid-column:7/-1;margin:0}.arrival-list>div{gap:var(--ds-space-20);padding-block:var(--ds-space-30);border-block-end:1px solid var(--ds-wedding-rule);grid-template-columns:minmax(5rem,1fr) 3fr;display:grid}.arrival-list dt{color:var(--ds-color-accent);font-family:var(--ds-font-mono);font-size:var(--ds-text-xs);letter-spacing:.06em;text-transform:uppercase}.arrival-list dd{margin:0}.dress-code{background:var(--ds-wedding-ink);color:var(--ds-color-on-accent);padding-block:clamp(5rem,10vw,9rem)}.dress-code-heading{gap:0 var(--ds-space-20);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.dress-code .section-index{color:inherit;grid-column:1/4}.dress-code-title{grid-column:4/-1}.dress-code h2{max-inline-size:14ch}.dress-code-intro{max-inline-size:42rem;margin:var(--ds-space-30) 0 0;color:color-mix(in srgb, var(--ds-color-on-accent) 72%, transparent);font-size:var(--ds-text-lg)}.lookbook{gap:clamp(4rem, 9vw, 9rem) var(--ds-space-20);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;margin-block-start:clamp(4rem,8vw,7rem);display:grid}.look{margin:0}.look-fluid{grid-column:1/7}.look-tailored{grid-column:8/-1;margin-block-start:clamp(7rem,14vw,13rem)}.look-image{background:var(--ds-color-surface-raised);position:relative;overflow:hidden}.look-fluid .look-image{aspect-ratio:4/5}.look-tailored .look-image{aspect-ratio:3/4}.look-image:after{content:"";pointer-events:none;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ds-color-on-accent) 24%, transparent);position:absolute;inset:0}.look img{object-fit:cover;block-size:100%;inline-size:100%;display:block}.look-fluid img{object-position:center 52%;filter:grayscale()contrast(1.08)}.look-tailored img{object-position:center 38%;filter:saturate(.72)contrast(1.04)}.look figcaption{gap:var(--ds-space-10) var(--ds-space-20);border-block-start:2px solid var(--ds-color-accent);grid-template-columns:minmax(5rem,1fr) 3fr;padding-block-start:var(--ds-space-20);display:grid}.look figcaption span,.look figcaption strong{text-transform:uppercase}.look figcaption span{color:var(--ds-wedding-butter);font-family:var(--ds-font-mono);font-size:var(--ds-text-xs);letter-spacing:.06em}.look figcaption strong{font-family:var(--ds-font-display);letter-spacing:-.04em;font-size:clamp(1.6rem,3vw,2.75rem);font-stretch:75%;line-height:.95}.look-description{color:color-mix(in srgb, var(--ds-color-on-accent) 68%, transparent);grid-column:2;margin:0}.dress-note{gap:var(--ds-space-20);background:var(--ds-color-surface);inline-size:min(100%,58rem);color:var(--ds-color-text);grid-column:3/12;justify-self:center;padding:clamp(2rem,5vw,4rem);display:grid}.dress-note :where(p){max-inline-size:37rem;margin:0}.dress-note .section-index{color:var(--ds-color-accent);grid-column:auto}.palette{gap:var(--ds-space-10);grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.palette li{gap:var(--ds-space-10);color:var(--ds-color-text-muted);font-family:var(--ds-font-mono);font-size:var(--ds-text-xs);letter-spacing:.04em;text-transform:uppercase;display:grid}.palette-swatch{aspect-ratio:1;border:1px solid var(--ds-wedding-rule);background:var(--ds-wedding-swatch-color)}.palette-ink{--ds-wedding-swatch-color:var(--ds-wedding-ink)}.palette-cobalt{--ds-wedding-swatch-color:var(--ds-color-accent)}.palette-tobacco{--ds-wedding-swatch-color:var(--ds-wedding-tobacco)}.palette-butter{--ds-wedding-swatch-color:var(--ds-wedding-butter)}.palette-sea{--ds-wedding-swatch-color:var(--ds-wedding-sea)}.dress-note .contact-link{overflow-wrap:anywhere;inline-size:fit-content}.site-footer{gap:var(--ds-space-20);grid-template-columns:repeat(3,1fr);align-items:center;min-block-size:7.5rem;display:grid}.site-footer :where(p){margin:0}.site-footer p:nth-child(2){justify-self:center}.site-footer :where(a){min-block-size:var(--ds-size-hit-min);text-underline-offset:.3em;align-items:center;text-decoration:underline;display:inline-flex}.footer-actions{justify-items:end;gap:var(--ds-space-10);display:grid}.footer-credit{font-size:.68rem}.footer-credit :where(a){min-block-size:0;display:inline}@media (width>=48rem){:root{--ds-wedding-header-height:4.25rem}.site-header-inner{grid-template-columns:auto 1fr auto}.header-date{justify-self:center}.site-nav{min-block-size:var(--ds-wedding-header-height);border-block-start:0;grid-column:auto;grid-template-columns:repeat(3,auto)}.site-nav a{border-inline-start:1px solid var(--ds-wedding-rule);min-inline-size:6.75rem}.site-nav a:last-child{border-inline-end:1px solid var(--ds-wedding-rule)}}@media (width<48rem){:root{--ds-wedding-header-height:6.75rem}.hero{min-block-size:100svh;flex-direction:column;padding-block-start:calc(var(--ds-wedding-header-height) + 2.75rem);display:flex}.hero-date-unit{font-size:clamp(3.75rem,22vw,6.5rem)}.hero-title-block{margin-block-start:var(--ds-space-60);padding-block-start:0}.hero h1{gap:0;font-size:clamp(3.5rem,18vw,6rem);display:grid}.title-ampersand{margin-inline-start:.05em}.hero-intro{grid-template-columns:1fr;margin-block-start:var(--ds-space-30)}.hero-intro .text-link{grid-column:auto;justify-self:start}.programme-heading,.arrival,.dress-code-heading,.lookbook{display:block}.programme-heading h2,.arrival-heading h2,.dress-code h2{margin-block-start:var(--ds-space-30)}.programme-note{margin-block-start:var(--ds-space-20)}.schedule{margin-block-start:var(--ds-space-60)}.schedule:before{inset-inline-start:3.25rem}.schedule-item{grid-template-columns:4rem minmax(0,1fr);min-block-size:0}.schedule-item:before{inset-block-start:1.75rem;inset-inline-start:2.85rem}.schedule time{padding:var(--ds-space-30) var(--ds-space-10) var(--ds-space-30) 0;letter-spacing:-.03em;writing-mode:vertical-rl;font-size:1rem}.schedule-copy{padding:var(--ds-space-30) 0 var(--ds-space-40) var(--ds-space-30)}.schedule-copy h3{font-size:clamp(2.2rem,11vw,3.7rem)}.arrival-list{margin-block-start:var(--ds-space-60)}.arrival-list>div{gap:var(--ds-space-10);grid-template-columns:1fr}.hero-portrait{aspect-ratio:4/5;block-size:auto;min-block-size:0;margin-block-start:var(--ds-space-30)}.hero-portrait figcaption{inline-size:min(16rem,78%)}.dress-code-intro{margin-block-start:var(--ds-space-20)}.look-tailored,.dress-note{margin-block-start:var(--ds-space-60)}.look figcaption{grid-template-columns:1fr}.look-description{grid-column:auto}.palette{grid-template-columns:repeat(5,minmax(3.25rem,1fr));overflow-x:auto}.site-footer{padding-block:var(--ds-space-30);grid-template-columns:1fr auto}.site-footer p:nth-child(2){grid-area:2/1/auto/-1;justify-self:start}.footer-actions{justify-self:end}}@media (prefers-reduced-motion:no-preference){.site-header{transition:translate var(--ds-motion-medium) var(--ds-motion-ease)}.hero-date-rule{animation:draw-rule .72s var(--ds-motion-ease) .12s both}.hero h1>span,.hero-label{animation:type-wipe .7s var(--ds-motion-ease) both}.hero h1>span:nth-child(2){animation-delay:90ms}.hero h1>span:nth-child(3){animation-delay:.16s}.hero-portrait{animation:portrait-reveal .9s var(--ds-motion-ease) .18s both}.hero-portrait figcaption{animation:caption-arrival .62s var(--ds-motion-ease) .62s both}.schedule:before{animation:schedule-progress 1.1s var(--ds-motion-ease) both;animation-timeline:view();animation-range:entry 8% cover 72%}.schedule-details-panel{animation:detail-arrival .26s var(--ds-motion-ease) both}.look-image{animation:linear both look-reveal view();animation-range:entry 8% cover 38%}.site-nav a,.text-link,.contact-link,.schedule-details summary{transition:background-color var(--ds-motion-fast) var(--ds-motion-ease), color var(--ds-motion-fast) var(--ds-motion-ease), text-decoration-color var(--ds-motion-fast) var(--ds-motion-ease)}}@keyframes draw-rule{0%{scale:0 1}}@keyframes type-wipe{0%{clip-path:inset(0 100% 0 0);translate:0 .25em}}@keyframes schedule-progress{0%{scale:1 0}}@keyframes portrait-reveal{0%{clip-path:inset(0 100% 0 0);translate:1rem}}@keyframes caption-arrival{0%{opacity:0;translate:0 1rem}}@keyframes look-reveal{0%{clip-path:inset(0 0 100%);translate:0 2rem}}@keyframes detail-arrival{0%{opacity:0;translate:0 -.5rem}}@media (forced-colors:active){.site-header:before{display:none}.schedule:before,.schedule-item:before{background:canvastext}}}@layer ds.utilities;
