:root{
  --paper:#F3EFE4;
  --paper-raised:#EAE4D3;
  --ink:#21262B;
  --ink-soft:#4A4F53;
  --muted:#7A7364;
  --line:#DCD3BE;
  --accent:#4E6E8E;      /* slate blue, nods to Columbia blue */
  --accent-deep:#324B62;
  --highlight:#B85C56;   /* dusty brick, used sparingly */
  --radius:3px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.01ms !important; transition-duration:0.01ms !important;}
}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'IBM Plex Sans', sans-serif;
  font-size:16px;
  line-height:1.6;
}

a{color:var(--accent-deep);}
a:focus-visible, button:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
}

.layout{
  display:grid;
  grid-template-columns:360px 1fr;
  max-width:1080px;
  margin:0 auto;
  min-height:100vh;
}

/* ---------- Sidebar ---------- */
aside{
  position:sticky;
  top:0;
  align-self:start;
  height:100vh;
  padding:48px 20px 32px 0;
  display:flex;
  flex-direction:column;
  border-right:1px solid var(--line);
}

.mark{
  font-family:'Source Serif 4', serif;
  font-size:2.1rem;
  font-weight:600;
  line-height:1.15;
  margin:0 0 6px;
  text-decoration:none;
  color:var(--ink);
  display:block;
}
.tagline{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.75rem;
  color:var(--muted);
  letter-spacing:0.02em;
  margin-bottom:40px;
}

nav ul{
  list-style:none;
  padding:0;
  margin:0 0 auto;
}
nav li{margin-bottom:14px;}
nav a{
  text-decoration:none;
  color:var(--ink-soft);
  font-size:0.95rem;
  position:relative;
  padding-bottom:2px;
  border-bottom:1px solid transparent;
  transition:color 0.15s ease, border-color 0.15s ease;
}
nav a:hover{color:var(--accent-deep); border-color:var(--accent);}
nav a.active{color:var(--accent-deep); border-color:var(--accent); font-weight:500;}

.side-links{
  display:flex;
  flex-direction:column;
  gap:8px;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.78rem;
  margin-top:32px;
}
.side-links a{color:var(--ink-soft); text-decoration:none;}
.side-links a:hover{color:var(--accent-deep);}
.side-links a::before{content:"→ "; color:var(--accent);}

.now-playing{
  margin-top:36px;
}
.np-label{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.7rem;
  color:var(--accent-deep);
  margin:0 0 10px;
  letter-spacing:0.02em;
}
.np-card{
  background:var(--ink);
  border-radius:var(--radius);
  padding:14px;
}
.np-art{
  width:100%;
  aspect-ratio:1/1;
  border-radius:2px;
  margin-bottom:10px;
  background:
    radial-gradient(circle at 25% 20%, #E8A15C 0%, transparent 50%),
    linear-gradient(145deg, #C97A4A 0%, #8B4A32 55%, #4A2A22 100%);
}
.np-track{
  font-family:'Source Serif 4', serif;
  font-weight:600;
  font-size:0.95rem;
  margin:0 0 3px;
  color:var(--paper);
  line-height:1.3;
}
.np-artist{
  font-family:'IBM Plex Sans', sans-serif;
  font-size:0.78rem;
  color:#B9B2A0;
  margin:0 0 14px;
  line-height:1.4;
}
.np-actions{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.np-play{
  display:inline-flex;
  align-items:center;
  gap:6px;
  background:var(--accent);
  color:var(--paper);
  text-decoration:none;
  font-family:'IBM Plex Sans', sans-serif;
  font-size:0.76rem;
  font-weight:600;
  padding:7px 14px;
  border-radius:16px;
  white-space:nowrap;
}
.np-play:hover{background:var(--accent-deep);}
.np-link{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.72rem;
  color:#B9B2A0;
  text-decoration:none;
  white-space:nowrap;
}
.np-link:hover{color:var(--paper);}

/* ---------- Main ---------- */
main{padding:64px 32px 80px;}
section{margin-bottom:88px;}
section:last-of-type{margin-bottom:40px;}

#hero{
  animation:heroIn 0.7s ease-out both;
}
@keyframes heroIn{
  from{opacity:0; transform:translateY(10px);}
  to{opacity:1; transform:translateY(0);}
}

.viewfinder{
  position:relative;
  padding:28px 32px;
  max-width:fit-content;
}
.vf-corner{
  position:absolute;
  width:16px; height:16px;
  border-color:var(--accent);
  border-style:solid;
  border-width:0;
}
.vf-tl{top:0; left:0; border-top-width:1.5px; border-left-width:1.5px;}
.vf-tr{top:0; right:0; border-top-width:1.5px; border-right-width:1.5px;}
.vf-bl{bottom:0; left:0; border-bottom-width:1.5px; border-left-width:1.5px;}
.vf-br{bottom:0; right:0; border-bottom-width:1.5px; border-right-width:1.5px;}

.eyebrow{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.72rem;
  color:var(--accent-deep);
  margin:0 0 14px;
}

h1{
  font-family:'Source Serif 4', serif;
  font-weight:500;
  font-size:3rem;
  line-height:1.2;
  margin:0 0 22px;
  max-width:14ch;
  letter-spacing:-0.01em;
}
.status{
  font-size:1rem;
  color:var(--ink-soft);
  max-width:52ch;
  margin:0 0 4px;
}
.status .dot{
  display:inline-block;
  width:7px; height:7px;
  border-radius:50%;
  background:var(--accent);
  margin-right:8px;
}

h2{
  font-family:'Source Serif 4', serif;
  font-weight:600;
  font-size:1.5rem;
  margin:0 0 22px;
  padding-bottom:10px;
  border-bottom:1px solid var(--line);
}

.page-title{
  font-family:'Source Serif 4', serif;
  font-weight:500;
  font-size:2.3rem;
  margin:0 0 12px;
  max-width:16ch;
  line-height:1.25;
}
.page-lede{
  color:var(--ink-soft);
  max-width:56ch;
  margin:0 0 8px;
  font-size:1.02rem;
}

.bio-layout{
  display:grid;
  grid-template-columns:220px 1fr;
  gap:40px;
  align-items:start;
}
.bio-photo{
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  border-radius:var(--radius);
}
.bio-text{min-width:0;}

.about p{
  max-width:62ch;
  color:var(--ink-soft);
  margin:0 0 16px;
}

dl.facts{
  display:grid;
  grid-template-columns:auto 1fr;
  column-gap:20px;
  row-gap:10px;
  margin-top:28px;
  font-size:0.92rem;
  max-width:56ch;
}
dl.facts dt{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.75rem;
  color:var(--muted);
  padding-top:2px;
  white-space:nowrap;
}
dl.facts dd{margin:0; color:var(--ink-soft);}

.cards{display:flex; flex-direction:column; gap:0;}
.card{
  padding:24px 20px;
  margin:0 -20px;
  border-bottom:1px solid var(--line);
  display:grid;
  grid-template-columns:170px 1fr;
  gap:24px;
  border-radius:var(--radius);
  transition:background 0.2s ease, transform 0.2s ease;
}
.card:hover{background:var(--paper-raised); transform:translateX(2px);}
.card:first-child{padding-top:24px;}
.card:last-child{border-bottom:none;}
.card .org-role{font-family:'IBM Plex Mono', monospace; font-size:0.78rem; color:var(--muted); line-height:1.5;}
.card .org-role strong{display:block; color:var(--ink); font-weight:500; font-size:0.85rem; margin-bottom:3px;}
.card p{margin:0; color:var(--ink-soft); max-width:56ch;}

.extracurr-grid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:24px;
}
.ex-photo{grid-column:1 / -1;}
.film-strip{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:10px;
  margin-top:16px;
}
.frame{
  display:block;
  aspect-ratio:3/4;
  overflow:hidden;
  border-radius:2px;
  transition:transform 0.2s ease, box-shadow 0.2s ease;
}
.frame:hover{transform:translateY(-3px); box-shadow:0 8px 20px rgba(33,38,43,0.18);}
.frame img{
  width:100%; height:100%;
  object-fit:cover;
  display:block;
}
.ig-handle{
  display:inline-block;
  margin-top:14px;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.76rem;
  color:var(--accent-deep);
  text-decoration:none;
}
.ig-handle:hover{color:var(--highlight);}
.ex-item{
  padding:20px;
  background:var(--paper-raised);
  border-radius:var(--radius);
}
.ex-item h3{
  font-family:'IBM Plex Sans', sans-serif;
  font-size:0.98rem;
  font-weight:600;
  margin:0 0 8px;
}
.ex-item p{
  margin:0;
  font-size:0.88rem;
  color:var(--ink-soft);
}
.ex-item p a{color:var(--accent-deep); font-size:0.8rem;}

/* ---------- Photography page gallery ---------- */
.gallery{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:2px;
}
.gallery .frame{aspect-ratio:1/1; border-radius:0;}
.gallery .frame:hover{transform:none; box-shadow:none; opacity:0.88;}
.gallery-note{
  margin-top:20px;
  color:var(--ink-soft);
  max-width:56ch;
}

/* ---------- Home page teasers ---------- */
.teaser-grid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:20px;
}
.teaser{
  display:block;
  padding:22px;
  background:var(--paper-raised);
  border-radius:var(--radius);
  text-decoration:none;
  color:var(--ink);
  transition:transform 0.2s ease, box-shadow 0.2s ease;
}
.teaser:hover{transform:translateY(-3px); box-shadow:0 8px 20px rgba(33,38,43,0.12);}
.teaser .t-label{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.7rem;
  color:var(--accent-deep);
  margin:0 0 8px;
}
.teaser h3{
  font-family:'Source Serif 4', serif;
  font-size:1.15rem;
  font-weight:600;
  margin:0 0 8px;
}
.teaser p{
  font-size:0.88rem;
  color:var(--ink-soft);
  margin:0;
}

footer{
  padding:32px 32px 48px;
  border-top:1px solid var(--line);
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  flex-wrap:wrap;
  gap:12px;
  font-size:0.85rem;
  color:var(--muted);
}
footer a{color:var(--ink-soft); text-decoration:none; margin-left:16px;}
footer a:hover{color:var(--accent-deep);}

@media (max-width:820px){
  .layout{grid-template-columns:1fr;}
  aside{
    position:relative;
    height:auto;
    border-right:none;
    border-bottom:1px solid var(--line);
    padding:28px 24px;
  }
  nav ul{display:flex; flex-wrap:wrap; gap:4px 18px; margin-bottom:20px;}
  nav li{margin-bottom:0;}
  main{padding:40px 24px 60px;}
  h1{font-size:2rem;}
  .page-title{font-size:1.8rem;}
  .bio-layout{grid-template-columns:1fr;}
  .bio-photo{max-width:220px;}
  .card{grid-template-columns:1fr; gap:6px;}
  .extracurr-grid{grid-template-columns:1fr;}
  .film-strip{grid-template-columns:repeat(3, 1fr);}
  .gallery{grid-template-columns:repeat(2, 1fr);}
  .teaser-grid{grid-template-columns:1fr;}
  footer{flex-direction:column; align-items:flex-start;}
  footer a{margin-left:0; margin-right:16px;}
}
