@font-face{font-family:Onest;src:url('шрифты/onest-латиница-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Onest;src:url('шрифты/onest-кириллица-400.woff2') format('woff2');font-weight:400;font-display:swap;unicode-range:U+0400-052F}
@font-face{font-family:Onest;src:url('шрифты/onest-латиница-700.woff2') format('woff2');font-weight:700 900;font-display:swap}
@font-face{font-family:Onest;src:url('шрифты/onest-кириллица-700.woff2') format('woff2');font-weight:700 900;font-display:swap;unicode-range:U+0400-052F}
:root{color-scheme:dark;--gold:#e9c778;--muted:#9caeaf;--ink:#0c1518;--safe-top:max(env(safe-area-inset-top,0px),var(--безопасно-сверху,0px));--safe-bottom:max(env(safe-area-inset-bottom,0px),var(--безопасно-снизу,0px));font-family:Onest,system-ui,sans-serif;color:#f4efdf;background:var(--ink)}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 0 0,#174c4659,transparent 50%),radial-gradient(ellipse at 100% 80%,#6c4c211d,transparent 55%),#0c1518;min-height:100dvh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.35}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button{touch-action:manipulation}h1,p,figure{margin:0}[hidden]{display:none!important}.app2048{max-width:1040px;margin:auto;padding:calc(var(--safe-top) + 12px) max(16px,env(safe-area-inset-left,0px)) calc(var(--safe-bottom) + 20px)}.topbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:24px}.topbar>span{font-size:10px;letter-spacing:.2em;color:var(--muted)}.icon-button{display:grid;place-items:center;width:40px;height:40px;border:1px solid #dcc79433;border-radius:50%;background:#162225;text-decoration:none;color:var(--gold);font-size:25px}.в-телеграме #back{visibility:hidden}.screen{animation:screen-in .3s ease-out}.eyebrow{display:block;color:var(--muted);font-size:10px;letter-spacing:.16em;font-weight:600}h1{font-size:clamp(70px,17vw,106px);line-height:1.08;letter-spacing:-.06em;color:#f5dfaa;font-weight:800}.title-dot{color:#55b49b}.intro p{margin-top:14px;font-size:clamp(23px,5vw,35px);line-height:1.25;letter-spacing:-.04em}.intro em{font-style:normal;color:#b4c9c4}.cover{position:relative;margin:24px 0;border:1px solid #d9c18c33;border-radius:24px;overflow:hidden;aspect-ratio:3/2;background:#101e22;box-shadow:0 18px 60px #0005}.cover img{width:100%;height:100%;object-fit:cover}.cover figcaption{position:absolute;inset:auto 0 0;padding:24px 20px 15px;background:linear-gradient(transparent,#081316ed);font-size:8px;letter-spacing:.18em;color:#d5c7a7}.personal{display:flex;align-items:center;gap:12px;margin-bottom:18px}.avatar{width:40px;height:40px;display:grid;place-items:center;flex:none;border:1px solid #cbb27b66;border-radius:50%;overflow:hidden;background:#243530;color:var(--gold)}.personal>div{display:grid;gap:4px;min-width:0}.personal strong{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.personal span:not(.avatar){font-size:10px;color:var(--muted)}.personal>b{margin-left:auto;font-size:25px;color:var(--gold)}.primary{display:flex;justify-content:center;align-items:center;gap:20px;width:100%;padding:17px;border:1px solid #f4dba0;border-radius:16px;background:linear-gradient(120deg,#f1dca3,#c3994f);box-shadow:inset 0 1px #fff5cf,0 6px 24px #c69c3c20;color:#241b0f;font-weight:750;font-size:17px}.primary>span{margin-left:auto;font-size:24px}.lobby-links{display:flex;justify-content:space-between;align-items:center;margin-top:16px;font-size:11px;color:var(--muted)}.lobby-links button{background:none;border:0;padding:8px 0;color:#e3d2ae}.lobby-links button span{border:1px solid #9f9474;border-radius:50%;padding:0 4px;margin-left:4px}#экран-игры{max-width:490px;margin:auto}.game-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.game-heading h1{font-size:64px}.game-heading .eyebrow{font-size:9px}.scores{display:grid;grid-template-columns:1.1fr 1.25fr .7fr;gap:8px;margin-bottom:20px}.scores>div{position:relative;border:1px solid #c4bc9840;background:linear-gradient(145deg,#22322f,#152222);border-radius:14px;padding:12px;min-width:0}.scores span{display:block;color:#b5b7a6;letter-spacing:.08em;font-size:8px;white-space:nowrap}.scores strong{display:block;font-size:clamp(18px,5vw,27px);line-height:1.4;color:#f6dfaa;font-variant-numeric:tabular-nums}.scores>div:first-child{border-color:#dbc18099}.scores b{position:absolute;right:8px;top:8px;color:#86e1bd;pointer-events:none;font-size:14px}.journey{margin-bottom:18px}.journey>div:first-child{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;margin-bottom:9px}.journey b,.journey strong{color:#daca9f;font-weight:600}.progress{height:3px;background:#293936;overflow:hidden;border-radius:5px}.progress i{display:block;width:0;height:100%;background:linear-gradient(90deg,#3e9b83,#eed594);transition:width .3s}.board{--gap:9px;position:relative;aspect-ratio:1;width:100%;border:1px solid #beaa7766;border-radius:22px;background:linear-gradient(145deg,#34453d,#162724 60%,#283a30);box-shadow:0 18px 50px #0006,inset 0 1px 1px #f8e3a530,inset 0 -4px 10px #0006;touch-action:none;user-select:none;-webkit-user-select:none}.board-layer{position:absolute;inset:12px}.cell,.tile{position:absolute;width:calc((100% - 3*var(--gap))/4);height:calc((100% - 3*var(--gap))/4);border-radius:12px}.cell{background:#091d1e80;box-shadow:inset 0 2px 7px #0004;border:1px solid #96b4a012}.tile{display:grid;place-items:center;transition:left .12s ease-out,top .12s ease-out;z-index:1}.tile-inner{display:grid;place-items:center;width:100%;height:100%;border-radius:inherit;border:1px solid #ffffff28;box-shadow:inset 0 2px 1px #ffffff33,inset 0 -4px 0 #0002,0 4px 8px #0004;background:linear-gradient(140deg,var(--tile-a),var(--tile-b));color:var(--tile-ink);font-size:clamp(22px,7.6vw,42px);font-weight:750;letter-spacing:-.055em;font-variant-numeric:tabular-nums}.tile[data-digits='4'] .tile-inner{font-size:clamp(17px,5.6vw,31px)}.tile[data-digits='5'] .tile-inner,.tile[data-digits='6'] .tile-inner{font-size:clamp(13px,4.5vw,24px)}.tile[data-high='true'] .tile-inner{box-shadow:inset 0 2px 1px #fff6,0 0 18px #dbaf5340,0 4px 8px #0004}.tile.born .tile-inner{animation:born .18s ease-out}.tile.merged .tile-inner{animation:merge .3s ease-out}.hint{color:#adbbb5;font-size:11px;line-height:1.55;min-height:34px;text-align:center;margin:14px 0 10px}.game-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.secondary{min-height:46px;padding:11px;border:1px solid #b4a57c55;border-radius:12px;background:#1c2a28;font-size:14px;color:#d9c99f}.secondary span{margin-left:6px;font-size:12px}.direction-pad{display:flex;justify-content:center;gap:8px;margin-top:16px}.direction-pad button{width:44px;height:38px;border:1px solid #c6b58733;background:#142523;border-radius:10px;font-size:20px;color:#cdbc90}.save-note{margin-top:13px;color:#768e89;text-align:center;font-size:9px;line-height:1.4}#particles{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:22px}.spark{position:absolute;width:5px;height:5px;border-radius:50%;background:#ffdea0;box-shadow:0 0 7px #ffd882;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}dialog{width:min(420px,calc(100vw - 28px));max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 24px);padding:28px;border:1px solid #b7a17188;border-radius:24px;background:linear-gradient(145deg,#263630,#111e20);color:#f1ead8;box-shadow:0 25px 100px #000a;overflow:auto}dialog::backdrop{background:#030d10b8;backdrop-filter:blur(7px)}.dialog-close{position:absolute;right:12px;top:12px;width:32px;height:32px;font-size:23px}dialog h2{font-size:25px;letter-spacing:-.04em;margin:10px 32px 16px 0}dialog p{font-size:14px;line-height:1.65;color:#c0ccc5;margin-bottom:18px}dialog .primary{margin-top:18px}.rule-example{display:flex;justify-content:center;align-items:center;gap:10px;margin:24px 0}.rule-example b{padding:16px 20px;border-radius:12px;background:#e1d8be;color:#29372d;font-size:25px}.rule-example b:last-child{background:#c9aa5c}.setting-row{display:flex;justify-content:space-between;align-items:center;padding:17px 0;border-bottom:1px solid #bbcfa41f;gap:18px;font-size:15px}.setting-row input{width:22px;height:22px;accent-color:#d4b36c}.result-number{text-align:center;font-size:70px;font-weight:800;letter-spacing:-.06em;color:#f4d990;margin:15px 0}.result-label{text-align:center}.result-actions{display:grid;gap:8px}.result-actions .secondary{width:100%}body.no-effects *,body.no-effects *::after{animation:none!important;transition:none!important}
@keyframes screen-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes born{from{transform:scale(.4);opacity:.2}to{transform:scale(1);opacity:1}}@keyframes merge{0%{transform:scale(1)}40%{transform:scale(1.12);filter:brightness(1.25)}100%{transform:scale(1);filter:none}}
@media(min-width:760px){#экран-лобби{display:grid;grid-template-columns:1fr 1.25fr;gap:24px 50px;align-items:center;padding:55px 0}.intro{grid-column:1;grid-row:1}.cover{grid-column:2;grid-row:1/3;margin:0;aspect-ratio:1}.lobby-bottom{grid-column:1;grid-row:2}.cover img{object-position:center}.topbar{margin-bottom:10px}}
@media(max-height:780px) and (orientation:portrait){.app2048{padding-top:calc(var(--safe-top) + 5px)}.topbar{margin-bottom:8px}.game-heading{margin-bottom:10px}.game-heading h1{font-size:48px}.scores{margin-bottom:12px}.scores>div{padding:8px 10px}.journey{margin-bottom:12px}.hint{margin:10px 0 5px}.direction-pad{margin-top:10px}}
@media(min-width:1000px){#экран-игры{max-width:min(490px,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 325px));min-width:350px}}
@media(prefers-reduced-motion:reduce){*,*::after{animation:none!important;transition:none!important}}
@media(min-width:760px){.cover{aspect-ratio:3/2}}
@media(max-width:699px) and (orientation:portrait){
 .app2048:has(#экран-игры:not([hidden])){padding-top:calc(var(--safe-top) + 5px);padding-bottom:calc(var(--safe-bottom) + 8px)}
 .app2048:has(#экран-игры:not([hidden])) .topbar{margin-bottom:4px;height:32px}
 .app2048:has(#экран-игры:not([hidden])) .topbar .icon-button{height:32px;width:32px;font-size:22px}
 .game-heading{margin-bottom:10px}.game-heading h1{font-size:48px}.game-heading .eyebrow{display:none}
 .scores{margin-bottom:12px}.scores>div{padding:8px 10px}.journey{margin-bottom:12px}
 .hint{min-height:30px;margin:10px 0 5px;font-size:10px}.direction-pad{margin-top:10px}.save-note{margin-top:10px}
}

.mode-picker{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:22px}
.mode-picker button{display:grid;justify-items:start;gap:6px;min-width:0;padding:14px;border:1px solid #aa99733d;border-radius:16px;background:#132622;text-align:left}
.mode-picker button[aria-pressed=true]{border-color:#e8cc88;background:linear-gradient(145deg,#354434,#22352d);box-shadow:inset 0 0 0 1px #e8cc8822}
.mode-picker strong{font-size:14px;letter-spacing:-.035em}.mode-picker small{font-size:9px;color:#a8bcb4}
.mode-art{position:relative;height:44px;width:65px;margin-bottom:4px}.classic-art{display:grid;grid-template-columns:1fr 1fr;gap:3px}
.mode-art b{display:grid;place-items:center;border-radius:5px;background:linear-gradient(140deg,#e8d8ad,#b59b60);color:#243128;font-size:12px;box-shadow:0 2px 0 #0004}
.falling-art b{position:absolute;width:27px;height:23px;left:0;top:0}.falling-art b:last-child{left:33px;top:23px;background:linear-gradient(140deg,#91c8b2,#4a997f)}.falling-art i{position:absolute;left:37px;top:-2px;color:#e9ce8e;font-style:normal}
#falling-toolbar{display:flex;align-items:center;gap:10px;justify-content:space-between;margin-bottom:10px;color:#b8c7bb;font-size:11px}
#falling-toolbar>span{display:flex;align-items:center;gap:8px}#next-number{display:grid;place-items:center;min-width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#e7d8ad,#b59e6f);font-size:18px;color:#25352a}
#falling-status{font-size:12px;color:#e1ca95}#pause{width:38px;min-height:32px;padding:4px;font-size:20px}
body[data-mode=falling] #экран-игры{max-width:380px;min-width:0}
body[data-mode=falling] .board{aspect-ratio:5/7;--gap:7px}
body[data-mode=falling] .cell,body[data-mode=falling] .tile{width:calc((100% - 4*var(--gap))/5);height:calc((100% - 6*var(--gap))/7);border-radius:9px}
body[data-mode=falling] .tile-inner{font-size:clamp(19px,6vw,29px)}body[data-mode=falling] .tile[data-digits='4'] .tile-inner{font-size:clamp(14px,4.5vw,22px)}
body[data-mode=falling] .tile[data-digits='5'] .tile-inner{font-size:clamp(12px,3.5vw,19px)}
#falling-layer{pointer-events:none}.falling-active{z-index:4;filter:drop-shadow(0 0 5px #f4dc9080)}.falling-active .tile-inner{border-color:#f9e6ad}
.falling-ghost{z-index:0;opacity:.35}.falling-ghost .tile-inner{background:transparent;border:1px dashed #f2d89f;color:#f2d89f;box-shadow:none}
#drop{margin-top:12px;padding:12px;min-height:44px;font-size:15px}
.pause-cover{position:absolute;inset:0;z-index:8;border:0;border-radius:22px;background:#0a1c1fe8;backdrop-filter:blur(5px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}
.pause-cover>span{font-size:30px;font-weight:700;color:#f4d790}.pause-cover>small{font-size:12px;color:#acc6bc}.pause-cover>b{display:grid;place-items:center;width:58px;height:58px;border:1px solid #d4bd80;border-radius:50%;color:#e8cf92;font-size:23px}
@media(min-width:760px){body[data-mode=falling] #экран-игры{max-width:min(350px,max(250px,calc((100dvh - var(--safe-top) - var(--safe-bottom) - 365px)*.7143)))}body[data-mode=falling] .game-heading h1{font-size:44px}body[data-mode=falling] .game-heading{margin-bottom:8px}body[data-mode=falling] .scores{margin-bottom:10px}body[data-mode=falling] .scores>div{padding:8px}body[data-mode=falling] .journey{margin-bottom:10px}}
@media(max-width:699px) and (orientation:portrait){body[data-mode=falling] #экран-игры{max-width:min(100%,max(280px,calc((100dvh - var(--safe-top) - var(--safe-bottom) - 345px)*.7143)))}body[data-mode=falling] .game-heading h1{font-size:38px}body[data-mode=falling] .game-heading{margin-bottom:6px}body[data-mode=falling] .scores{margin-bottom:8px}body[data-mode=falling] .journey{margin-bottom:8px}body[data-mode=falling] .hint{min-height:0;font-size:9px}body[data-mode=falling] .direction-pad{margin-top:8px}body[data-mode=falling] #drop{margin-top:8px;padding:10px}}
#falling-controls{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:8px;margin-top:10px}
#falling-controls #drop{margin:0;padding:10px 4px}#falling-controls>.secondary{padding:4px;font-size:23px}
body[data-mode=falling] .direction-pad{display:none}
@media(max-width:699px) and (orientation:portrait){body[data-mode=falling] .game-heading h1{font-size:32px}body[data-mode=falling] .game-heading .icon-button{width:32px;height:32px;font-size:20px}body[data-mode=falling] .game-heading{margin-bottom:4px}body[data-mode=falling] .save-note{margin-top:8px}}
#merge-bonus{position:absolute;z-index:7;left:10px;right:10px;top:40%;padding:16px 8px;border:1px solid #ffe4a0;border-radius:14px;background:linear-gradient(135deg,#614921ee,#233b2bee);box-shadow:0 0 35px #e5b95955,inset 0 1px #fff4b755;color:#ffe6a9;font-weight:800;font-size:clamp(14px,4vw,19px);text-align:center;pointer-events:none}
#falling-status{min-width:0;text-align:center;line-height:1.25}
/* Ссылка «Рейтинг» в лобби — тот же класс secondary, что у второстепенных
   кнопок партии, но это <a>, а не <button>: без этих строк она осталась
   бы строчной, с подчёркиванием и не во всю ширину. Цвет и отступы из
   .secondary не трогаем — только форма. */
a.secondary{display:block;width:100%;text-align:center;text-decoration:none}
#рейтинг-ссылка{margin-top:10px}
