/* GlamourStone project page ("The Stone Studio", design-direction-project/SPEC.md). Generated by tools/make_project_css.py
   from the designer's mockup.css; scoped to main.gpj (+ the .plb lightbox). Shared system: home.css (.gsx / gx-*). */
.gpj{--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:128px;--s-11:160px;
  --section:clamp(64px,9vw,160px);--wrap:1320px;--margin:clamp(20px,5vw,80px);--gutter:clamp(16px,2vw,24px);--hdr:var(--site-hdr,64px);--r:2px;
  --gs-text:#161514;--gs-text-muted:#5f5850;--gs-text-on-dark:#f6f1e8;--fs-label:.75rem;--fs-small:.875rem;--fs-h3:clamp(1.5rem,1.3rem + .6vw,1.875rem)}
@media(min-width:1024px){.gpj{--hdr:var(--site-hdr,80px)}}
.gpj .psec{padding:var(--section) 0}
.gpj .sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.gpj .gx-label .n{margin-right:2px}
.gpj img{max-width:100%;display:block}
.plb{--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--ease:cubic-bezier(.2,.7,.2,1);--gs-charcoal:#161514;--gs-ivory:#f6f1e8;--gs-bronze-hover:#d4bc94;--gs-sans:"Jost","Avenir Next","Segoe UI",system-ui,sans-serif}
.gpj .phero .gx-label,.gpj .mp .gx-label,.gpj .gx-dark .gx-label{color:var(--gs-bronze-hover)}
.gpj .phero .gx-lead{color:var(--gs-muted-on-dark)}
.gpj .phero .gx-btn--secondary{color:var(--gs-ivory);border-color:#6b645b}
.gpj .phero .gx-btn--secondary:hover{background:var(--gs-ivory);color:var(--gs-charcoal);border-color:var(--gs-ivory)}
.gpj .phero :focus-visible,.gpj .mp :focus-visible{outline-color:var(--gs-bronze-hover)}
.plb h2{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.gpj{
  --fs-display-p:clamp(2.5rem,1.55rem + 3.3vw,4.75rem);  /* 40 → 76: project H1 (longer than the home H1) */
  --fs-prose:clamp(1.0625rem,1rem + .2vw,1.125rem);      /* 17 → 18 body copy in editorial blocks */
  --fs-intro:clamp(1.375rem,1.2rem + .6vw,1.75rem);      /* 22 → 28 serif opening paragraph */
  --measure:64ch;                                         /* body measure; 52ch for section intros */
  --pg-gap:clamp(10px,1.4vw,20px);                        /* gap inside a photo row */
  --pg-row:clamp(28px,3.4vw,56px);                        /* space between photo rows */
}
.gpj .gx-btn--lg{min-height:60px;padding:0 18px;font-size:13px;letter-spacing:.1em}
@media(min-width:560px){.gpj .gx-btn--lg{padding:0 30px;font-size:13.5px;letter-spacing:.16em}}
@media(min-width:1024px){.gpj .gx-btn--lg{padding:0 34px}}

/* ---------- 0 · HERO ---------- */
.gpj .phero{position:relative;background:var(--gs-charcoal);color:var(--gs-text-on-dark);overflow:hidden;isolation:isolate}
.gpj .phero-media{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--gs-charcoal-2)}
.gpj .phero-img{display:block;position:absolute;inset:0;cursor:zoom-in}
.gpj .phero-img img{width:100%;height:100%;object-fit:cover;object-position:46% 60%}
.gpj .phero-media::after{content:"";position:absolute;inset:auto 0 0 0;height:34%;background:linear-gradient(to bottom,transparent,var(--gs-charcoal));pointer-events:none}
.gpj .phero-all{position:absolute;z-index:2;right:12px;bottom:14px;display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border:1px solid rgba(246,241,232,.55);border-radius:999px;
  background:rgba(22,21,20,.72);color:var(--gs-ivory);font:500 11px/1 var(--gs-sans);letter-spacing:.16em;text-transform:uppercase;cursor:pointer;backdrop-filter:blur(6px)}
.gpj .phero-all svg{width:14px;height:14px;color:var(--gs-bronze-hover)}
.gpj .phero-all:hover{border-color:var(--gs-bronze-hover)}
.gpj .phero-copy{position:relative;padding:var(--s-3) var(--margin) var(--s-7)}
.gpj .pcrumbs ol{list-style:none;margin:0 0 var(--s-4);padding:0;display:flex;flex-wrap:wrap;gap:4px 0;font:400 13px/1.4 var(--gs-sans);color:var(--gs-muted-on-dark)}
.gpj .pcrumbs li+li::before{content:"/";margin:0 10px;color:#6b645b}
.gpj .pcrumbs a{text-decoration:none}.gpj .pcrumbs a:hover{color:var(--gs-ivory);text-decoration:underline}
.gpj .pcrumbs [aria-current]{color:#e6dfd3}
.gpj .phero .gx-label{margin-bottom:var(--s-3);font-size:11px;letter-spacing:.2em}
.gpj .phero h1{font-size:var(--fs-display-p);font-weight:400;line-height:1;letter-spacing:-.02em;color:var(--gs-ivory);margin:0 0 var(--s-4)}
.gpj .phero h1 .ln{display:block}
.gpj .phero h1 em{font-style:italic;color:var(--gs-bronze-hover)}
.gpj .phero .gx-lead{font-size:1rem;line-height:1.55;margin-bottom:var(--s-5);max-width:46ch}
.gpj .phero-alt{margin:var(--s-3) 0 0;color:var(--gs-muted-on-dark)}
.gpj .jump{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-5);margin-top:var(--s-6);padding-top:var(--s-4);border-top:1px solid var(--gs-line-dark)}
.gpj .jump-h{width:100%;font:500 11px/1.4 var(--gs-sans);letter-spacing:.2em;text-transform:uppercase;color:var(--gs-muted-on-dark)}
.gpj .jump a{display:inline-flex;align-items:baseline;gap:6px;min-height:44px;align-items:center;font:500 12px/1 var(--gs-sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:#e6dfd3;border-bottom:1px solid transparent}
.gpj .jump a:hover{color:#fff;border-color:var(--gs-bronze)}
.gpj .jump i{font:500 10.5px/1 var(--gs-sans);font-style:normal;letter-spacing:.08em;color:var(--gs-bronze-hover);border:1px solid var(--gs-line-dark);border-radius:999px;padding:3px 7px}
.gpj .phero-mono{position:absolute;z-index:-1;right:-70px;bottom:-60px;width:300px;opacity:.05;color:var(--gs-bronze)}
@media(min-width:720px){.gpj .phero-media{aspect-ratio:2/1}}
@media(min-width:1024px){
  .gpj .phero{display:grid;grid-template-columns:repeat(12,1fr);column-gap:var(--gutter);min-height:min(calc(100svh - var(--hdr) - 28px),860px);
         padding-left:max(var(--margin),calc((100vw - var(--wrap))/2))}
  .gpj .phero-copy{grid-column:1 / span 6;grid-row:1;align-self:center;padding:var(--s-8) var(--s-5) var(--s-7) 0}
  .gpj .phero-media{grid-column:7 / -1;grid-row:1;aspect-ratio:auto;min-height:100%}
  .gpj .phero-media::after{inset:0 auto 0 0;width:18%;height:auto;background:linear-gradient(to right,var(--gs-charcoal),transparent)}
  .gpj .phero-media::before{content:"";position:absolute;z-index:1;left:0;top:var(--s-8);bottom:var(--s-8);width:1px;background:var(--gs-bronze);opacity:.7}
  .gpj .phero-img img{object-position:44% 55%}
  .gpj .phero-all{right:var(--s-6);top:var(--s-6);bottom:auto;min-height:44px;padding:0 18px}
  .gpj .phero .gx-label{font-size:var(--fs-label);letter-spacing:.24em;margin-bottom:var(--s-4)}
  .gpj .phero .gx-lead{font-size:var(--fs-lead);line-height:1.6;margin-bottom:var(--s-6)}
  .gpj .phero h1{margin-bottom:var(--s-5)}
  .gpj .jump{margin-top:var(--s-7)}
  .gpj .jump-h{width:auto;margin-right:var(--s-2)}
  .gpj .phero-mono{left:30%;right:auto;bottom:-90px;width:520px}
}

/* ---------- 1 · OVERVIEW + PROJECT DETAILS (spec sheet) ---------- */
.gpj .ov-grid{display:grid;gap:var(--s-8)}
.gpj .ov h2{max-width:18ch;margin-bottom:var(--s-6)}
.gpj .ov h2 em{font-style:italic;color:var(--gs-bronze-ink)}
.gpj .pprose{max-width:var(--measure);font-size:var(--fs-prose);line-height:1.7;color:#2f2b27}
.gpj .pprose p:first-child{font:400 var(--fs-intro)/1.4 var(--gs-serif);color:var(--gs-charcoal);margin-bottom:var(--s-5)}
.gpj .pprose p:last-child{margin-bottom:0}
.gpj .pprose a,.gpj .pps-intro a,.gpj .mp-text a{color:var(--gs-charcoal);text-decoration-color:var(--gs-bronze)}
.gpj .spec{align-self:start;background:var(--gs-paper);border-top:2px solid var(--gs-bronze);padding:var(--s-6) var(--s-5) var(--s-5)}
.gpj .spec-h{font:500 12px/1.4 var(--gs-sans);letter-spacing:.24em;text-transform:uppercase;color:var(--gs-bronze-ink);margin:0 0 var(--s-4)}
.gpj .spec dl{margin:0}
.gpj .spec dl>div{display:grid;grid-template-columns:112px 1fr;gap:var(--s-4);padding:var(--s-3) 0;border-bottom:1px solid var(--gs-line)}
.gpj .spec dl>div:last-child{border-bottom:0}
.gpj .spec dt{font:500 11px/1.9 var(--gs-sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gs-text-muted)}
.gpj .spec dd{margin:0;font-size:15px;line-height:1.55;color:var(--gs-charcoal)}
@media(min-width:1024px){
  .gpj .ov-grid{grid-template-columns:repeat(12,1fr);gap:var(--gutter)}
  .gpj .ov-copy{grid-column:1 / span 7}
  .gpj .spec{grid-column:9 / span 4;position:sticky;top:calc(var(--hdr) + var(--s-5));padding:var(--s-6)}
}

/* ---------- PHOTO SECTIONS (Kitchen / Vanities / Fireplace) ---------- */
.gpj .pps{padding:clamp(var(--s-7),6vw,var(--s-10)) 0}
.gpj .pps + .pps,.gpj .ov + .pps{padding-top:clamp(var(--s-6),4vw,var(--s-8))}
.gpj .pps-head{display:grid;gap:var(--s-4);margin-bottom:clamp(var(--s-6),4vw,var(--s-7))}
.gpj .pps-head .gx-label{margin-bottom:var(--s-3)}
.gpj .pps-intro{margin:0;max-width:52ch;font-size:var(--fs-prose);line-height:1.65;color:var(--gs-text-muted)}
@media(min-width:1024px){.gpj .pps-head{grid-template-columns:5fr 7fr;align-items:end;gap:var(--s-8)}.gpj .pps-intro{justify-self:end}}

.gpj .pg{margin:0}
.gpj .pg + .pg,.gpj .pg--full + .wrap .pg{margin-top:var(--pg-row)}
.gpj .pg-items{display:flex;flex-direction:column;gap:var(--pg-gap)}
.gpj .pg-item{position:relative;display:block;overflow:hidden;aspect-ratio:var(--r,1.5);background:var(--gs-stone-2);cursor:zoom-in}
.gpj .pg-item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--fx,50% 50%);transition:transform .9s var(--ease)}
.gpj .pg-item:hover img{transform:scale(1.025)}
.gpj .pg-item:focus-visible{outline-offset:4px}
.gpj .pg-n{position:absolute;left:10px;bottom:10px;padding:5px 8px;background:rgba(22,21,20,.74);color:var(--gs-ivory);font:500 10.5px/1 var(--gs-sans);letter-spacing:.16em;font-variant-numeric:tabular-nums}
.gpj .pg-cap{display:flex;flex-wrap:wrap;gap:6px var(--s-6);margin-top:var(--s-3);font-size:13.5px;line-height:1.45;color:var(--gs-text-muted)}
.gpj .pg-cap b{font:500 10.5px/1 var(--gs-sans);letter-spacing:.16em;color:var(--gs-bronze-ink);margin-right:10px}
/* full-bleed: edge to edge on every size, 4:3 on phones, 16:9 (capped) from 720px */
.gpj .pg--full .pg-item{aspect-ratio:4/3}
.gpj .pg--full .pg-n{left:var(--margin)}
@media(min-width:720px){
  .gpj .pg--pair .pg-items{flex-direction:row}
  .gpj .pg--pair .pg-item{flex:var(--r) 1 0%;min-width:0}               /* justified row: equal heights, no extra crop */
  .gpj .pg--trio .pg-items{display:grid;grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr}
  .gpj .pg--trio .pg-big{grid-row:1 / span 2;aspect-ratio:3/2}
  .gpj .pg--trio .pg-item:not(.pg-big){aspect-ratio:auto;min-height:0}
  .gpj .pg--full .pg-item{aspect-ratio:16/9;max-height:min(84vh,860px);width:100%}
  .gpj .pg-n{left:14px;bottom:14px}
  .gpj .pg--full .pg-n{left:max(var(--margin),calc((100vw - var(--wrap))/2))}
}
/* phones: a portrait-cropped tile keeps 4:5 (it was chosen for it); everything else shows at its native 3:2 */

/* ---------- MID-PAGE CTA ---------- */
.gpj .pcta{background:var(--gs-stone-2);border-top:1px solid var(--gs-line);border-bottom:1px solid var(--gs-line);padding:clamp(var(--s-7),6vw,var(--s-9)) 0}
.gpj .pcta-grid{display:grid;gap:var(--s-6);align-items:center}
.gpj .pcta h2{font-size:clamp(2rem,1.4rem + 2.4vw,3.5rem);max-width:16ch}
.gpj .pcta-sub{margin:var(--s-4) 0 0;max-width:46ch;color:#463f38;font-size:var(--fs-prose)}
.gpj .pcta-act{display:grid;gap:var(--s-4)}
.gpj .pcta-sec{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3) var(--s-5)}
.gpj .pcta-sec .gx-btn{flex:1 1 100%}
@media(min-width:560px){.gpj .pcta-sec .gx-btn{flex:0 0 auto}}
.gpj .pcta-note{margin:0;font:500 11.5px/1.4 var(--gs-sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gs-text-muted)}
@media(min-width:1024px){.gpj .pcta-grid{grid-template-columns:7fr 5fr;gap:var(--s-9)}}

/* ---------- MATERIALS & PROCESS (dark band) ---------- */
.gpj .mp{background:var(--gs-charcoal);color:var(--gs-text-on-dark)}
.gpj .mp h2{color:var(--gs-ivory);max-width:16ch;margin-bottom:var(--s-5)}
.gpj .mp .gx-label{color:var(--gs-bronze-hover)}
.gpj .mp-text{margin:0;max-width:46ch;color:#d9d1c4;font-size:var(--fs-prose);line-height:1.7}
.gpj .mp-grid{display:grid;gap:var(--s-7)}
.gpj .mp-steps{list-style:none;margin:0;padding:0;display:grid;gap:0;counter-reset:s}
.gpj .mp-steps li{position:relative;padding:var(--s-4) 0 var(--s-4) 52px;border-top:1px solid var(--gs-line-dark)}
.gpj .mp-steps li::before{counter-increment:s;content:"0" counter(s);position:absolute;left:0;top:var(--s-4);font:400 28px/1 var(--gs-serif);color:var(--gs-bronze-hover)}
.gpj .mp-steps b{display:block;font:500 clamp(1.25rem,1.1rem + .5vw,1.5rem)/1.2 var(--gs-serif);color:var(--gs-ivory);margin-bottom:4px}
.gpj .mp-steps span{font-size:15px;color:var(--gs-muted-on-dark)}
.gpj .mp a{color:var(--gs-ivory)}
@media(min-width:1024px){.gpj .mp-grid{grid-template-columns:5fr 7fr;gap:var(--s-9);align-items:start}.gpj .mp-steps{grid-template-columns:1fr 1fr;column-gap:var(--s-7)}}

/* ---------- FAQ + NEARBY AREAS ---------- */
.gpj .pfaq-grid{display:grid;gap:var(--s-8)}
.gpj .pfaq-grid>div>h2{margin-bottom:var(--s-6)}
.gpj .gx-faq summary{min-height:44px}
.gpj .near{align-self:start;border-top:2px solid var(--gs-bronze);padding-top:var(--s-5)}
.gpj .near-h{font-size:clamp(1.5rem,1.3rem + .6vw,1.875rem);line-height:1.15;margin-bottom:var(--s-3)}
.gpj .near p{color:var(--gs-text-muted);font-size:15.5px}
.gpj .pills{list-style:none;margin:var(--s-5) 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s-2)}
.gpj .pills a,.gpj .pills span{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border-radius:999px;font:500 14px/1 var(--gs-sans);letter-spacing:.02em;text-decoration:none}
.gpj .pills a{border:1px solid #786c5c;color:var(--gs-charcoal);background:var(--gs-paper)}
.gpj .pills a:hover{background:var(--gs-charcoal);border-color:var(--gs-charcoal);color:var(--gs-ivory)}
.gpj .pills span{border:1px dashed #b7aa96;color:#4f4842}
.gpj .near-all{display:inline-flex;align-items:center;gap:10px;min-height:44px;font:500 12.5px/1 var(--gs-sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--gs-charcoal);border-bottom:1px solid var(--gs-bronze)}
.gpj .near-all svg{width:16px;height:16px;transition:transform .25s var(--ease)}
.gpj .near-all:hover svg{transform:translateX(3px)}
@media(min-width:1024px){.gpj .pfaq-grid{grid-template-columns:7fr 4fr;gap:var(--s-10)}}

/* ---------- RELATED PROJECTS ---------- */
.gpj .rel-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:var(--s-4);margin-bottom:var(--s-6)}
.gpj .rel-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-6) var(--gutter)}
.gpj .rel-card{display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit}
.gpj .rel-img{display:block;aspect-ratio:3/2;overflow:hidden;background:var(--gs-stone-2);margin-bottom:var(--s-4)}
.gpj .rel-img img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease)}
.gpj .rel-card:hover .rel-img img{transform:scale(1.03)}
.gpj .rel-meta{font:500 11px/1.4 var(--gs-sans);letter-spacing:.2em;text-transform:uppercase;color:var(--gs-bronze-ink)}
.gpj .rel-card h3{margin:6px 0 var(--s-3)}
.gpj .rel-go{margin-top:auto;display:inline-flex;align-items:center;gap:8px;font:500 12px/1 var(--gs-sans);letter-spacing:.16em;text-transform:uppercase}
.gpj .rel-go svg{width:16px;height:16px;color:var(--gs-bronze-ink);transition:transform .25s var(--ease)}
.gpj .rel-card:hover .rel-go svg{transform:translateX(3px)}
.gpj .rel-card--cta{position:relative;overflow:hidden;isolation:isolate;background:var(--gs-charcoal);color:var(--gs-ivory);padding:var(--s-6);min-height:240px;justify-content:flex-end}
.gpj .rel-card--cta .rel-meta{color:var(--gs-bronze-hover)}
.gpj .rel-card--cta h3{color:var(--gs-ivory);max-width:14ch}
.gpj .rel-card--cta .rel-go{margin-top:var(--s-4)}
.gpj .rel-card--cta .rel-go svg{color:var(--gs-bronze-hover)}
.gpj .rel-mono{position:absolute;z-index:-1;right:-30px;top:-20px;width:200px;opacity:.08;color:var(--gs-bronze)}
@media(min-width:720px){.gpj .rel-list{grid-template-columns:1fr 1fr}.gpj .rel-more{grid-column:1 / -1}}
@media(min-width:1024px){.gpj .rel-list{grid-template-columns:repeat(3,1fr)}.gpj .rel-more{grid-column:auto}.gpj .rel-card--cta{min-height:0;height:100%}}

/* ---------- CLOSING ESTIMATE BAND ---------- */
.gpj .est-facts{list-style:none;margin:var(--s-5) 0 0;padding:0;display:grid;gap:var(--s-2)}
.gpj .est-facts li{display:flex;gap:12px;align-items:flex-start;color:#e0d8cb;font-size:15.5px}
.gpj .est-facts li::before{content:"";flex:none;width:7px;height:7px;margin-top:9px;border:1px solid var(--gs-bronze);transform:rotate(45deg)}

/* ---------- LIGHTBOX ---------- */
.plb{position:fixed;inset:0;z-index:100;display:grid;grid-template-rows:auto minmax(0,1fr);background:var(--gs-charcoal);color:var(--gs-ivory);
    opacity:0;transition:opacity .25s var(--ease);touch-action:pan-y;overscroll-behavior:contain}
.plb.is-in{opacity:1}
.plb[hidden]{display:none}
.plb :focus-visible{outline-color:var(--gs-bronze-hover)}
.plb-top{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-3) var(--s-4) var(--s-3) var(--s-5)}
.plb-count{margin:0;display:flex;gap:var(--s-3);align-items:baseline;font:500 12px/1 var(--gs-sans);letter-spacing:.2em;text-transform:uppercase;font-variant-numeric:tabular-nums}
.plb-sec{color:var(--gs-bronze-hover)}
.plb-num{color:var(--gs-ivory)}
.plb-stage{margin:0;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 0 calc(var(--s-8) + env(safe-area-inset-bottom))}
.plb-frame{flex:1 1 auto;min-height:0;width:100%;display:flex;align-items:center;justify-content:center}
.plb-img{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100svh - 190px);object-fit:contain;background:#0f0e0d}
.plb-cap{margin:var(--s-4) var(--s-5) 0;max-width:62ch;text-align:center;font-size:14.5px;line-height:1.5;color:#d9d1c4}
.plb-btn{width:48px;height:48px;display:grid;place-items:center;border:1px solid #5a544c;border-radius:999px;background:rgba(22,21,20,.7);color:var(--gs-ivory);cursor:pointer;transition:border-color .2s var(--ease)}
.plb-btn:hover{border-color:var(--gs-bronze-hover)}
.plb-btn svg{width:20px;height:20px}
.plb-prev,.plb-next{position:absolute;bottom:calc(var(--s-3) + env(safe-area-inset-bottom))}
.plb-prev{left:var(--s-4)}.plb-next{right:var(--s-4)}
@media(min-width:1024px){
  .plb-top{padding:var(--s-5) var(--s-6) var(--s-4) var(--s-7)}
  .plb-stage{padding:0 104px var(--s-6)}
  .plb-img{max-height:calc(100svh - 200px)}
  .plb-prev,.plb-next{top:50%;bottom:auto;transform:translateY(-50%);width:56px;height:56px}
  .plb-prev{left:var(--s-6)}.plb-next{right:var(--s-6)}
}
html.plb-open{overflow:hidden}
html.plb-open .actionbar,html.plb-open .chat-fab{display:none}

/* ---------- Motion ---------- */
.gpj .js .reveal{opacity:0;transform:translateY(14px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.gpj .js .reveal.in{opacity:1;transform:none}
@keyframes settle{from{transform:scale(1.045)}to{transform:scale(1)}}
.gpj .phero-img img{animation:settle 1.6s var(--ease) both}
@media (prefers-reduced-motion:reduce){
  .gpj .gpj *,.plb{animation:none!important;transition:none!important}
  .gpj .js .reveal{opacity:1;transform:none}
}

/* Row types defined in SPEC §3.2 that the Porter Ranch data does not trigger (kept here for the build) */
@media(min-width:720px){
  .gpj .pg--inset .pg-items{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter)}
  .gpj .pg--inset .pg-item{grid-column:1 / span 10;aspect-ratio:3/2}
  .gpj .pg--inset .pg-cap{grid-column:11 / span 2;align-self:end;flex-direction:column}
  .gpj .pg--solo-p{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter);align-items:end}
  .gpj .pg--solo-p .pg-items{grid-column:1 / span 6}
  .gpj .pg--solo-p .pg-item{aspect-ratio:4/5}
  .gpj .pg--solo-p .pps-intro{grid-column:8 / span 5}
  .gpj .pg--pp .pg-items{padding:0 calc(100% / 12)}
}
