@font-face{font-family:Roboto;font-style:normal;font-weight:100 900;font-display:swap;src:url(./roboto-latin-ccAYIvAh.woff2) format("woff2")}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:swap;src:url(./noto-sans-sc-BDBqhUld.woff2) format("woff2")}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Roboto,Noto Sans SC,system-ui,-apple-system,Segoe UI,sans-serif;background:#17151a;color:#e6e1e5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior-y:none}button,input{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.45}h1,h2,p{margin:0}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.app{position:relative;width:100%;max-width:560px;min-height:100dvh;margin:0 auto;background:var(--bg);color:var(--on-bg);transition:background-color .25s ease;overflow-x:hidden}.app--game{max-width:none}@media(min-width:640px){.app{box-shadow:0 0 60px #00000059}}.screen{display:flex;flex-direction:column;width:100%;min-height:100dvh}.main-screen{padding:max(32px,env(safe-area-inset-top)) 32px calc(48px + env(safe-area-inset-bottom))}.app-header{display:flex;align-items:center;gap:4px;margin:0 4px 16px;color:var(--on-surface-variant)}.app-header__logo{display:flex;align-items:center;padding:4px}.app-header__name{font-size:20px;font-weight:700;letter-spacing:normal;text-transform:uppercase;line-height:1.2}.card{position:relative;border-radius:12px;background:var(--surface-variant)}.card--outlined{background:transparent;border:2px solid var(--primary)}.new-game-card{padding:0}.main-screen .card+.card{margin-top:12px}.continue-button{display:flex;align-items:center;gap:8px;width:calc(100% - 8px);min-height:49px;margin:4px 4px 0;padding:0 16px;border:0;border-radius:8px;background:var(--primary);color:var(--on-primary);text-transform:uppercase;font-weight:700;letter-spacing:normal;font-size:14px;transition:filter .15s ease,transform .1s ease}.continue-button:active{transform:scale(.985)}.continue-button:hover{filter:brightness(1.05)}.continue-button__label{white-space:nowrap}.continue-button__meta{margin-left:auto;font-size:11px;font-weight:500;letter-spacing:0;text-transform:none;opacity:.72;white-space:nowrap}.new-game-toggle{display:flex;align-items:center;gap:8px;width:100%;min-height:49px;padding:0 16px;border:0;border-radius:8px;background:transparent;color:var(--on-surface);text-transform:uppercase;font-weight:700;letter-spacing:normal;font-size:14px}.new-game-toggle:hover{background:color-mix(in srgb,var(--primary) 8%,transparent)}.new-game-toggle__chevron{margin-left:auto;color:var(--on-surface-variant);transition:transform .2s ease}.new-game-toggle__chevron.is-open{transform:rotate(180deg)}.difficulty-panel{margin:8px;border:2px solid var(--primary);border-radius:10px;overflow:hidden;background:transparent}.difficulty-group+.difficulty-group{border-top:2px solid var(--primary)}.difficulty-row{display:flex;align-items:center;width:100%;min-height:48px;padding:0 18px;border:0;background:transparent;color:var(--on-surface);text-align:left;gap:8px;transition:background-color .12s ease}.difficulty-row:hover{background:color-mix(in srgb,var(--primary) 9%,transparent)}.difficulty-row:active{background:color-mix(in srgb,var(--primary) 16%,transparent)}.difficulty-row__icon{width:22px;flex:0 0 22px;display:grid;place-items:center;color:var(--primary);font-size:17px}.difficulty-row--with-icon{padding-left:9px}.difficulty-row__label{text-transform:uppercase;font-size:14px;font-weight:500;letter-spacing:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.difficulty-row__meta{margin-left:auto;color:var(--primary);font-size:14px;font-weight:400;opacity:.9;white-space:nowrap;font-variant-numeric:tabular-nums}.menu-card{padding:0}.list-row{display:flex;align-items:center;gap:8px;width:100%;min-height:49px;padding:0 16px;border:0;border-radius:8px;background:transparent;color:var(--on-surface);text-align:left}.list-row__icon{display:flex;align-items:center;flex:0 0 auto;color:var(--primary)}.list-row__text{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-width:0}.list-row__title{font-size:14px;font-weight:500}.list-row__subtitle,.list-row__meta{font-size:12px;color:var(--on-surface-variant)}.list-row__trailing{display:flex;align-items:center;flex:0 0 auto}button.list-row:hover{background:color-mix(in srgb,var(--primary) 8%,transparent)}.menu-row .list-row__title{text-transform:uppercase;font-size:14px;font-weight:700;letter-spacing:normal}.menu-row__chevron{color:var(--on-surface-variant);opacity:.45}.main-footer{padding:20px 0 4px;text-align:center;font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--on-surface-variant);opacity:.55}.top-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:4px;min-height:64px;padding:max(8px,env(safe-area-inset-top)) 10px 8px;background:var(--bg)}.top-bar__side{display:flex;align-items:center;flex:0 0 48px;min-width:48px}.top-bar__side--end{justify-content:flex-end}.top-bar__title{flex:1 1 auto;min-width:0;padding-left:6px;font-size:22px;font-weight:400;letter-spacing:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-button{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--on-surface-variant);transition:background-color .15s ease}.icon-button:hover{background:color-mix(in srgb,var(--on-surface) 8%,transparent)}.icon-button--small{width:36px;height:36px}.icon-button--tonal{width:36px;height:36px;background:color-mix(in srgb,var(--primary) 14%,transparent);color:var(--primary)}.icon-button--ghost{width:34px;height:34px;color:var(--on-surface-variant);opacity:.65}.screen-body{display:flex;flex-direction:column;gap:14px;width:100%;padding:0 32px calc(28px + env(safe-area-inset-bottom));animation:screen-in .2s ease}@keyframes screen-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.section-title{margin:9px 12px 5px;font-size:14px;font-weight:700;letter-spacing:normal;text-transform:uppercase;color:var(--on-surface)}.themes-screen .screen-body{padding-left:16px;padding-right:16px;gap:16px}.skin-strip-card{border-radius:12px;padding:8px}.skin-strip{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.skin-strip::-webkit-scrollbar{display:none}.skin-tile{position:relative;flex:0 0 auto;width:68px;height:68px;padding:8px;border:2px solid var(--bg);border-radius:12px;background:transparent;display:grid;place-items:center}.skin-tile img{width:100%;height:100%;object-fit:contain;border-radius:6px;opacity:.45;pointer-events:none}.skin-tile--selected img{opacity:1}.theme-grid-card{border-radius:12px;padding:8px}.theme-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.theme-swatch{position:relative;display:flex;aspect-ratio:2 / 1;padding:0;overflow:hidden;border:2px solid var(--bg);border-radius:5px;background:none}.theme-swatch__uncovered,.theme-swatch__covered{flex:1 1 50%;height:100%}.theme-swatch--selected .theme-swatch__covered{opacity:.25}.theme-swatch__label{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:0 4px;font-size:11px;font-weight:700;line-height:1.2;text-align:center;text-transform:uppercase}.settings-card{padding:7px 8px 12px}.controls-screen .screen-body{gap:16px;padding:4px 16px calc(16px + env(safe-area-inset-bottom))}.controls-screen .settings-card{padding:8px}.controls-screen .section-title{margin:12px 16px 4px}.controls-screen .settings-card--settings .section-title,.controls-screen .settings-card--default .section-title{margin-bottom:20px}.control-options{display:flex;flex-direction:column;gap:0}.control-option{display:flex;align-items:center;justify-content:space-between;width:100%;gap:0;min-height:55px;padding:0;border:0;border-radius:12px;background:transparent;color:var(--on-surface-variant);text-align:center;transition:background-color .14s ease}.control-option:hover{background:color-mix(in srgb,var(--on-surface) 6%,transparent)}.control-option--selected,.control-option--selected:hover{background:color-mix(in srgb,var(--on-surface) 20%,transparent)}.control-option__column{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:0;min-width:0;padding:8px;line-height:1.4}.control-option__action{font-size:14px;font-weight:700;letter-spacing:normal}.control-option__meaning{font-size:14px;opacity:1}.control-option__simple{display:block;width:100%;padding:20px 16px;font-size:14px;font-weight:700;line-height:1.4}.control-option--simple{min-height:59px}.slider-list{display:flex;flex-direction:column;gap:0;padding:0 8px}.slider-row{display:block;padding:0}.slider-row__header{display:block;margin:0;padding:0 8px;font-size:14px;font-weight:400;line-height:1.4;color:var(--on-surface-variant)}.slider-row--emphasized .slider-row__header{color:var(--on-surface)}.slider{display:block;width:100%;height:48px;margin:0;padding:0;border:0;background:transparent;-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer}.slider::-webkit-slider-runnable-track{height:20px;border-radius:999px;background:linear-gradient(to right,var(--primary) 0,var(--primary) var(--slider-progress),var(--on-surface-variant) var(--slider-progress),var(--on-surface-variant) 100%)}.slider::-moz-range-track{height:20px;border-radius:999px;background:var(--on-surface-variant)}.slider::-moz-range-progress{height:20px;border-radius:999px;background:var(--primary)}.slider::-webkit-slider-thumb{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:20px;height:20px;margin-top:0;border-radius:50%;border:0;background:var(--on-primary)}.slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;border:0;background:var(--on-primary)}.switch-preview{display:flex;justify-content:center;padding:0 0 16px}.switch-control.switch-control--inline{position:static;left:auto;right:auto;top:auto;bottom:auto;flex-direction:row;transform:none;background:var(--surface);box-shadow:none}.toggle-row{display:flex;align-items:center;gap:16px;padding:12px;border-radius:12px;cursor:pointer;transition:background-color .12s ease}.toggle-row:hover{background:color-mix(in srgb,var(--on-surface) 4%,transparent)}.toggle-row__text{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;font-size:14px;color:var(--on-surface)}.toggle-row__description{font-size:12px;color:var(--on-surface-variant)}.switch{position:relative;flex:0 0 auto;width:52px;height:32px;border-radius:999px;border:2px solid var(--outline);background:color-mix(in srgb,var(--on-surface) 16%,transparent);transition:background-color .16s ease,border-color .16s ease}.switch__thumb{position:absolute;top:2px;left:2px;width:24px;height:24px;border-radius:50%;background:var(--on-surface-variant);transition:transform .16s cubic-bezier(.2,.7,.2,1),background-color .16s ease}.switch--on{border-color:var(--primary);background:var(--primary)}.switch--on .switch__thumb{transform:translate(20px);background:var(--on-primary)}.settings-actions{display:flex;flex-direction:column;gap:8px;padding:4px 4px 0}.outlined-button{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:49px;padding:0 18px;border:1px solid var(--outline);border-radius:999px;background:transparent;color:var(--on-surface);font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;transition:background-color .15s ease}.outlined-button:hover{background:color-mix(in srgb,var(--primary) 8%,transparent)}.outlined-button--danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 55%,transparent)}.outlined-button--danger:hover{background:color-mix(in srgb,var(--danger) 8%,transparent)}.settings-note{margin:4px 10px 0;text-align:center;font-size:11.5px;line-height:1.45;color:var(--on-surface-variant);opacity:.7}.stats-screen .screen-body{gap:16px}.stats-card{padding:0 0 8px;overflow:hidden}.stats-card__title{margin:0;padding:16px 16px 8px;font-size:14px;font-weight:700;letter-spacing:normal;text-transform:uppercase}.stats-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 16px;padding:8px 0;border-bottom:1px solid color-mix(in srgb,var(--outline) 28%,transparent);font-size:14px}.stats-row:last-child{border-bottom:0}.stats-row__label{font-weight:700;color:var(--on-surface)}.stats-row__value{color:var(--tertiary);font-weight:400;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.empty-state{display:flex;flex-direction:column;align-items:center;gap:18px;padding:78px 24px;text-align:center;color:var(--on-surface-variant);font-size:13.5px;line-height:1.5}.empty-text{margin:0;padding:160px 24px;text-align:center;font-size:14px;color:var(--on-surface-variant)}.empty-state__icon{display:flex;align-items:flex-end;gap:5px;height:48px}.empty-state__icon span{display:block;width:9px;border-radius:3px 3px 0 0;background:var(--primary);opacity:.75}.empty-state__flag{display:grid;place-items:center;width:72px;height:72px;border-radius:50%;background:color-mix(in srgb,var(--primary) 13%,transparent)}.history-list{display:flex;flex-direction:column;gap:8px}.history-card{display:flex;align-items:center;gap:8px;padding:16px;border-radius:12px}.history-card__badge{display:grid;place-items:center;flex:0 0 auto;width:32px;height:32px}.history-card__badge--victory{opacity:1}.history-card__badge:not(.history-card__badge--victory){opacity:.55}.history-card__text{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-width:0}.history-card__title{font-size:14px;font-weight:700;letter-spacing:normal}.history-card__meta{font-size:14px;color:var(--on-surface);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-chip{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;text-transform:uppercase;letter-spacing:.06em;font-size:9.5px;font-weight:700;background:color-mix(in srgb,var(--on-surface) 10%,transparent)}.status-chip--victory{background:color-mix(in srgb,var(--primary) 18%,transparent);color:var(--primary)}.status-chip--defeat{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger)}.status-chip--finished{background:color-mix(in srgb,var(--tertiary) 15%,transparent);color:var(--tertiary)}.history-card__actions{display:flex;align-items:center;flex:0 0 auto;gap:0}.history-card__actions .icon-button{width:48px;height:48px;color:var(--tertiary)}.history-card__actions .icon-button--ghost{width:34px;height:34px;margin-left:4px;color:var(--on-surface-variant)}.language-list{display:flex;flex:1 1 auto;flex-direction:column;gap:8px;min-height:0;padding:4px 32px calc(16px + env(safe-area-inset-bottom));overflow-y:auto}.language-card-row{display:flex;align-items:center;width:100%;min-height:56px;padding:0 12px;border:0;border-radius:12px;background:var(--surface-variant);color:var(--primary);font-size:14px;font-weight:700;text-transform:uppercase;text-align:left;transition:background-color .14s ease}.language-card-row:hover{background:color-mix(in srgb,var(--primary) 9%,var(--surface-variant))}.tutorial-screen .screen-body{flex:1 1 auto;padding-bottom:16px;gap:0}.tutorial-body{gap:0;padding:4px 16px 0}.tutorial-lead{margin:0;padding-bottom:16px;font-size:14px;line-height:1.45;color:var(--on-surface)}.tutorial-step{display:flex;flex-direction:column;align-items:center;gap:0;margin:0}.tutorial-step__image{padding:0;overflow:hidden;border-radius:10px;background:var(--surface);box-shadow:0 1px 3px #00000029}.tutorial-step__image img{display:block;width:128px;height:128px;border-radius:0;object-fit:contain}.tutorial-step p{width:100%;margin:0;padding:16px 0;font-size:14px;line-height:1.45;color:var(--on-surface)}.tutorial-footer{position:sticky;bottom:0;z-index:10;padding:0 16px calc(16px + env(safe-area-inset-bottom));border-top:1px solid color-mix(in srgb,var(--on-surface) 12%,transparent);background:var(--bg)}.tutorial-start{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:16px;border:0;border-radius:999px;background:transparent;color:var(--primary);font-size:14px;font-weight:700;text-transform:uppercase}.filled-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:50px;padding:0 24px;border:0;border-radius:999px;background:var(--primary);color:var(--on-primary);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;transition:filter .15s ease}.filled-button:hover{filter:brightness(1.06)}.filled-button--wide{width:100%}.about-body{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;padding:0 16px calc(16px + env(safe-area-inset-bottom))}.about-head{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;justify-content:center;min-height:0;padding:16px 0;text-align:center}.about-head__logo{display:grid;place-items:center;width:96px;height:96px}.about-head__name{margin:8px 0 16px;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:normal}.about-head__version{font-size:14px;color:var(--on-surface)}.about-music{flex:0 0 auto;border-radius:16px;overflow:hidden;background:var(--surface-variant)}.about-music__button{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:0 48px;border:0;background:transparent;color:var(--primary);font-size:14px;font-weight:700;text-transform:uppercase;text-align:center}.about-music__button svg{position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--primary)}.about-actions{display:flex;flex:0 0 auto;flex-direction:column;margin-top:4px}.about-action{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:0 16px;border:0;border-radius:8px;background:transparent;color:var(--primary);font-size:14px;font-weight:700;text-transform:uppercase}.about-action:hover{background:color-mix(in srgb,var(--primary) 8%,transparent)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--scrim);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade-in .16s ease}.modal{--modal-bg: color-mix(in srgb, var(--surface) 93%, var(--surface-variant));width:min(100%,342px);max-height:86dvh;overflow:auto;padding:24px 24px 16px;border-radius:28px;background:var(--modal-bg);color:var(--on-surface);box-shadow:0 26px 70px #0000006b;animation:modal-in .2s cubic-bezier(.2,.75,.2,1)}.modal:focus,.modal:focus-visible{outline:none}.modal--wide{width:min(100%,460px)}.modal__top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.modal__title{padding:0;font-size:24px;font-weight:400;line-height:1.25}.modal__content{padding:24px 0 0;font-size:14px;line-height:1.5;color:var(--on-surface-variant)}.modal__content p{margin-bottom:10px}.modal__actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;margin-top:20px}.modal--result{width:min(100%,342px);padding:16px;border-radius:10px;background:var(--surface-variant)}.modal__top--result{align-items:center;min-height:36px;margin:-8px -8px 0}.modal__illustration{display:flex;justify-content:center;margin-top:4px}.modal__illustration img{display:block;width:64px;height:64px}.modal--result .modal__title{margin:16px 0;text-align:center;font-size:14px;font-weight:700;line-height:1.3;text-transform:uppercase}.modal--result .modal__content{padding:0;text-align:center;font-size:14px;line-height:1.5;color:var(--on-surface)}.modal--result .modal__content p{margin:0}.modal--result .modal__actions{flex-direction:column;align-items:stretch;gap:8px;margin-top:12px}.result-button{width:100%;min-height:48px;padding:0 16px;border:0;border-radius:999px;font-size:14px;font-weight:700;text-transform:uppercase;transition:background-color .15s ease}.result-button--filled{background:var(--primary);color:var(--surface-variant)}.result-button--filled:hover{background:color-mix(in srgb,var(--primary) 88%,black)}.result-button--text{background:transparent;color:var(--primary)}.result-button--text:hover{background:color-mix(in srgb,var(--primary) 10%,transparent)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.text-button{min-height:40px;padding:0 12px;border:0;border-radius:999px;background:transparent;color:var(--primary);font-size:14px;font-weight:700;letter-spacing:normal;text-transform:uppercase;transition:background-color .15s ease}.text-button:hover{background:color-mix(in srgb,var(--primary) 10%,transparent)}.text-button--primary{color:var(--primary)}.text-button--danger{color:var(--danger)}.text-button--danger:hover{background:color-mix(in srgb,var(--danger) 10%,transparent)}.custom-form{display:flex;flex-direction:column;gap:8px}.custom-form__row{display:flex;align-items:center;justify-content:center;gap:4px}.custom-form__times{width:16px;text-align:center;font-size:14px;color:var(--on-surface-variant)}.custom-form__times--blank{visibility:hidden}.level-field{position:relative;flex:0 0 auto;width:96px}.level-field__input{width:100%;height:48px;padding:0 10px;border:1px solid var(--outline);border-radius:4px;background:transparent;color:var(--on-surface);font-size:14px;font-variant-numeric:tabular-nums;text-align:center;outline:none;transition:border-color .15s ease}.level-field__input:focus{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.level-field__label{position:absolute;left:8px;top:50%;transform:translateY(-50%);padding:0 4px;background:var(--modal-bg);color:var(--on-surface-variant);font-size:14px;line-height:1;pointer-events:none;transition:top .15s ease,font-size .15s ease}.level-field__input:focus+.level-field__label,.level-field__input:not(:placeholder-shown)+.level-field__label{top:0;font-size:11px}.custom-form__hint{text-align:center;font-size:12px;line-height:1.4;color:var(--danger)}.toast-stack{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));z-index:200;display:flex;flex-direction:column;gap:8px;width:min(92vw,430px);transform:translate(-50%);pointer-events:none}body.route-game .toast-stack{bottom:calc(84px + env(safe-area-inset-bottom))}.toast{display:flex;align-items:center;gap:14px;padding:11px 10px 11px 16px;border-radius:14px;background:color-mix(in srgb,var(--on-surface) 90%,#000);color:var(--surface);font-size:12.5px;line-height:1.4;box-shadow:0 8px 26px #0000004d;animation:toast-in .22s cubic-bezier(.2,.75,.2,1);pointer-events:auto}.toast span{flex:1 1 auto}.toast__action{flex:0 0 auto;min-height:34px;padding:0 10px;border:0;border-radius:8px;background:transparent;color:var(--primary);font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}@keyframes toast-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;overflow:hidden;pointer-events:none}.confetti__piece{position:absolute;top:-24px;border-radius:1.5px;animation-name:confetti-fall;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes confetti-fall{0%{transform:translate3d(0,-8vh,0) rotate(0);opacity:1}to{transform:translate3d(var(--drift),108vh,0) rotate(var(--rotate));opacity:.85}}.game-screen{position:relative;height:100dvh;min-height:100dvh;overflow:hidden;background:var(--game-bg, var(--bg));color:var(--game-fg)}.game-bar{position:relative;z-index:6;display:flex;align-items:center;gap:2px;flex:0 0 auto;padding:max(8px,env(safe-area-inset-top)) 0 8px;background:transparent;color:var(--game-fg)}.game-bar__side{display:flex;align-items:center;flex:0 0 auto;width:56px;min-width:56px}.game-bar__side--end{justify-content:flex-end;gap:1px;margin-left:auto}.game-bar .icon-button{width:52px;height:52px;color:var(--game-fg)}.game-bar .icon-button:hover{background:color-mix(in srgb,var(--game-fg) 12%,transparent)}.game-hud{display:flex;align-items:center;justify-content:center;gap:10px;flex:1 1 auto;min-width:0}.game-hud__item{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.game-hud__value{font-variant-numeric:tabular-nums;min-width:1.35em}.hint-button{display:flex;align-items:center;gap:5px;padding:6px 8px;border:0;border-radius:999px;background:transparent;color:var(--game-fg);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;transition:background-color .15s ease}.hint-button:hover{background:color-mix(in srgb,var(--game-fg) 12%,transparent)}.hint-button__count{min-width:.8em;text-align:right}.game-board-area{position:relative;display:flex;align-items:center;justify-content:center;flex:1 1 auto;min-height:0;padding:8px 4px;overflow:hidden}.board-wrap{display:flex;align-items:center;justify-content:center;max-width:100%;max-height:100%}.board{position:relative;display:grid;border-radius:5px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}.cell{position:relative;display:block;padding:0;border:0;background:transparent;outline:none;touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.cell:focus-visible{outline:none}.cell__face{position:absolute;display:block;transition:transform .07s ease,filter .07s ease;will-change:transform}.board--separated .cell--covered .cell__face{box-shadow:inset 0 1px #ffffff24,inset 0 -1px #00000014}.board--joined .cell--covered.cell--pressed .cell__face{box-shadow:inset 0 0 0 999px #8080802e}.board--separated .cell--pressed .cell__face{transform:scale(.9)}.cell__content{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;align-items:center;justify-content:center;line-height:1;pointer-events:none}.cell__mark,.cell__glyph{display:block;-webkit-mask-image:var(--glyph);mask-image:var(--glyph);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;pointer-events:none}.cell__glyph--highlight{filter:drop-shadow(0 0 3px currentColor)}.cell--dim .cell__content{opacity:.5}.cell--mistake .cell__content{opacity:.9}.cell--inactive{cursor:default}.cell--hint:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;border-radius:inherit;box-shadow:inset 0 0 0 2px var(--accent),0 0 14px color-mix(in srgb,var(--accent) 55%,transparent);animation:hint-fade 1.6s ease-out forwards;pointer-events:none}@keyframes hint-fade{0%{opacity:0}15%{opacity:1}70%{opacity:1}to{opacity:0}}.tap-to-begin{position:absolute;top:50%;left:50%;z-index:4;padding:13px 22px;border-radius:18px;background:color-mix(in srgb,var(--game-fg) 16%,transparent);color:var(--game-fg);font-size:14px;font-weight:600;letter-spacing:.02em;white-space:nowrap;transform:translate(-50%,-50%);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none}.board-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:7;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:color-mix(in srgb,var(--board-bg) 72%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:var(--game-fg);font-size:12.5px;letter-spacing:.02em}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid color-mix(in srgb,var(--game-fg) 20%,transparent);border-top-color:var(--game-fg);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.switch-control{position:absolute;left:50%;bottom:calc(48px + env(safe-area-inset-bottom));z-index:8;display:flex;align-items:center;border:2px solid var(--primary);border-radius:17px;background:color-mix(in srgb,var(--game-fg) 8%,transparent);box-shadow:0 6px 20px #0000003d;transform:translate(-50%);overflow:hidden}.switch-control__button{display:grid;place-items:center;width:52px;height:52px;padding:0;border:0;border-radius:15px;background:transparent;color:var(--primary);transition:background-color .15s ease,color .15s ease}.switch-control__button:hover{background:color-mix(in srgb,var(--primary) 14%,transparent)}.switch-control__button.is-selected,.switch-control__button.is-selected:hover{background:var(--primary);color:var(--on-primary)}.switch-control__button:active{transform:scale(.95)}.review-banner,.result-banner{position:relative;z-index:5;display:flex;align-items:center;gap:10px;margin:0 8px 3px;padding:9px 11px;border-radius:14px;background:color-mix(in srgb,var(--game-fg) 11%,transparent);color:var(--game-fg);font-size:11.5px;line-height:1.35}.review-banner__icon,.result-banner__icon{display:grid;place-items:center;flex:0 0 auto;width:31px;height:31px;border-radius:50%;background:color-mix(in srgb,var(--game-fg) 14%,transparent)}.review-banner__icon--victory,.result-banner__icon--victory{background:color-mix(in srgb,var(--primary) 55%,transparent);color:var(--on-primary)}.review-banner__icon--defeat,.result-banner__icon--defeat{background:color-mix(in srgb,var(--danger) 55%,transparent);color:var(--on-danger)}.review-banner>span:nth-child(2),.result-banner__text{display:flex;flex-direction:column;gap:1px;flex:1 1 auto;min-width:0}.review-banner strong,.result-banner strong{font-size:12.5px;font-weight:700;letter-spacing:.02em}.review-banner__meta{font-size:10.5px;opacity:.7}.review-banner .text-button,.result-banner .text-button{color:var(--game-fg);flex:0 0 auto}.result-dialog{display:flex;flex-direction:column;align-items:center;gap:10px;padding:4px 0 2px;text-align:center}.result-dialog__illustration{display:grid;place-items:center;width:92px;height:92px;border-radius:50%;margin-bottom:6px}.result-dialog__illustration--win{background:color-mix(in srgb,var(--primary) 16%,transparent);color:var(--primary)}.result-dialog__illustration--lose{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger)}.result-dialog__illustration--finished{background:color-mix(in srgb,var(--tertiary) 16%,transparent);color:var(--tertiary)}.result-dialog p{margin:0;font-size:13.5px;color:var(--on-surface-variant)}.result-dialog__muted{font-size:11.5px!important;opacity:.7}@media(min-width:640px)and (orientation:landscape){.game-bar{position:absolute;inset:0 auto 0 0;width:56px;flex-direction:column;align-items:center;gap:0;padding:calc(8px + env(safe-area-inset-top)) 0 calc(8px + env(safe-area-inset-bottom));pointer-events:none}.game-bar>*{pointer-events:auto}.game-bar__side{width:auto;min-width:0;flex-direction:column;align-items:center}.game-bar__side--end{margin-top:auto;margin-left:0;gap:0}.game-hud{flex:1 1 auto;flex-direction:column;justify-content:center;gap:13px}.game-hud__item{flex-direction:column;gap:2px}.game-bar .icon-button{width:52px;height:52px}.game-bar .icon-button svg{width:20px;height:20px}.hint-button{flex-direction:row;gap:3px;padding:4px 2px}.switch-control{left:auto;right:32px;top:50%;bottom:auto;flex-direction:column;transform:translateY(-50%)}}@media(max-width:380px){.screen-body{padding-left:12px;padding-right:12px}.difficulty-row{min-height:50px;padding:0 12px}.difficulty-row--with-icon{padding-left:7px}.difficulty-row__label,.difficulty-row__meta{font-size:11.5px}.continue-button__meta{font-size:10px}.game-hud{gap:8px}.game-hud__item{gap:6px;font-size:16px}.game-hud__item svg{width:22px;height:22px}.hint-button{font-size:12px;gap:4px}.history-card__actions .icon-button--ghost{display:none}.control-option{padding:10px 8px}.control-option__action{font-size:12.5px}.control-option__meaning{font-size:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
