*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root{
  --nav-h:65px;
  --fs-xs:0.75rem;
  --fs-sm:0.875rem;
  --fs-base:1rem;
  --fs-md:1.125rem;
  --crimson:#9e1b32;
  --crimson-deep:#7d1427;
  --crimson-bright:#b8283f;
  --ink:#211d1a;
  --ink-soft:#4a453f;
  --muted:#6a6158;
  --line:#e7dfd4;
  --line-soft:#efe9df;
  --paper:#faf6ef;
  --paper-2:#f4eee3;
  --white:#fffdf9;
  --nav-bg:rgba(250,246,239,0.82);
  --on-crimson:#fffdf9;
  --sel-bg:#9e1b32;
  --sel-fg:#fffdf9;
  --shadow-photo:rgba(33,29,26,0.14);
  --shadow-nav:rgba(33,29,26,0.1);
  --btn-shadow:rgba(158,27,50,0.18);
  --btn-shadow-hover:rgba(158,27,50,0.26);
  --notable-line:rgba(158,27,50,0.25);
  --lb-text:#e7dfd4;
  --lb-white:#fffdf9;
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 8px)}
body{
  font-family:'Inter',-apple-system,sans-serif;
  color:var(--ink);
  background:var(--paper);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.serif{font-family:'Fraunces',Georgia,serif}
a{color:var(--crimson);text-decoration:none}
a:hover{text-decoration:underline}
::selection{background:var(--sel-bg);color:var(--sel-fg)}

/* subtle grain */
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:1;opacity:0.4;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.025'/%3E%3C/svg%3E");
}

/* NAV */
nav{position:sticky;top:0;z-index:50;background:var(--nav-bg);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
nav .inner{max-width:1040px;margin:0 auto;padding:16px 32px;display:flex;justify-content:space-between;align-items:center;gap:12px}
nav .brand{font-family:'Fraunces',serif;font-size:1.25rem;font-weight:600;color:var(--ink);letter-spacing:-0.02em;transition:color 0.2s;white-space:nowrap}
nav .brand:hover{color:var(--crimson);text-decoration:none}
nav .navlinks{display:flex;gap:26px;font-size:var(--fs-sm);font-weight:500;align-items:center}
nav .navlinks a{color:var(--ink-soft);position:relative}
nav .navlinks a::after{content:'';position:absolute;left:0;bottom:-3px;width:0;height:1.5px;background:var(--crimson);transition:width 0.25s}
nav .navlinks a:hover,nav .navlinks a.active{color:var(--crimson);text-decoration:none}
nav .navlinks a:hover::after,nav .navlinks a.active::after{width:100%}

main{max-width:1040px;margin:0 auto;padding:0 32px;position:relative;z-index:2}

/* HERO */
.hero{display:grid;grid-template-columns:1fr 240px;gap:40px;padding:48px 0 32px;align-items:center}
.hero-intro .eyebrow{font-size:var(--fs-xs);font-weight:600;letter-spacing:0.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px;display:flex;align-items:center;gap:10px}
.hero-intro .eyebrow::before{content:'';width:26px;height:1.5px;background:var(--crimson);display:inline-block}
.hero-intro h1{font-family:'Inter',sans-serif;font-size:3rem;line-height:1.15;font-weight:600;letter-spacing:-0.035em;color:var(--ink);margin-bottom:14px}
.hero-intro .location{font-size:var(--fs-sm);color:var(--muted);letter-spacing:0.02em;margin-bottom:20px;display:flex;align-items:flex-start;gap:9px;line-height:1.7}
.hero-intro .location .dot{width:5px;height:5px;border-radius:50%;background:var(--crimson);display:inline-block;box-shadow:0 0 0 3px rgba(158,27,50,0.12);margin-top:8px;flex-shrink:0}
.hero-links{display:flex;gap:12px;flex-wrap:wrap}
.hero-links a{font-size:var(--fs-sm);font-weight:500;padding:10px 22px;border-radius:3px;transition:all 0.22s;display:inline-flex;align-items:center;gap:7px}
.hero-links a.primary{background:var(--crimson);color:var(--on-crimson);box-shadow:0 2px 10px var(--btn-shadow)}
.hero-links a.primary:hover{background:var(--crimson-deep);text-decoration:none;box-shadow:0 6px 18px var(--btn-shadow-hover)}
.hero-links a.ghost{border:1px solid var(--line);color:var(--ink-soft);background:var(--white)}
.hero-links a.ghost:hover{border-color:var(--crimson);color:var(--crimson);text-decoration:none}

.hero-photo img{width:100%;height:auto;display:block;border-radius:3px;box-shadow:0 12px 32px var(--shadow-photo)}

/* SECTION */
section{padding:64px 0;border-top:1px solid var(--line)}
.sec-head{display:flex;align-items:center;gap:14px;margin-bottom:24px}
.sec-head h2{font-family:'Fraunces',serif;font-size:2rem;line-height:1.15;font-weight:600;color:var(--ink);letter-spacing:-0.02em;white-space:nowrap}

/* EDUCATION */
.edu{margin-bottom:24px}
.edu:last-child{margin-bottom:0}
.edu-top{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px;margin-bottom:4px}
.edu-top h3{font-family:'Fraunces',serif;font-size:1.375rem;line-height:1.25;font-weight:600;color:var(--ink)}
.edu-top .dates{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:0.02em}
.edu .degree{font-size:var(--fs-base);color:var(--ink-soft);font-weight:500;margin-bottom:12px}
.edu .involve{font-size:var(--fs-base);color:var(--ink-soft);line-height:1.6}
.edu .involve .lbl{font-weight:600;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:0.1em;display:block;margin-bottom:2px;color:var(--muted)}

.notable{margin-top:16px}
.notable .nlabel{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:0.1em;color:var(--muted);margin-bottom:14px}
.nitem{margin-bottom:14px}
.nitem:last-child{margin-bottom:0}
.nitem h5{font-family:'Fraunces',serif;font-size:var(--fs-md);line-height:1.25;font-weight:600;color:var(--ink)}
.nitem h5 a{color:var(--crimson);border-bottom:1px solid transparent;transition:border-color 0.2s}
.nitem h5 a:hover{text-decoration:none;border-bottom-color:var(--crimson)}
.nitem p{font-size:var(--fs-base);color:var(--ink-soft);margin-top:3px;line-height:1.6;max-width:68ch}
.nitem .award{font-size:var(--fs-base);color:var(--crimson-deep);font-weight:600;margin-top:6px}

.nitem .priv{font-size:var(--fs-base);color:var(--muted);font-style:italic;margin-top:4px}
.ngrid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:6px}
.ngrid .type{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:0.1em;color:var(--muted);margin-bottom:5px}
.ngrid h5{font-size:var(--fs-md);line-height:1.25}
.ngrid p{font-size:var(--fs-base);margin-top:5px}

/* EXPERIENCE */
.exp{border-bottom:1px solid var(--line)}
.exp:first-of-type{border-top:1px solid var(--line)}
.exp-bar{display:flex;align-items:center;gap:16px;padding:13px 4px;cursor:pointer;user-select:none;transition:padding-left 0.25s,background 0.25s;width:100%;text-align:left;background:none;border:0;font:inherit;color:inherit}
.exp-bar:hover{padding-left:12px;background:linear-gradient(to right,var(--paper-2),transparent)}
.exp-bar:hover .exp-title{color:var(--crimson)}
.exp-bar:focus-visible{outline:2px solid var(--crimson);outline-offset:2px}
.exp-main{flex:1;min-width:0}
.exp-title{font-family:'Fraunces',serif;font-size:var(--fs-md);line-height:1.25;font-weight:600;color:var(--ink);transition:color 0.2s}
.exp-role{font-size:var(--fs-base);color:var(--ink-soft);font-weight:500;margin-top:1px}
.exp-meta{text-align:right;flex-shrink:0;font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums}
.exp-meta .loc{display:block;color:var(--ink-soft);font-weight:500}
.exp-plus{width:26px;height:26px;flex-shrink:0;display:flex;align-items:center;justify-content:center;position:relative;border:1px solid var(--line);border-radius:50%;transition:border-color 0.25s,background 0.25s;aria-hidden:true}
.exp-bar:hover .exp-plus{border-color:var(--crimson)}
.exp-plus::before,.exp-plus::after{content:'';position:absolute;background:var(--crimson);transition:transform 0.3s,opacity 0.3s}
.exp-plus::before{width:11px;height:1.5px}
.exp-plus::after{width:1.5px;height:11px}
.exp-plus.open{background:var(--crimson);border-color:var(--crimson)}
.exp-plus.open::before,.exp-plus.open::after{background:var(--on-crimson)}
.exp-plus.open::after{transform:rotate(90deg);opacity:0}
.exp-body{max-height:0;overflow:hidden;transition:max-height 0.4s ease}
.exp-body.open{overflow:hidden}
.exp-body ul{padding:2px 0 18px 4px;list-style:none}
.exp-body li{font-size:var(--fs-base);color:var(--ink-soft);line-height:1.6;max-width:68ch;padding:5px 0 5px 20px;position:relative}
.exp-body li::before{content:'';position:absolute;left:2px;top:13px;width:6px;height:6px;border:1.5px solid var(--crimson);border-radius:50%}

/* PHOTO GALLERY */
.photo-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-top:14px}
.photo-btn{background:none;border:none;padding:0;cursor:pointer;width:100%;aspect-ratio:4/3}
.photo-btn img{width:100%;aspect-ratio:4/3;object-fit:cover;object-position:center 30%;border-radius:3px;transition:opacity 0.2s}
.photo-btn:hover img{opacity:0.9}
.photo-btn:focus-visible{outline:2px solid var(--crimson);outline-offset:2px;border-radius:3px}
.photo-caption{font-size:var(--fs-sm);color:var(--muted);margin-top:4px;line-height:1.4}

.inline-gallery .photo-gallery{max-width:320px;margin-top:10px}

/* LIGHTBOX */
.lightbox-overlay{background:rgba(33,29,26,0.5)}
.lightbox-modal{position:relative;max-width:90vw;max-height:85vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px;gap:12px;background:var(--white);border-radius:5px;box-shadow:0 24px 70px rgba(0,0,0,0.3)}
.lightbox-img{max-width:100%;max-height:70vh;object-fit:contain;border-radius:3px}
.lightbox-caption{font-size:var(--fs-base);color:var(--ink-soft);text-align:center;line-height:1.5;max-width:100%}
.lightbox-modal .mclose{position:absolute;top:12px;right:12px;background:var(--white);color:var(--ink);border:none;font-size:1.4rem;cursor:pointer;padding:0 2px;transition:color 0.2s}
.lightbox-modal .mclose:hover{color:var(--crimson)}
.lightbox-modal .mclose:focus-visible{outline:2px solid var(--crimson);outline-offset:2px}

/* SKILLS & INTERESTS */
.two-col{display:grid;grid-template-columns:auto auto;gap:80px;justify-content:start}
.two-col h3{font-family:'Fraunces',serif;font-size:var(--fs-md);line-height:1.25;font-weight:600;color:var(--ink);margin-bottom:8px;display:flex;align-items:center;gap:9px}
.two-col ul{list-style:none}
.two-col li{font-size:var(--fs-sm);color:var(--ink-soft);line-height:1.6}

/* PROJECTS & CHIPS */
.two-col ul{display:flex;flex-wrap:wrap;gap:8px;list-style:none}
.two-col li{display:inline-flex;align-items:center;font-size:var(--fs-sm);line-height:1.4;padding:5px 11px;border:0;background:var(--paper-2);border-radius:999px;color:var(--ink-soft);cursor:default}
.projects{margin-top:32px}
.projects h3{font-family:'Fraunces',serif;font-size:var(--fs-md);line-height:1.25;font-weight:600;color:var(--ink);margin-bottom:12px;display:flex;align-items:center;gap:9px}
.project-list{display:grid;grid-template-columns:1fr;gap:16px}
@media(min-width:720px){.project-list{grid-template-columns:1fr 1fr}}
.project{border:1px solid var(--line);background:var(--white);border-radius:4px;padding:18px 20px;transition:border-color .2s}
.project:hover{border-color:color-mix(in srgb,var(--crimson) 40%,transparent)}
.project h4{font-family:'Fraunces',serif;font-size:var(--fs-md);font-weight:600;color:var(--ink);line-height:1.25;margin-bottom:4px}
.project-meta{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums;margin-bottom:8px}
.project-desc{font-size:var(--fs-base);color:var(--ink-soft);line-height:1.6;max-width:68ch}
.project ul{list-style:none}
.project li{font-size:var(--fs-base);color:var(--ink-soft);line-height:1.6;padding:5px 0 5px 20px;position:relative}
.project li::before{content:'';position:absolute;left:2px;top:13px;width:6px;height:6px;border:1.5px solid var(--crimson);border-radius:50%}

#skills-photos{margin-top:24px;padding-top:24px;border-top:1px solid var(--line)}

/* FOOTER */
footer{border-top:1px solid var(--line);margin-top:28px;padding:26px 32px;position:relative;z-index:2}
footer .finner{max-width:1040px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;font-size:var(--fs-sm);color:var(--muted)}
footer a{color:var(--ink-soft);transition:color 0.2s}
footer a:hover{color:var(--crimson)}
footer a:focus-visible{outline:2px solid var(--crimson);outline-offset:2px}

/* MODALS */
.overlay{position:fixed;inset:0;z-index:70;background:rgba(33,29,26,0.5);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;visibility:hidden;transition:opacity 0.25s,visibility 0s linear 0.25s}
.overlay.open{opacity:1;visibility:visible;transition:opacity 0.25s,visibility 0s}
.modal{background:var(--white);border-radius:5px;max-width:660px;width:100%;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,0.3);transform:translateY(14px) scale(0.98);transition:transform 0.28s cubic-bezier(.2,.7,.2,1)}
.overlay.open .modal{transform:none}
.modal-head{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
.modal-title{font-family:'Fraunces',serif;font-weight:600;font-size:var(--fs-md);line-height:1.25;color:var(--ink);margin:0}
.mclose{background:none;border:none;font-size:1.4rem;cursor:pointer;color:var(--muted);line-height:1;transition:color 0.2s;padding:0 2px}
.mclose:hover{color:var(--crimson)}
.mclose:focus-visible{outline:2px solid var(--crimson);outline-offset:2px}
.modal-body{padding:22px;overflow-y:auto;font-size:var(--fs-base);color:var(--ink-soft);line-height:1.6}
.modal-body p{margin-bottom:5px;max-width:68ch}

/* MODAL BUTTON STYLE */
.modal-trigger{background:none;border:none;color:var(--crimson);cursor:pointer;text-decoration:none;padding:0;font-family:inherit;font-size:inherit;border-bottom:1px solid transparent;transition:border-color 0.2s}
.modal-trigger:hover{border-bottom-color:var(--crimson);text-decoration:none}
.modal-trigger:focus-visible{outline:2px solid var(--crimson);outline-offset:2px}

@media(max-width:720px){
  section{padding:40px 0}
  main{padding:0 22px}
  .hero{grid-template-columns:1fr;gap:24px;padding:40px 0 32px}
  .hero-photo{width:190px;order:-1}
  .hero-intro h1{font-size:2.5rem}
  .ngrid{grid-template-columns:1fr;gap:16px}
  .two-col{grid-template-columns:1fr;gap:22px}
  .exp-bar{flex-wrap:wrap}
  .exp-meta{text-align:left;width:100%;order:3;margin-top:2px}
  nav .brand{font-size:1.1rem}
  nav .navlinks{gap:14px;font-size:var(--fs-sm)}
  nav .navlinks .hide-sm{display:none}
  .sec-head h2{font-size:1.7rem}
}
/* Batch 3 CSS Updates */

/* Hero bio paragraph */
.bio {
  font-size: var(--fs-base);
  color: var(--ink-soft);
  line-height: 1.6;
  max-width: 68ch;
  margin-bottom: 22px;
}

/* PDF pill badge */
.pill {
  font-size: var(--fs-xs);
  font-weight: 600;
  line-height: 1.4;
  border: 1px solid var(--crimson);
  padding: 2px 6px;
  border-radius: 3px;
  margin-left: 6px;
  vertical-align: middle;
  color: var(--crimson);
}

/* Lightbox redesign */
.lightbox-overlay {
  background: rgba(20, 17, 15, 0.92);
}

.lightbox-modal {
  max-width: 92vw;
  max-height: 82vh;
  background: none;
  padding: 0;
  gap: 0;
  box-shadow: none;
}

.lightbox-img {
  max-width: 92vw;
  max-height: 82vh;
  object-fit: contain;
}

.lightbox-caption {
  color: var(--line);
  margin-top: 16px;
  font-size: var(--fs-base);
}

.lightbox-close {
  width: 44px;
  height: 44px;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.8rem;
  color: var(--line);
  background: none;
  border: none;
}

.lightbox-close:hover {
  color: var(--white);
}

/* Lightbox nav */
.lightbox-nav {
  position: absolute;
  display: flex;
  gap: 0;
  align-items: center;
  justify-content: space-between;
  width: 92vw;
  height: 82vh;
  pointer-events: none;
}

.lightbox-nav button {
  width: 44px;
  height: 44px;
  background: rgba(20, 17, 15, 0.55);
  border: none;
  border-radius: 50%;
  color: var(--white);
  font-size: 1.4rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: auto;
  transition: color 0.2s;
}

.lightbox-nav button:hover {
  color: var(--white);
}


.lightbox-counter {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  color: var(--line);
  font-size: var(--fs-sm);
  background: rgba(20, 17, 15, 0.6);
  padding: 4px 8px;
  border-radius: 3px;
}

/* Gallery updates */
.photo-gallery {
  grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr));
}

.photo-btn {
  aspect-ratio: 3/2;
}

.photo-btn img {
  aspect-ratio: 3/2;
  transition: opacity 0.2s, transform 0.2s;
}

.photo-btn {
  position: relative;
  overflow: hidden;
}

.photo-btn:hover img {
  opacity: 0.9;
  transform: scale(1.03);
}

.photo-btn::after {
  content: '⤢';
  position: absolute;
  bottom: 8px;
  right: 8px;
  width: 32px;
  height: 32px;
  background: rgba(33, 29, 26, 0.7);
  border-radius: 50%;
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  opacity: 0;
  transition: opacity 0.2s;
}

.photo-btn:hover::after {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .photo-btn img {
    transition: opacity 0.2s;
  }
  .photo-btn:hover img {
    transform: none;
  }
  .photo-btn::after {
    opacity: 1;
  }
}

.inline-gallery .photo-gallery {
  max-width: 440px;
}

/* Nav scroll shadow */
nav.scrolled {
  box-shadow: 0 2px 8px var(--shadow-nav);
}

/* Separators in the location and involvement lists */
.sep{margin:0 7px;color:var(--muted)}
.city{white-space:nowrap}

/* One-line adjustments for hero */
@media (min-width: 1100px) {
  .hero-intro .location {
    white-space: nowrap;
  }

  .edu .involve-items {
    white-space: nowrap;
    font-size: var(--fs-sm);
    display: inline;
  }

  /* Tighter separators so the longest line (Brown) fits on one line */
  .edu .involve-items .sep { margin: 0 4px; }
}

/* Link styling */
a[href^="http"]:not(.hero-links a):not(nav a),
a[href^="mailto:"]:not(nav a),
a[href^="tel:"],
main a[href$=".pdf"]:not(.hero-links a) {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  color: var(--crimson);
}

a[href^="http"]:not(.hero-links a):not(nav a):hover,
a[href^="mailto:"]:not(nav a):hover,
a[href^="tel:"]:hover,
main a[href$=".pdf"]:not(.hero-links a):hover {
  text-decoration-thickness: 2px;
}

/* External link indicator (↗) */
a[target="_blank"]:not(.hero-links a):not(nav a)::after {
  content: " ↗";
  font-size: 0.85em;
}

.hero-links a.primary .pill {
  color: var(--on-crimson);
  border-color: var(--on-crimson);
}

/* Screen reader only text */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border-width: 0;
}

/* Blame trigger button link-like styling */
#blame-trigger {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  color: var(--crimson);
  font-size: inherit;
  padding: 0;
  cursor: pointer;
  background: none;
  border: none;
  font-family: inherit;
}

#blame-trigger:hover {
  text-decoration-thickness: 2px;
}

#blame-trigger::after {
  content: ' — read summary';
  color: var(--muted);
  font-size: 0.9em;
}



/* UI PASS */

/* Dark mode */
@media (prefers-color-scheme: dark) {
  :root {
    --crimson: #e0566d;
    --crimson-deep: #f07b8f;
    --crimson-bright: #ff8fa1;
    --ink: #e6dfd6;
    --ink-soft: #cfc6bb;
    --muted: #9b9187;
    --line: #4a423b;
    --line-soft: #2c2622;
    --paper: #171412;
    --paper-2: #1f1b18;
    --white: #221e1b;
    --nav-bg: rgba(23, 20, 18, 0.82);
    --on-crimson: #171412;
    --sel-bg: #e0566d;
    --sel-fg: #171412;
    --shadow-photo: rgba(0, 0, 0, 0.5);
    --shadow-nav: rgba(0, 0, 0, 0.45);
    --btn-shadow: rgba(0, 0, 0, 0.35);
    --btn-shadow-hover: rgba(0, 0, 0, 0.5);
    --notable-line: rgba(224, 86, 109, 0.4);
  }
}

/* The lightbox is dark in both modes, so its text uses fixed light colors */
.lightbox-caption,
.lightbox-counter { color: var(--lb-text); }
.lightbox-close { color: var(--lb-text); }
.lightbox-close:hover { color: var(--lb-white); }
.lightbox-nav button { color: var(--lb-white); }
.photo-btn::after { color: var(--lb-white); }

/* Skip link */
.skip-link {
  position: absolute;
  top: -100px;
  left: 16px;
  z-index: 100;
  padding: 10px 16px;
  border-radius: 3px;
  background: var(--crimson);
  color: var(--on-crimson);
  font-size: var(--fs-sm);
  font-weight: 600;
}
.skip-link:hover { text-decoration: none; }
.skip-link:focus { top: 12px; outline: 2px solid var(--ink); outline-offset: 2px; }
main:focus { outline: none; }

/* Contact */
.contact-lead {
  font-size: var(--fs-base);
  color: var(--ink-soft);
  line-height: 1.6;
  max-width: 68ch;
  margin-bottom: 20px;
}
#contact { padding-bottom: 10px; }

/* Buttons */
.hero-links a.primary,
.hero-links a.ghost { text-decoration: none; }
.hero-links a:focus-visible { outline: 2px solid var(--crimson); outline-offset: 3px; }
.hero-links a.primary:active,
.hero-links a.ghost:active { transform: scale(0.98); }

/* Education cards */
.edu,
.edu:last-child {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 24px;
  margin-bottom: 16px;
}

/* Back to top */
.to-top {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 45;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: var(--crimson);
  color: var(--on-crimson);
  font: inherit;
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 14px var(--shadow-photo);
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity 0.25s, transform 0.25s, visibility 0.25s, background 0.2s;
}
.to-top.show { opacity: 1; visibility: visible; transform: none; }
.to-top:hover { background: var(--crimson-deep); }
.to-top:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

/* Experience timeline rail */
@media (min-width: 720px) {
  #exp-list { padding-left: 22px; border-left: 1px solid var(--line); }
  .exp { position: relative; }
  .exp::before {
    content: '';
    position: absolute;
    left: -27px;
    top: 24px;
    width: 9px;
    height: 9px;
    box-sizing: border-box;
    border: 2px solid var(--crimson);
    border-radius: 50%;
    background: var(--paper);
    transition: background 0.25s;
  }
  .exp:has(> .exp-bar[aria-expanded="true"])::before { background: var(--crimson); }
}

/* EXPERIENCE CONTROLS */
.exp-toolbar { display: flex; justify-content: flex-end; margin: -8px 0 4px; }
.exp-toggle-all {
  display: inline-flex; align-items: center; gap: 6px;
  min-height: 44px; padding: 0 4px;
  font: inherit; font-size: var(--fs-sm); font-weight: 500;
  color: var(--crimson); background: none; border: 0; cursor: pointer;
}
.exp-toggle-all:hover { text-decoration: underline; }
.exp-toggle-all:focus-visible { outline: 2px solid var(--crimson); outline-offset: 2px; border-radius: 3px; }
.exp-toggle-all svg { flex-shrink: 0; transition: transform 0.25s; }
.exp-toggle-all.is-open svg { transform: rotate(180deg); }
.exp-copy-row { padding: 0 0 12px 4px; }
.exp-copy {
  display: inline-flex; align-items: center; gap: 6px;
  min-height: 44px; padding: 0 4px;
  font: inherit; font-size: var(--fs-sm); color: var(--muted);
  background: none; border: 0; cursor: pointer;
}
.exp-copy:hover { color: var(--crimson); }
.exp-copy:focus-visible { outline: 2px solid var(--crimson); outline-offset: 2px; border-radius: 3px; }
.exp-copy svg { flex-shrink: 0; }
@media (max-width: 720px) {
  .exp-bar { min-height: 48px; }
}
@media (prefers-reduced-motion: reduce) {
  .exp-toggle-all svg { transition: none; }
}

@media (max-width: 720px) {
  .edu,
  .edu:last-child { padding: 20px; }
  nav .navlinks { gap: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  .to-top { transform: none; }
}

/* Small-screen fit: long section headings wrap, and the nav tightens on narrow phones */
@media(max-width:720px){
  .sec-head h2{white-space:normal}
}

/* Scroll offset (html scroll-padding-top) keeps anchors and focus clear of the sticky nav */
@media(max-width:719px){
  :root{--nav-h:57px}
  nav .inner{padding:6px 16px}
  nav .navlinks{gap:0}
  nav .navlinks a{display:inline-flex;align-items:center;min-height:44px;padding:0 7px}
  nav .navlinks a::after{left:7px;right:7px;bottom:9px;width:auto;transform:scaleX(0);transform-origin:left;transition:transform 0.25s}
  nav .navlinks a:hover::after,nav .navlinks a.active::after{width:auto;transform:scaleX(1)}
  .hero-photo{width:132px}
  #contact .hero-links{flex-direction:column;gap:10px}
  #contact .hero-links a{width:100%;justify-content:center}
}
@media(max-width:479px){
  .hero-links{flex-direction:column;gap:10px}
  .hero-links a{width:100%;justify-content:center}
}
/* Narrow phones: tighten the brand and links so the nav fits without scrolling */
@media(max-width:420px){
  nav .inner{gap:6px;padding:6px 12px}
  nav .brand{font-size:1rem}
  nav .navlinks{font-size:var(--fs-xs)}
  nav .navlinks a{padding:0 5px}
  nav .navlinks a::after{left:5px;right:5px}
}
@media(max-width:350px){
  nav .inner{padding:6px 10px}
  nav .brand{font-size:0.875rem}
  nav .navlinks{font-size:var(--fs-xs)}
  nav .navlinks a{padding:0 3px}
  nav .navlinks a::after{left:3px;right:3px}
}
/* Phones: keep the hero eyebrow on one line (each half never splits mid-phrase) */
.eyebrow .ey-part{white-space:nowrap}
@media(max-width:480px){
  .hero-intro .eyebrow{font-size:var(--fs-xs);letter-spacing:0.08em;flex-wrap:wrap;gap:0 6px}
  .hero-intro .eyebrow::before{display:none}
}
/* Safety net: the nav links can scroll sideways rather than widen the page */
@media(max-width:360px){
  nav .inner{padding-left:8px;padding-right:8px}
  nav .navlinks{min-width:0;overflow-x:auto;scrollbar-width:none}
  nav .navlinks::-webkit-scrollbar{display:none}
}

/* Very small phones: the four section links need the whole bar, and the hero already opens with the name */
@media(max-width:340px){
  nav .brand{display:none}
  nav .inner{justify-content:center}
}
