/*
Theme Name: Memoir
Theme URI: https://example.com/memoir
Author: Your Name
Author URI: https://example.com
Description: A soft, blush-toned travel journal theme. A caps navigation bar sits above a centred script wordmark, a five-across rail of upright story cards opens the page, and a circular author portrait, overlaid destination tiles, a must-read column with a discovery sidebar, a floating newsletter card and two-column story rows follow. Pairs Instrument Serif and Work Sans, with light and dark modes, self-hosted fonts and one-click demo content made from original artwork.
Version: 1.0.0
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: memoir
Tags: blog, news, magazine, two-columns, right-sidebar, custom-logo, custom-menu, featured-images, threaded-comments, translation-ready, full-width-template
*/

:root {
  --bg: #ffffff;
  --surface: #ffffff;
  --surface-2: #fdf4ec;
  --text: #171310;
  --text-2: #4a423c;
  --muted: #8e837b;
  --line: #ece3da;
  --accent: #ce9079;
  --accent-ink: #ffffff;
  --accent-hover: #b47259;
  --accent-hover-ink: #ffffff;

  --font-display: "Instrument Serif", Georgia, "Times New Roman", serif;
  --font-body: "Work Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-ui: "Work Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --w-display: 400;
  --lh-display: 1.18;
  --track-display: 0em;

  --radius: 0px;
  --radius-ui: 0px;
  --footer-bg: #fdf6f0;
  --footer-text: #171310;
  --footer-muted: #8e837b;
  --footer-line: #ece3da;
  --overlay: linear-gradient(180deg, rgba(28,20,16,0) 34%, rgba(28,20,16,.62) 100%);

  --wrap: 1180px;
  --gap: 26px;
  --tint: #fdf4ec;
  --cream: #fff8f2;
}

:root[data-theme="dark"] {
  --bg: #15110f;
  --surface: #1c1715;
  --surface-2: #231c19;
  --text: #f6f1ec;
  --text-2: #cfc5bd;
  --muted: #9b8f86;
  --line: #322a26;
  --accent: #dba78f;
  --accent-ink: #15110f;
  --accent-hover: #f0c8b2;
  --accent-hover-ink: #15110f;
  --footer-bg: #1b1613;
  --footer-text: #f6f1ec;
  --footer-muted: #9b8f86;
  --footer-line: #322a26;
  --tint: #1b1613;
  --cream: #1b1613;
}

body { font-size: 15px; background: var(--bg); }
h1, h2, h3, h4 { font-family: var(--font-ui); font-weight: 600; }
.entry-content, .page-desc, .author-box__bio { font-family: var(--font-body); }

/* ==================================================================
 * Chrome — caps bar, then the script masthead under it
 * ================================================================ */
.site-header { background: var(--cream); border-bottom: 1px solid var(--line); }
.site-header__inner {
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  min-height: 46px; gap: 1rem;
}
.site-header__left { grid-column: 1; }
.site-header__left .site-brand { display: none; }
.primary-nav { grid-column: 2; flex: none; min-width: 0; }
.site-header__actions { grid-column: 3; justify-self: end; margin-left: 0; }

.mm-eyebrow {
  font-family: var(--font-ui); font-weight: 600; font-size: 11px;
  text-transform: uppercase; letter-spacing: .16em; color: var(--text-2);
}
.mm-eyebrow:hover { color: var(--accent); }

.primary-menu { justify-content: center; gap: 0; }
.primary-menu > li > a {
  font-family: var(--font-ui); font-weight: 600; font-size: 11px;
  text-transform: uppercase; letter-spacing: .14em; color: var(--text-2);
  padding: .75rem .85rem; border-radius: 0;
}
.primary-menu > li > a:hover,
.primary-menu .current-menu-item > a,
.primary-menu .current-menu-parent > a,
.primary-menu .current-menu-ancestor > a { color: var(--accent); background: transparent; }
.primary-menu .sub-menu { background: var(--surface); border-color: var(--line); border-radius: 0; }
.primary-menu .sub-menu a { color: var(--text-2); text-transform: none; letter-spacing: 0; font-size: 13px; }
.site-header__actions .icon-btn { width: 34px; height: 34px; color: var(--text-2); border-radius: 0; }
.site-header__actions .icon-btn:hover { background: transparent; color: var(--accent); }
.site-header__actions .icon-btn svg { width: 16px; height: 16px; }
@media (max-width: 980px) {
  .site-header__inner { grid-template-columns: 1fr auto; }
  .site-header__actions { grid-column: 2; }
}

.mm-masthead { background: var(--cream); }
.mm-masthead__inner { text-align: center; padding-block: clamp(26px, 4vw, 52px) clamp(22px, 3.2vw, 42px); }
.mm-mark { margin: 0; }
.mm-mark__link {
  font-family: var(--font-display); font-style: italic; font-weight: 400;
  font-size: clamp(2.4rem, 6vw, 62px); line-height: 1.02; letter-spacing: .01em;
  color: var(--text); display: inline-block;
}
.mm-mark__link:hover { color: var(--accent); }
.mm-masthead .custom-logo { max-height: 74px; width: auto; margin-inline: auto; }
.mm-flourish { display: block; margin: 10px auto 0; color: var(--accent); width: 120px; height: 12px; }
.mm-sub {
  margin-top: 8px; font-family: var(--font-ui); font-weight: 500; font-size: 11px;
  text-transform: uppercase; letter-spacing: .3em; color: var(--muted);
}

/* ==================================================================
 * Section shells
 * ================================================================ */
.mm-section { padding-block: clamp(30px, 4.4vw, 62px); }
.mm-section--tint { background: var(--tint); }
.mm-section--rail { padding-top: clamp(16px, 2.4vw, 30px); }
.mm-section--last { padding-bottom: clamp(34px, 4.6vw, 66px); }

.mm-head { text-align: center; margin-bottom: clamp(22px, 3vw, 40px); }
.mm-head__title {
  margin: 0; font-family: var(--font-display); font-style: italic; font-weight: 400;
  font-size: clamp(1.7rem, 3.6vw, 38px); line-height: 1.16; letter-spacing: 0; color: var(--text);
}
.mm-head .mm-flourish { margin-top: 8px; }

.mm-label { display: flex; align-items: center; gap: 16px; margin-bottom: 22px; }
.mm-label__text {
  font-family: var(--font-ui); font-weight: 600; font-size: 11px;
  text-transform: uppercase; letter-spacing: .18em; color: var(--text); white-space: nowrap;
}
.mm-label__rule { flex: 1; height: 1px; background: var(--line); }
.mm-label + .mm-label { margin-top: clamp(26px, 3vw, 40px); }

/* ==================================================================
 * Card rails
 * ================================================================ */
.mm-rail { position: relative; }
.mm-rail__viewport {
  display: grid; grid-auto-flow: column;
  grid-auto-columns: calc((100% - (var(--mm-per-view) - 1) * var(--mm-gap, 18px)) / var(--mm-per-view));
  gap: var(--mm-gap, 18px);
  overflow-x: auto; scroll-snap-type: x mandatory;
  scrollbar-width: none; -ms-overflow-style: none; padding-bottom: 2px;
}
.mm-rail__viewport::-webkit-scrollbar { display: none; }
.mm-rail__viewport:focus-visible { outline-offset: 4px; }
.mm-rail--wide { --mm-gap: 24px; }

.mm-slide { scroll-snap-align: start; display: flex; flex-direction: column; background: var(--surface); }
.mm-slide__media { display: block; overflow: hidden; }
.mm-rail--tall .mm-slide .media { aspect-ratio: 3 / 4; border-radius: 0; }
.mm-rail--wide .mm-slide .media { aspect-ratio: 4 / 3; border-radius: 0; }
.mm-slide:hover .media__img { transform: scale(1.04); }
.mm-slide__body { padding: 16px 14px 18px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.mm-rail--wide .mm-slide__body { padding: 16px 4px 0; align-items: flex-start; text-align: left; }

.mm-cat {
  font-family: var(--font-display); font-style: italic; font-weight: 400;
  font-size: 18px; line-height: 1.1; color: var(--accent);
}
.mm-cat:hover { color: var(--accent-hover); }
.mm-slide__title {
  margin: 0; font-family: var(--font-ui); font-weight: 600; font-size: 13px;
  line-height: 1.5; text-transform: uppercase; letter-spacing: .06em; color: var(--text);
}
.mm-slide__title a:hover { color: var(--accent); }
.mm-more {
  margin-top: 6px; padding-top: 12px; border-top: 1px solid var(--line);
  width: 100%; font-family: var(--font-ui); font-weight: 600; font-size: 10px;
  text-transform: uppercase; letter-spacing: .18em; color: var(--muted);
}
.mm-rail--wide .mm-more { width: auto; border-top: 0; padding-top: 0; margin-top: 2px; }
.mm-more:hover { color: var(--accent); }

.mm-rail__arrows { display: flex; justify-content: center; gap: 26px; margin-top: 22px; }
.mm-arrow {
  width: 34px; height: 34px; display: inline-grid; place-items: center;
  color: var(--muted); transition: color .15s;
}
.mm-arrow:hover { color: var(--accent); }
.mm-arrow svg { width: 18px; height: 18px; }
@media (max-width: 1000px) { .mm-rail--tall .mm-rail__viewport { --mm-per-view: 3; } }
@media (max-width: 680px) { .mm-rail__viewport { --mm-per-view: 2 !important; } }
@media (max-width: 460px) { .mm-rail__viewport { --mm-per-view: 1 !important; } }

/* ==================================================================
 * Author introduction
 * ================================================================ */
.mm-intro { padding-block: clamp(26px, 4vw, 56px); }
.mm-intro__row { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: clamp(24px, 4vw, 56px); align-items: center; }
.mm-intro__media { width: clamp(180px, 22vw, 260px); }
.mm-intro__img, .mm-intro__ph {
  display: block; width: 100%; aspect-ratio: 1; border-radius: 50%;
  object-fit: cover; background: linear-gradient(135deg, var(--surface-2), var(--line));
}
.mm-intro__title {
  margin: 0 0 14px; font-family: var(--font-display); font-style: italic; font-weight: 400;
  font-size: clamp(1.6rem, 3.2vw, 34px); line-height: 1.16; color: var(--accent);
}
.mm-intro__text { color: var(--text-2); font-size: 14px; line-height: 1.85; }
.mm-intro__text + .mm-intro__text { margin-top: 14px; }
@media (max-width: 760px) {
  .mm-intro__row { grid-template-columns: 1fr; justify-items: center; text-align: center; }
}

/* ==================================================================
 * Destination tiles
 * ================================================================ */
.mm-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.mm-tile { position: relative; display: block; overflow: hidden; isolation: isolate; }
.mm-tile .media { aspect-ratio: 3 / 4; border-radius: 0; }
.mm-tile__ph { display: block; aspect-ratio: 3 / 4; background: linear-gradient(135deg, hsl(var(--cat-hue,18) 42% 62%), hsl(calc(var(--cat-hue,18) + 24) 38% 44%)); }
.mm-tile__shade { position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(28,20,16,.16) 0%, rgba(28,20,16,.52) 100%); }
.mm-tile__label {
  position: absolute; z-index: 2; left: 0; right: 0; bottom: 0;
  padding: 16px 12px 20px; text-align: center; color: #fff;
  font-family: var(--font-ui); font-weight: 600; font-size: 14px;
  text-transform: uppercase; letter-spacing: .2em;
}
.mm-tile:hover .media__img { transform: scale(1.05); }
@media (max-width: 860px) { .mm-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ==================================================================
 * Must read beside the discovery sidebar
 * ================================================================ */
.mm-split { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: clamp(26px, 3.6vw, 52px); align-items: start; }
.mm-reads { display: grid; gap: 22px; }
.mm-read { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); background: var(--surface); }
.mm-read__media { display: block; overflow: hidden; height: 100%; }
.mm-read .media { height: 100%; aspect-ratio: 4 / 3; border-radius: 0; }
.mm-read:hover .media__img { transform: scale(1.04); }
.mm-read__body {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px; text-align: center; padding: clamp(18px, 2.6vw, 34px);
}
.mm-read__title {
  margin: 0; font-family: var(--font-ui); font-weight: 600; font-size: clamp(14px, 1.4vw, 17px);
  line-height: 1.5; text-transform: uppercase; letter-spacing: .06em;
}
.mm-read__title a:hover { color: var(--accent); }

.mm-btn {
  display: inline-block; padding: .62rem 1.15rem; border: 1px solid var(--line);
  font-family: var(--font-ui); font-weight: 600; font-size: 10px;
  text-transform: uppercase; letter-spacing: .18em; color: var(--text-2);
  transition: background-color .15s, color .15s, border-color .15s;
}
.mm-btn:hover { background: var(--accent); border-color: var(--accent); color: #fff; }
.mm-loadmore { margin-top: 26px; text-align: center; }
.mm-btn--ghost { border-color: var(--line); color: var(--muted); }

.mm-list { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.mm-list li { border-bottom: 1px solid var(--line); }
.mm-list li:last-child { border-bottom: 0; }
.mm-list a {
  display: block; padding-block: .85rem; font-family: var(--font-ui); font-weight: 600;
  font-size: 12px; line-height: 1.6; text-transform: uppercase; letter-spacing: .07em; color: var(--text);
}
.mm-list a:hover { color: var(--accent); }

.mm-counts { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.mm-counts li { border-bottom: 1px solid var(--line); }
.mm-counts li:last-child { border-bottom: 0; }
.mm-counts a {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding-block: .7rem; font-family: var(--font-ui); font-size: 12px;
  text-transform: uppercase; letter-spacing: .1em; color: var(--text-2);
}
.mm-counts a:hover { color: var(--accent); }
.mm-counts__n { color: var(--muted); font-variant-numeric: tabular-nums; }
@media (max-width: 900px) {
  .mm-split { grid-template-columns: minmax(0, 1fr); }
  .mm-read { grid-template-columns: minmax(0, 1fr); }
}

/* ==================================================================
 * Stay in touch — the newsletter card floating over a photograph
 * ================================================================ */
.mm-touch { position: relative; }
.mm-touch__media { width: min(100%, 860px); }
.mm-touch__img, .mm-touch__ph {
  display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover;
  background: linear-gradient(135deg, var(--surface-2), var(--line));
}
.mm-card {
  position: relative; margin: -70px 0 0 auto; width: min(100%, 420px);
  background: var(--surface); box-shadow: 0 10px 34px rgba(60, 40, 30, .14);
  padding: clamp(22px, 2.8vw, 36px); text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
}
.mm-card__icon {
  display: inline-grid; place-items: center; width: 54px; height: 54px;
  background: var(--accent); color: #fff; margin-top: -46px;
}
.mm-card__title {
  margin: 6px 0 0; font-family: var(--font-ui); font-weight: 600; font-size: 14px;
  text-transform: uppercase; letter-spacing: .14em;
}
.mm-card__text { color: var(--text-2); font-size: 13px; line-height: 1.75; }
.mm-card__form { display: flex; width: 100%; margin-top: 6px; }
.mm-card__form input[type="email"] {
  flex: 1; min-width: 0; height: 40px; padding: 0 .85rem; border: 1px solid var(--line);
  border-right: 0; background: var(--surface); color: var(--text); font-size: 12px;
  font-family: var(--font-ui); letter-spacing: .06em; text-transform: uppercase;
}
.mm-card__button {
  height: 40px; padding: 0 1.1rem; border: 0; background: var(--accent); color: #fff;
  font-family: var(--font-ui); font-weight: 600; font-size: 10px;
  text-transform: uppercase; letter-spacing: .16em; transition: background-color .15s;
}
.mm-card__button:hover { background: var(--accent-hover); }
@media (min-width: 900px) {
  .mm-touch { min-height: 420px; }
  .mm-card { position: absolute; right: 0; top: 50%; transform: translateY(-50%); margin: 0; }
}
@media (max-width: 899px) { .mm-touch__media { width: 100%; } .mm-card { margin-inline: auto; } }

/* ==================================================================
 * Latest stories — two columns of picture-left rows
 * ================================================================ */
.mm-rows { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 26px; }
.mm-row { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 18px; align-items: center; background: var(--surface); }
.mm-row__media { display: block; overflow: hidden; }
.mm-row .media { aspect-ratio: 1; border-radius: 0; }
.mm-row:hover .media__img { transform: scale(1.04); }
.mm-row__body { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding-right: 10px; }
.mm-row__title {
  margin: 0; font-family: var(--font-ui); font-weight: 600; font-size: 13px;
  line-height: 1.55; text-transform: uppercase; letter-spacing: .06em;
}
.mm-row__title a:hover { color: var(--accent); }
@media (max-width: 760px) { .mm-rows { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 420px) { .mm-row { grid-template-columns: 110px minmax(0, 1fr); } }

.mm-pagebar {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 1rem; margin-top: clamp(26px, 3.2vw, 42px);
  border-top: 1px solid var(--line); padding-top: 18px;
}
.mm-pagebar .nav-links { justify-content: flex-start; gap: 4px; }
.mm-pagebar .page-numbers {
  min-width: 26px; height: 26px; padding: 0 .4rem; border: 0; border-radius: 0;
  font-family: var(--font-ui); font-size: 12px; font-weight: 600; color: var(--muted);
}
.mm-pagebar .page-numbers:hover { color: var(--accent); }
.mm-pagebar .page-numbers.current { color: var(--accent); }
.mm-pagebar__count {
  margin: 0; font-family: var(--font-ui); font-size: 10px; color: var(--muted);
  text-transform: uppercase; letter-spacing: .16em;
}

/* ==================================================================
 * Shared surfaces: archive cards, widgets, picture strip
 * ================================================================ */
.card, .mini, .media, .btn, .page-numbers, .entry-media__img, .entry-tags a, .author-box { border-radius: 0; }
.cat { font-family: var(--font-display); font-style: italic; font-size: 16px; text-transform: none; letter-spacing: 0; color: var(--accent); }
[data-theme="dark"] .cat { color: var(--accent); }
.card__title { font-family: var(--font-ui); font-weight: 600; font-size: 14px; text-transform: uppercase; letter-spacing: .06em; line-height: 1.5; }
.card__excerpt { font-size: 13.5px; line-height: 1.8; }
.page-title, .entry-title { font-family: var(--font-display); font-style: italic; font-weight: 400; letter-spacing: 0; }
.entry-content { font-family: var(--font-body); font-size: 16px; line-height: 1.85; }
.entry-content blockquote { border-left: 2px solid var(--accent); font-style: italic; }
.section-title { font-family: var(--font-display); font-style: italic; font-weight: 400; }
.widget-title {
  font-family: var(--font-ui); font-weight: 600; font-size: 11px;
  text-transform: uppercase; letter-spacing: .18em;
  border-bottom: 1px solid var(--line); padding-bottom: .7rem;
}
.btn, .signup__button { border-radius: 0; font-family: var(--font-ui); font-size: 10px; text-transform: uppercase; letter-spacing: .16em; }
.signup__title { font-family: var(--font-ui); font-size: 13px; text-transform: uppercase; letter-spacing: .14em; }
.signup__form input[type="email"] { border-radius: 0; }
.sidebar .ranked > li::before { color: var(--accent); font-family: var(--font-display); font-style: italic; }
.flag { background: var(--accent); border-radius: 0; }

.np-insta { background: var(--cream); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.np-insta__head { font-family: var(--font-ui); }
.np-insta__handle { font-family: var(--font-display); font-style: italic; font-weight: 400; font-size: 20px; }
.np-insta__follow { font-size: 10px; text-transform: uppercase; letter-spacing: .16em; }
.np-insta__row { gap: 2px; }
.np-insta__tile, .np-insta__tile .media { border-radius: 0; }

/* ==================================================================
 * Footer — three cream columns
 * ================================================================ */
.mm-footer { background: var(--footer-bg); color: var(--footer-text); margin-top: 0; padding-block: clamp(34px, 4.4vw, 58px) 1.4rem; }
.mm-footer a { color: var(--footer-text); }
.mm-footer a:hover { color: var(--accent); }
.mm-footer__cols { display: grid; grid-template-columns: 1.4fr 1fr 1.2fr; gap: clamp(26px, 4vw, 54px); }
.mm-mark--footer .mm-mark__link { font-size: clamp(1.8rem, 3.6vw, 36px); }
.mm-footer__text { color: var(--footer-muted); font-size: 13px; line-height: 1.8; margin-top: 10px; max-width: 34ch; }
.mm-footer__social { margin-top: 16px; }
.mm-footer__social a { width: 34px; height: 34px; border-color: var(--footer-line); color: var(--footer-muted); }
.mm-footer__social a:hover { color: var(--accent); border-color: var(--accent); }
.mm-footer__heading {
  font-family: var(--font-ui); font-weight: 600; font-size: 11px;
  text-transform: uppercase; letter-spacing: .18em; color: var(--footer-text);
  margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--footer-line);
}
.mm-footer__heading--gap { margin-top: 26px; }
.mm-footer__menu { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.mm-footer__menu li { border-bottom: 1px solid var(--footer-line); }
.mm-footer__menu li:last-child { border-bottom: 0; }
.mm-footer__menu a { display: block; padding-block: .62rem; font-family: var(--font-ui); font-size: 12px; text-transform: uppercase; letter-spacing: .1em; color: var(--footer-muted); }
.mm-footer__menu a:hover { color: var(--accent); }
.mm-footer__col--signup .signup__title, .mm-footer__col--signup .signup__desc { color: var(--footer-text); }
.mm-footer__col--signup .signup__desc { color: var(--footer-muted); font-size: 13px; }
.mm-footer__bottom { margin-top: clamp(26px, 3.4vw, 44px); padding-top: 1.2rem; border-top: 1px solid var(--footer-line); text-align: center; }
.mm-footer__copy { font-family: var(--font-ui); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--footer-muted); margin: 0; }
@media (max-width: 860px) { .mm-footer__cols { grid-template-columns: 1fr; } }

/* ==================================================================
 * Postcard stamp block — a perforated stamp drawn in CSS, the sender
 * line and the date off the card, under a faint postmark ring. Built
 * from post meta, so there is nothing to show until a story carries a
 * place or a date.
 * ================================================================ */
.mm-stamp {
  display: flex; align-items: center; gap: clamp(14px, 2vw, 22px);
  margin: 0 0 clamp(18px, 2.4vw, 28px);
}

/* The stamp. The perforations are punched out of a paper layer behind
 * the picture, so only the frame around the picture is scalloped. */
.mm-stamp__card {
  --mm-perf: 11px;
  position: relative; flex: 0 0 auto; display: block;
  width: clamp(74px, 9vw, 92px); padding: 7px;
  filter: drop-shadow(0 1px 2px rgba(23, 19, 16, .14));
}
.mm-stamp__paper {
  position: absolute; inset: 0; background: var(--cream);
  -webkit-mask-image: radial-gradient(circle at 50% 50%, transparent 3.5px, #000 3.9px);
  mask-image: radial-gradient(circle at 50% 50%, transparent 3.5px, #000 3.9px);
  -webkit-mask-size: var(--mm-perf) var(--mm-perf);
  mask-size: var(--mm-perf) var(--mm-perf);
  -webkit-mask-position: calc(var(--mm-perf) / -2) calc(var(--mm-perf) / -2);
  mask-position: calc(var(--mm-perf) / -2) calc(var(--mm-perf) / -2);
}
.mm-stamp__img, .mm-stamp__ph {
  position: relative; display: block; width: 100%; height: auto;
  aspect-ratio: 1; object-fit: cover;
  border: 1px solid var(--line);
}
.mm-stamp__ph { background: linear-gradient(135deg, var(--tint), var(--line)); }

/* Postmark: a ring of dashes struck across the stamp's top corner. */
.mm-stamp__ring {
  position: absolute; top: -13px; right: -15px;
  width: 52px; height: 52px; border-radius: 50%;
  border: 2px dashed var(--accent); opacity: .42;
  transform: rotate(-14deg); pointer-events: none;
}
.mm-stamp__ring::after {
  content: ""; position: absolute; inset: 6px;
  border-radius: 50%; border: 1px solid var(--accent); opacity: .6;
}

.mm-stamp__text { display: block; min-width: 0; }
.mm-stamp__from {
  display: block; font-family: var(--font-ui); font-weight: 600; font-size: 10px;
  line-height: 1.4; text-transform: uppercase; letter-spacing: .18em; color: var(--muted);
}
.mm-stamp__place {
  display: inline; font-family: var(--font-display); font-weight: 400;
  font-size: clamp(17px, 2vw, 22px); line-height: 1.2;
  text-transform: none; letter-spacing: 0; color: var(--text);
}
.mm-stamp__date {
  display: block; margin-top: 4px; font-family: var(--font-body);
  font-size: 12px; font-style: italic; color: var(--text-2);
}

/* Home page: the block sits on a tinted strip with the story's title. */
.mm-postcard { padding-block: clamp(10px, 1.8vw, 20px) clamp(18px, 2.6vw, 30px); }
.mm-postcard__row {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: clamp(14px, 2.4vw, 30px);
  padding: clamp(16px, 2.2vw, 24px) clamp(16px, 2.4vw, 28px);
  background: var(--tint); border: 1px solid var(--line);
}
.mm-stamp--lead { margin: 0; }
.mm-postcard__title {
  flex: 1 1 240px; min-width: 0; margin: 0;
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(19px, 2.6vw, 27px); line-height: 1.22; color: var(--text);
}
.mm-postcard__title a:hover { color: var(--accent); }

/* Single post: the block reads as the dateline above the picture. */
.mm-stamp--entry { margin: clamp(16px, 2.2vw, 24px) 0; }

@media (max-width: 520px) {
  .mm-stamp { gap: 14px; }
  .mm-stamp__ring { width: 42px; height: 42px; top: -10px; right: -11px; }
}
