:root {
  --ink:#17201d; --muted:#5b6762; --green:#154734; --green2:#235f49;
  --gold:#c69214; --paper:#fbfcfa; --card:#fff; --line:#dfe6e2; --soft:#eef4f0;
  --max:1060px; --shadow:0 12px 34px rgba(21,71,52,.08);
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;color:var(--ink);background:var(--paper);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.58;-webkit-font-smoothing:antialiased}
a{color:var(--green)} a:hover{color:var(--green2)} .wrap{width:min(var(--max),calc(100% - 36px));margin:0 auto}
.skip-link{position:absolute;left:-9999px;top:8px;z-index:100;padding:8px 11px;background:#fff;border:1px solid var(--line)} .skip-link:focus{left:10px}
.site-header{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line);background:rgba(255,255,255,.95);backdrop-filter:blur(10px)}
.topbar{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:22px}.brand{display:flex;flex-direction:column;text-decoration:none;color:var(--ink);line-height:1.1}.brand strong{font-size:.98rem}.brand span{margin-top:4px;color:var(--muted);font-size:.69rem;letter-spacing:.05em;text-transform:uppercase}
.site-nav{display:flex;gap:16px;align-items:center;flex-wrap:wrap;font-size:.88rem}.site-nav a{color:var(--muted);text-decoration:none;font-weight:500}.site-nav a:hover{color:var(--green)}
.hero{position:relative;padding:74px 0 64px;overflow:hidden;background:linear-gradient(90deg,rgba(255,255,255,.98) 0%,rgba(255,255,255,.92) 48%,rgba(255,255,255,.56) 70%,rgba(255,255,255,.18) 100%),url('assets/calpoly-coast.jpg') center/cover no-repeat;border-bottom:1px solid var(--line)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(250px,.55fr);gap:50px;align-items:center}.eyebrow{display:inline-block;color:var(--green);font-size:.75rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;margin-bottom:12px}h1,h2,h3{font-family:Georgia,"Times New Roman",serif}h1{margin:0;font-size:clamp(3rem,7vw,5.2rem);line-height:.98;letter-spacing:-.045em}.hero-title{margin:16px 0 0;max-width:690px;font-size:clamp(1.17rem,2vw,1.48rem);line-height:1.36}.hero-copy{margin:14px 0 0;max-width:660px;color:var(--muted);font-size:1rem}.role-line{margin:16px 0 0;color:var(--green);font-weight:700;font-size:.94rem}.actions{margin-top:24px;display:flex;gap:10px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:9px 15px;border-radius:999px;border:1px solid var(--green);text-decoration:none;font-weight:700;font-size:.88rem}.button.primary{background:var(--green);color:#fff}.button.secondary{background:rgba(255,255,255,.82);color:var(--green)}
.portrait-card{max-width:310px;justify-self:end;overflow:hidden;border-radius:20px;border:1px solid rgba(255,255,255,.9);background:#fff;box-shadow:0 20px 50px rgba(23,32,29,.18)}.portrait-card img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:cover}.portrait-caption{padding:15px 17px;background:var(--green);color:#fff}.portrait-caption strong{display:block;font-family:Georgia,"Times New Roman",serif;font-size:1.16rem}.portrait-caption span{display:block;margin-top:3px;color:rgba(255,255,255,.8);font-size:.78rem}
main section{padding:60px 0}main section+section{border-top:1px solid var(--line)}.section-head{display:grid;grid-template-columns:.75fr 1.25fr;gap:34px;align-items:start;margin-bottom:25px}h2{margin:0;font-size:clamp(1.9rem,3.6vw,2.7rem);line-height:1.08;letter-spacing:-.02em}.section-intro{margin:2px 0 0;color:var(--muted);max-width:700px}
.cards.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:23px;box-shadow:0 8px 24px rgba(21,71,52,.035)}.card-kicker{color:var(--green);font-size:.72rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.card h3{margin:7px 0 9px;font-size:1.38rem;line-height:1.16}.card p{margin:0;color:var(--muted);font-size:.92rem}.card .text-link{display:inline-block;margin-top:13px;text-decoration:none;font-weight:700;font-size:.86rem}
.current-list{margin:22px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.current-list li{background:var(--soft);border-radius:11px;padding:12px 14px;font-size:.87rem;color:var(--muted)}.current-list strong{color:var(--ink)}
.landscape-band{min-height:245px;background:url('assets/calpoly-learn-by-doing.jpg') center 45%/cover no-repeat}
.publications{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.publication{display:grid;grid-template-columns:64px 1fr;gap:16px;padding:16px 0;border-bottom:1px solid var(--line)}.pub-year{color:var(--green);font-weight:800}.pub-title{font-weight:730}.pub-meta{margin-top:3px;color:var(--muted);font-size:.86rem}
.teaching-band{position:relative;background:linear-gradient(rgba(21,71,52,.93),rgba(21,71,52,.93)),url('assets/calpoly-dusk.jpg') center/cover no-repeat;color:#fff}.teaching-band .eyebrow{color:#f0dca4}.teaching-band h2{color:#fff}.teaching-band .section-intro{color:rgba(255,255,255,.82)}.course-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:19px}.course-chip{padding:7px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.08);font-size:.82rem;color:#fff}.teaching-note{margin:18px 0 0;max-width:720px;color:rgba(255,255,255,.82);font-size:.88rem}.teaching-note a{color:#fff;text-underline-offset:3px}.teaching-note a:hover{color:#f0dca4}
.about-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:32px;align-items:start}.about-copy p{margin-top:0;color:var(--muted)}.credentials{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.credentials li{padding:9px 0;border-bottom:1px solid var(--line);font-size:.86rem}.credentials strong{color:var(--green)}
.contact-box{display:flex;justify-content:space-between;gap:22px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 22px}.contact-box p{margin:0;color:var(--muted);font-size:.9rem}.contact-box a{font-weight:700}.site-footer{padding:28px 0 36px;color:var(--muted);font-size:.8rem;border-top:1px solid var(--line);background:#fff}.footer-row{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap}
@media(max-width:820px){.hero-grid,.section-head,.about-grid{grid-template-columns:1fr}.portrait-card{justify-self:start;max-width:260px}.cards.two{grid-template-columns:1fr}.current-list{grid-template-columns:1fr}.hero{background:linear-gradient(rgba(255,255,255,.9),rgba(255,255,255,.9)),url('assets/calpoly-coast.jpg') center/cover no-repeat}.landscape-band{min-height:210px}}
@media(max-width:620px){.topbar{align-items:flex-start;flex-direction:column;padding:13px 0}.site-nav{gap:12px}.hero{padding-top:52px}main section{padding:48px 0}.contact-box{align-items:flex-start;flex-direction:column}}
