/* === PLATE SYSTEM =========================================================
   Images are sized to their own truth. Three treatments, chosen by the file:
   .ar     — frame takes the photo's own ratio (set --ar). Crop is near-zero.
   .inset  — odd-ratio or low-res file: contained on a tone matte, never
             upscaled past its native width (--nw). Reads as a plated object.
   .band   — hi-res ultra-wide file, full-bleed horizon strip.
   ========================================================================= */

.frame.ar,.maison-card .frame.ar,.pillar-img.frame.ar{aspect-ratio:var(--ar);height:auto}
.pillar-img.frame.ar,.maison-card .frame.ar{max-height:none}
/* stacked (1-col) pillars: a 3:2 frame at full container width is too tall —
   letterbox it. Crop stays modest and symmetric on these files. */
@media (max-width:1100px){
  .pillar-img.frame.ar{aspect-ratio:2.1;max-height:none}
  .pillar-img.frame.inset{aspect-ratio:auto;max-height:none}
}

/* --- SCRIM: readable over pale photos too --- */
.frame.has-photo .place{background:linear-gradient(0deg,rgba(10,10,10,.8) 0%,rgba(10,10,10,.34) 40%,rgba(10,10,10,0) 74%)}

/* --- CAPTION SCALED TO THE FRAME --- */
.frame.ar .place{padding:26px 26px}
.frame.ar .place-inner{font-size:clamp(26px,2.4vw,38px)}
.pillar-img.frame.ar .place{padding:18px 20px}
.pillar-img.frame.ar .place-inner{font-size:24px}
.pillar-img.frame.ar .place-inner small{font-size:11px;letter-spacing:.2em;margin-top:5px;white-space:nowrap}

/* --- CONTAINED PLATE: caption sits BELOW the image, never over it --- */
.frame.inset,.frame.inset.ar,.maison-card .frame.inset.ar{aspect-ratio:auto;display:grid;grid-template-rows:1fr auto;align-items:center;justify-items:center;padding:clamp(24px,3.4vw,44px)}
.frame.inset::before{inset:14px;border-color:rgba(255,255,255,.14)}
.frame.inset.on-cream::before{border-color:rgba(10,10,10,.14)}
.frame.inset img.sup{position:static;inset:auto;width:auto;height:auto;max-width:min(100%,var(--nw,100%));max-height:100%;object-fit:contain;z-index:1;filter:grayscale(.1) contrast(1.02);box-shadow:0 18px 44px -18px rgba(10,10,10,.5)}
.frame.inset .place{position:static;inset:auto;display:block;background:none;padding:20px 0 0;text-align:center}
.frame.inset .place-inner small{white-space:nowrap}
.frame.inset .place-inner{font-size:26px}
.frame.inset.on-cream .place{color:var(--ink)}
.frame.inset.on-cream .place-inner small{color:rgba(10,10,10,.55)}
.frame.inset.on-cream img.sup{box-shadow:0 18px 44px -20px rgba(10,10,10,.38)}
.pillar-img.frame.inset{padding:clamp(18px,2.6vw,28px)}
.pillar-img.frame.inset .place{padding-top:14px}
.pillar-img.frame.inset .place-inner{font-size:22px}

/* --- FULL-BLEED BAND --- */
.plate-band{position:relative;overflow:hidden;background:var(--ink);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.plate-band img{display:block;width:100%;height:clamp(220px,26vw,360px);object-fit:cover;object-position:center;filter:grayscale(.2) contrast(1.04)}
.plate-band .band-cap{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;z-index:3;padding:0 6vw;background:radial-gradient(120% 100% at 50% 50%,rgba(10,10,10,.9) 0%,rgba(10,10,10,.78) 55%,rgba(10,10,10,.6) 100%)}
.plate-band .band-cap .l{white-space:nowrap;font-family:'Inter',sans-serif;font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:rgba(245,241,234,.65);margin-bottom:12px}
.plate-band .band-cap h3,.plate-band .band-cap .band-h{font-family:'Italiana',serif;font-weight:400;font-size:clamp(26px,3.4vw,46px);line-height:1.08;color:var(--paper);letter-spacing:.01em;max-width:22ch}
.plate-band .band-cap h3 em,.plate-band .band-cap .band-h em{font-family:'Cormorant Garamond',serif;font-style:italic}
.plate-band::after{content:"";position:absolute;inset:16px;border:1px solid rgba(255,255,255,.14);z-index:2;pointer-events:none}

/* --- LIGHT BAND: white-ground photo, no scrim, caption in the empty air --- */
.plate-band--light{background:#f2efe9}
.plate-band--light img{object-position:80% center;filter:none}
.plate-band--light::after{border-color:rgba(10,10,10,.1)}
.plate-band--light .band-cap{background:linear-gradient(90deg,rgba(242,239,233,1) 0%,rgba(242,239,233,.97) 22%,rgba(242,239,233,.62) 38%,rgba(242,239,233,0) 52%);align-items:flex-start;justify-content:center;text-align:left;padding:0 0 0 clamp(28px,7vw,120px)}
.plate-band--light .band-cap .l{color:var(--gold)}
.plate-band--light .band-cap h3,.plate-band--light .band-cap .band-h{color:var(--ink);max-width:13ch}
.plate-band--light .band-cap .l{white-space:nowrap}
@media (max-width:820px){
  .plate-band--light .band-cap{background:linear-gradient(0deg,rgba(242,239,233,.97) 0%,rgba(242,239,233,.85) 46%,rgba(242,239,233,.2) 100%);align-items:center;text-align:center;padding:0 24px;justify-content:flex-end;padding-bottom:26px}
  .plate-band--light .band-cap h3,.plate-band--light .band-cap .band-h{max-width:22ch}
}

/* --- MIXED-HEIGHT MAISON ROWS --- */
.maison-card{align-items:center}
.maison-card .frame.ar{align-self:start}
.maison-card .frame.inset,.pillar-img.frame.inset{max-height:none;height:auto}

/* === MEASURED PLATES (set by plates.js, all pages) ====================== */
[data-plate="fill"]{aspect-ratio:var(--ar)!important;height:auto!important;max-height:none!important}

[data-plate="inset"]{aspect-ratio:auto!important;height:auto!important;max-height:none!important;display:grid!important;place-items:center;padding:clamp(18px,3vw,42px);min-height:200px}
[data-plate="inset"] > img{position:static!important;inset:auto!important;width:auto!important;height:auto!important;max-width:min(100%,var(--nw))!important;max-height:min(64vh,var(--nh))!important;object-fit:contain!important;box-shadow:0 18px 44px -20px rgba(10,10,10,.45)}
/* the frame's own hairline stays; kill the dark scrim that only made sense
   over a full-bleed crop */
[data-plate="inset"].phero-img.has-img::before{background:none}
[data-plate="inset"] .lbl,[data-plate="inset"] .cap{text-shadow:0 1px 12px rgba(10,10,10,.55)}

/* pale mattes: contained shot needs an ink hairline, not a white one */
.tape-card .pic[data-plate="inset"]{background:var(--paper-2)}
.tape-card .pic[data-plate="inset"] > img{box-shadow:0 14px 34px -18px rgba(10,10,10,.32)}

/* a failed remote image should show the frame's placeholder, not a void */
[data-plate="noimg"] > img{display:none}
[data-plate="noimg"]{min-height:180px}

/* BRIGHT BAND: photo shown at full exposure, caption sits on a soft local scrim */
.plate-band--bright img{filter:none}
.plate-band--bright .band-cap{background:radial-gradient(60% 90% at 50% 50%,rgba(10,10,10,.55) 0%,rgba(10,10,10,.25) 70%,rgba(10,10,10,0) 100%)}
.plate-band--bright .band-cap .l,.plate-band--bright .band-cap .band-h{text-shadow:0 1px 14px rgba(0,0,0,.55)}
.plate-band--bright .band-cap .l{color:#fff}
.plate-band--label .band-cap{justify-content:flex-end;padding-bottom:40px;background:linear-gradient(0deg,rgba(10,10,10,.6) 0%,rgba(10,10,10,0) 40%)}
.plate-band--label .band-cap .l{margin:0}

/* Caption on photo frames: always light on the scrim, whatever the tone class says */
.frame.has-photo:not(.inset) .place{color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.45)}
.frame.has-photo:not(.inset) .place-inner small{color:rgba(255,255,255,.88)}

/* BRANDS: every maison frame the same shape, image centred in it, caption on the same baseline */
.maison-card .frame.has-photo{aspect-ratio:4/3;height:auto;max-height:none;align-self:center}
.maison-card .frame.has-photo:not(.inset) img.sup{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.maison-card .frame.has-photo:not(.inset) .place{justify-content:flex-start;align-items:flex-end;padding:26px 28px}
.maison-card .frame.has-photo.inset{display:grid;grid-template-rows:minmax(0,1fr) auto;justify-items:center;align-items:center;padding:28px}
.maison-card .frame.has-photo.inset img.sup{position:static;width:auto;height:auto;max-width:100%;max-height:100%;min-height:0;object-fit:contain}
.maison-card .frame.has-photo.inset .place{position:static;padding:14px 0 0;text-align:center;justify-content:center;background:none}
.maison-card .frame.has-photo.inset .place-inner{font-size:24px}
@media (max-width:900px){.maison-card .frame.has-photo{aspect-ratio:4/3;max-height:none}}

.maison-card .frame[data-plate="inset"]:not(.inset){display:block!important;aspect-ratio:4/3!important;height:auto!important;padding:0!important;min-height:0!important}
.maison-card .frame[data-plate="inset"]:not(.inset)>img{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:cover!important;box-shadow:none!important}
.maison-card .frame[data-plate]:not(.inset){aspect-ratio:4/3!important;height:auto!important;max-height:none!important}
