/* Sugarbell Village: tactile treats, a living patisserie, and a permanent collection. */
:root { --text: #44334f; --text-soft: #776580; }
body { background: #f5e9f2; }
body::before { background: linear-gradient(110deg, #ffffff12, #f8f1fb88), url('/art/bakery-world.png') center / cover; }
.home-screen { overflow-y: auto; }
.home-top { position: relative; z-index: 1; padding: 1rem 1.5rem; }
.home-inner { width: min(590px, 100%); padding: 1.3rem 2rem 2rem; margin: 0 5% 0 auto; border-radius: 2.5rem; background: linear-gradient(150deg,#fffcf5ee,#fff5f0dc); box-shadow: 0 20px 80px #57305124; backdrop-filter: blur(12px); }
.home-kicker,.eyebrow { display:block; font-size:.68rem; font-weight:600; letter-spacing:.16em; color:#876078; }
.home-kicker { text-align:center; }
.logo { margin: .8rem 0 1.1rem; }
.logo-pieces { height:3rem; gap:.45rem; }
.logo-piece { width:2.7rem;height:2.7rem; }
.logo-title { font-size:clamp(2.6rem,4.3vw,4.2rem); margin:.45rem 0 .25rem; }
.logo-sub { font-size:.8rem; letter-spacing:.2em; }
.menu { width:100%; max-width:none;gap:.7rem; }
.btn { border-radius:1.1rem; box-shadow:0 4px 0 var(--bd),0 7px 15px #68415319; }
.btn.big { background:linear-gradient(160deg,#ff79a4,#ed3b79); min-height:4rem; }
.btn::before { opacity:.5; }
.btn.neutral { background: #fffaf4; }
.btn:focus-visible,button:focus-visible,a:focus-visible { outline:3px solid #6543ae; outline-offset:4px; }
button:disabled { cursor:default; opacity:.55; }
.home-reward { display:block; width:100%; border:1px solid #e8d8e8; background:#fff9; border-radius:1.1rem; padding:.85rem 1rem; margin:1.1rem 0 .65rem; text-align:left; color:var(--text); font:inherit; cursor:pointer; }
.home-reward .eyebrow { margin-bottom:.35rem; }
.reward-ribbon { font-size:.83rem; line-height:1.5; }
.reward-meter { display:block; width:100%; height:8px; margin:.65rem 0 .3rem; border:0; border-radius:8px; overflow:hidden; appearance:none; background:#ece4ee; accent-color:#af75dc; }
.reward-meter::-webkit-progress-bar { background:#ece4ee; border-radius:8px; }
.reward-meter::-webkit-progress-value { background:linear-gradient(90deg,#ed77a0,#9869d9); border-radius:8px; }
.reward-meter::-moz-progress-bar { background:#aa72d4; }
.home-collection-nav { display:flex;gap:.55rem; }
.home-collection-nav .btn { flex:1; font-size:.82rem;min-height:2.9rem;padding:.5rem; }
.editions { width:100%; margin-top:1.6rem; }
.editions-title { text-align:left; font-size:1rem; }
.edition-grid { gap:.65rem; }
.edition-card { border-radius:1rem; box-shadow:none; border:1px solid #e8d7df; }
.edition-card.on { box-shadow:0 0 0 2px #ed6195; }
.edition-name { font-size:.86rem; }
.edition-meta { font-size:.72rem; }
.home-footer { margin:1.3rem 0 0; font-size:.75rem; }
.topbar { background:#fffcf2d9; backdrop-filter:blur(12px); padding:.7rem 1rem; }
.map-path { background:linear-gradient(#e2f2e3b8,#f6dfedcc,#fbedccb8); border-radius:2rem; box-shadow:0 0 45px #fff8; }
.map-treat { width:4rem;height:4rem;background-size:contain;background-repeat:no-repeat;filter:drop-shadow(0 7px 4px #65483529); }
.chapter-banner { min-width:16rem; padding:1.3rem; background:#fffaf1; border:1px solid #fff;box-shadow:0 10px 30px #74516424; }
.chapter-banner.chapter-1 { background:#fff1b9; }
.chapter-banner.chapter-2 { background:#cef3df; }
.chapter-preview { display:block;font-size:.7rem;font-weight:400;margin-top:.45rem; }
.level-node.locked { opacity:.75; }
.game-screen { background:linear-gradient(120deg,#f5eff5e8,#edf6ffd9); padding:1rem; gap:.7rem; }
.hud-mid { background:#fffcf5;box-shadow:0 5px 20px #493b5719; border:1px solid #fff; }
.moves { background:linear-gradient(150deg,#ff79a4,#e63375);box-shadow:0 5px 0 #bb255b; }
.goals { background:#fff9; padding:.5rem; border-radius:1.2rem; }
.goal { background:#fffaf5; }
.board { --tile1:#f8f0fa;--tile2:#e8ddf3;--frame:#fff8f6;--tray:#c8b9d5;background:transparent;border:0;border-radius:1.6rem; }
.board::before { background:var(--tray);border:7px solid var(--frame);box-shadow:0 8px 0 #a68bad,0 20px 50px #53416245; }
.tile { border-radius:20%;box-shadow:inset 0 -3px 0 #d7c9e542; }
.piece-img { inset:4%;filter:drop-shadow(0 4px 2px #56335525); }
.piece.special:not(.hint):not(.selected) .piece-img { animation:charged 1.9s ease-in-out infinite; }
.piece.rainbow:not(.hint):not(.selected) .piece-img { animation:charged 1.6s ease-in-out infinite; }
.game-footer { flex-wrap:wrap; }
.game-reward-status { width:100%;background:#fff9;border:1px solid #fff;border-radius:1rem;padding:.7rem 1rem; }
.game-reward-status .reward-ribbon { font-size:.78rem; }
.combo-label { position:absolute;top:1rem;left:50%;transform:translateX(-50%);z-index:20;pointer-events:none;padding:.55rem 1rem;background:#6c3fac;color:#fff;border:2px solid #fff;border-radius:2rem;box-shadow:0 5px 20px #553a6a44;font-size:.9rem;white-space:nowrap; }
.reward-toast { position:absolute;bottom:1rem;left:50%;transform:translateX(-50%);max-width:90%;width:max-content;padding:.8rem 1.2rem;z-index:100;border-radius:1rem;background:#493259;color:#fff;box-shadow:0 8px 25px #33223e44;pointer-events:none; }
.beam { filter:drop-shadow(0 0 8px #fff) drop-shadow(0 0 16px #b9f1ff);border-radius:999px; }
.win-modal { background:linear-gradient(160deg,#fff9ef,#f8eaff); }
.win-score { font-size:2.1rem; }
.reward-summary { margin-top:.85rem; text-align:left; padding:.8rem; background:#fff9;border-radius:1rem; }
.reward-unlocked { display:flex;gap:.7rem;align-items:center;margin-bottom:.8rem; }
.reward-unlocked .reward-badge { width:2.8rem;height:2.8rem;flex:none;font-size:1.4rem; }
.reward-unlocked small { display:block;font-size:.75rem;margin-top:.2rem; }
.collection-screen { background:linear-gradient(135deg,#fdf6eeeb,#eee5f6ef); }
.collection-tabs { display:flex;justify-content:center;gap:.4rem;padding:.8rem; }
.collection-tabs button { font:inherit;font-size:.9rem;padding:.65rem 1.15rem;border:0;border-radius:1rem;background:transparent;color:#715e7f;cursor:pointer; }
.collection-tabs button.on { background:#60447b;color:#fff;box-shadow:0 4px 15px #5d3b7029; }
.collection-content { overflow-y:auto;padding:1rem 1.2rem 3rem; }
.collection-content > * { max-width:850px;margin-left:auto;margin-right:auto; }
.collection-heading { text-align:center;margin-bottom:1.5rem; }
.collection-heading h1 { font-size:clamp(1.8rem,4vw,2.8rem);margin:.45rem 0;letter-spacing:-.025em; }
.collection-heading p { font-size:.95rem;color:#7e6a86;line-height:1.6; }
.reward-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:1rem; }
.reward-card { background:#fffaf5;border:1px solid #eadfea;border-radius:1.4rem;padding:1.2rem;box-shadow:0 7px 20px #7554890b;margin-bottom:.9rem; }
.reward-card h3 { margin:.8rem 0 .4rem;font-size:1.05rem; }
.reward-card p { color:#806e87;font-size:.85rem;line-height:1.55; }
.reward-card small { font-size:.72rem;color:#806e87; }
.reward-card.unlocked { border-color:#d5aeef;background:linear-gradient(145deg,#fffaf1,#f6eafd); }
.reward-badge { display:grid;place-items:center;width:4rem;height:4rem;color:#fff;background:radial-gradient(circle at 30% 20%,#fff8,var(--badge) 70%);border:4px solid #fff7;border-radius:35%;box-shadow:0 4px 0 color-mix(in srgb,var(--badge),#34243e 25%),0 7px 15px #67407e24;font-size:2rem; }
.unlocked .reward-badge { animation:badge-glow 3s ease-in-out infinite; }
.cosmetics-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem; }
.skin-card { min-height:6rem;border:3px solid transparent;border-radius:1rem;font:inherit;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;color:#473153; }
.skin-card small { font-size:.7rem; }
.skin-card.on { border-color:#8560ae; }
.skin-classic { background:#eadef2; }.skin-golden { background:#fae2a1; }.skin-mint { background:#bde9dc; }.skin-cocoa { background:#5a394b;color:#fff; }
.choice-row { display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem;margin-bottom:1rem; }
.choice-row .chip-btn { padding:.7rem .9rem;border:1px solid #d7c4e1;background:#fff9; }
.choice-row .chip-btn.on { background:#694987;color:#fff; }
.order-total { display:flex;align-items:center;gap:.5rem;padding:1rem 0;color:#7b549c; }
.stamp-row { display:flex;flex-wrap:wrap;gap:.6rem; }
.delivery-stamp { display:flex;gap:.4rem;align-items:center;justify-content:center;padding:1rem;border:2px dashed #d5c7dc;border-radius:50%;color:#afa1b7; }
.delivery-stamp.complete { background:#e7d8f6;border-color:#9871b8;color:#6f4590; }
.bakery-scene { position:relative;height:360px;border-radius:1.7rem;background:url('/art/bakery-world.png') 25% 50% / cover;overflow:hidden;box-shadow:0 15px 30px #52385e29;margin-bottom:1.5rem; }
.bakery-sign { position:absolute;top:1rem;left:1rem;background:#fff5df;color:#685040;padding:.65rem 1.2rem;border-radius:.5rem;border:3px solid #d7a06d;box-shadow:0 4px 0 #865735;font-size:1.15rem; }
.bakery-flowers { position:absolute;bottom:1rem;left:1rem;display:flex;gap:12px; }
.flower { width:26px;height:26px;background:#f562a1;box-shadow:12px 0 #f562a1,-12px 0 #f562a1,0 12px #f562a1,0 -12px #f562a1;border-radius:50%;margin:15px; }
.garden-1 { filter:hue-rotate(130deg); }.garden-2 { filter:hue-rotate(290deg); }
.bakery-counter { position:absolute;right:1rem;bottom:1rem;background:#eb90ae;border:5px solid #fff3e2;border-radius:.9rem;padding:1rem;color:#65334f;box-shadow:0 5px 0 #9f486d;font-size:.8rem; }
.counter-1 { background:#91d4cb; }.counter-2 { background:#eec186; }
.bakery-cat { position:absolute;right:3rem;bottom:5.5rem;width:65px;height:65px;background:#d99c6c;border-radius:40%;border:3px solid #fff0d5;box-shadow:0 4px 0 #946b55; }
.cat-ears::before,.cat-ears::after { content:'';position:absolute;top:-13px;width:25px;height:30px;background:#d99c6c;clip-path:polygon(0 0,100% 55%,10% 100%); }.cat-ears::after {right:0;transform:scaleX(-1);}
.cat-face {position:absolute;inset:18px 0 0;text-align:center;color:#6c4030;}
.recipe-illustration { height:140px;padding:2rem 1rem;display:grid;place-items:center;border-radius:1rem;background:linear-gradient(0deg,#eeb986 25%,#fff0da 25%,#fff0da 45%,#f28aa3 45%,#f28aa3 60%,#fff0da 60%,#fff0da 80%,#f5bda0 80%);color:#683551;text-shadow:0 1px white;font-weight:600; }
html[data-board="golden"] .board {--tile1:#fff3ce;--tile2:#f6e2b0;--tray:#d7b57f;--frame:#fff2d0;}
html[data-board="mint"] .board {--tile1:#e8fff3;--tile2:#c6e9dc;--tray:#96c4b7;--frame:#effff9;}
html[data-board="cocoa"] .board {--tile1:#795467;--tile2:#664557;--tray:#4e3548;--frame:#b596ad;}
html[data-glaze="on"] .piece-img {filter:brightness(1.12) saturate(1.15) drop-shadow(0 2px 3px #fff9);}
@keyframes charged {50% {filter:brightness(1.15) drop-shadow(0 0 7px #fff) drop-shadow(0 0 10px #c882ee);}}
@keyframes badge-glow {50% {box-shadow:0 4px 0 var(--badge),0 0 20px #d7b0f177;}}
@media(min-aspect-ratio:5/4) { .game-screen {grid-template-columns:minmax(230px,290px) 1fr;max-width:1250px;width:100%;margin:auto;padding:1.5rem;gap:1.2rem;} .game-footer {gap:.7rem;} .game-reward-status {order:-1;margin-bottom:.3rem;} .board-wrap {padding:.4rem;} }
@media(max-width:850px) { .home-inner {margin:0 auto;width:min(520px,calc(100% - 24px));padding:1.3rem;} .reward-grid {grid-template-columns:repeat(2,1fr);} .home-top {padding:.7rem;} .cosmetics-grid {grid-template-columns:repeat(2,1fr);} }
@media(max-width:480px) { .home-screen {padding-bottom:1rem;} .logo-title {font-size:2.8rem;} .home-inner {padding:1.15rem;} .home-kicker {font-size:.6rem;} .logo-pieces {height:2.4rem;} .logo-piece {height:2.4rem;width:2.4rem;} .game-screen {padding:.5rem;gap:.4rem;} .game-reward-status {padding:.45rem .7rem;} .game-footer {gap:.4rem;} .game-footer .btn {font-size:.85rem;min-height:2.4rem;} .reward-card {padding:.85rem;} .reward-grid {gap:.65rem;} .collection-content {padding:.7rem .8rem 2rem;} .bakery-scene {height:290px;} .home-collection-nav .btn {font-size:.75rem;} }
@media(max-height:600px) and (min-aspect-ratio:5/4) { .game-screen {padding:.5rem;grid-template-columns:220px 1fr;} .game-footer .btn {min-height:2rem;} .game-reward-status {padding:.4rem;} }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after {animation:none!important;transition:none!important;} }
html.no-effects .piece-img,html.no-effects .reward-badge {animation:none!important;}

/* ---- difficulty, boosters and win streaks ---------------------------------- */
.booster-bar { display:grid; grid-template-columns:repeat(auto-fit,minmax(0,1fr)); gap:.55rem; width:min(26rem,100%); margin:0 auto; }
.booster-btn { position:relative; display:flex; flex-direction:column; align-items:center; gap:.1rem; padding:.45rem .2rem .4rem; border:2px solid #fff; border-radius:1rem; background:#fffd; color:var(--text); font:inherit; font-size:.78rem; font-weight:600; box-shadow:0 4px 0 #d9c7d8,0 8px 16px #53416218; cursor:pointer; transition:transform .12s; }
.booster-btn:active { transform:translateY(3px); box-shadow:0 1px 0 #d9c7d8; }
.booster-icon .icon svg { width:1.55rem; height:1.55rem; }
.booster-icon { color:var(--accent-dark); }
.booster-count { position:absolute; top:-.5rem; right:-.35rem; min-width:1.45rem; height:1.45rem; padding:0 .35rem; display:grid; place-items:center; border-radius:999px; background:var(--accent); color:#fff; font-size:.72rem; box-shadow:0 2px 0 var(--accent-dark); }
.booster-count:empty { display:none; }
.booster-btn.empty { opacity:.6; }
.booster-btn.empty .booster-count { background:#b9adb5; box-shadow:0 2px 0 #978a93; }
.booster-btn.on { background:var(--accent); color:#fff; animation:throb 1s ease-in-out infinite; }
.booster-btn.on .booster-icon { color:#fff; }
.board.aiming { cursor:crosshair; }
.board.aiming .piece-img { animation:aim-wobble .9s ease-in-out infinite; }
@keyframes aim-wobble { 25% { transform:rotate(-5deg); } 75% { transform:rotate(5deg); } }

.tier-badge { display:inline-block; margin-left:.35rem; padding:.05rem .5rem; border-radius:999px; background:#8a5cd6; color:#fff; font-size:.68rem; vertical-align:.1em; }
.tier-badge.super { background:#d9364f; }
.tier-banner { display:flex; align-items:center; justify-content:center; gap:.6rem; margin:0 0 .9rem; padding:.65rem 1rem; border-radius:1rem; background:linear-gradient(135deg,#a77de6,#7a4cc4); color:#fff; font-weight:700; font-size:1.1rem; text-align:left; box-shadow:0 4px 0 #5d3699; }
.tier-banner.super { background:linear-gradient(135deg,#f06b5e,#c92a4c); box-shadow:0 4px 0 #971e39; }
.tier-banner small { display:block; font-size:.78rem; font-weight:600; opacity:.9; }
.tier-banner .icon svg { width:1.8rem; height:1.8rem; }
.streak-bonus, .streak-warning, .win-streak { display:flex; align-items:center; justify-content:center; gap:.35rem; margin:.7rem 0 0; font-weight:600; color:#c4521a; }
.streak-bonus .icon, .streak-warning .icon, .win-streak .icon, .streak-chip .icon { color:#ff7a2f; }
.booster-gifts { display:grid; gap:.45rem; margin-top:.8rem; }
.booster-gift { display:flex; align-items:center; gap:.5rem; padding:.55rem .85rem; border-radius:1rem; background:#fffb; font-weight:600; text-align:left; animation:pop-in .45s .6s both; }
.booster-gift > .icon { color:var(--accent); }
.gift-items { margin-left:auto; display:flex; gap:.6rem; color:var(--accent-dark); }
.gift-item { display:inline-flex; align-items:center; gap:.1rem; }
@keyframes pop-in { from { opacity:0; transform:scale(.8); } }

.chip-row { display:flex; gap:.5rem; margin-left:auto; }
.level-node.hard::after, .level-node.super::after { content:''; position:absolute; inset:-5px; border-radius:50%; border:4px solid #9b6be0; pointer-events:none; }
.level-node.super::after { border-color:#e0405a; }
.node-tier { position:absolute; top:-.55rem; right:-.55rem; width:1.75rem; height:1.75rem; display:grid; place-items:center; border-radius:50%; background:#9b6be0; color:#fff; box-shadow:0 2px 0 #6b3fb0; z-index:2; }
.level-node.super .node-tier { background:#e0405a; box-shadow:0 2px 0 #a52740; }
.node-tier .icon svg { width:1rem; height:1rem; }
.map-chest { position:absolute; top:50%; width:3.3rem; height:3.3rem; display:grid; place-items:center; border-radius:1rem; background:linear-gradient(#ffd66b,#f0a92e); color:#fff; box-shadow:0 5px 0 #c7801b,0 10px 18px #0002; transform:translate(-50%,-50%) rotate(-6deg); animation:chest-bob 3s ease-in-out infinite; }
@keyframes chest-bob { 50% { transform:translate(-50%,-62%) rotate(-6deg); } }
.map-chest .icon svg { width:2rem; height:2rem; }
.map-chest.open { background:linear-gradient(#e6dde2,#cbbdc5); box-shadow:0 5px 0 #a99aa3; animation:none; opacity:.8; }
.difficulty-modal .btn small { font-weight:500; }
@media (min-aspect-ratio:5/4) { .booster-bar { grid-template-columns:repeat(2,1fr); } }
@media (prefers-reduced-motion:reduce) { .map-chest, .board.aiming .piece-img, .booster-btn.on { animation:none; } }

/* ---- signature mechanics ------------------------------------------------------ */
.ghost { position:absolute; left:0; top:0; z-index:3; width:var(--cell); height:var(--cell); background-size:92%; background-repeat:no-repeat; background-position:center; pointer-events:none; filter:drop-shadow(0 4px 6px #3b2b5a55); }
.seed { position:absolute; left:0; top:0; z-index:2; width:var(--cell); height:var(--cell); background-size:52%; background-repeat:no-repeat; background-position:100% 100%; pointer-events:none; filter:drop-shadow(0 2px 2px #0004); }
.tile.conveyor::before { inset:1.5px 0; border-radius:0; box-shadow:inset 0 3px 0 #b9824a70, inset 0 -3px 0 #b9824a70; background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9 6l6 6-6 6' fill='none' stroke='%238b5a2b' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' opacity='.65'/></svg>") no-repeat center/34%, repeating-linear-gradient(90deg, #b9824a38 0 3px, transparent 3px 14px), #ecd3ac; }
.tile.conveyor.left::before { background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M15 6l-6 6 6 6' fill='none' stroke='%238b5a2b' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' opacity='.65'/></svg>") no-repeat center/34%, repeating-linear-gradient(90deg, #b9824a38 0 3px, transparent 3px 14px), #ecd3ac; }
.moves.midnight { background:radial-gradient(circle at 30% 25%, #ffffff55, transparent 45%), linear-gradient(#2b2d6e, #151842); box-shadow:0 4px 0 #0b0c2a, 0 0 18px #ffd43b88; animation:throb 1.2s ease-in-out infinite; }
.moves.midnight .moves-label::after { content:' 🌙'; }
.twist-banner { display:flex; flex-direction:column; gap:.25rem; margin:0 0 .9rem; padding:.7rem 1rem; border-radius:1rem; background:linear-gradient(135deg,#fff3c4,#ffe0ec); border:2px solid #fff; box-shadow:0 4px 0 #e8c9a8; color:var(--text); text-align:left; }
.twist-banner strong { font-size:1.05rem; color:var(--accent-dark); }
.twist-banner strong::before { content:'✨ '; }
.twist-banner span { font-size:.95rem; font-weight:500; line-height:1.35; }
@media (prefers-reduced-motion:reduce) { .moves.midnight { animation:none; } }
.edition-twist { margin-top:.2rem; font-size:.72rem; font-weight:600; color:var(--accent-dark); opacity:.9; }
.upsell-twist { margin:.2rem 0 .6rem; padding:.55rem .8rem; border-radius:.9rem; background:#fff3c4; font-size:.9rem; font-weight:500; text-align:left; }
.tile.icy::before { background:linear-gradient(120deg, transparent 38%, #ffffffcc 42%, transparent 47%, transparent 62%, #ffffff99 65%, transparent 68%), linear-gradient(160deg,#e3f6ff,#8fd0f5); box-shadow:inset 0 0 0 2px #ffffff, inset 0 -5px 10px #3a9ad955; }
.tile.grass::after { background:radial-gradient(circle at 20% 80%, #5fb13d 0 12%, transparent 13%), radial-gradient(circle at 70% 85%, #4f9d31 0 14%, transparent 15%), radial-gradient(circle at 45% 70%, #6cc24a 0 10%, transparent 11%), linear-gradient(#a9e07f, #7cc75a); box-shadow:inset 0 0 0 2px #ffffff66; }
.ant { position:absolute; left:0; top:0; z-index:3; width:var(--cell); height:var(--cell); background-size:58%; background-repeat:no-repeat; background-position:0% 100%; pointer-events:none; filter:drop-shadow(0 2px 2px #0005); }
.darkness { position:absolute; left:0; top:0; z-index:2; width:var(--cell); height:var(--cell); pointer-events:none; border-radius:22%; background:radial-gradient(circle at 50% 42%, #3a2c55d4, #1c1430e8); box-shadow:inset 0 0 0 2px #ffffff22; }
.darkness::after { content:''; position:absolute; inset:28%; opacity:.55; background:no-repeat center/contain url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9 4h6M12 2v2M8 7h8l1 10a3 3 0 0 1-3 3h-4a3 3 0 0 1-3-3z' fill='none' stroke='%23ffd43b' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/></svg>"); }
.lantern-icon { background:no-repeat center/70% url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9 4h6M12 2v2M8 7h8l1 10a3 3 0 0 1-3 3h-4a3 3 0 0 1-3-3z' fill='%23ffd43b' stroke='%23b36b00' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>"), #3a2c55; border-radius:30%; }
.tide-water { position:absolute; left:-6px; right:-6px; top:100%; height:0; z-index:2; pointer-events:none; border-radius:10px 10px 18px 18px; background:linear-gradient(#5ec8f0aa, #1c7fc0cc); box-shadow:inset 0 3px 0 #ffffffaa; transition:height .6s ease, top .6s ease; }
.tide-water.in { animation:waves 2.4s ease-in-out infinite; }
@keyframes waves { 50% { box-shadow:inset 0 6px 0 #ffffffcc; } }
.egg-found { position:absolute; z-index:6; transform:translate(-50%,-50%); background-size:80%; background-repeat:no-repeat; background-position:center; pointer-events:none; animation:egg-pop 1.1s ease-out forwards; }
@keyframes egg-pop { 0% { transform:translate(-50%,-30%) scale(.2); opacity:0; } 30% { transform:translate(-50%,-70%) scale(1.25); opacity:1; } 100% { transform:translate(-50%,-160%) scale(.6); opacity:0; } }
.twist-chip { background:#fff8e6; }
.wheel-icon { font-size:1.3rem; line-height:1; }
@media (prefers-reduced-motion:reduce) { .tide-water.in, .egg-found { animation:none; } }

/* ---- challenges ---------------------------------------------------------------- */
.btn.contest { --b:#8c5cf5; --bd:#5b33c2; }
.party-banner { display:flex; align-items:center; gap:.7rem; width:100%; padding:.8rem 1rem; border:0; border-radius:1.2rem; font:inherit; font-weight:700; font-size:1.1rem; color:#fff; text-align:left; cursor:pointer; background:linear-gradient(120deg,#2b2d6e,#7a3fc4,#d6408a); box-shadow:0 5px 0 #1b1c4a, 0 0 22px #ffd43b66; animation:throb 2.2s ease-in-out infinite; }
.party-banner small { display:block; font-weight:500; font-size:.85rem; opacity:.9; }
.party-emoji { font-size:1.8rem; }
.contest-screen { overflow:hidden; }
.contest-scroll { flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:.4rem 1rem 2.5rem; width:min(38rem,100%); margin:0 auto; background:linear-gradient(150deg,#fffcf5ee,#fff5f0e6); backdrop-filter:blur(10px); border-radius:1.6rem 1.6rem 0 0; }
.contest-loading, .contest-empty { text-align:center; color:var(--text-soft); margin:1rem 0; }
.contest-section { margin:1.2rem 0 .5rem; font-size:1.1rem; color:var(--text); }
.contest-section.party { color:#7a3fc4; }
.contest-week-twist, .contest-perk { margin:.2rem 0 .8rem; font-weight:600; color:var(--accent-dark); }
.contest-next { margin:.6rem 0; padding:.7rem 1rem; border-radius:1rem; background:#ffffffcc; font-weight:600; text-align:center; }
.contest-card { margin:.6rem 0; padding:.9rem 1rem; border-radius:1.2rem; background:#fffdf8; box-shadow:0 4px 0 #e7d6e2, 0 10px 24px #53416214; color:var(--text); }
.contest-card.contest-friday, .contest-card.contest-saturday { background:linear-gradient(135deg,#f6f0ff,#ffe8f3); box-shadow:0 4px 0 #cdb3f0, 0 0 18px #b58cff44; }
.contest-card h3 { margin:0; font-size:1.15rem; }
.contest-card p { margin:.25rem 0; font-size:.95rem; line-height:1.35; }
.contest-card.signin { text-align:center; padding:1.4rem; }
.contest-card.signin .btn { display:inline-flex; margin:.6rem auto; }
.contest-card .small, .modal-text.small { font-size:.85rem; opacity:.8; }
.contest-head { display:flex; gap:.7rem; align-items:flex-start; }
.contest-icon { font-size:2rem; line-height:1; }
.contest-live { color:#c2255c; font-weight:600; }
.contest-stats { display:flex; flex-wrap:wrap; gap:.3rem .9rem; margin:.6rem 0; font-size:.9rem; color:var(--text-soft); }
.contest-stats strong { color:var(--text); }
.contest-buttons { display:grid; grid-template-columns:1fr 1fr; gap:.5rem; }
.contest-buttons .btn { min-height:2.8rem; padding:.4rem .6rem; font-size:1rem; }
.btn.disabled { opacity:.55; }
.contest-card.prizes p { font-size:.9rem; }
.trophy-case { display:grid; grid-template-columns:repeat(auto-fill,minmax(6.2rem,1fr)); gap:.5rem; }
.trophy { display:flex; flex-direction:column; align-items:center; padding:.6rem .3rem; border-radius:1rem; background:#fffdf8; box-shadow:0 3px 0 #e7d6e2; text-align:center; }
.trophy span { font-size:2rem; }
.trophy small { font-size:.72rem; color:var(--text-soft); }
.contest-intro p { margin:.4rem 0; text-align:left; }
.contest-twist { font-size:.9rem; color:var(--accent-dark); }
.contest-note { font-size:.85rem; opacity:.75; }
.contest-rank { margin:.6rem 0; font-size:1.2rem; font-weight:700; color:#7a3fc4; }
.lb-head, .lb-row { display:grid; grid-template-columns:3rem 1fr auto; gap:.5rem; align-items:center; padding:.55rem .9rem; }
.lb-head { font-size:.8rem; font-weight:600; color:var(--text-soft); text-transform:uppercase; letter-spacing:.05em; }
.lb { border-radius:1.1rem; overflow:hidden; background:#fffdf8; box-shadow:0 4px 0 #e7d6e2; }
.lb.me-only { margin-top:.6rem; }
.lb-row { border-bottom:1px solid #f0e4ec; color:var(--text); }
.lb-row:last-child { border-bottom:0; }
.lb-row.me { background:#fff3c4; font-weight:700; }
.lb-rank { font-size:1.1rem; text-align:center; }
.lb-value { font-weight:700; }
.prize-list { display:grid; gap:.5rem; text-align:left; }
.prize-line { display:flex; gap:.7rem; align-items:center; padding:.5rem .8rem; border-radius:1rem; background:#fffb; }
.prize-line strong, .prize-line small { display:block; }
.prize-trophy { font-size:2rem; }
@media (prefers-reduced-motion:reduce) { .party-banner { animation:none; } }
