/* ============================================================
   SECTIONS - секции главной. Панель системы, не лендинг.
   ============================================================ */

.sec{border-bottom:1px solid var(--line);}

/* ---------- шапка секции: /02  TOOLS  ------------- 04 --- */
.sec-head{
  display:flex;align-items:center;gap:14px;
  padding:10px var(--gut);
  border-bottom:1px solid var(--line);
  background:var(--bg-1);
}
.sec-head .no{
  font-family:var(--mono);font-size:11px;font-weight:500;
  color:var(--orange);letter-spacing:.08em;
}
.sec-head h2{font-size:15px;letter-spacing:.1em;font-weight:600;}
.sec-head .rule{flex:1;height:1px;background:var(--line);}
.sec-head .count{font-family:var(--mono);font-size:10.5px;color:var(--mute);
  letter-spacing:.12em;}

/* ============================================================
   /01 HERO - стена типографики + панель метаданных
   ============================================================ */
.hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.55fr);}
.hero-main{padding:clamp(28px,5vw,64px) var(--gut) clamp(24px,4vw,44px);}
/* панель метаданных прижимает соцсети к низу, чтобы не висела пустота */
.hero-meta{
  border-left:1px solid var(--line);background:var(--bg-1);
  display:flex;flex-direction:column;
}
.hero-meta .socials{margin-top:auto;border-top:1px solid var(--line);}

.hero h1{
  /* нижняя граница clamp намеренно мелкая: на 320px «George Droid» в 56px
     не помещается ни в одну строку и рвёт лейаут */
  font-size:clamp(38px,12.5vw,168px);
  line-height:.82;
  letter-spacing:-.01em;
  font-weight:700;
  color:var(--text);
  overflow-wrap:break-word;
}
.hero .role{
  margin-top:clamp(14px,2vw,24px);
  font-family:var(--display);font-weight:500;text-transform:uppercase;
  font-size:clamp(20px,3.4vw,40px);line-height:1.02;
  color:var(--cream);
}
.hero .role em{font-style:normal;color:var(--mute);}
.hero .bio{
  margin-top:20px;max-width:52ch;color:var(--dim);font-size:15px;
}

.cta{margin-top:clamp(22px,3vw,34px);display:flex;flex-wrap:wrap;gap:0;}
.btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:13px 22px;
  border:1px solid var(--line);
  font-family:var(--mono);font-size:11px;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;color:var(--text);
  background:var(--bg);
  transition:background var(--dur),color var(--dur),border-color var(--dur);
}
.btn + .btn{border-left:none;}
.btn:hover{background:var(--orange);color:var(--ink);border-color:var(--orange);}
.btn.primary{background:var(--orange);color:var(--ink);border-color:var(--orange);}
.btn.primary:hover{background:var(--cream);border-color:var(--cream);}

/* панель метаданных: только честные значения */
.meta-row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:9px var(--gut);
  border-bottom:1px solid var(--line-soft);
}
.meta-row:last-child{border-bottom:none;}
.meta-row .val{color:var(--text);}

.socials{display:grid;grid-template-columns:1fr 1fr;}
.socials a{
  display:flex;align-items:center;gap:8px;
  padding:11px var(--gut);
  border-top:1px solid var(--line-soft);border-right:1px solid var(--line-soft);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dim);
  transition:background var(--dur),color var(--dur);
}
.socials a:nth-child(2n){border-right:none;}
.socials a:hover{background:var(--orange);color:var(--ink);}
.socials svg{width:13px;height:13px;flex:none;}

@media (max-width:860px){
  /* minmax(0,...) обязателен: иначе grid-дети с min-width:auto распирают
     колонку по самому длинному слову и появляется горизонтальный скролл */
  .hero{grid-template-columns:minmax(0,1fr);}
  .hero-meta{border-left:none;border-top:1px solid var(--line);}
}
@media (max-width:560px){
  /* кнопки в колонку: при переносе flex-строкой вторая теряла левую рамку */
  .cta{flex-direction:column;align-items:stretch;}
  .btn{justify-content:center;}
  .btn + .btn{border-left:1px solid var(--line);border-top:none;}
  /* правый лейбл секции съедал заголовок - на узком он лишний */
  .sec-head .count{display:none;}
}

/* ============================================================
   /02 TOOLS - строки-записи вместо карточек
   ============================================================ */
/* Колонки железные, а не auto: при auto самая правая ячейка меняет ширину от
   длины текста и утаскивает за собой всю сетку - строки перестают выстраиваться
   в вертикаль, что для брутализма смертельно. */
.tool{
  display:grid;
  grid-template-columns:64px 220px minmax(0,1fr) 210px 48px;
  align-items:center;
  border-bottom:1px solid var(--line-soft);
  transition:background var(--dur),color var(--dur);
}
.tool:last-child{border-bottom:none;}
.tool > *{padding:16px 10px;}
.tool .no{font-family:var(--mono);font-size:11px;color:var(--mute);
  padding-left:var(--gut);}
.tool .name{font-family:var(--display);font-size:24px;font-weight:600;
  text-transform:uppercase;letter-spacing:.02em;}
.tool .desc{color:var(--dim);font-size:14px;}
.tool .stack{font-family:var(--mono);font-size:10.5px;color:var(--mute);
  letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;
  text-align:right;overflow:hidden;text-overflow:ellipsis;}
.tool .go{text-align:center;font-family:var(--mono);color:var(--orange);
  padding-right:var(--gut);}

/* заливается только кликабельная строка - иначе hover обещает переход,
   которого нет (список поверхностей George не ведёт никуда) */
a.tool:hover{background:var(--orange);color:var(--ink);}
.tool:hover .no,.tool:hover .desc,.tool:hover .stack,.tool:hover .go{color:var(--ink);}

@media (max-width:760px){
  .tool{grid-template-columns:44px 1fr 34px;row-gap:0;}
  .tool .no{padding-left:12px;}
  .tool .name{padding-bottom:2px;}
  .tool .desc{grid-column:2;padding-top:0;padding-bottom:14px;font-size:13px;}
  .tool .stack{display:none;}
  .tool .go{grid-row:1;grid-column:3;padding-right:12px;}
}

/* сноска под списком: уводит на смежный документ */
.sec-note{
  display:flex;padding:14px var(--gut);
  border-top:1px solid var(--line);
}

/* ============================================================
   /03 PAGES - решётка ячеек, зазоров нет
   ============================================================ */
.cells{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));}
.cell{
  padding:18px var(--gut);
  border-right:1px solid var(--line-soft);
  border-bottom:1px solid var(--line-soft);
  transition:background var(--dur),color var(--dur);
}
.cell:hover{background:var(--orange);color:var(--ink);}
.cell .n{font-family:var(--display);font-size:19px;font-weight:600;
  text-transform:uppercase;letter-spacing:.04em;}
.cell .d{display:block;margin-top:5px;font-size:13px;color:var(--dim);}
.cell:hover .d{color:var(--ink);}

/* ============================================================
   /04 SUPPORT
   ============================================================ */
.support{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;
  gap:24px;padding:clamp(24px,4vw,40px) var(--gut);}
.support h3{font-size:clamp(22px,3.4vw,34px);color:var(--cream);}
.support p{margin-top:12px;max-width:52ch;color:var(--dim);}
.support .lines{margin-top:14px;display:flex;flex-wrap:wrap;gap:0;}
.support .lines a{
  padding:8px 14px;border:1px solid var(--line);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dim);
  transition:background var(--dur),color var(--dur);
}
.support .lines a + a{border-left:none;}
.support .lines a:hover{background:var(--cream);color:var(--ink);}
@media (max-width:760px){.support{grid-template-columns:1fr;}}

/* ---------- подвал ---------- */
.foot{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:14px;padding:16px var(--gut);
}
.foot nav{display:flex;flex-wrap:wrap;gap:0;}
.foot nav a{padding:4px 12px;border-right:1px solid var(--line-soft);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--mute);transition:color var(--dur);}
.foot nav a:last-child{border-right:none;}
.foot nav a:hover{color:var(--orange);}

/* ---------- вход секции в кадр ---------- */
.sec{opacity:1;}
body.fx-on .sec.pending{opacity:0;transform:translateY(14px);}
body.fx-on .sec{transition:opacity .45s var(--ease),transform .45s var(--ease);}
