:root {
  --green: #14362c;
  --green-deep: #0c241d;
  --ivory: #f3ecdf;
  --paper: #f7f3ec;
  --ink: #1c1916;
  --muted: #5c564c;
  --gold: #9a7b45;
  --gold-soft: #e4c98a;
  --line: rgba(28, 25, 22, 0.12);
  --measure: 42rem;
}

* { box-sizing: border-box; }

html { background: var(--paper); }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Source Sans 3", "Segoe UI", sans-serif;
  font-size: 1.125rem;
  line-height: 1.65;
}

html[lang="ar"] body {
  font-family: "Noto Sans Arabic", Tahoma, sans-serif;
  font-size: 1.16rem;
  line-height: 1.9;
}

h1, h2, h3, .brand-name, .story strong, .dept-copy strong, .place-code, .said, .org-names a, .edition-empty p {
  font-family: Fraunces, Georgia, serif;
  font-weight: 560;
}

html[lang="ar"] h1,
html[lang="ar"] h2,
html[lang="ar"] h3,
html[lang="ar"] .brand-name,
html[lang="ar"] .story strong,
html[lang="ar"] .dept-copy strong,
html[lang="ar"] .place-code,
html[lang="ar"] .said,
html[lang="ar"] .org-names a,
html[lang="ar"] .edition-empty p {
  font-family: "Noto Naskh Arabic", "Noto Sans Arabic", serif;
  font-weight: 600;
  letter-spacing: 0;
}

a { color: var(--green); }

img { max-width: 100%; }

.skip {
  position: absolute;
  inset-inline-start: 1rem;
  top: -3rem;
  background: var(--ivory);
  color: var(--ink);
  padding: 0.4rem 0.7rem;
  z-index: 40;
}

.skip:focus { top: 0.5rem; }

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.wrap { width: min(1180px, calc(100% - 8vw)); margin-inline: auto; }

.mast {
  position: sticky;
  top: 0;
  z-index: 30;
  background: rgba(247, 243, 236, 0.94);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(20, 54, 44, 0.08);
}

.mast-bar {
  display: flex;
  align-items: center;
  gap: 1rem;
  min-height: 4.6rem;
}

.brand {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  color: var(--green);
  text-decoration: none;
  min-width: 0;
}

.brand-sigil { display: flex; flex: none; }

.brand-sigil svg { display: block; }

.brand-name {
  display: block;
  font-size: 1.65rem;
  line-height: 1;
  letter-spacing: -0.03em;
}

.brand-tag {
  display: block;
  margin-top: 0.28rem;
  color: var(--muted);
  font-family: "Source Sans 3", sans-serif;
  font-size: 0.84rem;
  font-weight: 400;
}

html[lang="ar"] .brand-tag { font-family: "Noto Sans Arabic", sans-serif; }

.langs {
  display: flex;
  margin-inline-start: auto;
  border: 1px solid rgba(20, 54, 44, 0.28);
}

.langs a {
  color: var(--green);
  text-decoration: none;
  padding: 0.42rem 0.72rem;
  font-size: 0.74rem;
  letter-spacing: 0.12em;
}

html[lang="ar"] .langs a { letter-spacing: 0; font-size: 0.95rem; }

.langs a[aria-current="page"] {
  background: var(--green);
  color: var(--ivory);
}

.nav-toggle {
  display: none;
  width: auto;
  background: transparent;
  color: var(--green);
  border: 1px solid rgba(20, 54, 44, 0.28);
  padding: 0.45rem 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 0.72rem;
}

.sections {
  display: flex;
  gap: 0.2rem 1.35rem;
  overflow-x: auto;
  padding-bottom: 0.85rem;
  scrollbar-width: none;
}

.sections::-webkit-scrollbar { display: none; }

.sections a {
  flex: none;
  color: var(--ink);
  text-decoration: none;
  font-size: 0.98rem;
  padding-bottom: 0.15rem;
  border-bottom: 1px solid transparent;
}

.sections a:hover,
.sections a[aria-current="page"] {
  color: var(--green);
  border-bottom-color: var(--gold);
}

.stage {
  position: relative;
  display: flex;
  align-items: flex-end;
  min-height: calc(100vh - 5.4rem);
  color: #f6f1e7;
  background: var(--green-deep);
}

.stage .hero {
  position: absolute;
  inset: 0;
  margin: 0;
}

.stage .hero img,
.essay .hero img {
  display: block;
  width: 100%;
  max-width: none;
  height: 100%;
  object-fit: cover;
  object-position: center 62%;
}

.essay .hero { margin: 0; }

.essay .hero img { height: min(68vh, 720px); }

.stage::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(8, 22, 18, 0.78) 0%, rgba(8, 22, 18, 0.28) 62%, rgba(8, 22, 18, 0.12) 100%),
    linear-gradient(180deg, rgba(8, 22, 18, 0.18) 0%, rgba(8, 22, 18, 0.12) 42%, rgba(8, 22, 18, 0.82) 100%);
}

html[dir="rtl"] .stage::after {
  background:
    linear-gradient(270deg, rgba(8, 22, 18, 0.78) 0%, rgba(8, 22, 18, 0.28) 62%, rgba(8, 22, 18, 0.12) 100%),
    linear-gradient(180deg, rgba(8, 22, 18, 0.18) 0%, rgba(8, 22, 18, 0.12) 42%, rgba(8, 22, 18, 0.82) 100%);
}

.stage-copy {
  position: relative;
  z-index: 1;
  padding: 5rem 0 2.2rem;
}

.eyebrow, .kicker {
  margin: 0 0 0.7rem;
  color: var(--gold-soft);
  font-family: "Source Sans 3", sans-serif;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

html[lang="ar"] .eyebrow,
html[lang="ar"] .kicker,
html[lang="ar"] .story-kicker,
html[lang="ar"] .story-date,
html[lang="ar"] .foot-label,
html[lang="ar"] .search span {
  font-family: "Noto Sans Arabic", sans-serif;
  letter-spacing: 0;
  text-transform: none;
  font-size: 0.92rem;
}

.stage h1 {
  max-width: 11em;
  margin: 0;
  color: #f7f3ec;
  font-size: clamp(2.8rem, 5.6vw, 5.1rem);
  line-height: 0.96;
  letter-spacing: -0.04em;
}

html[lang="ar"] .stage h1 {
  max-width: 14em;
  font-size: clamp(2.5rem, 6vw, 4.4rem);
  line-height: 1.35;
}

.stage .lede {
  max-width: 38rem;
  margin: 1.1rem 0 0;
  color: rgba(246, 241, 231, 0.92);
  font-size: 1.22rem;
}

.stage-note {
  max-width: 40rem;
  color: rgba(246, 241, 231, 0.78);
}

.stage .hero figcaption {
  position: absolute;
  z-index: 2;
  bottom: 1.1rem;
  inset-inline-end: 4vw;
  max-width: min(16rem, 34vw);
  margin: 0;
  color: rgba(247, 243, 236, 0.86);
  font-size: 0.75rem;
  line-height: 1.45;
  text-align: end;
}

.stage .hero figcaption a,
.spread-photo figcaption a,
.coast-photo figcaption a,
.inline-photo figcaption a { color: inherit; }

.publication .search {
  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(0, 0.85fr) minmax(0, 0.95fr) auto;
  gap: 0.75rem;
  align-items: end;
  width: min(760px, 100%);
  margin-top: 1.8rem;
  padding: 0.85rem;
  background: rgba(247, 243, 236, 0.96);
  color: var(--ink);
  box-shadow: 0 22px 50px rgba(8, 18, 14, 0.28);
}

.publication .search span,
.atlas-search span {
  display: block;
  margin-bottom: 0.28rem;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.publication .search input,
.publication .search select,
.atlas-search input,
.centimes input {
  width: 100%;
  border: 0;
  border-bottom: 1px solid rgba(28, 25, 22, 0.22);
  background: transparent;
  color: var(--ink);
  font: inherit;
  padding: 0.65rem 0.15rem 0.55rem;
}

.publication .search button,
.centimes button {
  width: auto;
  border: 0;
  background: var(--green);
  color: var(--ivory);
  padding: 0.95rem 1.25rem;
  font: inherit;
  font-size: 0.82rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
}

html[lang="ar"] .publication .search button,
html[lang="ar"] .centimes button {
  letter-spacing: 0;
  text-transform: none;
  font-size: 1rem;
}

.publication .search button:hover,
.centimes button:hover { background: #1d4a3c; }

.section-title, .publication h2 {
  margin: 0 0 1rem;
  font-size: clamp(2rem, 4vw, 3.1rem);
  line-height: 1.08;
  letter-spacing: -0.03em;
}

html[lang="ar"] .publication h2 { line-height: 1.4; }

.dept-section { padding: 3.4rem 0 1rem; }

.dept-board {
  display: grid;
  grid-template-columns: 1.35fr 1fr 1fr;
  grid-template-areas:
    "lead build admin"
    "lead finance programmes"
    "invest invest wilayas"
    "orgs news diaspora";
  gap: 0.7rem;
}

html[dir="rtl"] .dept-board {
  grid-template-areas:
    "admin build lead"
    "programmes finance lead"
    "wilayas invest invest"
    "diaspora news orgs";
}

.dept-tile {
  position: relative;
  display: flex;
  min-height: 210px;
  overflow: hidden;
  padding: 1.25rem 1.2rem;
  background: var(--green);
  color: var(--ivory);
  text-decoration: none;
}

.dept-tile[data-key="administration"],
.dept-tile[data-key="programmes"],
.dept-tile[data-key="organisations"] {
  background: #efe6d6;
  color: var(--ink);
}

.dept-tile[data-key="immobilier"] { background: #102820; min-height: 100%; }
.dept-tile[data-key="investissement"] { background: #1b4336; }
.dept-tile[data-key="diaspora"] { background: #0e2620; }

.dept-visual {
  position: absolute;
  top: 1rem;
  inset-inline-end: 1rem;
  width: 2.35rem;
  color: currentColor;
  opacity: 0.72;
}

.dept-visual svg { display: block; width: 100%; height: auto; }

.dept-copy {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  margin-top: auto;
  max-width: 34rem;
}

.num {
  display: block;
  margin-bottom: 0.35rem;
  color: var(--gold-soft);
  font-size: 0.95rem;
  letter-spacing: 0.08em;
}

.dept-tile[data-key="administration"] .num,
.dept-tile[data-key="programmes"] .num,
.dept-tile[data-key="organisations"] .num { color: var(--gold); }

.dept-copy strong {
  display: block;
  font-size: clamp(1.45rem, 2vw, 2rem);
  line-height: 1.12;
}

.dept-copy em {
  display: block;
  margin-top: 0.4rem;
  font-style: normal;
  font-family: "Source Sans 3", sans-serif;
  font-weight: 400;
  font-size: 0.98rem;
  line-height: 1.45;
  opacity: 0.86;
}

html[lang="ar"] .dept-copy em { font-family: "Noto Sans Arabic", sans-serif; }

.edition { padding: 3.2rem 0 1rem; }

.edition-empty {
  padding: clamp(2rem, 5vw, 3.4rem);
  background:
    linear-gradient(135deg, rgba(154, 123, 69, 0.18), transparent 34%),
    #efe6d6;
}

.edition-empty p {
  max-width: 16em;
  margin: 0;
  color: var(--green);
  font-size: clamp(1.8rem, 3.4vw, 2.7rem);
  line-height: 1.25;
}

.news-lanes { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem 2.4rem; }

.spread {
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
  gap: 2.8rem;
  align-items: start;
  padding: 4rem 0 2rem;
}

.spread-photo, .coast-photo, .inline-photo { margin: 0; }

.spread-photo img, .inline-photo img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}

.spread-photo img { max-height: 640px; }

.spread-photo figcaption, .inline-photo figcaption, .coast-photo figcaption {
  margin-top: 0.45rem;
  color: var(--muted);
  font-size: 0.8rem;
  line-height: 1.45;
}

.stories { list-style: none; margin: 0; padding: 0; }

.story a {
  display: grid;
  gap: 0.28rem;
  padding: 1.05rem 0;
  border-top: 1px solid var(--line);
  color: inherit;
  text-decoration: none;
}

.story strong {
  color: var(--green);
  font-size: 1.42rem;
  line-height: 1.2;
}

.story-sum { color: var(--ink); }

.story-kicker, .story-date {
  color: var(--gold);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.story a:hover strong { color: #1d4a3c; }

.journal {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: 2.8rem;
  padding: 2rem 0 1rem;
}

.themes {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.8rem;
  padding: 1.2rem 0 2.5rem;
}

.theme {
  padding: 1.3rem 1.15rem 0.4rem;
  background: #efe6d6;
}

.theme .dept-visual {
  position: static;
  width: 3rem;
  margin-bottom: 0.7rem;
  color: var(--green);
  opacity: 0.8;
}

.theme h2 { font-size: 1.7rem; }

.org-rail { padding-bottom: 3.4rem; }

.org-names {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem 1.3rem;
  margin: 0.4rem 0 0;
  padding: 0;
  list-style: none;
}

.org-names a {
  color: var(--green);
  font-size: 1.35rem;
  text-decoration: none;
  border-bottom: 1px solid var(--gold);
}

.atlas-band {
  background: var(--green-deep);
  color: #f4efe6;
  padding: 4.2rem 0 3.6rem;
}

.atlas-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.78fr) minmax(0, 1.22fr);
  gap: 2.4rem;
  align-items: start;
}

.atlas-band h2, .atlas-band .kicker { color: #f4efe6; }

.atlas-band .kicker { color: var(--gold-soft); }

.country { display: block; width: min(100%, 210px); height: auto; color: var(--gold-soft); margin: 0.4rem 0 0.8rem; }

.atlas-band .fine, .coast-photo figcaption { color: rgba(244, 239, 230, 0.74); }

.atlas-search input {
  max-width: 24rem;
  color: #f4efe6;
  border-bottom-color: rgba(244, 239, 230, 0.35);
}

.atlas-search span { color: var(--gold-soft); }

.atlas-band .atlas {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 1rem;
  margin: 1rem 0 0;
  padding: 0;
  list-style: none;
}

.atlas-band .atlas a {
  display: flex;
  gap: 0.55rem;
  align-items: baseline;
  padding: 0.48rem 0;
  border-bottom: 1px solid rgba(244, 239, 230, 0.12);
  color: inherit;
  text-decoration: none;
}

.atlas-band .atlas a:hover { color: var(--gold-soft); }

.atlas span, .atlas-paper span {
  color: var(--gold);
  font-variant-numeric: tabular-nums;
}

.atlas-band .atlas span { color: var(--gold-soft); }

.coast-photo { margin-bottom: 0.8rem; }

.coast-photo img { display: block; width: 100%; height: 230px; object-fit: cover; }

.atlas-tools {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  margin: 0.4rem 0 1.2rem;
}

.atlas-tools .country { width: 4.8rem; margin: 0; color: var(--green); }

.atlas-paper {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(12.5rem, 1fr));
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.atlas-paper a {
  display: flex;
  gap: 0.5rem;
  align-items: baseline;
  padding: 0.7rem 0.75rem;
  background: #fffdf8;
  color: inherit;
  text-decoration: none;
  border: 1px solid transparent;
}

.atlas-paper a:hover { border-color: var(--gold); }

.chapter-head, .essay-band {
  background: var(--green);
  color: #f4efe6;
}

.chapter-head { padding: 2.2rem 0 2.6rem; }

.chapter-head a { color: var(--gold-soft); }

.chapter-head h1, .chapter-head .lede { color: #f7f3ec; }

.chapter-head .lede { max-width: 40rem; font-size: 1.25rem; }

.chapter-title {
  display: block;
}

.chapter-head .dept-visual,
.essay-band svg {
  position: static;
  width: 2.6rem;
  color: var(--gold-soft);
  opacity: 0.9;
}

.essay-band {
  display: flex;
  justify-content: flex-start;
  width: min(48rem, calc(100% - 8vw));
  margin-inline: auto;
  padding: 1.5rem 0 0;
}

.publication .essay .prose,
.publication .org-page,
.publication .tool-page,
.publication .search-page {
  width: min(48rem, calc(100% - 8vw));
}

.prose, .prose-page, .place-body { padding: 2.2rem 0 3.6rem; }

.publication .prose h1,
.publication .chapter h1,
.publication .place h1,
.publication .search-page h1,
.publication .tool-page h1 {
  margin: 0.2rem 0 0.8rem;
  font-size: clamp(2.5rem, 5vw, 4.4rem);
  line-height: 1.02;
  letter-spacing: -0.035em;
}

html[lang="ar"] .publication .prose h1,
html[lang="ar"] .publication .chapter h1,
html[lang="ar"] .publication .place h1 {
  line-height: 1.35;
}

.publication .prose h1::after,
.publication .chapter h1::after,
.publication .place h1::after,
.publication .search-page h1::after,
.publication .tool-page h1::after {
  content: "";
  display: block;
  width: 3.2rem;
  height: 1px;
  margin-top: 0.95rem;
  background: var(--gold);
}

.lede { margin: 0 0 1rem; font-size: 1.28rem; }

.prose .body { max-width: var(--measure); font-size: 1.16rem; }

.prose .body p { margin: 0 0 1rem; }

.fine { color: var(--muted); font-size: 0.98rem; }

.meta { color: var(--gold); font-size: 0.95rem; }

.chapter .stories { display: grid; grid-template-columns: 1fr 1fr; gap: 0 2rem; }

.place-head { padding: 2.4rem 0 0.4rem; }

.place-title {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 1.4rem;
  align-items: end;
}

.place-code {
  margin: 0;
  color: var(--gold);
  font-size: clamp(4.4rem, 10vw, 7.4rem);
  line-height: 0.8;
}

.quiet {
  padding: 1.15rem 1.2rem;
  background: #efe6d6;
  color: var(--ink);
}

.place-body .inline-photo { margin: 1.2rem 0; }

.place-body .inline-photo img { max-height: 72vh; object-fit: cover; }

.crumbs ol {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.4rem;
  margin: 0 0 1rem;
  padding: 0;
  list-style: none;
  color: var(--muted);
  font-size: 0.92rem;
}

.chapter-head .crumbs ol { color: rgba(244, 239, 230, 0.78); }

.crumbs li:not(:last-child)::after { content: "/"; margin-inline-start: 0.35rem; }

.crumbs a { color: inherit; }

.sources { list-style: none; margin: 0; padding: 0; }

.sources li { padding: 0.9rem 0; border-top: 1px solid var(--line); }

.said {
  font-size: clamp(1.8rem, 3vw, 2.5rem);
  line-height: 1.3;
  max-width: 22em;
}

.centimes {
  display: grid;
  grid-template-columns: minmax(12rem, 22rem) auto;
  gap: 0.8rem;
  align-items: end;
  max-width: 40rem;
  margin-top: 1.2rem;
}

.publication .foot {
  background: #0c241d;
  color: #e7e0d2;
  border: 0;
  padding: 3.2rem 0 2.5rem;
}

.foot-grid {
  display: grid;
  grid-template-columns: 1.3fr 1fr 0.7fr;
  gap: 2rem 2.4rem;
}

.foot-brand .brand-name { color: #f4efe6; font-size: 2rem; }

.foot p { margin: 0.35rem 0; }

.foot a { color: #f4efe6; text-decoration: none; }

.foot a:hover { color: var(--gold-soft); }

.foot-label {
  margin: 0 0 0.7rem;
  color: var(--gold-soft);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.foot ul { list-style: none; margin: 0; padding: 0; columns: 2; }

.foot li { break-inside: avoid; margin: 0.28rem 0; }

.foot-langs { margin: 0 0 1rem; border-color: rgba(244, 239, 230, 0.28); }

.foot-langs a { color: #f4efe6; }

.foot-langs a:hover { color: var(--green-deep); background: var(--gold-soft); }

.preview-banner {
  margin: 0;
  padding: 0.7rem 4vw;
  background: var(--green);
  color: var(--ivory);
}

a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
}

@media (hover: hover) {
  .dept-tile { transition: transform 0.35s ease; }
  .dept-tile:hover { transform: translateY(-3px); }
}

@media (max-width: 980px) {
  .dept-board,
  html[dir="rtl"] .dept-board {
    grid-template-columns: 1fr;
    grid-template-areas:
      "lead"
      "build"
      "admin"
      "finance"
      "programmes"
      "invest"
      "wilayas"
      "orgs"
      "news"
      "diaspora";
  }
  .spread, .journal, .themes, .atlas-layout, .foot-grid, .chapter .stories, .news-lanes, .place-title, .chapter-title, .centimes {
    grid-template-columns: 1fr;
  }
  .publication .search { grid-template-columns: 1fr; }
  .publication .search button, .centimes button { width: 100%; }
  .atlas-band .atlas { grid-template-columns: 1fr; }
  .stage { min-height: auto; }
  .stage-copy { padding-top: 8rem; padding-bottom: 4.5rem; }
  .stage .hero figcaption { max-width: 70vw; bottom: 0.6rem; }
  .stage h1 { font-size: clamp(2.6rem, 12vw, 3.8rem); }
  .mast-bar { flex-wrap: wrap; align-items: center; row-gap: 0.55rem; }
  .brand { flex: 1 0 100%; }
  .brand-sigil svg { width: 36px; height: 36px; }
  .brand-name { font-size: 1.45rem; }
  .langs { margin-inline-start: 0; }
  .nav-toggle { display: inline-flex; margin-inline-start: 0; }
  .sections { display: none; flex-direction: column; gap: 0.15rem; padding-bottom: 1rem; }
  body.nav-open .sections { display: flex; }
  .sections a { padding: 0.45rem 0; }
  .foot ul { columns: 1; }
}

body.admin {
  background: var(--paper);
  font-size: 1.05rem;
}

body.admin h1 {
  margin: 0 0 0.7rem;
  font-size: 2rem;
  line-height: 1.2;
  letter-spacing: 0;
}

body.admin h2 { margin: 1.6rem 0 0.5rem; font-size: 1.35rem; }

body.admin .top {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 1rem;
  align-items: center;
  padding: 0.8rem 4vw;
  background: var(--green);
  color: var(--ivory);
}

body.admin .mark {
  color: inherit;
  font-family: Fraunces, Georgia, serif;
  font-size: 1.3rem;
  text-decoration: none;
}

body.admin .sections {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.9rem;
  overflow: visible;
  padding: 0;
}

body.admin .sections a {
  color: #e7e0d2;
  font-size: 0.95rem;
  border: 0;
}

body.admin .admin-main { padding: 2rem 0 3rem; }

body.admin .guides, body.admin .sources { list-style: none; margin: 0; padding: 0; }

body.admin .guides li, body.admin .sources li { border-top: 1px solid var(--line); padding: 0.8rem 0; }

body.admin .guides a { color: var(--green); text-decoration: none; font-size: 1.15rem; }

.stack { display: grid; gap: 0.75rem; max-width: 40rem; }

.stack label, body.admin label { display: grid; gap: 0.3rem; }

body.admin input, body.admin select, body.admin textarea, body.admin button {
  width: 100%;
  font: inherit;
  color: var(--ink);
  background: #fff;
  border: 1px solid #d9d0c2;
  padding: 0.7rem 0.75rem;
}

body.admin button {
  width: auto;
  background: var(--green);
  color: var(--ivory);
  border-color: var(--green);
  cursor: pointer;
}

.sheet { width: 100%; border-collapse: collapse; margin: 1rem 0 2rem; }

.sheet th, .sheet td {
  text-align: start;
  vertical-align: top;
  border-top: 1px solid var(--line);
  padding: 0.7rem 0.6rem 0.7rem 0;
}

.media-row { border-top: 1px solid var(--line); padding: 1rem 0; }


/* -------------------------------------------------------------------------
   IMMO ALGÉRIEN — visual refresh, November 2026
   Editorial architecture: wider canvas, confident hierarchy, tactile detail.
   This layer intentionally leaves the admin interface and application logic
   untouched.
   ------------------------------------------------------------------------- */
:root {
  --green: #173d32;
  --green-deep: #0b241d;
  --ivory: #f5f0e7;
  --paper: #faf8f3;
  --ink: #20251f;
  --muted: #6b6b60;
  --gold: #a78348;
  --gold-soft: #e7d2a5;
  --line: rgba(23, 61, 50, .15);
  --measure: 46rem;
}
body.publication { background: #faf8f3; }
.publication .wrap { width: min(1320px, calc(100% - 9vw)); }
.publication .mast {
  background: rgba(250,248,243,.96);
  border-bottom: 1px solid rgba(23,61,50,.12);
  box-shadow: 0 5px 24px rgba(18,36,29,.035);
}
.publication .mast-bar { min-height: 5.2rem; }
.publication .brand { gap: .9rem; }
.publication .brand-sigil {
  width: 48px; height: 48px; align-items:center; justify-content:center;
  border: 1px solid rgba(167,131,72,.55); border-radius: 50%;
}
.publication .brand-sigil svg { width: 35px; height: 35px; }
.publication .brand-name { font-size: 1.72rem; letter-spacing: -.045em; }
.publication .brand-tag { font-size: .82rem; letter-spacing: .035em; }
.publication .sections {
  gap: .15rem 1.45rem;
  padding: 0 0 .8rem;
  align-items: center;
}
.publication .sections a {
  font-size: .91rem; color: #4e5b52; white-space: nowrap;
  transition: color .2s ease;
}
.publication .sections a:hover,
.publication .sections a[aria-current="page"] { color: var(--gold); border-bottom-color: var(--gold); }

/* Hero */
.publication .stage {
  min-height: min(790px, calc(100svh - 7rem));
  min-height: min(790px, calc(100vh - 7rem));
  align-items: center;
  isolation: isolate;
  overflow: hidden;
}
.publication .stage .hero img {
  object-position: center 57%;
  filter: saturate(.82) contrast(1.04);
}
.publication .stage::after {
  background:
    linear-gradient(90deg, rgba(5,20,15,.82) 0%, rgba(5,20,15,.52) 43%, rgba(5,20,15,.08) 100%),
    linear-gradient(0deg, rgba(5,20,15,.52), transparent 52%);
}
html[dir="rtl"] .publication .stage::after {
  background:
    linear-gradient(270deg, rgba(5,20,15,.82) 0%, rgba(5,20,15,.52) 43%, rgba(5,20,15,.08) 100%),
    linear-gradient(0deg, rgba(5,20,15,.52), transparent 52%);
}
.publication .stage-copy {
  padding: 6rem 0 5.4rem;
}
.publication .stage .eyebrow {
  display: inline-flex; align-items: center; gap: .75rem;
  margin-bottom: 1.35rem; color: var(--gold-soft);
  letter-spacing: .22em; font-size: .76rem;
}
.publication .stage .eyebrow::before {
  content:""; display:block; width:2.5rem; height:1px; background:var(--gold-soft);
}
.publication .stage h1 {
  max-width: 10.5em;
  font-size: clamp(3.7rem, 7vw, 6.8rem);
  line-height: .98;
  letter-spacing: -.055em;
  text-wrap: balance;
  text-shadow: 0 3px 30px rgba(0,0,0,.12);
}
.publication .stage .lede {
  max-width: 39rem; margin-top: 1.45rem;
  font-size: clamp(1.12rem, 1.6vw, 1.4rem);
  line-height: 1.55; color: rgba(250,248,243,.9);
}
.publication .search {
  width: min(900px,100%);
  grid-template-columns: minmax(0,1.7fr) minmax(0,.9fr) minmax(0,1fr) auto;
  gap: .55rem; margin-top: 2.2rem; padding: .7rem;
  border: 1px solid rgba(255,255,255,.5);
  border-radius: 4px;
  box-shadow: 0 24px 70px rgba(0,0,0,.26);
}
.publication .search label { padding: .2rem .65rem; }
.publication .search span { font-size: .66rem; letter-spacing: .13em; }
.publication .search input,
.publication .search select { min-height: 2.5rem; font-size: .98rem; }
.publication .search button {
  min-height: 3.65rem; padding-inline: 1.5rem;
  border-radius: 2px; letter-spacing: .06em;
}
.publication .stage-note { margin-top: .9rem; font-size: .88rem; }
.publication .stage .hero figcaption {
  opacity: .72; font-size: .68rem; max-width: 15rem;
}

/* Department index */
.publication .dept-section { padding: 5.8rem 0 2.8rem; }
.publication .section-title {
  display:flex; align-items:center; gap:1.1rem;
  margin-bottom:1.65rem; font-size:clamp(2.2rem,4vw,3.4rem);
  letter-spacing:-.045em;
}
.publication .section-title::after {
  content:""; flex:1; height:1px; background:var(--line);
  transform: translateY(.2rem);
}
.publication .dept-board {
  grid-template-columns: 1.28fr 1fr 1fr;
  grid-template-areas:
    "lead build admin"
    "lead finance programmes"
    "invest invest wilayas"
    "orgs news diaspora";
  gap: .85rem;
}
html[dir="rtl"] .publication .dept-board {
  grid-template-areas:
    "admin build lead"
    "programmes finance lead"
    "wilayas invest invest"
    "diaspora news orgs";
}
.publication .dept-tile {
  min-height: 225px; padding: 1.55rem;
  border-radius: 3px;
  isolation:isolate;
  background:
    radial-gradient(circle at 92% 12%, rgba(231,210,165,.15), transparent 38%),
    linear-gradient(145deg,#1b4a3c,#102d24);
  box-shadow: 0 8px 24px rgba(15,43,33,.07);
  transition: transform .28s ease, box-shadow .28s ease;
}
.publication .dept-tile[data-key="immobilier"] {
  min-height:100%; background:
    linear-gradient(155deg,rgba(8,27,21,.04),rgba(5,22,16,.8)),
    radial-gradient(circle at 80% 15%,rgba(231,210,165,.2),transparent 38%),
    #102d24;
}
.publication .dept-tile[data-key="administration"],
.publication .dept-tile[data-key="programmes"],
.publication .dept-tile[data-key="organisations"] {
  background: linear-gradient(145deg,#f0e9dc,#e6ddce);
}
.publication .dept-tile[data-key="investissement"] {
  background: linear-gradient(135deg,#244d3f,#17382e);
}
.publication .dept-tile[data-key="diaspora"] {
  background: linear-gradient(145deg,#142f28,#0a211b);
}
.publication .dept-tile::after {
  content:""; position:absolute; z-index:-1; inset:0;
  background:linear-gradient(0deg,rgba(0,0,0,.19),transparent 65%);
  opacity:.7;
}
.publication .dept-tile:hover {
  transform:translateY(-5px);
  box-shadow:0 18px 34px rgba(15,43,33,.16);
}
.publication .dept-visual {
  top:1.15rem; inset-inline-end:1.15rem; width:2.35rem;
  opacity:.72; color:var(--gold-soft);
}
.publication .dept-tile[data-key="administration"] .dept-visual,
.publication .dept-tile[data-key="programmes"] .dept-visual,
.publication .dept-tile[data-key="organisations"] .dept-visual { color:var(--green); }
.publication .dept-copy { max-width:24rem; }
.publication .num {
  margin-bottom:.48rem; font-size:.78rem; letter-spacing:.16em;
  color:var(--gold-soft);
}
.publication .dept-copy strong {
  font-size:clamp(1.45rem,2vw,2rem);
  letter-spacing:-.025em; line-height:1.12;
}
.publication .dept-copy em {
  max-width:26rem; margin-top:.55rem;
  font-size:.94rem; line-height:1.45; opacity:.83;
}
.publication .dept-tile[data-key="administration"] .num,
.publication .dept-tile[data-key="programmes"] .num,
.publication .dept-tile[data-key="organisations"] .num { color:var(--gold); }

/* Editorial rhythm and feature spread */
.publication .edition { padding:3.8rem 0 1.2rem; }
.publication .spread {
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(2rem,5vw,5.2rem); align-items:center;
  padding:5.2rem 0 4.3rem;
}
.publication .spread-photo { position:relative; }
.publication .spread-photo img {
  width:100%; height:clamp(380px,44vw,610px); object-fit:cover;
  border-radius:2px; box-shadow:18px 18px 0 #eae2d4;
}
.publication .spread-copy { padding:1.2rem 0; }
.publication .spread-copy .kicker { color:var(--gold); }
.publication .spread-copy h2 {
  max-width:12em; margin-bottom:1.3rem;
  font-size:clamp(2.4rem,4.2vw,4.1rem); line-height:1.04;
}
.publication .spread-copy > .fine { max-width:34rem; }
.publication .story a { padding:1.1rem 0; gap:.35rem; }
.publication .story strong { font-size:1.35rem; line-height:1.22; }
.publication .story-sum { max-width:44rem; color:#5b6058; font-size:.98rem; line-height:1.5; }
.publication .story-kicker,.publication .story-date { font-size:.68rem; letter-spacing:.12em; }
.publication .journal {
  padding:4.4rem 0 3.5rem;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  gap:clamp(2rem,5vw,5rem);
}
.publication .journal h2 { font-size:clamp(2rem,3.3vw,2.8rem); }
.publication .journal > div + div {
  padding-inline-start:clamp(1.2rem,3vw,3rem);
  border-inline-start:1px solid var(--line);
}
.publication .themes {
  padding:4.5rem 0 5rem;
  gap:1rem;
}
.publication .theme {
  position:relative; padding:1.8rem 1.55rem 1rem;
  min-height:300px; background:#f0eadd;
  border-top:2px solid var(--gold);
}
.publication .theme[data-key="construction"] { background:#e8eee8; }
.publication .theme[data-key="diaspora"] { background:#e9e7df; }
.publication .theme .dept-visual { width:1.9rem; margin-bottom:.8rem; }
.publication .theme h2 { font-size:1.8rem; line-height:1.15; }
.publication .theme .story strong { font-size:1.08rem; }
.publication .org-rail { padding:1.8rem 0 5rem; }
.publication .org-rail h2 { font-size:clamp(2rem,3vw,2.8rem); }
.publication .org-names { gap:.8rem; }
.publication .org-names a {
  display:inline-block; padding:.35rem .75rem;
  background:#f0eadd; border:1px solid rgba(167,131,72,.3);
  font-family:inherit; font-size:1.02rem;
}

/* Wilaya explorer */
.publication .atlas-band {
  padding:5.5rem 0 5rem;
  background:
    radial-gradient(ellipse at 15% 5%,rgba(167,131,72,.16),transparent 36%),
    linear-gradient(135deg,#102e25,#091f19);
}
.publication .atlas-layout {
  grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);
  gap:clamp(2rem,5vw,5rem);
}
.publication .atlas-intro h2 {
  max-width:10em; font-size:clamp(2.5rem,4.2vw,4.1rem);
  line-height:1.06;
}
.publication .country { width:min(100%,240px); margin:1.1rem 0; opacity:.9; }
.publication .atlas-search { display:block; margin-top:1.6rem; }
.publication .atlas-list { min-width:0; }
.publication .coast-photo { margin-bottom:1.4rem; }
.publication .coast-photo img {
  height:clamp(190px,22vw,300px); border-radius:2px;
  filter:saturate(.82);
}
.publication .atlas-band .atlas {
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0 .9rem; margin-top:.4rem;
}
.publication .atlas-band .atlas a {
  font-size:.92rem; padding:.55rem .1rem;
  border-bottom-color:rgba(244,239,230,.17);
}
.publication .atlas-band .atlas a span { font-size:.76rem; }

/* Chapter, guide, article and tool pages */
.publication .chapter-head { padding:3rem 0 3.6rem; }
.publication .chapter-head h1 { font-size:clamp(3rem,5vw,5rem); }
.publication .chapter .stories { gap:0 2.4rem; }
.publication .essay .hero img { height:min(66vh,680px); object-position:center 55%; }
.publication .prose, .publication .prose-page, .publication .place-body { padding:3rem 0 5rem; }
.publication .prose .body { font-size:1.18rem; line-height:1.82; }
.publication .prose .body h2 { margin-top:2.5rem; font-size:2rem; }
.publication .prose .body h3 { margin-top:1.8rem; font-size:1.45rem; }
.publication .crumbs { font-size:.84rem; }
.publication .quiet { border-inline-start:3px solid var(--gold); padding:1.2rem 1.4rem; }
.publication .foot { padding:4rem 0 3rem; }
.publication .foot-grid { gap:2.5rem; }
.publication .foot-brand .brand-name { font-size:1.8rem; }

/* Arabic: preserve the same visual hierarchy without forcing Latin spacing. */
html[lang="ar"] .publication .stage h1 {
  max-width:13em; font-size:clamp(3rem,6vw,5.4rem); line-height:1.3;
}
html[lang="ar"] .publication .stage .lede { line-height:1.9; }
html[lang="ar"] .publication .dept-copy strong { line-height:1.35; }
html[lang="ar"] .publication .story strong { line-height:1.5; }
html[lang="ar"] .publication .atlas-band .atlas a { line-height:1.7; }

/* Responsive layouts */
@media (max-width: 980px) {
  .publication .wrap { width:min(100% - 7vw, 760px); }
  .publication .stage { min-height:680px; }
  .publication .stage-copy { padding:7rem 0 4.2rem; }
  .publication .stage h1 { font-size:clamp(3.2rem,9vw,5.1rem); }
  .publication .dept-section { padding-top:4rem; }
  .publication .dept-board,
  html[dir="rtl"] .publication .dept-board {
    grid-template-columns:repeat(2,minmax(0,1fr));
    grid-template-areas:none;
  }
  .publication .dept-tile { min-height:205px; }
  .publication .dept-tile[data-key="immobilier"] { min-height:205px; }
  .publication .spread { grid-template-columns:1fr 1fr; gap:2rem; }
  .publication .journal { grid-template-columns:1fr 1fr; }
  .publication .themes { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .publication .atlas-layout { grid-template-columns:.8fr 1.2fr; }
  .publication .atlas-band .atlas { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 640px) {
  .publication .wrap { width:calc(100% - 2.2rem); }
  .publication .mast-bar { min-height:4.4rem; }
  .publication .brand { flex:1 0 100%; }
  .publication .brand-sigil { width:39px; height:39px; }
  .publication .brand-sigil svg { width:30px; height:30px; }
  .publication .brand-name { font-size:1.35rem; }
  .publication .brand-tag { font-size:.72rem; }
  .publication .nav-toggle { margin-inline-start:0; }
  .publication .langs { margin-inline-start:0; }
  .publication .stage { min-height:690px; min-height:78svh; }
  .publication .stage-copy { padding:5.5rem 0 3.5rem; }
  .publication .stage h1 { max-width:9em; font-size:clamp(3rem,13vw,4.3rem); }
  .publication .stage .lede { max-width:32rem; font-size:1.05rem; }
  .publication .search { grid-template-columns:1fr; gap:.25rem; margin-top:1.5rem; padding:.7rem; }
  .publication .search label { padding:.25rem .4rem; }
  .publication .search button { min-height:3.2rem; margin-top:.25rem; }
  .publication .stage .hero figcaption { display:block; max-width:70vw; bottom:.6rem; }
  .publication .dept-section { padding:3.7rem 0 1.2rem; }
  .publication .section-title { font-size:2.15rem; }
  .publication .dept-board,
  html[dir="rtl"] .publication .dept-board { grid-template-columns:1fr; gap:.65rem; }
  .publication .dept-tile,
  .publication .dept-tile[data-key="immobilier"] { min-height:168px; padding:1.2rem; }
  .publication .dept-visual { width:1.85rem; }
  .publication .dept-copy strong { font-size:1.5rem; }
  .publication .spread { grid-template-columns:1fr; gap:1.8rem; padding:3.2rem 0; }
  .publication .spread-photo img { height:290px; box-shadow:9px 9px 0 #eae2d4; }
  .publication .spread-copy h2 { font-size:2.65rem; }
  .publication .journal { grid-template-columns:1fr; gap:2rem; padding:3rem 0; }
  .publication .journal > div + div {
    padding-inline-start:0; border-inline-start:0;
    border-top:1px solid var(--line); padding-top:1.8rem;
  }
  .publication .themes { grid-template-columns:1fr; padding:3rem 0; }
  .publication .theme { min-height:0; padding:1.4rem 1.2rem .8rem; }
  .publication .org-rail { padding-bottom:3.4rem; }
  .publication .atlas-band { padding:3.6rem 0; }
  .publication .atlas-layout { grid-template-columns:1fr; gap:1.8rem; }
  .publication .country { width:150px; }
  .publication .coast-photo img { height:210px; }
  .publication .atlas-band .atlas { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .publication .chapter-head { padding:2rem 0 2.5rem; }
  .publication .chapter-title { grid-template-columns:1fr; gap:.5rem; }
  .publication .chapter-head .dept-visual,
  .publication .essay-band svg { width:2.2rem; }
  .publication .prose, .publication .prose-page, .publication .place-body {
    width:calc(100% - 2.2rem); padding:2.2rem 0 3.5rem;
  }
  .publication .essay .hero img { height:340px; }
  .publication .foot-grid { grid-template-columns:1fr; gap:1.8rem; }
}
@media (prefers-reduced-motion: reduce) {
  .publication *, .publication *::before, .publication *::after {
    scroll-behavior:auto !important; transition:none !important; animation:none !important;
  }
}

.publication .centimes { grid-template-columns: 1fr; max-width: 36rem; }
.publication .centimes input,
.publication .centimes textarea,
.enquiry textarea { width: 100%; font: inherit; }
.tool-nav { display: flex; flex-wrap: wrap; gap: .45rem 1.1rem; margin: 1.3rem 0 1.6rem; }
.tool-nav a[aria-current="page"] { color: var(--gold); }
.dossier { display: grid; gap: .2rem; margin: 1.4rem 0 1rem; }
.dossier div { padding: .85rem 0; border-top: 1px solid var(--line); }
.dossier dt { font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--gold); }
.dossier dd { margin: .35rem 0 0; }

.publication .dept-tile { padding: 0; }
.publication .dept-copy {
  position: relative;
  z-index: 2;
  flex: 1;
  min-height: 225px;
  margin-top: 0;
  padding: 1.55rem;
  color: inherit;
  text-decoration: none;
}
.publication .dept-tile.has-photo,
.publication .dept-tile.has-photo .dept-copy { color: #faf8f3; }
.publication .dept-photo {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.publication .dept-tile.has-photo::after {
  z-index: 1;
  opacity: 1;
  background: linear-gradient(180deg, rgba(8, 22, 18, .55) 0%, rgba(8, 22, 18, .12) 34%, rgba(8, 22, 18, .86) 100%);
}
.publication .dept-tile.has-photo .num,
.publication .dept-tile.has-photo[data-key="administration"] .num,
.publication .dept-tile.has-photo[data-key="programmes"] .num,
.publication .dept-tile.has-photo[data-key="organisations"] .num { color: var(--gold-soft); }
.publication .place-credit {
  position: absolute;
  z-index: 3;
  top: .75rem;
  inset-inline-end: .9rem;
  max-width: 13rem;
  margin: 0;
  color: #f6f1e6;
  font-family: "Source Sans 3", sans-serif;
  font-size: .68rem;
  line-height: 1.35;
  text-align: end;
  text-shadow: 0 1px 8px rgba(0, 0, 0, .55);
}
.publication .place-credit a { color: inherit; }
.chapter-photo { position: relative; margin: 0; }
.chapter-photo img {
  display: block;
  width: 100%;
  height: min(320px, 42vw);
  object-fit: cover;
}
.chapter-photo figcaption {
  position: absolute;
  right: 0;
  bottom: .75rem;
  left: 0;
  color: #f6f1e6;
  font-family: "Source Sans 3", sans-serif;
  font-size: .78rem;
  text-shadow: 0 1px 8px rgba(0, 0, 0, .55);
}
.chapter-photo figcaption a { color: inherit; }
.hp { position: absolute; left: -9999px; height: 0; width: 0; overflow: hidden; }
html[dir="rtl"] .hp { left: auto; right: -9999px; }
