:root{
  --ink:#3B2314;      /* dark roasted brown: text, header */
  --wood:#6B4423;     /* wood brown: secondary text */
  --tan:#C98B3F;      /* toasted garlic: lines, accents */
  --gold:#F0BC3E;     /* egg-noodle gold: buttons, highlights */
  --broth:#F7E6BC;    /* broth: soft panels */
  --milk:#FFFBF1;     /* lye-white: page background */
  --open:#2F7A3E;
  --shut:#8A6A4F;
  --r:14px;
  --head:"Young Serif",Georgia,serif;
  --body:"Figtree",system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--milk);color:var(--ink);font:400 1.0625rem/1.55 var(--body);-webkit-text-size-adjust:100%}
h1,h2,h3{font-family:var(--head);font-weight:400;line-height:1.1;margin:0 0 .5em}
h1{font-size:clamp(2.6rem,6vw,4.6rem)}
h2{font-size:clamp(1.6rem,3vw,2.2rem)}
h3{font-size:1.2rem}
p{margin:0 0 1em}
a{color:inherit}
.small{font-size:.875rem;color:var(--wood)}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

.btn{font:600 1rem var(--body);border:2px solid var(--ink);background:var(--ink);color:var(--milk);padding:.7em 1.2em;border-radius:999px;cursor:pointer;text-decoration:none;display:inline-block;text-align:center}
.btn-gold{background:var(--gold);color:var(--ink);border-color:var(--gold)}
.btn-ghost{background:transparent;color:var(--ink)}

/* ---------- status ---------- */
.statusbar{display:flex;align-items:center;gap:.6rem;padding:.55rem 1rem;background:var(--ink);color:var(--milk);font-weight:600;font-size:.95rem}
.statusbar .btn{margin-left:auto;padding:.35em .9em;font-size:.9rem}
.pill{display:inline-flex;align-items:center;gap:.5rem;padding:.4em .9em;border-radius:999px;background:var(--broth);font-weight:600}

/* ---------- header / nav ---------- */
.top{display:none}
.brand{font-family:var(--head);font-size:1.4rem;text-decoration:none}
.nav a{margin-right:1.6rem;text-decoration:none;font-weight:600;padding:.3em 0;border-bottom:2px solid transparent}
.nav a.on{border-color:var(--tan)}
.tabbar{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);background:var(--milk);border-top:1px solid var(--tan);padding-bottom:env(safe-area-inset-bottom,0);z-index:20}
.tabbar a{text-align:center;text-decoration:none;font-weight:600;font-size:.85rem;padding:.9rem 0}
.tabbar a.on{background:var(--broth)}

main{padding:1.25rem 1.1rem 9rem;max-width:1100px;margin:0 auto;outline:none}
section.block{margin-top:2.75rem}
.foot{padding:1.5rem 1.1rem 9rem;text-align:center;border-top:1px solid var(--broth)}

/* ---------- hero ---------- */
.hero{display:grid;gap:1rem}
.hero h1 span{display:block}
.hero p.lede{font-size:1.15rem;max-width:34ch}
.bowl{width:100%;max-width:340px;justify-self:center}
.steam path{opacity:.55}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.cta-row{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1rem}

/* ---------- menu (mobile: compact rows) ---------- */
.chips{display:flex;gap:.5rem;overflow-x:auto;padding:.25rem 0 .75rem;position:sticky;top:0;background:var(--milk);z-index:5;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;font:600 .95rem var(--body);padding:.5em 1em;border-radius:999px;border:2px solid var(--tan);background:transparent;color:var(--ink);cursor:pointer}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--milk)}
.menu{display:grid;gap:0}
.item{display:grid;grid-template-columns:1fr auto;gap:.25rem 1rem;padding:1rem 0;border-bottom:1px solid var(--broth)}
.item h3{margin:0}
.item p{margin:0;color:var(--wood);font-size:.95rem;grid-column:1}
.item .price{font-weight:700;white-space:nowrap}
.item .add{grid-column:2;grid-row:1 / span 2;align-self:center;width:2.6rem;height:2.6rem;padding:0;font-size:1.5rem;line-height:1}
.item.star h3::after{content:"Bestseller";margin-left:.5rem;font:700 .7rem var(--body);background:var(--gold);padding:.2em .6em;border-radius:999px;vertical-align:middle}

/* ---------- reviews ---------- */
.score{display:flex;align-items:baseline;gap:.6rem;margin-bottom:1rem}
.score b{font:400 3rem var(--head)}
.stars{color:var(--tan);letter-spacing:.1em}
.reviews{display:grid;gap:1rem}
.review{background:var(--broth);border-radius:var(--r);padding:1.1rem 1.2rem}
.review p{margin:.4rem 0}
.review footer{font-size:.9rem;color:var(--wood)}

/* ---------- about ---------- */
.info{display:grid;gap:1.5rem}
.hours{width:100%;border-collapse:collapse}
.hours td{padding:.55rem 0;border-bottom:1px solid var(--broth)}
.hours td:last-child{text-align:right;font-weight:600}
.hours tr.today td{color:var(--ink);font-weight:700}

/* ---------- order sheet & fab ---------- */
.fab{position:fixed;left:1rem;bottom:calc(3.6rem + env(safe-area-inset-bottom,0));z-index:19;background:var(--gold);color:var(--ink);border:0;border-radius:999px;padding:.8rem 1.3rem;font:700 1rem var(--body);box-shadow:0 6px 18px rgba(59,35,20,.28);cursor:pointer}
.fab[hidden]{display:none}
.sheet-wrap{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end;justify-content:center}
.sheet-wrap[hidden]{display:none}
.scrim{position:absolute;inset:0;background:rgba(59,35,20,.55)}
.sheet{position:relative;background:var(--milk);width:100%;max-height:88vh;overflow:auto;border-radius:20px 20px 0 0;padding:1.1rem 1.1rem calc(1.2rem + env(safe-area-inset-bottom,0))}
.sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}
.sheet-head h2{margin:0}
.line{display:flex;align-items:center;gap:.6rem;padding:.7rem 0;border-bottom:1px solid var(--broth)}
.line .nm{flex:1}
.qty{display:inline-flex;align-items:center;gap:.4rem}
.qty button{width:2rem;height:2rem;border-radius:50%;border:2px solid var(--tan);background:transparent;font:700 1.1rem var(--body);color:var(--ink);cursor:pointer}
.total{display:flex;justify-content:space-between;font-weight:700;font-size:1.15rem;padding:1rem 0}
.sheet textarea{width:100%;font:inherit;border:2px solid var(--tan);border-radius:10px;padding:.6rem;background:#fff;margin-bottom:.8rem}
.sheet .cta-row .btn{flex:1}
.empty{padding:1.2rem 0;color:var(--wood)}

/* ---------- desktop: its own layout, not a stretched phone ---------- */
@media (min-width:900px){
  .statusbar{justify-content:center}
  .statusbar .btn{display:none}
  .top{display:flex;align-items:center;gap:2rem;padding:1.1rem 2.5rem;border-bottom:1px solid var(--broth);position:sticky;top:0;background:var(--milk);z-index:20}
  .top .nav{margin-left:auto}
  .tabbar,.fab{display:none}
  main{padding:3rem 2.5rem 4rem}
  .foot{padding-bottom:2.5rem}
  .hero{grid-template-columns:1.1fr .9fr;align-items:center;gap:3rem;min-height:60vh}
  .bowl{max-width:440px}
  .menu-layout{display:grid;grid-template-columns:200px 1fr;gap:3rem;align-items:start}
  .chips{flex-direction:column;position:sticky;top:5.5rem;overflow:visible;padding:0}
  .chip{text-align:left;border-radius:10px}
  .menu{grid-template-columns:repeat(2,1fr);gap:1.25rem}
  .item{display:flex;flex-direction:column;background:#fff;border:1px solid var(--broth);border-radius:var(--r);padding:1.25rem}
  .item p{flex:1;margin:.3rem 0 1rem}
  .item .price{font-size:1.25rem;margin-bottom:.6rem}
  .item .add{width:auto;height:auto;padding:.55em 1.1em;font-size:1rem;align-self:flex-start}
  .item .add::after{content:" Add to order"}
  .reviews{grid-template-columns:repeat(3,1fr)}
  .info{grid-template-columns:1fr 1fr;gap:3rem}
  .sheet-wrap{align-items:stretch;justify-content:flex-end}
  .sheet{width:min(440px,100%);max-height:none;height:100%;border-radius:0}
}

/* ---------- depth, texture, life ---------- */
body{background:
  radial-gradient(900px 520px at 88% -4%,rgba(240,188,62,.24),transparent 60%),
  radial-gradient(700px 520px at -10% 42%,rgba(201,139,63,.15),transparent 60%),
  var(--milk)}

.statusbar{background:linear-gradient(180deg,#4B2C18,var(--ink));box-shadow:0 2px 10px rgba(59,35,20,.28);position:relative;z-index:6}
.top{box-shadow:0 10px 24px -14px rgba(59,35,20,.3)}
.tabbar{background:var(--milk);box-shadow:0 -10px 24px -12px rgba(59,35,20,.3)}
.pill{box-shadow:inset 0 0 0 1.5px var(--tan),0 4px 10px -4px rgba(59,35,20,.25)}
.sheet{box-shadow:0 -14px 40px rgba(59,35,20,.32)}
.foot{background:var(--ink);color:var(--broth);border:0;padding-top:2rem}
.foot .small{color:var(--tan)}

/* buttons: smooth lift + light sweep */
.btn{position:relative;overflow:hidden;isolation:isolate;
  box-shadow:0 2px 0 rgba(59,35,20,.85),0 8px 14px -6px rgba(59,35,20,.35);
  transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s,background-color .3s,color .3s,border-color .3s}
.btn::before{content:"";position:absolute;top:0;bottom:0;left:-70%;width:45%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-20deg);transition:left .7s ease}
.btn:active{box-shadow:0 1px 0 rgba(59,35,20,.85),0 4px 8px -4px rgba(59,35,20,.4);transition-duration:.08s}
.btn-ghost{box-shadow:none}
.chip,.qty button,.nav a,.tabbar a{transition:background-color .25s,color .25s,border-color .25s,transform .25s,box-shadow .25s}

/* noodle motif */
main h2::after{content:"";display:block;width:64px;height:14px;margin-top:.5rem;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='14'%3E%3Cpath d='M0 7q8-10 16 0t16 0' fill='none' stroke='%23C98B3F' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") repeat-x}
.squiggle{height:14px;margin-top:2.5rem;opacity:.8;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='14'%3E%3Cpath d='M0 7q12-10 24 0t24 0' fill='none' stroke='%23C98B3F' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") repeat-x center}

/* hero art */
.hero-art{position:relative;display:grid;place-items:center;padding:1.2rem;isolation:isolate}
.hero-art::before{content:"";position:absolute;width:82%;aspect-ratio:1;border-radius:50%;z-index:-1;
  background:radial-gradient(circle at 32% 28%,#FFE7A0,var(--gold) 62%,#E2A32B);
  box-shadow:inset -18px -26px 40px rgba(201,139,63,.45),0 28px 50px -14px rgba(201,139,63,.55)}
.deco{position:absolute;width:56px;pointer-events:none}
.deco svg{width:100%;display:block}
.d1{top:6%;left:4%}
.d2{bottom:10%;right:2%;width:64px}
.d3{top:14%;right:6%;width:46px}

/* cards with layered depth */
.features{display:grid;gap:1rem}
.feat{position:relative;overflow:hidden;background:#fff;border-radius:var(--r);padding:1.3rem;border:1px solid var(--broth);
  box-shadow:0 1px 0 #fff inset,0 2px 4px rgba(59,35,20,.06),0 14px 24px -14px rgba(59,35,20,.28);
  transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s}
.feat::before{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 30% 30%,var(--broth),transparent 70%)}
.feat h3,.feat p{position:relative}
.feat p{margin:0;color:var(--wood)}
.review{position:relative;background:linear-gradient(160deg,#FBEBC4,var(--broth));
  box-shadow:0 2px 3px rgba(59,35,20,.08),0 16px 26px -16px rgba(59,35,20,.4);
  transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s}
.review::before{content:"\201C";position:absolute;right:.9rem;top:-.2rem;font:5rem/1 var(--head);color:var(--tan);opacity:.35}
.item.star{border-left:4px solid var(--gold);padding-left:.8rem}

@media (min-width:900px){
  .features{grid-template-columns:repeat(3,1fr);gap:1.5rem}
  .reviews .review:nth-child(odd){transform:rotate(-.7deg)}
  .reviews .review:nth-child(even){transform:rotate(.6deg)}
  .item{box-shadow:0 2px 4px rgba(59,35,20,.06),0 16px 26px -18px rgba(59,35,20,.35);transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s}
  .item.star{border-left:1px solid var(--broth);padding-left:1.25rem;border-top:4px solid var(--gold)}
  .sheet{box-shadow:-16px 0 40px rgba(59,35,20,.32)}
  .deco{width:64px}
}

@media (hover:hover) and (pointer:fine){
  .btn:hover{box-shadow:0 3px 0 rgba(59,35,20,.85),0 14px 20px -8px rgba(59,35,20,.4)}
  .btn:hover::before{left:130%}
  .btn-gold:hover{background:#F7CA5C;border-color:#F7CA5C}
  .btn-ghost:hover{background:var(--ink);color:var(--milk)}
  .chip:hover{box-shadow:0 5px 10px -4px rgba(59,35,20,.3);border-color:var(--ink)}
  .qty button:hover{background:var(--gold);border-color:var(--gold);transform:scale(1.12)}
  .nav a:hover{border-color:var(--gold)}
  .tabbar a:hover{background:var(--broth)}
  .feat:hover{transform:translateY(-4px);box-shadow:0 2px 4px rgba(59,35,20,.08),0 22px 32px -16px rgba(59,35,20,.4)}
  .reviews .review:hover{transform:translateY(-4px) rotate(0);box-shadow:0 2px 4px rgba(59,35,20,.1),0 22px 32px -16px rgba(59,35,20,.45)}
}

@media screen{
  .btn:active{box-shadow:0 1px 0 rgba(59,35,20,.85),0 4px 8px -4px rgba(59,35,20,.4);transition-duration:.08s}
  .feat:active,.reviews .review:active{transform:translateY(-2px) scale(.99)}
}

@media (prefers-reduced-motion:reduce){
  .btn::before{display:none}
  .btn:hover,.chip:hover,.nav a:hover,.qty button:hover,.feat:hover,.reviews .review:hover{transform:none}
}

/* keep everything inside the screen width */
body{max-width:100%;overflow-x:clip}
.statusbar>span{flex:1;min-width:0;line-height:1.3}
.statusbar .btn{flex:none}
.hero>*,.info>*,.menu-layout>*,.reviews>*,.features>*{min-width:0}
main{overflow-wrap:anywhere}

/* hero art: sized for phones first, then desktop */
h1{font-size:clamp(2.2rem,9vw,3rem)}
.hero-art{width:min(100%,270px);margin:0 auto}
.hero-art .bowl{max-width:100%}
.deco{width:40px}
.d2{width:44px}
.d3{width:34px}
@media (min-width:900px){
  h1{font-size:clamp(2.6rem,6vw,4.6rem)}
  .hero-art{width:100%;max-width:480px;justify-self:center}
  .deco{width:64px}
  .d3{width:46px}
}

/* no double-tap delay on taps */
button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}

/* instant feedback on the add button itself */
.item .add.added{background:var(--ink);border-color:var(--ink);color:var(--gold)}
