/* ============================================================
   BACKYARD LEGACIES · CINEMA LAYER (v7)
   Photo-first presentation on top of the game system in styles.css
   ============================================================ */

/* --- photo primitive ------------------------------------------------ */
.ph{position:relative;margin:0;overflow:hidden;background:var(--navy-900);isolation:isolate}
.ph img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%);transform:scale(1.02);transition:transform 1.2s cubic-bezier(.2,.7,.2,1),opacity .6s ease}
.ph .plate{display:block;width:100%;height:100%}
.ph-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,26,47,0) 35%,rgba(10,26,47,.55) 75%,rgba(10,26,47,.92) 100%);pointer-events:none}
.ph figcaption{position:absolute;left:14px;bottom:12px;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;font-weight:800;color:var(--lime);opacity:.9}
.ph-plate .ph-veil{display:none}

/* --- screen transition ---------------------------------------------- */
#screen>section{animation:bl-enter .55s cubic-bezier(.2,.7,.2,1) both}
@keyframes bl-enter{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

/* --- landing hero: full-bleed cinematic ----------------------------- */
.hero.cine{min-height:calc(100vh - 74px);position:relative;grid-template-columns:1.05fr .95fr}
.hero.cine::before{display:none}
.hero-bg{position:absolute;inset:0;z-index:0}
.hero-bg img{animation:bl-kenburns 28s ease-in-out infinite alternate;transform-origin:60% 60%}
@keyframes bl-kenburns{from{transform:scale(1.05) translate(0,0)}to{transform:scale(1.18) translate(-2.5%,-1.5%)}}
.hero-bg .ph-veil{background:linear-gradient(90deg,rgba(6,18,31,.96) 0%,rgba(6,18,31,.88) 38%,rgba(6,18,31,.42) 70%,rgba(6,18,31,.55) 100%),linear-gradient(180deg,rgba(6,18,31,.2),rgba(6,18,31,.75) 100%)}
.hero-bg::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(200,255,0,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(200,255,0,.05) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to right,#000 30%,transparent 80%)}
.hero.cine>.hero-copy,.hero.cine>.hero-board{position:relative;z-index:1}
.hero.cine .hero-board{display:grid;gap:14px;align-content:end;justify-items:end}
.hero.cine .float-card{position:static;max-width:320px;backdrop-filter:blur(10px);background:rgba(10,26,47,.58);border:1px solid rgba(200,255,0,.22);animation:none}
.hero-stat{display:flex;gap:26px;margin-top:34px;padding-top:22px;border-top:1px solid rgba(255,255,255,.14)}
.hero-stat div{display:grid;gap:2px}.hero-stat b{font-size:1.4rem;color:var(--lime);letter-spacing:-.02em}.hero-stat span{font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:#93a7b8;font-weight:700}

/* --- chapter banner (replaces bare screen-head on photo chapters) --- */
.chapter-banner{position:relative;border-radius:var(--radius-xl);overflow:hidden;min-height:300px;display:grid;align-items:end;margin-bottom:26px;border:1px solid rgba(255,255,255,.08);box-shadow:var(--shadow)}
.chapter-banner .ph{position:absolute;inset:0}
.chapter-banner .ph-veil{background:linear-gradient(180deg,rgba(10,26,47,.15) 0%,rgba(10,26,47,.55) 55%,rgba(10,26,47,.96) 100%)}
.chapter-banner .banner-copy{position:relative;padding:34px clamp(22px,4vw,44px) 30px;display:grid;grid-template-columns:1fr auto;gap:22px;align-items:end}
.chapter-banner .banner-copy p{color:#c5d3de;max-width:640px;margin:14px 0 0;line-height:1.6}
.chapter-banner h2{text-shadow:0 8px 40px rgba(0,0,0,.6)}
@media(max-width:900px){.chapter-banner{min-height:230px}.chapter-banner .banner-copy{grid-template-columns:1fr}}

/* --- photo cards (scenario / property / ADU / bids) ----------------- */
.photo-card{padding:0!important;overflow:hidden;display:grid;grid-template-rows:auto 1fr}
.photo-card .card-photo{aspect-ratio:16/10;width:100%}
.photo-card .card-body{padding:20px 22px 22px;display:grid;gap:10px;align-content:start}
.photo-card .card-number{position:absolute;top:14px;left:14px;z-index:2;background:rgba(10,26,47,.7);backdrop-filter:blur(6px);border:1px solid rgba(200,255,0,.3);color:var(--lime);padding:6px 10px;border-radius:999px;font-size:.66rem;letter-spacing:.14em;font-weight:800}
.photo-card .card-icon{position:absolute;top:12px;right:14px;z-index:2;font-size:1.5rem;filter:drop-shadow(0 4px 10px rgba(0,0,0,.6))}
.photo-card:hover .card-photo img,.photo-card:focus-visible .card-photo img{transform:scale(1.08)}
.photo-card h3{font-size:1.15rem}
.photo-card .ph::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--lime),transparent);opacity:0;transition:opacity .3s}
.photo-card:hover .ph::after{opacity:1}
.card-grid .photo-card{position:relative}

/* --- Exchange Town map with photo districts ------------------------- */
.town-map .district{background-image:linear-gradient(180deg,rgba(10,26,47,.35),rgba(10,26,47,.9)),var(--bg,none);background-size:cover;background-position:center;border-color:rgba(255,255,255,.14)}
.town-map .district strong{text-shadow:0 4px 18px rgba(0,0,0,.7)}
.town-map .district.active{box-shadow:0 0 0 2px var(--lime),0 18px 50px rgba(0,0,0,.45)}

/* --- feasibility: property hero strip ------------------------------- */
.site-strip{display:grid;grid-template-columns:1.1fr .9fr;gap:22px;align-items:stretch;margin-bottom:24px}
.site-strip .ph{border-radius:var(--radius-lg);min-height:240px}
.site-strip .site-facts{display:grid;gap:10px;align-content:center;padding:22px;border:1px solid var(--line);border-radius:var(--radius-lg);background:rgba(255,255,255,.03)}
.site-strip .site-facts div{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.07);font-size:.9rem}
.site-strip .site-facts span{color:#8fa5b6}.site-strip .site-facts b{color:var(--lime)}
@media(max-width:900px){.site-strip{grid-template-columns:1fr}}

/* --- summary / keys backdrops --------------------------------------- */
.summary-panel.cine,.keys-cinematic.cine{position:relative;overflow:hidden}
.summary-panel.cine .ph,.keys-cinematic.cine .ph{position:absolute;inset:0;z-index:0}
.summary-panel.cine .ph-veil,.keys-cinematic.cine .ph-veil{background:linear-gradient(180deg,rgba(10,26,47,.9),rgba(10,26,47,.82) 50%,rgba(10,26,47,.97))}
.summary-panel.cine>*:not(.ph),.keys-cinematic.cine>*:not(.ph){position:relative;z-index:1}

/* --- bids with team photos ------------------------------------------ */
.bid-doc.photo-card{grid-template-rows:auto 1fr}
.bid-doc .card-photo{aspect-ratio:16/9}
.bid-doc .bid-doc-top{position:absolute;top:12px;left:14px;right:14px;z-index:2;display:flex;justify-content:space-between;align-items:center}
.bid-doc .bid-doc-top span{background:rgba(10,26,47,.7);backdrop-filter:blur(6px);padding:6px 10px;border-radius:999px;font-size:.62rem;letter-spacing:.14em;font-weight:800;color:var(--lime)}
.bid-doc .bid-doc-top b{background:var(--lime);color:var(--navy-950);padding:6px 12px;border-radius:999px;font-size:.95rem}

/* --- BUILD CAM (construction) --------------------------------------- */
.buildcam{position:relative;border-radius:var(--radius-xl);overflow:hidden;aspect-ratio:16/8.2;min-height:300px;border:1px solid rgba(255,255,255,.1);box-shadow:var(--shadow);background:var(--navy-900)}
.buildcam-frame{position:absolute;inset:0}
.buildcam-frame img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%);display:block;animation:bl-frame 1.2s cubic-bezier(.2,.7,.2,1) both}
@keyframes bl-frame{from{opacity:0;transform:scale(1.08)}to{opacity:1;transform:scale(1.02)}}
.buildcam-frame .ph-veil{background:linear-gradient(180deg,rgba(10,26,47,.82),rgba(10,26,47,.15) 45%,rgba(10,26,47,.55) 100%)}
.buildcam-label{position:absolute;top:16px;left:18px;display:inline-flex;align-items:center;gap:8px;background:rgba(10,26,47,.7);backdrop-filter:blur(8px);border:1px solid rgba(200,255,0,.3);color:var(--lime);padding:8px 12px;border-radius:999px;font-size:.66rem;letter-spacing:.16em;font-weight:800}
.buildcam-label::before{content:"";width:8px;height:8px;border-radius:50%;background:#ff5a5a;box-shadow:0 0 0 4px rgba(255,90,90,.25);animation:bl-rec 1.4s infinite}
@keyframes bl-rec{50%{opacity:.35}}
.buildcam-hud{position:absolute;left:18px;right:18px;top:58px;display:grid;grid-template-columns:1fr auto;gap:18px;align-items:start}
.buildcam-hud .progress-ring{order:2}
.buildcam-hud>div:not(.progress-ring){order:1}
.progress-ring{width:96px;height:96px;position:relative}
.progress-ring svg{transform:rotate(-90deg)}
.progress-ring circle{fill:none;stroke-width:8}
.progress-ring .track{stroke:rgba(255,255,255,.14)}
.progress-ring .bar{stroke:var(--lime);stroke-linecap:round;transition:stroke-dashoffset .9s cubic-bezier(.2,.7,.2,1)}
.progress-ring b{position:absolute;inset:0;display:grid;place-items:center;font-size:1.25rem;color:#fff;letter-spacing:-.02em}
.buildcam-hud .stage-row{display:flex;gap:6px;flex-wrap:wrap}
.buildcam-hud .stage-row span{font-size:.6rem;letter-spacing:.1em;font-weight:800;padding:6px 9px;border-radius:999px;border:1px solid rgba(255,255,255,.14);color:#93a7b8;background:rgba(10,26,47,.55)}
.buildcam-hud .stage-row span.done{color:var(--navy-950);background:var(--lime);border-color:var(--lime)}
.buildcam-hud .stage-row span.now{color:var(--lime);border-color:var(--lime)}
.buildcam-hud h3{font-size:1.4rem;margin:8px 0 0;text-shadow:0 6px 30px rgba(0,0,0,.7)}
.construction-scene{display:none}

/* --- timeline with year photos -------------------------------------- */
.timeline.cine{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.timeline.cine article{display:grid;grid-template-rows:auto 1fr;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-xl);background:rgba(255,255,255,.03)}
.timeline.cine article .ph{aspect-ratio:16/8;position:relative}
.timeline.cine .year{position:absolute;top:16px;left:16px;z-index:2;background:var(--lime);color:var(--navy-950);padding:8px 14px;border-radius:999px;font-weight:900;font-size:.8rem;letter-spacing:.12em}
.timeline.cine article>div:last-child{padding:20px 22px 24px}
.timeline.cine h3{font-size:1.2rem;margin-bottom:8px}
@media(max-width:900px){.timeline.cine{grid-template-columns:1fr}}

/* --- final: legacy poster ------------------------------------------- */
.final-card.cine{position:relative;overflow:hidden;padding:0;display:grid;grid-template-columns:1fr 1fr;min-height:560px;text-align:left}
.final-card.cine>.ph{min-height:420px}
.final-card.cine>.ph img{object-position:50% 50%}
.final-card.cine>.ph .ph-veil{background:linear-gradient(90deg,rgba(10,26,47,0) 50%,rgba(10,26,47,.98) 100%),linear-gradient(180deg,rgba(10,26,47,.1),rgba(10,26,47,.5))}
.final-card.cine .final-body{padding:clamp(24px,4vw,48px);display:grid;align-content:center;gap:18px}
.final-card.cine img.final-logo{width:150px;background:#fff;padding:10px;border-radius:12px}
.final-card.cine .final-grid{margin:0}
.final-card.cine .hero-actions{justify-content:flex-start}
@media(max-width:900px){.final-card.cine{grid-template-columns:1fr}.final-card.cine>.ph{min-height:260px}}
.poster-preview{margin-top:16px;border:1px solid rgba(200,255,0,.3);border-radius:14px;overflow:hidden;max-width:320px}
.poster-preview img{width:100%;display:block}

/* --- design / geometry chapter header photo ------------------------- */
.geo-hero{margin-bottom:18px}

/* --- motion + perf ---------------------------------------------------- */
@media(prefers-reduced-motion:reduce){.hero-bg img,.buildcam-frame img,#screen>section{animation:none!important}.ph img{transition:none}}
@media(max-width:900px){.hero.cine{grid-template-columns:1fr}.hero.cine .hero-board{width:100%;max-width:100%;justify-items:stretch}.hero.cine .float-card{max-width:none}}
@media(max-width:680px){.hero.cine{min-height:auto;padding-bottom:40px}.hero.cine .hero-board{justify-items:stretch}.hero.cine .float-card{max-width:none}.hero-stat{gap:16px}.hero-stat b{font-size:1.1rem}.buildcam{aspect-ratio:4/3}.progress-ring{width:72px;height:72px}.progress-ring b{font-size:1rem}}

/* --- mobile hardening (Playfair runs wider than Inter; clamp headings) --- */
@media(max-width:680px){
  .screen-head h2,.chapter-banner h2,.summary-panel h2,.final-card h2,.keys-cinematic h2{font-size:clamp(1.9rem,8.4vw,2.6rem)!important;line-height:1.02!important;word-break:normal;overflow-wrap:anywhere}
  .hero.cine h1{font-size:clamp(2.6rem,12vw,3.6rem)}
  .buildcam-hud{grid-template-columns:1fr auto;top:52px}
  .buildcam-hud .stage-row{display:none}
  .buildcam-hud h3{font-size:1.05rem;margin-top:0}
  .buildcam-label{font-size:.58rem;padding:6px 10px}
  .chapter-banner .banner-copy{padding:22px 18px 20px}
  .site-strip .ph{min-height:180px}
  .final-card.cine .final-body{padding:22px 18px 26px}
}

/* v8 cinematic hierarchy: emotion uses photography; blueprints are reserved for planning */
.story-hero{position:relative;min-height:330px;border:1px solid rgba(255,255,255,.1);border-radius:28px;overflow:hidden;margin:18px 0 22px;background:#071827;box-shadow:0 30px 80px rgba(0,0,0,.32)}
.story-hero .story-hero-photo{position:absolute;inset:0;margin:0;height:100%}
.story-hero .story-hero-photo img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%)}
.story-hero .story-hero-photo .ph-veil{background:linear-gradient(90deg,rgba(4,18,31,.96) 0%,rgba(4,18,31,.78) 38%,rgba(4,18,31,.18) 72%,rgba(4,18,31,.35) 100%)}
.story-hero-copy{position:relative;z-index:3;padding:46px 48px;max-width:650px}
.story-hero-copy h2{font-family:"Playfair Display",Georgia,serif;font-size:clamp(3rem,6vw,6.5rem);line-height:.88;letter-spacing:-.055em;margin:8px 0 12px}.story-hero-copy h2 span{color:var(--lime)}
.story-hero-copy h3{font-size:1.28rem;margin:0 0 10px}.story-hero-copy p{color:#d0dbe3;max-width:580px;line-height:1.55;margin:0}
.story-hero-note{position:absolute;z-index:4;right:28px;bottom:28px;width:min(300px,32%);padding:18px 20px;border:1px solid rgba(200,255,0,.35);border-left:3px solid var(--lime);border-radius:16px;background:rgba(4,18,31,.82);backdrop-filter:blur(14px)}
.story-hero-note b{display:block;color:#fff;line-height:1.15;margin-bottom:7px}.story-hero-note span{font-size:.78rem;line-height:1.45;color:#b8c8d4}
.section-kicker{display:flex;align-items:baseline;gap:14px;margin:8px 0 12px}.section-kicker strong{color:#fff;font-size:1.05rem}.section-kicker span{font-size:.75rem;color:#8ea4b4}
.story-cinematic .scenario-card .card-photo{height:190px}.story-cinematic .scenario-card{padding:0;min-height:430px}.story-cinematic .scenario-card .card-body{padding:18px 20px 20px}.story-cinematic .scenario-card .card-icon{position:absolute;right:14px;top:14px;z-index:5;margin:0;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:rgba(4,18,31,.82);border:1px solid rgba(200,255,0,.35);font-size:1.15rem}.story-cinematic .scenario-card .card-number{left:14px;right:auto;top:14px;z-index:5;font-size:.7rem;color:var(--lime);background:rgba(4,18,31,.82);border:1px solid rgba(200,255,0,.35);border-radius:999px;padding:5px 9px}
.photo-card .card-photo img{filter:saturate(1.04) contrast(1.02)}
.buildcam{box-shadow:0 30px 80px rgba(0,0,0,.35)}
.buildcam-frame img{filter:saturate(1.06) contrast(1.03)}
@media(max-width:900px){.story-hero-copy{padding:36px 28px;max-width:70%}.story-hero-note{width:38%;right:18px;bottom:18px}.story-cinematic .card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.story-hero{min-height:480px}.story-hero .story-hero-photo .ph-veil{background:linear-gradient(180deg,rgba(4,18,31,.25),rgba(4,18,31,.9) 52%,rgba(4,18,31,.98))}.story-hero-copy{position:absolute;left:0;right:0;bottom:98px;max-width:none;padding:24px}.story-hero-copy h2{font-size:3.3rem}.story-hero-note{left:24px;right:24px;bottom:18px;width:auto}.story-cinematic .card-grid{grid-template-columns:1fr}.story-cinematic .scenario-card{min-height:390px}.story-cinematic .scenario-card .card-photo{height:205px}.section-kicker{align-items:flex-start;flex-direction:column;gap:3px}}
