.skybg{position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(1100px 700px at 50% -10%,#241a4d 0%,transparent 60%),radial-gradient(800px 520px at 85% 112%,#1a2348 0%,transparent 55%)}.stage{position:relative}.stage-top{position:absolute;top:0;left:0;right:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.45rem .9rem;pointer-events:none;background:linear-gradient(to bottom,color-mix(in srgb,var(--color-night) 80%,transparent),transparent)}.stage-top>*{pointer-events:auto}.stage-title{font-size:1rem;color:var(--color-gold);white-space:nowrap}.stage-tools{display:flex;gap:.35rem}@media(min-width:681px){.stage-top{display:none}}.recipe-strip{opacity:.8}.recipe-strip #recipe li{line-height:1.3;color:var(--color-muted)}.board-wrap{position:relative;z-index:10;width:100vw;left:50%;margin-left:-50vw;height:86vh;height:86dvh;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-x pan-y;background:radial-gradient(1200px 1000px at 50% 44%,#130d2a 0%,#0b0818 72%,var(--color-night) 100%);-webkit-user-select:none;user-select:none}.board{position:relative;margin:0 auto;touch-action:pan-x pan-y;--charge: 0}.board:before,.board:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0}.board:before{background-image:radial-gradient(1.4px 1.4px at 12% 18%,rgba(244,239,227,.9),transparent),radial-gradient(1.2px 1.2px at 28% 62%,rgba(227,194,129,.7),transparent),radial-gradient(1.6px 1.6px at 47% 33%,rgba(244,239,227,.8),transparent),radial-gradient(1.2px 1.2px at 63% 71%,rgba(154,120,194,.7),transparent),radial-gradient(1.5px 1.5px at 78% 24%,rgba(244,239,227,.8),transparent),radial-gradient(1.3px 1.3px at 88% 58%,rgba(227,194,129,.6),transparent),radial-gradient(1.2px 1.2px at 38% 86%,rgba(244,239,227,.7),transparent),radial-gradient(1.4px 1.4px at 70% 92%,rgba(244,239,227,.6),transparent);animation:twinkle 5.5s ease-in-out infinite}.board:after{background-image:radial-gradient(1px 1px at 20% 40%,rgba(244,239,227,.5),transparent),radial-gradient(1px 1px at 55% 15%,rgba(227,194,129,.45),transparent),radial-gradient(1px 1px at 80% 80%,rgba(244,239,227,.5),transparent),radial-gradient(1px 1px at 33% 73%,rgba(154,120,194,.45),transparent),radial-gradient(1px 1px at 90% 40%,rgba(244,239,227,.4),transparent);animation:twinkle 8s ease-in-out infinite reverse}@keyframes twinkle{0%,to{opacity:.5}50%{opacity:1}}.board-links{position:absolute;inset:0;width:100%;height:100%;z-index:1}.link{stroke:color-mix(in srgb,var(--color-mauve) 45%,transparent);stroke-width:1.5;opacity:.22;stroke-dasharray:4 9;transition:opacity .6s ease,stroke .6s ease,stroke-width .6s ease}.link.lit{opacity:.95;stroke:color-mix(in srgb,var(--color-gold) 80%,transparent);stroke-width:2.5;stroke-dasharray:7 12;filter:drop-shadow(0 0 6px color-mix(in srgb,var(--color-gold) 55%,transparent));animation:flow 1.1s linear infinite}@keyframes flow{to{stroke-dashoffset:-19}}.channel-dot{fill:#fff;filter:drop-shadow(0 0 6px var(--color-gold))}.node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.3rem;z-index:2}.node:before{content:"";position:absolute;inset:-16%;border-radius:50%;z-index:-1;background:radial-gradient(circle,color-mix(in srgb,var(--color-mauve) 9%,transparent) 0%,transparent 68%);transition:background .4s ease}.node[data-lit=true]:before{background:radial-gradient(circle,color-mix(in srgb,var(--color-gold) 14%,transparent) 0%,transparent 70%)}.n-label{font-size:.64rem;text-transform:uppercase;letter-spacing:.16em;color:var(--color-muted);text-shadow:0 0 8px var(--color-night)}.node[data-lit=true] .n-label{color:var(--color-gold)}.n-vessel{z-index:3}.dial{position:relative;margin:0 auto;touch-action:none;--dial-d: 220px;--dial-r: calc(var(--dial-d) / 2 - 22px);width:var(--dial-d);height:var(--dial-d)}.dial-mini{--dial-d: 150px;--dial-r: calc(var(--dial-d) / 2 - 18px)}.dial-rim{position:absolute;inset:0;border-radius:50%;border:none;background:radial-gradient(circle at 50% 44%,color-mix(in srgb,var(--color-night) 52%,transparent) 0%,color-mix(in srgb,var(--color-night) 22%,transparent) 48%,transparent 72%);box-shadow:none}.node[data-lit=true] .dial-rim{background:radial-gradient(circle at 50% 44%,color-mix(in srgb,var(--color-gold) 13%,transparent) 0%,color-mix(in srgb,var(--color-night) 20%,transparent) 50%,transparent 72%)}.dial-disc{position:absolute;inset:0;cursor:grab;transform-origin:center}.dial-disc:active{cursor:grabbing}.dial-seg{position:absolute;left:50%;top:50%;width:0;height:0;transform:rotate(var(--theta)) translateY(calc(-1 * var(--dial-r)))}.seg-face{position:absolute;left:0;top:0;transform:translate(-50%,-50%) rotate(calc(-1 * var(--theta) - var(--discR, 0deg)));border-radius:9999px;border:1px solid color-mix(in srgb,var(--color-gold) 25%,transparent);background:color-mix(in srgb,var(--color-ink-2) 60%,transparent);color:var(--color-star);padding:.2rem .5rem;font-size:.72rem;cursor:pointer;line-height:1.05;white-space:nowrap}.seg-face.glyph{width:2.1rem;height:2.1rem;padding:0;display:grid;place-items:center;font-size:1rem}.seg-face.tiny{padding:.1rem .28rem;font-size:.6rem;min-width:1.3rem;text-align:center}.seg-face.previewing{border-color:var(--color-gold);box-shadow:0 0 8px color-mix(in srgb,var(--color-gold) 50%,transparent)}.seg-face.sel{background:var(--color-gold);color:var(--color-night);font-weight:600;box-shadow:0 0 10px color-mix(in srgb,var(--color-gold) 55%,transparent)}.dial-marker,.ring-marker{position:absolute;left:50%;top:-7px;transform:translate(-50%);color:var(--color-gold);filter:drop-shadow(0 0 6px var(--color-gold));z-index:6;pointer-events:none;font-size:1rem;line-height:1}.dial-hub{position:absolute;left:50%;top:50%;width:42%;height:42%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--color-gold) 14%,transparent) 0%,transparent 68%);pointer-events:none}.dial-readout{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:70%;text-align:center;font-family:var(--font-display);font-size:.8rem;color:var(--color-gold);pointer-events:none}.dial-mini .dial-readout{font-size:.68rem}.ringdate{position:relative;width:380px;height:380px;-webkit-mask:radial-gradient(circle,#000 0,#000 186px,transparent 198px);mask:radial-gradient(circle,#000 0,#000 186px,transparent 198px)}.ring-guides{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.ring-guides circle{fill:none;stroke:color-mix(in srgb,var(--color-gold) 13%,transparent);stroke-width:1}.ringdate .dial{position:absolute;inset:0;width:100%;height:100%;margin:0}.r-decade{--dial-r: 56px}.r-year{--dial-r: 100px}.r-month{--dial-r: 144px}.r-day{--dial-r: 184px}.ringdate .seg-face{font-size:.6rem;padding:.12rem .34rem}.ringdate .dial,.ringdate .dial-disc{pointer-events:none}.ringdate .seg-face{pointer-events:auto}.ringdate .ring.locked .seg-face{pointer-events:none}.ringdate .seg-face.yfuture{opacity:.22;pointer-events:none}.ring.locked{opacity:.22;filter:grayscale(.6)}.ring-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:76px;text-align:center;font-family:var(--font-display);font-size:.72rem;line-height:1.15;color:var(--color-gold);pointer-events:none}.vibe-pad{--vx: .5;--vy: .5;position:relative;width:240px;height:200px;touch-action:none;border:none;background:radial-gradient(closest-side at 50% 50%,color-mix(in srgb,var(--color-mauve) 24%,transparent) 0%,color-mix(in srgb,var(--color-ember) 14%,transparent) 55%,transparent 100%)}.vibe-cross{display:none}.vaxis{position:absolute;font-size:.58rem;letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);pointer-events:none}.vax-l{left:.4rem;top:50%;transform:translateY(-50%)}.vax-r{right:.4rem;top:50%;transform:translateY(-50%)}.vax-t{top:.3rem;left:50%;transform:translate(-50%)}.vax-b{bottom:.3rem;left:50%;transform:translate(-50%)}.vibe-node{position:absolute;left:50%;top:50%;width:28px;height:28px;margin:-14px 0 0 -14px;border-radius:50%;cursor:grab;border:2px solid var(--color-star);background:radial-gradient(circle at 38% 32%,var(--color-gold),color-mix(in srgb,var(--color-gold) 40%,transparent));box-shadow:0 0 14px 1px color-mix(in srgb,var(--color-gold) 75%,transparent),0 0 52px 13px color-mix(in srgb,var(--color-gold) 26%,transparent);touch-action:none}.constellation{width:280px;height:224px;border:none;background:none;touch-action:none;cursor:crosshair}.con-hit{fill:transparent}.con-dot{fill:var(--color-star);transition:fill .2s ease}.con-star.lit .con-dot{fill:var(--color-gold);filter:drop-shadow(0 0 6px var(--color-gold))}.con-label{fill:var(--color-muted);font-size:9px;text-anchor:middle;pointer-events:none}.con-star.lit .con-label{fill:var(--color-gold)}.con-line{stroke:var(--color-gold);stroke-width:1.6;stroke-linejoin:round;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--color-gold) 60%,transparent))}.con-live{stroke:color-mix(in srgb,var(--color-gold) 60%,transparent);stroke-width:1;stroke-dasharray:3 3;opacity:0}.cube-stage{width:130px;height:150px;display:grid;place-items:center;perspective:620px;touch-action:none}.cube{position:relative;width:104px;height:104px;transform-style:preserve-3d;cursor:grab;touch-action:none}.cube-face{position:absolute;width:104px;height:104px;display:grid;place-items:center;font-family:var(--font-display);font-size:.9rem;color:var(--color-star);border:1px solid color-mix(in srgb,var(--color-gold) 50%,transparent);background:color-mix(in srgb,var(--color-ink-2) 62%,transparent);box-shadow:inset 0 0 26px color-mix(in srgb,var(--color-night) 55%,transparent);touch-action:none}.f-front{transform:translateZ(52px)}.f-back{transform:rotateY(180deg) translateZ(52px)}.f-right{transform:rotateY(90deg) translateZ(52px)}.f-left{transform:rotateY(-90deg) translateZ(52px)}.f-top{transform:rotateX(90deg) translateZ(52px)}.f-bottom{transform:rotateX(-90deg) translateZ(52px)}.pour-svg{width:110px;aspect-ratio:120 / 200;touch-action:none;cursor:ns-resize}.beaker-outline{fill:none;stroke:color-mix(in srgb,var(--color-gold) 55%,transparent);stroke-width:2.5}.budget-readout{font-family:var(--font-display);font-size:.7rem;letter-spacing:.03em;color:color-mix(in srgb,var(--color-gold) 85%,transparent);min-height:1em}.budget-extra{display:flex;gap:.3rem}.mini-btn{border-radius:9999px;border:1px solid color-mix(in srgb,var(--color-gold) 30%,transparent);background:color-mix(in srgb,var(--color-ink-2) 60%,transparent);color:var(--color-star);padding:.22rem .55rem;font-size:.68rem;cursor:pointer}.mini-btn:hover{border-color:var(--color-gold)}.mini-btn.gold{background:var(--color-gold);color:var(--color-night);font-weight:600}.cube-picks{display:flex;flex-wrap:wrap;gap:.2rem;justify-content:center;max-width:210px}.cube-pick{font-size:.58rem;padding:.14rem .38rem}.ves-count{font-size:.54rem;letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb,var(--color-gold) 70%,transparent)}.node.guide:before{background:radial-gradient(circle,color-mix(in srgb,var(--color-gold) 22%,transparent) 0%,transparent 70%);animation:guideglow 2.2s ease-in-out infinite}@keyframes guideglow{0%,to{opacity:.4;transform:scale(.94)}50%{opacity:1;transform:scale(1.08)}}.board-scale{position:relative}.brew-shock{fill:none;stroke:var(--color-gold);stroke-width:2.5;filter:drop-shadow(0 0 10px var(--color-gold))}.n-vessel{width:240px;height:240px}.vessel-svg{position:absolute;inset:-10px;width:calc(100% + 20px);height:calc(100% + 20px);pointer-events:none;overflow:visible}.ves-halo{fill:var(--color-gold);opacity:calc(.03 + .15 * var(--charge));filter:blur(16px)}.ves-ring{fill:none;stroke:color-mix(in srgb,var(--color-gold) 60%,transparent);stroke-width:1.5;opacity:calc(.2 + .5 * var(--charge));transform-box:fill-box;transform-origin:center;animation:vbreath 4.5s ease-in-out infinite}@keyframes vbreath{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.ves-ring2{fill:none;stroke:color-mix(in srgb,var(--color-mauve) 55%,transparent);stroke-width:1;stroke-dasharray:4 5;opacity:calc(.2 + .5 * var(--charge));transform-box:fill-box;transform-origin:center;animation:vspin 26s linear infinite}@keyframes vspin{to{transform:rotate(360deg)}}.ves-core{fill:var(--color-gold);filter:drop-shadow(0 0 calc(8px + 16px * var(--charge)) var(--color-gold))}.vessel-body{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;text-align:center;padding:1.4rem}.ves-cap{font-size:.58rem;text-transform:uppercase;letter-spacing:.18em;color:color-mix(in srgb,var(--color-gold) 85%,transparent)}.ves-gift{font-size:.7rem;color:var(--color-star);min-height:2.4rem;display:flex;align-items:center;justify-content:center}.ves-gift .ves-base{font-family:var(--font-display);font-size:1.15rem;color:var(--color-gold);display:block}.ves-gift .ves-prompt{font-size:.74rem;line-height:1.35;color:var(--color-muted);display:block}.ves-gift .ves-prompt b{color:var(--color-gold);font-weight:600}#brew-btn{margin-top:.3rem;cursor:pointer;border-radius:9999px;border:1px solid var(--color-gold);background:color-mix(in srgb,var(--color-gold) 18%,transparent);color:var(--color-star);padding:.35rem .9rem;font-family:var(--font-display);box-shadow:0 0 20px color-mix(in srgb,var(--color-gold) 30%,transparent);transition:opacity .3s ease,box-shadow .3s ease}#board:not([data-ready]) #brew-btn{opacity:.45;box-shadow:none}@keyframes nudge{0%,to{transform:translate(-50%,-50%)}25%{transform:translate(-53%,-50%)}75%{transform:translate(-47%,-50%)}}.node.nudge{animation:nudge .42s ease 2}.node.nudge .n-label{color:var(--color-gold)}#recipe li{line-height:1.3}#recipe .src{color:var(--color-mauve)}.reveal-overlay{position:fixed;inset:0;z-index:50;display:none;flex-direction:column;align-items:center;justify-content:center;gap:.8rem;padding:1.5rem;background:radial-gradient(circle at 50% 44%,color-mix(in srgb,var(--color-mauve) 30%,transparent),color-mix(in srgb,var(--color-night) 86%,transparent) 46%,#050309);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.reveal-overlay[data-state=open]{display:flex;animation:bloomin .55s ease-out}@keyframes bloomin{0%{opacity:0}to{opacity:1}}.reveal-overlay[data-state=open] .gift-deck{animation:bloomup .7s cubic-bezier(.2,.9,.25,1.12)}@keyframes bloomup{0%{opacity:0;transform:scale(.55) translateY(24px);filter:blur(12px)}to{opacity:1;transform:scale(1) translateY(0);filter:blur(0)}}.reveal-overlay[data-state=open] .reveal-title{animation:bloomin 1s ease-out}.reveal-close{position:absolute;top:1rem;right:1.25rem;font-size:1.4rem;color:var(--color-muted);background:none;border:none;cursor:pointer}.reveal-title{font-size:1.3rem;color:var(--color-gold);letter-spacing:.1em;text-shadow:0 0 18px color-mix(in srgb,var(--color-gold) 50%,transparent)}.gift-deck{position:relative;width:260px;height:330px}.gift-card{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;text-align:center;padding:1.2rem;border-radius:1.1rem;border:1px solid color-mix(in srgb,var(--color-gold) 40%,transparent);background:linear-gradient(160deg,color-mix(in srgb,var(--color-ink-2) 94%,transparent),color-mix(in srgb,var(--color-night) 97%,transparent));box-shadow:0 12px 34px color-mix(in srgb,var(--color-night) 75%,transparent);cursor:grab;touch-action:none}.gift-card .gc-cat{font-size:.58rem;text-transform:uppercase;letter-spacing:.12em;color:var(--color-mauve)}.gift-card h3{font-family:var(--font-display);font-size:1.15rem;line-height:1.2}.gift-card .gc-vibe{font-size:.8rem;color:var(--color-gold)}.gift-card a{margin-top:.4rem;border-radius:9999px;background:var(--color-gold);color:var(--color-night);padding:.35rem .9rem;font-size:.8rem;font-weight:600;text-decoration:none}.gift-card .gc-hint{font-size:.58rem;color:var(--color-muted)}.deck-ctrl{display:flex;gap:.6rem}.reveal-recipe{max-width:24rem;font-size:.72rem;color:var(--color-muted);text-align:center;line-height:1.6}@media(prefers-reduced-motion:reduce){.ves-ring,.ves-ring2,.node.guide:before,.board:before,.board:after,.link.lit,.reveal-overlay[data-state=open],.reveal-overlay[data-state=open] .gift-deck{animation:none}}
