/* Concept "blueprint" (Grid Blueprint): a precise technical drawing on top of the shared design system
   (/site/base/base.css; docs/site/concept-contract.md: extend it, never fork it). Rationale, palette and components:
   docs/site/concepts/blueprint.md. Classes of this concept start with bp-; base classes are only refined here.
   No external resources: the fonts are IBM Plex Sans and IBM Plex Mono (SIL OFL 1.1, assets/fonts, licence file
   alongside), split into Latin-1 and Latin Extended (Turkish) ranges. */

/* ------------------------------------------------------------------ fonts */
@font-face {
  font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("assets/fonts/IBMPlexSans-Regular-Latin1.woff2") format("woff2");
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("assets/fonts/IBMPlexSans-Regular-Latin2.woff2") format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap;
  src: url("assets/fonts/IBMPlexSans-Medium-Latin1.woff2") format("woff2");
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap;
  src: url("assets/fonts/IBMPlexSans-Medium-Latin2.woff2") format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600 800; font-display: swap;
  src: url("assets/fonts/IBMPlexSans-SemiBold-Latin1.woff2") format("woff2");
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600 800; font-display: swap;
  src: url("assets/fonts/IBMPlexSans-SemiBold-Latin2.woff2") format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("assets/fonts/IBMPlexMono-Regular-Latin1.woff2") format("woff2");
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("assets/fonts/IBMPlexMono-Regular-Latin2.woff2") format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500 700; font-display: swap;
  src: url("assets/fonts/IBMPlexMono-Medium-Latin1.woff2") format("woff2");
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500 700; font-display: swap;
  src: url("assets/fonts/IBMPlexMono-Medium-Latin2.woff2") format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}

/* ------------------------------------------------------------------ concept variables (not contract tokens) */
:root {
  --bp-ink: var(--pgt-color-primary);
  --bp-line: rgb(11 79 138 / 55%);
  --bp-grid-major: rgb(11 79 138 / 8%);
  --bp-grid-minor: rgb(11 79 138 / 4%);
  --bp-hatch: rgb(11 79 138 / 7%);
  --bp-primary-hover: #083d6b;
  --bp-frame: 0 0 0 4px var(--pgt-color-bg), 0 0 0 5px var(--bp-ink);
}

/* ------------------------------------------------------------------ paper, grid and type */
body.pgt-body {
  background-color: var(--pgt-color-bg);
  background-image:
    linear-gradient(var(--bp-grid-major) 1px, transparent 1px),
    linear-gradient(90deg, var(--bp-grid-major) 1px, transparent 1px),
    linear-gradient(var(--bp-grid-minor) 1px, transparent 1px),
    linear-gradient(90deg, var(--bp-grid-minor) 1px, transparent 1px);
  background-size: 120px 120px, 120px 120px, 24px 24px, 24px 24px;
  background-position: -1px -1px;
  font-feature-settings: "kern", "liga";
}
h1, h2, h3, h4 { font-weight: 600; }
h1, .pgt-display { font-weight: 600; letter-spacing: -0.025em; }
.pgt-display { font-size: clamp(2rem, 1.35rem + 2.6vw, 3.25rem); line-height: 1.12; }
.pgt-lead { color: var(--pgt-color-muted); }
code, .pgt-code { font-family: var(--pgt-font-mono); }
:focus-visible { outline: 3px solid var(--pgt-color-primary); outline-offset: 3px; border-radius: var(--pgt-radius-s); }
::selection { background: #cfe3f3; color: var(--pgt-color-text); }

/* mono annotations, used for eyebrows, labels and sheet numbers */
.pgt-eyebrow, .bp-annot {
  font-family: var(--pgt-font-mono); font-size: 0.75rem; font-weight: 500;
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--pgt-color-primary);
}
.bp-code {
  display: inline-block; margin: 0 0.25rem 0.25rem 0; padding: 0 0.375rem;
  font-family: var(--pgt-font-mono); font-size: 0.75rem; font-weight: 500; line-height: 1.6;
  color: var(--pgt-color-primary); background: var(--pgt-color-bg);
  border: 1px solid var(--bp-line); border-radius: var(--pgt-radius-s); white-space: nowrap;
}

/* ------------------------------------------------------------------ sections */
.pgt-section { position: relative; }
.pgt-section--alt {
  background-color: var(--pgt-color-surface);
  background-image:
    linear-gradient(var(--bp-grid-minor) 1px, transparent 1px),
    linear-gradient(90deg, var(--bp-grid-minor) 1px, transparent 1px);
  background-size: 24px 24px;
  border-block: 1px solid var(--pgt-color-border);
}
.pgt-page-hero { border-bottom: 1px solid var(--pgt-color-border); }
.pgt-page-hero .pgt-eyebrow::before { content: "▸ "; }

/* sheet heads: every section header is a title-block row: sheet number cell, then title and lead */
.pgt-main { counter-reset: bp-sheet 1; }
.bp-sheethead {
  counter-increment: bp-sheet;
  display: grid; grid-template-columns: 4.5rem 1fr; margin-bottom: calc(var(--pgt-space-unit) * 4);
  border: 1px solid var(--bp-ink); border-top-width: 2px; background: var(--pgt-color-bg);
}
.bp-sheethead__no {
  margin: 0; padding: calc(var(--pgt-space-unit) * 1.5) var(--pgt-space-unit);
  border-right: 1px solid var(--bp-ink); text-align: center;
  font-family: var(--pgt-font-mono); font-size: 0.625rem; font-weight: 500; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--pgt-color-muted);
}
.bp-sheethead__no::after {
  content: counter(bp-sheet, decimal-leading-zero); display: block; margin-top: 0.25rem;
  font-size: 1.75rem; letter-spacing: 0; line-height: 1; color: var(--pgt-color-primary);
}
.bp-sheethead__body { padding: calc(var(--pgt-space-unit) * 2) calc(var(--pgt-space-unit) * 2.5); min-width: 0; }
.bp-sheethead__body > :last-child { margin-bottom: 0; }
.bp-sheethead__body h2 { margin-bottom: var(--pgt-space-unit); }

/* ------------------------------------------------------------------ buttons and forms */
.pgt-btn { border-radius: var(--pgt-radius-s); font-weight: 600; letter-spacing: 0.005em; }
.pgt-btn--primary { border-color: var(--pgt-color-primary); }
.pgt-btn--primary:hover { background: var(--bp-primary-hover); border-color: var(--bp-primary-hover); filter: none; box-shadow: 3px 3px 0 var(--bp-line); }
.pgt-btn--secondary { border-width: 1px; background: var(--pgt-color-bg); }
.pgt-btn--secondary:hover { background: var(--pgt-color-surface-2); }
.pgt-btn--large { font-size: 1rem; }
.pgt-input { border-radius: var(--pgt-radius-s); background: #ffffff; }
.pgt-label { font-weight: 500; }

/* ------------------------------------------------------------------ cards, badges, tables, steps (other pages) */
.pgt-card {
  border-radius: var(--pgt-radius-s); border-color: var(--pgt-color-border);
  border-top: 2px solid var(--bp-ink); box-shadow: none;
}
.pgt-card__title { font-weight: 600; }
.pgt-badge {
  font-family: var(--pgt-font-mono); font-weight: 500; border-radius: var(--pgt-radius-s);
  background: var(--pgt-color-bg); border-color: var(--bp-line); color: var(--pgt-color-primary);
}
.pgt-table-wrap { border-color: var(--bp-ink); border-radius: var(--pgt-radius-s); background: var(--pgt-color-bg); }
.pgt-table caption {
  font-family: var(--pgt-font-mono); font-size: 0.75rem; font-weight: 500; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--pgt-color-muted); border-bottom: 1px solid var(--bp-ink);
}
.pgt-table thead th {
  font-family: var(--pgt-font-mono); font-weight: 500; font-size: 0.6875rem; letter-spacing: 0.12em;
  color: var(--pgt-color-text); background: var(--pgt-color-surface); border-top: 0;
}
.pgt-step::before { border-radius: var(--pgt-radius-s); font-family: var(--pgt-font-mono); font-weight: 500; }
.pgt-group__title { border-bottom: 2px solid var(--bp-ink); }
.pgt-alert { border-radius: var(--pgt-radius-s); background: var(--pgt-color-bg); }
.pgt-figure img {
  background: #ffffff; border: 1px solid var(--bp-ink); border-radius: 0;
  box-shadow: var(--pgt-shadow-2);
}
.pgt-figure figcaption { font-family: var(--pgt-font-mono); font-size: 0.75rem; letter-spacing: 0.02em; }
.pgt-checklist li::before { border-color: var(--pgt-color-primary); }
.pgt-disclosure summary { font-weight: 500; }

/* ------------------------------------------------------------------ header */
.bp-header {
  background: var(--pgt-color-bg);
  border-bottom: 1px solid var(--bp-ink);
  box-shadow: 0 3px 0 -1px var(--pgt-color-bg), 0 3px 0 0 var(--pgt-color-border);
}
.bp-brand { gap: calc(var(--pgt-space-unit) * 1.25); }
.bp-brand__text { display: flex; flex-direction: column; line-height: 1.15; }
.bp-brand .pgt-brand__name { font-weight: 600; letter-spacing: -0.01em; }
.bp-brand__tag {
  font-family: var(--pgt-font-mono); font-size: 0.625rem; font-weight: 500; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--pgt-color-muted);
}
.bp-nav .pgt-nav__link { font-weight: 500; border-radius: var(--pgt-radius-s); }
.bp-nav .pgt-nav__link[aria-current="page"], .bp-nav .pgt-nav__link.is-active {
  box-shadow: inset 0 -2px 0 var(--pgt-color-primary);
}
.pgt-menu__list { border-radius: var(--pgt-radius-s); }
.bp-lang .pgt-lang__link { font-family: var(--pgt-font-mono); font-weight: 500; border-radius: var(--pgt-radius-s); }
.bp-lang .pgt-lang__link[aria-current="true"] { box-shadow: inset 0 0 0 1px var(--bp-line); background: var(--pgt-color-bg); }
.pgt-account__chip { border-radius: var(--pgt-radius-s); border-color: var(--bp-line); background: var(--pgt-color-bg); }
/* "Open app" stands as tall as the account chip beside it (the avatar, its padding and the border) */
.pgt-header .pgt-account__chip, .pgt-header .bp-header__open { height: 2.625rem; min-height: 0; }
.pgt-header .bp-header__open { padding-block: 0; }
.pgt-avatar { border-radius: var(--pgt-radius-s); font-family: var(--pgt-font-mono); font-weight: 500; }

/* ------------------------------------------------------------------ hero */
.bp-hero { padding-bottom: calc(var(--pgt-space-unit) * 4); }
.bp-hero__grid { display: grid; gap: calc(var(--pgt-space-unit) * 5); align-items: center; }
.bp-hero__copy { min-width: 0; }
.bp-hero__title { max-width: 18ch; }
.bp-hero .pgt-lead { max-width: 38rem; }

/* dimension line: oblique ticks at both ends, the measure in mono in the middle */
.bp-dim {
  display: flex; align-items: center; gap: calc(var(--pgt-space-unit) * 1.5);
  margin: calc(var(--pgt-space-unit) * 3) 0 0; max-width: 38rem;
  font-family: var(--pgt-font-mono); font-size: 0.8125rem; font-weight: 500; color: var(--pgt-color-primary);
  text-align: center;
}
.bp-dim::before, .bp-dim::after {
  content: ""; flex: 1 1 1.5rem; min-width: 1.5rem; height: 13px;
  background:
    linear-gradient(currentColor, currentColor) center / 100% 1px no-repeat,
    linear-gradient(-45deg, transparent calc(50% - 1px), currentColor calc(50% - 1px) calc(50% + 0.5px), transparent calc(50% + 0.5px)) var(--bp-tick-at) center / 11px 11px no-repeat;
}
.bp-dim::before { --bp-tick-at: left; border-left: 1px solid currentColor; }
.bp-dim::after { --bp-tick-at: right; border-right: 1px solid currentColor; }

/* drawing sheets: double frame, paper fill */
.bp-sheet {
  margin: 0; background: var(--pgt-color-bg); border: 1px solid var(--bp-ink);
  box-shadow: var(--bp-frame), var(--pgt-shadow-2);
}
.bp-hero__drawing { padding: calc(var(--pgt-space-unit) * 1); }

/* the hero drawing (marketing.html :: hero): the site's sheet frame and zone marks around the diagram the application
   draws (static/site/media/hero-sld.svg, inlined; docs/site/concepts/blueprint.md). The diagram's elements carry their
   own colours, widths and fonts as attributes; only the animation comes from here. */
.bp-sld { width: 100%; height: auto; fill: none; stroke-linecap: butt; stroke-linejoin: miter; }
.bp-sld__frame { stroke: var(--pgt-color-text); stroke-width: 1; }
.bp-sld__frame rect:first-child { stroke-width: 1.5; }
.bp-sld__zones text {
  fill: var(--pgt-color-muted); stroke: none; font-family: var(--pgt-font-mono); font-size: 10px; font-weight: 500;
  text-anchor: middle;
}
.bp-sld__zones { animation: bp-fade 0.6s ease 0.8s both; }
/* drawing steps: bp-s0 the frame, bp-s1 the bus bars, then outwards from the grid, one step every 0.25 s. Stroked
   shapes draw in along their length (pathLength="1"); fills and text fade in at their step. */
.bp-draw { stroke-dasharray: 1; stroke-dashoffset: 1; animation: bp-draw 0.9s cubic-bezier(0.65, 0, 0.35, 1) both; }
.bp-sld__diagram .bp-fill, .bp-sld__diagram text { stroke-dasharray: none; stroke-dashoffset: 0; animation-name: bp-fade; }
.bp-s0 { animation-duration: 1.4s; }
.bp-s1 { animation-delay: 0.45s; }
.bp-s2 { animation-delay: 0.7s; }
.bp-s3 { animation-delay: 0.95s; }
.bp-s4 { animation-delay: 1.2s; }
.bp-s5 { animation-delay: 1.45s; }
.bp-s6 { animation-delay: 1.7s; }
.bp-s7 { animation-delay: 1.95s; }
.bp-s8 { animation-delay: 2.2s; }
.bp-s9 { animation-delay: 2.45s; }
.bp-s10 { animation-delay: 2.7s; }
.bp-s11 { animation-delay: 2.95s; }
.bp-s12 { animation-delay: 3.2s; }
.bp-s13 { animation-delay: 3.45s; }
.bp-s14 { animation-delay: 3.7s; }
@keyframes bp-draw {
  0% { stroke-dasharray: 1; stroke-dashoffset: 1; }
  99% { stroke-dasharray: 1; stroke-dashoffset: 0; }
  100% { stroke-dasharray: none; stroke-dashoffset: 0; }
}
@keyframes bp-fade { from { opacity: 0; } to { opacity: 1; } }

/* title blocks: label above value, ruled cells */
.bp-titleblock {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr));
  margin: var(--pgt-space-unit) 0 0; border-top: 1px solid var(--bp-ink); border-left: 1px solid var(--bp-ink);
  background: var(--pgt-color-bg);
}
.bp-titleblock > div {
  padding: calc(var(--pgt-space-unit) * 0.5) var(--pgt-space-unit);
  border-right: 1px solid var(--bp-ink); border-bottom: 1px solid var(--bp-ink); min-width: 0;
}
.bp-titleblock__wide { grid-column: 1 / -1; }
.bp-hero__drawing .bp-titleblock { grid-template-columns: 2fr 1.2fr 0.8fr; }
.bp-titleblock dt, .bp-cell-label {
  font-family: var(--pgt-font-mono); font-size: 0.625rem; font-weight: 500; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--pgt-color-muted);
}
.bp-titleblock dd { margin: 0; font-size: 0.875rem; font-weight: 500; overflow-wrap: anywhere; }

/* detail callouts above the real renders */
.bp-detail { margin-top: calc(var(--pgt-space-unit) * 6); }
.bp-detail .pgt-figure { margin-top: calc(var(--pgt-space-unit) * 1.5); }
.bp-detail__tag {
  display: flex; align-items: center; gap: var(--pgt-space-unit); margin: 0;
  font-family: var(--pgt-font-mono); font-size: 0.75rem; font-weight: 500; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--pgt-color-primary);
}
.bp-detail__tag::before {
  content: ""; flex: none; width: 0.875rem; height: 0.875rem; border: 1.5px solid currentColor; border-radius: 50%;
}
.bp-detail__tag::after { content: ""; flex: 1; border-top: 1px dashed var(--bp-line); }

/* ------------------------------------------------------------------ proof: stamps and quantities */
.bp-stamps {
  list-style: none; padding: 0; margin: 0 0 calc(var(--pgt-space-unit) * 2);
  display: grid; gap: calc(var(--pgt-space-unit) * 2.5) calc(var(--pgt-space-unit) * 2);
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 9.5rem), 1fr));
}
.bp-stamp {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.25rem;
  min-height: 7rem; padding: var(--pgt-space-unit);
  text-align: center; color: var(--pgt-color-primary); background: var(--pgt-color-bg);
  border: 3px double var(--pgt-color-primary); border-radius: 10px;
  transform: rotate(-1.5deg); transition: transform 0.2s ease;
}
.bp-stamp:nth-child(3n + 2) { transform: rotate(1deg); }
.bp-stamp:nth-child(3n) { transform: rotate(-0.5deg); }
.bp-stamp:nth-child(4n) { transform: rotate(1.75deg); }
.bp-stamp:hover { transform: none; }
@media (min-width: 1280px) { .bp-stamps { grid-template-columns: repeat(4, 1fr); } }
.bp-stamp__mark {
  padding-bottom: 0.25rem; border-bottom: 1px solid currentColor;
  font-family: var(--pgt-font-mono); font-size: 0.5625rem; font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase;
}
.bp-stamp__code { font-family: var(--pgt-font-mono); font-size: 1rem; font-weight: 600; line-height: 1.25; }
.bp-stamp__subject { font-size: 0.8125rem; line-height: 1.35; color: var(--pgt-color-text); }
.bp-proof__qty-title { margin-top: calc(var(--pgt-space-unit) * 5); }
.bp-qty {
  display: grid; grid-template-columns: repeat(2, 1fr); margin: 0 0 calc(var(--pgt-space-unit) * 2);
  border-top: 1px solid var(--bp-ink); border-left: 1px solid var(--bp-ink); background: var(--pgt-color-bg);
}
.bp-qty > div {
  display: flex; flex-direction: column-reverse; justify-content: flex-end;
  padding: calc(var(--pgt-space-unit) * 1.5) calc(var(--pgt-space-unit) * 2);
  border-right: 1px solid var(--bp-ink); border-bottom: 1px solid var(--bp-ink);
}
.bp-qty dd { margin: 0; font-family: var(--pgt-font-mono); font-size: clamp(1.75rem, 1.4rem + 1.5vw, 2.5rem); font-weight: 500; line-height: 1.1; color: var(--pgt-color-primary); }
.bp-qty dt { font-size: 0.875rem; color: var(--pgt-color-muted); }

/* ------------------------------------------------------------------ features: parts list with item balloons */
.bp-parts {
  list-style: none; padding: 0; margin: 0; counter-reset: bp-part;
  display: grid; gap: calc(var(--pgt-space-unit) * 3) calc(var(--pgt-space-unit) * 4);
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr));
}
.bp-part { position: relative; counter-increment: bp-part; padding: calc(var(--pgt-space-unit) * 1.5) 0 0 3.25rem; border-top: 1px solid var(--bp-ink); }
.bp-part::before {
  content: counter(bp-part); position: absolute; left: 0; top: calc(var(--pgt-space-unit) * 1.5);
  display: grid; place-items: center; width: 2.25rem; height: 2.25rem;
  border: 1.5px solid var(--bp-ink); border-radius: 50%; background: var(--pgt-color-bg);
  font-family: var(--pgt-font-mono); font-weight: 500; color: var(--pgt-color-primary);
}
.bp-part__title { font-size: 1.0625rem; margin-bottom: calc(var(--pgt-space-unit) * 0.5); }
.bp-part p { margin: 0; color: var(--pgt-color-muted); }

/* ------------------------------------------------------------------ analyses: specification sheet */
.bp-spec { margin-bottom: calc(var(--pgt-space-unit) * 3); box-shadow: var(--bp-frame); }
.bp-spec__table tbody th { white-space: normal; font-weight: 400; min-width: 12rem; }
.bp-spec__table tbody tr:nth-child(even) { background: rgb(11 79 138 / 3%); }
.bp-spec__ref { font-family: var(--pgt-font-mono); font-size: 0.8125rem; color: var(--pgt-color-primary); white-space: nowrap; width: 4.5rem; }
.bp-spec__name { display: block; font-weight: 600; }
.bp-spec__text { display: block; font-size: 0.875rem; color: var(--pgt-color-muted); }
.bp-spec__group { display: none; font-size: 0.875rem; }
@media (max-width: 639.98px) {
  /* narrow screens: each analysis becomes a two-column row (ref | name, text, standards) instead of a wide table */
  .bp-spec__table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .bp-spec__table tbody tr { display: grid; grid-template-columns: 3.75rem minmax(0, 1fr); border-top: 1px solid var(--pgt-color-border); }
  .bp-spec__table tbody td, .bp-spec__table tbody th { border-top: 0; min-width: 0; }
  .bp-spec__table tbody td:last-child { grid-column: 2; padding-top: 0; }
  .bp-spec__ref { width: auto; }
}

/* ------------------------------------------------------------------ workflow: numbered sheets */
.bp-sheets {
  list-style: none; padding: 0; margin: 0;
  display: grid; gap: calc(var(--pgt-space-unit) * 3);
}
.bp-minisheet {
  position: relative; padding: calc(var(--pgt-space-unit) * 2.5); padding-top: calc(var(--pgt-space-unit) * 4.5);
  background: var(--pgt-color-bg); border: 1px solid var(--bp-ink); box-shadow: var(--bp-frame);
}
.bp-minisheet h3 { font-size: 1.125rem; }
.bp-minisheet p:last-child { margin: 0; color: var(--pgt-color-muted); }
.bp-minisheet__no {
  position: absolute; top: 0; right: 0; margin: 0; padding: 0.25rem 0.625rem;
  border-left: 1px solid var(--bp-ink); border-bottom: 1px solid var(--bp-ink);
  font-family: var(--pgt-font-mono); font-size: 0.6875rem; font-weight: 500; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--pgt-color-primary);
}

/* ------------------------------------------------------------------ ai: Electra on a drawing */
.bp-ai__grid { display: grid; gap: calc(var(--pgt-space-unit) * 5); align-items: start; }
.bp-ai__copy { min-width: 0; }
.bp-ai__sheet { padding: calc(var(--pgt-space-unit) * 1.5); min-width: 0; }
.bp-ai__sheet .pgt-figure { margin: 0 0 calc(var(--pgt-space-unit) * 1.5); }
.bp-ai__sheet .pgt-figure img { box-shadow: none; }
.bp-ai__sheet .pgt-chat { border-color: var(--bp-line); border-radius: 0; }
.bp-ai__copy .pgt-electra-can { margin-bottom: calc(var(--pgt-space-unit) * 2); }

/* ------------------------------------------------------------------ security: block diagram */
.bp-arch { display: flex; flex-direction: column; align-items: stretch; margin-bottom: calc(var(--pgt-space-unit) * 4); }
.bp-arch__node {
  position: relative; padding: calc(var(--pgt-space-unit) * 2); background: var(--pgt-color-bg);
  border: 1.5px solid var(--bp-ink);
}
.bp-arch__node h3 { font-size: 1.0625rem; margin-bottom: calc(var(--pgt-space-unit) * 0.5); }
.bp-arch__node p:last-child { margin: 0; font-size: 0.9375rem; color: var(--pgt-color-muted); }
.bp-arch__node .bp-annot { margin-bottom: calc(var(--pgt-space-unit) * 0.5); }
.bp-arch__node--engine {
  background-image: repeating-linear-gradient(45deg, transparent 0 7px, var(--bp-hatch) 7px 8px);
  border-width: 2.5px;
}
.bp-arch__link {
  display: flex; flex-direction: column; align-items: center; gap: 0.25rem; margin: 0;
  padding: var(--pgt-space-unit) 0; text-align: center;
  font-family: var(--pgt-font-mono); font-size: 0.75rem; font-weight: 500; color: var(--pgt-color-primary);
}
.bp-arch__link::before, .bp-arch__link::after { content: ""; background: var(--bp-ink); }
.bp-arch__link::before { width: 1.5px; height: 1rem; }
.bp-arch__link::after {
  width: 0.75rem; height: 1.25rem;
  clip-path: polygon(45% 0, 55% 0, 55% 55%, 100% 55%, 50% 100%, 0 55%, 45% 55%);
}
.bp-arch__boundary {
  position: relative; display: flex; flex-direction: column; padding: calc(var(--pgt-space-unit) * 4) calc(var(--pgt-space-unit) * 2) calc(var(--pgt-space-unit) * 2);
  border: 2px dashed var(--bp-ink); background: rgb(11 79 138 / 3%);
}
.bp-arch__boundary-label {
  position: absolute; top: -0.75rem; left: calc(var(--pgt-space-unit) * 2); margin: 0;
  padding: 0 var(--pgt-space-unit); background: var(--pgt-color-surface); line-height: 1.5rem;
}
.bp-notes {
  list-style: none; padding: 0; margin: 0 0 calc(var(--pgt-space-unit) * 3); counter-reset: bp-note;
  display: grid; gap: calc(var(--pgt-space-unit) * 3);
}
.bp-notes li { counter-increment: bp-note; padding-left: calc(var(--pgt-space-unit) * 2); border-left: 2px solid var(--bp-ink); }
.bp-notes h3 { font-size: 1.0625rem; margin-bottom: calc(var(--pgt-space-unit) * 0.5); }
.bp-notes h3::before { content: counter(bp-note) ". "; font-family: var(--pgt-font-mono); font-weight: 500; color: var(--pgt-color-primary); }
.bp-notes p { margin: 0; color: var(--pgt-color-muted); }

/* ------------------------------------------------------------------ pricing: datasheets */
.bp-datasheets {
  list-style: none; padding: 0; margin: 0;
  display: grid; gap: calc(var(--pgt-space-unit) * 4) calc(var(--pgt-space-unit) * 3);
  /* auto-fit: the packages share the sheet's full width, without an empty column on wide screens */
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); align-items: stretch;
}
.bp-datasheet {
  display: flex; flex-direction: column; padding: calc(var(--pgt-space-unit) * 2.5);
  background: var(--pgt-color-bg); border: 1px solid var(--bp-ink); box-shadow: var(--bp-frame);
}
.bp-datasheet__kind {
  display: flex; justify-content: space-between; margin: calc(var(--pgt-space-unit) * -2.5) calc(var(--pgt-space-unit) * -2.5) calc(var(--pgt-space-unit) * 2);
  padding: 0.375rem calc(var(--pgt-space-unit) * 2.5); background: var(--pgt-color-primary); color: var(--pgt-color-on-primary);
  font-family: var(--pgt-font-mono); font-size: 0.6875rem; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase;
}
.bp-datasheet__name { font-size: 1.375rem; margin-bottom: 0; }
.bp-datasheet__price {
  margin: calc(var(--pgt-space-unit) * 1.5) 0; padding-block: var(--pgt-space-unit);
  border-block: 1px solid var(--pgt-color-border);
  font-family: var(--pgt-font-mono); font-size: 1.25rem; font-weight: 500; color: var(--pgt-color-primary);
}
.bp-datasheet__description { font-size: 0.9375rem; color: var(--pgt-color-muted); }
.bp-datasheet__heading {
  margin: var(--pgt-space-unit) 0; font-family: var(--pgt-font-mono); font-size: 0.6875rem; font-weight: 500;
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--pgt-color-muted);
}
.bp-datasheet__facts { display: grid; margin: 0 0 calc(var(--pgt-space-unit) * 2); font-size: 0.875rem; border-top: 1px solid var(--bp-ink); }
.bp-datasheet__facts > div {
  display: flex; justify-content: space-between; align-items: baseline; gap: var(--pgt-space-unit);
  padding: 0.375rem 0; border-bottom: 1px dotted var(--bp-line);
}
.bp-datasheet__facts dt { color: var(--pgt-color-muted); }
.bp-datasheet__facts dd { margin: 0; text-align: right; font-family: var(--pgt-font-mono); font-weight: 500; }
.bp-datasheet__features { font-size: 0.9375rem; }
.bp-datasheet__action { margin-top: auto; }

/* ------------------------------------------------------------------ call to action */
.bp-cta__box {
  position: relative; padding: calc(var(--pgt-space-unit) * 5) calc(var(--pgt-space-unit) * 3);
  background: var(--pgt-color-bg); border: 2px solid var(--bp-ink);
  box-shadow: inset 0 0 0 5px var(--pgt-color-bg), inset 0 0 0 6px var(--bp-line), var(--pgt-shadow-2);
}
.bp-cta__box .pgt-actions { margin-bottom: 0; }
.bp-cta__stamp {
  display: inline-block; margin: 0 0 calc(var(--pgt-space-unit) * 2); padding: 0.25rem 0.75rem;
  border: 3px double var(--pgt-color-accent); border-radius: 6px; transform: rotate(-2deg);
  font-family: var(--pgt-font-mono); font-size: 0.75rem; font-weight: 600; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--pgt-color-accent);
}

/* ------------------------------------------------------------------ footer: a title block */
.bp-footer { background: var(--pgt-color-surface); border-top: 1px solid var(--bp-ink); padding-block: calc(var(--pgt-space-unit) * 5) calc(var(--pgt-space-unit) * 3); }
.bp-footer__block {
  display: grid; grid-template-columns: 1fr; background: var(--pgt-color-bg);
  border: 2px solid var(--pgt-color-text);
}
.bp-footer__block > * { padding: calc(var(--pgt-space-unit) * 2); border-bottom: 1px solid var(--bp-ink); min-width: 0; }
.bp-footer__block > :last-child { border-bottom: 0; }
.bp-footer__brand .pgt-brand { margin: 0.25rem 0 var(--pgt-space-unit); }
.bp-footer__brand p:last-child { margin: 0; font-size: 0.9375rem; }
.bp-footer .bp-cell-label { margin: 0 0 var(--pgt-space-unit); line-height: 1.4; }
.bp-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: calc(var(--pgt-space-unit) * 0.5); }
.bp-footer .pgt-lang { display: flex; flex-wrap: wrap; gap: calc(var(--pgt-space-unit) * 0.5); }
.bp-footer a { color: var(--pgt-color-text); text-decoration: none; }
.bp-footer a:hover, .bp-footer a[aria-current="page"] { color: var(--pgt-color-primary); text-decoration: underline; }
.bp-footer__strip {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: var(--pgt-space-unit) calc(var(--pgt-space-unit) * 3); padding-top: calc(var(--pgt-space-unit) * 2);
  font-family: var(--pgt-font-mono); color: var(--pgt-color-muted);
}
.bp-footer__strip p { margin: 0; font-size: 0.75rem; }
.bp-footer__strip .pgt-lang__link { font-size: 0.75rem; }

/* ------------------------------------------------------------------ auth shell: a sign-in sheet */
.pgt-auth.bp-auth { background: transparent; gap: calc(var(--pgt-space-unit) * 3); }
.bp-auth__sheet {
  width: 100%; max-width: 32rem; padding: calc(var(--pgt-space-unit) * 3) calc(var(--pgt-space-unit) * 2) calc(var(--pgt-space-unit) * 2);
  background: var(--pgt-color-bg); border: 1px solid var(--bp-ink); box-shadow: var(--bp-frame), var(--pgt-shadow-2);
  display: grid; gap: calc(var(--pgt-space-unit) * 3); justify-items: center;
}
.bp-auth__brand .pgt-brand { font-weight: 600; }
.bp-auth__card.pgt-card { max-width: none; border-top-width: 2px; background: var(--pgt-color-bg); }
.bp-auth__titleblock { width: 100%; margin: 0; }
.bp-auth .bp-titleblock { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pgt-auth__footer { font-family: var(--pgt-font-mono); font-size: 0.75rem; }

/* ------------------------------------------------------------------ portal shell: drawing index + sheet */
.bp-portal__layout { gap: calc(var(--pgt-space-unit) * 4); }
.bp-index { background: var(--pgt-color-bg); border: 1px solid var(--bp-ink); align-self: start; }
.bp-index__title {
  margin: 0; padding: calc(var(--pgt-space-unit) * 0.75) calc(var(--pgt-space-unit) * 1.5);
  background: var(--pgt-color-primary); color: var(--pgt-color-on-primary);
  font-family: var(--pgt-font-mono); font-size: 0.6875rem; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase;
}
.bp-index .bp-index__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 10rem), 1fr)); gap: 0; list-style: none; margin: 0; padding: 0; }
.bp-index__list li { border-bottom: 1px solid var(--pgt-color-border); }
.bp-index .bp-index__link { display: flex; gap: var(--pgt-space-unit); align-items: baseline; border-radius: 0; padding: calc(var(--pgt-space-unit) * 1) calc(var(--pgt-space-unit) * 1.5); }
.bp-index__no { font-family: var(--pgt-font-mono); font-size: 0.75rem; font-weight: 500; color: var(--pgt-color-muted); }
.bp-index .bp-index__link[aria-current="page"] { font-weight: 600; box-shadow: inset 4px 0 0 #7cc3dc; }
.bp-index .bp-index__link[aria-current="page"] .bp-index__no { color: inherit; }
.bp-portal__sheet { min-width: 0; background: var(--pgt-color-bg); border: 1px solid var(--bp-ink); box-shadow: var(--bp-frame); }
.bp-portal__path {
  display: flex; flex-wrap: wrap; gap: var(--pgt-space-unit); align-items: baseline; margin: 0;
  padding: calc(var(--pgt-space-unit) * 0.75) calc(var(--pgt-space-unit) * 2); border-bottom: 1px solid var(--bp-ink);
  font-family: var(--pgt-font-mono); font-size: 0.75rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--pgt-color-muted);
}
.bp-portal__path .bp-index__no { font-size: inherit; }
.bp-portal__sep { color: var(--bp-line); }
.bp-portal__main { padding: calc(var(--pgt-space-unit) * 3) calc(var(--pgt-space-unit) * 2); }
.bp-portal__main > :last-child { margin-bottom: 0; }

/* ------------------------------------------------------------------ breakpoints (640 / 960 / 1280, as base.css) */
@media (min-width: 640px) {
  .bp-qty { grid-template-columns: repeat(4, 1fr); }
  .bp-sheets { grid-template-columns: repeat(2, 1fr); }
  .bp-spec__group { display: table-cell; }
  .bp-sheethead { grid-template-columns: 5.5rem 1fr; }
  .bp-sheethead__body { padding: calc(var(--pgt-space-unit) * 2.5) calc(var(--pgt-space-unit) * 3); }
  .bp-cta__box { padding: calc(var(--pgt-space-unit) * 6) calc(var(--pgt-space-unit) * 6); }
  .bp-auth__sheet { padding: calc(var(--pgt-space-unit) * 4) calc(var(--pgt-space-unit) * 4) calc(var(--pgt-space-unit) * 3); }
  .bp-footer__block { grid-template-columns: repeat(2, 1fr); }
  .bp-footer__block > * { border-right: 1px solid var(--bp-ink); }
  .bp-footer__brand { grid-column: 1 / -1; }
  .bp-portal__main { padding: calc(var(--pgt-space-unit) * 4); }
  .bp-auth .bp-titleblock { grid-template-columns: 1.1fr 1.1fr 1.1fr 0.7fr; }
}
@media (min-width: 960px) {
  .bp-hero__grid { grid-template-columns: 5fr 6fr; }
  .bp-ai__grid { grid-template-columns: 5fr 7fr; }
  .bp-sheets { grid-template-columns: repeat(4, 1fr); gap: calc(var(--pgt-space-unit) * 5); }
  .bp-minisheet:not(:last-child)::after {
    content: ""; position: absolute; top: 50%; right: calc(var(--pgt-space-unit) * -4.25); width: 1.75rem; height: 0.75rem;
    margin-top: -0.375rem; background: var(--bp-ink);
    clip-path: polygon(0 45%, 65% 45%, 65% 0, 100% 50%, 65% 100%, 65% 55%, 0 55%);
  }
  .bp-arch { flex-direction: row; align-items: center; }
  .bp-arch > .bp-arch__node { flex: 1 1 0; }
  .bp-arch__boundary { flex: 2.4 1 0; flex-direction: row; align-items: center; padding: calc(var(--pgt-space-unit) * 4) calc(var(--pgt-space-unit) * 2) calc(var(--pgt-space-unit) * 2); }
  .bp-arch__boundary > .bp-arch__node { flex: 1 1 0; }
  .bp-arch__link { flex: 0 0 8.5rem; padding: 0 var(--pgt-space-unit); }
  .bp-arch__link::before { display: none; }
  .bp-arch__link::after {
    width: 100%; height: 0.75rem;
    clip-path: polygon(0 42%, calc(100% - 0.75rem) 42%, calc(100% - 0.75rem) 0, 100% 50%, calc(100% - 0.75rem) 100%, calc(100% - 0.75rem) 58%, 0 58%);
  }
  .bp-notes { grid-template-columns: repeat(3, 1fr); }
  .bp-footer__block { grid-template-columns: 1.4fr repeat(4, 1fr); }
  .bp-footer__brand { grid-column: auto; }
  .bp-footer__block > * { border-bottom: 0; }
  .bp-footer__block > :last-child { border-right: 0; }
  .bp-portal__layout { grid-template-columns: 15rem 1fr; }
  .bp-index .bp-index__list { grid-template-columns: 1fr; }
}
@media (min-width: 1280px) {
  /* The full navigation in the 76rem container (1152px inside, at every desktop width): the brand keeps only its name,
     links, buttons and the language switch sit closer and a long account name is cut sooner, so the header stays one
     row with the longer Turkish labels too: signed out with "Live preview", or signed in with a long name (about 30px
     to spare in the widest case, Turkish signed out) */
  .bp-brand__tag { display: none; }
  .bp-nav .pgt-nav__link { padding-inline: calc(var(--pgt-space-unit) * 0.5); }
  .pgt-nav, .pgt-js .pgt-nav:not(.is-open) { margin-left: var(--pgt-space-unit); gap: var(--pgt-space-unit); }
  .pgt-header .pgt-nav__actions { gap: calc(var(--pgt-space-unit) * 0.75); }
  .pgt-header .pgt-nav__actions .pgt-btn { padding-inline: calc(var(--pgt-space-unit) * 1.5); }
  .pgt-header .pgt-lang__link { padding-inline: calc(var(--pgt-space-unit) * 0.75); }
  .pgt-header .pgt-account__name { max-width: 9rem; }
}
@media (min-width: 1280px) {
  .bp-hero { padding-block: calc(var(--pgt-space-unit) * 9) calc(var(--pgt-space-unit) * 5); }
  .bp-hero__grid { gap: calc(var(--pgt-space-unit) * 8); }
  /* the parts list stays three by two on the wide sheet (four columns would leave two parts alone on a row) */
  .bp-parts { grid-template-columns: repeat(3, 1fr); }
}

/* ------------------------------------------------------------------ motion and print */
@media (prefers-reduced-motion: reduce) {
  .bp-draw, .bp-sld__zones { animation: none !important; }
  .bp-draw { stroke-dasharray: none; stroke-dashoffset: 0; }
  .bp-stamp, .bp-stamp:hover { transition: none; }
}
@media print {
  body.pgt-body { background: #ffffff; }
  .bp-draw, .bp-sld__zones { animation: none !important; }
  .bp-draw { stroke-dasharray: none; stroke-dashoffset: 0; }
  .bp-sheet, .bp-minisheet, .bp-datasheet, .bp-spec, .bp-portal__sheet { box-shadow: none; break-inside: avoid; }
  .bp-footer { display: none; }
}
