/* Warm editorial design system.
   Fonts: Fraunces / Source Serif 4 / Inter, BUNDLED as woff2 (latin subset)
   under static/fonts/ with their SIL OFL 1.1 licenses (F5/F7), fetched once
   under the user's explicit authorize-fetch decision recorded in
   System stacks remain as fallbacks. */
@font-face{font-family:"Fraunces";font-style:normal;font-weight:400;
  font-display:swap;src:url("fonts/fraunces/Fraunces-400.woff2") format("woff2")}
@font-face{font-family:"Fraunces";font-style:normal;font-weight:600;
  font-display:swap;src:url("fonts/fraunces/Fraunces-600.woff2") format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;
  font-display:swap;src:url("fonts/source-serif-4/SourceSerif4-400.woff2") format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;
  font-display:swap;src:url("fonts/source-serif-4/SourceSerif4-600.woff2") format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;
  font-display:swap;src:url("fonts/source-serif-4/SourceSerif4-700.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:400;
  font-display:swap;src:url("fonts/inter/Inter-400.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;
  font-display:swap;src:url("fonts/inter/Inter-600.woff2") format("woff2")}
:root{
  --paper:#FAF6F0; --surface:#FFFFFF; --border:#E8E1D6;
  --ink:#211D18; --ink-soft:#6B6258;
  --accent:#3A5544; --accent-soft:#EFEAE1; --warn:#C4643B;
  --measure:68ch; --radius:12px;
  --display:"Fraunces",Cambria,Georgia,"Times New Roman",serif;
  --body:"Source Serif 4",Cambria,Georgia,serif;
  --chrome:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font-family:var(--body);
  font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-999px}
.skip-link:focus{left:8px;top:8px;background:var(--surface);padding:8px 12px;
  border:1px solid var(--border);border-radius:8px;z-index:100}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* top bar */
.topbar{display:flex;align-items:center;gap:24px;padding:14px 28px;
  background:var(--surface);border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:20}
/* Anchor jumps must clear the sticky topbar: without this the target
   heading lands hidden underneath it and the page looks like it jumped
   to the wrong spot. Applies to every fragment target site-wide. */
[id]{scroll-margin-top:76px}
.wordmark{font-family:var(--display);font-size:19px;font-weight:600;
  text-decoration:none;color:var(--ink)}
.wordmark span{color:var(--ink-soft);font-weight:400}
.topnav{display:flex;gap:18px;font-family:var(--chrome);font-size:13px;
  letter-spacing:.02em;margin-left:8px}
.topnav a{text-decoration:none;color:var(--ink-soft);padding:4px 2px;
  border-bottom:2px solid transparent;transition:color .12s ease}
.topnav a:hover{color:var(--ink);border-bottom-color:var(--border)}
.topnav a.topnav__active{color:var(--ink);
  border-bottom-color:var(--accent)}
.topnav__soon{color:#B4AA9C;cursor:default}
.search-btn{margin-left:auto;font-family:var(--chrome);font-size:12px;
  background:var(--accent-soft);border:1px solid var(--border);color:var(--ink-soft);
  padding:6px 10px;border-radius:8px;cursor:pointer}
.search-btn kbd{font-family:var(--chrome);font-size:11px;background:var(--surface);
  border:1px solid var(--border);border-radius:4px;padding:1px 4px;margin-left:3px}

/* layout */
.shell{display:grid;grid-template-columns:220px minmax(0,1fr) 220px;gap:40px;
  max-width:1400px;margin:0 auto;padding:32px 28px 96px}
.sidebar__title,.toc__title{font-family:var(--chrome);font-size:11px;
  text-transform:uppercase;letter-spacing:.09em;color:var(--ink-soft);margin:0 0 10px}
.sidebar__list{list-style:none;margin:0;padding:0;font-family:var(--chrome);font-size:14px}
.sidebar__list li{margin-bottom:2px}
.sidebar__list a{display:flex;justify-content:space-between;text-decoration:none;
  color:var(--ink);padding:5px 8px;border-radius:7px}
.sidebar__list a:hover{background:var(--accent-soft)}
.sidebar__count{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:12px}
.content{min-width:0;max-width:var(--measure)}
.toc{font-family:var(--chrome);font-size:13px;position:sticky;top:88px;align-self:start}
.toc ul{list-style:none;margin:0;padding:0}
.toc li{margin:3px 0}
.toc__l3{padding-left:12px;font-size:12px}
.toc a{color:var(--ink-soft);text-decoration:none}
.toc a:hover{color:var(--accent)}

/* article */
.crumb{font-family:var(--chrome);font-size:12px;text-transform:uppercase;
  letter-spacing:.08em;margin:0 0 6px}
.crumb a{color:var(--ink-soft);text-decoration:none}
.article__title{font-family:var(--display);font-size:36px;font-weight:600;
  line-height:1.15;margin:0 0 8px}
.article__meta,.lede{color:var(--ink-soft);margin:0 0 28px}
.lede{font-size:19px;max-width:60ch}
/* Favorites (2026-10-18): the star under a page title and the favorites page. */
.fav-bar{margin:0 0 20px}
.fav-star{display:inline-flex;align-items:center;gap:6px;font-family:var(--chrome);
  font-size:13px;color:var(--ink-soft);background:var(--surface);
  border:1px solid var(--border);border-radius:999px;padding:5px 12px;cursor:pointer}
.fav-star:hover{color:var(--ink);border-color:var(--accent)}
.fav-star__icon{font-size:16px;line-height:1;color:var(--warn)}
.fav-star--on{color:var(--ink);background:var(--accent-soft);border-color:var(--accent)}
.fav-star--small{padding:3px 10px;font-size:12px}
.favs__empty{color:var(--ink-soft)}
.favs__title{font-family:var(--display);font-size:22px;font-weight:600;
  margin:28px 0 8px;padding-top:8px;border-top:1px solid var(--border)}
.favs__list{list-style:none;margin:0;padding:0}
.favs__item{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 0;border-bottom:1px solid var(--border)}
.favs__item[hidden],.favs__group[hidden],.favs__empty[hidden]{display:none}
.favs__link{font-size:17px;text-decoration:none}
.favs__link:hover{text-decoration:underline}
.prose h2{font-family:var(--display);font-size:26px;font-weight:600;
  margin:48px 0 12px;padding-top:8px;border-top:1px solid var(--border)}
.prose h3{font-family:var(--chrome);font-size:18px;font-weight:600;margin:28px 0 8px}
.prose p{margin:0 0 16px}
.prose ul,.prose ol{margin:0 0 16px;padding-left:22px}
.prose li{margin-bottom:6px}
.prose blockquote{margin:0 0 16px;padding:2px 0 2px 16px;
  border-left:3px solid var(--accent-soft);color:var(--ink-soft)}
.prose table{width:100%;border-collapse:collapse;margin:0 0 20px;
  font-family:var(--chrome);font-size:14px}
.prose th,.prose td{border:1px solid var(--border);padding:8px 10px;
  text-align:left;vertical-align:top}
.prose th{background:var(--accent-soft);font-weight:600}
.prose code{font-size:14px;background:var(--accent-soft);padding:1px 5px;border-radius:5px}
.xref{text-decoration:none;border-bottom:1px solid var(--border)}
.xref-plain{color:var(--ink-soft)}

/* citation chips (F1–F4) */
.cite-group{display:inline-flex;align-items:center;gap:2px;vertical-align:baseline;
  border:1px solid var(--border);border-radius:999px;padding:1px 3px;margin:0 2px;
  background:var(--surface)}
.cite-chip{display:inline-flex;align-items:center;gap:3px;
  font-family:var(--chrome);font-size:12px;font-variant-numeric:tabular-nums;
  background:var(--accent-soft);color:var(--ink-soft);text-decoration:none;
  border:0;border-radius:999px;padding:1px 7px;margin:0 1px;cursor:pointer;
  white-space:nowrap}
.cite-chip:hover,.cite-chip:focus-visible{background:var(--accent);color:#fff}
.cite-chip__glyph{font-size:8px;line-height:1}
.cite-group__expand{font-family:var(--chrome);font-size:11px;border:0;
  background:transparent;color:var(--ink-soft);cursor:pointer;padding:1px 5px}
.cite-group__expand:hover{color:var(--accent)}

/* cards + stats */
.cards{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.card{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:16px}
.card__link{font-family:var(--display);font-size:17px;font-weight:600;
  text-decoration:none;color:var(--ink)}
.card__desc{font-family:var(--chrome);font-size:13px;color:var(--ink-soft);margin:6px 0 0}
.stats{display:flex;gap:36px;margin:0 0 40px;padding:0}
.stats div{margin:0}
.stats dt{font-family:var(--chrome);font-size:11px;text-transform:uppercase;
  letter-spacing:.09em;color:var(--ink-soft)}
.stats dd{font-family:var(--display);font-size:30px;margin:2px 0 0;
  font-variant-numeric:tabular-nums}
.home__h2{font-family:var(--display);font-size:22px;margin:0 0 14px}

/* modal (E1–E3) */
.modal[hidden]{display:none}
.modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;
  justify-content:center}
.modal__scrim{position:absolute;inset:0;background:rgba(30,26,20,.65)}
/* Popup chevrons (inside the panel, lightbox-style): step to the previous /
   next item of the CURRENT queue — the playlist on video pages, the recipe
   class on recipe pages — and the page underneath follows along. */
.modal__nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  background:rgba(30,26,20,.45);border:0;border-radius:10px;cursor:pointer;
  color:rgba(250,246,240,.9);padding:14px 5px;
  transition:color .15s ease,background .15s ease}
.modal__nav svg{display:block;width:18px;height:84px}
.modal__nav:hover{color:#fff;background:rgba(30,26,20,.72)}
#cite-modal-prev{left:22px}
#cite-modal-next{right:22px}
.modal__panel{position:relative;background:var(--surface);border-radius:14px;
  box-shadow:0 24px 60px rgba(30,26,20,.35);padding:14px;max-width:92vw;
  width:fit-content;max-height:94vh;overflow-y:auto;
  display:flex;flex-direction:column;gap:12px}
.modal__panel--search{width:min(560px,92vw);padding:16px}
.modal__frame iframe{display:block;border:0;border-radius:10px}
.modal__frame[data-shape="short"] iframe{height:min(78vh,700px);width:calc(min(78vh,700px)*9/16)}
.modal__frame[data-shape="wide"] iframe{width:min(880px,88vw);height:calc(min(880px,88vw)*9/16)}
/* Wide videos: stacked card — the meta tracks the frame's width
   (width:0 + min-width:100%) so the panel shrink-wraps the player and
   long titles wrap instead of stretching the panel or clipping. */
.modal__meta{width:0;min-width:100%}
/* Shorts: a landscape card — portrait player on the left, title/meta
   beside it — instead of a cramped tower that scrolls internally. */
.modal__panel:has(.modal__frame[data-shape="short"]){flex-direction:row;gap:20px}
.modal__panel:has(.modal__frame[data-shape="short"]) .modal__meta{
  width:320px;min-width:0;align-self:center;padding:0 20px 0 2px}
.modal__title{font-family:var(--display);font-size:18px;margin:0;
  overflow-wrap:break-word}
.modal__sub,.modal__status{font-family:var(--chrome);font-size:12px;
  color:var(--ink-soft);margin:4px 0 0}
.modal__status:empty{display:none}
.modal__out{font-family:var(--chrome);font-size:13px;display:inline-block;margin-top:6px}
.modal__close{position:absolute;top:6px;right:10px;background:transparent;border:0;
  font-size:26px;line-height:1;color:var(--ink-soft);cursor:pointer}
#search-input{width:100%;font-family:var(--body);font-size:17px;padding:10px 12px;
  border:1px solid var(--border);border-radius:9px;background:var(--paper)}
.search-results{list-style:none;margin:10px 0 0;padding:0;max-height:52vh;overflow:auto}
.search-results li a{display:block;padding:8px 10px;border-radius:7px;
  font-family:var(--chrome);font-size:14px;text-decoration:none;color:var(--ink)}
.search-results li a:hover,.search-results li a:focus-visible{background:var(--accent-soft)}
[inert]{pointer-events:none;user-select:none}

/* playlists (AJ0013) */
.card__count{margin-top:8px;font-variant-numeric:tabular-nums}
.card__progress{font-family:var(--chrome);font-size:12px;color:var(--accent);
  margin:6px 0 0;font-variant-numeric:tabular-nums}
.playlist-progress{display:flex;align-items:center;gap:14px;margin:0 0 6px;
  font-family:var(--chrome);font-size:13px;color:var(--ink-soft);
  font-variant-numeric:tabular-nums}
.playlist-resume{font-family:var(--chrome);font-size:12px;
  background:var(--accent-soft);border:1px solid var(--border);color:var(--ink);
  padding:5px 10px;border-radius:8px;cursor:pointer}
.playlist-resume:hover{background:var(--accent);color:#fff}
.psteps{list-style:none;margin:24px 0 0;padding:0}
.pstep{display:flex;gap:16px;margin:0 0 18px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--radius);padding:14px}
.pstep--watched{border-color:var(--accent)}
.pstep--watched .pstep__title{color:var(--ink-soft)}
.cite-chip.pstep__play{position:relative;flex:0 0 116px;display:block;
  padding:0;margin:0;background:none;border-radius:10px;overflow:hidden;
  align-self:start}
.cite-chip.pstep__play:hover,.cite-chip.pstep__play:focus-visible{background:none}
.pstep__thumb{width:116px;aspect-ratio:4/5;height:auto;object-fit:cover;
  display:block;border-radius:10px;background:var(--accent-soft)}
.pstep__playglyph{position:absolute;left:8px;bottom:8px;width:26px;height:26px;
  display:flex;align-items:center;justify-content:center;font-size:10px;
  background:rgba(33,29,24,.72);color:#fff;border-radius:999px}
.cite-chip.pstep__play:hover .pstep__playglyph{background:var(--accent)}
.pstep__body{min-width:0;flex:1}
.pstep__title{font-family:var(--display);font-size:19px;font-weight:600;
  margin:0 0 2px;border:0;padding:0}
.pstep__meta{font-family:var(--chrome);font-size:12px;color:var(--ink-soft);
  margin:0 0 8px;font-variant-numeric:tabular-nums}
.pstep__note{font-size:15px;line-height:1.6}
.pstep__check{font-family:var(--chrome);font-size:12px;color:var(--ink-soft);
  display:inline-flex;gap:6px;align-items:center;margin-top:10px;cursor:pointer}
.pstep__check input{accent-color:var(--accent)}


/* Ask / AMA — chat app: thread rail + bubbles + pill composer */
.ama-app{display:flex;flex-direction:column;min-height:calc(100vh - 140px)}
.ama-head{transition:all .25s ease}
.ama-head__title{font-family:var(--display);font-size:32px;font-weight:600;
  margin:0 0 8px}
.ama-head__lede{font-family:var(--body);font-size:16px;font-style:italic;
  color:var(--ink-soft);max-width:56ch;margin:0 0 22px}
.ama-head--compact .ama-head__title{font-size:20px;margin:0 0 2px}
.ama-head--compact .ama-head__lede{display:none}
.ama-thread{flex:1;margin:0 0 18px}
.ama-turn{margin:0 0 22px}
.ama-turn__q{font-family:var(--body);font-size:16px;line-height:1.5;
  color:#fff;background:var(--accent);max-width:75%;width:fit-content;
  margin:0 0 12px auto;padding:10px 16px;
  border-radius:18px 18px 4px 18px;
  box-shadow:0 1px 2px rgba(33,29,24,.10)}
.ama-turn__a{background:var(--surface);border-radius:18px 18px 18px 4px;
  padding:16px 20px;min-height:24px;max-width:92%;
  box-shadow:0 1px 3px rgba(33,29,24,.08),0 4px 14px rgba(33,29,24,.04)}
.ama-turn__a p:last-child{margin-bottom:0}
.ama-turn__failed{color:var(--ink-soft);font-style:italic;margin:0}
.ama-dots{display:inline-flex;gap:5px;padding:4px 2px}
.ama-dots i{width:7px;height:7px;border-radius:50%;background:var(--ink-soft);
  opacity:.4;animation:ama-bounce 1.2s infinite}
.ama-dots i:nth-child(2){animation-delay:.15s}
.ama-dots i:nth-child(3){animation-delay:.3s}
@keyframes ama-bounce{0%,60%,100%{transform:translateY(0);opacity:.35}
  30%{transform:translateY(-4px);opacity:.9}}
.ama-composer{position:sticky;bottom:0;padding:10px 0 16px;
  background:linear-gradient(to top,var(--paper) 75%,transparent)}
.ama-form{display:flex;align-items:flex-end;gap:0;background:var(--surface);
  border-radius:24px;padding:8px 8px 8px 18px;
  box-shadow:0 1px 3px rgba(33,29,24,.10),0 6px 20px rgba(33,29,24,.06);
  border:1px solid var(--border)}
.ama-form:focus-within{border-color:var(--accent);
  box-shadow:0 1px 3px rgba(58,85,68,.15),0 6px 20px rgba(58,85,68,.08)}
.ama-form textarea{flex:1;font-family:var(--body);font-size:17px;
  line-height:1.45;border:0;outline:0;background:transparent;resize:none;
  padding:6px 10px 6px 0;max-height:160px}
.ama-send{flex:none;width:40px;height:40px;border-radius:50%;border:0;
  background:var(--accent);color:#fff;cursor:pointer;display:flex;
  align-items:center;justify-content:center;
  transition:transform .12s ease,opacity .12s ease}
.ama-send:hover{transform:scale(1.06)}
.ama-send:disabled{opacity:.4;cursor:wait;transform:none}
.ama-under{display:flex;align-items:center;justify-content:space-between;
  gap:14px;margin:8px 4px 0}
.ama-model select{font-family:var(--chrome);font-size:12px;
  color:var(--ink-soft);border:0;border-radius:7px;background:transparent;
  padding:2px 4px;cursor:pointer}
.ama-model select:hover{color:var(--ink)}
.ama-toolbar{display:flex;gap:10px;margin:0 0 6px}
.ama-pill{font-family:var(--chrome);font-size:12px;color:var(--accent);
  background:var(--accent-soft);border:0;border-radius:999px;
  padding:6px 14px;cursor:pointer}
.ama-pill:hover{filter:brightness(.97)}
.ama-status{font-family:var(--chrome);font-size:12px;color:var(--ink-soft);
  min-height:16px;margin:0 4px 6px}
.ama-status:empty{display:none}
.ama-error{background:var(--surface);border:1px solid var(--warn);
  border-radius:14px;padding:16px 18px;margin:0 0 18px}
.ama-error p{margin:0 0 10px}
.cite-chip--warned{outline:1px dashed var(--warn);outline-offset:1px}
.cite-plain--warned{font-family:var(--chrome);font-size:12px;
  color:var(--ink-soft);border-bottom:1px dashed var(--warn);cursor:help}
.ama-drawer{font-family:var(--chrome);font-size:12px;color:var(--ink-soft)}
.ama-drawer summary{cursor:pointer;padding:2px 0;color:var(--ink-soft)}
.ama-drawer summary:hover{color:var(--ink)}
.ama-drawer__meta{margin:6px 0;font-variant-numeric:tabular-nums}
.ama-drawer--inline{position:relative}
.ama-drawer--inline[open]{background:var(--surface);border-radius:12px;
  padding:8px 12px;box-shadow:0 4px 14px rgba(33,29,24,.08)}
.ama-sources{list-style:none;margin:6px 0;padding:0;
  columns:2;column-gap:24px}
.ama-sources li{margin:0 0 3px;break-inside:avoid}

/* conversation rail (replaces the category sidebar on the Ask page) */
.ama-rail__new{display:block;width:100%;font-family:var(--chrome);
  font-size:13px;font-weight:600;color:var(--accent);
  background:transparent;border:1px solid var(--accent);border-radius:999px;
  padding:8px 12px;margin:0 0 18px;cursor:pointer;
  transition:background .12s ease,color .12s ease}
.ama-rail__new:hover{background:var(--accent);color:#fff}
.ama-rail__list{list-style:none;margin:0 0 18px;padding:0;
  font-family:var(--chrome);font-size:13px}
.ama-rail__item{display:flex;align-items:center;gap:4px;border-radius:9px;
  margin:0 0 2px;transition:background .1s ease}
.ama-rail__item:hover{background:var(--accent-soft)}
.ama-rail__item--active{background:var(--accent-soft)}
.ama-rail__item--active .ama-rail__open{color:var(--accent);font-weight:600}
.ama-rail__open{flex:1;text-align:left;font-family:var(--chrome);
  font-size:13px;color:var(--ink);background:transparent;border:0;
  padding:7px 4px 7px 10px;cursor:pointer;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;max-width:170px}
.ama-rail__pin{flex:none;font-size:13px;line-height:1;color:var(--border);
  background:transparent;border:0;padding:7px 8px;cursor:pointer;
  transition:color .12s ease}
.ama-rail__item:hover .ama-rail__pin{color:var(--ink-soft)}
.ama-rail__pin--on{color:var(--accent)!important}

/* Playlists landing: full-width auto-fitting grid, whole card clickable */
.content:has(.playlists-wide){max-width:none}
.shell:has(.playlists-wide){grid-template-columns:220px minmax(0,1fr)}
.cards--playlists{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.cards--playlists .card{position:relative;
  transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease}
.cards--playlists .card:hover{border-color:var(--accent);
  box-shadow:0 4px 16px rgba(33,29,24,.08);transform:translateY(-2px)}
.cards--playlists .card__link::after{content:"";position:absolute;inset:0}
.sidebar__current{background:var(--accent-soft);color:var(--accent);
  font-weight:600}

/* Sticky left rails (categories, playlists, Ask conversations) — pinned
   below the sticky topbar, scrolling internally when taller than the view */
.sidebar{position:sticky;top:88px;align-self:start;
  max-height:calc(100vh - 110px);overflow-y:auto;
  scrollbar-width:thin;padding-right:2px}

/* Every card is fully clickable (home categories, articles, playlists) */
.card{position:relative;
  transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease}
.card:hover{border-color:var(--accent);
  box-shadow:0 4px 16px rgba(33,29,24,.08);transform:translateY(-2px)}
.card__link::after{content:"";position:absolute;inset:0}

/* Recipes sub-sections (By meal / By style) */
.rgroup__h2{font-family:var(--display);font-size:24px;font-weight:600;
  margin:36px 0 4px;padding-top:16px;border-top:1px solid var(--border)}
.rgroup__h3{font-family:var(--chrome);font-size:12px;text-transform:uppercase;
  letter-spacing:.09em;color:var(--ink-soft);margin:20px 0 10px}

/* Recipe photo rows (cover-image pilot) + sidebar jump nav */
.rrows{list-style:none;margin:0 0 8px;padding:0;display:flex;
  flex-direction:column;gap:12px}
.rrow{position:relative;display:grid;grid-template-columns:176px 1fr;
  gap:16px;background:var(--surface);border:1px solid var(--border);
  border-radius:14px;overflow:hidden;min-height:104px;
  transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease}
.rrow:hover{border-color:var(--accent);
  box-shadow:0 4px 16px rgba(33,29,24,.08);transform:translateY(-2px)}
.rrow__media{position:relative;display:block;overflow:hidden;
  background:var(--accent-soft)}
.rrow__img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center 40%}
.rrow__media--short .rrow__img,
.rhero__imgbox.rrow__media--short .rhero__img{
  transform:scale(2.35);transform-origin:center 42%}
.rrow__body{padding:14px 16px 14px 0;min-width:0;align-self:center}
.rrow__desc{display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.rrow__link::after{content:"";position:absolute;inset:0;z-index:1}
.sidebar__jump{margin-bottom:22px}
.sidebar__jump a{color:var(--ink-soft)}
.sidebar__jump a:hover{color:var(--ink)}

/* Recipe pages: photo hero + recipe card first, notes below */
.rhero{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:26px;
  align-items:center;margin:0 0 26px}
.rhero__imgbox{grid-column:2;grid-row:1;position:relative;display:block;
  width:300px;height:225px;border-radius:16px;overflow:hidden;
  background:var(--accent-soft);
  box-shadow:0 4px 18px rgba(33,29,24,.14)}
.rhero__img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center 40%}
.rhero__text{grid-column:1;grid-row:1}
.rhero__intro{font-family:var(--body);font-size:18px;font-style:italic;
  color:var(--ink-soft);margin:6px 0 10px;max-width:52ch}
/* Long-summary heroes: the intro runs full article width and the player
   drops beneath it (set at build time when the summary passes ~200 chars). */
.rhero--stack{grid-template-columns:1fr}
.rhero--stack .rhero__text{grid-column:1;grid-row:1}
.rhero--stack .rhero__intro{max-width:none}
.rhero--stack .rhero__play{grid-column:1;grid-row:2;width:100%}
.rhero--stack .rhero__imgbox{width:100%;height:auto;aspect-ratio:16/9}
.rhero__yield{font-family:var(--chrome);font-size:13px;color:var(--accent);
  font-weight:600;margin:0}
.rcard{display:grid;grid-template-columns:minmax(200px,2fr) 3fr;gap:0;
  background:var(--surface);border-radius:18px;overflow:hidden;
  box-shadow:0 1px 3px rgba(33,29,24,.08),0 6px 22px rgba(33,29,24,.05);
  margin:0 0 20px}
.rcard__ingredients{padding:22px 24px;background:var(--accent-soft)}
.rcard__method{padding:22px 26px}
.rcard__h{font-family:var(--chrome);font-size:12px;font-weight:600;
  text-transform:uppercase;letter-spacing:.09em;color:var(--accent);
  margin:0 0 14px}
.ring{list-style:none;margin:0;padding:0;font-family:var(--body);
  font-size:15.5px;line-height:1.5}
.ring li{margin:0 0 9px}
.ring label{display:flex;gap:9px;align-items:flex-start;cursor:pointer}
.ring input{accent-color:var(--accent);margin-top:4px;flex:none}
.ring input:checked + span{color:var(--ink-soft);text-decoration:line-through}
.rsteps{margin:0;padding:0 0 0 22px;font-family:var(--body);font-size:16px}
.rsteps li{margin:0 0 13px;line-height:1.6}
.rsteps li::marker{font-family:var(--chrome);font-weight:600;
  color:var(--accent)}
.rpanels{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0 0 20px}
.rpanel{border-radius:14px;padding:16px 20px;font-family:var(--body);
  font-size:15px;background:var(--surface);
  box-shadow:0 1px 3px rgba(33,29,24,.07)}
.rpanel--freeze{border-top:3px solid #7A93A8}
.rpanel--reheat{border-top:3px solid var(--warn)}
.rpanel ul{margin:0;padding-left:18px}
.rpanel li{margin:0 0 7px;line-height:1.55}
.rnotes{font-family:var(--body);font-size:15px;color:var(--ink-soft);
  border-left:3px solid var(--border);padding:2px 0 2px 16px;margin:0 0 24px}
.rnotes p{margin:0 0 8px}
.rfull{margin:10px 0 0;border-top:1px solid var(--border);padding-top:14px}
.rfull__summary{font-family:var(--chrome);font-size:13px;font-weight:600;
  color:var(--ink-soft);cursor:pointer;padding:4px 0;margin:0 0 10px}
.rfull__summary:hover{color:var(--ink)}
@media (max-width:900px){
  .rhero{grid-template-columns:1fr}
  .rhero__imgbox{grid-column:1;grid-row:1;width:100%;height:200px}
  .rhero__text{grid-column:1;grid-row:2}
  .rcard{grid-template-columns:1fr}
  .rpanels{grid-template-columns:1fr}
}

/* Ingredient copy button + header row */
.rcard__ingheader{display:flex;align-items:center;justify-content:space-between;
  gap:10px;margin:0 0 14px}
.rcard__ingheader .rcard__h{margin:0}
.ring__copy{font-family:var(--chrome);font-size:11px;font-weight:600;
  color:var(--accent);background:transparent;border:1px solid var(--accent);
  border-radius:999px;padding:4px 11px;cursor:pointer;
  transition:background .12s ease,color .12s ease}
.ring__copy:hover{background:var(--accent);color:#fff}

/* Playable recipe hero: the cover image opens the popup player */
.rhero__play{grid-column:2;grid-row:1;position:relative;display:block;
  width:300px;background:none;border-radius:16px;padding:0;margin:0;
  white-space:normal;font-size:inherit}
.rhero__play:hover,.rhero__play:focus-visible{background:none;color:inherit}
.rhero__play .rhero__imgbox{grid-column:auto;grid-row:auto}
.rhero__playglyph{position:absolute;top:0;bottom:26px;left:0;right:0;
  margin:auto;width:56px;height:56px;border-radius:50%;
  background:rgba(33,29,24,.55);color:#fff;display:flex;align-items:center;
  justify-content:center;font-size:20px;padding-left:5px;
  backdrop-filter:blur(2px);
  transition:transform .15s ease,background .15s ease}
.rhero__play:hover .rhero__playglyph{background:var(--accent);
  transform:scale(1.12)}
.rhero__playlabel{position:absolute;left:0;right:0;bottom:0;height:26px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--chrome);font-size:11px;font-weight:600;
  letter-spacing:.04em;text-transform:uppercase;color:#fff;
  background:linear-gradient(to top,rgba(33,29,24,.72),transparent);
  border-radius:0 0 16px 16px;opacity:.95}
@media (max-width:900px){
  .rhero__play{grid-column:1;grid-row:1;width:100%}
}

/* Sticky back button in the top bar */
.topbar__back{flex:none;width:34px;height:34px;border-radius:50%;
  border:1px solid var(--border);background:var(--accent-soft);
  color:var(--ink);font-size:16px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .12s ease,color .12s ease,transform .12s ease}
.topbar__back:hover{background:var(--accent);color:#fff;
  transform:translateX(-2px)}
.topbar__back[hidden]{display:none}

/* Whole playlist step row is clickable (plays the step) */
.pstep--clickable{cursor:pointer;
  transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease}
.pstep--clickable:hover{border-color:var(--accent);
  box-shadow:0 4px 16px rgba(33,29,24,.08);transform:translateY(-2px)}

/* Video pages (auto-assembled from the citation reverse-index) */
.vpage__meta{font-family:var(--chrome);font-size:13px;color:var(--ink-soft);
  margin:0 0 10px}
.vpage__badge{display:inline-block;font-size:11px;font-weight:600;
  text-transform:uppercase;letter-spacing:.06em;border-radius:999px;
  padding:2px 9px;background:var(--accent-soft);color:var(--accent)}
.vpage__badge--live{background:#F3E3DC;color:var(--warn)}
.vpage__badge--regular{background:#E3E9F0;color:#41586E}
.vpage__h2{font-family:var(--display);font-size:24px;font-weight:600;
  margin:34px 0 6px;padding-top:14px;border-top:1px solid var(--border)}
.vpage__note{font-family:var(--chrome);font-size:13px;color:var(--ink-soft);
  margin:0 0 18px}
.vsec{margin:0 0 22px}
.vsec__h{font-family:var(--chrome);font-size:15px;font-weight:600;
  margin:0 0 8px}
.vsec__h a{text-decoration:none;color:var(--ink)}
.vsec__h a:hover{color:var(--accent)}
.vsec__cat{font-size:11px;font-weight:400;text-transform:uppercase;
  letter-spacing:.07em;color:var(--ink-soft);margin-left:8px}
.vsec__claims{list-style:none;margin:0;padding:0;font-size:15.5px}
.vsec__claims li{margin:0 0 9px;padding:10px 14px;background:var(--surface);
  border-radius:11px;box-shadow:0 1px 2px rgba(33,29,24,.05);line-height:1.6}
.vpage__playlists{list-style:none;margin:0;padding:0;
  font-family:var(--chrome);font-size:14px}
.vpage__playlists li{margin:0 0 6px}
.pstep__titlelink{text-decoration:none;color:var(--ink)}
.pstep__titlelink:hover{color:var(--accent)}

/* Floating prev/next chevrons: thin SVG strokes (Fraunces has no light
   weight), fixed at mid-viewport so they ride with the reader, centered in
   the column gutters. Positions are max()-clamped: once the viewport is
   narrower than the shell, they pin to the gutter's fixed offset from the
   viewport edge instead of drifting with 50vw. */
.fnav{position:fixed;top:50%;transform:translateY(-50%);z-index:30;
  color:var(--ink-soft);background:transparent;
  border:1px solid transparent;border-radius:12px;cursor:pointer;
  text-decoration:none;padding:26px 10px;
  transition:color .15s ease,background .15s ease,border-color .15s ease,
    transform .15s ease}
.fnav svg{display:block;width:26px;height:150px}
.fnav:hover{color:var(--accent);border-color:var(--border);
  background:var(--accent-soft)}
.fnav--back:hover{transform:translateY(-50%) translateX(-4px)}
.fnav--next:hover{transform:translateY(-50%) translateX(4px)}

/* Chevrons appear ONLY on queue pages (videos + recipes-in-a-class),
   whose 84px gutters are purpose-built for them — on hub/list pages a
   floating back chevron has no clean gutter and just clutters. The
   :not([hidden]) keeps the JS hidden-attribute toggle working. */
.fnav--back{display:none}
.shell:has(.vpage){max-width:1360px;
  grid-template-columns:200px minmax(0,1fr) 300px;gap:100px}
.shell:has(.vpage) .fnav--back:not([hidden]){display:block;
  left:max(255px,calc(50vw - 425px))}
.shell:has(.vpage) .fnav--next{right:max(355px,calc(50vw - 325px))}
@media (max-width:1100px){
  .shell:has(.vpage) .fnav--back:not([hidden]){display:none}
  .fnav--next{display:none}
}

/* Video-page playlist queue (YouTube-style up-next rail) */
.vqueue__title a{color:var(--ink);text-decoration:none}
.vqueue__title a:hover{color:var(--accent)}
.vqueue__list{list-style:none;margin:0;padding:0;max-height:70vh;
  overflow-y:auto;scrollbar-width:thin}
.vqueue__item a{display:flex;gap:8px;align-items:baseline;
  text-decoration:none;color:var(--ink);padding:6px 8px;border-radius:8px;
  font-size:12.5px;line-height:1.4}
.vqueue__item a:hover{background:var(--accent-soft)}
.vqueue__num{flex:none;color:var(--ink-soft);
  font-variant-numeric:tabular-nums;width:18px}
.vqueue__t{flex:1;min-width:0}
.vqueue__check{flex:none;color:transparent;font-weight:600}
.vqueue__item--watched .vqueue__check{color:var(--accent)}
.vqueue__item--watched .vqueue__t{color:var(--ink-soft)}
.vqueue__item--current a{background:var(--accent-soft);
  border-left:3px solid var(--accent);border-radius:0 8px 8px 0;
  font-weight:600}
/* Queue thumbnails (YouTube-style) */
.vqueue__item a{align-items:center;font-size:13px;padding:7px 8px}
.vqueue__thumb{flex:none;position:relative;width:96px;height:54px;
  border-radius:7px;overflow:hidden;background:var(--accent-soft)}
.vqueue__thumb img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center 45%}
.vqueue__thumb--short img{transform:scale(3.2);transform-origin:center 45%}
.fnav[hidden]{display:none}

/* Access gate (site password / account sign-in) — same design system */
.gate{max-width:34rem}
.gate__form{margin:28px 0;padding:22px 24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.gate__h{font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.25rem;margin:0 0 12px}
.gate__form p{margin:0 0 12px}
.gate__form label{display:block;font-family:"Inter",system-ui,sans-serif;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}
.gate__form input[type=text],.gate__form input[type=password]{width:100%;box-sizing:border-box;font:inherit;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--paper);color:var(--ink)}
.gate__form input[type=text]:focus,.gate__form input[type=password]:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.gate__btn,.gate__form input[type=submit]{font:inherit;font-family:"Inter",system-ui,sans-serif;font-weight:600;font-size:14px;padding:10px 18px;border-radius:999px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer}
.gate__btn:hover,.gate__form input[type=submit]:hover{filter:brightness(1.08)}
.gate__hint{color:var(--ink-soft);font-size:.9rem}
.gate__msg{padding:10px 14px;border-radius:8px;background:var(--accent-soft);border:1px solid var(--border)}
.gate__msg--warn{border-color:var(--warn);color:var(--warn)}
.gate__form .login-remember label{display:inline-flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:14px;color:var(--ink)}
.gate__form .login-remember input{margin:0}

/* AJ0031 — post-paragraph chips, the paragraph popup, and reading copies */
.cite-chip--post .cite-chip__glyph{font-size:11px;font-weight:600}
.modal__frame[data-shape="post"]{width:min(640px,88vw);max-height:60vh;overflow:auto;padding:8px 4px}
.modal__quote{margin:0;padding:14px 18px;border-left:3px solid var(--accent);background:var(--accent-soft);
  border-radius:10px;font-family:"Source Serif 4",Georgia,serif;font-size:1.02rem;line-height:1.55;color:var(--ink)}
.modal__quote small{display:block;margin-bottom:6px;font-family:var(--chrome);font-size:11px;letter-spacing:.04em;
  text-transform:uppercase;color:var(--ink-soft)}
.post__meta{font-family:var(--chrome);font-size:13px;color:var(--ink-soft);margin:0 0 18px}
.post__block{position:relative;scroll-margin-top:76px}
.post__block:target{background:var(--accent-soft);box-shadow:0 0 0 6px var(--accent-soft);border-radius:6px}
.post__block::before{content:"¶" attr(id);display:none}
.post__body p.post__block::after,.post__body li.post__block::after,.post__body h2.post__block::after,
.post__body h3.post__block::after,.post__body blockquote.post__block::after{
  content:attr(id);position:absolute;left:-3.2em;top:.15em;font-family:var(--chrome);font-size:10px;
  color:var(--ink-soft);opacity:.55;text-transform:none}
.post__body li.post__block::after{left:-4.4em}
.post__figure{margin:18px 0}
.post__figure img{display:block;max-width:100%;height:auto;border-radius:12px;border:1px solid var(--border)}
.post__list{margin:0 0 14px}
.post__toc{list-style:none;margin:0;padding:0}
.sidebar__note{font-size:13px;color:var(--ink-soft);line-height:1.45}

/* Post artwork on the Posts landing: the post's own cover image bleeds to
   the card edges above the title; cards without one keep the plain layout */
.card--cover{padding-top:0}
.card__cover{display:block;width:calc(100% + 32px);margin:0 -16px 12px;
  aspect-ratio:16/10;object-fit:cover;object-position:center 40%;
  border-radius:var(--radius) var(--radius) 0 0;background:var(--accent-soft)}

/* ---- Written recipes <-> videos (2026-10-15) -----------------------------
   "Watch" cards on written-recipe and post pages, "The written recipe" list
   on video pages, and the pop-up's jump links to the pages a video belongs to. */
.vwatch__list{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:10px}
.vwatch__item{display:flex;align-items:center;gap:10px;background:var(--surface);
  border:1px solid var(--border);border-radius:12px;padding:8px 12px 8px 8px}
.cite-chip.vwatch__play{flex:1;min-width:0;display:flex;align-items:center;gap:12px;
  padding:0;margin:0;background:none;border-radius:8px;white-space:normal;
  color:var(--ink);font-size:inherit;text-align:left}
.cite-chip.vwatch__play:hover,.cite-chip.vwatch__play:focus-visible{background:none;color:var(--accent)}
.vwatch__thumb{flex:none;position:relative;width:112px;height:63px;border-radius:8px;
  overflow:hidden;background:var(--accent-soft)}
.vwatch__thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:center 45%}
.vwatch__thumb--short img{transform:scale(3.2);transform-origin:center 45%}
.vwatch__body{min-width:0;display:block}
.vwatch__title{display:block;font-family:var(--display);font-size:16px;font-weight:600;line-height:1.3}
.vwatch__meta{display:block;font-family:var(--chrome);font-size:12px;color:var(--ink-soft);margin-top:2px}
.vwatch__about{flex:none;font-family:var(--chrome);font-size:12px;color:var(--ink-soft);
  text-decoration:none;border:1px solid var(--border);border-radius:999px;padding:5px 10px}
.vwatch__about:hover{color:var(--accent);border-color:var(--accent)}
.vwatch__also{font-family:var(--chrome);font-size:14px;color:var(--ink-soft);margin:0 0 8px}
.vwritten__list{list-style:none;margin:0 0 22px;padding:0;font-size:16px}
.vwritten__list li{margin:0 0 6px}
.vwritten__list a{text-decoration:none;color:var(--ink);border-bottom:1px solid var(--border)}
.vwritten__list a:hover{color:var(--accent)}
.modal__pages{margin:8px 0 0;display:flex;flex-wrap:wrap;gap:6px 14px}
.modal__pages:empty{display:none}
.modal__page{font-family:var(--chrome);font-size:13px;display:inline-block}
.modal__page small{display:inline-block;font-size:10px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-soft);margin-right:6px}

/* ---- The creator's guide (a product, 2026-10-15) --------------------------
   The /guide/ page (listing, price, buy button, table of contents mapped to
   the site) and the "In the guide: page N" line on the pages it covers. */
.guide__buy{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 30px}
.guide__btn{text-decoration:none;display:inline-block;font-family:var(--chrome);font-weight:600;
  font-size:14px;padding:10px 18px;border-radius:999px;border:1px solid var(--accent);
  background:var(--accent);color:#fff}
.guide__btn:hover{filter:brightness(1.08)}
.guide__note{font-family:var(--chrome);font-size:13px;color:var(--ink-soft)}
.guide__toc{list-style:none;margin:0 0 10px;padding:0}
.guide__sec{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--border);scroll-margin-top:84px}
.guide__sec:target{background:var(--accent-soft);box-shadow:0 0 0 8px var(--accent-soft);border-radius:6px}
.guide__page{flex:none;width:44px;font-family:var(--chrome);font-size:12px;font-weight:600;
  color:var(--accent);font-variant-numeric:tabular-nums;padding-top:3px}
.guide__body{min-width:0;flex:1}
.guide__title{font-family:var(--display);font-size:17px;font-weight:600}
.guide__blurb{color:var(--ink-soft)}
.guide__links{display:block;font-family:var(--chrome);font-size:13px;margin-top:6px;color:var(--ink-soft)}
.guide__links a{text-decoration:none;border-bottom:1px solid var(--border)}
.guide__links a:hover{color:var(--accent);border-color:var(--accent)}
.guide__recipes{list-style:none;margin:0 0 20px;padding:0;font-size:16px}
.guide__recipes li{display:flex;gap:14px;align-items:baseline;margin:0 0 8px}
.guide__recipes a{text-decoration:none;color:var(--ink);border-bottom:1px solid var(--border)}
.guide__recipes a:hover{color:var(--accent)}
.guide-ref{font-family:var(--chrome);font-size:13px;color:var(--ink-soft);margin:0 0 18px;
  padding:10px 14px;background:var(--accent-soft);border-radius:10px}
.guide-ref a{color:var(--accent);text-decoration:none}
.guide-ref a:hover{text-decoration:underline}

/* ---- Responsive shell -------------------------------------------------
   Desktop keeps the three-column grid. Between 821 and 1100px the rails
   narrow. At 820px and below (phones, small tablets) the page is ONE column:
   the section links, the left rail and "On this page" move into a slide-in
   drawer behind the menu button (shell.js relocates the nodes, so every
   script keeps working), search is an icon, the up-next queue sits beneath
   the player, and the pop-ups fit the screen. */
.topbar__menu{display:none}
.drawer{display:none}
.search-btn__icon{display:none;width:18px;height:18px}
.vqueue__bar{display:none}
.modal__queue,.modal__touch{display:none}
/* Ingredients header doubles as the fold toggle on phones (shell.js wraps
   the heading text in this button); on desktop it is plain heading text. */
.rcard__toggle{display:inline-flex;align-items:center;gap:8px;padding:0;border:0;
  background:transparent;font:inherit;color:inherit;letter-spacing:inherit;
  text-transform:inherit;cursor:default;text-align:left}
.rcard__toggle svg{display:none;width:14px;height:14px;transition:transform .15s ease}
@media (max-width:1100px){
  .shell{grid-template-columns:180px minmax(0,1fr) 200px;gap:28px}
  .shell:has(.vpage){grid-template-columns:180px minmax(0,1fr) 240px;gap:40px}
  .ama-rail__open{max-width:130px}
  /* Queue pages: the summary runs full width with the player beneath it
     (the side-by-side hero leaves the text a sliver at this width), and
     the up-next thumbnails shrink so titles keep a readable column. */
  .shell:has(.vpage) .rhero{grid-template-columns:1fr}
  .shell:has(.vpage) .rhero__text{grid-column:1;grid-row:1}
  .shell:has(.vpage) .rhero__intro{max-width:none}
  .shell:has(.vpage) .rhero__play{grid-column:1;grid-row:2;width:100%}
  .shell:has(.vpage) .rhero__imgbox{width:100%;height:auto;aspect-ratio:16/9}
  .vqueue__thumb{width:72px;height:40px}
}
@media (max-width:820px){
  body{font-size:16px}
  .topbar{gap:10px;padding:8px 12px}
  .topbar__menu{display:flex;flex:none;align-items:center;justify-content:center;
    width:40px;height:40px;border:0;border-radius:10px;background:transparent;
    color:var(--ink);cursor:pointer;padding:0}
  .topbar__menu:hover,.topbar__menu[aria-expanded="true"]{background:var(--accent-soft)}
  .wordmark{font-size:17px;min-width:0;overflow:hidden;text-overflow:ellipsis;
    white-space:nowrap;flex:1}
  .wordmark span{display:none}
  .topbar .topnav{display:none}
  .search-btn{flex:none;width:40px;height:40px;padding:0;display:flex;
    align-items:center;justify-content:center;border-radius:10px;border:0;
    background:transparent;color:var(--ink);margin-left:0}
  .search-btn__label{display:none}
  .search-btn__icon{display:block}
  [id]{scroll-margin-top:64px}
  .post__block{scroll-margin-top:64px}
  .shell,.shell:has(.vpage),.shell:has(.playlists-wide){display:block;
    max-width:none;padding:18px 16px 72px}
  .shell>.sidebar,.shell>nav.toc{display:none}
  .content,.content:has(.playlists-wide){max-width:none}
  .article__title{font-size:28px}
  .lede{font-size:17px;margin-bottom:22px}
  .stats{flex-wrap:wrap;gap:18px 28px;margin:0 0 28px}
  .stats dd{font-size:26px}
  .prose h2{font-size:23px;margin-top:36px}
  .prose table{display:block;overflow-x:auto;max-width:100%}
  .rgroup__h2{font-size:22px}
  .rrow{grid-template-columns:112px 1fr;gap:12px;min-height:88px}
  .rrow__body{padding:10px 12px 10px 0}
  .rhero{gap:16px;margin-bottom:20px}
  .rhero__imgbox,.rhero--stack .rhero__imgbox{height:auto;aspect-ratio:16/9}
  /* Phones: player first, summary beneath (YouTube order) on queue pages too */
  .shell:has(.vpage) .rhero__play{grid-row:1}
  .shell:has(.vpage) .rhero__text{grid-row:2}
  .rhero__intro{font-size:17px}
  .rcard__ingredients,.rcard__method{padding:18px 16px}
  .rpanel{padding:14px 16px}
  .pstep{gap:12px;padding:12px}
  .cite-chip.pstep__play{flex-basis:96px}
  .pstep__thumb{width:96px}
  .pstep__title{font-size:17px}
  .playlist-progress{flex-wrap:wrap;gap:10px}
  .ama-app{min-height:calc(100vh - 120px)}
  .ama-head__title{font-size:26px}
  .ama-turn__q{max-width:88%}
  .ama-turn__a{max-width:100%;padding:14px 16px}
  .ama-sources{columns:1}
  .ama-model select,.ama-form textarea{font-size:16px}
  .ama-under{flex-wrap:wrap}
  .post__body{padding-left:2.4em}
  .post__body p.post__block::after,.post__body h2.post__block::after,
  .post__body h3.post__block::after,.post__body blockquote.post__block::after{left:-2.4em}
  .post__body li.post__block::after{left:-3.6em}
  .card__cover{width:calc(100% + 32px)}
  /* Home: the tagline and the article/citation/concept counts are desktop
     flourishes; on a phone they push the categories off the first screen. */
  .lede--home,.stats{display:none}
  /* Up-next queue: a thin bar pinned under the top bar (shell.js moves the
     rail to the top of the page and adds the toggle); tapping unfolds the
     list as a drop-down, tapping again — or tapping elsewhere — folds it. */
  .vqueue{position:sticky;top:57px;z-index:15;margin:-18px -16px 18px;padding:0;
    background:var(--accent-soft);border-bottom:1px solid var(--border);
    box-shadow:inset 0 1px 0 var(--border)}
  .vqueue--open{background:var(--surface)}
  .vqueue .vqueue__title{display:none}
  /* The bar must read as a control: tinted strip, accent-coloured label and a
     filled disc around the chevron (which flips when the list is open). */
  .vqueue__bar{display:flex;align-items:center;gap:10px;width:100%;min-height:46px;
    padding:8px 12px 8px 16px;border:0;background:transparent;color:var(--accent);
    font-family:var(--chrome);font-size:13px;text-align:left;cursor:pointer}
  .vqueue__bar-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;
    white-space:nowrap;font-size:12px;font-weight:600;text-transform:uppercase;
    letter-spacing:.07em}
  .vqueue__bar-count{flex:none;color:var(--ink-soft);font-variant-numeric:tabular-nums}
  .vqueue__bar svg{flex:none;width:28px;height:28px;padding:6px;border-radius:50%;
    background:var(--accent);color:#fff;box-shadow:0 1px 3px rgba(33,29,24,.18);
    transition:transform .15s ease}
  .vqueue--open .vqueue__bar svg{transform:rotate(180deg)}
  .vqueue__list{display:none;position:absolute;left:0;right:0;top:100%;
    max-height:min(62vh,440px);overflow-y:auto;padding:6px 10px 10px;
    background:var(--surface);border-bottom:1px solid var(--border);
    box-shadow:0 16px 32px rgba(30,26,20,.18)}
  .vqueue--open .vqueue__list{display:block}
  .vqueue__item a{gap:10px;padding:8px 6px;font-size:14px;min-height:56px}
  .vqueue__thumb{width:104px;height:58px}
  .vqueue__num{width:16px}
  .shell:has(.vqueue) [id]{scroll-margin-top:108px}
  /* Recipe card: the shopping-list half starts folded so the method is
     first; its heading toggles it (the chevron points right when folded). */
  .rcard__toggle{cursor:pointer}
  .rcard__toggle svg{display:inline-block}
  .rcard__ingredients--collapsed .rcard__toggle svg{transform:rotate(-90deg)}
  .rcard__ingredients--collapsed .ring{display:none}
  .rcard__ingredients--collapsed .rcard__ingheader{margin:0}
  /* Video / paragraph pop-up fills the phone screen: a dark stage, the
     player as large as the screen allows, a prominent close button, the
     previous/next chevrons at mid-height; shell.js adds swipe left/right. */
  #cite-modal{align-items:stretch;justify-content:stretch}
  #cite-modal .modal__panel{position:relative;max-width:none;max-height:none;
    width:100%;height:100%;height:100dvh;border-radius:0;padding:0;
    background:#17140F;flex-direction:column;gap:0;overflow:hidden}
  #cite-modal .modal__frame{flex:1;display:flex;align-items:center;
    justify-content:center;min-height:0;padding:0}
  #cite-modal .modal__frame iframe{border-radius:0}
  #cite-modal .modal__frame[data-shape="wide"] iframe{width:100vw;height:56.25vw}
  #cite-modal .modal__frame[data-shape="short"] iframe{
    --sh:min(calc(100vh - 236px),177.7vw);height:var(--sh);width:calc(var(--sh) * 9 / 16)}
  #cite-modal .modal__frame[data-shape="post"]{width:100%;max-height:none;
    overflow:auto;padding:16px;align-items:flex-start}
  #cite-modal .modal__meta{flex:none;width:auto;min-width:0;align-self:auto;
    padding:12px 16px 18px}
  /* Touch layer over the video (shell.js sizes it to the player, leaving the
     player's control bar uncovered): swipe steps the queue, tap pauses or
     resumes, with a brief glyph as feedback. */
  #cite-modal .modal__touch{display:block;position:absolute;z-index:1;touch-action:pan-y}
  #cite-modal .modal__touch[hidden]{display:none}
  #cite-modal .modal__touch-glyph{position:absolute;left:50%;top:50%;width:64px;height:64px;
    margin:-32px 0 0 -32px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;
    font-size:22px;display:flex;align-items:center;justify-content:center;opacity:0;
    pointer-events:none}
  #cite-modal .modal__touch-glyph.is-on{animation:touch-flash .7s ease-out}
  @keyframes touch-flash{0%{opacity:0;transform:scale(.8)}25%{opacity:1;transform:scale(1)}
    100%{opacity:0;transform:scale(1.15)}}
  /* Previous / Next titles under the player (cite-popup.js fills them), with
     a one-line hint about the swipe above them */
  #cite-modal .modal__queue{display:flex;flex-wrap:wrap;justify-content:space-between;
    gap:8px 10px;margin:12px 0 0}
  #cite-modal .modal__queue::before{content:"Swipe the video left or right, or tap:";
    flex-basis:100%;font-family:var(--chrome);font-size:11px;letter-spacing:.04em;
    color:rgba(250,246,240,.55)}
  #cite-modal .modal__queue:empty{display:none}
  #cite-modal .modal__qbtn{flex:1;min-width:0;font-family:var(--chrome);font-size:13px;
    line-height:1.3;text-align:left;color:#fff;background:rgba(255,255,255,.1);
    border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:8px 10px;
    cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #cite-modal .modal__qbtn--next{text-align:right}
  #cite-modal .modal__qbtn small{display:block;font-size:10px;letter-spacing:.07em;
    text-transform:uppercase;color:rgba(250,246,240,.6)}
  #cite-modal .modal__title{color:#fff;font-size:17px;padding-right:0}
  #cite-modal .modal__sub,#cite-modal .modal__status{color:rgba(250,246,240,.72)}
  #cite-modal .modal__out{color:#CFE0D4;margin-right:14px;font-size:14px}
  #cite-modal .modal__page{margin-right:0}
  #cite-modal .modal__page small{color:rgba(250,246,240,.6)}
  .vwatch__item{padding:6px 8px 6px 6px;flex-wrap:wrap}
  .vwatch__thumb{width:96px;height:54px}
  .vwatch__about{margin-left:auto}
  #cite-modal .modal__close{top:10px;right:10px;width:46px;height:46px;border-radius:50%;
    background:rgba(255,255,255,.92);color:#17140F;font-size:30px;font-weight:600;
    display:flex;align-items:center;justify-content:center;z-index:3;
    box-shadow:0 2px 10px rgba(0,0,0,.35)}
  #cite-modal .modal__nav{padding:14px 4px;border-radius:10px;
    background:rgba(255,255,255,.14);color:#fff}
  #cite-modal .modal__nav svg{width:16px;height:70px}
  #cite-modal-prev{left:6px}
  #cite-modal-next{right:6px}
  .modal:has(.modal__panel--search){align-items:flex-start;padding-top:12px}
  .modal__panel--search{width:calc(100vw - 16px);max-width:calc(100vw - 16px)}
  .search-results{max-height:60vh}
  .search-results li a{padding:11px 10px;font-size:15px}
  .fnav{display:none!important}
  /* The drawer */
  .drawer{display:block;position:fixed;inset:0;z-index:50}
  .drawer[hidden]{display:none}
  .drawer__scrim{position:absolute;inset:0;background:rgba(30,26,20,.55)}
  .drawer__panel{position:absolute;top:0;bottom:0;left:0;width:min(320px,86vw);
    background:var(--surface);box-shadow:0 0 40px rgba(30,26,20,.35);
    overflow-y:auto;padding:0 18px 28px;animation:drawer-in .22s ease-out}
  @keyframes drawer-in{from{transform:translateX(-100%)}to{transform:none}}
  .drawer__head{display:flex;align-items:center;justify-content:space-between;
    padding:10px 0 8px;position:sticky;top:0;background:var(--surface);z-index:1}
  .drawer__title{font-family:var(--display);font-size:17px;font-weight:600}
  .drawer__close{width:40px;height:40px;border:0;background:transparent;
    font-size:26px;line-height:1;color:var(--ink-soft);cursor:pointer;margin-right:-10px}
  .drawer .topnav{display:flex;flex-direction:column;gap:0;margin:0 0 14px;
    padding:0 0 14px;border-bottom:1px solid var(--border);font-size:15px}
  .drawer .topnav a{display:block;padding:11px 10px;border-bottom:0;border-radius:9px;
    color:var(--ink)}
  .drawer .topnav a.topnav__active{background:var(--accent-soft);color:var(--accent);
    font-weight:600}
  .drawer .sidebar{position:static;max-height:none;overflow:visible;padding:0;margin:0 0 14px}
  .drawer .sidebar__list{font-size:15px}
  .drawer .sidebar__list a{padding:10px 10px}
  .drawer .sidebar__jump{margin-bottom:18px}
  .drawer .ama-rail__open{max-width:none;padding:11px 4px 11px 10px}
  .drawer .toc{position:static;font-size:14px;margin:0 0 14px;padding-top:14px;
    border-top:1px solid var(--border)}
  .drawer .toc li{margin:0}
  .drawer .toc a{display:block;padding:9px 10px;border-radius:9px;color:var(--ink)}
  .drawer .toc__l3{padding-left:22px}
  .drawer__rail:empty,.drawer__toc:empty{display:none}
  body.drawer-open{overflow:hidden}
}
@media (pointer:coarse){
  .cite-chip{font-size:13px;padding:3px 9px}
  .cite-group__expand{padding:3px 7px;font-size:12px}
  .ring input{width:18px;height:18px}
  .pstep__check,.rfull__summary,.ama-drawer summary{padding-top:8px;padding-bottom:8px}
}
