/* Frosted print finish: keep the cream/lavender palette and all scene geometry. */
:root{--print-grain:url('/public/textures/print-grain.svg')}

/* A single, fine-scale grain tile is shared by all surfaces. */
.grain,.focus-grain{background-image:var(--print-grain);background-size:160px 160px;background-repeat:repeat;mix-blend-mode:soft-light;opacity:.18}
.focus-grain{position:fixed;opacity:.1}
.ambient-background{background:radial-gradient(ellipse at 12% 5%,#b896701c,transparent 66%),radial-gradient(ellipse at 90% 92%,#ae8cc61a,transparent 64%)}
.ambient-background i{background:radial-gradient(ellipse,#b99b7440,transparent 68%);filter:blur(62px)}
.ambient-background i+i{background:radial-gradient(ellipse,#b59bcf49,transparent 66%)}
.ambient-background:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 74% 8%,#f4e6cb0c,transparent 46%),radial-gradient(ellipse at 8% 78%,#c6abd014,transparent 53%);pointer-events:none}
.stage-glow{background:radial-gradient(ellipse at 48% 40%,#d9bfdc27,#bda4ce22 39%,transparent 73%);filter:blur(18px)}
.orbit{border-color:#d3bbd51d}
.result-screen{background:none}
.result-screen:before{content:'';position:absolute;inset:0 calc((100% - 100vw)/2);pointer-events:none;z-index:-1;background:radial-gradient(ellipse at 36% 45%,#bba0cd24,transparent 64%),radial-gradient(ellipse at 80% 16%,#e9d2ac0c,transparent 60%);mask-image:linear-gradient(transparent,#000 20%,#000 80%,transparent)}
.focus-scene{background:radial-gradient(ellipse at 50% 43%,#ac90c22b,transparent 74%)}
.focus-scene::backdrop{background:#25201d65;backdrop-filter:blur(26px) brightness(.8) saturate(.72);-webkit-backdrop-filter:blur(26px) brightness(.8) saturate(.72)}

/* Translucent panels and lightly textured, uncoated paper controls. */
.editor{isolation:isolate;background:linear-gradient(135deg,#f1e5ce09,#bea0df0b 55%,#211e1a3d);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-color:#dbc6e128;box-shadow:inset 0 1px 0 #f7ead70b,0 14px 40px #17111c12}
.editor:before{content:'';position:absolute;inset:0;border-radius:inherit;background:var(--print-grain) repeat 0 0/140px 140px;opacity:.14;mix-blend-mode:soft-light;pointer-events:none;z-index:-1}
.primary-button,.game-tab[aria-selected=true]{background-image:var(--print-grain),linear-gradient(115deg,#f3e6ce,#e9dac6);background-size:128px 128px,100% 100%;background-blend-mode:soft-light,normal}
.primary-button:before{opacity:.4}
.textarea-wrap{background:#1c18222e;border-color:#d3bec82b}

/* Surface grain lives on the face, never on the 3D transform container. */
.coin-face:after,.wheel-plate:after,.capsule-half:after{content:'';position:absolute;inset:0;border-radius:inherit;background:var(--print-grain) repeat 0 0/120px 120px;opacity:.22;mix-blend-mode:soft-light;pointer-events:none;z-index:3}
.wheel-plate:after{inset:1.2%;border-radius:50%;opacity:.2;z-index:2}
.capsule-top{background:radial-gradient(ellipse at 28% 24%,#eee1d1,#baa5cd 58%,#816b91);box-shadow:inset 8px 10px 28px #fbefdf35}
.capsule-bottom{background:radial-gradient(ellipse at 28% 8%,#ccb3df,#a186b5 48%,#695372);box-shadow:inset -6px -9px 28px #43304e24}
.capsule-half{border-color:#e9d9d15c}
.capsule-half:after{opacity:.25}

/* Ticket ink, washi and character art keep their original shapes and colours. */
.keepsake-ticket{background:#eedfc8;filter:drop-shadow(0 18px 28px #100a153b)}
.keepsake-ticket:before{z-index:5;opacity:.15;background:var(--print-grain) repeat 0 0/140px 140px;mix-blend-mode:multiply}
.keepsake-ticket:after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 96% 8%,#bda1cf55,transparent 57%),radial-gradient(ellipse at 45% 100%,#fff3dc88,transparent 70%)}
.keepsake-art,.keepsake-ladder .keepsake-art{background:radial-gradient(ellipse at 25% 14%,#e2d3e6,#c4afd5 48%,#ac94bd);border-color:#9e80ae55}
.keepsake-art:after{content:'';position:absolute;inset:0;z-index:4;background:var(--print-grain) repeat 0 0/100px 100px;mix-blend-mode:soft-light;opacity:.15;pointer-events:none}
.keepsake-grid{opacity:.55}
.keepsake-tape{opacity:.8}
.keepsake-sticker{box-shadow:0 2px 5px #50345418}
.keepsake-stub{background:linear-gradient(90deg,transparent,#b79ec92b)}

@media(max-width:760px){.grain,.focus-grain{background-size:140px 140px}.grain{opacity:.16}.focus-grain{opacity:.08}}
