:root{
    --ink:#20231e;
    --paper:#f2efe8;
    --sage:#73806c;
    --muted:#6d7168;
    --line:#aaa99f;
    --header-h:92px
}
 *{
    box-sizing:border-box
}
 html{
    scroll-behavior:smooth;
    overflow-x:hidden
}
 body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:"DM Sans",sans-serif
}
 body.nav-open{
    overflow:hidden
}
 a{
    color:inherit;
    text-decoration:none
}
 img{
    display:block;
    max-width:100%
}
 .sr-only{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0
}
 .site-header{
    position:fixed;
    z-index:50;
    inset:0 0 auto;
    height:var(--header-h);
    display:grid;
    grid-template-columns:1fr auto 1fr;
    align-items:center;
    padding:0 4vw;
    background:rgba(242,239,232,.96);
    color:var(--ink);
    border-bottom:1px solid rgba(32,35,30,.16);
    backdrop-filter:blur(14px);
    transition:height .35s,background .35s,color .35s,border-color .35s
}
 .site-header--overlay:not(.is-scrolled){
    background:linear-gradient(180deg,rgba(9,12,8,.72),rgba(9,12,8,0));
    color:#fff;
    border-color:transparent;
    backdrop-filter:none
}
 .site-header.is-scrolled{
    height:76px;
    box-shadow:0 5px 28px rgba(20,24,18,.08)
}
 .logo{
    justify-self:start;
    font-weight:600;
    letter-spacing:.18em;
    font-size:17px
}
 .logo span{
    font-size:8px;
    vertical-align:top;
    margin-left:2px
}
 .site-header nav{
    display:flex;
    gap:clamp(22px,3vw,46px);
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:.1em
}
 .site-header nav a{
    position:relative;
    padding:10px 0
}
 .site-header nav a:after{
    content:"";
    position:absolute;
    left:0;
    right:100%;
    bottom:3px;
    height:1px;
    background:currentColor;
    transition:right .25s
}
 .site-header nav a:hover:after,.site-header nav a.active:after{
    right:0
}
 .nav-cta{
    justify-self:end;
    border:1px solid currentColor;
    border-radius:999px;
    padding:12px 18px;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.1em
}
 .nav-cta span{
    margin-left:7px
}
.menu-toggle{
    display:none
}
 .hero{
    height:100svh;
    min-height:700px;
    position:relative;
    color:#fff;
    overflow:hidden;
    background:var(--ink)
}
 .hero-media{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center 48%;
    transform:scale(1.03);
    animation:heroZoom 12s ease-out forwards
}
 .hero-overlay{
    position:absolute;
    inset:0;
    background:linear-gradient(180deg,rgba(0,0,0,.38),rgba(0,0,0,.08) 43%,rgba(0,0,0,.68))
}
 .hero-content{
    position:absolute;
    inset:0;
    padding:20vh 7vw 7vh;
    display:flex;
    flex-direction:column;
    justify-content:space-between
}
 .eyebrow,.kicker{
    font-size:11px;
    letter-spacing:.15em;
    text-transform:uppercase
}
.hero .eyebrow{
    color:#fff
}
 .hero h1,.inner-hero h1,.visit-intro h1{
    font:clamp(58px,8vw,124px)/.9 "DM Serif Display",serif;
    letter-spacing:-.045em;
    margin:0;
    max-width:1100px
}
 em{
    font-style:italic;
    font-weight:400
}
.hero-bottom{
    display:flex;
    justify-content:space-between;
    align-items:end;
    max-width:900px
}
.hero-bottom p{
    max-width:360px;
    font-size:15px;
    line-height:1.65
}
 .round-link{
    width:102px;
    height:102px;
    border:1px solid rgba(255,255,255,.65);
    border-radius:50%;
    display:grid;
    place-items:center;
    text-align:center;
    font-size:11px;
    line-height:1.4;
    transition:background .25s,color .25s
}
.round-link:hover{
    background:#fff;
    color:var(--ink)
}
 .hero-mark{
    position:absolute;
    right:4vw;
    bottom:5vh;
    font:clamp(100px,20vw,300px)/.7 "DM Serif Display",serif;
    opacity:.12
}
 .section{
    padding:clamp(90px,10vw,160px) 7vw
}
.kicker{
    color:#777b71;
    margin:0 0 30px
}
 .intro-grid{
    display:grid;
    grid-template-columns:1.15fr .85fr;
    gap:8vw;
    align-items:end
}
.intro h2,.section-head h2,.promo-copy h2,.contact h2,.menu-end h2,.visit-cta h2{
    font:clamp(58px,8vw,120px)/.88 "DM Serif Display",serif;
    letter-spacing:-.05em;
    margin:0
}
.intro h2 span{
    font-size:.6em;
    color:#7d8178
}
.intro h2 em{
    color:var(--sage)
}
 .intro-copy{
    max-width:470px
}
.lead{
    font-size:23px;
    line-height:1.3
}
.intro-copy p:last-child,.promo-copy>p{
    font-size:15px;
    line-height:1.8;
    color:#5e6259
}
 .dark-section{
    background:var(--ink);
    color:var(--paper)
}
.dark-section .kicker{
    color:#a7ab9e
}
.section-head{
    margin-bottom:clamp(60px,8vw,120px)
}
 .image-split{
    display:grid;
    grid-template-columns:minmax(0,1.3fr) minmax(340px,.7fr);
    min-height:680px
}
.feature-image{
    width:100%;
    height:100%;
    min-height:650px;
    object-fit:cover;
    object-position:center
}
.feature-copy{
    padding:5vw 4vw;
    display:flex;
    flex-direction:column;
    justify-content:center;
    background:#2a2e28
}
.number{
    font-size:10px;
    letter-spacing:.15em;
    opacity:.55;
    margin-bottom:15px
}
.feature-copy h3{
    font:44px "DM Serif Display",serif;
    margin:0 0 10px
}
.feature-copy p{
    font-size:14px;
    line-height:1.75;
    color:#c9ccc1;
    max-width:320px
}
.line{
    width:45px;
    height:1px;
    background:#747b6d;
    margin:45px 0
}
 .people{
    background:#dedbd2
}
.people-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:clamp(30px,5vw,80px);
    align-items:start
}
.person-photo{
    aspect-ratio:4/5;
    overflow:hidden;
    background:#c9c5ba
}
.person-photo img{
    width:100%;
    height:100%;
    object-fit:cover
}
.person:first-child .person-photo img{
    object-position:center 32%
}
.person:last-child .person-photo img{
    object-position:center 52%
}
.person-meta{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:20px;
    padding:20px 0;
    border-bottom:1px solid #aeb0a7
}
.person-meta span{
    font-size:10px;
    text-transform:uppercase;
    letter-spacing:.1em;
    color:#73776e
}
.person-meta h3{
    font:clamp(25px,2.2vw,34px) "DM Serif Display",serif;
    margin:0;
    text-align:right
}
.people-story{
    max-width:680px;
    margin:9vw auto 0;
    font:clamp(23px,2.2vw,31px)/1.4 "DM Serif Display",serif
}
 .page-promo{
    display:grid;
    grid-template-columns:.9fr 1.1fr;
    gap:9vw;
    align-items:center
}
.promo-copy h2{
    font-size:clamp(54px,7vw,105px)
}
.promo-copy>p{
    max-width:440px;
    margin:35px 0
}
.promo-image{
    width:100%;
    height:min(72vw,800px);
    object-fit:cover;
    object-position:center
}
 .text-link{
    display:inline-flex;
    align-items:center;
    gap:35px;
    margin-top:20px;
    text-transform:uppercase;
    letter-spacing:.11em;
    font-size:11px;
    border-bottom:1px solid currentColor;
    padding-bottom:9px
}
.text-link span{
    font-size:17px
}
.text-link--light{
    margin-top:40px
}
 .gallery{
    padding-top:70px
}
.gallery-title{
    display:flex;
    justify-content:space-between;
    align-items:end;
    margin-bottom:7vw
}
.gallery-title>span{
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.13em;
    color:#777b71
}
.gallery-title h2{
    font:clamp(48px,7vw,100px)/.9 "DM Serif Display",serif;
    letter-spacing:-.045em;
    margin:0;
    text-align:right
}
.gallery-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:18px
}
.gallery-grid img{
    width:100%;
    height:clamp(330px,34vw,540px);
    object-fit:cover
}
.gallery-grid .gallery-wide{
    grid-column:1/-1;
    height:clamp(420px,48vw,720px)
}
 .contact{
    min-height:100vh;
    padding:clamp(90px,10vw,160px) 7vw 70px;
    position:relative;
    overflow:hidden
}
.contact-inner{
    position:relative;
    z-index:2
}
.contact h2{
    font-size:clamp(70px,11vw,170px);
    margin-bottom:8vw
}
.big-cta{
    display:flex;
    justify-content:space-between;
    align-items:center;
    border-top:1px solid #6c7268;
    border-bottom:1px solid #6c7268;
    padding:25px 0;
    font:clamp(28px,4vw,54px) "DM Serif Display",serif
}
.big-cta span{
    font:30px "DM Sans",sans-serif
}
.contact-grid,.visit-details{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:40px;
    margin-top:70px
}
.contact-grid span,.visit-details span{
    font-size:10px;
    text-transform:uppercase;
    letter-spacing:.12em;
    color:#8f9489
}
.contact-grid p,.visit-details p{
    font-size:14px;
    line-height:1.7
}
.address-link{
    border-bottom:1px solid transparent;
    transition:border-color .2s
}
.address-link:hover{
    border-color:currentColor
}
.footer-mark{
    position:absolute;
    bottom:-1vw;
    left:2vw;
    font:clamp(120px,25vw,360px)/.7 "DM Serif Display",serif;
    opacity:.06;
    letter-spacing:-.06em
}
/* Internal pages */
 .inner-page{
    padding-top:var(--header-h)
}
.inner-hero{
    min-height:660px;
    padding:clamp(100px,11vw,180px) 10vw 100px;
    background:#d9ddd2;
    position:relative;
    overflow:hidden
}
.inner-hero:after{
    content:"R";
    position:absolute;
    right:3vw;
    bottom:-8vw;
    font:36vw/.7 "DM Serif Display",serif;
    color:rgba(32,35,30,.055)
}
.inner-hero h1{
    position:relative;
    z-index:1
}
.inner-hero>p:last-child{
    position:relative;
    z-index:1;
    max-width:480px;
    margin:55px 0 0 47%;
    font-size:17px;
    line-height:1.7
}
.menu-paper{
    width:min(1100px,86vw);
    margin:-55px auto 120px;
    padding:60px clamp(28px,6vw,90px) 90px;
    position:relative;
    background:#fbfaf6;
    box-shadow:0 18px 60px rgba(33,35,28,.12)
}
.menu-paper-head{
    display:flex;
    justify-content:space-between;
    align-items:start;
    border-bottom:1px solid #d7d4ca;
    padding-bottom:35px
}
.menu-paper-head>p{
    font-weight:600;
    letter-spacing:.18em;
    margin:0
}
.price-key{
    display:flex;
    gap:28px;
    font-size:9px;
    text-transform:uppercase;
    letter-spacing:.12em
}
.price-key span{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:6px
}
.root{
    display:block;
    width:9px;
    height:25px;
    background:var(--ink);
    border-radius:70% 30% 65% 35%;
    transform:rotate(18deg);
    clip-path:polygon(40% 0,68% 0,62% 24%,100% 44%,67% 47%,55% 100%,33% 56%,0 53%,39% 30%)
}
.root--small{
    width:6px;
    height:18px
}
.menu-category{
    padding-top:65px
}
.menu-category h2{
    text-align:center;
    text-transform:uppercase;
    letter-spacing:.08em;
    font:400 25px "DM Sans",sans-serif;
    margin:0 0 25px
}
.dish-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) 55px 55px;
    gap:18px;
    align-items:start;
    padding:24px 0
}
.dish-row h3{
    font:400 clamp(17px,1.7vw,22px)/1.45 "DM Sans",sans-serif;
    margin:0
}
.dish-row h3 small{
    font-size:.8em
}
.dish-row>span{
    text-align:center;
    font-size:20px;
    line-height:1.55
}
.dish-row>span:nth-child(3){
    color:#5e6259
}
.menu-note{
    border-top:1px solid #d7d4ca;
    margin:55px 0 0;
    padding-top:28px;
    color:#777b71;
    font-size:11px;
    line-height:1.65
}
.menu-end{
    padding-top:100px
}
.menu-end h2,.visit-cta h2{
    margin-bottom:80px
}
 .visit-intro{
    padding-top:clamp(110px,11vw,180px);
    padding-bottom:90px
}
.visit-intro h1{
    margin-top:45px
}
.visit-details{
    border-top:1px solid var(--line);
    padding-top:30px
}
.visit-details span{
    color:var(--muted)
}
.visit-details p{
    font-size:16px
}
.map-section{
    position:relative;
    background:#d8dbd1;
    padding:7vw
}
.map-section iframe{
    display:block;
    width:100%;
    height:min(68vh,700px);
    border:0;
    filter:grayscale(1) contrast(.92)
}
.map-card{
    position:absolute;
    right:10vw;
    bottom:4vw;
    width:min(420px,36vw);
    padding:42px;
    background:var(--paper);
    box-shadow:0 15px 45px rgba(23,27,21,.14)
}
.map-card h2{
    font:clamp(37px,4vw,62px)/.95 "DM Serif Display",serif;
    margin:0 0 25px
}
.map-card>p:not(.kicker){
    font-size:14px;
    line-height:1.7;
    color:var(--muted)
}
 .reveal{
    opacity:0;
    transform:translateY(30px);
    transition:opacity .8s ease,transform .9s cubic-bezier(.16,1,.3,1)
}
.reveal.visible{
    opacity:1;
    transform:none
}
@keyframes heroZoom{
    from{
        transform:scale(1.03)
    }
    to{
        transform:scale(1.09)
    }
}
 @media(max-width:800px){
    :root{
        --header-h:72px
    }
    .site-header{
        grid-template-columns:1fr auto;
        padding:0 20px
    }
    .site-header.is-scrolled{
        height:68px
    }
    .logo{
        font-size:15px
    }
    .menu-toggle{
        display:flex;
        z-index:2;
        width:42px;
        height:42px;
        border:0;
        background:none;
        flex-direction:column;
        justify-content:center;
        gap:6px;
        padding:10px;
        color:inherit
    }
    .menu-toggle>span:not(.sr-only){
        display:block;
        width:22px;
        height:1px;
        background:currentColor;
        transition:transform .25s
    }
    .menu-toggle[aria-expanded="true"]>span:first-child{
        transform:translateY(3.5px) rotate(45deg)
    }
    .menu-toggle[aria-expanded="true"]>span:nth-child(2){
        transform:translateY(-3.5px) rotate(-45deg)
    }
    .site-header nav{
        position:fixed;
        inset:0;
        display:flex;
        flex-direction:column;
        align-items:center;
        justify-content:center;
        gap:22px;
        background:var(--paper);
        color:var(--ink);
        font:32px "DM Serif Display",serif;
        text-transform:none;
        letter-spacing:0;
        opacity:0;
        visibility:hidden;
        transition:opacity .25s
    }
    .site-header nav.is-open{
        opacity:1;
        visibility:visible
    }
    .site-header nav a{
        padding:5px
    }
    .nav-cta{
        display:none
    }
    .hero{
        min-height:620px
    }
    .hero-content{
        padding:125px 22px 28px
    }
    .hero h1{
        font-size:clamp(49px,14vw,64px)
    }
    .hero-bottom p{
        font-size:13px;
        max-width:230px
    }
    .round-link{
        width:74px;
        height:74px;
        font-size:9px
    }
    .section{
        padding:85px 22px
    }
    .intro-grid,.image-split,.people-grid,.page-promo{
        grid-template-columns:1fr;
        gap:48px
    }
    .intro h2,.section-head h2,.promo-copy h2{
        font-size:clamp(53px,16vw,68px)
    }
    .image-split{
        min-height:0
    }
    .feature-image{
        min-height:390px;
        height:105vw
    }
    .feature-copy{
        padding:50px 30px
    }
    .people-grid{
        gap:55px
    }
    .person-photo{
        aspect-ratio:4/5
    }
    .person-meta{
        display:block
    }
    .person-meta h3{
        text-align:left;
        margin-top:8px
    }
    .people-story{
        margin-top:70px
    }
    .page-promo .promo-image{
        height:125vw;
        grid-row:1
    }
    .gallery{
        padding-top:45px
    }
    .gallery-title{
        display:block
    }
    .gallery-title h2{
        text-align:left;
        margin-top:30px
    }
    .gallery-grid{
        grid-template-columns:1fr;
        gap:12px
    }
    .gallery-grid img,.gallery-grid .gallery-wide{
        grid-column:auto;
        height:78vw
    }
    .contact{
        padding:85px 22px 40px
    }
    .contact h2{
        font-size:74px;
        margin-bottom:70px
    }
    .contact-grid,.visit-details{
        grid-template-columns:1fr;
        gap:22px;
        margin-top:50px
    }
    .inner-hero{
        min-height:auto;
        padding:90px 22px 120px
    }
    .inner-hero h1,.visit-intro h1{
        font-size:clamp(54px,16vw,72px)
    }
    .inner-hero>p:last-child{
        margin:45px 0 0;
        font-size:15px
    }
    .menu-paper{
        width:calc(100% - 24px);
        margin:-60px auto 80px;
        padding:35px 20px 60px
    }
    .menu-paper-head{
        display:block
    }
    .price-key{
        justify-content:flex-start;
        gap:22px;
        margin-top:28px
    }
    .menu-category{
        padding-top:48px
    }
    .menu-category h2{
        font-size:21px
    }
    .dish-row{
        grid-template-columns:minmax(0,1fr) 35px 35px;
        gap:7px;
        padding:20px 0
    }
    .dish-row h3{
        font-size:16px
    }
    .dish-row>span{
        font-size:16px
    }
    .menu-end h2,.visit-cta h2{
        margin-bottom:55px
    }
    .visit-intro{
        padding:90px 22px 65px
    }
    .visit-details{
        padding-top:25px
    }
    .map-section{
        padding:12px 12px 0
    }
    .map-section iframe{
        height:70vh;
        min-height:500px
    }
    .map-card{
        position:relative;
        right:auto;
        bottom:auto;
        width:100%;
        padding:38px 24px;
        box-shadow:none
    }
    .map-card h2{
        font-size:48px
    }
}
 @media(prefers-reduced-motion:reduce){
    *{
        scroll-behavior:auto!important;
        animation:none!important;
        transition:none!important
    }
    .reveal{
        opacity:1;
        transform:none
    }
}
/* Keep both menu price labels on one baseline despite different icon sizes. */
 .price-key span{
     display:grid;
     grid-template-rows:25px auto;
     justify-items:center;
     align-items:end;
     row-gap:6px;
     min-width:44px;
}
 .price-key .root{
    align-self:end
}
/* Supplied logo artwork has a white canvas;
 crop and blend it into the layout. */
 .logo{
    display:block;
    width:156px;
    height:57px;
    overflow:hidden
}
 .logo-crop{
    position:relative;
    display:block;
    width:156px;
    height:57px;
    overflow:hidden;
    mix-blend-mode:multiply
}
 .logo-crop img{
    position:absolute;
    top:-66px;
    left:-18px;
    width:190px;
    max-width:none;
    height:auto
}
 .site-header--overlay:not(.is-scrolled) .logo-crop{
    filter:invert(1);
    mix-blend-mode:screen
}
 .menu-logo{
    position:relative;
    display:block;
    width:150px;
    height:57px;
    overflow:hidden;
    mix-blend-mode:multiply
}
 .menu-logo img{
    position:absolute;
    top:-66px;
    left:-18px;
    width:190px;
    max-width:none;
    height:auto
}
 .footer-root{
    position:absolute;
    z-index:1;
    right:8vw;
    bottom:70px;
    width:58px;
    max-height:124px;
    object-fit:cover;
    filter:invert(1);
    mix-blend-mode:screen;
    opacity:.72
}
 @media(max-width:800px){
     .logo,.logo-crop{
        width:128px;
        height:49px
    }
     .logo-crop img{
        top:-56px;
        /* left:-15px; */
        width:162px
    }
     .menu-logo{
        width:128px;
        height:49px
    }
     .menu-logo img{
        top:-56px;
        left:-15px;
        width:162px
    }
     .footer-root{
        right:22px;
        bottom:45px;
        width:42px
    }
}
/* Mandatory notice for the unofficial demonstration website. */
 body.demo-notice-open{
    overflow:hidden
}
 .demo-notice{
    position:fixed;
    z-index:1000;
    inset:0;
    display:grid;
    place-items:center;
    padding:24px;
    background:rgba(20,23,18,.82);
    backdrop-filter:blur(12px)
}
 .demo-notice[hidden]{
    display:none
}
 .demo-notice__panel{
    position:relative;
    width:min(680px,100%);
    max-height:calc(100svh - 48px);
    overflow:auto;
    padding:clamp(38px,6vw,72px);
    background:var(--paper);
    box-shadow:0 28px 90px rgba(0,0,0,.28)
}
 .demo-notice__mark{
    position:absolute;
    top:clamp(32px,5vw,58px);
    right:clamp(32px,5vw,58px);
    width:32px;
    height:auto;
    mix-blend-mode:multiply
}
 .demo-notice__panel .kicker{
    padding-right:60px;
    margin-bottom:34px
}
 .demo-notice__panel h2{
    max-width:570px;
    margin:0;
    font:clamp(45px,6vw,76px)/.92 "DM Serif Display",serif;
    letter-spacing:-.04em
}
 .demo-notice__panel h2 em{
    color:var(--sage)
}
 .demo-notice__panel>p:not(.kicker){
    max-width:530px;
    margin:36px 0;
    color:#5e6259;
    font-size:15px;
    line-height:1.75
}
 .demo-notice__button{
    width:100%;
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:20px 0;
    border:0;
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
    background:transparent;
    color:var(--ink);
    font:500 11px "DM Sans",sans-serif;
    letter-spacing:.11em;
    text-align:left;
    text-transform:uppercase;
    cursor:pointer
}
 .demo-notice__button span{
    font-size:20px;
    transition:transform .2s
}
 .demo-notice__button:hover span{
    transform:translateX(5px)
}
 .demo-notice__button:focus-visible{
    outline:2px solid var(--sage);
    outline-offset:5px
}
 @media(max-width:600px){
     .demo-notice{
        padding:12px
    }
     .demo-notice__panel{
        max-height:calc(100svh - 24px);
        padding:38px 24px
    }
     .demo-notice__mark{
        top:34px;
        right:24px;
        width:25px
    }
     .demo-notice__panel .kicker{
        margin-bottom:30px
    }
     .demo-notice__panel h2{
        font-size:clamp(42px,13vw,58px)
    }
     .demo-notice__panel>p:not(.kicker){
        margin:30px 0;
        font-size:14px
    }
}
/* Mobile interaction fixes. */
 .hero-content{
    z-index:1
}
 .hero-mark{
    pointer-events:none
}
 .round-link{
    position:relative;
    z-index:2
}
 @media(max-width:800px){
     .site-header nav{
         inset:auto;
         top:0;
         left:0;
         width:100vw;
         height:100dvh;
         min-height:100vh;
         z-index:1;
    }
     .site-header.menu-is-open .logo, .site-header.menu-is-open .menu-toggle{
        position:relative;
        z-index:2
    }
     .site-header.site-header--overlay.menu-is-open{
         color:var(--ink);
         background:var(--paper);
         border-color:rgba(32,35,30,.16);
         backdrop-filter:none;
    }
     .site-header.site-header--overlay.menu-is-open .logo-crop{
         filter:none;
         mix-blend-mode:multiply;
    }
}
 