/* NGP Frame 1.1.0: рамка чертёжного листа по краю окна и малый штамп (форма 3, ГОСТ Р 21.101-2020, прил. Ж).
   Только вёрстка: position:fixed, pointer-events:none, без JS. Пороги показа штампа задаёт PHP (zones.css.tpl).
   Шрифт чертёжный OpenGost Type B (SIL OFL 1.1), семейство переименовано в «NGP Frame Gost». */
@font-face{
  font-family:"NGP Frame Gost";font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/ngp-frame-gost.woff2") format("woff2");
}

.ngp-frame{
  /* A4 = 297 мм = 100vw: поля листа 5 мм = 1,684vw, левое 20 мм = 6,734vw (ГОСТ Р 21.101, п. 5.2.2) */
  --ngp-f-top:1.684vw; --ngp-f-right:1.684vw; --ngp-f-bottom:1.684vw; --ngp-f-left:6.734vw;
  --w:clamp(2px,.15vw,3px);                 /* основная линия (0,6 мм листа, смягчена до экранной) */
  --gap:18px;                               /* зазор между штампом и колонкой сайта 1038 px */
  --floor:7px;                              /* нижний предел кегля (px), чтобы мелкий текст не пропадал */
  --hk:1.7;                                 /* кегль шрифта = высота прописной буквы x 1,7 (OpenGost B: 1000 из 1700 em) */
  --ink:#000;
  --k:0px;                                  /* px на 1 мм штампа, считается ниже */
  --ngp-frame-font:"NGP Frame Gost","Segoe UI",Arial,sans-serif;
  position:fixed;left:0;top:0;width:0;height:0;margin:0;padding:0;border:0;
  z-index:9000;                              /* ниже меню #access (9999) и #teo-cookie (99999) */
  pointer-events:none;
  -webkit-user-select:none;user-select:none;
  font-family:var(--ngp-frame-font);color:var(--ink);
}
.ngp-frame *,.ngp-frame *::before,.ngp-frame *::after{box-sizing:border-box;pointer-events:none}

/* --- рамка */
.ngp-frame__line{
  position:fixed;display:block;
  top:4px;right:4px;bottom:4px;left:4px;               /* узкие окна: упрощённая рамка */
  border:1px solid var(--ink);
  box-shadow:0 0 0 1px rgba(255,255,255,.55);          /* светлый кант: рамка видна и на тёмной подложке */
}
/* полная рамка (поле подшивки 20 мм) включает PHP от NGP_FRAME_FULL_MIN, по умолчанию 1240 px: ngp-frame.php, ngp_frame_zones_css() */

/* --- штамп: правый блок формы 3 (120 x 55 мм), скрыт, пока PHP не включит порогом */
.ngp-frame__stamp,.ngp-frame__bind{display:none;position:fixed}
.ngp-frame__stamp{
  width:calc(var(--k)*120);height:calc(var(--k)*55);
  bottom:calc(var(--ngp-f-bottom) + var(--w)/2);
  background:#fff;
}
/* штамп слева (просьба владельца): левый нижний угол совмещён с углом рамки */
.ngp-frame--left{
  --k:clamp(0px,calc(((100vw - 1038px)/2 - var(--ngp-f-left) - var(--gap))/120),3px);
}
.ngp-frame--left .ngp-frame__stamp{left:calc(var(--ngp-f-left) + var(--w)/2)}
/* штамп справа внизу (как в ГОСТ) + графы 20-22 вдоль левого поля */
.ngp-frame--gost{
  --k:clamp(0px,calc(((100vw - 1038px)/2 - var(--ngp-f-right) - var(--gap))/120),3px);
}
.ngp-frame--gost .ngp-frame__stamp{right:calc(var(--ngp-f-right) + var(--w)/2)}

.ngp-frame__grid{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;display:block}
.ngp-frame__grid path{fill:none;stroke:var(--ink);stroke-width:var(--w);vector-effect:non-scaling-stroke;stroke-linecap:square}

.ngp-frame__c{
  position:absolute;display:flex;align-items:center;justify-content:center;overflow:hidden;
  text-align:center;line-height:1.12;padding:0 calc(var(--k)*1);
  font-size:max(var(--floor),calc(var(--k)*5.44));   /* прописная 3,2 мм */
  font-style:normal;font-weight:400;
}
.ngp-frame__c > span{display:block;max-width:100%}
.ngp-frame__g2{left:0;top:calc(var(--k)*10);width:calc(var(--k)*120);height:calc(var(--k)*15);font-size:max(var(--floor),calc(var(--k)*8.5))}
.ngp-frame__cap{top:calc(var(--k)*25);height:calc(var(--k)*5);padding:0;line-height:1;font-size:max(6px,calc(var(--k)*4.25))}  /* прописная 2,5 мм */
.ngp-frame__cap--1{left:calc(var(--k)*70);width:calc(var(--k)*15)}
.ngp-frame__cap--2{left:calc(var(--k)*85);width:calc(var(--k)*15)}
.ngp-frame__cap--3{left:calc(var(--k)*100);width:calc(var(--k)*20)}
.ngp-frame__g4{left:0;top:calc(var(--k)*40);width:calc(var(--k)*70);height:calc(var(--k)*15);font-size:max(var(--floor),calc(var(--k)*8.5))}   /* прописная 5 мм, одна строка */
.ngp-frame__g4--s4{font-size:max(var(--floor),calc(var(--k)*5.95))}  /* прописная 3,5 мм, до двух строк */
.ngp-frame__g4--s3{font-size:max(var(--floor),calc(var(--k)*4.25))}  /* 2,5 мм, до трёх строк */
.ngp-frame__g4 > span{
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;
  overflow-wrap:anywhere;hyphens:auto;line-height:1.02;
}
.ngp-frame__g4--s5 > span{-webkit-line-clamp:1;line-clamp:1}
.ngp-frame__g4--s4 > span{-webkit-line-clamp:2;line-clamp:2}
.ngp-frame__g9{left:calc(var(--k)*70);top:calc(var(--k)*40);width:calc(var(--k)*50);height:calc(var(--k)*15);
  font-size:max(var(--floor),calc(var(--k)*4.7));
  font-family:var(--ngp-head-font,"Times New Roman","NGP Serif",Times,serif);
  font-weight:700;font-variant:small-caps;letter-spacing:.01em}
.ngp-frame__g9 > span{white-space:nowrap}
.ngp-frame__o1,.ngp-frame__o2{display:inline}

/* --- графы 20-22 (только режим 'gost'): ширина 12 мм, слева от внутренней рамки */
.ngp-frame--gost .ngp-frame__bind{
  width:calc(var(--k)*12);height:calc(var(--k)*85);
  left:calc(var(--ngp-f-left) + var(--w)/2 - var(--k)*12);
  bottom:calc(var(--ngp-f-bottom) + var(--w)/2);
  background:#fff;
}
.ngp-frame__bc{
  position:absolute;left:0;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;
  writing-mode:vertical-rl;transform:rotate(180deg);text-align:center;line-height:1.1;white-space:nowrap;
  font-size:max(6px,calc(var(--k)*4.25));
}
.ngp-frame__bc--20{bottom:0;height:calc(var(--k)*25)}
.ngp-frame__bc--21{bottom:calc(var(--k)*25);height:calc(var(--k)*35)}
.ngp-frame__bc--22{bottom:calc(var(--k)*60);height:calc(var(--k)*25)}
/* у rotate(180deg) bottom/height считаются в исходной системе: блок симметричен, поэтому позиция та же */

/* --- режим 'strip' (по умолчанию): полоса дополнительных граф в поле для подшивки, прижата к внутренней рамке слева внизу.
   Масштаб --k (px на мм): ширина окна = 297 мм, но не выше, чем позволяет высота окна (полоса 150 мм + нижнее поле + зазор). */
.ngp-frame--strip{--k:min(.33670vw,calc((100vh - var(--ngp-f-bottom) - 14px)/150))}
.ngp-frame__strip{
  display:none;position:fixed;
  width:calc(var(--k)*15);height:calc(var(--k)*150);
  left:calc(var(--ngp-f-left) + var(--w)/2 - var(--k)*15);
  bottom:calc(var(--ngp-f-bottom) + var(--w)/2);
}
.ngp-frame__strip svg{display:block;width:100%;height:100%;overflow:visible}
.ngp-frame__sf{fill:#fff;stroke:none}
.ngp-frame__sk,.ngp-frame__st{fill:none;stroke:var(--ink);vector-effect:non-scaling-stroke;stroke-linecap:square}
.ngp-frame__sk{stroke-width:var(--w)}                      /* контур: основная толстая */
.ngp-frame__st{stroke-width:max(1px,calc(var(--w)*.45))}   /* внутренние: тонкая (0,25 из 0,6 мм) */
.ngp-frame__strip text{font-family:var(--ngp-frame-font);font-size:4.25px;fill:var(--ink);text-anchor:middle}
/* font-size в единицах viewBox: 4,25 = 4,25 мм листа (прописная 2,5 мм, ряд ГОСТ 2.304-81) */

@media print{.ngp-frame{display:none !important}}
