:root{--ink:#29302b;--cream:#e5e7e1;--paper:#fbfcf9;--green:#6d786d;--lime:#dce1da;--orange:#5f6b61;--sage:#a3a6a0;--line:rgba(53,67,57,.16)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans",sans-serif}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1,h2{font-family:"Fraunces",serif;letter-spacing:-.045em;line-height:.96}h1{font-size:clamp(3.8rem,7.5vw,7.8rem);margin-bottom:28px}h2{font-size:clamp(3rem,5vw,5.6rem);margin-bottom:26px}h1 i,h2 i{font-weight:600;color:var(--orange)}
.site-header{height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 5vw;border-bottom:1px solid var(--line);position:relative;z-index:20}.brand{display:flex;align-items:center;gap:11px;font-family:"Fraunces",serif;font-size:1.35rem;font-weight:700}.brand em{display:block;font-family:"DM Sans",sans-serif;font-size:.58rem;text-transform:uppercase;letter-spacing:.16em;font-style:normal}.brand-mark{width:42px;height:42px;border-radius:50%;background:var(--orange);color:#fff;display:grid;place-items:center;font-family:"DM Sans";font-weight:700;font-size:.9rem}.site-header nav{display:flex;align-items:center;gap:32px;font-size:.88rem;font-weight:600}.site-header nav a{transition:.2s}.site-header nav a:hover{color:var(--orange)}.nav-cta{border:1px solid var(--ink);border-radius:99px;padding:12px 19px}.menu-toggle{display:none;border:0;background:none;width:42px;height:42px}.menu-toggle span{display:block;width:23px;height:2px;background:var(--ink);margin:6px auto}
.hero{min-height:calc(100vh - 88px);display:grid;grid-template-columns:1.05fr .95fr;align-items:center;padding:5vw;gap:5vw;background:var(--cream);overflow:hidden}.hero-copy{max-width:760px}.eyebrow{font-size:.73rem;text-transform:uppercase;letter-spacing:.17em;font-weight:700;display:flex;align-items:center;gap:10px;margin-bottom:28px}.eyebrow span{width:29px;height:1px;background:currentColor}.hero-intro{font-size:clamp(1rem,1.4vw,1.25rem);line-height:1.65;max-width:590px}.hero-actions{display:flex;align-items:center;gap:32px;margin:38px 0 48px}.button{display:inline-flex;align-items:center;justify-content:center;padding:17px 25px;border-radius:99px;font-weight:700;font-size:.9rem;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.button-dark{background:var(--ink);color:#fff}.text-link{font-weight:700;border-bottom:1px solid;padding-bottom:5px}.text-link span{margin-left:8px}.rating-row{display:flex;gap:13px;align-items:center;font-size:.82rem}.rating-row strong{font-family:"Fraunces";font-size:1.8rem}.stars{color:var(--orange);letter-spacing:2px}.hero-visual{height:min(680px,72vh);position:relative}.hero-photo{height:100%;border-radius:180px 180px 12px 12px;background:linear-gradient(180deg,transparent 60%,rgba(20,24,18,.5)),url('https://images.unsplash.com/photo-1550966871-3ed3cdb5ed0c?auto=format&fit=crop&w=1200&q=85') center/cover;box-shadow:0 24px 70px rgba(45,42,31,.16)}.open-card{position:absolute;left:-55px;bottom:55px;background:#fff;padding:17px 22px;border-radius:12px;display:flex;align-items:center;gap:13px;box-shadow:0 12px 35px rgba(45,42,31,.18)}.open-card strong,.open-card small{display:block}.open-card small{margin-top:3px;color:#6c6d67}.pulse{width:10px;height:10px;border-radius:50%;background:#63a36e;box-shadow:0 0 0 6px #e5f1e7}.scribble{position:absolute;right:-25px;top:58px;background:var(--lime);width:120px;height:120px;border-radius:50%;display:grid;place-items:center;text-align:center;transform:rotate(8deg);font-family:"Fraunces";font-style:italic;font-size:1.1rem}
.ticker{background:var(--ink);color:#fff;overflow:hidden;padding:17px 0;white-space:nowrap}.ticker div{display:flex;justify-content:space-around;gap:28px;text-transform:uppercase;font-size:.7rem;letter-spacing:.16em;font-weight:700}.ticker b{color:var(--lime)}.section{padding:110px 6vw}.section-label{padding-bottom:18px;border-bottom:1px solid var(--line);font-size:.7rem;text-transform:uppercase;letter-spacing:.16em;font-weight:700;margin-bottom:75px}.about{background:var(--paper)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:10vw}.about-copy>p:not(.eyebrow){font-size:1.08rem;line-height:1.8;max-width:590px;margin-bottom:32px}.feature-stack article{display:grid;grid-template-columns:50px 1fr;gap:22px;border-top:1px solid var(--line);padding:28px 0}.feature-stack article>span{color:var(--orange);font-size:.75rem;font-weight:700}.feature-stack h3{font-family:"Fraunces";font-size:1.65rem;margin-bottom:8px}.feature-stack p{color:#686b64;line-height:1.6;margin:0;max-width:480px}
.menu-section{background:var(--green);color:#fff}.menu-section .section-label{border-color:rgba(255,255,255,.2)}.menu-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:55px}.menu-heading>p{max-width:430px;line-height:1.7;color:rgba(255,255,255,.72)}.menu-heading h2{margin-bottom:0}.menu-heading h2 i{color:var(--lime)}.menu-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.menu-card{min-height:380px;border-radius:12px;padding:24px;display:flex;flex-direction:column;justify-content:space-between;color:var(--ink);position:relative;overflow:hidden;transition:transform .25s}.menu-card:hover{transform:translateY(-7px)}.menu-card:before{content:"";position:absolute;width:190px;height:190px;border:1px solid rgba(38,42,34,.13);border-radius:50%;right:-60px;top:-65px}.menu-card.breakfast{background:#e8c59f}.menu-card.coffee{background:#d7e6a7}.menu-card.cakes{background:#e7b5b0}.menu-card.lunch{background:#d8d0b9}.card-number{font-size:.68rem;font-weight:700}.menu-icon{font-size:5rem;text-align:center;filter:saturate(.75);transform:rotate(-5deg)}.menu-card p{font-size:.65rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;margin-bottom:8px}.menu-card h3{font-family:"Fraunces";font-size:2rem;margin-bottom:7px}.menu-card div span{font-size:.8rem}.menu-note{display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(255,255,255,.2);margin-top:50px;padding-top:28px}.menu-note p{margin:0;color:rgba(255,255,255,.65);font-size:.82rem}.button-light{border:1px solid rgba(255,255,255,.55)}
.reviews{background:var(--cream)}.review-feature{display:grid;grid-template-columns:.65fr 1.35fr;gap:8vw;align-items:center;border-bottom:1px solid var(--line);padding-bottom:70px}.big-rating{display:flex;align-items:center;gap:25px}.big-rating>strong{font-family:"Fraunces";font-size:6.5rem;letter-spacing:-.08em}.big-rating p{font-size:.72rem;margin:7px 0 0;color:#6c6d67}.review-feature blockquote{font-family:"Fraunces";font-size:clamp(1.7rem,2.7vw,3rem);line-height:1.3;margin:0}.review-feature cite,.review-grid cite{display:block;font-family:"DM Sans";font-size:.72rem;font-style:normal;text-transform:uppercase;letter-spacing:.14em;font-weight:700;margin-top:24px}.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:50px;margin-top:55px}.review-grid blockquote{margin:0}.review-grid p{line-height:1.7;margin-top:17px}
.visit{background:var(--paper)}.visit-panel{background:var(--ink);color:#fff;border-radius:18px;padding:7vw}.visit-panel h2{font-size:clamp(3rem,6vw,6.5rem)}.visit-panel h2 i{color:var(--lime)}.eyebrow.light{color:var(--lime)}.visit-details{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:40px;border-top:1px solid rgba(255,255,255,.17);padding-top:38px}.visit-details span{display:block;color:var(--lime);font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;font-weight:700;margin-bottom:13px}.visit-details p{line-height:1.65}.visit-details small{color:rgba(255,255,255,.58)}.visit-actions{display:flex;justify-content:space-between;align-items:center;margin-top:45px}.button-cream{background:var(--cream);color:var(--ink)}.service-pills{display:flex;gap:9px;flex-wrap:wrap}.service-pills span{font-size:.7rem;border:1px solid rgba(255,255,255,.22);border-radius:99px;padding:8px 12px}
footer{padding:55px 6vw 35px;background:var(--cream)}.footer-brand{margin-bottom:35px}footer>p{font-family:"Fraunces";font-size:1.5rem}footer>div:last-child{border-top:1px solid var(--line);padding-top:24px;display:flex;justify-content:space-between;font-size:.73rem;color:#6a6c66}.reveal{opacity:0;transform:translateY(20px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}
@media(max-width:900px){.site-header nav{position:absolute;top:88px;left:0;right:0;background:var(--paper);padding:30px 5vw;flex-direction:column;align-items:flex-start;transform:scaleY(0);transform-origin:top;opacity:0;transition:.2s;border-bottom:1px solid var(--line)}.site-header nav.open{transform:scaleY(1);opacity:1}.menu-toggle{display:block}.hero{grid-template-columns:1fr;padding-top:70px}.hero-visual{height:560px;margin-top:30px}.hero-photo{border-radius:120px 120px 12px 12px}.scribble{right:-10px}.about-grid,.review-feature{grid-template-columns:1fr;gap:60px}.menu-grid{grid-template-columns:repeat(2,1fr)}.menu-heading{display:block}.menu-heading>p{margin-top:25px}.review-grid{grid-template-columns:1fr;gap:28px}.visit-details{grid-template-columns:1fr 1fr}.visit-actions{align-items:flex-start;gap:30px;flex-direction:column}}
@media(max-width:560px){.site-header{height:74px}.site-header nav{top:74px}.section{padding:78px 6vw}.section-label{margin-bottom:50px}.hero{min-height:auto;padding:65px 6vw}.hero h1{font-size:3.75rem}.hero-actions{align-items:flex-start;flex-direction:column;gap:22px}.rating-row{flex-wrap:wrap}.hero-visual{height:430px}.open-card{left:12px;bottom:25px}.scribble{width:92px;height:92px;font-size:.9rem;top:30px}.ticker div{justify-content:flex-start;padding-left:20px}.about-grid{gap:45px}.menu-grid{grid-template-columns:1fr}.menu-card{min-height:310px}.menu-note{align-items:flex-start;flex-direction:column;gap:22px}.big-rating{align-items:flex-start;flex-direction:column;gap:5px}.review-feature{gap:35px}.visit-panel{padding:55px 7vw}.visit-details{grid-template-columns:1fr;gap:20px}.service-pills{display:none}footer>div:last-child{gap:15px;flex-direction:column}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}}

/* Café 118 red and white identity */
.site-header{background:rgba(255,253,251,.96)}
.hero{background:linear-gradient(135deg,#fffdfb 0%,#fffdfb 65%,#f9e5e6 100%)}
.hero-photo{background-image:linear-gradient(180deg,transparent 58%,rgba(70,5,14,.52)),url('assets/cafe-118-1.jpg');background-position:center;background-size:cover}
.scribble{background:var(--green);color:#fff}.ticker{background:var(--green)}.ticker b{color:#fff}
.menu-section{background:var(--green)}
.menu-card.breakfast{background:#fff}.menu-card.coffee{background:#f8dfe1}.menu-card.cakes{background:#fff}.menu-card.lunch{background:#edbdc1}
.menu-heading h2 i,.visit-panel h2 i,.eyebrow.light,.visit-details span{color:#fff}
.evenings{background:#fff}.evenings-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:8vw;align-items:center}.evenings-copy>p:not(.eyebrow):not(.event-small){font-size:1.08rem;line-height:1.8;max-width:620px}.event-price{display:flex;align-items:center;gap:20px;margin:30px 0}.event-price strong{font-family:"Fraunces";font-size:4.5rem;line-height:1;color:var(--green)}.event-price span{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700}.event-small{font-size:.78rem;color:#796768;margin-bottom:28px}.button-red{background:var(--green);color:#fff}.evening-card{min-height:510px;border-radius:160px 160px 12px 12px;background:var(--green);color:#fff;padding:75px 55px 50px;display:flex;flex-direction:column;justify-content:flex-end;text-align:center;position:relative;overflow:hidden}.evening-card:before,.evening-card:after{content:'✦';position:absolute;color:rgba(255,255,255,.16);font-size:9rem}.evening-card:before{top:10px;left:25px}.evening-card:after{right:-20px;top:130px}.evening-kicker{font-size:.7rem;text-transform:uppercase;letter-spacing:.2em;font-weight:700}.evening-card>strong{font-family:"Fraunces";font-size:7rem;line-height:1;margin:14px 0}.evening-card>p{max-width:420px;margin:0 auto 30px;line-height:1.7}.event-tags{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.event-tags span{border:1px solid rgba(255,255,255,.38);border-radius:99px;padding:8px 12px;font-size:.68rem}
.gallery{background:var(--cream)}.gallery-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:50px}.gallery-heading h2{margin-bottom:0}.gallery-heading>p{max-width:420px;line-height:1.7;color:#796768}.gallery-grid{display:grid;grid-template-columns:1.2fr .8fr;grid-template-rows:340px 340px;gap:15px}.gallery-grid figure{margin:0;border-radius:12px;overflow:hidden;position:relative;background:#e8d4d4}.gallery-grid .gallery-main{grid-row:1/3}.gallery-grid img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}.gallery-grid figure:hover img{transform:scale(1.025)}.gallery-grid figcaption{position:absolute;left:18px;bottom:18px;background:#fff;color:var(--ink);padding:10px 15px;border-radius:99px;font-size:.72rem;font-weight:700;box-shadow:0 6px 20px rgba(50,10,14,.16)}
.visit-panel{background:var(--green)}
@media(max-width:900px){.evenings-grid{grid-template-columns:1fr}.evening-card{min-height:450px}.gallery-heading{display:block}.gallery-heading>p{margin-top:25px}.gallery-grid{grid-template-rows:300px 300px}}
@media(max-width:560px){.event-price strong{font-size:3.7rem}.evening-card{min-height:390px;padding:55px 25px 35px}.evening-card>strong{font-size:5.5rem}.gallery-grid{grid-template-columns:1fr;grid-template-rows:420px 270px 270px}.gallery-grid .gallery-main{grid-row:auto}}

/* Client-approved sage identity */
.site-header{background:rgba(251,252,249,.96)}
.brand-mark{background:var(--green)}
.hero{background:linear-gradient(135deg,#fbfcf9 0%,#f4f6f1 64%,#dfe2dc 100%)}
.hero-photo{background-image:linear-gradient(180deg,transparent 55%,rgba(30,42,32,.48)),url('assets/cafe-118-1.jpg');background-position:center;background-size:cover}
.scribble{background:var(--green);color:#fff}.ticker{background:var(--green)}
.menu-section{background:var(--green)}
.menu-card.breakfast{background:#f7f8f4}.menu-card.coffee{background:#dce1da}.menu-card.cakes{background:#fff}.menu-card.lunch{background:#c7cdc4}
.menu-heading h2 i,.visit-panel h2 i,.eyebrow.light,.visit-details span{color:#fff}
.event-price strong{color:var(--green)}.button-red{background:var(--green)}.evening-card{background:var(--green)}
.gallery{background:var(--cream)}.gallery-heading>p{color:#616a62}.visit-panel{background:var(--green)}
.stars{color:var(--green)}

/* Full menu — intentionally shown without prices */
.full-menu{margin-top:90px;padding-top:75px;border-top:1px solid rgba(255,255,255,.24)}
.full-menu-heading{display:flex;justify-content:space-between;align-items:end;gap:50px;margin-bottom:40px}
.full-menu-heading h2{margin:0}.full-menu-heading h2 i{color:var(--lime)}.full-menu-heading>p{max-width:440px;color:rgba(255,255,255,.7);line-height:1.7;margin:0}
.menu-category{background:#f9faf7;color:var(--ink);border-radius:14px;margin-bottom:12px;overflow:hidden}
.menu-category summary{list-style:none;cursor:pointer;padding:25px 28px;display:flex;align-items:center;justify-content:space-between;gap:25px;font-family:"Fraunces",serif;font-size:1.55rem}
.menu-category summary::-webkit-details-marker{display:none}.menu-category summary:after{content:'+';font-family:"DM Sans",sans-serif;color:var(--green);font-size:1.5rem;margin-left:10px}.menu-category[open] summary:after{content:'−'}
.menu-category summary>span{display:flex;align-items:center;gap:18px}.menu-category summary b{font-family:"DM Sans",sans-serif;font-size:.65rem;color:var(--green);letter-spacing:.12em}
.menu-category summary i{margin-left:auto;font-family:"DM Sans",sans-serif;font-style:normal;font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:#778078}
.menu-items{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);padding:12px 28px 30px}
.menu-items article{padding:24px 25px 20px 0;margin-right:25px;border-bottom:1px solid var(--line)}.menu-items article:nth-last-child(-n+3){border-bottom:0}
.menu-items h3{font-family:"Fraunces",serif;font-size:1.3rem;margin-bottom:8px}.menu-items p{color:#626a63;font-size:.82rem;line-height:1.65;margin:0}.menu-items article>span{display:inline-block;margin-top:11px;color:var(--green);background:#e5e9e2;border-radius:99px;padding:5px 8px;font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em}
.allergy-note{background:#536056;color:#fff;border-radius:12px;padding:18px 22px;margin:20px 0 0;font-size:.78rem}.allergy-note strong{margin-right:5px}

/* Expanded customer photo gallery */
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:260px;grid-auto-flow:dense;gap:14px}
.gallery-grid .gallery-main{grid-column:span 2;grid-row:span 2}.gallery-grid .gallery-wide{grid-column:span 2}
.gallery-grid figure{min-height:0}.gallery-grid img{object-position:center}.gallery-grid figcaption{background:rgba(251,252,249,.94)}
.gallery-grid .photo-crop img{transform:scale(1.24)}.gallery-grid .photo-crop:hover img{transform:scale(1.29)}
.gallery-grid .crop-strong img{transform:scale(1.62)}.gallery-grid .crop-strong:hover img{transform:scale(1.67)}

@media(max-width:900px){.full-menu-heading{display:block}.full-menu-heading>p{margin-top:24px}.menu-items{grid-template-columns:repeat(2,1fr)}.menu-items article:nth-last-child(-n+3){border-bottom:1px solid var(--line)}.menu-items article:nth-last-child(-n+2){border-bottom:0}.gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:280px}.gallery-grid .gallery-main{grid-column:span 2}.gallery-grid .gallery-wide{grid-column:span 2}}
@media(max-width:560px){.full-menu{margin-top:65px;padding-top:55px}.menu-category summary{padding:21px 18px;font-size:1.28rem}.menu-category summary i{display:none}.menu-items{grid-template-columns:1fr;padding:5px 18px 22px}.menu-items article{padding:20px 0;margin:0}.menu-items article:nth-last-child(-n+2){border-bottom:1px solid var(--line)}.menu-items article:last-child{border-bottom:0}.gallery-grid{grid-template-columns:1fr;grid-template-rows:none;grid-auto-rows:330px}.gallery-grid .gallery-main,.gallery-grid .gallery-wide{grid-column:auto;grid-row:auto}.gallery-grid figure{height:auto}}
