:root{--bg:#080d1c;--bg-glow-a:#1b2c63;--bg-glow-b:#3a1a5a;--card:#131c34;--card-2:#1b2542;--line:#2a3559;--ink:#eef2ff;--ink-dim:#9fadd4;--ink-faint:#6b7aa3;--accent:#4fe0cf;--accent-ink:#04231f;--warn:#ffb02e;--danger:#ff6b81;--radius-lg:22px;--radius-md:14px;--radius-sm:9px;--shadow-card:0 18px 40px -24px #000000e6, 0 2px 0 #ffffff08 inset;--dur-fast:.12s;--dur:.22s;--dur-slow:.42s;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-reduced-motion:reduce){:root{--dur-fast:1ms;--dur:1ms;--dur-slow:1ms}}:root[data-motion=reduced]{--dur-fast:1ms;--dur:1ms;--dur-slow:1ms}:root[data-motion=reduced] *,:root[data-motion=reduced] :before,:root[data-motion=reduced] :after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}*{box-sizing:border-box}button,.tile{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}html,body,#root{overscroll-behavior:none;min-height:100%}body{background:radial-gradient(120% 80% at 12% -10%, var(--bg-glow-a) 0%, transparent 55%), radial-gradient(110% 70% at 96% 4%, var(--bg-glow-b) 0%, transparent 50%), var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;background-attachment:fixed;margin:0;font:16px/1.5 Inter,Segoe UI,system-ui,-apple-system,Helvetica Neue,sans-serif}h1,h2,h3{letter-spacing:-.02em;margin:0;line-height:1.15}p{margin:0 0 .75em}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}.app{min-height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex}.screen{flex-direction:column;flex:1;gap:clamp(9px,2vw,14px);width:100%;max-width:560px;margin:0 auto;padding:clamp(10px,3vw,24px) clamp(10px,4vw,20px) 24px;display:flex}.screen--levels{max-width:880px}.screen--title{justify-content:center;max-width:520px}.screen__head{align-items:center;gap:12px;display:flex}.screen__title{text-align:center;flex:1;font-size:1.5rem}.screen__spacer{width:84px}.card{background:linear-gradient(180deg, var(--card-2), var(--card));border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:16px}.button{appearance:none;border:1px solid var(--line);background:var(--card-2);color:var(--ink);font:inherit;border-radius:var(--radius-md);cursor:pointer;min-height:44px;transition:transform var(--dur-fast) ease, background var(--dur-fast) ease, border-color var(--dur-fast) ease;padding:11px 16px;font-weight:600}.button:hover:not(:disabled){background:#222e51;border-color:#3a4a7d}.button:active:not(:disabled){transform:translateY(1px)}.button:disabled{opacity:.42;cursor:not-allowed}.button--primary{background:linear-gradient(180deg, #66f0de, var(--accent));color:var(--accent-ink);border-color:#7ff6e6}.button--primary:hover:not(:disabled){background:linear-gradient(#7df6e6,#55e6d5);border-color:#9ffff2}.button--danger{color:#2a0710;background:linear-gradient(#ff8496,#f2506e);border-color:#ff9aa9}.button--ghost{color:var(--ink-dim);background:0 0;border-color:#0000}.button--ghost:hover:not(:disabled){color:var(--ink);background:#ffffff0f;border-color:#0000}.button--big{min-height:54px;padding:15px 20px;font-size:1.05rem}.button--small{min-height:36px;padding:7px 12px;font-size:.85rem}.icon-button{appearance:none;border:1px solid var(--line);background:var(--card-2);width:44px;height:44px;color:var(--ink);cursor:pointer;transition:background var(--dur-fast) ease;border-radius:50%;place-items:center;font-size:1.1rem;line-height:1;display:grid}.icon-button:hover{background:#222e51}.title-card{text-align:center;flex-direction:column;align-items:center;gap:16px;padding:clamp(22px,6vw,34px);display:flex}.title-drops{gap:8px;display:flex}.title-drops__drop{border-radius:50% 50% 50% 12%;width:15px;height:15px;animation:2.6s ease-in-out infinite drop-bob;transform:rotate(45deg);box-shadow:0 0 14px -2px}@keyframes drop-bob{0%,to{transform:rotate(45deg)translateY(0)}50%{transform:rotate(45deg)translateY(-6px)}}.title{font-size:clamp(2.4rem,12vw,3.4rem);font-weight:800}.title__accent{background:linear-gradient(120deg, var(--accent), #7c8cff 60%, #d778ff);color:#0000;-webkit-background-clip:text;background-clip:text}.title__tag{color:var(--ink-dim);max-width:34ch;margin:0}.title__actions{flex-direction:column;gap:10px;width:100%;max-width:320px;display:flex}.title__stats{color:var(--ink-faint);margin:0;font-size:.88rem}.level-grid{grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.level-card{text-align:left;width:100%;min-height:128px;font:inherit;color:var(--ink);background:linear-gradient(180deg, var(--card-2), var(--card));border:1px solid var(--line);border-radius:var(--radius-md);cursor:pointer;transition:transform var(--dur-fast) ease, border-color var(--dur-fast) ease;flex-direction:column;align-items:flex-start;gap:4px;padding:14px;display:flex;position:relative;overflow:hidden}.level-card:after{content:"";background:var(--tile-color,#444);opacity:.16;filter:blur(6px);border-radius:50%;width:120px;height:120px;position:absolute;inset:auto -30% -60% auto}.level-card:hover:not(:disabled){border-color:#40538c;transform:translateY(-2px)}.level-card.is-done{border-color:color-mix(in srgb, var(--tile-color) 45%, var(--line))}.level-card.is-locked{cursor:not-allowed;opacity:.55;justify-content:center;align-items:center}.level-card__num{color:var(--ink-faint);letter-spacing:.08em;font-size:.78rem;font-weight:700}.level-card__name{font-size:1.02rem;font-weight:700}.level-card__meta{color:var(--ink-dim);align-items:center;gap:6px;margin-top:auto;font-size:.78rem;display:flex}.level-card__target{color:var(--tile-color);line-height:0}.level-card__target>svg{width:13px;height:13px}.level-card__badge{letter-spacing:.09em;text-transform:uppercase;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 40%, transparent);border-radius:999px;padding:2px 7px;font-size:.62rem;position:absolute;top:10px;right:10px}.level-card__lock{color:var(--ink-faint)}.stars{color:var(--ink-faint);gap:2px;display:inline-flex}.stars__pip{font-size:.95rem}.stars--lg .stars__pip{font-size:2.1rem}.stars__pip.is-earned{color:var(--warn);text-shadow:0 0 12px color-mix(in srgb, var(--warn) 55%, transparent)}.hud{flex-direction:column;gap:10px;padding:10px 12px 12px;display:flex}.hud__top{align-items:center;gap:10px;display:flex}.hud__title{flex-direction:column;flex:1;align-items:center;line-height:1.2;display:flex}.hud__level{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);font-size:.7rem}.hud__name{font-size:1.05rem;font-weight:700}.hud__stats{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}@media (width>=430px){.hud__stats{grid-template-columns:repeat(4,1fr)}}.stat{border:1px solid var(--line);border-radius:var(--radius-sm);background:#ffffff0a;flex-direction:column;gap:1px;min-width:0;padding:7px 9px;display:flex}.stat__label{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:.66rem}.stat__value{white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:1rem;font-weight:700;display:flex;overflow:hidden}.stat--warn{border-color:color-mix(in srgb, var(--warn) 45%, var(--line))}.stat--warn .stat__value{color:var(--warn)}.stat--target{border-color:color-mix(in srgb, var(--target-color,var(--accent)) 55%, var(--line));background:color-mix(in srgb, var(--target-color,var(--accent)) 10%, transparent)}.target-chip{background:var(--target-color,var(--accent));color:#000000b8;border-radius:6px;flex:none;place-items:center;width:20px;height:20px;display:inline-grid;position:relative}.target-chip>svg{width:12px;height:12px}.target-chip__dot{border-radius:6px;position:absolute;inset:0;box-shadow:inset 0 0 0 2px #ffffff40}.hud__combo{color:var(--accent);text-align:center;margin:0;font-size:.85rem;font-weight:700}.hint{border-left:3px solid var(--accent);align-items:center;gap:12px;padding:9px 12px;display:flex}.hint p{color:var(--ink-dim);flex:1;margin:0;font-size:.85rem}.board-wrap{width:100%;max-width:min(100%,64vh);margin:0 auto;position:relative}.board{border:1px solid var(--line);border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-card);background:#0408148c;gap:clamp(2px,.7vw,4px);padding:clamp(5px,1.4vw,9px);display:grid}.board--shuffling{animation:board-shake var(--dur-slow) ease}@keyframes board-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)rotate(-.35deg)}60%{transform:translate(4px)rotate(.35deg)}}.tile{touch-action:manipulation;background:linear-gradient(160deg, var(--tile-color), var(--tile-shade));color:var(--tile-ink);aspect-ratio:1;transition:background var(--dur) ease, box-shadow var(--dur) ease, transform var(--dur-fast) ease;border-radius:clamp(4px,1.1vw,8px);place-items:center;display:grid;position:relative}.tile--void{box-shadow:none;background:0 0}.tile__face{place-items:center;width:100%;height:100%;display:grid;position:relative}.tile__glyph{opacity:.5;place-items:center;line-height:0;display:grid;position:absolute;inset:0}.tile__glyph>svg{width:34%;height:auto}.tile.is-owned{box-shadow:0 0 0 2px #ffffff8c inset, 0 0 12px -2px var(--tile-color);filter:saturate(1.15)brightness(1.08)}.tile.is-owned .tile__glyph{opacity:.85}.tile.is-origin:after{content:"";border:2px solid #fffc;border-radius:50%;position:absolute;inset:26%}.tile.is-pickable{cursor:pointer}@media (hover:hover){.tile.is-pickable:hover{box-shadow:0 0 0 2px #ffffffbf inset, 0 4px 14px -4px var(--tile-color);z-index:2;transform:scale(1.07)}.tile.is-pickable:hover .tile__glyph{opacity:.9}}.tile.is-pickable:active{transform:scale(.94)}.tile.is-fresh{animation:tile-pop var(--dur-slow) cubic-bezier(.3, 1.5, .5, 1);z-index:1}@keyframes tile-pop{0%{filter:brightness(1.9);transform:scale(.62)}60%{transform:scale(1.08)}to{transform:scale(1)}}.tile.is-locked{color:#8b96b8;background:repeating-linear-gradient(45deg,#2c3350,#2c3350 4px,#333b5c 4px 8px);box-shadow:inset 0 0 0 1px #414c73}.tile__badge{color:#000000c7;filter:drop-shadow(0 0 2px #ffffff73);place-items:center;display:grid;position:absolute;top:5%;left:5%}.tile__badge svg{width:clamp(8px,2.1vw,15px);height:auto}.tile__badge--shuffle{animation:5s linear infinite badge-spin}@keyframes badge-spin{0%,70%{transform:rotate(0)}85%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.tile__group{font-size:clamp(6px,1.5vw,10px);font-weight:800;line-height:1;position:absolute;bottom:3%;right:7%}.tile__glyph--lock{opacity:1;place-items:center;position:absolute;inset:0}.tile__glyph--lock svg{width:clamp(9px,2.3vw,16px);height:auto}.flash{color:var(--accent);text-shadow:0 2px 14px #000c;pointer-events:none;font-size:1.35rem;font-weight:800;animation:1s forwards flash-rise;position:absolute;top:6px;right:10px}.flash em{color:var(--warn);font-size:.85em;font-style:normal}@keyframes flash-rise{0%{opacity:0;transform:translateY(10px)scale(.85)}22%{opacity:1;transform:translateY(0)scale(1)}75%{opacity:1}to{opacity:0;transform:translateY(-16px)}}.toast{background:var(--card-2);border:1px solid var(--line);color:var(--ink-dim);animation:toast-in var(--dur) ease;border-radius:999px;align-self:center;padding:7px 15px;font-size:.85rem;font-weight:600}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.live{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:0;position:absolute;overflow:hidden}.palette{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.swatch{appearance:none;min-width:0;max-width:130px;font:inherit;cursor:pointer;border-radius:var(--radius-md);background:linear-gradient(170deg, var(--tile-color), var(--tile-shade));min-height:64px;color:var(--tile-ink);transition:transform var(--dur-fast) ease, box-shadow var(--dur-fast) ease, opacity var(--dur-fast) ease;border:2px solid #ffffff29;flex-direction:column;flex:72px;justify-content:center;align-items:center;gap:1px;padding:7px 5px 5px;display:flex;position:relative;box-shadow:0 6px 16px -10px #000000e6}.swatch:hover:not(:disabled){box-shadow:0 12px 20px -12px var(--tile-color);transform:translateY(-3px)}.swatch:active:not(:disabled){transform:translateY(0)scale(.97)}.swatch:disabled{cursor:not-allowed}.swatch.is-current{opacity:.42;filter:grayscale(.35)}.swatch.is-target{box-shadow:0 0 0 2px #00000059, 0 8px 20px -12px var(--tile-color);border-color:#ffffffe6}.swatch.is-target:after{content:"target";letter-spacing:.1em;text-transform:uppercase;background:var(--ink);color:var(--bg);border-radius:999px;padding:2px 7px;font-size:.58rem;font-weight:800;position:absolute;top:-8px;left:50%;transform:translate(-50%)}.swatch__key{opacity:.55;font-size:.6rem;font-weight:800;position:absolute;top:5px;left:7px}.swatch__glyph{line-height:0}.swatch__glyph>svg{width:22px;height:22px}.swatch__name{font-size:.8rem;font-weight:700}.swatch__count{opacity:.7;font-size:.68rem;font-weight:700}.controls{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.controls .button{padding-inline:8px;font-size:.92rem}.scrim{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:20;animation:fade-in var(--dur) ease;background:#040712b8;place-items:center;padding:16px;display:grid;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.modal{background-color:var(--card);background-image:linear-gradient(180deg, var(--card-2), var(--card));border:1px solid var(--line);border-radius:var(--radius-lg);width:min(100%,460px);max-height:min(88dvh,760px);animation:modal-in var(--dur) cubic-bezier(.2, 1.2, .4, 1);overflow:auto;box-shadow:0 30px 70px -30px #000000f2}@keyframes modal-in{0%{opacity:0;transform:translateY(14px)scale(.97)}}.modal--win{border-color:color-mix(in srgb, var(--accent) 45%, var(--line))}.modal--loss{border-color:color-mix(in srgb, var(--danger) 45%, var(--line))}.modal__head{align-items:center;gap:12px;padding:16px 16px 0;display:flex}.modal__head h2{flex:1;font-size:1.3rem}.modal__body{color:var(--ink-dim);padding:14px 18px 4px}.modal__body strong{color:var(--ink)}.modal__foot{background:linear-gradient(180deg, transparent, var(--card) 40%);flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:14px 16px 16px;display:flex;position:sticky;bottom:0}.rules{flex-direction:column;gap:10px;margin:0 0 4px;padding-left:1.15em;display:flex}.rules__warn{color:var(--ink)}.rules__warn strong{color:var(--warn)}.rules__subhead{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin:18px 0 8px;font-size:.72rem}.specials{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.specials li{align-items:flex-start;gap:10px;display:flex}.specials__mark{border-radius:var(--radius-sm);color:#06121b;flex:none;place-items:center;width:34px;height:34px;display:grid}.specials__mark--key{background:linear-gradient(160deg,#ffb02e,#d98a11)}.specials__mark--shuffle{background:linear-gradient(160deg,#d778ff,#a94ad1)}.legend-tile{border-radius:var(--radius-sm);flex:none;width:34px;height:34px}.legend-tile .tile__glyph{opacity:.55}.specials__mark--lock{color:#8b96b8;background:repeating-linear-gradient(45deg,#2c3350,#2c3350 4px,#333b5c 4px 8px)}.keys{flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;font-size:.9rem;list-style:none;display:flex}kbd{text-align:center;border:1px solid var(--line);min-width:22px;color:var(--ink);background:#ffffff0f;border-bottom-width:2px;border-radius:6px;padding:2px 6px;font:600 .8rem/1.3 ui-monospace,SFMono-Regular,Menlo,monospace;display:inline-block}.result{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.result__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;margin:0;display:grid}.result__grid>div{border:1px solid var(--line);border-radius:var(--radius-sm);background:#ffffff0a;padding:8px}.result__grid dt{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:.66rem}.result__grid dd{color:var(--ink);margin:2px 0 0;font-size:1.05rem;font-weight:800}.result__note{margin:0;font-size:.85rem}.result__note--dim{color:var(--ink-faint)}.result__reason{color:var(--ink);font-size:1rem}.settings{flex-direction:column;gap:14px;margin-bottom:12px;display:flex}.settings__row{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.settings__row small{color:var(--ink-faint);font-size:.8rem;display:block}.settings__row strong{color:var(--ink)}.settings__row--group{border:1px solid var(--line);border-radius:var(--radius-sm);flex-direction:column;gap:6px;margin:0;padding:10px 12px}.settings__row--group legend{padding:0 4px}.settings__radio{cursor:pointer;align-items:center;gap:8px;font-size:.9rem;display:flex}input[type=checkbox],input[type=radio]{width:20px;height:20px;accent-color:var(--accent);flex:none;margin:1px 0 0}.update-toast{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));z-index:20;background:var(--card-2);border:1px solid var(--line);border-radius:var(--radius-md);width:min(100vw - 24px,420px);box-shadow:var(--shadow-card);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex;position:fixed;transform:translate(-50%)}.update-toast__text{color:var(--ink-dim);font-size:.9rem}.update-toast__actions{gap:8px;margin-left:auto;display:flex}@media (width>=700px){.screen--game{max-width:620px}.swatch{min-height:76px}}
