/* Lady Grey Tearoom. Colours sampled from their 2026 logo: navy ink, ivory, blush tile, pale blue-grey. */
:root{
  --ground:#fcf5ed; --blush:#f8e3da; --mist:#e8edf1; --ink:#17364f; --navy:#1b405d; --navy-deep:#143249; --soft:#48606f; --on-navy:#fcf5ed; --on-navy-soft:#cfdbe3;
  --display:"Sorts Mill Goudy","Goudy Old Style",Georgia,serif; --text:"Source Sans 3","Segoe UI",system-ui,sans-serif;
  --t-small:clamp(1rem,.9rem + .3vw,1.125rem);
  --t-body:clamp(1.0625rem,1rem + .3vw,1.25rem);
  --t-lead:clamp(1.3rem,1.08rem + .95vw,1.95rem);
  --t-head:clamp(2.1rem,1.35rem + 3.1vw,4.25rem);
  --t-display:clamp(2.65rem,1rem + 5.4vw,6.1rem);
  --pad:clamp(20px,5vw,96px);
  --sec:clamp(52px,4.4vw,92px);
  --gap:clamp(16px,2.2vw,40px);
  --wide:1640px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--text);font-size:var(--t-body);line-height:1.55;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
h1,h2,h3,p,ul,ol,figure,blockquote,table,fieldset{margin:0;padding:0}
ul,ol{list-style:none}
fieldset{border:0;min-width:0}
a{color:inherit}
h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.04;letter-spacing:-.012em;text-wrap:balance}
h1{font-size:var(--t-display)}
h2{font-size:var(--t-head)}
h3{font-size:var(--t-lead);line-height:1.15}
p{text-wrap:pretty}
.wrap{width:100%;max-width:var(--wide);margin-inline:auto;padding-inline:var(--pad)}
.lead{font-family:var(--display);font-size:var(--t-lead);line-height:1.3}
.small{font-size:var(--t-small)}
.soft{color:var(--soft)}
:focus-visible{outline:3px solid var(--navy);outline-offset:3px}
.navy :focus-visible{outline-color:var(--on-navy)}
.skip{position:absolute;left:-999px;top:0;background:var(--navy);color:var(--on-navy);padding:12px 16px;z-index:10}
.skip:focus{left:0}

/* buttons: flat, square */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:12px 26px;background:var(--navy);color:var(--on-navy);font:600 var(--t-body)/1.2 var(--text);text-decoration:none;border:0;cursor:pointer;transition:background-color .18s ease,transform .12s ease}
.btn:hover{background:var(--navy-deep)}
.btn:active{transform:translateY(1px)}
.btn.alt{background:var(--blush);color:var(--ink)}
.btn.alt:hover{background:#f3d6ca}
.about .btn.alt,.visit .btn.alt,.endcta .btn.alt{background:var(--ground)}
.about .btn.alt:hover,.visit .btn.alt:hover,.endcta .btn.alt:hover{background:#fff}
.navy .btn{background:var(--ground);color:var(--ink)}
.navy .btn:hover{background:#fff}
.link{font-weight:600;text-underline-offset:.22em;text-decoration-thickness:2px;display:inline-flex;align-items:center;min-height:44px}

/* header */
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:clamp(12px,1.4vw,22px)}
.brand{display:flex;align-items:center;gap:14px;text-decoration:none;min-height:48px}
.brand img{width:clamp(46px,3.6vw,62px);height:auto;aspect-ratio:232/239}
.brand span{font-family:var(--display);font-size:clamp(1.3rem,1.1rem + .7vw,1.75rem);line-height:1.05}
.nav{display:flex;align-items:center;gap:clamp(6px,2vw,34px)}
.nav a{font-weight:600;font-size:var(--t-small);text-decoration:none;min-height:48px;display:inline-flex;align-items:center;padding-inline:6px}
.nav a:hover{text-decoration:underline;text-underline-offset:.3em;text-decoration-thickness:2px}
.nav a.btn{padding-inline:20px;color:var(--on-navy);white-space:nowrap}
.nav a.btn:hover{text-decoration:none}
@media (max-width:820px){.nav .wide{display:none}}
@media (max-width:420px){.brand span{font-size:1.2rem}.nav a.btn{padding-inline:14px}}

/* hero */
.hero{display:grid;gap:clamp(22px,3vw,56px);padding-block:clamp(10px,2vw,32px) var(--sec)}
.hero-copy{display:grid;gap:clamp(16px,1.8vw,28px);align-content:center;justify-items:start}
.hero-copy .lead{max-width:30ch}
.cta{display:flex;flex-wrap:wrap;gap:12px}
.hero-photo img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 78%}
.hero-photo figcaption,.cap{font-size:var(--t-small);color:var(--soft);padding-top:10px;max-width:46ch}
@media (min-width:900px){
  .hero{grid-template-columns:minmax(0,1fr) auto;align-items:center}
  .hero-photo img{height:clamp(460px,calc(100svh - 128px),920px);width:auto;aspect-ratio:3/4;max-width:42vw;object-position:50% 60%}
  .hero-photo figcaption{max-width:34ch}
}

/* sections */
section{padding-block:var(--sec)}
.grid{display:grid;gap:var(--gap)}
@media (min-width:900px){.grid{grid-template-columns:repeat(12,minmax(0,1fr))}}
.ph{width:100%;object-fit:cover}

/* courtyard */
.court{padding-top:0}
.court-top{display:grid;gap:var(--gap);margin-bottom:clamp(24px,3vw,48px)}
.court-photo img{aspect-ratio:21/9;object-position:50% 58%}
@media (min-width:900px){
  .court-top{grid-template-columns:repeat(12,minmax(0,1fr));align-items:end}
  .court-top h2{grid-column:1/8}
  .court-top p{grid-column:8/13}
  .court-photo{margin-left:calc(var(--pad) + 8%);}
}
@media (max-width:899px){.court-photo img{aspect-ratio:3/2;object-position:62% 50%}}

/* baked */
.baked{background:var(--blush)}
.baked-head{display:grid;gap:var(--gap);margin-bottom:clamp(28px,3.4vw,64px)}
.prints{display:grid;gap:var(--gap);grid-template-columns:1fr 1fr}
.prints figure:first-child{grid-column:1/-1}
.prints img{aspect-ratio:3/4}
.prints figure:first-child img{aspect-ratio:4/5;object-position:50% 70%}
@media (min-width:900px){
  .baked-head{grid-template-columns:repeat(12,minmax(0,1fr));align-items:end}
  .baked-head h2{grid-column:1/7}
  .baked-head p{grid-column:8/13}
  .prints{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start}
  .prints figure:first-child{grid-column:1/5}
  .prints figure:first-child img{aspect-ratio:3/4;object-position:50% 50%}
  .prints figure:nth-child(2){grid-column:5/9;margin-top:clamp(36px,4vw,80px)}
  .prints figure:nth-child(3){grid-column:9/13;margin-top:clamp(16px,1.6vw,32px)}
}

/* afternoon tea builder */
.navy{background:var(--navy);color:var(--on-navy)}
.navy .soft,.navy .cap{color:var(--on-navy-soft)}
.navy .slip .soft{color:var(--soft)}
.tea-grid{display:grid;gap:clamp(28px,4vw,72px)}
.tea-photo img{aspect-ratio:3/4;object-position:50% 40%}
.tea-intro{display:grid;gap:14px;margin-bottom:clamp(22px,2.6vw,40px)}
.builder,.choices{display:grid;gap:clamp(18px,2vw,30px)}
.builder legend{font-family:var(--display);font-size:var(--t-lead);line-height:1.15;padding:0;margin-bottom:12px}
.opts{display:grid;gap:8px}
.opts.two{grid-template-columns:1fr 1fr}
.opts.three{grid-template-columns:1fr}
.opt{position:relative;display:block}
.opt input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.opt span{display:flex;flex-direction:column;justify-content:center;gap:2px;min-height:54px;padding:10px 16px;background:#24506f;color:var(--on-navy);font-weight:600;line-height:1.25;transition:background-color .16s ease,color .16s ease}
.opt span small{font-weight:400;font-size:var(--t-small);color:var(--on-navy-soft);transition:color .16s ease}
.opt input:checked + span{background:var(--ground);color:var(--ink)}
.opt input:checked + span small{color:var(--soft)}
.opt input:focus-visible + span{outline:3px solid var(--on-navy);outline-offset:2px}
.builder[data-kind="sweet"] .needs-sandwich{display:none}
.builder select{width:100%;min-height:54px;padding:10px 14px;font:600 var(--t-body)/1.2 var(--text);color:var(--ink);background:var(--ground);border:0;border-radius:0}
.slip{background:var(--ground);color:var(--ink);padding:clamp(20px,2.4vw,36px);display:grid;gap:14px}
.slip h3{font-size:var(--t-lead)}
.slip li{padding-block:5px}

.slip .btn{background:var(--navy);color:var(--on-navy);justify-self:start}
.slip .btn:hover{background:var(--navy-deep)}
@media (min-width:640px){.opts.three{grid-template-columns:repeat(3,1fr)}.opts.fill{grid-template-columns:1fr 1fr}}
@media (min-width:1200px){.builder{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start}.slip{position:sticky;top:32px}}
@media (min-width:900px){
  .tea-grid{grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:start}
  .tea-photo{position:sticky;top:32px}
}
@media (min-width:1200px){.builder-cols{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}}
.builder-cols{display:grid;gap:clamp(20px,2.2vw,32px)}

/* menu taste */
.taste-head{display:grid;gap:18px;align-content:start;justify-items:start;margin-bottom:clamp(24px,3vw,48px)}
.taste-lists{display:grid;gap:clamp(26px,3vw,48px)}
.taste-lists h3{margin-bottom:10px}
.rows li{display:flex;justify-content:space-between;gap:20px;padding-block:7px}
.rows li span:last-child{font-variant-numeric:tabular-nums;white-space:nowrap}
.rows small{display:block;font-size:var(--t-small);color:var(--soft)}
@media (min-width:900px){
  .taste-head{grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;column-gap:var(--gap)}
  .taste-head h2{grid-column:1/7}
  .taste-head div{grid-column:8/13;display:grid;gap:16px;justify-items:start}
  .taste-lists{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}
}

/* about */
.about{background:var(--blush)}
.about-photo img{aspect-ratio:1/1}
.about-copy{display:grid;gap:18px;align-content:start}
.about-copy blockquote{font-family:var(--display);font-size:var(--t-lead);line-height:1.3}
.team{display:grid;grid-template-columns:minmax(110px,180px) 1fr;gap:18px;align-items:center;margin-top:8px}
.team img{aspect-ratio:1/1;object-position:50% 30%}
@media (min-width:900px){
  .about .grid{align-items:start}
  .about-photo{grid-column:1/6}
  .about-copy{grid-column:7/13}
}

/* walks */
.visit{background:var(--blush)}
.walk-photo img{aspect-ratio:3/4}
.walk-copy{display:grid;gap:14px;align-content:start}
@media (min-width:900px){
  .walk-photo{grid-column:10/13;grid-row:1/3}
  .walk-copy{grid-column:1/9;grid-row:2;margin-top:clamp(20px,2.4vw,44px);grid-template-columns:1fr 1fr;column-gap:var(--gap)}
  .walk-copy h3{grid-column:1/-1}
}
@media (max-width:899px){.walk-photo img{aspect-ratio:4/5;object-position:30% 60%}}

/* reviews */
.reviews h2{margin-bottom:clamp(24px,3vw,48px)}
.quotes{display:grid;gap:clamp(24px,3vw,56px)}
.quotes blockquote{display:grid;gap:12px;align-content:start}
.quotes blockquote p:first-child{font-family:var(--display);font-size:var(--t-lead);line-height:1.2}
@media (min-width:900px){.quotes{grid-template-columns:repeat(12,minmax(0,1fr))}.quotes blockquote:nth-child(1){grid-column:1/5}.quotes blockquote:nth-child(2){grid-column:5/9;margin-top:clamp(20px,3vw,56px)}.quotes .award{grid-column:9/13}}
.award{max-width:62ch}

/* visit */
.visit .grid{align-items:start}
.visit-copy{display:grid;gap:18px;justify-items:start}
.hours{border-collapse:collapse;width:100%;max-width:520px}
.hours caption{text-align:left;font-family:var(--display);font-size:var(--t-lead);line-height:1.15;padding-bottom:10px}
.hours th,.hours td{text-align:left;padding:9px 14px;font-weight:400}
.hours td{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.hours tr:nth-child(odd){background:var(--ground)}
.hours-wrap{display:grid;gap:14px}
address{font-style:normal}
@media (min-width:900px){.visit-copy{grid-column:1/5}.hours-wrap{grid-column:5/9}}

/* footer */
footer{background:var(--navy);color:var(--on-navy);padding-block:clamp(40px,5vw,80px) 28px}
footer .name{font-family:var(--display);font-size:clamp(2.4rem,9cqi,8.5rem);line-height:1;letter-spacing:-.015em}
footer .wrap{container-type:inline-size;display:grid;gap:clamp(20px,2.4vw,36px)}
.foot-row{display:flex;flex-wrap:wrap;gap:8px 36px;justify-content:space-between;align-items:center}
.foot-row a{display:inline-flex;align-items:center;min-height:44px;min-width:48px}
footer .small{color:var(--on-navy-soft)}

/* menu page */
.menu-head{padding-block:clamp(16px,3vw,48px) clamp(20px,2.4vw,36px);display:grid;gap:16px}
.search{display:grid;gap:8px;max-width:560px}
.search label{font-weight:600;font-size:var(--t-small)}
.search input{min-height:54px;padding:10px 16px;font:400 var(--t-body)/1.2 var(--text);color:var(--ink);background:#fff;border:2px solid var(--navy);border-radius:0;width:100%}
.cats{position:sticky;top:0;z-index:5;background:var(--navy)}
.cats ul{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;padding-inline:calc(var(--pad) - 14px);max-width:var(--wide);margin-inline:auto}
.cats ul::-webkit-scrollbar{display:none}
.cats a{display:inline-flex;align-items:center;min-height:52px;padding-inline:14px;color:var(--on-navy);font-weight:600;font-size:var(--t-small);text-decoration:none;white-space:nowrap}
.cats a:hover,.cats a.on{background:var(--ground);color:var(--ink)}
.msec{padding-block:clamp(36px,4.4vw,72px);scroll-margin-top:60px}
.msec:nth-of-type(even){background:#fff9f4}
.msec .wrap{display:grid;gap:clamp(16px,2vw,32px)}
.msec .note{font-size:var(--t-small);color:var(--soft);margin-top:10px;max-width:40ch}
.items{display:grid;gap:clamp(14px,1.6vw,22px) var(--gap)}
.items li{display:grid;gap:2px}
.items b{font-weight:600}
.items .price{font-variant-numeric:tabular-nums;font-weight:600}
.items p{color:var(--soft);font-size:var(--t-small);max-width:52ch}
.items.names{gap:8px var(--gap)}
.sub{font-family:var(--display);font-size:var(--t-lead);line-height:1.15;margin:clamp(14px,1.6vw,24px) 0 10px}
.sub:first-child{margin-top:0}
.msec figure img{aspect-ratio:3/4;object-position:50% 70%;width:100%;object-fit:cover;max-width:340px}
.none{display:none;padding-block:40px}
[hidden]{display:none!important}
@media (min-width:640px){.items.c2,.items.names{grid-template-columns:1fr 1fr}}
@media (min-width:900px){
  .msec .wrap{grid-template-columns:repeat(12,minmax(0,1fr))}
  .msec .mh{grid-column:1/5}
  .msec .mb{grid-column:5/13}
  .items.names{grid-template-columns:repeat(3,1fr)}
}
.endcta{background:var(--blush);padding-block:var(--sec)}
.endcta .wrap{display:grid;gap:20px;justify-items:start}

/* motion: slide-up and fade only, with a settled fallback */
.js .rv{opacity:0;transform:translateY(18px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i,0) * 80ms)}
.js .rv.in,.settled .rv{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .rv{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}.btn{transition:none}}
