/* ============================================================
   MonumentArt — 03 LAYOUT
   Container, grid, seksjonsrytme, redaksjonelle oppsett
   ============================================================ */

.shell {
  position: relative;
  z-index: var(--z-content);
  width: 100%;
}

.container {
  width: 100%;
  max-width: var(--max-w);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.container--narrow { max-width: 1180px; }
.container--wide   { max-width: 1780px; }
.container--full   { max-width: none; padding-inline: var(--gutter); }

/* ---------- Seksjon ---------- */
.section {
  position: relative;
  padding-block: var(--section-y);
  isolation: isolate;
}
.section--flush-top    { padding-top: 0; }
.section--flush-bottom { padding-bottom: 0; }
.section--tight        { padding-block: clamp(4rem, 8vh, 7rem); }

/* Hårfin skillelinje mellom seksjoner, med lysglimt i midten */
.section-divider {
  position: relative;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--line-2) 18%, var(--line-2) 82%, transparent);
}
.section-divider::after {
  content: "";
  position: absolute; inset-block: -1px; left: 50%;
  width: min(280px, 40vw); transform: translateX(-50%);
  background: linear-gradient(90deg, transparent, rgba(224,189,136,.55), transparent);
  filter: blur(0.5px);
}

/* ---------- Seksjonshode ---------- */
.section-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--sp-5);
  margin-bottom: var(--block-gap);
}

/* Skiller to blokker inne i samme seksjon. Samme avstand overalt —
   ikke sett marger direkte i markupen, bruk denne. */
.section-block { margin-top: var(--block-gap); }
@media (min-width: 1024px) {
  .section-head--split {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    align-items: end;
    gap: clamp(2rem, 5vw, 5rem);
  }
}

.section-index {
  display: inline-flex; align-items: center; gap: 0.85rem;
  font-family: var(--f-mono);
  font-size: var(--fs-label);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  color: var(--c-text-3);
}
.section-index::before {
  content: "";
  width: clamp(28px, 5vw, 58px); height: 1px;
  background: linear-gradient(90deg, var(--c-accent), transparent);
}
.section-index b { color: var(--c-accent); font-weight: 500; }

.section-title { margin-top: var(--sp-4); }

.section-lead {
  font-size: var(--fs-lead);
  color: var(--c-text-2);
  max-width: var(--max-w-text);
  line-height: 1.62;
}

/* ---------- Rutenett ---------- */
.grid { display: grid; gap: var(--gap, clamp(1rem, 1.8vw, 1.75rem)); }
.grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grid--12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }

@media (max-width: 1080px) {
  .grid--3, .grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .grid--2, .grid--3, .grid--4 { grid-template-columns: minmax(0, 1fr); }
  .grid--12 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

/* Redaksjonelt asymmetrisk oppsett: tekstkolonne + innholdskolonne */
.editorial {
  display: grid;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}
@media (min-width: 1024px) {
  .editorial { grid-template-columns: minmax(0, 0.78fr) minmax(0, 1.22fr); }
  .editorial--reverse { grid-template-columns: minmax(0, 1.22fr) minmax(0, 0.78fr); }
  .editorial--sticky > .editorial__aside { position: sticky; top: calc(var(--nav-h) + 3rem); }
}

/* ---------- Hjelpeklasser ---------- */
.stack     { display: flex; flex-direction: column; gap: var(--gap, var(--sp-4)); }
.row       { display: flex; flex-wrap: wrap; align-items: center; gap: var(--gap, var(--sp-4)); }
.row--end  { justify-content: flex-end; }
.row--between { justify-content: space-between; }

.mt-0 { margin-top: 0; }
.mt-3 { margin-top: var(--sp-3); }
.mt-4 { margin-top: var(--sp-4); }
.mt-5 { margin-top: var(--sp-5); }
.mt-6 { margin-top: var(--sp-6); }
.mt-7 { margin-top: var(--sp-7); }
.mt-8 { margin-top: var(--sp-8); }

.text-muted  { color: var(--c-text-3); }
.text-accent { color: var(--c-accent); }
.text-center { text-align: center; }
.mx-auto     { margin-inline: auto; }
.measure     { max-width: var(--max-w-text); }
.measure-narrow { max-width: var(--max-w-narrow); }

.hide-mobile { }
@media (max-width: 860px) { .hide-mobile { display: none !important; } }
.only-mobile { display: none !important; }
@media (max-width: 860px) { .only-mobile { display: revert !important; } }
