/*
Theme Name: Assafra Theme 3.0
Theme URI: https://assafra.com/
Author: OpenAI
Author URI: https://openai.com/
Description: Assafra 3.0 theme with destinations catalogue system, destination item pages, contextual astrolabe navigation, and owner-mode shortcuts.
Version: 3.0.0
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
Text Domain: assafra-base
*/

/* =========================================================
   NOTE
   This file has been reorganised for readability only.
   Existing behaviour has been preserved as closely as possible.
   Sections marked POSSIBLE DELETE / DUPLICATE / REVIEW are retained
   intentionally and should only be cleaned after testing.
   ========================================================= */



/* =========================================================
   PART 1 — ROOT VARIABLES (COLOURS, GRID, TYPOGRAPHY)
   ========================================================= */

@import url('https://fonts.googleapis.com/css2?family=Literata:opsz,wght@7..72,400;7..72,500;7..72,600&family=Manrope:wght@400;500;600&display=swap');

:root {
  --assafra-bg: #E9E9E7;
  --assafra-text: #3A3A3A;
  --assafra-secondary: #8F8C86;
  --assafra-grid-step: 6mm;
  --assafra-grid-opacity: 0.35;
  --assafra-header-pad: 12mm;
  --assafra-text-width: min(max(50vw, 640px), 860px);
  --assafra-margin-width: calc(var(--assafra-grid-step) * 10);
  --assafra-gap: calc(var(--assafra-grid-step) * 2);
  --assafra-radius: 8px;
  --assafra-line: 1px;
  --assafra-wordmark-height: 100px;
  --assafra-control-height: 38px;
  --assafra-control-square: 38px;
  --assafra-font-body: "Literata", Georgia, serif;
  --assafra-font-heading: "Literata", Georgia, serif;
  --assafra-font-ui: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  --destination-bg: #E2E2E0;
  --destination-text: #2F2F2F;
  --destination-secondary: #76736D;
  --destination-grid-opacity: 0.65;

  --assafra-footer-z: 50;
  --assafra-panel-z: 70;
  --assafra-lightbox-z: 90;
}

/* =========================================================
   PART 2 — GLOBAL BASE (BODY, LINKS, GRID BACKGROUND)
   ========================================================= */

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background-color: var(--assafra-bg);
  color: var(--assafra-text);
  font-family: var(--assafra-font-body);
  font-size: 18px;
  line-height: 1.72;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  position: relative;
}
body::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: var(--assafra-grid-opacity);
  background-image: url('assets/images/crosshair.png');
  background-repeat: repeat;
  background-position: top left;
  background-size: var(--assafra-grid-step) var(--assafra-grid-step);
}
body.assafra-destination-mode {
  background-color: var(--destination-bg);
  color: var(--destination-text);
}
body.assafra-destination-mode::before {
  opacity: var(--destination-grid-opacity);
}
body.admin-bar .site-footer-sticky,
body.admin-bar .assafra-mobile-nav-trigger,
body.admin-bar .assafra-mobile-nav-panel {
  bottom: 0;
}
img { max-width: 100%; height: auto; display: block; }
a {
  color: inherit;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.14em;
}
a:hover,
a:focus { color: inherit; }
button,
input,
select,
textarea { font: inherit; }
.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}
[hidden] { display: none !important; }

/* =========================================================
   PART 3 — LAYOUT SYSTEM (SITE, SHELL, RAILS, CONTENT)
   ========================================================= */

.site {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  position: relative;
  z-index: 1;
}
.site-main {
  flex: 1 0 auto;
  position: relative;
  z-index: 1;
  padding-bottom: 200px;
}
.assafra-shell {
  width: min(100%, calc(var(--assafra-text-width) + (2 * var(--assafra-margin-width)) + (2 * var(--assafra-gap))));
  margin: 0 auto;
  display: grid;
  grid-template-columns: var(--assafra-margin-width) minmax(0, var(--assafra-text-width)) var(--assafra-margin-width);
  column-gap: var(--assafra-gap);
  align-items: start;
}
.assafra-left-rail,
.assafra-right-rail {
  position: relative;
  min-height: 100%;
}
.assafra-content-column {
  min-width: 0;
  position: relative;
  z-index: 2;
  background: var(--assafra-bg);
  padding: 20px;
}
body.assafra-destination-mode .assafra-content-column {
  background: var(--destination-bg);
}
.assafra-content-column--wide {
  width: min(100%, calc(var(--assafra-text-width) + var(--assafra-margin-width)));
  margin-inline: auto;
}

/* =========================================================
   PART 4 — TYPOGRAPHY (HEADINGS, BODY, BLOCKS)
   ========================================================= */

.entry-title,
.page-title,
.archive-title,
.search-title,
.destination-title,
.destination-catalogue-title,
.deck-title {
  margin: 0 0 1rem;
  font-family: var(--assafra-font-heading);
  font-weight: 500;
  line-height: 1.14;
  font-size: clamp(2rem, 4vw, 3.6rem);
}
p { margin: 0 0 1.1em; }
h1, h2, h3, h4, h5, h6 {
  margin: 1.7em 0 0.45em;
  font-family: var(--assafra-font-heading);
  font-weight: 500;
  line-height: 1.22;
}
blockquote {
  margin: 1.5em 0;
  padding-left: 1rem;
  border-left: 1px solid var(--assafra-secondary);
}
body.assafra-destination-mode blockquote {
  border-left-color: var(--destination-secondary);
}
.entry-content > *:first-child,
.page-content > *:first-child { margin-top: 0; }
.entry-content > *:last-child,
.page-content > *:last-child { margin-bottom: 0; }

/* =========================================================
   4B. TYPOGRAPHY SYSTEM — ASSAFRA v1.0
   ========================================================= */

/* Headings */
h1, h2, h3, h4 {
  font-family: serif;
  color: #3A3A3A;
  line-height: 1.3;
  font-weight: normal;
}

h1 { font-size: 1.8rem; }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.3rem; }
h4 { font-size: 1.1rem; }

/* Body */
body,
p,
.page-content,
.destination-catalogue-summary {
  font-family: serif;
  font-size: 1rem;
  line-height: 1.6;
  color: #3A3A3A;
}

/* Meta */
.assafra-deck-excerpt,
.destination-child-intro,
.assafra-kiss-line,
.assafra-feelings {
  font-family: sans-serif;
  font-size: 0.9rem;
  line-height: 1.4;
  color: #8F8C86;
}

.assafra-feelings-line {
  margin: 0, 0, 1rem;
  font-family: sans-serif;
  font-size: 0.9rem;
  line-height: 1.4;
  color: #8F8C86;
}

.assafra-feelings-line strong {
  font-weight: 200
;
}

.assafra-feelings-line a {
  color: inherit;
  text-decoration: underline;
}

/* =========================================================
   PART 5 — HEADER (WORDMARK POSITIONING)
   ========================================================= */

.site-header {
  width: 100%;
  padding: var(--assafra-header-pad);
  position: relative;
  z-index: 2;
  background: transparent;
}
.site-header-inner {
  width: 100%;
  display: flex;
  justify-content: flex-end;
  align-items: flex-start;
}
.site-branding {
  margin: 0;
  text-align: right;
}
.site-branding a {
  display: inline-block;
  text-decoration: none;
}
.wordmark,
.site-branding img {
  display: block;
  height: var(--assafra-wordmark-height);
  width: auto;
  margin-left: auto;
  margin-right: 0;
}
.site-title-fallback {
  font-family: var(--assafra-font-heading);
  font-size: 3rem;
  line-height: 1;
  font-weight: 500;
  text-align: right;
}

/* =========================================================
   PART 6 — CORE CONTENT (POSTS, PAGES, STORIES, DECKS)
   ========================================================= */

.assafra-article-header,
.deck-synopsis-wrap { margin: 0 0 1.5rem; }

.assafra-end-metadata {
  margin-top: 2rem;
  text-align: right;
  font-family: var(--assafra-font-ui);
  color: var(--assafra-secondary);
  font-size: 0.95rem;
  line-height: 1.5;
  opacity: 0.85;
}
.assafra-end-metadata a {
  color: inherit;
  text-decoration: none;
}
.assafra-end-metadata a:hover,
.assafra-end-metadata a:focus { text-decoration: underline; }

.assafra-photo-block {
  width: 66%;
  margin: 1.2rem 0 0 auto;
}
.assafra-photo-caption {
  margin-top: 0.45rem;
  text-align: right;
  font-family: var(--assafra-font-ui);
  color: var(--assafra-secondary);
  font-size: 0.9rem;
}
.assafra-margin-anchor {
  position: relative;
  display: block;
  width: 100%;
  height: 0;
}
.assafra-doodle,
.assafra-margin-image {
  position: absolute;
  top: 0;
  width: clamp(120px, 14vw, 220px);
  z-index: 5;
}

.assafra-doodle {
  position: absolute;
  width: clamp(120px, 14vw, 220px);
  top: 0;
  opacity: 0.9;
}

.assafra-doodle--top {
  top: -40px;
}

.assafra-doodle--mid {
  top: 120px;
}

.assafra-doodle--bottom {
  top: 260px;
}

.assafra-doodle--left,
.assafra-margin-image--left { right: calc(100% + var(--assafra-gap)); }
.assafra-doodle--right,
.assafra-margin-image--right {
  left: auto;
  right: calc((var(--assafra-margin-width) + var(--assafra-gap)) * -1);
}
.assafra-doodle--top {
  top: -40px;
}

.assafra-doodle--mid {
  top: 120px;
}

.assafra-doodle--bottom {
  top: 260px;
}

.deck-list {
  display: grid;
  gap: 1.6rem;
}
.deck-card {
  padding-bottom: 1.25rem;
  border-bottom: 1px solid rgba(143,140,134,0.35);
}
.deck-card:last-child { border-bottom: 0; }
.deck-card-title {
  margin: 0 0 0.55rem;
  font-family: var(--assafra-font-heading);
  font-size: clamp(1.45rem, 2vw, 2rem);
  font-weight: 500;
}
.deck-card-title a,
.entry-title a { text-decoration: none; }
.deck-read-more {
  display: inline-block;
  margin-top: 0.35rem;
  text-decoration: none;
}
.deck-read-more:hover,
.deck-read-more:focus { text-decoration: underline; }

.assafra-sequence-nav {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 2.2rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(143,140,134,0.45);
}
.assafra-sequence-nav a { text-decoration: none; }
.assafra-sequence-nav a:hover,
.assafra-sequence-nav a:focus { text-decoration: underline; }

/* === HERO IMAGE (GLOBAL) === */
.assafra-hero {
  width: 100%;
  margin: 0 0 1.5rem 0;
}

.assafra-hero img {
  display: block;
  width: 100%;
  height: auto;
}

/* =========================================================
   STORY EXIT — FEELING (LEFT) + DESTINATIONS (RIGHT)
   ========================================================= */

.assafra-story-exit {
  display: flex;
  justify-content: space-between;
  gap: 2rem;
  margin-top: 1.5rem;
}

.assafra-story-exit-column {
  width: 48%;
}

/* LEFT SIDE — FEELING */

.assafra-story-exit-column--feeling {
  text-align: left;
}

.assafra-similar-stories {
  margin-top: 0;
}

.assafra-similar-stories-title {
  margin: 0 0 0.75rem;
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--assafra-secondary);
  text-align: left;
}

.assafra-similar-stories-list {
  display: grid;
  gap: 0.35rem;
  text-align: left;
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
}

.assafra-similar-stories-list p {
  margin: 0;
}

.assafra-similar-stories-list a {
  text-decoration: none;
}

.assafra-similar-stories-list a:hover,
.assafra-similar-stories-list a:focus {
  text-decoration: underline;
}


/* RIGHT SIDE — DESTINATIONS */

.assafra-story-exit-column--destinations {
  text-align: right;
}

.assafra-related-tools {
  margin-top: 0;
}

.assafra-related-tools-title {
  margin: 0 0 0.75rem;
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--assafra-secondary);
  text-align: right;
}

.assafra-related-tools-list {
  display: grid;
  gap: 0.35rem;
  text-align: right;
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
}

.assafra-related-tools-list p {
  margin: 0;
}

.assafra-related-tools-list a {
  text-decoration: none;
}

.assafra-related-tools-list a:hover,
.assafra-related-tools-list a:focus {
  text-decoration: underline;
}

.assafra-shared-line {
  margin-top: 6rem;
  margin-bottom: 2rem;
  cursor: pointer;
}

.assafra-shared-line a,
.assafra-shared-line .assafra-share-trigger {
  text-decoration: none;
  border-bottom: 1px solid rgba(58,58,58,0.3);
}

.assafra-shared-line a:hover,
.assafra-shared-line a:focus,
.assafra-shared-line .assafra-share-trigger:hover,
.assafra-shared-line .assafra-share-trigger:focus {
  border-bottom: 1px solid rgba(58,58,58,0.6);
}

.assafra-shared-line a:active,
.assafra-shared-line .assafra-share-trigger:active {
  opacity: 0.6;
}

.assafra-back-to-deck {
  margin: 0 0 2rem;
}

.assafra-back-to-deck a {
  color: inherit;
  text-decoration: none;
}

.assafra-back-to-deck a:hover,
.assafra-back-to-deck a:focus {
  text-decoration: underline;
}

.destination-main-image {
  margin: 0 0 1.5rem;
}

.destination-main-image img {
  width: 100%;
  height: auto;
  display: block;
}

.destination-main-image--framed {
  padding: 0.75rem;
  border: 1px solid rgba(143,140,134,0.25);
  background: rgba(255,255,255,0.35);
}

.destination-secondary--split {
  display: flex;
  justify-content: space-between;
  gap: 2rem;
}

.destination-secondary-column {
  width: 48%;
}

.destination-secondary-column--meta {
  text-align: left;
}

.destination-secondary-column--stories {
  text-align: right;
}

.destination-secondary-column--stories h2 {
  margin: 0 0 0.75rem;
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--destination-secondary);
  text-align: right;
}

.destination-secondary--assafra {
  margin-top: 2.5rem;
}

.destination-assafra-meta {
  margin-bottom: 1.5rem;
}

.destination-notes-licence {
  width: 100%;
}

.assafra-story-exit {
  display: flex;
  justify-content: space-between;
  gap: 2rem;
  margin-top: 1.5rem;
}

.assafra-story-exit-column {
  width: 48%;
}

/* LEFT: Feeling */
.assafra-story-exit-column--feeling {
  text-align: left;
}

/* RIGHT: Destinations */
.assafra-story-exit-column--destinations {
  text-align: right;
}

/* =========================================================
   PART 7 — FOOTER SYSTEM (STRUCTURE + ALIGNMENT)
   ========================================================= */

.site-footer-sticky {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  z-index: var(--assafra-footer-z);
  background: var(--assafra-bg);
  padding: 12px 12mm 4px;
  margin: 0;
}
body.assafra-destination-mode .site-footer-sticky {
  background: var(--destination-bg);
}
.site-footer-sticky::after {
  content: "© Assafra";
  position: absolute;
  left: 12mm;
  bottom: 4px;
  font-size: 10px;
  font-family: var(--assafra-font-ui);
  color: var(--assafra-secondary);
  opacity: 0.45;
  pointer-events: none;
  white-space: nowrap;
}
.site-footer-inner {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 1rem;
  min-height: 132px;
}
.assafra-footer-left {
  position: relative;
  top: -18px;
  display: flex;
  align-items: center;
  width: auto;
}
.assafra-footer-right {
  display: flex;
  align-items: flex-end;
  padding-right: 16px;
  padding-bottom: 6px;
}

/* =========================================================
   PART 8 — ASTROLABE OPERATION (BUTTON + PANELS)
   ========================================================= */

.assafra-astrolabe-button {
  width: 120px;
  height: 120px;
  min-width: 120px;
  min-height: 120px;
  padding: 0;
  border: 0;
  background: transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: inherit;
  cursor: pointer;
}
.assafra-astrolabe-button img {
  width: 120px;
  height: 120px;
  max-width: none;
  max-height: none;
  object-fit: contain;
  display: block;
}
.assafra-panel {
  position: fixed;
  right: 12mm;
  bottom: calc(70px + env(safe-area-inset-bottom, 0px));
  width: min(340px, calc(100vw - 24mm));
  padding: 0.8rem;
  border: 1px solid rgba(143,140,134,0.45);
  border-radius: 12px;
  background: rgba(233,233,231,0.97);
  backdrop-filter: blur(6px);
  box-shadow: 0 8px 40px rgba(58,58,58,0.08);
  opacity: 0;
  transform: translateY(8px);
  pointer-events: none;
  transition: opacity 0.18s ease, transform 0.18s ease;
  z-index: var(--assafra-panel-z);
}
body.assafra-destination-mode .assafra-panel {
  background: rgba(226,226,224,0.97);
}
.assafra-panel.is-open {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.assafra-panel-list {
  display: grid;
  gap: 0.25rem;
}
.assafra-panel-list a,
.assafra-panel-list button {
  display: block;
  width: 100%;
  padding: 0.5rem 0.4rem;
  border: 0;
  border-radius: 6px;
  background: transparent;
  text-align: left;
  color: inherit;
  text-decoration: none;
  font-family: var(--assafra-font-ui);
  cursor: pointer;
}
.assafra-panel-list a:hover,
.assafra-panel-list a:focus,
.assafra-panel-list button:hover,
.assafra-panel-list button:focus {
  background: rgba(143,140,134,0.12);
}

/* =========================================================
   PART 9 — SEARCH + ARCHIVE CONTROLS
   ========================================================= */

.assafra-search-archive {
  display: flex;
  align-items: center;
}
.assafra-control-square,
.assafra-search-wrap {
  border: 1px solid var(--assafra-secondary);
  border-radius: var(--assafra-radius);
  background: var(--assafra-bg);
  color: var(--assafra-secondary);
}
body.assafra-destination-mode .assafra-control-square,
body.assafra-destination-mode .assafra-search-wrap {
  border-color: var(--destination-secondary);
  background: var(--destination-bg);
  color: var(--destination-secondary);
}
.assafra-control-square {
  flex: 0 0 auto;
  width: var(--assafra-control-square);
  height: var(--assafra-control-square);
  margin-right: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}
.assafra-search-wrap {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  width: min(34vw, 320px);
  height: var(--assafra-control-height);
  min-height: var(--assafra-control-height);
  padding: 0 0.8rem;
  gap: 0.55rem;
  position: relative;
}
.assafra-search-wrap svg,
.assafra-control-square svg,
.assafra-mobile-nav-trigger svg {
  width: 18px;
  height: 18px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.5;
}
.assafra-search-input {
  width: 100%;
  border: 0;
  background: transparent;
  outline: none;
  color: inherit;
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
}
.assafra-tag-suggestions {
  position: absolute;
  left: -1px;
  right: -1px;
  bottom: calc(100% + 6px);
  margin: 0;
  padding: 0.4rem;
  list-style: none;
  border: 1px solid var(--assafra-secondary);
  border-radius: var(--assafra-radius);
  background: rgba(233,233,231,0.98);
  display: none;
  max-height: 220px;
  overflow: auto;
}
.assafra-tag-suggestions.is-open { display: block; }
.assafra-tag-suggestion {
  display: block;
  padding: 0.45rem 0.55rem;
  border-radius: 6px;
  text-decoration: none;
  color: var(--assafra-text);
}
.assafra-tag-suggestion:hover,
.assafra-tag-suggestion:focus {
  background: rgba(143,140,134,0.14);
}

/* =========================================================
   PART 10 — DESTINATION ITEM PAGE (PRIMARY + METADATA)
   ========================================================= */

.destination-item {
  color: inherit;
}
.destination-primary {
  display: grid;
  gap: 1.15rem;
}
.destination-main-image {
  max-width: 100%;
  cursor: zoom-in;
}
.destination-reference {
  font-family: var(--assafra-font-ui);
  font-size: 0.92rem;
  letter-spacing: 0.04em;
  color: var(--destination-secondary);
}
.destination-usage,
.destination-description {
  font-family: var(--assafra-font-body);
}
.destination-versions {
  display: grid;
  gap: 0.3rem;
  margin-top: 0.25rem;
}
.destination-version-entry {
  font-family: var(--assafra-font-heading);
  font-size: 1rem;
  line-height: 1.4;
}
.destination-version-entry--older {
  opacity: 0.6;
}
.destination-version-entry--ghost {
  opacity: 0.3;
}
.destination-etsy-link-wrap {
  display: flex;
  justify-content: flex-end;
}
.destination-etsy-link {
  font-family: var(--assafra-font-ui);
  color: inherit;
  text-decoration: none;
}
.destination-etsy-link:hover,
.destination-etsy-link:focus {
  text-decoration: underline;
}
.destination-secondary {
  margin-top: 2rem;
  color: var(--destination-secondary);
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
  line-height: 1.55;
}
.destination-metadata {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.55rem 1.5rem;
}
.destination-meta-item {
  display: grid;
  gap: 0.08rem;
}
.destination-meta-label {
  color: inherit;
  opacity: 0.9;
}
.destination-meta-value {
  color: var(--destination-text);
}
.destination-gallery {
  margin-top: 2rem;
}
.destination-gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.75rem;
}
.destination-gallery-grid a {
  display: block;
  text-decoration: none;
}
.destination-gallery-grid img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  cursor: zoom-in;
}
.destination-links-block {
  margin-top: 2rem;
}
.destination-related-list,
.destination-stories-list {
  display: grid;
  gap: 0.45rem;
}
.destination-related-list a,
.destination-stories-list a {
  text-decoration: none;
}
.destination-related-list a:hover,
.destination-related-list a:focus,
.destination-stories-list a:hover,
.destination-stories-list a:focus {
  text-decoration: underline;
}

/* =========================================================
   PART 11 — DESTINATION CATALOGUE PAGE (ROW LAYOUT)
   ========================================================= */

.destination-catalogue-header {
  display: grid;
  gap: 1rem;
  margin-bottom: 2rem;
}
.destination-catalogue-header--with-image {
  grid-template-columns: minmax(0, 1fr) 180px;
  align-items: start;
  gap: 1.4rem;
}
.destination-catalogue-intro {
  max-width: 52rem;
}
.destination-catalogue-image img {
  width: 100%;
  height: auto;
}
.destination-catalogue-groups {
  display: grid;
  gap: 2.4rem;
}
.destination-catalogue-group-title {
  margin: 0 0 1rem;
  font-size: 1.2rem;
  font-family: var(--assafra-font-ui);
  font-weight: 500;
  color: var(--destination-secondary);
}
.destination-catalogue-row {
  display: grid;
  grid-template-columns: 116px minmax(0, 1fr) auto;
  gap: 1rem;
  align-items: start;
  padding: 1rem 0;
  border-top: 1px solid rgba(118,115,109,0.28);
}
.destination-catalogue-row:last-child {
  border-bottom: 1px solid rgba(118,115,109,0.28);
}
.destination-catalogue-thumb img {
  width: 116px;
  height: auto;
}
.destination-catalogue-main a {
  text-decoration: none;
}
.destination-catalogue-name {
  margin: 0 0 0.45rem;
  font-family: var(--assafra-font-heading);
  font-size: 1.55rem;
  line-height: 1.16;
  color: var(--destination-text);
}
.destination-catalogue-summary {
  margin: 0;
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
  color: var(--destination-secondary);
}
.destination-catalogue-cta {
  align-self: center;
  white-space: nowrap;
}
.destination-catalogue-cta a {
  text-decoration: none;
  font-family: var(--assafra-font-ui);
}
.destination-catalogue-cta a:hover,
.destination-catalogue-cta a:focus {
  text-decoration: underline;
}
.destination-pagination {
  margin-top: 2rem;
  font-family: var(--assafra-font-ui);
}
.destination-pagination .nav-links {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.destination-pagination .page-numbers {
  text-decoration: none;
}
.destination-pagination .current {
  text-decoration: underline;
}

/* =========================================================
   PART 12 — LIGHTBOX
   ========================================================= */

.assafra-lightbox {
  position: fixed;
  inset: 0;
  z-index: var(--assafra-lightbox-z);
  background: rgba(0,0,0,0.82);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
}
.assafra-lightbox[hidden] {
  display: none !important;
}
.assafra-lightbox-content {
  position: relative;
  width: min(92vw, 1200px);
}
.assafra-lightbox-image {
  width: 100%;
  max-height: 86vh;
  object-fit: contain;
}
.assafra-lightbox-close,
.assafra-lightbox-prev,
.assafra-lightbox-next {
  position: absolute;
  border: 0;
  background: rgba(255,255,255,0.12);
  color: #fff;
  font-family: var(--assafra-font-ui);
  cursor: pointer;
  border-radius: 999px;
}
.assafra-lightbox-close {
  top: -1rem;
  right: -1rem;
  width: 40px;
  height: 40px;
}
.assafra-lightbox-prev,
.assafra-lightbox-next {
  top: 50%;
  transform: translateY(-50%);
  width: 42px;
  height: 42px;
}
.assafra-lightbox-prev { left: -3rem; }
.assafra-lightbox-next { right: -3rem; }

/* =========================================================
   PART 13 — SEARCH RESULTS
   ========================================================= */

.search-results-list {
  display: grid;
  gap: 1.5rem;
}
.search-result-item {
  padding-bottom: 1.25rem;
  border-bottom: 1px solid rgba(143,140,134,0.35);
}
.search-result-item:last-child {
  border-bottom: 0;
}
.search-result-item a {
  text-decoration: none;
}
.search-result-item a:hover,
.search-result-item a:focus {
  text-decoration: underline;
}
.search-result-type {
  font-family: var(--assafra-font-ui);
  font-size: 0.9rem;
  color: var(--assafra-secondary);
}

/* =========================================================
   PART 14 — MOBILE SYSTEM
   ========================================================= */

.assafra-mobile-nav-trigger,
.assafra-mobile-nav-panel {
  display: none;
}

@media (max-width: 782px) {
  :root {
    --assafra-wordmark-height: 72px;
    --assafra-margin-width: calc(var(--assafra-grid-step) * 0.75);
    --assafra-gap: var(--assafra-grid-step);
    --assafra-text-width: min(max(80vw, 320px), calc(100vw - (2 * var(--assafra-margin-width)) - (2 * var(--assafra-gap)) - 24px));
    --assafra-font-body: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  }

  body { font-size: 17px; line-height: 1.7; }

  .site-header {
    padding-left: 12px;
    padding-right: 12px;
    padding-top: 9mm;
    padding-bottom: 9mm;
  }
  .site-header-inner { justify-content: center; }
  .site-branding { text-align: center; }
  .wordmark,
  .site-branding img {
    margin-left: auto;
    margin-right: auto;
    height: 72px;
  }

  .assafra-shell {
    width: calc(100% - 24px);
    grid-template-columns: var(--assafra-margin-width) minmax(0, 1fr) var(--assafra-margin-width);
    column-gap: var(--assafra-gap);
  }
  .assafra-doodle,
  .assafra-margin-image {
    width: 100px;
  }

  .site-footer-sticky { display: none; }
  .assafra-mobile-nav-trigger {
    display: inline-flex;
    position: fixed;
    left: 50%;
    transform: translateX(-50%);
    bottom: calc(10px + env(safe-area-inset-bottom, 0px));
    z-index: var(--assafra-panel-z);
    width: 46px;
    height: 46px;
    border: 1px solid var(--assafra-secondary);
    border-radius: 999px;
    background: rgba(233,233,231,0.96);
    align-items: center;
    justify-content: center;
    color: var(--assafra-secondary);
  }
  .assafra-mobile-nav-panel {
    display: block;
    position: fixed;
    left: 50%;
    transform: translateX(-50%) translateY(8px);
    bottom: calc(66px + env(safe-area-inset-bottom, 0px));
    width: min(92vw, 360px);
    padding: 0.9rem;
    border: 1px solid rgba(143,140,134,0.5);
    border-radius: 14px;
    background: rgba(233,233,231,0.98);
    backdrop-filter: blur(6px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease;
    z-index: calc(var(--assafra-panel-z) + 1);
  }
  .assafra-mobile-nav-panel.is-open {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
  }
  .assafra-mobile-astrolabe {
    display: flex;
    justify-content: center;
    margin-bottom: 0.7rem;
  }
  .assafra-mobile-controls {
    display: flex;
    justify-content: center;
    gap: 4px;
  }
  .assafra-mobile-controls .assafra-search-wrap {
    width: min(62vw, 260px);
  }
  .assafra-panel {
    right: 50%;
    transform: translate(50%, 8px);
    width: min(92vw, 360px);
  }
  .assafra-panel.is-open {
    transform: translate(50%, 0);
  }

  .destination-metadata {
    grid-template-columns: 1fr;
  }
  .destination-gallery-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .destination-catalogue-header--with-image {
    grid-template-columns: 1fr;
  }
  .destination-catalogue-row {
    grid-template-columns: 84px minmax(0, 1fr);
  }
  .destination-catalogue-thumb img {
    width: 84px;
  }
  .destination-catalogue-cta {
    grid-column: 1 / -1;
  }
  .destination-etsy-link-wrap {
    justify-content: flex-start;
  }
  .assafra-lightbox {
    padding: 1rem;
  }
  .assafra-lightbox-prev { left: 0.25rem; }
  .assafra-lightbox-next { right: 0.25rem; }
  .assafra-lightbox-close { top: 0.25rem; right: 0.25rem; }
}

/* =========================================================
   PART 15 — PRINT MODE
   ========================================================= */

@media print {
  body,
  .site,
  .assafra-content-column {
    background: #ffffff !important;
    color: #000000 !important;
  }
  body::before { opacity: 0.15 !important; }
  .assafra-footer-left,
  .assafra-control-square,
  .assafra-search-form,
  .assafra-mobile-nav-trigger,
  .assafra-mobile-nav-panel,
  .site-footer-sticky,
  .destination-etsy-link-wrap,
  .destination-catalogue-cta {
    display: none !important;
  }
  body,
  .site,
  .site-main { overflow: visible !important; }
}

/* =========================================================
   PART 16 — HOMEPAGE
   ========================================================= */

 /* ===== MOVED LATE ADDITIONS / ORGANISED AS OWN SECTION ===== */

 /* =========================================================
   HOMEPAGE — PHASE 7
   ========================================================= */

.assafra-home-intro {
  margin-bottom: 3rem;
}

.assafra-home-intro h1 {
  margin-bottom: 1rem;
}

.assafra-home-section {
  margin-top: 3rem;
}

.assafra-home-section h2 {
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--assafra-secondary);
  margin-bottom: 0.75rem;
}

.assafra-home-item h3 {
  margin: 0;
  font-size: 1.3rem;
  font-weight: 500;
}
.assafra-home-section {
  margin-top: 3.5rem;
}

.assafra-home-section:first-of-type {
  margin-top: 0;
}

.assafra-home-list {
  display: grid;
  gap: 1.2rem;
}

.assafra-home-item {
  padding-bottom: 0.8rem;
  border-bottom: 1px solid rgba(143,140,134,0.3);
}

.assafra-home-item:last-child {
  border-bottom: none;
}

/* =========================================================
   PART 17 — TYPOGRAPHY PATCHES (LATE ADDITIONS)
   ========================================================= */

 /* ===== POSSIBLE DELETE / DUPLICATE / REVIEW =====
   Late typography corrections added during build.
   Kept intact for safety and learning reference. */

 /* =========================
   ASSAFRA TYPOGRAPHY SYSTEM
   ========================= */

/* Core content container */
.assafra-content-column {
    font-family: Georgia, "Times New Roman", serif;
    color: #3A3A3A;
    line-height: 1.6;
}

/* Main story content */
.entry-content {
    font-size: 18px;
    line-height: 1.65;
}

/* Paragraph rhythm */
.entry-content p {
    margin: 0 0 1.2em 0;
}

/* Remove inconsistent spacing from pasted content */
.entry-content p:last-child {
    margin-bottom: 0;
}

/* Headings */
.entry-content h1,
.entry-content h2,
.entry-content h3 {
    font-family: Georgia, "Times New Roman", serif;
    line-height: 1.3;
    margin: 1.8em 0 0.6em 0;
}

/* Prevent headings sticking to paragraphs */
.entry-content h1 + p,
.entry-content h2 + p,
.entry-content h3 + p {
    margin-top: 0.4em;
}

/* Lists */
.entry-content ul,
.entry-content ol {
    margin: 1.2em 0 1.2em 1.2em;
}

/* Links */
.entry-content a {
    color: inherit;
    text-decoration: underline;
}

/* Images inside content */
.entry-content img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 1.5em 0;
}

/* Blockquotes (if used) */
.entry-content blockquote {
    margin: 1.5em 0;
    padding-left: 1em;
    border-left: 2px solid #8F8C86;
    color: #3A3A3A;
}

/* Ensure consistent spacing in Gutenberg blocks */
.entry-content > * {
    margin-bottom: 1.2em;
}

.entry-content > *:last-child {
    margin-bottom: 0;
}

/* =========================================================
   PART 18 — LAYOUT STABILITY PATCHES (LATE ADDITIONS)
   ========================================================= */

 /* ===== POSSIBLE DELETE / DUPLICATE / REVIEW =====
   Late layout corrections added during build.
   Includes temporary flex-based stabilisation that may later be merged back into the grid system.
   Kept intact for safety. */

 /* =========================
   LAYOUT STABILITY
   ========================= */

/* Prevent content from collapsing too narrow */
.assafra-content-column {
    min-width: 320px;
}
.assafra-shell {
    display: flex;
    justify-content: center;
}

/* Allow side rails to shrink away */
.assafra-left-rail,
.assafra-right-rail {
    flex: 1;
}

/* Keep content readable */
.assafra-content-column {
    flex: 0 1 720px;
    width: 100%;
}
@media (max-width: 800px) {

    .assafra-shell {
        flex-direction: column;
    }

    .assafra-left-rail,
    .assafra-right-rail {
        display: none;
    }

    .assafra-content-column {
        width: 100%;
        padding: 0 16px;
    }
}
.destination-catalogue-row {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}

/* Prevent collapse issues */
.destination-catalogue-main {
    flex: 1;
}

/* CTA stays readable */
.destination-catalogue-cta {
    white-space: nowrap;
}
@media (max-width: 800px) {

    .assafra-shell {
        flex-direction: column;
        align-items: center;
    }

    .assafra-left-rail,
    .assafra-right-rail {
        display: none;
    }

    .assafra-content-column {
        width: 80%;
        min-width: 0;
        max-width: none;
        padding: 0;
    }
}

/* =========================================================
   PART 19 — HEADER IMAGE PATCHES (LATE ADDITIONS)
   ========================================================= */

 /* ===== POSSIBLE DELETE / DUPLICATE / REVIEW =====
   Late header-image correction for deck pages.
   Keep until unified with destination header rules intentionally. */

 .assafra-article-header.assafra-header--with-image {
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 12px;
    align-items: center;
}
.assafra-article-header > div {
    min-width: 0;
}
.assafra-header-image img {
    width: 100%;
    height: auto;
    display: block;
}
@media (max-width: 782px) {
    .assafra-article-header.assafra-header--with-image {
        grid-template-columns: 1fr;
    }

    .assafra-header-image {
        margin-top: 12px;
    }
}
/* STORY EXIT — right-align single tools block above astrolabe */
.assafra-story-exit {
  justify-content: flex-end;
}

.assafra-story-exit-column--destinations {
  width: auto;
  max-width: 22rem;
  margin-left: auto;
  text-align: right;
}

.assafra-related-tools,
.assafra-related-tools-title,
.assafra-related-tools-list {
  text-align: right;
}
/* DESTINATION CTA — platform-neutral Assafra button */
.destination-etsy-link-wrap {
  display: flex;
  justify-content: flex-end;
  margin-top: 0.5rem;
}

.destination-etsy-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--assafra-control-height);
  padding: 0 1rem;
  border: 1px solid var(--assafra-secondary);
  border-radius: var(--assafra-radius);
  background: transparent;
  color: var(--assafra-secondary);
  font-family: var(--assafra-font-ui);
  font-size: 0.95rem;
  text-decoration: none;
  white-space: nowrap;
}

.destination-etsy-link:hover,
.destination-etsy-link:focus {
  background: rgba(143,140,134,0.08);
  text-decoration: none;
}
.assafra-empty-state a img {
  transition: opacity 0.2s ease;
}

.assafra-empty-state a:hover img {
  opacity: 0.85;
}