
/* SHMOT4: холодный чёрный + серебро/хром, без пёстрых акцентов. Зал S4 Logistics — нэви (бренд S4). */
:root {
  --bg: #0a0a0b; --panel: #111113; --panel2: #19191c; --line: #2b2b30; --text: #e9ecf0; --muted: #8b8f97; --dim: #5d6168;
  --ok: #5ccf8a; --warn: #e0634a;
  --chrome: linear-gradient(180deg, #f0f1f4 0%, #d5d9df 46%, #9da2aa 50%, #b3b8c0 62%, #e3e6ea 100%);
  --display: 'Oswald', 'Arial Narrow', sans-serif;
  --mono: 'IBM Plex Mono', ui-monospace, Menlo, Consolas, monospace;
  --shadow: 0 10px 34px rgba(0, 0, 0, .5);
  color-scheme: dark;
}
.navy { --panel: #0b1530; --panel2: #16244a; --line: #34436e; --muted: #97a1b6; --dim: #5d6a8a; }
[hidden] { display: none !important; }
html, body { height: 100%; overflow: hidden; overscroll-behavior: none; background: var(--bg); color: var(--text); }
body { font: 13px/1.5 var(--mono); -webkit-tap-highlight-color: transparent; }
#app { position: fixed; inset: 0; user-select: none; -webkit-user-select: none; }
#c { display: block; width: 100%; height: 100%; touch-action: none; outline: none; cursor: default; }
.locked #c { cursor: none; }
button, select, input, textarea { font: inherit; color: inherit; }
button, select { cursor: pointer; border: 0; background: none; }
button:focus-visible, a:focus-visible, select:focus-visible, input:focus-visible, textarea:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
a { color: inherit; }

/* Прицел */
.ret { position: absolute; left: 0; top: 0; width: 0; height: 0; pointer-events: none; transition: opacity .2s; }
.ret.off { opacity: 0; }
.ret i { position: absolute; left: -3px; top: -3px; width: 6px; height: 6px; border-radius: 50%; background: #f4f4f2; box-shadow: 0 0 0 1.5px rgba(0, 0, 0, .55);
  transition: left .15s, top .15s, width .15s, height .15s, background-color .15s; box-sizing: border-box; }
.ret.far i { left: -7px; top: -7px; width: 14px; height: 14px; background: transparent; border: 1.5px solid rgba(244, 244, 242, .8); }
.ret.on i { left: -15px; top: -15px; width: 30px; height: 30px; background: transparent; border: 2px solid #f4f4f2; box-shadow: 0 0 0 1px rgba(0, 0, 0, .45), inset 0 0 0 1px rgba(0, 0, 0, .45); }
.ret-l { position: absolute; left: 24px; top: -20px; display: block; background: rgba(17, 17, 19, .94); color: var(--text); border: 1px solid #3a3a40; padding: 6px 9px; font-size: 11px; line-height: 1.35;
  text-transform: uppercase; white-space: nowrap; text-align: left; max-width: 230px; overflow: hidden; text-overflow: ellipsis;
  opacity: 0; transform: translateX(-8px); pointer-events: none; transition: opacity .28s ease, transform .32s cubic-bezier(.2, .8, .2, 1); }
.ret.on .ret-l { opacity: 1; transform: none; pointer-events: auto; transition-delay: .06s; }
.ret.off .ret-l { pointer-events: none; }
.ret.left .ret-l { left: auto; right: 24px; transform: translateX(8px); }
.ret.left.on .ret-l { transform: none; }
.ret-l b, .ret-l span { display: block; overflow: hidden; text-overflow: ellipsis; }
.ret-l b { font: 600 13px/1.25 var(--display); letter-spacing: .03em; }
.ret-l span { color: var(--muted); }
.ret-l em { display: block; font-style: normal; font-size: 9px; letter-spacing: .1em; color: var(--dim); margin-top: 2px; }
.ret-cap { position: absolute; top: 14px; left: 0; transform: translateX(-50%); white-space: nowrap; font-size: 10px; letter-spacing: .1em; text-transform: uppercase;
  color: #f4f4f2; opacity: .7; text-shadow: 0 1px 2px #000; }
.locked .ret-cap, .nolock .ret-cap, .touch .ret-cap, .ret.on .ret-cap { display: none; }
.touch .ret-l em::after { content: 'Тап — открыть'; }
.desk .ret-l em::after { content: 'Клик или E — открыть'; }

/* Верхняя панель */
.bar { position: absolute; left: 0; right: 0; top: 0; display: flex; justify-content: space-between; align-items: center; gap: 8px;
  padding: calc(env(safe-area-inset-top, 0px) + 12px) 16px 0; pointer-events: none; }
.bar > * { pointer-events: auto; }
.brand { display: inline-flex; align-items: center; gap: 10px; padding: 7px 12px 7px 9px; background: rgba(10, 10, 11, .6); border: 1px solid rgba(255, 255, 255, .22); }
.brand img { height: 22px; width: auto; display: block; }
.brand span { font: 500 11px/1 var(--display); letter-spacing: .26em; color: #c9ced6; }
.actions { display: flex; gap: 6px; }
.chip { background: rgba(17, 17, 19, .82); color: var(--text); border: 1px solid #34343a; padding: 0 12px; min-height: 40px; display: inline-flex; gap: 8px; align-items: center;
  font: 500 13px/1 var(--display); text-transform: uppercase; letter-spacing: .08em; }
.chip b { font-weight: 700; font-variant-numeric: tabular-nums; }
.chip.has { background: var(--chrome); color: #0b0b0d; border-color: transparent; }
.chip.me { padding: 0 6px 0 4px; }
/* бокс: экран боя поверх зала */
.bx { position: absolute; inset: 0; z-index: 6; pointer-events: none; }
.bx[hidden] { display: none; }
.bx.hit { animation: bx-hit .45s ease-out; }
@keyframes bx-hit { 0% { box-shadow: inset 0 0 0 0 rgba(224, 53, 43, 0); } 30% { box-shadow: inset 0 0 120px 30px rgba(224, 53, 43, .55); } 100% { box-shadow: inset 0 0 0 0 rgba(224, 53, 43, 0); } }
.bx-top { position: absolute; left: 50%; top: calc(env(safe-area-inset-top, 0px) + 62px); transform: translateX(-50%); width: min(680px, calc(100% - 32px)); display: grid; grid-template-columns: 1fr auto 1fr; gap: 12px; align-items: end; }
.bx-side span { display: block; font: 600 12px var(--display); text-transform: uppercase; letter-spacing: .06em; color: #fff; text-shadow: 0 1px 2px #000; margin-bottom: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bx-side.op { text-align: right; }
.bx-bar { height: 14px; background: rgba(10, 10, 11, .8); border: 1px solid #45464c; position: relative; }
.bx-bar i { position: absolute; top: 0; bottom: 0; left: 0; width: 100%; background: linear-gradient(#5aa0ff, #1f56c8); transition: width .4s; }
.bx-side.op .bx-bar i { left: auto; right: 0; background: linear-gradient(#ff6b5e, #c62828); }
.bx-round { font: 600 11px var(--display); color: #f2c230; letter-spacing: .1em; text-transform: uppercase; padding-bottom: 2px; white-space: nowrap; }
.bx-msg { position: absolute; left: 50%; top: 40%; transform: translate(-50%, -50%); width: min(560px, calc(100% - 32px)); text-align: center; font: 600 15px/1.35 var(--display); color: #fff; text-shadow: 0 2px 6px #000, 0 0 2px #000; margin: 0; }
.bx-msg.big { font-size: 26px; letter-spacing: .04em; }
.bx-msg.good { color: #7dff9e; } .bx-msg.bad { color: #ff8a80; }
.bx-bottom { position: absolute; left: 50%; bottom: calc(env(safe-area-inset-bottom, 0px) + 18px); transform: translateX(-50%); width: min(460px, calc(100% - 32px)); display: grid; gap: 8px; }
.bx-time { height: 5px; background: rgba(255, 255, 255, .15); }
.bx-time i { display: block; height: 100%; width: 0; background: #f2c230; }
.bx-btns { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.bx-act { pointer-events: auto; min-height: 72px; display: grid; place-content: center; gap: 4px; background: rgba(10, 10, 11, .82); border: 2px solid #e9ecf0; color: #fff; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; }
.bx-act b { font: 700 18px var(--display); text-transform: uppercase; letter-spacing: .06em; }
.bx-act small { font: 500 9px var(--mono); color: #b9bcc2; text-transform: uppercase; letter-spacing: .08em; }
.bx-act[data-m="j"] { border-color: #5aa0ff; } .bx-act[data-m="h"] { border-color: #ff6b5e; } .bx-act[data-m="b"] { border-color: #f2c230; }
.bx-act:disabled { opacity: .45; }
.bx-act.on { opacity: 1; background: #e9ecf0; color: #0b0b0d; } .bx-act.on small { color: #333; }
.bx-quit { pointer-events: auto; position: absolute; right: 16px; bottom: calc(env(safe-area-inset-bottom, 0px) + 18px); padding: 8px 12px; background: rgba(10, 10, 11, .75); border: 1px solid var(--line); color: #c9ccd1; font: 500 10px var(--display); text-transform: uppercase; letter-spacing: .1em; }
@media (max-width: 620px) { .bx-quit { bottom: auto; top: calc(env(safe-area-inset-top, 0px) + 112px); } }
.fighting .halls, .fighting .ctrl, .fighting .hint, .fighting .voice #vTalk, .fighting .ret-cap { visibility: hidden; }
@media (orientation: landscape) and (max-height: 500px) { .fighting .bar .actions, .fighting .hunt-chip, .fighting .online { visibility: hidden; } .bx-top { top: calc(env(safe-area-inset-top, 0px) + 8px); width: min(520px, calc(100% - 300px)); } .bx-act { min-height: 58px; } .bx-msg { top: 36%; } }
.bx-invite { position: absolute; left: 50%; top: calc(env(safe-area-inset-top, 0px) + 110px); transform: translateX(-50%); z-index: 7; width: min(380px, calc(100% - 32px)); background: rgba(10, 10, 11, .94); border: 1px solid #f2c230; padding: 14px; display: grid; gap: 10px; color: #fff; text-align: center; font: 600 14px/1.35 var(--display); }
.bx-invite[hidden] { display: none; }
.bx-inv-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.bx-inv-btns .primary { min-height: 44px; }
.bx-people { list-style: none; margin: 0 0 12px; padding: 0; }
.bx-people li { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--line); font-size: 13px; }
.bx-people .primary { width: auto; min-height: 36px; padding: 0 12px; }
/* полосы прокрутки — в стиле сайта: тонкие, тёмные, без стрелок (Chrome/Safari — ::-webkit-scrollbar, Firefox — scrollbar-color) */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track, ::-webkit-scrollbar-corner { background: transparent; }
::-webkit-scrollbar-thumb { background: #3d3e45; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background-color: #8c8f96; }
::-webkit-scrollbar-button { display: none; width: 0; height: 0; }
@supports not selector(::-webkit-scrollbar) { * { scrollbar-width: thin; scrollbar-color: #3d3e45 transparent; } }
.chip.set { padding: 0 10px; }
.chip.set svg { display: block; }
.set-list { display: grid; gap: 14px; margin-bottom: 10px; }
.set-row { display: grid; gap: 8px; font-size: 12px; }
.set-row span { display: flex; justify-content: space-between; gap: 10px; }
.set-row b { font-variant-numeric: tabular-nums; color: #f2c230; }
.set-row input { width: 100%; accent-color: #e9ecf0; }
.chip.shx { position: relative; padding: 0 10px 0 6px; gap: 6px; }
.chip.shx img { width: 24px; height: 24px; display: block; }
.chip.shx.bump img { animation: shx-bump .5s ease-out; }
@keyframes shx-bump { 40% { transform: scale(1.3) rotate(-12deg); } }
.shx-plus { position: absolute; left: 50%; top: 100%; transform: translateX(-50%); color: #f2c230; font: 700 13px var(--display); pointer-events: none; animation: shx-up 1.4s ease-out forwards; text-shadow: 0 1px 2px #000; }
@keyframes shx-up { from { opacity: 0; margin-top: 10px; } 20% { opacity: 1; } to { opacity: 0; margin-top: -4px; } }
@media (max-width: 760px) { .shx-coin { width: 92px !important; height: 92px !important; } }
.shx-coin { display: block; margin: 4px auto 0; width: 132px; height: 132px; filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .45)); }
.shx-bal { display: flex; align-items: baseline; justify-content: center; gap: 8px; margin: 6px 0 10px; }
.shx-bal b { font: 700 40px/1 var(--display); color: #f2c230; font-variant-numeric: tabular-nums; }
.shx-bal span { font: 500 13px var(--display); text-transform: uppercase; letter-spacing: .08em; color: var(--muted); }
.shx-row { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: 12px; }
.shx-row b { white-space: nowrap; font-weight: 600; font-variant-numeric: tabular-nums; }
.shx-pick { display: flex; align-items: center; gap: 6px; margin: 4px 0 10px; flex-wrap: wrap; }
.shx-pick .primary { width: auto; min-width: 40px; min-height: 40px; padding: 0 10px; margin: 0; }
.shx-amt { min-width: 52px; text-align: center; font: 700 20px var(--display); font-variant-numeric: tabular-nums; }
.shx-sum { font-size: 12px; color: #f2c230; margin-left: 4px; }
.shx-disc { color: #f4e3a0; }
.shx-shop { list-style: none; padding: 0; margin: 0; }
.shx-shop li { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--line); }
.shx-shop .primary { width: auto; margin: 0; padding: 0 12px; }
.m-shx { display: flex; align-items: center; justify-content: center; gap: 8px; margin-bottom: 12px; }
.m-shx img { width: 20px; height: 20px; }
.chip.me img, .chip.me .ini { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; display: grid; place-items: center; background: var(--chrome); color: #111; font-weight: 700; }
@media (max-width: 520px) { .brand span { display: none; } .chip { padding: 0 9px; font-size: 12px; } .chip .lbl { display: none; } }
.halls { position: absolute; left: 50%; top: calc(env(safe-area-inset-top, 0px) + 62px); transform: translateX(-50%); display: flex; gap: 2px; background: rgba(10, 10, 11, .55); padding: 3px; }
.halls button { font: 500 11px/1 var(--display); letter-spacing: .14em; text-transform: uppercase; color: #a5a9b0; padding: 8px 12px; white-space: nowrap; }
.halls button.on { background: var(--chrome); color: #0b0b0d; }
@media (max-width: 520px) { .halls { top: auto; bottom: calc(env(safe-area-inset-bottom, 0px) + 172px); } .halls button { padding: 8px 9px; font-size: 10px; letter-spacing: .08em; } }
.online { position: absolute; left: 16px; top: calc(env(safe-area-inset-top, 0px) + 62px); display: inline-flex; align-items: center; gap: 7px; padding: 5px 9px;
  background: rgba(10, 10, 11, .55); color: #f4f4f2; font-size: 10px; letter-spacing: .1em; text-transform: uppercase; pointer-events: none; }
.online i { width: 7px; height: 7px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 3px rgba(92, 207, 138, .25); }
@media (max-width: 760px) { .online { top: calc(env(safe-area-inset-top, 0px) + 104px); } }

.hint { position: absolute; left: 50%; top: calc(env(safe-area-inset-top, 0px) + 108px); transform: translate(-50%, -6px); max-width: min(440px, calc(100% - 32px));
  background: rgba(233, 236, 240, .95); color: #0b0b0d; padding: 9px 12px; font-size: 12px; text-align: center; opacity: 0; transition: opacity .25s, transform .25s; pointer-events: none; }
.hint.on { opacity: 1; transform: translate(-50%, 0); }

.joy { position: absolute; left: 0; top: 0; width: 120px; height: 120px; border-radius: 50%; background: rgba(255,255,255,.12); border: 1.5px solid rgba(255,255,255,.7); pointer-events: none; }
.joy .knob { position: absolute; left: 36px; top: 36px; width: 48px; height: 48px; border-radius: 50%; background: #f4f4f2; }

.pay { position: absolute; left: 50%; transform: translateX(-50%); bottom: calc(env(safe-area-inset-bottom, 0px) + 20px);
  background: var(--chrome); color: #0b0b0d; padding: 0 22px; white-space: nowrap; min-height: 52px; font: 600 15px/1 var(--display); text-transform: uppercase; letter-spacing: .1em; box-shadow: var(--shadow); }
.pay span { margin-left: 8px; font-variant-numeric: tabular-nums; }

/* Панели: снизу на телефоне, справа на широком экране */
.sheet { position: absolute; left: 0; right: 0; bottom: 0; max-height: 66%; overflow: auto; background: var(--panel); color: var(--text); border-top: 1px solid var(--line);
  padding: 16px 16px calc(env(safe-area-inset-bottom, 0px) + 18px); box-shadow: 0 -10px 30px rgba(0,0,0,.5); animation: up .22s ease-out; }
@media (min-width: 760px), (orientation: landscape) and (min-width: 560px) {
  .sheet { left: auto; right: 16px; top: calc(env(safe-area-inset-top, 0px) + 64px); bottom: 16px; width: 380px; max-height: none; padding: 18px; border: 1px solid var(--line); animation: side .22s ease-out; }
}
/* Плавное закрытие: панели и окна уезжают и гаснут (display анимируется в современных браузерах; в старых — просто закрываются) */
.sheet, .modal, .overlay, .notice { transition: opacity .2s ease, transform .22s cubic-bezier(.2,.8,.2,1), display .22s allow-discrete, overlay .22s allow-discrete; }
.sheet[hidden] { display: none; opacity: 0; transform: translateY(24px); }
@media (min-width: 760px), (orientation: landscape) and (min-width: 560px) { .sheet[hidden] { transform: translateX(24px); } }
.modal[hidden], .overlay[hidden] { display: none; opacity: 0; }
.modal { animation: fade .2s ease-out; }
.modal .box { animation: pop .24s cubic-bezier(.2,.8,.2,1); }
@keyframes fade { from { opacity: 0; } }
@keyframes pop { from { transform: translateY(10px) scale(.97); opacity: 0; } }
@keyframes up { from { transform: translateY(24px); opacity: 0; } }
@keyframes side { from { transform: translateX(24px); opacity: 0; } }
.sheet-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.eyebrow { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.x { width: 40px; height: 40px; border: 1px solid var(--line); font-size: 20px; line-height: 1; flex: none; color: var(--text); }
.sheet h2, .box h2 { font: 600 22px/1.15 var(--display); margin: 6px 0 6px; text-transform: uppercase; letter-spacing: .02em; text-wrap: balance; }
.sheet h3 { font: 600 15px/1.2 var(--display); margin: 18px 0 8px; text-transform: uppercase; letter-spacing: .06em; }
.gal { position: relative; margin: 10px 0 12px; background: #e9e9e6; }
.gal-track { cursor: grab; display: flex; width: 100%; height: min(50vh, 420px); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; outline: none; }
.gal-track::-webkit-scrollbar { display: none; }
.gal-track img { flex: 0 0 100%; width: 100%; height: 100%; object-fit: cover; scroll-snap-align: center; scroll-snap-stop: always; display: block; -webkit-user-drag: none; }
@media (max-width: 759px) and (orientation: portrait) { .gal-track { height: 38vh; } }
.gal-btn { position: absolute; top: 50%; transform: translateY(-50%); width: 36px; height: 52px; background: rgba(17, 17, 19, .8); color: #fff; font-size: 24px; line-height: 1; }
.gal-btn.prev { left: 0; } .gal-btn.next { right: 0; }
.gal-btn:disabled { opacity: 0; pointer-events: none; }
.touch .gal-btn { display: none; }
.gal-foot { position: absolute; left: 0; right: 0; bottom: 8px; display: flex; justify-content: center; pointer-events: none; }
.gal-dots { display: flex; gap: 5px; pointer-events: auto; }
.gal-dots i { cursor: pointer; }
.gal-dots i { width: 6px; height: 6px; background: rgba(255, 255, 255, .45); box-shadow: 0 0 0 1px rgba(0,0,0,.25); }
.gal-dots i.on { background: #fff; }
.gal-count { position: absolute; right: 10px; bottom: -2px; font-size: 10px; letter-spacing: .08em; color: #fff; text-shadow: 0 1px 2px #000; }
.price-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.price { font: 600 22px/1.2 var(--display); font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.stock { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--ok); white-space: nowrap; }
.stock.out { color: var(--warn); }
.colors { margin: 12px 0 2px; }
.colors .label b { color: var(--text); font-weight: 600; text-transform: none; letter-spacing: 0; }
.swatches { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 2px; }
.swb { position: relative; width: 34px; height: 34px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .3); box-shadow: inset 0 0 0 2px var(--panel); }
.swb.on { outline: 2px solid #fff; outline-offset: 2px; }
.details { margin: 10px 0 14px; padding: 0; list-style: none; display: grid; gap: 4px; font-size: 11px; color: #c4c7cd; text-transform: uppercase; letter-spacing: .03em; }
.details li::before { content: '— '; color: var(--dim); }
.label { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .12em; margin: 12px 0 8px; }
.sizes { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.size { min-width: 48px; height: 44px; padding: 0 10px; border: 1px solid var(--line); font-weight: 600; color: var(--text); }
.size.on { border-color: transparent; background: var(--chrome); color: #0b0b0d; }
.size:disabled { color: var(--dim); text-decoration: line-through; cursor: default; }
.sizes .ask { font-size: 12px; color: var(--muted); }
.primary { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 52px; background: var(--chrome); color: #0b0b0d; font: 600 15px/1 var(--display);
  text-transform: uppercase; letter-spacing: .1em; text-decoration: none; text-align: center; padding: 0 12px; box-sizing: border-box; } /* ссылки-кнопки (<a>) не вылезают за край */
.primary.ghost { background: transparent; color: var(--text); border: 1px solid var(--line); }
.primary.tg { background: #2aabee; color: #fff; }
.primary + .primary { margin-top: 8px; }
.primary:disabled { opacity: .35; cursor: default; }
.ext { display: block; margin-top: 12px; text-align: center; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .1em; }

.cart-list { list-style: none; margin: 12px 0; padding: 0; display: grid; gap: 4px; }
.cart-list li { display: grid; grid-template-columns: 48px 1fr auto; grid-template-areas: "sw nm pr" "sw nm bt"; gap: 2px 10px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--line); }
.cart-list li.empty { display: block; color: var(--muted); border: 0; }
.cart-list .sw { grid-area: sw; width: 48px; height: 60px; background: #e9e9e6; }
.cart-list .nm { grid-area: nm; font-size: 12px; min-width: 0; text-transform: uppercase; }
.cart-list .nm small { display: block; color: var(--muted); text-transform: none; }
.cart-list .pr { grid-area: pr; font-variant-numeric: tabular-nums; font-weight: 600; text-align: right; white-space: nowrap; }
.cart-list .link { grid-area: bt; font-size: 11px; text-align: right; padding: 4px 0; text-decoration: underline; color: var(--muted); }
.sum { display: flex; justify-content: space-between; align-items: baseline; margin: 6px 0 14px; text-transform: uppercase; letter-spacing: .08em; }
.sum b { font: 600 20px var(--display); font-variant-numeric: tabular-nums; }
.sum.disc { color: var(--ok); margin-top: -8px; font-size: 12px; }
.sum.disc b { font-size: 14px; }

/* Каталог списком */
.overlay { position: absolute; inset: 0; background: var(--bg); overflow: auto; padding: calc(env(safe-area-inset-top, 0px) + 16px) 16px calc(env(safe-area-inset-bottom, 0px) + 24px); }
.overlay header { display: flex; justify-content: space-between; align-items: center; gap: 12px; max-width: 1180px; margin: 0 auto 12px; }
.overlay h1 { font: 600 24px var(--display); margin: 0; text-transform: uppercase; letter-spacing: .12em; }
.tabs { display: flex; gap: 2px; max-width: 1180px; margin: 0 auto 14px; overflow-x: auto; scrollbar-width: none; }
.tabs button { font: 500 12px/1 var(--display); text-transform: uppercase; letter-spacing: .12em; padding: 10px 14px; border: 1px solid var(--line); color: var(--muted); white-space: nowrap; }
.tabs button.on { background: var(--chrome); color: #0b0b0d; border-color: transparent; }
.grid { list-style: none; margin: 0 auto; padding: 0; max-width: 1180px; display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(158px, 1fr)); }
.grid li { background: var(--panel); border: 1px solid var(--line); display: flex; flex-direction: column; min-width: 0; }
.grid .th { width: 100%; max-width: 100%; aspect-ratio: 4 / 5; display: block; background: #e9e9e6; }
.grid .ci { padding: 8px 10px 4px; display: grid; gap: 2px; flex: 1; }
.grid small { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: .08em; }
.grid b { font: 500 14px/1.2 var(--display); text-transform: uppercase; letter-spacing: .02em; }
.grid .pr { font-weight: 600; font-variant-numeric: tabular-nums; margin-top: 4px; }
.grid .cb { padding: 8px 10px 10px; display: grid; gap: 6px; }
.btn { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 40px; border: 1px solid var(--line); font: 500 12px/1 var(--display); text-transform: uppercase; letter-spacing: .1em; color: var(--text); text-decoration: none; }
.btn.on { background: var(--chrome); color: #0b0b0d; border-color: transparent; }
.nogl { max-width: 1180px; margin: 0 auto 16px; background: var(--panel); padding: 12px 14px; }

/* Голосовой чат: включить / удерживать — говорить */
.voice { position: absolute; right: 16px; top: calc(env(safe-area-inset-top, 0px) + 62px); display: flex; flex-direction: row-reverse; gap: 6px; z-index: 4; }
.voice button { display: flex; align-items: center; gap: 8px; padding: 11px 14px; background: rgba(10, 10, 11, .74); border: 1px solid var(--line); color: var(--text); font: 500 11px/1 var(--display); text-transform: uppercase; letter-spacing: .12em; transition: background .2s, transform .15s, border-color .2s; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; }
.voice .dot { width: 8px; height: 8px; border-radius: 50%; background: #5d5d60; transition: background .2s; }
.voice.on #vToggle .dot { background: #3ad26a; }
.voice.wait #vToggle .dot { background: #f2c230; }
.voice.idle #vToggle .dot { background: #2f7a49; }
#sToggle.on .dot { background: #3ad26a; }
.sheet:not([hidden]) ~ .voice, .sheet:not([hidden]) ~ .voice-tip, .sheet:not([hidden]) ~ .chat-btn, .sheet:not([hidden]) ~ .chat, .sheet:not([hidden]) ~ .hunt-chip { visibility: hidden; }
.panels .hunt-chip, .panels .chat-btn, .panels .chat, .panels .voice, .panels .voice-tip { visibility: hidden; }
/* Редактор зала */
.editor { position: absolute; top: calc(env(safe-area-inset-top, 0px) + 70px); right: 16px; bottom: 16px; width: 350px; overflow-y: auto; z-index: 7; background: rgba(11, 11, 13, .93); border: 1px solid var(--line); padding: 14px; display: grid; gap: 10px; align-content: start; color: var(--text); }
.editor[hidden] { display: none; }
.ed-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.ed-head b, .ed-sel > b { font: 600 16px var(--display); letter-spacing: .06em; }
.ed-sel > small { font: 500 11px var(--mono); color: var(--muted); }
.editor h4 { margin: 6px 0 0; font: 600 11px var(--display); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.ed-row { display: flex; flex-wrap: wrap; gap: 6px; }
.ed-row button { flex: 1 1 auto; min-height: 36px; padding: 0 10px; }
.ed-sel { display: grid; gap: 8px; }
.ed-form { display: grid; gap: 6px; }
.ed-form label { display: grid; gap: 3px; font: 500 11px var(--mono); color: var(--muted); }
.ed-form input { min-height: 34px; background: #121214; border: 1px solid var(--line); color: var(--text); padding: 0 8px; font: 500 13px var(--mono); }
.ed-stash, .ed-versions { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.ed-stash li, .ed-versions li { display: flex; justify-content: space-between; align-items: center; gap: 6px; font: 500 11px/1.4 var(--mono); }
.ed-stash li button, .ed-versions li button { flex: none; min-height: 28px; padding: 0 8px; }
.editor .danger { color: #ff6b62; }
.editor, .editor * { box-sizing: border-box; }
.editor { overflow-x: hidden; }
.editor .primary { width: auto; min-height: 36px; margin: 0; padding: 0 12px; font-size: 12px; letter-spacing: .08em; }
.editor .primary + .primary { margin-top: 0; }
.ed-row > .primary:first-child:not(.ghost) { flex-basis: 100%; }
.ed-lib { display: flex; flex-wrap: wrap; gap: 5px; }
.editor .ed-lib .primary { flex: 1 1 calc(50% - 5px); min-height: 32px; font-size: 11px; letter-spacing: .04em; padding: 0 8px; }
.ed-stash li span, .ed-versions li span { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.ed-stash li .primary, .ed-versions li .primary { flex: none; min-height: 28px; padding: 0 10px; font-size: 11px; }
/* Охота за стикерами */
.hunt-chip { position: absolute; left: 16px; top: calc(env(safe-area-inset-top, 0px) + 90px); z-index: 4; display: inline-flex; align-items: center; gap: 7px; padding: 5px 9px; background: rgba(10, 10, 11, .55); color: #f4f4f2; font: 500 10px/1 var(--display); letter-spacing: .1em; text-transform: uppercase; border: 0; }
.hunt-chip[hidden] { display: none; }
.hunt-chip i { width: 9px; height: 9px; border-radius: 50%; background: #e0352b; box-shadow: 0 0 0 2px #f4f4f2; }
.hunt-chip b { font-variant-numeric: tabular-nums; }
.hunt-chip.done b { color: var(--ok); }
/* Баскетбол */
.hoop { position: absolute; left: 50%; bottom: calc(env(safe-area-inset-bottom, 0px) + 92px); transform: translateX(-50%); width: min(380px, calc(100% - 32px)); z-index: 4; background: rgba(10, 10, 11, .8); padding: 10px 12px; color: #f4f4f2; display: grid; gap: 8px; }
.hoop[hidden] { display: none; }
.hp-top { display: flex; align-items: center; gap: 16px; font: 500 11px var(--display); letter-spacing: .12em; text-transform: uppercase; }
.hp-top b { font-size: 17px; margin-left: 6px; font-variant-numeric: tabular-nums; }
.hp-top .x { margin-left: auto; width: 32px; height: 32px; }
.touch .hp-top .x { width: 44px; height: 44px; font-size: 24px; background: rgba(255, 255, 255, .08); } /* на телефоне — крупный крестик, легко попасть пальцем */
/* полоска силы: зелёная зона — поверх слабой заливки; где сила сейчас — тонкий бегунок, зону не закрывает */
.hp-meter { position: relative; height: 14px; background: rgba(255, 255, 255, .1); overflow: hidden; }
.hp-meter i { position: absolute; top: 0; bottom: 0; z-index: 1; background: rgba(92, 207, 138, .9); box-shadow: 0 0 8px rgba(92, 207, 138, .55); }
.hp-meter i[hidden] { display: none; }
.hp-meter b { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: #f4f4f2; opacity: .08; }
.hp-meter.on b { opacity: .14; }
.hp-meter em { position: absolute; top: 0; bottom: 0; width: 4px; margin-left: -2px; left: 0; z-index: 2; background: #fff; box-shadow: 0 0 0 1px #0b0b0d; opacity: .45; }
.hp-meter.on em { opacity: 1; }
.hp-msg { margin: 0; font: 500 11px/1.4 var(--mono); color: #c9ccd1; min-height: 1.4em; }
.hp-throw { position: absolute; right: 18px; bottom: calc(env(safe-area-inset-bottom, 0px) + 200px); width: 92px; height: 92px; border-radius: 50%; padding: 0; z-index: 5; touch-action: none; user-select: none; -webkit-user-select: none; }
.hp-throw[hidden], .desk .hp-throw { display: none; }
@media (max-width: 760px) { .hunt-chip { top: calc(env(safe-area-inset-top, 0px) + 132px); } .hoop { bottom: calc(env(safe-area-inset-bottom, 0px) + 196px); } }
/* Текстовый чат */
.chat-btn { position: absolute; right: 16px; top: calc(env(safe-area-inset-top, 0px) + 104px); z-index: 4; padding: 9px 12px; background: rgba(10, 10, 11, .74); border: 1px solid var(--line); color: var(--text); font: 500 11px/1 var(--display); text-transform: uppercase; letter-spacing: .12em; }
.chat-btn.new::after { content: ''; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--ok); margin-left: 8px; vertical-align: 1px; }
.chat { position: absolute; left: 16px; top: calc(env(safe-area-inset-top, 0px) + 122px); width: min(340px, calc(100vw - 150px)); z-index: 4; display: grid; gap: 6px; pointer-events: none; }
/* лента: закрыта — последние 5 реплик, через 15 с гаснут и не занимают места; открыта — вся история (до 60), с прокруткой */
.chat-log { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; align-content: start; max-height: min(34vh, 260px); overflow: hidden; }
.chat-log li { background: rgba(10, 10, 11, .72); padding: 5px 8px; font: 500 11px/1.4 var(--mono); color: #e6e8eb; word-break: break-word; transition: opacity .8s; }
.chat-log li b { color: #fff; font-weight: 700; margin-right: 6px; }
.chat-log li b.adm { color: #ff6b62; }
.chat-log li.fade { opacity: 0; }
.chat-log li.old { display: none; }
.chat.open .chat-log { overflow-y: auto; pointer-events: auto; overscroll-behavior: contain; touch-action: pan-y; scrollbar-width: thin; scrollbar-color: #5a5f68 transparent; }
.chat.open .chat-log li.old, .chat.open .chat-log li.fade { display: block; opacity: .85; }
.chat-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; pointer-events: auto; }
.chat-form[hidden] { display: none; }
.chat-form input { min-height: 38px; padding: 0 10px; background: rgba(10, 10, 11, .9); border: 1px solid #e9ecf0; color: var(--text); font: 500 13px var(--mono); }
.chat-form button { min-height: 38px; padding: 0 12px; }
@media (max-width: 760px) { .chat-btn { top: calc(env(safe-area-inset-top, 0px) + 100px); } .chat { top: calc(env(safe-area-inset-top, 0px) + 166px); width: calc(100vw - 32px); } } /* открыт профиль / корзина — кнопка не перекрывает шапку панели */
#vTalk[hidden] { display: none; }
.voice.talking #vTalk { background: #aa1e1a; border-color: #aa1e1a; transform: scale(1.05); }
.voice-tip { position: absolute; right: 16px; top: calc(env(safe-area-inset-top, 0px) + 108px); max-width: 260px; font: 500 10px/1.4 var(--mono); color: #c9ccd1; background: rgba(10, 10, 11, .7); padding: 6px 8px; z-index: 4; text-align: right; }
.voice-tip[hidden] { display: none; }
@media (max-width: 760px) { .voice { top: calc(env(safe-area-inset-top, 0px) + 60px); } .voice-tip { top: calc(env(safe-area-inset-top, 0px) + 100px); } }
.voice button { padding: 9px 12px; }
/* телефон горизонтально: экран низкий — раскладываем по краям, чтобы кнопки не налезали друг на друга и на игру:
   слева — онлайн, стикеры, чат; справа — звук и голос столбиком, «Говорить» — большая кнопка под большим пальцем;
   залы — внизу по центру, между джойстиком и «Говорить» */
@media (orientation: landscape) and (max-height: 500px) {
  .brand span, .chip .lbl { display: none; }
  .chip { min-height: 36px; padding: 0 9px; }
  .halls { top: auto; bottom: calc(env(safe-area-inset-bottom, 0px) + 10px); }
  .halls button { padding: 7px 9px; font-size: 10px; letter-spacing: .08em; }
  .online { top: calc(env(safe-area-inset-top, 0px) + 58px); left: max(16px, env(safe-area-inset-left, 0px)); }
  .hunt-chip { top: calc(env(safe-area-inset-top, 0px) + 84px); left: max(16px, env(safe-area-inset-left, 0px)); }
  .chat-btn { left: max(16px, env(safe-area-inset-left, 0px)); right: auto; top: calc(env(safe-area-inset-top, 0px) + 110px); padding: 7px 10px; font-size: 10px; }
  .chat { top: calc(env(safe-area-inset-top, 0px) + 144px); left: max(16px, env(safe-area-inset-left, 0px)); width: min(320px, 40vw); }
  .voice { top: calc(env(safe-area-inset-top, 0px) + 56px); right: max(16px, env(safe-area-inset-right, 0px)); flex-direction: column; align-items: flex-end; gap: 4px; }
  .voice button { padding: 7px 10px; font-size: 10px; }
  .voice #vTalk { position: fixed; right: calc(max(16px, env(safe-area-inset-right, 0px)) + 8px); bottom: calc(env(safe-area-inset-bottom, 0px) + 22px); min-width: 92px; min-height: 64px; justify-content: center; font-size: 12px; background: rgba(10, 10, 11, .8); }
  .voice-tip { top: calc(env(safe-area-inset-top, 0px) + 56px); right: calc(max(16px, env(safe-area-inset-right, 0px)) + 120px); }
  .ctrl .c-look { right: calc(max(16px, env(safe-area-inset-right, 0px)) + 120px); }
}

/* Музыка (в профиле) */
.mu { background: #141417; border: 1px solid var(--line); padding: 12px; margin: 0 0 14px; display: grid; gap: 10px; }
.mu[hidden] { display: none; }
.mu-now { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 10px; align-items: center; }
.mu-now small { display: block; font: 500 9px/1 var(--mono); color: var(--muted); text-transform: uppercase; letter-spacing: .14em; margin-bottom: 4px; }
.mu-now b { display: block; font: 600 14px/1.2 var(--display); text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mu-now span:not(.mu-eq) { display: block; font: 400 11px/1.3 var(--mono); color: #c9ccd1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mu-eq { display: flex; align-items: flex-end; gap: 2px; height: 16px; }
.mu-eq i { width: 4px; height: 4px; background: var(--muted); }
.mu.playing .mu-eq i { background: var(--text); animation: eq .9s ease-in-out infinite alternate; }
.mu.playing .mu-eq i:nth-child(2) { animation-delay: -.3s; } .mu.playing .mu-eq i:nth-child(3) { animation-delay: -.6s; }
@keyframes eq { from { height: 3px; } to { height: 16px; } }
.mu-ctl { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.mu-ctl button { min-height: 36px; }
.mu-vol { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; align-items: center; font: 500 10px/1 var(--mono); color: var(--muted); text-transform: uppercase; letter-spacing: .12em; }
.mu-vol input { width: 100%; accent-color: #e9ecf0; }
/* Радио (телевизор в шоуруме) */
.ra-now { display: grid; gap: 4px; margin: 0 0 14px; }
.ra-now small { font: 500 9px/1 var(--mono); color: var(--muted); text-transform: uppercase; letter-spacing: .14em; }
.ra-now b { font: 600 20px/1.15 var(--display); text-transform: uppercase; letter-spacing: .03em; }
.ra-now span { font: 400 12px/1.3 var(--mono); color: #c9ccd1; }
.ra-bar { height: 3px; background: #2a2a2e; margin-top: 8px; overflow: hidden; }
.ra-bar i { display: block; height: 100%; width: 0; background: var(--text); transition: width .9s linear; }
.ra-list { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 6px; }
.ra-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; background: #141417; border: 1px solid var(--line); padding: 8px 10px; }
.ra-list li.now { border-color: #e9ecf0; }
.ra-list b { display: block; font: 600 12px/1.25 var(--display); text-transform: uppercase; letter-spacing: .03em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ra-list span { display: block; font: 400 10px/1.3 var(--mono); color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ra-list button { min-height: 32px; padding: 0 10px; font: 500 10px/1 var(--display); letter-spacing: .1em; text-transform: uppercase; background: transparent; color: var(--text); border: 1px solid var(--line); }
.ra-list button.on { background: var(--chrome); color: #0b0b0d; border-color: transparent; }

/* Объявление администратора */
.notice { position: absolute; left: 50%; top: calc(env(safe-area-inset-top, 0px) + 106px); transform: translateX(-50%); max-width: min(560px, calc(100% - 32px)); background: rgba(170, 30, 26, .92); color: #fff; padding: 10px 14px; font: 500 12px/1.4 var(--mono); text-align: center; z-index: 5; }
.notice[hidden] { display: none; opacity: 0; }
@media (max-width: 520px) { .notice { top: calc(env(safe-area-inset-top, 0px) + 62px); } }
/* Туториал */
.tour .box { width: min(480px, 100%); }
.tour .step-n { font: 500 11px var(--mono); color: var(--muted); letter-spacing: .14em; text-transform: uppercase; }
.tour p { line-height: 1.55; margin: 8px 0; }
.tour ul { margin: 8px 0 4px; padding-left: 18px; line-height: 1.55; }
.tour .dots { display: flex; gap: 6px; margin: 14px 0; }
.tour .dots i { width: 22px; height: 3px; background: var(--line); }
.tour .dots i.on { background: var(--text); }
.tour .nav { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.tour .skip { background: none; border: 0; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .1em; margin-top: 10px; width: 100%; padding: 8px; }
/* Граффити-доска: редактор */
/* Tower Blocks */
.tower { position: absolute; inset: 0; background: #0b0b0d; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; grid-template-columns: minmax(0, 1fr); z-index: 6; animation: fade .2s ease-out; }
.tower[hidden] { display: none; }
.tower header { display: flex; justify-content: space-between; align-items: center; padding: calc(env(safe-area-inset-top, 0px) + 10px) 14px 10px; }
.tower header b { font: 600 18px var(--display); letter-spacing: .14em; display: block; }
.tower header small { font: 500 10px var(--mono); color: var(--muted); text-transform: uppercase; letter-spacing: .12em; }
.tw-stage { position: relative; min-height: 0; touch-action: none; user-select: none; -webkit-user-select: none; cursor: pointer; overflow: hidden; }
.tw-stage canvas { display: block; width: 100%; height: 100%; }
.tw-score { position: absolute; top: 18px; left: 0; right: 0; text-align: center; font: 600 64px var(--display); color: #333344; pointer-events: none; transition: transform .15s; }
.tw-score.pop { animation: twpop .3s ease-out; }
@keyframes twpop { 50% { transform: scale(1.25); color: #fff; } }
.tw-msg { position: absolute; left: 50%; bottom: 22px; transform: translateX(-50%); width: min(420px, calc(100% - 32px)); background: rgba(11, 11, 13, .82); color: #f4f4f2; padding: 12px 14px; font: 500 12px/1.5 var(--mono); text-align: center; pointer-events: none; }
.tw-msg[hidden] { display: none; }
.tw-board { position: absolute; top: 12px; right: 12px; width: 210px; background: rgba(11, 11, 13, .8); color: #f4f4f2; padding: 10px 12px; pointer-events: none; }
.tw-board > b { display: block; font: 600 11px var(--display); letter-spacing: .14em; text-transform: uppercase; margin-bottom: 6px; }
.tw-top { margin: 0; padding: 0; list-style: none; counter-reset: tw; display: grid; gap: 2px; }
.tw-top li { counter-increment: tw; display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: 6px; font: 500 11px/1.5 var(--mono); }
.tw-top li::before { content: counter(tw) '.'; color: #8a9098; }
.tw-top li span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tw-top li.me { color: #ffd166; }
.tw-top li.empty { display: block; color: #8a9098; }
.tw-top li.empty::before { content: none; }
@media (max-width: 560px) { .tw-board { width: 150px; top: 92px; padding: 8px 9px; } .tw-top li:nth-child(n+6) { display: none; } }
.tw-info { margin: 0; padding: 10px 14px calc(env(safe-area-inset-bottom, 0px) + 12px); font: 500 11px/1.5 var(--mono); color: #c9ccd1; text-align: center; }
/* «Угадай цену» */
.pg-stage { position: relative; min-height: 0; overflow: auto; display: grid; place-items: start center; padding: 6px 14px 14px; }
.pg-card { width: min(440px, 100%); display: grid; gap: 10px; }
.pg-card[hidden] { display: none; }
.pg-top { display: flex; justify-content: space-between; font: 500 12px var(--mono); color: #c9ccd1; }
.pg-top #pgLeft { font: 600 20px var(--display); color: #f4f4f2; }
.pg-timer { height: 4px; background: #222226; overflow: hidden; }
.pg-timer i { display: block; height: 100%; background: #f4f4f2; transform-origin: left; }
.pg-timer i.late { background: #e0352b; }
#pgPhoto { width: 100%; max-height: 42vh; aspect-ratio: 1; object-fit: contain; background: #e9e9e6; display: block; }
.pg-title { margin: 0; font: 600 16px/1.3 var(--display); letter-spacing: .06em; text-transform: uppercase; text-align: center; }
.pg-ask { display: grid; gap: 8px; }
.pg-ask[hidden] { display: none; }
.pg-ask output { font: 600 40px var(--display); text-align: center; }
.pg-ask input[type=range] { width: 100%; accent-color: #f4f4f2; height: 28px; }
.pg-row { display: grid; grid-template-columns: auto auto 1fr auto auto; gap: 6px; }
.pg-row button { min-width: 44px; height: 44px; border: 1px solid var(--line); color: var(--text); font: 600 14px var(--mono); }
.pg-go, .pg-row .pg-go { height: 44px; background: #f4f4f2; color: #0b0b0d; border: 0; font: 600 14px var(--display); letter-spacing: .14em; text-transform: uppercase; }
.pg-go:disabled { opacity: .5; }
.pg-res { display: grid; gap: 4px; text-align: center; padding: 8px 0; animation: fade .2s ease-out; }
.pg-res[hidden] { display: none; }
.pg-res small { font: 500 10px var(--mono); color: var(--muted); text-transform: uppercase; letter-spacing: .12em; }
.pg-res b { font: 600 44px var(--display); }
.pg-res span { font: 500 12px var(--mono); color: #c9ccd1; }
.pg-pts { font: 600 16px var(--display) !important; letter-spacing: .08em; color: #f4f4f2 !important; }
.pg-pts.good { color: #7ee2a8 !important; } .pg-pts.bad { color: #e0352b !important; }
.pg-intro > b { font: 600 26px var(--display); letter-spacing: .1em; text-transform: uppercase; }
.pg-intro p { margin: 0; font: 500 12px/1.6 var(--mono); color: #c9ccd1; }
.pg-list { margin: 0; padding: 0; list-style: none; display: grid; gap: 4px; }
.pg-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 10px; align-items: baseline; padding: 6px 0; border-bottom: 1px solid #222226; font: 500 11px var(--mono); }
.pg-list li span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pg-list li small { color: var(--muted); }
.pg-list li.link { cursor: pointer; } .pg-list li.link:hover span { text-decoration: underline; }
@media (max-width: 860px) { .pg-stage .tw-board { display: none; } }
/* S4 Упаковщик: паллета и посылки (картон, синяя лента S4) */
.pk-stage { position: relative; min-height: 0; display: grid; grid-template-rows: auto auto auto; align-content: center; justify-items: center; gap: 14px; padding: 6px 12px; touch-action: none; user-select: none; -webkit-user-select: none; overflow: hidden; }
.pk-score { display: flex; align-items: baseline; gap: 10px; height: 48px; }
.pk-score b { font: 600 44px var(--display); }
.pk-score span { font: 600 14px var(--display); letter-spacing: .08em; color: #ffd166; opacity: 0; }
.pk-score span.go { animation: pkpop 1.1s ease-out; }
@keyframes pkpop { 15% { opacity: 1; transform: translateY(-4px); } 70% { opacity: 1; } 100% { opacity: 0; transform: translateY(-14px); } }
.pk-grid { --cs: min(calc((100vw - 76px) / 8), calc((100vh - 330px) / 8), 52px); display: grid; grid-template-columns: repeat(8, var(--cs)); grid-template-rows: repeat(8, var(--cs)); gap: 2px; padding: 6px; background: #3a2c1e; border: 2px solid #5b4630; box-shadow: inset 0 0 0 2px #2a1f14; }
.pk-grid i { background: #251b12; box-shadow: inset 0 0 0 1px #2f2318; }
.pk-grid i.ok { outline: 2px solid #f4f4f2; outline-offset: -2px; background: rgba(244, 244, 242, .18); }
.pk-grid i.line { filter: brightness(1.35); }
.pk-grid i.drop { animation: pkdrop .2s ease-out; }
@keyframes pkdrop { from { transform: scale(.85); } }
.pk-grid i.boom { animation: pkboom .38s ease-in forwards; }
@keyframes pkboom { 30% { filter: brightness(2); transform: scale(1.06); } 100% { opacity: 0; transform: scale(.4); } }
.pk-grid .c1, .pk-piece .c1 { background: #c8a173; } .pk-grid .c2, .pk-piece .c2 { background: #b4824f; } .pk-grid .c3, .pk-piece .c3 { background: #dcbf93; }
.pk-grid .c4, .pk-piece .c4 { background: #2a3b66; } .pk-grid .c5, .pk-piece .c5 { background: #c9ccd1; } .pk-grid .c6, .pk-piece .c6 { background: #9c6b42; }
.pk-grid [class^=c], .pk-grid [class*=" c"], .pk-piece i { box-shadow: inset 0 0 0 1px rgba(0,0,0,.25), inset 0 -3px 0 rgba(0,0,0,.18); background-image: linear-gradient(90deg, transparent 42%, rgba(42, 59, 102, .55) 42%, rgba(42, 59, 102, .55) 58%, transparent 58%); }
.pk-grid i.ok:not([class*=c]) { box-shadow: none; }
.pk-hand { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; width: min(440px, 100%); height: 112px; --mc: 18px; }
.pk-hand > div { display: grid; place-items: center; border: 1px solid #222226; cursor: grab; touch-action: none; }
.pk-hand > div.lifted { opacity: .25; }
.pk-hand > div.dead { opacity: .35; }
.pk-piece { display: grid; gap: 2px; pointer-events: none; }
.pk-piece i { width: var(--mc); height: var(--mc); }
.pk-ghost { position: fixed; left: 0; top: 0; z-index: 20; opacity: .92; filter: drop-shadow(0 8px 14px rgba(0,0,0,.5)); }
.pk-stage .tw-msg { bottom: auto; top: 50%; transform: translate(-50%, -50%); pointer-events: none; }
@media (max-width: 860px) { .pk-stage .tw-board { display: none; } }
.paint { position: absolute; inset: 0; background: rgba(8, 8, 9, .96); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; grid-template-columns: minmax(0, 1fr); gap: 10px; padding: calc(env(safe-area-inset-top, 0px) + 12px) 12px calc(env(safe-area-inset-bottom, 0px) + 12px); z-index: 6; animation: fade .2s ease-out; }
.paint header { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.paint header b { font: 600 18px var(--display); text-transform: uppercase; letter-spacing: .12em; }
.paint .stage { display: grid; place-items: center; min-height: 0; min-width: 0; overflow: hidden; }
.paint .stage.scroll { place-items: start; overflow: auto; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.paint canvas { touch-action: none; cursor: crosshair; box-shadow: 0 10px 40px rgba(0,0,0,.6); max-width: none; }
.paint canvas.pan { cursor: grab; }
.paint .pan-btn { width: 38px; height: 34px; border: 1px solid var(--line); color: var(--text); font-size: 16px; }
.paint .pan-btn.on { background: var(--chrome); color: #0b0b0d; }
.paint .pan-btn[hidden] { display: none; }
@media (max-width: 520px) { .paint .sw { width: 26px; height: 26px; } .paint .tools { gap: 8px; } .paint .pal { justify-content: center; } }
.paint .tools { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; align-items: center; }
.paint .pal { display: flex; flex-wrap: wrap; gap: 6px; }
.paint .sw { width: 30px; height: 30px; border: 2px solid transparent; outline: 1px solid rgba(255,255,255,.18); }
.paint .sw.on { border-color: #fff; transform: scale(1.12); }
.paint .sw.eraser { background: repeating-conic-gradient(#f2f1ec 0 25%, #c9c9c4 0 50%) 50% / 12px 12px; }
.paint .sizes { display: flex; gap: 4px; }
.paint .sizes button { width: 38px; height: 34px; border: 1px solid var(--line); display: grid; place-items: center; }
.paint .sizes button.on { background: var(--chrome); }
.paint .sizes i { display: block; background: currentColor; border-radius: 50%; color: var(--text); }
.paint .sizes button.on i { color: #0b0b0d; }
.paint .sizes .s0 { width: 4px; height: 4px; } .paint .sizes .s1 { width: 8px; height: 8px; } .paint .sizes .s2 { width: 14px; height: 14px; } .paint .sizes .s3 { width: 22px; height: 22px; }
.paint small { display: block; color: var(--muted); font: 500 11px var(--mono); text-align: center; margin-top: 6px; }
.paint small[hidden] { display: none; }
/* Админка */
.adm-list { list-style: none; padding: 0; margin: 6px 0; display: grid; gap: 6px; }
.adm-list li { border: 1px solid var(--line); padding: 8px 10px; display: grid; gap: 6px; }
.adm-list .who2 { display: flex; justify-content: space-between; gap: 8px; font: 500 12px var(--mono); }
.adm-list .who2 small { color: var(--muted); }
.adm-list .acts { display: flex; flex-wrap: wrap; gap: 4px; }
.adm-list .acts button { font: 500 10px/1 var(--mono); text-transform: uppercase; letter-spacing: .06em; border: 1px solid var(--line); padding: 7px 8px; color: var(--text); }
.adm-list .acts button.danger { border-color: #8c2a25; color: #ff9d96; }
.adm-row { display: flex; gap: 6px; }
.adm-row input, .adm-row select, .adm-area { flex: 1; min-width: 0; background: transparent; border: 1px solid var(--line); color: var(--text); padding: 9px 10px; font: 500 12px var(--mono); }
.adm-area { width: 100%; min-height: 60px; resize: vertical; }
.adm-badge { display: inline-block; background: #aa1e1a; color: #fff; font: 600 10px var(--mono); padding: 3px 6px; letter-spacing: .1em; text-transform: uppercase; }

/* Модальные окна: касса, автомат */
.modal { position: absolute; inset: 0; background: rgba(0, 0, 0, .66); display: grid; place-items: center; padding: 16px; }
.modal .box { background: var(--panel); border: 1px solid var(--line); width: min(440px, 100%); max-height: 100%; overflow: auto; padding: 18px; }
.paylist { list-style: none; padding: 0; margin: 14px 0; display: grid; gap: 8px; font-size: 12px; }
.paylist li { display: flex; justify-content: space-between; gap: 12px; font-variant-numeric: tabular-nums; text-transform: uppercase; }
.paylist li span:last-child { white-space: nowrap; font-weight: 600; }
.note { background: var(--panel2); padding: 10px 12px; font-size: 11px; margin-bottom: 14px; color: #c4c7cd; }
.note b { color: var(--text); }
.note.warn { border-left: 2px solid var(--warn); }
.methods { color: var(--muted); font-size: 10px; text-align: center; margin-top: 10px; letter-spacing: .1em; text-transform: uppercase; }
.ok { width: 48px; height: 48px; background: var(--chrome); color: #0b0b0d; display: grid; place-items: center; font-size: 22px; margin-bottom: 12px; }
.err { color: var(--warn); font-size: 12px; min-height: 18px; margin: 6px 0; }
.form { display: grid; gap: 8px; margin: 6px 0 12px; }
.form label { display: grid; gap: 4px; font-size: 10px; text-transform: uppercase; letter-spacing: .12em; color: var(--muted); }
.form input, .form textarea, .form select { background: var(--panel2); border: 1px solid var(--line); color: var(--text); padding: 11px 12px; font-size: 14px; border-radius: 0; width: 100%; box-sizing: border-box; }
.form textarea { min-height: 64px; resize: vertical; }
.form .row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.form .row3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
.small-note { font-size: 11px; color: var(--muted); margin: 0 0 6px; }
.small-note.gap { margin-top: 10px; }
.ext.wide { width: 100%; }
.form.inline { grid-template-columns: 1fr auto; align-items: end; margin-bottom: 0; }
.form.inline .primary { padding-left: 14px; padding-right: 14px; }
.iban { display: grid; gap: 6px; margin: 10px 0 14px; text-align: left; }
.iban > div { display: grid; grid-template-columns: 96px 1fr auto; gap: 8px; align-items: center; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; }
.iban span { font-size: 10px; text-transform: uppercase; letter-spacing: .1em; color: var(--muted); }
.iban b { font: 600 13px/1.3 var(--mono); word-break: break-all; user-select: all; }
.iban .copy { font-size: 10px; text-transform: uppercase; letter-spacing: .08em; color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 6px 8px; background: transparent; }
.code-row { display: flex; gap: 8px; align-items: stretch; margin: 6px 0 12px; }
.code-row .primary { width: auto; flex: none; margin: 0; padding-left: 14px; padding-right: 14px; }
.rcode { flex: 1; min-width: 0; font: 600 15px/1.2 var(--mono); letter-spacing: .06em; padding: 12px; border: 1px dashed var(--line); border-radius: 8px; user-select: all; word-break: break-all; }
.gal-track canvas { flex: 0 0 100%; width: 100%; height: 100%; object-fit: contain; }
.check { display: flex !important; grid-template-columns: none; align-items: center; gap: 10px; font-size: 12px !important; text-transform: none !important; letter-spacing: 0 !important; color: var(--text) !important; }
.check input { width: 20px; height: 20px; accent-color: #c9ced6; }
.check[hidden] { display: none !important; }

/* Профиль и гардероб */
.who { display: flex; align-items: center; gap: 12px; margin: 12px 0; }
.who img, .who .ini { width: 52px; height: 52px; border-radius: 50%; object-fit: cover; background: var(--chrome); color: #111; display: grid; place-items: center; font: 600 20px var(--display); }
.who b { font: 600 18px/1.2 var(--display); text-transform: uppercase; display: block; }
.who small { color: var(--muted); }
.wardrobe { list-style: none; padding: 0; margin: 8px 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.wardrobe li { border: 1px solid var(--line); display: grid; }
.wardrobe li.on { border-color: #c9ced6; box-shadow: inset 0 0 0 1px #c9ced6; }
.wardrobe img { width: 100%; aspect-ratio: 4 / 5; object-fit: contain; background: #e9e9e6; display: block; }
.wardrobe span { font-size: 10px; text-transform: uppercase; padding: 6px 6px 0; line-height: 1.3; min-height: 26px; }
.wardrobe button { font: 500 11px/1 var(--display); text-transform: uppercase; letter-spacing: .1em; padding: 9px 6px; }
.wardrobe li.on button { background: var(--chrome); color: #0b0b0d; }
.empty-w { color: var(--muted); font-size: 12px; }
.badge { display: inline-block; padding: 3px 7px; background: var(--chrome); color: #0b0b0d; font: 600 12px/1.2 var(--display); letter-spacing: .06em; }

/* Логистика: калькулятор и тарифы */
.seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 2px; background: var(--panel2); padding: 2px; margin-bottom: 10px; }
.seg button { padding: 10px 4px; font: 500 12px/1 var(--display); text-transform: uppercase; letter-spacing: .1em; color: var(--muted); }
.seg button.on { background: var(--chrome); color: #0b1530; }
.quote { background: var(--panel2); padding: 14px; margin: 12px 0; }
.quote .big { font: 600 34px/1 var(--display); font-variant-numeric: tabular-nums; }
.quote .sub { color: var(--muted); font-size: 11px; margin-top: 6px; }
.quote .rows { display: grid; gap: 4px; margin-top: 10px; font-size: 12px; }
.quote .rows div { display: flex; justify-content: space-between; gap: 10px; }
.speed { height: 4px; margin: 12px 0; background: repeating-linear-gradient(90deg, #c9ced6 0 64px, transparent 64px 78px, #c9ced6 78px 96px, transparent 96px 112px); opacity: .55; }
.ptable { width: 100%; border-collapse: collapse; font-size: 12px; margin: 6px 0 4px; font-variant-numeric: tabular-nums; }
.ptable th { font: 500 10px var(--mono); color: var(--muted); text-transform: uppercase; letter-spacing: .06em; text-align: right; padding: 6px 4px; border-bottom: 1px solid var(--line); }
.ptable th:first-child, .ptable td:first-child { text-align: left; }
.ptable td { text-align: right; padding: 7px 4px; border-bottom: 1px solid var(--line); }
.steps { list-style: none; padding: 0; margin: 8px 0; display: grid; gap: 10px; counter-reset: s; }
.steps li { counter-increment: s; display: grid; grid-template-columns: 30px 1fr; gap: 10px; font-size: 12px; color: #c9ced6; }
.steps li::before { content: counter(s, decimal-leading-zero); font: 600 16px var(--display); color: var(--text); }
.steps b { color: var(--text); display: block; font-weight: 600; }

/* Подсказки управления */
.ctrl { position: absolute; inset: 0; pointer-events: none; transition: opacity .3s; }
.ctrl.off { opacity: 0; }
.ctrl > div { position: absolute; bottom: calc(env(safe-area-inset-bottom, 0px) + 28px); display: grid; justify-items: center; gap: 8px; transition: opacity .6s; }
.ctrl small { font: 400 10px/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: #fff; background: rgba(10, 10, 11, .6); padding: 5px 8px; transition: opacity .6s; }
.ctrl .used small { opacity: 0; }
.c-joy, .c-look, .c-keys { display: none !important; }
.touch .c-joy, .touch .c-look, .desk .c-keys { display: grid !important; }
.c-joy { left: 24px; }
.c-joy .ring { width: 104px; height: 104px; border-radius: 50%; border: 1.5px solid rgba(255, 255, 255, .75); background: rgba(255, 255, 255, .06); display: grid; place-items: center; transition: opacity .6s; }
.c-joy .ring i { width: 40px; height: 40px; border-radius: 50%; background: rgba(244, 244, 242, .85); animation: nudge 2.4s ease-in-out infinite; }
.c-joy.used .ring { opacity: .35; }
.c-joy.used .ring i { animation: none; }
.c-joy.active { opacity: 0; }
.c-look { right: 24px; }
.c-look svg { width: 84px; height: 44px; padding: 2px 10px; box-sizing: border-box; background: rgba(10, 10, 11, .5); }
.c-look svg .f { animation: swipe 2.4s ease-in-out infinite; }
.c-look.used { opacity: 0; }
.c-keys { left: 20px; grid-auto-flow: column; align-items: end; gap: 14px; }
.c-keys .kb { display: grid; grid-template-columns: repeat(3, 26px); gap: 4px; justify-content: center; }
.c-keys kbd { grid-row: 2; height: 26px; background: rgba(233, 236, 240, .9); color: #0b0b0d; font: 600 12px/26px var(--mono); text-align: center; }
.c-keys kbd:first-child { grid-row: 1; grid-column: 2; }
.c-keys .grp { display: grid; justify-items: center; gap: 8px; }
.c-keys svg { width: 26px; height: 56px; }
.c-keys.used { opacity: .35; }
@keyframes nudge { 0%, 100% { transform: translate(0, 0); } 30% { transform: translate(0, -14px); } 60% { transform: translate(12px, 0); } }
@keyframes swipe { 0%, 100% { transform: translateX(-12px); } 50% { transform: translateX(12px); } }
#perf { position: absolute; left: 16px; top: calc(env(safe-area-inset-top, 0px) + 100px); background: rgba(0,0,0,.7); color: #9fe0b8; font: 12px var(--mono); padding: 6px 8px; pointer-events: none; }

#loader { position: absolute; inset: 0; background: var(--bg); color: #f4f4f2; display: grid; place-items: center; transition: opacity .35s; }
#loader.done { opacity: 0; pointer-events: none; }
#loader .lw { display: grid; gap: 18px; justify-items: center; }
#loader img { width: 132px; height: auto; }
#loader b { font: 500 12px var(--display); letter-spacing: .5em; color: #c9ced6; margin-right: -.5em; }
#loader i { width: 140px; height: 1px; background: #333; overflow: hidden; position: relative; }
#loader i::after { content: ''; position: absolute; inset: 0; width: 40%; background: #f4f4f2; animation: load 0.9s ease-in-out infinite; }
@keyframes load { from { transform: translateX(-100%); } to { transform: translateX(250%); } }
@media (prefers-reduced-motion: reduce) { .ret-l, .ret i, .sheet, #loader i::after, .hint, .c-joy .ring i, .c-look svg .f { animation: none; transition: none; } }
