:root{color-scheme:dark;--paper:#f1e9da;--muted:#aba7bb;--gold:#e6c68f;--pink:#d4a1b7;--line:#ddc5a31c;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;height:100dvh;overflow:hidden;overscroll-behavior:none}body{color:var(--paper);background:radial-gradient(ellipse at 0 0,#4b364c66,transparent 55%),radial-gradient(ellipse at 100% 70%,#38534d40,transparent 52%),#222131;display:flex;flex-direction:column}button,select{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.38;cursor:default}button:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:3px}header{height:114px;flex:none;max-width:1180px;width:100%;margin:auto;padding:22px 28px;display:flex;align-items:center;gap:34px;border-bottom:1px solid var(--line)}.wordmark{display:flex;align-items:center;gap:10px;font-size:8px;line-height:1.6;font-weight:650;letter-spacing:1.5px}.brand-mark{font:30px Georgia;width:35px;height:42px;border:1px solid #d4ba9166;border-radius:22px 22px 10px 10px;display:grid;place-items:center;color:var(--gold)}.heading{flex:1}.heading>p{font-size:8px;letter-spacing:2.3px;margin:0 0 7px;color:var(--gold)}h1{font:36px/1.1 Georgia,serif;font-weight:400;margin:0;letter-spacing:-.7px}h1 em{font-weight:400;color:var(--pink)}nav{display:flex;gap:7px}nav button{height:34px;min-width:34px;border:1px solid #fff2;background:#ffffff04;border-radius:50%;font-size:16px}nav button.active{background:#d6bc8d20;color:var(--gold);border-color:#d6bc8d77}nav .language{border-radius:19px;font-size:10px;padding:0 11px}main{max-width:1180px;width:100%;min-height:0;flex:1;margin:auto;padding:18px 28px 10px;display:flex;flex-direction:column}.levelbar{flex:0 0 54px;display:flex;gap:24px;align-items:center;padding:0 0 13px}.levelbar>div:first-child{flex:1;min-width:0;display:flex;align-items:center;gap:12px}.level-label{font-size:8px;letter-spacing:2px;color:var(--muted)}select{background:#ffffff05;border:1px solid #d1b99133;border-radius:8px;padding:7px 24px 7px 10px;font-size:12px;max-width:100%;text-overflow:ellipsis}option{background:#2b293d;color:var(--paper)}.moves,.score{display:flex;align-items:center;gap:9px}.moves strong,.score strong{font:26px Georgia;color:var(--gold);min-width:28px}.moves span,.score span{font-size:7px;letter-spacing:1.2px;max-width:60px;color:var(--muted);line-height:1.5}.score{border-left:1px solid var(--line);padding-left:24px}.score strong{font-size:23px}.layout{flex:1;min-height:0;display:grid;grid-template-columns:205px minmax(0,1fr) 176px;gap:20px}.recipe-panel{border:1px solid var(--line);border-radius:17px;padding:20px 17px 16px;background:linear-gradient(150deg,#7264771a,#6b8c710a);min-height:0;overflow:hidden;display:flex;flex-direction:column}.eyebrow{font-size:8px;letter-spacing:1.7px;color:var(--gold);margin:0 0 15px;font-weight:600}.recipe{display:grid;gap:8px}.ingredient-goal{display:flex;align-items:center;gap:10px;padding:6px 8px;background:#13172230;border:1px solid #e0c9a515;border-radius:9px}.ingredient-goal>svg{width:31px;height:31px;flex:none}.ingredient-goal>div{flex:1;min-width:0}.ingredient-goal .ingredient-name{display:block;font-size:9px;white-space:nowrap;color:#ccc3d1}.ingredient-goal strong{display:block;font:16px Georgia;margin-top:3px;color:var(--gold)}.ingredient-goal strong small{font:11px system-ui;color:#a8a0b1}.ingredient-goal.done{border-color:#b5d0a155;background:#9ab8910c}.ingredient-goal.done strong{color:#b5d0a1}.ingredient-goal>span{font-size:12px;color:#b5d0a1}.candle-goal{margin-top:13px;padding-top:12px;border-top:1px solid var(--line);display:flex;align-items:center;gap:8px;font-size:10px;line-height:1.6;color:var(--muted)}.candle-goal[hidden]{display:none}.candle-goal>svg{width:20px;height:28px}.candle-goal strong{color:var(--gold);font-weight:500}.cauldron{flex:1;min-height:30px;max-height:190px;width:100%;margin:auto auto 0;display:flex;align-items:center;justify-content:center}.cauldron>svg{height:100%;width:100%;max-height:180px}.recipe-note{font:italic 12px/1.7 Georgia;color:#b2a9bc;text-align:center;margin:5px 0 0}.play-panel{min-width:0;min-height:0;display:flex;flex-direction:column}.board-shell{min-height:0;flex:1;position:relative;border:1px solid #ccb58a33;background:linear-gradient(145deg,#151725,#242637);box-shadow:inset 0 0 28px #070c1f55,0 12px 40px #11132322;border-radius:17px;padding:12px;display:flex;align-items:center;justify-content:center;overflow:hidden}.board{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));gap:5px;flex:none;width:100%;aspect-ratio:1}.cell{position:relative;background:#ffffff05;border:1px solid #f7dfb512;border-radius:9px;min-width:0;min-height:0;padding:5px;display:grid;place-items:center;touch-action:none;isolation:isolate;transition:background .15s,transform .15s}.cell>svg{width:86%;height:86%;filter:drop-shadow(0 3px 2px #0002);pointer-events:none}.cell.c1{background:#744a362a}.cell.c2{background:#6a55882a}.cell.c3{background:#8c50692a}.cell.c4{background:#526e512a}.cell.c5{background:#8e79442a}.cell:hover{background:#f6ddb516}.cell.selected{border-color:var(--gold);background:#d2ae5c2a;box-shadow:inset 0 0 0 1px var(--gold);transform:scale(.96)}.cell.keyboard{outline:2px solid #e4d6f3;outline-offset:-3px}.cell.hinted{animation:hint 1s ease-in-out 3;border-color:#c7d5ac}.cell.clear{animation:clear .23s ease-in both;pointer-events:none}.cell.new{animation:arrive .25s ease-out}.cell .candle{position:absolute;width:20px;height:25px;right:-1px;bottom:-1px;pointer-events:none;z-index:2;filter:drop-shadow(0 0 2px #151a25)}.cell .candle.lit{filter:drop-shadow(0 0 7px #f1c88566)}.candle svg{width:100%;height:100%}.spark-armed .cell{cursor:crosshair}.spark-armed .cell:hover{box-shadow:inset 0 0 0 2px #e5c9a2}.combo{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:10px 20px;border-radius:30px;background:#292333ed;color:var(--gold);font:italic 27px Georgia;border:1px solid #e5c29588;white-space:nowrap;pointer-events:none;opacity:0;z-index:6}.combo.show{animation:combo .7s ease-in-out}.tools{flex:0 0 49px;display:flex;align-items:center;justify-content:space-between;gap:8px}.tools>button{border:0;background:none;font-size:10px;color:#c7bcca;display:flex;align-items:center;gap:6px;padding:4px 6px;height:36px}.tools>button>span:first-child{font:22px Georgia;color:var(--gold)}.tools .spark{border:1px solid #d0b98b3b;border-radius:8px;background:#bca17a0b;padding:5px 9px;color:var(--gold)}.spark b{font:10px system-ui;border:1px solid #d3bd9166;border-radius:50%;height:17px;width:17px;display:grid;place-items:center}.tools .spark.active{background:#dbbe8d25;border-color:var(--gold)}.status{flex:0 0 22px;min-height:0;font-size:10px;color:var(--gold);line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journey-panel{display:flex;flex-direction:column;min-height:0;padding:7px 0 0}.shelf{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.bottle{border:1px solid #d3ba8f22;background:#ffffff02;color:var(--muted);border-radius:9px;min-height:58px;position:relative;font:18px Georgia;padding:6px 2px 13px}.bottle:after{content:'✧';position:absolute;bottom:3px;left:0;right:0;font:8px Georgia;color:#93879e}.bottle.active{border-color:#d7bb8b99;color:var(--gold);background:#d8b48509}.bottle.done{color:#d5c7aa;background:#b7bd8111}.bottle.done:after{content:attr(data-stars);color:#d8be85;letter-spacing:1px;font-size:7px}.note{margin-top:auto;padding:21px 0 2px;border-top:1px solid var(--line);position:relative}.note-mark{position:absolute;right:2px;top:21px;color:#a38dab;font-size:23px;opacity:.6}.note h2{font:italic 24px/1.2 Georgia;font-weight:400;color:#d9b8c8;margin:0 0 13px;letter-spacing:-.5px}.note>p{font-size:10px;line-height:1.8;color:var(--muted);margin:0 0 13px;max-width:155px}.note .keys{font-size:6px;letter-spacing:.9px;line-height:1.6;color:#8c839d;margin:0}footer{flex:0 0 28px;display:flex;justify-content:space-between;align-items:end;gap:10px;color:#90889c;font:italic 10px Georgia}footer>span:last-child{font:7px system-ui;letter-spacing:1.2px}.sky{pointer-events:none;position:absolute;inset:0;z-index:-1;opacity:.55;background-image:radial-gradient(circle at 10% 15%,#cbb69155 0 1px,transparent 1.5px),radial-gradient(circle at 87% 12%,#cbb69155 0 1px,transparent 1.5px),radial-gradient(circle at 65% 78%,#cbb69155 0 1px,transparent 1.5px)}dialog{max-width:440px;width:calc(100% - 28px);max-height:calc(100dvh - 20px);overflow:auto;border:1px solid #d5b88a77;border-radius:19px;background:linear-gradient(145deg,#383046,#24283a);color:var(--paper);padding:28px;box-shadow:0 25px 100px #0009}dialog::backdrop{background:#0d1224cc;backdrop-filter:blur(5px)}dialog h2{font:32px Georgia;font-weight:400;margin:5px 0 16px}.close{position:absolute;right:12px;top:8px;background:none;border:0;color:#c3b3c7;font-size:27px}#help-copy{font-size:12px;line-height:1.85;color:#d1c7d8}#help-copy ul{padding-left:18px}#help-copy strong{color:var(--gold)}.primary,.secondary{width:100%;border:0;border-radius:9px;background:var(--gold);color:#302735;font-size:12px;font-weight:600;padding:12px;margin-top:17px}.secondary{border:1px solid #dac19744;background:none;color:var(--gold);margin-top:9px}#result-dialog{text-align:center}.result-art{height:105px;display:flex;justify-content:center}.result-art svg{width:105px;height:105px}#result-dialog .eyebrow{margin:8px 0}#result-title{margin-bottom:10px}#result-copy{font-size:12px;line-height:1.8;color:#c7bdcd}.stars{font:25px Georgia;letter-spacing:7px;color:var(--gold);margin-bottom:14px}#share-status{font-size:10px;color:var(--gold);overflow-wrap:anywhere;margin:10px 0 0;line-height:1.6}@keyframes clear{to{opacity:0;transform:scale(.5) rotate(-10deg)}}@keyframes arrive{from{opacity:.5;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes combo{0%{opacity:0;transform:translate(-50%,-20%) scale(.7)}20%,70%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-90%) scale(1)}}@keyframes hint{50%{background:#d0d7ab3b;box-shadow:0 0 8px #d3ce9c66}}@media(max-width:950px){header{height:90px;padding:17px 21px;gap:23px}h1{font-size:31px}.layout{grid-template-columns:170px minmax(0,1fr);gap:14px}.journey-panel{display:none}main{padding:14px 20px 9px}.recipe-panel{padding:17px 13px}.recipe-note{font-size:11px}}@media(max-width:600px){header{height:73px;padding:12px 13px;gap:10px}.wordmark{display:none}.heading>p{font-size:6px;letter-spacing:1.3px;margin-bottom:5px}h1{font-size:26px;letter-spacing:-.5px}nav{gap:5px}nav button{height:30px;min-width:30px;font-size:14px}nav .language{font-size:9px;padding:0 8px}main{padding:8px 10px 7px}.levelbar{flex-basis:46px;gap:12px;padding-bottom:9px}.levelbar>div:first-child{gap:5px}.level-label{display:none}select{width:165px;padding:6px 20px 6px 8px;font-size:10px}.moves,.score{gap:5px}.moves strong,.score strong{font-size:23px;min-width:20px}.moves span,.score span{font-size:6px;letter-spacing:.4px;max-width:39px}.score{padding-left:10px}.layout{display:flex;flex-direction:column;gap:8px}.recipe-panel{flex:0 0 64px;display:flex;flex-direction:row;align-items:center;padding:7px 8px;border-radius:10px;gap:8px;overflow:visible}.recipe-panel .eyebrow,.cauldron,.recipe-note{display:none}.recipe{display:flex;gap:5px;min-width:0;flex:1}.ingredient-goal{flex:1;min-width:0;padding:3px 4px;gap:4px;height:48px;border-radius:6px;justify-content:center;position:relative}.ingredient-goal>svg{width:24px;height:29px}.ingredient-goal .ingredient-name{display:none}.ingredient-goal strong{font-size:14px;margin:0}.ingredient-goal strong small{font-size:9px}.ingredient-goal>span{position:absolute;right:1px;top:0;font-size:8px}.candle-goal{margin:0;border-top:0;border-left:1px solid var(--line);padding:0 0 0 7px;max-width:71px;gap:4px;font-size:8px;line-height:1.5;flex-shrink:0}.candle-goal>svg{width:17px;height:25px;flex-shrink:0}.candle-goal strong{white-space:nowrap}.play-panel{flex:1}.board-shell{padding:7px;border-radius:12px}.board{gap:4px}.cell{border-radius:7px;padding:3px}.cell .candle{width:18px;height:22px}.tools{flex-basis:49px}.tools>button{font-size:10px}.status{font-size:9px;flex-basis:22px}.combo{font-size:22px}footer{flex-basis:23px;font-size:8px}footer>span:last-child{font-size:6px;letter-spacing:.5px}.recipe:has(.ingredient-goal:nth-child(5)){gap:3px}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal{flex-direction:column;height:51px;padding:2px;gap:0}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal>svg{height:25px}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal strong{font-size:11px}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal strong small{font-size:8px}}@media(max-height:680px) and (min-width:601px){header{height:74px;padding-top:13px;padding-bottom:13px}.heading>p{font-size:7px;margin-bottom:4px}h1{font-size:28px}.wordmark{font-size:7px}.brand-mark{height:35px;font-size:25px}main{padding-top:12px}.levelbar{flex-basis:45px;padding-bottom:10px}.layout{gap:14px}.recipe-panel{padding:14px 12px}.recipe-panel .eyebrow{font-size:7px;margin-bottom:10px}.recipe{gap:6px}.ingredient-goal{padding:4px 6px;gap:7px}.ingredient-goal>svg{width:26px;height:26px}.ingredient-goal strong{font-size:14px}.ingredient-goal .ingredient-name{font-size:8px}.candle-goal{margin-top:10px;padding-top:9px}.cauldron{max-height:135px}.recipe-note{font-size:10px}.shelf{gap:6px}.bottle{min-height:47px}.note{padding-top:15px}.note h2{font-size:23px}.note>p{font-size:9px;line-height:1.7}.board-shell{padding:8px}.board{gap:4px}.cell{border-radius:7px}.tools{flex-basis:43px}.status{flex-basis:20px;font-size:9px}footer{flex-basis:24px}}@media(max-height:450px){header{height:39px;padding:5px 12px;gap:13px}.wordmark{display:none}.heading>p{display:none}h1{font-size:21px;letter-spacing:-.4px}nav button{height:27px;min-width:27px;font-size:13px}nav .language{font-size:9px;padding:0 7px}main{padding:5px 9px 3px}.levelbar{flex-basis:34px;padding-bottom:5px;gap:18px}.levelbar>div:first-child{gap:8px}.level-label{font-size:6px}select{padding:4px 20px 4px 7px;font-size:9px;max-width:220px}.moves strong,.score strong{font-size:20px;min-width:20px}.moves span,.score span{font-size:6px;max-width:none}.layout{display:grid;grid-template-columns:165px minmax(0,1fr);gap:10px}.recipe-panel{padding:9px;display:flex;flex-direction:column;gap:0}.recipe-panel .eyebrow{display:block;font-size:6px;letter-spacing:1px;margin-bottom:6px}.recipe{display:grid;grid-template-columns:1fr;gap:4px;flex:none;width:100%}.ingredient-goal{height:29px;flex:none;padding:2px 6px;gap:7px;justify-content:flex-start}.ingredient-goal>svg{width:22px;height:22px}.ingredient-goal .ingredient-name{display:block;font-size:7px}.ingredient-goal>div{display:flex;align-items:center;gap:7px;justify-content:space-between}.ingredient-goal strong{font-size:12px;margin:0;white-space:nowrap}.ingredient-goal strong small{font-size:8px}.ingredient-goal>span{position:static;font-size:8px}.candle-goal{font-size:8px;max-width:none;align-self:stretch;border-left:0;border-top:1px solid var(--line);padding:6px 0 0;margin-top:6px;gap:6px;line-height:1.3}.candle-goal>svg{width:14px;height:20px}.cauldron,.recipe-note,.journey-panel{display:none}.play-panel{height:100%;display:grid;grid-template-columns:minmax(0,1fr) 112px;grid-template-rows:minmax(0,1fr) 18px;gap:6px;min-height:0}.board-shell{grid-row:1;grid-column:1;padding:5px;border-radius:9px}.board{gap:2px}.cell{padding:1px;border-radius:4px}.cell .candle{width:13px;height:17px}.tools{grid-row:1;grid-column:2;display:flex;flex-direction:column;justify-content:center;gap:13px}.tools>button{width:100%;height:33px;font-size:9px;justify-content:center;gap:5px}.tools .spark{padding:4px}.tools>button>span:first-child{font-size:19px}.status{grid-row:2;grid-column:1 / 3;font-size:8px;line-height:16px;height:18px}footer{flex-basis:16px;font-size:7px}.combo{font-size:19px;padding:7px 13px}.recipe:has(.ingredient-goal:nth-child(5)){gap:3px}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal{flex-direction:row;height:25px;padding:1px 4px;gap:5px}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal>svg{height:20px;width:20px}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal strong{font-size:11px}dialog{padding:17px}dialog h2{font-size:24px;margin-bottom:10px}#help-copy{font-size:11px;line-height:1.7}.result-art,.result-art svg{height:52px;width:auto}.stars{font-size:21px;margin-bottom:6px}#result-copy{font-size:11px;line-height:1.6;margin:6px 0}.primary,.secondary{padding:9px;margin-top:9px}}@media(max-height:450px) and (max-width:600px){header{padding:4px 7px}h1{font-size:17px}main{padding:4px 5px 2px}.levelbar{gap:7px}.score{display:none}.moves span{max-width:38px}.levelbar select{max-width:180px}.layout{grid-template-columns:83px minmax(0,1fr);gap:5px}.recipe-panel{padding:5px}.recipe-panel .eyebrow{font-size:5px;letter-spacing:.3px}.ingredient-goal{padding:2px;gap:3px}.ingredient-goal>svg{width:20px;height:22px}.ingredient-goal .ingredient-name{display:none}.ingredient-goal strong{font-size:11px}.ingredient-goal strong small{font-size:7px}.candle-goal{font-size:7px;gap:3px}.play-panel{grid-template-columns:minmax(0,1fr) 31px;gap:3px}.tools>button{width:29px;height:33px;padding:3px;flex-direction:column;gap:1px}.tools>button>span:nth-child(2){display:none}.tools .spark{position:relative;height:43px;padding:3px}.spark b{font-size:7px;width:12px;height:12px}.board-shell{padding:3px}.board{gap:1px}.status{font-size:7px}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal{padding:1px;gap:2px}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal strong{font-size:10px}.recipe:has(.ingredient-goal:nth-child(5)) .ingredient-goal strong small{font-size:7px}footer>span:last-child{display:none}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.combo.show{opacity:1}}

@media(max-width:370px) and (min-height:451px){h1{font-size:22px}.heading>p{letter-spacing:.9px}.levelbar{gap:8px}select{width:142px}.score{padding-left:7px}.score strong{font-size:20px}.moves span,.score span{font-size:5px;max-width:34px}}

/* A match has three readable beats: gather light, release, then settle. */
.board{position:relative;isolation:isolate;overflow:hidden;border-radius:7px}
.cell>.ingredient-art{transform-origin:50% 50%;transform-box:fill-box}
.cell.match-charge{
  border-color:var(--ingredient-color,var(--gold));
  background:color-mix(in srgb,var(--ingredient-color,var(--gold)) 17%,#292837);
  box-shadow:inset 0 0 14px color-mix(in srgb,var(--ingredient-color,var(--gold)) 24%,transparent);
}
.cell.match-charge::after{
  content:"";position:absolute;inset:3px;border-radius:inherit;
  border:1px solid color-mix(in srgb,var(--ingredient-color,var(--gold)) 40%,transparent);
  pointer-events:none;
}
.cell.is-falling{z-index:3}
.board-shell::before{
  content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  box-shadow:inset 0 0 25px color-mix(in srgb,var(--brew-accent,#e6c68f) 24%,transparent);
  border:1px solid color-mix(in srgb,var(--brew-accent,#e6c68f) 50%,transparent);
  opacity:0;transition:opacity .15s;
}
.board-shell.brewing::before{opacity:1}
.board-shell.spark-wave::before{box-shadow:inset 0 0 35px #ece0bd40,0 0 16px #e4c79120}

/* The combo stays at the edge of the board; it never covers the whole puzzle. */
#combo{
  top:9px;left:50%;bottom:auto;transform:translate(-50%,0);
  display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:15px;row-gap:1px;
  padding:7px 12px 8px;border-radius:11px;width:max-content;max-width:calc(100% - 20px);
  background:linear-gradient(125deg,#342d40f5,#262838f5);border:1px solid #ddbd8d88;
  color:var(--paper);font:16px Georgia;box-shadow:0 5px 20px #10102155,0 0 18px #e6c68f12;
  pointer-events:none;opacity:0;z-index:8;letter-spacing:0;
}
#combo.show{animation:none}
#combo .combo-label{font:600 7px/1.5 ui-sans-serif,system-ui,sans-serif;letter-spacing:1.25px;color:#d1bd9e;grid-column:1}
#combo strong{font:italic 17px/1.15 Georgia,serif;font-weight:400;grid-column:1;white-space:nowrap}
#combo .combo-score{grid-column:2;grid-row:1 / 3;align-self:center;color:#f0d49c;font:23px/1 Georgia,serif}
#combo[data-tier="2"]{border-color:#c3b4e488;box-shadow:0 5px 20px #10102155,0 0 18px #c6b3e822}
#combo[data-tier="3"]{border-color:#b7d2b6aa;background:linear-gradient(125deg,#2b3a3df7,#302c40f7);box-shadow:0 5px 20px #10102155,0 0 20px #b7d2b62a}
#combo[data-tier="4"]{border-color:#f0cf90bb;background:linear-gradient(125deg,#4a3740f7,#343343f7);box-shadow:0 5px 20px #10102155,0 0 24px #e6c68f33}

/* One small travelling emblem per ingredient, plus a bounded burst of light. */
.potion-fx-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:30;contain:strict}
.potion-fx-layer *,.win-sparks *{pointer-events:none!important}
.magic-particle{position:absolute;display:block;background:var(--magic,#e6c68f);filter:drop-shadow(0 0 3px var(--magic,#e6c68f));transform-origin:center}
.magic-particle.star{clip-path:polygon(50% 0,61% 37%,100% 50%,62% 62%,50% 100%,38% 63%,0 50%,38% 38%)}
.magic-particle.orb{border-radius:50%;background:radial-gradient(circle,#fff7dc 0 20%,var(--magic,#e6c68f) 45%,transparent 75%)}
.magic-ring{position:absolute;display:block;border:1px solid var(--magic,#e6c68f);border-radius:50%;box-shadow:0 0 9px color-mix(in srgb,var(--magic,#e6c68f) 30%,transparent);pointer-events:none}
.spell-thread{position:absolute;height:2px;transform-origin:left center;opacity:0;background:linear-gradient(90deg,transparent,var(--magic,#e6c68f) 15%,#fff0ce 50%,var(--magic,#e6c68f) 85%,transparent);box-shadow:0 0 7px var(--magic,#e6c68f)}
.brew-flight{position:absolute;display:block;width:28px;height:28px;pointer-events:none;filter:drop-shadow(0 0 6px var(--magic,#e6c68f));transform-origin:center}
.brew-flight>svg{width:100%;height:100%;position:relative;z-index:1}
.brew-flight::after{content:"";position:absolute;left:40%;top:55%;width:27px;height:2px;border-radius:50%;background:linear-gradient(90deg,var(--magic,#e6c68f),transparent);transform:rotate(28deg);transform-origin:left;opacity:.5}
.ingredient-goal strong{transform-origin:left center}
.cauldron{transition:filter .2s}
.cauldron.is-brewing{filter:drop-shadow(0 0 10px #b7cfa834)}
.cauldron-bubble,.cauldron-steam,.cauldron-surface{transform-box:fill-box;transform-origin:center}
.is-brewing .cauldron-bubble{animation:brew-bubble .75s ease-out infinite}
.is-brewing .cauldron-bubble:nth-of-type(2){animation-delay:-.25s}
.is-brewing .cauldron-bubble:nth-of-type(3){animation-delay:-.5s}
.is-brewing .cauldron-steam{animation:brew-steam 1.2s ease-in-out infinite alternate}
.is-brewing .cauldron-surface{animation:brew-surface .8s ease-in-out infinite alternate}
@keyframes brew-bubble{0%{transform:translateY(6px) scale(.65);opacity:0}25%{opacity:.8}100%{transform:translateY(-14px) scale(1.15);opacity:0}}
@keyframes brew-steam{from{transform:translateX(-2px) scaleX(.95);opacity:.3}to{transform:translateX(3px) scaleX(1.08);opacity:.65}}
@keyframes brew-surface{from{transform:scaleX(.97);opacity:.8}to{transform:scaleX(1.03);opacity:1}}

.result-art{position:relative;isolation:isolate}
.win-sparks{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none;z-index:2}
.stars{display:flex;align-items:center;justify-content:center;gap:8px;letter-spacing:0}
.stars>span{display:inline-block;min-width:25px;transform-origin:center}
.recipe-ready .result-art>svg{animation:potion-ready .6s cubic-bezier(.2,.75,.25,1.2) both}
.recipe-ready .stars>.earned{animation:star-ready .55s cubic-bezier(.2,.85,.3,1.25) both;animation-delay:calc(.18s + var(--star-order)*.13s);text-shadow:0 0 15px #efcd8f44}
@keyframes potion-ready{from{transform:translateY(14px) scale(.8);opacity:0}65%{transform:translateY(-3px) scale(1.025);opacity:1}to{transform:translateY(0) scale(1);opacity:1}}
@keyframes star-ready{from{transform:translateY(8px) scale(.3) rotate(-18deg);opacity:0}65%{transform:translateY(-2px) scale(1.15) rotate(3deg);opacity:1}to{transform:translateY(0) scale(1) rotate(0);opacity:1}}
@media(max-width:600px){
  #combo{top:6px;padding:6px 10px;column-gap:11px;border-radius:9px}
  #combo strong{font-size:15px}#combo .combo-label{font-size:6px;letter-spacing:1px}#combo .combo-score{font-size:21px}
  .brew-flight{width:23px;height:23px}
}
@media(max-height:450px){
  #combo{top:4px;padding:4px 8px;column-gap:8px;border-radius:7px}
  #combo strong{font-size:12px}#combo .combo-label{font-size:5px;letter-spacing:.7px}#combo .combo-score{font-size:17px}
  .brew-flight{width:19px;height:19px}.brew-flight::after{width:18px}
  .stars>span{min-width:21px}
}
@media(prefers-reduced-motion:reduce){
  .potion-fx-layer,.win-sparks,#combo{display:none!important}
  .board-shell::before,.cell{transition:none!important}
  .recipe-ready .result-art>svg,.recipe-ready .stars>.earned{transform:none;opacity:1;animation:none}
}
