/* =====================================================================
   רחלי'ס עוגות ומתוקים — public design system
   Fonts: Suez One (display) · Assistant (body) · Amatic SC (handwritten accents)
   Themes via [data-theme] on <html>: rose (default) · caramel · mint · lavender · chocolate
   ===================================================================== */

:root {
  --font-body: 'Assistant', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
  --font-display: 'Suez One', 'Assistant', serif;
  --font-hand: 'Amatic SC', 'Assistant', cursive;

  --cream: #FFF8F1;
  --cream-2: #FBEFE6;
  --surface: #FFFFFF;
  --ink: #3B2A24;
  --ink-2: #5A4740;
  /* --muted / --*-deep are text tokens: kept dark enough for 4.5:1 on cream & tinted chips */
  --muted: #85625C;
  --line: #F0E1DA;
  --line-2: #E6D2C8;

  --accent: #E2497A;
  --accent-deep: #B32B56;
  --accent-soft: #FBE3EB;
  --accent-ink: #FFFFFF;
  --gold: #D9A24A;
  --gold-soft: #FBF0DA;
  --gold-deep: #8A5A12;
  --mint: #6FBFA6;
  --mint-soft: #E4F5EE;

  --wa: #25D366;
  --wa-ink: #0B3D22;
  --wa-deep: #1FB85A;

  --shadow-1: 0 1px 2px rgba(59,42,36,.06), 0 4px 14px rgba(59,42,36,.06);
  --shadow-2: 0 6px 24px rgba(59,42,36,.12), 0 2px 6px rgba(59,42,36,.06);
  --shadow-3: 0 18px 50px rgba(59,42,36,.18);
  --r-sm: 10px; --r: 16px; --r-lg: 24px; --r-xl: 32px;
  --container: 1180px;
  --header-h: 68px;
  --ease: cubic-bezier(.2,.8,.2,1);
}
[data-theme="caramel"]  { --accent:#C77B2B; --accent-deep:#8E5316; --accent-soft:#FBE7D3; --gold:#E2B15C; --cream:#FFF9F2; }
[data-theme="mint"]     { --accent:#2FA48A; --accent-deep:#1B6D5B; --accent-soft:#DDF3EB; --gold:#D9A24A; --cream:#F5FBF8; --cream-2:#E9F5EF; --line:#DDEDE6; --line-2:#C9E1D7; }
[data-theme="lavender"] { --accent:#8A63D2; --accent-deep:#6F49B8; --accent-soft:#ECE4FA; --gold:#D9A24A; --cream:#FAF7FF; --cream-2:#F1EBFB; --line:#E7DFF5; --line-2:#D5C9EC; }
[data-theme="chocolate"]{ --accent:#7A4A32; --accent-deep:#5C3624; --accent-soft:#F0E1D8; --gold:#D9A24A; --cream:#FBF6F1; }
[data-theme="berry"]    { --accent:#B8336A; --accent-deep:#95264F; --accent-soft:#F8DDE8; --gold:#E0AA4E; --cream:#FFF6F8; --cream-2:#FCE9F0; --line:#F3D9E2; }

/* ---------- reset */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;font-family:var(--font-body);font-size:17px;line-height:1.6;color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg,video{max-width:100%;display:block}
img{height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{margin:0;line-height:1.2;font-weight:800;letter-spacing:-.01em}
p{margin:0 0 1em}
ul{margin:0;padding:0;list-style:none}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;top:-60px;right:12px;background:var(--ink);color:#fff;padding:11px 16px;border-radius:8px;z-index:1000;font-weight:700}
.skip:focus{top:12px}
[hidden]{display:none!important}
::selection{background:var(--accent-soft);color:var(--ink)}

/* ---------- layout primitives */
.container{width:min(100% - 32px, var(--container));margin-inline:auto;padding-inline:env(safe-area-inset-right) env(safe-area-inset-left)}
@media (min-width:768px){.container{width:min(100% - 48px, var(--container))}}
.section{padding-block:clamp(40px, 7vw, 88px)}
.section--tight{padding-block:clamp(24px,4vw,48px)}
/* consistent rhythm: two stacked untinted sections must not double their gap */
.section--tight + .section--tight:not(.section--soft):not(.section--tint){padding-block-start:0}
.section--soft{background:var(--surface)}
.section--tint{background:linear-gradient(180deg,var(--cream) 0%,var(--cream-2) 100%)}
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:clamp(18px,3vw,32px)}
.section-head--center{flex-direction:column;align-items:center;text-align:center}
/* on a phone the heading keeps the whole width; the "see all" button drops under it instead of
   squeezing the h2 into a three-line column */
@media (max-width:600px){
  .section-head:not(.section-head--center){flex-direction:column;align-items:flex-start;gap:10px}
  .section-head:not(.section-head--center)>.btn{align-self:flex-start}
}
/* headings never leave one orphan word on the last line (progressive — ignored where unsupported) */
.h2,.step__title,.blank-panel__title,.ws-card__title,.post-card__title,.empty h3{text-wrap:balance}
/* Amatic is light-stemmed at 22px → uses the deep accent so it clears 4.5:1 on cream */
.eyebrow{font-family:var(--font-hand);font-size:clamp(22px,2.6vw,30px);color:var(--accent-deep);letter-spacing:.02em;line-height:1;display:inline-block;margin-bottom:6px}
/* a colour emoji next to the thin Amatic letters is scaled down so it sits on the same line, not above it */
.eyebrow__e{font-size:.7em;vertical-align:-.04em;margin-inline-end:2px}
.h1{font-family:var(--font-display);font-weight:400;font-size:clamp(34px,6vw,64px);line-height:1.08;letter-spacing:-.01em}
.h2{font-family:var(--font-display);font-weight:400;font-size:clamp(26px,3.6vw,40px);line-height:1.15}
.h3{font-size:clamp(19px,2.2vw,24px);font-weight:800}
.lead{font-size:clamp(17px,1.6vw,20px);color:var(--ink-2);max-width:60ch}
.muted{color:var(--muted)}
.center{text-align:center}
.grid{display:grid;gap:clamp(12px,2vw,22px)}
.grid--2{grid-template-columns:repeat(2,1fr)}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--4{grid-template-columns:repeat(4,1fr)}
@media (max-width:900px){.grid--3,.grid--4{grid-template-columns:repeat(2,1fr)}}
/* --2 needs a collapse too: two text columns below ~760px force min-content overflow */
@media (max-width:760px){.grid--2{grid-template-columns:1fr}}
@media (max-width:520px){.grid--4{grid-template-columns:repeat(2,1fr)} .grid--3{grid-template-columns:1fr 1fr}}
.stack{display:flex;flex-direction:column;gap:12px}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.divider{height:1px;background:var(--line);margin:24px 0}

/* ---------- buttons */
.btn{--btn-bg:var(--accent-deep);--btn-ink:var(--accent-ink);display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 22px;border-radius:999px;background:var(--btn-bg);color:var(--btn-ink);font-weight:700;font-size:16.5px;line-height:1;white-space:nowrap;box-shadow:0 2px 0 rgba(0,0,0,.06), 0 8px 22px -8px color-mix(in srgb, var(--btn-bg) 65%, transparent);transition:transform .18s var(--ease),box-shadow .18s var(--ease),background .18s;user-select:none}
.btn:hover{transform:translateY(-1px);box-shadow:0 2px 0 rgba(0,0,0,.06),0 14px 28px -10px color-mix(in srgb, var(--btn-bg) 75%, transparent)}
.btn:active{transform:translateY(0)}
/* white label on the deep accent = 6.2:1 (the bright --accent only reaches 3.9:1) */
.btn--primary{--btn-bg:var(--accent-deep);--btn-ink:#fff}
.btn--primary:hover{background:color-mix(in srgb, var(--accent-deep) 86%, #000)}
.btn--wa{--btn-bg:var(--wa);--btn-ink:var(--wa-ink)}
.btn--wa:hover{background:var(--wa-deep)}
.btn--ghost{--btn-bg:transparent;--btn-ink:var(--ink);box-shadow:inset 0 0 0 2px var(--line-2)}
.btn--ghost:hover{box-shadow:inset 0 0 0 2px var(--accent);color:var(--accent);background:transparent}
.btn--soft{--btn-bg:var(--accent-soft);--btn-ink:var(--accent-deep);box-shadow:none}
.btn--dark{--btn-bg:var(--ink);--btn-ink:#fff}
.btn--lg{min-height:58px;padding:0 30px;font-size:18.5px}
.btn--sm{min-height:40px;padding:0 16px;font-size:15px}
.btn--block{width:100%}
.btn svg{width:22px;height:22px;flex:none}
.btn--lg svg{width:24px;height:24px}
.icon-btn{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;color:var(--ink);transition:background .15s}
@media (hover:hover){.icon-btn:hover{background:var(--accent-soft);color:var(--accent-deep)}}
.icon-btn:active{background:var(--accent-soft);color:var(--accent-deep)}

/* ---------- chips / badges */
/* a chip never scrolls and never gets cut in half: a very long category name wraps
   inside the pill instead (max-width keeps it inside its line). */
.chip{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;max-width:100%;padding:4px 14px;border-radius:999px;background:var(--surface);border:1.5px solid var(--line-2);color:var(--ink-2);font-weight:600;font-size:15px;line-height:1.25;text-align:center;white-space:normal;transition:all .15s var(--ease)}
.chip:hover{border-color:var(--accent);color:var(--accent-deep);background:var(--accent-soft)}
.chip.is-active,.chip[aria-current]{background:var(--ink);border-color:var(--ink);color:#fff}
.chip--lg{min-height:44px;padding:4px 18px;font-size:16px}
.chip--soft{background:var(--accent-soft);border-color:transparent;color:var(--accent-deep)}
.chip__count{font-size:12.5px;opacity:.85;font-weight:700;flex:none}
.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:12.5px;font-weight:700;line-height:1.2;background:var(--accent-soft);color:var(--accent-deep)}
.badge--gold{background:var(--gold-soft);color:var(--gold-deep)}
.badge--mint{background:var(--mint-soft);color:#2A7A63}
.badge--dark{background:var(--ink);color:#fff}
.badge--new{background:var(--ink);color:#fff}
.tag-list{display:flex;flex-wrap:wrap;gap:8px}
.tag{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;background:var(--cream-2);color:var(--ink-2);font-size:14px;font-weight:600;transition:all .15s}
.tag:hover{background:var(--accent-soft);color:var(--accent-deep)}
.tag::before{content:'#';opacity:.5;margin-left:2px}

/* ---------- banner (holiday) */
.banner{position:relative;z-index:60;background:var(--accent-deep);color:#fff;font-size:15.5px}
.banner--gold{background:linear-gradient(90deg,#B8842E,#D9A24A);color:#2B1F12}
.banner--mint{background:linear-gradient(90deg,#2FA48A,#6FBFA6);color:#0F3A30}
.banner--lavender{background:linear-gradient(90deg,#5C3AA0,#7B54C0)}
.banner--chocolate{background:linear-gradient(90deg,#3B2A24,#5C3624)}
.banner--rose{background:linear-gradient(90deg,color-mix(in srgb, var(--accent-deep) 82%, #2A1016),var(--accent-deep))}
.banner__in{display:flex;align-items:center;gap:10px;min-height:44px;padding-block:8px;flex-wrap:wrap}
.banner__emoji{font-size:20px}
.banner__text{flex:1 1 200px;line-height:1.35}
.banner__sub{opacity:.92}
.banner__cta{font-weight:800;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.banner__cta:hover{opacity:.85}

/* ---------- header */
.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb, var(--cream) 82%, transparent);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid color-mix(in srgb, var(--line) 80%, transparent)}
.site-header__in{display:flex;align-items:center;gap:14px;min-height:var(--header-h)}
.brand{display:inline-flex;align-items:center;gap:10px;min-width:0}
.brand__logo{width:44px;height:44px;object-fit:contain;border-radius:12px}
.brand__mark{font-size:28px;line-height:1}
.brand__name{font-family:var(--font-display);font-size:clamp(18px,2.4vw,24px);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav{display:none;gap:4px;margin-inline-start:12px}
.nav__link{padding:10px 14px;border-radius:999px;font-weight:700;color:var(--ink-2);transition:all .15s}
.nav__link:hover,.nav__link.is-active{background:var(--accent-soft);color:var(--accent-deep)}
.site-header__actions{margin-inline-start:auto;display:flex;align-items:center;gap:6px}
.site-header__wa{display:none}
.burger{position:relative;flex-direction:column;gap:5px}
.burger span{display:block;width:22px;height:2.5px;border-radius:2px;background:currentColor;transition:transform .2s}
@media (min-width:900px){.nav{display:flex}.site-header__wa{display:inline-flex}.burger{display:none}}

/* ---------- search */
.search-form{position:relative;display:flex;align-items:center;background:var(--surface);border:2px solid var(--line-2);border-radius:999px;transition:border-color .15s,box-shadow .15s}
.search-form:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.search-form__input{flex:1;min-width:0;height:52px;padding:0 20px;background:transparent;border:0;outline:0;font-size:17px;border-radius:999px}
.search-form__input::placeholder{color:var(--muted)}
.search-form__input::-webkit-search-cancel-button{-webkit-appearance:none}
.search-form__btn{display:grid;place-items:center;width:46px;height:46px;margin:3px;border-radius:999px;background:var(--accent);color:#fff;flex:none;transition:background .15s}
.search-form__btn:hover{background:var(--accent-deep)}
.search-form--big .search-form__input{height:60px;font-size:18px}
.search-form--big .search-form__btn{width:54px;height:54px}
.suggest{position:absolute;top:calc(100% + 8px);right:0;left:0;background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow-3);padding:8px;z-index:70;max-height:60vh;overflow-x:hidden;overflow-y:auto;text-align:right}
.suggest__item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;font-weight:600;color:var(--ink-2)}
/* a long cake name shortens with … — the suggestion list must never scroll sideways */
.suggest__item:not(.suggest__item--custom)>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.suggest__item--custom>span:first-child{min-width:0}
.suggest__item>.chip__count,.suggest__item>.suggest__type{flex:none}
.suggest__item:hover,.suggest__item.is-hi{background:var(--accent-soft);color:var(--accent-deep)}
.suggest__type{font-size:12px;font-weight:700;color:var(--muted);margin-inline-start:auto}
.suggest__empty{padding:12px;color:var(--muted);text-align:center}
.suggest__item--custom{background:var(--mint-soft);color:#1F6F4A;font-weight:700;margin-top:4px}
.suggest__item--custom:hover{background:#D6F0E5;color:#14523A}
.suggest__item--custom .suggest__type{color:var(--wa-ink);background:var(--wa);border-radius:999px;padding:2px 8px;font-size:11.5px}
.search-overlay{position:fixed;inset:0;z-index:90;background:color-mix(in srgb, var(--cream) 94%, transparent);backdrop-filter:blur(10px);padding-top:calc(var(--header-h) + 24px);animation:fade .18s var(--ease)}
.search-overlay .search-form{max-width:760px;margin-inline:auto}
.search-overlay__chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:18px auto 0;max-width:760px}
.search-overlay__chips-label{width:100%;text-align:center;font-size:14px;font-weight:800;color:var(--muted);margin-bottom:2px}
.search-overlay__chips .chip{background:var(--surface)}
.search-overlay__close{position:absolute;top:14px;left:16px;padding:10px 14px;border-radius:999px;font-weight:700;color:var(--ink-2)}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* ---------- mobile menu */
.menu-overlay{position:fixed;inset:0;z-index:95;background:rgba(59,42,36,.35);backdrop-filter:blur(2px);animation:fade .18s}
.menu-overlay__panel{position:absolute;inset-block:0;inset-inline-end:0;width:min(90vw,400px);background:var(--cream);padding:16px 20px calc(28px + env(safe-area-inset-bottom));overflow:auto;box-shadow:var(--shadow-3);animation:slideIn .26s var(--ease);display:flex;flex-direction:column;gap:20px;border-start-start-radius:26px;border-end-start-radius:26px}
@keyframes slideIn{from{transform:translateX(-24px);opacity:.2}to{transform:none;opacity:1}}
.menu-overlay__head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:12px;border-bottom:1px solid var(--line);position:sticky;top:-16px;background:var(--cream);margin:-16px -20px 0;padding:20px 20px 12px;z-index:2}
.menu-overlay__head .brand__name{font-size:20px}
.menu-overlay__nav{display:flex;flex-direction:column}
/* the same [text][48px chevron slot] anatomy as the category rows below, so every chevron in the
   panel sits on one vertical line */
.menu-overlay__nav a{font-family:var(--font-display);font-size:21px;padding:0 12px;padding-inline-end:0;border-radius:14px;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:48px;transition:background .15s}
@media (hover:hover){.menu-overlay__nav a:hover{background:var(--accent-soft);color:var(--accent-deep)}}
.menu-overlay__nav a:active{background:var(--accent-soft);color:var(--accent-deep)}
.menu-overlay__go,.menu-promo__go{width:48px;height:48px;display:grid;place-items:center;flex:none;color:var(--muted)}
.menu-overlay__go .chev,.menu-promo__go .chev{width:22px;height:22px}
/* workshops card inside the phone menu: one tap, and it already says who it is for */
.menu-promo{display:flex;align-items:center;gap:10px;margin:2px 0 0;padding:10px 12px;padding-inline-end:0;min-height:64px;border-radius:16px;background:linear-gradient(135deg,var(--accent-soft),var(--gold-soft,#fff3d6));border:1.5px solid color-mix(in srgb,var(--accent) 30%,transparent);color:var(--ink);text-decoration:none;box-shadow:var(--shadow-1)}
.menu-promo:active{transform:scale(.99)}
.menu-promo__e{font-size:28px;line-height:1;flex:none}
.menu-promo__txt{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.menu-promo__t{font-family:var(--font-display);font-size:21px;line-height:1.15;color:var(--accent-deep)}
.menu-promo__s{font-size:13px;font-weight:700;color:var(--ink-2);line-height:1.35}
.menu-promo__go{color:var(--accent-deep)}
.menu-overlay__label{font-size:13px;font-weight:800;color:var(--muted);letter-spacing:.06em;margin-bottom:10px}
/* the panel is a scrolling column: its blocks must never be squeezed to fit the screen (they were —
   the workshops card and the category rows came out shorter than their own text) */
.menu-overlay__panel>*{flex:none}
.menu-overlay__cats{display:flex;flex-direction:column;gap:8px}
.menu-overlay__cats .cat-nav{width:100%}
.menu-overlay__cats .menu-overlay__label{width:100%;margin-bottom:2px}

/* ---------- hero */
.hero{position:relative;overflow:hidden;padding-block:clamp(28px,5vw,64px) clamp(30px,5vw,60px)}
.hero::before{content:'';position:absolute;inset:-20% -10% auto auto;width:52vw;height:52vw;max-width:640px;max-height:640px;border-radius:50%;background:radial-gradient(closest-side, var(--accent-soft), transparent 70%);opacity:.9;pointer-events:none}
.hero::after{content:'';position:absolute;bottom:-30%;left:-10%;width:40vw;height:40vw;max-width:520px;max-height:520px;border-radius:50%;background:radial-gradient(closest-side, var(--gold-soft), transparent 70%);pointer-events:none}
.hero__in{position:relative;display:grid;gap:28px;align-items:center}
@media (min-width:900px){.hero__in{grid-template-columns:1.05fr .95fr;gap:48px}}
/* no photos in the database yet → one calm centred column, never an empty picture frame */
@media (min-width:900px){.hero__in--solo{grid-template-columns:1fr;max-width:760px}}
.hero__in--solo .hero__sub{max-width:54ch}
.hero__title{font-family:var(--font-display);font-weight:400;font-size:clamp(36px,6.2vw,68px);line-height:1.06;letter-spacing:-.01em;margin:6px 0 14px}
.hero__title em{font-style:normal;color:var(--accent);position:relative;white-space:nowrap}
.hero__title em::after{content:'';position:absolute;left:0;right:0;bottom:.02em;height:.28em;background:var(--accent-soft);z-index:-1;border-radius:4px;transform:rotate(-1deg)}
.hero__sub{font-size:clamp(16.5px,1.7vw,19px);color:var(--ink-2);max-width:48ch;margin-bottom:18px}
/* WhatsApp is the money button: it gets the full width on a phone, the rest sits under it */
.hero__cta{display:grid;gap:10px;margin-bottom:16px;grid-template-columns:1fr}
.hero__cta .btn{width:100%}
.hero__cta__row{display:grid;grid-template-columns:1fr auto;gap:10px}
.hero__cta__row .btn--call{padding-inline:20px}
@media (min-width:560px){
  .hero__cta{grid-template-columns:auto auto;justify-content:start;align-items:center}
  .hero__cta .btn{width:auto}
  .hero__cta__row{grid-template-columns:auto auto}
}
.hero__search{max-width:560px;margin-bottom:12px}
.hero__quick{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:14.5px;color:var(--muted);row-gap:10px}
.hero__quick-label{flex:0 0 auto;font-weight:700}
@media (max-width:520px){.hero__quick-label{flex:1 0 100%;margin-bottom:-2px}}
.hero__quick .chip{min-height:34px;padding:4px 12px;font-size:14px}
/* the three words that answer "how do I order?" — replaces the old decorative sticker */
.hero__how{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 18px;padding:0;font-size:14.5px;font-weight:700;color:var(--ink-2)}
.hero__how li{display:inline-flex;align-items:center;gap:7px}
.hero__how li::before{content:'';width:7px;height:7px;border-radius:999px;background:var(--accent);flex:none}
.hero__how li+li{padding-inline-start:2px}
/* real photos only — the layout follows how many there actually are, never a filler tile */
.hero__media{display:grid;gap:10px;max-width:520px;margin-inline:auto;width:100%}
.hero__media>*{position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--cream-2);box-shadow:var(--shadow-2);aspect-ratio:4/5}
.hero__media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.hero__media>*:hover img{transform:scale(1.04)}
.hero__media--2,.hero__media--3,.hero__media--4{grid-template-columns:repeat(2,1fr)}
.hero__media--3>:first-child{grid-row:span 2;aspect-ratio:auto}
.hero__media--5,.hero__media--6{grid-template-columns:repeat(3,1fr)}
.hero__media--5>:first-child,.hero__media--6>:first-child{grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
@media (max-width:520px){
  .hero__media{gap:8px;max-width:none}
  .hero__media--5,.hero__media--6{grid-template-columns:repeat(2,1fr)}
  .hero__media--5>:first-child{grid-column:span 2;grid-row:auto;aspect-ratio:16/11}
  /* six photos = three even rows of two; a wide first tile would leave the sixth one orphaned */
  .hero__media--6>:first-child{grid-column:auto;grid-row:auto;aspect-ratio:4/5}
  .hero__media--3>:first-child{grid-row:auto;grid-column:span 2;aspect-ratio:16/11}
}
.trust{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:22px}
@media (min-width:640px){.trust{grid-template-columns:repeat(4,1fr);gap:10px}}
.trust__item{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:11px 13px;font-weight:700;font-size:14.5px;color:var(--ink-2);display:flex;align-items:center;gap:8px;box-shadow:var(--shadow-1)}

/* ---------- category navigation
   ONE system in all three places (home section, mobile menu, catalog filters): the parent is the
   row, its sub-categories are chips nested under it behind a tie-line, so "inside this category"
   is visible rather than implied. */
.cat-nav{display:grid;gap:10px;grid-template-columns:1fr;align-items:start}
@media (min-width:760px){.cat-nav{grid-template-columns:repeat(2,1fr);gap:14px}}
@media (min-width:1100px){.cat-nav{grid-template-columns:repeat(3,1fr)}}
.cat-group{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1);overflow:hidden;transition:border-color .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease)}
.cat-group:hover{border-color:var(--line-2);box-shadow:var(--shadow-2)}
/* row anatomy: [pic] [name + one line] [48px chevron slot] — the slot is the same box whether it is
   the "go" arrow inside the link or the open/close toggle next to it, so every chevron sits on the
   same vertical line down the list */
.cat-group__row{display:flex;align-items:center;gap:0}
.cat-group__head{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:8px 12px;padding-inline-end:0;min-height:64px;border-radius:14px;transition:background .15s}
.cat-group__head:hover .cat-group__name{color:var(--accent-deep)}
.cat-group__pic{flex:none;width:52px;height:52px;border-radius:14px;overflow:hidden;background:linear-gradient(160deg,var(--accent-soft),var(--gold-soft));display:grid;place-items:center;font-size:26px;line-height:1}
.cat-group__pic img{width:100%;height:100%;object-fit:cover}
.cat-group__txt{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px;padding-block:2px}
.cat-group__name{font-family:var(--font-display);font-weight:400;font-size:19px;line-height:1.2;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .15s}
.cat-group__count{font-size:13px;line-height:1.3;color:var(--muted);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-group__go,.cat-group__toggle{flex:none;width:48px;height:48px;display:grid;place-items:center;color:var(--muted);border-radius:12px;transition:background .15s,color .15s}
.cat-group__go .chev,.cat-group__toggle .chev{width:22px;height:22px}
.cat-group__toggle .chev{transition:transform .22s var(--ease)}
.cat-group__toggle[aria-expanded="true"]{color:var(--accent-deep)}
.cat-group__toggle[aria-expanded="true"] .chev{background:var(--surface);border-radius:999px;box-shadow:var(--shadow-1);padding:6px;width:34px;height:34px}
.cat-group__toggle[aria-expanded="true"] .chev{transform:rotate(180deg)}
/* the tinted hover only where a pointer exists — on touch it stayed lit after the tap */
@media (hover:hover){
  .cat-group__toggle:hover{color:var(--accent-deep)}
  .cat-group__toggle:hover .chev{background:var(--surface);border-radius:999px;box-shadow:var(--shadow-1);padding:6px;width:34px;height:34px}
  .cat-group__head:hover .cat-group__go{color:var(--accent-deep)}
}
.cat-group.is-open{background:color-mix(in srgb, var(--accent-soft) 45%, var(--surface));border-color:color-mix(in srgb, var(--accent) 22%, var(--line))}
/* the tie-line: sub-categories are visually held inside their parent card */
.cat-group__subs{display:flex;flex-wrap:wrap;gap:8px;margin:0 16px 14px 12px;padding-inline-start:12px;border-inline-start:2px solid color-mix(in srgb, var(--accent) 38%, transparent)}
.cat-group__subs .chip{min-height:40px;font-size:14.5px;padding:4px 12px;background:var(--surface);border-color:var(--line-2)}
@media (max-width:900px){.cat-group__subs .chip{min-height:44px;padding:4px 12px}}
/* dense variant for the mobile menu overlay */
.cat-nav--menu{grid-template-columns:1fr;gap:4px}
.cat-nav--menu .cat-group{background:transparent;border:1px solid transparent;box-shadow:none;border-radius:16px}
.cat-nav--menu .cat-group__row{border-radius:14px}
.cat-nav--menu .cat-group__head{padding:4px 6px;padding-inline-end:0;min-height:56px;gap:10px;border-radius:14px}
.cat-nav--menu .cat-group__pic{width:40px;height:40px;border-radius:12px;font-size:21px}
.cat-nav--menu .cat-group__name{font-size:18px}
.cat-nav--menu .cat-group__count{font-size:12.5px}
.cat-nav--menu .cat-group.is-open{background:color-mix(in srgb, var(--accent-soft) 55%, transparent);border-color:transparent}
.cat-nav--menu .cat-group__subs{margin:0 14px 12px 8px;padding-inline-start:10px}
.cat-nav--menu .cat-group__subs .chip{background:var(--surface);min-height:44px;font-size:14.5px;padding:4px 12px}
@media (hover:hover){.cat-nav--menu .cat-group__head:hover{background:var(--accent-soft)}}
.cat-nav--menu .cat-group__head:active{background:var(--accent-soft)}

/* ---------- category tiles */
.cat-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media (min-width:640px){.cat-tiles{grid-template-columns:repeat(3,1fr)}}
@media (min-width:1000px){.cat-tiles{grid-template-columns:repeat(4,1fr);gap:18px}}
.cat-tile{position:relative;display:block;aspect-ratio:1/1.05;border-radius:var(--r-lg);overflow:hidden;background:var(--cream-2);box-shadow:var(--shadow-1);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.cat-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow-2)}
.cat-tile img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
.cat-tile:hover img{transform:scale(1.05)}
.cat-tile__emoji{position:absolute;inset:0;display:grid;place-items:center;font-size:clamp(44px,8vw,72px);background:linear-gradient(160deg,var(--accent-soft),var(--gold-soft))}
.cat-tile__body{position:absolute;inset:auto 0 0 0;padding:44px 14px 14px;background:linear-gradient(180deg,transparent,rgba(30,18,14,.78));color:#fff}
.cat-tile__name{font-family:var(--font-display);font-size:clamp(18px,2.2vw,23px);line-height:1.15}
.cat-tile__count{font-size:13px;opacity:.85;font-weight:600}
.cat-tile--emoji .cat-tile__body{background:none;color:var(--ink);padding-top:0;position:relative;text-align:center;padding-block:14px}
.cat-tile--emoji{aspect-ratio:auto;display:flex;flex-direction:column}
.cat-tile--emoji .cat-tile__emoji{position:relative;aspect-ratio:1.4;font-size:clamp(40px,7vw,64px)}
.cat-tile--wide{grid-column:span 2}
.subcats{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}

/* ---------- product cards */
.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media (min-width:640px){.cards{grid-template-columns:repeat(3,1fr);gap:16px}}
@media (min-width:1000px){.cards{grid-template-columns:repeat(4,1fr);gap:20px}}
.card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-1);transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease)}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-2);border-color:var(--line-2)}
.card:active{transform:translateY(-1px);box-shadow:var(--shadow-1)}
.card:focus-within{border-color:var(--accent);box-shadow:var(--shadow-2)}
.card__media{position:relative;aspect-ratio:4/5;background:var(--cream-2);overflow:hidden}
.card__media img{width:100%;height:100%;aspect-ratio:4/5;object-fit:cover;transition:transform .7s var(--ease)}
.card__media::after{content:'';position:absolute;inset:auto 0 0 0;height:38%;background:linear-gradient(180deg,transparent,rgba(30,18,14,.16));opacity:0;transition:opacity .25s var(--ease);pointer-events:none}
.card:hover .card__media::after{opacity:1}
.card:hover .card__media img{transform:scale(1.05)}
.card__badges{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:6px;z-index:2}
.card__badges .badge{box-shadow:0 2px 8px rgba(59,42,36,.14)}
.card__wa{position:absolute;bottom:10px;left:10px;z-index:2;display:grid;place-items:center;width:44px;height:44px;border-radius:999px;background:var(--wa);color:var(--wa-ink);box-shadow:var(--shadow-2);transition:transform .15s var(--ease),background .15s}
.card__wa:hover{transform:scale(1.08);background:var(--wa-deep)}
.card__wa:active{transform:scale(.96)}
.card__wa svg{width:22px;height:22px}
/* stays a full 44×44 at every width — it is a real action, not a decoration */
.card__share{position:absolute;bottom:10px;left:62px;z-index:2;display:grid;place-items:center;width:44px;height:44px;border-radius:999px;background:var(--surface);color:var(--ink-2);box-shadow:var(--shadow-2);transition:transform .15s,color .15s}
.card__share:hover{transform:scale(1.08);color:var(--accent-deep)}
@media (max-width:520px){.card__share{left:58px}}
.card__body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:4px;flex:1}
.card__cat{font-size:12.5px;font-weight:700;color:var(--accent-deep);letter-spacing:.01em}
.card__title{font-size:16.5px;font-weight:800;line-height:1.3;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card__meta{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:6px;padding-top:8px;font-size:14px;color:var(--muted);border-top:1px solid var(--line)}
.card__meta>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card__meta-short{display:none}
@media (max-width:520px){.card__meta-full{display:none}.card__meta-short{display:inline}}
.card__price{font-weight:800;color:var(--ink)}
.card__code{flex:none;font-size:12px;font-weight:700;color:var(--muted);background:var(--cream);border-radius:999px;padding:3px 8px;letter-spacing:.02em}
.card__link{position:absolute;inset:0;z-index:1;border-radius:inherit}
.card__link:focus-visible{outline-offset:-3px}
@media (max-width:520px){
  .card__body{padding:10px 11px 12px}
  .card__title{font-size:15px}
  .card__meta{font-size:13px;gap:4px;padding-top:7px}
  .card__code{font-size:11.5px;padding:2px 7px}
  .card__wa{bottom:8px;left:8px}
}
@media (max-width:380px){.card__meta>span:first-child{font-size:12.5px}}

/* ---------- section: how it works */
.steps{display:grid;gap:14px;grid-template-columns:1fr}
@media (min-width:760px){.steps{grid-template-columns:repeat(3,1fr);gap:20px}}
.step{position:relative;background:var(--surface);border-radius:var(--r-lg);padding:24px 22px 22px;box-shadow:var(--shadow-1);border:1px solid var(--line)}
.step__num{position:absolute;top:-14px;right:20px;width:36px;height:36px;border-radius:999px;background:var(--accent-deep);color:#fff;font-weight:800;display:grid;place-items:center;font-size:16px;box-shadow:var(--shadow-1)}
.step__icon{font-size:36px;line-height:1;margin-bottom:10px}
.step__title{font-size:19px;font-weight:800;margin-bottom:6px}
.step p{color:var(--ink-2);margin:0;font-size:15.5px}

/* ---------- testimonials */
.testi{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 2px 14px;scrollbar-width:none}
.testi::-webkit-scrollbar{display:none}
.testi__card{flex:0 0 min(84vw,340px);scroll-snap-align:center;background:var(--surface);border-radius:var(--r-lg);padding:22px;box-shadow:var(--shadow-1);border:1px solid var(--line);display:flex;flex-direction:column;gap:10px}
.testi__stars{color:var(--gold);letter-spacing:2px;font-size:15px}
.testi__text{font-size:16px;color:var(--ink-2);line-height:1.55;flex:1}
.testi__text::before{content:'“';font-family:var(--font-display);font-size:34px;line-height:0;color:var(--accent);margin-inline-end:4px;vertical-align:-10px}
.testi__name{font-weight:800;font-size:15px}
.testi__img{border-radius:var(--r);aspect-ratio:4/3;object-fit:cover;width:100%}
/* on a phone the recommendations stack. a sideways strip hides every card but the first,
   and nothing on a phone may scroll sideways. */
@media (max-width:760px){
  .testi{display:grid;grid-template-columns:1fr;gap:12px;overflow:visible;scroll-snap-type:none;padding:6px 0 2px}
  .testi__card{flex:none;scroll-snap-align:none}
}

/* ---------- FAQ */
.faq{display:flex;flex-direction:column;gap:10px;max-width:820px;margin-inline:auto}
.faq__item{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.faq__item summary{list-style:none;cursor:pointer;padding:16px 18px;font-weight:800;font-size:16.5px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary::after{content:'+';font-size:24px;line-height:1;color:var(--accent);flex:none;transition:transform .2s}
.faq__item[open] summary::after{transform:rotate(45deg)}
.faq__item[open] summary{color:var(--accent-deep)}
.faq__body{padding:0 18px 18px;color:var(--ink-2);font-size:16px}

/* ---------- CTA band */
/* the band carries body text on top of it → every gradient stop stays dark enough for 4.5:1 white */
.cta-band{position:relative;overflow:hidden;border-radius:var(--r-xl);background:linear-gradient(135deg,color-mix(in srgb, var(--accent-deep) 80%, #2A1016),var(--accent-deep) 55%,color-mix(in srgb, var(--accent-deep) 74%, var(--gold)));color:#fff;padding:clamp(28px,5vw,56px);text-align:center;box-shadow:var(--shadow-2)}
.cta-band::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 20% 20%,rgba(255,255,255,.12),transparent 45%),radial-gradient(circle at 85% 80%,rgba(255,255,255,.10),transparent 45%)}
.cta-band>*{position:relative}
.cta-band .h2{color:#fff}
.cta-band p{color:rgba(255,255,255,.96);max-width:56ch;margin-inline:auto;font-size:17.5px}
.cta-band__note{margin:14px 0 0;font-size:14.5px;color:rgba(255,255,255,.94)}
.cta-band .btn--wa{--btn-bg:#fff;--btn-ink:var(--accent-deep)}
.cta-band .btn--wa:hover{background:#fff}

/* ---------- product page */
/* ---------- crumbs / the "back" control
   Phone: ONE control that looks like a control and says where it goes ("חזרה ל…"), plus a quiet
   chip for the level above it. ≥760px: the full trail. It stays deliberately quieter than the
   order buttons — white pill, hairline, one accent-tinted chevron badge.
   schema_breadcrumbs (the machine-readable BreadcrumbList) is emitted by the controller and stays
   the full trail either way. */
.crumbs{margin:5px 0 4px;font-size:14px;color:var(--muted)}
.crumbs__row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.crumbs__full{display:none}
.crumbs__back{display:inline-flex;align-items:center;gap:9px;min-height:44px;max-width:100%;padding-inline:8px 17px;border-radius:999px;background:var(--surface);border:1.5px solid var(--line-2);color:var(--ink-2);font-size:15.5px;font-weight:600;line-height:1.25;box-shadow:var(--shadow-1);transition:border-color .16s var(--ease),color .16s var(--ease),box-shadow .16s var(--ease)}
.crumbs__back:hover{border-color:var(--accent);color:var(--accent-deep);box-shadow:var(--shadow-2)}
.crumbs__back:active{box-shadow:var(--shadow-1)}
.crumbs__t{min-width:0;overflow-wrap:anywhere}
.crumbs__t b{font-weight:800;color:var(--ink)}
.crumbs__back:hover .crumbs__t b{color:inherit}
.crumbs__ico{display:inline-flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent-deep)}
.crumbs__ico .chev{width:16px;height:16px}
.crumbs__back:hover .crumbs__ico{background:var(--accent);color:#fff}
/* the level above: a real link, but visibly the quieter of the two */
.crumbs__up{display:inline-flex;align-items:center;min-height:44px;max-width:100%;padding:0 14px;border-radius:999px;background:var(--cream-2);border:1.5px solid var(--line);color:var(--muted);font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .16s var(--ease)}
.crumbs__up:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-deep)}

@media (min-width:760px){
  .crumbs{margin:14px 0 10px}
  .crumbs__row{display:none}
  .crumbs__full{display:flex;flex-wrap:wrap;align-items:center;gap:2px;list-style:none;margin:0;padding:0}
  .crumbs__full li{display:inline-flex;align-items:center;gap:2px;min-width:0}
  .crumbs__full a{display:inline-block;padding:8px 12px;border-radius:999px;color:var(--muted);font-weight:600;transition:background .15s var(--ease),color .15s var(--ease)}
  .crumbs__full a:hover{background:var(--accent-soft);color:var(--accent-deep)}
  .crumbs__full [aria-current]{padding:8px 12px;color:var(--ink-2);font-weight:800}
  .crumbs__sep{display:inline-flex;color:var(--line-2)}
  .crumbs__sep .chev{width:15px;height:15px}
}
.product{display:grid;gap:26px;padding-bottom:40px}
/* the thumbs strip scrolls inside its column — the column itself must never widen the page */
.product>*{min-width:0}
@media (min-width:900px){.product{grid-template-columns:1.1fr .9fr;gap:44px;align-items:start}}
.gallery{position:relative}
.gallery__main{position:relative;border-radius:var(--r-xl);overflow:hidden;background:var(--cream-2);aspect-ratio:4/5;box-shadow:var(--shadow-2)}
.gallery__main img{width:100%;height:100%;object-fit:cover}
/* a cake with no photo yet: a designed brand panel, not an empty grey frame */
.gallery__main--blank{display:grid;place-items:center;font-size:clamp(64px,14vw,120px);background:linear-gradient(155deg,var(--accent-soft),var(--gold-soft));box-shadow:var(--shadow-1);aspect-ratio:4/3}
@media (max-width:520px){.gallery__main--blank{aspect-ratio:16/9;font-size:56px}}
.gallery__track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;border-radius:var(--r-xl);aspect-ratio:4/5;background:var(--cream-2);box-shadow:var(--shadow-2)}
.gallery__track::-webkit-scrollbar{display:none}
.gallery__slide{flex:0 0 100%;scroll-snap-align:center;position:relative}
.gallery__slide img{width:100%;height:100%;object-fit:cover}
.gallery__thumbs{display:flex;gap:8px;margin-top:10px;overflow-x:auto;scrollbar-width:none;padding:2px}
.gallery__thumbs::-webkit-scrollbar{display:none}
.gallery__thumb{flex:0 0 68px;height:68px;border-radius:12px;overflow:hidden;border:2px solid transparent;opacity:.75;transition:all .15s;background:var(--cream-2)}
.gallery__thumb img{width:100%;height:100%;object-fit:cover}
.gallery__thumb.is-active{border-color:var(--accent);opacity:1}
/* the thumbnails are "which photo do I want to see" — a list of choices, not the photo strip
   itself. on a phone they wrap into a grid; swiping stays on the big track above. */
@media (max-width:760px){
  .gallery__thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:8px;overflow:visible}
  .gallery__thumb{flex:none;width:100%;height:auto;aspect-ratio:1}
}
.gallery__dots{position:absolute;bottom:12px;left:0;right:0;display:flex;justify-content:center;gap:6px;pointer-events:none}
.gallery__dots span{width:7px;height:7px;border-radius:999px;background:rgba(255,255,255,.55);box-shadow:0 0 0 1px rgba(0,0,0,.15)}
.gallery__dots span.is-active{background:#fff;width:18px}
.product__info{display:flex;flex-direction:column;gap:12px}
.product__title{font-family:var(--font-display);font-weight:400;font-size:clamp(28px,4vw,42px);line-height:1.12;margin-bottom:6px}
/* מק״ט sits directly under the name — customers quote it in WhatsApp, so it is readable and copyable */
.product__code{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;min-height:44px;padding:0 14px 0 12px;margin-top:-4px;border-radius:999px;background:var(--cream-2);color:var(--ink-2);font-size:14px;font-weight:700;transition:background .15s,color .15s}
.product__code b{font-size:16px;font-weight:800;color:var(--ink);letter-spacing:.03em;direction:ltr}
.product__code svg{width:16px;height:16px;opacity:.6;flex:none}
button.product__code:hover{background:var(--accent-soft);color:var(--accent-deep)}
button.product__code:hover svg{opacity:1}
/* the one honest sentence under the title */
.product__lead{font-size:17px;line-height:1.55;color:var(--ink-2);margin:0}
.product__lead strong{color:var(--ink)}
.product__cats{display:flex;flex-wrap:wrap;gap:6px}
.product__price{font-size:22px;font-weight:800}
.product__price small{font-size:14px;color:var(--muted);font-weight:600;margin-inline-start:6px}
.highlights{display:flex;flex-wrap:wrap;gap:8px}
.highlights span{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:14px;font-weight:700;color:var(--ink-2)}
/* the order box is the anchor of the product page: two buttons, one quiet line, nothing else */
.product__cta{position:relative;display:flex;flex-direction:column;gap:10px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-xl);padding:18px 16px 16px;margin-block:2px;box-shadow:var(--shadow-2);overflow:hidden}
.product__cta::before{content:'';position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,var(--wa),var(--accent))}
.product__cta::after{content:'';position:absolute;inset:auto -40px -70px auto;width:190px;height:190px;border-radius:50%;background:radial-gradient(closest-side,var(--accent-soft),transparent 72%);opacity:.75;pointer-events:none}
.product__cta>*{position:relative}
.product__cta-note{font-size:14px;color:var(--muted);text-align:center;margin:0}
.share{display:flex;flex-wrap:wrap;gap:8px}
.share--quiet{gap:6px;margin-top:2px}
.share__btn{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 12px;border-radius:999px;background:var(--cream-2);font-size:14px;font-weight:700;color:var(--ink-2)}
.share__btn:hover{background:var(--accent-soft);color:var(--accent-deep)}
.share__btn[disabled]{opacity:.6;pointer-events:none}
.share__btn--desktop{display:none}
@media (min-width:900px){.share__btn--desktop{display:inline-flex}}
.desc{font-size:16.5px;color:var(--ink-2)}
.desc p{margin-bottom:.9em}
.desc strong{color:var(--ink)}
.desc-list{display:grid;gap:8px;margin:6px 0 16px;padding:0}
.desc-list li{position:relative;padding-inline-start:26px}
.desc-list li::before{content:'✓';position:absolute;right:0;top:0;color:var(--accent);font-weight:800}
/* the long auto-description no longer owns the page: it waits behind one line */
.desc-more{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden}
.desc-more>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;padding:0 16px;font-weight:800;font-size:15.5px;color:var(--ink-2)}
.desc-more>summary::-webkit-details-marker{display:none}
.desc-more>summary::after{content:'+';font-size:22px;line-height:1;color:var(--accent);flex:none;transition:transform .2s}
.desc-more[open]>summary::after{transform:rotate(45deg)}
.desc-more[open]>summary{color:var(--accent-deep)}
.desc-more .desc{padding:0 16px 14px;font-size:16px}
.desc-more .desc p:last-child{margin-bottom:0}
/* delivery / pickup: one quiet line, her own wording, not a coloured box */
.delivery-line{display:flex;gap:9px;align-items:flex-start;font-size:14.5px;color:var(--muted);line-height:1.5;margin:0}
.delivery-line span[aria-hidden]{flex:none;line-height:1.4}
.delivery-line a{color:var(--accent-deep);font-weight:800;white-space:nowrap}
.delivery-line a:hover{text-decoration:underline}
.sticky-cta{position:fixed;bottom:0;left:0;right:0;z-index:45;background:color-mix(in srgb, var(--surface) 94%, transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 -6px 20px -12px rgba(59,42,36,.5);border-top:1px solid var(--line);padding:10px calc(16px + env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));display:flex;gap:10px;align-items:center;transform:translateY(110%);transition:transform .3s var(--ease)}
.sticky-cta.is-visible{transform:none}
.sticky-cta .btn{flex:1;min-width:0}
.sticky-cta__price{font-weight:800;white-space:nowrap;font-size:15px;color:var(--ink-2)}
@media (min-width:900px){.sticky-cta{display:none}}
/* keep the bar from ever covering the last block of content */
body.has-sticky-cta{padding-bottom:calc(80px + env(safe-area-inset-bottom))}
@media (min-width:900px){body.has-sticky-cta{padding-bottom:0}}

/* ---------- catalog
   Photo-first: title, at most one line, one control row, one row of categories — then the cakes.
   Everything that used to stack above the grid (result count, sort bar, tailor-made line) is gone. */
.catalog-head{display:flex;flex-direction:column;gap:10px;padding-block:12px 4px}
@media (max-width:760px){.catalog-head{padding-block:0 4px}}
.catalog-head .h1{font-size:clamp(26px,4.2vw,42px)}
.catalog-head__title{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 10px}
.catalog-head__n{font-size:14.5px;font-weight:700;color:var(--muted);white-space:nowrap}
/* the owner's own category text, held to two lines so it can never push the photos down */
.cat-intro{font-size:16px;color:var(--ink-2);margin:0;max-width:62ch;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cat-bar{display:flex;align-items:stretch;gap:8px}
.cat-bar .search-form{flex:1;min-width:0}
.sortbox{position:relative;flex:none}
.sortbox>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:100%;min-height:52px;min-width:52px;padding:0 14px;border-radius:999px;background:var(--surface);border:2px solid var(--line-2);font-weight:700;font-size:14.5px;color:var(--ink-2);white-space:nowrap}
.sortbox>summary::-webkit-details-marker{display:none}
.sortbox[open]>summary,.sortbox>summary:hover{border-color:var(--accent);color:var(--accent-deep)}
.sortbox__ico{font-size:16px;line-height:1}
.sortbox__now{display:none}
@media (min-width:480px){.sortbox__now{display:inline}}
.sortbox__menu{position:absolute;top:calc(100% + 6px);inset-inline-end:0;z-index:30;min-width:170px;background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow-3);padding:6px;display:flex;flex-direction:column}
.sortbox__menu a{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:10px;font-weight:700;font-size:15px;color:var(--ink-2)}
.sortbox__menu a:hover{background:var(--accent-soft);color:var(--accent-deep)}
.sortbox__menu a.is-active{background:var(--ink);color:#fff}
/* the occasion filter is a list of choices: it WRAPS. nothing that is navigation
   or a choice may scroll sideways on a phone. */
.filters{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;padding:2px 0 6px}
.filters>*{flex:none}
/* sub-categories read as "inside the one above": tie-line + the parent's own pill first */
.filters--sub{margin-top:-2px;padding-inline-start:12px;border-inline-start:2px solid color-mix(in srgb, var(--accent) 32%, transparent)}
.filters--sub .chip{min-height:40px;font-size:14.5px}
@media (max-width:900px){.filters--sub .chip{min-height:44px}}
.load-more{display:flex;justify-content:center;margin-top:26px}
/* a category with no cakes yet must still look designed and still sell */
.empty{text-align:center;padding:clamp(32px,6vw,56px) 18px;background:linear-gradient(165deg,var(--accent-soft),var(--gold-soft));border-radius:var(--r-xl);box-shadow:var(--shadow-1)}
.empty__icon{font-size:clamp(44px,9vw,64px);line-height:1;margin-bottom:10px}
.empty h3{font-family:var(--font-display);font-weight:400;font-size:clamp(22px,3.4vw,30px);margin-bottom:8px}
.empty p{color:var(--ink-2);max-width:46ch;margin-inline:auto}
.empty .row{justify-content:center}
/* three buttons of three widths in a stack read as clutter — on a phone they take the full width */
@media (max-width:560px){
  .ws-hero__cta .btn,.cta-band .row .btn,.empty .row .btn,.blank-panel .row .btn,.about__text .row .btn,.page-404 .row .btn,.row--stack .btn{width:100%}
}
.notice{background:var(--gold-soft);color:var(--gold-deep);border-radius:var(--r);padding:12px 16px;font-weight:700;font-size:15px}

/* ---------- workshops */
.ws-hero{position:relative;overflow:hidden;border-radius:var(--r-xl);background:linear-gradient(135deg,var(--ink) 0%,#5A3A2E 60%,var(--accent-deep) 130%);color:#fff;padding:clamp(28px,5vw,64px) clamp(20px,4vw,56px);box-shadow:var(--shadow-3)}
.ws-hero::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 80% 20%,rgba(255,255,255,.14),transparent 40%),radial-gradient(circle at 10% 90%,rgba(217,162,74,.28),transparent 45%)}
.ws-hero>*{position:relative}
.ws-hero .h1{color:#fff}
.ws-hero .lead{color:rgba(255,255,255,.9)}
.ws-hero .eyebrow{color:var(--gold)}
.ws-types{display:grid;gap:14px;grid-template-columns:1fr}
@media (min-width:640px){.ws-types{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.ws-types{grid-template-columns:repeat(4,1fr)}}
.ws-type{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:8px;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.ws-type:hover{transform:translateY(-3px);box-shadow:var(--shadow-2)}
.ws-type__icon{font-size:36px;line-height:1}
.ws-type__title{font-size:19px;font-weight:800}
.ws-type p{color:var(--ink-2);font-size:15px;margin:0;flex:1}
.ws-card{display:grid;gap:0;background:var(--surface);border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-1);border:1px solid var(--line)}
@media (min-width:760px){.ws-card:not(.ws-card--text){grid-template-columns:.9fr 1.1fr}}
/* no photo for this activity: the card is carried by her own words, with a brand edge instead of
   an image — a designed state, not a hole where a picture should have been */
.ws-card--text{position:relative;grid-template-columns:1fr}
.ws-card--text::before{content:'';position:absolute;inset-block:0;inset-inline-start:0;width:5px;background:linear-gradient(180deg,var(--accent),var(--gold))}
.ws-card--text .ws-card__body{padding:22px 24px}
.ws-card--text .ws-card__title{font-size:clamp(23px,3.2vw,32px)}
.ws-card__ex{margin:0;color:var(--ink-2);font-size:16px;line-height:1.6}
@media (max-width:520px){.ws-card .row .btn{flex:1 1 auto}}
.ws-card__media{aspect-ratio:4/3;background:var(--cream-2);position:relative}
.ws-card__media img{width:100%;height:100%;object-fit:cover}
.ws-card__body{padding:22px;display:flex;flex-direction:column;gap:10px}
.ws-card__title{font-family:var(--font-display);font-weight:400;font-size:clamp(22px,3vw,30px)}
.ws-meta{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:15px;color:var(--ink-2)}
.ws-meta span{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.media-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media (min-width:760px){.media-grid{grid-template-columns:repeat(3,1fr);gap:14px}}
.media-grid__item{position:relative;aspect-ratio:1;border-radius:var(--r);overflow:hidden;background:var(--cream-2)}
.media-grid__item img,.media-grid__item video{width:100%;height:100%;object-fit:cover}
.media-grid__item--wide{grid-column:span 2;aspect-ratio:16/9}
.media-grid__play{position:absolute;inset:0;display:grid;place-items:center;background:rgba(0,0,0,.25);color:#fff;font-size:44px}
.video-embed{position:relative;aspect-ratio:16/9;border-radius:var(--r-lg);overflow:hidden;background:#000}
.video-embed iframe,.video-embed video{position:absolute;inset:0;width:100%;height:100%;border:0}
.lightbox{position:fixed;inset:0;z-index:120;background:rgba(20,10,8,.94);display:grid;place-items:center;padding:16px;animation:fade .15s}
.lightbox [hidden]{display:none}
.lightbox img{max-width:min(96vw,1200px);max-height:84vh;object-fit:contain;border-radius:12px}
/* ✕, counter and arrows share ONE treatment: the warm brown of the .gallery__num pill on the cake
   page, dense enough to stay readable when a control lands on a bright cake photo (white on it is
   ~5.5:1), plus a hairline ring so the same control is still visible over a dark photo. */
.lightbox__close,.lightbox__num,.lightbox__nav{background:rgba(46,28,23,.62);color:#fff;border-radius:999px;
  box-shadow:0 0 0 1px rgba(255,255,255,.22),0 2px 12px rgba(0,0,0,.32);backdrop-filter:blur(5px)}
.lightbox__close{position:absolute;top:calc(14px + env(safe-area-inset-top));left:16px;font-size:30px;width:48px;height:48px}
/* photo counter — the .gallery__num pill from the cake page, grown up for a dark full-screen view */
.lightbox__num{position:absolute;top:calc(22px + env(safe-area-inset-top));inset-inline-start:16px;z-index:2;pointer-events:none;
  font-size:14px;font-weight:700;line-height:1;letter-spacing:.03em;padding:9px 14px}
/* the arrows sit ON the photo — the same scrim keeps them readable over a bright cake too */
.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);font-size:34px;line-height:1;width:52px;height:52px;min-width:52px;min-height:52px;transition:background .15s}
.lightbox__close:hover,.lightbox__nav:hover{background:rgba(46,28,23,.82)}
.lightbox__nav--prev{right:12px}.lightbox__nav--next{left:12px}
@media (max-width:400px){.lightbox__nav{width:46px;height:46px;min-width:46px;min-height:46px;font-size:30px}}

/* ---------- blog / prose */
.post-cards{display:grid;gap:16px;grid-template-columns:1fr}
@media (min-width:640px){.post-cards{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.post-cards{grid-template-columns:repeat(3,1fr);gap:22px}}
.post-card{display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-1);border:1px solid var(--line);transition:transform .2s var(--ease)}
.post-card:hover{transform:translateY(-3px)}
/* no cover image: a text card with a brand edge, not an empty picture frame */
.post-card--text{position:relative;overflow:hidden}
.post-card--text::before{content:'';position:absolute;inset-block:0;inset-inline-start:0;width:5px;background:linear-gradient(180deg,var(--accent),var(--gold))}
.post-card--text .post-card__body{padding-top:20px}
.post-card__media{aspect-ratio:16/10;background:linear-gradient(135deg,var(--accent-soft),var(--gold-soft));display:grid;place-items:center;font-size:48px}
.post-card__media img{width:100%;height:100%;object-fit:cover}
.post-card__body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:6px;flex:1}
.post-card__title{font-size:19px;font-weight:800;line-height:1.3}
.post-card__excerpt{color:var(--ink-2);font-size:15px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.post-card__more{margin-top:auto;font-weight:800;color:var(--accent-deep);font-size:15px}
.prose{max-width:760px;margin-inline:auto;font-size:17.5px;line-height:1.75;color:var(--ink-2)}
.prose h2{font-family:var(--font-display);font-weight:400;font-size:clamp(24px,3vw,32px);color:var(--ink);margin:1.6em 0 .5em}
.prose h3{font-size:21px;color:var(--ink);margin:1.4em 0 .4em}
.prose p{margin:0 0 1.1em}
.prose ul,.prose ol{margin:0 0 1.2em;padding-inline-start:1.4em}
.prose ul{list-style:disc}.prose ol{list-style:decimal}
.prose li{margin-bottom:.4em}
.prose img{border-radius:var(--r-lg);margin:1.2em 0;box-shadow:var(--shadow-1)}
.prose blockquote{margin:1.4em 0;padding:14px 20px;border-inline-start:4px solid var(--accent);background:var(--surface);border-radius:12px;font-weight:600;color:var(--ink)}
.prose a{color:var(--accent-deep);text-decoration:underline;text-underline-offset:3px}
.prose table{width:100%;border-collapse:collapse;margin:1.2em 0;font-size:16px}
.prose th,.prose td{border:1px solid var(--line-2);padding:10px 12px;text-align:right}
.prose th{background:var(--cream-2)}
.article-head{max-width:760px;margin:0 auto 24px;text-align:center}
.article-head .h1{font-size:clamp(28px,4.5vw,46px)}
.article-meta{color:var(--muted);font-size:14.5px;margin-top:8px}
.article-cover{max-width:960px;margin:0 auto 30px;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-2);aspect-ratio:16/8}
.article-cover img{width:100%;height:100%;object-fit:cover}
.article-cta{max-width:760px;margin:36px auto 0}

/* ---------- about */
.about{display:grid;gap:26px;align-items:center}
@media (min-width:860px){.about{grid-template-columns:.9fr 1.1fr;gap:48px}}
.about__photo{border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-2);aspect-ratio:4/5;background:linear-gradient(160deg,var(--accent-soft),var(--gold-soft));display:grid;place-items:center;font-size:90px}
.about__photo img{width:100%;height:100%;object-fit:cover}
/* no photo uploaded yet: nothing stands in front of her words on a phone; on a wide screen the
   frame becomes a small brand mark beside the text instead of an empty 4:5 box */
.about__photo--empty{aspect-ratio:auto;width:120px;height:120px;border-radius:999px;font-size:56px;box-shadow:var(--shadow-1);margin-inline:auto}
@media (max-width:859px){.about__photo--empty{display:none}}
.about__text{font-size:17.5px;color:var(--ink-2)}
.about__text p{margin-bottom:1em}

/* ---------- social profiles
   One component for the three places the owner's profiles can appear (footer, phone menu,
   "אודות"). It only ever exists when she filled a link in — see social_links(). */
.social{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.social__link{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;min-height:44px;padding:0 10px;border-radius:14px;color:var(--ink-2);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-1);transition:transform .18s var(--ease),color .18s,border-color .18s,background .18s}
.social__link svg{width:22px;height:22px;flex:none}
.social__link:hover{color:var(--accent-deep);border-color:var(--line-2);transform:translateY(-2px)}
/* footer: quiet on the dark background, gold on hover — never louder than the WhatsApp button */
.social--footer{margin-top:14px;gap:10px}
.social--footer .social__link{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16);box-shadow:none;color:#fff}
.social--footer .social__link:hover{color:var(--gold);background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.32)}
/* phone menu: a small row under the WhatsApp / call buttons */
.social--menu{justify-content:center;gap:12px;margin-top:2px}
.social--menu .social__link{background:var(--cream-2);border-color:var(--line)}
/* אודות: icon + name, in the same language as the rest of the contact block */
.social--chips{justify-content:center;gap:10px}
.social--chips .social__link{padding:0 16px;border-radius:999px;font-weight:700;font-size:15.5px;color:var(--ink)}

/* ---------- footer */
.site-footer{margin-top:clamp(40px,7vw,80px);background:var(--ink);color:#EADFD9}
.site-footer__in{display:grid;gap:28px;padding-block:clamp(34px,5vw,60px) 30px}
@media (min-width:760px){.site-footer__in{grid-template-columns:1.4fr 1fr 1fr 1.3fr}}
.site-footer .brand__name{color:#fff}
.site-footer__tag{margin-top:10px;color:#CDBDB5}
.site-footer__area{color:#CDBDB5;font-size:15px}
.site-footer__title{font-weight:800;color:#fff;margin-bottom:10px;font-size:16px}
.site-footer__col a:not(.btn){display:block;padding:5px 0;color:#CDBDB5}
.site-footer__col a:not(.btn):hover{color:#fff}
.site-footer__cta .btn{margin-top:4px}
.site-footer__cta p{color:#CDBDB5;font-size:15px}
.site-footer__phone{margin-top:10px;font-weight:700;direction:ltr;text-align:right;color:#fff}
.site-footer__bottom{border-top:1px solid rgba(255,255,255,.1);padding:14px 0 calc(14px + env(safe-area-inset-bottom));font-size:13.5px;color:#A89A94}
.site-footer__bottom a{color:#A89A94}
.site-footer__bottom a:hover{color:#fff}
/* only ever rendered for a signed-in owner — a quiet way back into the panel from any page */
.site-footer__admin{display:inline-flex;align-items:center;padding:4px 12px;border-radius:999px;background:rgba(255,255,255,.1);font-weight:700}

/* ---------- WhatsApp FAB */
.fab-wa{position:fixed;left:calc(16px + env(safe-area-inset-left));bottom:calc(16px + env(safe-area-inset-bottom));z-index:40;display:flex;align-items:center;gap:8px;height:56px;padding:0 18px 0 16px;border-radius:999px;background:var(--wa);color:var(--wa-ink);font-weight:800;box-shadow:0 10px 26px -6px rgba(37,211,102,.6),0 2px 6px rgba(0,0,0,.12);transition:transform .2s var(--ease)}
.fab-wa:hover{transform:translateY(-2px) scale(1.03)}
.fab-wa svg{width:26px;height:26px}
.fab-wa__label{font-size:16px}
@media (max-width:520px){.fab-wa{width:56px;padding:0;justify-content:center}.fab-wa__label{display:none}}
body.has-sticky-cta .fab-wa{display:none}
@media (min-width:900px){body.has-sticky-cta .fab-wa{display:flex}}

/* ---------- misc */
.pill-list{display:flex;flex-wrap:wrap;gap:8px}
.kicker{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-weight:700;font-size:14px;color:var(--ink-2);box-shadow:var(--shadow-1)}
.kicker::before{content:'';width:8px;height:8px;border-radius:999px;background:var(--wa);box-shadow:0 0 0 4px rgba(37,211,102,.25)}
.toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:12px 18px;border-radius:999px;font-weight:700;opacity:0;pointer-events:none;transition:all .25s var(--ease);z-index:200;font-size:15px}
.toast.is-on{opacity:1;transform:translateX(-50%)}
.reveal{opacity:0;transform:translateY(14px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}
/* ---------- photo-free states
   Anywhere a picture may simply not exist (a workshop with no photos, an article with no cover):
   a designed panel in the brand colours — never an empty frame or a dashed "coming soon" box. */
.blank-panel{position:relative;overflow:hidden;border-radius:var(--r-xl);background:linear-gradient(150deg,var(--accent-soft) 0%,var(--cream) 55%,var(--gold-soft) 100%);box-shadow:var(--shadow-1);padding:clamp(22px,4.5vw,40px)}
.blank-panel::before{content:'';position:absolute;inset:auto -60px -90px auto;width:230px;height:230px;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.7),transparent 72%);pointer-events:none}
.blank-panel>*{position:relative}
.blank-panel__title{font-family:var(--font-display);font-weight:400;font-size:clamp(21px,3.2vw,30px);line-height:1.2;margin-bottom:8px}
.blank-panel p{color:var(--ink-2);margin:0}
/* her own words, set as a pull-quote instead of a photo */
.quote-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-1);padding:clamp(20px,4vw,34px);position:relative;overflow:hidden}
.quote-panel::before{content:'';position:absolute;inset-block:0;inset-inline-start:0;width:5px;background:linear-gradient(180deg,var(--accent),var(--gold))}
.quote-panel .desc{font-size:16.5px}
.quote-panel .desc p:last-child{margin-bottom:0}
/* a "what happens" list that carries the page when there is nothing to photograph */
.beats{display:grid;gap:10px;grid-template-columns:1fr}
@media (min-width:700px){.beats{grid-template-columns:repeat(2,1fr);gap:12px}}
.beat{display:flex;align-items:flex-start;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;box-shadow:var(--shadow-1)}
.beat__e{font-size:22px;line-height:1.15;flex:none}
.beat__t{font-weight:800;font-size:16px;color:var(--ink);display:block;margin-bottom:2px}
.beat p{margin:0;font-size:15px;color:var(--ink-2)}

.page-404{text-align:center;padding:clamp(40px,8vw,90px) 0}
.page-404 .h1{font-size:clamp(40px,8vw,84px)}
.page-404__icon{font-size:clamp(64px,12vw,110px);line-height:1;margin-bottom:12px}
.skeleton{background:linear-gradient(90deg,var(--cream-2) 25%,#fff 50%,var(--cream-2) 75%);background-size:200% 100%;animation:sk 1.2s infinite}
@keyframes sk{to{background-position:-200% 0}}

/* ---------- focus rings that stay visible on dark surfaces */
.site-footer :focus-visible,.cta-band :focus-visible,.ws-hero :focus-visible,.lightbox :focus-visible{outline:3px solid #fff;outline-offset:3px}
.card__wa:focus-visible,.fab-wa:focus-visible,.sticky-cta .btn:focus-visible{outline:3px solid var(--ink);outline-offset:3px}

/* ---------- mobile 360–430px: tap targets ≥44px, no clipping, room for the floating CTAs */
@media (max-width:900px){
  /* min-width too: a two-letter category ("בנים") must still be a 44px target, not a 40px one */
  .chip{min-height:44px;min-width:44px;justify-content:center;padding:4px 15px}
  .chip--lg{min-height:46px}
  .hero__quick .chip{min-height:44px;padding:4px 14px}
  .ws-card__title a,.post-card__title a{display:inline-block;padding-block:9px;margin-block:-9px}
  .tag{padding:11px 14px}
  .site-footer__bottom a{display:inline-block;padding-block:12px;margin-block:-12px;min-width:44px;text-align:center}
  .share__btn{min-height:44px;padding:0 14px}
  /* 760–900px still shows the trail: every crumb stays a 44px target */
  .crumbs__full a,.crumbs__full [aria-current]{padding-block:12px}
  .site-footer__col a:not(.btn){padding:10px 0}
  .btn--sm{min-height:44px;padding:0 18px}
  .suggest__item{padding:12px}
  /* inline prose links: vertical padding on an inline box grows the hit area without touching layout */
  p a:not([class]),li a:not([class]),.lead a:not([class]),a[href^="tel:"]:not([class]),a[href^="mailto:"]:not([class]){padding-block:13px}
  /* the floating WhatsApp button must not sit on top of the footer's last line */
  .site-footer__bottom{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  body.has-sticky-cta .site-footer__bottom{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
}
@media (max-width:430px){
  .h1,.hero__title,.product__title{overflow-wrap:break-word}
  .product__cta{padding:16px 14px 14px}
  .sortbox>summary{padding:0 12px}
}

/* ============================================================ call actions
   Every WhatsApp CTA has a twin that simply dials. WhatsApp stays the primary (green)
   action; the phone is the secondary one, in the brand accent. Everything here renders
   only when the owner turned "כפתורי חיוג" on — the markup itself disappears otherwise. */
.btn--call{--btn-bg:var(--surface);--btn-ink:var(--accent-deep);box-shadow:inset 0 0 0 2px var(--accent-soft),0 6px 18px -12px rgba(59,42,36,.55)}
.btn--call:hover{--btn-bg:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent),0 10px 22px -12px rgba(59,42,36,.6)}
/* on the dark bands the same button reads as an outlined white one */
.cta-band .btn--call,.ws-hero .btn--call{--btn-bg:transparent;--btn-ink:#fff;box-shadow:inset 0 0 0 2px rgba(255,255,255,.6)}
.cta-band .btn--call:hover,.ws-hero .btn--call:hover{--btn-bg:rgba(255,255,255,.16);box-shadow:inset 0 0 0 2px #fff}

/* header: the phone sits next to the search icon, on the widths where the WhatsApp pill shows */
.site-header__call{display:none}
@media (min-width:900px){.site-header__call{display:inline-grid}}
.site-header__call svg{width:22px;height:22px}

/* mobile menu: WhatsApp button, call button, then the number itself */
.menu-overlay__contact{display:flex;flex-direction:column;gap:10px}
.menu-overlay__tel{display:block;text-align:center;padding:8px 0;font-weight:800;font-size:18px;direction:ltr;color:var(--accent-deep);min-height:44px}
.menu-overlay__tel:hover{text-decoration:underline}

/* WhatsApp button + call button side by side (product / workshop / contact boxes) */
.cta-pair{display:flex;align-items:stretch;gap:8px}
.cta-pair .btn--wa{flex:1;min-width:0}
.cta-pair .btn--call{flex:none}
@media (max-width:420px){.cta-pair{flex-direction:column}.cta-pair .btn--call{width:100%}}

/* footer: the number is a real tel: link now (beats the generic .site-footer__col a rule) */
.site-footer__cta a.site-footer__phone{display:inline-block;padding:11px 0;color:#fff;text-align:right;min-height:44px}
.site-footer__cta a.site-footer__phone:hover{color:var(--gold)}

/* sticky product bar: WhatsApp keeps the room, the phone stays compact */
.sticky-cta .btn--call{flex:none;gap:6px;padding:0 16px}
@media (max-width:420px){.sticky-cta .btn--call{width:48px;padding:0}.sticky-cta .btn--call .btn__label{display:none}}

/* floating stack: a small circular phone button right above the WhatsApp bubble */
.fab-call{position:fixed;left:calc(20px + env(safe-area-inset-left));bottom:calc(80px + env(safe-area-inset-bottom));z-index:40;display:grid;place-items:center;width:48px;height:48px;border-radius:999px;background:var(--surface);color:var(--accent-deep);box-shadow:inset 0 0 0 2px var(--accent-soft),0 8px 22px -8px rgba(59,42,36,.5);transition:transform .2s var(--ease),background .18s}
.fab-call:hover{transform:translateY(-2px) scale(1.05);background:var(--accent-soft)}
.fab-call svg{width:22px;height:22px}
.fab-call:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
/* on the pages with the sticky bar the bar carries the phone instead (mobile only) */
body.has-sticky-cta .fab-call{display:none}
@media (min-width:900px){body.has-sticky-cta .fab-call{display:grid}}
/* the taller stack needs a little more room above the footer's last line */
@media (max-width:900px){
  body.has-call .site-footer__bottom{padding-bottom:calc(140px + env(safe-area-inset-bottom))}
  body.has-call.has-sticky-cta .site-footer__bottom{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
}

/* one chevron glyph for the whole site (partial: chevron.php) */
.chev{display:block;width:20px;height:20px;flex:none}

/* footer categories: sub-categories open on tap, like everywhere else — the toggle hugs its label
   instead of floating at the far edge of the column */
.foot-cat{display:flex;align-items:center;justify-content:flex-start;gap:2px}
.foot-cat>a{flex:0 1 auto;min-width:0}
.foot-cat__toggle{flex:none;width:44px;height:44px;display:grid;place-items:center;color:#CDBDB5;border-radius:10px;transition:background .15s,color .15s}
.foot-cat__toggle:hover,.foot-cat__toggle[aria-expanded="true"]{color:#fff;background:rgba(255,255,255,.08)}
.foot-cat__toggle .chev{width:18px;height:18px;transition:transform .2s var(--ease)}
.foot-cat__toggle[aria-expanded="true"] .chev{transform:rotate(180deg)}
.foot-cat__subs{display:flex;flex-direction:column;padding-inline-start:14px;margin-bottom:4px;border-inline-start:2px solid rgba(255,255,255,.15)}
.foot-cat__subs a{font-size:14.5px;opacity:.85}

/* share the cake with a friend — one obvious action, not a row of look-alike pills */
/* a touch more present than a plain card (soft tint + brand edge), still quiet next to the order buttons */
.share-box{margin-top:16px;padding:16px 14px;border-radius:var(--r-lg);background:linear-gradient(180deg,color-mix(in srgb,var(--accent-soft) 72%,#fff),var(--surface) 88%);border:1.5px solid color-mix(in srgb,var(--accent) 34%,var(--line));box-shadow:var(--shadow-1)}
.share-box__title{display:flex;align-items:center;gap:8px;font-weight:800;font-size:16px;color:var(--ink);margin-bottom:10px}
.share-box__title>span[aria-hidden]{font-size:20px;line-height:1}
.share-box__row{display:flex;flex-direction:column;gap:8px}
.share-box__main{font-size:16.5px}
.share-box__copy{align-self:center;min-height:44px;padding:0 14px;border-radius:999px;font-weight:700;font-size:14.5px;color:var(--muted)}
.share-box__copy:hover{color:var(--accent-deep);background:var(--accent-soft)}
.share-box__dl{display:none}
@media (min-width:900px){
  .share-box__row{flex-direction:row;align-items:center}
  .share-box__main{flex:1}
  .share-box__dl{display:inline-block;margin-top:10px;font-size:13.5px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}
}

/* category picker on the catalog: wraps into tiles, never scrolls sideways */
.catpick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 10px}
@media (min-width:520px){.catpick{grid-template-columns:repeat(4,1fr)}}
@media (min-width:900px){.catpick{display:flex;flex-wrap:wrap;gap:8px}}
.catpick__tile{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px;min-height:76px;padding:12px 6px 8px;border-radius:16px;background:var(--surface);border:1.5px solid var(--line-2);color:var(--ink-2);text-align:center;transition:all .15s var(--ease)}
/* inside a category the picker folds to compact pills that WRAP — the owner does not want anything
   that scrolls sideways on a phone; the sub-categories of the family already sit under the title */
@media (max-width:899px){
  .catpick--row{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;margin:2px 0 8px}
  .catpick--row .catpick__tile{flex:0 1 auto;max-width:100%;flex-direction:row;align-items:center;gap:7px;min-height:44px;padding:4px 13px;border-radius:999px}
  .catpick--row .catpick__emoji{font-size:17px;flex:none}
  /* a long name wraps inside its own pill — never cut in half, never a sideways strip */
  .catpick--row .catpick__name{font-size:14px;white-space:normal;text-align:start}
  .catpick--row .catpick__more{display:none}
  .catpick__subs--top{margin:0 0 6px}
}
@media (min-width:900px){.catpick__tile{flex-direction:row;gap:8px;min-height:44px;padding:0 14px;border-radius:999px}}
.catpick__tile:hover{border-color:var(--accent);color:var(--accent-deep);background:var(--accent-soft)}
.catpick__tile.is-active{background:var(--ink);border-color:var(--ink);color:#fff}
.catpick__emoji{font-size:22px;line-height:1}
@media (min-width:900px){.catpick__emoji{font-size:18px}}
.catpick__name{font-weight:800;font-size:13.5px;line-height:1.2}
@media (min-width:900px){.catpick__name{font-size:15px}}
.catpick__more{font-size:11px;font-weight:700;opacity:.65}
@media (min-width:900px){.catpick__more{display:none}}
.catpick__subs{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;margin:0 0 12px;padding:10px 12px;border-radius:14px;background:color-mix(in srgb, var(--accent-soft) 55%, transparent)}
.catpick__subs-label{width:100%;font-size:13px;font-weight:800;color:var(--accent-deep)}
@media (min-width:600px){.catpick__subs-label{width:auto}}
.catpick__subs .chip{min-height:44px}

/* ---------- legal pages (תקנון / פרטיות / נגישות): long text needs a comfortable measure */
.legal{max-width:70ch;margin-inline:auto}
.legal__head{margin-bottom:22px}
.legal__updated{margin:8px 0 0;font-size:14px;color:var(--muted);font-weight:700}
.legal__sec{margin-bottom:26px}
.legal__h{font-family:var(--font-display);font-weight:400;font-size:clamp(20px,3.4vw,25px);line-height:1.25;color:var(--accent-deep);margin:0 0 10px}
.legal p{font-size:16.5px;line-height:1.75;color:var(--ink-2);margin:0 0 12px}
.legal p strong{color:var(--ink);font-weight:800}
.legal__list{display:flex;flex-direction:column;gap:9px;margin:0}
.legal__list li{position:relative;padding-inline-start:26px;font-size:16.5px;line-height:1.7;color:var(--ink-2)}
.legal__list li::before{content:'✓';position:absolute;inset-inline-start:0;top:0;color:var(--accent);font-weight:800}
.legal__cta{margin:30px 0 18px;padding:18px;border-radius:var(--r-lg);background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 24%, transparent)}
.legal__cta-t{font-weight:800;font-size:17px;color:var(--ink);margin:0 0 12px}
.legal__more{display:flex;flex-wrap:wrap;gap:8px;padding-top:18px;border-top:1px solid var(--line)}

/* ---------- footer legal line */
.site-footer__legal{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px;margin-bottom:10px}
.site-footer__legal a{display:inline-flex;align-items:center;min-height:44px;font-size:14.5px;color:#C9B8B1}
.site-footer__legal a:hover{color:#fff;text-decoration:underline;text-underline-offset:3px}
.site-footer__copy{text-align:center}

/* ---------- cookie consent: informs, never blocks. Sits above the floating buttons, never over them. */
.consent{position:fixed;inset-inline:0;bottom:0;z-index:80;padding:0 12px calc(12px + env(safe-area-inset-bottom));transform:translateY(120%);transition:transform .3s var(--ease)}
.consent.is-in{transform:none}
.consent__in{max-width:660px;margin-inline:auto;display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line-2);box-shadow:var(--shadow-3)}
.consent__text{margin:0;font-size:14.5px;line-height:1.6;color:var(--ink-2)}
.consent__text a{color:var(--accent-deep);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.consent__btns{display:flex;gap:10px}
.consent__btns .btn{flex:1;min-height:44px}
@media (min-width:620px){
  .consent__in{flex-direction:row;align-items:center;gap:16px}
  .consent__text{flex:1}
  .consent__btns{flex:none}
  .consent__btns .btn{flex:none;padding-inline:18px}
}
/* While the banner is up the floating buttons step aside by the banner's REAL height (site.js measures
   it into --consent-h), so a two-line banner on a narrow phone still cannot cover the WhatsApp button. */
body:has(.consent:not([hidden])) .fab-wa,
body:has(.consent:not([hidden])) .fab-call{transform:translateY(calc(-1 * var(--consent-h, 96px) - 10px))}
body:has(.consent:not([hidden])) .sticky-cta{display:none}

/* ---------- "היומן מתמלא": real, owner-written urgency. Warm, never alarming. */
.urgency{display:flex;align-items:center;gap:8px;margin:12px 0 0;padding:10px 14px;border-radius:999px;background:var(--gold-soft,#FFF3D6);border:1px solid color-mix(in srgb, #E0A93B 38%, transparent);color:#7A5310;font-weight:800;font-size:14.5px;line-height:1.4}
.urgency__i{font-size:17px;line-height:1;flex:none}
.hero .urgency{background:rgba(255,255,255,.92);border-color:rgba(255,255,255,.6);color:#7A5310;align-self:flex-start;max-width:100%}

/* ---------- "ראיתם קודם": the visitor's own trail, kept in her browser. Wraps — never a side-scroller. */
.recent__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media (min-width:560px){.recent__grid{grid-template-columns:repeat(3,1fr)}}
@media (min-width:900px){.recent__grid{grid-template-columns:repeat(6,1fr);gap:12px}}
.recent__item{display:flex;flex-direction:column;gap:6px;min-height:44px;color:var(--ink-2)}
.recent__pic{display:grid;place-items:center;aspect-ratio:1;border-radius:var(--r);overflow:hidden;background:var(--cream-2);box-shadow:var(--shadow-1);font-size:30px}
.recent__pic img{width:100%;height:100%;object-fit:cover;transition:transform .4s var(--ease)}
.recent__item:hover .recent__pic img{transform:scale(1.05)}
.recent__item:hover .recent__name{color:var(--accent-deep)}
.recent__name{font-weight:700;font-size:13.5px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.recent__code{font-size:11.5px;font-weight:700;color:var(--muted);direction:rtl}
.recent__clear{display:none}
@media (min-width:560px){.recent__clear{display:inline-flex}}

/* ---------- "העוגות ששמרתי": the visitor's own shortlist, kept in her browser */
.card__save{position:absolute;top:10px;inset-inline-start:10px;z-index:2;display:grid;place-items:center;width:44px;height:44px;border-radius:999px;background:rgba(255,255,255,.92);color:var(--ink-2);box-shadow:var(--shadow-1);transition:transform .15s var(--ease),color .15s,background .15s}
.card__save:hover{color:var(--accent-deep);transform:scale(1.06)}
.card__save.is-on{color:var(--accent);background:#fff}
.card__save.is-on svg path{fill:currentColor}
.save-btn{justify-content:center;gap:8px}
.save-btn.is-on{--btn-ink:var(--accent-deep);box-shadow:inset 0 0 0 2px var(--accent);background:var(--accent-soft)}
.save-btn.is-on .save-btn__i path{fill:currentColor}
.saved__cta{display:flex;flex-direction:column;gap:10px;max-width:520px;margin:26px auto 0}
.saved__clear{align-self:center;min-height:44px;padding:0 14px;border-radius:999px;font-weight:700;font-size:14.5px;color:var(--muted)}
.saved__clear:hover{color:var(--accent-deep);background:var(--accent-soft)}
.saved__card .card__media img{width:100%;height:100%;object-fit:cover}
.saved__card .card__save{z-index:2}
/* the shortlist counter rides above the WhatsApp button, and steps aside for the consent banner too */
.fab-saved{position:fixed;inset-inline-start:16px;bottom:calc(150px + env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:999px;background:#fff;color:var(--accent);box-shadow:var(--shadow-2);transition:transform .2s var(--ease)}
.fab-saved:hover{transform:scale(1.06)}
.fab-saved__n{position:absolute;top:-4px;inset-inline-end:-4px;min-width:22px;height:22px;padding:0 5px;border-radius:999px;background:var(--accent-deep);color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center}
body.has-call .fab-saved{bottom:calc(206px + env(safe-area-inset-bottom))}
body:has(.consent:not([hidden])) .fab-saved{transform:translateY(calc(-1 * var(--consent-h, 96px) - 10px))}

/* an empty search still shows real cakes underneath, so the page never ends in a wall */
.suggest-cakes{margin-top:34px;padding-top:26px;border-top:1px solid var(--line)}
