/* ============================================================
   Stephanie Ternullo — shared site styles
   Palette: cool paper + teal-slate ink + contour-pine accent
   ============================================================ */
:root{
  --paper:#F3F4F1; --surface:#FBFCFA; --ink:#17211F; --ink-soft:#4A5754;
  --line:#D9DDD6; --accent:#3F6B5E; --accent-soft:rgba(63,107,94,.12);
  --clay:#A65A44;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --maxw:940px; --read:700px;
}
@media (prefers-color-scheme:dark){
  :root{
    --paper:#14191A; --surface:#1B2224; --ink:#E8ECE7; --ink-soft:#9DA9A3;
    --line:#2A3335; --accent:#71A695; --accent-soft:rgba(113,166,149,.16); --clay:#CB7B62;
  }
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--serif); font-size:18px; line-height:1.62;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 28px}
a{color:inherit}
img{max-width:100%}
.eyebrow{font-family:var(--sans); font-size:.72rem; font-weight:600; letter-spacing:.16em;
  text-transform:uppercase; color:var(--accent); margin:0 0 .9rem}
h1,h2,h3{font-weight:600; text-wrap:balance; line-height:1.14}
.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--paper);
  padding:.6rem 1rem;border-radius:0 0 6px 0;font-family:var(--sans);font-size:.85rem;z-index:100}
.skip:focus{left:0}
a:focus-visible,.btn:focus-visible,.tab:focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:4px}

/* ---- header / nav ---- */
header.nav{position:sticky; top:0; z-index:50; background:color-mix(in srgb,var(--paper) 88%,transparent);
  backdrop-filter:saturate(140%) blur(10px); border-bottom:1px solid var(--line)}
.nav .wrap{display:flex; align-items:center; justify-content:space-between; height:60px; gap:20px}
.brand{font-family:var(--serif); font-size:1.05rem; font-weight:600; text-decoration:none; white-space:nowrap}
.brand .dot{color:var(--accent)}
nav.links{display:flex; gap:22px; flex-wrap:wrap}
nav.links a{font-family:var(--sans); font-size:.82rem; font-weight:500; letter-spacing:.03em;
  text-decoration:none; color:var(--ink-soft); position:relative; padding:4px 0; white-space:nowrap}
nav.links a::after{content:""; position:absolute; left:0; right:100%; bottom:0; height:1.5px;
  background:var(--accent); transition:right .25s ease}
nav.links a:hover{color:var(--ink)} nav.links a:hover::after{right:0}
nav.links a[aria-current="page"]{color:var(--ink)}
nav.links a[aria-current="page"]::after{right:0}
@media (max-width:760px){
  .nav .wrap{height:auto; flex-direction:column; align-items:flex-start; padding-top:12px; padding-bottom:12px; gap:8px}
  nav.links{gap:16px}
}

/* ---- buttons ---- */
.btn{font-family:var(--sans); font-size:.82rem; font-weight:500; letter-spacing:.02em;
  text-decoration:none; padding:.5rem .9rem; border:1px solid var(--line); border-radius:999px;
  color:var(--ink); background:var(--surface); transition:border-color .2s,color .2s,background .2s; display:inline-block}
.btn:hover{border-color:var(--accent); color:var(--accent)}
.btn.primary{background:var(--accent); color:#fff; border-color:var(--accent)}
.btn.primary:hover{filter:brightness(1.06); color:#fff}
.quicklinks{display:flex; flex-wrap:wrap; gap:10px}

/* ---- sections ---- */
section{padding:60px 0; border-bottom:1px solid var(--line)}
.sec-head{max-width:var(--read); margin-bottom:1.8rem}
.sec-head h2{font-size:1.6rem; margin:0}
p{margin:0 0 1.1rem} .read{max-width:var(--read)} .read p:last-child{margin-bottom:0}
.pagehead{padding:52px 0 8px}
.pagehead h1{font-size:clamp(2rem,4.5vw,2.7rem); margin:.2rem 0 .4rem}
.pagehead .lede{font-size:1.1rem; color:var(--ink-soft); max-width:36em; margin:0}

/* ---- About / hero ---- */
.hero{padding:72px 0 60px; border-bottom:1px solid var(--line)}
.hero .grid{display:grid; grid-template-columns:1fr 250px; gap:52px; align-items:center}
@media (max-width:760px){.hero .grid{grid-template-columns:1fr; gap:34px}}
.hero h1{font-size:clamp(2.5rem,6vw,3.6rem); margin:.2rem 0 .5rem; letter-spacing:-.01em}
.role{font-family:var(--sans); font-size:.95rem; color:var(--ink-soft); letter-spacing:.02em; margin:0 0 1.4rem}
.role strong{color:var(--ink); font-weight:600}
.lede{font-size:1.15rem; max-width:36em; margin:0 0 1.2rem}
.portrait, img.portrait{position:relative; width:100%; aspect-ratio:4/5; border-radius:10px; overflow:hidden;
  border:1px solid var(--line); margin:0; object-fit:cover; display:block}

/* ---- books ---- */
#books{background:var(--surface)}
.book-grid{display:grid; grid-template-columns:180px 1fr; gap:40px; align-items:start; max-width:var(--maxw)}
.book-grid + .book-grid{margin-top:44px; padding-top:44px; border-top:1px solid var(--line)}
@media (max-width:680px){.book-grid{grid-template-columns:1fr; gap:24px}}
.cover-link{display:block; border-radius:4px; overflow:hidden; box-shadow:0 18px 40px -18px rgba(0,0,0,.45),0 2px 6px rgba(0,0,0,.12)}
.cover-img{display:block; width:100%; height:auto; border-radius:4px}
.cover-ph{position:relative; aspect-ratio:2/3; border-radius:4px; overflow:hidden; width:100%; display:flex;
  flex-direction:column; justify-content:space-between; padding:20px 18px; text-decoration:none; color:#EFEDE6;
  background:linear-gradient(150deg,#26403A,#17211F 70%); border:1px solid rgba(0,0,0,.22);
  box-shadow:0 18px 40px -18px rgba(0,0,0,.45),0 2px 6px rgba(0,0,0,.12)}
.cover-ph::before{content:""; position:absolute; inset:0;
  background:repeating-linear-gradient(115deg, transparent 0 22px, rgba(255,255,255,.03) 22px 23px)}
.cover-ph .ctitle{font-family:var(--serif); font-size:1.4rem; line-height:1.06; font-weight:600; position:relative}
.cover-ph .cauthor{font-family:var(--sans); font-size:.66rem; letter-spacing:.14em; text-transform:uppercase; opacity:.85; position:relative}
.cover-ph .crule{width:32px; height:2px; background:var(--accent); position:relative}
.book-body h3{font-size:1.4rem; margin:.1rem 0 .3rem; line-height:1.12}
.book-body h3 a{text-decoration:none} .book-body h3 a:hover{color:var(--accent)}
.subtitle{font-family:var(--sans); font-size:.9rem; color:var(--ink-soft); letter-spacing:.02em; margin:0 0 1.05rem}
.awards-line{font-family:var(--sans); font-size:.83rem; color:var(--ink-soft); margin:.2rem 0 1.05rem; display:flex; gap:8px; align-items:baseline}
.awards-line .mk{color:var(--clay)} .awards-line strong{color:var(--ink); font-weight:600}
.tag{display:inline-block; font-family:var(--sans); font-size:.72rem; letter-spacing:.06em;
  color:var(--ink-soft); border:1px solid var(--line); border-radius:999px; padding:.25rem .7rem; margin:.6rem .4rem 0 0}

/* ---- tabs (book page) ---- */
.tabs{max-width:var(--maxw)}
.tablist{display:flex; gap:6px; border-bottom:1px solid var(--line); margin-bottom:1.8rem}
.tab{font-family:var(--sans); font-size:.9rem; font-weight:600; letter-spacing:.01em; color:var(--ink-soft);
  background:none; border:none; border-bottom:2px solid transparent; padding:.7rem .2rem; margin-right:1.6rem;
  cursor:pointer; transition:color .2s}
.tab:hover{color:var(--ink)}
.tab[aria-selected="true"]{color:var(--ink); border-bottom-color:var(--accent)}
.tabpanel[hidden]{display:none}

/* ---- awards list ---- */
ul.awards{list-style:none; margin:0; padding:0; max-width:var(--maxw)}
ul.awards li{display:grid; grid-template-columns:26px 1fr; gap:14px; padding:15px 0; border-top:1px solid var(--line); align-items:baseline}
ul.awards li:first-child{border-top:none}
ul.awards .mk{color:var(--clay); font-size:1.05rem; line-height:1}
.awardname{font-weight:600}
.awardmeta{font-family:var(--sans); font-size:.85rem; color:var(--ink-soft); margin-top:2px}

/* ---- praise + coverage ---- */
.praise{display:grid; gap:24px; max-width:var(--maxw); margin-bottom:2.2rem}
figure.quote{margin:0; padding:0 0 0 22px; border-left:3px solid var(--accent)}
figure.quote blockquote{margin:0 0 .5rem; font-size:1.16rem; line-height:1.5}
figure.quote figcaption{font-family:var(--sans); font-size:.85rem; color:var(--ink-soft)}
figure.quote figcaption strong{color:var(--ink); font-weight:600}
ul.coverage{list-style:none; margin:0; padding:0; max-width:var(--maxw)}
ul.coverage li{display:grid; grid-template-columns:1fr auto; gap:14px 20px; align-items:baseline;
  padding:15px 0; border-top:1px solid var(--line)}
ul.coverage li:first-child{border-top:none}
.cov-outlet{font-weight:600}
.cov-kind{font-family:var(--sans); font-size:.7rem; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-soft); margin-left:8px}
.cov-desc{font-family:var(--sans); font-size:.85rem; color:var(--ink-soft); margin-top:3px}
.cov-link{font-family:var(--sans); font-size:.82rem; font-weight:500; text-decoration:none; color:var(--accent); white-space:nowrap}
.cov-link:hover{text-decoration:underline}
.muted{font-family:var(--sans); font-size:.9rem; color:var(--ink-soft)}

/* ---- book hero + buy ---- */
.bookhero{padding:56px 0 52px; border-bottom:1px solid var(--line)}
.bookhero .grid{display:grid; grid-template-columns:220px 1fr; gap:50px; align-items:center}
@media (max-width:720px){.bookhero .grid{grid-template-columns:1fr; gap:32px; justify-items:start}}
.bookhero h1{font-size:clamp(2rem,4.4vw,3rem); margin:.2rem 0 .5rem; letter-spacing:-.01em}
.bookhero .subtitle{font-size:1rem; margin:0 0 1.2rem}
.bookhero .hook{font-size:1.12rem; max-width:33em; margin:0 0 1.5rem}
.buy-grid{display:grid; grid-template-columns:1fr 1fr; gap:44px; max-width:var(--maxw)}
@media (max-width:680px){.buy-grid{grid-template-columns:1fr; gap:28px}}
.buybtns{display:flex; flex-direction:column; gap:10px; align-items:flex-start}
dl.meta{margin:0; display:grid; grid-template-columns:auto 1fr; gap:.5rem 1.2rem; font-family:var(--sans); font-size:.92rem}
dl.meta dt{color:var(--ink-soft)} dl.meta dd{margin:0; font-variant-numeric:tabular-nums}
#buy{background:var(--surface)}

/* ---- papers ---- */
.papergroup{max-width:var(--maxw); margin-bottom:2.6rem}
.papergroup h2{font-size:1.15rem; font-family:var(--sans); font-weight:700; letter-spacing:.02em;
  padding-bottom:.6rem; border-bottom:1px solid var(--line); margin:0 0 .4rem}
ol.pubs{list-style:none; margin:0; padding:0}
ol.pubs li{display:grid; grid-template-columns:58px 1fr; gap:18px; padding:16px 0; border-top:1px solid var(--line)}
ol.pubs li:first-child{border-top:none}
.pubyear{font-family:var(--sans); font-variant-numeric:tabular-nums; font-size:.88rem; font-weight:600; color:var(--accent); padding-top:3px}
.pubtitle{font-size:1.03rem; line-height:1.36}
.pubtitle a{text-decoration:none; border-bottom:1px solid var(--accent-soft)}
.pubtitle a:hover{border-bottom-color:var(--accent); color:var(--accent)}
.pubvenue{font-family:var(--sans); font-size:.85rem; color:var(--ink-soft); margin-top:3px}
.pubvenue em{font-style:italic}
.award-tag{display:inline-block; font-family:var(--sans); font-size:.7rem; font-weight:600; letter-spacing:.04em;
  color:var(--clay); border:1px solid color-mix(in srgb,var(--clay) 40%,transparent); border-radius:999px;
  padding:.1rem .55rem; margin-top:6px}
.note-tag{font-family:var(--sans); font-size:.68rem; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-soft); margin-left:8px}

/* ---- courses ---- */
.course{max-width:var(--maxw); padding:26px 0; border-top:1px solid var(--line)}
.course:first-of-type{border-top:none}
.course .cnum{font-family:var(--sans); font-size:.74rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--accent); margin:0 0 .35rem}
.course h3{font-size:1.3rem; margin:0 0 .3rem}
.course .cmeta{font-family:var(--sans); font-size:.85rem; color:var(--ink-soft); margin:0 0 .9rem}
.course p{max-width:var(--read)}

/* ---- contact ---- */
.contact-list{list-style:none; margin:0; padding:0; max-width:var(--read); font-size:1.08rem}
.contact-list li{display:grid; grid-template-columns:120px 1fr; gap:16px; padding:14px 0; border-top:1px solid var(--line)}
.contact-list li:first-child{border-top:none}
.contact-list .lab{font-family:var(--sans); font-size:.8rem; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-soft); padding-top:4px}
.contact-list a{color:var(--accent); text-decoration:none; border-bottom:1px solid var(--accent-soft)}
.contact-list a:hover{border-bottom-color:var(--accent)}

/* ---- footer ---- */
footer{padding:32px 0 46px; font-family:var(--sans); font-size:.8rem; color:var(--ink-soft)}
footer .wrap{display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px}
footer a{color:inherit; text-decoration:none}
footer a:hover{color:var(--ink)}

/* ---- reveal ---- */
.reveal{opacity:0; transform:translateY(14px); transition:opacity .6s ease, transform .6s ease}
.reveal.in{opacity:1; transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1; transform:none; transition:none}}
