/* DS-11 Heritage Sign Shop -- the page compositions.
 *
 * Grids only, no floats and no absolute positioning for layout. The only
 * absolutely positioned things in this file are the hanging-board rail and
 * its two brackets, which are ornament and are aria-hidden.
 */

.grid { display: grid; gap: var(--s5); }

.ratio { margin: 0; }

/* ---------------------------------------------------------------------- *
 * the hanging board -- fingerprint row three
 *
 * A rail across the top, two brackets dropping from it, and the board hung
 * beneath. Nothing here moves: section 4 states the video rule as "No hero
 * video in this design" and section 3 names the hero as static.
 * ---------------------------------------------------------------------- */

.hero { padding-block: var(--s8) var(--band-pad); }

.hero__grid { display: grid; gap: var(--s7); }

.hero__eyebrow {
  margin: 0 0 var(--s4);
  font-size: 0.8125rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--muted);
}

/* MATERIAL DISTINCTNESS: a street elevation with sign alley and shop windows. */
@media (min-width: 1100px) {
  body.p-index main { display:grid; grid-template-columns:34% 66%; align-items:start; background:var(--cream); }
  body.p-index main > .sec { min-width:0; margin:0; }
  body.p-index main > .sec > .wrap { width:auto; max-width:none; }
  body.p-index .hero { grid-column:1/-1; min-height:100svh; }
  body.p-index .svcp { grid-column:1; grid-row:2 / span 3; position:sticky; top:var(--header-h); min-height:calc(100svh - var(--header-h)); }
  body.p-index .svcp__list { grid-template-columns:1fr; }
  body.p-index .appr { grid-column:2; min-height:55svh; }
  body.p-index .galp { grid-column:2; min-height:85svh; }
  body.p-index .stfp { grid-column:2; min-height:95svh; }
  body.p-index .revp { grid-column:1; min-height:70svh; }
  body.p-index .faqp { grid-column:2; min-height:70svh; }
  body.p-index .cta { grid-column:1/-1; min-height:48svh; display:grid; align-items:center; }
}

.hero__h1 { margin-bottom: var(--s5); }

.hero__lede {
  font-size: clamp(1.0625rem, 2.2vw, 1.375rem);
  margin-bottom: var(--s6);
}

.hero__second {
  font-weight: 700;
  font-size: 0.875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--act);
  text-decoration: underline;
  text-underline-offset: 5px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

.hero__hang { position: relative; padding-top: 30px; }

.hero__hang::before {
  content: "";
  position: absolute;
  top: 0;
  inset-inline: 0;
  height: 5px;
  background: var(--ink);
}

.hero__brackets {
  position: absolute;
  top: 0;
  inset-inline: 28px;
  height: 30px;
}

.hero__brackets::before,
.hero__brackets::after {
  content: "";
  position: absolute;
  top: 0;
  width: 5px;
  height: 30px;
  background: var(--ink);
}

.hero__brackets::before { inset-inline-start: 0; }
.hero__brackets::after  { inset-inline-end: 0; }

/* The painted frame: a 3px ink border with a gold mat inside it. */
.hero__board {
  margin: 0;
  padding: 5px;
  background: var(--hi);
  border: var(--paint);
}

.hero__board img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}

.hero__cap {
  margin: 5px 0 0;
  padding: 10px 12px;
  background: var(--ink);
  color: var(--bg);
  font-size: 0.8125rem;
  line-height: 1.35;
}

/* Section 7: 4:5 at 320, and the crop may widen to 3:4 from 390. */
@media (min-width: 390px) { .hero__board img { aspect-ratio: 3 / 4; } }
@media (min-width: 768px) { .hero__board img { aspect-ratio: 4 / 3; } }

@media (min-width: 1024px) {
  .hero__grid {
    grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);
    align-items: center;
  }
  .hero__board img { aspect-ratio: 1 / 1; }
}

/* ---------------------------------------------------------------------- *
 * page heads
 * ---------------------------------------------------------------------- */

.phead { padding-block: var(--s8) var(--s7); }
.phead::before { display: none; }

.phead__h1 { margin-bottom: var(--s5); }

.phead__lede { font-size: clamp(1.0625rem, 2vw, 1.25rem); margin: 0; }

/* ---------------------------------------------------------------------- *
 * services
 * ---------------------------------------------------------------------- */

.svcp__h { margin-bottom: var(--s4); }
.svcp__intro { max-width: var(--measure); margin-bottom: var(--s7); }

.svcp__list {
  list-style: none;
  margin: 0 0 var(--s6);
  padding: 0;
  display: grid;
  gap: var(--s5);
}

.svcp__item {
  background: var(--bg);
  border: var(--paint);
  padding: var(--s5);
  transition: transform var(--t);
}

.svcp__item:hover,
.svcp__item:focus-within { transform: rotate(-0.8deg); }

.svcp__link { text-decoration: none; color: var(--ink); }

.svcp__price { display: block; margin-bottom: var(--s3); }

.svcp__p { margin: 0; color: var(--muted); }

.svcp__all { margin: 0; font-weight: 700; }

.price { font-family: var(--font-h); font-size: 1.25rem; }
.price__q { font-family: var(--font-b); font-size: 0.8125rem;
            text-transform: uppercase; letter-spacing: 0.1em;
            color: var(--muted); }
.price__v { color: var(--act); }

@media (min-width: 768px) {
  .svcp__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

.svc__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s6); }

.svc__row {
  background: var(--panel);
  border: var(--paint);
  padding: var(--s5);
}

.svc__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s3);
  margin-bottom: var(--s4);
  padding-bottom: var(--s3);
  border-bottom: 2px solid var(--rule);
}

.svc__name { margin: 0; }

.svc__price { white-space: nowrap; }

.svc__scope { max-width: var(--measure); }

.svc__fit { margin: 0 0 var(--s4); color: var(--muted); }

.svc__fitlabel {
  display: inline-block;
  margin-inline-end: var(--s2);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink);
}

.svc__link { font-weight: 700; }

.how__head, .prin__head, .proc__head, .svcp__head { margin-bottom: var(--s6); }

.how__list, .proc__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--s6);
  counter-reset: none;
}

.how__step, .proc__step {
  border-top: 4px solid var(--ink);
  padding-top: var(--s4);
}

.how__no, .proc__no {
  display: block;
  font-family: var(--font-h);
  font-size: 1.5rem;
  color: var(--act);
  margin-bottom: var(--s2);
}

.how__h, .proc__h { margin-bottom: var(--s3); }

.how__p, .proc__p { margin: 0; }

@media (min-width: 768px) {
  .how__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .proc__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
  .proc__list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.note__h { margin-bottom: var(--s3); }
.note__p { margin: 0; max-width: var(--measure); }

/* ---------------------------------------------------------------------- *
 * approach
 * ---------------------------------------------------------------------- */

.appr__in { display: grid; gap: var(--s6); }

.appr__h { margin: 0; }

.appr__p { margin: 0; font-size: clamp(1.0625rem, 1.8vw, 1.25rem); }

@media (min-width: 1024px) {
  .appr__in { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); align-items: start; }
}

/* ---------------------------------------------------------------------- *
 * gallery
 * ---------------------------------------------------------------------- */

.galp__h { margin-bottom: var(--s4); }
.galp__intro { max-width: var(--measure); margin-bottom: var(--s7); }

.gal__list, .galp__list {
  list-style: none;
  margin: 0 0 var(--s6);
  padding: 0;
  display: grid;
  gap: var(--s5);
}

.gal__item, .galp__item { min-width: 0; }

.gal__fig, .galp__fig {
  margin: 0;
  border: var(--paint);
  background: var(--panel);
  transition: transform var(--t);
}

.gal__fig:hover, .galp__fig:hover { transform: rotate(-0.6deg); }

.gal__frame { display: block; }

.gal__fig img, .galp__fig img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-bottom: var(--paint);
}

.gal__text { padding: var(--s4); }

.gal__no {
  display: block;
  font-family: var(--font-h);
  font-size: 0.875rem;
  color: var(--act);
  margin-bottom: var(--s2);
}

.gal__cap, .galp__cap { margin: 0; font-size: 0.9375rem; }

.galp__cap { padding: var(--s4); }

.galp__all { margin: 0; font-weight: 700; }

@media (min-width: 768px) {
  .gal__list, .galp__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
  .galp__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gal__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------------------------------------------------------------------- *
 * the bench
 * ---------------------------------------------------------------------- */

.stfp__h { margin-bottom: var(--s4); }
.stfp__intro { max-width: var(--measure); margin-bottom: var(--s7); }

.stf__list, .stfp__list {
  list-style: none;
  margin: 0 0 var(--s6);
  padding: 0;
  display: grid;
  gap: var(--s5);
}

.stf__item { min-width: 0; }

.stf__card {
  height: 100%;
  background: var(--bg);
  border: var(--paint);
}

.stf__fig { margin: 0; }

.stf__fig img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-bottom: var(--paint);
}

.stf__body { padding: var(--s5); }

.stf__name { margin: 0 0 var(--s1); font-family: var(--font-h); font-size: 1.25rem; }

.stf__role {
  margin: 0 0 var(--s3);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
}

.stf__bio { margin: 0; color: var(--muted); }
.stf__links { display: flex; flex-wrap: wrap; gap: var(--s2) var(--s4); margin: var(--s4) 0 0; }
.stf__links a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; }

.stfp__all { margin: 0; font-weight: 700; }

.focus__h { margin-bottom: var(--s4); }
.focus__p { max-width: var(--measure); margin-bottom: var(--s5); }

.focus__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--s3);
}

.focus__list li {
  border-left: 5px solid var(--act);
  padding-left: var(--s4);
}

@media (min-width: 768px) {
  .stf__list, .stfp__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .focus__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
  .stf__list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .focus__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------------------------------------------------------------------- *
 * about
 * ---------------------------------------------------------------------- */

.abt__cols { display: grid; gap: var(--s6); }

.abt__p { margin: 0; }

@media (min-width: 1024px) {
  .abt__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.prin__list, .proc__list { min-width: 0; }

.prin__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--s5);
}

.prin__item {
  background: var(--bg);
  border: var(--paint);
  padding: var(--s5);
}

.prin__h { margin-bottom: var(--s3); }
.prin__p { margin: 0; }

@media (min-width: 768px) {
  .prin__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

.place__fig { margin: 0; }

.place__frame {
  display: block;
  padding: 6px;
  background: var(--hi);
  border: var(--paint);
}

.place__fig img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.place__cap {
  margin: 0;
  padding: var(--s3) var(--s4);
  background: var(--ink);
  color: var(--bg);
  font-size: 0.8125rem;
}

.limit__h { margin-bottom: var(--s4); }
.limit__p { margin: 0; max-width: var(--measure); }

/* ---------------------------------------------------------------------- *
 * reviews
 * ---------------------------------------------------------------------- *
 *
 * Six notes, each attributed and each labelled. There is no average, no star
 * summary, no recommendation percentage and no AggregateRating anywhere in
 * this unit -- not in the markup and not in the structured data.
 */

.revp__h { margin-bottom: var(--s6); }

.rev__list, .revp__list {
  list-style: none;
  margin: 0 0 var(--s6);
  padding: 0;
  display: grid;
  gap: var(--s5);
}

.rev__item, .revp__item { min-width: 0; }

.rev__card, .revp__item {
  background: var(--panel);
  border: var(--paint);
  padding: var(--s5);
  height: 100%;
}

.rev__no {
  display: block;
  font-family: var(--font-h);
  font-size: 0.875rem;
  color: var(--act);
  margin-bottom: var(--s3);
}

.rev__q, .revp__q {
  margin: 0 0 var(--s4);
  max-width: var(--measure-s);
  font-size: 1.0625rem;
}

.rev__foot { display: flex; flex-wrap: wrap; gap: var(--s2) var(--s4); align-items: baseline; }

.rev__by, .revp__by {
  margin: 0;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.rev__svc { font-size: 0.875rem; }
.rev__meta { display: flex; flex-wrap: wrap; gap: var(--s2) var(--s4); margin: var(--s4) 0; color: var(--muted); font-size: .8125rem; }
.rev__avatar { display: grid; place-items: center; width: 72px; height: 72px; margin: 0 0 var(--s4); border: 2px solid var(--ink); background: var(--board); font-family: var(--font-h); font-size: 1.125rem; }

.revp__all { margin: 0; font-weight: 700; }

@media (min-width: 768px) {
  .rev__list, .revp__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
  .rev__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .revp__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------------------------------------------------------------------- *
 * questions
 * ---------------------------------------------------------------------- */

.faqp__h { margin-bottom: var(--s6); }

.faqp__item { border-top: 4px solid var(--ink); padding-top: var(--s4); margin-bottom: var(--s5); }

.faqp__q { margin-bottom: var(--s2); }

.faqp__a { margin: 0; color: var(--muted); }

.faqp__all { margin: 0; font-weight: 700; }

.faqg__h { margin-bottom: var(--s2); }
.p-faq .faqg { padding-block: clamp(var(--s7), 7vw, var(--s9)); }

.faqg__sub {
  margin: 0 0 var(--s6);
  font-size: 0.8125rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
}

.faq__item {
  border: var(--paint);
  background: var(--bg);
  margin-bottom: var(--s4);
}

.faq__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s4);
  min-height: 56px;
  padding: var(--s3) var(--s4);
  font-family: var(--font-h);
  font-size: 1.125rem;
  cursor: pointer;
  list-style: none;
}

.faq__q::-webkit-details-marker { display: none; }

.faq__q::after {
  content: "+";
  font-family: var(--font-b);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--act);
}

.faq__item[open] .faq__q::after { content: "\2212"; }

.faq__a { padding: 0 var(--s4) var(--s4); }

.faq__a p { margin: 0; }

.faq__escape {
  margin: 0 0 var(--s5);
  padding: var(--s4);
  background: var(--board);
  border: var(--paint);
  font-weight: 700;
}

/* ---------------------------------------------------------------------- *
 * contact
 * ---------------------------------------------------------------------- */

.con__grid { display: grid; gap: var(--s7); }

.cd { background: var(--panel); border: var(--paint); padding: var(--s5); }

.cd__h { margin-bottom: var(--s4); }

.cd__addr { font-style: normal; line-height: 1.8; margin-bottom: var(--s4); }

.cd__tel, .cd__mail { display: block; font-weight: 700; }

.cd__hh { font-family: var(--font-h); font-size: 1.125rem; margin: var(--s4) 0 var(--s3); }

.cd__hours { margin: 0 0 var(--s4); }

.cd__row { display: flex; justify-content: space-between; gap: var(--s4); border-bottom: 1px solid var(--rule); padding-block: var(--s1); }

.cd__row dd { margin: 0; text-align: right; }

.cd__note { margin: 0; color: var(--muted); font-size: 0.9375rem; }

.cform { max-width: 640px; }

.cform__consent { font-size: 0.875rem; color: var(--muted); }

.cform__status { margin: var(--s4) 0 0; font-weight: 700; }

.cform__status:empty { display: none; }

.alt__in { display: grid; gap: var(--s5); }

.alt__h { margin: 0; }

.alt__p { margin: 0; max-width: var(--measure); }

@media (min-width: 1024px) {
  .con__grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: start; }
  .alt__in { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); }
}

/* ---------------------------------------------------------------------- *
 * privacy
 * ---------------------------------------------------------------------- */

.pv__date { font-size: 0.8125rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }

.pv__sec { border-top: 4px solid var(--ink); padding-top: var(--s5); margin-bottom: var(--s7); }

.pv__h { margin-bottom: var(--s4); }

.pv__body { max-width: var(--measure); }

.pv__body p { margin: 0 0 var(--s4); }

/* ---------------------------------------------------------------------- *
 * the closing sign
 * ---------------------------------------------------------------------- */

.cta__in { display: grid; gap: var(--s6); }

.cta__h { margin: 0 0 var(--s3); }

.cta__p { margin: 0; max-width: var(--measure); }

.cta__actions { display: flex; flex-wrap: wrap; gap: var(--s3); }

@media (min-width: 1024px) {
  .cta__in { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: center; }
  .cta__actions { justify-content: flex-end; }
}

/* ---------------------------------------------------------------------- *
 * 404 -- a compact motif, and no subscribe band
 * ---------------------------------------------------------------------- */

.nf { padding-block: var(--s9); }
.nf::before { display: none; }

.nf__code {
  display: inline-block;
  font-family: var(--font-h);
  font-size: clamp(3rem, 12vw, 6rem);
  line-height: 1;
  padding: var(--s4) var(--s5);
  background: var(--board);
  border: var(--paint);
  margin-bottom: var(--s6);
}

.nf__h1 { margin-bottom: var(--s4); }

.nf__p { max-width: var(--measure); margin-bottom: var(--s6); }

.nf__links { list-style: none; margin: 0 0 var(--s6); padding: 0; display: flex; flex-wrap: wrap; gap: var(--s5); }

.nf__links a { font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.875rem; }

.nf__book { margin: 0; }

/* ---------------------------------------------------------------------- *
 * the coverage board
 *
 * The plan is drawn from the district list at build time. No map API, no
 * tile server, no script, no external URL and no live location. It is
 * aria-hidden because the ordered list beside it is the same content in
 * text, and no note anywhere on the page states a response time.
 * ---------------------------------------------------------------------- */

.sa__h { margin-bottom: var(--s6); }

.sa__grid { display: grid; gap: var(--s6); align-items: start; }

.sa__svg {
  display: block;
  width: 100%;
  height: auto;
  background: var(--board);
  border: var(--paint);
}

.sa__frame { fill: none; stroke: #24201B; stroke-width: 3; }
.sa__grid-line { stroke: #B4A88E; stroke-width: 1; }
.sa__cell { fill: #F1E2BF; stroke: #24201B; stroke-width: 2; }
.sa__key { fill: #24201B; font-family:var(--catalog-font-body); font-size: 26px; }
.sa__title { fill: #24201B; font-family:var(--catalog-font-heading);
             font-size: 18px; letter-spacing: 2px; }

.sa__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s4); }

.sa__item {
  border-left: 5px solid var(--act);
  padding-left: var(--s4);
  min-width: 0;
}

.sa__no {
  display: inline-block;
  font-family: var(--font-h);
  font-size: 0.875rem;
  color: var(--act);
  margin-inline-end: var(--s2);
}

.sa__name { font-weight: 700; }

.sa__note { display: block; color: var(--muted); font-size: 0.9375rem; }

.sap__in { display: grid; gap: var(--s6); align-items: start; }

.sap__fig { margin: 0; }

.sap__frame { display: block; padding: 5px; background: var(--hi); border: var(--paint); }

.sap__fig img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.sap__cap { margin: 0; padding: var(--s3) var(--s4); background: var(--ink); color: var(--bg); font-size: 0.8125rem; }

.sap__p { margin: 0 0 var(--s4); max-width: var(--measure); }

@media (min-width: 768px) {
  .sa__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
  .sa__grid { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); }
  .sa__list { grid-template-columns: minmax(0, 1fr); }
  .sap__in { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
 
/* Material anti-duplication correction: make Home a street elevation of
   independently hung signboards instead of the shared section/card stack. */
.p-index .sec:not(.hero) { padding-block: clamp(52px, 7vw, 96px); }
.p-index .sec:not(.hero) > .wrap {
  width: auto;
  margin-inline: var(--s4);
  padding: clamp(var(--s5), 4vw, var(--s7));
  background: var(--bg);
  border: var(--paint);
  box-shadow: 10px 10px 0 var(--hi);
}
.p-index .appr > .wrap,
.p-index .revp > .wrap { background: var(--panel); }
.p-index .galp > .wrap,
.p-index .cta > .wrap { background: var(--board); }
.p-index .svcp__list { align-items: start; }
.p-index .svcp__item:nth-child(2) { margin-top: var(--s6); }
.p-index .svcp__item:nth-child(3) { margin-top: var(--s3); }
.p-index .galp__list > :first-child { transform: rotate(-0.6deg); }
.p-index .galp__list > :last-child { transform: rotate(0.7deg); }
.p-index .revp__list > :nth-child(2) { transform: translateY(var(--s5)); }
.p-index .faqp > .wrap { border-width: 5px; box-shadow: 12px 12px 0 var(--ink); }

@media (min-width: 768px) {
  .p-index .sec:not(.hero) > .wrap { margin-inline: auto; }
  .p-index .svcp > .wrap { max-width: 1180px; margin-inline-start: 7vw; }
  .p-index .appr > .wrap { max-width: 760px; margin-inline-end: 8vw; }
  .p-index .galp > .wrap { max-width: 1280px; margin-inline-start: 5vw; }
  .p-index .stfp > .wrap { max-width: 1040px; margin-inline-end: 6vw; }
  .p-index .revp > .wrap { max-width: 1160px; margin-inline-start: 9vw; }
  .p-index .faqp > .wrap { max-width: 880px; margin-inline-end: 7vw; }
  .p-index .cta > .wrap { max-width: 1080px; }
}

/* aajwebz-mailto-nowrap — an address is one token, never split across lines */
a[href^="mailto:"] {
  overflow-wrap: normal;
  word-break: normal;
  white-space: nowrap;
  display: inline-block;
  max-width: 100%;
}
@media (max-width: 380px) {
  a[href^="mailto:"] { font-size: 0.88em; }
}
/* AAJWEBZ-VISUAL-GAPS: block - items 29,2 */
/* AAJWEBZ-VISUAL-GAPS item 29: gallery 3-3-2 -> 4-4 from 1024 (design min track is minmax(0,1fr)); source assets/css/pages.css */
@media (min-width:1024px){.gal__list{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* AAJWEBZ-VISUAL-GAPS: item 2 - mailto address wraps only where its box is narrower than the address */
.ft__addr a[href^="mailto:"]{white-space:normal;overflow-wrap:break-word}
/* GAP FIX 2026-11-05 (Dean): home only, >=1100px: one full-width column of boards instead of the 34/66 split with a sticky services column, no min-heights, headings beside their cards (services 3-up, staff 2-up, reviews 3-up instead of 95px slivers), FAQ 2 columns */
@media (min-width: 1100px) {
  body.p-index main { grid-template-columns: minmax(0, 1fr); }
  body.p-index main > .sec { grid-column: 1 / -1; grid-row: auto; min-height: 0; }
  body.p-index main > .sec:not(.hero) { padding-block: 28px; }
  body.p-index main > .hero { padding-bottom: 56px; }
  body.p-index main > .cta { padding-bottom: 2.5rem; }
  body.p-index .svcp { position: relative; top: auto; }
  body.p-index .svcp__wrap, body.p-index .stfp__wrap, body.p-index .revp__wrap { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); grid-template-rows: auto auto 1fr; gap: 0 48px; align-items: start; }
  body.p-index .svcp__head, body.p-index .svcp__intro, body.p-index .svcp__all,
  body.p-index .stfp__h, body.p-index .stfp__intro, body.p-index .stfp__all,
  body.p-index .revp__h, body.p-index .revp__all { grid-column: 1; }
  body.p-index .svcp__list, body.p-index .stfp__list, body.p-index .revp__list { grid-column: 2; grid-row: 1 / span 3; margin-bottom: 0; }
  body.p-index .svcp__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body.p-index .revp__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body.p-index .faqp__wrap { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 48px; align-items: start; }
  body.p-index .faqp__h, body.p-index .faqp__all { grid-column: 1 / -1; }
}
