/* ---------- шрифты студии ----------
   Держим у себя, а не тянем с чужого домена: так страница не зависит от
   доступности Google в России и не отдаёт туда адрес каждого посетителя.
   Два файла, вместе 33 килобайта, оба с кириллицей.
   Golos Text переменный, поэтому одного файла хватает на все начертания. */
@font-face{
  font-family:"Golos Text";font-style:normal;font-weight:400 600;font-display:swap;
  src:url(/fonts/golos.woff2) format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116,U+0000-00FF,U+2000-206F;
}
@font-face{
  font-family:Bitter;font-style:normal;font-weight:600;font-display:swap;
  src:url(/fonts/bitter-600.woff2) format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116,U+0000-00FF,U+2000-206F;
}

:root{
  --bg:#F0EEE6; --panel:#FCFAF4; --ink:#3D3929; --dim:#6E6653;
  --terra:#A6522F; --terra-dark:#8C4426; --amber:#E8A33D; --sage:#5B7F5B;
  --panel-2:#F6F2E8; --line:#D8CDB6; --line-soft:#E6DECC; --faint:#8F866F;
  /* Шкала отступов. Раньше числа стояли на глаз, и между блоками выходило то
     146 точек, то 88: ритма не было. Теперь все отступы берутся отсюда. */
  --s1:8px; --s2:16px; --s3:24px; --s4:40px; --s5:64px;
  /* Радиусов было шесть разных, свели к трём. */
  --radius-s:10px; --radius-m:14px; --radius:18px;
  --shadow-s:0 1px 2px rgba(61,57,41,.05);
  --shadow-m:0 1px 2px rgba(61,57,41,.05), 0 8px 24px rgba(61,57,41,.07);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font:16.5px/1.62 "Golos Text",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
.wrap{max-width:1060px;margin:0 auto;padding:0 20px}
.wrap-narrow{max-width:780px;margin:0 auto;padding:0 20px}
a{color:var(--terra)}
a:hover{color:var(--terra-dark)}
img{max-width:100%;height:auto}

/* шапка */
.site-head{padding:22px 0 10px;border-bottom:1px solid var(--line);background:var(--bg)}
.head-row{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:13px;text-decoration:none;color:inherit}
.brand img{width:44px;height:44px;border-radius:50%;display:block}
.brand b{font-size:20px;letter-spacing:.2px;display:block}
.brand span{display:block;font-size:12px;color:var(--dim);letter-spacing:.6px;text-transform:uppercase}
.nav{display:flex;gap:22px;flex-wrap:wrap;align-items:center}
.nav a{text-decoration:none;color:var(--dim);font-size:15px;padding:6px 0;border-bottom:2px solid transparent}
.nav a:hover{color:var(--terra)}
.nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--terra)}
/* Переключатель меню на скрытом флажке. Без JS и без details: браузер прячет
   содержимое закрытого details через content-visibility, и правилом display
   это не отменить, отчего десктоп остался вовсе без меню. Поймано снимком. */
.menu-check{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.menu-toggle{display:none}

@media (max-width:760px){
  /* На телефоне пункты прячутся под кнопку. Без этого меню занимало три
     строки и толкало вниз всё содержимое, а с ростом числа игр стало бы
     занимать четыре и пять. */
  .nav{display:none}
  .menu-check:checked ~ .nav{display:flex}
  .menu-toggle{
    display:block;list-style:none;cursor:pointer;
    padding:10px 14px;border:1.5px solid var(--line);border-radius:12px;
    color:var(--ink);font-size:15px;background:var(--panel);
  }
  .menu-check:checked ~ .menu-toggle{border-color:var(--terra);color:var(--terra)}
  .nav{
    flex-direction:column;align-items:stretch;gap:0;
    margin-top:10px;border:1px solid var(--line);border-radius:12px;
    background:var(--panel);overflow:hidden;
  }
  .nav a{padding:13px 16px;border-bottom:1px solid var(--line);font-size:16px}
  .nav a:last-child{border-bottom:0}
  .nav a[aria-current="page"]{background:rgba(166,82,47,.08)}
}

/* кнопки */
.btn{
  display:inline-block;background:var(--terra);color:#FFF7EC;text-decoration:none;
  padding:14px 30px;border-radius:12px;font-size:17px;font-weight:600;
  transition:background .15s ease, transform .15s ease;
}
.btn:hover{background:var(--terra-dark);color:#FFF7EC;transform:translateY(-1px)}
.btn.ghost{background:transparent;color:var(--terra);border:1.5px solid var(--terra);padding:12.5px 26px}
.btn.ghost:hover{background:rgba(166,82,47,.07);color:var(--terra-dark)}
.btn-row{display:flex;gap:12px;flex-wrap:wrap}

/* типографика */
/* Заголовки набраны Bitter: шкала стала круче, раньше h1 и h2 были почти
   одного размера и страница читалась плоско. */
h1,h2,h3{font-family:Bitter,Georgia,"Times New Roman",serif;font-weight:600;text-wrap:balance}
h1{font-size:clamp(30px,4.6vw,46px);line-height:1.1;margin:0 0 var(--s2);letter-spacing:-.5px}
h2{font-size:clamp(23px,3.2vw,32px);line-height:1.2;margin:var(--s4) 0 var(--s2);letter-spacing:-.3px}
h3{font-size:19px;line-height:1.3;margin:var(--s3) 0 var(--s1);letter-spacing:-.1px}
p{margin:0 0 14px}
ul,ol{padding-left:22px;margin:0 0 14px}
li{margin-bottom:6px}
.lead{font-size:clamp(16px,2vw,19px);color:var(--dim);max-width:34em}
.muted{color:var(--dim)}
section{padding:40px 0}

/* карточки */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:var(--s3)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s3);
  box-shadow:var(--shadow-s);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;
  display:flex;flex-direction:column;gap:12px}
.card h3{margin:0;font-size:20px}
.card p{margin:0;color:var(--dim);font-size:15.5px}
.card .foot{margin-top:auto;padding-top:6px}
.card.soon{background:var(--panel-2,#F6F2E8);border-style:dashed}
.card.soon h3{color:var(--dim)}
.tag{display:inline-block;font-size:12.5px;color:var(--sage);border:1px solid var(--sage);
  border-radius:20px;padding:3px 11px;width:max-content}
.card.soon .tag{color:var(--dim);border-color:var(--line)}

/* документ */
.doc{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:34px;margin:26px 0 44px}
.doc h2{margin-top:28px;font-size:20px}
.doc h2:first-child{margin-top:0}
.doc dl{margin:0}
.doc dt{font-weight:600;margin-top:14px}
.doc dd{margin:2px 0 0;color:var(--dim)}
.upd{color:var(--dim);font-size:14px;margin:-6px 0 22px}
table{width:100%;border-collapse:collapse;margin:0 0 16px;font-size:15.5px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--dim);font-weight:600;width:38%}

/* хлебные крошки */
.crumbs{font-size:14px;color:var(--dim);padding:18px 0 0}
.crumbs a{color:var(--dim);text-decoration:none}
.crumbs a:hover{color:var(--terra)}

/* подвал */
.site-foot{border-top:1px solid var(--line);padding:28px 0 44px;color:var(--dim);font-size:14.5px;margin-top:20px}
.foot-row{display:flex;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;align-items:flex-start}
.foot-row > div:first-child{flex:0 0 auto}
.foot-nav{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));
  gap:var(--s3) var(--s4);flex:1 1 520px;
}
.foot-col{display:flex;flex-direction:column;gap:7px}
.foot-col b{color:var(--ink);font-weight:600;font-size:14px;margin-bottom:2px}
.foot-col a{text-decoration:none}
.foot-col a:hover{color:var(--terra)}
.site-foot a{color:var(--dim)}

@media (max-width:760px){
  section{padding:30px 0}
  .doc{padding:22px}
  th{width:auto}
  table,tbody,tr,td,th{display:block}
  th{border:0;padding-bottom:2px}
  td{padding-top:0;padding-bottom:14px}
}

/* иллюстрации и кнопки «поделиться» в статьях */
article img{display:block;width:100%;height:auto}
.share{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:34px 0 6px;
  padding-top:20px;border-top:1px solid var(--line)}
.share-btn{
  display:inline-block;background:transparent;color:var(--terra);border:1.5px solid var(--line);
  border-radius:10px;padding:8px 16px;font:inherit;font-size:14.5px;cursor:pointer;text-decoration:none;
  transition:border-color .15s ease,background .15s ease;
}
.share-btn:hover{border-color:var(--terra);background:rgba(166,82,47,.06);color:var(--terra-dark)}
.guide-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;margin-top:8px}
.guide-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;display:flex;flex-direction:column;text-decoration:none;color:inherit;
  transition:transform .15s ease,border-color .15s ease}
.guide-card:hover{transform:translateY(-2px);border-color:var(--terra);color:inherit}
.guide-card img{aspect-ratio:16/9;object-fit:cover}
.guide-card .body{padding:18px 20px 22px}
.guide-card h3{margin:0 0 6px;font-size:18px}
.guide-card p{margin:0;color:var(--dim);font-size:15px}

/* кнопка аккаунта в шапке: «Войти» для гостя, имя с аватаром для вошедшего */
.acct{
  display:inline-flex; align-items:center; gap:8px;
  border:1.5px solid var(--terra); color:var(--terra); text-decoration:none;
  padding:7px 16px; border-radius:11px; font-size:14px; font-weight:600;
  white-space:nowrap; transition:background .15s ease;
}
.acct:hover{background:rgba(166,82,47,.07); color:var(--terra-dark)}
.acct img{width:24px; height:24px; border-radius:50%; display:block}
.acct-in{border-color:var(--line); color:var(--ink); font-weight:500}
/* Порядок в шапке. На широком: логотип, меню, аккаунт справа. На узком шапка
   переносится, и меню уезжает вниз целой строкой, а аккаунт остаётся наверху
   рядом с логотипом: иначе кнопка входа оказывалась под тремя строками меню и
   её было не видно. */
.acct{order:3; margin-left:auto}
.nav{order:2}
@media (max-width:760px){
  .acct{order:2; padding:6px 12px; font-size:13px}
  .nav{order:3; flex-basis:100%}
}


/* ---------- витрина игр ----------
   Карточка с настоящим кадром из игры, а не с текстом. Для игровой студии это
   не украшение: человек выбирает игру глазами, и текстовая карточка не даёт
   ему ничего, кроме работы. Сетка сама решает, сколько колонок влезет, поэтому
   пятая и десятая игра встают в неё без правки стилей. */
.games{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:24px;margin:26px 0 8px}
.game{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;display:flex;flex-direction:column;
  /* Тень в покое, как у остальных карточек: без неё карточка сливается с фоном
     (панель отличается от него всего в 1.11 раза) и не читается как предмет,
     который можно нажать. */
  box-shadow:var(--shadow-s);
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.game:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(61,57,41,.10);border-color:#D6CCB6}
.game .shot{display:block;position:relative;aspect-ratio:16/9;background:#E6E0D2;overflow:hidden}
.game .shot img{width:100%;height:100%;object-fit:cover;display:block}
.game .body{padding:18px 20px 20px;display:flex;flex-direction:column;gap:9px;flex:1}
.game h3{margin:0;font-size:20px;line-height:1.25}
.game h3 a{text-decoration:none;color:var(--ink)}
.game h3 a:hover{color:var(--terra)}
.game p{margin:0;color:var(--dim);font-size:15.5px}
.game .chips{display:flex;gap:8px;flex-wrap:wrap}
.game .foot{margin-top:auto;padding-top:12px;display:flex;gap:10px;flex-wrap:wrap}
.game .btn{padding:11px 22px;font-size:16px}
.game .btn.ghost{padding:9.5px 18px}

/* Метка поверх кадра: новинка, онлайн, в работе. */
.pin{
  position:absolute;top:12px;left:12px;z-index:1;
  /* Тёмный тон, а не основной: на основном белый текст даёт контраст 4.12 при
     норме 4.5. Замерено, а не на глаз. */
  background:var(--terra-dark);color:#FFF7EC;font-size:12.5px;font-weight:600;
  padding:5px 11px;border-radius:999px;letter-spacing:.2px;
}
.pin.calm{background:var(--sage)}
.chip{
  display:inline-block;font-size:12.5px;color:var(--dim);
  border:1px solid var(--line);border-radius:999px;padding:3px 11px;background:var(--bg);
}

/* Игра, которой ещё нет: место в ряду, но без обещаний. */
.game.soon{background:var(--panel-2,#F6F2E8);border-style:dashed}
.game.soon h3{color:var(--dim)}
.game.soon .shot{display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(135deg,#EDE7D9,#EDE7D9 10px,#E6E0D2 10px,#E6E0D2 20px)}
.game.soon .shot span{color:var(--dim);font-size:15px}

/* ---------- первый экран ---------- */
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center}
@media (max-width:820px){ .hero-grid{grid-template-columns:1fr;gap:26px} }
.hero-shot{border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--panel);display:block}
.hero-shot img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover}
.hero-shot figcaption{padding:11px 16px;font-size:14px;color:var(--dim)}


/* ---------- доступность ----------
   Правил фокуса не было ни одного, и ходьба по сайту с клавиатуры шла с
   системной синей рамкой поверх тёплой палитры. */
:focus-visible{outline:2px solid var(--terra);outline-offset:3px;border-radius:4px}
:focus:not(:focus-visible){outline:none}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
}

/* Значок жанра в метке карточки. Не иконка-картинка, а точка цветом семейства:
   так метка остаётся лёгкой, а глаз всё равно цепляет разницу. */
.chip{display:inline-flex;align-items:center;gap:6px}
.chip::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--line-strong);flex:none}
.chip[data-жанр="карты"]::before{background:var(--terra)}
.chip[data-жанр="море"]::before{background:#3E6B8A}
.chip[data-жанр="люди"]::before{background:var(--sage)}
.chip[data-жанр="боты"]::before{background:var(--amber)}


/* ---------- лента кадров на странице игры ----------
   Страница игры была узкой колонкой текста без единой картинки: человек решал,
   играть ли, по описанию. Кадры отвечают на этот вопрос быстрее любых слов. */
.shots.один{max-width:760px}
.shots{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:var(--s3);margin:var(--s3) 0}
.shot-card{margin:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-s)}
.shot-card img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}
.shot-card figcaption{padding:11px 16px;font-size:14px;color:var(--dim)}

/* Липкая кнопка «Играть» на странице игры: на телефоне она уезжала вверх и
   человек, дочитавший описание, оставался без входа в игру. */
.play-bar{
  position:sticky;bottom:0;z-index:5;display:none;
  padding:10px 16px calc(10px + env(safe-area-inset-bottom));
  background:linear-gradient(to top,var(--bg) 70%,rgba(241,238,229,0));
}
.play-bar .btn{display:block;text-align:center}
@media (max-width:760px){ .play-bar{display:block} }


/* ---------- полоска «играть сразу» ----------
   Ставит игры в первый экран телефона. До неё первая карточка начиналась на
   середине второго экрана прокрутки. */
.quick-row{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap;margin-top:var(--s3)}
.quick-label{font-size:13px;color:var(--dim);text-transform:uppercase;letter-spacing:.08em}
.quick{
  display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);
  border:1px solid var(--line);border-radius:var(--radius-m);padding:6px 12px 6px 6px;
  background:var(--panel);transition:border-color .15s ease,transform .15s ease;
}
.quick:hover{border-color:var(--terra);color:var(--terra);transform:translateY(-1px)}
.quick img{width:52px;height:30px;object-fit:cover;border-radius:6px;display:block}
.quick span{font-size:14.5px;font-weight:500}


/* ---------- что нового ----------
   Живая студия видна по датам. Понять, что сайт не заброшен, раньше было нечем. */
.news{list-style:none;margin:var(--s3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s2);max-width:70ch}
.news li{display:grid;grid-template-columns:170px 1fr;gap:var(--s2);align-items:start}
.news time{color:var(--terra);font-size:14.5px;font-variant-numeric:tabular-nums;padding-top:2px}
.news span{color:var(--dim)}
@media (max-width:620px){ .news li{grid-template-columns:1fr;gap:4px} }


/* На телефоне первый экран должен быть про игры, а не про студию: длинное
   пояснение прячем, на широком экране оно остаётся. */
@media (max-width:620px){
  .long{display:none}
  .site-head{padding:14px 0 8px}
  .brand img{width:36px;height:36px}
  .brand b{font-size:18px}
  h1{font-size:clamp(26px,7vw,34px)}
}


/* Кнопки шапки в одну строку с логотипом: «Войти» переносилась на вторую
   строку и шапка вырастала на 24 точки без всякой пользы. */
@media (max-width:620px){
  .head-row{flex-wrap:wrap;gap:10px}
  .brand{flex:1 1 auto;min-width:0}
  .menu-toggle{order:2}
  .acct{order:3;margin:0}
  .nav{order:4}
  .menu-check:checked ~ .nav{flex-basis:100%}
}


/* ---------- отбор игр по жанру ---------- */
.жанры[hidden]{display:none}
.жанры{display:flex;gap:8px;flex-wrap:wrap;margin:var(--s3) 0 0}
.жанр{
  font:inherit;font-size:14.5px;cursor:pointer;
  background:var(--panel);color:var(--dim);
  border:1px solid var(--line);border-radius:999px;padding:8px 16px;
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
.жанр:hover{border-color:var(--terra);color:var(--terra)}
.жанр[aria-pressed="true"]{background:var(--terra);border-color:var(--terra);color:#FFF7EC}

.live{margin:var(--s2) 0 0;font-size:14.5px;color:var(--sage)}
.live::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--sage);margin-right:8px;vertical-align:middle}

/* Ролик вместо кадра там, где он есть. Без звука, зациклен, с кадром-подложкой
   на случай, если браузер откажется играть: тогда человек видит картинку, а не
   чёрный прямоугольник. */
.hero-video{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--panel-2,#EDE7D9)}
/* Прятать ролик при просьбе меньше движения нельзя: кадр-подложка лежит ВНУТРИ
   него, и вместе с роликом исчезло бы всё. Поэтому ролик не прячем, а
   останавливаем скриптом, и на экране остаётся его первый кадр. */

/* Переключатель языка (с 07.10.2026): RU на .com, EN на .ru. Ведёт на ту же
   страницу соседнего домена. Стоит рядом с кнопкой входа и на телефоне тоже
   остаётся в верхней строке. */
.lang-switch{
  order:3; display:inline-flex; align-items:center; justify-content:center;
  min-width:40px; padding:7px 10px; border-radius:11px;
  border:1.5px solid var(--line); color:var(--ink); text-decoration:none;
  font-size:13px; font-weight:600; letter-spacing:.5px;
}
.lang-switch:hover{border-color:var(--terra); color:var(--terra)}
@media (max-width:760px){ .lang-switch{order:2; padding:6px 9px} }
@media (max-width:620px){ .lang-switch{order:3} }
/* Без кнопки входа (на .com) переключатель сам уходит вправо. */
.brand + .lang-switch{margin-left:auto}
@media (max-width:620px){ .brand + .lang-switch{margin-left:0} }
/* Язык пунктом меню: виден только на узком телефоне, где рядом с кнопкой
   входа для переключателя в шапке нет места. */
.nav .nav-lang{display:none}
@media (max-width:440px){
  .acct ~ .lang-switch{display:none}
  .acct ~ .nav .nav-lang{display:block}
}
/* Скрытый пункт языка стоит последним, поэтому черту снизу снимаем с
   предпоследнего, пока пункт скрыт. */
@media (max-width:760px){ .nav a:has(+ .nav-lang){border-bottom:0} }
@media (max-width:440px){ .acct ~ .nav a:has(+ .nav-lang){border-bottom:1px solid var(--line)} }
