/* Prime Find Space - fonts are self-hosted (latin subset). */
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:400 900;font-display:swap;src:url('../fonts/PlayfairDisplay-italic.woff2') format('woff2');}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:400 900;font-display:swap;src:url('../fonts/PlayfairDisplay-normal.woff2') format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:italic;font-weight:300 800;font-display:swap;src:url('../fonts/PlusJakartaSans-italic.woff2') format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:300 800;font-display:swap;src:url('../fonts/PlusJakartaSans-normal.woff2') format('woff2');}
@font-face{font-family:'Newsreader';font-style:italic;font-weight:300 700;font-display:swap;src:url('../fonts/Newsreader-italic.woff2') format('woff2');}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:300 700;font-display:swap;src:url('../fonts/Newsreader-normal.woff2') format('woff2');}

/* ==========================================================================
   Prime Find Space
   Tokens
   ========================================================================== */
:root {
  --ivory: #FBF8F1;
  --ivory-2: #F2EBE2;
  --ink: #251F25;
  --ink-hero: #241F23;
  --muted: #70666D;
  --nav: #51494F;
  --purple: #5B3F68;
  --purple-mid: #765982;
  --purple-light: #A28DAB;
  --line: #DDD2DC;
  --line-card: #D8CADB;
  --line-input: #D5C8D7;
  --logo: #654875;
  --logo-hover: #523860;
  --logo-accent: #BFAFD0;
  --white: #FFFFFF;
  --error: #be123c;

  --font-sans: 'Plus Jakarta Sans', system-ui, sans-serif;
  --font-serif: 'Playfair Display', Georgia, serif;
  --font-editorial: 'Newsreader', Georgia, serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;

  --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .05);
  --shadow-2xs: 0 1px rgb(0 0 0 / .05);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);
  --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .25);
}

/* ==========================================================================
   Reset (mirrors the prototype's Tailwind preflight)
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; border: 0 solid currentColor; }
html { line-height: 1.5; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; background-color: var(--ivory); font-family: var(--font-sans); }
body.pfs {
  font-family: var(--font-sans);
  background-color: var(--ivory);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.5;
}
body.pfs ::selection { background: #8D8992; color: #FAF9F6; }
h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; font-family: var(--font-serif); }
a { color: inherit; text-decoration: inherit; }
button, input, textarea, select { font: inherit; color: inherit; letter-spacing: inherit; background: transparent; border-radius: 0; }
button { cursor: pointer; text-align: inherit; }
img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
ul, ol { list-style: none; }
[hidden] { display: none !important; }
svg[hidden] { display: none !important; }
::placeholder { color: var(--muted); opacity: 1; }
textarea { resize: vertical; }

::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--ivory-2); }
::-webkit-scrollbar-thumb { background: var(--purple-mid); border-radius: 0; }
::-webkit-scrollbar-thumb:hover { background: var(--purple); }

.site { min-height: 100vh; display: flex; flex-direction: column; background: var(--ivory); color: var(--ink); }
.site-main { flex: 1 1 0%; }
.container { width: 100%; max-width: 80rem; margin-inline: auto; padding-inline: 1rem; }
@media (min-width: 640px) { .container { padding-inline: 1.5rem; } }
@media (min-width: 1024px) { .container { padding-inline: 2rem; } }
.hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* Icons */
.pfs-icon { width: 1.5rem; height: 1.5rem; flex-shrink: 0; display: block; }
.pfs-icon--10 { width: .625rem; height: .625rem; }
.pfs-icon--14 { width: .875rem; height: .875rem; }
.pfs-icon--16 { width: 1rem; height: 1rem; }
.pfs-icon--20 { width: 1.25rem; height: 1.25rem; }
.pfs-icon--24 { width: 1.5rem; height: 1.5rem; }
.pfs-icon--28 { width: 1.75rem; height: 1.75rem; }
.pfs-icon--48 { width: 3rem; height: 3rem; }
.pfs-fill { fill: currentColor; }
.pfs-accent { color: var(--purple-light); }
.pfs-purple { color: var(--purple-mid); }
.pfs-purple-dark { color: var(--purple); }
.pfs-star { fill: #fff; color: #fff; stroke: #fff; }

/* Shared type helpers */
.eyebrow { display: inline-block; font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .2em; color: var(--purple-mid); }
.eyebrow--wide { letter-spacing: .25em; }
.crumb { display: inline-flex; align-items: center; gap: .375rem; font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .15em; color: var(--ink); transition: color .15s; }
.crumb:hover { color: var(--purple); }
.crumb--light { gap: .5rem; letter-spacing: .2em; color: var(--purple-light); margin-bottom: .5rem; }
.crumb--light:hover { color: #fff; }

/* Buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; font-family: var(--font-mono); font-weight: 700; font-size: .75rem; line-height: 1rem; text-transform: uppercase; cursor: pointer; transition: background-color .15s, color .15s; }
.btn--primary { background: var(--purple); color: var(--ivory); }
.btn--primary:hover { background: var(--purple-mid); color: #fff; }
.btn--block { width: 100%; }
.btn--wide { padding: .75rem 1rem; letter-spacing: .1em; }
.btn--sm { letter-spacing: .1em; }
.btn--inline { padding: .5rem 1rem; gap: .25rem; letter-spacing: .05em; }
.btn--search { padding: .625rem 1.25rem; letter-spacing: .1em; }
.mobile-menu .btn--sm { padding: .625rem 1rem; font-weight: 400; letter-spacing: .1em; }

/* Form controls */
.label { display: block; font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ink); margin-bottom: .25rem; }
.input { display: block; width: 100%; padding: .625rem 1rem; font-size: .75rem; line-height: 1rem; background: var(--ivory); border: 1px solid var(--line); color: var(--ink); outline: none; transition: all .15s; }
.input:focus { border-color: var(--purple); }
.input--soft { background: var(--ivory-2); }
.input--soft:focus, .input--white:focus { background: #fff; }
.input--white { background: #fff; }
.input--mono { font-family: var(--font-mono); }
.input--icon { padding-left: 2.5rem; }
.input-icon { position: relative; }
.input-icon > .pfs-icon { position: absolute; left: .875rem; top: .75rem; color: var(--muted); }
.input-icon--grow { flex: 1 1 0%; }
.form-error { font-size: .75rem; line-height: 1rem; color: var(--error); font-weight: 500; }
.form-error--semi { font-weight: 600; }

/* ==========================================================================
   Brand logo
   ========================================================================== */
.brand { display: inline-flex; align-items: center; gap: .75rem; }
.brand--sm { gap: .625rem; }
.brand--lg { gap: .875rem; }
.brand__icon { flex-shrink: 0; transition: transform .3s; }
.brand__word { font-family: var(--font-serif); font-weight: 900; letter-spacing: .14em; color: var(--logo); text-transform: uppercase; line-height: 1; user-select: none; transition: color .15s; font-size: 1.25rem; }
.brand--sm .brand__word { font-size: 1.125rem; }
.brand--lg .brand__word { font-size: 1.5rem; }
@media (min-width: 640px) {
  .brand--md .brand__word { font-size: 1.5rem; }
  .brand--lg .brand__word { font-size: 1.875rem; }
}
a:hover .brand__word { color: var(--logo-hover); }
a:hover .brand__icon { transform: scale(1.05); }

/* ==========================================================================
   Header
   ========================================================================== */
.site-header { position: sticky; top: 0; z-index: 40; background: rgb(251 248 241 / .95); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); border-bottom: 1px solid var(--line); }
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 46px; } }
.site-header__row { display: flex; align-items: center; justify-content: space-between; height: 5rem; gap: 1rem; }
.site-header__logo { display: flex; align-items: center; }
.site-header__tools { display: flex; align-items: center; gap: .75rem; }

.site-nav { display: none; align-items: center; gap: .5rem; }
@media (min-width: 768px) { .site-nav { display: flex; } }
@media (min-width: 1024px) { .site-nav { gap: 1rem; } }
.site-nav__link { position: relative; padding: .5rem .75rem; font-size: .75rem; line-height: 1rem; font-weight: 500; letter-spacing: .1em; text-transform: uppercase; color: var(--nav); transition: color .15s; }
@media (min-width: 1024px) { .site-nav__link { font-size: .875rem; line-height: 1.25rem; } }
.site-nav__link:hover { color: var(--purple-mid); }
.site-nav__link.is-active { color: var(--purple); font-weight: 700; }
.site-nav__bar { position: absolute; bottom: 0; left: .75rem; right: .75rem; height: 1.5px; width: 0; background: var(--purple-mid); transition: width .3s; }
.site-nav__link:hover .site-nav__bar, .site-nav__link.is-active .site-nav__bar { width: calc(100% - 1.5rem); }

/* Live search */
.hsearch { position: relative; width: 9rem; }
@media (min-width: 640px) { .hsearch { width: 13rem; } }
@media (min-width: 1024px) { .hsearch { width: 16rem; } }
.hsearch__form { position: relative; }
.hsearch__input { width: 100%; padding: .5rem 2rem .5rem 2.25rem; font-size: .75rem; line-height: 1rem; background: var(--ivory); border: 1px solid var(--line-input); color: var(--ink); outline: none; transition: all .15s; }
.hsearch__input:focus { border-color: var(--purple); background: #fff; }
.hsearch__submit { position: absolute; left: .75rem; top: .625rem; color: var(--purple); display: block; line-height: 0; }
.hsearch__submit:hover { color: var(--purple-mid); }
.hsearch__clear { position: absolute; right: .625rem; top: .625rem; color: var(--muted); line-height: 0; }
.hsearch__clear:hover { color: var(--ink); }
.hsearch__panel { position: absolute; right: 0; top: 100%; margin-top: .5rem; width: 20rem; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow-xl); overflow: hidden; z-index: 50; }
@media (min-width: 640px) { .hsearch__panel { width: 24rem; } }
@media (max-width: 480px) { .hsearch__panel { position: fixed; left: 1rem; right: 1rem; top: 5rem; width: auto; } }
.hsearch__head { padding: .625rem; background: var(--ivory-2); border-bottom: 1px solid var(--line); font-family: var(--font-mono); font-size: 11px; line-height: 1rem; font-weight: 700; color: var(--ink); text-transform: uppercase; letter-spacing: .05em; display: flex; align-items: center; justify-content: space-between; }
.hsearch__viewall-link { color: var(--purple); font-weight: 700; }
.hsearch__viewall-link:hover { text-decoration: underline; }
.hsearch__list { max-height: 20rem; overflow-y: auto; }
.hsearch__item { display: flex; gap: .75rem; padding: .75rem; width: 100%; border-top: 1px solid var(--line); transition: background-color .15s; }
.hsearch__item:first-child { border-top: 0; }
.hsearch__item:hover { background: rgb(242 235 226 / .5); }
.hsearch__item img { width: 3rem; height: 3rem; object-fit: cover; flex-shrink: 0; }
.hsearch__item-body { flex: 1 1 0%; min-width: 0; }
.hsearch__item-cat { display: inline-block; font-family: var(--font-mono); font-size: 10px; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--purple-mid); margin-bottom: .125rem; }
.hsearch__item-title { font-family: var(--font-serif); font-size: .75rem; line-height: 1rem; font-weight: 700; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: color .15s; }
.hsearch__item:hover .hsearch__item-title { color: var(--purple); }
.hsearch__item-by { font-family: var(--font-editorial); font-size: 11px; line-height: 1rem; color: var(--muted); margin-top: .125rem; }
.hsearch__none { padding: 1.5rem; text-align: center; font-size: .75rem; line-height: 1rem; color: var(--muted); }
.hsearch__foot { width: 100%; padding: .625rem; background: var(--purple); color: var(--ivory); font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; text-align: center; border-top: 1px solid var(--line); transition: background-color .15s; }
.hsearch__foot:hover { background: var(--purple-mid); }

.menu-toggle { display: block; padding: .5rem; color: var(--ink); line-height: 0; }
.menu-toggle:hover { color: var(--purple); }
.menu-toggle__close { display: none; }
.menu-toggle[aria-expanded="true"] .menu-toggle__open { display: none; }
.menu-toggle[aria-expanded="true"] .menu-toggle__close { display: block; }
@media (min-width: 768px) { .menu-toggle { display: none; } }

.mobile-menu { background: var(--ivory); border-bottom: 1px solid var(--line); padding: .5rem 1rem 1.5rem; }
@media (min-width: 768px) { .mobile-menu { display: none !important; } }
.mobile-menu__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; padding-top: .5rem; }
.mobile-menu__link { padding: .5rem .75rem; text-align: left; font-size: .75rem; line-height: 1rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 600; color: var(--muted); transition: background-color .15s; }
.mobile-menu__link:hover { background: rgb(242 235 226 / .5); }
.mobile-menu__link.is-active { background: var(--ivory-2); color: var(--ink); font-weight: 700; border-left: 2px solid var(--purple); }
.mobile-menu__sub { margin-top: .75rem; padding-top: .5rem; border-top: 1px solid var(--line); }

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer { background: var(--ivory-2); color: var(--ink); padding: 4rem 0 3rem; border-top: 1px solid var(--line); font-family: var(--font-sans); }
.site-footer__grid { display: grid; grid-template-columns: 1fr; gap: 2.5rem; padding-bottom: 3rem; border-bottom: 1px solid var(--line); }
@media (min-width: 768px) {
  .site-footer__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .site-footer__brand { grid-column: span 4; }
  .site-footer__col--nav, .site-footer__col--legal { grid-column: span 2; }
  .site-footer__col--dispatch { grid-column: span 4; }
}
@media (min-width: 1024px) { .site-footer__grid { gap: 3rem; } }
.site-footer__brand > * + * { margin-top: 1rem; }
.site-footer__logo { display: inline-flex; align-items: center; transition: opacity .15s; }
.site-footer__logo:hover { opacity: .8; }
.site-footer__about { max-width: 28rem; padding-top: .25rem; font-family: var(--font-editorial); font-size: .75rem; line-height: 1.625; color: var(--muted); }
@media (min-width: 640px) { .site-footer__about { font-size: .875rem; } }
.social { display: flex; align-items: center; gap: .75rem; padding-top: .5rem; }
.social a { padding: .5rem; background: var(--ivory); color: var(--ink); transition: background-color .15s, color .15s; display: block; }
.social a:hover { background: var(--purple); color: #fff; }
.site-footer__col > * + * { margin-top: .75rem; }
.site-footer__title { font-family: var(--font-mono); font-size: 11px; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .2em; color: var(--ink); }
.site-footer__list { font-size: .75rem; line-height: 1rem; color: var(--purple); font-weight: 500; }
.site-footer__list > li + li { margin-top: .5rem; }
@media (min-width: 640px) { .site-footer__list { font-size: .875rem; line-height: 1.25rem; } }
.site-footer__list a { transition: color .15s; }
.site-footer__list a:hover { color: var(--purple-mid); }
.site-footer__col--dispatch > * + * { margin-top: 1rem; }
.site-footer__blurb { font-family: var(--font-editorial); font-size: .75rem; line-height: 1.625; color: var(--muted); }

.fsub > * + * { margin-top: .5rem; }
.fsub__input { width: 100%; padding: .5rem .875rem; font-size: .75rem; line-height: 1rem; background: transparent; border-bottom: 1px solid var(--line); color: var(--ink); outline: none; transition: border-color .15s; }
.fsub__input:focus { border-color: var(--purple); }
.fsub__input--grow { flex: 1 1 0%; min-width: 0; }
.fsub__row { display: flex; gap: .5rem; }
.fsub__row .btn { flex-shrink: 0; }
.fsub-done { padding: 1rem; background: var(--ivory); border: 1px solid var(--line); color: var(--ink); font-size: .75rem; line-height: 1rem; }
.fsub-done > * + * { margin-top: .25rem; }
.fsub-done__title { display: flex; align-items: center; gap: .5rem; font-weight: 700; }
.fsub-done__title .pfs-icon { color: var(--purple); }
.fsub-done p { color: var(--muted); }

.tp { padding-top: .75rem; }
.tp__badge { display: inline-flex; align-items: center; gap: .75rem; padding: .5rem .875rem; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow-2xs); }
.tp__mark { width: 1.5rem; height: 1.5rem; background: #00B67A; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.tp__text { display: flex; flex-direction: column; text-align: left; }
.tp__row { display: flex; align-items: center; gap: .375rem; }
.tp__label { font-size: .75rem; line-height: 1rem; font-weight: 700; color: #191919; }
.tp__stars { display: flex; align-items: center; gap: .125rem; }
.tp__star { width: .875rem; height: .875rem; background: #00B67A; display: flex; align-items: center; justify-content: center; }
.tp__meta { font-family: var(--font-mono); font-size: 10px; line-height: 1rem; color: #545454; display: flex; align-items: center; gap: .25rem; }
.tp__meta strong { font-weight: 700; color: #191919; }
.site-footer__bottom { padding-top: 2rem; display: flex; flex-direction: column; align-items: center; justify-content: space-between; gap: 1rem; font-size: .75rem; line-height: 1rem; color: var(--muted); }
@media (min-width: 640px) { .site-footer__bottom { flex-direction: row; } }

/* ==========================================================================
   Subscribe modal
   ========================================================================== */
.modal { position: fixed; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; padding: 1rem; background: rgb(37 31 37 / .4); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.modal[hidden] { display: none !important; }
.modal__dialog { position: relative; width: 100%; max-width: 28rem; background: var(--ivory); border: 1px solid var(--line); padding: 1.5rem; box-shadow: var(--shadow-2xl); max-height: 100%; overflow-y: auto; }
@media (min-width: 768px) { .modal__dialog { padding: 2rem; } }
.modal__close { position: absolute; top: 1rem; right: 1rem; padding: .5rem; color: var(--muted); line-height: 0; transition: background-color .15s, color .15s; }
.modal__close:hover { color: var(--ink); background: var(--ivory-2); }
.modal__body > * + * { margin-top: 1.5rem; }
.modal__head { text-align: center; }
.modal__head > * + * { margin-top: .5rem; }
.modal__eyebrow { display: inline-block; font-family: var(--font-mono); font-size: 10px; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .2em; color: var(--purple-mid); }
.modal__head h3 { font-family: var(--font-serif); font-size: 1.5rem; line-height: 2rem; font-weight: 700; color: var(--ink); }
@media (min-width: 768px) { .modal__head h3 { font-size: 1.875rem; line-height: 2.25rem; } }
.modal__head p { font-family: var(--font-editorial); font-size: .75rem; line-height: 1.625; color: var(--muted); }
@media (min-width: 768px) { .modal__head p { font-size: .875rem; } }
.modal__form > * + * { margin-top: 1rem; }
.modal__form .label { letter-spacing: .05em; font-weight: 600; }
.modal__form .btn { font-size: .75rem; letter-spacing: .1em; padding: .75rem 1rem; }
.modal__fine { font-family: var(--font-editorial); font-size: 11px; line-height: 1.375; text-align: center; color: var(--muted); }
.modal__done { padding: 2rem 0; text-align: center; }
.modal__done > * + * { margin-top: 1rem; }
.modal__done-icon { width: 3rem; height: 3rem; background: var(--purple); color: var(--ivory); display: flex; align-items: center; justify-content: center; margin-inline: auto; }
.modal__done h3 { font-family: var(--font-serif); font-size: 1.5rem; line-height: 2rem; font-weight: 700; color: var(--ink); }
.modal__done p { font-family: var(--font-editorial); font-size: .875rem; line-height: 1.625; color: var(--muted); max-width: 24rem; margin-inline: auto; }
.modal__done p strong { font-weight: 600; color: var(--ink); }
.modal__note { padding: .75rem; background: var(--ivory-2); color: var(--ink); font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 500; border: 1px solid var(--line); }

/* ==========================================================================
   Cards
   ========================================================================== */
.card { cursor: pointer; position: relative; }
.card__cover { position: absolute; inset: 0; z-index: 5; }
.card__img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease-out; }
.card:hover .card__img { transform: scale(1.05); }
.card__cat { display: block; font-family: var(--font-mono); font-size: 10px; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .2em; color: var(--purple-light); }
.card__title { font-family: var(--font-serif); font-weight: 700; color: var(--ink); line-height: 1.375; transition: color .15s; }
.card:hover .card__title { color: var(--purple); }
.card__excerpt { font-family: var(--font-editorial); color: var(--muted); line-height: 1.625; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.card__tag { font-family: var(--font-mono); color: var(--purple-mid); }
.card__more { font-weight: 700; color: var(--purple); display: flex; align-items: center; gap: .125rem; white-space: nowrap; text-transform: uppercase; font-size: 11px; line-height: 1rem; letter-spacing: .05em; transition: color .15s; }
.card__more .pfs-icon { color: var(--purple-mid); transition: transform .15s; }
.card--vertical:hover .card__more .pfs-icon { transform: translateX(.125rem); }
.card:hover .card__more { color: var(--purple-mid); }

/* vertical */
.card--vertical { display: flex; flex-direction: column; justify-content: space-between; background: transparent; border-bottom: 1px solid var(--line-card); padding-bottom: 1.5rem; }
.card--vertical .card__media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--ivory-2); margin-bottom: 1rem; }
.card--vertical .card__text > * + * { margin-top: .5rem; }
.card--vertical .card__title { font-size: 1.125rem; line-height: 1.375; -webkit-line-clamp: 2; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.card--vertical .card__excerpt { font-size: .75rem; -webkit-line-clamp: 3; }
@media (min-width: 768px) {
  .card--vertical .card__title { font-size: 1.25rem; }
  .card--vertical .card__excerpt { font-size: .875rem; }
}
.card--vertical .card__foot { padding-top: 1rem; border-top: 1px solid var(--line-card); margin-top: 1rem; display: flex; align-items: center; justify-content: space-between; font-size: .75rem; line-height: 1rem; color: var(--muted); }
.card--vertical .card__tag { font-size: 10px; }

/* horizontal */
.card--horizontal { display: grid; grid-template-columns: 1fr; gap: 0; background: transparent; border-bottom: 1px solid var(--line-card); padding-bottom: 1.5rem; }
@media (min-width: 640px) { .card--horizontal { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 1.5rem; } .card--horizontal .card__media { grid-column: span 5; } .card--horizontal .card__main { grid-column: span 7; } }
.card--horizontal .card__media { position: relative; overflow: hidden; height: 12rem; width: 100%; background: var(--ivory-2); }
@media (min-width: 640px) { .card--horizontal .card__media { height: 13rem; } }
@media (min-width: 768px) { .card--horizontal .card__media { height: 14rem; } }
.card--horizontal .card__main { padding: .75rem 0; display: flex; flex-direction: column; justify-content: space-between; min-height: 0; }
@media (min-width: 640px) { .card--horizontal .card__main { padding: .5rem 0; } }
.card--horizontal .card__main > * + * { margin-top: .75rem; }
.card--horizontal .card__text > * + * { margin-top: .5rem; }
.card--horizontal .card__cat { display: inline-block; }
.card--horizontal .card__title { font-size: 1.125rem; line-height: 1.375; }
.card--horizontal .card__excerpt { font-size: .75rem; -webkit-line-clamp: 3; }
@media (min-width: 640px) { .card--horizontal .card__title { font-size: 1.25rem; } .card--horizontal .card__excerpt { font-size: .875rem; } }
@media (min-width: 1024px) { .card--horizontal .card__title { font-size: 1.5rem; } }
.card--horizontal .card__foot { padding-top: .75rem; display: flex; align-items: center; justify-content: space-between; font-size: .75rem; line-height: 1rem; color: var(--muted); }
.card--horizontal .card__tag { font-size: 11px; }
.card--horizontal .card__more { gap: .25rem; font-size: .75rem; letter-spacing: .05em; font-family: var(--font-mono); }

/* tall (search results) */
.card--tall { background: var(--ink); overflow: hidden; min-height: 420px; display: flex; flex-direction: column; justify-content: flex-end; padding: 1.5rem; color: #fff; }
@media (min-width: 640px) { .card--tall { min-height: 480px; } }
.card--tall > .card__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .85; }
.card__scrim { position: absolute; inset: 0; background: linear-gradient(to top, var(--ink), rgb(37 31 37 / .5), transparent); }
.card--tall .card__body { position: relative; z-index: 10; }
.card--tall .card__body > * + * { margin-top: .75rem; }
.card--tall .card__cat { font-size: 11px; }
.card__cat--light { color: var(--purple-light); }
.card--tall .card__title { font-size: 1.25rem; line-height: 1.375; color: #fff; }
@media (min-width: 640px) { .card--tall .card__title { font-size: 1.5rem; line-height: 2rem; } }
.card--tall:hover .card__title { color: var(--purple-light); }
.card--tall .card__excerpt { color: rgb(255 255 255 / .85); font-size: .75rem; -webkit-line-clamp: 2; }
@media (min-width: 640px) { .card--tall .card__excerpt { font-size: .875rem; } }
.card--tall .card__foot { padding-top: .75rem; border-top: 1px solid rgb(216 202 219 / .2); display: flex; align-items: center; justify-content: space-between; font-size: .75rem; color: rgb(255 255 255 / .7); }
.card--tall .card__tag { font-size: 11px; letter-spacing: .05em; text-transform: uppercase; color: var(--purple-mid); }
.card--tall .card__more { color: var(--purple-light); }
.card--tall:hover .card__more { color: #fff; }
.card--tall .card__more .pfs-icon { color: var(--purple-mid); }

.grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .grid--wide { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .grid--wide { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.grid--wide { gap: 2rem; }

/* ==========================================================================
   Category archive
   ========================================================================== */
.category-view { padding-bottom: 4rem; }
.cat-hero { position: relative; background: var(--ink); color: #fff; padding: 4rem 1rem; overflow: hidden; }
@media (min-width: 640px) { .cat-hero { padding: 5rem 1.5rem; } }
@media (min-width: 1024px) { .cat-hero { padding: 6rem 2rem; } }
.cat-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .25; transform: scale(1.05); }
.cat-hero__scrim { position: absolute; inset: 0; background: linear-gradient(to top, var(--ink), rgb(37 31 37 / .8), rgb(37 31 37 / .4)); }
.cat-hero__inner { position: relative; z-index: 10; max-width: 64rem; margin-inline: auto; text-align: center; }
.cat-hero__inner > * + * { margin-top: 1.5rem; }
.cat-hero__inner > .crumb--light { display: inline-flex; }
.cat-hero__title { font-family: var(--font-serif); font-size: 2.25rem; line-height: 2.5rem; font-weight: 900; color: #fff; letter-spacing: -.025em; }
@media (min-width: 640px) { .cat-hero__title { font-size: 3.75rem; line-height: 1; } }
.cat-hero__desc { color: rgb(255 255 255 / .85); font-family: var(--font-editorial); font-size: 1rem; line-height: 1.625; max-width: 42rem; margin-inline: auto; }
@media (min-width: 640px) { .cat-hero__desc { font-size: 1.25rem; } }
.cat-list { margin-top: 3rem; }
.cat-list > * + * { margin-top: 2rem; }
.cat-list__head { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--line); padding-bottom: 1rem; gap: 1rem; }
.cat-list__head h2 { font-family: var(--font-serif); font-size: 1.5rem; line-height: 2rem; font-weight: 700; color: var(--ink); }
.cat-list__head span { font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; color: var(--muted); }
.cat-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px) {
  .cat-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .cat-grid__cell--12 { grid-column: span 12; }
  .cat-grid__cell--6 { grid-column: span 6; }
  .cat-grid__cell--4 { grid-column: span 4; }
}
.cat-grid__cell { min-width: 0; }
.empty { color: var(--muted); font-family: var(--font-editorial); }
.pager { margin-top: 2.5rem; }
.pager ul { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; }
.pager a, .pager span { display: block; padding: .5rem 1rem; font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; border: 1px solid var(--line); background: var(--ivory); color: var(--ink); transition: background-color .15s, color .15s; }
.pager a:hover { background: var(--purple); color: #fff; }
.pager .current { background: var(--purple); color: var(--ivory); border-color: var(--purple); }

/* ==========================================================================
   Single article
   ========================================================================== */
article.single { padding-bottom: 5rem; }
.single__bar { background: var(--ivory-2); border-bottom: 1px solid var(--line); padding: .75rem 1rem; }
@media (min-width: 640px) { .single__bar { padding-inline: 1.5rem; } }
.single__bar-inner { max-width: 56rem; margin-inline: auto; display: flex; align-items: center; justify-content: space-between; }
.single__head { max-width: 56rem; margin-inline: auto; padding: 3rem 1rem 2rem; text-align: center; }
@media (min-width: 640px) { .single__head { padding-inline: 1.5rem; } }
.single__head > * + * { margin-top: 1.5rem; }
.single__pill-wrap { display: flex; align-items: center; justify-content: center; gap: .75rem; }
.pill { padding: .375rem .875rem; background: var(--purple); color: var(--ivory); font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .2em; transition: background-color .15s; }
.pill:hover { background: var(--purple-mid); }
.single__title { font-family: var(--font-serif); font-size: 1.875rem; line-height: 1.12; font-weight: 900; color: var(--ink); }
@media (min-width: 640px) { .single__title { font-size: 3rem; } }
@media (min-width: 1024px) { .single__title { font-size: 3.75rem; } }
.single__subtitle { font-family: var(--font-editorial); font-size: 1.125rem; line-height: 1.625; color: var(--muted); max-width: 42rem; margin-inline: auto; }
@media (min-width: 640px) { .single__subtitle { font-size: 1.25rem; } }

.article-body { max-width: 48rem; margin-inline: auto; padding-inline: 1rem; color: var(--ink); font-family: var(--font-editorial); font-size: 1.125rem; line-height: 1.625; }
@media (min-width: 640px) { .article-body { padding-inline: 1.5rem; font-size: 1.25rem; } }
.article-body__intro { font-weight: 500; font-size: 1.25rem; line-height: 1.625; color: var(--ink); }
@media (min-width: 640px) { .article-body__intro { font-size: 1.5rem; } }
.article-body h2 { font-family: var(--font-serif); font-size: 1.5rem; line-height: 2rem; font-weight: 700; color: var(--ink); letter-spacing: -.025em; margin: 2.5rem 0 1.5rem; padding-top: 1rem; }
@media (min-width: 640px) { .article-body h2 { font-size: 1.875rem; line-height: 2.25rem; } }
.article-body p { color: rgb(37 31 37 / .9); }
.article-body p + p { margin-top: 1.5rem; }
.article-body__intro + p { margin-top: 2.5rem; }
.article-body figure { margin: 2rem 0; }
.article-body figure img, .article-body .wp-block-image img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; background: var(--ivory-2); }
.article-body figcaption { display: none; }
.article-body > *:last-child { margin-bottom: 0; }

.single__author-wrap { max-width: 48rem; margin: 4rem auto 0; padding: 2rem 1rem 0; border-top: 1px solid var(--line); }
@media (min-width: 640px) { .single__author-wrap { padding-inline: 1.5rem; } }
.author-box { background: var(--ivory-2); border: 1px solid var(--line); padding: 1.5rem; display: flex; flex-direction: column; align-items: center; gap: 1.5rem; text-align: center; }
@media (min-width: 640px) { .author-box { padding: 2rem; flex-direction: row; align-items: flex-start; text-align: left; } }
.author-box__avatar { width: 5rem; height: 5rem; border-radius: 9999px; object-fit: cover; border: 2px solid var(--ivory); flex-shrink: 0; }
.author-box__text { flex: 1 1 0%; }
.author-box__text > * + * { margin-top: .5rem; }
.author-box__name-row { display: flex; align-items: center; justify-content: center; gap: .625rem; }
@media (min-width: 640px) { .author-box__name-row { justify-content: flex-start; } }
.author-box__name-row h4 { font-family: var(--font-serif); font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; color: var(--ink); }
.author-box__tag { font-family: var(--font-mono); font-size: 11px; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .15em; color: var(--ivory); background: var(--purple); padding: .125rem .625rem; }
.author-box__text p { font-family: var(--font-editorial); font-size: .875rem; line-height: 1.625; color: var(--muted); }

.related { margin-top: 5rem; padding-top: 4rem; border-top: 1px solid var(--line); }
.related > * + * { margin-top: 2rem; }
.related__head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.related__eyebrow { font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .2em; color: var(--purple-light); }
.related__head h3 { font-family: var(--font-serif); font-size: 1.875rem; line-height: 2.25rem; font-weight: 900; color: var(--ink); margin-top: .25rem; }
.related__all { font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--purple); transition: color .15s; white-space: nowrap; }
.related__all:hover { color: var(--purple-mid); }
@media (max-width: 639px) { .related__head { flex-direction: column; align-items: flex-start; } }

/* ==========================================================================
   Search / index
   ========================================================================== */
.search-view { padding-top: 2.5rem; padding-bottom: 2.5rem; }
.search-view > * + * { margin-top: 3rem; }
.search-view__head { border-bottom: 1px solid var(--line); padding-bottom: 2rem; }
.search-view__head > * + * { margin-top: 1rem; }
.search-view__head h1 { font-family: var(--font-serif); font-size: 1.875rem; line-height: 2.25rem; font-weight: 900; color: var(--ink); letter-spacing: -.025em; }
@media (min-width: 640px) { .search-view__head h1 { font-size: 2.25rem; line-height: 2.5rem; } }
@media (min-width: 1024px) { .search-view__head h1 { font-size: 3rem; line-height: 1; } }
.search-view__head p { color: var(--muted); font-family: var(--font-editorial); font-size: .875rem; line-height: 1.625; max-width: 42rem; }
@media (min-width: 640px) { .search-view__head p { font-size: 1rem; } }
.search-view__form { padding-top: .5rem; max-width: 28rem; display: flex; align-items: center; gap: .5rem; }
.search-view__form .input-icon > .pfs-icon { top: .75rem; color: var(--purple); }
.empty-box { background: var(--ivory-2); border: 1px solid var(--line); padding: 2.5rem; text-align: center; }
@media (min-width: 640px) { .empty-box { padding: 4rem; } }
.empty-box > * + * { margin-top: 1.5rem; }
.empty-box__text { max-width: 32rem; margin-inline: auto; }
.empty-box__text > * + * { margin-top: .5rem; }
.empty-box__text h3 { font-family: var(--font-serif); font-size: 1.5rem; line-height: 2rem; font-weight: 700; color: var(--ink); }
.empty-box__text p { color: var(--muted); font-family: var(--font-editorial); font-size: .875rem; line-height: 1.625; }
@media (min-width: 640px) { .empty-box__text p { font-size: 1rem; } }
.empty-box__text p strong { font-weight: 700; color: var(--ink); }
.empty-box__cats { padding-top: 1rem; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .75rem; }
.chip { padding: .5rem 1rem; background: var(--ivory); color: var(--ink); font-family: var(--font-mono); font-size: .75rem; line-height: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; border: 1px solid var(--line); transition: background-color .15s, color .15s; }
.chip:hover { background: var(--purple); color: #fff; }

/* ==========================================================================
   Contact
   ========================================================================== */
.contact { max-width: 48rem; margin-inline: auto; padding: 3rem 1rem; }
@media (min-width: 640px) { .contact { padding-inline: 1.5rem; } }
@media (min-width: 1024px) { .contact { padding-block: 4rem; } }
.contact > * + * { margin-top: 2rem; }
.contact__photo { position: relative; overflow: hidden; height: 13rem; border: 1px solid var(--line); background: var(--ink); }
@media (min-width: 640px) { .contact__photo { height: 16rem; } }
.contact__photo img { width: 100%; height: 100%; object-fit: cover; opacity: .85; transition: transform .7s ease-out; }
.contact__photo:hover img { transform: scale(1.05); }
.contact__photo-scrim { position: absolute; inset: 0; background: linear-gradient(to top, var(--ink), rgb(37 31 37 / .3), transparent); display: flex; align-items: flex-end; padding: 1.5rem; }
@media (min-width: 640px) { .contact__photo-scrim { padding: 2rem; } }
.contact__photo-scrim p { color: #fff; font-size: .75rem; line-height: 1rem; font-family: var(--font-editorial); font-style: italic; }
@media (min-width: 640px) { .contact__photo-scrim p { font-size: .875rem; line-height: 1.25rem; } }
.contact__title { text-align: center; max-width: 42rem; margin-inline: auto; }
.contact__title h1 { font-family: var(--font-serif); font-size: 2.25rem; line-height: 2.5rem; font-weight: 900; color: var(--ink); }
@media (min-width: 640px) { .contact__title h1 { font-size: 3rem; line-height: 1; } }
.contact__panel { background: var(--ivory-2); border: 1px solid var(--line); padding: 1.5rem; box-shadow: var(--shadow-xs); }
@media (min-width: 640px) { .contact__panel { padding: 2.5rem; } }
.contact__form > * + * { margin-top: 1rem; }
.contact__row { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 640px) { .contact__row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.contact__done { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 2rem; background: var(--ivory); border: 1px solid var(--line); }
.contact__done > * + * { margin-top: 1rem; }
.contact__done h3 { font-family: var(--font-serif); font-size: 1.5rem; line-height: 2rem; font-weight: 700; color: var(--ink); }
.contact__done p { font-size: .75rem; line-height: 1.625; color: var(--muted); max-width: 24rem; font-family: var(--font-editorial); }
.contact__done p strong { font-weight: 600; color: var(--ink); }
.contact__note { padding: .75rem; background: var(--ivory-2); color: var(--ink); font-size: .75rem; line-height: 1rem; font-family: var(--font-mono); font-weight: 500; border: 1px solid var(--line); }
.contact .label { font-weight: 700; }

/* ==========================================================================
   Legal + About
   ========================================================================== */
.legal { max-width: 56rem; margin-inline: auto; padding: 3rem 1rem; }
@media (min-width: 640px) { .legal { padding-inline: 1.5rem; } }
.legal > * + * { margin-top: 2rem; }
.legal__head { border-bottom: 1px solid var(--line); padding-bottom: 1.5rem; }
.legal__head h1 { font-family: var(--font-serif); font-size: 1.875rem; line-height: 2.25rem; font-weight: 900; color: var(--ink); }
@media (min-width: 640px) { .legal__head h1 { font-size: 2.25rem; line-height: 2.5rem; } }
.legal__head p { color: var(--muted); font-size: .875rem; line-height: 1.625; margin-top: .5rem; font-family: var(--font-editorial); }
@media (min-width: 640px) { .legal__head p { font-size: 1rem; } }
.legal__panel { background: var(--ivory-2); border: 1px solid var(--line); padding: 1.5rem; box-shadow: var(--shadow-xs); font-family: var(--font-sans); }
@media (min-width: 640px) { .legal__panel { padding: 2.5rem; } }
.legal__panel--about { padding: 1.5rem; }
@media (min-width: 640px) { .legal__panel--about { padding: 2rem; } }

.legal-body h3 { font-family: var(--font-serif); font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; color: var(--ink); margin-top: 0; padding-top: 4rem; border-top: 1px solid var(--line); }
.legal-body > h3:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.legal-body p, .legal-body li { color: rgb(37 31 37 / .9); font-family: var(--font-editorial); font-size: .875rem; line-height: 1.625; white-space: pre-line; }
@media (min-width: 640px) { .legal-body p, .legal-body li { font-size: 1rem; } }
.legal-body h3 + p, .legal-body h3 + ul { margin-top: .75rem; }
.legal-body p + p, .legal-body p + ul, .legal-body ul + p { margin-top: 1.625em; }
.legal-body ul { list-style: none; }
.legal-body li::before { content: '\2022\00a0'; }
.legal-body a { color: var(--purple); text-decoration: underline; }
.legal-body strong { font-weight: 700; }

.about-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; align-items: start; }
@media (min-width: 768px) {
  .about-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .about-grid__copy { grid-column: span 7; }
  .about-grid__photo { grid-column: span 5; position: sticky; top: 7rem; }
}
.about-photo { position: relative; overflow: hidden; border: 1px solid var(--line); aspect-ratio: 3 / 4; background: var(--ink); max-width: 24rem; margin-inline: auto; }
.about-photo img { width: 100%; height: 100%; object-fit: cover; opacity: .9; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; }
}
