/*
 * 05-layout.css – Bredder, vertikala avstånd och skydd mot innehåll i kanten
 * Del av child-temat Haninge Grav. Se README.md.
 */

/* ==========================================================================
   Bredder – samma logik och mått som Twenty Twenty-Five (TT5)
   Content: 645px (läsbredd)  ·  Wide: 1340px (= sidans container)  ·  Full: hela fönstret
   Värdena sätts i theme.json och gäller både frontend och editor.
   ========================================================================== */
:root {
  --content: var(--wp--style--global--content-size, 645px);
  --wide:    var(--wp--style--global--wide-size, 1340px);
}

/* Översta nivån på sidan */
:is(.entry-content, .is-root-container) > * {
  max-width: min(var(--content), calc(100% - 2 * var(--gutter)));
  margin-inline: auto;
}
:is(.entry-content, .is-root-container) > .alignwide {
  /* !important: GeneratePress ger .alignwide negativa marginaler (-80px)
     och bredd 100% + 160px, vilket skjuter innehållet utanför kanten */
  max-width: min(var(--wide), calc(100% - 2 * var(--gutter))) !important;
  width: auto !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
:is(.entry-content, .is-root-container) > :is(.alignfull, [class*="is-style-hg-section"]) {
  /* !important: GeneratePress egen alignfull-regel använder 100vw och negativa
     marginaler, vilket ger horisontell scroll och innehåll utanför kanten */
  max-width: none !important;
  width: auto !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Fullbreddsgrupp med "Inner blocks use content width": sidmarginal på mobil */
.alignfull.is-layout-constrained:not([class*="is-style-hg-section"]) {
  padding-inline: var(--gutter);
}

/* ==========================================================================
   Vertikala avstånd
   Ett system: block spacing (theme.json, 1.2rem som TT5) styr avståndet
   mellan block på alla nivåer. Temats egna marginaler på stycken och
   rubriker tas bort, så att frontend och editor blir likadana.
   ========================================================================== */
.entry-content :is(p, h1, h2, h3, h4, h5, h6, ul, ol, figure, blockquote) { margin-bottom: 0; }

:is(.entry-content, .is-root-container) > * { margin-block: 0; }
:is(.entry-content, .is-root-container) > * + * { margin-block-start: var(--wp--style--block-gap, 1.2rem); }
:is(.entry-content, .is-root-container) > * + :is(h2, h3) { margin-block-start: calc(var(--wp--style--block-gap, 1.2rem) * 2); }

/* Sektioner med bakgrund ligger kant i kant */
:is(.entry-content, .is-root-container) > [class*="is-style-hg-section"],
:is(.entry-content, .is-root-container) > [class*="is-style-hg-section"] + *,
:is(.entry-content, .is-root-container) > .wp-block-cover.alignfull + * {
  margin-block-start: 0;
}

/* ==========================================================================
   Skydd mot innehåll i kanten
   Block med alignment Full får alltid sidmarginal. Bakgrund och färg går
   kant i kant, men text och innehåll aldrig. Sidopadding från panelen
   skrivs över medvetet; vertikal padding går att ställa in fritt.
   Rena mediablock (bild, video, embed) får gå kant i kant.
   ========================================================================== */
:is(.entry-content, .is-root-container) > .alignfull:not(.wp-block-image, .wp-block-video, .wp-block-embed, [class*="is-style-hg-section"]) {
  padding-left: var(--gutter) !important;
  padding-right: var(--gutter) !important;
}
/* Section-stilarna har redan minst samma marginal och centrerar till 1340 px */

/* ==========================================================================
   Cover i fullbredd: innehållet följer sidans container (1340 px)
   I stället för textbredden (645 px), så att hero-texten linjerar med
   logotypen och menyn. Stäng av "Inner blocks use content width" på
   Cover-blocket om innehållet ska gå hela vägen till sidmarginalen.
   ========================================================================== */
.wp-block-cover.alignfull > .wp-block-cover__inner-container.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
  max-width: min(var(--wide), 100%);
}

/* ==========================================================================
   Sidmarginal på Cover och grupper i fullbredd – oberoende av förälder
   Samma skydd som ovan, men utan krav på att blocket ligger direkt i
   .entry-content. Marginalen läggs både på blocket och på Covers inre
   behållare, så att text aldrig hamnar mot skärmkanten.
   ========================================================================== */
.wp-block-cover.alignfull,
.wp-block-group.alignfull:not([class*="is-style-hg-section"]),
.wp-block-columns.alignfull {
  padding-left: var(--gutter) !important;
  padding-right: var(--gutter) !important;
  box-sizing: border-box;
}
.wp-block-cover.alignfull > .wp-block-cover__inner-container {
  box-sizing: border-box;
  width: 100%;
}
