/* Фирменный стиль Peter Vase Holding · направление editorial · шрифты libre-caslon-text / public-sans (OFL) */
@font-face{font-family:"Libre Caslon Text Display";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/libre-caslon-text-400-normal-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:"Libre Caslon Text Display";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/libre-caslon-text-400-normal-latin.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:"Libre Caslon Text Display";font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/libre-caslon-text-700-normal-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:"Libre Caslon Text Display";font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/libre-caslon-text-700-normal-latin.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:"Public Sans Text";font-style:normal;font-weight:300 800;font-display:swap;src:url(../fonts/public-sans-300-800-normal-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:"Public Sans Text";font-style:normal;font-weight:300 800;font-display:swap;src:url(../fonts/public-sans-300-800-normal-latin.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
html[data-palette="brand"]{--paper:#E9F8FA; --surface:#F4FDFF; --tone:#D0E6EA; --ink:#132A2F; --ink-soft:#446066; --line:rgba(19,42,47,.18); --brand:#023A42; --brand-deep:#032429; --brand-soft:#D1E8EC; --on-brand:#FFFFFF; --accent:#7C591A; --accent-bright:#DEB77A; --dark:#061214; --on-dark:#DFEAEC; --on-dark-soft:#9DAFB2; --display:"Libre Caslon Text Display", Georgia, "Times New Roman", serif; --body:"Public Sans Text", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; --display-weight:600; --display-tracking:-.02em; --display-leading:1.02; --radius:0; --radius-lg:0; --btn-radius:0; --logo-font:"Libre Caslon Text Display", Georgia, "Times New Roman", serif; --logo-weight:400; --logo-case:none; --logo-track:0.01em;}
/* ============================================================
   BLOCK LIBRARY · BRAND CORE (2026-10-28)
   ------------------------------------------------------------
   Общая часть фирменного стиля. Подключается вместе с токенами
   бренда в assets/css/brand.css сайта (build/brand.py).
   Здесь только то, что нужно ЛЮБОМУ направлению: логотип в шапке
   и подвале, словесный знак фирменным шрифтом, сглаживание.
   ============================================================ */

html[data-palette="brand"] body{ -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility; }

/* Знак вместо квадрата с буквами. */
.brand__mark:has(> .brand__logo), .brand__box:has(> .brand__logo){
  background:none; width:auto; height:auto; padding:0; border-radius:0; min-width:0;
}
.brand__logo{ display:block; width:var(--logo-mark-size, 44px); height:var(--logo-mark-size, 44px); flex:none; }
.site-head--center .brand__logo, .site-head--split .brand__logo{ --logo-mark-size:48px; }

/* Словесный знак — шрифт и характер логотипа, а не основного текста. */
.brand__name{
  font-family:var(--logo-font, var(--display));
  font-weight:var(--logo-weight, 700);
  text-transform:var(--logo-case, none);
  letter-spacing:var(--logo-track, -.01em);
  font-size:var(--logo-size, 1.2rem);
}
.brand__sub{ letter-spacing:.12em; }

/* Шрифт ставится браузером сразу: текст виден, пока файл грузится. */
html[data-palette="brand"]{ font-synthesis-weight:none; }

/* Шапки «крупный бренд» и «бренд с подписью» были без знака: знак слева. */
.brand--big:has(.brand__logo), .brand--stack:has(.brand__logo){ flex-direction:row; align-items:center; gap:14px; }
.brand--big:has(.brand__logo) > span:not(.brand__mark), .brand--stack:has(.brand__logo) > span:not(.brand__mark){ display:flex; flex-direction:column; }
.brand--big .brand__logo{ --logo-mark-size:52px; }

/* Крупные заголовки на широком экране не переносятся по слогам («beslutnin-ger»):
   колонки там широкие, перенос нужен только телефонам (длинные датские слова). */
@media (min-width:900px){
  html[data-palette="brand"] :is(h1, h2){ hyphens:manual; }
}
/* Герой «кадр в рамке»: заголовок должен попасть в первый экран. */
@media (min-width:900px){
  html[data-palette="brand"] .hero-frame__figure img{ aspect-ratio:21/9; }
}
html[data-palette="brand"] .hero-frame{ padding-top:var(--sect-tight); }

/* ============================================================
   НАПРАВЛЕНИЕ · EDITORIAL — журнальный, классический
   Контрастная антиква, линейки над разделами, подчёркнутые
   ссылки, прямые углы, плотная колонка, капитель меток.
   ============================================================ */
html[data-palette="brand"][data-direction="editorial"]{ --radius:0; --radius-lg:0; --btn-radius:0; }
:where(html[data-direction="editorial"]) h1{ font-size:clamp(2.3rem, 5.4vw, 4.6rem); letter-spacing:-.02em; line-height:1.02; }
:where(html[data-direction="editorial"]) h2{ letter-spacing:-.015em; }
:where(html[data-direction="editorial"]) .lede{ font-family:var(--display); font-size:clamp(1.15rem, .8vw + 1rem, 1.5rem); line-height:1.45; }
:where(html[data-direction="editorial"]) .section-head{ border-top:3px double var(--ink); padding-top:clamp(16px, 2vw, 26px); max-width:none; }
:where(html[data-direction="editorial"]) :is(.blk--dark, .blk--brand) .section-head{ border-top-color:var(--on-dark-soft); }
:where(html[data-direction="editorial"]) .site-head{ border-bottom:3px double var(--ink); }
:where(html[data-direction="editorial"]) .site-nav a:not(.btn){ font-family:var(--display); font-size:1rem; font-weight:500; }
:where(html[data-direction="editorial"]) .btn{ font-weight:600; letter-spacing:.04em; padding-inline:26px; }
:where(html[data-direction="editorial"]) .btn--ghost{ border-width:0 0 2px; padding-inline:2px; background:none; color:var(--ink); }
:where(html[data-direction="editorial"]) .btn--ghost:hover{ background:none; color:var(--accent); border-color:var(--accent); transform:none; }
:where(html[data-direction="editorial"]) .prose a, :where(html[data-direction="editorial"]) p a:not(.btn){ text-decoration-thickness:1px; text-underline-offset:3px; }
:where(html[data-direction="editorial"]) :is(.process-grid__list li, .feature-offset__panel, .facts-cards__grid div,
  .faq-cards__grid article, .contact-form__box, .contact-cards__grid article, .contact-stack__form,
  .contact-person__card, .contact-brief__box, .hero-aside__list, .services-bento__grid article,
  .services-checklist__col, .services-cards__grid article){
  border:0; border-top:2px solid var(--ink); border-radius:0; background:transparent; padding-inline:0; box-shadow:none;
}
:where(html[data-direction="editorial"]) .services-cards__grid article{ border-left:0; }
:where(html[data-direction="editorial"]) .contact-form__box, :where(html[data-direction="editorial"]) .contact-stack__form{
  background:var(--surface); padding-inline:clamp(20px, 3vw, 36px); border:1px solid var(--line); border-top:3px solid var(--ink); }
:where(html[data-direction="editorial"]) .services-rows__list .num,
:where(html[data-direction="editorial"]) .services-numbered__grid .num{ font-style:italic; color:var(--accent); }
:where(html[data-direction="editorial"]) .frame figcaption{ font-style:italic; }

/* метка: линейка над ней, капитель */
:where(html[data-direction="editorial"]) .eyebrow{ display:block; width:auto; border-top:1px solid currentColor; padding-top:10px;
  letter-spacing:.18em; font-size:.7rem; }
:where(html[data-direction="editorial"]) .eyebrow::before{ display:none; }
