/* Pressed Elite Sandwich Bar: mockup by AF Designs */
:root{
  /* brand: from the logo */
  --black:#000;
  --copper:#C2834F;      /* "PRESSED" lettering; 6.9:1 on black */
  --copper-hi:#E0A574;   /* small copper text on black, 10:1 */
  --copper-dk:#7A4A22;   /* copper text on light surfaces, 7.3:1 on stone */
  /* from the store */
  --stone:#EDEBE7;       /* marble counter */
  --white:#fff;
  --plate:#1D1D1D;       /* grill steel */
  --ink:#141414;
  --muted:#BDB8B0;       /* body text on black, 10:1 */
  --muted-dk:#58534D;    /* body text on stone, 6.6:1 */

  --display:'Marcellus',Georgia,serif;
  --body:'Instrument Sans',system-ui,-apple-system,sans-serif;

  --fs-hero:clamp(40px,4.6vw,68px);
  --fs-h2:clamp(34px,4.4vw,56px);
  --fs-h3:clamp(22px,2vw,27px);
  --fs-body:17px;
  --fs-small:15px;

  --gutter:clamp(18px,4vw,48px);
  --wrap:1180px;
  --section:clamp(64px,9vw,120px);
  --radius:10px;
  --vh:100svh;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{background:var(--black);color:var(--white);font:400 var(--fs-body)/1.55 var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.05;letter-spacing:.005em}
h2{font-size:var(--fs-h2)}
h3{font-size:var(--fs-h3)}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
:focus-visible{outline:2px solid var(--copper-hi);outline-offset:3px;border-radius:4px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 24px;border-radius:var(--radius);font:600 16px/1 var(--body);cursor:pointer;transition:background-color .18s ease,color .18s ease,border-color .18s ease,transform .12s ease}
.btn:active{transform:scale(.97)}
.btn-copper{background:var(--copper);color:#000}
.btn-copper:hover{background:var(--copper-hi)}
.btn-line{border:1.5px solid rgba(255,255,255,.5);color:#fff}
.btn-line:hover{border-color:#fff;background:rgba(255,255,255,.06)}
.btn-dark{background:var(--black);color:#fff}
.btn-dark:hover{background:#2a2a2a}
.btn small{font-weight:500;opacity:.7;font-size:13px}

/* header */
.top{position:sticky;top:0;z-index:20;background:rgba(0,0,0,.92);backdrop-filter:saturate(1.2) blur(6px)}
.top .wrap{display:flex;align-items:center;gap:28px;height:84px;max-width:1320px}
.top .logo img{width:72px;height:72px}
.top nav{display:flex;gap:28px;margin-left:auto;font-size:var(--fs-small);color:#ddd8d0}
.top nav a:hover{color:#fff}
.top .call{font-size:var(--fs-small);color:#ddd8d0}
.top .btn{min-height:42px;padding:0 18px;font-size:15px}

/* hero: the press */
.hero{overflow-x:clip;min-height:calc(var(--vh) - 84px);display:grid;place-items:center;text-align:center;padding:28px var(--gutter) 56px}
.press{position:relative;width:min(800px,94vw);aspect-ratio:16/9;margin:0 auto}
.press .plate{position:absolute;left:5%;right:5%;height:14%;border-radius:12px;background:linear-gradient(#2e2e2e,#131313 70%);box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 18px 40px rgba(0,0,0,.6)}
.press .plate::after{content:"";position:absolute;left:3%;right:3%;height:6px;background:repeating-linear-gradient(90deg,var(--copper) 0 20px,transparent 20px 32px);opacity:.8}
.press .lo{bottom:4%}
.press .lo::after{top:-5px}
.press .up{top:3%;transform-origin:0 50%;transform:rotate(-2.5deg)}
.press .up::after{bottom:-5px}
.press .handle{position:absolute;right:-8%;top:28%;width:13%;height:44%;border-radius:20px;background:linear-gradient(var(--copper-hi),var(--copper))}
.press .hinge{position:absolute;left:1%;top:8%;width:3.2%;height:86%;border-radius:8px;background:linear-gradient(90deg,#141414,#262626)}
.press .sw{position:absolute;left:12%;top:19%;width:76%;height:64%;object-fit:contain;transform-origin:50% 100%}
.press .steam{position:absolute;bottom:52%;width:14px;height:70px;border-radius:50%;background:rgba(255,255,255,.2);filter:blur(8px);opacity:0}
.press.run .up{animation:lift var(--cycle) cubic-bezier(.65,0,.25,1) infinite}
.press.run .sw{animation:squish var(--cycle) cubic-bezier(.65,0,.25,1) infinite}
.press.run .steam{animation:steam var(--cycle) ease-out infinite}
.press{--cycle:4.8s}
/* start mid-cycle so the first frame shows the press open */
.press.run .up,.press.run .sw,.press.run .steam{animation-delay:-1.6s}
/* closed: the top plate drops 3.4x its own height onto the lower plate */
@keyframes lift{0%,9%{transform:translateY(460%) rotate(0)}28%,84%{transform:translateY(0) rotate(-2.5deg)}100%{transform:translateY(460%) rotate(0)}}
@keyframes squish{0%,9%{transform:scaleY(.25);opacity:0}24%{opacity:1}28%,84%{transform:none;opacity:1}96%{opacity:0}100%{transform:scaleY(.25);opacity:0}}
@keyframes steam{0%,22%{opacity:0;transform:translateY(0) scaleX(1)}34%{opacity:1}62%{opacity:0;transform:translateY(-90px) scaleX(1.8)}100%{opacity:0}}
.ticket{display:flex;gap:14px;justify-content:center;align-items:baseline;font-family:var(--display);font-size:24px;color:var(--copper-hi);min-height:34px;margin:6px 0 18px;transition:opacity .3s}
.ticket span+span{color:#fff}
.hero h1{font-size:var(--fs-hero);max-width:20ch;margin:0 auto}
.hero .where{color:var(--muted);margin:18px auto 30px;font-size:18px}
.hero .where a{text-decoration:underline;text-decoration-color:rgba(255,255,255,.3);text-underline-offset:4px}
.hero .where a:hover{text-decoration-color:#fff}
.open{display:inline-flex;align-items:center;gap:8px;margin-top:22px;color:var(--muted);font-size:var(--fs-small)}
.open i{width:8px;height:8px;border-radius:50%;background:#6fcf7a}
.open.closed i{background:#888}
.order{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* menu */
.menu{background:var(--stone);color:var(--ink);padding:var(--section) 0}
.menu-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:20px 40px;margin-bottom:34px}
.menu-head p{color:var(--muted-dk);max-width:46ch}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:34px}
.tabs button{font:600 15px/1 var(--body);padding:12px 18px;border-radius:999px;border:1.5px solid #c9c4bc;background:transparent;color:var(--ink);cursor:pointer;transition:background-color .15s,border-color .15s}
.tabs button:hover{border-color:var(--ink)}
.tabs button[aria-selected=true]{background:var(--ink);border-color:var(--ink);color:#fff}
.items{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:40px 30px}
.item img{width:100%;aspect-ratio:4/3;object-fit:contain;margin-bottom:12px}
.item h3{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.item h3 b{font-family:var(--body);font-weight:600;font-size:18px;color:var(--copper-dk)}
.item p{color:var(--muted-dk);font-size:var(--fs-small);margin-top:6px;max-width:40ch}
.served{margin:-14px 0 32px;color:var(--muted-dk);font-size:var(--fs-small)}
.list{columns:2 260px;column-gap:48px;max-width:760px}
.list li{list-style:none;display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid #d6d1c9;break-inside:avoid}
.list li b{font-weight:600;color:var(--copper-dk)}
.combo{margin-top:56px;display:flex;flex-wrap:wrap;align-items:center;gap:20px 36px;padding:28px 32px;background:var(--black);color:#fff;border-radius:var(--radius)}
.combo img{width:180px}
.combo h3{font-size:30px}
.combo h3 b{color:var(--copper-hi);font-family:var(--body);font-weight:600;font-size:22px;margin-left:10px}
.combo p{color:var(--muted);max-width:44ch}
.combo .btn{margin-left:auto}
[hidden]{display:none!important}

/* juice bar */
.juice{padding:var(--section) 0;overflow:hidden}
.juice h2{text-align:center}
.juice .lede{color:var(--muted);text-align:center;margin:14px auto 40px;max-width:44ch}
.cups{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 var(--gutter) 10px;scrollbar-width:none}
.cups::-webkit-scrollbar{display:none}
.cup{flex:0 0 190px;scroll-snap-align:center;text-align:center}
.cup img{width:190px;height:220px;object-fit:cover;object-position:50% 40%}
.cup h3{font-size:19px;margin-top:4px}
.cup b{display:block;color:var(--copper-hi);font-weight:600;font-size:var(--fs-small);margin-top:4px}
.juice .more{text-align:center;color:var(--muted);font-size:var(--fs-small);margin-top:24px}
@media (min-width:1200px){.cups{justify-content:center;flex-wrap:wrap;overflow:visible}}

/* shabbat */
.shabbat{background:var(--white);color:var(--ink);padding:var(--section) 0}
.shabbat .wrap{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(30px,5vw,72px);align-items:start}
.shabbat figure img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--radius)}
.shabbat figcaption{font-size:13px;color:var(--muted-dk);margin-top:8px}
.when{font-family:var(--display);font-size:24px;line-height:1.3;margin:18px 0 26px;color:var(--copper-dk)}
.when a{color:var(--ink);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.shabbat-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:26px 34px;margin-top:34px}
.shabbat-cols h3{font-size:20px;padding-bottom:8px;border-bottom:1.5px solid var(--ink);margin-bottom:10px}
.shabbat-cols li{list-style:none;font-size:var(--fs-small);padding:3px 0;color:#2b2825}
.shabbat-cols li small{color:var(--muted-dk);font-size:13px}

/* catering */
.catering{padding:var(--section) 0}
.catering .wrap{max-width:980px}
.catering .lede{color:var(--muted);margin:14px 0 36px;max-width:50ch;font-size:18px}
.trays{display:grid;grid-template-columns:1fr 1fr;gap:0 56px}
.trays h3{font-size:20px;color:var(--copper-hi);margin-bottom:6px}
.trays li{list-style:none;display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #2c2c2c}
.trays li b{font-weight:600}
.assorted{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px;margin-top:40px;padding:26px 30px;border:1.5px solid var(--copper);border-radius:var(--radius)}
.assorted p{font-family:var(--display);font-size:26px}
.assorted p b{color:var(--copper-hi);font-weight:400;margin-left:8px}

/* reviews */
.reviews{background:var(--stone);color:var(--ink);padding:var(--section) 0}
.quotes{display:grid;grid-template-columns:repeat(12,1fr);gap:46px 40px;margin-top:44px}
.quotes blockquote{grid-column:span 4}
.quotes blockquote.big{grid-column:span 7}
.quotes blockquote.mid{grid-column:span 5}
.quotes p{font-family:var(--display);font-size:22px;line-height:1.35}
.quotes .big p{font-size:clamp(26px,2.6vw,34px);line-height:1.25}
.quotes cite{display:block;font-style:normal;font-size:var(--fs-small);color:var(--muted-dk);margin-top:12px}
.reviews .note{margin-top:42px;font-size:var(--fs-small);color:var(--muted-dk)}

/* about */
.about{padding:var(--section) 0}
.about .wrap{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(30px,6vw,90px);align-items:center}
.about p{color:var(--muted);margin-top:18px;max-width:58ch}
.about p a{color:#fff;text-decoration:underline;text-underline-offset:4px}
.about figure img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--radius)}
.about figcaption{font-size:13px;color:#8d877f;margin-top:8px}

/* visit */
.visit{background:var(--white);color:var(--ink);padding:var(--section) 0}
.visit .wrap{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(30px,5vw,72px)}
.visit figure img{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:50% 30%;border-radius:var(--radius)}
.facts{display:grid;gap:28px;margin-top:30px}
.facts h3{font-size:20px;margin-bottom:6px}
.facts a{text-decoration:underline;text-underline-offset:4px;text-decoration-color:#bbb}
.facts a:hover{text-decoration-color:var(--ink)}
.hours{display:grid;grid-template-columns:auto 1fr;gap:4px 24px;font-variant-numeric:tabular-nums}
.hours .today{font-weight:600}
.holiday{padding:16px 18px;border-radius:var(--radius);background:var(--stone);font-size:var(--fs-small)}
.holiday b{display:block;font-weight:600;margin-bottom:2px}
.kosher{display:flex;align-items:center;gap:14px}
.kosher img{width:64px;height:auto;background:#000;border-radius:8px;padding:6px}

/* footer */
.foot{padding:56px 0 calc(40px + env(safe-area-inset-bottom));color:var(--muted);font-size:var(--fs-small)}
.foot .wrap{display:flex;flex-wrap:wrap;gap:20px 40px;align-items:center}
.foot img{width:96px}
.foot nav{display:flex;flex-wrap:wrap;gap:8px 24px}
.foot nav a:hover{color:#fff}
.foot .af{margin-left:auto;font-size:13px;color:#8d877f}

/* phone order bar */
.orderbar{display:none}

@media (max-width:980px){
  .top nav{display:none}
  .shabbat .wrap,.about .wrap,.visit .wrap{grid-template-columns:1fr}
  .shabbat figure{max-width:460px}
  .about figure{max-width:420px}
  .quotes{grid-template-columns:1fr;gap:36px}
  .quotes blockquote,.quotes blockquote.big,.quotes blockquote.mid{grid-column:auto}
}
@media (max-width:700px){
  .top .wrap{height:68px;gap:14px}
  .top .logo img{width:58px;height:58px}
  .top .call{margin-left:auto}
  .top .btn{display:none}
  html{scroll-padding-top:68px}
  .hero{min-height:auto;padding-top:26px}
  .items{grid-template-columns:1fr 1fr;gap:28px 16px}
  .item h3{flex-direction:column;gap:2px;font-size:20px}
  .item p{font-size:14px}
  .hero .where{font-size:16px}
  .hero .order .btn{flex:1 1 40%;padding:0 12px;white-space:nowrap;font-size:15px}
  .ticket{font-size:21px}
  .trays{grid-template-columns:1fr}
  .trays div+div{margin-top:30px}
  .combo .btn{margin-left:0}
  .orderbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(0,0,0,.94);border-top:1px solid #222;transform:translateY(110%);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
  .orderbar.show{transform:none}
  .orderbar .btn{flex:1;min-height:46px;font-size:15px;padding:0 10px}
  .foot{padding-bottom:110px}
  .foot .af{margin-left:0}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .press.run .up,.press.run .sw,.press.run .steam{animation:none}
  .orderbar{transition:none}
}
