:root{
  --paper:#F6F4EF;
  --card:#FFFFFF;
  --ink:#141310;
  --ink-soft:#4B4740;
  --ink-faint:#878175;
  --rule:#E3DFD5;
  --accent:#F5B722;
  --accent-deep:#C98A00;
  --track:#D8D3C8;
  --focus:#1B6BD6;
  --radius:3px;
}

*{box-sizing:border-box}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:"Karla",system-ui,-apple-system,sans-serif;
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

/* the site pane is the sizing context for the grid */
.site{container-type:inline-size;container-name:site}

/* section heading ------------------------------------------------ */
.section-label{
  display:flex;align-items:center;gap:12px;
  font-size:.82rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);margin:0 0 32px;
}
.marker{
  width:0;height:0;flex:none;
  border-left:13px solid var(--accent);
  border-top:9px solid transparent;
  border-bottom:9px solid transparent;
}

/* grid ------------------------------------------------------------ */
.grid{
  display:grid;gap:40px 44px;
  grid-template-columns:1fr;
}
@container site (min-width:720px){ .grid{grid-template-columns:1fr 1fr} }

.loading{color:var(--ink-faint);font-size:.95rem}

.episode{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:22px;
  align-items:start;
}
@container site (max-width:440px){
  .episode{grid-template-columns:1fr;gap:16px}
}

.cover{
  width:clamp(104px,22cqi,158px);aspect-ratio:4/3;object-fit:cover;
  border-radius:var(--radius);
  background:var(--track);
  display:block;
}
@container site (max-width:440px){ .cover{width:100%;max-width:280px} }

.body{min-width:0;display:flex;flex-direction:column;gap:9px}

.title{
  font-family:"Source Serif 4",Georgia,serif;
  font-size:1.6rem;line-height:1.18;font-weight:700;letter-spacing:-.01em;
  margin:0;text-wrap:balance;
  /* the thing the embed could not do: wrap, don't marquee */
  overflow-wrap:anywhere;
}
.title a{color:inherit;text-decoration:none}
.title a:hover{text-decoration:underline;text-underline-offset:3px}

.meta{
  font-size:.86rem;color:var(--ink-soft);
  display:flex;flex-wrap:wrap;gap:6px;align-items:center;
  font-variant-numeric:tabular-nums;
}
.meta .sep{color:var(--ink-faint)}

.summary{
  margin:0;font-size:.94rem;color:var(--ink-soft);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}

/* player ---------------------------------------------------------- */
.player{
  display:flex;align-items:center;gap:14px;
  margin-top:8px;
}

.play{
  flex:none;width:40px;height:40px;border-radius:50%;
  border:none;background:var(--accent);color:var(--ink);
  display:grid;place-items:center;cursor:pointer;
  transition:transform .12s ease, background .12s ease;
}
.play:hover{background:var(--accent-deep)}
.play:active{transform:scale(.94)}
.play:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.play svg{width:15px;height:15px;display:block}
.play[data-state="loading"]{cursor:progress}
.play .spinner{animation:spin .8s linear infinite;transform-origin:50% 50%}
@keyframes spin{to{transform:rotate(360deg)}}

/* an episode typed in by hand may have no artwork */
.cover-empty{
  background:repeating-linear-gradient(-45deg,var(--track),var(--track) 6px,#E6E1D6 6px,#E6E1D6 12px);
  border:1px solid var(--rule);
}

/* indeterminate bar under the scrub while audio is being fetched */
.scrub-wrap{flex:1 1 auto;min-width:0;position:relative;display:flex;align-items:center}
.scrub-load{
  position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;
  overflow:hidden;border-radius:2px;opacity:0;pointer-events:none;
  transition:opacity .15s ease;
}
.episode.is-loading .scrub-load{opacity:1}
.scrub-load::after{
  content:"";position:absolute;top:0;bottom:0;width:38%;border-radius:2px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
  animation:sweep 1.1s ease-in-out infinite;
}
@keyframes sweep{
  0%{transform:translateX(-110%)}
  100%{transform:translateX(300%)}
}
.episode.is-loading .scrub::-webkit-slider-thumb{opacity:.35}
.episode.is-loading .scrub::-moz-range-thumb{opacity:.35}

/* nothing to play yet */
.episode.no-audio .play{background:var(--track);cursor:not-allowed}
.episode.no-audio .times{opacity:.5}

.times{
  font-size:.86rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;
  white-space:nowrap;display:flex;gap:7px;align-items:center;
}
.times .slash{color:var(--ink-faint)}

.scrub{
  flex:1 1 auto;width:100%;min-width:0;
  appearance:none;-webkit-appearance:none;
  background:transparent;height:18px;margin:0;cursor:pointer;
}
.scrub:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:2px}
.scrub::-webkit-slider-runnable-track{
  height:2px;background:var(--track);border-radius:2px;
}
.scrub::-moz-range-track{height:2px;background:var(--track);border-radius:2px}
.scrub::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;
  width:9px;height:9px;background:var(--accent);border:none;border-radius:1px;
  margin-top:-3.5px;
}
.scrub::-moz-range-thumb{
  width:9px;height:9px;background:var(--accent);border:none;border-radius:1px;
}
.episode.is-active .scrub::-webkit-slider-thumb{width:11px;height:11px;margin-top:-4.5px}
.episode.is-active .scrub::-moz-range-thumb{width:11px;height:11px}

/* actions --------------------------------------------------------- */

/* diagnostics ----------------------------------------------------- */

@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
}
