@font-face{font-family:Vazir;src:url('/fonts/yekanx/woff2/IRANYekanXFaNum-Regular.woff2')}*{box-sizing:border-box}body{margin:0;background:#17142d;color:#f8f0ff;font-family:Vazir,Tahoma,sans-serif;background-image:radial-gradient(ellipse at 70% 10%,#49336d65,transparent 55%)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:#ffffff0a;border:1px solid #ffffff25;border-radius:16px;padding:13px 22px;cursor:pointer;touch-action:manipulation}button:hover{background:#ffffff18}button:disabled{opacity:.5;cursor:wait}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #86efd8;outline-offset:4px}[hidden]{display:none!important}.shell{max-width:1160px;margin:auto;padding:0 28px}header{display:flex;justify-content:space-between;align-items:center;height:90px;font-size:13px}.brand{font-size:25px;font-weight:bold}.brand span{color:#c4a0ff}.hero{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:30px;padding:40px 0 65px}.eyebrow{font-size:12px;letter-spacing:.8px;color:#bfa7ea}h1{font-size:clamp(34px,4.5vw,60px);line-height:1.65;margin:20px 0}em{font-style:normal;color:#d1b1ff}.hero p{color:#c6bed8;line-height:2}.actions{display:flex;gap:12px;margin-top:30px}.primary{background:linear-gradient(135deg,#dcc2ff,#aa80ec);color:#24163e;font-weight:bold;box-shadow:0 8px 30px #af79ff25;border:0}.primary:hover{background:#e1ceff}.muted{font-size:12px}.hero-art{position:relative}.hero-art img{width:100%;height:auto;filter:drop-shadow(0 30px 65px #a281e420)}.hero-art>span{display:block;text-align:center;font-size:12px;color:#b9a8d2}.stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #ffffff18;border-radius:25px;background:#ffffff04;margin-bottom:36px}.stats article{padding:28px;text-align:center;display:grid;gap:12px}.stats strong{font-size:32px;letter-spacing:1px}.stats small,.stats span{font-size:12px;color:#b9adc9}.stats .gold{color:#ffda92}.rankings{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:55px 0}.rankings article{padding:28px;border:1px solid #ffffff15;border-radius:24px;background:#ffffff03}h2{font-size:23px}.player{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid #ffffff0c}.player img{width:36px;height:36px;border-radius:50%}.player strong{margin-right:auto;color:#e2c3ff}.guide{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin:65px 0}.guide b{font-size:12px;color:#a68bc7}.guide p,details{font-size:13px;line-height:2.1;color:#bdb1cf}details{padding:25px;border:1px solid #ffffff15;border-radius:20px}summary{cursor:pointer}footer{padding:35px 0;display:flex;justify-content:space-between;color:#ab9cbd;font-size:12px}#arena{min-height:100dvh;padding:12px;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 35%,var(--world,#312348),#100f21)}.play-shell{width:min(100%,480px);position:relative}.game-top{display:flex;justify-content:space-between;align-items:center;padding:8px 0 22px}.game-top button{font-size:12px;padding:10px}.game-top strong{font-size:22px}.scorebar{display:flex;justify-content:space-around;text-align:center}.scorebar small{font-size:11px;color:#b9a9ce;display:block;margin-bottom:7px}.scorebar b{font-size:26px;font-variant-numeric:tabular-nums}.timer b{color:#ffdf9d}.progress{height:4px;background:#ffffff10;border-radius:4px;margin:18px 12px 24px;overflow:hidden;direction:ltr}.progress i{display:block;background:linear-gradient(90deg,#8cebd0,#cf9fff);height:100%;width:100%;transition:width .3s}.board-wrap{position:relative}#board{display:grid;grid-template-columns:repeat(8,1fr);gap:5px;padding:12px;border:1px solid #bda0f94d;border-radius:24px;background:linear-gradient(145deg,#55406c70,#151329cc);box-shadow:inset 0 2px 2px #ffffff18,0 22px 65px #0005;touch-action:none;user-select:none}.cell{aspect-ratio:1;padding:0;border-radius:10px;border:0;background:#100e244d;position:relative;display:grid;place-items:center}.gem{display:grid;place-items:center;width:75%;height:75%;background:linear-gradient(145deg,color-mix(in srgb,var(--gem) 55%,white),var(--gem) 50%,color-mix(in srgb,var(--gem) 50%,#20113d));box-shadow:inset 2px 3px 2px #ffffff8a,inset -3px -4px 2px #0003,0 5px 8px #0004;clip-path:polygon(28% 0,72% 0,100% 28%,100% 72%,72% 100%,28% 100%,0 72%,0 28%);color:#fff9;font-size:23px;text-shadow:0 1px 3px #0005}.gem:before{content:'';position:absolute;width:14%;height:5%;background:#fff8;transform:translate(-7px,-10px) rotate(-30deg);border-radius:50%}.cell[data-color="1"] .gem{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.cell[data-color="2"] .gem{clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}.cell[data-color="3"] .gem{clip-path:polygon(50% 0,100% 38%,80% 100%,20% 100%,0 38%)}.cell[data-color="4"] .gem{border-radius:50%;clip-path:none}.cell[data-color="5"] .gem{clip-path:polygon(50% 0,62% 32%,98% 35%,72% 59%,82% 96%,50% 75%,18% 96%,28% 59%,2% 35%,38% 32%)}.cell.special .gem{filter:drop-shadow(0 0 5px #fff);color:white}.cell.rainbow .gem{background:conic-gradient(#ff82ac,#ffdf85,#80ebbd,#83c4ff,#b59aff,#ff82ac);border-radius:50%;clip-path:none}.cell.selected{outline:2px solid #fff0c8;background:#ffffff25}.cell.hinted{animation:hint 1s infinite}.cell.pop .gem{animation:appear .35s backwards}.board-caption,.game-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:23px 6px;font-size:11px;color:#b3a1c9}#combo{color:#e4c0ff;font-size:13px}.game-bottom button{padding:10px 20px}.touch-tip{text-align:center;font-size:11px;color:#8f80a6}#particles{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:24px}.spark{position:absolute;left:var(--x);top:var(--y);color:var(--fx,#ffdf99);font-size:22px;animation:spark .65s forwards}#result{position:absolute;inset:0;background:#161127f5;z-index:5;border:1px solid #d2aaff55;border-radius:25px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;padding:25px}#result h2{margin:0}#final-score{font-size:52px;color:#dfc2ff}#result p{font-size:13px;color:#bca8d1}body[data-gems=candy] .gem{border-radius:40%!important;clip-path:none!important}body[data-gems=ice] .gem{filter:brightness(1.2) saturate(.7);box-shadow:inset 3px 4px 3px #fff,inset -4px -5px 5px #75baff}.urgent{color:#ff8eaa!important}@keyframes hint{50%{background:#fff4;transform:scale(.92)}}@keyframes appear{from{transform:translateY(-18px) scale(.3);opacity:.2}to{transform:none;opacity:1}}@keyframes spark{to{transform:translateY(-65px) rotate(90deg) scale(.2);opacity:0}}@media(max-width:700px){.shell{padding:0 20px}header{height:70px;font-size:11px}.brand{font-size:21px}.hero{grid-template-columns:1fr;gap:5px;padding:25px 0 35px}.hero h1{font-size:38px;margin:15px 0}.hero-art{grid-row:1;width:80%;margin:auto}.hero-art>span{display:none}.hero>div:first-child{text-align:center}.hero p{font-size:13px}.actions{justify-content:center;margin-top:20px}.stats{grid-template-columns:1fr}.stats article{padding:20px}.stats article+article{border-top:1px solid #ffffff10}.stats strong{font-size:29px}.rankings,.guide{grid-template-columns:1fr;gap:20px;margin:35px 0}.rankings article{padding:22px}.guide article{padding:12px}footer{gap:10px;font-size:10px}#board{gap:4px;padding:9px;border-radius:20px}.gem{font-size:18px}.scorebar b{font-size:24px}.game-top{padding-bottom:14px}.progress{margin:14px 10px 18px}.board-caption,.game-bottom{margin:16px 4px}}@media(max-height:520px) and (orientation:landscape){.play-shell{width:340px}.game-top{padding:0}.scorebar small{display:none}.scorebar b{font-size:18px}.progress{margin:6px}.board-wrap{width:280px;margin:auto}.board-caption,.game-bottom{margin:5px}.touch-tip{display:none}}@media(prefers-reduced-motion:reduce){*,*:before{animation:none!important;transition:none!important}}

/* Direct manipulation and readable match / collapse / refill feedback. */
#board{isolation:isolate}.cell .gem{pointer-events:none;will-change:transform,opacity;position:relative}.cell.dragging{z-index:10;background:#ffffff14}.cell.dragging .gem{filter:brightness(1.25) drop-shadow(0 10px 9px #0008);transition:none;cursor:grabbing}.cell.drop-target{outline:2px solid #ffe6a4;outline-offset:-2px;background:#ffe6a42b;box-shadow:inset 0 0 15px #ffe6a433}.cell.matching{background:#fff3;box-shadow:0 0 16px #dfbcff70}.score-float{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;z-index:20;padding:9px 18px;border:1px solid #fff2c9aa;border-radius:30px;background:linear-gradient(135deg,#4a2c70ee,#251b45ee);color:#fff0bc;font-size:20px;font-weight:bold;text-shadow:0 2px 6px #0008;box-shadow:0 0 32px #e1acff55;animation:earned 1.25s both;pointer-events:none}.score-bump{display:inline-block;animation:score-bump .45s}#particles{z-index:12}#board{cursor:grab}.cell{cursor:inherit}@keyframes earned{0%{opacity:0;transform:translate(-50%,15px) scale(.65)}18%{opacity:1;transform:translate(-50%,-8px) scale(1.08)}65%{opacity:1;transform:translate(-50%,-30px) scale(1)}100%{opacity:0;transform:translate(-50%,-70px) scale(.95)}}@keyframes score-bump{40%{transform:scale(1.23);color:#ffe3a0;text-shadow:0 0 20px #ffe3a099}}@media(max-width:420px){.score-float{font-size:16px;padding:8px 13px}}@media(prefers-reduced-motion:reduce){.score-float{animation:none;transform:translateX(-50%)}.score-bump{animation:none}}
.match-spark{position:absolute;left:var(--x);top:var(--y);font-size:15px;color:var(--fx,#ffdf99);text-shadow:0 0 8px currentColor;animation:match-spark .65s ease-out both}@keyframes match-spark{0%{opacity:1;transform:translate(-50%,-50%) scale(.4)}25%{opacity:1;transform:translate(calc(-50% + var(--dx)*.4),calc(-50% + var(--dy)*.4)) scale(1.2)}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.1)}}
/* Read the completed shape, build anticipation, then release its energy. */
#board[data-phase=charge] .cell:not(.matching){filter:brightness(.66) saturate(.8);transition:filter .25s}#board .cell.matching{z-index:2;border-radius:11px;background:color-mix(in srgb,var(--match-color,#a9f3df) 23%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--match-color) 70%,white),0 0 19px color-mix(in srgb,var(--match-color) 28%,transparent)}.cell.match-charge:after{content:'';position:absolute;inset:-3px;border:1px solid var(--match-color,#a9f3df);border-radius:13px;pointer-events:none;animation:match-halo 1s ease-out infinite;animation-delay:var(--match-delay,0ms)}.cell.match-charge .gem{animation:match-breathe .7s ease-in-out infinite;animation-delay:var(--match-delay,0ms)}#board[data-match-size="4"] .cell.match-charge:after{border-width:2px}#board[data-match-size="5"] .cell.match-charge:after,#board[data-match-size="6"] .cell.match-charge:after{border-width:2px;box-shadow:0 0 15px #ffb7dd80}.match-celebration{position:absolute;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;padding:13px 19px;max-width:95%;width:max-content;border:1px solid color-mix(in srgb,var(--celebrate) 65%,transparent);border-radius:20px;background:linear-gradient(130deg,#342447f5,#18172bf5);box-shadow:0 12px 40px #0008,0 0 30px color-mix(in srgb,var(--celebrate) 22%,transparent);color:#fff3ff;direction:rtl;animation:celebration-in .38s cubic-bezier(.2,.8,.3,1) both;z-index:24;pointer-events:none}.match-celebration strong{display:block;font-size:17px;line-height:1.8;color:var(--celebrate);white-space:nowrap}.match-celebration small{display:block;font-size:11px;color:#e2d0eb;margin-top:3px}.match-medal{display:grid;place-items:center;flex:0 0 42px;height:45px;border-radius:14px;border:1px solid color-mix(in srgb,var(--celebrate) 60%,transparent);background:radial-gradient(ellipse at top,color-mix(in srgb,var(--celebrate) 30%,transparent),#ffffff04);color:var(--celebrate);font-size:26px;text-shadow:0 0 15px currentColor}.match-celebration[data-tier=four]{border-radius:20px 8px 20px 8px}.match-celebration[data-tier=five]{background:linear-gradient(130deg,#56354ff5,#211b3af5);border-color:#ffd3ec;box-shadow:0 0 40px #ffb1da40,0 15px 40px #0008}.match-celebration.is-leaving{animation:celebration-out .3s both}.match-shockwave{position:absolute;inset:12%;border:3px solid var(--celebrate,#ffe5a2);border-radius:50%;box-shadow:0 0 25px color-mix(in srgb,var(--celebrate) 40%,transparent),inset 0 0 20px color-mix(in srgb,var(--celebrate) 20%,transparent);animation:match-wave .75s ease-out both}.cell.new-special{z-index:3;box-shadow:0 0 22px #ffe1a899,inset 0 0 0 2px #ffefc6;border-radius:12px}.cell.new-special .gem{animation:special-born .7s ease-out both}.cell.new-special:after{content:'✦';position:absolute;right:-3px;top:-7px;color:#fff4c9;font-size:20px;filter:drop-shadow(0 0 5px #ffcd8d);pointer-events:none}.score-float{animation-duration:1.8s;font-size:22px;z-index:25}.match-spark{animation-duration:.9s}.score-bump{animation-duration:.65s}
@keyframes match-breathe{0%,100%{transform:scale(1.04);filter:brightness(1.15)}50%{transform:scale(1.17);filter:brightness(1.5)}}@keyframes match-halo{0%{opacity:.9;transform:scale(.96)}100%{opacity:0;transform:scale(1.22)}}@keyframes celebration-in{from{opacity:0;transform:translate(-50%,-35%) scale(.82)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes celebration-out{to{opacity:0;transform:translate(-50%,-75%) scale(.95)}}@keyframes match-wave{from{opacity:.65;transform:scale(.35)}to{opacity:0;transform:scale(1.5)}}@keyframes special-born{0%{transform:scale(.55);filter:brightness(2)}45%{transform:scale(1.35);filter:brightness(1.7)}75%{transform:scale(.95)}100%{transform:scale(1);filter:brightness(1.1)}}
@media(max-width:420px){.match-celebration{padding:10px 12px;gap:8px;max-width:96%;border-radius:16px}.match-celebration strong{font-size:14px}.match-celebration small{font-size:10px}.match-medal{flex-basis:34px;height:38px;font-size:23px}.score-float{font-size:17px}}@media(max-width:350px){.match-celebration strong{font-size:12px}.match-celebration small{font-size:9px}.match-medal{flex-basis:29px;height:34px}.match-celebration{gap:6px;padding:9px}}@media(prefers-reduced-motion:reduce){#board[data-phase=charge] .cell:not(.matching){filter:none}.cell.match-charge:after{animation:none;opacity:.8;transform:none}.cell.match-charge .gem,.cell.new-special .gem{animation:none}.match-celebration,.match-celebration.is-leaving{animation:none;transform:translate(-50%,-50%)}.match-shockwave{display:none}}
