/* === Стиль «Древняя Русь» === */
:root {
  color-scheme: light;
  /* Небо и земля */
  --sky-1: #7ba3c7;
  --sky-2: #5a82a8;
  --grass-1: #4a7c3e;
  --grass-2: #2d5a27;
  --soil: #8b5a2b;
  --soil-dark: #6b4423;
  /* Панели — пергамент, холст */
  --panel: #faf5eb;
  --panel-border: #8b6914;
  --panel-ornament: #a08020;
  --text: #2b2416;
  --heading: #1a1408;
  --muted: #5c4a2e;
  /* Основной — зелень земли, медь */
  --primary: #3d6b35;
  --primary-dark: #2d5a27;
  --danger: #8b2e2e;
  --danger-dark: #6b2222;
  /* Золото, медь — акценты */
  --accent-gold: #c9a227;
  --accent-gold-dark: #8b6914;
  --accent-copper: #b87333;
  /* Тени, глубина */
  --shadow: 0 4px 12px rgba(43, 36, 22, 0.35);
  --shadow-strong: 0 6px 20px rgba(20, 15, 8, 0.4);
  --hud-safe: 148px;
  --nav-safe: 68px;
  --breakpoint-mobile: 410px;
  --breakpoint-tablet: 760px;
  --breakpoint-admin: 860px;
  /* Шрифты */
  --font-heading: "Cormorant Garamond", "PT Serif", Georgia, serif;
  --font-body: "PT Serif", Georgia, "Times New Roman", serif;
}

/* === Общие стили модальных окон (В путь, Достижения, Строительство) === */
.app-fullscreen-modal {
  position: fixed;
  inset: 0;
  z-index: 10002;
  display: flex;
  flex-direction: column;
  background: var(--panel);
  color: var(--text);
  transition: opacity 0.25s ease;
}

.app-fullscreen-modal.hidden {
  pointer-events: none;
  opacity: 0;
  display: none;
}

.app-modal-dialog {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 16px;
  overflow: hidden;
}

.app-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
  flex-shrink: 0;
}

.app-modal-head h2 {
  margin: 0;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--heading);
  flex: 1;
}

.app-modal-head-trailing {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.app-modal-close {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: none;
  color: var(--text);
}

.app-modal-close:hover {
  opacity: 0.85;
}

.app-modal-close-icon {
  width: 40px;
  height: 40px;
  object-fit: contain;
  pointer-events: none;
}

/* === Справка (help) === */
.help-modal .help-modal-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.help-content {
  /* Контент + фиксированные кнопки навигации снизу */
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}

.help-section-single {
  margin-bottom: 0.75rem;
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding-right: 8px;
}

.help-nav {
  flex-shrink: 0;
  position: sticky;
  bottom: 0;
  margin-top: 10px;
  padding: 10px 0 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0), var(--panel));
  min-height: 64px;
}

.help-nav-btn {
  width: 52px;
  height: 44px;
  padding: 0;
  border-radius: 12px;
  border: 2px solid var(--panel-border);
  background: linear-gradient(180deg, #f5efe0, #ebe0cc);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.help-nav-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.help-nav-btn img {
  width: 28px;
  height: 28px;
  object-fit: contain;
}

.help-nav-dots {
  font-weight: 600;
  color: var(--muted, #666);
}

.help-section {
  margin-bottom: 1.5rem;
}

.help-section-title {
  margin: 0 0 0.5rem;
  font-size: 1.2rem;
  color: var(--heading);
}

.help-section-content {
  white-space: pre-wrap;
  margin-bottom: 0.75rem;
  color: var(--text);
}

.help-section-figure {
  margin: 0.75rem 0;
}

.help-section-figure img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
}

.help-section-figure figcaption {
  font-size: 0.85rem;
  color: var(--muted, #666);
  margin-top: 4px;
}

.help-error,
.help-empty {
  color: var(--muted, #666);
}

.help-edit-panel {
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  gap: 12px;
}

.help-edit-panel h3 {
  margin: 0 0 8px;
  font-size: 1.1rem;
}

#help-edit-sections {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.help-edit-section {
  padding: 12px;
  border: 1px solid var(--panel-border);
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.help-edit-accordion {
  border: 1px solid var(--panel-border);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.6);
  overflow: hidden;
}

.help-edit-summary-row {
  cursor: pointer;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  font-weight: 700;
  color: var(--heading);
  list-style: none;
}

.help-edit-summary-chevron {
  display: inline-block;
  flex-shrink: 0;
  width: 1em;
  text-align: center;
  transition: transform 0.15s ease;
  color: var(--muted, #666);
  font-size: 0.85rem;
}

.help-edit-accordion[open] > summary .help-edit-summary-chevron {
  transform: rotate(90deg);
}

.help-edit-summary-title {
  flex: 1;
  min-width: 0;
  text-align: left;
}

.help-edit-summary-actions {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}

.help-edit-move {
  min-width: 36px;
  min-height: 36px;
  padding: 4px 8px;
  font-size: 1rem;
  line-height: 1;
}

.help-edit-move:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

.help-edit-summary-row::-webkit-details-marker {
  display: none;
}

.help-edit-accordion[open] > summary.help-edit-summary-row {
  background: rgba(0, 0, 0, 0.04);
}

.help-edit-accordion .help-edit-section {
  border: none;
  border-radius: 0;
}

.help-edit-section label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 0.9rem;
}

.help-edit-section input[type="text"],
.help-edit-section textarea {
  padding: 8px;
  border-radius: 6px;
  border: 1px solid var(--panel-border);
}

.help-edit-remove {
  align-self: flex-start;
  font-size: 0.85rem;
}

.help-edit-image-wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.help-edit-image-label {
  font-size: 0.9rem;
}

.help-edit-image-preview {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
}

.help-edit-image-preview img {
  max-width: 48px;
  max-height: 48px;
  object-fit: contain;
}

.help-image-picker {
  position: absolute;
  inset: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.help-image-picker.hidden {
  display: none;
}

.help-image-picker-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
}

.help-image-picker-dialog {
  position: relative;
  background: var(--panel);
  border: 2px solid var(--panel-border);
  border-radius: 12px;
  padding: 16px;
  max-width: 100%;
  max-height: 80vh;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.help-image-picker-dialog h4 {
  margin: 0;
  font-size: 1.1rem;
}

.help-image-picker-tabs {
  display: flex;
  gap: 8px;
}

.help-image-picker-tab {
  padding: 6px 12px;
  border-radius: 8px;
  border: 1px solid var(--panel-border);
  background: #ebe0cc;
  cursor: pointer;
  font-size: 0.9rem;
}

.help-image-picker-tab.active {
  font-weight: 600;
  border-color: var(--accent-gold-dark);
  background: #e8e0d0;
}

.help-image-picker-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
  gap: 10px;
  overflow-y: auto;
  max-height: 50vh;
  padding: 4px 0;
}

.help-image-picker-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 8px;
  border-radius: 8px;
  border: 2px solid transparent;
  background: transparent;
  cursor: pointer;
  font-size: 0.75rem;
  text-align: center;
  color: var(--text);
}

.help-image-picker-item:hover {
  border-color: var(--accent-gold-dark);
  background: rgba(139, 105, 20, 0.08);
}

.help-image-picker-item img {
  width: 48px;
  height: 48px;
  object-fit: contain;
}

.help-edit-mode-active {
  font-weight: 700;
}

/* === Обратная связь (feedback) === */
.feedback-form-wrap {
  display: flex;
  flex-direction: column;
  gap: 12px;
  max-width: 400px;
}

.feedback-form-wrap label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 0.95rem;
}

.feedback-form-wrap select,
.feedback-form-wrap textarea {
  padding: 8px 12px;
  border-radius: 8px;
  border: 1px solid var(--panel-border);
}

.feedback-char-count {
  font-size: 0.85rem;
  color: var(--muted, #666);
}

.notifications-icon-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.notifications-icon {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.notifications-badge {
  position: absolute;
  top: -4px;
  right: -4px;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  border-radius: 999px;
  background: #c9443b;
  color: #fff;
  font-size: 0.7rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 2px var(--panel);
}

.notifications-badge.hidden {
  display: none;
}

/* Бейдж цифрой больше не используем — индикация через зелёный фон кнопки */
.top-menu .notifications-badge,
#notifications-btn-top .notifications-badge {
  display: none !important;
}

.notifications-content {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.notifications-panel {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.notifications-panel.hidden {
  display: none;
}

.warehouse-modal-content {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1;
}

.warehouse-panel {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: min(62vh, 520px);
  overflow-y: auto;
  padding: 4px 2px 8px;
  -webkit-overflow-scrolling: touch;
}

.warehouse-panel.hidden {
  display: none;
}

/* Единая карточка модалок: миниатюра | центр (название + мета) | справа числа / действия */
.app-modal-card {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: 0;
  padding: 10px 12px;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  border-radius: 10px;
  border: 2px solid var(--panel-border);
  background: rgba(255, 255, 255, 0.9);
  color: var(--text);
}

.app-modal-card-thumb {
  flex-shrink: 0;
  width: 96px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding-right: 12px;
  box-sizing: border-box;
}

.app-modal-card-center {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  text-align: center;
  gap: 6px;
  padding: 4px 6px;
}

.app-modal-card-name {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--heading);
  line-height: 1.25;
  width: 100%;
}

.app-modal-card-meta {
  font-size: 0.85rem;
  color: var(--text);
  line-height: 1.35;
  width: 100%;
}

.app-modal-card-side {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  gap: 8px;
  padding-left: 6px;
  min-width: 0;
}

.app-modal-card-qty {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--heading);
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}

.app-modal-card-side-muted {
  font-size: 0.72rem;
  color: var(--muted);
  text-align: right;
  line-height: 1.2;
}

/* Склад (модалка): те же колонки, что у «В путь» */
#warehouse-modal .warehouse-modal-card .warehouse-item-sprite {
  width: 96px;
  height: 96px;
  max-width: 96px;
  max-height: 96px;
  flex-shrink: 0;
  border-radius: 10px;
  border: 1px solid rgba(126, 97, 43, 0.35);
  background-color: rgba(255, 255, 255, 0.45);
  box-sizing: border-box;
}

#warehouse-modal .warehouse-modal-card .warehouse-item-icon {
  width: 96px;
  height: 96px;
  object-fit: contain;
  flex-shrink: 0;
  padding: 4px;
  box-sizing: border-box;
  border-radius: 10px;
  border: 1px solid rgba(126, 97, 43, 0.3);
  background: rgba(255, 255, 255, 0.55);
}

.warehouse-empty {
  margin: 12px 4px;
  text-align: center;
}

.notifications-item-head,
.notifications-item-body {
  margin-top: 4px;
}

.notifications-item {
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 10px;
  padding: 8px 10px;
  background: rgba(255, 255, 255, 0.95);
}

.notifications-item.notifications-item-read {
  opacity: 0.72;
}

.notifications-item.notifications-item-unread {
  border-color: rgba(77, 133, 60, 0.55);
}

.notifications-item.notifications-item-clickable {
  cursor: pointer;
}

.notifications-item.notifications-item-clickable:hover {
  border-color: rgba(77, 133, 60, 0.85);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
}

.npc-request-card {
  border: 2px solid var(--panel-border);
  border-radius: 12px;
  padding: 0;
  background: #faf7ef;
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.04);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.npc-request-card + .npc-request-card {
  margin-top: 10px;
}

.npc-request-card > .app-modal-card {
  border: none;
  border-radius: 0;
  background: transparent;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  box-shadow: none;
}

.npc-request-avatar {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--panel-border);
  flex-shrink: 0;
  background: #e8e0d4;
}

.npc-request-body {
  padding: 12px 14px 14px;
}

.npc-request-text {
  line-height: 1.35;
  margin-bottom: 10px;
}

.npc-request-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

@media (max-width: 520px) {
  .npc-request-meta {
    grid-template-columns: 1fr;
  }
}

.npc-request-actions {
  display: flex;
  gap: 8px;
  margin-top: 12px;
  flex-wrap: wrap;
}
.npc-decline-btn, .npc-complete-btn {
  padding: 6px 14px;
  border-radius: 8px;
  font-size: 0.9rem;
  cursor: pointer;
  border: 1px solid var(--panel-border);
  background: #f5f0e6;
}
.npc-decline-btn:hover, .npc-complete-btn:hover {
  background: #ebe5d9;
}
.npc-complete-btn {
  background: #d4e8c8;
  border-color: #a8c898;
  color: #1e2418;
  font-weight: 600;
}
.npc-complete-btn:hover {
  background: #c4e0b4;
  color: #141a10;
}

.npc-decline-btn {
  background: #f6d7d7;
  border-color: #d6a1a1;
  color: #2b1b1b;
  font-weight: 600;
}

.npc-decline-btn:hover {
  background: #f0caca;
}

.npc-request-block-title {
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--muted, #6b6560);
  margin-bottom: 4px;
}

.npc-request-block-body {
  font-size: 0.92rem;
  line-height: 1.35;
}

.admin-label-block {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  align-items: stretch;
}

.admin-label-block textarea {
  width: 100%;
  min-height: 3rem;
  box-sizing: border-box;
}

.admin-user-npcs {
  margin-top: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.admin-user-npc-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px 10px;
  border: 1px solid var(--panel-border);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.04);
}

.admin-user-npc-controls {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.admin-user-npc-current {
  font-size: 0.85rem;
}

.admin-user-npc-row select {
  max-width: 100%;
}

.admin-npc-url-hint code {
  font-size: 0.85em;
  word-break: break-all;
}

.app-modal-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
  flex-shrink: 0;
}

.app-modal-tab {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: 8px;
  border: 2px solid var(--panel-border);
  background: #f5efe0;
  color: var(--text);
  cursor: pointer;
  font-weight: 600;
  font-family: var(--font-body);
}

.app-modal-tab.active {
  background: var(--primary);
  color: #faf5eb;
  border-color: var(--primary-dark);
}

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

/* Вкладки уведомлений: на всю ширину модалки; текст — если хватает места */
#notifications-modal .app-modal-dialog {
  container-type: inline-size;
  container-name: notif-modal;
}

.notifications-modal-tabs {
  width: 100%;
  flex-wrap: nowrap;
  gap: 6px;
  justify-content: stretch;
}

.notifications-modal-tabs .app-modal-tab {
  flex: 1 1 0;
  min-width: 0;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 8px 4px;
  min-height: 56px;
  text-align: center;
  line-height: 1.15;
}

.notifications-modal-tabs .notifications-tab-icon {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  object-fit: contain;
  display: block;
  pointer-events: none;
}

/* Узко: только иконки; подпись визуально скрыта, но читается скринридерами */
.notifications-modal-tabs .notifications-tab-label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
  font-size: 0.68rem;
  font-weight: 600;
}

@container notif-modal (min-width: 420px) {
  .notifications-modal-tabs .notifications-tab-icon {
    width: 30px;
    height: 30px;
  }
}

@container notif-modal (min-width: 500px) {
  .notifications-modal-tabs .notifications-tab-label {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    padding: 0 2px;
    clip: auto;
    overflow: hidden;
    white-space: normal;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    line-height: 1.2;
    max-height: 2.45em;
    text-align: center;
    max-width: 100%;
  }
  .notifications-modal-tabs .notifications-tab-icon {
    width: 32px;
    height: 32px;
  }
}

@supports not (container-type: inline-size) {
  @media (min-width: 500px) {
    .notifications-modal-tabs .notifications-tab-label {
      position: static;
      width: auto;
      height: auto;
      margin: 0;
      padding: 0 2px;
      clip: auto;
      overflow: hidden;
      white-space: normal;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      line-height: 1.2;
      max-height: 2.45em;
      text-align: center;
      max-width: 100%;
    }
    .notifications-modal-tabs .notifications-tab-icon {
      width: 32px;
      height: 32px;
    }
  }
}

.notifications-modal-tabs .app-modal-tab.active .notifications-tab-icon {
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.35));
}

.app-modal-content {
  flex: 1;
  overflow-y: auto;
  min-height: 0;
}

.app-modal-card {
  padding: 10px;
  border-radius: 10px;
  border: 2px solid var(--panel-border);
  background: #fdf9f0;
  color: var(--text);
}

.app-modal-card-name {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--heading);
}

.app-modal-card-meta {
  font-size: 0.75rem;
  color: var(--muted);
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font-body);
  color: var(--text);
  background:
    linear-gradient(180deg, rgba(250, 245, 235, 0.5), rgba(250, 245, 235, 0)) 0 0 / 100% 200px no-repeat,
    linear-gradient(180deg, var(--sky-1) 0%, var(--sky-2) 40%, var(--grass-1) 40%, var(--grass-2) 100%);
}

body.in-game {
  background: var(--grass-2);
  touch-action: manipulation;
}

body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background-image:
    radial-gradient(circle at 20% 15%, rgba(255, 250, 240, 0.25), transparent 20%),
    radial-gradient(circle at 80% 10%, rgba(201, 162, 39, 0.08), transparent 15%);
}

body.in-game::after {
  display: none;
}

.loading-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: linear-gradient(180deg, var(--sky-1) 0%, var(--sky-2) 42%, var(--grass-1) 42%, var(--grass-2) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.3s ease;
}

.loading-overlay.hidden {
  pointer-events: none;
  opacity: 0;
}

.loading-content {
  text-align: center;
  padding: 24px;
}

.loading-spinner {
  width: 48px;
  height: 48px;
  margin: 0 auto 16px;
  border: 4px solid rgba(139, 105, 20, 0.3);
  border-top-color: var(--accent-gold);
  border-radius: 50%;
  animation: loading-spin 0.8s linear infinite;
}

@keyframes loading-spin {
  to { transform: rotate(360deg); }
}

.loading-text {
  margin: 0;
  font-size: 1.1rem;
  color: var(--text);
  font-weight: 600;
}

.loading-progress {
  margin: 8px 0 0;
  font-size: 0.9rem;
  color: var(--muted);
}

.app {
  max-width: 560px;
  margin: 0 auto;
  padding: 14px 14px 94px;
  display: grid;
  gap: 12px;
}

body.in-game .app {
  max-width: none;
  margin: 0;
  padding: 0;
}

.card {
  background: var(--panel);
  border: 2px solid var(--panel-border);
  border-radius: 12px;
  padding: 14px;
  box-shadow: var(--shadow);
  position: relative;
}

.card::before {
  content: "";
  position: absolute;
  inset: 4px;
  border: 1px solid rgba(139, 105, 20, 0.25);
  border-radius: 8px;
  pointer-events: none;
}

.auth-card {
  margin-top: 18px;
}

h1,
h2 {
  margin: 0 0 8px;
  color: var(--heading);
  font-family: var(--font-heading);
  font-weight: 600;
}

h1 {
  font-size: 2rem;
  letter-spacing: 0.02em;
}

h2 {
  font-size: 1.1rem;
}

.muted {
  color: var(--muted);
}

.form {
  display: grid;
  gap: 10px;
}

label {
  display: grid;
  gap: 4px;
  font-size: 0.95rem;
}

input,
select,
button {
  width: 100%;
  border: none;
  border-radius: 12px;
  padding: 10px 12px;
  font-size: 1rem;
}

input,
select {
  background: #fdf9f0;
  border: 2px solid var(--accent-gold-dark);
  color: var(--text);
  font-family: var(--font-body);
}

button {
  background: linear-gradient(180deg, var(--primary), var(--primary-dark));
  color: #faf5eb;
  cursor: pointer;
  font-weight: 600;
  font-family: var(--font-body);
  border: 2px solid var(--primary-dark);
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3);
}

button:hover {
  filter: brightness(1.08);
}

button:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  filter: grayscale(0.2);
}

button.ghost {
  background: linear-gradient(180deg, #f5efe0, #ebe0cc);
  color: var(--text);
  border-color: var(--accent-gold-dark);
  text-shadow: none;
}

button.danger {
  background: linear-gradient(180deg, #a04040, var(--danger));
  border-color: var(--danger-dark);
}

.tabs {
  display: grid;
  gap: 8px;
  grid-template-columns: 1fr 1fr;
  margin: 10px 0;
}

.tab {
  background: linear-gradient(180deg, #f0e4c4, #e5d4a0);
  color: var(--heading);
  border-color: var(--accent-gold-dark);
  font-family: var(--font-body);
}

.tab.active {
  background: linear-gradient(180deg, var(--accent-gold), var(--accent-gold-dark));
  color: var(--heading);
}

.hidden {
  display: none !important;
}

#game-screen {
  padding-top: 72px;
}

body.in-game #game-screen {
  position: fixed;
  inset: 0;
  padding-top: 72px;
}

.sticky-stats {
  flex: 1;
  min-width: 0;
  margin-top: 0;
}

.hud {
  display: grid;
  grid-template-columns: auto auto auto auto 1fr;
  gap: 8px;
  align-items: center;
  padding: 8px 10px;
  border-radius: 14px;
  background: transparent;
  border: none;
  box-shadow: none;
}

.hud-achievements,
ins,
.hud-cells {
  min-width: 74px;
  min-height: 40px;
  border-radius: 10px;
  border: 2px solid var(--accent-gold-dark);
  background: linear-gradient(180deg, #f5efe0, #ebe0cc);
  text-align: center;
  padding: 4px 6px;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 4px;
}

.hud-cells span {
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1;
}

.hud-level-star {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-size: 1rem;
  color: var(--muted);
}

.hud-level-star em .hud-level-star em,
.hud-achievements em {
  font-style: normal;
  font-weight: 700;
  color: var(--heading);
}

.hud-achievements {
  cursor: pointer;
}

.hud-achievements.has-pending {
  animation: pulse-pending 1.5s ease-in-out infinite;
}

@keyframes pulse-pending {
  0%, 100% { box-shadow: 0 0 0 0 rgba(139, 105, 20, 0.3); }
  50% { box-shadow: 0 0 0 6px rgba(139, 105, 20, 0); }
}

.hud-level span,
.hud-coins span {
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1;
}


.hud-coins .coin-icon-wrap {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
}

.coin-icon {
  width: 20px;
  height: 20px;
}

.coin-icon-sm {
  width: 14px;
  height: 14px;
  vertical-align: -2px;
  margin-right: 2px;
}

.quick-item .price-with-coin .coin-icon-sm,
.quick-item .coin-icon-sm {
  width: 20px;
  height: 20px;
  vertical-align: middle;
}

.price-with-coin {
  display: inline-flex;
  align-items: center;
  gap: 2px;
}

.price-with-coin .coin-icon-sm {
  margin-right: 0;
}

.hud-coins strong {
  font-size: 1rem;
  color: var(--heading);
}


.hud-xp {
  display: grid;
  gap: 4px;
}

.hud-xp-track {
  width: 100%;
  height: 12px;
  border-radius: 999px;
  overflow: hidden;
  border: 2px solid var(--accent-gold-dark);
  background: linear-gradient(180deg, #ebe0cc, #e0d0b0);
}

.hud-xp-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--primary), var(--accent-gold));
}

.hud-xp-text {
  display: block;
  text-align: center;
  font-size: 0.82rem;
  color: var(--muted);
}

.seed-select-label {
  margin-top: 8px;
}

.view-tabs {
  display: flex;
  gap: 4px;
  margin: 10px 0 8px;
  flex-wrap: wrap;
}

.view-tab {
  padding: 8px 14px;
  font-size: 0.9rem;
  border: 2px solid var(--accent-gold-dark);
  border-radius: 10px;
  background: linear-gradient(180deg, #f5efe0, #ebe0cc);
  color: var(--text);
  cursor: pointer;
  transition: background 0.15s, box-shadow 0.15s;
  font-family: var(--font-body);
}

.view-tab:hover {
  background: linear-gradient(180deg, #f0e8d8, #e8ddc8);
}

.view-tab.active {
  background: linear-gradient(180deg, #fdf9f0, #f5efe0);
  border-color: var(--accent-gold);
  box-shadow: 0 0 0 1px rgba(139, 105, 20, 0.3) inset;
  font-weight: 600;
}

.shop-list {
  margin-top: 10px;
  display: grid;
  gap: 8px;
}

.shop-item {
  border: 2px solid var(--accent-gold-dark);
  border-radius: 12px;
  padding: 8px;
  display: grid;
  gap: 6px;
  background: linear-gradient(180deg, #fdf9f0, #f5efe0);
}

.shop-item-unlocked {
  box-shadow: 0 0 0 1px rgba(61, 107, 53, 0.25) inset;
}

.shop-item-locked {
  background: linear-gradient(180deg, #ebe0cc, #e0d0b0);
}

.shop-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}

.shop-item-price-insufficient {
  color: #c62828 !important;
  font-weight: 700;
}

.shop-item-price-insufficient .price-with-coin,
.shop-item-price-insufficient .price-with-coin span {
  color: #c62828 !important;
}

.warehouse-list {
  display: grid;
  gap: 8px;
}

.warehouse-empty {
  padding: 8px 2px;
}

/* Устаревшая сетка склада (только внутри .warehouse-list, не модалка) */
.warehouse-list > .warehouse-item {
  border: 2px solid var(--accent-gold-dark);
  border-radius: 12px;
  padding: 8px;
  background: linear-gradient(180deg, #fdf9f0, #f5efe0);
  display: grid;
  gap: 8px;
}

.warehouse-main {
  display: grid;
  grid-template-columns: 34px 1fr;
  align-items: center;
  column-gap: 8px;
  gap: 2px;
}

.warehouse-main strong,
.warehouse-main small {
  grid-column: 2;
}

.warehouse-icon,
.warehouse-icon.resource-sprite {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  object-fit: cover;
  border: 1px solid rgba(126, 97, 43, 0.4);
  background: rgba(255, 255, 255, 0.35);
}

.resource-sprite {
  display: block;
  background-repeat: no-repeat;
}

.quick-item > .resource-sprite {
  width: 100%;
  aspect-ratio: 1;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.45);
}

.warehouse-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}

.warehouse-actions button {
  font-size: 0.84rem;
  padding: 8px 6px;
}

.build-actions {
  display: grid;
  gap: 8px;
  margin-bottom: 8px;
}

.build-item {
  border: 2px solid var(--panel-border);
  border-radius: 12px;
  padding: 8px;
  display: grid;
  gap: 6px;
  background: #fdf9f0;
  color: var(--text);
}

.build-item.drag-source-card,
.quick-item.drag-source-card {
  cursor: grab;
}

.build-item.drag-source-active,
.quick-item.drag-source-active {
  opacity: 0.45;
  filter: saturate(0.6);
}

.build-title {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.build-desc {
  font-size: 0.9rem;
  line-height: 1.2;
}

.view {
  display: grid;
  gap: 10px;
}

#account-view.account-modal .account-modal-content {
  overflow-y: auto;
  padding-right: 8px;
  -webkit-overflow-scrolling: touch;
}

#account-view.account-modal #account-admin-toggle {
  width: 100%;
  margin-bottom: 10px;
}

/* старые стили #account-admin-toggle перенесены в .account-modal */

#account-view.account-modal .account-profile-card {
  border: none;
  box-shadow: none;
  background: transparent;
  padding: 0;
}

#account-view.account-modal .account-profile-card::before {
  display: none;
}

#account-view.account-modal .account-setting {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 10px 0 6px;
  padding: 6px 0;
  border-radius: 0;
  background: transparent;
}

#account-view.account-modal .account-setting input[type="checkbox"] {
  margin: 0;
  width: auto;
  padding: 0;
  border-radius: 4px;
}

#account-view.account-modal #reset-progress-btn {
  margin-top: 10px;
  margin-bottom: 14px;
}

#account-view.account-modal .reset-confirm-wrap {
  display: grid;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(0, 0, 0, 0.05);
  border: 1px solid rgba(139, 105, 20, 0.25);
  margin-top: -6px;
  margin-bottom: 14px;
}

#account-view.account-modal .reset-confirm-wrap.hidden {
  display: none !important;
}

#account-view.account-modal .reset-confirm-text {
  font-size: 0.95rem;
}

#account-view.account-modal .reset-confirm-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}

#account-view.account-modal .reset-confirm-actions .ghost,
#account-view.account-modal .reset-confirm-actions .primary-btn {
  width: auto;
  padding: 8px 12px;
  border-radius: 10px;
}

.farm-world-wrap {
  margin: 0;
  position: fixed;
  inset: 0;
  z-index: 1;
  touch-action: manipulation;
  /* Не выделять спрайты/текст на поле при тапе и перетаскивании мышью */
  user-select: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
}

.farm-distant-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  /* background-image задаётся из JS (state.assetVersion) с ?v= для единого URL с preload */
  background-position: center center;
  background-size: 100% auto;
  background-repeat: no-repeat;
  image-rendering: auto;
  -webkit-backface-visibility: hidden;
  transform: translateZ(0);
}

.farm-world {
  position: relative;
  z-index: 1;
  touch-action: manipulation;
}
.farm-map,
.farm-grid {
  touch-action: manipulation;
}

.tile-tune-panel {
  position: fixed;
  left: 10px;
  bottom: calc(var(--nav-safe) + 14px);
  z-index: 9999;
  pointer-events: auto;
  background: var(--panel);
  border: 2px solid var(--accent-gold-dark);
  border-radius: 12px;
  padding: 8px;
}

.tile-tune-controls {
  display: grid;
  gap: 6px;
  margin-top: 8px;
  font-size: 0.8rem;
}

.tile-tune-controls label {
  display: grid;
  grid-template-columns: 60px 1fr 40px;
  align-items: center;
  gap: 6px;
}

.tile-tune-controls input[type="range"] {
  padding: 0;
  margin: 0;
}

.tile-tune-controls.hidden {
  display: none !important;
}

.tile-tune-cell-select {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.tile-tune-cell-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 2px;
}

.tile-cell-btn {
  width: 24px;
  height: 24px;
  padding: 0;
  font-size: 0.7rem;
  border-radius: 4px;
  border: 1px solid var(--accent-gold-dark);
  background: rgba(255, 255, 255, 0.8);
  color: var(--text);
  cursor: pointer;
}

.tile-cell-btn:hover,
.tile-cell-btn.active {
  background: var(--accent-gold);
  color: #fff;
}

.tile-tune-cell-offset {
  display: grid;
  gap: 4px;
  padding-top: 4px;
  border-top: 1px solid rgba(88, 64, 23, 0.2);
}

.drag-cancel-zone {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: calc(var(--nav-safe) + 8px);
  z-index: 40;
  min-width: 240px;
  text-align: center;
  border: 2px dashed #e58f6b;
  background: rgba(74, 22, 14, 0.78);
  color: #fff3dd;
  font-weight: 700;
  border-radius: 12px;
  padding: 10px 14px;
  pointer-events: auto;
}

#game-screen.drag-action-active .quick-panel,
#game-screen.drag-action-active #construction-view .card {
  opacity: 0.62;
}

.farm-view.build-mode-active .farm-world-wrap {
  box-shadow: inset 0 0 0 4px rgba(255, 200, 0, 0.55);
}

#construction-card {
  position: relative;
}

#construction-card.build-mode-dimmed {
  opacity: 0.5;
}

.build-item.build-mode-selected {
  outline: 2px solid rgba(255, 200, 0, 0.8);
  outline-offset: 2px;
}

.quick-panel {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: calc(var(--nav-safe) + 8px);
  width: calc(100vw - 16px);
  z-index: 17;
  border-radius: 12px;
  border: 2px solid var(--panel-border);
  background: var(--panel);
  color: var(--text);
  box-shadow: var(--shadow-strong);
  padding: 10px;
  display: grid;
  gap: 8px;
}

.quick-panel-head {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}

.quick-panel-head-trailing {
  flex-shrink: 0;
}

.quick-panel-head-coins {
  display: none;
}

.quick-panel.quick-panel-construction .quick-panel-head-coins {
  display: flex;
}

.quick-panel.quick-panel-expanded {
  inset: 0;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  width: 100%;
  transform: none;
  border-radius: 0;
  border: 0;
  padding: 16px;
  display: flex;
  flex-direction: column;
  min-height: 0;
  z-index: 10002;
}

.quick-panel.quick-panel-expanded .quick-panel-head {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.quick-panel.quick-panel-expanded .quick-panel-title {
  margin: 0;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--heading);
  flex: 1;
}

.quick-panel.quick-panel-expanded .quick-panel-close {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  color: var(--text);
}

.quick-panel.quick-panel-expanded .quick-panel-close:hover {
  opacity: 0.85;
}

.quick-panel.quick-panel-expanded .quick-panel-tabs {
  flex-shrink: 0;
  margin-bottom: 12px;
}

.quick-panel.quick-panel-expanded .quick-panel-tabs .view-tab {
  padding: 8px 16px;
  border-radius: 8px;
  border: 2px solid var(--panel-border);
  background: rgba(255, 255, 255, 0.9);
  color: var(--text);
  font-weight: 600;
}

.quick-panel.quick-panel-expanded .quick-panel-tabs .view-tab.active {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary-dark);
}

.quick-panel.quick-panel-expanded .quick-panel-list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  grid-auto-rows: minmax(0, auto);
  gap: 10px;
  align-content: start;
}

.quick-panel.quick-panel-expanded.quick-panel-construction {
  box-sizing: border-box;
  min-height: 100dvh;
  min-height: 100vh;
}

.quick-panel.quick-panel-construction .quick-panel-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1 1 0%;
  min-height: min(320px, 50dvh);
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  /* запас под смещения из админки (translate), чтобы не резало по краю списка */
  padding-left: 10px;
  padding-right: 10px;
  box-sizing: border-box;
}

.quick-panel.quick-panel-construction .quick-item {
  min-width: 0;
  max-width: 100%;
  width: 100%;
  flex-shrink: 0;
}

/* Строительство (quick-panel): та же сетка, что у модалки «В путь»; миниатюры как в достижениях (.game-card-thumb--*) */
.quick-panel.quick-panel-construction .quick-item.quick-visual-card.quick-construction-card {
  display: flex;
  flex-direction: row;
  align-items: center;
  height: auto;
  min-height: 0;
  max-height: none;
  aspect-ratio: unset;
  overflow: hidden;
}

.quick-panel.quick-panel-construction .quick-item.quick-visual-card.quick-construction-card .app-modal-card-thumb {
  width: 88px;
  min-width: 88px;
  min-height: 72px;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  align-self: center;
  overflow: hidden;
  border-radius: 10px;
}

/* transform / field background / object-position — в inline из getBuildingConstructionThumbStyle */
.quick-panel.quick-panel-construction .quick-item.quick-visual-card.quick-construction-card .app-modal-card-thumb .game-card-thumb--full {
  margin: 0;
  image-orientation: none;
}

.quick-panel.quick-panel-construction .quick-item.quick-visual-card.quick-construction-card .app-modal-card-thumb .game-card-thumb--crop {
  margin: 0;
  display: block;
  background-repeat: no-repeat;
}

.quick-panel.quick-panel-construction .quick-item.quick-visual-card.quick-construction-card .app-modal-card-center h4 {
  margin: 0;
  font-size: 0.92rem;
  line-height: 1.25;
  word-break: break-word;
  overflow-wrap: anywhere;
  color: var(--heading);
  font-family: var(--font-heading);
  font-weight: 700;
}

.quick-panel.quick-panel-construction .quick-item.quick-visual-card.quick-construction-card .app-modal-card-side .quick-item-price {
  text-align: right;
}

.quick-panel.quick-panel-construction .quick-item.quick-visual-card.quick-construction-card .app-modal-card-side .quick-item-cells {
  text-align: right;
  font-weight: 700;
}

.quick-panel.build-mode-dimmed {
  opacity: 0.5;
}

/* Подтверждение в конце body (не внутри #game-screen), z-index выше .app-fullscreen-modal (10002) */
#delete-confirm-bar.build-confirm-bar {
  z-index: 10010;
}

.build-confirm-bar {
  position: fixed;
  bottom: 20px;
  right: 20px;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
  padding: 12px 16px;
  background: var(--panel);
  border: 3px solid var(--panel-border);
  border-radius: 12px;
  box-shadow: var(--shadow-strong);
}

.build-confirm-bar.hidden {
  display: none;
}

.build-confirm-text {
  font-weight: 600;
  color: var(--heading);
}

.build-confirm-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
}

.build-confirm-setting {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  user-select: none;
  padding: 6px 8px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.12);
}

.build-confirm-setting-second-row {
  align-self: flex-end;
  /* Текст у правого края, чекбокс слева */
  flex-direction: row-reverse;
}

.build-confirm-setting input[type="checkbox"] {
  /* глобальный input{width:100%} ломает чекбокс */
  width: auto;
  padding: 0;
  margin: 0;
}

.build-confirm-actions #build-confirm-ok {
  min-width: 150px;
  width: auto;
  padding-left: 14px;
  padding-right: 14px;
  white-space: nowrap;
}

.account-setting {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 10px 0 6px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(0, 0, 0, 0.06);
  user-select: none;
}

.build-confirm-actions .primary-btn {
  padding: 8px 20px;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(180deg, var(--primary), var(--primary-dark));
  border: 2px solid #2a7a1f;
  border-radius: 8px;
  cursor: pointer;
}

.build-confirm-actions .primary-btn:hover {
  background: linear-gradient(180deg, #4a7c3e, var(--primary));
}

.build-confirm-actions .primary-btn.danger {
  background: linear-gradient(180deg, #c9443b, #a72f27);
  border-color: #a72f27;
}

.build-confirm-actions .primary-btn.danger:hover {
  background: linear-gradient(180deg, #b63a32, #92261f);
  border-color: #92261f;
}

.build-confirm-actions .ghost {
  padding: 8px 16px;
}


.quick-panel-title {
  font-weight: 700;
  color: var(--heading);
  font-size: 0.85rem;
}

.quick-panel-tabs {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  gap: 6px;
  width: 100%;
  margin: 0 -2px;
  padding: 0 2px;
}

.quick-panel-tabs .view-tab {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 6px 4px;
  font-size: 0.78rem;
  white-space: nowrap;
}

.quick-panel-tabs .tab-icon {
  flex-shrink: 0;
  font-size: 1rem;
  line-height: 1;
}

.quick-panel-tabs .tab-icon-img {
  width: 1em;
  height: 1em;
  object-fit: contain;
  display: block;
}

.build-radial-menu {
  position: absolute;
  width: 0;
  height: 0;
  z-index: 915;
  pointer-events: none;
}

.build-radial-buildings {
  position: absolute;
  left: 0;
  top: 0;
  width: 0;
  height: 0;
  pointer-events: none;
}

.build-radial-cat-btn,
.build-radial-building-btn {
  position: absolute;
  left: 0;
  top: 0;
  width: 42px;
  height: 42px;
  padding: 0;
  border-radius: 50%;
  border: 0;
  background: rgba(0, 0, 0, 0.45);
  box-shadow: none;
  cursor: pointer;
  pointer-events: auto;
  overflow: visible;
  display: flex;
  align-items: center;
  justify-content: center;
}

.build-radial-cat-btn {
  color: #faf5eb;
  font-size: 1.2rem;
}

.build-radial-cat-btn.active {
  background: rgba(0, 0, 0, 0.6);
  outline: 2px solid var(--accent-gold);
  outline-offset: 2px;
}

.build-radial-cat-icon {
  width: 36px;
  height: 36px;
  object-fit: contain;
}

.radial-close-icon {
  width: 28px;
  height: 28px;
  object-fit: contain;
  display: block;
}

.production-radial-btn .radial-close-icon,
.seed-radial-btn .radial-close-icon {
  width: 28px;
  height: 28px;
}

.build-radial-building-btn img {
  width: 48px;
  height: 48px;
  object-fit: contain;
}

.build-radial-building-btn {
  color: #faf5eb;
  font-size: 1rem;
}

.quick-panel-tabs .tab-text {
  overflow: hidden;
  text-overflow: ellipsis;
}

@media (max-width: 400px) {
  .quick-panel-tabs .tab-text {
    display: none;
  }
}

.quick-panel-tabs.hidden {
  display: none;
}

.quick-panel-list {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  padding-bottom: 2px;
}

.quick-item {
  min-width: 132px;
  max-width: 160px;
  border: 2px solid var(--panel-border);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.95);
  color: var(--text);
  padding: 6px;
  display: grid;
  gap: 6px;
  align-content: start;
  position: relative;
}

/* Не трогаем .game-card-thumb--full — иначе ломается сетка «Строительство» (было width:100% + height:58px поверх 72×72) */
.quick-item img:not(.game-card-thumb--full) {
  width: 100%;
  height: 58px;
  object-fit: contain;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.45);
}

.quick-item.quick-visual-card {
  padding: 0;
  overflow: hidden;
  min-width: 0;
  width: 100%;
  aspect-ratio: 4 / 5;
}

.quick-item.quick-visual-card.app-modal-card {
  padding: 10px 12px;
  aspect-ratio: unset;
}

.quick-item.quick-visual-card.quick-construction-card {
  overflow: visible;
}

.quick-item.quick-visual-card > img,
.quick-item.quick-visual-card > .shop-seed-img {
  width: 100%;
  height: 100%;
  border-radius: 0;
  border: 0;
  background: rgba(255, 255, 255, 0.45);
  display: block;
}

.quick-item-cell {
  cursor: pointer;
}

.quick-item-cell .quick-item-cell-diamond {
  position: absolute;
  inset: 15%;
  background: linear-gradient(135deg, var(--grass-1), var(--grass-2));
  clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0 2px 4px rgba(0, 0, 0, 0.25);
}

.quick-item-cell .quick-overlay,
.quick-item.quick-visual-card .quick-overlay {
  pointer-events: none;
}

.seed-bag-combo {
  position: relative;
  width: 100%;
  height: 100%;
}

.seed-bag-combo .seed-bag-base {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

.seed-bag-combo .seed-bag-seed,
.seed-bag-combo .resource-sprite {
  position: absolute;
  left: 24%;
  top: 26%;
  width: 52%;
  height: 52%;
  object-fit: contain;
  filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.22));
}

.seed-bag-combo .resource-sprite {
  object-fit: none;
  background-repeat: no-repeat;
}

.quick-overlay {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  min-height: 38%;
  padding: 10px 8px 8px;
  display: grid;
  align-content: end;
  background: linear-gradient(180deg, rgba(26, 20, 8, 0), rgba(43, 36, 22, 0.85) 58%, rgba(26, 20, 8, 0.95));
  color: #faf5eb;
}

.quick-overlay h4 {
  color: #f5efe0;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.7);
  font-weight: 700;
  font-family: var(--font-heading);
}

.quick-overlay small {
  color: #f0e8d8;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  font-weight: 600;
}

.quick-overlay-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  gap: 4px;
}

.quick-item-cell-diamond-inline {
  display: inline-block;
  width: 0.6em;
  height: 0.6em;
  margin-left: 2px;
  vertical-align: 0.15em;
  background: linear-gradient(135deg, var(--grass-1), var(--grass-2));
  clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}

.quick-lock-overlay {
  position: absolute;
  inset: 0;
  background: rgba(43, 36, 22, 0.65);
  display: grid;
  place-content: center;
  gap: 6px;
  text-align: center;
  color: #faf5eb;
  font-weight: 700;
  z-index: 2;
}

.quick-lock-icon {
  font-size: 1.25rem;
}

.quick-item.quick-clickable {
  cursor: pointer;
}

.quick-item.quick-clickable:active {
  transform: translateY(1px);
}

.quick-item.quick-visual-card > img.no-image {
  object-fit: none;
}

.quick-item h4 {
  margin: 0;
  font-size: 0.82rem;
}

.quick-item small {
  font-size: 0.72rem;
}

.quick-item-cells {
  display: inline-flex;
  align-items: center;
}

.quick-item-cells-insufficient {
  color: #c62828;
  font-weight: 700;
}

.quick-item-price-insufficient {
  color: #c62828 !important;
  font-weight: 700;
}

.quick-item-price-insufficient .price-with-coin,
.quick-item-price-insufficient .price-with-coin span {
  color: #c62828 !important;
}

.quick-item-cells-insufficient .quick-item-cell-diamond-inline {
  background: linear-gradient(135deg, #c62828, #b71c1c);
}

.quick-item:not(.quick-visual-card) h4 {
  color: #4f3a15;
}

.quick-item .quick-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
}

.quick-item .quick-actions button {
  padding: 6px 4px;
  font-size: 0.7rem;
}

.farm-world {
  --map-cell-size: 162px;
  --map-icon-size: 150px;
  --map-cell-gap: 0px;
  width: 100%;
  height: 100%;
  border-radius: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  -ms-overflow-style: none;
  scrollbar-width: none;
  background: transparent;
  box-shadow: none;
  touch-action: manipulation;
  overscroll-behavior: none;
  scroll-padding-top: calc(var(--hud-safe) + 8px);
  scroll-padding-bottom: calc(var(--nav-safe) + 8px);
}

@media (pointer: fine) {
  .farm-world {
    cursor: grab;
  }

  .farm-world.farm-world--mouse-panning {
    cursor: grabbing;
  }
}

.farm-world::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;
}

.farm-zoom-outer {
  display: block;
  position: relative;
}

.farm-zoom-inner {
  transform-origin: 0 0;
  will-change: transform;
}

.farm-map {
  width: fit-content;
  height: fit-content;
  padding: calc(140px + var(--hud-safe)) 12px calc(12px + var(--nav-safe));
  position: relative;
  background: linear-gradient(rgba(20, 63, 17, 0.08), rgba(20, 63, 17, 0.08));
  overflow: hidden;
}

.farm-static-layer {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 0;
  pointer-events: none;
}

.farm-grid {
  position: relative;
  z-index: 1;
  min-height: 100%;
  --plot-sign-scale: 1;
  --plot-sign-icon-scale: 1;
}

.farm-cell {
  position: absolute;
  border: 0;
  padding: 0;
  margin: 0;
  background: transparent;
  color: transparent;
  text-shadow: none;
  overflow: visible;
  pointer-events: none;
}

.farm-cell-hit {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  margin: 0;
  background: transparent;
  cursor: pointer;
  clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
  z-index: 1;
  pointer-events: auto;
}

.farm-cell small {
  font-size: 0;
}

.farm-cell.locked {
  background: transparent;
  border-color: transparent;
}

.farm-cell.locked .lock-mark {
  color: rgba(255, 244, 186, 0.92);
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1;
}

.farm-cell.locked small {
  color: rgba(255, 255, 255, 0.78);
  font-size: 0.52rem;
  line-height: 1;
}

.farm-cell.free-cell .farm-cell-hit {
  pointer-events: auto;
}

.farm-cell.free-cell:not(.placement-cell) .farm-cell-hit {
  pointer-events: none;
}

.farm-cell.initial-cell .farm-cell-hit {
  cursor: not-allowed;
}

/* Ячейки 100×100 (при scale=1), картинки могут выходить за границы */
.farm-cell-inner {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}

.farm-cell-tile {
  position: absolute;
  inset: 0;
  margin: auto;
  width: var(--map-icon-size, 100px);
  height: var(--map-icon-size, 100px);
  z-index: 0;
  background-origin: center;
  background-clip: border-box;
}

/* View Transitions: overflow:visible on img/video/canvas causes visual artifacts */
#farm-grid img,
#farm-grid video,
#farm-grid canvas {
  overflow: hidden;
  -webkit-user-drag: none;
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}

.farm-static-layer img,
.farm-static-layer canvas {
  -webkit-user-drag: none;
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}

.farm-cell-tile.building-icon-tile {
  width: auto;
  height: auto;
  margin: 0;
  inset: auto;
  image-orientation: none;
  filter: drop-shadow(0 4px 6px rgba(19, 41, 12, 0.35));
  overflow: hidden;
}

.farm-cell-tile.is-constructing,
.farm-cell-tile.building-icon-tile.is-constructing {
  filter: grayscale(1);
}
.farm-cell-tile.building-icon-tile.is-constructing {
  filter: grayscale(1) drop-shadow(0 4px 6px rgba(19, 41, 12, 0.35));
}

.farm-cell.building-cell.is-hovered .farm-cell-tile.building-icon-tile {
  filter: drop-shadow(0 0 0 rgba(0, 0, 0, 0)) drop-shadow(0 0 8px rgba(255, 240, 138, 0.55))
    drop-shadow(0 4px 6px rgba(19, 41, 12, 0.35));
}

.quick-item.quick-visual-card > img {
  image-orientation: none;
}



/* Таймер поездки поверх иконки транспорта / дорожного знака */
.transport-timer-overlay {
  position: absolute;
  inset: 0;
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  font-size: 0.75rem;
  text-align: center;
  pointer-events: none;
  border-radius: 4px;
}

.transport-timer-overlay strong {
  font-size: 1rem;
  display: block;
}

.transport-timer-overlay.road-sign-timer {
  background: transparent;
  font-size: 0.7rem;
}

.transport-timer-overlay.road-sign-timer strong {
  font-size: 1.1rem;
}

/* "Готово" на дорожном знаке — в стиле подписи над готовыми зданиями */
.transport-timer-overlay.road-sign-timer.road-sign-ready-pill {
  inset: auto;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  padding: 4px 10px 6px;
  border-radius: 10px;
  background: rgba(28, 95, 38, 0.52);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  border: 1px solid rgba(255, 255, 255, 0.22);
  color: #f4ffe8;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.55);
  font-weight: 700;
  font-size: 0.72rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.transport-timer-overlay.road-sign-timer.road-sign-ready-pill span {
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}

.farm-timer-overlay {
  position: absolute;
  z-index: 100;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  padding-bottom: 2px;
  background: none;
  color: #fff;
  font-size: 0.7rem;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.7);
  pointer-events: none;
}

/* Иначе img внутри (иконка воды на сухой грядке) перехватывает клик — полив не срабатывает */
.farm-timer-overlay * {
  pointer-events: none;
}

.farm-timer-overlay span {
  line-height: 1.1;
}

.farm-timer-overlay strong {
  font-size: 0.9rem;
  display: block;
}

.harvest-loot-flyout {
  position: absolute;
  z-index: 120;
  transform: translate(-50%, -50%);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 8px;
  border-radius: 10px;
  background: rgba(28, 22, 16, 0.62);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.7);
  pointer-events: none;
  opacity: 0;
  filter: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.35));
}

/* pointer-events не наследуется — иначе img/span перехватывают клики по сетке во время анимации */
.harvest-loot-flyout * {
  pointer-events: none;
}

.harvest-loot-flyout .harvest-loot-icon {
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  transform: translateY(1px);
}

.harvest-loot-flyout .harvest-loot-img {
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  object-fit: contain;
  transform: translateY(1px);
  image-rendering: auto;
}

.harvest-loot-flyout .harvest-loot-text {
  font-size: 0.95rem;
  line-height: 1;
  letter-spacing: 0.2px;
}

.harvest-loot-flyout--show {
  animation: harvestLootPop 180ms ease-out forwards;
}

.harvest-loot-flyout--fly {
  animation: harvestLootFly 850ms ease-in forwards;
}

@keyframes harvestLootPop {
  from {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.92);
  }
  to {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
}

@keyframes harvestLootFly {
  from {
    opacity: 1;
    transform: translate(-50%, -50%) translateY(0) scale(1);
  }
  to {
    opacity: 0;
    transform: translate(-50%, -50%) translateY(-85vh) scale(0.98);
  }
}

.farm-cell.build-target {
  outline: none;
}

.farm-cell.build-preview {
  clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
  box-shadow: inset 0 0 0 2px rgba(255, 232, 132, 0.95), 0 0 8px rgba(255, 232, 132, 0.35) !important;
  background: rgba(255, 232, 132, 0.16) !important;
}

.farm-cell.build-preview .build-preview-tile {
  filter: grayscale(1);
}

.build-preview-overlay {
  overflow: visible;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

.build-preview-overlay .build-preview-overlay-icon {
  filter: grayscale(1) drop-shadow(0 4px 6px rgba(19, 41, 12, 0.35));
}

.farm-cell.move-target {
  outline: 1px dashed rgba(141, 226, 255, 0.55);
  outline-offset: -1px;
}

.farm-cell.building-cell {
  background: transparent;
  border-color: transparent;
}

.farm-cell.building-cell.building-part {
  background: transparent;
}

.building-icon {
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}

.building-overlay {
  border: 0;
  padding: 0;
  margin: 0;
  border-radius: 0;
  background: transparent;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  position: absolute;
  overflow: visible;
  z-index: 7;
  cursor: default;
  pointer-events: none;
}

/* Размер картинок фиксирован 100×100, иконки могут выходить за пределы без обрезки */
.building-overlay .building-icon {
  width: var(--map-icon-size, 100px);
  height: calc(var(--map-icon-size, 100px) * 1.6);
  max-width: none;
  object-fit: contain;
  object-position: center bottom;
  image-orientation: none;
  filter: drop-shadow(0 4px 6px rgba(19, 41, 12, 0.35));
}

.building-overlay.is-hovered .building-icon {
  filter: drop-shadow(0 0 0 rgba(0, 0, 0, 0)) drop-shadow(0 0 8px rgba(255, 240, 138, 0.55))
    drop-shadow(0 4px 6px rgba(19, 41, 12, 0.35));
}

.building-overlay .building-badge {
  position: absolute;
  left: 6px;
  right: 6px;
  bottom: -2px;
  border-radius: 8px;
  font-size: 0.62rem;
  line-height: 1.2;
  padding: 2px 4px;
  background: rgba(22, 39, 15, 0.74);
  color: #f9f4d8;
}

.building-overlay.status-working {
  box-shadow: none;
}

.building-overlay.status-ready {
  box-shadow: none;
}

/* Подпись «Готово» над производством — полупрозрачный зелёный фон */
.farm-timer-overlay.building-ready-pill {
  padding: 4px 10px 6px;
  border-radius: 10px;
  background: rgba(28, 95, 38, 0.52);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  border: 1px solid rgba(255, 255, 255, 0.22);
  color: #f4ffe8;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.55);
  font-weight: 700;
  font-size: 0.72rem;
}

.farm-timer-overlay.building-ready-pill span {
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}

/* «Сухо» на грядке — круг как у кнопок seed-radial (грядка / колодец): тёмный полупрозрачный фон */
.farm-timer-overlay.field-dry-pill {
  width: 50px;
  height: 50px;
  padding: 0;
  box-sizing: border-box;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.45);
  box-shadow: none;
  border: 0;
  color: inherit;
  text-shadow: none;
  font-weight: 700;
  font-size: 0.72rem;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.farm-timer-overlay.field-dry-pill .field-dry-water-icon {
  width: 34px;
  height: 34px;
  display: block;
  object-fit: contain;
  filter: none;
}

.farm-cell.crop-needs-water .farm-cell-crop {
  filter: sepia(0.35) saturate(1.2);
}

.farm-cell.building-cell.is-hovered .farm-cell-tile {
  filter: drop-shadow(0 0 8px rgba(255, 240, 138, 0.55));
}

.building-actions-menu {
  position: absolute;
  width: 0;
  height: 0;
  z-index: 900;
  pointer-events: none;
}

.building-menu-constructing-notice {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  white-space: nowrap;
  padding: 8px 12px;
  background: rgba(0, 0, 0, 0.75);
  color: #faf5eb;
  font-size: 13px;
  border-radius: 8px;
  pointer-events: auto;
}

/* Same size and look as seed-radial (грядки) for consistent radial menu everywhere */
.building-action-btn {
  position: absolute;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  border: 0;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.45);
  color: #faf5eb;
  font-size: 18px;
  box-shadow: none;
  cursor: pointer;
  pointer-events: auto;
  overflow: visible;
}

.building-action-btn img,
.seed-radial-btn .cell-admin-action-icon {
  width: 50px;
  height: 50px;
  object-fit: contain;
}

.building-action-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.building-action-btn.building-action-btn--recipe-blocked {
  opacity: 0.45;
  cursor: pointer;
}

.building-action-btn.action-delete {
  transform: translate(-58px, -25px);
}

.building-action-btn.action-move {
  transform: translate(16px, -25px);
}

.building-action-btn.action-plant {
  transform: translate(-25px, 16px);
}

.building-action-btn.action-produce,
.building-action-btn.action-produce-resource {
  transform: translate(-25px, -58px);
}

.building-action-btn.action-locked {
  transform: translate(-58px, 16px);
}

.building-action-btn.action-clears {
  transform: translate(16px, 16px);
}

.building-action-btn.action-close {
  transform: translate(-25px, -25px);
}

.building-action-btn .radial-close-icon {
  width: 28px;
  height: 28px;
}

.seed-radial-menu {
  position: absolute;
  width: 0;
  height: 0;
  z-index: 910;
  pointer-events: none;
}

.production-radial-menu {
  position: absolute;
  width: 0;
  height: 0;
  z-index: 920;
  pointer-events: none;
}

.production-radial-btn {
  position: absolute;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  border: 2px solid var(--accent-gold-dark);
  padding: 0;
  background: linear-gradient(180deg, #4a3c20, #2d2414);
  box-shadow: var(--shadow);
  cursor: pointer;
  pointer-events: auto;
  overflow: hidden;
}

.production-radial-btn img {
  width: 120%;
  height: 120%;
  object-fit: contain;
  display: block;
}

.production-radial-btn span {
  position: absolute;
  right: 1px;
  bottom: 1px;
  min-width: 14px;
  height: 14px;
  padding: 0 3px;
  border-radius: 999px;
  background: rgba(16, 27, 11, 0.9);
  color: #fff5c9;
  font-size: 0.58rem;
  line-height: 14px;
  text-align: center;
}

.production-radial-btn:disabled {
  opacity: 0.45;
  filter: grayscale(1);
  cursor: not-allowed;
}

.production-radial-btn.production-radial-btn--blocked {
  opacity: 0.45;
  filter: grayscale(1);
  cursor: pointer;
}

.seed-radial-btn {
  position: absolute;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  border: 0;
  padding: 0;
  background: rgba(0, 0, 0, 0.45);
  box-shadow: none;
  cursor: pointer;
  pointer-events: auto;
  overflow: visible;
  display: flex;
  align-items: center;
  justify-content: center;
}

.seed-radial-btn .seed-radial-sprite {
  width: 56px;
  height: 56px;
  flex-shrink: 0;
}

.seed-radial-btn:disabled {
  opacity: 0.45;
  filter: grayscale(1);
  cursor: not-allowed;
}


.farm-cell-crop {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 160%;
  z-index: 1;
  pointer-events: none;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  overflow: visible;
}

.farm-cell-crop .resource-sprite {
  width: var(--map-icon-size, 100px);
  height: var(--map-icon-size, 100px);
  min-height: 60%;
  overflow: visible;
}

/* Слабое покачивание только у созревших культур (не у "сухо") */
.farm-cell.plot-cell.ready:not(.crop-needs-water) .farm-crop-sprite {
  transform-origin: 50% 100%;
  animation: ripeCropWiggle var(--cropWiggleDur, 3600ms) ease-in-out infinite;
  animation-delay: var(--cropWiggleDelay, 0s);
  will-change: transform;
}

@keyframes ripeCropWiggle {
  0% { transform: rotate(-0.35deg) translateY(0); }
  50% { transform: rotate(0.35deg) translateY(-0.25px); }
  100% { transform: rotate(-0.35deg) translateY(0); }
}

.cell-caption {
  display: none;
}

/* Зона 1: только монеты и энергия, слева вверху */
.top-menu {
  position: fixed;
  top: 8px;
  left: 8px;
  right: auto;
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  z-index: 15;
  max-width: calc(100vw - 72px);
}

.top-menu-stats {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  min-width: 0;
}

/* Полоса вода / семена / ресурсы под монетами и энергией */
.hud-inventory-strip {
  position: fixed;
  top: 60px;
  left: 8px;
  z-index: 15;
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 6px;
  max-width: calc(100vw - 80px);
  pointer-events: none;
}

.hud-inventory-strip .hud-strip-slot {
  pointer-events: auto;
}

.hud-strip-slot-stack {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 3px;
  width: 100%;
  min-width: 0;
}

.hud-strip-slot-row {
  flex: 0 0 auto;
  width: 100%;
}

.hud-strip-slot-row .hud-strip-slot-inner {
  width: 100%;
}

.hud-strip-slot.hud-strip-slot--multi {
  align-self: flex-start;
}

.hud-strip-slot--multi .hud-strip-slot-stack {
  transform-origin: top center;
}

.hud-strip-slot--burst-enter {
  overflow: hidden;
}

/* Вторая и далее строки «выезжают» вниз из-под первой */
.hud-strip-slot--burst-enter .hud-strip-slot-stack > .hud-strip-slot-row:not(:first-child) {
  animation: hudBurstRowSlideDown 0.45s cubic-bezier(0.32, 1.15, 0.42, 1) both;
}

.hud-strip-slot--burst-enter .hud-strip-slot-stack > .hud-strip-slot-row:nth-child(3) {
  animation-delay: 0.07s;
}

.hud-strip-slot--burst-enter .hud-strip-slot-stack > .hud-strip-slot-row:nth-child(4) {
  animation-delay: 0.14s;
}

.hud-strip-slot--burst-exit {
  overflow: hidden;
}

/* Доп. строки уезжают вверх перед сменой на одну */
.hud-strip-slot--burst-exit .hud-strip-slot-stack > .hud-strip-slot-row:not(:first-child) {
  animation: hudBurstRowSlideUpOut 0.48s cubic-bezier(0.45, 0.05, 0.6, 1) forwards;
}

.hud-strip-slot--burst-exit .hud-strip-slot-stack > .hud-strip-slot-row:nth-last-child(2):not(:first-child) {
  animation-delay: 0.05s;
}

.hud-strip-slot--burst-exit .hud-strip-slot-stack > .hud-strip-slot-row:nth-last-child(3):not(:first-child) {
  animation-delay: 0.1s;
}

@keyframes hudBurstRowSlideDown {
  from {
    opacity: 0;
    transform: translateY(-16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes hudBurstRowSlideUpOut {
  from {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-14px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .hud-strip-slot--burst-enter .hud-strip-slot-stack > .hud-strip-slot-row:not(:first-child),
  .hud-strip-slot--burst-exit .hud-strip-slot-stack > .hud-strip-slot-row:not(:first-child) {
    animation: none;
  }
}

.hud-strip-slot {
  box-sizing: border-box;
  flex: 0 0 88px;
  width: 88px;
  max-width: 88px;
  min-width: 88px;
  border-radius: 6px;
  padding: 3px 6px;
  background: rgba(28, 22, 16, 0.62);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.7);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.22);
}

.hud-strip-slot--clickable {
  cursor: pointer;
  font: inherit;
  text-align: left;
  appearance: none;
  -webkit-appearance: none;
}

.hud-strip-slot--clickable:hover {
  border-color: rgba(255, 255, 255, 0.22);
  background: rgba(36, 30, 22, 0.72);
}

.hud-strip-slot--clickable:focus-visible {
  outline: 2px solid var(--accent-gold);
  outline-offset: 2px;
}

.hud-strip-slot-inner {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 5px;
  width: 100%;
  min-width: 0;
}

.hud-strip-icon-wrap {
  width: 21px;
  height: 21px;
  flex: 0 0 21px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.hud-strip-icon-img {
  width: 21px;
  height: 21px;
  object-fit: contain;
  display: block;
  image-rendering: auto;
}

.hud-strip-icon-img--muted {
  opacity: 0.55;
}

.hud-strip-sprite {
  width: 21px;
  height: 21px;
  flex-shrink: 0;
}

.hud-strip-text {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  flex: 1 1 auto;
  justify-content: flex-start;
}

.hud-strip-qty {
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.1px;
  flex: 0 0 auto;
}

.hud-strip-delta {
  font-size: 0.87rem;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  flex: 0 0 auto;
}

.hud-strip-delta.hidden {
  display: none;
}

.hud-strip-delta--pos {
  color: #4ade80;
}

.hud-strip-delta--neg {
  color: #f87171;
}

.hud-fly-chip {
  position: fixed;
  z-index: 125;
  pointer-events: none;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 6px;
  border-radius: 6px;
  background: rgba(28, 22, 16, 0.75);
  border: 1px solid rgba(255, 255, 255, 0.14);
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.65);
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
}

.hud-fly-chip img {
  width: 21px;
  height: 21px;
  object-fit: contain;
  display: block;
}

.hud-fly-chip-sprite {
  width: 21px;
  height: 21px;
  flex-shrink: 0;
}

.hud-fly-chip-qty {
  font-size: 0.78rem;
  font-weight: 700;
}

/* Зона 2: справа вверху — столбец вниз; Зона 3: справа снизу — столбец вверх от угла */
.game-hud-rail {
  pointer-events: none;
}

.game-hud-rail > * {
  pointer-events: auto;
}

.game-hud-rail--top {
  position: fixed;
  top: 8px;
  right: 8px;
  z-index: 15;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  max-height: calc(100dvh - var(--nav-safe, 0px) - 200px);
  overflow-x: visible;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 4px;
}

/* Единый вид: квадрат 44×44, скругление, иконка по центру */
.top-menu-square-btn,
.top-menu .hud-stat-achievements.top-menu-square-btn,
.game-hud-rail--top .hud-stat-achievements.top-menu-square-btn {
  position: relative;
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  box-sizing: border-box;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  background: var(--panel);
  border: 2px solid var(--panel-border);
  cursor: pointer;
  color: var(--text);
}

/* Счётчик «новых»: центр круга на правом нижнем углу кнопки */
.top-menu-new-badge {
  position: absolute;
  right: 0;
  bottom: 0;
  z-index: 5;
  transform: translate(50%, 50%);
  box-sizing: border-box;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: #dc2626;
  color: #fff;
  font-size: 0.62rem;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
  border: 2px solid #fff;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.22);
  pointer-events: none;
  display: none;
}

.top-menu-new-badge.top-menu-new-badge--visible {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

button.top-menu-square-btn {
  font: inherit;
}

.top-menu-square-btn:hover,
.top-menu .hud-stat-achievements.top-menu-square-btn:hover,
.game-hud-rail--top .hud-stat-achievements.top-menu-square-btn:hover {
  background: var(--panel-hover, #e8e2d4);
  border-color: var(--accent-gold-dark);
}

.top-menu-attn {
  background: linear-gradient(180deg, #bfecc0, #7dd67e) !important;
  border-color: rgba(21, 95, 28, 0.98) !important;
}

.top-menu-attn:hover {
  background: linear-gradient(180deg, #a8e3aa, #66ca68) !important;
  border-color: rgba(12, 74, 18, 1) !important;
}

.top-menu-attn img {
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.25));
}

@keyframes topMenuAttnWiggle {
  0% { transform: translateY(0) rotate(0) scale(1); }
  2% { transform: translateY(-1px) rotate(-6deg) scale(1.06); }
  4% { transform: translateY(0) rotate(6deg) scale(1.06); }
  6% { transform: translateY(-1px) rotate(-4deg) scale(1.05); }
  8% { transform: translateY(0) rotate(4deg) scale(1.05); }
  10% { transform: translateY(0) rotate(0) scale(1); }
  100% { transform: translateY(0) rotate(0) scale(1); }
}

.top-menu-attn img {
  transform-origin: 50% 60%;
  animation: topMenuAttnWiggle 10s ease-in-out infinite;
}

.top-menu-square-btn .top-menu-btn-icon {
  display: block;
  width: 28px;
  height: 28px;
  object-fit: contain;
}

.top-menu-square-btn--account .nav-account-avatar {
  width: 28px;
  height: 28px;
  object-fit: contain;
}

.top-menu-notifications-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex-shrink: 0;
}

.top-menu .hud-stat-achievements.top-menu-square-achievements,
.game-hud-rail--top .hud-stat-achievements.top-menu-square-achievements {
  position: relative;
  cursor: pointer;
}

.top-menu-square-inner-icon {
  width: 24px;
  height: 24px;
  object-fit: contain;
  display: block;
}

.top-menu-achievements-count {
  position: absolute;
  right: 3px;
  bottom: 2px;
  font-size: 0.65rem;
  font-weight: 700;
  line-height: 1;
  color: var(--heading);
  text-shadow: 0 0 2px #fff, 0 0 3px #fff;
  pointer-events: none;
  display: none;
}

.top-menu-help-feedback {
  display: flex;
  align-items: center;
  gap: 6px;
}

.top-menu-icon-btn {
  width: 44px;
  height: 44px;
  padding: 0;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--panel);
  border: 2px solid var(--panel-border);
  cursor: pointer;
  color: var(--text);
}

.top-menu-icon-btn:hover {
  background: var(--panel-hover, #e8e2d4);
  border-color: var(--accent-gold-dark);
}

.top-menu-btn-icon {
  display: block;
  width: 28px;
  height: 28px;
  object-fit: contain;
}

.top-menu-btn-icon.icon-svg {
  width: 28px;
  height: 28px;
  line-height: 0;
}

.top-menu-btn-icon.icon-svg svg {
  width: 100%;
  height: 100%;
  display: block;
}

.top-menu-text-btn {
  padding: 6px 10px;
  font-size: 0.9rem;
  border-radius: 8px;
  color: var(--text);
  background: transparent;
  border: 1px solid transparent;
  cursor: pointer;
}

.top-menu-text-btn:hover {
  background: rgba(139, 105, 20, 0.12);
  border-color: rgba(139, 105, 20, 0.25);
}

.top-menu .hud-stat,
.transport-trip-head .hud-stat,
.quick-panel-head .hud-stat {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 6px 10px;
  border-radius: 10px;
  background: linear-gradient(180deg, #f5efe0, #ebe0cc);
  border: 1px solid rgba(139, 105, 20, 0.35);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
  cursor: default;
  user-select: none;
}

.top-menu .hud-stat .hud-stat-icon,
.transport-trip-head .hud-stat .hud-stat-icon,
.quick-panel-head .hud-stat .hud-stat-icon {
  width: 24px;
  height: 24px;
  object-fit: contain;
  flex-shrink: 0;
}

.top-menu .hud-stat strong,
.transport-trip-head .hud-stat strong,
.quick-panel-head .hud-stat strong {
  font-size: 1rem;
  font-weight: 600;
  color: var(--heading);
  line-height: 1;
}

.top-menu .hud-stat-achievements.top-menu-square-achievements .achievements-plus-badge,
.game-hud-rail--top .hud-stat-achievements.top-menu-square-achievements .achievements-plus-badge {
  top: -2px;
  right: -2px;
  bottom: auto;
  left: auto;
}

.top-menu .hud-stat-acceleration {
  cursor: pointer;
}

.top-menu .hud-stat-acceleration:hover {
  border-color: rgba(139, 105, 20, 0.5);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}

.top-menu .hud-stat-acceleration .hud-stat-acceleration-icon {
  font-size: 1.15rem;
  line-height: 1;
  width: 24px;
  text-align: center;
  display: inline-block;
}

.achievements-plus-badge {
  position: absolute;
  right: -2px;
  bottom: -2px;
  width: 18px;
  height: 18px;
  object-fit: contain;
  pointer-events: none;
}

.top-bar {
  flex-shrink: 0;
}

.nav-account-icon {
  width: 44px;
  height: 44px;
  border-radius: 10px;
  font-size: 1.5rem;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--panel);
  border: 2px solid var(--panel-border);
  cursor: pointer;
}

.nav-account-icon:hover {
  background: var(--panel-hover, #e8e2d4);
  border-color: var(--accent-gold-dark);
}

/* Зона 3: снизу справа — от угла вверх (в DOM: таймеры, в путь, строительство) */
.bottom-action-buttons {
  position: fixed;
  right: 8px;
  bottom: calc(var(--nav-safe, 0) + 14px);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  z-index: 14;
}

.bottom-action-btn {
  width: 48px;
  height: 48px;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.95rem;
  font-weight: 600;
  border-radius: 10px;
  border: 2px solid var(--panel-border);
  background: linear-gradient(180deg, #f5efe0, #ebe0cc);
  color: var(--heading);
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}

.bottom-action-icon {
  width: 28px;
  height: 28px;
  object-fit: contain;
}

.farm-timers-toggle-icon {
  font-size: 1.35rem;
  line-height: 1;
  display: block;
}

.farm-timers-toggle-btn.farm-timers-toggle-btn--off {
  opacity: 0.55;
}

.farm-timers-toggle-btn.farm-timers-toggle-btn--off .farm-timers-toggle-icon {
  text-decoration: line-through;
  text-decoration-thickness: 2px;
}

/* Постройки и грядки: таймеры и подписи «Готово» / «Сухо» (не дорожный знак) */
#game-screen.farm-timers-hidden #farm-grid .farm-timer-overlay {
  display: none !important;
}

.bottom-action-btn:hover {
  background: linear-gradient(180deg, #ebe0cc, #e0d4b8);
  border-color: var(--accent-gold-dark);
}

.nav-account-icon .nav-account-avatar {
  width: 28px;
  height: 28px;
  object-fit: contain;
}

.nav-friends-btn {
  width: 44px;
  height: 44px;
  padding: 0;
  border-radius: 10px;
  font-size: 1.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--panel);
  border: 2px solid var(--panel-border);
  cursor: pointer;
}
.nav-friends-btn:hover {
  background: var(--panel-hover, #e8e2d4);
  border-color: var(--accent-gold-dark);
}
.nav-friends-icon {
  display: block;
  width: 28px;
  height: 28px;
  object-fit: contain;
  line-height: 28px;
  text-align: center;
  font-size: 1.4rem;
}

.account-back {
  margin-bottom: 8px;
  font-size: 1.4rem;
  padding: 6px 12px;
}

.account-info {
  margin: 10px 0 14px;
  padding: 10px;
  background: #fdf9f0;
  border: 2px solid var(--accent-gold-dark);
  border-radius: 10px;
}

.admin-config,
.admin-users {
  display: grid;
  gap: 8px;
}

.admin-block {
  display: grid;
  gap: 6px;
  padding: 8px;
  border: 2px solid var(--accent-gold-dark);
  border-radius: 10px;
  background: #fdf9f0;
}

.admin-row {
  display: grid;
  grid-template-columns: 110px repeat(3, minmax(0, 1fr));
  gap: 6px;
  align-items: center;
}

.admin-row.with-upload {
  grid-template-columns: 110px repeat(3, minmax(0, 1fr)) 1.2fr auto;
}

.admin-row,
.admin-user-row {
  min-width: 0;
}

.admin-row label,
.admin-user-row label {
  min-width: 0;
}

.admin-row input,
.admin-user-row input {
  max-width: 100%;
}

.admin-row label {
  font-size: 0.75rem;
}

.admin-row input,
.admin-user-row input {
  padding: 6px 8px;
  font-size: 0.85rem;
}

.admin-user-row {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 0.8fr;
  gap: 6px;
  align-items: center;
  padding: 8px;
  border: 2px solid var(--accent-gold-dark);
  border-radius: 10px;
  background: #fdf9f0;
}

.admin-user-row small {
  color: var(--muted);
}

.admin-backlog-top {
  width: 100%;
  margin-bottom: 12px;
  padding: 10px;
  font-size: 0.95rem;
}

.admin-search {
  width: 100%;
  margin-bottom: 10px;
  padding: 8px 12px;
  font-size: 0.9rem;
  border: 2px solid #d9b979;
  border-radius: 8px;
  background: var(--panel);
  box-sizing: border-box;
}

.admin-search::placeholder {
  color: var(--muted);
}

.admin-accordion {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 12px;
}

.admin-accordion-item {
  border: 1px solid #d9b979;
  border-radius: 8px;
  overflow: hidden;
}

.admin-accordion-item summary {
  padding: 10px 12px;
  cursor: pointer;
  font-weight: 600;
  background: rgba(250, 240, 211, 0.6);
  user-select: none;
}

.admin-accordion-item summary:hover {
  background: rgba(250, 240, 211, 0.9);
}

.admin-accordion-item[open] summary {
  border-bottom: 1px solid #d9b979;
}

.admin-accordion-item .admin-block,
.admin-accordion-item .admin-users {
  padding: 10px 12px;
  background: var(--panel);
}

.admin-item-accordion {
  margin-bottom: 8px;
  border: 1px solid #ddc58b;
  border-radius: 8px;
  overflow: visible;
  background: rgba(255, 250, 235, 0.6);
}

/* Только верхний summary карточки NPC, не вложенные «Задания» / задания */
.admin-item-accordion > summary {
  padding: 8px 12px;
  cursor: pointer;
  font-weight: 600;
  font-size: 0.9rem;
  background: rgba(250, 240, 211, 0.7);
  user-select: none;
}

.admin-item-accordion > summary:hover {
  background: rgba(250, 240, 211, 0.95);
}

.admin-item-accordion[open] > summary {
  border-bottom: 1px solid #ddc58b;
}

.admin-item-accordion .admin-row-content {
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  overflow: visible;
}

/* Превью в карточках админки (здания, культуры, ресурсы, NPC) — достаточная высота, без обрезки */
.admin-visual-preview {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 176px;
  padding: 12px;
  box-sizing: border-box;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.55);
  border: 1px solid rgba(139, 105, 20, 0.22);
}

.admin-visual-preview .admin-visual-preview-raster {
  max-width: 100%;
  max-height: 220px;
  width: auto;
  height: auto;
  object-fit: contain;
}

.admin-visual-preview .admin-visual-preview-sprite.resource-sprite {
  width: 140px;
  height: 140px;
  flex-shrink: 0;
}

.admin-visual-preview .admin-npc-avatar-preview-img {
  max-height: 200px;
  border-radius: 50%;
  object-fit: cover;
}

.admin-subsection {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.admin-subsection strong {
  font-size: 0.8rem;
  color: #8b6914;
  margin-bottom: 2px;
}

.admin-subsection .admin-row {
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}

.admin-dup-btn {
  margin-top: 6px;
  font-size: 0.85rem;
}

.admin-achievement-block {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.admin-achievement-block .admin-subsection {
  margin-top: 4px;
}

/* NPC: сворачиваемый блок «Задания» и отдельные карточки заданий */
.admin-npc-missions-wrap {
  margin-top: 14px;
  padding: 0;
  border: 1px solid #ddc58b;
  border-radius: 8px;
  background: rgba(255, 252, 245, 0.85);
  overflow: hidden;
}
.admin-npc-missions-wrap > .admin-npc-missions-summary {
  list-style: none;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  cursor: pointer;
  font-weight: 600;
  color: #5c4a1a;
  background: linear-gradient(180deg, rgba(250, 240, 211, 0.95), rgba(245, 235, 210, 0.9));
  border-bottom: 1px solid #e8dbb8;
}
.admin-npc-missions-summary-title {
  white-space: nowrap;
}
.admin-npc-missions-wrap > .admin-npc-missions-summary::-webkit-details-marker {
  display: none;
}
.admin-npc-missions-wrap > .admin-npc-missions-summary::before {
  content: "▸";
  display: inline-block;
  transition: transform 0.15s ease;
  font-size: 0.75rem;
  opacity: 0.7;
}
.admin-npc-missions-wrap[open] > .admin-npc-missions-summary::before {
  transform: rotate(90deg);
}
.admin-npc-missions-inner {
  padding: 10px 12px 12px;
}
.admin-npc-missions-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.admin-mission-block {
  margin: 0;
  padding: 0;
  background: rgba(250, 245, 230, 0.75);
  border: 1px solid #e0d4b8;
  border-radius: 6px;
  overflow: hidden;
}
.admin-mission-block > .admin-mission-summary {
  list-style: none;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  cursor: pointer;
  font-size: 0.92rem;
  line-height: 1.35;
  min-height: 2.5em;
}
.admin-mission-block > .admin-mission-summary::-webkit-details-marker {
  display: none;
}
.admin-mission-block > .admin-mission-summary::before {
  content: "▸";
  flex-shrink: 0;
  margin-top: 0.15em;
  font-size: 0.7rem;
  opacity: 0.55;
  transition: transform 0.15s ease;
}
.admin-mission-block[open] > .admin-mission-summary::before {
  transform: rotate(90deg);
}
/* Глобально button { width:100% } — иначе ✕ съедает всю строку summary */
.admin-mission-block > .admin-mission-summary .admin-mission-summary-text {
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  word-break: normal;
  overflow-wrap: normal;
}
.admin-mission-summary-meta {
  flex: 0 0 auto;
  font-size: 0.72rem;
  max-width: 120px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.admin-mission-block > .admin-mission-summary .admin-mission-remove {
  flex: 0 0 auto;
  width: auto;
  min-width: 2rem;
  max-width: 3rem;
  padding: 4px 8px;
  font-size: 0.85rem;
  cursor: pointer;
  color: #a00;
  border: none;
  background: transparent;
  border-radius: 4px;
  line-height: 1;
  align-self: center;
}
.admin-mission-block > .admin-mission-summary .admin-mission-remove:hover {
  background: rgba(200, 0, 0, 0.08);
}
.admin-mission-body {
  padding: 0 10px 12px 10px;
  border-top: 1px dashed #e5dcc4;
}
.admin-mission-probability-hint {
  margin: 0 0 10px;
  padding: 8px 10px;
  font-size: 0.8rem;
  line-height: 1.4;
  background: rgba(255, 250, 235, 0.9);
  border-radius: 6px;
  border: 1px solid #eadfc8;
}
.admin-mission-text-row {
  display: block;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.admin-mission-body .admin-mission-text-input {
  width: 100%;
  max-width: 100%;
  min-height: 5.5rem;
  resize: vertical;
  box-sizing: border-box;
  line-height: 1.4;
}
.admin-mission-params {
  flex-wrap: wrap;
  gap: 8px 12px;
}
.admin-mission-params label {
  font-size: 0.88rem;
}
.admin-remove-req, .admin-remove-rew {
  padding: 2px 6px;
  font-size: 0.85rem;
  cursor: pointer;
  color: #a00;
}
.admin-req-row, .admin-rew-row {
  margin: 4px 0;
  gap: 6px;
}
.admin-mission-reqs, .admin-mission-rews {
  margin-top: 10px;
}
.admin-mission-reqs strong,
.admin-mission-rews strong {
  font-size: 0.82rem;
  color: #6b5a28;
}
.admin-add-mission-btn {
  margin-top: 10px;
  width: 100%;
  padding: 8px;
  font-size: 0.95rem;
}
.admin-add-req, .admin-add-rew {
  margin-top: 6px;
  font-size: 0.88rem;
}

.admin-achievement-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 6px;
}

.admin-achievement-row select {
  min-width: 100px;
  padding: 4px 6px;
}

.admin-achievement-row input[type="number"] {
  width: 60px;
  padding: 4px 6px;
}

.admin-achievement-remove {
  padding: 2px 8px;
  font-size: 1.1rem;
  line-height: 1;
}

.admin-achievement-add {
  margin-top: 4px;
  font-size: 0.9rem;
}

.admin-recipes-wrap {
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.admin-recipes-wrap > strong {
  font-size: 0.85rem;
  color: var(--muted);
}

.admin-recipe-add {
  align-self: flex-start;
  font-size: 0.9rem;
}

.admin-recipe-block {
  padding: 10px;
  border: 1px solid #ddc58b;
  border-radius: 8px;
  background: rgba(255, 250, 240, 0.7);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.admin-recipe-head {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
}

.admin-recipe-remove-recipe {
  margin-left: auto;
  padding: 2px 8px;
  font-size: 1.1rem;
}

.admin-recipe-io-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 12px;
}

.admin-recipe-io-label {
  font-size: 0.8rem;
  color: var(--muted);
  width: 100%;
}

.admin-recipe-io-row {
  display: flex;
  align-items: center;
  gap: 4px;
}

.admin-recipe-io-row select {
  min-width: 140px;
  padding: 4px 6px;
}

.admin-recipe-io-row input {
  width: 50px;
  padding: 4px 6px;
}

.admin-recipe-remove-io {
  padding: 2px 6px;
}

.admin-row.admin-row-upload,
.admin-row.admin-row-create,
.admin-row.admin-user-fields {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.admin-row.admin-row-upload label,
.admin-row.admin-row-create label,
.admin-row.admin-user-fields label {
  display: flex;
  align-items: center;
  gap: 4px;
}

.admin-row.admin-row-create {
  grid-template-columns: none;
}

.build-item {
  position: relative;
  padding-right: 88px;
  min-height: 88px;
}

.build-item .build-item-icon {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 36px;
  height: 36px;
  object-fit: contain;
  object-position: center center;
}

/* Крупная миниатюра как в достижениях */
.build-item .build-item-icon.game-card-thumb--full,
.build-item .build-item-icon.game-card-thumb--crop {
  width: 72px;
  height: 72px;
  right: 8px;
}

.build-item .build-item-icon.resource-sprite {
  object-fit: none;
}

.admin-back-nav {
  margin-bottom: 10px;
  font-size: 0.95rem;
}

.admin-backlog-view h3 {
  margin: 0 0 12px;
  font-size: 1rem;
}

.admin-backlog-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 16px;
}

.admin-backlog-form label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 0.85rem;
}

.admin-backlog-form select,
.admin-backlog-form textarea {
  padding: 8px 10px;
  font-size: 0.9rem;
  border: 1px solid #d9b979;
  border-radius: 8px;
  background: #fff;
}

.admin-backlog-form textarea {
  min-height: 80px;
  resize: vertical;
}

.admin-backlog-list {
  margin-top: 12px;
}

.admin-backlog-block {
  margin-bottom: 16px;
}

.admin-backlog-block strong {
  display: block;
  margin-bottom: 6px;
  font-size: 0.9rem;
}

.admin-backlog-block ul {
  margin: 0;
  padding-left: 20px;
}

.admin-backlog-block li {
  margin-bottom: 4px;
  font-size: 0.9rem;
}

.admin-backlog-block li small {
  color: var(--muted);
  font-size: 0.75rem;
}

.sheet {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.38);
  display: grid;
  align-items: end;
  z-index: 30;
}

.sheet-card {
  width: min(560px, 100%);
  margin: 0 auto;
  background: #fff4dd;
  border-top-left-radius: 18px;
  border-top-right-radius: 18px;
  border: 2px solid #d9b979;
  padding: 12px;
  box-shadow: 0 -8px 20px rgba(0, 0, 0, 0.2);
}

.sheet-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
  gap: 8px;
}

.seed-sheet-list {
  display: grid;
  gap: 8px;
}

.seed-sheet-empty {
  padding: 12px;
  text-align: center;
}

.seed-sheet-btn {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  text-align: left;
  border-radius: 12px;
  background: linear-gradient(180deg, var(--panel), #f5efe0);
  border: 2px solid var(--accent-gold-dark);
}

.seed-sheet-btn:hover {
  background: linear-gradient(180deg, #fff8e8, #f5e4c0);
}

.seed-sheet-sprite {
  width: 48px;
  height: 48px;
  flex-shrink: 0;
  border-radius: 8px;
  border: 1px solid rgba(126, 97, 43, 0.4);
  background: rgba(255, 255, 255, 0.45);
}

.toast {
  position: fixed;
  left: 50%;
  top: calc(var(--hud-safe) + 8px);
  bottom: auto;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2d94e9, #1f70bc);
  color: #fff;
  padding: 10px 14px;
  border-radius: 10px;
  border: 2px solid #82bef3;
  max-width: calc(100vw - 20px);
  text-align: center;
  z-index: 20;
  box-shadow: 0 8px 18px rgba(24, 70, 110, 0.25);
}

.transport-picker-modal {
  position: fixed;
  inset: 0;
  z-index: 10001;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.5);
  padding: 16px;
}

.transport-picker-modal.hidden {
  pointer-events: none;
  opacity: 0;
  display: none;
}

.transport-picker-modal .app-modal-dialog {
  max-width: 420px;
  width: 100%;
  max-height: 80vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.transport-picker-list {
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.transport-picker-group h3 {
  margin: 0 0 8px;
  font-size: 0.9rem;
  color: var(--muted);
  font-weight: 600;
}

.transport-picker-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 8px;
}

.transport-picker-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 12px 8px;
  border: 2px solid var(--panel-border);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.9);
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s;
}

.transport-picker-card:hover:not(:disabled) {
  border-color: var(--primary);
  background: rgba(255, 255, 255, 1);
}

.transport-picker-card:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.transport-picker-icon {
  width: 48px;
  height: 48px;
  object-fit: contain;
}

.transport-picker-name {
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--heading);
}

.transport-picker-meta {
  font-size: 0.75rem;
  color: var(--muted);
}

.transport-trip-modal {
  position: fixed;
  inset: 0;
  z-index: 10002;
  display: flex;
  flex-direction: column;
  background: var(--panel);
  transition: opacity 0.25s ease;
}

.transport-trip-modal.hidden {
  pointer-events: none;
  opacity: 0;
  display: none;
}

.transport-trip-dialog {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 16px;
  overflow: hidden;
}

.transport-trip-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
  flex-shrink: 0;
}

.transport-trip-head h2 {
  margin: 0;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--heading);
  flex: 1;
}

/* .transport-trip-close uses .app-modal-close styles (icon only) */

.transport-trip-select {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 12px;
  flex-shrink: 0;
}

.transport-trip-select-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  clip: rect(0, 0, 0, 0);
}

.transport-trip-picker-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.transport-trip-picker-label {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--heading);
}

.transport-trip-picker {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.transport-trip-picker-card {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  padding: 0;
  border-radius: 10px;
  border: 2px solid var(--panel-border);
  background: rgba(255, 255, 255, 0.9);
  cursor: pointer;
  overflow: hidden;
}

.transport-trip-picker-card:hover {
  border-color: var(--accent-gold-dark);
}

.transport-trip-picker-card.selected {
  border-color: var(--primary);
  box-shadow: 0 0 0 2px var(--primary);
}

.transport-trip-picker-card .transport-trip-picker-img {
  width: 48px;
  height: 48px;
  object-fit: contain;
}

.transport-trip-picker-card:not(.selected) .transport-trip-picker-img {
  filter: grayscale(100%);
  opacity: 0.85;
}

.transport-trip-picker-card.selected .transport-trip-picker-img {
  filter: none;
  opacity: 1;
}

.transport-trip-picker-feet {
  font-size: 2rem;
  line-height: 1;
}

.transport-trip-picker-card:not(.selected) .transport-trip-picker-feet {
  filter: grayscale(100%);
  opacity: 0.85;
}

.transport-trip-picker-card.selected .transport-trip-picker-feet {
  filter: none;
  opacity: 1;
}

.transport-trip-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
  flex-shrink: 0;
}

.transport-trip-tab {
  padding: 8px 16px;
  border-radius: 8px;
  border: 2px solid var(--panel-border);
  background: rgba(255, 255, 255, 0.8);
  color: var(--text);
  cursor: pointer;
  font-weight: 600;
}

.transport-trip-tab.active {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary-dark);
}

.transport-trip-cart-summary {
  font-size: 0.9rem;
  color: var(--muted);
  margin-bottom: 12px;
  flex-shrink: 0;
}

.transport-trip-content {
  flex: 1;
  overflow-y: auto;
  min-height: 0;
  margin-bottom: 12px;
}

.transport-trip-panel {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
}

.transport-trip-panel.hidden {
  display: none !important;
}

.transport-trip-card.app-modal-card {
  flex-direction: column;
  align-items: stretch;
  gap: 0;
}

.transport-trip-card-top {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  min-width: 0;
  width: 100%;
}

.transport-trip-card-top .app-modal-card-center {
  justify-content: center;
  gap: 6px;
}

.transport-trip-card-formula-sell {
  width: 100%;
}

.app-modal-card-thumb .transport-trip-card-sprite {
  width: 96px;
  height: 96px;
  flex-shrink: 0;
}

.transport-trip-card-sprite {
  width: 96px;
  height: 96px;
  flex-shrink: 0;
}

/* «Продать»: не-культуры — целая картинка ресурса */
.app-modal-card-thumb .transport-trip-card-icon {
  width: 96px;
  height: 96px;
  flex-shrink: 0;
  object-fit: contain;
  box-sizing: border-box;
  padding: 4px;
  border-radius: 10px;
  border: 1px solid rgba(126, 97, 43, 0.3);
  background: rgba(255, 255, 255, 0.55);
}

.transport-trip-card-icon {
  width: 96px;
  height: 96px;
  flex-shrink: 0;
  object-fit: contain;
  box-sizing: border-box;
  padding: 4px;
  border-radius: 10px;
  border: 1px solid rgba(126, 97, 43, 0.3);
  background: rgba(255, 255, 255, 0.55);
}

.transport-trip-card-name {
  font-size: 0.95rem;
  font-weight: 600;
  text-align: center;
  color: var(--heading);
}

.app-modal-card-center .transport-trip-card-formula {
  justify-content: center;
}

.transport-trip-card-formula {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 2px 4px;
  font-size: 0.85rem;
  color: var(--text);
}

.transport-trip-card-formula .transport-trip-price,
.transport-trip-card-formula .transport-trip-total {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.transport-trip-coin-icon {
  width: 18px;
  height: 18px;
  object-fit: contain;
  vertical-align: middle;
}

.transport-trip-times,
.transport-trip-eq {
  color: var(--muted);
}

.transport-trip-qty-num {
  font-weight: 700;
  color: var(--heading);
}

.transport-trip-card-formula-sell .transport-trip-meta {
  color: var(--muted);
  width: 100%;
  text-align: center;
}


.transport-trip-card-meta {
  font-size: 0.75rem;
  color: var(--muted);
}

.transport-trip-card-qty {
  font-size: 1rem;
  font-weight: 700;
  min-width: 1.8em;
  text-align: center;
  color: var(--heading);
}

.transport-trip-card-stepper .transport-trip-card-qty {
  font-size: 0.95rem;
}

.transport-trip-card-locked {
  opacity: 0.6;
  pointer-events: none;
}

.transport-trip-card-stepper {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  padding-top: 10px;
  margin-top: 4px;
  border-top: 1px solid rgba(126, 97, 43, 0.22);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.transport-trip-card-stepper .transport-trip-stepper-btn {
  min-width: 40px;
  height: 40px;
  padding: 0 8px;
  border-radius: 8px;
  border: 1px solid transparent;
  cursor: pointer;
  font-size: 0.9rem;
  font-weight: 600;
}

.transport-trip-card-stepper .stepper-clear {
  width: 40px;
  padding: 0;
  background: #dc2626;
  color: #fff;
  border-color: #b91c1c;
}

.transport-trip-card-stepper .stepper-clear:hover:not(:disabled) {
  background: #b91c1c;
}

.transport-trip-card-stepper .stepper-minus {
  background: #fef2f2;
  color: #dc2626;
  border-color: #fecaca;
}

.transport-trip-card-stepper .stepper-minus:hover:not(:disabled) {
  background: #fee2e2;
}

.transport-trip-card-stepper .stepper-plus {
  background: #f0fdf4;
  color: #16a34a;
  border-color: #bbf7d0;
}

.transport-trip-card-stepper .stepper-plus:hover:not(:disabled) {
  background: #dcfce7;
}

.stepper-icon-trash {
  display: inline-block;
  width: 18px;
  height: 18px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'/%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'/%3E%3Cline x1='10' y1='11' x2='10' y2='17'/%3E%3Cline x1='14' y1='11' x2='14' y2='17'/%3E%3C/svg%3E") no-repeat center;
  background-size: contain;
  vertical-align: middle;
}

.transport-trip-card-stepper button:disabled,
.transport-trip-card-stepper .transport-trip-stepper-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.transport-trip-card-stepper input {
  width: 40px;
  text-align: center;
  border: 1px solid var(--panel-border);
  border-radius: 6px;
  padding: 4px;
  background: #fff;
  color: var(--text);
}

.transport-trip-actions {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  flex-shrink: 0;
}

.transport-trip-clear {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 10px 16px;
  border-radius: 10px;
  border: 2px solid var(--panel-border);
  background: rgba(255, 255, 255, 0.9);
  color: var(--text);
  cursor: pointer;
  font-weight: 600;
}

.transport-trip-clear-icon {
  width: 24px;
  height: 24px;
  object-fit: contain;
}

.transport-trip-send {
  padding: 10px 24px;
  border-radius: 10px;
  border: 2px solid var(--primary-dark);
  background: linear-gradient(180deg, var(--primary), var(--primary-dark));
  color: #fff;
  cursor: pointer;
  font-weight: 700;
}

.transport-trip-send:hover:not(:disabled) {
  filter: brightness(1.1);
}

.transport-trip-send:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.transport-trip-send.transport-trip-send--waiting {
  font-size: 0.82rem;
  line-height: 1.25;
  padding: 10px 14px;
  white-space: normal;
  text-align: center;
  max-width: min(300px, 88vw);
}

@media (max-width: 410px) {
  :root {
    --hud-safe: 138px;
    --nav-safe: 92px;
  }

  #game-screen {
    padding-top: 66px;
  }

  .sticky-stats {
    width: calc(100vw - 10px);
    top: 4px;
  }

  .farm-world {
    height: 100%;
  }

  /* Аккаунт: на весь экран как прочие .app-fullscreen-modal (не укорачивать — «съезжает вверх») */
  #account-view.account-modal {
    min-height: 100dvh;
    padding: 0 4px calc(var(--nav-safe) + 4px);
    box-sizing: border-box;
  }

  .admin-row {
    grid-template-columns: 1fr;
  }

  .admin-user-row {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 860px) {
  #account-view .card {
    overflow-x: hidden;
  }

  .admin-row,
  .admin-row.with-upload,
  .admin-user-row {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 760px) {
  :root {
    --nav-safe: 52px;
  }


  .quick-panel {
    transform-origin: center bottom;
  }

  .quick-item {
    min-width: 0;
    max-width: 100%;
  }

  .quick-item.quick-visual-card {
    min-width: 0;
    width: 100%;
  }

  .quick-item img:not(.game-card-thumb--full) {
    height: 46px;
  }

  .quick-panel.quick-panel-construction .quick-item.quick-visual-card.quick-construction-card .app-modal-card-thumb .game-card-thumb--full,
  .quick-panel.quick-panel-construction .quick-item.quick-visual-card.quick-construction-card .app-modal-card-thumb .game-card-thumb--crop {
    width: 72px;
    height: 72px;
    max-height: 72px;
  }
}
.welcome-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(45, 80, 50, 0.85);
  padding: 16px;
  transition: opacity 0.25s ease;
}

.welcome-modal.hidden {
  pointer-events: none;
  opacity: 0;
  display: none;
}

.welcome-modal-content {
  background: var(--panel);
  border: 3px solid var(--panel-border);
  border-radius: 16px;
  padding: 24px;
  max-width: 360px;
  text-align: center;
  box-shadow: var(--shadow);
}

.welcome-modal-content h2 {
  margin: 0 0 12px;
  font-size: 1.35rem;
  color: var(--heading);
}

.welcome-goal {
  margin: 0 0 20px;
  font-size: 1rem;
  line-height: 1.45;
  color: var(--text);
}

.welcome-play-btn {
  display: inline-block;
  padding: 12px 28px;
  font-size: 1.1rem;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(180deg, var(--primary), var(--primary-dark));
  border: 2px solid #2a7a1f;
  border-radius: 12px;
  cursor: pointer;
  box-shadow: 0 4px 10px rgba(62, 159, 46, 0.35);
}

.welcome-play-btn:hover {
  background: linear-gradient(180deg, #4ab038, var(--primary));
}

.welcome-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(45, 80, 50, 0.85);
  padding: 16px;
  transition: opacity 0.25s ease;
}

.welcome-modal.hidden {
  pointer-events: none;
  opacity: 0;
  display: none;
}

.welcome-modal-content {
  background: var(--panel);
  border: 3px solid var(--panel-border);
  border-radius: 16px;
  padding: 24px;
  max-width: 360px;
  text-align: center;
  box-shadow: var(--shadow);
}

.welcome-modal-content h2 {
  margin: 0 0 12px;
  font-size: 1.35rem;
  color: var(--heading);
}

.welcome-goal {
  margin: 0 0 20px;
  font-size: 1rem;
  line-height: 1.45;
  color: var(--text);
}

.welcome-play-btn {
  display: inline-block;
  padding: 12px 28px;
  font-size: 1.1rem;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(180deg, var(--primary), var(--primary-dark));
  border: 2px solid #2a7a1f;
  border-radius: 12px;
  cursor: pointer;
  box-shadow: 0 4px 10px rgba(62, 159, 46, 0.35);
}

.welcome-play-btn:hover {
  background: linear-gradient(180deg, #4ab038, var(--primary));
}

.welcome-play-btn:active {
  transform: scale(0.98);
}

.achievements-modal-tabs {
  display: flex;
  flex-direction: row;
  gap: 8px;
  flex: 0 0 auto;
  width: 100%;
}

.achievements-tab {
  flex: 1;
  min-width: 0;
  line-height: 1.3;
}

.achievements-list {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
}

.achievement-item {
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  padding: 0;
  overflow: visible;
  border-radius: 10px;
  border: 2px solid var(--panel-border);
  background: rgba(255, 255, 255, 0.95);
  color: var(--text);
  min-height: 0;
}

.achievement-item > .app-modal-card.achievement-item-top {
  border: none;
  border-radius: 0;
  background: transparent;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  box-shadow: none;
}

.achievement-item-details {
  padding: 12px;
  min-width: 0;
}

.achievement-item-thumb {
  align-self: center;
}

/* Миниатюры списков: достижения, строительство — один визуальный стиль */
.achievement-reward-thumb--crop,
.game-card-thumb--crop {
  width: 72px;
  height: 72px;
  flex-shrink: 0;
  border-radius: 10px;
  border: 1px solid rgba(126, 97, 43, 0.35);
  background-color: rgba(255, 255, 255, 0.45);
  box-sizing: border-box;
}

.achievement-reward-thumb--full,
.game-card-thumb--full {
  width: 72px;
  height: 72px;
  object-fit: contain;
  display: block;
  border-radius: 10px;
  border: 1px solid rgba(126, 97, 43, 0.3);
  background: rgba(255, 255, 255, 0.55);
  box-sizing: border-box;
  padding: 4px;
}

.achievement-item-side .achievement-claim-btn {
  margin-top: 0;
  width: 100%;
  max-width: 140px;
}

.achievement-done-icon {
  font-size: 1.5rem;
  color: #2a7a1f;
  line-height: 1;
}

.achievement-item.completed {
  border-color: #2a7a1f;
  background: rgba(42, 122, 31, 0.12);
  color: var(--text);
}

.achievement-item .achievement-name {
  font-weight: 700;
  color: var(--heading);
}

.achievement-item .achievement-desc {
  font-size: 0.9rem;
  color: var(--text);
  margin-top: 4px;
}

.achievement-req-list {
  margin: 8px 0 6px;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
  min-width: 0;
}

.achievement-req-item {
  margin: 0;
  padding: 0;
  width: 100%;
  min-width: 0;
}

.achievement-req {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  width: 100%;
  min-width: 0;
  font-size: 0.95rem;
  line-height: 1.4;
  user-select: none;
}

.achievement-req > span {
  flex: 1;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.achievement-req input[type="checkbox"] {
  width: auto;
  padding: 0;
  margin: 2px 0 0;
}

.achievement-item .achievement-progress {
  font-size: 0.9rem;
  color: var(--primary-dark);
  margin-top: 4px;
  font-weight: 600;
}

.achievement-item .achievement-rewards {
  font-size: 0.85rem;
  color: #2a7a1f;
  margin-top: 6px;
}

.achievement-item.pending {
  border-color: var(--accent-gold);
  background: rgba(212, 181, 107, 0.25);
  color: var(--text);
}

.achievement-claim-btn {
  margin-top: 8px;
  padding: 8px 16px;
  font-size: 0.95rem;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(180deg, var(--primary), var(--primary-dark));
  border: 2px solid #2a7a1f;
  border-radius: 8px;
  cursor: pointer;
}

.achievement-claim-btn:hover {
  filter: brightness(1.1);
}

/* Friends modal */
.friends-modal .app-modal-dialog {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.friends-modal .app-modal-content {
  overflow-x: hidden;
}
.friends-modal-tabs {
  display: flex;
  flex-direction: row;
  gap: 8px;
  flex: 0 0 auto;
  width: 100%;
}
.friends-tab-icon {
  width: 20px;
  height: 20px;
  object-fit: contain;
  flex-shrink: 0;
}

.friends-tab {
  flex: 1;
  min-width: 0;
  line-height: 1.3;
}

/* Friends modal: narrow screens — tabs icon-only */
@media (max-width: 560px) {
  .friends-modal-tabs .app-modal-tab {
    flex: 1 1 0;
    min-width: 0;
    padding: 10px 8px;
    justify-content: center;
  }
  .friends-modal .friends-tab-label {
    display: none;
  }
  .friends-modal .friends-tab-icon {
    width: 28px;
    height: 28px;
    margin: 0;
  }
}

.friends-content {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}
.friends-panel {
  min-height: 120px;
  min-width: 0;
}
.friends-list-item,
.friends-request-item,
.friends-search-item {
  margin-bottom: 8px;
  min-width: 0;
  box-sizing: border-box;
}

.friends-list-avatar {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--panel-border);
  background: #e8e0d4;
  display: block;
}

.friends-list-name,
.friends-search-name {
  font-weight: 700;
  color: var(--heading);
}
.friends-list-achievements,
.friends-request-email,
.friends-search-email {
  font-size: 0.9rem;
  color: var(--text);
}
.friends-visit-btn,
.friends-accept-btn,
.friends-decline-btn,
.friends-send-request-btn {
  flex-shrink: 0;
  width: max-content;
  padding: 6px 12px;
  font-size: 0.9rem;
  box-sizing: border-box;
}
.friends-accept-btn { color: #2a7a1f; }
.friends-decline-btn { color: #a52a2a; }
.friends-request-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  flex-shrink: 0;
}

.friends-search-name { font-weight: 600; }
.friends-search-results { margin-top: 8px; }
.friends-empty,
.friends-loading,
.friends-error {
  padding: 12px;
  color: var(--text);
  font-size: 0.95rem;
}
.friends-error { color: #a52a2a; }
#friends-search-input {
  width: 100%;
  padding: 8px 12px;
  margin-top: 4px;
  border-radius: 8px;
  border: 2px solid var(--panel-border);
  font-size: 1rem;
  box-sizing: border-box;
}

/* Visit mode banner */
.visit-mode-banner {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 16px;
  margin-top: 8px;
  border-radius: 12px;
  background: rgba(45, 80, 50, 0.95);
  color: #fff;
  font-size: 0.95rem;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
}
.visit-mode-banner.hidden {
  display: none;
}
.visit-mode-back-btn {
  padding: 6px 14px;
  background: rgba(255, 255, 255, 0.25);
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: 8px;
  color: #fff;
  font-weight: 600;
  cursor: pointer;
}
.visit-mode-back-btn:hover {
  background: rgba(255, 255, 255, 0.35);
}

/* В гостях: только баннер с «Вернуться», остальной HUD скрыт */
#game-screen.visit-mode-active .top-menu,
#game-screen.visit-mode-active .hud-inventory-strip,
#game-screen.visit-mode-active .game-hud-rail--top,
#game-screen.visit-mode-active .bottom-action-buttons,
#game-screen.visit-mode-active .quick-panel,
#game-screen.visit-mode-active #build-confirm-bar,
#game-screen.visit-mode-active #drag-cancel-zone,
#game-screen.visit-mode-active .admin-cell-select-toggle,
#game-screen.visit-mode-active .tile-tune-panel {
  display: none !important;
}

.welcome-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(45, 80, 50, 0.85);
  padding: 16px;
  transition: opacity 0.25s ease;
}

.welcome-modal.hidden {
  pointer-events: none;
  opacity: 0;
  display: none;
}

.welcome-modal-content {
  background: var(--panel);
  border: 3px solid var(--panel-border);
  border-radius: 16px;
  padding: 24px;
  max-width: 360px;
  text-align: center;
  box-shadow: var(--shadow);
}

.welcome-modal-content h2 {
  margin: 0 0 12px;
  font-size: 1.35rem;
  color: var(--heading);
}

.welcome-goal {
  margin: 0 0 20px;
  font-size: 1rem;
  line-height: 1.45;
  color: var(--text);
}

.welcome-play-btn {
  display: inline-block;
  padding: 12px 28px;
  font-size: 1.1rem;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(180deg, var(--primary), var(--primary-dark));
  border: 2px solid #2a7a1f;
  border-radius: 12px;
  cursor: pointer;
  box-shadow: 0 4px 10px rgba(62, 159, 46, 0.35);
}

.welcome-play-btn:hover {
  background: linear-gradient(180deg, #4ab038, var(--primary));
}

.welcome-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(45, 80, 50, 0.85);
  padding: 16px;
  transition: opacity 0.25s ease;
}

.welcome-modal.hidden {
  pointer-events: none;
  opacity: 0;
  display: none;
}

.welcome-modal-content {
  background: var(--panel);
  border: 3px solid var(--panel-border);
  border-radius: 16px;
  padding: 24px;
  max-width: 360px;
  text-align: center;
  box-shadow: var(--shadow);
}

.welcome-modal-content h2 {
  margin: 0 0 12px;
  font-size: 1.35rem;
  color: var(--heading);
}

.welcome-goal {
  margin: 0 0 20px;
  font-size: 1rem;
  line-height: 1.45;
  color: var(--text);
}

.welcome-play-btn {
  display: inline-block;
  padding: 12px 28px;
  font-size: 1.1rem;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(180deg, var(--primary), var(--primary-dark));
  border: 2px solid #2a7a1f;
  border-radius: 12px;
  cursor: pointer;
  box-shadow: 0 4px 10px rgba(62, 159, 46, 0.35);
}

.welcome-play-btn:hover {
  background: linear-gradient(180deg, #4ab038, var(--primary));
}

.welcome-play-btn:active {
  transform: scale(0.98);
}

