/*
 * العاصمة — the front page («تحت القبة»), the prototype's own home styles
 * (docs/alasima/prototype/home.html, its <style> block), moved here whole.
 * The one change: the grid texture under the month's figures is read
 * relative to this file. Bands the dashboard can produce and the prototype
 * never drew live in cms.css.
 */
/* ===================== Home — «تحت القبة» =====================
   Spatial thesis: one lead composition (headline → dome photo → figure), wrapped by the
   sash of latest updates; then descending weight: also → Jerusalem orbit → reports →
   lens → voices. Night/limestone alternate as editorial rhythm, not decoration. */

/* ---- Lead: the dome and the sash ---- */
/* Height is set by the text column, never by a viewport guess: the headline is sized from its own
   column (cqi), so it holds ~26 Arabic characters per line and a ≤70-character lead stays within 3 lines
   at every width. The dome photo stretches to whatever that column needs. */
.lead { padding-top: 12px; padding-bottom: 30px; overflow: clip; }
.lead__mast { display: flex; justify-content: space-between; align-items: center; gap: 8px 24px; flex-wrap: wrap; padding-bottom: 10px; border-bottom: 1px solid var(--rule); font-size: var(--fs-meta); color: var(--ink-3); }
.lead__mast b { color: var(--ink); font-weight: 600; }
.lead__grid {
  display: grid; padding-top: clamp(20px, 2.2vw, 30px);
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-template-areas: "head visual" "body visual";
  grid-template-rows: auto 1fr;
  column-gap: clamp(28px, 3.6vw, 56px);
}
.lead__head { grid-area: head; container-type: inline-size; }
.lead__head .hl-display { font-size: clamp(2.1rem, 8.6cqi, 3.75rem); line-height: 1.28; }
.lead__body { grid-area: body; display: grid; gap: var(--s-4); align-content: end; padding-top: var(--s-4); padding-bottom: calc(var(--sash-overlap) + var(--s-5)); }
.lead__body .dek { max-width: 54ch; }
.lead__actions { display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center; padding-top: var(--s-1); }
.lead__ai { margin-top: calc(var(--s-2) * -1); }   /* sits under the summary it labels */
.lead__visual { grid-area: visual; position: relative; min-height: clamp(380px, 33vw, 480px); }
.lead__visual .dome-frame { position: absolute; inset: 0; }
/* the source photo carries the channel's Telegram sticker 77–84% down: every crop must end above it */
.lead__visual .dome-frame__clip img { object-position: 50% 16%; }
/* the figure stays on the photograph: light type set past its edge would vanish into the white page */
.lead__figure { position: absolute; z-index: 3; inset-inline-start: clamp(14px, 1.8vw, 26px); bottom: calc(var(--sash-overlap) + 18px); max-width: calc(100% - 2 * clamp(14px, 1.8vw, 26px)); }
.lead__figure .madd { font-size: clamp(1.35rem, 0.9rem + 1.3vw, 2.15rem); color: #F4F5F6; text-shadow: 0 2px 22px rgba(0,0,0,.5); }
.lead__figure .madd__fig { color: var(--dome); text-shadow: 0 1px 2px rgba(0,0,0,.45), 0 2px 22px rgba(0,0,0,.5); }
.lead__figure .madd__tail { color: #F4F5F6; }
.lead .sash-wrap { margin-top: calc(var(--sash-overlap) * -1); position: relative; z-index: 4; }
.lead .sash__list span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
:root { --sash-overlap: 56px; }

/* ---- Also on the front page: feature · pair · most read ---- */
.also { padding-block: var(--sec) var(--sec-tight); }
.also__grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 3fr) minmax(0, 3fr); gap: var(--s-6) var(--col-gap); align-items: start; }
.also__pair { display: grid; gap: var(--s-6); }
.feature { display: grid; gap: var(--s-4); }
.feature .hl-2 { font-size: var(--fs-h2); }
.mostread__head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: var(--s-2); }
.mostread__head h2 { font-size: var(--fs-h4); font-weight: 800; }

/* ---- Jerusalem orbit ---- */
.orbit { padding-block: var(--sec); position: relative; overflow: clip; }
.orbit__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--s-7) clamp(28px, 4vw, 64px); align-items: stretch; }
.orbit__intro { display: grid; gap: var(--s-4); margin-bottom: var(--s-5); }
.orbit__intro .dek { color: var(--ink-2); }
.orbit__map { display: grid; gap: var(--s-3); align-content: start; min-width: 0; }
.orbit__panel { display: grid; gap: var(--s-4); align-content: start; }
.orbit__panel .tabs { margin-top: var(--s-2); }
.orbit__panel [data-panel] { max-height: 470px; overflow-y: auto; scrollbar-width: thin; margin-inline-end: -8px; padding-inline-end: 8px; }
.month { margin-top: var(--sec-tight); padding-top: var(--s-6); border-top: 1px solid var(--rule); }
.month__head { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 8px 20px; margin-bottom: var(--s-5); }
.month__head h3 { font-size: var(--fs-h4); font-weight: 800; }
.month__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.month__grid > div { display: grid; gap: var(--s-3); align-content: start; padding-inline: var(--s-6); }
.month__grid > div:first-child { padding-inline-start: 0; }
.month__grid > div + div { border-inline-start: 1px solid var(--rule); }
.month .madd { font-size: clamp(1.35rem, 1rem + 1.1vw, 1.95rem); }
.month .src { font-size: var(--fs-meta); color: var(--ink-3); }

/* ---- Reports & investigations ---- */
.reports { padding-block: var(--sec); }
.reports__grid { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: var(--s-6) var(--col-gap); align-items: start; }
.inv { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); }
.inv__img { grid-column: 3 / -1; grid-row: 1; }
.inv__panel { grid-column: 1 / span 4; grid-row: 1; align-self: end; position: relative; z-index: 2; margin-bottom: calc(var(--s-7) * -1); background: var(--sheet); padding: var(--s-6) var(--s-6) var(--s-5); display: grid; gap: var(--s-4); box-shadow: 0 24px 48px -32px rgba(16,18,21,.45); }
.inv__ruler { grid-column: 1 / -1; grid-row: 2; padding-top: calc(var(--s-7) + var(--s-5)); }
.covers { display: grid; gap: var(--col-gap); }

/* ---- Lens (full-bleed visual segment) ---- */
.lens { padding-bottom: var(--sec); }
.lens__stage { position: relative; aspect-ratio: 2.35 / 1; max-height: 78vh; width: 100%; overflow: hidden; }
.lens__stage img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 58%; filter: saturate(.8) contrast(1.06); }
.lens__stage::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(270deg, rgba(16,18,21,.88) 0%, rgba(16,18,21,.5) 34%, rgba(16,18,21,0) 62%), linear-gradient(0deg, rgba(16,18,21,.8) 0%, rgba(16,18,21,0) 40%); }
.lens__over { position: absolute; inset: 0; z-index: 2; display: grid; grid-template-rows: auto 1fr auto; padding-block: clamp(20px, 3vw, 40px); color: #F4F5F6; --ink: #F4F5F6; --ink-2: rgba(244,245,246,.85); --ink-3: rgba(244,245,246,.72); }
.lens__over .wrap { width: 100%; }
.lens__title { display: grid; gap: 6px; max-width: 30ch; }
.lens__title h2 { font-size: var(--fs-h2); font-weight: 800; }
.lens__title p { color: var(--ink-2); font-size: var(--fs-small); text-wrap: balance; }
.lens__story { display: flex; align-items: end; justify-content: space-between; gap: var(--s-5); flex-wrap: wrap; }
.lens__story h3 { font-size: var(--fs-h2); font-weight: 800; max-width: 22ch; color: #F4F5F6; }
.lens__story .meta { color: #C3C7CC; margin-top: 8px; }
.lens .play { position: static; }
.lens__story h3 a { color: #F4F5F6; }
.contact { display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - var(--col-gap) * 4) / 5); gap: var(--col-gap); margin-top: var(--s-6); overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; overscroll-behavior-x: contain; }
.contact::-webkit-scrollbar { display: none; }
@media (max-width: 900px) { .contact { grid-auto-columns: calc((100% - var(--col-gap) * 2) / 3); } }
@media (max-width: 560px) { .contact { grid-auto-columns: 62%; } }
.contact > a { scroll-snap-align: start; display: grid; gap: 8px; }
.contact .cap { margin: 0; }
.contact time { font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }

/* ---- Voices: analysis · politics ---- */
/* ---- Prisoners: the brand's prisoner post, on the page ---- */
.prisoners { padding-block: 0 var(--sec); }
.prisoners__more { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--col-gap); margin-top: var(--s-5); }
.prisoners__more article { display: grid; gap: 8px; align-content: start; padding-top: var(--s-4); border-top: 1px solid var(--rule); }
.prisoners__more h3 { font-size: var(--fs-h4); font-weight: 700; line-height: var(--lh-h4); }
@media (max-width: 900px) { .prisoners__more { grid-template-columns: minmax(0, 1fr); } }
/* the month's figures sit on the square grid of the count posts */
.month { position: relative; isolation: isolate; }
.month::before { content: ""; position: absolute; inset: 0; z-index: -1; background: url(../img/grid-square.webp) 0 0 / 198px; opacity: .07; pointer-events: none;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 22%, #000 78%, transparent); mask-image: linear-gradient(90deg, transparent, #000 22%, #000 78%, transparent); }

.voices { padding-block: var(--sec); }
.voices__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--s-7) clamp(28px, 4vw, 64px); }
.opinion { display: grid; }
.opinion article { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 6px 16px; padding-block: var(--s-5); border-top: 1px solid var(--rule); }
.opinion article:first-of-type { border-top: 0; padding-top: 0; }
.opinion .arch-ava { grid-row: span 3; }
.opinion .who { font-size: var(--fs-meta); color: var(--ink-3); }
.opinion .who b { color: var(--ink); font-weight: 600; }
.opinion blockquote { grid-column: 1 / -1; margin-top: var(--s-3); }
.politics { display: grid; gap: var(--s-5); }
.politics__lead { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: var(--col-gap); align-items: start; }
.politics__rows { display: grid; grid-template-columns: 1fr 1fr; gap: var(--col-gap); border-top: 1px solid var(--rule); padding-top: var(--s-5); }

/* ---- Responsive: re-composed, not shrunk ---- */
@media (max-width: 1100px) {
  .also__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .feature { grid-column: 1 / -1; }
  .reports__grid, .voices__grid { grid-template-columns: 1fr; }
  .covers { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 900px) {
  :root { --sash-overlap: 40px; }
  .lead { padding-top: 0; }
  .lead__mast { display: none; }
  .lead__grid { grid-template-columns: 1fr; grid-template-areas: "visual" "head" "body"; grid-template-rows: auto; padding-top: 44px; row-gap: var(--s-5); }
  .lead__visual { min-height: 0; aspect-ratio: 4 / 3; }
  .lead__figure { inset-inline-start: 12px; bottom: 20px; }
  .lead__body { padding-top: 0; padding-bottom: var(--s-6); }
  .lead .sash-wrap { margin-top: 0; }
  .orbit__grid { grid-template-columns: 1fr; row-gap: var(--s-5); }
  /* one column: the title first, then the level tabs right above the map they drive, then the place list */
  .orbit__panel { display: contents; }
  .orbit__intro { order: -3; margin-bottom: 0; }
  .orbit__panel .tabs { order: -2; margin-top: 0; }
  .orbit__grid .orbit__map { order: -1; }
  .orbit__panel [data-panel] { max-height: none; }
  .month__grid { grid-template-columns: 1fr; }
  .month__grid > div { padding: var(--s-4) 0; }
  .month__grid > div + div { border-inline-start: 0; border-top: 1px solid var(--rule); }
  .inv { grid-template-columns: 1fr; }
  .inv__img, .inv__panel, .inv__ruler { grid-column: 1; grid-row: auto; }
  .inv__panel { margin: calc(var(--s-7) * -1) var(--s-4) 0; }
  .inv__ruler { padding-top: var(--s-5); }
  .lens__stage { aspect-ratio: 4 / 5; max-height: none; }
  .lens__stage::before { background: linear-gradient(0deg, rgba(18,20,23,.92) 0%, rgba(18,20,23,.3) 50%, rgba(18,20,23,.84) 100%); }
  .politics__lead { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .lead__mast > :nth-child(2) { display: none; }
  .inv__ruler li { font-size: var(--fs-meta); padding-inline-end: 8px; }   /* four years on one rule at phone width */
  .lead__visual { aspect-ratio: 1 / 1; margin-inline: calc(var(--gutter) * -1); }
  .lead__visual .dome-frame__clip img { object-position: 50% 4%; }   /* square crop: shows source rows 1–76%, above the sticker */
  .lead .sash__more { display: none; }
  .lead .sash__label .live-tag { gap: 6px; }
  .also__grid, .covers, .politics__rows { grid-template-columns: 1fr; }
  .places a { grid-template-columns: 60px minmax(0, 1fr) auto; }
  .places .frame { width: 60px; }
}
