@import url('https://fonts.googleapis.com/css2?family=Unbounded:wght@400;600;800;900&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');

  :root{
    --bg:#F6F7FB;
    --surface:#FFFFFF;
    --ink:#14151A;
    --ink-soft:#5B5F6B;
    --ink-faint:#9AA0AE;
    --border:#E7E8F0;
    --coral:#FF4D6D;
    --teal:#17B0A3;
    --violet:#7C6CF0;
    --gold:#F5A623;
    --blue:#4E8CFF;
    --coral-tint:#FFE6EB;
    --teal-tint:#DFF6F2;
    --violet-tint:#EAE7FE;
    --gold-tint:#FDF0DC;
    --blue-tint:#E5EFFF;
    --shadow-soft: 0 20px 50px -25px rgba(20,21,26,0.25);
    --shadow-card: 0 12px 30px -18px rgba(20,21,26,0.22);
    --radius-lg: 28px;
    --radius-md: 18px;
    --radius-sm: 12px;
  }

  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    background:var(--bg);
    color:var(--ink);
    font-family:'Inter',sans-serif;
    -webkit-font-smoothing:antialiased;
    min-height:100vh;
  }
  /* ТЗ "Отображение названий" ("Все объекты"): длинное слово в названии/
     описании проекта/кейса/выставки/альбома не должно вылезать за границу
     карточки/попапа — переносим по правилам языка текста. hyphens:auto
     смотрит на атрибут lang ближайшего предка (см. document.documentElement.lang,
     который уже выставляется в setLang() в js/nav-and-auth-entry.js при
     каждом переключении RU/EN), поэтому перенос сам подстраивается под
     язык — русские слова переносятся по правилам русского, английские — по
     правилам английского, без ручного выбора словаря здесь.
     overflow-wrap/word-break — подстраховка для длинных "слов" без
     переносимых слогов (например, ссылок или бессмысленных строк без
     пробелов), которые hyphens не тронет вообще. Список селекторов —
     все места, где показываются пользовательские название/описание:
     карточки ленты (проекты/кейсы/выставки/альбомы), карточка кабинета,
     попап деталей, карточка анкеты. */
  .project-card-title, .project-card-desc, .case-card-title, .case-card-desc,
  .t-title, .t-desc, .gallery-album-title, .gallery-album-desc,
  .gallery-album-active-title, .dm-title, .dm-desc, .dm-year,
  .swipe-card .sc-name, .card-body .c-name, .p-name, .w-name,
  .cab-item-card, .cab-album-card{
    overflow-wrap:break-word;
    word-break:break-word;
    hyphens:auto;
  }
  h1,h2,h3,.display{
    font-family:'Unbounded',sans-serif;
    margin:0;
    letter-spacing:-0.01em;
  }
  .mono{ font-family:'JetBrains Mono',monospace; }
  a{ color:inherit; text-decoration:none; }
  button{ font-family:inherit; cursor:pointer; }
  ::selection{ background:var(--coral); color:#fff; }

/* Honeypot-поле форм регистрации/восстановления пароля (см. index.html
   #reg-website, js/auth-session.js openForgotPasswordModal()). Скрыто от
   людей, но остаётся в DOM и доступно простым ботам, которые не читают
   CSS. Специально НЕ display:none (часть ботов проверяет именно его и
   пропускает такие поля) — вместо этого поле визуально уводится за
   пределы экрана и гасится по прозрачности. */
.hp-field{
  position:absolute !important;
  left:-9999px !important;
  top:-9999px !important;
  width:1px;
  height:1px;
  overflow:hidden;
  opacity:0;
  pointer-events:none;
}