/* Johanna Dunaway — editorial broadsheet. Newsprint paper, ink, one oxblood accent. */
:root{
  --paper:#f6f3ec; --paper-2:#efeadf; --ink:#1b1f24; --ink-2:#4a4f57; --ink-3:#6c7078;
  --rule:#d6d0c2; --accent:#8c2f23; --accent-ink:#6f2419; --navy:#1d2a3a;
  --serif:"Zodiak", Georgia, "Times New Roman", serif;
  --sans:"Switzer", "Helvetica Neue", Arial, sans-serif;
  --text-sm:clamp(.84rem,.82rem + .1vw,.9rem);
  --text-base:clamp(1rem,.97rem + .15vw,1.0625rem);
  --text-lg:clamp(1.15rem,1.05rem + .4vw,1.35rem);
  --text-xl:clamp(1.6rem,1.3rem + 1.2vw,2.3rem);
  --text-2xl:clamp(2.1rem,1.5rem + 2.6vw,3.6rem);
  --wrap:1180px; --gap:clamp(1.25rem,1rem + 1.5vw,2.5rem);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 var(--text-base)/1.6 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent-ink);text-decoration-thickness:1px;text-underline-offset:.18em}
a:hover{color:var(--accent);text-decoration-thickness:2px}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gap)}
.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;background:var(--ink);color:var(--paper);padding:.5rem 1rem;z-index:10}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* Masthead */
.masthead{border-bottom:1px solid var(--ink);background:var(--paper)}
.masthead-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1.4rem;padding-bottom:1rem;border-bottom:3px double var(--ink)}
.wordmark{font:500 clamp(1.5rem,1.2rem + 1.2vw,2.2rem)/1 var(--serif);color:var(--ink);text-decoration:none;letter-spacing:-.01em}
.wordmark:hover{color:var(--ink)}
nav ul{list-style:none;margin:0;padding:0;display:flex;gap:clamp(.9rem,.5rem + 1vw,1.7rem);align-items:center}
nav a{font:500 var(--text-sm)/1 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);text-decoration:none;padding:.4rem 0;border-bottom:2px solid transparent}
nav a:hover{color:var(--accent);border-color:var(--accent)}
nav a[aria-current=page]{border-color:var(--ink)}
nav .cv-link{border:1px solid var(--ink);padding:.45rem .7rem}
nav .cv-link:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.nav-toggle{display:none;font:500 var(--text-sm) var(--sans);text-transform:uppercase;letter-spacing:.06em;background:none;border:1px solid var(--ink);color:var(--ink);padding:.45rem .8rem;cursor:pointer}
.dateline{display:flex;justify-content:space-between;gap:1rem;font:500 .74rem/1 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);padding-top:.6rem;padding-bottom:.6rem}

/* Type */
h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.15;letter-spacing:-.01em;margin:0}
h1{font-size:var(--text-2xl);text-wrap:balance}
h3{font-size:var(--text-lg);margin-bottom:.6rem}
p{margin:0 0 1rem}
.kicker{font:600 .78rem/1.4 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem}
.label{font:600 .78rem/1.3 var(--sans);letter-spacing:.11em;text-transform:uppercase;color:var(--ink);padding-top:.7rem;border-top:2px solid var(--ink);margin-bottom:1.2rem}
.label.spaced{margin-top:2.5rem}
.lede{font:400 var(--text-lg)/1.5 var(--serif);color:var(--ink-2);max-width:60ch;margin-top:1.2rem}
.muted{color:var(--ink-3)}.small{font-size:var(--text-sm)}
.measure{max-width:68ch}
em{font-style:italic}

/* Home */
.hero{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:calc(var(--gap)*1.5);padding-top:clamp(2.5rem,2rem + 3vw,5rem);padding-bottom:clamp(2.5rem,2rem + 2vw,4rem);align-items:start}
.hero h1{font-size:clamp(1.8rem,1.4rem + 1.6vw,2.75rem);line-height:1.18;max-width:20ch;margin-bottom:1.6rem}
.bio{max-width:62ch;color:var(--ink)}
.hero-photo{margin:0;position:relative}
.hero-photo img{width:100%;aspect-ratio:4/5;object-fit:cover;filter:saturate(.92)}
.hero-photo::after{content:"";position:absolute;inset:auto -12px -12px auto;width:60%;height:40%;border-right:3px solid var(--accent);border-bottom:3px solid var(--accent);pointer-events:none}
.linkrow{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;margin-top:1.6rem;font:500 var(--text-sm) var(--sans)}
.linkrow a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--accent)}
.linkrow a:hover{color:var(--accent)}
.books-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);padding-top:2rem;padding-bottom:2rem;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.book-mini{display:flex;gap:1rem;align-items:center;text-decoration:none;color:var(--ink)}
.book-mini img{width:70px;height:auto;box-shadow:0 1px 0 var(--rule),0 6px 14px -8px rgba(0,0,0,.35)}
.book-mini em{display:block;font:500 1rem/1.3 var(--serif);font-style:italic}
.book-mini small{display:block;color:var(--ink-3);font-size:.8rem;margin-top:.3rem}
.book-mini:hover em{color:var(--accent)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);padding-top:clamp(2.5rem,2rem + 2vw,4rem);padding-bottom:clamp(3rem,2rem + 3vw,5rem)}

/* Lists */
.dated{list-style:none;margin:0;padding:0}
.dated li{display:grid;grid-template-columns:5.6rem 1fr;gap:.9rem;padding:.7rem 0;border-bottom:1px solid var(--rule);font-size:var(--text-sm);line-height:1.5}
.dated .d{font:500 .78rem/1.6 var(--sans);color:var(--ink-3);letter-spacing:.03em;font-variant-numeric:tabular-nums}
.grid-3 .dated li{grid-template-columns:4.9rem 1fr}
.pubs{list-style:none;margin:0;padding:0}
.pubs li{padding:.8rem 0;border-bottom:1px solid var(--rule);font-size:var(--text-sm);line-height:1.55;overflow-wrap:anywhere}
.pubs li:first-child{padding-top:0}
.pubs a{overflow-wrap:anywhere}

/* Pages */
.page-head{padding-top:clamp(2.5rem,2rem + 3vw,5rem);padding-bottom:clamp(1.5rem,1rem + 2vw,3rem)}
.section{padding-top:1.5rem;padding-bottom:clamp(2rem,1.5rem + 2vw,3.5rem)}
.books{display:grid;grid-template-columns:repeat(3,1fr);gap:calc(var(--gap)*1.2);margin-bottom:1.5rem}
.book img{width:100%;max-width:260px;aspect-ratio:2/3;object-fit:cover;margin-bottom:1.1rem;box-shadow:0 14px 28px -16px rgba(0,0,0,.45)}
.book h3{font-size:1.15rem;line-height:1.3}
.book p{font-size:var(--text-sm);margin-bottom:.3rem}
.themes{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:calc(var(--gap)*1.5)}
details.all{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin-bottom:1.5rem}
details.all summary{cursor:pointer;padding:1rem 0;font:500 var(--text-sm) var(--sans);letter-spacing:.04em;color:var(--accent-ink);list-style:none}
details.all summary::before{content:"+ ";font-weight:600}
details[open].all summary::before{content:"– "}
.year{display:grid;grid-template-columns:7rem 1fr;gap:1rem;padding:1rem 0;border-top:1px solid var(--rule)}
.year h3{font-size:1.05rem}
.people{list-style:none;margin:0;padding:0}
.people li{display:grid;grid-template-columns:minmax(0,11rem) 1fr;column-gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--rule);font-size:var(--text-sm)}
.people strong{font:500 1rem/1.4 var(--serif)}
.people small{grid-column:2;color:var(--ink-3)}
.button{display:inline-block;background:var(--ink);color:var(--paper);text-decoration:none;padding:.75rem 1.1rem;font:500 var(--text-sm) var(--sans);margin-top:.5rem;overflow-wrap:anywhere}
.button:hover{background:var(--accent);color:var(--paper)}
.courses{margin:0;padding-left:1.1rem;max-width:80ch}
.courses li{margin-bottom:.7rem}
.wide-photo{margin-top:0;margin-bottom:1.5rem}
.wide-photo img{width:100%;max-width:720px;aspect-ratio:3/2;object-fit:cover;max-height:420px}
.wide-photo figcaption{max-width:720px;font-size:.82rem;color:var(--ink-3);padding-top:.6rem;border-bottom:1px solid var(--rule);padding-bottom:.6rem}
.contact{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:var(--gap);padding-bottom:5rem}
.contact .big{font:400 var(--text-xl)/1.2 var(--serif);overflow-wrap:anywhere}
.plain{list-style:none;margin:0;padding:0}.plain li{margin-bottom:.5rem}

.with-photo{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:calc(var(--gap)*1.5);align-items:start}
.with-photo:has(.landscape){grid-template-columns:minmax(0,1fr) 360px}
.side-photo{margin:0}
.side-photo img{width:100%;aspect-ratio:3/4;object-fit:cover}
.side-photo.landscape img{aspect-ratio:4/3}
.side-photo figcaption{font-size:.8rem;color:var(--ink-3);padding-top:.5rem;line-height:1.45}

.advisory{padding-top:0;padding-bottom:clamp(3rem,2rem + 3vw,5rem)}
.dated.wide li{grid-template-columns:7rem minmax(0,70ch);font-size:var(--text-base)}
.dated.wide strong{font-weight:500;display:block}
.dated .note{display:block;color:var(--ink-2);margin-top:.35rem;font-size:var(--text-sm)}

.expertise p{font-size:var(--text-sm);line-height:1.6;margin:0}
.expertise strong{display:block;font:600 .74rem/1.4 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--accent);margin-bottom:.4rem}

/* Full CV page */
.cv-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;flex-wrap:wrap}
.cv-updated{color:var(--ink-3);margin:.6rem 0 0}
.cv-actions{display:flex;gap:.7rem;margin:0}
.button.ghost{background:transparent;color:var(--ink);border:1px solid var(--ink);cursor:pointer}
.button.ghost:hover{background:var(--ink);color:var(--paper)}
.cv-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:calc(var(--gap)*1.5);padding-bottom:4rem}
.cv-toc{position:sticky;top:1rem;align-self:start;max-height:calc(100vh - 2rem);overflow:auto;font-size:.84rem}
.cv-toc ol{list-style:none;margin:0;padding:0}
.cv-toc li{margin:0 0 .35rem}
.cv-toc a{color:var(--ink-2);text-decoration:none}
.cv-toc a:hover{color:var(--accent);text-decoration:underline}
.cv-body{max-width:820px}
.cv-sec{padding-bottom:1.6rem}
.cv-sec h2{font:600 .82rem/1.3 var(--sans);letter-spacing:.11em;text-transform:uppercase;padding-top:.7rem;border-top:2px solid var(--ink);margin:0 0 .9rem}
.cv-sec h3{font:italic 500 1.05rem/1.3 var(--serif);margin:1.2rem 0 .5rem}
.cv-sec>p{font-size:var(--text-sm)}
.cv-intro{color:var(--ink-2);font-style:italic}
.cv-list{list-style:none;margin:0;padding:0}
.cv-list li{display:grid;grid-template-columns:minmax(0,1fr) 7.5rem;column-gap:1.2rem;padding:.55rem 0;border-bottom:1px solid var(--rule);font-size:var(--text-sm);line-height:1.5}
.cv-list .cv-date{grid-column:2;grid-row:1;text-align:right;color:var(--ink-3);font-size:.8rem;font-variant-numeric:tabular-nums}
.cv-list .cv-text{grid-column:1;grid-row:1;overflow-wrap:anywhere}
.cv-sub,.cv-note{display:block;color:var(--ink-2);margin-top:.25rem}
.cv-note{font-size:.84rem;padding-left:1rem}
.cv-body a{color:#1a4e8a}

/* Footer */
.footer{background:var(--navy);color:#d9dde3;margin-top:2rem;padding:3rem 0 1.5rem;font-size:var(--text-sm)}
.footer a{color:#fff}
.footer-row{display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap}
.footer-name{font:500 1.4rem var(--serif);color:#fff;margin-bottom:.6rem}
.footer-links{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.footer-fine{margin-top:2.2rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.18);font-size:.78rem;color:#aab2bd}

@media (max-width:960px){
  .themes,.grid-3{grid-template-columns:1fr 1fr}
  .books{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:760px){
  .nav-toggle{display:block}
  nav{position:absolute;left:0;right:0;top:100%;background:var(--paper);border-bottom:1px solid var(--ink);display:none;z-index:5}
  nav.open{display:block}
  .masthead{position:relative}
  nav ul{flex-direction:column;align-items:flex-start;padding:1rem var(--gap) 1.4rem;gap:.9rem}
  .dateline span:nth-child(2){display:none}
  .hero{grid-template-columns:1fr}
  .hero-photo{order:-1;max-width:220px}
  .books-strip,.books,.themes,.grid-3,.two,.contact{grid-template-columns:1fr}
  .book{display:grid;grid-template-columns:110px 1fr;gap:1rem;align-items:start}
  .book img{margin:0}
  .book>*:not(a):not(img){grid-column:2}
  .book a,.book>img{grid-row:1/span 3}
  .year{grid-template-columns:1fr;gap:.3rem}
  .with-photo,.with-photo:has(.landscape){grid-template-columns:1fr}
  .side-photo{max-width:260px}.side-photo.landscape{max-width:100%}
  .cv-layout{grid-template-columns:1fr}.cv-toc{position:static;max-height:none}.cv-toc ol{columns:2;column-gap:1rem}
  .cv-list li{grid-template-columns:1fr}.cv-list .cv-date{grid-column:1;grid-row:1;text-align:left}.cv-list .cv-text{grid-row:2}
  .people li{grid-template-columns:1fr}.people small{grid-column:1}
  .dated li,.dated.wide li{grid-template-columns:4.6rem 1fr}
}

@media print{
  .masthead,.footer,.cv-toc,.cv-actions,.skip{display:none!important}
  body{background:#fff;color:#000;font-size:10.5pt}
  .cv-layout{display:block;padding:0}
  .page-head{padding:0 0 1rem}
  .cv-list li{break-inside:avoid;border-color:#ccc}
  .cv-sec h2{break-after:avoid}
  a{color:#1a4e8a!important;text-decoration:none}
}
