@font-face{font-family:'CustomFont';src:url('fonts/customfont.woff2?v=3') format('woff2'),url('fonts/customfont.woff?v=3') format('woff'),url('fonts/customfont.ttf?v=3') format('truetype');font-style:normal;font-weight:400;font-display:swap}
:root{--paper:#F5EFE2;--paper2:#F5EFE2;--ink:#342f29;--soft:#746b61;--night:#211712;--forest:#173B30;--ember:#173B30;--rule:rgba(52,47,41,.16);--serif:'Cormorant Garamond','Times New Roman',serif;--display:'CustomFont','Cormorant Garamond','Times New Roman',serif;--sans:'Jost',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-weight:300}body.loading{overflow:hidden}button,a{font:inherit}.page-loader{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:var(--paper);opacity:1;visibility:visible;transition:opacity .7s ease,visibility .7s ease}.page-loader.done{opacity:0;visibility:hidden;pointer-events:none}.loader-lockup{text-align:center}.loader-ring{position:relative;width:160px;height:160px;margin:auto}.loader-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}.loader-ring circle{fill:none;stroke-width:1.8}.loader-track{stroke:rgba(52,47,41,.13)}.loader-progress{stroke:var(--ember);stroke-linecap:round;stroke-dasharray:452.39;stroke-dashoffset:452.39;transition:stroke-dashoffset .12s linear}.loader-ring img{position:absolute;width:88px;height:88px;object-fit:contain;left:50%;top:50%;transform:translate(-50%,-50%)}.loader-percent{margin:18px 0 0;color:var(--soft);font-size:9px;text-transform:uppercase;letter-spacing:.3em}.site-header{position:fixed;inset:0 0 auto;z-index:50;background:rgba(245,239,226,.92);backdrop-filter:blur(3px);border-bottom:1px solid var(--rule);opacity:0;pointer-events:none;transition:opacity 1s}.site-header.visible{opacity:1;pointer-events:auto}.nav-inner{max-width:1160px;height:68px;margin:auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between}.site-header button,.desktop-nav button,.mobile-menu button{border:0;background:none;text-transform:uppercase;letter-spacing:.34em;font-size:11px;color:var(--soft);cursor:pointer}.brand,.mobile-brand{padding:0;display:flex;align-items:center;justify-content:center}.brand img{display:block;width:32px;height:32px;object-fit:contain}.desktop-nav{display:flex;gap:38px}.desktop-nav button{margin-left:28px}.menu-button{display:none}.mobile-menu{display:none}.hero{min-height:100vh;padding:105px 24px 32px;display:flex;flex-direction:column;justify-content:space-between}.hero-copy{text-align:center;padding-top:25px}.hero h1{font:300 clamp(3.25rem,8vw,6.5rem)/.95 var(--serif);margin:0}.hero h1 em{font-style:normal;color:var(--ember);margin:0 .16em}.date-line{max-width:450px;margin:40px auto 0;display:flex;gap:20px;align-items:center}.date-line i{height:1px;background:var(--rule);flex:1}.date-line span,.label,.roman,.time,.map-link,figcaption{font-size:11px;text-transform:uppercase;letter-spacing:.30em}.label{color:var(--soft);line-height:1.7}.hero .label{margin-top:16px}.skyline{max-width:870px;margin:25px auto 0}.skyline img,.image img,.framed img,.estoril img,.gift-grid img,.coast-map{width:100%;display:block;mix-blend-mode:multiply}.scroll-note{text-align:center;text-transform:uppercase;letter-spacing:.3em;font-size:10px;color:var(--soft)}.scroll-note b{display:block;font-weight:300;font-size:18px;margin-top:8px;animation:drift 3.6s ease-in-out infinite}.section{padding:140px 24px}.border-top{border-top:1px solid var(--rule)}.two-col{max-width:1160px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:95px;align-items:center}.copy h2,.center h2,.location-wrap h2,.section-title{font:300 clamp(3rem,5vw,4rem)/1.02 var(--serif);margin:22px 0 0}.roman{color:var(--ember)}.copy hr,.gift-grid hr{width:64px;margin:40px 0;border:0;border-top:1px solid var(--rule)}.copy h3,.location-details h3{font:300 clamp(1.8rem,3vw,2.5rem)/1.08 var(--serif);margin:38px 0 0}.time{color:var(--soft);margin-top:30px}.map-link{display:inline-block;margin-top:36px;color:inherit;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:4px}.portrait{max-width:450px;margin:auto}.night{background:var(--night);color:var(--paper)}.night .copy hr{border-color:rgba(245,239,226,.18)}.night .time{color:rgba(245,239,226,.68)}.framed{background:var(--paper);padding:36px;max-width:500px}.estoril{max-width:none;margin:0}.estoril-wrap{max-width:1000px;margin:auto}.estoril h2{text-align:center;font:300 clamp(3.5rem,7vw,6rem)/1 var(--serif);margin:0}.estoril-content{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:80px;align-items:center;margin-top:55px}.estoril img{width:100%;max-width:560px;margin:0 auto}.estoril-copy p{margin:0;font:300 1.45rem/1.5 var(--serif);color:var(--soft)}.narrow{max-width:760px;margin:auto}.center{text-align:center}.schedule{margin-top:75px}.schedule-row{display:grid;grid-template-columns:130px 1fr;gap:35px;padding:0 0 38px;margin-bottom:38px;border-bottom:1px solid var(--rule)}.schedule-row time{font:300 1.8rem/1.1 var(--serif);color:var(--ember)}.schedule-row b{font-size:12px;text-transform:uppercase;letter-spacing:.22em;font-weight:300}.schedule-row p{font:300 1.4rem var(--serif);color:var(--soft);margin:10px 0}.paper-deep{background:var(--paper2)}.dress-section{background:#211712}.dress-section .section-title{color:var(--paper)}.dress-section .serif-note{color:rgba(245,239,226,.72)}.dress-divider{width:64px;margin:40px auto 0;border-top:1px solid rgba(245,239,226,.18)}.dress{font:300 clamp(2.4rem,4vw,3.2rem) var(--serif);margin:38px 0 0;color:var(--paper)}.serif-note{font:300 1.45rem/1.5 var(--serif);color:var(--soft);margin:30px auto 0}.gift-intro{max-width:600px;margin:34px auto 0;font:300 1.6rem/1.5 var(--serif);color:var(--soft)}.gift-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;margin-top:70px}.gift-grid h3{font:300 2.7rem/1 var(--serif);margin:14px 0 25px}.gift-grid p:last-child{font:300 1.25rem/1.55 var(--serif);color:var(--soft)}.gift-note{max-width:700px;text-align:center;margin:85px auto 0}.gift-note hr{width:95px;border:0;border-top:1px solid var(--rule);margin:0 auto 45px}.gift-note p{margin:0;color:var(--soft);text-transform:uppercase;letter-spacing:.22em}.gift-contribution{font-size:11px;line-height:2.1}.bank-title{margin-top:38px!important;font-size:11px;line-height:1.8;color:var(--ink)!important}.bank-iban{margin-top:18px!important;font-size:15px;line-height:1.8;color:var(--ink)!important;letter-spacing:.18em!important}.bank-iban strong{font-weight:400}.bank-meta{max-width:470px;margin:25px auto 0;text-align:left}.bank-meta p{font-size:11px;line-height:1.9;text-transform:none;letter-spacing:.08em}.closing .dark{color:var(--ember)}.location-wrap{max-width:1000px;margin:auto}.coast-map{margin-top:60px}.location-details{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:35px;margin-top:55px}.location-details .right{text-align:right}.location-details h3{font-size:1.55rem;margin-top:12px}.diamond{color:var(--ember)}.closing{padding-top:150px;padding-bottom:150px}.closing h2{font-size:clamp(2.2rem,4.2vw,3.65rem);white-space:nowrap}.closing hr{width:95px;border:0;border-top:1px solid var(--rule);margin:70px auto 50px}.closing .dark{color:var(--ember)}.reveal{opacity:0;transform:translateY(18px);transition:opacity 1.6s cubic-bezier(.22,1,.36,1),transform 1.6s cubic-bezier(.22,1,.36,1)}.reveal.in{opacity:1;transform:none}@keyframes drift{50%{transform:translateY(7px)}}@media(max-width:800px){.desktop-nav{display:none}.menu-button{display:block}.mobile-menu{position:fixed;inset:0;z-index:70;background:var(--paper);opacity:0;pointer-events:none;transition:.4s;display:block}.mobile-menu.open{opacity:1;pointer-events:auto}.mobile-head{height:68px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--rule)}.mobile-brand img{display:block;width:32px;height:32px;object-fit:contain}.mobile-menu nav{padding:55px 24px}.mobile-menu nav button{display:block;font:300 2.6rem/1.15 var(--serif);text-transform:none;letter-spacing:0;color:var(--ink);margin-bottom:26px}.section{padding:95px 24px}.two-col,.gift-grid{grid-template-columns:1fr;gap:55px}.estoril-content{grid-template-columns:1fr;gap:40px}.estoril img{max-width:520px}.estoril-copy{text-align:center}.estoril-copy p{font-size:1.3rem}.gift-note{margin-top:65px}.bank-meta{max-width:420px}.reception-grid .framed{order:0}.reception-grid .copy{order:1}.portrait{order:0}.copy{order:1}.schedule-row{grid-template-columns:75px 1fr;gap:20px}.location-details{grid-template-columns:1fr;text-align:left;gap:24px}.location-details .right{text-align:left}.diamond{display:none}.framed{padding:24px}.hero{padding-top:85px}.skyline{margin-top:40px}.closing h2{white-space:normal}.loader-ring{width:145px;height:145px}.loader-ring img{width:78px;height:78px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.scroll-note b{animation:none}.loader-progress{transition:none}}

::selection{background:var(--forest);color:var(--paper)}
a,button{transition:color .25s ease,opacity .25s ease,transform .25s ease}
.site-header button:hover,.desktop-nav button:hover,.mobile-menu button:hover,.map-link:hover,.hotel-card:hover{color:var(--forest)}
.hero h1,.copy h2,.center h2,.location-wrap h2,.section-title,.estoril h2,.closing h2{font-family:var(--display);font-weight:400;color:var(--forest)}
.hero h1 em{color:inherit}
.green-section{background:var(--forest);color:var(--paper)}
.green-section .center h2,.green-section .section-title,.green-section h2{color:var(--paper)}
.green-section .roman,.green-section .time,.green-section .schedule-row time{color:var(--paper)}
.green-section .serif-note,.green-section .schedule-row p{color:rgba(245,239,226,.72)}
.green-section .schedule-row{border-bottom-color:rgba(245,239,226,.22)}
.green-section .schedule-row b{color:var(--paper)}
.green-section .map-link{color:var(--paper)}
.green-section .map-link:hover{color:rgba(245,239,226,.72)}
.reception-section{background:var(--paper);color:var(--ink)}
.reception-section .copy h2{color:var(--forest)}
.reception-section .time{color:var(--soft)}
.reception-section .framed{border:0;box-shadow:none}
.time-note{margin:7px 0 0;font:300 .95rem/1.4 var(--serif);color:var(--forest);font-style:italic}
.estoril-carousel{width:100%;max-width:520px;margin:0 auto;cursor:grab;touch-action:pan-y;user-select:none}
.estoril-slides{position:relative;aspect-ratio:1/1;overflow:hidden;background:rgba(23,59,48,.045);touch-action:pan-y}
.estoril-slide{position:absolute;inset:0;margin:0;opacity:0;transform:scale(1.015);transition:opacity 1s ease,transform 1.2s ease}
.estoril-slide.active{opacity:1;transform:scale(1)}
.estoril-carousel .estoril-slide img{width:100%;height:100%;object-fit:cover;display:block;mix-blend-mode:normal;pointer-events:none;-webkit-user-drag:none;user-select:none}
.carousel-dots{display:flex;justify-content:center;gap:9px;margin-top:18px}
.carousel-dots button{width:7px;height:7px;padding:0;border:1px solid var(--forest);border-radius:50%;background:transparent;cursor:pointer}
.carousel-dots button.active{background:var(--forest)}
.day-section{background:var(--forest);color:var(--paper)}.day-section .center h2{color:var(--paper)}.day-section .schedule{margin-top:75px}.day-section .schedule-row time{color:var(--paper)}.day-section .schedule-row b{color:var(--paper)}.day-section .schedule-row p{color:var(--paper)}.day-section .schedule-row{border-bottom-color:rgba(245,239,226,.22)}
.hotels{margin-top:0;padding-top:58px;border-top:1px solid var(--rule)}
.hotels-heading{text-align:center;margin-bottom:34px}
.hotels-heading h3{font:400 2.75rem/1.05 var(--display);color:var(--forest);margin:0}
.hotel-carousel-shell{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr) 36px;gap:14px;align-items:center}
.hotel-track{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;padding:2px;cursor:grab;touch-action:pan-y;user-select:none}
.hotel-track::-webkit-scrollbar{display:none}
.hotel-card{flex:0 0 calc((100% - 36px)/3);scroll-snap-align:start;text-decoration:none;color:var(--ink);user-select:none}
.hotel-photo{aspect-ratio:16/9;background:linear-gradient(135deg,rgba(23,59,48,.15),rgba(23,59,48,.035));border:1px solid rgba(23,59,48,.12);display:grid;place-items:center;overflow:hidden;pointer-events:none}.hotel-photo img{width:100%;height:100%;object-fit:cover;display:block;-webkit-user-drag:none;user-select:none}
.hotel-photo span{font-size:9px;text-transform:uppercase;letter-spacing:.24em;color:rgba(23,59,48,.58)}
.hotel-card strong{display:block;margin-top:12px;font:400 1.35rem/1.1 var(--serif);text-align:center}
.hotel-card:hover{transform:translateY(-2px)}
.hotel-arrow{width:36px;height:36px;border:1px solid rgba(23,59,48,.3);border-radius:50%;background:transparent;color:var(--forest);cursor:pointer}
.hotel-arrow:hover{background:var(--forest);color:var(--paper)}
.dress-section{background:var(--forest)}
.dress-icon{display:block;width:144px;height:144px;object-fit:contain;margin:0 auto 26px}
.dress-section .section-title{color:var(--paper)}
.dress-section .dress{color:var(--paper)}
.dress-section .dress-divider{border-top-color:rgba(245,239,226,.22)}
.gift-bank-section{padding-top:105px;padding-bottom:105px}
.gift-bank-section .gift-note{margin:0 auto;color:var(--paper)}
.gift-bank-section .gift-note p{color:var(--paper)}
.gift-bank-section .bank-title{color:var(--paper)!important;margin-top:34px!important}
.gift-bank-section .bank-iban{color:var(--paper)!important;margin-top:18px!important;font-size:16px}
.gift-bank-section .bank-iban strong{font-weight:400}
.closing h2{margin-bottom:0}
.closing-photo-placeholder{width:min(1160px,calc(100vw - 48px));aspect-ratio:16/5.5;margin:70px auto 55px;background:linear-gradient(135deg,rgba(23,59,48,.12),rgba(23,59,48,.025));border:1px solid rgba(23,59,48,.12);display:grid;place-items:center;overflow:hidden}
.closing-photo-placeholder span{font-size:9px;text-transform:uppercase;letter-spacing:.28em;color:rgba(23,59,48,.55)}
.closing .dark{color:var(--forest)}
@media(max-width:800px){
  .hero h1,.copy h2,.center h2,.location-wrap h2,.section-title,.estoril h2,.closing h2{line-height:1.08}
  .estoril-carousel{max-width:520px}
  .hotel-carousel-shell{grid-template-columns:30px minmax(0,1fr) 30px;gap:8px}
  .hotel-arrow{width:30px;height:30px}
  .hotel-card{flex-basis:82%}
  .hotels{margin-top:0;padding-top:44px}
  .dress-icon{width:116px;height:116px;margin-bottom:22px}
  .closing-photo-placeholder{width:calc(100vw - 48px);aspect-ratio:4/3;margin:50px auto 42px}
}
.closing-photo{display:block;width:min(1160px,calc(100vw - 48px));max-height:560px;object-fit:cover;margin:70px auto 55px}
@media(max-width:800px){.closing-photo{width:calc(100vw - 48px);margin:50px auto 42px}}

.estoril-carousel.dragging,.hotel-track.dragging{cursor:grabbing}


/* Our Story — single panoramic illustration with centered copy */
 .story-wrap{max-width:1500px}
.story-periods,.story-details{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:42px}
.story-periods{margin:42px auto 0;align-items:end;text-align:center}
.story-period{font:400 clamp(2rem,3vw,3.25rem)/1.05 var(--display);color:var(--ink)}
.our-story-visual{max-width:1500px;margin:8px auto 0}
.estoril .our-story-visual img{width:100%;max-width:none;margin:0 auto;display:block;mix-blend-mode:normal}
.story-details{margin:4px auto 0;text-align:center}
.story-period-mobile{display:none}
.story-item h3{margin:0 0 14px;font:400 clamp(2rem,3vw,3rem)/1.05 var(--display);color:var(--ink)}
.story-item p{max-width:285px;margin:0 auto;font:300 1.25rem/1.35 var(--serif);color:var(--soft)}

/* Wedding Gifts — one shared panoramic journey image */
.gift-journey{margin-top:72px}
.gift-destination-headings{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:end}
.gift-destination .roman{margin:0 0 13px}
.gift-destination h3{font:300 2.7rem/1 var(--serif);margin:0;color:var(--ink)}
.gift-destination-right{text-align:right}
.gift-journey-image{width:100%;display:block;margin:26px auto 0;mix-blend-mode:normal}
.gift-descriptions{display:grid;grid-template-columns:1fr 1fr;gap:70px;margin-top:26px}
.gift-descriptions hr{width:64px;margin:0 0 26px;border:0;border-top:1px solid var(--rule)}
.gift-descriptions>div:last-child hr{margin-left:auto}
.gift-descriptions p{margin:0;font:300 1.25rem/1.55 var(--serif);color:var(--soft)}
.gift-descriptions>div:last-child{text-align:right}

@media(max-width:800px){
  .story-periods{display:none}
  .our-story-visual{margin-top:24px}
  .story-details{grid-template-columns:1fr;gap:38px;margin-top:30px}
  .story-period-mobile{display:block;margin-bottom:8px;font:400 1.85rem/1.05 var(--display);color:var(--ink)}
  .story-item h3{font-size:2.2rem;margin-bottom:10px}
  .story-item p{font-size:1.2rem;max-width:420px}
  .gift-journey{margin-top:56px}
  .gift-destination-headings{gap:24px}
  .gift-destination h3{font-size:2rem}
  .gift-journey-image{margin-top:20px}
  .gift-descriptions{gap:28px;margin-top:22px}
  .gift-descriptions p{font-size:1.08rem}
}

/* Location practical information */
.location-info{margin-top:95px}
.location-info-block{padding:58px 0 56px;border-top:1px solid var(--rule);text-align:center}
.location-info-block h3{font:400 2.75rem/1.05 var(--display);color:var(--forest);margin:0 0 30px}
.location-info-copy{max-width:760px;margin:0 auto}
.location-info-copy p{margin:0 0 16px;font:300 1.35rem/1.55 var(--serif);color:var(--soft)}
.location-info-copy p:last-child{margin-bottom:0}

/* Ceremony arrival note */
.time-note{max-width:520px;margin:18px 0 0;font:300 1.15rem/1.5 var(--serif);color:var(--soft);font-style:normal}

/* Dress code wording */
.dress-copy{max-width:650px;margin:36px auto 0;color:var(--paper)}
.dress-copy p{margin:0 0 14px;font:300 1.45rem/1.5 var(--serif);color:var(--paper)}
.dress-copy p:last-child{margin-bottom:0}
.dress-copy strong{font-weight:500}

@media(max-width:800px){
  .location-info{margin-top:72px}
  .location-info-block{padding:44px 0 42px}
  .location-info-block h3{font-size:2.25rem;margin-bottom:24px}
  .location-info-copy p{font-size:1.2rem}
  .time-note{max-width:none;font-size:1.05rem}
  .dress-copy{margin-top:30px}
  .dress-copy p{font-size:1.25rem}
}
