/* The Sweet Letters: a letter you open */
:root{
  --paper:#fbf6f1; --paper-2:#f6ece6; --blush:#f3e0dc; --rose:#e6b2b8; --rose-d:#b9707f;
  --wax:#a3283f; --ink:#3a1e26; --ink-2:#6d5158; --ink-3:#9a8187; --sky:#cfe1ec; --sunset:#f3c3a8;
  --line:rgba(58,30,38,.14); --line-2:rgba(58,30,38,.08);
  --serif:"Fraunces", Georgia, "Times New Roman", serif;
  --sans:"Jost", "Helvetica Neue", Arial, sans-serif;
  --script:"Great Vibes", "Brush Script MT", cursive;
  --pad:clamp(20px, 4.4vw, 64px);
  --ease:cubic-bezier(.22,.8,.24,1);
  --top-h:72px;
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html,body{overflow-x:clip}
html{-webkit-text-size-adjust:100%;scroll-padding-top:90px}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-weight:350;font-size:17px;line-height:1.6;
  font-variation-settings:"SOFT" 50;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:200;background:url(/img/paper.png);opacity:.55}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
input,textarea{font:inherit;color:inherit}
h1,h2,h3{font-family:var(--serif);font-weight:380;line-height:1.08;letter-spacing:-.012em;margin:0;font-variation-settings:"SOFT" 50,"opsz" 96}
h1{font-size:clamp(38px,5.2vw,68px)}
h2{font-size:clamp(30px,3.6vw,48px)}
p{margin:0 0 1em}
.script{font-family:var(--script);font-weight:400;font-size:1.9em;line-height:1;letter-spacing:0;color:var(--wax);margin:0}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;z-index:300;background:var(--ink);color:var(--paper);padding:8px 14px}
.skip:focus{left:8px}
.nowrap{white-space:nowrap}
:focus-visible{outline:2px solid var(--wax);outline-offset:3px}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}

/* small labels: used sparingly, never dotted */
.issue-no{font-family:var(--sans);font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--rose-d);margin:0 0 18px}
.arrow{font-family:var(--sans);font-size:13px;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;display:inline-flex;gap:.6em;align-items:center;padding:6px 0;border-bottom:1px solid currentColor}
.arrow span{transition:transform .4s var(--ease)}
.arrow:hover span{transform:translateX(5px)}
.linkish{font-family:var(--sans);font-size:13px;letter-spacing:.12em;text-transform:uppercase;text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px;color:var(--ink-2)}
.linkish:hover{color:var(--wax)}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 34px;background:var(--ink);color:var(--paper);
  font-family:var(--sans);font-size:13px;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;transition:background .3s}
.btn:hover{background:var(--wax)}
.btn-full{width:100%}
.small{font-size:14px;color:var(--ink-3)}
.field{display:flex;border-bottom:1px solid var(--ink)}
.field input{flex:1;min-width:0;border:0;background:transparent;padding:12px 0;font-size:17px;outline:none}
.field button{font-family:var(--sans);font-size:13px;letter-spacing:.18em;text-transform:uppercase;padding:0 4px 0 14px}
.thanks{font-style:italic;color:var(--wax);margin-top:12px}

/* notice + header */
.notice{margin:0;text-align:center;font-family:var(--sans);font-size:12px;letter-spacing:.12em;padding:9px 16px;background:var(--blush);color:var(--ink-2)}
.top{position:sticky;top:0;z-index:60;height:var(--top-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 var(--pad);
  background:rgba(251,246,241,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line-2);transition:background .4s,color .4s,border-color .4s}
.top-nav{display:flex;gap:28px;font-family:var(--sans);font-size:13px;letter-spacing:.14em;text-transform:uppercase}
.top-nav a{text-decoration:none;padding:6px 0;border-bottom:1px solid transparent}
.top-nav a:hover,.top-nav a[aria-current]{border-color:currentColor}
.mark{text-decoration:none;text-align:center;line-height:1;display:grid;justify-items:center}
.mark small{font-family:var(--sans);font-size:10px;letter-spacing:.38em;text-transform:uppercase;margin-bottom:3px}
.mark span{font-size:27px;font-weight:420;letter-spacing:-.01em;font-variation-settings:"SOFT" 100,"opsz" 72}
.mark em{font-family:var(--script);font-style:normal;font-size:17px;color:var(--wax);margin-top:1px}
.top-tools{display:flex;justify-content:flex-end;gap:6px}
.tool{position:relative;width:44px;height:44px;display:grid;place-items:center;text-decoration:none}
.tool b{position:absolute;top:5px;right:3px;min-width:17px;height:17px;border-radius:9px;background:var(--wax);color:#fff;font:500 10px/17px var(--sans);text-align:center;padding:0 4px}
.tool b:empty{display:none}
.top-menu{display:none;width:44px;height:44px;position:relative}
.top-menu span{position:absolute;left:11px;right:11px;height:1.4px;background:currentColor;transition:transform .35s var(--ease)}
.top-menu span:first-child{top:18px}.top-menu span:last-child{top:25px}
.top-menu[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}
.top-menu[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
.is-home .top.over{background:transparent;color:#fff;border-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
.is-home .top.over .mark em{color:#fff}
.menu{position:fixed;inset:var(--top-h) 0 0 0;z-index:59;background:var(--paper);padding:30px var(--pad);display:flex;flex-direction:column;justify-content:space-between}
.menu nav{display:grid;gap:4px}
.menu nav a{font-size:34px;text-decoration:none;padding:6px 0}
.menu-ps{color:var(--ink-2)}
.menu-ps .script{font-size:1.7em}

@media (max-width:900px){
  :root{--top-h:62px}
  .top{grid-template-columns:auto 1fr auto;padding:0 10px}
  .top-nav{display:none}
  .top-menu{display:block}
  .mark{justify-self:center}
  .mark span{font-size:22px}
  .mark em{display:none}
  .top-tools{gap:0}
  .notice{font-size:11px;letter-spacing:.04em;padding:8px 10px}
}

/* footer */
.foot{background:var(--ink);color:#f3e6e3;padding:90px var(--pad) 30px;margin-top:0}
.foot a{text-decoration:none;color:#f3e6e3}
.foot a:hover{color:var(--rose)}
.foot-sign .script{color:var(--rose);font-size:58px}
.foot-mark{font-size:clamp(42px,7vw,96px);line-height:1;margin:6px 0 16px;font-variation-settings:"SOFT" 100,"opsz" 144;font-weight:330}
.foot-line{max-width:34ch;color:#d8c2c4}
.foot-cols{display:grid;grid-template-columns:repeat(3,1fr) 1.4fr;gap:40px;margin:70px 0 60px}
.foot-cols h2{font-family:var(--sans);font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--rose);margin-bottom:16px}
.foot-cols nav,.foot-cols>div{display:grid;gap:8px;align-content:start}
.foot .linkish{color:#f3e6e3;text-align:left;text-decoration:none;font-family:var(--serif);font-size:17px;text-transform:none;letter-spacing:0}
.foot-news label{display:block;color:#d8c2c4;margin-bottom:10px}
.foot-news .field{border-color:#f3e6e3}
.foot-news .thanks{color:var(--rose)}
.foot-base{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-top:1px solid rgba(255,255,255,.14);padding-top:24px;margin:0;font-family:var(--sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#cdb4b8}
@media (max-width:900px){.foot-cols{grid-template-columns:1fr 1fr}.foot-news{grid-column:1/-1}}

/* product card (no rounded boxes) */
.card{position:relative;min-width:0}
.card-img{display:block;position:relative;aspect-ratio:4/5.4;overflow:hidden;background:var(--blush)}
.card-img img{width:100%;height:100%;object-fit:cover;object-position:50% 22%;transition:opacity .7s var(--ease),transform 1.2s var(--ease)}
.card-img img.alt{position:absolute;inset:0;opacity:0}
.card:hover .card-img img.alt{opacity:1}
.card:hover .card-img img{transform:scale(1.025)}
.card-tag{font-style:italic;font-size:14px;color:var(--rose-d);margin:14px 0 2px}
.card-name{font-size:18px;font-weight:380;line-height:1.25;letter-spacing:0}
.card-name a{text-decoration:none}
.card-price{font-family:var(--sans);font-size:14px;letter-spacing:.06em;margin:6px 0 0;color:var(--ink-2)}
.love{position:absolute;top:8px;right:8px;width:42px;height:42px;display:grid;place-items:center;color:var(--ink)}
.love svg{width:21px;height:21px;transition:transform .3s var(--ease),fill .3s}
.love[aria-pressed=true] svg{fill:var(--wax);stroke:var(--wax)}
.love.pop svg{animation:pop .5s var(--ease)}
@keyframes pop{40%{transform:scale(1.35)}}

/* ------------------------------------------------ the envelope */
.open{position:fixed;inset:0;z-index:150;display:grid;place-items:center;overflow:hidden;transition:opacity .9s var(--ease)}
.open::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 30% 20%,#fff8f3 0%,#f6e3dd 45%,#e9c9c6 100%);transition:opacity .9s var(--ease)}
.open[hidden]{display:none}
.open::after{content:"";position:absolute;inset:0;background:url(/img/paper.png);opacity:.8;pointer-events:none}
.open-light{position:absolute;inset:-20%;background:radial-gradient(40% 35% at 35% 30%,rgba(255,255,255,.65),transparent 70%);pointer-events:none}
.env-wrap{position:relative;width:min(84vw,540px);perspective:1600px;margin-top:-4vh}
.env{position:relative;width:100%;aspect-ratio:1.56;transform-style:preserve-3d;transform:rotateX(8deg) rotateZ(-1.5deg);transition:transform 1.2s var(--ease)}
.env > *{position:absolute}
.env-back{inset:0;background:#e9b9bd linear-gradient(170deg,#e5adb3,#d89aa2);box-shadow:inset 0 0 0 1px rgba(90,20,40,.08)}
.env-back::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.25) 1.2px,transparent 1.6px) 0 0/14px 14px;opacity:.6}
.env-letter{left:5%;right:5%;top:6%;height:88%;background:#fffaf5 url(/img/paper.png);box-shadow:0 1px 2px rgba(60,20,30,.15);padding:7% 8%;color:var(--ink);transform:translateY(0) translateZ(1px);will-change:transform}
.env-letter .script{font-size:clamp(28px,6vw,44px)}
.env-letter-line{font-style:italic;font-size:clamp(14px,2.4vw,18px);margin:14px 0 0;color:var(--ink-2)}
.env-letter-sign{position:absolute;right:9%;bottom:12%;font-size:clamp(26px,5vw,38px)!important}
.env-pocket{inset:0;filter:drop-shadow(0 -1px 1px rgba(80,20,35,.12));pointer-events:none;transform:translateZ(3px)}
.env-pocket i{position:absolute;inset:0;background-image:url(/img/paper.png),linear-gradient(var(--g));}
.env-pocket .l{--g:100deg,#f7dcd8,#f1cfcc;clip-path:polygon(0 0,52% 56%,0 100%)}
.env-pocket .r{--g:260deg,#f7dcd8,#efcbc8;clip-path:polygon(100% 0,48% 56%,100% 100%)}
.env-pocket .b{--g:0deg,#f5d6d2,#fbe6e2;clip-path:polygon(0 100%,50% 44%,100% 100%);filter:drop-shadow(0 -2px 2px rgba(80,20,35,.1))}
.env-to{position:absolute;left:0;right:0;bottom:12%;text-align:center;font-size:clamp(22px,4.4vw,32px)!important;color:var(--rose-d)!important}
.env-flap{left:0;right:0;top:0;height:64%;transform-origin:50% 0;transform-style:preserve-3d;transform:translateZ(4px) rotateX(0deg)}
.env-flap i{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.env-flap .out{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 64' preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23fae6e2'/%3E%3Cstop offset='1' stop-color='%23f0cfcb'/%3E%3C/linearGradient%3E%3Cfilter id='s' x='-10%25' y='-10%25' width='120%25' height='140%25'%3E%3CfeGaussianBlur stdDeviation='1.1'/%3E%3C/filter%3E%3C/defs%3E%3Cpolygon points='0,0 100,0 50,61.5' fill='%236e2236' fill-opacity='.26' filter='url(%23s)' transform='translate(0 1.4)'/%3E%3Cpolygon points='0,0 100,0 50,60' fill='url(%23g)'/%3E%3Cpolyline points='1,0.6 50,59 99,0.6' fill='none' stroke='%23fff' stroke-opacity='.55' stroke-width='.35'/%3E%3C/svg%3E") 0 0/100% 100% no-repeat}
.env-flap .in{transform:rotateX(180deg);clip-path:polygon(0 100%,100% 100%,50% 6.25%);background:#c9798a radial-gradient(circle,rgba(255,255,255,.35) 1.1px,transparent 1.5px) 0 0/12px 12px}
.open.opening .env.flap-back .env-flap{transform:translateZ(.5px) rotateX(180deg)}
.env-seal{left:50%;top:60%;width:clamp(74px,17vw,104px);height:clamp(74px,17vw,104px);transform:translate(-50%,-56%) translateZ(5px);border-radius:50%;filter:drop-shadow(0 4px 5px rgba(70,10,25,.35));transition:transform .35s var(--ease)}
.env-seal:focus{outline:none}.env-seal:focus-visible{outline:2px solid #fff;outline-offset:4px}
.env-seal:hover{transform:translate(-50%,-56%) translateZ(5px) scale(1.05)}
.env-seal .seal,.half .seal{width:100%;height:100%}
.half{left:50%;top:60%;width:clamp(74px,17vw,104px);height:clamp(74px,17vw,104px);margin-left:calc(clamp(74px,17vw,104px) / -2);margin-top:calc(clamp(74px,17vw,104px) * -.56);z-index:6;visibility:hidden;filter:drop-shadow(0 4px 5px rgba(70,10,25,.35))}
.half.h1{clip-path:polygon(0 0,52% 0,46% 22%,55% 40%,44% 58%,53% 78%,47% 100%,0 100%)}
.half.h2{clip-path:polygon(52% 0,100% 0,100% 100%,47% 100%,53% 78%,44% 58%,55% 40%,46% 22%)}
.open.cracked .env-seal{visibility:hidden}
.open.cracked .half{visibility:visible}
.env-shadow{position:absolute;left:8%;right:8%;bottom:-9%;height:14%;background:radial-gradient(closest-side,rgba(80,25,40,.28),transparent);filter:blur(6px);z-index:-1}
.open-hint{position:absolute;bottom:13vh;left:0;right:0;text-align:center;margin:0;transition:opacity .4s}
.open-hint .script{font-size:30px;color:var(--rose-d);animation:breathe 2.6s ease-in-out infinite}
@keyframes breathe{50%{opacity:.45}}
.open-skip{position:absolute;top:18px;right:18px;font-family:var(--sans);font-size:12px;letter-spacing:.2em;text-transform:uppercase;padding:12px 14px;color:var(--ink-2)}
.open.opening .open-hint{opacity:0}
.open.opening .env-flap{transform:translateZ(4px) rotateX(180deg);transition:transform .7s cubic-bezier(.5,.05,.3,1)}
.open.opening .env{transform:rotateX(0) rotateZ(0)}
.open.lift .env-letter{transform:translateY(-58%) translateZ(1px);transition:transform .9s cubic-bezier(.3,.7,.2,1)}
.open.drop .env-back,.open.drop .env-pocket,.open.drop .env-flap,.open.drop .env-shadow{transform:translateY(70vh);opacity:0;transition:transform 1s cubic-bezier(.6,0,.6,1),opacity .8s .2s}
.open.drop .env-back{transform:translateY(70vh)}.open.drop .env-pocket{transform:translateY(70vh) translateZ(3px)}.open.opening.drop .env.flap-back .env-flap{transform:translateY(70vh) translateZ(.5px) rotateX(180deg)}
.open.bloom::before,.open.bloom::after,.open.bloom .open-light{opacity:0;transition:opacity .9s}
.open.gone{opacity:0;pointer-events:none}
.open.calm *{transition-duration:.5s!important}

/* ------------------------------------------------ hero */
.hero{position:relative;height:calc(100svh - 34px);min-height:560px;overflow:hidden;background:#d9b7b8;margin-top:calc(var(--top-h) * -1);color:#fff}
.hero-film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(40,10,20,.35),transparent 22%,transparent 52%,rgba(40,10,20,.55))}
.hero-copy{position:absolute;left:var(--pad);bottom:clamp(40px,9vh,96px);max-width:640px}
.hero h1{font-size:clamp(44px,6.4vw,92px);font-weight:340;line-height:1;text-shadow:0 2px 30px rgba(40,10,20,.25);font-variation-settings:"SOFT" 100,"opsz" 144}
.hero-sub{font-size:clamp(17px,1.5vw,20px);margin:20px 0 26px;max-width:32ch;font-style:italic}
.hero-go{display:inline-flex;gap:14px;align-items:center;min-height:54px;padding:0 30px;background:#fffaf5;color:var(--ink);text-decoration:none;font-family:var(--sans);font-size:13px;letter-spacing:.2em;text-transform:uppercase;transition:background .3s,color .3s}
.hero-go:hover{background:var(--wax);color:#fff}
.hero-ps{position:absolute;right:var(--pad);bottom:clamp(44px,9vh,100px);margin:0;max-width:300px;text-align:right;font-style:italic}
.hero-ps .script{color:#fff;font-size:34px;margin-right:4px}
.hero-sound{position:absolute;right:var(--pad);top:calc(var(--top-h) + 20px);font-family:var(--sans);font-size:12px;letter-spacing:.2em;text-transform:uppercase;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.6)}
@media (max-width:700px){
  .hero{height:calc(100svh - 52px)}
  .hero-ps{left:var(--pad);right:auto;text-align:left;top:calc(var(--top-h) + 22px);bottom:auto;font-size:15px;max-width:230px}
  .hero-ps .script{font-size:28px}
  .hero-sound{top:calc(var(--top-h) + 30px)}
  .hero-go{width:auto}
}

/* ------------------------------------------------ dearest you */
.dear{display:grid;grid-template-columns:5fr 7fr;gap:clamp(30px,6vw,110px);align-items:center;padding:clamp(80px,12vw,170px) var(--pad);max-width:1400px;margin:0 auto}
.dear-photo{position:relative;transform:rotate(-2.5deg);background:#fff;padding:12px 12px 52px;box-shadow:0 18px 40px -20px rgba(70,25,40,.4)}
.dear-photo img{aspect-ratio:1;object-fit:cover;width:100%;height:auto}
.tape,.pin-tape{position:absolute;top:-14px;left:50%;width:110px;height:30px;margin-left:-55px;background:rgba(240,190,196,.72);transform:rotate(-4deg);box-shadow:0 1px 2px rgba(0,0,0,.06);
  -webkit-mask:linear-gradient(90deg,transparent 0 3px,#000 3px calc(100% - 3px),transparent 0) ;z-index:2}
.dear-paper{position:relative;font-size:clamp(20px,1.9vw,26px);line-height:1.5;max-width:30ch}
.dear-paper .big{font-size:1.5em;font-style:italic;line-height:1.2;color:var(--wax)}
.dear-hi{font-size:clamp(46px,5vw,70px);margin-bottom:26px}
.dear-xo{font-size:clamp(38px,4vw,54px);margin-top:20px}
.reveal-lines .ln,.reveal-lines .script{opacity:0;transform:translateY(14px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal-lines.in .ln,.reveal-lines.in .script{opacity:1;transform:none}
.reveal-lines.in > :nth-child(2){transition-delay:.12s}.reveal-lines.in > :nth-child(3){transition-delay:.24s}
.reveal-lines.in > :nth-child(4){transition-delay:.36s}.reveal-lines.in > :nth-child(5){transition-delay:.48s}
@media (max-width:800px){.dear{grid-template-columns:1fr}.dear-photo{width:76%;justify-self:center}}

/* ------------------------------------------------ issue: every sweet thing */
.issue{padding-bottom:clamp(70px,10vw,140px)}
.issue-spread{margin:0;height:min(92vh,980px);overflow:hidden}
.issue-spread picture{display:block;height:100%}
.issue-spread img{width:100%;height:100%;object-fit:cover;object-position:50% 12%}
.issue-text{max-width:620px;margin:-170px 0 0 var(--pad);position:relative;background:var(--paper);padding:48px 52px 46px 0}
.issue-text p:not(.issue-no){font-size:19px;color:var(--ink-2);max-width:40ch}
.issue-text h2,.cozy-letter h2{margin-bottom:18px}
.rail{margin-top:46px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0 var(--pad);cursor:grab}
.rail::-webkit-scrollbar{display:none}
.rail.drag{cursor:grabbing;scroll-snap-type:none}
.rail-track{display:flex;gap:clamp(14px,2vw,28px);width:max-content;padding-right:var(--pad)}
.rail .card{width:clamp(240px,23vw,340px);scroll-snap-align:start}
@media (max-width:700px){
  .issue-spread{height:118vw}
  .issue-text{margin:-60px 14px 0 0;padding:34px var(--pad) 10px}
  .rail .card{width:68vw}
}

/* ------------------------------------------------ cozy */
.cozy{display:grid;grid-template-columns:7fr 5fr;gap:0 clamp(30px,5vw,90px);padding:clamp(60px,8vw,120px) var(--pad);background:var(--paper-2);align-items:center}
.cozy-photo{margin:0;aspect-ratio:1/1;overflow:hidden}
.cozy-photo img{width:100%;height:100%;object-fit:cover}
.cozy-letter p:not(.issue-no):not(.script){font-size:19px;color:var(--ink-2);max-width:36ch}
.cozy-ps{font-size:40px;margin:6px 0 26px}
.cozy-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,28px);margin-top:clamp(50px,6vw,90px)}
@media (max-width:800px){.cozy{grid-template-columns:1fr}.cozy-letter{padding-top:36px}.cozy-grid{grid-template-columns:1fr 1fr}}

/* ------------------------------------------------ pinboard */
.board-sec{padding:clamp(80px,10vw,150px) var(--pad) clamp(60px,8vw,100px)}
.board-head{max-width:640px;margin:0 auto 30px;text-align:center}
.board-head p:not(.issue-no){color:var(--ink-2);margin-top:16px}
.board-how{display:block;font-style:italic;color:var(--rose-d)}
.board{position:relative;height:clamp(900px,74vw,1040px);max-width:1360px;margin:0 auto;background:
  radial-gradient(circle at 20% 15%,rgba(255,255,255,.55),transparent 40%),
  repeating-linear-gradient(45deg,rgba(185,112,127,.05) 0 2px,transparent 2px 7px),#efd9d5;
  box-shadow:inset 0 0 0 10px #f6e7e3,inset 0 0 0 11px rgba(58,30,38,.08),inset 0 30px 60px -40px rgba(58,30,38,.3);touch-action:pan-y}
.pin{position:absolute;margin:0;width:clamp(150px,15vw,210px);background:#fffdf9;padding:10px 10px 12px;box-shadow:0 10px 24px -14px rgba(60,20,35,.45),0 1px 2px rgba(60,20,35,.12);
  transform:rotate(var(--r,0deg));transition:transform .45s var(--ease),box-shadow .3s;user-select:none;-webkit-user-select:none;touch-action:pan-y;will-change:transform}
.pin .pin-tape{width:76px;margin-left:-38px;top:-12px;height:24px;transform:rotate(calc(var(--r,0deg) * -1.4))}
.pin:nth-child(3n) .pin-tape{background:rgba(207,225,236,.8)}
.pin:nth-child(3n+1) .pin-tape{background:rgba(243,195,168,.75)}
.pin-img{display:block;-webkit-user-drag:none}
.pin img{aspect-ratio:4/5;object-fit:cover;object-position:50% 25%;width:100%;height:auto;pointer-events:none}
.pin figcaption{display:flex;justify-content:space-between;gap:8px;font-size:13.5px;line-height:1.25;margin-top:9px;padding-right:26px}
.pin figcaption a{text-decoration:none;font-style:italic}
.pin figcaption span{font-family:var(--sans);font-size:12px;color:var(--ink-3);white-space:nowrap}
.pin .love{top:auto;bottom:4px;right:2px;width:36px;height:36px}
.pin .love svg{width:18px;height:18px}
.pin.held{transform:rotate(0deg) scale(1.05);box-shadow:0 30px 40px -18px rgba(60,20,35,.5);transition:box-shadow .3s,transform .25s;cursor:grabbing;z-index:999!important}
.board.ready .pin{cursor:grab}
.board-foot{max-width:1360px;margin:24px auto 0;display:flex;justify-content:space-between;align-items:center;gap:20px}
@media (max-width:700px){.board{height:1520px}.pin{width:42vw}.pin figcaption{font-size:12.5px}}

/* ------------------------------------------------ journal on home */
.jhome{padding:clamp(70px,9vw,130px) var(--pad);border-top:1px solid var(--line-2)}
.jhome-head{display:grid;grid-template-columns:1fr 1fr auto;gap:30px;align-items:end;margin-bottom:46px}
.jhome-head p{margin:0;color:var(--ink-2);max-width:40ch}
.jhome-list,.j-list{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,44px)}
.jl,.jitem{text-decoration:none;display:grid;gap:8px;align-content:start}
.jl img,.jitem img{aspect-ratio:4/5;object-fit:cover;width:100%;height:auto;margin-bottom:10px;transition:filter .5s}
.jl:hover img,.jitem:hover img{filter:saturate(1.15) brightness(1.03)}
.jl-cat{font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--rose-d)}
.jl-title{font-size:24px;line-height:1.2}
.jl-dek{color:var(--ink-2);font-size:16px}
@media (max-width:800px){.jhome-head{grid-template-columns:1fr}.jhome-list,.j-list{grid-template-columns:1fr}.jhome-list .jl:nth-child(n+2) img{aspect-ratio:16/10}}

/* ------------------------------------------------ treat postcard */
.treat{padding:clamp(70px,9vw,140px) var(--pad);background:linear-gradient(180deg,var(--paper),var(--blush))}
.postcard{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:1.1fr 1fr;background:#fffaf4 url(/img/paper.png);box-shadow:0 30px 60px -36px rgba(70,25,40,.45);transform:rotate(-.6deg)}
.pc-left{padding:clamp(30px,5vw,64px);border-right:1px solid var(--line)}
.pc-left p{color:var(--ink-2)}
.pc-left h2{margin-bottom:18px}
.pc-code b{font-family:var(--sans);letter-spacing:.2em;color:var(--wax);font-weight:500}
.pc-right{position:relative;padding:clamp(30px,5vw,64px);display:flex;flex-direction:column;justify-content:flex-end;min-height:420px}
.stamp{position:absolute;top:clamp(24px,3vw,40px);right:clamp(24px,3vw,40px);width:136px;padding:11px;transform:rotate(3deg);
  background:radial-gradient(circle,transparent 3.6px,#fff 4px) -6px -6px/12px 12px;filter:drop-shadow(0 2px 3px rgba(60,20,35,.18))}
.stamp img{width:100%;height:auto;aspect-ratio:300/380;object-fit:cover}
.stamp span{position:absolute;left:8px;right:8px;bottom:10px;text-align:center;color:#fff;font-family:var(--sans);font-size:11px;letter-spacing:.24em;text-shadow:0 1px 4px rgba(0,0,0,.4)}
.postmark{position:absolute;top:clamp(70px,7vw,100px);right:clamp(120px,14vw,170px);width:120px;height:120px;border:2px solid rgba(163,40,63,.45);border-radius:50%;display:grid;place-items:center;text-align:center;
  font-family:var(--sans);font-size:10px;letter-spacing:.2em;color:rgba(163,40,63,.6);transform:rotate(-14deg);padding:20px}
.pc-form label{display:block;font-size:34px;margin-bottom:12px}
.treat-note{text-align:center;font-family:var(--sans);font-size:12px;letter-spacing:.2em;text-transform:uppercase;margin:40px 0 0;color:var(--ink-2)}
@media (max-width:800px){.postcard{grid-template-columns:1fr;transform:none}.pc-left{border-right:0;border-bottom:1px dashed var(--line)}.pc-right{min-height:380px}.postmark{right:auto;left:var(--pad)}}

/* ------------------------------------------------ shop */
.shop-head,.ln-head,.j-head{padding:clamp(50px,7vw,100px) var(--pad) 30px;max-width:900px}
.shop-head p,.ln-head p,.j-head p:not(.issue-no){font-size:19px;color:var(--ink-2);max-width:46ch;margin-top:18px}
.filters{position:sticky;top:var(--top-h);z-index:30;background:rgba(251,246,241,.94);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-block:1px solid var(--line-2);padding:0 var(--pad)}
.filters-bar{display:flex;align-items:center;gap:24px;min-height:58px}
.filters-open{font-family:var(--sans);font-size:13px;letter-spacing:.16em;text-transform:uppercase;padding:12px 0}
.filters-open b{font-weight:500;color:var(--wax)}
.count{margin:0;font-style:italic;color:var(--ink-3);font-size:15px}
.shop-search{margin-left:auto;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line);padding:4px 0}
.shop-search svg{width:17px;height:17px}
.shop-search input{border:0;background:transparent;outline:none;width:170px;font-size:16px;padding:6px 0}
.filters-panel{display:none;grid-template-columns:repeat(4,auto);justify-content:start;gap:16px 56px;padding:10px 0 26px}
.filters.on .filters-panel{display:grid}
.filters fieldset{border:0;margin:0;padding:0;min-width:0}
.filters legend{font-family:var(--sans);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px;padding:0}
.filters fieldset div{display:flex;flex-wrap:wrap;gap:4px 18px}
.filters fieldset button{font-size:16px;padding:6px 0;color:var(--ink-2);border-bottom:1px solid transparent}
.filters fieldset button[aria-pressed=true]{color:var(--ink);border-color:var(--wax);font-style:italic}
.filters-done{display:none}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:56px clamp(14px,2vw,30px);padding:44px var(--pad) clamp(70px,8vw,120px)}
.grid .card[hidden]{display:none}
.grid-note{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;align-items:end;gap:20px;order:6}
.grid-note figure{margin:0;height:min(70vh,640px);overflow:hidden}
.grid-note img{width:100%;height:100%;object-fit:cover;object-position:50% 35%}
.grid-note .script{font-size:clamp(44px,5vw,70px);writing-mode:vertical-rl;transform:rotate(180deg)}
.grid-empty{text-align:center;padding:40px var(--pad) 120px;font-style:italic}
@media (min-width:1500px){.grid{grid-template-columns:repeat(4,1fr)}}
@media (max-width:800px){
  .grid{grid-template-columns:1fr 1fr;gap:34px 12px}
  .card-name{font-size:16px}
  .filters-bar{gap:14px}
  .shop-search input{width:100px}
  .count{display:none}
  .filters-panel{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--paper);padding:26px var(--pad) calc(20px + env(safe-area-inset-bottom));grid-template-columns:1fr;gap:22px;box-shadow:0 -20px 60px rgba(40,10,20,.25);max-height:82vh;overflow:auto}
  .filters-done{display:flex;width:100%}
  .grid-note{grid-template-columns:1fr}.grid-note .script{writing-mode:initial;transform:none}
}

/* ------------------------------------------------ collection hero (Cozy Up) */
.col-hero{position:relative;height:min(88vh,900px);overflow:hidden;color:#fff}
.col-hero figure{margin:0;position:absolute;inset:0}
.col-hero img{width:100%;height:100%;object-fit:cover;object-position:50% 40%}
.col-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(40,10,20,.55))}
.col-hero-text{position:absolute;left:var(--pad);bottom:clamp(30px,7vh,80px);z-index:1;max-width:560px}
.col-hero-text .issue-no{color:#fff}
.col-hero-text p:last-child{font-size:19px;margin-top:16px}
.col-letter{max-width:760px;margin:0 auto;padding:clamp(60px,8vw,120px) var(--pad);text-align:center}
.col-letter blockquote{margin:22px 0 30px;font-size:clamp(20px,2vw,26px);font-style:italic;line-height:1.5}

/* ------------------------------------------------ product page */
.pdp{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(30px,5vw,80px);padding:0 var(--pad) 0 0;align-items:start}
.pdp-gal{position:relative}
.pdp-track{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.slide{display:block;cursor:zoom-in;background:var(--blush);position:relative;overflow:hidden}
.slide:first-child,.slide:last-child:nth-child(even){grid-column:1/-1}
.slide:last-child:nth-child(even) img{aspect-ratio:4/4.6;object-fit:cover;object-position:50% 25%}
.slide img{width:100%;height:auto;transition:transform 1s var(--ease)}
.slide:first-child img{aspect-ratio:4/4.6;object-fit:cover;object-position:50% 25%}
.slide:hover img{transform:scale(1.02)}
.pdp-count{display:none}
.pdp-info{position:sticky;top:calc(var(--top-h) + 30px);padding:clamp(30px,4vw,60px) 0 60px;max-width:520px}
.crumbs{font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin-bottom:28px}
.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--wax)}
.pdp-tag{font-size:46px;margin-bottom:10px}
.pdp h1{font-size:clamp(32px,3.2vw,46px);line-height:1.1}
.pdp-price{font-family:var(--sans);font-size:20px;letter-spacing:.04em;margin:14px 0 4px}
.pdp-code{font-size:15px;color:var(--ink-2);font-style:italic}
.pdp-code b{font-family:var(--sans);font-style:normal;letter-spacing:.16em;color:var(--wax);font-weight:500}
.pdp-buy{margin:28px 0 22px}
.sizes-head{display:flex;justify-content:space-between;align-items:center;font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:12px}
.sizes-head .linkish{font-size:12px}
.sizes{display:flex;flex-wrap:wrap;gap:8px}
.sz{min-width:52px;height:48px;padding:0 12px;border:1px solid var(--line);font-family:var(--sans);font-size:14px;letter-spacing:.06em;transition:border-color .2s,background .2s,color .2s}
.sz:hover{border-color:var(--ink)}
.sz[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.sizes.nudge{animation:nudge .5s}
@keyframes nudge{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.buy-row{display:flex;gap:10px;margin-top:18px;align-items:stretch}
.qty{display:flex;align-items:center;border:1px solid var(--line)}
.qty button{width:44px;height:100%;min-height:52px;font-size:20px}
.qty output{min-width:22px;text-align:center;font-family:var(--sans)}
.add{flex:1;white-space:nowrap;padding:0 18px}
.love-lg{position:static;width:54px;height:auto;border:1px solid var(--line)}
.buy-msg{min-height:1.4em;margin:12px 0 0;font-style:italic;color:var(--wax);font-size:15px}
.gift{display:grid;gap:4px;text-align:left;width:100%;padding:18px 20px;border:1px dashed var(--rose-d);background:rgba(243,224,220,.4);margin-bottom:34px;transition:background .3s}
.gift:hover{background:var(--blush)}
.gift .script{font-size:32px}
.gift span:last-child{font-size:15px;color:var(--ink-2)}
.pdp-letter p{font-size:17px;color:var(--ink-2)}
.pdp-letter p:first-child::first-letter{font-size:3.1em;float:left;line-height:.9;margin:6px 5px 0 0;color:var(--wax);font-style:italic}
.feels{margin:28px 0;padding:22px 0;border-block:1px solid var(--line)}
.feels .script{font-size:36px;margin-bottom:6px}
.feels p:last-child{margin:0;font-size:19px;font-style:italic}
.details{margin:0 0 24px;display:grid;gap:12px}
.details div{display:grid;grid-template-columns:120px 1fr;gap:12px}
.details dt{font-family:var(--sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);padding-top:3px}
.details dd{margin:0;font-size:16px}
.acc{border-top:1px solid var(--line)}
.acc:last-child{border-bottom:1px solid var(--line)}
.acc summary{list-style:none;cursor:pointer;padding:18px 0;font-family:var(--sans);font-size:13px;letter-spacing:.16em;text-transform:uppercase;display:flex;justify-content:space-between}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"+";font-size:18px;line-height:1}
.acc[open] summary::after{content:"\2212"}
.acc p{font-size:16px;color:var(--ink-2)}
.sg{width:100%;border-collapse:collapse;font-family:var(--sans);font-size:14px;margin-bottom:20px}
.sg th,.sg td{text-align:left;padding:9px 6px;border-bottom:1px solid var(--line-2)}
.sg thead th{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-weight:400}
.sg-note{font-style:italic;font-size:15px;color:var(--ink-2)}
.sg-dialog{border:0;padding:34px;max-width:520px;width:calc(100% - 30px);background:var(--paper);color:var(--ink);box-shadow:0 40px 80px -30px rgba(40,10,20,.5)}
.sg-dialog::backdrop{background:rgba(58,30,38,.4);backdrop-filter:blur(3px)}
.sg-dialog .x{position:absolute;top:12px;right:12px}
.sg-dialog h2{margin:6px 0 16px}
.look,.more{padding:clamp(60px,8vw,110px) var(--pad) 0}
.more{padding-bottom:clamp(70px,9vw,130px)}
.look h2,.more h2{font-size:clamp(26px,2.8vw,38px);margin-bottom:34px}
.look h2 .script{font-size:1.3em;display:block;margin-bottom:4px}
.look-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2vw,30px)}
.more-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,30px)}
.sticky-buy{display:none}
.zoom{position:fixed;inset:0;z-index:120;background:var(--paper)}
.zoom[hidden]{display:none}
.zoom .x{position:absolute;top:14px;right:14px;z-index:2;width:48px;height:48px;display:grid;place-items:center;background:var(--paper)}
.zoom-track{display:flex;height:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.zoom-track::-webkit-scrollbar{display:none}
.zframe{flex:0 0 100%;height:100%;scroll-snap-align:center;overflow:hidden;display:grid;place-items:center;cursor:zoom-in;touch-action:pan-x}
.zframe img{max-height:100%;max-width:100%;width:auto;height:auto;object-fit:contain;transition:transform .35s var(--ease);user-select:none;-webkit-user-drag:none}
.zframe.z{cursor:zoom-out;touch-action:none}
.zframe.z img{transition:none}
.zoom-hint{position:absolute;bottom:16px;left:0;right:0;text-align:center;font-family:var(--sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin:0;pointer-events:none}

@media (max-width:900px){
  .pdp{grid-template-columns:1fr;padding:0;gap:0}
  .pdp-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:0;scrollbar-width:none}
  .pdp-track::-webkit-scrollbar{display:none}
  .slide{flex:0 0 100%;scroll-snap-align:center}
  .slide img,.slide:first-child img{aspect-ratio:4/5.3;object-fit:cover;object-position:50% 25%}
  .pdp-count{display:block;position:absolute;right:14px;bottom:12px;margin:0;background:rgba(251,246,241,.85);padding:4px 10px;font-family:var(--sans);font-size:12px;letter-spacing:.1em}
  .pdp-info{position:static;padding:26px var(--pad) 30px;max-width:none}
  .crumbs{margin-bottom:16px}
  .pdp-tag{font-size:38px}
  .look-grid{grid-template-columns:1fr 1fr 1fr;gap:10px}
  .look-grid .card-tag{display:none}
  .look-grid .card-name{font-size:14px}
  .more-grid{grid-template-columns:1fr 1fr}
  .sticky-buy{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:55;align-items:center;gap:12px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(251,246,241,.97);border-top:1px solid var(--line);transform:translateY(110%);transition:transform .4s var(--ease)}
  .sticky-buy.on{transform:none}
  .sticky-buy img{width:42px;height:56px;object-fit:cover;flex:none}
  .sticky-buy p{flex:1;min-width:0;margin:0;display:grid;line-height:1.25}
  .sticky-buy p span{font-size:15px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .sticky-buy p b{font-family:var(--sans);font-weight:400;font-size:14px;color:var(--ink-2)}
  .sticky-buy .btn{min-height:48px;padding:0 22px}
  .is-product .desk-btn{bottom:calc(84px + env(safe-area-inset-bottom))}
  .desk-btn{display:none}
  .desk{right:8px;left:8px;bottom:8px;width:auto}
}

/* ------------------------------------------------ bag drawer */
.scrim{position:fixed;inset:0;z-index:80;background:rgba(58,30,38,.36);opacity:0;transition:opacity .4s}
.scrim.on{opacity:1}
.drawer{position:fixed;top:0;right:0;bottom:0;z-index:90;width:min(460px,100%);background:var(--paper);display:flex;flex-direction:column;transform:translateX(102%);transition:transform .55s var(--ease);box-shadow:-30px 0 60px -30px rgba(40,10,20,.4);visibility:hidden}
.drawer.on{transform:none;visibility:visible}
.drawer-grip{display:none}
.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--line-2)}
.drawer-head h2{font-size:26px}
.drawer-head h2 span{font-family:var(--sans);font-size:13px;color:var(--ink-3);letter-spacing:.1em}
.x{width:44px;height:44px;display:grid;place-items:center}
.drawer-body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:0 24px}
.ship-note{margin:16px 0 4px;font-style:italic;font-size:15px;color:var(--ink-2)}
.ship-bar{height:2px;background:var(--line-2);margin-bottom:8px;position:relative}
.ship-bar i{position:absolute;inset:0 auto 0 0;background:var(--wax);transition:width .6s var(--ease)}
.lines{list-style:none;margin:0;padding:0}
.lines li{display:grid;grid-template-columns:76px 1fr auto;gap:14px;padding:18px 0;border-bottom:1px solid var(--line-2);align-items:start}
.lines img{width:76px;height:100px;object-fit:cover}
.lines h3{font-size:16px;font-weight:400;line-height:1.3}
.lines h3 a{text-decoration:none}
.lines .meta{font-family:var(--sans);font-size:12px;letter-spacing:.08em;color:var(--ink-3);margin:4px 0 10px}
.lines .qty{display:inline-flex;height:36px}
.lines .qty button{min-height:34px;width:34px;font-size:17px}
.lines .lp{font-family:var(--sans);font-size:14px;text-align:right}
.lines .rm{display:block;margin-top:30px;font-family:var(--sans);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);text-decoration:underline;text-underline-offset:4px}
.bag-empty{text-align:center;padding:60px 0}
.bag-empty .script{font-size:42px;margin-bottom:8px}
.drawer-foot{padding:16px 24px calc(18px + env(safe-area-inset-bottom));border-top:1px solid var(--line-2);background:var(--paper)}
.code{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding-bottom:6px}
.code label{font-family:var(--sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}
.code input{flex:1;min-width:0;border:0;background:transparent;outline:none;font-family:var(--sans);letter-spacing:.16em;text-transform:uppercase;font-size:15px;padding:6px 0}
.code button{font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase}
.code-msg{font-size:14px;font-style:italic;color:var(--wax);margin:6px 0 8px;min-height:1.2em}
.sums{display:grid;grid-template-columns:1fr auto;gap:4px 10px;margin:0 0 14px;font-family:var(--sans);font-size:14px}
.sums dd{margin:0;text-align:right}
.sums .tot{font-size:17px;padding-top:6px;border-top:1px solid var(--line-2);margin-top:4px}
.drawer.empty .drawer-foot{display:none}

/* love note writer */
.note-slot{padding:22px 0 30px}
.note-open{width:100%;display:flex;justify-content:space-between;align-items:center;gap:14px;padding:16px 18px;border:1px dashed var(--rose-d);text-align:left;background:rgba(243,224,220,.35)}
.note-open .script{font-size:30px}
.note-open small{display:block;font-size:14px;color:var(--ink-2)}
.notecard{position:relative;background:#fffaf4 url(/img/paper.png);padding:22px 22px 26px;box-shadow:0 14px 30px -18px rgba(60,20,35,.45);transform:rotate(-.8deg);margin-top:4px}
.notecard::before{content:"";position:absolute;inset:8px;border:1px solid rgba(185,112,127,.35);pointer-events:none}
.notecard label{display:block;font-family:var(--sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}
.notecard input,.notecard textarea{width:100%;border:0;border-bottom:1px solid rgba(58,30,38,.15);background:transparent;outline:none;font-family:var(--script);font-size:28px;line-height:1.35;color:var(--ink);padding:2px 0 4px;resize:none;margin-bottom:8px}
.notecard textarea{background:repeating-linear-gradient(transparent 0 37px,rgba(58,30,38,.12) 37px 38px);border:0;min-height:152px;line-height:38px}
.note-row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:6px}
.note-row small{font-family:var(--sans);font-size:11px;color:var(--ink-3);letter-spacing:.08em}
.note-seal{position:absolute;right:14px;top:-20px;width:70px;height:70px;transform:scale(2.2) rotate(-20deg);opacity:0;filter:drop-shadow(0 3px 4px rgba(70,10,25,.35));pointer-events:none}
.note-seal svg{width:100%;height:100%}
.notecard.sealed .note-seal{animation:stamp .6s var(--ease) forwards}
.notecard.sealed textarea,.notecard.sealed input{pointer-events:none}
@keyframes stamp{60%{transform:scale(.92) rotate(-8deg);opacity:1}100%{transform:scale(1) rotate(-10deg);opacity:1}}
.notecard .btn{min-height:44px;padding:0 22px}

@media (max-width:700px){
  .drawer{top:auto;left:0;width:100%;height:min(90svh,860px);transform:translateY(102%);border-radius:0;box-shadow:0 -30px 60px -20px rgba(40,10,20,.4)}
  .drawer-grip{display:block;width:44px;height:4px;background:var(--line);margin:10px auto 0;border-radius:2px}
  .drawer-head{padding:10px 18px 14px}
  .drawer-body{padding:0 18px}
  .drawer-foot{padding:12px 18px calc(14px + env(safe-area-inset-bottom))}
}

/* search */
.search{position:fixed;inset:0;z-index:95;background:rgba(251,246,241,.98);display:flex;flex-direction:column}
.search[hidden]{display:none}
.search-in{display:flex;align-items:center;gap:14px;padding:16px var(--pad);border-bottom:1px solid var(--line)}
.search-in input{flex:1;border:0;background:transparent;outline:none;font-size:clamp(24px,3vw,38px);padding:14px 0;min-width:0}
.search-out{overflow-y:auto;padding:30px var(--pad) 60px}
.search-out h3{font-family:var(--sans);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin:0 0 16px;font-weight:400}
.sres{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:22px;margin-bottom:40px}
.sres a{text-decoration:none;font-size:15px;line-height:1.3}
.sres img{aspect-ratio:4/5;object-fit:cover;width:100%;height:auto;margin-bottom:8px}
.sres span{display:block;font-family:var(--sans);font-size:13px;color:var(--ink-3);margin-top:3px}
.sposts a{display:block;font-size:20px;text-decoration:none;padding:8px 0}
.search-hint{font-style:italic;color:var(--ink-3)}

/* concierge desk */
.desk-btn{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:50;background:var(--paper);border:1px solid var(--line);padding:8px 16px 6px;box-shadow:0 10px 30px -14px rgba(60,20,35,.4);transition:transform .3s var(--ease),bottom .3s}
.desk-btn .script{font-size:26px}
.desk-btn:hover{transform:translateY(-2px)}
.is-home .desk-btn{opacity:0;pointer-events:none;transition:opacity .4s}
.is-home.past-hero .desk-btn{opacity:1;pointer-events:auto}
.desk{position:fixed;right:16px;bottom:16px;z-index:96;width:min(380px,calc(100% - 32px));max-height:min(620px,calc(100svh - 32px));display:flex;flex-direction:column;background:#fffaf4 url(/img/paper.png);box-shadow:0 30px 70px -20px rgba(40,10,20,.45);border:1px solid var(--line-2)}
.desk[hidden]{display:none}
.desk header{display:flex;justify-content:space-between;align-items:center;padding:14px 10px 6px 20px}
.desk header .script{font-size:32px}
.desk-log{flex:1;overflow-y:auto;padding:4px 20px 10px;display:grid;gap:12px;align-content:start}
.desk-log p{margin:0;font-size:16px}
.desk-log .me{justify-self:end;font-style:italic;color:var(--wax);text-align:right}
.desk-log .them{color:var(--ink)}
.desk-log a{color:var(--wax)}
.desk-log .mini{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.desk-log .mini a{text-decoration:none;font-size:12.5px;line-height:1.25;color:var(--ink)}
.desk-log .mini img{aspect-ratio:4/5;object-fit:cover;width:100%;height:auto;margin-bottom:4px}
.desk-choices{display:flex;flex-wrap:wrap;gap:8px 14px;padding:12px 20px 18px;border-top:1px solid var(--line-2)}
.desk-choices button{font-size:15px;font-style:italic;text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--rose);padding:4px 0}
.desk-choices button:hover{color:var(--wax)}
.desk-choices form{display:grid;gap:8px;width:100%}
.desk-choices textarea{width:100%;border:1px solid var(--line);background:transparent;padding:10px;font-size:16px;resize:vertical;min-height:84px}

@media (max-width:700px){.desk-btn{display:none}}
/* toast */
.toast{position:fixed;left:50%;top:calc(var(--top-h) + 14px);z-index:110;transform:translate(-50%,-20px);opacity:0;pointer-events:none;background:var(--ink);color:var(--paper);padding:12px 22px;font-size:15px;font-style:italic;transition:opacity .35s,transform .35s var(--ease);max-width:calc(100% - 30px);text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* journal */
.j-editor{max-width:760px;padding:0 var(--pad) 50px}
.j-editor .script{font-size:42px;margin-bottom:10px}
.j-editor p:last-child{font-size:20px;font-style:italic;color:var(--ink-2)}
.j-lead{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(24px,5vw,80px);align-items:center;padding:0 var(--pad) 60px;text-decoration:none}
.j-lead img{aspect-ratio:4/4.6;object-fit:cover;width:100%;height:auto}
.j-lead-text{display:grid;gap:14px;max-width:520px}
.j-lead .jl-title{font-size:clamp(32px,3.6vw,52px);line-height:1.08}
.j-lead .arrow{justify-self:start;margin-top:8px}
.j-tabs{display:flex;flex-wrap:wrap;gap:6px 26px;padding:24px var(--pad);border-top:1px solid var(--line-2)}
.j-tabs button{font-size:17px;padding:6px 0;color:var(--ink-2);border-bottom:1px solid transparent}
.j-tabs button[aria-pressed=true]{color:var(--ink);font-style:italic;border-color:var(--wax)}
.j-list{padding:20px var(--pad) 80px}
.j-list .jitem[hidden]{display:none}
.j-news{max-width:640px;margin:0 auto;padding:60px var(--pad) 110px;text-align:center}
.j-news h2{margin-bottom:16px}
.j-news p{color:var(--ink-2)}
.j-news form{margin:26px 0 12px}
@media (max-width:800px){.j-lead{grid-template-columns:1fr}.j-list{grid-template-columns:1fr 1fr}.j-list .jl-dek{display:none}.j-list .jl-title{font-size:19px}}

.post{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(30px,6vw,100px);padding:clamp(40px,6vw,80px) var(--pad) 40px;max-width:1360px;margin:0 auto}
.post-head{grid-column:1/-1;max-width:860px;margin-bottom:50px}
.post-head h1{margin:0 0 18px}
.post-dek{font-size:clamp(20px,2vw,25px);font-style:italic;color:var(--ink-2)}
.post-meta{font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.post-fig{margin:0;position:sticky;top:calc(var(--top-h) + 24px);align-self:start}
.post-fig img{width:100%;height:auto;max-height:calc(100vh - var(--top-h) - 48px);object-fit:cover}
.post-body{font-size:clamp(18px,1.5vw,21px);line-height:1.7;max-width:36em}
.post-body .script{font-size:46px;margin-bottom:22px}
.post-body .post-sign{margin-top:30px}
.post-tags{font-family:var(--sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-top:30px}
.post-treat{max-width:640px;margin:40px auto;padding:44px var(--pad);text-align:center;border:1px dashed var(--rose-d);background:rgba(243,224,220,.35)}
.post-treat .script{font-size:42px;margin-bottom:12px}
.post-more{padding:60px 0 20px;border-top:1px solid var(--line-2)}
.post-more h2{padding:0 var(--pad) 20px}
@media (max-width:800px){.post{grid-template-columns:1fr}.post-fig{position:static;margin-bottom:34px}.post-fig img{max-height:none;aspect-ratio:4/5}}

/* story */
.story-hero{position:relative;height:min(92vh,980px);overflow:hidden;color:#fff}
.story-hero figure{position:absolute;inset:0;margin:0}
.story-hero img{width:100%;height:100%;object-fit:cover;object-position:50% 35%}
.story-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(40,10,20,.5))}
.story-title{position:absolute;left:var(--pad);bottom:clamp(30px,7vh,80px);z-index:1}
.story-title .issue-no{color:#fff}
.story-letter{max-width:760px;margin:0 auto;padding:clamp(70px,9vw,140px) var(--pad);font-size:clamp(19px,1.6vw,22px);line-height:1.7}
.story-letter .script{font-size:54px;margin:0 0 24px}
.story-letter .script:last-child{margin:34px 0 0}
.story-letter .lead{font-size:1.35em;line-height:1.45;font-style:italic}
.story-ps{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,6vw,100px);padding:0 var(--pad) clamp(70px,9vw,120px);align-items:center}
.story-ps figure{margin:0}
.story-ps img{width:100%;height:auto;aspect-ratio:1;object-fit:cover}
.story-ps ol{list-style:none;margin:0;padding:0;display:grid;gap:40px}
.story-ps li .script{font-size:34px}
.story-ps h2{font-size:clamp(26px,2.4vw,34px);margin:6px 0 8px}
.story-ps li p{color:var(--ink-2);margin:0}
.story-cta{display:flex;flex-wrap:wrap;gap:20px 40px;align-items:center;justify-content:center;padding:0 var(--pad) 120px}
@media (max-width:800px){.story-ps{grid-template-columns:1fr}}

/* love notes, contact, policy, checkout, 404 */
.ln-grid{padding-top:10px}
.ln-empty{text-align:center;padding:30px var(--pad) 120px}
.ln-empty .script,.nf .script{font-size:48px;margin-bottom:10px}
.ln-share{text-align:center;padding-bottom:100px}
.contact{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,6vw,100px);padding:clamp(50px,7vw,110px) var(--pad);max-width:1300px;margin:0 auto;align-items:start}
.contact-head p:not(.issue-no){font-size:19px;color:var(--ink-2);margin-top:18px}
.contact-direct{display:grid;gap:6px;margin-top:30px}
.contact-direct a{font-size:22px;text-decoration:none;border-bottom:1px solid var(--line);justify-self:start}
.letter-form{background:#fffaf4 url(/img/paper.png);padding:clamp(26px,4vw,50px);box-shadow:0 30px 60px -36px rgba(70,25,40,.45);display:grid;gap:18px;transform:rotate(.6deg)}
.letter-form .script{font-size:42px}
.letter-form label{display:grid;gap:4px;font-family:var(--sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}
.letter-form input,.letter-form textarea{border:0;border-bottom:1px solid var(--line);background:transparent;outline:none;padding:8px 0;font-size:18px;font-family:var(--serif);text-transform:none;letter-spacing:0;color:var(--ink);resize:vertical}
.letter-form .btn{justify-self:start}
@media (max-width:800px){.contact{grid-template-columns:1fr}.letter-form{transform:none}}
.policy{max-width:760px;margin:0 auto;padding:clamp(50px,7vw,110px) var(--pad) 120px}
.policy h1{margin-bottom:40px}
.policy h2{font-size:28px;margin:40px 0 14px}
.policy p{font-size:18px}
.todo{font-family:var(--sans);font-size:14px;background:#fff3c4;border-left:3px solid #d4a017;padding:10px 14px;color:#5a4500}
.co{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,6vw,100px);padding:clamp(50px,7vw,110px) var(--pad) 120px;max-width:1300px;margin:0 auto;align-items:start}
.co-letter .script{font-size:52px;margin-bottom:16px}
.co-letter h1{margin-bottom:20px}
.co-letter p{font-size:19px;color:var(--ink-2)}
.co-sum{background:#fffaf4 url(/img/paper.png);padding:clamp(22px,3vw,40px);box-shadow:0 30px 60px -36px rgba(70,25,40,.45)}
.co-sum .lines li{grid-template-columns:64px 1fr auto}
.co-sum .lines img{width:64px;height:84px}
.co-sum .sums{margin-top:18px}
.co-note{margin-top:22px}
.co-note .notecard{transform:rotate(1deg)}
.co-note .note-seal{opacity:1;transform:rotate(-10deg)}
@media (max-width:800px){.co{grid-template-columns:1fr}}
.nf{max-width:700px;margin:0 auto;padding:clamp(80px,12vw,160px) var(--pad);text-align:center}
.nf h1{margin-bottom:20px}
.nf p{font-size:19px;color:var(--ink-2);margin-bottom:34px}
.nf .arrow{margin-left:24px}

/* entrance */
.rise{opacity:0;transform:translateY(26px);transition:opacity 1s var(--ease),transform 1.1s var(--ease)}
.rise.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .rise{transform:none;transition:opacity .6s}
  .reveal-lines .ln,.reveal-lines .script{clip-path:none;opacity:0;transition:opacity .8s}
  .reveal-lines.in .ln,.reveal-lines.in .script{opacity:1}
  .card-img img,.slide img{transition:none}
  .open-hint .script{animation:none}
}
.menu-ask{font-size:34px;text-align:left;padding:6px 0;font-style:italic;color:var(--wax)}
input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none;display:none}

/* checkout flow (18 Oct 2026) */
.co-flow .script{font-size:52px;margin-bottom:12px}
.co-flow h1{margin-bottom:22px}
.co-steps{display:flex;gap:22px;list-style:none;margin:0 0 30px;padding:0;font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.co-steps li.on{color:var(--ink);border-bottom:1px solid var(--ink);padding-bottom:4px}
.co-steps li.done{color:var(--rose-d)}
.co-form h2{font-size:24px;margin:26px 0 14px}
.co-form h2:first-child,.co-recap+h2{margin-top:6px}
.co-f{display:block;margin-bottom:14px}
.co-f span{display:block;font-family:var(--sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin-bottom:6px}
.co-f input,.co-f select{width:100%;min-height:50px;border:1px solid var(--line);background:#fffaf6;padding:0 14px;font-family:var(--sans);font-size:16px;border-radius:0;outline:none;transition:border-color .2s}
.co-f input:focus,.co-f select:focus{border-color:var(--ink)}
.co-f input.bad{border-color:var(--wax);background:#fff3f3}
.co-f input[readonly]{color:var(--ink-2);background:#f8f1ec}
.co-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.co-3{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:14px}
.co-check{display:flex;gap:10px;align-items:center;font-family:var(--sans);font-size:14px;margin:6px 0 20px;cursor:pointer}
.co-check input{width:18px;height:18px;accent-color:var(--wax)}
.co-opt{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;border:1px solid var(--line);background:#fffaf6;padding:16px;margin-bottom:-1px;cursor:pointer;font-family:var(--sans)}
.co-opt:has(input:checked){border-color:var(--ink);position:relative}
.co-opt input{accent-color:var(--wax);width:18px;height:18px}
.co-opt b{display:block;font-weight:500;font-size:15px}
.co-opt small{color:var(--ink-3);font-size:13px}
.co-opt em{font-style:normal;font-size:15px}
.co-opt+.co-opt+.co-check{margin-top:20px}
.co-err{color:var(--wax);font-family:var(--sans);font-size:14px;margin:0 0 12px}
.co-small{font-family:var(--sans);font-size:13px;color:var(--ink-3)}
.co-card{border:1px solid var(--line);padding:18px 18px 6px;background:#fffdfb;margin-bottom:16px}
.co-recap{border:1px solid var(--line);font-family:var(--sans);font-size:14px;padding:4px 16px;margin-bottom:10px}
.co-recap p{margin:0;padding:10px 0;display:grid;grid-template-columns:90px 1fr;border-bottom:1px solid var(--line-2)}
.co-recap p:last-child{border-bottom:0}
.co-recap span{color:var(--ink-3)}
.co-nav{align-items:center;margin-top:10px}
.co-back{font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;text-decoration:underline;text-underline-offset:5px;justify-self:start}
.btn.busy{opacity:.7;pointer-events:none}
.co-ok{width:58px;height:58px;border-radius:50%;background:var(--wax);color:#fff;display:grid;place-items:center;font-size:26px;margin-bottom:18px}
.co-done h2{margin-bottom:10px}
.co-done-dl{display:grid;grid-template-columns:110px 1fr;font-family:var(--sans);font-size:15px;border-top:1px solid var(--line);margin:22px 0 14px}
.co-done-dl dt,.co-done-dl dd{margin:0;padding:12px 0;border-bottom:1px solid var(--line-2)}
.co-done-dl dt{color:var(--ink-3)}
.co-done .btn{margin-top:10px}
.co-sum-h{font-size:22px;margin-bottom:6px}
@media (min-width:801px){.co-sum{position:sticky;top:calc(var(--top-h) + 24px)}}
@media (max-width:800px){.co-sum{order:-1}.co-3{grid-template-columns:1fr 1fr}.co-3 .co-f:first-child{grid-column:1/-1}}
.co-soon{font-size:19px;color:var(--ink-2);border:1px solid var(--line);background:#fffaf6;padding:22px;margin:4px 0 18px}

/* hero triptych: the campaign film's three clips, side by side (18 Oct 2026) */
.hero-tri{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);gap:3px;background:var(--paper)}
.hero-tri .hero-film{position:static;width:100%;height:100%;object-fit:cover;object-position:50% 30%;background:#d9b7b8}
@media (max-width:700px){.hero-tri{grid-template-columns:1fr}.hero-tri .hf-side{display:none}}
