/* =========================================================================
   Техническая документация BAZAPP (A4 · F1 · P2) — tech.bazapp.ru
   Палитра взята с логотипа BAZAPP: золото и тёмная бирюза.
   Сетка, шапка, подвал и страницы документов — общая вёрстка документации.
   ========================================================================= */

/* 01 / ТОКЕНЫ ============================================================ */
:root{
  /* палитра BAZAPP */
  --gold:#C9A15A;
  --gold-lt:#E8CF96;
  --gold-dk:#8A6328;
  --teal-900:#0A2024;
  --teal-800:#0E2A2E;
  --teal-600:#15474C;
  --teal-500:#2C6B6E;
  --cream:#F4EFE3;

  --bg:#F7F5EE;
  --fg:#0E2A2E;
  --surface:#FFFFFF;
  --surface-2:#ECE9DD;
  --line:rgba(14,42,46,.15);
  --line-strong:rgba(14,42,46,.30);
  --muted:rgba(14,42,46,.70);
  --shadow:0 24px 60px -34px rgba(14,42,46,.50);
  --acc:var(--gold);          /* декор: треугольники, полосы */
  --acc-text:var(--gold-dk);  /* акцент в тексте: читается на светлом */
  --btn-bg:var(--gold);
  --btn-fg:var(--teal-800);
  --btn-hover:var(--gold-lt);
  --mark-bg:rgba(201,161,90,.28);

  --maxw:1260px;
  --gut:clamp(16px,3.6vw,52px);
  --cut:20px;
  --sec:clamp(64px,8vw,140px);

  --t-h1:clamp(2rem,1.3rem + 2.6vw,3.7rem);
  --t-h2:clamp(1.6rem,1.15rem + 1.8vw,2.7rem);
  --t-h3:clamp(1.05rem,.95rem + .45vw,1.32rem);
  --t-lead:clamp(1rem,.95rem + .35vw,1.2rem);

  --f-display:'Manrope',system-ui,-apple-system,sans-serif;
  --f-logo:'Unbounded','Manrope',system-ui,sans-serif;
  --f-text:'Manrope',system-ui,-apple-system,'Segoe UI',sans-serif;
  --f-mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
}
[data-theme="dark"]{
  --bg:#081B1E;
  --fg:var(--cream);
  --surface:#0E2A2E;
  --surface-2:#133A3F;
  --line:rgba(244,239,227,.16);
  --line-strong:rgba(244,239,227,.34);
  --muted:rgba(244,239,227,.68);
  --shadow:0 30px 70px -40px rgba(0,0,0,.9);
  --acc-text:var(--gold-lt);
  --mark-bg:rgba(201,161,90,.30);
}

/* 02 / БАЗА ============================================================== */
*,*::before,*::after{box-sizing:border-box;min-width:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--fg);
  font-family:var(--f-text);
  font-size:clamp(15px,.3vw + 14.2px,17px);
  line-height:1.6;font-weight:450;
  overflow-x:hidden;-webkit-font-smoothing:antialiased;
  transition:background .35s ease,color .35s ease;
}
img,svg,canvas,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select{font:inherit;color:inherit}
h1,h2,h3,h4{font-family:var(--f-display);font-weight:800;line-height:1.04;letter-spacing:-.025em;margin:0;text-wrap:balance;overflow-wrap:break-word}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
::selection{background:var(--gold);color:var(--teal-800)}
:focus-visible{outline:3px solid var(--acc-text);outline-offset:3px}
[hidden]{display:none !important}

.wrap{width:min(100% - var(--gut)*2,var(--maxw));margin-inline:auto}
[id]{scroll-margin-top:92px}
.mono{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.15em;text-transform:uppercase;font-weight:600}

/* 03 / АТОМЫ ФИРСТИЛЯ ==================================================== */
.tri{width:13px;height:13px;flex:none;clip-path:polygon(0 0,100% 0,0 100%)}
.tri--tr{clip-path:polygon(0 0,100% 0,100% 100%)}
.tri--br{clip-path:polygon(100% 0,100% 100%,0 100%)}
.tri--bl{clip-path:polygon(0 0,100% 100%,0 100%)}
.c-gold{background:var(--gold)}.c-teal{background:var(--teal-500)}
.c-goldlt{background:var(--gold-lt)}.c-golddk{background:var(--gold-dk)}
.cut{clip-path:polygon(0 0,100% 0,100% calc(100% - var(--cut)),calc(100% - var(--cut)) 100%,0 100%)}

.lead{font-size:var(--t-lead);color:var(--muted);max-width:64ch;line-height:1.62}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:11px;
  padding:15px 24px;background:var(--btn-bg);color:var(--btn-fg);
  font-weight:700;font-size:.94rem;letter-spacing:-.01em;border:0;cursor:pointer;
  position:relative;overflow:hidden;isolation:isolate;text-align:center;
  transition:transform .18s cubic-bezier(.2,.8,.2,1),color .18s ease;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 11px),calc(100% - 11px) 100%,0 100%);
}
.btn::after{content:"";position:absolute;inset:-1px;background:var(--btn-hover);transform:translateY(101%);transition:transform .32s cubic-bezier(.2,.8,.2,1);z-index:-1}
.btn:hover{transform:translateY(-2px)}
.btn:hover::after{transform:translateY(0)}
.btn__tri{width:9px;height:9px;flex:none;background:currentColor;clip-path:polygon(0 0,100% 50%,0 100%)}
.btn--ghost{--btn-bg:var(--line-strong);--btn-fg:var(--fg);--btn-hover:var(--fg)}
.btn--ghost::before{content:"";position:absolute;inset:1.5px;background:var(--bg);z-index:-2;clip-path:polygon(0 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%)}
.btn--ghost:hover{color:var(--bg)}
.btn--sm{padding:12px 18px;font-size:.88rem}

.card{
  background:var(--surface);border:1px solid var(--line);padding:clamp(22px,2.2vw,30px);position:relative;
  transition:transform .3s cubic-bezier(.2,.8,.2,1),border-color .3s ease,box-shadow .3s ease;
}
.card::before{content:"";position:absolute;top:0;left:0;width:0;height:4px;background:var(--acc);transition:width .38s cubic-bezier(.2,.8,.2,1);z-index:2}
.card:hover{transform:translateY(-5px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.card:hover::before{width:100%}
.card p{color:var(--muted);font-size:.93rem}

/* 04 / ШАПКА ============================================================= */
.hdr{position:fixed;top:0;left:0;right:0;z-index:90;transition:background .3s ease,backdrop-filter .3s}
.hdr::after{content:"";position:absolute;inset:0;border-bottom:1px solid transparent;pointer-events:none;transition:border-color .3s}
.hdr.is-stuck{background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(14px) saturate(1.4)}
.hdr.is-stuck::after{border-bottom-color:var(--line)}
.hdr__in{display:flex;align-items:center;gap:18px;height:clamp(62px,6vw,74px)}

.logo{display:flex;align-items:center;gap:12px;flex:none}
.logo__img{width:auto;height:40px;flex:none}
.logo__txt{display:flex;flex-direction:column;gap:3px;line-height:1}
.logo__name{font-family:var(--f-logo);font-weight:800;font-size:1.05rem;letter-spacing:.06em;color:var(--fg)}
.logo__cap{font-family:var(--f-mono);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--muted);white-space:nowrap}
.ftr .logo{gap:16px}
.ftr .logo__img{height:56px}
.ftr .logo__name{color:var(--cream);font-size:1.3rem}
.ftr .logo__cap{color:rgba(244,239,227,.6);font-size:.64rem}
.nav{display:flex;gap:10px;margin-left:auto;min-width:0}
.nav a{font-size:.84rem;font-weight:600;color:var(--muted);position:relative;padding:6px 0;white-space:nowrap;transition:color .2s}
.nav a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .28s cubic-bezier(.2,.8,.2,1)}
.nav a:hover{color:var(--fg)}
.nav a:hover::after{transform:scaleX(1)}
.nav a[aria-current="page"]{color:var(--fg)}
.nav a[aria-current="page"]::after{transform:scaleX(1)}
.hdr__act{display:flex;align-items:center;gap:9px;margin-left:auto;flex:none}
.nav+.hdr__act{margin-left:0}
.icon-btn{width:38px;height:38px;flex:none;display:grid;place-items:center;background:transparent;border:1.5px solid var(--line);cursor:pointer;transition:border-color .2s,transform .2s}
.icon-btn:hover{border-color:var(--line-strong);transform:translateY(-1px)}
.icon-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.theme-sun{display:none}
[data-theme="dark"] .theme-sun{display:block}
[data-theme="dark"] .theme-moon{display:none}
.burger{display:none}

@media (min-width:1361px){
  /* десять разделов в строке: кнопка bazapp.ru уходит, на bazapp.ru ведёт знак */
  .hdr__act > .btn{display:none}
}

/* Мобильное меню */
.sheet{position:fixed;inset:0;z-index:89;background:var(--bg);padding:84px var(--gut) 36px;transform:translateY(-100%);transition:transform .42s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column;gap:4px;overflow-y:auto;visibility:hidden}
.sheet.on{transform:translateY(0);visibility:visible}
.sheet a{font-family:var(--f-display);font-size:clamp(1.2rem,4.6vw,1.6rem);font-weight:800;letter-spacing:-.03em;padding:11px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:13px}
.sheet a[aria-current="page"]{color:var(--acc-text)}
.sheet .btn{margin-top:22px;border-bottom:0}

/* 05 / ПОДВАЛ ============================================================ */
.ftr{background:var(--teal-800);color:var(--cream);padding-top:clamp(40px,4.5vw,64px)}
[data-theme="dark"] .ftr{background:var(--teal-900);border-top:1px solid var(--line)}
.ftr__top{display:flex;align-items:center;gap:clamp(18px,2.6vw,44px);flex-wrap:wrap;
  padding-bottom:clamp(24px,3vw,34px);border-bottom:1px solid rgba(244,239,227,.14)}
.ftr__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));
  gap:clamp(24px,2.6vw,34px);padding:clamp(30px,3.4vw,46px) 0 clamp(30px,3.4vw,44px)}
.ftr h5{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.15em;text-transform:uppercase;color:var(--gold);margin:0 0 16px;font-weight:600}
.ftr li{padding:5px 0}
.ftr a{font-size:.87rem;color:rgba(244,239,227,.78);transition:color .2s}
.ftr a:hover{color:var(--gold-lt)}
.ftr .logo,.ftr .logo:hover{color:var(--cream)}
.ftr__about{font-size:.87rem;color:rgba(244,239,227,.66);max-width:46ch;margin-top:0}
.ftr li + .ftr__about,.ftr ul + .ftr__about{margin-top:10px}
.ftr__about a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(232,207,150,.5)}
.swatches{display:flex;height:8px}
.swatches i{flex:1}
.swatches i:nth-child(1){background:var(--gold-dk)}
.swatches i:nth-child(2){background:var(--gold)}
.swatches i:nth-child(3){background:var(--gold-lt)}
.swatches i:nth-child(4){background:var(--teal-500)}
.ftr__btm{display:flex;flex-wrap:wrap;gap:14px clamp(20px,3vw,48px);justify-content:space-between;
  align-items:flex-start;padding:20px 0 24px;border-top:1px solid rgba(244,239,227,.14);
  font-size:.78rem;color:rgba(244,239,227,.6)}
.ftr__copy{line-height:1.5}

/* 06 / СТРАНИЦЫ ДОКУМЕНТОВ  ================= */
.doc{padding:calc(clamp(62px,6vw,74px) + clamp(34px,4vw,56px)) 0 clamp(48px,6vw,84px)}
.doc__back{display:inline-flex;align-items:center;gap:9px;font-family:var(--f-mono);font-size:.7rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:24px;transition:color .2s}
.doc__back:hover{color:var(--fg)}
.doc__back i{width:9px;height:9px;background:var(--acc);clip-path:polygon(100% 0,0 50%,100% 100%)}
.doc__hd{max-width:80ch;padding-bottom:clamp(24px,3vw,34px);border-bottom:1px solid var(--line)}
.doc__hd h1{font-family:var(--f-display);font-weight:800;letter-spacing:-.035em;line-height:1.07;
  font-size:clamp(1.6rem,1.15rem + 1.9vw,2.7rem);margin:0 0 14px;text-wrap:balance}

/* 07 / ДОКУМЕНТАЦИЯ: текст ============================================== */
.doc__body{max-width:960px;padding-top:clamp(8px,1vw,14px)}
.doc__body > p,.doc__body > ul,.doc__body > ol,.doc__body > h3{max-width:84ch}
.doc__body h2{position:relative;font-family:var(--f-display);font-weight:800;letter-spacing:-.025em;
  font-size:clamp(1.1rem,.98rem + .55vw,1.4rem);line-height:1.25;
  margin:clamp(26px,3vw,36px) 0 16px;padding-top:clamp(26px,3vw,36px);border-top:1px solid var(--line)}
.doc__body h2::before{content:"";position:absolute;top:-7px;left:0;width:13px;height:13px;
  background:var(--acc);clip-path:polygon(0 0,100% 0,0 100%)}
.doc__body > h2:first-child{border-top:0;padding-top:0}
.doc__body > h2:first-child::before{display:none}
.doc__body h3{font-family:var(--f-display);font-weight:700;font-size:1rem;letter-spacing:-.01em;line-height:1.35;margin:24px 0 10px}
.doc__body p{margin:0 0 12px;color:var(--muted);line-height:1.7}
.doc__body strong,.doc__body b{color:var(--fg);font-weight:700}
.doc__body em{font-style:normal;color:var(--fg);background:var(--mark-bg);padding:0 4px}
.doc__body a,.doc__hd .lead a{color:var(--fg);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.doc__body a:hover{color:var(--acc-text)}

.doc__body ul{margin:0 0 14px}
.doc__body ul > li{display:block;position:relative;padding:4px 0 4px 19px;color:var(--muted);line-height:1.65}
.doc__body ul > li::before{content:"";position:absolute;left:0;top:13px;width:8px;height:8px;
  background:var(--acc);clip-path:polygon(0 0,100% 0,0 100%)}
.doc__body ol{margin:0 0 14px;padding:0;list-style:none;counter-reset:n}
.doc__body ol > li{counter-increment:n;position:relative;padding:4px 0 4px 34px;color:var(--muted);line-height:1.65}
.doc__body ol > li::before{content:counter(n) ".";position:absolute;left:0;top:4px;font-family:var(--f-mono);
  font-weight:600;font-size:.92rem;color:var(--acc-text)}
.doc__body li > ul,.doc__body li > ol{margin:6px 0 0}

/* Код */
code{font-family:var(--f-mono);font-size:.84em;background:var(--surface-2);color:var(--fg);padding:1px 6px;overflow-wrap:anywhere}
pre{font-family:var(--f-mono);font-size:.8rem;line-height:1.6;background:var(--surface);color:var(--fg);
  border:1px solid var(--line-strong);border-left:4px solid var(--gold);
  margin:10px 0 18px;padding:16px 18px;overflow-x:auto;max-width:100%;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%)}
pre code{background:none;padding:0;font-size:inherit;overflow-wrap:normal;white-space:pre}
[data-theme="dark"] pre{background:var(--surface-2)}

/* Заметка — как .doc__note */
.note{position:relative;margin:clamp(18px,2.4vw,26px) 0;
  padding:clamp(15px,1.8vw,20px) clamp(17px,2vw,24px) clamp(15px,1.8vw,20px) calc(clamp(17px,2vw,24px) + 24px);
  background:var(--surface);border:1px solid var(--line-strong);font-size:.9rem;color:var(--muted);line-height:1.6;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%);max-width:84ch}
.note::before{content:"";position:absolute;left:clamp(17px,2vw,24px);top:calc(clamp(15px,1.8vw,20px) + 5px);
  width:13px;height:13px;background:var(--gold);clip-path:polygon(0 0,100% 0,0 100%)}
.note strong{color:var(--fg)}
.doc__hd + .doc__body > .note:first-child{margin-top:clamp(24px,3vw,34px)}

/* Чем подтверждено — служебная строка под заголовком раздела */
.matrix{position:relative;padding-left:19px;font-size:.86rem;color:var(--muted)}
.doc__body p.matrix{line-height:1.6;margin-bottom:14px}
.matrix::before{content:"";position:absolute;left:0;top:.5em;width:9px;height:9px;background:var(--teal-500);clip-path:polygon(0 0,100% 0,0 100%)}

/* Таблицы — как .doc__t */
.tw{overflow-x:auto;margin:8px 0 18px;border:1px solid var(--line);background:var(--surface)}
.tw table{width:100%;border-collapse:collapse;font-size:.84rem}
.tw table:has(th:nth-child(3)){min-width:620px}
.tw th{background:var(--surface-2);text-align:left;font-family:var(--f-mono);font-size:.68rem;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:12px 14px;
  border-bottom:1px solid var(--line-strong);vertical-align:top}
.tw td{padding:12px 14px;border-bottom:1px solid var(--line);color:var(--muted);line-height:1.55;vertical-align:top}
.tw tr:last-child td{border-bottom:0}
.tw td:first-child{color:var(--fg)}

/* Ролик */
figure{margin:clamp(18px,2.4vw,26px) 0}
figure video{width:100%;height:auto;border:1px solid var(--line-strong);background:var(--surface-2)}
figcaption{margin-top:12px}

/* Карточки главной */
.cards{display:grid;gap:16px;margin:18px 0 8px;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.cards .card{display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.card-t{font-family:var(--f-display);font-weight:800;font-size:var(--t-h3);letter-spacing:-.02em;line-height:1.2;
  color:var(--fg);text-decoration:none}
.cards .card-t{text-decoration:none;color:var(--fg)}
a.card-t{display:inline}
a.card-t::after{content:"";display:inline-block;width:9px;height:9px;margin-left:10px;vertical-align:.1em;background:currentColor;clip-path:polygon(0 0,100% 50%,0 100%);transition:transform .2s}
.cards a.card-t:hover{color:var(--acc-text)}
a.card-t:hover::after{transform:translateX(3px)}
.cards .card p{margin:0;line-height:1.6}
.cards .card .card__btn{margin-top:auto;text-decoration:none;color:var(--btn-fg)}
.cards .card p + .card__btn{margin-top:auto}
.cards .card:has(.card__btn) p{margin-bottom:8px}
.cards .card:nth-child(4n+1){--acc:var(--gold)}
.cards .card:nth-child(4n+2){--acc:var(--teal-500)}
.cards .card:nth-child(4n+3){--acc:var(--gold-dk)}
.cards .card:nth-child(4n+4){--acc:var(--gold-lt)}

/* Блок «Скачать» */
.dl{margin:12px 0 22px;background:var(--surface);border:1px solid var(--line-strong);position:relative;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 18px),calc(100% - 18px) 100%,0 100%)}
.dl::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--gold-dk) 0 25%,var(--gold) 0 50%,var(--gold-lt) 0 75%,var(--teal-500) 0)}
.dl__hd{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;padding:clamp(20px,2.4vw,28px)}
.dl__name{display:block;font-family:var(--f-display);font-weight:800;font-size:var(--t-h3);letter-spacing:-.02em;line-height:1.2;margin-bottom:6px}
.dl__ver{display:block;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);line-height:1.6}
.dl__ver a{text-transform:none;letter-spacing:0;font-size:.82rem}
.doc__body .dl .btn{text-decoration:none;color:var(--btn-fg)}
.doc__body .dl .btn:hover{color:var(--btn-fg)}
.doc__body .dl .btn--ghost:hover{color:var(--bg)}
.dl .tw{margin:0;border:0;border-top:1px solid var(--line)}
.dl .tw table,.dl .tw table:has(th:nth-child(3)){min-width:0}
.dl .tw td:first-child code{overflow-wrap:normal}
.dl .tw td a{text-decoration:none}
.dl .tw td a:hover code{background:color-mix(in srgb,var(--gold) 28%,var(--surface-2))}
@media (max-width:560px){
  .dl__hd .btn{width:100%}
  .dl .tw tr > :nth-child(2){display:none}
}

/* 08 / АДАПТИВ ========================================================== */
@media (max-width:1360px){
  .nav{display:none}
  .burger{display:grid}
  .hdr__act,.nav+.hdr__act{margin-left:auto}
}
@media (max-width:640px){
}
@media (max-width:560px){
  .hide-sm{display:none}
  .sheet .btn{width:100%}
}
@media (max-width:350px){
  .logo__cap{display:none}
}

/* Уважаем системную настройку «меньше движения» */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  html{scroll-behavior:auto}
}
