/* AO / A Day Away — Japanese editorial, coastal edition */
:root{
  --paper:#F3EFE6; --paper-2:#EAE4D6;
  --ink:#1B2A2F; --ink-2:#243439;
  --muted:#586669;
  --sea:#7FA9A6; --mist:#AFC3CE; --sand:#C8B492;
  --line:rgba(27,42,47,.16);
  --on-ink-muted:rgba(243,239,230,.68);
  --on-ink-line:rgba(243,239,230,.24);
  --gut:clamp(18px,4vw,48px);
  --max:1280px;
  --ease:cubic-bezier(.2,.7,.2,1);
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font:400 16px/1.7 "DM Sans",system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.is-locked{overflow:hidden}
img{display:block;max-width:100%}
a{color:inherit}
button,input,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--sea);outline-offset:3px}
::selection{background:var(--sea);color:var(--ink)}

/* film grain over everything */
body::after{
  content:"";position:fixed;inset:0;z-index:90;pointer-events:none;opacity:.07;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}

.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gut)}
.mono{font:400 11px/1.5 "DM Mono",ui-monospace,Menlo,monospace;letter-spacing:.14em;text-transform:uppercase}
.serif{font-family:"Cormorant Garamond",Georgia,"Times New Roman",serif}
.jp{font-family:"Shippori Mincho","Hiragino Mincho ProN","Yu Mincho",serif}
em{font-style:italic}

/* photos: one shared grade so the series feels like one roll of film */
.ph{position:relative;overflow:hidden;background:var(--mist)}
.ph img{width:100%;height:100%;object-fit:cover;filter:saturate(.9) sepia(.07) contrast(.97) brightness(1.01)}
.ph--tall{aspect-ratio:4/5}
.cap{color:var(--muted);margin-top:12px}

/* ---------- reveal ---------- */
.js .rv{opacity:0;transform:translateY(18px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.js .rv.is-in{opacity:1;transform:none}

/* ---------- cover ---------- */
.cover{position:fixed;inset:0;z-index:100;background:var(--paper);display:flex;flex-direction:column;justify-content:space-between;
  padding:max(22px,env(safe-area-inset-top)) var(--gut) max(22px,env(safe-area-inset-bottom));transition:transform 1.15s var(--ease)}
.cover.is-open{transform:translateY(-101%)}
.cover[hidden]{display:none}
.cover__jp{position:absolute;right:-4vmin;top:50%;transform:translateY(-52%);font-size:78vmin;line-height:1;color:var(--ink);opacity:.045;pointer-events:none;user-select:none}
.cover__top,.cover__bot{display:flex;justify-content:space-between;color:var(--muted);position:relative}
.cover__mid{position:relative;max-width:880px;width:100%;margin:0 auto;padding-block:24px}
.cover__kicker{color:var(--muted);margin-bottom:22px}
.cover__title{font-weight:300;font-size:clamp(38px,7.4vw,92px);line-height:1;letter-spacing:-.02em}
.cover__sub{margin-top:18px;color:var(--muted);font-size:17px}
.gate{margin-top:36px;display:flex;flex-direction:column;gap:18px;align-items:flex-start;max-width:420px}
.gate__field{width:100%}
.gate__field label{display:block;color:var(--muted)}
.gate__field input{width:100%;background:transparent;border:0;border-bottom:1px solid var(--ink);padding:10px 0;font:300 28px/1.2 "Cormorant Garamond",Georgia,serif;letter-spacing:.02em;border-radius:0}
.gate__field input::placeholder{color:rgba(27,42,47,.38)}
.gate__err{min-height:1.4em;color:#8a3b2e;font-size:14px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:16px;padding:17px 26px;border:1px solid transparent;cursor:pointer;
  font:400 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.16em;text-transform:uppercase;
  transition:background .3s var(--ease),color .3s var(--ease),border-color .3s,transform .3s var(--ease)}
.btn i{font-style:normal;transition:transform .3s var(--ease)}
.btn:hover i{transform:translateX(4px)}
.btn[disabled]{opacity:.6;cursor:progress}
.cover .btn--paper{background:var(--ink);color:var(--paper)}
.cover .btn--paper:hover{background:var(--ink-2)}
.btn--paper{background:var(--paper);color:var(--ink)}
.btn--paper:hover{background:#fff}
.btn--ghost{border-color:var(--on-ink-line);color:var(--paper);background:transparent}
.btn--ghost:hover{border-color:var(--paper)}

/* ---------- bar ---------- */
.bar{position:sticky;top:0;z-index:50;background:rgba(243,239,230,.82);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.bar__in{display:flex;justify-content:space-between;align-items:center;height:52px}
.bar__brand{text-decoration:none}
.bar__nav{display:flex;gap:clamp(14px,3vw,34px)}
.bar__nav a{text-decoration:none;color:var(--muted);transition:color .2s}
.bar__nav a:hover{color:var(--ink)}
@media (max-width:520px){.bar__nav a:first-child{display:none}}
section[id]{scroll-margin-top:52px}

/* ---------- hero ---------- */
.hero{padding-top:clamp(14px,2.4vw,28px)}
.hero__frame{aspect-ratio:4/5.3;min-height:440px}
@media (min-width:760px){.hero__frame{aspect-ratio:3/2;max-height:86vh}}
.ph .hero__img{position:absolute;left:0;top:-5%;height:110%;width:100%;object-fit:cover;object-position:16% 62%;
  transform:translate3d(0,var(--py,0px),0);will-change:transform}
.hero__copy{position:absolute;left:clamp(18px,4vw,56px);top:clamp(18px,3.6vw,48px);right:30%;color:var(--ink)}
.hero__kicker{margin-bottom:clamp(10px,2vw,22px)}
.hero__title{font-weight:300;font-size:clamp(66px,13vw,190px);line-height:.84;letter-spacing:-.035em}
.hero__title .ln{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.hero__title .ln>span{display:block}
.js .hero__title .ln>span{transform:translateY(105%);transition:transform 1.3s var(--ease)}
.js.is-ready .hero__title .ln>span{transform:none}
.js.is-ready .hero__title .ln:nth-child(2)>span{transition-delay:.12s}
.hero__tag{margin-top:clamp(14px,2.4vw,28px);font-size:clamp(13px,1.3vw,16px);line-height:1.6;color:var(--ink);max-width:28ch}
.js .hero__tag,.js .hero__side{opacity:0;transition:opacity 1.4s .7s var(--ease)}
.js.is-ready .hero__tag,.js.is-ready .hero__side{opacity:1}
.hero__side{position:absolute;right:clamp(18px,3.4vw,48px);top:clamp(18px,3.6vw,48px);display:flex;flex-direction:column;align-items:flex-end;gap:14px;color:var(--ink)}
.hero__jp{writing-mode:vertical-rl;font-size:clamp(46px,7vw,104px);line-height:1;opacity:.9}

.facts{display:grid;grid-template-columns:1fr;border-top:1px solid var(--line);margin-top:clamp(28px,4vw,52px)}
.facts>div{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}
.facts dt{color:var(--muted)}
.facts dd{font-size:clamp(20px,2.2vw,28px);font-weight:400;text-align:right}
@media (min-width:760px){
  .facts{grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line)}
  .facts>div{flex-direction:column;align-items:flex-start;border-bottom:0;padding:22px 24px 22px 0}
  .facts>div+div{padding-left:24px;border-left:1px solid var(--line)}
  .facts dd{text-align:left}
}
.lead{font-weight:300;font-size:clamp(26px,3.7vw,50px);line-height:1.22;letter-spacing:-.01em;margin-top:clamp(48px,8vw,110px);max-width:26em}
@media (min-width:900px){.lead{margin-left:25%}}

/* ---------- sections ---------- */
.sec{padding-block:clamp(76px,11vw,160px)}
.sec--tint{background:var(--paper-2)}
.sl{display:flex;align-items:center;gap:12px;color:var(--muted);margin-bottom:clamp(30px,5vw,64px)}
.sl span{color:var(--ink)}
.sl::after{content:"";flex:1;height:1px;background:currentColor;opacity:.3}
.h2{font-weight:300;font-size:clamp(50px,8vw,118px);line-height:.92;letter-spacing:-.03em}
.sec p+p{margin-top:1.1em}

/* destination */
.dest{display:grid;gap:36px}
.dest__tx{display:flex;flex-direction:column;gap:0}
.dest__tx .h2{margin-bottom:clamp(24px,4vw,44px)}
.dest__tx p{max-width:46ch;color:#2b3b40}
.rows{margin-top:clamp(28px,4vw,48px);border-top:1px solid var(--line)}
.rows>div{display:flex;justify-content:space-between;gap:20px;padding:15px 0;border-bottom:1px solid var(--line)}
.rows dt{color:var(--muted);padding-top:.35em}
.rows dd{text-align:right}
@media (min-width:900px){
  .dest{grid-template-columns:repeat(12,1fr);column-gap:32px;align-items:start}
  .dest__ph{grid-column:1/6}
  .dest__tx{grid-column:7/13;padding-top:9vh}
}

/* journey */
.jour{display:grid;gap:44px}
.jour__lead{color:var(--muted);margin-top:clamp(18px,2vw,26px);max-width:40ch}
.jour__ph{order:-1}
@media (min-width:900px){
  .jour{grid-template-columns:repeat(12,1fr);column-gap:32px;align-items:start}
  .jour__tx{grid-column:1/8}
  .jour__ph{grid-column:9/13;order:0;position:sticky;top:96px}
}
.tl{--tw:64px;position:relative;list-style:none;padding:0;margin:clamp(36px,5vw,60px) 0 0}
.tl::before,.tl::after{content:"";position:absolute;left:calc(var(--tw) + 10px);top:10px;width:1px}
.tl::before{bottom:10px;background:var(--line)}
.tl::after{height:calc((100% - 20px) * var(--p,0));background:var(--ink)}
.tl li{position:relative;padding:0 0 clamp(26px,3.6vw,40px) calc(var(--tw) + 42px)}
.tl li:last-child{padding-bottom:0}
.tl time{position:absolute;left:0;top:.62em;width:var(--tw);font:400 12px/1 "DM Mono",monospace;letter-spacing:.08em;color:var(--muted)}
.tl li::before{content:"";position:absolute;left:calc(var(--tw) + 6px);top:.72em;width:9px;height:9px;border-radius:50%;background:var(--paper-2);border:1px solid var(--ink);transition:background .5s var(--ease),transform .5s var(--ease)}
.tl li.is-on::before{background:var(--ink);transform:scale(1.15)}
.tl h3{font:400 clamp(26px,3vw,36px)/1.1 "Cormorant Garamond",Georgia,serif}
.tl p{color:var(--muted);font-size:15px;margin-top:4px}
.info{margin-top:clamp(44px,6vw,80px);border-top:1px solid var(--line)}
.info>div{display:grid;grid-template-columns:130px 1fr;gap:16px;padding:16px 0;border-bottom:1px solid var(--line)}
.info dt{color:var(--muted);padding-top:.3em}
@media (max-width:480px){.info>div{grid-template-columns:1fr;gap:2px}}

/* rsvp */
.sec--ink{background:var(--ink);color:var(--paper)}
.sec--ink .sl{color:var(--on-ink-muted)}
.sec--ink .sl span{color:var(--paper)}
.rsvp__grid{display:grid;gap:44px}
.rsvp__intro p{color:var(--on-ink-muted);max-width:36ch;margin-top:clamp(18px,2.4vw,28px)}
.rsvp__intro strong{color:var(--paper);font-weight:500}
.demo{margin-top:22px;color:#E8C9A0;border-left:1px solid #E8C9A0;padding-left:12px;max-width:42ch}
@media (min-width:900px){
  .rsvp__grid{grid-template-columns:repeat(12,1fr);column-gap:32px;align-items:start}
  .rsvp__intro{grid-column:1/6}
  .rsvp__main{grid-column:7/13}
}
.form{display:flex;flex-direction:column;gap:clamp(26px,3.4vw,38px)}
.field{border:0;padding:0;min-width:0}
.field>label.mono,.field>legend{display:block;color:var(--on-ink-muted);margin-bottom:6px;padding:0}
.opt{opacity:.7;text-transform:none;letter-spacing:.04em}
.field input[type=text],.field textarea{width:100%;background:transparent;border:0;border-bottom:1px solid var(--on-ink-line);border-radius:0;padding:10px 0;
  font:300 clamp(26px,3.2vw,34px)/1.25 "Cormorant Garamond",Georgia,serif;color:var(--paper);transition:border-color .3s;resize:none}
.field textarea{font:300 18px/1.6 "DM Sans",sans-serif;padding-top:12px}
.field input::placeholder,.field textarea::placeholder{color:rgba(243,239,230,.34)}
.field input:focus,.field textarea:focus{outline:0;border-bottom-color:var(--paper)}
.choices{display:flex;flex-direction:column;gap:10px}
.choices legend{margin-bottom:12px}
.choice{display:flex;gap:16px;align-items:center;padding:17px 20px;border:1px solid var(--on-ink-line);cursor:pointer;position:relative;transition:background .35s var(--ease),border-color .35s,color .35s}
.choice:hover{border-color:rgba(243,239,230,.6)}
.choice input{position:absolute;opacity:0;inset:0;cursor:pointer}
.choice:has(input:focus-visible){outline:2px solid var(--sea);outline-offset:3px}
.choice__mark{flex:none;width:16px;height:16px;border-radius:50%;border:1px solid currentColor;position:relative;opacity:.8}
.choice__mark::after{content:"";position:absolute;inset:3px;border-radius:50%;background:currentColor;transform:scale(0);transition:transform .3s var(--ease)}
.choice__body{display:flex;flex-direction:column;line-height:1.3}
.choice__body b{font-weight:400;font-size:clamp(22px,2.6vw,27px)}
.choice__body small{font-size:13.5px;opacity:.7;margin-top:2px}
.choice.is-checked{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.choice.is-checked .choice__mark::after{transform:scale(1)}
.err{min-height:0;color:#F0B5A5;font-size:14px;margin-top:8px}
.err:empty{display:none}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form__foot{display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px}
.form__msg{color:var(--on-ink-muted);font-size:14px}
.form__msg:empty{display:none}
.btn.is-loading{position:relative;overflow:hidden}
.btn.is-loading::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:40%;background:var(--ink);animation:ld 1.1s var(--ease) infinite}
@keyframes ld{from{transform:translateX(-100%)}to{transform:translateX(260%)}}

/* result + ticket */
.result{animation:up .9s var(--ease) both}
@keyframes up{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.result__kicker{color:var(--on-ink-muted)}
.result__title{font-weight:300;font-size:clamp(44px,6.4vw,84px);line-height:.98;letter-spacing:-.025em;margin-top:14px;outline:0}
.result__sub{margin-top:16px;color:var(--on-ink-muted);max-width:42ch}
.ticket{margin-top:34px;background:var(--paper);color:var(--ink);display:grid;grid-template-columns:1fr;position:relative;box-shadow:0 30px 60px -28px rgba(0,0,0,.6)}
.ticket[hidden]{display:none}
.ticket__photo{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--mist)}
.ticket__photo img{width:100%;height:100%;object-fit:cover;object-position:0 50%;filter:saturate(.9) sepia(.06)}
.ticket__photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(27,42,47,.28),rgba(27,42,47,0) 35%,rgba(27,42,47,.5))}
.ticket__cap{position:absolute;left:20px;top:18px;color:var(--paper);z-index:1}
.ticket__ph-title{position:absolute;left:20px;bottom:14px;z-index:1;color:var(--paper);font-weight:300;font-size:clamp(40px,7vw,64px);line-height:1;letter-spacing:-.02em}
.ticket__body{padding:24px 22px 20px;border-top:1px dashed rgba(27,42,47,.35);position:relative}
.ticket__kicker{color:var(--muted);margin-bottom:22px}
.ticket__lbl{color:var(--muted);font-size:10px}
.ticket__name{font-weight:400;font-size:clamp(34px,5vw,44px);line-height:1.05;margin:2px 0 22px;word-break:break-word}
.ticket__grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}
.ticket__grid .serif{font-size:22px;line-height:1.2}
.ticket__foot{display:flex;justify-content:space-between;align-items:flex-end;margin-top:24px;color:var(--muted)}
.bars{display:flex;align-items:flex-end;gap:2px;height:30px}
.bars i{display:block;background:var(--ink);width:2px;height:100%}
@media (min-width:640px){
  .ticket{grid-template-columns:1.45fr 1fr}
  .ticket__photo{aspect-ratio:auto;min-height:340px}
  .ticket__body{border-top:0;border-left:1px dashed rgba(27,42,47,.35)}
}
.result__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
#saveMsg{margin-top:14px}

/* footer */
.foot{background:var(--ink);color:var(--on-ink-muted);border-top:1px solid var(--on-ink-line)}
.foot__in{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding-block:22px}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important;transition-delay:0s!important}
  .js .rv{opacity:1;transform:none}
  .js .hero__title .ln>span{transform:none}
  .js .hero__tag,.js .hero__side{opacity:1}
  .hero__img{transform:none}
}
