:root{
  --cream:#f7efe1;--cream2:#fbf5eb;--paper:#fff9ef;--forest:#294737;--forest-deep:#1e3529;
  --red:#a94f48;--red-deep:#8f403b;--gold:#c69a53;--gold-light:#e7ca8f;--ink:#342b24;--muted:#74695e;
  --line:rgba(67,48,33,.14);--softline:rgba(198,154,83,.30);--shadow:0 20px 52px rgba(62,44,31,.14);--shadow-soft:0 10px 28px rgba(62,44,31,.10);
  color-scheme:light;
}
*{box-sizing:border-box}
html{min-width:320px;background:var(--cream)}
body{margin:0;min-width:320px;color:var(--ink);font-family:Inter,ui-rounded,"Avenir Next",Avenir,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at 18% 0%,rgba(255,255,255,.96),transparent 38rem),linear-gradient(180deg,#fbf5eb 0%,var(--cream) 76%)}
button,input{font:inherit}button{-webkit-tap-highlight-color:transparent;cursor:pointer}button:focus-visible,input:focus-visible{outline:4px solid rgba(198,154,83,.38);outline-offset:3px}[hidden]{display:none!important}img{max-width:100%;display:block}
.app-shell{width:min(1240px,calc(100% - 28px));margin:0 auto;padding:clamp(16px,3vw,36px) 0 44px}.screen{animation:screenIn .36s ease both}@keyframes screenIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.eyebrow{margin:0;color:var(--forest);font-size:.76rem;font-weight:950;letter-spacing:.21em}.button{min-height:52px;border:0;border-radius:999px;padding:0 24px;font-weight:900;box-shadow:var(--shadow-soft);transition:transform .18s ease,box-shadow .18s ease}.button:active{transform:translateY(1px) scale(.99)}.button-primary{background:var(--forest);color:#fff8ee}.button-secondary{background:#f2e4c9;color:var(--forest);box-shadow:none}.tiny-note{color:#8d8074;font-size:.92rem}

/* access */
.access-screen{min-height:calc(100vh - 80px);display:grid;grid-template-columns:minmax(0,1.1fr) minmax(420px,.9fr);align-items:center;gap:clamp(34px,6vw,92px)}.access-visual img{width:100%;filter:drop-shadow(0 12px 24px rgba(87,59,37,.08))}.access-copy h1,.home-heading h1,.game-heading h1{font-family:Georgia,"Times New Roman",serif;color:var(--forest-deep);letter-spacing:-.045em}.access-copy h1{margin:10px 0 22px;font-size:clamp(58px,8vw,108px);line-height:.92}.lead{margin:0 0 30px;color:#776b60;font:clamp(19px,2vw,26px)/1.48 Georgia,serif;max-width:620px}.code-card{padding:26px;border:1px solid var(--line);border-radius:28px;background:rgba(255,249,239,.86);box-shadow:var(--shadow-soft)}.code-card label{display:block;color:var(--forest);font-weight:950}.code-card>p{margin:7px 0 18px;color:var(--muted)}.code-row{display:flex;gap:12px}.code-row input{min-width:0;flex:1;height:56px;border:2px solid rgba(198,154,83,.45);border-radius:999px;padding:0 20px;background:#fffdf8;color:var(--ink);font-weight:900;text-transform:uppercase}.form-message{min-height:22px;margin:10px 8px 0!important;font-weight:800;color:var(--red)}.form-message.success{color:var(--forest)}

/* home */
.home-screen{padding-top:clamp(12px,2vw,26px)}.home-heading{text-align:center;max-width:920px;margin:0 auto 20px}.home-heading h1{margin:8px 0 12px;font-size:clamp(54px,8vw,94px);line-height:.95}.home-heading>p:last-child{margin:0 auto;color:var(--muted);font:clamp(18px,2vw,24px)/1.5 Georgia,serif;max-width:720px}.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.mode-card{position:relative;text-align:left;border:1px solid var(--line);border-radius:34px;overflow:hidden;background:rgba(255,249,239,.86);padding:0;box-shadow:var(--shadow-soft);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.mode-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:rgba(198,154,83,.38)}.mode-art{height:190px;background:linear-gradient(180deg,rgba(41,71,55,.05),rgba(169,79,72,.08)),radial-gradient(circle at 65% 35%,rgba(255,255,255,.88),transparent 28%),var(--cream-deep);position:relative}.mode-art::before,.mode-art::after{content:"";position:absolute;border-radius:50%;background-color:#fff9ef;background-repeat:no-repeat;background-position:center;background-size:72%;box-shadow:0 10px 24px rgba(70,45,29,.09);border:1px solid rgba(198,154,83,.18)}.mode-art::before{width:112px;height:112px;left:15%;top:24%}.mode-art::after{width:142px;height:142px;right:13%;bottom:10%}.mode-art-easy{background-image:radial-gradient(circle at 23% 54%,rgba(198,154,83,.16) 0 8px,transparent 9px),radial-gradient(circle at 73% 31%,rgba(169,79,72,.10) 0 7px,transparent 8px),linear-gradient(140deg,#f9f1e4,#efe2cf)}.mode-art-easy::before{background-image:url("assets/items/snow-globe.webp")}.mode-art-easy::after{background-image:url("assets/items/rocking-horse.webp")}.mode-art-classic{background-image:radial-gradient(circle at 18% 25%,rgba(198,154,83,.18) 0 6px,transparent 7px),radial-gradient(circle at 78% 56%,rgba(169,79,72,.12) 0 8px,transparent 9px),radial-gradient(circle at 52% 76%,rgba(41,71,55,.09) 0 7px,transparent 8px),linear-gradient(140deg,#f4eadb,#e9d9bf)}.mode-art-classic::before{background-image:url("assets/items/nutcracker.webp")}.mode-art-classic::after{background-image:url("assets/items/gingerbread-house.webp")}.mode-copy{padding:20px 24px 24px;display:grid;grid-template-columns:auto 1fr;gap:4px 14px;align-items:center}.mode-icon{grid-row:1/5;width:50px;height:50px;border-radius:50%;display:grid;place-items:center;background:var(--red);color:#fff4e8;font-size:1.3rem}.classic-card .mode-icon{background:var(--forest)}.mode-name{font:700 2rem Georgia,serif;color:var(--forest-deep)}.mode-detail{color:var(--red-deep);font-weight:950}.mode-caption{color:var(--muted);margin-top:4px}.mode-cta{margin-top:14px;color:var(--forest);font-weight:950}.mode-ribbon{position:absolute;right:20px;top:18px;z-index:2;padding:8px 12px;border-radius:999px;background:#ead39e;color:var(--forest);font-size:.7rem;font-weight:950;letter-spacing:.11em}.how-to{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px}.how-step{display:flex;align-items:center;gap:14px;padding:12px 14px;border-top:1px solid var(--line)}.how-step>span{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--forest);color:#fff7ec;font-weight:950}.how-step strong{display:block;color:var(--forest);font-size:1rem}.how-step small{display:block;color:var(--muted);margin-top:3px}

/* game */
.game-screen{padding-top:0}.game-header{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;margin-bottom:14px}.icon-button{width:58px;height:58px;border-radius:50%;border:1px solid var(--line);background:#fff9ef;color:var(--forest);font-size:2rem;line-height:1}.game-heading h1{margin:2px 0 0;font-size:clamp(40px,5vw,68px);line-height:.94}.game-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.pill,.text-button{min-height:52px;border-radius:999px;border:1px solid var(--line);padding:0 20px;background:#fff9ef;color:var(--forest);font-weight:950}.mode-pill{display:grid;place-items:center;background:#f0ddb0;letter-spacing:.08em;font-size:.82rem}.round-pill{display:flex;align-items:center;gap:8px;color:var(--muted)}.round-pill b{color:var(--forest);font-size:1.15rem}.text-button{font-size:1rem}.play-card{border:1px solid rgba(198,154,83,.28);border-radius:34px;background:rgba(255,249,239,.88);box-shadow:var(--shadow-soft);padding:clamp(16px,2vw,24px)}.phase-copy{text-align:center;margin-bottom:14px}.phase-kicker{margin:0 0 5px;color:var(--red-deep);font-size:.75rem;font-weight:950;letter-spacing:.16em}.phase-copy h2,.answer-heading h2,.win-card h2{margin:0;color:var(--forest-deep);font:700 clamp(30px,4vw,48px)/1 Georgia,serif;letter-spacing:-.03em}.phase-copy p:last-child,.answer-heading p:last-child{margin:8px 0 0;color:var(--muted);font-size:1rem}.memory-grid{display:grid;gap:clamp(9px,1.1vw,14px);max-width:760px;margin:0 auto}.memory-grid.easy{grid-template-columns:repeat(3,minmax(0,1fr))}.memory-grid.classic{grid-template-columns:repeat(3,minmax(0,1fr))}.memory-tile{position:relative;aspect-ratio:1.12/1;border:1px solid rgba(198,154,83,.34);border-radius:20px;background:linear-gradient(180deg,#fffdf8,#faf1e3);display:grid;place-items:center;padding:clamp(10px,1.5vw,18px);box-shadow:0 8px 20px rgba(65,44,29,.08);overflow:hidden;animation:itemIn .42s cubic-bezier(.2,.8,.2,1) both;animation-delay:var(--delay,0ms)}.memory-tile img{width:78%;height:78%;object-fit:contain;filter:drop-shadow(0 6px 8px rgba(73,49,31,.08));user-select:none;pointer-events:none}.memory-tile.is-missing{border-style:dashed;border-color:rgba(198,154,83,.5);background:rgba(247,239,225,.55)}.memory-tile.is-missing img{animation:disappear .46s ease both}.memory-tile.returning img{animation:returnPop .5s cubic-bezier(.2,.95,.35,1.25) both}.memory-tile.returning::after{content:"✦";position:absolute;color:var(--gold);font-size:1.8rem;animation:spark .65s ease both}.memory-progress{height:8px;margin:14px auto 0;max-width:760px;background:#eadfc9;border-radius:999px;overflow:hidden}.memory-progress span{display:block;height:100%;width:100%;transform-origin:left;background:linear-gradient(90deg,var(--red),var(--gold));border-radius:inherit}.memory-progress.is-running span{animation:countdown var(--look-duration,4s) linear forwards}@keyframes countdown{to{transform:scaleX(0)}}@keyframes itemIn{from{opacity:0;transform:scale(.94) translateY(4px)}to{opacity:1;transform:none}}@keyframes disappear{0%{opacity:1;transform:scale(1)}35%{opacity:1;transform:scale(1.08);filter:drop-shadow(0 0 12px rgba(198,154,83,.55))}100%{opacity:0;transform:scale(.74)}}@keyframes returnPop{0%{opacity:0;transform:scale(.72)}70%{opacity:1;transform:scale(1.08)}100%{opacity:1;transform:scale(1)}}@keyframes spark{0%{opacity:0;transform:scale(.5) rotate(-18deg)}45%{opacity:1;transform:scale(1.2)}100%{opacity:0;transform:translateY(-30px) scale(.8) rotate(18deg)}}
.answer-section{margin-top:14px;padding:16px clamp(14px,2vw,22px);border-radius:30px;background:rgba(255,249,239,.72);border:1px solid var(--line);box-shadow:var(--shadow-soft);animation:answerIn .3s ease both}@keyframes answerIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.answer-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:12px}.feedback{min-height:28px;margin:0!important;color:var(--forest)!important;font-weight:900;text-align:right}.answer-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;max-width:980px;margin:0 auto}.answer-grid.easy{grid-template-columns:repeat(3,minmax(0,1fr));max-width:760px;margin:0 auto}.answer-card{position:relative;min-height:118px;border:1px solid rgba(198,154,83,.32);border-radius:24px;background:#fffdf8;display:grid;place-items:center;padding:12px;box-shadow:0 8px 18px rgba(65,44,29,.08);transition:transform .17s ease,border-color .17s ease,box-shadow .17s ease}.answer-card:hover{transform:translateY(-2px);border-color:rgba(198,154,83,.62);box-shadow:0 13px 25px rgba(65,44,29,.12)}.answer-card img{width:min(120px,80%);height:86px;object-fit:contain;pointer-events:none}.answer-card.correct{border:3px solid rgba(41,71,55,.48);background:#f1f5ed;animation:correctPop .42s cubic-bezier(.2,.9,.35,1.15) both}.answer-card.correct::after{content:"✓";position:absolute;right:10px;top:10px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#718878;color:white;font-weight:950}.answer-card.wrong{animation:wrongShake .46s ease}.answer-card.hint-pulse{animation:hintPulse 1.15s ease 2}.next-row{text-align:center;margin-top:12px}.next-button{min-width:180px}.round-track{height:7px;margin:12px auto 0;background:#e8ddc8;border-radius:999px;overflow:hidden}.round-track span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--red),var(--gold));border-radius:inherit;transition:width .45s ease}@keyframes correctPop{50%{transform:scale(1.04)}}@keyframes wrongShake{0%,100%{transform:translateX(0)}18%{transform:translateX(-9px)}36%{transform:translateX(8px)}54%{transform:translateX(-6px)}72%{transform:translateX(4px)}}@keyframes hintPulse{0%,100%{box-shadow:0 8px 18px rgba(65,44,29,.08)}50%{box-shadow:0 0 0 7px rgba(198,154,83,.22),0 10px 24px rgba(65,44,29,.12)}}

/* win */
.win-layer{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:18px;background:rgba(30,53,41,.68);backdrop-filter:blur(7px)}.win-card{position:relative;width:min(560px,100%);text-align:center;background:#fff9ef;border-radius:40px;padding:28px clamp(22px,5vw,48px) 34px;box-shadow:0 30px 80px rgba(21,35,27,.34);overflow:hidden}.win-art{width:min(360px,82%);margin:0 auto 18px}.win-card h2{font-size:clamp(48px,8vw,76px)}.win-card>p:not(.eyebrow){color:var(--muted);font:1.15rem/1.5 Georgia,serif}.win-stat{display:inline-flex;align-items:center;gap:10px;padding:12px 20px;border-radius:999px;background:#efe1c2;color:var(--muted);font-weight:900;margin:8px 0 22px}.win-stat strong{color:var(--forest);font-size:1.25rem}.win-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-20px;width:10px;height:14px;border-radius:3px;background:var(--gold);animation:confettiFall var(--dur,2.2s) ease-in forwards;transform:translateX(0) rotate(0deg)}.confetti-piece:nth-child(3n){background:var(--red)}.confetti-piece:nth-child(4n){background:var(--forest)}@keyframes confettiFall{to{transform:translate(var(--drift,0),110vh) rotate(540deg)}}

@media (max-width:900px){.access-screen{grid-template-columns:1fr;min-height:auto;text-align:center;padding:28px 0}.access-visual{order:2;max-width:720px;margin:0 auto}.access-copy{order:1}.lead{margin-left:auto;margin-right:auto}.code-card{text-align:left}.mode-grid{grid-template-columns:1fr}.how-to{grid-template-columns:1fr 1fr 1fr}.game-header{grid-template-columns:auto 1fr}.game-actions{grid-column:1/-1;justify-content:flex-end}.game-heading h1{font-size:clamp(42px,8vw,66px)}.answer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.answer-grid.easy{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.app-shell{width:min(100% - 16px,1240px);padding-top:10px}.access-copy h1{font-size:clamp(50px,16vw,72px)}.code-row{flex-direction:column}.code-row .button{width:100%}.home-heading h1{font-size:clamp(44px,14vw,64px)}.mode-art{height:160px}.how-to{grid-template-columns:1fr}.how-step{padding:12px 8px}.game-header{gap:10px;margin-bottom:14px}.icon-button{width:48px;height:48px}.game-heading h1{font-size:clamp(38px,11vw,54px)}.game-actions{justify-content:flex-start;gap:8px}.pill,.text-button{min-height:46px;padding:0 15px}.play-card{border-radius:26px;padding:16px 12px}.phase-copy{margin-bottom:16px}.memory-grid{gap:9px}.memory-grid.easy{grid-template-columns:repeat(2,minmax(0,1fr));max-width:480px}.memory-grid.classic{grid-template-columns:repeat(3,minmax(0,1fr))}.memory-tile{border-radius:18px;padding:10px}.memory-tile img{width:86%;height:86%}.memory-progress{margin-top:16px}.answer-section{border-radius:24px;padding:18px 12px}.answer-heading{display:block}.feedback{text-align:left;margin-top:10px!important}.answer-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:none}.answer-grid.easy{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-width:none}.answer-card{min-height:112px;border-radius:18px;padding:8px}.answer-card img{height:82px}.answer-grid.easy .answer-card{min-height:102px;padding:6px}.answer-grid.easy .answer-card img{height:76px;max-width:100%}.win-actions{grid-template-columns:1fr}.win-card{border-radius:30px}}
@media (max-width:400px){.game-heading h1{font-size:34px}.round-pill span{display:none}.answer-card{min-height:104px}.answer-card img{height:74px}.answer-grid.easy{gap:6px}.answer-grid.easy .answer-card{min-height:92px;padding:5px}.answer-grid.easy .answer-card img{height:66px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* V4 multi-challenge upgrade */
.challenge-strip{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:14px auto 2px}.challenge-strip span{padding:8px 12px;border-radius:999px;background:#f3e5c9;color:var(--forest);font-size:.72rem;font-weight:950;letter-spacing:.06em}.challenge-pill{display:grid;place-items:center;background:#fff9ef;color:var(--red-deep);font-size:.72rem;letter-spacing:.06em}.star-pill{display:flex;align-items:center;gap:7px;background:#f2e0b7;color:var(--gold);font-size:1.04rem}.star-pill b{color:var(--forest)}
.empty-memory{border-style:dashed!important;background:rgba(247,239,225,.42)!important}.empty-memory img{visibility:hidden}.position-grid .memory-tile{cursor:pointer}.position-slot{border:2px dashed rgba(198,154,83,.38);background:linear-gradient(180deg,#fffaf2,#f5ead8);cursor:pointer}.slot-number{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#efe0c2;color:var(--forest);font-weight:950;font-size:1.15rem}.position-slot:hover{border-color:rgba(198,154,83,.75);transform:translateY(-2px)}.position-slot.wrong{animation:wrongShake .46s ease}.position-correct{border:3px solid rgba(41,71,55,.48)!important;background:#f1f5ed!important;animation:correctPop .42s cubic-bezier(.2,.9,.35,1.15) both}.position-correct img{width:78%;height:78%;object-fit:contain}.memory-tile.moved-correct{border:3px solid rgba(41,71,55,.48);background:#f1f5ed;animation:correctPop .42s cubic-bezier(.2,.9,.35,1.15) both}.memory-tile.moved-correct::after{content:"✓";position:absolute;right:9px;top:9px;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#718878;color:#fff;font-weight:950}.memory-tile.wrong{animation:wrongShake .46s ease}.feedback strong{color:var(--forest-deep)}.win-stats{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.win-stats .win-stat{margin:8px 0 22px}
@media (max-width:900px){.challenge-pill{order:5}.star-pill{order:6}}
@media (max-width:640px){.challenge-strip{gap:6px}.challenge-strip span{font-size:.64rem;padding:7px 9px}.challenge-pill{max-width:170px;text-align:center;padding:0 12px}.star-pill{padding:0 13px}.memory-grid.easy{grid-template-columns:repeat(3,minmax(0,1fr));max-width:620px}.memory-grid.easy .memory-tile{aspect-ratio:1/1}.slot-number{width:40px;height:40px;font-size:1rem}}


/* Plum & Kite brand footer */
.brand-footer{display:flex;justify-content:center;align-items:center;padding:8px 16px 28px;margin:0 auto;min-height:54px}
.brand-footer img{display:block;width:120px;max-width:34vw;height:auto;opacity:.72}
@media(max-width:600px){.brand-footer{padding:5px 12px 22px}.brand-footer img{width:100px;max-width:42vw}}
