/* UI system, shared across all independent visual models. */
.grade-grid-large .grade-visual {
  height: 200px;
}
.grade-grid-large .concrete-cube {
  width: 125px;
  height: 125px;
}
.technical-field-list {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  margin-top: 25px;
}
.technical-field-list>div {
  padding: 14px 18px;
  display: flex;
  justify-content: space-between;
  gap: 18px;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.technical-field-list>div:last-child {
  border: 0;
}
.technical-field-list b {
  color: var(--accent);
  font-weight: 700;
}
.info-panel {
  min-height: 360px;
  background: linear-gradient(145deg,#192832,#2d3c46);
  color: #fff;
  padding: 24px;
  border-radius: var(--radius-lg);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  box-shadow: var(--shadow);
}
.panel-head {
  font-size: 11px;
  color: #b6c2c9;
  letter-spacing: 2px;
  direction: ltr;
}
.info-panel-cube {
  display: grid;
  place-items: center;
}
.info-panel-cube .concrete-cube {
  width: 185px;
  height: 185px;
  filter: brightness(1.25);
}
.info-panel-foot {
  display: flex;
  justify-content: space-between;
  direction: ltr;
  font-size: 11px;
}
.info-panel-foot strong {
  color: var(--accent);
}
.request-layout {
  display: grid;
  grid-template-columns: minmax(0,1fr) 325px;
  gap: 28px;
  align-items: start;
}
.form-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 38px;
  box-shadow: var(--shadow);
}
.wizard-header {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 15px;
}
.wizard-header h2 {
  margin: 8px 0 7px;
  font-size: 29px;
}
.wizard-header p {
  font-size: 13px;
  margin: 0;
}
.wizard-steps {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--border);
  padding-bottom: 24px;
  margin: 34px 0;
  gap: 12px;
}
.wizard-steps span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 750;
  position: relative;
}
.wizard-steps span.active {
  color: var(--accent-text);
}
.wizard-steps span.active:after {
  content: "";
  position: absolute;
  bottom: -25px;
  left: 0;
  right: 0;
  height: 3px;
  background: var(--accent);
}
.wizard-panel {
  border: 0;
  padding: 0;
  margin: 0;
  min-width: 0;
}
.wizard-panel legend {
  font-size: 22px;
  font-weight: 780;
  color: var(--ink);
  padding: 0 0 21px;
}
.field-grid {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 22px;
}
.field-grid label,.contact-form-card label {
  display: flex;
  flex-direction: column;
  gap: 8px;
  color: var(--ink);
  font-weight: 720;
  font-size: 13px;
}
.field-grid label em {
  color: var(--accent);
  font-style: normal;
}
.field-grid input,.field-grid textarea,.field-grid select,.contact-form-card input,.contact-form-card textarea {
  width: 100%;
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: 9px;
  min-height: 48px;
  padding: 11px 14px;
  background: #fff;
  color: #24313a;
  font-weight: 450;
  resize: vertical;
}
.field-grid input:focus,.field-grid select:focus,.field-grid textarea:focus {
  border-color: var(--accent);
}
.field-full {
  grid-column: 1/-1;
}
.wizard-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 35px;
}
.wizard-alert {
  padding: 10px 13px;
  background: #fff1ea;
  color: #a84112;
  border: 1px solid #ffc5a6;
  border-radius: 9px;
  margin-top: 16px;
  font-size: 12px;
}
.summary-rows {
  display: grid;
  gap: 0;
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
}
.summary-row {
  display: grid;
  grid-template-columns: 145px 1fr;
  gap: 15px;
  padding: 12px 15px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.summary-row:last-child {
  border: 0;
}
.summary-row span {
  color: var(--muted);
}
.summary-row b {
  color: var(--ink);
  font-weight: 700;
  word-break: break-word;
  white-space: pre-wrap;
}
.wizard-success {
  text-align: center;
  padding: 40px 15px;
}
.wizard-success h3 {
  font-size: 23px;
}
.success-icon {
  display: grid;
  place-items: center;
  margin: 0 auto 15px;
  background: #e8f5ed;
  color: #2d9461;
  border-radius: 50%;
  width: 70px;
  height: 70px;
}
.success-icon .ico {
  width: 34px;
  height: 34px;
}
.aside-photo {
  min-height: 310px;
  background: var(--dark);
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
  color: #fff;
}
.aside-photo img {
  width: 100%;
  height: 310px;
  object-fit: cover;
}
.aside-photo:after {
  position: absolute;
  inset: 0;
  content: "";
  background: linear-gradient(0deg,#0a1822ef,transparent 70%);
}
.aside-photo>div {
  position: absolute;
  bottom: 22px;
  left: 22px;
  right: 22px;
  z-index: 1;
}
.aside-photo span {
  font-size: 11px;
  color: var(--accent);
}
.aside-photo h3 {
  font-size: 21px;
  color: #fff;
  margin: 7px 0;
}
.aside-card {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
  margin-top: 18px;
  background: var(--soft);
}
.aside-card h3 {
  font-size: 15px;
}
.aside-card .check-list {
  margin-bottom: 0;
}
.aside-card li {
  font-size: 13px;
}
.request-aside {
  position: sticky;
  top: 117px;
}
.project-grid-large {
  grid-template-columns: repeat(2,minmax(0,1fr));
}
.project-grid-large .project-card {
  height: 365px;
}
.lab-tiles {
  grid-template-columns: repeat(4,1fr);
}
.lab-tiles .feature-tile {
  min-height: 240px;
}
.lab-tiles .card-link {
  margin-top: 20px;
}
.chart-panel {
  border: 1px solid var(--border);
  padding: 30px 30px 20px;
  background: var(--surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}
.chart-title {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  font-size: 15px;
}
.chart-title small {
  font-size: 12px;
  color: var(--accent-text);
}
.bars {
  height: 230px;
  padding: 25px 10px 0;
  display: flex;
  align-items: end;
  justify-content: space-around;
  gap: 15px;
  border-bottom: 1px solid var(--border);
  background-image: repeating-linear-gradient(to top,transparent,transparent 44px,rgba(110,130,140,.12) 45px);
}
.bars>div {
  display: flex;
  flex: 1;
  height: 100%;
  flex-direction: column;
  align-items: center;
  justify-content: end;
  gap: 9px;
  max-width: 44px;
}
.bars span {
  height: var(--bar);
  width: 100%;
  display: block;
  border-radius: 5px 5px 0 0;
  background: linear-gradient(0deg,var(--accent),color-mix(in srgb,var(--accent) 55%,white));
}
.bars div:nth-child(even) span {
  background: linear-gradient(0deg,#3f5765,#a5b8c1);
}
.bars small {
  color: var(--muted);
  font: 10px Arial,sans-serif;
  margin-bottom: -22px;
}
.chart-bottom {
  color: var(--muted);
  text-align: center;
  margin-top: 35px;
  font-size: 10px;
}
.articles-layout {
  display: grid;
  grid-template-columns: 270px minmax(0,1fr);
  gap: 32px;
  align-items: start;
}
.article-sidebar {
  display: grid;
  gap: 18px;
}
.sidebar-box,.sidebar-note {
  padding: 22px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
}
.sidebar-box h3 {
  font-size: 16px;
  margin: 0 0 18px;
}
.search-input {
  display: flex;
  align-items: center;
  gap: 5px;
  border: 1px solid var(--border);
  border-radius: 9px;
  padding: 0 10px;
}
.search-input .ico {
  width: 16px;
  height: 16px;
  color: var(--accent-text);
}
.search-input input {
  border: 0;
  outline: 0;
  width: 100%;
  min-width: 0;
  padding: 13px 4px;
  font-size: 13px;
}
.side-filters {
  display: grid;
  gap: 3px;
}
.side-filters button {
  text-align: left;
  border: 0;
  background: none;
  color: var(--text);
  font-size: 13px;
  border-radius: 7px;
  padding: 11px 12px;
}
.side-filters button:hover,.side-filters button.active {
  background: var(--soft);
  color: var(--accent-text);
  font-weight: 800;
}
.sidebar-note {
  background: var(--dark);
  color: #fff;
}
.sidebar-note .ico {
  color: var(--accent);
}
.sidebar-note p {
  color: #c4d0d6;
  font-size: 12px;
  margin: 8px 0 0;
}
.article-list {
  grid-template-columns: repeat(2,minmax(0,1fr));
}
.article-list .article-card img {
  height: 210px;
}
.contact-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: start;
}
.contact-copy h2 {
  color: #fff;
  margin: 10px 0 18px;
}
.contact-copy p {
  color: #ccd7dc;
}
.contact-method {
  display: flex;
  align-items: center;
  gap: 13px;
  margin-top: 25px;
}
.contact-method .ico {
  color: var(--accent);
  width: 25px;
  height: 25px;
}
.contact-method span,.contact-method strong {
  display: block;
}
.contact-method span {
  font-size: 14px;
}
.contact-method strong {
  color: #fff;
  font-size: 14px;
}
.contact-form-card {
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 36px;
  box-shadow: var(--shadow);
}
.contact-form-card h3 {
  font-size: 22px;
}
.contact-form-card form {
  display: grid;
  gap: 14px;
}
.contact-form-card .button {
  justify-self: start;
}
.contact-form-card .data-note {
  font-size: 10px;
}
@media (max-width:1080px) {
  .request-layout {
    grid-template-columns: 1fr 245px;
  }
  .lab-tiles {
    grid-template-columns: repeat(2,1fr);
  }
  .articles-layout {
    grid-template-columns: 210px minmax(0,1fr);
  }
  .grade-grid-large .grade-visual {
    height: 160px;
  }
  .grade-grid-large .concrete-cube {
    height: 100px;
    width: 100px;
  }
}
@media (max-width:760px) {
  .request-layout {
    grid-template-columns: 1fr;
  }
  .request-aside {
    position: static;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }
  .aside-card {
    margin-top: 0;
  }
  .project-grid-large {
    grid-template-columns: 1fr;
  }
  .project-grid-large .project-card {
    height: 250px;
  }
  .articles-layout {
    grid-template-columns: 1fr;
  }
  .article-sidebar {
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }
  .sidebar-note {
    grid-column: 1/-1;
  }
  .contact-layout {
    grid-template-columns: 1fr;
    gap: 25px;
  }
  .contact-form-card {
    padding: 20px;
  }
}
@media (max-width:500px) {
  .form-card {
    padding: 18px;
  }
  .wizard-header h2 {
    font-size: 21px;
  }
  .wizard-steps span {
    font-size: 9px;
  }
  .field-grid {
    grid-template-columns: 1fr;
  }
  .request-aside {
    grid-template-columns: 1fr;
  }
  .lab-tiles {
    grid-template-columns: 1fr;
  }
  .article-sidebar {
    grid-template-columns: 1fr;
  }
  .article-list {
    grid-template-columns: 1fr;
  }
  .summary-row {
    grid-template-columns: 95px 1fr;
    font-size: 11px;
  }
  .chart-title {
    flex-direction: column;
  }
}

/* WordPress content galleries. Shared across all four visual models. */
.bn-category-nav .chip { display: inline-flex; align-items: center; text-decoration: none; }
.project-card>.bn-image-placeholder,
.bn-project-detail .split-image>.bn-image-placeholder {
  display: grid;
  place-items: center;
  width: 100%; height: 100%; min-height: 300px;
  background: linear-gradient(135deg,#354852,#1b2c35);
  color: #a7b9c0;
}
.bn-image-placeholder .ico { width: 64px; height: 64px; opacity: .58; }
.bn-project-detail .split-image>.bn-image-placeholder { min-height: 410px; }
.bn-project-description { overflow-wrap: anywhere; color: var(--text); }
.bn-project-description img { max-width: 100%; height: auto; }
.bn-project-description p { margin: 0 0 18px; }
.bn-project-detail .button { margin-top: 20px; }
.bn-empty-library {
  padding: clamp(30px,5vw,64px);
  border: 1px dashed var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
  text-align: center;
}
.bn-empty-library>.ico { width: 42px; height: 42px; color: var(--accent); margin-bottom: 16px; }
.bn-empty-library h3 { margin: 0 0 10px; color: var(--ink); }
.bn-empty-library p { margin: 0; color: var(--muted); }
.bn-photo-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 20px; }
.bn-photo-card {
  overflow: hidden; margin: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.bn-photo-card>a,.bn-photo-unset { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--soft); }
.bn-photo-card .bn-library-image { width: 100%; height: 100%; object-fit: cover; transition: transform .2s ease; }
.bn-photo-card a:hover .bn-library-image { transform: scale(1.035); }
.bn-photo-unset .bn-image-placeholder { display: grid; place-items: center; height: 100%; }
.bn-photo-card figcaption { padding: 16px 18px 20px; }
.bn-photo-card figcaption strong { display: block; overflow-wrap: anywhere; color: var(--ink); }
.bn-photo-card figcaption p { color: var(--muted); font-size: 13px; line-height: 1.7; margin: 7px 0 0; }
.bn-pagination { display: flex; align-items: center; justify-content: center; gap: 16px; flex-wrap: wrap; margin-top: 32px; }
.bn-pagination a { display: inline-flex; padding: 10px 20px; border: 1px solid var(--border); border-radius: 8px; color: var(--ink); background: var(--surface); }
.bn-pagination a:hover { border-color: var(--accent); color: var(--accent-text); }
.bn-pagination span { color: var(--muted); font-size: 13px; }
@media (max-width: 860px) { .bn-photo-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 540px) { .bn-photo-grid { grid-template-columns: 1fr; } }

/* Content authored on native WP Pages; separate from the presentation modules. */
.bn-wp-page-content{padding-block:clamp(48px,6vw,90px);background:var(--surface,#fff)}
.bn-wp-editor-content{max-width:920px;margin-inline:auto;line-height:1.8;overflow-wrap:anywhere}
.bn-wp-editor-content h1,.bn-wp-editor-content h2,.bn-wp-editor-content h3{line-height:1.25}
.bn-wp-editor-content img{max-width:100%;height:auto}
.bn-wp-editor-content .wp-block-columns{gap:clamp(16px,3vw,32px)}
.bn-wp-editor-content a{text-decoration:underline;text-underline-offset:3px}

/* Contact page — independent modular blocks, shared across all visual models. */
.bn-contact-intro{background:var(--surface,#fff)}
.bn-contact-intro-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(32px,6vw,96px);align-items:center}
.bn-contact-intro h2,.bn-contact-form-intro h2{font-size:clamp(2.1rem,4.4vw,4.4rem);line-height:1.12;max-width:650px;letter-spacing:-.05em;margin:12px 0 22px}
.bn-contact-intro p,.bn-contact-form-intro p{line-height:1.8;color:var(--muted,#65717d);max-width:550px}
.bn-contact-methods{display:grid;gap:12px}
.bn-contact-method{display:flex;align-items:center;gap:18px;padding:21px 24px;border:1px solid var(--line,#e0e7ed);border-radius:14px;background:var(--card,#fff);text-decoration:none;color:var(--text,#172936);box-shadow:0 8px 28px #11273608}
.bn-contact-method>.ico{color:var(--accent,#e76b26);width:27px;height:27px;flex:none}
.bn-contact-method>span{min-width:0;flex:1}
.bn-contact-method small{display:block;font-weight:700;color:var(--muted,#65717d);font-size:10px;letter-spacing:.11em;margin-bottom:6px}
.bn-contact-method strong{font-size:16px;overflow-wrap:anywhere}
.bn-contact-form-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start;gap:clamp(24px,7vw,90px)}
.bn-contact-form-intro{padding-top:28px}
.bn-contact-assurance{display:grid;gap:20px;margin-top:42px}
.bn-contact-assurance>div{display:flex;align-items:center;gap:12px;font-weight:650}
.bn-contact-assurance .ico{color:var(--accent,#e76b26);width:22px;height:22px}
.bn-live-contact{width:100%;max-width:none;margin:0}
.bn-live-contact form{gap:17px}
.bn-form-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.bn-live-contact label{min-width:0}
.bn-live-contact textarea,.bn-live-contact input{max-width:100%;width:100%}
.bn-live-contact .button{margin-top:7px}
.bn-form-alert{border:1px solid #b9d5c8;background:#e7f4ed;color:#155a3d;padding:14px 16px;border-radius:9px;line-height:1.55}
.bn-honeypot{position:absolute!important;left:-9999px!important;top:-9999px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.bn-about-contact{display:flex;align-items:center;justify-content:space-between;gap:28px}
.bn-about-contact h2{font-size:clamp(2rem,3.5vw,3.5rem);margin:8px 0}
.bn-about-contact p{max-width:650px;line-height:1.6}
.bn-footer-newsletter{border-top:1px solid #ffffff2a;display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,4vw,72px);padding-top:36px;padding-bottom:36px}
.bn-footer-newsletter h3{color:#fff;font-size:clamp(1.2rem,2.2vw,2rem);margin:8px 0}
.bn-footer-newsletter p,.bn-newsletter-consent,.bn-newsletter-privacy{color:#b8c8d3;font-size:13px;line-height:1.55}
.bn-newsletter-form{display:grid;gap:11px;align-content:center}
.bn-newsletter-control{display:flex;gap:10px}
.bn-newsletter-control input{flex:1;min-width:0;border:1px solid #74828e;border-radius:10px;padding:12px 16px;background:#fff;color:#192b36}
.bn-newsletter-control .button{white-space:nowrap}
.bn-newsletter-consent{display:flex;align-items:flex-start;gap:9px;cursor:pointer}
.bn-newsletter-consent input{margin-top:4px;flex:none}
.bn-newsletter-privacy{width:max-content;text-decoration:underline}
@media(max-width:820px){.bn-contact-intro-grid,.bn-contact-form-grid,.bn-footer-newsletter{grid-template-columns:1fr}.bn-about-contact{flex-direction:column;align-items:start}.bn-contact-form-intro{padding-top:0}}
@media(max-width:520px){.bn-form-pair{grid-template-columns:1fr}.bn-newsletter-control{flex-direction:column}.bn-newsletter-control .button{justify-content:center}.bn-contact-method{padding:16px}}
