/* Shared by main, ?opt=p and ?opt=p2. Frozen r8.4 assets stay read-only. */
.p-photo{display:block;margin:0;min-width:0}
.p-photo picture,.p-picture{display:block;width:100%;min-width:0}
.p-photo img,.p-picture img{display:block;width:100%;height:auto;max-width:100%;object-fit:cover}
.p-caption{margin-top:18px;max-width:65ch;color:#4c453e;font:400 max(calc(16*var(--u)),14px)/1.55 var(--sans)}
.sheet .sh-pics.p-single{display:block;padding:0;min-width:0}
.opt-p .idea-pair > div,.opt-p .work-grid > *,.opt-p .work-grid .stack{min-width:0}
.p-single .p-photo{width:100%}
.ex-c.p-single{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);gap:calc(64*var(--u));align-items:end}
.ex-c.p-single .p-photo img{aspect-ratio:2752/1536}
/* 19 Oct DL: no backings or motion overrides; existing hero/result/labels stay exactly as approved r8.4. */
@media(max-width:1000px){
  .opt-p .proj.ex.sheet{grid-template-columns:minmax(0,1fr);gap:24px}
  .opt-p .sheet .sh-pics,.opt-p .proj.ex.sheet .info{grid-column:1;grid-row:auto;padding:0}
  .opt-p .proj.ex.sheet .info{display:block!important}
  .opt-p .p-head{grid-template-columns:minmax(0,1fr)}
  .ex-c.p-single{grid-template-columns:minmax(0,1fr);gap:24px}
  .p-photo img{aspect-ratio:2752/1536}
}
/* 20 Oct: six towns on one desktop row; complete, equal rows on smaller screens. */
.opt-p .area ul.towns{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  max-width:calc(1120*var(--u));
  gap:calc(22*var(--u)) calc(24*var(--u));
  text-align:center;
}
.opt-p .area .towns li{white-space:nowrap}
@media(max-width:1000px){
  .opt-p .area ul.towns{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:480px){
  .opt-p .area ul.towns{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* Contact: keep the demo disclosure, result and longer action readable. */
.opt-p .form-wrap #form-demo{margin-bottom:calc(20*var(--u))}
.opt-p .form-wrap .sent .body{margin:calc(24*var(--u)) 0}
.opt-p .form-wrap .send{flex-wrap:wrap;gap:calc(20*var(--u))}
