@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Space+Grotesk:wght@400;500;700&display=swap";:root{--page:#f3efe7;--surface:#fbfaf7;--surface-muted:#ece6dc;--surface-strong:#dad1c4;--ink:#171614;--muted:#5f594f;--line:#c1bbb2;--line-strong:#8f8577;--accent:#184f3a;--accent-strong:#0f3527;--inverse:#121212;--inverse-soft:#232321;--inverse-line:#40403a;--white:#fff;--radius-sm:6px;--radius-md:10px;--space-1:8px;--space-2:12px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:48px;--space-7:64px;--space-8:96px;--font-sans:"Space Grotesk", "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", "Courier New", monospace}*{box-sizing:border-box}html{background-color:var(--page);min-height:100%}body{background-color:var(--page);min-height:100%;color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}a{color:inherit;text-decoration:none;transition:color .16s,border-color .16s,background-color .16s,opacity .16s}button,input,textarea{font:inherit}button{transition:color .16s,border-color .16s,background-color .16s,opacity .16s}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#root{min-height:100vh}.page-shell{width:100%}.page-shell--loading{min-height:100vh;padding:var(--space-6) var(--space-4);color:var(--muted);place-items:center;display:grid}.page-shell--home{min-height:100vh}.page-shell--wedding{justify-content:center;min-height:100vh;padding:0;display:flex}.page-shell--resume{min-height:100vh;padding:var(--space-6) var(--space-4);justify-content:center;display:flex}.home-page{width:100%}.home-title-stage__inner{width:100%;max-width:1280px;margin:0 auto}.home-header-shell{z-index:5;background-color:var(--page);border-bottom:1px solid var(--line);width:100%;padding:0 var(--space-6);position:fixed}.home-frame{width:100%;max-width:1280px;margin:0 auto}.home-title-stage{width:100%}.home-intro-stage{padding:0 0 var(--space-6)}.home-intro-sticky{align-content:start;display:grid}.home-header--intro{z-index:2;position:relative}.home-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:var(--space-4) 0;max-width:1280px;margin:0 auto;display:flex}.home-eyebrow,.home-section-label,.home-proof-label,.home-wordmark{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.78rem}.home-closing-label{letter-spacing:.08em;color:var(--white);font-size:.95rem}.home-wordmark{color:var(--muted);margin-top:var(--space-1)}.home-nav{align-items:center;gap:var(--space-3);color:var(--muted);font-size:.95rem;display:flex}.home-nav a{border-bottom:1px solid #0000}.home-nav a:hover{border-bottom-color:var(--line-strong);color:var(--ink)}.home-hero{gap:var(--space-5);padding:var(--space-8) var(--space-6);border:1px solid var(--line);background-color:var(--surface);grid-template-columns:minmax(0,2.1fr) minmax(260px,.95fr);display:grid}.home-hero--split{gap:var(--space-5);background-color:#0000;border:none;grid-template-columns:1fr;padding:0}.home-hero-shell{will-change:clip-path, transform;position:relative}.home-hero-headline-block{align-content:center;gap:var(--space-4);padding:var(--space-6);background-color:var(--ink);height:80vh;color:var(--surface);will-change:clip-path, transform;display:grid}.home-hero-headline-block--bleed{width:100%;padding-inline:0}.home-title-stage__inner{min-height:inherit;padding-top:var(--space-8);align-content:center;display:grid}.home-hero-copy-block{gap:var(--space-5);max-width:760px;display:grid}.home-hero-reveal-block{will-change:transform, opacity}.home-hero--body{padding-top:var(--space-7)}.home-hero-copy{gap:var(--space-4);display:grid}.home-section-label{color:var(--muted)}.home-section-label--inverse{color:#ffffffb8}.home-title{letter-spacing:-.06em;max-width:10ch;margin:0;font-size:clamp(4rem,9.5vw,8rem);line-height:.95;display:grid}.home-title-line-shell{padding-bottom:.04em;display:block;overflow:hidden}.home-title-line{transform-origin:0;display:block}.home-lede{max-width:24ch;margin:0;font-size:clamp(1.35rem,2.5vw,1.9rem);line-height:1.2}.home-support{max-width:62ch;color:var(--ink);margin:0;font-size:1.05rem;line-height:1.55}.home-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.home-button,.main-button{min-height:46px;padding:0 var(--space-4);border:1px solid var(--line-strong);border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;background-color:#0000;justify-content:center;align-items:center;display:inline-flex}.home-button:hover,.main-button:hover{border-color:var(--ink);background-color:var(--surface-muted)}.home-button--primary{background-color:var(--inverse);border-color:var(--inverse);color:var(--white)}.home-button--primary:hover{background-color:var(--inverse-soft);border-color:var(--inverse-soft)}.home-button--light{background-color:var(--white);color:var(--inverse);border-color:#ffffffb3}.home-button--light:hover{border-color:var(--white);background-color:#ffffffe6}.home-button--ghost{color:var(--white);border-color:#ffffff59}.home-button--ghost:hover{background-color:#ffffff14;border-color:#ffffff8c}.home-proof-panel{gap:var(--space-4);align-content:start;display:grid}.home-proof-panel--row{grid-template-columns:repeat(3,minmax(0,1fr));align-content:stretch}.home-proof-item{gap:var(--space-2);padding:var(--space-4);border:1px solid var(--line);background-color:var(--page);display:grid}.home-proof-item p{color:var(--muted);margin:0;line-height:1.55}.home-section{gap:var(--space-5);padding:var(--space-7) 0;border-top:1px solid var(--line);display:grid}.home-section-heading{gap:var(--space-2);max-width:760px;display:grid}.home-section-heading h2{letter-spacing:-.04em;margin:0;font-size:clamp(2rem,4vw,3rem);line-height:1.05}.home-closing h2{letter-spacing:-.04em;max-width:24ch;margin:0;font-size:clamp(1.8rem,3vw,2.5rem);line-height:1.05}.home-section-copy,.home-two-column{gap:var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.home-section-copy p,.home-two-column p,.home-card p,.home-list-block p{color:var(--muted);margin:0;line-height:1.7}.home-card-grid{gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.home-card{gap:var(--space-3);min-height:220px;padding:var(--space-4);border:1px solid var(--line);background-color:var(--surface);display:grid}.home-card h3{margin:0;font-size:1.1rem;line-height:1.2}.home-timeline{gap:var(--space-4);padding-left:48px;display:grid;position:relative}.home-timeline-spine{background-color:var(--line);transform-origin:top;width:1px;position:absolute;top:0;bottom:0;left:24px}.home-timeline-item{gap:var(--space-4);grid-template-columns:72px minmax(0,1fr);align-items:start;display:grid;position:relative}.home-timeline-marker{justify-items:center;gap:var(--space-2);padding-top:var(--space-1);display:grid;position:relative}.home-timeline-index{font-family:var(--font-mono);letter-spacing:.08em;color:var(--muted);font-size:.8rem}.home-timeline-dot{border:1px solid var(--line-strong);background-color:var(--surface);width:14px;height:14px;box-shadow:0 0 0 6px var(--page);border-radius:999px}.home-timeline-card{gap:var(--space-3);min-height:170px;padding:var(--space-4);border:1px solid var(--line);background-color:var(--surface);align-content:start;display:grid}.home-timeline-card h3{margin:0;font-size:1.1rem;line-height:1.2}.home-timeline-card p{color:var(--muted);margin:0;line-height:1.7}.home-model-chip{background-color:var(--page);min-height:27px;font-family:var(--font-mono);white-space:nowrap;vertical-align:baseline;align-items:center;padding:0 6px;display:inline-flex}.home-timeline-role{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.78rem}.home-list-block{gap:var(--space-3);display:grid}.home-tag-block{align-content:flex-start;gap:var(--space-2);flex-wrap:wrap;display:flex}.home-tag{min-height:36px;padding:0 var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background-color:var(--surface-muted);color:var(--ink);align-items:center;font-size:.95rem;display:inline-flex}.home-closing{gap:var(--space-5);margin:var(--space-6) 0 0;padding:var(--space-8) var(--space-6);border:1px solid var(--inverse-line);background-color:var(--inverse);color:var(--white);display:grid}.page-shell--resume>.resume{width:100%;max-width:860px}.resume{gap:var(--space-5);display:grid}.resume__header{gap:var(--space-3);padding-bottom:var(--space-5);border-bottom:1px solid var(--line);display:grid}.name{letter-spacing:-.06em;text-transform:lowercase;margin:0;font-size:clamp(2.5rem,7vw,4.75rem);line-height:.95}.resume__name{color:var(--ink);font-weight:700}.resume__title{max-width:20ch;margin:0;font-size:1.45rem;line-height:1.2}.resume__lead{max-width:60ch;color:var(--muted);line-height:1.7}.resume__actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.main-button.small{min-height:40px;padding:0 var(--space-3);font-size:.95rem}.resume__experience{gap:var(--space-3);display:grid}.resume__experience h2{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.82rem}.resume__experience-list{gap:var(--space-3);display:grid}.resume__experience-item{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--line);background-color:var(--surface);display:grid}.resume__experience-item h3,.resume__experience-item h4{margin:0}.resume__experience-item p{color:var(--muted);margin:0;line-height:1.6}.resume__experience-item ul{color:var(--muted);gap:var(--space-2);margin:0;padding-left:20px;display:grid}.resume__experience-item li{line-height:1.6}.resume__experience-meta{gap:var(--space-1);color:var(--muted);flex-wrap:wrap;font-size:.95rem;display:flex}.resume__experience-meta span:not(:last-child):after{content:"•";margin-left:var(--space-1)}.wedding-wrapper{gap:var(--space-4);width:100%;max-width:720px;color:var(--wedding-flower,#f7f2e8);height:fit-content;padding:var(--space-5) var(--space-3) var(--space-8);justify-content:center;align-items:center;margin:auto;font-weight:500;display:grid}.wedding-wrapper--cover{color:#000;max-width:none;min-height:100vh;margin:0;padding:0;display:block}.wedding-cover{align-items:center;min-height:100vh;padding:clamp(32px,6vw,88px);display:grid;position:relative;overflow:hidden}.wedding-cover__backgrounds{filter:blur();background-color:#000;transition:filter .7s,opacity .72s .48s,transform .72s;position:absolute;inset:-18px;transform:scale(1.01)}.wedding-cover__background{opacity:0;background-position:50%;background-size:cover;transition:opacity 2s;position:absolute;inset:0}@media (width<=1280px){.wedding-cover__background{background-position:68%}}.wedding-cover__background:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0e150ee6 0%,#0e150e80 33%,#0e150e00 80%);position:absolute;inset:0}.wedding-cover__background--active{opacity:1}.wedding-cover--leaving .wedding-cover__backgrounds{opacity:0;filter:blur(12px);transform:scale(1.035)}.wedding-cover__content{z-index:1;gap:var(--space-6);max-width:min(760px,100%);color:var(--page);opacity:0;justify-items:start;transition:opacity .6s .18s,transform .6s .18s;animation:.9s .22s both wedding-cover-text-in;display:grid;position:relative;transform:translateY(12px)}@media (width<=768px){.wedding-cover__content{gap:var(--space-4)}}.wedding-cover__flower{aspect-ratio:673/850;background-color:var(--page);opacity:.9;width:clamp(100px,13vw,180px);-webkit-mask:url(/images/wedding_flower.svg) 50%/contain no-repeat;mask:url(/images/wedding_flower.svg) 50%/contain no-repeat}.wedding-cover__title{text-align:left;color:var(--page);letter-spacing:0;gap:.02em;margin:0;font-size:clamp(3.6rem,10vw,8.5rem);line-height:.9;display:grid}.wedding-cover__title span:first-child,.wedding-cover__title span:last-child{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;font-size:clamp(1rem,2vw,1.55rem);line-height:1.2}.wedding-cover__title span:last-child{margin-top:var(--space-2)}.wedding-cover__address{font-family:var(--font-sans);letter-spacing:.04em;border-bottom:1px dotted var(--line);color:var(--page);font-size:1.1rem;line-height:1.2}.wedding-cover__address:hover{border-bottom-style:solid}.wedding-cover__actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.wedding-cover__button{justify-content:center;align-items:center;gap:var(--space-2);min-height:52px;padding:0 var(--space-4);border:1px solid var(--line);border-radius:var(--radius-sm);background-color:var(--page);color:var(--ink);cursor:pointer;display:inline-flex}.wedding-cover__button--primary:hover{background-color:var(--surface-strong);border-color:var(--line)}.wedding-cover__button--secondary{color:var(--page);background-color:#0000;border-color:#f3efe7b8}.wedding-cover__button--secondary:hover{border-color:var(--page);background-color:#f3efe71f}.wedding-cover__button:disabled{cursor:default;opacity:.78}.wedding-cover--leaving .wedding-cover__content{opacity:0;animation:none;transform:translateY(-10px)}.wedding-content{gap:var(--space-4);width:100%;display:grid}.wedding-content--enter{animation:.62s both wedding-landing-in}.wedding-header{justify-items:center;gap:var(--space-2);padding-top:var(--space-4);text-align:center;height:fit-content;display:grid}.event-title{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-size:.9rem}.names{letter-spacing:-.06em;font-size:clamp(2.5rem,11vw,4.5rem);font-weight:600;line-height:.92}.event-details{justify-content:center;gap:var(--space-2);flex-wrap:wrap;font-size:1rem;display:flex}.separator{opacity:.45}.venue{border-bottom:1px dotted;padding-bottom:2px}.venue:hover{border-bottom-style:solid}.intro-stage,.review-container,.success-container{gap:var(--space-4);width:100%;display:grid}.cta-row,.button-group,.gift-buttons{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.cta-row{justify-content:center;height:fit-content}.button-group{justify-content:center}.gift-buttons{justify-content:flex-start}.gift-buttons>*{flex:180px}.flower-hero,.flower-small{background-color:var(--wedding-flower,#ffffffbf);aspect-ratio:673/850;justify-self:center;width:100%;-webkit-mask:url(/images/wedding_flower.svg) 50%/contain no-repeat;mask:url(/images/wedding_flower.svg) 50%/contain no-repeat}.flower-hero{max-width:260px}.flower-small{max-width:200px}.form-container,.details-card{gap:var(--space-4);width:100%;padding:var(--space-6);border:1px solid var(--surface-muted);background-color:var(--surface);display:grid;box-shadow:0 2px 4px #85470005,0 4px 12px #8547000a}.text-input-form,.edit-form{gap:var(--space-3);display:grid}.rsvp-field{display:grid}.rsvp-field label{margin-bottom:var(--space-1)}.text-input-form label,.edit-form label{font-size:1.15rem;font-weight:700}.subtext{color:var(--wedding-flower,#ffffffd1);opacity:.9;line-height:1.55}.text-input{width:100%;min-height:130px;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background-color:var(--surface-muted);color:var(--ink);resize:vertical}.text-field{width:100%;min-height:46px;padding:0 var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background-color:var(--surface-muted);color:var(--ink)}.text-input::placeholder,.text-field::placeholder{color:var(--muted)}.text-input:focus-visible,.text-field:focus-visible{outline-color:var(--accent)}.confirm-button,.edit-button,.gift-button{min-height:46px;padding:0 var(--space-4);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.confirm-button,.gift-button{background-color:var(--surface);color:var(--ink)}.confirm-button:hover,.gift-button:hover{background-color:var(--surface-muted)}.edit-button{background-color:var(--wedding-foreground);color:var(--ink)}.edit-button:hover{background-color:var(--surface-muted)}.gift-button--other{color:var(--ink);background-color:#0000}.gift-button--other:hover{background-color:var(--surface-muted);opacity:1}.generating-message{justify-items:center;gap:var(--space-3);padding:var(--space-5) var(--space-4);text-align:center;display:grid}.spinner{border:3px solid #fff3;border-top-color:currentColor;border-radius:50%;width:40px;height:40px;animation:.9s linear infinite spin}.details-list{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.details-list li{gap:var(--space-1);padding-bottom:var(--space-2);border-bottom:1px solid var(--surface-muted);display:grid}.details-list li:last-child{border-bottom:0;padding-bottom:0}.label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;opacity:.8;font-size:.78rem}.value{line-height:1.55}.gift-description,.ai-message,.thank-you-message{line-height:1.65}.gift-description p,.gift-description h3{margin:0}.gift-description h3{font-family:var(--font-sans);font-size:1.4rem;font-weight:500}.gift-description p{font-family:var(--font-mono);letter-spacing:-.02em}.thank-you-message{text-align:center;font-size:1.4rem;font-weight:700}.fade-in{animation:.22s fade-in}.fade-in-delay{animation:.22s .12s both fade-in}.slide-up{animation:.22s fade-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes wedding-cover-text-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes wedding-landing-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1400px){.home-header-shell,.home-title-stage__inner,.home-frame{padding-inline:var(--space-6)}}@media (width<=960px){.home-header-shell,.home-title-stage__inner,.home-frame{padding-inline:var(--space-4)}.home-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home-section-copy,.home-two-column,.home-proof-panel--row{grid-template-columns:1fr}.home-timeline-item:nth-child(odd) .home-timeline-card,.home-timeline-item:nth-child(2n) .home-timeline-card{margin-left:0;margin-right:0}}@media (width<=720px){.page-shell--resume{padding:var(--space-4) var(--space-3)}.wedding-wrapper:not(.wedding-wrapper--cover){padding:var(--space-4) var(--space-3) var(--space-8)}.wedding-cover{padding:var(--space-5) var(--space-3);align-items:end}.wedding-cover__background:after{background:linear-gradient(#0e150e14 0%,#0e150e80 52%,#0e150ed1 100%)}.wedding-cover__title{font-size:clamp(3.2rem,16vw,5rem)}.wedding-cover__actions{grid-template-columns:1fr;width:100%;display:grid}.home-header-shell,.home-title-stage__inner,.home-frame{padding-inline:var(--space-3)}.home-header{padding-top:var(--space-4);padding-bottom:var(--space-4);flex-direction:column;align-items:flex-start}.home-hero{padding:var(--space-6) 0}.home-closing{padding:var(--space-4);margin-top:0}.home-card-grid{grid-template-columns:1fr}.home-timeline{padding-left:0}.home-timeline-spine{left:14px}.home-timeline-item{gap:var(--space-3);grid-template-columns:28px minmax(0,1fr)}.home-actions,.resume__actions,.cta-row,.button-group{flex-direction:column;align-items:stretch}.home-button,.main-button,.confirm-button,.edit-button,.gift-button{width:100%}.wedding-wrapper{max-width:100%}.details-list li{gap:6px}}@media print{body{background-color:#fff}.page-shell--resume{padding:0}.resume__actions{display:none}.resume__header{padding-bottom:var(--space-4)}.resume__experience-item{break-inside:avoid;background-color:#fff}}
