  :root{
    --paper:#f6f4ee;
    --paper-2:#efece3;
    --ink:#16170f;
    --ink-soft:#46473b;
    --ink-faint:#71725f;
    --accent:#65a30d;
    --accent-deep:#4d7c0f;
    --hair:#d8d4c6;
    --hair-strong:#c3bfae;
    --chip:#ffffff;
    --shadow:0 1px 2px rgba(22,23,15,.04), 0 18px 40px -28px rgba(22,23,15,.45);
    --serif:"Fraunces", Georgia, "Times New Roman", serif;
    --sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --maxw:1180px;
    --gutter:clamp(20px, 5vw, 80px);
  }

  /* DARK — warm dark "paper", light ink, emerald accent kept */
  [data-theme="dark"]{
    --paper:#15160f;
    --paper-2:#1d1e15;
    --ink:#f1efe4;
    --ink-soft:#c4c2b2;
    --ink-faint:#8e8d7a;
    --accent:#84cc16;
    --accent-deep:#a3e635;
    --hair:#2c2d21;
    --hair-strong:#3c3d2d;
    --chip:#f4f2ea;
    --shadow:0 1px 2px rgba(0,0,0,.35), 0 18px 44px -28px rgba(0,0,0,.75);
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;color-scheme:light;}
  [data-theme="dark"]{color-scheme:dark;}
  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:var(--sans);
    font-size:clamp(15px,1.05vw,17px);
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
    overflow-x:hidden;
  }
  body::before{
    content:"";
    position:fixed; inset:0;
    pointer-events:none;
    z-index:0;
    background:
      radial-gradient(1200px 600px at 85% -10%, rgba(101,163,13,.07), transparent 60%),
      radial-gradient(900px 500px at -10% 20%, rgba(101,163,13,.04), transparent 55%);
  }
  a{color:inherit;}
  img{max-width:100%;display:block;}
  ::selection{background:rgba(101,163,13,.22);}

  .skip{
    position:absolute; left:-9999px; top:0; z-index:200;
    background:var(--ink); color:var(--paper);
    padding:.7em 1.1em; border-radius:0 0 10px 0; font-weight:600;
  }
  .skip:focus{left:0;}

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

  .progress{
    position:fixed; top:0; left:0; height:3px; width:100%;
    z-index:120; background:transparent;
  }
  .progress__bar{
    height:100%; width:0;
    background:linear-gradient(90deg, var(--accent), var(--accent-deep));
    transition:width .12s linear;
  }

  .wrap{
    position:relative; z-index:1;
    max-width:var(--maxw);
    margin:0 auto;
    padding:0 var(--gutter);
  }

  .eyebrow{
    font-family:var(--sans);
    font-size:.72rem;
    letter-spacing:.32em;
    text-transform:uppercase;
    font-weight:600;
    color:var(--accent-deep);
    display:inline-flex; align-items:center; gap:.7em;
  }
  .eyebrow::before{
    content:""; width:34px; height:1px; background:var(--accent-deep); display:inline-block;
  }

  /* HERO */
  .hero{
    position:relative; z-index:1;
    padding:clamp(56px,9vh,120px) 0 clamp(40px,6vh,72px);
  }
  .hero__top{
    display:flex; justify-content:space-between; align-items:center;
    gap:18px; flex-wrap:wrap; margin-bottom:clamp(36px,7vh,90px);
  }
  .mark{
    font-family:var(--serif);
    font-weight:600; font-size:1.15rem; letter-spacing:.01em;
    display:inline-flex; align-items:center; gap:.55em;
  }
  .mark__badge{
    width:34px;height:34px;border-radius:9px;
    background:var(--accent); color:#fff;
    display:grid;place-items:center;
    font-weight:700; font-size:1.05rem; font-family:var(--sans);
    box-shadow:var(--shadow);
  }
  .hero__meta{
    font-size:.74rem; letter-spacing:.22em; text-transform:uppercase;
    color:var(--ink-faint); font-weight:600;
  }

  .hero__title{
    font-family:var(--serif);
    font-weight:340;
    font-size:clamp(2.9rem, 9vw, 7rem);
    line-height:.96;
    letter-spacing:-.02em;
    margin:.25em 0 .35em;
    max-width:14ch;
  }
  .hero__title em{
    font-style:italic; color:var(--accent-deep);
    font-weight:380;
  }
  .hero__headline{
    font-family:var(--serif);
    font-size:clamp(1.25rem,2.6vw,1.85rem);
    font-weight:380;
    line-height:1.3;
    color:var(--ink);
    max-width:24ch;
    margin:0 0 1.1em;
  }
  .hero__tag{
    font-size:.95rem;
    color:var(--ink-soft);
    max-width:62ch;
    line-height:1.75;
    margin:0 0 1.6em;
  }
  .hero__tag b{color:var(--ink);font-weight:600;}

  .links{
    display:flex; flex-wrap:wrap; gap:10px 12px; list-style:none; padding:0; margin:0;
  }
  .links a{
    text-decoration:none;
    font-size:.84rem; font-weight:500;
    color:var(--ink);
    padding:.55em 1.05em;
    border:1px solid var(--hair-strong);
    border-radius:100px;
    background:rgba(255,255,255,.5);
    transition:transform .25s ease, border-color .25s ease, background .25s ease, color .25s ease;
    display:inline-flex; align-items:center; gap:.5em;
  }
  .links a:hover{
    transform:translateY(-2px);
    border-color:var(--accent);
    color:var(--accent-deep);
    background:#fff;
  }
  .links a.is-primary{
    background:var(--ink); color:var(--paper); border-color:var(--ink);
  }
  .links a.is-primary:hover{
    background:var(--accent-deep); border-color:var(--accent-deep); color:#fff;
  }
  /* Dark theme: --ink flips light, so make the primary CTA a solid accent button with dark text */
  [data-theme="dark"] .links a.is-primary{
    background:var(--accent); color:#0e1006; border-color:var(--accent);
  }
  [data-theme="dark"] .links a.is-primary:hover{
    background:var(--accent-deep); color:#0e1006; border-color:var(--accent-deep);
  }
  .dot{width:5px;height:5px;border-radius:50%;background:var(--accent);}

  /* STAT STRIP */
  .stats{
    border-top:1px solid var(--hair);
    border-bottom:1px solid var(--hair);
    margin-top:clamp(40px,7vh,80px);
  }
  .stats__grid{
    display:grid;
    grid-template-columns:repeat(5,1fr);
  }
  .stat{
    padding:clamp(22px,3vw,38px) clamp(14px,1.6vw,26px);
    border-left:1px solid var(--hair);
  }
  .stat:first-child{border-left:0;}
  .stat__num{
    font-family:var(--serif);
    font-size:clamp(1.9rem,3.4vw,2.9rem);
    font-weight:420;
    line-height:1;
    letter-spacing:-.02em;
    color:var(--ink);
  }
  .stat__num span{color:var(--accent-deep);}
  .stat__lab{
    margin-top:.6em;
    font-size:.74rem; letter-spacing:.08em; text-transform:uppercase;
    color:var(--ink-faint); font-weight:600; line-height:1.4;
  }

  /* SECTION HEADERS */
  section{position:relative;z-index:1;}
  .sec-head{
    padding:clamp(64px,11vh,130px) 0 clamp(28px,4vh,48px);
  }
  .sec-head h2{
    font-family:var(--serif);
    font-weight:330;
    font-size:clamp(2.1rem,5.5vw,4rem);
    line-height:1.02;
    letter-spacing:-.02em;
    margin:.35em 0 0;
  }
  .sec-head h2 em{font-style:italic;color:var(--accent-deep);}
  .sec-head p{
    margin:1em 0 0; max-width:56ch; color:var(--ink-soft); font-size:1rem;
  }

  /* ABOUT */
  .about{
    display:grid;
    grid-template-columns:1fr 1.3fr;
    gap:clamp(28px,5vw,80px);
    align-items:start;
    padding-bottom:clamp(20px,4vh,40px);
  }
  .about__lead{
    font-family:var(--serif);
    font-size:clamp(1.45rem,2.6vw,2rem);
    line-height:1.32;
    font-weight:360;
    letter-spacing:-.01em;
    margin:0;
  }
  .about__lead b{color:var(--accent-deep);font-weight:560;font-style:italic;}
  .about__body p{margin:0 0 1.1em;color:var(--ink-soft);}
  .about__body p:last-child{margin-bottom:0;}

  /* TIMELINE */
  .timeline{position:relative;}
  .timeline__inner{
    position:relative;
    margin-left:clamp(34px,7vw,90px);
    padding-bottom:20px;
  }
  .timeline__inner::before{
    content:"";
    position:absolute;
    left:0; top:6px; bottom:0;
    width:1px;
    background:linear-gradient(to bottom, var(--hair-strong), var(--hair) 80%, transparent);
  }

  .entry{
    position:relative;
    padding:clamp(24px,3.5vw,40px) 0 clamp(28px,4vw,48px) clamp(34px,6vw,72px);
    border-bottom:1px solid var(--hair);
  }
  .entry:last-child{border-bottom:0;}

  .entry::before{
    content:"";
    position:absolute;
    left:-4.5px; top:clamp(30px,4vw,48px);
    width:10px;height:10px;border-radius:50%;
    background:var(--paper);
    border:2px solid var(--accent);
    box-shadow:0 0 0 5px var(--paper);
    transition:background .3s ease, transform .3s ease;
  }
  .entry:hover::before, .entry.in::before{
    background:var(--accent);
    transform:scale(1.15);
  }

  .entry__head{
    display:flex; align-items:flex-start; gap:clamp(16px,2.5vw,28px);
    flex-wrap:wrap;
  }
  .logo-chip{
    flex:0 0 auto;
    width:clamp(58px,8vw,74px);
    height:clamp(58px,8vw,74px);
    border-radius:50%;
    background:var(--chip);
    border:1px solid var(--hair);
    box-shadow:var(--shadow);
    display:grid; place-items:center;
    padding:13px;
    overflow:hidden;
  }
  .logo-chip img{
    width:100%; height:100%;
    object-fit:contain;
  }
  .entry__intro{flex:1 1 240px;min-width:0;}
  .entry__when{
    font-size:.72rem; letter-spacing:.16em; text-transform:uppercase;
    font-weight:600; color:var(--accent-deep);
    margin-bottom:.45em;
  }
  .entry__role{
    font-family:var(--serif);
    font-size:clamp(1.35rem,2.6vw,1.95rem);
    font-weight:400;
    line-height:1.12;
    letter-spacing:-.01em;
    margin:0;
  }
  .entry__co{
    margin:.3em 0 0;
    font-size:.98rem;
    color:var(--ink-soft);
    font-weight:500;
  }
  .entry__co b{color:var(--ink);font-weight:600;}

  .entry__points{
    list-style:none; margin:clamp(16px,2.2vw,22px) 0 0; padding:0;
    display:grid; gap:.7em;
    max-width:74ch;
  }
  .entry__points li{
    position:relative;
    padding-left:1.6em;
    color:var(--ink-soft);
    font-size:.95rem;
  }
  .entry__points li::before{
    content:"";
    position:absolute; left:0; top:.62em;
    width:7px;height:1px;background:var(--accent-deep);
  }

  .entry.is-edu::before{border-color:var(--accent-deep);}
  .tag-edu{
    display:inline-block;
    font-size:.64rem; letter-spacing:.2em; text-transform:uppercase;
    font-weight:700; color:var(--accent-deep);
    border:1px solid var(--accent);
    border-radius:100px;
    padding:.25em .8em;
    margin-top:.7em;
  }

  /* SKILLS */
  .skills-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:clamp(20px,3vw,40px) clamp(28px,5vw,72px);
    padding-top:8px;
  }
  .skill-block h3{
    font-family:var(--serif);
    font-weight:400;
    font-size:1.2rem;
    margin:0 0 .8em;
    padding-bottom:.6em;
    border-bottom:1px solid var(--hair);
    display:flex; justify-content:space-between; align-items:baseline;
  }
  .skill-block h3 span{
    font-family:var(--sans);
    font-size:.68rem; letter-spacing:.18em; color:var(--ink-faint);
    text-transform:uppercase; font-weight:600;
  }
  .pills{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0;}
  .pills li{
    font-size:.82rem; font-weight:500;
    padding:.42em .9em;
    border:1px solid var(--hair-strong);
    border-radius:8px;
    background:rgba(255,255,255,.55);
    color:var(--ink-soft);
    transition:border-color .25s ease, color .25s ease, transform .25s ease;
  }
  .pills li:hover{border-color:var(--accent);color:var(--accent-deep);transform:translateY(-2px);}

  /* CERTIFICATIONS */
  .cert{
    margin-top:clamp(40px,6vh,72px);
    background:var(--ink);
    color:#f4f2ea;
    border-radius:18px;
    padding:clamp(30px,5vw,60px);
    display:grid;
    grid-template-columns:1.1fr 1fr;
    gap:clamp(24px,4vw,56px);
    align-items:center;
    box-shadow:0 30px 60px -36px rgba(22,23,15,.6);
  }
  .cert h2{
    font-family:var(--serif); font-weight:340;
    font-size:clamp(1.8rem,4vw,2.8rem); line-height:1.05;
    margin:.2em 0 0; letter-spacing:-.01em;
  }
  .cert h2 em{font-style:italic;color:#a3e635;}
  .cert .eyebrow{color:#a3e635;}
  .cert .eyebrow::before{background:#a3e635;}
  .cert p{color:rgba(246,244,238,.72);max-width:42ch;margin:1em 0 0;}
  .cert__links{display:flex;flex-direction:column;gap:12px;}
  .cert__links a{
    text-decoration:none;
    display:flex; align-items:center; justify-content:space-between;
    gap:18px;
    padding:1em 1.3em;
    border:1px solid rgba(246,244,238,.16);
    border-radius:12px;
    font-weight:500; font-size:.95rem;
    transition:border-color .25s ease, background .25s ease, transform .25s ease;
  }
  .cert__links a:hover{
    border-color:#a3e635; background:rgba(163,230,53,.08); transform:translateX(4px);
  }
  .cert__links a span:last-child{color:#a3e635;font-size:1.1rem;}

  /* FOOTER */
  .footer{
    margin-top:clamp(64px,11vh,130px);
    border-top:1px solid var(--hair);
    padding:clamp(48px,8vh,90px) 0 clamp(32px,5vh,54px);
  }
  .footer__cta{
    font-family:var(--serif);
    font-weight:330;
    font-size:clamp(2rem,6vw,4.4rem);
    line-height:1.0;
    letter-spacing:-.02em;
    margin:0 0 .5em;
    max-width:16ch;
  }
  .footer__cta em{font-style:italic;color:var(--accent-deep);}
  .footer__cta a{text-decoration:none;}
  .footer__cta a:hover{color:var(--accent-deep);}
  .footer__row{
    display:flex; justify-content:space-between; align-items:flex-end;
    gap:24px; flex-wrap:wrap;
    margin-top:clamp(28px,5vh,56px);
    padding-top:clamp(20px,3vh,32px);
    border-top:1px solid var(--hair);
  }
  .footer__contact{font-size:.9rem;color:var(--ink-soft);}
  .footer__contact a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--hair-strong);}
  .footer__contact a:hover{color:var(--accent-deep);border-color:var(--accent);}
  .footer__copy{font-size:.78rem;color:var(--ink-faint);letter-spacing:.04em;}

  /* SCROLL REVEAL */
  .reveal{
    opacity:0;
    transform:translateY(26px);
    transition:opacity .9s cubic-bezier(.22,.61,.36,1), transform .9s cubic-bezier(.22,.61,.36,1);
    will-change:opacity, transform;
  }
  .reveal.in{opacity:1;transform:none;}
  .reveal.d1{transition-delay:.08s;}
  .reveal.d2{transition-delay:.16s;}
  .reveal.d3{transition-delay:.24s;}

  /* THEME SWITCHER */
  .theme{
    position:fixed; top:12px; right:clamp(12px,3vw,22px);
    z-index:130;
    display:inline-flex; gap:2px;
    padding:3px;
    border:1px solid var(--hair-strong);
    border-radius:100px;
    background:color-mix(in srgb, var(--paper) 82%, transparent);
    backdrop-filter:blur(10px);
    box-shadow:var(--shadow);
  }
  .theme__btn{
    appearance:none; cursor:pointer;
    width:34px; height:34px;
    display:grid; place-items:center;
    border:0; border-radius:100px;
    background:transparent;
    color:var(--ink-faint);
    transition:color .2s ease, background .2s ease;
  }
  .theme__btn:hover{color:var(--ink);}
  .theme__btn[aria-checked="true"]{
    background:var(--accent);
    color:#0e1006;
  }
  [data-theme="dark"] .theme__btn[aria-checked="true"]{color:#15160f;}

  /* BACK TO TOP */
  .to-top{
    position:fixed; right:clamp(16px,3vw,28px); bottom:clamp(16px,3vw,28px);
    z-index:120;
    width:46px; height:46px;
    display:grid; place-items:center;
    border:1px solid var(--hair-strong);
    border-radius:50%;
    background:var(--accent);
    color:#0e1006;
    box-shadow:0 10px 28px -10px rgba(22,23,15,.55);
    cursor:pointer;
    opacity:0; transform:translateY(14px) scale(.9);
    pointer-events:none;
    transition:opacity .3s ease, transform .3s ease, background .25s ease;
  }
  .to-top.is-visible{opacity:1;transform:none;pointer-events:auto;}
  .to-top:hover{background:var(--accent-deep);}
  [data-theme="dark"] .to-top{color:#15160f;}

  /* ENTRY ENRICHMENT — links, tags, "comprehensive view" */
  .entry__co a{
    color:inherit; text-decoration:none;
    border-bottom:1px solid var(--hair-strong);
    transition:border-color .2s ease, color .2s ease;
  }
  .entry__co a:hover{color:var(--accent-deep);border-color:var(--accent);}
  .entry__points a{
    color:var(--accent-deep); text-decoration:none; font-weight:600;
    border-bottom:1px solid color-mix(in srgb, var(--accent) 45%, transparent);
    transition:border-color .2s ease, opacity .2s ease;
    white-space:nowrap;
  }
  .entry__points a:hover{opacity:.78;border-color:var(--accent);}

  .entry--current::before{background:var(--accent);transform:scale(1.2);}
  .now-badge{
    display:inline-block; margin-left:.5em;
    font-size:.6rem; letter-spacing:.16em; font-weight:700;
    color:#0e1006; background:var(--accent);
    padding:.18em .6em; border-radius:100px; vertical-align:middle;
  }
  [data-theme="dark"] .now-badge{color:#15160f;}

  .entry__tags{
    list-style:none; margin:clamp(14px,2vw,18px) 0 0; padding:0;
    display:flex; flex-wrap:wrap; gap:7px; max-width:74ch;
  }
  .entry__tags li{
    font-size:.7rem; font-weight:600; letter-spacing:.02em;
    padding:.32em .7em;
    border:1px solid var(--hair-strong);
    border-radius:100px;
    color:var(--ink-faint);
    background:color-mix(in srgb, var(--paper-2) 60%, transparent);
  }

  .more{margin-top:clamp(14px,2vw,18px);}
  .more>summary{
    list-style:none; cursor:pointer; width:max-content;
    font-size:.74rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
    color:var(--accent-deep);
    display:inline-flex; align-items:center; gap:.5em;
    padding:.2em 0;
  }
  .more>summary::-webkit-details-marker{display:none;}
  .more>summary::after{
    content:"+"; font-size:1.1rem; line-height:1; font-weight:600;
    transition:transform .25s ease;
  }
  .more[open]>summary::after{content:"–";}
  .more>summary:hover{opacity:.78;}
  .entry__points--more{margin-top:.9em;}
  .entry__points--more li::before{background:var(--ink-faint);}

  /* PROJECTS / DATA QUESTS */
  .proj-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:clamp(16px,2vw,22px);
    padding-top:8px;
  }
  .proj-card{
    text-decoration:none; color:inherit;
    display:flex; flex-direction:column;
    padding:clamp(22px,2.5vw,30px);
    border:1px solid var(--hair);
    border-radius:16px;
    background:color-mix(in srgb, var(--chip) 55%, transparent);
    box-shadow:var(--shadow);
    transition:transform .3s ease, border-color .25s ease, box-shadow .3s ease;
  }
  [data-theme="dark"] .proj-card{background:var(--paper-2);}
  .proj-card:hover{
    transform:translateY(-4px);
    border-color:var(--accent);
    box-shadow:0 26px 50px -30px rgba(22,23,15,.5);
  }
  .proj-card__meta{
    font-size:.68rem; letter-spacing:.16em; text-transform:uppercase;
    font-weight:700; color:var(--accent-deep);
  }
  .proj-card h3{
    font-family:var(--serif); font-weight:420;
    font-size:clamp(1.2rem,2vw,1.5rem); line-height:1.12;
    letter-spacing:-.01em; margin:.6em 0 .4em;
  }
  .proj-card p{margin:0;color:var(--ink-soft);font-size:.9rem;line-height:1.6;}
  .proj-card__go{
    margin-top:auto; padding-top:1.1em;
    font-size:.8rem; font-weight:600; color:var(--ink);
    display:inline-flex; align-items:center; gap:.4em;
  }
  .proj-card:hover .proj-card__go{color:var(--accent-deep);}
  .proj-foot{
    margin:clamp(28px,4vh,46px) 0 0;
    font-size:.86rem; color:var(--ink-faint);
    border-top:1px solid var(--hair); padding-top:clamp(18px,2.5vh,26px);
  }

  /* DARK-MODE SURFACE TUNING */
  [data-theme="dark"] .links a{background:rgba(255,255,255,.04);}
  [data-theme="dark"] .links a:hover{background:rgba(255,255,255,.07);}
  [data-theme="dark"] .pills li{background:rgba(255,255,255,.035);}
  [data-theme="dark"] .logo-chip{border-color:var(--hair-strong);}
  [data-theme="dark"] .cert{
    background:#0d0e08;
    box-shadow:0 30px 60px -36px rgba(0,0,0,.85);
  }
  [data-theme="dark"] body::before{
    background:
      radial-gradient(1200px 600px at 85% -10%, rgba(132,204,22,.10), transparent 60%),
      radial-gradient(900px 500px at -10% 20%, rgba(132,204,22,.06), transparent 55%);
  }

  /* RESPONSIVE */
  @media (max-width:880px){
    .stats__grid{grid-template-columns:repeat(2,1fr);}
    .stat{border-top:1px solid var(--hair);}
    .stat:nth-child(1),.stat:nth-child(2){border-top:0;}
    .stat:nth-child(odd){border-left:0;}
    .stat:nth-child(5){grid-column:1 / -1;border-left:0;}
    .about{grid-template-columns:1fr;}
    .skills-grid{grid-template-columns:1fr;}
    .cert{grid-template-columns:1fr;}
    .proj-grid{grid-template-columns:repeat(2,1fr);}
  }
  @media (max-width:560px){
    .timeline__inner{margin-left:22px;}
    .entry{padding-left:26px;}
    .entry__head{gap:14px;}
    .hero__meta{display:none;}
    .footer__row{align-items:flex-start;}
    .proj-grid{grid-template-columns:1fr;}
    .entry__points a{white-space:normal;}
  }

  @media (prefers-reduced-motion:reduce){
    html{scroll-behavior:auto;}
    *{transition:none !important; animation:none !important;}
    .reveal{opacity:1;transform:none;}
    .links a:hover,.pills li:hover{transform:none;}
  }
