@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&display=swap");

:root {
  --paper: #fbfaf7;
  --sidebar: #f6f4ef;
  --ink: #171614;
  --muted: #66615b;
  --line: #c9c5bd;
  --line-soft: #dedbd4;
  --accent: #e14b20;
  --accent-dark: #aa3517;
  --mono: "IBM Plex Mono", "Courier New", monospace;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body,
.wy-body-for-nav {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--mono);
  font-size: 14px;
  line-height: 1.58;
}

.wy-nav-side,
.wy-nav-top,
.rst-versions,
.wy-breadcrumbs,
.wy-nav-content footer { display: none !important; }

.wy-nav-content-wrap { background: var(--paper); margin-left: 0; }

.wy-nav-content { max-width: none; margin: 0; padding: 0; }

.rst-content .document { padding: 0; }

.rst-content > [role="navigation"] { display: none !important; }

.rst-content p,
.rst-content li { color: inherit; }

.rst-content a { color: inherit; text-decoration: none; }

.rst-content a:hover { color: var(--accent-dark); text-decoration: underline; text-underline-offset: 4px; }

.archive-shell { display: grid; grid-template-columns: 320px minmax(0, 1fr); min-height: 100vh; }

.archive-sidebar {
  background: var(--sidebar);
  border-right: 1px solid var(--line-soft);
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  padding: 44px 34px 38px;
  position: sticky;
  top: 0;
  height: 100vh;
}

.sidebar-top,
.sidebar-intro,
.section-nav { border-bottom: 1px dashed var(--line); padding-bottom: 30px; }

.nameplate { display: inline-block; font-size: 1.12rem; font-weight: 600; letter-spacing: 0.01em; margin-bottom: 6px; }

.role { color: var(--accent) !important; margin: 0 0 8px; }

.location { color: var(--muted) !important; margin: 0; }

.location span { padding: 0 5px; }

.sidebar-intro { line-height: 1.8; margin: 30px 0 0; }

.section-nav { display: flex; flex-direction: column; gap: 19px; margin-top: 30px; }

.section-nav a { color: #3e3b37; padding-left: 25px; position: relative; }

.section-nav a.active { color: var(--accent); }

.section-nav a.active span { left: 0; position: absolute; }

.social-links { display: flex; flex-direction: column; gap: 14px; margin-top: auto; padding-top: 30px; }

.social-links a { align-items: center; display: flex; gap: 12px; color: var(--muted); }

.social-links span { color: var(--ink); display: inline-flex; font-weight: 600; justify-content: center; width: 18px; }

.archive-main { min-width: 0; padding: 42px 42px 28px; }

.archive-header { margin: 0 0 30px; }

.rst-content .archive-header h1 {
  color: var(--ink);
  font-family: var(--mono);
  font-size: clamp(2rem, 3.2vw, 2.65rem);
  font-weight: 500;
  letter-spacing: -0.035em;
  line-height: 1.15;
  margin: 0 0 19px;
}

.project-filters { display: flex; flex-wrap: wrap; gap: 15px 36px; }

.project-filters button {
  background: transparent;
  border: 0;
  color: var(--ink);
  cursor: pointer;
  font: inherit;
  padding: 0;
  text-decoration: underline;
  text-underline-offset: 5px;
}

.project-filters button:hover,
.project-filters button.active { color: var(--accent); }

.project-filters button:focus-visible { outline: 1px solid var(--accent); outline-offset: 5px; }

.project-table { width: 100%; }

.project-table-head,
.project-row {
  display: grid;
  grid-template-columns: 68px minmax(220px, 1.22fr) minmax(220px, 1.45fr) minmax(120px, .72fr) minmax(170px, 1fr);
  column-gap: 22px;
}

.project-table-head {
  border-bottom: 1px solid var(--ink);
  font-size: .72rem;
  font-weight: 600;
  padding: 0 10px 8px;
  text-transform: uppercase;
}

.project-row { border-bottom: 1px solid var(--line); padding: 14px 10px; }

.project-row[hidden] { display: none !important; }

.featured-row { min-height: 0; }

.project-row > * { min-width: 0; }

.project-year,
.project-role,
.project-stack,
.project-summary { margin: 0; }

.project-year { color: #332f2b; }

.project-identity h2,
.rst-content .project-identity h2 {
  color: var(--ink);
  font-family: var(--mono);
  font-size: .98rem;
  font-weight: 600;
  line-height: 1.35;
  margin: 0;
}

.project-summary { line-height: 1.55; }

.project-role { color: #302d29 !important; }

.project-stack { color: #4e4a45 !important; font-size: .82rem; overflow-wrap: anywhere; }

.compact-row { padding-bottom: 17px; padding-top: 17px; }

.project-identity h2 a { color: var(--accent); }

.resume-section { border-top: 1px solid var(--ink); margin-top: 42px; padding-top: 14px; }

.rst-content .resume-section > h2 {
  color: var(--accent);
  font-family: var(--mono);
  font-size: 1rem;
  font-weight: 500;
  margin: 0 0 12px;
  padding: 0;
}

.rst-content .resume-section > h2::after { display: none; }

.experience-list article { display: grid; grid-template-columns: 150px minmax(250px, .9fr) minmax(280px, 1.2fr); gap: 18px; padding: 5px 0; }

.experience-list p { color: var(--muted); margin: 0; }

.about-grid { display: grid; grid-template-columns: minmax(280px, 1fr) minmax(380px, 1.2fr); gap: 60px; }

.about-grid > p { line-height: 1.8; margin: 0; }

.about-grid dl { margin: 0; }

.about-grid dl > div { border-top: 1px solid var(--line-soft); display: grid; grid-template-columns: 125px 1fr; gap: 18px; padding: 8px 0; }

.about-grid dl > div:first-child { border-top: 0; padding-top: 0; }

.about-grid dt { color: var(--muted); }

.about-grid dd { margin: 0; }

.archive-footer { border-top: 1px dashed var(--line); color: var(--muted); display: flex; justify-content: space-between; gap: 20px; margin-top: 48px; padding-top: 18px; }

.project-detail { margin: 0 auto; max-width: 920px; padding: 58px 28px 70px; }

.project-detail .back-link { color: var(--accent); display: inline-block; margin-bottom: 52px; }

.project-detail header { border-bottom: 1px solid var(--ink); padding-bottom: 30px; }

.project-detail .detail-kicker { color: var(--accent); font-size: .78rem; margin: 0 0 12px; text-transform: uppercase; }

.rst-content .project-detail h1 { color: var(--ink); font-family: var(--mono); font-size: clamp(2rem, 5vw, 3.6rem); font-weight: 500; letter-spacing: -.04em; margin: 0 0 20px; }

.project-detail .detail-lede { font-size: 1.15rem; line-height: 1.7; margin: 0; max-width: 760px; }

.project-detail .detail-primary-link { color: var(--accent); display: inline-block; margin-top: 22px; text-decoration: underline; text-underline-offset: 5px; }

.project-detail section { border-bottom: 1px solid var(--line); padding: 30px 0; }

.rst-content .project-detail h2 { color: var(--accent); font-family: var(--mono); font-size: .9rem; font-weight: 500; margin: 0 0 15px; padding: 0; text-transform: uppercase; }

.rst-content .project-detail h2::after { display: none; }

.project-detail section > p { line-height: 1.85; margin: 0; max-width: 800px; }

.project-detail .detail-grid { display: grid; gap: 50px; grid-template-columns: repeat(2, minmax(0, 1fr)); }

.project-detail ul { margin: 0; padding-left: 19px; }

.project-detail li { margin-bottom: 8px; }

.project-detail footer { border: 0; color: var(--muted); display: block !important; margin-top: 28px; }

.project-detail footer a { color: var(--accent); }

@media (max-width: 1120px) {
  .archive-shell { grid-template-columns: 260px minmax(0, 1fr); }
  .archive-sidebar { padding: 36px 25px 30px; }
  .archive-main { padding: 36px 28px 24px; }
  .project-table-head { display: none; }
  .project-row { grid-template-columns: 70px minmax(190px, .9fr) minmax(240px, 1.3fr); }
  .project-role, .project-stack { font-size: .75rem; margin-top: 12px; }
  .project-role { grid-column: 2; }
  .project-stack { grid-column: 3; }
  .featured-row { min-height: 0; }
}

@media (max-width: 780px) {
  body, .wy-body-for-nav { font-size: 13px; }
  .archive-shell { display: block; }
  .archive-sidebar { border-bottom: 1px solid var(--line); border-right: 0; height: auto; min-height: 0; padding: 24px 20px 19px; position: static; }
  .sidebar-top { border: 0; padding: 0; }
  .sidebar-intro { border: 0; margin: 15px 0 0; max-width: 560px; padding: 0; }
  .section-nav { border: 0; flex-direction: row; flex-wrap: wrap; gap: 9px 22px; margin-top: 18px; padding: 0; }
  .section-nav a { padding-left: 0; }
  .section-nav a.active span { display: none; }
  .social-links { flex-direction: row; flex-wrap: wrap; margin-top: 18px; padding: 0; }
  .archive-main { padding: 27px 18px 22px; }
  .project-filters { gap: 10px 20px; }
  .project-row { grid-template-columns: 62px minmax(0, 1fr); row-gap: 11px; }
  .project-year { grid-row: 1 / span 3; }
  .project-identity, .project-summary, .project-role, .project-stack { grid-column: 2; }
  .project-summary { margin-top: 2px; }
  .project-role, .project-stack { margin-top: 0; }
  .featured-row { min-height: 0; padding-bottom: 24px; padding-top: 20px; }
  .experience-list article { grid-template-columns: 1fr; gap: 2px; padding: 9px 0; }
  .experience-list p { margin-top: 3px; }
  .about-grid { grid-template-columns: 1fr; gap: 26px; }
  .archive-footer { align-items: flex-start; flex-direction: column; }
  .project-detail { padding: 36px 20px 54px; }
  .project-detail .back-link { margin-bottom: 34px; }
  .project-detail .detail-grid { grid-template-columns: 1fr; gap: 28px; }
}

@media (max-width: 430px) {
  .project-row { grid-template-columns: 1fr; }
  .project-year { color: var(--muted); grid-row: auto; }
  .project-identity, .project-summary, .project-role, .project-stack { grid-column: 1; }
  .project-year::before { content: "Year "; color: var(--muted); }
  .about-grid dl > div { grid-template-columns: 1fr; gap: 3px; }
}

@media print {
  .archive-shell { display: block; }
  .archive-sidebar { border: 0; height: auto; min-height: 0; padding: 0 0 24px; position: static; }
  .section-nav, .social-links { display: none; }
  .archive-main { padding: 0; }
  .project-row, .resume-section { break-inside: avoid; }
}
