@import "https://fonts.googleapis.com/css2?family=Fredoka:wght@500;600;700&family=Nunito:wght@700;800&display=swap";:root{--page-bg:#2b1b54;--panel:#180a36b8;--panel-strong:#100828;--cell:#1f1240;--cell-line:#100828;--violet-line:#3d2070;--gold:#fbcc4c;--mint:#7ff3b4;--hot:#ff5d76;--cyan:#72d9ff;--text-soft:#d8c5f4;--shadow:0 24px 58px #0703146b}.app-shell{color:#fff;background:linear-gradient(135deg,#ffffff09 25%,#0000 25%) 0 0/34px 34px,linear-gradient(225deg,#ffffff06 25%,#0000 25%) 0 0/34px 34px,linear-gradient(#342067 0%,#2b1b54 46%,#190b35 100%);place-items:center;height:100vh;min-height:100vh;padding:clamp(12px,3vh,28px);display:grid;overflow:hidden}.app-shell.blast-hit{animation:.22s cubic-bezier(.18,.72,.28,1) screen-kick}.app-shell.combo-mode{background:radial-gradient(circle at 50% 22%,#7ff3b42e,#0000 28%),linear-gradient(135deg,#ffffff09 25%,#0000 25%) 0 0/34px 34px,linear-gradient(225deg,#ffffff06 25%,#0000 25%) 0 0/34px 34px,linear-gradient(#342067 0%,#2b1b54 46%,#190b35 100%)}@keyframes screen-kick{0%,to{transform:translate(0,0)}25%{transform:translateY(-4px)}52%{transform:translate(3px,2px)}74%{transform:translate(-2px,1px)}}.game-column{grid-template-rows:auto auto 1fr auto;align-content:center;gap:clamp(12px,2vh,20px);width:min(100vw - 24px,430px);min-height:min(850px,100vh - 24px);display:grid;position:relative}.topbar{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;min-height:46px;display:grid}.best-pill,.icon-button{color:#fff;background:linear-gradient(#40217a,#291657);border:3px solid #100828d1;box-shadow:0 8px #16092f,0 14px 22px #05020f38}.best-pill{border-radius:12px;justify-content:center;align-items:center;gap:8px;min-width:112px;height:44px;font-size:20px;font-weight:700;display:inline-flex}.trophy{color:var(--gold);text-shadow:0 0 12px #fbcc4c80}.icon-button,.close-button{appearance:none;cursor:pointer;border-radius:12px;place-items:center;display:grid}.icon-button{width:46px;height:46px;font-size:22px;transition:transform .12s,filter .12s}.icon-button:hover,.piece:hover,.skin-tile:hover,.primary-button:hover,.setting-row.action:hover{filter:brightness(1.08)}.icon-button:active,.piece:active,.primary-button:active,.setting-row.action:active{transform:translateY(4px);box-shadow:0 4px #16092f,0 8px 16px #05020f2e}.score-panel{place-items:center;min-height:116px;display:grid;position:relative}.score{color:#fff;text-shadow:0 6px #431f7685,0 12px 26px #08031a7a;font-size:clamp(54px,17vw,76px);font-weight:700;line-height:.9}.score-hint:after{content:"Get 3 in a row to score!";width:max-content;max-width:min(360px,90vw);color:var(--text-soft);font-size:clamp(16px,4.5vw,22px);position:absolute;top:calc(50% + 38px);left:50%;transform:translate(-50%)}.combo-ribbon{color:#10412d;background:linear-gradient(#bfffe3,#58dea1);border:3px solid #100828b3;border-radius:999px;min-width:116px;padding:5px 12px;font-size:16px;font-weight:800;animation:.7s ease-in-out infinite alternate combo-pulse;position:absolute;bottom:0;box-shadow:0 6px #09422e6b,0 0 22px #7ff3b461}.combo-ribbon strong{margin-left:4px}@keyframes combo-pulse{0%{transform:translateY(0)scale(1)}to{transform:translateY(-2px)scale(1.04)}}.grace-dots{opacity:.34;gap:7px;transition:opacity .16s;display:flex;position:absolute;top:0}.grace-dots.active{opacity:1}.grace-dot{background:var(--mint);border-radius:999px;width:12px;height:12px;box-shadow:0 0 12px #7ff3b48c}.grace-dot.used{background:#4b3280;box-shadow:inset 0 2px #ffffff1a}.active-skins{justify-self:center;gap:6px;max-width:160px;min-height:34px;display:inline-flex;overflow:hidden}.floating-banner{z-index:5;color:#3b2269;pointer-events:none;background:#fff7d6;border:3px solid #100828db;border-radius:10px;min-width:92px;max-width:280px;padding:7px 14px;font-size:clamp(16px,4vw,22px);font-weight:800;animation:.72s cubic-bezier(.2,1.5,.28,1) both banner-pop;position:absolute;top:clamp(94px,14vh,124px);left:50%;transform:translate(-50%);box-shadow:0 9px #12082685}.floating-banner.combo{color:#0b6845;background:#d9fff0}.floating-banner.best{background:var(--gold);color:#4b2b00}.floating-banner.danger{color:#fff;background:#ff6d83}.floating-banner.hint{box-shadow:none;color:var(--text-soft);background:0 0;border:0;animation:none;top:clamp(128px,19vh,166px)}@keyframes banner-pop{0%{opacity:0;transform:translate(-50%)translateY(16px)scale(.72)}24%,78%{opacity:1;transform:translate(-50%)translateY(0)scale(1)}to{opacity:0;transform:translate(-50%)translateY(-12px)scale(.9)}}.board-zone{place-items:center;display:grid}.board-frame{aspect-ratio:1;border:4px solid var(--violet-line);width:min(100%,390px);box-shadow:var(--shadow), inset 0 0 0 2px #ffffff0a;background:#100828;border-radius:12px;padding:4px;position:relative}.board-frame.streak-active{border-color:var(--mint);box-shadow:0 0 0 6px #7ff3b424, var(--shadow), inset 0 0 18px #7ff3b42e}.board{grid-template-columns:repeat(5,1fr);gap:2px;width:100%;height:100%;display:grid}.square{appearance:none;border:1px solid var(--cell-line);background:linear-gradient(135deg, #ffffff09, transparent 42%), var(--cell);cursor:pointer;border-radius:7px;place-items:center;padding:0;transition:background .12s,box-shadow .12s,transform .12s;display:grid;position:relative;overflow:hidden}.square:not(.empty){background:radial-gradient(circle at 50% 45%,#ffffff12,#0000 48%),linear-gradient(#ffffff0f,#0000 42%),#251553}.square.highlight{background:linear-gradient(#7ff3b43d,#0000),#322269;box-shadow:inset 0 0 0 3px #7ff3b4db}.square.invalid{animation:.18s linear invalid-shake;box-shadow:inset 0 0 0 3px #ff5d76e6}@keyframes invalid-shake{0%,to{transform:translate(0)}33%{transform:translate(-3px)}66%{transform:translate(3px)}}.hamster{aspect-ratio:1;filter:drop-shadow(0 7px #00000029)drop-shadow(0 12px 18px #0000002e);width:90%;animation:.18s cubic-bezier(.2,1.4,.3,1) both hamster-arrive;display:block;position:relative}.hamster.compact{filter:drop-shadow(0 3px #00000024);width:32px;min-width:32px}.animal-sprite{background-image:url(/assets/animals/animals-sprite.png);background-repeat:no-repeat;background-size:400% 200%;background-position:var(--sprite-x) var(--sprite-y);position:absolute;inset:-6%}@keyframes hamster-arrive{0%{transform:scale(.68)rotate(-7deg)}to{transform:scale(1)rotate(0)}}.explosion{z-index:3;pointer-events:none;animation:.62s steps(7,end) forwards blast-out;position:absolute;inset:-58%}.explosion:before{content:"";background:radial-gradient(circle at 50% 50%, #fffce0 0 11%, #ffdd45 12% 21%, #ff7d34 22% 31%, transparent 32%), conic-gradient(from 0deg, transparent 0 8deg, #fff8c9 9deg 24deg, transparent 25deg 37deg, var(--hot) 38deg 61deg, transparent 62deg 78deg, #ff9f43 79deg 103deg, transparent 104deg 360deg);filter:drop-shadow(0 0 22px #ff7845c7);border-radius:42% 58% 48% 52%;position:absolute;inset:17%}.explosion span{background:var(--accent);border-radius:50%;width:16%;height:16%;animation:.5s ease-out forwards spark;position:absolute;box-shadow:0 0 10px #ffffffb8}.explosion span:first-child{top:42%;left:18%}.explosion span:nth-child(2){background:#fff6ba;top:28%;right:18%}.explosion span:nth-child(3){background:var(--hot);bottom:18%;left:46%}@keyframes blast-out{0%{opacity:0;transform:scale(.35)rotate(-12deg)}18%{opacity:1}to{opacity:0;transform:scale(1.34)rotate(22deg)}}@keyframes spark{to{opacity:0;transform:translateY(-28px)scale(.2)}}.no-space{z-index:4;background:#000000bd;border-radius:8px;place-items:center;animation:.2s both fade-in;display:grid;position:absolute;inset:4px}.no-space h1{color:#fff;text-shadow:0 5px #00000052;margin:0;font-size:clamp(24px,8vw,38px)}.pieces{grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:clamp(10px,3vw,18px);min-height:clamp(98px,17vh,132px);padding:0 4px;display:grid}.piece{appearance:none;cursor:grab;touch-action:none;background:linear-gradient(#ffffff14,#0000),#3d2070;border:3px solid #100828e6;border-radius:12px;place-items:center;width:100%;height:clamp(88px,18vw,116px);transition:transform .12s,filter .12s,box-shadow .12s;display:grid;box-shadow:0 8px #16092f,0 14px 22px #05020f33}.piece.selected{border-color:var(--mint);box-shadow:0 0 0 5px #7ff3b426,0 8px #0f3a31,0 14px 22px #05020f33}.piece.used{visibility:hidden;pointer-events:none}.piece.drag-source{opacity:.34;transform:translateY(6px)scale(.96)}.piece:disabled{cursor:default}.piece-preview{gap:4px;display:grid}.piece-preview.single{grid-template-columns:1fr}.piece-preview.horizontal{background:linear-gradient(#ffffff14,#0000 58%),#251553;border:2px solid #100828;border-radius:10px;grid-template-columns:repeat(2,1fr);gap:0;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff0a}.piece-preview.vertical{grid-template-columns:1fr}.piece-cell{aspect-ratio:1;background:#251553;border:1px solid #100828;border-radius:7px;place-items:center;width:clamp(44px,10vw,58px);display:grid;overflow:hidden}.piece-preview.horizontal .piece-cell{background:0 0;border:0;border-radius:0}.piece-preview.horizontal .piece-cell+.piece-cell{border-left:2px solid #100828}.piece-preview.horizontal .piece-cell .hamster.compact{width:88%}.piece-preview.horizontal .piece-cell .animal-sprite{inset:0}.piece-cell .hamster.compact{width:100%}.piece-cell .animal-sprite{inset:-3%}.piece-preview.vertical .piece-cell{width:clamp(38px,8.3vw,48px)}.drag-ghost{z-index:40;pointer-events:none;opacity:0;width:124px;min-height:88px;transform:translate(calc(var(--drag-x) - 50%), calc(var(--drag-y) - 50%)) scale(.82);background:#3d2070d1;border:3px solid #7ff3b4b8;border-radius:14px;place-items:center;transition:opacity 80ms,transform 80ms;display:grid;position:fixed;top:0;left:0;box-shadow:0 16px 38px #07031461,0 0 26px #7ff3b438}.drag-ghost.active{opacity:1;transform:translate(calc(var(--drag-x) - 50%), calc(var(--drag-y) - 50%)) scale(1)}.gameover-screen,.modal-backdrop{z-index:20;background:linear-gradient(135deg,#ffffff09 25%,#0000 25%) 0 0/34px 34px,linear-gradient(#2b1b54,#17092f);place-items:center;padding:22px;display:grid;position:fixed;inset:0}.gameover-screen{text-align:center;animation:.28s both fade-in}.gameover-screen h1{text-shadow:0 7px #11072a9e;margin:0 0 36px;font-size:clamp(36px,11vw,52px);line-height:1}.go-label{color:#bfa5e9;text-transform:uppercase;font-size:16px}.go-label.gold,.go-score.gold{color:var(--gold);text-shadow:0 0 16px #fbcc4c61}.go-score{margin:4px 0 24px;font-size:clamp(48px,16vw,70px);font-weight:800}.go-best{color:var(--gold);margin:4px 0 34px;font-size:clamp(38px,12vw,56px);font-weight:800}.big-trophy{color:var(--gold);margin-bottom:18px;font-size:74px;animation:.46s cubic-bezier(.2,1.52,.36,1) both trophy-pop}@keyframes trophy-pop{0%{transform:scale(0)rotate(-14deg)}to{transform:scale(1)rotate(0)}}.primary-button{appearance:none;color:#4a2600;cursor:pointer;background:linear-gradient(#ffe27a,#f3ae37);border:3px solid #4e2c82;border-radius:12px;min-width:176px;min-height:54px;font-size:21px;font-weight:800;box-shadow:0 8px #9d5b12,0 14px 26px #00000038}.share-button{appearance:none;color:#062d1e;cursor:pointer;background:linear-gradient(#5fe4a8,#22af73);border:3px solid #ffffff2e;border-radius:12px;min-width:176px;min-height:46px;margin-top:14px;font-size:18px;font-weight:800;box-shadow:0 7px #0f6d48,0 13px 24px #0003}.share-button:active{transform:translateY(4px);box-shadow:0 3px #0f6d48,0 8px 16px #0000002e}.modal-backdrop{z-index:30;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#080316b8;animation:.16s both fade-in}.modal-card{color:#341d55;background:linear-gradient(#f8f1df,#eadab7);border:4px solid #4e2c82;border-radius:14px;width:min(100%,390px);max-height:min(760px,100vh - 34px);overflow:auto;box-shadow:0 22px #0b051d70,0 34px 70px #00000059}.modal-header{border-bottom:3px solid #4e2c8229;justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:14px 16px 10px;display:flex}.modal-header h2{margin:0;font-size:clamp(22px,6vw,28px)}.close-button{color:#341d55;background:#fff7df;border:3px solid #4e2c8257;width:38px;height:38px;font-size:28px}.setting-row{color:#341d55;background:#ffffff7a;border:3px solid #4e2c8229;border-radius:12px;grid-template-columns:38px 1fr auto;align-items:center;gap:12px;width:calc(100% - 28px);min-height:60px;margin:12px 14px;padding:10px 12px;display:grid}.setting-row.action{cursor:pointer;text-align:left}.setting-row span{color:#fff;background:#3d2070;border-radius:9px;place-items:center;width:32px;height:32px;display:grid}.setting-row strong{font-size:18px}.setting-row em{font-size:28px;font-style:normal}.setting-row input[type=checkbox]{accent-color:#3d2070;width:24px;height:24px}.slider-row{grid-template-columns:38px minmax(86px,.8fr) minmax(110px,1.2fr)}.setting-row input[type=range]{accent-color:#3d2070;width:100%}.skins-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px;display:grid}.skin-tile{appearance:none;color:#341d55;cursor:pointer;background:#ffffff7a;border:3px solid #4e2c8229;border-radius:12px;align-content:center;justify-items:center;gap:8px;min-height:138px;display:grid;position:relative}.skin-tile .hamster{width:68px}.skin-tile span{width:100%;padding:0 4px;font-size:15px}.skin-tile i{color:#fff;background:#3d2070;border-radius:999px;place-items:center;width:24px;height:24px;font-style:normal;display:grid;position:absolute;top:8px;right:8px}.skin-tile.selected{background:#fff7df;border-color:#3d2070;box-shadow:inset 0 0 0 3px #3d207014}.previewship-badge{right:max(14px, env(safe-area-inset-right));bottom:max(14px, env(safe-area-inset-bottom));z-index:19;color:#ffffffeb;max-width:calc(100vw - 28px);min-height:38px;text-shadow:none;white-space:nowrap;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#000000d1;border:1px solid #ffffff1a;border-radius:999px;justify-content:center;align-items:center;padding:8px 16px;font-size:15px;font-weight:700;line-height:1;text-decoration:none;transition:transform .16s,background .16s,box-shadow .16s;display:inline-flex;position:fixed;box-shadow:0 14px 34px #00000052}.previewship-badge:hover{background:#000000eb;transform:translateY(-2px);box-shadow:0 16px 38px #0006}.previewship-badge:active{transform:translateY(1px)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (height<=760px){.game-column{gap:10px}.score-panel{min-height:86px}.score{font-size:clamp(42px,12vh,62px)}.score-hint:after{font-size:16px;top:calc(50% + 28px)}.pieces{min-height:86px}.piece{height:clamp(76px,15vh,94px)}.piece-cell{width:clamp(34px,8vh,46px)}}@media (width<=370px){.app-shell{padding-inline:8px}.game-column{width:min(100vw - 16px,430px)}.best-pill{min-width:94px}.skins-grid{grid-template-columns:1fr}.previewship-badge{right:max(8px, env(safe-area-inset-right));bottom:max(8px, env(safe-area-inset-bottom));min-height:32px;padding:7px 11px;font-size:12px}}@media (width<=560px){.previewship-badge{right:max(8px, env(safe-area-inset-right));bottom:max(8px, env(safe-area-inset-bottom));min-height:32px;padding:7px 12px;font-size:0}.previewship-badge:after{content:"PreviewShip";font-size:12px}.app-shell{height:100dvh;min-height:100dvh;padding:max(8px, env(safe-area-inset-top)) 8px calc(46px + max(8px, env(safe-area-inset-bottom))) 8px;align-items:stretch}.game-column{grid-template-rows:auto auto minmax(0,1fr) auto;align-content:stretch;gap:clamp(6px,1.25dvh,10px);width:min(100%,430px);height:100%;min-height:0;margin:0 auto}.topbar{gap:8px;min-height:40px}.best-pill{border-width:2px;border-radius:11px;min-width:94px;height:40px;font-size:18px;box-shadow:0 6px #16092f,0 10px 18px #05020f33}.icon-button{border-width:2px;border-radius:11px;width:40px;height:40px;font-size:20px;box-shadow:0 6px #16092f,0 10px 18px #05020f33}.active-skins{gap:4px;max-width:132px;min-height:28px}.active-skins .hamster.compact{width:28px;min-width:28px}.score-panel{min-height:clamp(58px,11.5dvh,92px)}.score{font-size:clamp(44px,16vw,68px)}.score-hint:after{max-width:calc(100vw - 32px);font-size:clamp(14px,4vw,18px);top:calc(50% + 28px)}.grace-dot{width:10px;height:10px}.combo-ribbon{border-width:2px;min-width:96px;padding:4px 10px;font-size:14px}.board-zone{min-height:0}.board-frame{border-width:3px;border-radius:11px;align-self:center;width:min(100vw - 20px,100dvh - 238px,390px);min-width:min(100%,236px);max-width:100%;padding:3px}.board{gap:2px}.square{border-radius:6px}.pieces{gap:clamp(8px,2.4vw,12px);height:clamp(72px,14.5dvh,104px);min-height:0;padding:0 2px}.piece{border-width:2px;border-radius:11px;height:100%;min-height:72px;box-shadow:0 6px #16092f,0 10px 18px #05020f33}.piece-cell{width:clamp(34px,10vw,48px)}.piece-preview.vertical .piece-cell{width:clamp(30px,8.5vw,40px)}.piece-preview.horizontal{border-width:2px;border-radius:9px}.piece-preview.horizontal .piece-cell+.piece-cell{border-left-width:2px}.drag-ghost{width:108px;min-height:78px}.previewship-badge{z-index:18}}@media (width<=380px) and (height<=680px){.app-shell{padding-bottom:calc(38px + max(6px, env(safe-area-inset-bottom)))}.score-panel{min-height:56px}.score{font-size:clamp(40px,15vw,58px)}.score-hint:after{top:calc(50% + 24px)}.board-frame{width:min(100vw - 18px,100dvh - 220px,360px)}.pieces{height:clamp(68px,13.5dvh,88px)}.piece{min-height:68px}}@media (orientation:landscape) and (height<=560px){.app-shell{height:100dvh;min-height:100dvh;padding:max(8px, env(safe-area-inset-top)) calc(74px + max(8px, env(safe-area-inset-right))) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left))}.game-column{grid-template:"top board score""pieces board score"minmax(0,1fr)/minmax(118px,.82fr) minmax(236px,auto) minmax(116px,.82fr);justify-content:center;align-items:stretch;gap:8px;width:100%;max-width:900px;height:100%;min-height:0;display:grid}.topbar{grid-area:top;grid-template-columns:1fr auto;align-self:start}.topbar .active-skins{display:none}.score-panel{grid-area:score;align-self:center;min-height:0}.score{font-size:clamp(40px,12dvh,66px)}.score-hint:after{white-space:normal;max-width:150px;top:calc(50% + 30px)}.board-zone{grid-area:board}.board-frame{width:min(100dvh - 22px,390px);min-width:236px}.pieces{grid-area:pieces;grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:1fr;gap:8px;height:100%;min-height:0}.piece{height:100%;min-height:0}.piece-cell{width:clamp(32px,10dvh,48px)}.piece-preview.vertical .piece-cell{width:clamp(28px,8dvh,38px)}.previewship-badge{right:max(8px, env(safe-area-inset-right));bottom:max(8px, env(safe-area-inset-bottom))}}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}html{overscroll-behavior:none;background:#2b1b54}body{color:#fff;touch-action:manipulation;-webkit-user-select:none;user-select:none;min-width:320px;font-family:Fredoka,Nunito,system-ui,sans-serif;line-height:1.2;overflow-x:hidden}button,input{font:inherit}
