/* Layout: one-screen phone app; lobby of 5 games, each a full-screen stage with a top bar. Candle-lit dinner table: charcoal ground, cream type, olive accent, gold for wins. */
:root{
  --bg:#141210; --card:#1F1C19; --card2:#28241F; --line:#3A352E;
  --fg:#F4EEE3; --muted:#B8AE9E; --olive:#A9AC86; --olive-deep:#7E8160;
  --gold:#C9A96E; --gold-soft:rgba(201,169,110,.18); --ok:#9DBB7A; --bad:#C97A6E;
  --display:"Playpen Sans Hebrew","Assistant",system-ui,sans-serif;
  --body:"Assistant",system-ui,"Segoe UI",Arial,sans-serif;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:17px;line-height:1.45;direction:rtl}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}
button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:8px}
.app{min-height:100%;max-width:520px;margin:0 auto;padding-block:16px 28px;padding-inline:18px;display:flex;flex-direction:column;gap:18px}
.screen[hidden]{display:none!important}

/* top bar */
.bar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px}
.bar .back{color:var(--muted);font-weight:600;display:flex;align-items:center;gap:6px;padding:6px 2px}
.bar .back svg{width:16px;height:16px;transform:scaleX(-1)}
.stars{display:flex;align-items:center;gap:6px;color:var(--gold);font-weight:700;font-variant-numeric:tabular-nums}
.stars svg{width:18px;height:18px;fill:var(--gold)}

/* lobby */
.brand{display:flex;flex-direction:column;gap:6px;padding-block:8px 14px;border-bottom:1px solid var(--line)}
.eyebrow{font-size:12px;letter-spacing:.14em;color:var(--olive);text-transform:uppercase;font-weight:600}
h1{font-family:var(--display);font-weight:700;font-size:30px;line-height:1.15;margin:0;text-wrap:balance}
.lede{color:var(--muted);margin:0;max-width:40ch}
.games{display:grid;gap:12px}
.game{display:flex;grid-template-columns:52px minmax(0,1fr) auto;direction:rtl;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;text-align:right;transition:transform .15s,border-color .15s}
.game:active{transform:scale(.985)}
.game:hover{border-color:var(--olive-deep)}
.game .ico{order:0;width:52px;height:52px;border-radius:12px;background:var(--card2);display:grid;place-items:center}
.game .ico svg{width:28px;height:28px;stroke:var(--olive);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.game>span:nth-child(2){order:1;min-width:0}
.game h3{margin:0;font-size:18px;font-weight:700}
.game p{margin:2px 0 0;color:var(--muted);font-size:14px}
.game .meta{order:2;display:flex;flex-direction:column;align-items:flex-start;gap:4px;font-size:13px;color:var(--muted);white-space:nowrap}
.game .done{color:var(--gold);font-weight:700}
.finish{margin-top:auto;display:grid;gap:10px}
.note{font-size:14px;color:var(--muted);text-align:center;margin:0}

/* generic stage */
.stage{display:flex;flex-direction:column;gap:16px;flex:1}
.prompt{font-family:var(--display);font-size:22px;line-height:1.25;margin:0;text-wrap:balance}
.sub{color:var(--muted);margin:0}
.progress{height:4px;background:var(--line);border-radius:4px;overflow:hidden}
.progress i{display:block;height:100%;background:var(--olive);width:0;transition:width .35s}
.choices{display:grid;gap:10px}
.choice{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;text-align:right;font-size:17px;font-weight:600;transition:border-color .15s,background .15s,transform .15s}
.choice:hover{border-color:var(--olive-deep)}
.choice:active{transform:scale(.985)}
.choice.ok{border-color:var(--ok);background:rgba(157,187,122,.12)}
.choice.bad{border-color:var(--bad);background:rgba(201,122,110,.12)}
.choice[disabled]{cursor:default;opacity:.85}
.reveal{width:100%;background:var(--gold-soft);border:1px solid rgba(201,169,110,.35);border-radius:12px;padding:14px 16px;display:grid;gap:6px}
.reveal b{color:var(--gold);font-family:var(--display);font-weight:700}
.reveal p{margin:0}
.btn{display:inline-flex;justify-content:center;align-items:center;gap:8px;border-radius:12px;padding:14px 18px;font-weight:700;font-size:17px;text-decoration:none;transition:transform .15s,filter .15s}
.btn:active{transform:scale(.985)}
.btn.primary{background:var(--olive);color:#1A1912}
.btn.primary:hover{filter:brightness(1.06)}
.btn.ghost{border:1px solid var(--line);color:var(--fg)}
.btn.gold{background:var(--gold);color:#1A1912}
.pair{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap}
.ing{background:var(--card2);border:1px solid var(--line);border-radius:999px;padding:8px 16px;font-weight:700;font-size:18px}
.plus{color:var(--gold);font-size:22px;font-weight:700}
.ing.q{border-style:dashed;color:var(--gold);border-color:var(--gold)}

/* memory */
.memgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mem{aspect-ratio:1;perspective:800px;background:none;display:block;width:100%;-webkit-tap-highlight-color:transparent}
.mem .in{display:block;position:relative;width:100%;height:100%;transition:transform .45s;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}
.mem.flip .in{transform:rotateY(180deg)}
.mem .f,.mem .b{position:absolute;inset:0;border-radius:12px;display:grid;place-items:center;padding:6px;text-align:center;backface-visibility:hidden;-webkit-backface-visibility:hidden;font-weight:700;font-size:13.5px;line-height:1.2}
.mem .f{background:var(--card);border:1px solid var(--line)}
.mem .f svg{width:30px;height:30px;stroke:var(--olive-deep);fill:none;stroke-width:1.5}
.mem .b{background:var(--card2);border:1px solid var(--olive-deep);transform:rotateY(180deg);-webkit-transform:rotateY(180deg)}
.mem.won .b{border-color:var(--gold);background:var(--gold-soft);color:var(--gold)}

/* match photo to name */
.mgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.ph{aspect-ratio:1;border-radius:12px;overflow:hidden;border:3px solid transparent;background:var(--card);transition:border-color .15s,transform .15s,opacity .3s;padding:0}
.ph img{width:100%;height:100%;object-fit:cover;display:block}
.ph.sel{border-color:var(--gold);transform:scale(.96)}
.ph.done{border-color:var(--ok);opacity:.45;cursor:default}
.ph.shake{animation:shake .3s}
@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.choice.done{opacity:.4;cursor:default;border-color:var(--ok)}
/* zoom guess */
.zoom{width:100%;aspect-ratio:1;max-width:100%;border-radius:14px;overflow:hidden;background:var(--card);position:relative}
.zoom img{width:100%;height:100%;object-fit:cover;transform-origin:var(--ox,50%) var(--oy,50%);transform:scale(var(--z,4));transition:transform .5s}
.zoom .ph{position:absolute;inset:0}

/* result */
.result{display:grid;gap:14px;text-align:center;padding-block:10px}
.result h2{font-family:var(--display);font-size:28px;margin:0;text-wrap:balance;color:var(--gold)}
.score{font-size:48px;font-weight:700;color:var(--gold);font-family:var(--display);line-height:1}
.scoreline{color:var(--muted);margin:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px}
.tags{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.tag{background:var(--card2);border-radius:999px;padding:6px 12px;font-size:14px;color:var(--muted)}
.tag.on{color:var(--gold);border:1px solid rgba(201,169,110,.4)}
.actions{display:grid;gap:10px}
.toast{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:var(--gold);color:#1A1912;padding:10px 16px;border-radius:999px;font-weight:700;opacity:0;pointer-events:none;transition:opacity .25s}
.toast.show{opacity:1}

/* glow on correct */
@keyframes glow{0%{box-shadow:0 0 0 0 rgba(201,169,110,.6)}100%{box-shadow:0 0 0 24px rgba(201,169,110,0)}}
.glow{animation:glow .7s ease-out}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* main menu tiles: chef's menu card. Dark card, double gold rule, gold line illustration */
.tiles{margin-bottom:8px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.tile{position:relative;aspect-ratio:5/6;min-height:0;overflow:hidden;border-radius:18px;background:var(--card);border:1px solid rgba(201,169,110,.38);
  display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;padding:16px 12px 14px;text-align:center;transition:transform .15s,border-color .2s,background .2s}
.tile::after{content:"";position:absolute;inset:6px;border:1px solid rgba(201,169,110,.16);border-radius:13px;pointer-events:none}
.tile:hover{border-color:var(--gold);background:#24201C}
.tile:active{transform:scale(.97)}
.tile .ill{flex:1 1 0;min-height:0;width:100%;color:var(--gold);transition:transform .3s}
.tile:hover .ill{transform:translateY(-3px)}
.tile-body{display:grid;gap:4px;justify-items:center;width:100%;position:relative}
.tile h3{margin:0;font-family:var(--display);font-size:17px;line-height:1.15;font-weight:700;text-wrap:balance}
.tile-meta{font-size:12.5px;color:var(--olive)}
.tile-meta .done{color:var(--gold);font-weight:700}
.tile-bar{height:2px;width:60%;border-radius:2px;background:rgba(201,169,110,.18);overflow:hidden}
.tile-bar i{display:block;height:100%;background:var(--gold)}

/* true/false: timer + two big buttons */
.timer{position:relative;height:28px;border-radius:999px;background:var(--card);border:1px solid var(--line);overflow:hidden}
.timer i{position:absolute;inset:0 auto 0 0;width:100%;background:linear-gradient(90deg,var(--olive-deep),var(--gold));opacity:.55}
.timer span{position:relative;display:grid;place-items:center;height:100%;font-weight:700;font-variant-numeric:tabular-nums;color:var(--fg)}
.tfrow{grid-template-columns:1fr 1fr}
.tfbtn{text-align:center;font-size:19px;padding:18px 10px}

/* odd one out: 2x2 ingredient chips */
.oddgrid{grid-template-columns:1fr 1fr}
.oddbtn{text-align:center;min-height:64px;display:grid;place-items:center}

/* jigsaw: 3x3 board over a faint ghost of the photo */
.jigwrap{position:relative;width:100%;aspect-ratio:1;border-radius:14px;overflow:hidden;background:var(--card);border:1px solid var(--line)}
.jghost{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.08;filter:grayscale(1)}
.jboard{direction:ltr;position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:3px}
.jp{background-size:300% 300%;background-repeat:no-repeat;border-radius:6px;border:0;transition:transform .15s,box-shadow .15s;padding:0}
.jp.home{box-shadow:inset 0 0 0 2px rgba(201,169,110,.6)}
.jp.sel{box-shadow:inset 0 0 0 3px var(--fg);transform:scale(.92)}
.jboard.solved{gap:0;padding:0}
.jboard.solved .jp{box-shadow:none;border-radius:0}

/* big pairs table: 4 columns, smaller text */
.memgrid.big{grid-template-columns:repeat(4,1fr);gap:8px}
.memgrid.big .mem .f,.memgrid.big .mem .b{font-size:12px;padding:4px}
.memgrid.big .mem .f svg{width:22px;height:22px}

/* promo banner on the main menu */
.promo{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;text-decoration:none;color:var(--fg);
  background:linear-gradient(135deg,rgba(201,169,110,.20),rgba(201,169,110,.06));border:1px solid rgba(201,169,110,.45)}
.promo-ico{flex:none;width:42px;height:42px;color:var(--gold);animation:spinslow 14s linear infinite}
@keyframes spinslow{to{transform:rotate(360deg)}}
.promo-txt{display:grid;gap:3px;min-width:0}
.promo-txt b{font-family:var(--display);font-size:16px;color:var(--gold);line-height:1.2}
.promo-txt span{font-size:13px;color:var(--muted)}
.promo-bar{height:3px;border-radius:3px;background:rgba(201,169,110,.18);overflow:hidden;margin-top:2px}
.promo-bar i{display:block;height:100%;width:0;background:var(--gold)}

/* wheel */
.wheelstage{align-items:stretch;overflow:hidden}
.wheelwrap{position:relative;width:min(100%,340px);aspect-ratio:1;margin:6px auto 0}
.wheel{width:100%;height:100%;border-radius:50%;box-shadow:0 18px 50px rgba(0,0,0,.55);will-change:transform}
.wheel svg{display:block;width:100%;height:100%}
.pointer{position:absolute;top:-8px;left:50%;width:34px;height:34px;transform:translateX(-50%);z-index:2;fill:var(--gold);filter:drop-shadow(0 3px 4px rgba(0,0,0,.6))}
.hub{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);width:76px;height:76px;border-radius:50%;background:var(--gold);color:#1A1912;font-weight:700;font-size:17px;
  box-shadow:0 0 0 6px var(--bg),0 0 0 7px rgba(201,169,110,.5),0 6px 18px rgba(0,0,0,.5)}
.hub[disabled]{background:var(--card2);color:var(--muted);cursor:default}
.prize{text-align:center;justify-items:center}
.prize-name{font-size:24px}
.prize-code{font-family:ui-monospace,Menlo,monospace;font-size:22px;letter-spacing:.12em;direction:ltr;background:var(--bg);border:1px dashed var(--gold);border-radius:10px;padding:6px 14px;color:var(--fg)}
.terms{font-size:13px;color:var(--muted);text-align:center;margin:4px 0 0;line-height:1.5}
.claim{display:grid;gap:8px}
.claim input{font:inherit;font-size:17px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--fg)}
.claim input:focus{outline:2px solid var(--gold);outline-offset:1px}
.claim input#w_phone{text-align:right}
.wheel.waiting{animation:wspin .6s linear infinite}
@keyframes wspin{to{transform:rotate(360deg)}}
.claim[hidden]{display:none}

/* Canva line illustrations (vector-traced, transparent) */
.tile img.ill{object-fit:contain;display:block}
.cat-ill{width:96px;height:96px;object-fit:contain;align-self:flex-start;margin-bottom:2px}
/* sound toggle */
.toprow{display:flex;align-items:center;justify-content:space-between;gap:12px}
.mute{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--gold);display:grid;place-items:center}
.mute svg{width:20px;height:20px}
.mute .offi{display:none} .mute.off .on{display:none} .mute.off .offi{display:block} .mute.off{color:var(--muted)}
/* fireworks overlay */
.fireworks{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:50}

/* graded wheel */
.wstatus{margin:-4px 0 0;text-align:center;color:var(--muted);font-size:14px}
.wnext{text-align:center;margin:0}
.reveal.warn{border-color:rgba(224,176,96,.5);background:rgba(224,176,96,.08)}
.who{text-align:center;margin:0}
.linkbtn{color:var(--gold);text-decoration:underline;text-underline-offset:3px;font-weight:600}

/* start button, end-of-game screen, badges */
.btn.start{min-height:56px;font-size:17px}
.donestage{text-align:center;align-items:center}
.donestage .eyebrow{text-align:center}
.dstars{display:flex;align-items:center;justify-content:center;gap:10px;font-family:var(--display);font-size:56px;font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums;line-height:1}
.dstars svg{width:44px;height:44px;fill:var(--gold)}
.dmax{font-size:22px;color:var(--muted)}
.donestage .reveal{text-align:right}
.reveal.badge{text-align:center;justify-items:center;border-color:rgba(201,169,110,.6);background:linear-gradient(180deg,rgba(201,169,110,.2),var(--card) 80%)}
.badge-name{font-family:var(--display);font-size:24px;color:var(--gold)}
.secret{margin:0;text-align:right}
.dactions{display:grid;gap:10px;width:100%}
.tile-badge{justify-self:center;font-size:12px;font-weight:700;color:#1A1912;background:var(--gold);border-radius:999px;padding:2px 10px}
@media (prefers-reduced-motion:reduce){.promo-ico{animation:none}}
.reveal[hidden]{display:none}
.btn.start{display:flex;width:100%}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--fg);cursor:pointer;line-height:1.4}
.consent input{flex:none;width:22px;height:22px;margin:1px 0 0;accent-color:var(--gold)}
.consent[hidden]{display:none}
.claim input::placeholder{color:#958C7D}
/* limited-time seasonal set */
.season{width:100%;display:grid;gap:4px;justify-items:center;text-align:center;padding:16px;border-radius:16px;
  background:radial-gradient(120% 140% at 50% 0%,rgba(201,169,110,.28),var(--card) 70%);border:1.5px solid var(--gold);color:var(--fg)}
.season b{font-family:var(--display);font-size:22px;color:var(--gold)}
.season span{font-size:14px;color:var(--muted)}
.season .season-tag{font-size:12px;font-weight:700;color:#1A1912;background:var(--gold);border-radius:999px;padding:2px 10px}
.season .season-meta{color:var(--fg);font-weight:600}
#season:empty{display:none}
/* exit dialog (phone back button on the main menu) */
.modal{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:24px;background:rgba(10,9,8,.72)}
.modal[hidden]{display:none}
.modal-card{width:min(100%,360px);display:grid;gap:12px;text-align:center;padding:22px 18px;border-radius:18px;background:var(--card);border:1px solid var(--gold)}
.modal-card b{font-family:var(--display);font-size:22px;color:var(--gold)}
.modal-card p{margin:0;color:var(--muted)}
.card-img{width:100%;max-height:52vh;object-fit:contain;border-radius:10px;-webkit-touch-callout:default}
