.nyc-source-card > a { position: relative; }
.nyc-source-card > a:focus-visible { outline: 4px solid #167b82; outline-offset: -4px; }
.nyc-source-open { position: absolute; z-index: 2; right: 1rem; bottom: 1rem; display: flex; align-items: center; gap: .9rem; padding: .7rem .8rem .68rem; border: 1px solid rgba(255,255,255,.72); background: rgba(5,10,15,.76); backdrop-filter: blur(12px); color: #fff; font-size: .58rem; letter-spacing: .13em; transition: background .25s ease, color .25s ease, transform .25s ease; }
.nyc-source-open i { color: #8ff2eb; font-size: .9rem; font-style: normal; }
.nyc-source-card > a:hover .nyc-source-open { transform: translateY(-.2rem); background: #fff; color: #0c151c; }

body.nyc-story-open { overflow: hidden; }
.nyc-story-reveal { position: fixed; z-index: 400; inset: 0; display: grid; place-items: center; padding: clamp(.7rem,2vw,1.5rem); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .28s ease, visibility .28s ease; }
.nyc-story-reveal.is-open { opacity: 1; visibility: visible; pointer-events: auto; }
.nyc-story-backdrop { position: absolute; inset: 0; background: rgba(2,7,12,.88); backdrop-filter: blur(16px); }
.nyc-story-dialog { position: relative; width: min(96rem,96vw); height: min(92svh,62rem); display: grid; grid-template-rows: auto minmax(0,1fr) auto; overflow: hidden; background: #0a1119; color: #fff; border: 1px solid rgba(255,255,255,.18); box-shadow: 0 40px 120px rgba(0,0,0,.58); transform: translateY(1.5rem) scale(.985); transition: transform .35s cubic-bezier(.2,.7,.2,1); }
.nyc-story-reveal.is-open .nyc-story-dialog { transform: none; }
.nyc-story-dialog:focus { outline: none; }
.nyc-story-dialog-head { min-height: 4.5rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8rem 1rem .8rem clamp(1rem,2vw,1.8rem); border-bottom: 1px solid rgba(255,255,255,.14); }
.nyc-story-dialog-head > div { display: flex; align-items: center; gap: 1rem; }
.nyc-story-dialog-head span { color: #8ff2eb; font-size: .65rem; font-weight: 900; letter-spacing: .14em; }
.nyc-story-dialog-head strong { color: #aebbc6; font-size: .59rem; letter-spacing: .14em; }
.nyc-story-dialog-head button { width: 2.7rem; height: 2.7rem; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.25); border-radius: 50%; background: transparent; color: #fff; font-size: 1.45rem; line-height: 1; transition: background .2s ease, color .2s ease; }
.nyc-story-dialog-head button:hover,
.nyc-story-dialog-head button:focus-visible { background: #fff; color: #091018; outline: none; }
.nyc-story-dialog-body { min-height: 0; display: grid; grid-template-columns: minmax(17rem,.7fr) minmax(0,2.3fr); }
.nyc-story-dialog-copy { min-width: 0; display: flex; flex-direction: column; padding: clamp(1.5rem,3vw,3rem); border-right: 1px solid rgba(255,255,255,.14); background: radial-gradient(circle at 15% 8%,rgba(48,117,130,.22),transparent 40%),#0d151f; }
.nyc-story-kicker { color: #ff9b86; font-size: .59rem; font-weight: 900; letter-spacing: .15em; }
.nyc-story-dialog-copy h2 { max-width: 9ch; margin: .85rem 0 1.2rem; font-size: clamp(2.4rem,4.1vw,4.8rem); line-height: .92; letter-spacing: -.055em; }
.nyc-story-dialog-copy > p { max-width: 34rem; margin: 0; color: #c5d0da; line-height: 1.68; font-size: .93rem; }
.nyc-story-truth { margin-top: auto; padding: 1rem 0 1.15rem; border-top: 1px solid rgba(255,255,255,.16); }
.nyc-story-truth strong { color: #8ff2eb; font-size: .55rem; letter-spacing: .14em; }
.nyc-story-truth p { margin: .55rem 0 0; color: #98a8b6; line-height: 1.55; font-size: .75rem; }
.nyc-story-nav { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.nyc-story-nav button { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .8rem .9rem; border: 1px solid rgba(255,255,255,.2); background: transparent; color: #fff; font-size: .62rem; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; transition: background .2s ease, color .2s ease; }
.nyc-story-nav button:hover,
.nyc-story-nav button:focus-visible { background: #fff; color: #091018; outline: none; }
.nyc-story-gallery { min-width: 0; min-height: 0; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1px; overflow: hidden; background: rgba(255,255,255,.15); }
.nyc-story-frame { position: relative; min-width: 0; min-height: 0; display: grid; grid-template-rows: minmax(0,1fr) auto; margin: 0; overflow: hidden; background: #111b25; }
.nyc-story-frame-media { position: relative; min-height: 0; overflow: hidden; }
.nyc-story-frame-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg,rgba(2,6,10,.06),transparent 60%,rgba(2,6,10,.32)); pointer-events: none; }
.nyc-story-frame img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
.nyc-story-frame:hover img { transform: scale(1.025); }
.nyc-story-frame[data-fit="contain"] img { object-fit: contain; background: #080d12; }
.nyc-story-frame-label { position: absolute; z-index: 2; left: .9rem; top: .9rem; padding: .55rem .65rem; border: 1px solid rgba(255,255,255,.55); background: rgba(5,10,15,.76); backdrop-filter: blur(10px); color: #fff; font-size: .54rem; font-weight: 900; letter-spacing: .12em; }
.nyc-story-frame[data-kind="original"] .nyc-story-frame-label { color: #a7ffd7; }
.nyc-story-frame[data-kind="archive"] .nyc-story-frame-label { color: #ffe0a8; }
.nyc-story-frame[data-kind="assisted"] .nyc-story-frame-label { color: #9eeeff; }
.nyc-story-frame[data-kind="concept"] .nyc-story-frame-label { color: #ffb7a8; }
.nyc-story-frame figcaption { min-height: 7.4rem; display: grid; align-content: center; gap: .45rem; padding: 1rem 1.1rem 1.15rem; background: #0c141d; }
.nyc-story-frame figcaption strong { font-size: clamp(1.1rem,1.5vw,1.45rem); line-height: 1.05; }
.nyc-story-frame figcaption span { color: #9cabb8; font-size: .72rem; line-height: 1.48; }
.nyc-story-dialog-foot { min-height: 3.75rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8rem clamp(1rem,2vw,1.8rem); border-top: 1px solid rgba(255,255,255,.14); color: #8f9daa; font-size: .65rem; letter-spacing: .04em; }
.nyc-story-dialog-foot a { color: #8ff2eb; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }

@media (max-width: 980px) {
  .nyc-story-dialog-body { grid-template-columns: minmax(15rem,.68fr) minmax(0,1.32fr); }
  .nyc-story-gallery { grid-auto-flow: column; grid-auto-columns: minmax(17rem,72%); grid-template-columns: none; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; }
  .nyc-story-frame { scroll-snap-align: start; }
}

@media (max-width: 680px) {
  .nyc-source-open { right: .75rem; bottom: .75rem; }
  .nyc-story-reveal { padding: 0; }
  .nyc-story-dialog { width: 100vw; height: 100svh; border: 0; }
  .nyc-story-dialog-head { min-height: 3.9rem; }
  .nyc-story-dialog-head strong { display: none; }
  .nyc-story-dialog-body { display: block; overflow-y: auto; }
  .nyc-story-dialog-copy { min-height: 24rem; padding: 1.35rem 1.1rem 1.15rem; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.14); }
  .nyc-story-dialog-copy h2 { max-width: 10ch; margin: .7rem 0 1rem; font-size: clamp(2.7rem,14vw,4rem); }
  .nyc-story-truth { margin-top: 1.35rem; }
  .nyc-story-gallery { min-height: 32rem; grid-auto-columns: 86vw; overflow-x: auto; }
  .nyc-story-frame-media { min-height: 25rem; }
  .nyc-story-frame figcaption { min-height: 8rem; }
  .nyc-story-dialog-foot { align-items: flex-start; flex-direction: column; padding: .85rem 1rem 1rem; }
}

@media (prefers-reduced-motion: reduce) {
  .nyc-story-reveal,
  .nyc-story-dialog,
  .nyc-story-frame img { transition: none; }
}
