/* Nena Craft Bakery: the awning as the page. Cream canvas, their teal lettering, oak in the photos. */
:root{
  --cream:#ede7db;      /* awning canvas */
  --paper:#f6f2ea;      /* lighter step */
  --teal:#1f6a5f;       /* their lettering */
  --teal-dk:#174f47;
  --field:#1d4a43;      /* deep teal field */
  --ink:#16302c;
  --soft:#3f5550;
  --on-field:#efe9dd;
  --on-field-soft:#c9d6d0;
  --m:clamp(20px,3vw,48px);
  --gap:clamp(96px,11vw,200px);
  --ease:cubic-bezier(.23,1,.32,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:"Jost",system-ui,sans-serif;font-weight:400;background:var(--cream);color:var(--ink);font-size:18px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:clip}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px}
ul,ol{list-style:none}
::selection{background:var(--teal);color:var(--cream)}
:focus-visible{outline:2px solid var(--teal);outline-offset:3px}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:var(--m);top:-60px;background:var(--ink);color:var(--cream);padding:12px 16px;z-index:50}
.skip:focus{top:8px}

/* buttons: square corners, one fill */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 24px;font:500 17px/1 "Jost",sans-serif;text-decoration:none;border:2px solid var(--teal);transition:background-color .2s,color .2s,border-color .2s,transform .16s var(--ease)}
.btn.solid{background:var(--teal);color:var(--cream)}
.btn.line{color:var(--teal)}
.btn.cream{background:var(--cream);border-color:var(--cream);color:var(--field)}
.btn:active{transform:translateY(1px);transition-duration:60ms}
@media (hover:hover) and (pointer:fine){
  .btn.solid:hover{background:var(--teal-dk);border-color:var(--teal-dk)}
  .btn.line:hover{background:var(--teal);color:var(--cream)}
  .btn.cream:hover{background:var(--paper)}
}

/* header */
.top{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px var(--m)}
.mark{display:inline-flex;flex-direction:column;text-decoration:none;color:var(--teal);line-height:1}
.mark b{font-weight:300;font-size:36px;letter-spacing:.01em}
.mark small{font-weight:400;font-size:13px;letter-spacing:.32em;text-transform:uppercase;margin-top:3px}
.nav{display:flex;align-items:center;gap:clamp(14px,2.2vw,34px);font-size:17px}
.nav a:not(.btn){text-decoration:underline transparent;min-height:44px;display:inline-flex;align-items:center;transition:text-decoration-color .2s}
@media (hover:hover) and (pointer:fine){.nav a:not(.btn):hover{text-decoration-color:currentColor}}

/* the awning: name as a monument, the shop underneath */
.awning{padding:0 var(--m);display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(24px,4vw,72px);align-items:stretch;min-height:min(calc(100svh - 92px),1000px)}
.lockup{display:flex;flex-direction:column;justify-content:space-between;padding-bottom:clamp(8px,2vw,40px)}
.name{font-weight:300;color:var(--teal);font-size:clamp(150px,min(30vw,46svh),560px);line-height:.78;letter-spacing:-.045em;margin:clamp(4px,1vw,20px) 0 0 -.04em;white-space:nowrap}
.name .l1{display:block}
.under{margin-top:clamp(28px,3vw,48px)}
.motto{font-weight:500;font-size:clamp(20px,1.6vw,26px);letter-spacing:.14em;text-transform:uppercase;color:var(--teal);line-height:1.25}
.what{font-size:clamp(20px,1.5vw,24px);line-height:1.4;margin-top:20px;max-width:24em}
.acts{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
.today{margin-top:22px;color:var(--soft);font-size:17px}
.shop{display:block;min-height:0}
.shop img{width:100%;height:100%;max-height:min(calc(100svh - 92px),1000px);object-fit:cover;object-position:50% 40%}

/* creed */
.creed{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,9fr);gap:clamp(24px,4vw,72px);padding:var(--gap) var(--m) 0;align-items:start}
.facts{display:grid;gap:22px;font-size:16px}
.facts dt{color:var(--soft)}
.facts dd{font-weight:500}
.statement{font-weight:300;font-size:clamp(34px,4.4vw,76px);line-height:1.05;letter-spacing:-.025em;color:var(--teal);max-width:15em}

/* the day: a poster on the deep teal field */
.day{background:var(--field);color:var(--on-field);margin-top:var(--gap);padding:clamp(80px,9vw,160px) var(--m) 0}
.sec{font-weight:400;font-size:clamp(36px,3.6vw,56px);line-height:1.05;letter-spacing:-.02em}
.day .sec{margin-bottom:clamp(40px,5vw,80px)}
.poster li{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:24px;align-items:baseline;padding:clamp(10px,1.2vw,20px) 0}
.poster .who{font-weight:300;font-size:clamp(56px,9vw,168px);line-height:.95;letter-spacing:-.04em}
.poster .when{font-weight:500;font-size:20px;font-variant-numeric:tabular-nums;text-align:right}
.poster p{grid-column:1/-1;color:var(--on-field-soft);max-width:38em;margin-top:8px;font-size:18px}
.band{display:flex;height:clamp(420px,42vw,760px);margin:clamp(64px,7vw,120px) calc(var(--m)*-1) 0}
.band img{height:100%;width:0;object-fit:cover;flex:2 1 0}
.band img:nth-child(1){flex-grow:5}
.band img:nth-child(3){flex-grow:3}

/* the daily counter */
.counter{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:clamp(32px,5vw,96px);padding:var(--gap) var(--m) 0;align-items:start}
.counter > img{width:100%;aspect-ratio:4/5;object-fit:cover}
.counter .txt > p{margin-top:16px;font-size:20px}
.bakes{margin-top:40px;display:grid;gap:28px}
.bakes h3,.autumn h3{font-weight:500;font-size:24px;line-height:1.2;color:var(--teal)}
.bakes p{margin-top:6px;max-width:34em}
.autumn{margin-top:56px;background:var(--paper);padding:32px}
.autumn p{margin-top:10px;max-width:36em}

/* cakes */
.cakes{padding:var(--gap) var(--m) 0}
.cakes-head{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,5fr) auto;gap:clamp(20px,3vw,56px);align-items:end}
.cakes-head p{font-size:20px;max-width:28em}
.cake-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:clamp(12px,1.4vw,24px);margin-top:clamp(40px,4vw,64px)}
.cake-row a{display:block;text-decoration:none}
.cake-row img{width:100%;aspect-ratio:3/4;object-fit:cover;transition:opacity .2s}
.cake-row span{display:block;margin-top:12px;font-size:17px;line-height:1.35}
@media (hover:hover) and (pointer:fine){.cake-row a:hover img{opacity:.88}.cake-row a:hover span{text-decoration:underline}}

/* weekends */
.weekends{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,9fr);gap:clamp(32px,5vw,96px);padding:var(--gap) var(--m) 0;align-items:end}
.wk-text p{margin-top:18px;font-size:20px;max-width:26em}
.wk-text p:first-of-type{margin-top:24px}
.wk-pics{display:grid;grid-template-columns:5fr 4fr 3fr;gap:clamp(8px,1vw,16px);align-items:end}
.wk-pics img{width:100%;object-fit:cover}
.wk-pics .p1{aspect-ratio:3/4}
.wk-pics .p2{aspect-ratio:3/4.6}
.wk-pics .p3{aspect-ratio:3/4}

/* shops */
.shops{padding:var(--gap) var(--m) var(--gap)}
.shop-cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,96px);margin-top:clamp(40px,4vw,64px)}
.one h3{font-weight:300;font-size:clamp(56px,7vw,128px);line-height:.9;letter-spacing:-.035em;color:var(--teal)}
.one .row{display:block;font-size:clamp(24px,2.2vw,36px);line-height:1.2;margin-top:20px;text-decoration:none}
@media (hover:hover) and (pointer:fine){.one .row:hover{text-decoration:underline}}
.one .note{margin-top:16px;color:var(--soft)}
.one .acts{margin-top:28px}
.hours{margin-top:clamp(48px,5vw,80px);background:var(--paper);display:grid;grid-template-columns:1fr 1fr;font-size:20px}
.hours div{display:flex;justify-content:space-between;gap:16px;padding:20px 28px}
.hours dd{font-variant-numeric:tabular-nums}
.hours .today{background:var(--teal);color:var(--cream)}
.hours .today dt::after{content:", today"}

/* footer: the name cropped by the edge */
.foot{background:var(--field);color:var(--on-field);padding:clamp(72px,8vw,140px) var(--m) 0;overflow:hidden;display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:32px}
.sign{font-weight:300;font-size:clamp(44px,5vw,88px);line-height:1;letter-spacing:-.025em}
.invite .btn{margin-top:28px}
.links{display:grid;gap:10px;align-content:start;font-size:17px}
.links a{display:inline-flex;min-height:44px;align-items:center}
.legal{grid-column:1/-1;margin-top:clamp(56px,6vw,96px);font-size:15px;color:var(--on-field-soft)}
.big{grid-column:1/-1;font-weight:300;font-size:clamp(170px,46vw,900px);line-height:.7;letter-spacing:-.05em;white-space:nowrap;color:var(--on-field);margin:8px 0 0 -.05em;transform:translateY(12%)}


/* cakes page */
.chead{padding:clamp(24px,4vw,64px) var(--m) 0}
.cname{font-weight:300;color:var(--teal);font-size:clamp(64px,11vw,200px);line-height:.9;letter-spacing:-.04em}
.chead .what{max-width:34em;margin-top:28px}
.order{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(32px,5vw,96px);padding:var(--gap) var(--m);align-items:start}
.order > *{min-width:0}
.how{overflow-wrap:anywhere;margin-top:28px;display:grid;gap:12px;font-size:20px}
.sign-s{margin-top:32px;color:var(--soft);max-width:26em}
.form{background:var(--paper);padding:clamp(24px,3vw,48px)}
.form h3{font-weight:400;font-size:28px;line-height:1.1}
.field{border:0;margin-top:28px;min-width:0}
.field legend,.field label{display:block;font-weight:500;font-size:17px;margin-bottom:10px}
.cake-pick{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.cake-pick label{position:relative;cursor:pointer;font-weight:400;margin:0}
.cake-pick input,.choices input{position:absolute;opacity:0;width:1px;height:1px}
.cake-pick img{width:100%;aspect-ratio:3/4;object-fit:cover;outline:3px solid transparent;outline-offset:3px;transition:outline-color .2s}
.cake-pick span{display:block;margin-top:8px;font-size:15px;line-height:1.3}
.cake-pick input:checked + img{outline-color:var(--teal)}
.cake-pick input:focus-visible + img{outline-color:var(--ink)}
.chosen{margin-top:12px;color:var(--teal);font-weight:500}
.choices{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.choices label{margin:0;cursor:pointer}
.choices span{display:flex;align-items:center;justify-content:center;min-height:52px;background:var(--cream);font-weight:400;transition:background-color .2s,color .2s}
.choices input:checked + span{background:var(--teal);color:var(--cream)}
.choices input:focus-visible + span{outline:2px solid var(--ink);outline-offset:2px}
.form input[type=date],.form input[type=text],.form input[type=tel],.form textarea{width:100%;min-height:52px;padding:12px 14px;font:400 17px/1.4 "Jost",sans-serif;color:var(--ink);background:#fff;border:2px solid #cfc8ba;border-radius:0}
.form input:focus,.form textarea:focus{border-color:var(--teal);outline:none}
.field.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.hint{margin-top:8px;color:var(--soft);font-size:16px}
.summary{margin-top:28px;font:400 17px/1.6 "Jost",sans-serif;white-space:pre-wrap;background:var(--cream);padding:18px 20px}
.needed{margin-top:14px;font-size:16px;color:var(--soft)}
.needed.warn{color:#8a2d1f;font-weight:500}
#send{margin-top:18px}
#send[aria-disabled=true]{background:#9fb3ae;border-color:#9fb3ae;color:#fff;cursor:not-allowed}
@media (max-width:1100px){.order{grid-template-columns:1fr}}
@media (max-width:760px){
  .cake-pick{grid-template-columns:repeat(5,42vw);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:4px}
  .cake-pick label{scroll-snap-align:start}
  .field.two{grid-template-columns:1fr}
  .form{margin:0 calc(var(--m)*-1)}
  #send{width:100%}
}

/* motion: slide up and fade only, with a settled fallback */
.motion .up,.motion .rv{opacity:0;transform:translateY(16px)}
.motion .up{animation:rise .7s var(--ease) forwards}
.motion .d1{animation-delay:.08s}.motion .d2{animation-delay:.18s}.motion .d3{animation-delay:.28s}
.motion .name .l1{display:block;animation:rise 1s var(--ease) both}
.motion .rv.in{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .6s var(--ease);transition-delay:var(--st,0ms)}
.motion.settled .rv,.motion.settled .up{opacity:1;transform:none}
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}

/* tablet */
@media (max-width:1100px){
  .cakes-head{grid-template-columns:1fr 1fr}
  .cakes-head .btn{grid-column:1;justify-self:start}
  .cake-row{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:32px}
  .weekends{grid-template-columns:1fr;align-items:start}
  .hours{grid-template-columns:1fr}
}

/* phone: its own composition */
@media (max-width:760px){
  body{font-size:17px}
  .nav a.hide-s{display:none}
  .top{padding:12px var(--m)}
  .mark b{font-size:30px}
  .mark small{font-size:13px;letter-spacing:.2em}
  .nav{gap:14px;font-size:16px}
  .nav .btn{padding:0 14px;min-height:44px;font-size:16px}
  .name{font-size:42vw;margin-top:8px}
  .awning{grid-template-columns:1fr;min-height:0}
  .under{margin-top:20px}
  .shop img{height:auto;aspect-ratio:4/5;max-height:none}
  .motto{font-size:17px;letter-spacing:.1em}
  .what{font-size:19px;margin-top:14px}
  .acts .btn{flex:1 1 auto}
  .creed{grid-template-columns:1fr;gap:32px}
  .creed .statement{order:-1;font-size:24px;line-height:1.25;letter-spacing:-.01em}
  .facts{grid-template-columns:1fr 1fr;gap:18px 20px}
  .poster li{grid-template-columns:1fr;padding:14px 0}
  .poster .who{font-size:15vw}
  .poster .when{text-align:left;font-size:17px;margin-top:4px}
  .band{display:grid;grid-template-columns:64fr 36fr;grid-template-areas:"a b" "d c";grid-auto-rows:clamp(220px,66vw,380px);height:auto;min-height:0}
  .band img{width:100%;height:100%}
  .band img:nth-child(1){grid-area:a}.band img:nth-child(2){grid-area:b}.band img:nth-child(3){grid-area:c}.band img:nth-child(4){grid-area:d}
  .counter{grid-template-columns:1fr}
  .cakes-head{grid-template-columns:1fr}
  .cake-row{grid-template-columns:1fr 1fr;gap:28px 14px}
  .cake-row li:first-child{grid-column:1/-1}
  .cake-row li:first-child img{aspect-ratio:4/3}
  .wk-pics{grid-template-columns:1fr 1fr}
  .wk-pics .p1{grid-column:1/-1;aspect-ratio:4/5}
  .wk-pics .p2,.wk-pics .p3{aspect-ratio:3/4}
  .shop-cols{grid-template-columns:1fr;gap:64px}
  .one h3{font-size:16vw}
  .one .row{font-size:24px}
  .one .acts .btn{flex:1 1 auto}
  .hours{grid-template-columns:1fr;font-size:18px}
  .hours div{padding:18px 20px}
  .foot{grid-template-columns:1fr}
  .sign{font-size:13vw}
  .invite .btn{width:100%}
  .big{font-size:56vw}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition-duration:.01ms!important;animation-duration:.01ms!important}
}
