/*
 * Общая рамка интерактивных игр VIZ.ARTUM: шапка, кнопки, плашки, иконки.
 * Подключается в каждой игре ПЕРЕД её собственными стилями:
 *   <link rel="stylesheet" href="/fonts/fonts.css">
 *   <link rel="stylesheet" href="/interactive/ui.css?v=1">
 *   <link rel="stylesheet" href="style.css?v=N">
 * Внутри игры свои фон, палитра и картинки, а шапка, кнопки и плашки — отсюда
 * и в игре не переопределяются. Правила — в INTERACTIVE-STANDARD.md в корне проекта.
 */

:root{
	--viz-bg:#1a2332;
	--viz-gold:#d4a574;
	--viz-cream:#f4e4c1;
	--viz-blue:#7a9ec7;
	--viz-text:#e0e8f0;
	--viz-sans:'Montserrat',sans-serif;
	--viz-serif:'Cormorant Garamond',serif;
	--viz-bar-h:64px;
	--viz-bar-max:1200px; /* игра с более широкой сеткой может задать свою ширину шапки */
}

[hidden]{display:none!important}

/* Кнопки и поля наследуют шрифт страницы — иначе браузер ставит Arial 13 px. */
button,input,select,textarea{font:inherit;color:inherit}

/* У Montserrat на сайте нет начертания 700 — жирный везде полужирный. */
b,strong{font-weight:600}

/* У Cormorant цифры по умолчанию «старого стиля»: 0 похож на «о».
 * Прописные цифры включаются всей странице и наследуются. Сокращённая запись
 * font: … у элемента их сбрасывает — в стилях игр пишем font-family / font-size /
 * font-weight отдельно (или добавляем после font: строку font-feature-settings:'lnum' 1). */
html{font-feature-settings:'lnum' 1}

/* ===== Шапка =====
 * <header class="viz-bar">
 *   <a class="viz-bar__back" id="back-link" href="/interactive/" title="Ко всем играм">
 *     <span class="viz-ico viz-ico--back" aria-hidden="true"></span><span class="viz-bar__label">Ко всем играм</span></a>
 *   <div class="viz-bar__extra">…часы, кнопка игры — по желанию…</div>
 *   <a class="viz-bar__logo" href="/"><img src="/logo.png" alt="VIZ.ARTUM"></a>
 * </header>
 * Куда ведёт стрелка и как она подписана, решает /interactive/back.js.
 */
.viz-bar{position:relative;z-index:30;box-sizing:border-box;display:flex;align-items:center;gap:20px;width:100%;max-width:var(--viz-bar-max);height:var(--viz-bar-h);margin:0 auto;padding:0 24px;font-family:var(--viz-sans);background:transparent}
.viz-bar__back{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 4px 0 0;color:var(--viz-blue);text-decoration:none;font-size:14px;font-weight:400;letter-spacing:.03em;line-height:1.2;white-space:nowrap;transition:color .3s ease}
.viz-bar__back .viz-ico{transition:transform .3s ease}
.viz-bar__back:hover,.viz-bar__back:focus-visible{color:var(--viz-gold)}
.viz-bar__back:hover .viz-ico{transform:translateX(-4px)}
.viz-bar__extra{display:flex;align-items:center;gap:14px;margin-left:auto;color:var(--viz-blue);font-size:13px;letter-spacing:.03em}
.viz-bar__extra button{min-height:44px;padding:0;border:0;background:none;color:var(--viz-blue);font-size:13px;letter-spacing:.03em;cursor:pointer;transition:color .3s ease}
.viz-bar__extra button:hover,.viz-bar__extra button:focus-visible{color:var(--viz-gold)}
.viz-bar__logo{display:inline-flex;align-items:center;flex:none;min-width:44px;min-height:44px;justify-content:center;margin-left:auto}
.viz-bar__extra+.viz-bar__logo{margin-left:6px}
.viz-bar__extra[hidden]+.viz-bar__logo,.viz-bar__extra:empty+.viz-bar__logo{margin-left:auto}
/* Счётчик рядом с подписью кнопки в шапке: <button>Журнал <span class="viz-count">3</span></button> */
.viz-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;margin-left:6px;padding:0 6px;border-radius:10px;background:rgba(212,165,116,.18);color:var(--viz-cream);font-size:12px;font-weight:600;letter-spacing:0;line-height:1}
.viz-bar__logo img{display:block;height:40px;width:auto;opacity:.6;filter:drop-shadow(0 2px 8px rgba(0,0,0,.3));transition:opacity .3s ease,transform .3s ease,filter .3s ease}
.viz-bar__logo:hover img,.viz-bar__logo:focus-visible img{opacity:1;transform:scale(1.05);filter:drop-shadow(0 4px 12px rgba(212,165,116,.3))}

@media(max-width:600px){
	:root{--viz-bar-h:56px}
	.viz-bar{gap:12px;padding:0 16px}
	.viz-bar__back{font-size:13px}
	.viz-bar__extra{gap:10px;font-size:12px}
	.viz-bar__extra button{font-size:12px}
	.viz-bar__logo img{height:32px}
}

/* ===== Кнопки =====
 * .viz-btn                 — обычная: прозрачная «пилюля» с золотой обводкой, как на сайте;
 * .viz-btn.viz-btn--primary — главная: золотая заливка, одна на экран;
 * .viz-btn.viz-btn--quiet   — тихая: текстовая ссылка без рамки.
 * Работает и на <button>, и на <a>. Ряд кнопок — в .viz-actions.
 * На светлой «бумаге» кнопкам нужен другой контраст: поставьте контейнеру класс
 * .viz-light. Игра со своей задуманной гаммой (как «Бюро странных кукол») может
 * задать цвет главной кнопки переменными --viz-primary-bg, --viz-primary-bg-hover,
 * --viz-primary-ink, --viz-primary-line; форма, шрифт и размеры — только отсюда.
 * Между текстом и иконкой внутри кнопки стоит gap — не ставьте в подпись
 * отдельные <span> со словами, иначе появится двойной пробел.
 */
.viz-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;box-sizing:border-box;min-height:46px;padding:12px 26px;border:1px solid var(--viz-btn-line,rgba(212,165,116,.38));border-radius:50px;background:transparent;color:var(--viz-btn-ink,var(--viz-gold));font-family:var(--viz-sans);font-size:13px;font-weight:500;line-height:1.25;letter-spacing:.11em;text-transform:uppercase;text-align:center;text-decoration:none;cursor:pointer;transition:color .3s ease,border-color .3s ease,box-shadow .3s ease,transform .3s ease,background .3s ease;-webkit-tap-highlight-color:transparent}
.viz-btn:hover,.viz-btn:focus-visible{color:var(--viz-btn-ink-hover,var(--viz-cream));border-color:var(--viz-btn-line-hover,rgba(244,228,193,.6));background:linear-gradient(135deg,rgba(212,165,116,.14),rgba(244,228,193,.06));box-shadow:0 0 20px rgba(212,165,116,.18);transform:translateY(-2px)}
.viz-btn:active{transform:translateY(0)}
.viz-btn:focus-visible{outline:2px solid var(--viz-cream);outline-offset:3px}
.viz-btn--primary{border-color:var(--viz-primary-line,transparent);background:var(--viz-primary-bg,linear-gradient(135deg,#d4a574,#f4e4c1));color:var(--viz-primary-ink,#16202f);font-weight:600}
.viz-btn--primary:hover,.viz-btn--primary:focus-visible{color:var(--viz-primary-ink,#16202f);border-color:var(--viz-primary-line,transparent);background:var(--viz-primary-bg-hover,linear-gradient(135deg,#dcb07f,#f8ead0));box-shadow:0 0 24px rgba(212,165,116,.38)}
.viz-btn--quiet{min-height:40px;padding:8px 4px;border:0;border-radius:0;background:none;color:var(--viz-btn-quiet,var(--viz-blue));font-weight:400;letter-spacing:.03em;text-transform:none;font-size:14px}
.viz-btn--quiet:hover,.viz-btn--quiet:focus-visible{color:var(--viz-btn-ink-hover,var(--viz-gold));background:none;box-shadow:none;transform:none}
.viz-btn[disabled],.viz-btn[aria-disabled="true"]{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.viz-btn--primary[disabled]:hover{background:var(--viz-primary-bg,linear-gradient(135deg,#d4a574,#f4e4c1))}
.viz-light{--viz-primary-bg:linear-gradient(135deg,#c8955f,#e9cfa4);--viz-primary-bg-hover:linear-gradient(135deg,#d09f6b,#f0d9b2);--viz-primary-line:rgba(74,58,44,.35);--viz-btn-ink:#4a3a2c;--viz-btn-line:rgba(74,58,44,.45);--viz-btn-ink-hover:#1f1812;--viz-btn-line-hover:rgba(31,24,18,.7);--viz-btn-quiet:#4a3a2c}
.viz-light .viz-btn:focus-visible{outline-color:#1f1812}
.viz-btn--small{min-height:38px;padding:8px 18px;font-size:12px}
.viz-btn--block{display:flex;width:100%}
.viz-btn--tight{padding-left:14px;padding-right:14px;letter-spacing:.06em}

.viz-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;margin:24px 0 0}
@media(max-width:600px){
	.viz-actions{flex-direction:column;align-items:stretch}
	.viz-actions>.viz-btn{width:100%}
}

/* ===== Плашки на стартовом экране (те же тексты, что в поле «Плашки» в админке) =====
 * Цвет можно подстроить переменными --viz-chip-ink, --viz-chip-line, --viz-chip-bg. */
.viz-chips{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 26px;padding:0;list-style:none}
.viz-chips li{margin:0;font-family:var(--viz-sans);font-size:12px;font-weight:500;line-height:1.3;letter-spacing:.04em;text-transform:none;padding:7px 13px;border:1px solid var(--viz-chip-line,rgba(212,165,116,.4));border-radius:6px;color:var(--viz-chip-ink,rgba(236,230,218,.86));background:var(--viz-chip-bg,rgba(0,0,0,.2))}
@media(max-width:600px){.viz-chips{gap:6px}.viz-chips li{font-size:12px;padding:6px 11px}}

/* ===== Иконки =====
 * <span class="viz-ico viz-ico--next" aria-hidden="true"></span>
 * Рисуются цветом текста (currentColor), размер 1em × 1em, можно задать font-size.
 * Те же линии, что у иконок сайта: stroke 1.6, скруглённые концы.
 * Юникод-стрелки (→ ↗ ↓ ↻ ▶ ✓ ✕) и эмодзи вместо иконок не используем.
 */
.viz-ico{display:inline-block;flex:none;width:1.15em;height:1.15em;vertical-align:-.2em;background:currentColor;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat}
.viz-ico--back{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 12H5'/%3E%3Cpath d='M12 19l-7-7 7-7'/%3E%3C/svg%3E")}
.viz-ico--next{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='M12 5l7 7-7 7'/%3E%3C/svg%3E")}
.viz-ico--up{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 19V5'/%3E%3Cpath d='M5 12l7-7 7 7'/%3E%3C/svg%3E")}
.viz-ico--down{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14'/%3E%3Cpath d='M19 12l-7 7-7-7'/%3E%3C/svg%3E")}
.viz-ico--download{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v11'/%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3Cpath d='M5 20h14'/%3E%3C/svg%3E")}
.viz-ico--replay{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12a8 8 0 1 0 2.4-5.7'/%3E%3Cpath d='M4 4v5h5'/%3E%3C/svg%3E")}
.viz-ico--shuffle{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 4h4v4'/%3E%3Cpath d='M4 20L20 4'/%3E%3Cpath d='M20 16v4h-4'/%3E%3Cpath d='M15 15l5 5'/%3E%3Cpath d='M4 4l5 5'/%3E%3C/svg%3E")}
.viz-ico--play{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 4.5v15l12-7.5z'/%3E%3C/svg%3E")}
.viz-ico--pause{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 5v14'/%3E%3Cpath d='M16 5v14'/%3E%3C/svg%3E")}
.viz-ico--close{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12'/%3E%3Cpath d='M18 6L6 18'/%3E%3C/svg%3E")}
.viz-ico--check{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E")}
.viz-ico--lock{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='9' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E")}
.viz-ico--plus{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14'/%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E")}
.viz-ico--rotate{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 12a8 8 0 1 1-2.4-5.7'/%3E%3Cpath d='M20 4v5h-5'/%3E%3C/svg%3E")}
.viz-ico--book{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5.5A2.5 2.5 0 0 1 6.5 3H20v15H6.5A2.5 2.5 0 0 0 4 20.5z'/%3E%3Cpath d='M4 20.5A2.5 2.5 0 0 0 6.5 23H20v-5'/%3E%3C/svg%3E")}
.viz-ico--expand{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6'/%3E%3Cpath d='M10 20H4v-6'/%3E%3Cpath d='M20 4l-7 7'/%3E%3Cpath d='M4 20l7-7'/%3E%3C/svg%3E")}

/* Раскрывающийся блок без браузерного треугольника:
 * <details class="viz-details"><summary>Подробнее <span class="viz-ico viz-ico--down" aria-hidden="true"></span></summary>…</details> */
.viz-details>summary{list-style:none;cursor:pointer}
.viz-details>summary::-webkit-details-marker{display:none}
.viz-details>summary .viz-ico{transition:transform .25s ease}
.viz-details[open]>summary .viz-ico--down{transform:rotate(180deg)}

.viz-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
