@import url("https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&display=swap");
@charset "UTF-8";
/* RE/VERSE — a restrained editorial motion system. */
:root {
  --paper:#f5f3ed;
  --ink:#21231f;
  --muted:#6a6c65;
  --line:#d8d7d0;
  --serif:"Instrument Serif","Iowan Old Style",Baskerville,Georgia,serif;
  --sans:"Helvetica Neue","HelveticaNeue",Helvetica,Arial,sans-serif;
  --ease:cubic-bezier(.22,1,.36,1);
  --inout:cubic-bezier(.76,0,.24,1);
  --gutter:clamp(26px,5.8vw,100px);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:90px;background:var(--paper)}
body{margin:0;background:var(--paper);color:var(--ink);font:400 15px/1.65 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-kerning:normal;font-synthesis:weight}
::selection{background:#d9ddd4;color:var(--ink)}
h1,h2,h3,p{margin:0;font-weight:400}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:1px solid var(--ink);outline-offset:6px}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;left:18px;top:-100px;padding:12px 18px;background:var(--ink);color:var(--paper);z-index:400;clip-path:inset(100%);transition:top .2s}
.skip-link:focus{top:14px;clip-path:none}

/* Navigation: the typographic identity is intentionally quiet. */
.site-header{display:flex;align-items:center;justify-content:space-between;gap:28px;min-height:96px;padding:0 var(--gutter);position:relative;z-index:20}
.wordmark{font:400 12px/1 var(--sans);letter-spacing:.20em;white-space:nowrap;text-transform:uppercase}
.wordmark span{font-weight:300;margin:0 .15em 0 .09em}
.quiet-header-link,.sub-header-link{font:400 12px/1.5 var(--sans);letter-spacing:.012em;position:relative;display:inline-block;padding:9px 0}
.quiet-header-link::after,.sub-header-link::after{content:"";position:absolute;bottom:5px;left:0;right:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .65s var(--ease)}
.wordmark,.quiet-header-link,.sub-header-link{transition:opacity .42s var(--ease)}
@media(hover:hover){.wordmark:hover{opacity:.52}.quiet-header-link:hover::after,.sub-header-link:hover::after{transform:scaleX(1)}}
.quiet-header-link:focus-visible::after,.sub-header-link:focus-visible::after{transform:scaleX(1)}

/* The three-part introduction: space, type and a single invitation. */
.quiet-main{max-width:1600px;margin:0 auto;padding:0 clamp(27px,7.6vw,140px)}
.quiet-intro{min-height:clamp(610px,88svh,1050px);display:flex;align-items:center;justify-content:center;padding:115px 0 145px}
.quiet-hero-copy{max-width:1160px;width:100%;text-align:center}
.quiet-intro h1{font:400 clamp(47px,6.1vw,98px)/1.16 var(--serif);letter-spacing:-.036em;text-wrap:balance}
.quiet-intro h1 em{font-style:italic;font-weight:400;letter-spacing:-.041em}
.hero-line{display:block;overflow:hidden;padding-bottom:.10em;margin-bottom:-.10em}
.hero-line-inner{display:block}
.quiet-hero-copy>p{font:400 clamp(16px,1.35vw,19px)/1.65 var(--sans);color:var(--muted);margin:clamp(45px,5vw,75px) auto 0;max-width:580px;letter-spacing:-.012em}
.quiet-description{min-height:650px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:120px min(10%,140px);gap:42px;position:relative}
.quiet-lead{font:400 clamp(33px,4.1vw,65px)/1.23 var(--serif);letter-spacing:-.027em;max-width:900px;text-wrap:balance}
.quiet-detail{font:400 clamp(15px,1.4vw,19px)/1.7 var(--sans);letter-spacing:-.008em;color:var(--muted);max-width:700px}
.quiet-provenance{padding:85px min(10%,140px) 120px;position:relative}
.quiet-provenance p{max-width:680px;font:400 clamp(16px,1.5vw,20px)/1.7 var(--sans);letter-spacing:-.008em;color:#4f514d}
.quiet-invitation{padding:clamp(110px,12vw,185px) min(10%,140px) clamp(145px,16vw,240px);display:flex;flex-direction:column;align-items:flex-start;position:relative}
.quiet-invitation>p{font:400 clamp(30px,3.55vw,57px)/1.25 var(--serif);letter-spacing:-.028em;max-width:790px;margin-bottom:42px}
.quiet-invitation>a:not(.quiet-direct-email){font:400 16px/1.6 var(--sans);display:inline-flex;align-items:center;gap:25px;padding:0 0 7px;position:relative}
.quiet-invitation>a:not(.quiet-direct-email)::after{content:"";height:1px;background:currentColor;position:absolute;left:0;right:0;bottom:0;transform-origin:left;transition:transform .65s var(--ease)}
.quiet-invitation .link-arrow{display:inline-block;font-size:17px;line-height:1;transition:transform .55s var(--ease)}
.quiet-direct-email{font-size:12px;color:var(--muted);margin-top:35px}
@media(hover:hover){.quiet-invitation>a:not(.quiet-direct-email):hover::after{transform:scaleX(.56)}.quiet-invitation>a:not(.quiet-direct-email):hover .link-arrow{transform:translate(3px,-3px)}.quiet-direct-email:hover{opacity:.55}}
.quiet-direct-email{transition:opacity .4s var(--ease)}
.quiet-footer{border-top:1px solid var(--line);padding:28px var(--gutter) 36px;display:flex;justify-content:space-between;gap:25px;color:var(--muted);font-size:11px;letter-spacing:.015em}
.quiet-footer>div{display:flex;gap:35px}.quiet-footer a{transition:opacity .35s var(--ease)}
@media(hover:hover){.quiet-footer a:hover{opacity:.55}}

/* Fine rules are not decorative sections; they set the rhythm of the page. */
.quiet-description::before,.quiet-provenance::before,.quiet-invitation::before{content:"";height:1px;position:absolute;left:0;right:0;top:0;background:var(--line);transform-origin:0 50%}

/* Opening wordmark: reverse letter entrance and a smooth exit. */
#loader{display:none}
html.js:not(.skip-intro) #loader:not([hidden]){position:fixed;inset:0;z-index:300;background:var(--ink);display:grid;place-items:center;transform:translate3d(0,0,0);transition:transform .75s var(--inout);pointer-events:auto}
html.js:not(.skip-intro) #loader.out{transform:translate3d(0,-101%,0);pointer-events:none}
.loader-mark{display:flex;align-items:baseline;font:300 clamp(34px,7vw,84px)/1 var(--sans);letter-spacing:.18em;color:var(--paper);text-transform:uppercase}
.loader-prefix{display:inline-block;opacity:0;transform:translateY(8px);animation:prefix-intro .55s var(--ease) .06s forwards}
.loader-verse{display:inline-flex;overflow:hidden}
.loader-verse span{display:inline-block;transform:translateY(120%);animation:letter-intro .62s var(--ease) forwards}
.loader-verse span:nth-child(1){animation-delay:.52s}
.loader-verse span:nth-child(2){animation-delay:.44s}
.loader-verse span:nth-child(3){animation-delay:.36s}
.loader-verse span:nth-child(4){animation-delay:.28s}
.loader-verse span:nth-child(5){animation-delay:.20s}
@keyframes prefix-intro{to{opacity:1;transform:translateY(0)}}
@keyframes letter-intro{to{transform:translateY(0)}}

/* Opening lines rise separately and reveal into their final typeset position. */
html.js:not(.skip-intro) .hero-line-inner{transform:translate3d(0,112%,0);transition:transform 1.02s var(--ease)}
html.js:not(.skip-intro).intro-complete .hero-line-inner{transform:translate3d(0,0,0)}
html.js:not(.skip-intro) .hero-line:nth-child(1) .hero-line-inner{transition-delay:.09s}
html.js:not(.skip-intro) .hero-line:nth-child(2) .hero-line-inner{transition-delay:.23s}
html.js:not(.skip-intro) .quiet-hero-copy>p{opacity:0;transform:translate3d(0,12px,0);transition:opacity 1s var(--ease) .36s,transform 1s var(--ease) .36s}
html.js:not(.skip-intro).intro-complete .quiet-hero-copy>p{opacity:1;transform:none}
html.js:not(.skip-intro) .quiet-header>*{opacity:0;transform:translateY(5px);transition:opacity .65s var(--ease) .14s,transform .65s var(--ease) .14s}
html.js:not(.skip-intro).intro-complete .quiet-header>*{opacity:1;transform:none}

/* Scroll motion never conceals text entirely, even before its reveal. */
[data-reveal]{opacity:1;transform:none}
html.has-motion [data-reveal]:not(.is-visible){opacity:.78;transform:translate3d(0,13px,0)}
html.has-motion [data-reveal]{transition:opacity 1.15s var(--ease),transform 1.15s var(--ease)}
html.has-motion [data-reveal].is-visible{opacity:1;transform:translate3d(0,0,0)}
html.has-motion .quiet-detail{transition-delay:.10s}
html.has-motion .quiet-description::before,html.has-motion .quiet-provenance::before,html.has-motion .quiet-invitation::before{transition:transform 1.3s var(--ease)}
html.has-motion .quiet-description:not(.is-visible)::before,html.has-motion .quiet-provenance:not(.is-visible)::before,html.has-motion .quiet-invitation:not(.is-visible)::before{transform:scaleX(.975)}

/* Contact and information pages. Same type scale, equally calm. */
.subpage{max-width:1530px;margin:0 auto;padding:28px clamp(27px,7.6vw,140px) clamp(115px,12vw,180px);min-height:calc(100svh - 185px)}
.sub-kicker{display:flex;justify-content:space-between;gap:20px}.tag{font-size:11px;letter-spacing:.03em;color:var(--muted)}
.subpage h1{font:400 clamp(58px,7.9vw,118px)/1.12 var(--serif);letter-spacing:-.039em;margin:clamp(105px,11vw,165px) 0 38px;text-wrap:balance}
.subpage h1 em{font-style:italic;letter-spacing:-.044em}
.sub-intro{font:400 clamp(18px,1.85vw,25px)/1.55 var(--sans);max-width:690px;margin-bottom:clamp(72px,8vw,120px);color:#51534f}
.site-footer{display:flex;justify-content:space-between;align-items:center;min-height:102px;padding:30px var(--gutter);border-top:1px solid var(--line);gap:30px}
.site-footer .wordmark{font-size:11px}
.footer-links{display:flex;gap:clamp(14px,3vw,38px);flex-wrap:wrap;justify-content:flex-end}
.footer-links span,.footer-links a{color:var(--muted);font-size:11px}
.footer-links a{transition:opacity .35s var(--ease)}
@media(hover:hover){.footer-links a:hover{opacity:.55}}
/* Calendar stays usable immediately; the external iframe is never animated. */
.booking-section{padding:0 0 clamp(90px,10vw,140px)}
.booking-intro{display:flex;justify-content:space-between;align-items:baseline;gap:35px;margin:0 0 35px;padding-top:35px;border-top:1px solid var(--line)}
.booking-intro h2{font:400 clamp(35px,3.4vw,52px)/1.2 var(--serif);letter-spacing:-.028em}
.booking-intro p{font-size:14px;line-height:1.7;color:var(--muted);max-width:345px}
.cal-frame{background:#fff;width:100%;height:clamp(670px,78svh,855px);min-height:670px;overflow:auto;border:1px solid rgba(33,35,31,.15);overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.cal-frame #my-cal-inline-15min{height:100%;min-height:100%}
.cal-fallback{font-size:12px;color:var(--muted);line-height:1.7;margin-top:16px}.cal-fallback a{text-decoration:underline;text-underline-offset:4px}
/* Netlify form — minimal ruled fields. */
.form-layout{display:grid;grid-template-columns:minmax(220px,.47fr) minmax(0,1fr);gap:clamp(45px,9vw,145px);padding-top:45px;border-top:1px solid var(--line)}
.form-aside h2{font:400 clamp(27px,2.4vw,36px)/1.26 var(--serif);letter-spacing:-.022em}.form-aside p{color:var(--muted);font-size:13px;line-height:1.82;max-width:350px;margin-top:20px}
.form-aside>a{font-size:13px;border-bottom:1px solid currentColor;display:inline-block;padding-bottom:5px;margin-top:23px}
.form-fields{display:grid;grid-template-columns:1fr 1fr;gap:25px 27px}
.field{min-width:0;display:flex;flex-direction:column;gap:6px}.field.wide{grid-column:1/-1}.field label{font-size:12px}.field label span{color:var(--muted)}
.field input,.field textarea,.field select{border:0;border-bottom:1px solid #b1b3ac;background:transparent;color:var(--ink);border-radius:0;padding:12px 0 13px;font-size:15px;width:100%;outline-offset:5px;appearance:none;transition:border-color .32s var(--ease)}
.field textarea{min-height:110px;resize:vertical}.field input::placeholder,.field textarea::placeholder{color:#878982}
.field input:focus,.field textarea:focus,.field select:focus{border-bottom-color:var(--ink)}
.form-submit{display:flex;flex-wrap:wrap;align-items:center;gap:20px;margin-top:30px}
.send-button{background:var(--ink);color:var(--paper);border:1px solid var(--ink);padding:16px 23px;font-size:13px;transition:background-color .35s var(--ease),color .35s var(--ease)}
@media(hover:hover){.send-button:hover{background:transparent;color:var(--ink)}}
.form-note{max-width:290px;font-size:12px;line-height:1.65;color:var(--muted)}.form-note a{text-decoration:underline;text-underline-offset:4px}
.honeypot{position:absolute!important;left:-9999px!important;height:1px!important;width:1px!important;overflow:hidden!important}
/* Policy & confirmation */
.info{max-width:760px;border-top:1px solid var(--line);padding-top:32px}.info p{font-size:15px;color:var(--muted);line-height:1.85;margin-bottom:24px}.info h2{font:400 31px/1.25 var(--serif);margin:34px 0 17px}
.info a,.inline-link{border-bottom:1px solid currentColor;padding-bottom:4px}
.success{font:400 clamp(23px,2.9vw,39px)/1.46 var(--serif);max-width:820px}.inline-link{display:inline-block;margin-top:38px;font-size:14px}
/* The subpages enter calmly, but the calendar itself is not transitioned. */
html.js .subpage>.sub-kicker,html.js .subpage>h1,html.js .subpage>.sub-intro{animation:sub-enter .86s var(--ease) both}
html.js .subpage>h1{animation-delay:.08s}html.js .subpage>.sub-intro{animation-delay:.19s}
@keyframes sub-enter{from{opacity:.45;transform:translate3d(0,10px,0)}to{opacity:1;transform:none}}
/* Progressive same-origin cross-page dissolves, where the browser supports them. */
@view-transition{navigation:auto}
::view-transition-old(root){animation:page-out .22s ease-out both}
::view-transition-new(root){animation:page-in .46s var(--ease) both}
@keyframes page-out{to{opacity:0}}
@keyframes page-in{from{opacity:.5}to{opacity:1}}
@media(max-width:780px){
  .site-header{min-height:78px}.quiet-intro{min-height:80svh;padding:100px 0}
  .quiet-description{min-height:470px;padding:95px 2%;gap:35px}.quiet-provenance{padding:70px 2% 95px}.quiet-invitation{padding:110px 2% 155px}
  .booking-intro{display:block}.booking-intro p{margin-top:14px}.cal-frame{height:765px;min-height:680px}
  .form-layout{grid-template-columns:1fr;gap:55px}.form-layout form{order:0}.form-aside{order:1;border-top:1px solid var(--line);padding-top:26px}
}
@media(max-width:540px){
  :root{--gutter:26px}
  .site-header{min-height:76px}.site-header .wordmark{font-size:11px}.quiet-header-link,.sub-header-link{font-size:11px}
  .quiet-main{padding:0 26px}.quiet-intro{min-height:calc(90svh - 76px);padding:80px 0 100px}
  .quiet-intro h1{font-size:clamp(38px,10.5vw,57px);line-height:1.23}
  .quiet-hero-copy>p{font-size:15px;margin-top:36px;max-width:300px}
  .quiet-description{padding:100px 0;min-height:440px;gap:28px}
  .quiet-lead{font-size:clamp(31px,8vw,46px)}.quiet-detail{font-size:15px}
  .quiet-provenance{padding:72px 0 90px}.quiet-provenance p{font-size:15px}
  .quiet-invitation{padding:100px 0 145px}.quiet-invitation>p{font-size:36px}
  .quiet-footer{padding:27px 26px;flex-direction:column;gap:19px}.quiet-footer>div{gap:30px}
  .subpage{padding:22px 26px 100px}.sub-kicker span:last-child{display:none}.subpage h1{font-size:clamp(53px,11.7vw,75px);margin:95px 0 30px}.sub-intro{font-size:18px;margin-bottom:70px}
  .booking-intro h2{font-size:clamp(32px,8vw,43px)}.booking-intro{margin-bottom:28px}.cal-frame{height:735px;min-height:650px}
  .form-fields{grid-template-columns:1fr;gap:25px}.field.wide{grid-column:1}.form-submit{align-items:stretch;flex-direction:column}.send-button{width:100%}
  .site-footer{align-items:flex-start;flex-direction:column;gap:23px}.footer-links{justify-content:flex-start;gap:18px}
}
/* Motion is a courtesy, never a prerequisite for reading or booking. */
@media(prefers-reduced-motion:reduce){
  html,body{scroll-behavior:auto!important}
  html.js #loader{display:none!important}
  .hero-line-inner,.quiet-hero-copy>p,.quiet-header>*,html.has-motion [data-reveal]{opacity:1!important;transform:none!important;transition:none!important}
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  ::view-transition-old(root),::view-transition-new(root){animation:none!important}
}

/* Quiet provenance: a verifiable path to the founder, without a separate promotional section. */
.quiet-provenance p a{text-decoration:underline;text-decoration-color:rgba(33,35,31,.35);text-underline-offset:4px;text-decoration-thickness:1px;transition:text-decoration-color .35s var(--ease),opacity .35s var(--ease)}
@media(hover:hover){.quiet-provenance p a:hover{text-decoration-color:currentColor;opacity:.68}}

/* Typographic finishing: one family of rhythm from wordmark to small print. */
.quiet-footer,.tag,.sub-kicker,.form-note{letter-spacing:.008em}
.quiet-invitation>a:not(.quiet-direct-email),.quiet-direct-email,.form-submit button{letter-spacing:0}
.quiet-intro h1,.quiet-lead,.quiet-invitation>p,.subpage h1,.booking-intro h2,.form-aside h2{font-kerning:normal;font-synthesis:none}

/* October 2026 refinements: considered editorial display type and unbroken space. */
.quiet-intro h1{font-size:clamp(52px,6.8vw,110px);line-height:1.08;letter-spacing:-.026em}
.quiet-intro h1 em{letter-spacing:-.022em}
.quiet-lead{font-size:clamp(39px,4.75vw,76px);line-height:1.14;letter-spacing:-.018em}
.quiet-invitation>p{font-size:clamp(37px,4.3vw,70px);line-height:1.13;letter-spacing:-.02em}
.subpage h1{letter-spacing:-.025em;line-height:1.07}
.quiet-description::before,.quiet-provenance::before,.quiet-invitation::before{content:none!important;display:none!important}
.quiet-footer{border-top:none}
.quiet-invitation>a:not(.quiet-direct-email){gap:0;letter-spacing:-.016em}
.quiet-invitation .link-arrow{display:none}
@media(max-width:600px){.quiet-intro h1{font-size:clamp(45px,10.5vw,68px)}.quiet-lead{font-size:clamp(36px,8.8vw,58px)}.quiet-invitation>p{font-size:clamp(36px,8.8vw,58px)}}

/* Contact-page breadcrumb: the RE/VERSE label is a home link. */
.kicker-home{display:inline-block;position:relative;padding:5px 0;margin:-5px 0;transition:opacity .35s var(--ease)}
@media (hover:hover){.kicker-home:hover{opacity:.5}}
.kicker-home:focus-visible{outline:1px solid var(--ink);outline-offset:4px}
