/* Shared layout rules, applied to every new delivery by the publishing tool. */
:root { --bam-page-width:1440px; --gut:clamp(16px,2.5vw,32px); }
/* Keep the browser's automatic font inflation from changing the layout. */
html,body { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
.grid > a { display:block; min-width:0; }
.nav,#app { width:100%; max-width:var(--bam-page-width); margin-inline:auto; }
.page { container-type:inline-size; }
.sheet { max-width:var(--bam-page-width); margin-inline:auto; }
.nav { grid-template-columns:auto minmax(0,1fr) auto; }
.nav ul { justify-content:center; gap:clamp(12px,1.4vw,20px); }
.nav ul a { white-space:nowrap; }
.hero > .wrap { padding-block:20px; }
.hero .mark {
  position:relative; display:block; margin:0; padding:0;
  font-size:clamp(32px,10vw,144px); font-weight:800;
  line-height:1; letter-spacing:0; white-space:nowrap; overflow:visible;
}
.hero .mark[data-bam-fitted] { height:var(--bam-ink-height); }
.bam-title-line {
  position:relative; top:var(--bam-ink-offset,0px);
  display:flex; justify-content:flex-start; column-gap:var(--bam-letter-gap,0px); align-items:baseline;
  width:100%; height:1em; line-height:1; white-space:pre;
}
.bam-title-letter { flex:0 0 auto; line-height:1; }
.bam-title-space { margin-inline:calc(var(--bam-letter-gap,0px)*.375); }
.state .bam-statement { min-width:0; text-wrap:initial; }
.bam-statement > span { display:inline-block; white-space:nowrap; }
.hero .sub { gap:16px 24px; padding-block:16px; }
@supports (font-size:1cqw) {
  .head h1,.head h2 { font-size:clamp(30px,5cqw,64px); }
  .state h1,.state h2 { font-size:clamp(24px,3.4cqw,42px); }
  .stats b { font-size:clamp(30px,4.2cqw,58px); }
  .index .t { font-size:clamp(22px,3cqw,40px); }
}
@media (max-width:1100px) {
  .nav { grid-template-columns:1fr auto; }
  .nav ul,.nav .right { display:none; }
  .nav .menu { display:block; }
}
@media (max-width:700px) {
  .state .bam-statement { font-size:30px; font-weight:700; letter-spacing:-.03em; line-height:1.3; }
  .hero > .wrap { padding-block:16px; }
  .hero .sub { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px 12px; }
  .hero .sub > div { min-width:0; }
  .hero .sub .lab { font-size:10px; margin-bottom:4px; }
  .hero .sub b { display:block; font-size:13px; line-height:1.6; white-space:nowrap; }
  .stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stats div:nth-child(odd) { border-right:1px solid var(--hair); }
  .stats div:nth-child(even) { border-right:0; padding-left:12px; }
  .stats span { font-size:12px; }
  .grid.g4.works { grid-template-columns:repeat(2,minmax(0,1fr)); }
  /* Percentage frames also work in browsers with unreliable aspect-ratio sizing.
     Absolute images cannot stretch the grid row via their intrinsic dimensions. */
  .grid.g4.works figure { aspect-ratio:auto; height:0; padding-bottom:125%; }
  .grid.g2 > a > figure.land { aspect-ratio:auto; height:0; padding-bottom:66.666667%; }
  .full.home { position:relative; aspect-ratio:auto; height:0; padding-bottom:66.666667%; }
  .grid.g4.works figure > img,.grid.g2 > a > figure.land > img,.full.home > img {
    position:absolute; top:0; left:0; display:block; width:100%; height:100%;
    max-width:none; object-fit:cover;
  }
  .grid.g4.works a:hover img { transform:none; }
  .head { grid-template-columns:28px minmax(0,1fr); gap:10px; }
  .head h2 span { display:inline; margin:0 0 0 .35em; font-size:.65em; }
}
@media (max-width:360px) {
  .nav .brand { font-size:11px; }
}

/* Site-specific filing stays visible below every route, including IP previews. */
.bam-filing {
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:6px 20px;
  max-width:1440px;
  margin:0 auto;
  padding:18px 16px;
  border-top:1px solid var(--hair, #ddd);
  font-size:12px;
  line-height:1.8;
  letter-spacing:0;
  color:#666;
  text-align:center;
}
.bam-filing a { color:inherit; text-decoration:none; }
.bam-filing a:hover { color:#111; text-decoration:underline; }
