/* Past Projects page (Tom & Son). Uses the site tokens from ds.css. */
.pp{--pp-gap:clamp(18px,2.2vw,34px)}
.pp .btn{width:auto}
.pp .btn--call{background:var(--terracotta-t);color:var(--paper)}
.pp .btn--call:hover{background:var(--ink)}
.pp-act{display:flex;flex-wrap:wrap;align-items:center;gap:18px 30px;margin-top:clamp(26px,3vw,40px)}
.pp-em{color:var(--terracotta-t)}
.pp h1 em,.pp h2 em{color:var(--terracotta-t)}
.pp .dark h2 em,.pp .pp-dark h2 em{color:var(--ochre-l)}

/* ---------- photo slots ---------- */
.pp-ph{position:relative;margin:0;border-radius:var(--radius);overflow:hidden;background:var(--paper-3);aspect-ratio:var(--r,3/2)}
.pp-ph.r-43{--r:4/3}.pp-ph.r-32{--r:3/2}.pp-ph.r-45{--r:4/5}.pp-ph.r-34{--r:3/4}.pp-ph.r-11{--r:1/1}.pp-ph.r-23{--r:2/3}.pp-ph.r-169{--r:16/9}.pp-ph.r-219{--r:21/9}
.pp-ph>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in;transition:transform 1.2s var(--slow)}
.pp-ph:hover>img{transform:scale(1.025)}
.pp-slot{position:absolute;inset:10px;border:1.5px dashed var(--bronze);border-radius:2px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:14px;text-align:center;color:var(--bronze-t);
  background:repeating-linear-gradient(135deg,rgba(176,112,47,.07) 0 12px,transparent 12px 24px)}
.pp-slot svg{width:30px;height:30px;stroke:currentColor;fill:none;stroke-width:1.4}
.pp-slot b{font:600 11px/1.3 "Manrope",sans-serif;letter-spacing:.24em;text-transform:uppercase}
.pp-slot span{font:400 15px/1.35 "Fraunces",Georgia,serif;color:var(--ink);max-width:30ch}
.pp-slot small{font:500 11px/1.4 "Manrope",sans-serif;letter-spacing:.06em;color:var(--ink-mute)}
.pp-ph.has .pp-slot{display:none}
.pp-ph figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 12px;background:linear-gradient(transparent,rgba(20,24,28,.62));color:#fff;font:500 11px/1.5 "Manrope",sans-serif;letter-spacing:.16em;text-transform:uppercase;pointer-events:none;opacity:0;transition:opacity .5s var(--ease)}
.pp-ph.has figcaption{opacity:1}
.todo{display:inline-block;font:600 11px/1.4 "Manrope",sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--bronze-t);border:1px dashed var(--bronze);background:rgba(240,220,187,.35);padding:5px 10px;border-radius:2px}

/* ---------- hero ---------- */
.pp-hero{padding:calc(96px + clamp(40px,6vw,96px)) 0 clamp(40px,5vw,72px)}
.pp-hero .wrap{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:clamp(34px,5.4vw,96px);align-items:center}
.pp-hero h1{font-size:clamp(42px,6vw,88px);max-width:12ch}
.pp-hero .lede{margin-top:clamp(22px,2.4vw,34px);max-width:54ch}
.pp-hero .pp-ph{box-shadow:0 30px 60px -34px rgba(20,24,28,.5)}
.pp-eyebrow{color:var(--terracotta-t);margin-bottom:clamp(18px,2vw,28px)}
.pp-stats{list-style:none;width:100%;display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:clamp(40px,5vw,72px);border-top:1px solid var(--rule)}
.pp-stats li{padding:22px 22px 6px 0}
.pp-stats li+li{padding-left:22px;border-left:1px solid var(--rule)}
.pp-stats b{display:block;font:300 clamp(34px,4.2vw,58px)/1 "Fraunces",Georgia,serif;color:var(--ink);letter-spacing:-.03em}
.pp-stats b em{color:var(--terracotta-t);font-size:.55em;letter-spacing:0}
.pp-stats span{display:block;margin-top:10px;font:600 11px/1.5 "Manrope",sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute)}

/* ---------- story ---------- */
.pp-story{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);gap:clamp(36px,6vw,110px);align-items:start;margin-top:clamp(30px,4vw,56px)}
.pp-chap{display:grid;grid-template-columns:68px 1fr;gap:0 clamp(14px,2vw,28px);padding-bottom:clamp(30px,4vw,52px);position:relative}
.pp-chap::before{content:"";position:absolute;left:33px;top:46px;bottom:6px;width:1px;background:var(--rule)}
.pp-chap:last-child::before{display:none}
.pp-chap-n{width:48px;height:48px;border-radius:50%;border:1px solid var(--terracotta-t);display:grid;place-items:center;font:300 20px/1 "Fraunces",serif;color:var(--terracotta-t);background:var(--paper);margin-left:10px}
.pp-chap h3{margin-bottom:10px}
.pp-chap p{font-size:clamp(17px,1.25vw,19px);line-height:1.7;max-width:60ch}
.pp-chap .meta{color:var(--bronze-t);margin-bottom:8px}
.pp-chap a.pp-jump{color:var(--terracotta-t);text-underline-offset:4px}
.pp-side{position:static;display:grid;gap:var(--pp-gap)}
.pp-side img{display:block;width:100%;height:auto;border-radius:var(--radius)}
.pp-side figcaption{margin-top:10px;font:600 11px/1.6 "Manrope",sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-mute)}
.pp-side .pp-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--pp-gap)}

/* ---------- father & son ---------- */
.pp-duo{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(34px,6vw,100px);align-items:center}
.pp-duo .pp-ph{box-shadow:0 30px 60px -36px rgba(20,24,28,.5)}
.pp-quote{margin:clamp(22px,2.4vw,34px) 0 0;border-left:3px solid var(--terracotta-t);padding:2px 0 2px clamp(18px,2vw,28px);font:300 clamp(21px,2.1vw,28px)/1.4 "Fraunces",Georgia,serif;color:var(--ink);max-width:34ch}
.pp-gives{list-style:none;margin:clamp(26px,3vw,40px) 0 0;display:grid;gap:0}
.pp-gives li{display:grid;grid-template-columns:34px 1fr;gap:14px;padding:16px 0;border-top:1px solid var(--rule);font-size:17px;line-height:1.55}
.pp-gives li:last-child{border-bottom:1px solid var(--rule)}
.pp-gives svg{width:22px;height:22px;stroke:var(--terracotta-t);fill:none;stroke-width:1.6;margin-top:3px}
.pp-gives b{color:var(--ink);font-weight:600}

/* ---------- pledge ---------- */
.pp-pledge{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--pp-gap);margin-top:clamp(28px,3vw,44px);counter-reset:p}
.pp-pledge li{counter-increment:p;border-top:3px solid var(--terracotta-t);padding-top:16px}
.pp-pledge li::before{content:"0" counter(p);display:block;font:700 12px/1 "Manrope",sans-serif;letter-spacing:.2em;color:var(--ink-mute);margin-bottom:12px}
.pp-pledge b{display:block;font:300 clamp(21px,1.8vw,26px)/1.2 "Fraunces",serif;color:var(--ink)}
.pp-pledge span{display:block;margin-top:10px;font-size:16px;line-height:1.6}

/* ---------- town nav ---------- */
.pp-tn{position:sticky;top:68px;z-index:800;background:rgba(253,250,243,.92);backdrop-filter:blur(14px);border-bottom:1px solid var(--rule);border-top:1px solid var(--rule)}
.pp-tn .wrap{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;align-items:center;min-height:58px}
.pp-tn .wrap::-webkit-scrollbar{display:none}
.pp-tn .meta{color:var(--ink-mute);white-space:nowrap;margin-right:14px}
.pp-tn a{flex:0 0 auto;display:inline-flex;align-items:center;min-height:44px;padding:0 16px;text-decoration:none;color:var(--ink);font:400 clamp(17px,1.4vw,20px)/1 "Fraunces",Georgia,serif;border-bottom:2px solid transparent;transition:color .3s,border-color .3s}
.pp-tn a:hover,.pp-tn a.on{color:var(--terracotta-t);border-color:var(--terracotta-t)}
.pp-tn a.call{margin-left:auto;font:600 12px/1 "Manrope",sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--paper);background:var(--terracotta-t);border-radius:2px;border:0;padding:0 18px;white-space:nowrap}
.pp-tn a.call:hover{background:var(--ink);color:var(--paper)}

/* ---------- town sections ---------- */
.pp-town{padding:clamp(64px,9vw,130px) 0;scroll-margin-top:120px}
.pp-town+.pp-town{border-top:1px solid var(--rule)}
.pp-town:nth-of-type(even){background:var(--paper-2)}
.pp-town-h{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(24px,5vw,90px);align-items:end}
.pp-town-h h2{font-size:clamp(46px,7vw,104px)}
.pp-town-h p{font-size:clamp(17px,1.3vw,20px);line-height:1.65;max-width:56ch}
.pp-town-h .meta{color:var(--bronze-t);display:block;margin-bottom:16px}
.pp-proj{margin-top:clamp(40px,5vw,72px)}
.pp-proj+.pp-proj{margin-top:clamp(56px,7vw,100px)}
.pp-proj-h{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:12px clamp(24px,5vw,90px);align-items:start;padding-top:18px;border-top:1px solid var(--ink)}
.pp-proj-h h3{font-size:clamp(28px,3.2vw,46px)}
.pp-proj-h p{font-size:17px;line-height:1.65;max-width:60ch}
.pp-proj-h .meta{color:var(--ink-mute);display:block;margin-bottom:10px}
.pp-proj-h .todo{margin-top:12px}
.pp-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--pp-gap);margin-top:clamp(22px,2.6vw,36px)}
.pp-grid>.a{grid-column:span 7}.pp-grid>.b{grid-column:span 5}.pp-grid>.c{grid-column:span 4}.pp-grid>.d{grid-column:span 8}.pp-grid>.e{grid-column:span 6}.pp-grid>.f{grid-column:span 12}
.pp-grid .pp-ph{aspect-ratio:auto;width:100%;height:clamp(260px,31vw,450px)}
.pp-more{margin-top:clamp(26px,3vw,40px)}

/* ---------- museum feature ---------- */
.pp-dark{background:linear-gradient(168deg,#2a3a33 0,#1b2b33 100%);border-top:2px solid var(--ochre);color:rgba(250,247,241,.78);padding:clamp(72px,10vw,150px) 0;scroll-margin-top:120px}
.pp-dark h2,.pp-dark h3{color:var(--paper)}
.pp-dark .meta{color:var(--ochre-l)}
.pp-dark .pp-ph{background:#2c3f48;box-shadow:0 30px 70px -30px rgba(0,0,0,.65)}
.pp-dark .pp-slot{border-color:var(--ochre-l);color:var(--ochre-l);background:repeating-linear-gradient(135deg,rgba(240,193,115,.07) 0 12px,transparent 12px 24px)}
.pp-dark .pp-slot span{color:var(--paper)}.pp-dark .pp-slot small{color:rgba(250,247,241,.6)}
.pp-dark .todo{color:var(--ochre-l);border-color:var(--ochre-l);background:rgba(240,193,115,.08)}
.pp-mu{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(34px,6vw,100px);align-items:center;margin-top:clamp(36px,5vw,64px)}
.pp-mu p{font-size:clamp(17px,1.3vw,20px);line-height:1.7;max-width:58ch;color:rgba(250,247,241,.82)}
.pp-mu .pp-quote{border-color:var(--ochre);color:var(--paper)}
.pp-mu-figs{display:grid;gap:var(--pp-gap)}
.pp-mu-figs figcaption{font:600 11px/1.6 "Manrope",sans-serif;letter-spacing:.16em;text-transform:uppercase;color:rgba(250,247,241,.6);margin-top:10px}
.pp-mu-links{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:26px}
.pp-mu-links a{color:var(--paper);border-color:rgba(250,247,241,.3)}
.pp-mu-links a:hover{border-color:var(--ochre-l)}
.pp-past{list-style:none;display:flex;flex-wrap:wrap;gap:10px 12px;margin-top:clamp(28px,3vw,44px)}
.pp-past li{padding:11px 18px;border:1px solid rgba(250,247,241,.22);font:400 clamp(16px,1.3vw,19px)/1 "Fraunces",serif;color:var(--paper)}

/* ---------- process / proof ---------- */
.pp-steps{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--pp-gap);counter-reset:s;margin-top:clamp(28px,3vw,44px)}
.pp-steps li{counter-increment:s;border-top:1px solid var(--ink);padding-top:16px}
.pp-steps li::before{content:counter(s);display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--terracotta-t);color:var(--paper);font:600 14px/1 "Manrope",sans-serif;margin-bottom:14px}
.pp-steps b{display:block;font:300 24px/1.2 "Fraunces",serif;color:var(--ink)}
.pp-steps span{display:block;margin-top:8px;font-size:16px;line-height:1.6}
.pp-cred{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--pp-gap);margin-top:clamp(40px,5vw,64px)}
.pp-cred div{background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius);padding:26px 26px 24px}
.pp-cred b{display:block;font:300 24px/1.2 "Fraunces",serif;color:var(--ink);margin-bottom:8px}
.pp-cred p{font-size:16px;line-height:1.6}
.pp-cred a{color:var(--terracotta-t);text-underline-offset:4px}
.pp-says{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--pp-gap);margin-top:clamp(28px,3vw,44px)}
.pp-say{border:1px dashed var(--bronze);border-radius:var(--radius);padding:26px;background:rgba(240,220,187,.25);display:flex;flex-direction:column;gap:14px}
.pp-say q{font:300 22px/1.4 "Fraunces",serif;color:var(--ink);quotes:none}
.pp-say .meta{color:var(--ink-mute)}

/* ---------- reveal ---------- */
html.pp-js .pp-rev{opacity:0;transform:translateY(18px);transition:opacity .9s var(--slow),transform 1s var(--slow)}
html.pp-js .pp-rev.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){html.pp-js .pp-rev{opacity:1;transform:none;transition:none}.pp-ph>img{transition:none}}

/* ---------- lightbox ---------- */
.pp-lb{position:fixed;inset:0;z-index:10000;background:rgba(14,18,22,.92);display:flex;align-items:center;justify-content:center;padding:4vw;cursor:zoom-out}
.pp-lb img{max-width:100%;max-height:92vh;border-radius:2px;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.pp-lb button{position:absolute;top:18px;right:18px;width:48px;height:48px;border-radius:50%;background:var(--paper);color:var(--ink);border:0!important;font-size:22px;line-height:1;cursor:pointer}

/* ---------- responsive ---------- */
@media (max-width:1000px){
  .pp-hero .wrap,.pp-story,.pp-duo,.pp-mu,.pp-town-h,.pp-proj-h{grid-template-columns:1fr}
  .pp-hero .pp-ph{max-width:520px}
  .pp-side{position:static}
  .pp-pledge,.pp-steps{grid-template-columns:repeat(2,1fr)}
  .pp-cred,.pp-says{grid-template-columns:1fr}
  .pp-stats{grid-template-columns:repeat(2,1fr)}
  .pp-stats li:nth-child(3){border-left:0;padding-left:0}
  .pp-stats li:nth-child(n+3){border-top:1px solid var(--rule);margin-top:14px;padding-top:22px}
  .pp-tn .meta{display:none}
}
@media (max-width:640px){
  .pp-grid>*{grid-column:span 12!important}
  .pp-grid .pp-ph{height:clamp(240px,70vw,380px)}
  .pp-pledge,.pp-steps{grid-template-columns:1fr}
  .pp-tn a.call{display:none}
  .pp-chap{grid-template-columns:56px 1fr}
  .pp-chap::before{left:27px}
  .pp-chap-n{margin-left:4px;width:44px;height:44px}
  .pp-act .btn{width:100%;justify-content:space-between}
}
@media print{.pp-tn{display:none}.pp-slot{border-color:#999}}

.pp-dark .pp-proj-h{border-color:rgba(250,247,241,.3)}.pp-dark .pp-proj-h h3{color:var(--paper)}.pp-dark .pp-proj-h p{color:rgba(250,247,241,.82)}.pp-dark .pp-proj-h .meta{color:var(--ochre-l)}

.pp-duo-ph{display:grid;grid-template-columns:1fr 1fr;gap:var(--pp-gap);min-width:0}
.pp-duo-ph .pp-ph{box-shadow:0 24px 50px -34px rgba(20,24,28,.5)}

/* Tom-voice additions */
.pp-quick{margin-top:18px;font-size:clamp(16px,1.2vw,18px);line-height:1.6;max-width:52ch}
.pp-quick a{font-weight:700;text-decoration:underline;text-underline-offset:3px}
.pp-short,.pp-idea{margin-top:12px;font-size:15px;line-height:1.6}
.pp-idea{padding:12px 14px;border-left:3px solid var(--gold,#b8893a);background:rgba(184,137,58,.08)}
.pp-callme{display:inline-block;margin-top:14px}
.pp-dark .pp-idea{background:rgba(255,255,255,.07)}
.pp-hero h1{max-width:18ch}
.pp-ph img{width:100%;height:100%;object-fit:cover}

/* Text link + mobile call bar */
.pp .btn--text{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink)}
.pp .btn--text:hover{background:var(--ink);color:var(--paper)}
.pp-short{font:600 clamp(17px,1.3vw,19px)/1.5 "Fraunces",serif;color:var(--ink);margin-top:0}
