/* V15 — shared content rhythm: HERO -> 1+1 -> 2+2 -> 3+3 -> carousel. */
@media screen and (min-width: 961px) {
  body.v15-contract { --v15-gap:24px; --v15-section:64px; }

  /* Homepage: eliminate the dead zone; media and copy share one 8/4 row. */
  body.v15-contract .ay-home__network {
    display:grid !important;
    grid-template-columns:repeat(12,minmax(0,1fr)) !important;
    gap:24px !important;
    align-items:stretch !important;
    min-height:0 !important;
    padding-block:32px !important;
  }
  body.v15-contract .ay-home__network-viewport { grid-column:1 / span 8 !important; grid-row:1 !important; min-height:540px !important; }
  body.v15-contract .ay-home__network-copy { grid-column:9 / -1 !important; grid-row:1 !important; min-height:540px !important; padding:0 !important; }
  body.v15-contract .ay-home__network-copy > div { align-self:start !important; }

  /* Project index: two cards per row, content-driven instead of four compressed cards. */
  body.v15-contract .projects-index--premium-air .projects-index__grid {
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    grid-auto-rows:auto !important;
    gap:0 !important;
  }
  body.v15-contract .projects-index--premium-air .project-card,
  body.v15-contract .projects-index--premium-air .project-card--hero,
  body.v15-contract .projects-index--premium-air .project-card--large,
  body.v15-contract .projects-index--premium-air .project-card--medium,
  body.v15-contract .projects-index--premium-air .project-card--quarter {
    display:grid !important;
    grid-template-rows:minmax(320px,42vw) auto !important;
    block-size:auto !important;
    min-block-size:0 !important;
    border-right:1px solid var(--color-line) !important;
    border-bottom:1px solid var(--color-line) !important;
  }
  body.v15-contract .projects-index--premium-air .project-card__image,
  body.v15-contract .projects-index--premium-air .project-card__image--hero,
  body.v15-contract .projects-index--premium-air .project-card--large .project-card__image,
  body.v15-contract .projects-index--premium-air .project-card--quarter .project-card__image {
    block-size:auto !important; min-block-size:320px !important; aspect-ratio:4/3 !important;
  }
  body.v15-contract .projects-index--premium-air .project-card__content,
  body.v15-contract .projects-index--premium-air .project-card__content--hero,
  body.v15-contract .projects-index--premium-air .project-card__content--compact {
    display:block !important; block-size:auto !important; min-block-size:0 !important; padding:0 !important;
  }
  body.v15-contract .projects-index--premium-air .project-card__meta { block-size:48px !important; }
  body.v15-contract .projects-index--premium-air .project-card__title { block-size:auto !important; min-height:88px !important; padding:24px 32px 8px !important; }
  body.v15-contract .projects-index--premium-air .project-card__description { block-size:auto !important; min-height:110px !important; padding:8px 32px 24px !important; }
  body.v15-contract .projects-index--premium-air .project-card__link { block-size:48px !important; }

  /* Shared content components. */
  .v15-section { margin:0 32px 64px; }
  .v15-sectionbar { min-height:41px; display:flex; align-items:center; justify-content:space-between; gap:24px; border-top:1px solid var(--color-line); border-bottom:1px solid var(--color-line); font-family:var(--ay-font-mono); font-size:12px; text-transform:uppercase; }
  .v15-one { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:24px; align-items:start; padding-top:32px; }
  .v15-one__media { grid-column:1 / span 8; min-width:0; }
  .v15-one__copy { grid-column:9 / -1; min-width:0; }
  .v15-two { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; padding-top:32px; }
  .v15-three { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; padding-top:32px; }
  .v15-card { min-width:0; }
  .v15-card img,.v15-one img { display:block; width:100%; height:auto; max-height:72vh; object-fit:contain; background:var(--color-paper); }
  .v15-card__copy,.v15-one__copy { padding-top:16px; }
  .v15-card h3,.v15-one h2 { margin:0 0 12px; font-family:var(--ay-font-sans); font-weight:400; color:var(--color-text); }
  .v15-card h3 { font-size:24px; line-height:30px; }
  .v15-one h2 { font-size:32px; line-height:36px; }
  .v15-card p,.v15-one p { margin:0 0 14px; font-size:16px; line-height:24px; color:var(--color-text); }
  .v15-meta { font-family:var(--ay-font-mono); font-size:12px; line-height:1.3; text-transform:uppercase; margin-bottom:12px; }
  .v15-rule { border-top:1px solid var(--color-line); margin-top:16px; padding-top:16px; }
  .v15-details { margin-top:16px; border-top:1px solid var(--color-line); padding-top:12px; }
  .v15-details summary { cursor:pointer; font-family:var(--ay-font-mono); font-size:12px; text-transform:uppercase; list-style:none; }
  .v15-details summary::-webkit-details-marker { display:none; }
  .v15-details summary::after { content:' +'; }
  .v15-details[open] summary::after { content:' −'; }
  .v15-details > div { padding-top:16px; }

  /* Programmer: four operating layers become two cards per row. */
  body.v15-contract .programmer-system { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  body.v15-contract .programmer-system > article { min-height:360px !important; }

  /* Oracle: 1 large image, then 2 equal images. Same logic in object/aura galleries. */
  body.v15-contract .or-hero__media,
  body.v15-contract .or-gallery { display:grid !important; grid-template-columns:repeat(12,minmax(0,1fr)) !important; gap:24px !important; align-items:start !important; }
  body.v15-contract .or-hero__media > .or-media--hero,
  body.v15-contract .or-gallery > .or-media--wide { grid-column:1 / -1 !important; grid-row:auto !important; }
  body.v15-contract .or-hero__media > .or-media:not(.or-media--hero),
  body.v15-contract .or-gallery > .or-media:not(.or-media--wide) { grid-column:span 6 !important; margin:0 !important; }
  body.v15-contract .or-hero__media .or-image-shell,
  body.v15-contract .or-gallery .or-image-shell { min-height:0 !important; height:auto !important; }
  body.v15-contract .or-hero__media img,
  body.v15-contract .or-gallery img { width:100% !important; height:auto !important; object-fit:contain !important; }

  /* Post Human: 1+1, then 2+2, then three equal archive records. */
  body.v15-contract .ph-world { display:grid !important; grid-template-columns:repeat(12,minmax(0,1fr)) !important; gap:24px !important; }
  body.v15-contract .ph-world__card--wide { grid-column:1 / -1 !important; display:grid !important; grid-template-columns:repeat(12,minmax(0,1fr)) !important; gap:24px !important; }
  body.v15-contract .ph-world__card--wide figure { grid-column:1 / span 8 !important; }
  body.v15-contract .ph-world__card--wide .ph-world__text { grid-column:9 / -1 !important; }
  body.v15-contract .ph-world__card:not(.ph-world__card--wide) { grid-column:span 6 !important; display:block !important; }
  body.v15-contract .ph-world__card:not(.ph-world__card--wide) figure { width:100% !important; }
  body.v15-contract .ph-world__card:not(.ph-world__card--wide) .ph-world__text { padding-top:16px !important; }
  body.v15-contract .ph-archive { display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:24px !important; }
  body.v15-contract .ph-archive__item, body.v15-contract .ph-archive__item--wide, body.v15-contract .ph-archive__item--portrait { grid-column:auto !important; width:auto !important; }
  body.v15-contract .ph-archive__item img { width:100% !important; height:420px !important; object-fit:contain !important; }

  /* No Words V15 direct modules. */
  body.v15-contract .nw-experience-record { padding:0 !important; }
}
@media screen and (max-width:960px){
  .v15-one,.v15-two,.v15-three { display:block !important; }
  .v15-one__copy,.v15-card__copy { padding:16px 0 32px; }
  .v15-section { margin-inline:16px; }
}
