/* IRE visual system, shared by the existing home, project and service pages. */
.ire-site {
  --ink: #10232f;
  --navy: #061925;
  --paper: #f5efe3;
  --line: #e4dcd0;
  --muted: #4e5c64;
  --canvas: #fcf9f3;
  --accent: #76551b;
  --gold-hover: #e5bc62;
  --gold: #d3a33c;
  --heading: "Arial", "Helvetica Neue", system-ui, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;
  --side: clamp(20px, 4.4vw, 70px);
  color: var(--ink);
  background: var(--canvas);
  font: 16px/1.55 system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
}
.ire-site :is(h1, h2, h3) { font-family: var(--heading); }
.ire-site [hidden] { display: none !important; }
.ire-site :is(a, button, input):focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.ire-site :is(.lead-band, .site-footer, .project-page-header, .project-cta) :is(a, button):focus-visible { outline-color: var(--gold); }
.ire-site:where(:not(.ire-detail)) :where(p, figure, dl, dd) { margin: 0; }
.ire-site .mono { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.ire-site .frame { width: min(calc(100% - 2 * var(--side)), 1320px); margin-inline: auto; }
.ire-site .technical-kicker { color: var(--accent); font-size: .72rem; font-weight: 750; letter-spacing: .09em; }
.ire-site .button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .7rem;
  padding: .72rem 1.02rem;
  border: 1px solid var(--accent);
  border-radius: 0;
  background: var(--gold);
  color: var(--navy);
  font: inherit;
  font-size: .9rem;
  font-weight: 720;
  line-height: 1.28;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}
.ire-site .button:hover { background: var(--gold-hover); }
.ire-site .text-action { font-size: .91rem; font-weight: 720; text-underline-offset: 4px; }
.ire-site .text-action:hover { color: var(--accent); }
.action-arrow { display: inline-block; flex: none; vertical-align: -.1em; }
.ire-site .text-action .action-arrow, .ire-site .index-open { color: var(--accent); }

.ire-site .site-header { display: block; padding: 0; background: #fff; border-bottom: 1px solid var(--line); }
.header-grid { min-height: 82px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: clamp(16px, 2.5vw, 42px); }
.site-wordmark { display: block; color: var(--ink); font: 850 clamp(1.36rem, 2vw, 1.75rem)/.95 var(--heading); letter-spacing: -.045em; text-decoration: none; white-space: nowrap; }
.site-wordmark span { font-weight: 730; }
.site-wordmark small { margin-top: 7px; font: 650 .57rem/1 var(--mono); letter-spacing: .075em; color: var(--muted); }
.ire-site .site-nav { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px clamp(12px, 1.5vw, 25px); width: auto; font-size: .83rem; font-weight: 660; }
.site-nav a { white-space: nowrap; }
.site-nav a:hover { color: var(--accent); }
.header-actions { display: flex; align-items: center; justify-content: flex-end; }
.ire-site .header-cta { font-size: .78rem; white-space: nowrap; }
#site-header { position: sticky; top: 0; z-index: 15; }
html:has(#site-header) { scroll-padding-top: 90px; }
.header-actions { gap: 8px; }
.mobile-header-actions, .nav-toggle, .mobile-contact-label { display: none; }
#site-header .header-call, #site-header.nav-enhanced .nav-toggle {
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 44px;
  min-height: 44px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 0;
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-size: .79rem;
  font-weight: 720;
  text-decoration: none;
  white-space: nowrap;
}
#site-header .header-call { display: inline-flex; border-color: var(--accent); background: var(--gold); }
#site-header .header-call:hover { background: var(--gold-hover); }
#site-header .header-cta { min-height: 44px; }

.lead-band { background: var(--navy); color: var(--canvas); }
.lead-copy .technical-kicker, .lead-copy .text-action:hover, .lead-copy .text-action .action-arrow { color: var(--gold); }
.lead-grid { display: grid; grid-template-columns: minmax(0, 1.42fr) minmax(0, 1fr); }
.lead-copy { align-self: center; min-width: 0; padding: clamp(54px, 6vw, 96px) clamp(24px, 4vw, 66px) clamp(56px, 6vw, 96px) 0; }
.lead-copy .technical-kicker span { margin-inline: .35em; color: #b8c4ca; }
.lead-copy h1 { margin: 18px 0; font-size: clamp(2.62rem, 4.22vw, 4.35rem); font-weight: 790; letter-spacing: -.052em; line-height: .99; }
.lead-copy h1 span { color: var(--gold); }
.lead-copy .lead-description { max-width: 53ch; font-size: clamp(.95rem, 1.25vw, 1.05rem); line-height: 1.58; color: #dce4e7; }
.lead-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 23px; margin-top: 24px; }
.ire-site .statement-link, .ire-site .prequalification-action { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; }
.lead-credentials { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 20px; padding-top: 15px; border-top: 1px solid #3e4d52; }
.lead-credentials dt { color: #dce4e7; font-size: .72rem; }
.lead-credentials dd { color: var(--gold); font-size: clamp(.92rem, 1.3vw, 1.13rem); font-weight: 760; font-variant-numeric: tabular-nums; }
.lead-credentials dd span { display: block; color: #dce4e7; font-size: .72rem; font-weight: 500; }
.portfolio-action { margin-top: 16px; }
.portfolio-action a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; }
.lead-photo { display: grid; grid-template-rows: 1fr auto; min-width: 0; border-inline: 1px solid #3e4d52; }
.lead-photo img { width: 100%; height: 100%; min-height: 0; object-fit: cover; object-position: 53% center; display: block; }
.lead-photo figcaption { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 6px 12px; background: var(--navy); color: #fff; padding: 13px 16px; }
.lead-photo figcaption .mono { display: block; font-size: .66rem; letter-spacing: .06em; color: var(--gold); }
.lead-photo figcaption a { font-size: .9rem; font-weight: 710; }
.lead-credit { font-size: .69rem; color: #c3ced4; }

.completion-tracker {
  background: var(--paper);
  border-block: 1px solid var(--line);
}
.completion-tracker-layout {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: clamp(14px, 3.4vw, 46px);
  padding-block: clamp(16px, 2.7vw, 32px);
}
.completion-tally {
  display: grid;
  justify-items: center;
  gap: 4px;
  padding: 9px clamp(12px, 2.2vw, 28px) 10px;
  border: 1px solid #304550;
  border-top: 2px solid var(--gold);
  background: linear-gradient(180deg, #19313e, var(--navy));
  color: var(--gold);
  text-align: center;
}
.completion-tally span {
  color: #dce4e7;
  font-size: .62rem;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.completion-tally strong {
  font-size: clamp(2rem, 5.7vw, 4rem);
  font-weight: 760;
  line-height: 1;
  letter-spacing: .04em;
}
.completion-tracker .technical-kicker span {
  margin-inline: .35em;
  color: var(--muted);
}
.completion-tracker h2 {
  margin-top: 5px;
  font-size: clamp(1.2rem, 3vw, 2.4rem);
  line-height: 1.08;
  letter-spacing: -.035em;
}
@media (prefers-reduced-motion: no-preference) {
  .completion-tally strong { animation: reveal-completion-tally 500ms ease-out both; }
}
@keyframes reveal-completion-tally {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

.panel { padding-block: clamp(48px, 6.1vw, 88px); border-bottom: 1px solid var(--line); scroll-margin-top: 16px; }
.panel-white { background: var(--canvas); }
.ire-site #projects.panel-concrete { background: var(--paper); }
.panel-heading { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); align-items: end; gap: 12px 28px; margin-bottom: 24px; }
.panel-heading h2 { margin-top: 8px; font-size: clamp(2rem, 3.65vw, 3.3rem); font-weight: 760; letter-spacing: -.048em; line-height: 1.03; }
.panel-heading > p { color: var(--muted); max-width: 46ch; justify-self: end; }
.capability-matrix { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.capability-matrix article { min-width: 0; display: grid; align-content: start; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: #fff; padding: clamp(18px, 2.5vw, 36px); }
.technical-icon { width: 27px; height: 27px; margin-bottom: 14px; color: var(--accent); }
.capability-matrix .matrix-code { color: var(--accent); font-size: .69rem; letter-spacing: .075em; font-weight: 650; }
.capability-matrix h3 { margin: 7px 0; font-size: clamp(1.22rem, 2.1vw, 1.55rem); letter-spacing: -.024em; font-weight: 735; }
.capability-matrix article > p:not(.matrix-code) { max-width: 55ch; color: var(--muted); }
.capability-matrix article > p.capability-proof { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--line); color: var(--ink); font-size: .88rem; }
.capability-proof strong { color: var(--accent); }

.supplier-band { padding-block: clamp(22px, 3vw, 38px); background: #fff; border-bottom: 1px solid var(--line); }
.supplier-heading { margin-bottom: 16px; text-align: center; }
.supplier-heading h2 { font-size: clamp(1.25rem, 2.1vw, 1.65rem); font-weight: 760; letter-spacing: -.025em; }
.supplier-heading p { max-width: 62ch; margin: 6px auto 0; color: var(--muted); font-size: .9rem; }
.supplier-list { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1px; margin: 0; padding: 0; border: 1px solid var(--line); list-style: none; background: var(--line); }
.supplier-list li { display: grid; place-items: center; min-height: 84px; padding: 12px clamp(10px, 1.7vw, 24px); background: #fff; }
.supplier-list img { display: block; width: auto; height: auto; max-width: min(100%, 168px); max-height: 56px; object-fit: contain; }

.project-index { border: 1px solid var(--line); background: #fff; }
.index-head, .index-row { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, .9fr) minmax(0, 1.28fr) minmax(0, .61fr) 28px; align-items: center; column-gap: clamp(10px, 1.8vw, 24px); padding-inline: clamp(12px, 1.8vw, 25px); }
.index-head { padding-block: 10px; color: var(--muted); font-size: .68rem; font-weight: 680; letter-spacing: .06em; text-transform: uppercase; background: var(--canvas); }
.index-row { min-height: 105px; padding-block: 14px; border-top: 1px solid var(--line); }
.index-row:hover { background: var(--canvas); }
.index-row > * { min-width: 0; }
.index-project { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 12px; align-items: center; }
.index-sheet-number { align-self: start; color: #687384; font-size: .76rem; padding: 6px; border: 1px solid var(--line); text-align: center; }
.index-project h3 { font-weight: 730; font-size: clamp(.96rem, 1.35vw, 1.1rem); letter-spacing: -.018em; overflow-wrap: break-word; }
.index-project h3 a { text-decoration: none; }
.index-project h3 a:hover { color: var(--accent); text-decoration: underline; }
.index-project .index-sector { color: var(--accent); font-size: .62rem; letter-spacing: .025em; text-transform: uppercase; font-weight: 680; margin-bottom: 3px; }
.index-project .index-suburb { color: var(--muted); font-size: .75rem; margin-top: 3px; }
.index-builder, .index-scope { color: #303948; font-size: .87rem; overflow-wrap: break-word; }
.index-completion { font-size: .8rem; }
.index-completion small { display: block; color: var(--muted); font-size: .7rem; margin-top: 4px; }
.index-active { color: var(--accent); font-weight: 720; }
.index-open { display: grid; place-items: center; text-decoration: none; width: 28px; height: 28px; border: 1px solid var(--line); }
.index-open:hover { border-color: var(--accent); }
.index-mobile-label { display: none; }

.panel-dark { color: #fff; background: var(--navy); border-bottom-color: #3e4d52; }
.panel-dark .technical-kicker { color: var(--gold); }
.ire-site .prequalification-action { margin-top: 12px; }
.ire-site .prequalification-action:hover, .ire-site .prequalification-action .action-arrow { color: var(--gold); }
.ire-site .prequalification-action:focus-visible { outline-color: var(--gold); }
.panel-dark :is(.panel-heading > p, .delivery-grid article > p:not(.technical-kicker)) { color: #dce4e7; }
.delivery-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-left: 1px solid #3e4d52; border-top: 1px solid #3e4d52; }
.delivery-grid article { border-right: 1px solid #3e4d52; border-bottom: 1px solid #3e4d52; padding: clamp(16px, 2.6vw, 34px); }
.delivery-grid h3 { margin: 8px 0; font-size: clamp(1.15rem, 2vw, 1.45rem); letter-spacing: -.021em; font-weight: 720; }
.delivery-grid p:not(.technical-kicker) { font-size: .91rem; }

.tender-grid { display: grid; grid-template-columns: minmax(0, 1.17fr) minmax(0, .83fr); border: 1px solid var(--line); }
.tender-contact, .tender-brief { min-width: 0; padding: clamp(18px, 3vw, 37px); background: #fff; }
.tender-email { display: inline-block; max-width: 100%; overflow-wrap: anywhere; font-size: .91rem; font-weight: 700; }
.copy-line { display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px 12px; }
.copy-line .copy-email { color: var(--accent); font-size: .8rem; }
.copy-line .copy-email-status { flex-basis: auto; font-size: .76rem; }
.tender-contacts { margin-top: 20px !important; }
.tender-contacts > div { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; padding-block: 10px; border-top: 1px solid var(--line); }
.tender-contacts dt { font-size: .86rem; font-weight: 710; }
.tender-contacts dt small, .tender-contacts dd { color: var(--muted); font-weight: 480; font-size: .79rem; }
#capability.capability-request { color: var(--ink); margin-top: 18px; border-top: 1px solid var(--line); padding-top: 13px; scroll-margin-top: 25px; }
#capability.capability-request .technical-kicker { margin: 0; color: var(--ink); font-size: .78rem; }
#capability.capability-request p:not(.technical-kicker) { color: var(--muted); margin: 4px 0; font-size: .85rem; }
.tender-brief { border-right: 1px solid var(--line); background: var(--paper); }
.tender-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin-bottom: 16px; }
.tender-actions > div { min-width: 0; }
.tender-attachment-note { margin-bottom: 12px; color: var(--muted); font-size: .84rem; }
.tender-photo { display: block; width: 100%; height: auto; aspect-ratio: 2 / 1; object-fit: cover; }
.tender-draft-options { margin-top: 14px; border-bottom: 0; }
.tender-draft-options summary { display: list-item; width: fit-content; padding: 0; list-style: revert; color: var(--ink); cursor: pointer; font-size: .85rem; font-weight: 650; }
.tender-draft-options summary::-webkit-details-marker { display: revert; }
.tender-draft-options summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.tender-draft-options form { margin-top: 14px; }
.brief-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 12px; margin-bottom: 15px; }
.brief-fields label { min-width: 0; font-size: .79rem; font-weight: 680; }
.brief-fields label span { color: var(--accent); }
.brief-fields label .optional { color: var(--muted); font-weight: 450; }
.brief-fields input { display: block; width: 100%; padding: .5rem .6rem; margin-top: 3px; border: 1px solid #b8ac98; border-radius: 0; background: #fff; color: var(--ink); font: inherit; font-weight: 500; }
.brief-fields input::placeholder { color: #626c7c; }

.ire-site .site-footer { padding: 0; display: block; background: var(--navy); color: #dce4e7; }
.footer-grid { padding-block: 20px; display: grid; grid-template-columns: 1.3fr 1fr auto; align-items: center; gap: 12px; }
.footer-grid strong { display: block; }
.footer-grid span { display: inline; margin-top: 0; }
.footer-grid .mono { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: .71rem; }
.footer-grid a { color: #fff; }
.footer-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px 16px; }
.capability-service-link { display: inline-flex; align-items: center; justify-self: start; min-height: 44px; margin-top: 5px; }
.ire-detail .project-facts .statement-link { color: var(--accent); }
.site-footer > :is(.email-reset, .email-preference-status) { display: inline-block; margin: 0 0 12px var(--side); font-size: .75rem; color: #dce4e7; }
.ire-site .email-dialog { background: var(--canvas); }
.ire-detail .eyebrow { font-family: var(--mono); }
.ire-detail .project-page-header :is(.eyebrow, p.project-date), .ire-detail .project-cta .eyebrow { color: var(--gold); }
.ire-detail .project-page-header h1 { font-weight: 760; }
.ire-detail .project-reference { border-left-color: var(--accent); }

@media (max-width: 1090px) {
  html:has(#site-header) { scroll-padding-top: 116px; }
  .header-grid { grid-template-columns: 1fr auto; gap: 0 12px; min-height: 0; padding-top: 12px; }
  .ire-site .site-nav { grid-row: 2; grid-column: 1 / -1; justify-content: flex-start; row-gap: 0; padding-block: 0; margin-top: 8px; border-top: 1px solid var(--line); }
  .site-nav a, .ire-site .header-cta { display: inline-flex; align-items: center; min-height: 44px; }
  .header-actions { grid-column: 2; grid-row: 1; }
  .index-project { grid-template-columns: 47px minmax(0, 1fr); gap: 7px; }
}
@media (max-width: 760px) {
  html:has(#site-header) { scroll-padding-top: 64px; }
  #site-header .header-grid { min-height: 62px; padding-top: 0; column-gap: 8px; }
  #site-header .header-actions { display: none; }
  #site-header .mobile-header-actions { display: flex; grid-column: 2; grid-row: 1; gap: 6px; }
  #site-header.nav-enhanced .nav-toggle { display: inline-flex; }
  .desktop-contact-label { display: none; }
  .mobile-contact-label { display: inline; }
  #site-header .nav-toggle:hover, #site-header .nav-toggle[aria-expanded="true"] { background: var(--paper); }
  #site-header.nav-enhanced .site-nav {
    display: none;
    position: absolute;
    inset: 100% 0 auto;
    margin: 0;
    padding: 5px var(--side);
    background: #fff;
    border-block: 1px solid var(--line);
  }
  #site-header.nav-open .site-nav { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; }
  #site-header.nav-open .site-nav a { white-space: normal; }
  #site-header.nav-open .site-nav a + a { border-top: 1px solid var(--line); }
  .lead-credentials { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .lead-experience { grid-column: 1 / -1; }
  .lead-grid, .panel-heading, .tender-grid { grid-template-columns: minmax(0, 1fr); }
  .lead-copy { padding: 38px 0 26px; }
  .lead-copy h1 { font-size: clamp(2.25rem, 7.25vw, 3.4rem); }
  .lead-photo { display: block; }
  .lead-photo img { height: auto; aspect-ratio: 2.15; }
  .panel-heading > p { justify-self: start; }
  .supplier-list { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .supplier-list li { grid-column: span 2; min-height: 70px; }
  .supplier-list li:nth-last-child(-n+2) { grid-column: span 3; }
  .index-head { display: none; }
  .index-row { grid-template-columns: minmax(0, 1fr) minmax(0, .9fr) 44px; gap: 8px 10px; align-items: start; padding-block: 11px; }
  .index-row:first-of-type { border-top: 0; }
  .index-project { grid-column: 1 / 3; }
  .index-open { grid-column: 3; grid-row: 1; width: 44px; height: 44px; }
  .index-builder { grid-column: 1 / 2; }
  .index-scope { grid-column: 1 / -1; }
  .index-completion { grid-column: 2 / -1; grid-row: 2; }
  .index-mobile-label { display: block; font-size: .65rem; text-transform: uppercase; color: var(--muted); font-weight: 600; }
  .delivery-grid { grid-template-columns: minmax(0, 1fr); }
  .tender-brief { border-right: 0; border-bottom: 1px solid var(--line); }
  .tender-contacts a, .tender-actions .copy-email { display: inline-flex; align-items: center; min-height: 44px; }
  .footer-grid { grid-template-columns: minmax(0, 1fr); }
  .ire-detail .service-related { grid-row: auto; }
  .footer-actions { justify-content: flex-start; }
  .footer-actions a { display: inline-flex; align-items: center; min-height: 44px; }
}
@media (max-width: 450px) {
  .ire-site .site-nav { display: grid; grid-template-columns: repeat(2, max-content); column-gap: clamp(14px, 6vw, 30px); font-size: .8rem; }
  .supplier-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .supplier-list li, .supplier-list li:nth-last-child(-n+2) { grid-column: auto; }
  .supplier-list li:last-child { grid-column: 1 / -1; }
  .site-wordmark small { font-size: .46rem; }
  .ire-site .header-cta { font-size: .69rem; padding: .55rem .47rem; gap: .3rem; }
  .tender-photo { aspect-ratio: 3 / 2; }
  .capability-matrix, .brief-fields { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 350px) {
  #site-header .site-wordmark { font-size: 1.2rem; }
  #site-header .site-wordmark small { font-size: .4rem; }
  #site-header .header-call span { display: none; }
  #site-header.nav-enhanced .nav-toggle { padding-inline: 7px; gap: 4px; }
}
