:root{--ink:#183746;--muted:#526a70;--paper:#f6f3ec;--card:#fffdfa;--line:#d7dcd7;--teal:#6d9297;--orange:#c77956}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid var(--orange);outline-offset:4px}img{display:block;max-width:100%}.wrap{max-width:1240px;margin:auto;padding-left:48px;padding-right:48px}.skip{position:absolute;top:-80px;left:20px;background:#fff;padding:8px;z-index:10}.skip:focus{top:10px}.header{height:82px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.mark{font-size:27px;font-weight:800;letter-spacing:-.1em}nav{display:flex;gap:32px;font-size:13px;font-weight:700}nav a:hover,.secondary:hover{color:var(--orange)}.eyebrow{margin:0 0 16px;color:#527b83;font-weight:800;font-size:11px;letter-spacing:.2em}h1,h2,h3{font-family:Arial,Helvetica,sans-serif;letter-spacing:-.055em;line-height:1.12;margin:0}h1{font-size:clamp(46px,5.4vw,74px);max-width:750px}.hero{min-height:650px;padding-top:94px;padding-bottom:100px;display:grid;grid-template-columns:1.22fr .78fr;gap:8%;align-items:center}.lead{font-size:19px;line-height:1.7;max-width:690px;color:var(--muted);margin:30px 0}.actions{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.button{background:var(--ink);color:white;padding:13px 20px;border-radius:4px;font-size:13px;font-weight:700}.button:hover{background:#346473}.button span{margin-left:16px}.secondary{font-size:13px;font-weight:700;border-bottom:1px solid currentColor;padding-bottom:3px}.work{border-top:1px solid var(--line);padding-top:90px;padding-bottom:110px}.section-head{display:grid;grid-template-columns:1fr 1fr;column-gap:9%;margin-bottom:32px}.section-head .eyebrow{grid-column:1/-1}.section-head h2,.contact h2{font-size:clamp(38px,4.1vw,54px)}.section-head>p:last-child{color:var(--muted);max-width:480px;font-size:14px;margin:0}.case{display:grid;grid-template-columns:43% 57%;margin-bottom:22px;background:var(--card);border:1px solid var(--line)}.case.reverse{grid-template-columns:57% 43%}.case-visual{min-height:600px;position:relative;background:#dce8e6;overflow:hidden;display:flex;align-items:center;justify-content:center}.visual-note{position:absolute;bottom:0;left:0;right:0;padding:14px 20px;background:#193744;color:#e1eceb;font-size:11px;line-height:1.45}.case-visual svg{width:90%;max-width:530px;fill:none;stroke:#56838c;stroke-width:4}.case-visual svg text{stroke:none;fill:#254f5b;text-anchor:middle;font-size:20px;font-weight:800}.case-body{padding:46px 48px 52px}.case-meta{font-size:10px;font-weight:800;letter-spacing:.17em;color:#6d9194;margin-bottom:17px}.case h3{font-size:clamp(28px,3vw,39px);margin-bottom:18px}.case-intro{color:#435f66;font-size:16px;margin:0 0 24px}dl{margin:0}dl div{display:grid;grid-template-columns:116px 1fr;gap:16px;border-top:1px solid var(--line);padding:13px 0}dt{font-size:11px;letter-spacing:.04em;text-transform:uppercase;font-weight:800;color:#4f7880}dd{margin:0;font-size:13px;line-height:1.6;color:#4b646a}.contact{padding-top:105px;padding-bottom:115px}.contact h2{margin-bottom:18px}.contact>p:not(.eyebrow){color:var(--muted);margin-bottom:30px}footer{background:#e8e7df;border-top:1px solid var(--line)}.footer-row{padding-top:35px;padding-bottom:35px;display:flex;justify-content:space-between;align-items:center;gap:20px;color:#567078;font-size:12px}.footer-row strong{font-size:24px;color:var(--ink)}@media(max-width:900px){.wrap{padding-left:28px;padding-right:28px}.hero{gap:5%}.case,.case.reverse{grid-template-columns:1fr}.case-visual{min-height:340px}}@media(max-width:650px){.wrap{padding-left:20px;padding-right:20px}.header{height:68px}nav{gap:18px;font-size:12px}.hero{display:block;padding-top:64px;padding-bottom:85px;min-height:0}h1{font-size:clamp(42px,10vw,58px)}.lead{font-size:16px}.work{padding-top:70px;padding-bottom:75px}.section-head{display:block}.section-head h2{margin-bottom:18px}.case-body{padding:30px 23px 35px}.case-visual{min-height:260px}.case h3{font-size:30px}dl div{grid-template-columns:1fr;gap:3px;padding:11px 0}.contact{padding-top:80px;padding-bottom:90px}.footer-row{align-items:flex-start;flex-direction:column;gap:4px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* Editorial variant inspired by the navigation and reading rhythm of Godgeez. */
:root{--ink:#1f2627;--muted:#626a69;--paper:#f8f8f5;--card:#f8f8f5;--line:#d9ddda;--teal:#44746c;--orange:#ca643a}
body{font-family:Arial,Helvetica,sans-serif;background:var(--paper)}
.header{position:fixed;inset:0 auto 0 0;width:242px;height:100vh;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:39px 27px 25px;border-right:1px solid var(--line);border-bottom:0;background:#f0f2ee;z-index:5}
.mark{font-size:23px;letter-spacing:-.065em;line-height:1.1}.rail-role{font-size:12px;line-height:1.5;color:var(--muted);margin:10px 0 68px}.header nav{display:flex;flex-direction:column;gap:0}.header nav a{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:14px 0;font-size:13px;font-weight:700}.header nav a:last-child{border-bottom:1px solid var(--line)}.rail-bottom{margin-top:auto;display:flex;flex-direction:column;gap:11px;font-size:11px;color:var(--muted)}.rail-bottom a{font-weight:700;color:var(--ink)}
main,footer{margin-left:242px}.wrap{max-width:1100px;padding-left:58px;padding-right:58px}.hero{min-height:0;grid-template-columns:1fr;gap:0;padding-top:86px;padding-bottom:100px}.hero h1{max-width:850px;font-size:clamp(52px,5.5vw,76px);font-weight:700;letter-spacing:-.075em}.hero .lead{max-width:700px;font-size:19px;margin:28px 0 32px}
.eyebrow{color:var(--orange);font-size:10px;letter-spacing:.16em}.work{padding-top:70px}.section-head{display:block;max-width:780px;margin-bottom:35px}.section-head h2{font-size:42px;margin-bottom:15px}.section-head>p:last-child{max-width:640px;font-size:15px}.case,.case.reverse{display:block;border:0;border-top:1px solid var(--ink);padding-top:28px;margin-bottom:90px;background:transparent}.case-visual{height:360px;min-height:0;margin-bottom:30px}.case-body{padding:0;max-width:760px}.case-meta{color:var(--orange);margin-bottom:12px}.case h3{font-size:38px;max-width:680px}.case-intro{font-size:17px;max-width:680px}.case dl div{grid-template-columns:145px 1fr}.case dd{font-size:14px;color:#445250}.case dt{color:var(--teal)}.contact{padding-top:95px;padding-bottom:105px}footer{background:#f0f2ee}
@media(max-width:1050px){.header{padding-left:20px;padding-right:20px}.wrap{padding-left:36px;padding-right:36px}}
@media(max-width:760px){.header{position:static;width:auto;height:auto;padding:16px 20px;display:flex;flex-direction:row;align-items:center;border-right:0;border-bottom:1px solid var(--line)}.mark{font-size:19px}.rail-role,.rail-bottom{display:none}.header nav{margin-left:auto;flex-direction:row;gap:15px}.header nav a,.header nav a:last-child{padding:0;border:0;font-size:12px}main,footer{margin-left:0}.wrap{padding-left:22px;padding-right:22px}.hero{padding-top:66px;padding-bottom:70px}.hero h1{font-size:clamp(42px,10vw,60px)}.case-visual{height:300px}.case h3{font-size:31px}.case,.case.reverse{margin-bottom:70px}}
@media(max-width:430px){.header nav{gap:10px}.header nav a{font-size:11px}}
/* Rounded, asymmetric bento layout. All artwork and content remain local. */
:root{--ink:#f1f0eb;--muted:#aaa9a3;--paper:#0d0e0e;--card:#191b1b;--line:#303333;--teal:#b5c8c2;--orange:#f06443}
body{background:var(--paper);color:var(--ink)}a{color:inherit}.header{background:transparent;border:0;padding:22px 18px;width:252px}.mark{display:block;background:#191b1b;border-radius:24px;padding:20px;font-size:22px}.rail-role{background:#191b1b;border-radius:22px;padding:19px 20px;margin:12px 0;font-size:13px;color:#c4c1ba}.header nav{background:#191b1b;border-radius:22px;padding:10px 20px;margin-top:0}.header nav a{border-color:#343636;color:#e2e1dc}.header nav a:last-child{border-bottom:0}.rail-bottom{padding:13px 9px;color:#898d88}.rail-bottom a{color:#dad9d3}
main,footer{margin-left:252px}.wrap{max-width:1280px;padding-left:32px;padding-right:32px}.hero{display:block;min-height:0;padding-top:52px;padding-bottom:26px}.hero>div:first-child{background:#191b1b;border-radius:28px;padding:58px 58px 54px}.hero h1{font-size:clamp(49px,5vw,72px);line-height:1.05;max-width:920px}.hero .lead{color:#c1c0b9;font-size:18px;max-width:710px}.button{background:#ef5d3e;color:#161616;border-radius:100px;padding:13px 20px}.button:hover{background:#ff7d5d}.secondary{color:#e4e1d9}
.snapshot{padding-top:0;padding-bottom:26px}.tile{background:#191b1b;border-radius:26px;padding:26px;display:flex;flex-direction:column;justify-content:space-between;min-width:0;transition:transform .18s ease,background .18s ease}.tile[href]:hover{transform:translateY(-3px);background:#222626}.tile-kicker{font-size:10px;font-weight:800;letter-spacing:.16em;color:#aaa9a3}.tile strong{display:block;font-size:clamp(22px,2.35vw,34px);line-height:1.08;letter-spacing:-.055em}.tile span:last-child{font-size:12px;color:#b8b7b0}.tile span b{float:right;color:var(--orange)}.tile-feature{grid-row:span 2;background:#d9dbd3;color:#171e1d}.tile-feature .tile-kicker,.tile-feature span:last-child{color:#43514d}.tile-feature strong{font-size:clamp(29px,3vw,44px);max-width:360px}.tile-feature[href]:hover{background:#e7e9df}.tile-valve{background:#282b29}.tile-cooling{background:#b54831;color:#1a1614}.tile-cooling .tile-kicker,.tile-cooling span:last-child,.tile-cooling span b{color:#251b17}.tile-cooling[href]:hover{background:#d05a3e}
.work{border:0;padding-top:60px}.section-head h2{color:var(--ink)}.section-head>p:last-child{color:var(--muted)}.eyebrow,.case-meta{color:var(--orange)}.case,.case.reverse{border-top:0;background:#191b1b;border-radius:28px;padding:0;overflow:hidden;margin-bottom:22px}.case-visual{height:380px;margin:0}.case-visual.schematic{background:#263e3c}.case-body{max-width:none;padding:34px 44px 42px}.case h3{color:var(--ink)}.case-intro,.case dd{color:#c0c2bc}.case dl div{border-color:#353a37}.case dt{color:#a9c5b8}.visual-note{background:#101818;color:#d5ddd8}.contact{padding-top:40px;padding-bottom:50px}.contact>p:not(.eyebrow){color:var(--muted)}.contact h2{font-size:48px}footer{background:transparent;border:0}.footer-row{border-top:1px solid #303333;color:#8d938f}.footer-row strong{color:var(--ink)}
@media(max-width:1120px){.header{width:215px}main,footer{margin-left:215px}.tile-feature{grid-row:span 2}.hero>div:first-child{padding:44px}}
@media(max-width:760px){.header{position:static;width:auto;height:auto;padding:12px 15px;background:transparent;display:flex;align-items:center}.mark{padding:13px 15px;border-radius:15px;font-size:18px}.header nav{margin:0 0 0 auto;padding:10px 13px;border-radius:15px;gap:14px}.header nav a{border:0;padding:12px 4px}.rail-role,.rail-bottom{display:none}main,footer{margin-left:0}.wrap{padding-left:15px;padding-right:15px}.hero{padding-top:10px;padding-bottom:14px}.hero>div:first-child{padding:36px 25px;border-radius:22px}.hero h1{font-size:clamp(42px,9vw,60px)}.snapshot{padding-bottom:14px}.tile{border-radius:22px;padding:22px}.case,.case.reverse{border-radius:22px}.case-body{padding:27px 25px 35px}.contact{padding-top:55px}}
@media(max-width:520px){.tile{min-height:165px;padding:17px;border-radius:19px}.tile-feature{grid-column:span 2;grid-row:auto;min-height:220px}.tile-feature strong{font-size:33px}.tile-valve strong,.tile-cooling strong{font-size:22px}.tile-kicker{font-size:9px}.tile span:last-child{font-size:11px}.case-visual{height:270px}.case h3{font-size:29px}.case dl div{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.tile{transition:none}}
/* Thesis figure sequence: generous image scale and short, evidence-specific captions. */
.figure-story{padding-top:25px;padding-bottom:35px}.figure-intro{background:#f1f1ed;color:#161b19;border-radius:28px;padding:56px 58px 48px;margin-bottom:14px}.figure-intro h2{font-size:clamp(43px,5.1vw,70px);line-height:1.04;letter-spacing:-.07em;max-width:860px}.figure-intro h2 span{color:#6f7773}.figure-card{margin:0;min-width:0;background:#f1f1ed;border-radius:28px;overflow:hidden;color:#1c2521;display:flex;flex-direction:column}.figure-image{height:315px;padding:23px;background:#fff;display:flex;align-items:center;justify-content:center}.figure-image img{width:100%;height:100%;object-fit:contain}.figure-card figcaption{padding:26px 31px 32px;display:flex;flex-direction:column;gap:12px}.fig-index{font-size:11px;font-weight:800;letter-spacing:.14em;color:#bb563a}.figure-card figcaption strong{font-size:clamp(24px,2.4vw,34px);letter-spacing:-.055em;line-height:1.13}.figure-card figcaption>span:last-child{font-size:13px;line-height:1.6;color:#57645e}.figure-caveat{font-size:11px;color:#9daaa3;line-height:1.6;max-width:850px;margin:16px 4px 0}
@media(max-width:900px){.figure-intro{padding:45px 38px}}
@media(max-width:650px){.figure-story{padding-top:10px}.figure-intro{padding:36px 26px;border-radius:22px}.figure-intro h2{font-size:42px}.figure-card{margin-bottom:12px;border-radius:22px}.figure-image{height:290px;padding:14px}.figure-card figcaption{padding:22px 24px 27px;gap:8px}.figure-card figcaption strong{font-size:26px}.figure-caveat{margin:13px 2px 0}}

.hero>div:first-child{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);column-gap:40px;align-items:center}.hero h1{font-size:clamp(47px,4.5vw,64px);max-width:680px}.hero .lead{font-size:16px;line-height:1.65;margin:22px 0 25px}
@media(max-width:1120px){.hero>div:first-child{column-gap:25px}.hero h1{font-size:clamp(42px,4.2vw,56px)}}
@media(max-width:900px){.hero>div:first-child{display:block}}
@media(max-width:760px){.hero>div:first-child{display:block}.hero h1{font-size:clamp(42px,9vw,60px)}}
/* Neutral palette: scientific figures carry the colour; orange marks actions. */
:root{--ink:#f5f5f7;--muted:#b8b8bd;--paper:#0b0b0d;--card:#1c1c1f;--line:#3a3a40;--teal:#dedee3;--orange:#ff956b}
body{background:#0b0b0d;color:#f5f5f7}.mark,.rail-role,.header nav,.hero>div:first-child,.case,.case.reverse,.tile,.tile-valve{background:#1c1c1f}.rail-role,.rail-bottom,.rail-bottom a{color:#b8b8bd}.header nav a{color:#f5f5f7;border-color:#3a3a40}.hero .lead,.section-head>p:last-child,.case-intro,.case dd,.contact>p:not(.eyebrow),.footer-row{color:#b8b8bd}.figure-intro,.figure-card{background:#f5f5f7;color:#1d1d1f}.figure-card figcaption>span:last-child{color:#505057}.figure-intro h2 span{color:#66666e}.tile-feature{background:#ededf0;color:#1d1d1f}.tile-feature .tile-kicker,.tile-feature span:last-child{color:#505057}.tile-feature[href]:hover{background:#fff}.tile-cooling{background:#ee8056;color:#18181b}.tile-cooling .tile-kicker,.tile-cooling span:last-child,.tile-cooling span b{color:#282026}.tile-cooling[href]:hover{background:#ff956b}.tile-kicker,.tile span:last-child{color:#b8b8bd}.tile span b,.eyebrow,.case-meta{color:#ff956b}.tile[href]:hover{background:#303034}.tile-feature[href]:hover{background:#fff}.tile-cooling[href]:hover{background:#ff956b}.button{background:#ff956b;color:#1d1d1f}.button:hover{background:#ffae8e}.secondary{color:#f5f5f7}.case dt{color:#dedee3}.case dl div{border-color:#3a3a40}.case-visual.schematic{background:#242427}.case-visual svg{stroke:#a7a7af}.case-visual svg text{fill:#1d1d1f}.visual-note{background:#151518;color:#dedee3}.fig-index{color:#a53d1b}.figure-caveat{color:#b8b8bd}.footer-row{border-color:#3a3a40}
.achievements{padding-top:50px;padding-bottom:80px}.achievement-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:14px}.achievement-card{margin:0;min-width:0;background:#1c1c1f;border-radius:28px;overflow:hidden}.achievement-feature{grid-row:span 2;display:flex;flex-direction:column}.achievement-card>a{display:block;height:280px;background:#141416}.achievement-feature>a{height:auto;flex:1;min-height:560px}.achievement-card img{width:100%;height:100%;object-fit:contain}.achievement-feature img{object-fit:cover;object-position:center 35%}.achievement-card figcaption{padding:28px 31px 32px;display:flex;flex-direction:column;gap:10px}.achievement-card .fig-index{color:#ff956b}.achievement-card strong{font-size:28px;line-height:1.15;letter-spacing:-.045em}.achievement-card figcaption>span:last-child{color:#b8b8bd;font-size:14px;line-height:1.65}.achievement-card a:focus-visible{outline-offset:-5px}.achievement-card img{transition:transform .25s ease}.achievement-card a:hover img{transform:scale(1.02)}
@media(max-width:760px){.achievement-grid{grid-template-columns:1fr}.achievement-feature{grid-row:auto}.achievement-feature>a{min-height:0;height:420px;flex:none}.achievement-card>a{height:310px}.achievement-card{border-radius:22px}.achievement-card figcaption{padding:24px}.achievements{padding-top:30px;padding-bottom:55px}}
@media(prefers-reduced-motion:reduce){.achievement-card img{transition:none}}
.figure-intro .eyebrow{color:#a53d1b}
html{scroll-behavior:auto}
.thesis-compact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.thesis-compact-grid .figure-image{height:245px;padding:15px}.thesis-compact-grid .figure-card figcaption{padding:22px 24px 26px;gap:9px}.thesis-compact-grid .figure-card figcaption strong{font-size:26px}.thesis-compact-grid .figure-card figcaption>span:last-child{font-size:12px}.valve-reference-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#d3d3d8}.valve-reference-grid figure{margin:0;background:#f5f5f7;min-width:0}.valve-product{height:275px;padding:22px;display:flex;align-items:center;justify-content:center;background:white}.valve-product img{max-width:100%;max-height:100%;object-fit:contain}.valve-reference-grid figcaption{padding:20px 26px 24px;color:#1d1d1f}.valve-reference-grid strong{display:block;font-size:18px;letter-spacing:-.03em;line-height:1.3}.valve-reference-grid figcaption a{display:block;font-size:11px;color:#505057;margin-top:8px;text-decoration:underline}.valve-reference-grid>p{grid-column:1/-1;background:#151518;color:#dedee3;font-size:11px;line-height:1.6;margin:0;padding:12px 22px}
@media(max-width:1100px) and (min-width:761px){.thesis-compact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.thesis-compact-grid{grid-template-columns:1fr 1fr;gap:12px}.thesis-compact-grid .figure-image{height:210px}.thesis-compact-grid .figure-card figcaption{padding:20px}.thesis-compact-grid .figure-card figcaption strong{font-size:24px}.valve-product{height:210px;padding:15px}.valve-reference-grid strong{font-size:16px}.valve-reference-grid figcaption{padding:18px}}
@media(max-width:520px){.thesis-compact-grid,.valve-reference-grid{grid-template-columns:1fr}.thesis-compact-grid .figure-image{height:270px}.valve-product{height:230px}}
.burner-geometry-pair{display:grid!important;grid-template-columns:.9fr 1.1fr;gap:8px}.burner-geometry-pair a{display:flex;align-items:center;justify-content:center;height:100%;min-width:0}.burner-geometry-pair img{object-fit:contain;width:100%;height:100%}.figure-caveat a{color:#f5f5f7;text-decoration:underline;text-underline-offset:3px}

/* Earlier projects and writing, selected from the WordPress archive. */
.archive-section{padding-top:70px;padding-bottom:60px}

.archive-panel h3{font-size:clamp(24px,2.2vw,34px);line-height:1.12;margin:14px 0}
.archive-panel p:not(.eyebrow){color:#b8b8bd;line-height:1.65}
.archive-panel>a,.archive-social a{display:inline-block;color:#ff956b;text-underline-offset:5px;margin-top:12px}

.archive-panel{background:#1c1c1f;border-radius:28px;padding:32px;min-width:0}

.writing-panel{background:#ededf0;color:#1c1c1f}.writing-panel p:not(.eyebrow){color:#505057}.writing-panel .eyebrow{color:#505057}.writing-panel>a,.writing-panel .archive-social a{color:#a53d1b}.writing-panel>a{display:block}.archive-social{display:flex;flex-wrap:wrap;gap:24px;margin-top:26px}
@media(max-width:1000px){.archive-section{padding-top:42px}}

/* User-selected casual portrait; no caption or nameplate. */
.hero.hero-with-photo>div:first-child{grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);gap:0 36px}
.hero-casual-photo{grid-column:2;grid-row:1/5;align-self:center;border-radius:24px;overflow:hidden;width:100%;max-width:390px;justify-self:end}
.hero-casual-photo img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}
@media(max-width:1000px){.hero.hero-with-photo>div:first-child{display:block}.hero-casual-photo{margin:32px auto 0;max-width:350px}}
@media(max-width:650px){.hero-casual-photo{max-width:100%;border-radius:18px}.hero.hero-with-photo h1{font-size:clamp(40px,10vw,58px)}}

.project-heading { margin: 16px 0 18px; font-size: clamp(25px, 3vw, 36px); }
.project-links { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.project-links .tile { grid-area: auto; min-width: 0; min-height: 210px; padding: clamp(18px, 2vw, 32px); }
.project-links .tile strong { font-size: clamp(24px, 2.6vw, 38px); }
.project-links a:focus-visible { outline: 3px solid #ff956b; outline-offset: 3px; }
@media (max-width: 900px) {
  .project-links { grid-template-columns: 1fr; }
  .project-links .tile { min-height: 0; gap: 10px; }
}
.project-links .tile > span:last-child {
  color: inherit;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.45;
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
}
.project-links .tile > span:last-child b {
  color: inherit;
  font-size: 20px;
  line-height: 1;
}

.project-preview-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:28px; }
.project-preview { display:flex; flex-direction:column; align-items:flex-start; gap:12px; background:#1c1c1f; border-radius:22px; overflow:hidden; padding-bottom:22px; }
.project-preview img { width:100%; aspect-ratio:4/3; object-fit:contain; background:white; }
.project-preview strong,.project-preview p,.project-preview span { margin:0 16px; }
.project-preview span,.publications a { color:#ffac88; }
.project-preview a { text-decoration:underline; }
.publications { padding-top:45px; padding-bottom:45px; }
.publications ul { list-style:none; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.publications li { padding:18px; background:#1c1c1f; border-radius:16px; }
.publications small { display:block; color:#c2c2c8; }
@media(max-width:1000px){.project-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:650px){.project-preview-grid,.publications ul{grid-template-columns:1fr;} .header{flex-wrap:wrap;height:auto;gap:8px;} .header nav{flex-wrap:wrap;}}
.flame-intro { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); gap:30px; align-items:center; }
.flame-intro figure { margin:0; min-width:0; }
.flame-intro img { width:100%; border-radius:16px; }
.flame-intro figcaption { color:#505057; font-size:13px; margin-top:10px; }
.flame-intro h2 { font-size:clamp(38px,4vw,60px); }
.flame-intro > div > p:last-child { color:#505057; }
@media(max-width:900px){.flame-intro { grid-template-columns:1fr; }}
.header nav a[aria-current] { color: #ff956b; }

@media (min-width: 761px) {
  .hero { padding-top: 22px; }
}
@media (max-width: 760px) {
  .header { align-items: stretch; gap: 8px; }
  .mark { display: flex; align-items: center; }
  .header nav { align-items: center; padding: 0 13px; flex-wrap: nowrap; }
  .header nav a, .header nav a:last-child { font-size: 12px; padding: 12px 4px; }
}
@media (max-width: 460px) {
  .header { flex-wrap: wrap; }
  .header nav { flex: 1 1 100%; margin: 0; justify-content: space-between; }
}
.flame-intro h2 { text-wrap: balance; }
.flame-compare .eyebrow { margin-bottom: 12px; }
.flame-pair { display: grid; grid-template-columns: 1.25fr .75fr; gap: 10px; }
.flame-pair a { display: flex; align-items: center; justify-content: center; height: 320px; padding: 10px; background: #fff; border-radius: 16px; overflow: hidden; }
.flame-pair img, .flame-intro .flame-pair img { width: 100%; height: 100%; object-fit: contain; border-radius: 0; }
.flame-compare figcaption { display: grid; grid-template-columns: 1.25fr .75fr; gap: 10px; }
@media (max-width: 520px) { .flame-pair a { height: 240px; } }
.achievement-card figcaption > a { color: #ff956b; font-size: 14px; text-underline-offset: 4px; }
.achievement-card figcaption > a:hover { text-decoration: underline; }
.achievement-stage > a img { object-fit: cover; object-position: 50% 45%; }

.nowrap { white-space: nowrap; }
.degree-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 14px; }
.degree-card > a { height: 420px; padding: 18px; background: #2a2a2e; }
@media (max-width: 760px) { .degree-grid { grid-template-columns: 1fr; } .degree-card > a { height: 380px; } }
.case-visual.cooling-visual { background: #242427; }
.cooling-figs { display: flex; align-items: center; justify-content: center; gap: 28px; width: 100%; height: 100%; padding: 22px 28px 58px; }
.cooling-visual svg { width: auto; max-width: none; height: 100%; stroke: none; }
.cooling-visual .cool-nozzle { flex: 0 1 auto; min-width: 0; }
.cooling-visual .gas { fill: url(#gasGrad); }
.cooling-visual .cool-stack .gas { fill: #b64b27; }
.cooling-visual .liner { fill: #8a8a93; }
.cooling-visual .cool { fill: #3d63a8; }
.cooling-visual .jacket { fill: #5c5c66; }
.cooling-visual .injector { fill: #8a8a93; }
.cooling-visual .axis { stroke: #f5f5f7; stroke-width: 1; stroke-dasharray: 6 6; opacity: .45; }
.cooling-visual .sec { fill: none; stroke: #f5f5f7; stroke-width: 2; stroke-dasharray: 5 4; }
.cooling-visual .q { stroke: #f5f5f7; stroke-width: 3; }
.cooling-visual .qhead { fill: #f5f5f7; }
.cooling-visual svg text { fill: #f5f5f7; stroke: none; font-family: var(--site-sans); font-weight: 700; font-size: 14px; letter-spacing: .02em; text-anchor: start; }
.cooling-visual .gas-label { font-size: 15px; letter-spacing: .12em; }
.cooling-visual .sec-label, .cooling-visual .sec-title, .cooling-visual .qlbl { font-family: var(--site-mono); font-weight: 500; letter-spacing: .08em; }
.cooling-visual .sec-label { text-anchor: middle; }
.cooling-visual .lbl, .cooling-visual .flow { fill: #b8b8bd; font-weight: 500; font-size: 13px; }
.cooling-visual svg text.lbl[text-anchor="middle"], .cooling-visual svg text.flow { text-anchor: middle; }
.cooling-visual svg text.lbl[text-anchor="end"] { text-anchor: end; }
.cooling-visual svg text.layer, .cooling-visual svg text.sub { text-anchor: middle; }
.cooling-visual .layer { font-size: 16px; letter-spacing: .14em; }
.cooling-visual .sub { font-size: 11px; font-weight: 500; fill: #e2e2e8; opacity: .8; letter-spacing: .04em; }
.cooling-visual svg text.qlbl { text-anchor: end; font-size: 15px; }
@media (max-width: 760px) {
  .case-visual.cooling-visual { height: auto; display: block; }
  .cooling-figs { flex-direction: column; gap: 14px; padding: 18px 16px 14px; height: auto; }
  .cooling-visual svg { width: 100%; height: auto; }
  .cooling-visual .cool-stack { max-width: 300px; }
  .cooling-visual .visual-note { position: static; }
}
@media (max-width: 760px) {
  .cooling-visual svg text.lbl, .cooling-visual svg text.gas-label { font-size: 20px; }
  .cooling-visual svg text.flow { font-size: 19px; text-anchor: end; }
  .cooling-visual svg text.sec-label { font-size: 20px; }
}
.pub-count { font-family: var(--site-mono); font-weight: 500; font-size: .5em; letter-spacing: .04em; color: #ff956b; vertical-align: middle; margin-left: 6px; }

.experience { padding-top: 56px; padding-bottom: 24px; }
.timeline { list-style: none; margin: 0; padding: 0; position: relative; }
.timeline::before { content: ""; position: absolute; left: 189px; top: 10px; bottom: 34px; width: 2px; background: #3a3a40; }
.tl-item { position: relative; display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: 0 60px; padding-bottom: 14px; }
.tl-item::before { content: ""; position: absolute; left: 183px; top: 30px; width: 14px; height: 14px; border-radius: 50%; background: #0b0b0d; border: 2px solid #ff956b; box-sizing: border-box; }
.tl-item:first-child::before { background: #ff956b; }
.tl-date { margin: 0; padding-top: 26px; text-align: right; font-family: var(--site-mono); font-weight: 500; font-size: 13px; letter-spacing: .04em; color: #ff956b; }
.tl-body { background: #1c1c1f; border-radius: 22px; padding: 24px 30px 22px; min-width: 0; }
.tl-body h3 { font-size: clamp(22px, 2.1vw, 28px); letter-spacing: -.035em; margin: 0; }
.tl-org { margin: 4px 0 12px; color: #b8b8bd; font-size: 15px; }

.tl-links { display: flex; flex-wrap: wrap; gap: 6px 22px; margin: 6px 0 0; }
.tl-links a { color: #ff956b; font-size: 14px; text-underline-offset: 4px; }
.tl-links a:hover { text-decoration: underline; }
@media (max-width: 760px) {
  .experience { padding-top: 34px; }
  .timeline::before { left: 6px; top: 8px; bottom: 30px; }
  .tl-item { grid-template-columns: 1fr; padding-left: 28px; padding-bottom: 12px; }
  .tl-item::before { left: 0; top: 4px; }
  .tl-date { text-align: left; padding: 0 0 8px; }
  .tl-body { padding: 20px 20px 18px; border-radius: 18px; }
}
.tl-origin { position: relative; display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: 0 60px; padding-top: 40px; }
.tl-origin::before { content: ""; position: absolute; left: 189px; top: -34px; height: 82px; border-left: 2px dashed #3a3a40; }
.tl-origin::after { content: ""; position: absolute; left: 185px; top: 48px; width: 10px; height: 10px; border-radius: 50%; background: #5c5c66; }
.tl-origin .tl-date { padding-top: 6px; color: #7c7c84; }
.tl-origin-body { padding: 0 30px; }
.tl-origin-body h3 { margin: 0; font-size: 20px; letter-spacing: -.02em; color: #b8b8bd; }
.tl-origin-body p { margin: 4px 0 0; font-size: 14px; color: #8a8a92; font-style: italic; }
@media (max-width: 760px) {
  .tl-origin { grid-template-columns: 1fr; padding-left: 28px; padding-top: 32px; }
  .tl-origin::before { left: 6px; top: -30px; height: 66px; }
  .tl-origin::after { left: 2px; top: 36px; }
  .tl-origin .tl-date { text-align: left; padding: 0 0 4px; }
  .tl-origin-body { padding: 0; }
}
.mark { display: flex; align-items: center; gap: 12px; }
.mark-logo { flex: none; display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; background: #ff956b; color: #1c1c1f; font-size: 13px; font-weight: 700; letter-spacing: -.04em; }
.live-clock { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; font-family: var(--site-mono); font-weight: 500; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: #b8b8bd; font-variant-numeric: tabular-nums; }
.live-clock[hidden] { display: none; }
.live-dot { width: 8px; height: 8px; border-radius: 50%; background: #ff5a3c; box-shadow: 0 0 0 0 rgba(255, 90, 60, .6); animation: live-pulse 2s ease-out infinite; }
@keyframes live-pulse { 0% { box-shadow: 0 0 0 0 rgba(255, 90, 60, .55); } 70% { box-shadow: 0 0 0 7px rgba(255, 90, 60, 0); } 100% { box-shadow: 0 0 0 0 rgba(255, 90, 60, 0); } }
@media (prefers-reduced-motion: reduce) { .live-dot { animation: none; } }
@media (max-width: 760px) { .mark-logo { width: 26px; height: 26px; border-radius: 8px; font-size: 11px; } .mark { gap: 10px; } }

/* Theme: Graphite Signal with an orange hero card. */
:root { --ink: #ededed; --muted: #8f8f8f; --paper: #0a0a0a; --card: #151515; --line: #2a2a2a; --teal: #ededed; --orange: #ff4d00; }
body { background: #0a0a0a; color: #ededed; }
.mark, .rail-role, .header nav, .case, .case.reverse, .tile, .tile-valve, .tile-feature, .tile-cooling,
.achievement-card, .project-preview, .publications li, .archive-panel, .tl-body, .figure-intro, .figure-card, .writing-panel {
  background: #151515; box-shadow: inset 0 0 0 1px #262626;
}
.tile[href]:hover, .tile-feature[href]:hover, .tile-cooling[href]:hover { background: #1c1c1c; }
.tile-feature, .tile-cooling { color: #ededed; }
.tile-kicker, .tile-feature .tile-kicker, .tile-cooling .tile-kicker { color: #8f8f8f; }
.tile-feature span:last-child, .tile-cooling span:last-child { color: #ededed; }
.tile span b, .tile-cooling span b { color: #ff4d00; }
.rail-role, .rail-bottom, .rail-bottom a { color: #8f8f8f; }
.header nav a { color: #ededed; border-color: #2a2a2a; }
.header nav a[aria-current] { color: #ff4d00; }
.mark-logo { background: #ff4d00; color: #0a0a0a; }
.eyebrow, .case-meta, .fig-index, .figure-intro .eyebrow, .achievement-card .fig-index, .pub-count, .tl-date,
.tl-links a, .achievement-card figcaption > a, .archive-panel > a, .archive-social a, .writing-panel > a, .writing-panel .archive-social a, .writing-panel .eyebrow { color: #ff4d00; }
.project-preview span, .publications a { color: #ff6a26; }
.section-head > p:last-child, .case-intro, .case dd, .contact > p:not(.eyebrow), .footer-row, .tl-org,
.achievement-card figcaption > span:last-child, .archive-panel p:not(.eyebrow) { color: #8f8f8f; }
.publications small{ color: #c7c7c7; }
.case dt, .footer-row strong, .secondary, .figure-caveat a { color: #ededed; }
.case dl div, .footer-row { border-color: #2a2a2a; }
.button { background: transparent; color: #ff4d00; box-shadow: inset 0 0 0 1.5px #ff4d00; }
.button:hover { background: rgba(255, 77, 0, .12); }
.project-links a:focus-visible { outline-color: #ff4d00; }

.figure-intro, .figure-card { color: #ededed; }
.figure-intro h2 span, .figure-card figcaption > span:last-child, .flame-intro figcaption, .flame-intro > div > p:last-child { color: #9a9a9a; }
.valve-reference-grid { background: #262626; }
.valve-reference-grid figure { background: #151515; }
.valve-reference-grid figcaption { color: #ededed; }
.valve-reference-grid figcaption a { color: #9a9a9a; }
.valve-reference-grid > p, .visual-note{ background: #101010; color: #c7c7c7; }
.writing-panel { color: #ededed; }
.writing-panel p:not(.eyebrow) { color: #9a9a9a; }
.achievement-card > a { background: #101010; }
.degree-card > a { background: #1c1c1c; }
.case-visual.cooling-visual { background: #151515; }

.timeline::before { background: #2a2a2a; }
.tl-item::before { background: #0a0a0a; border-color: #ff4d00; }
.tl-item:first-child::before { background: #ff4d00; }
.tl-origin::before { border-left-color: #2a2a2a; }

.hero > div:first-child { background: #ff6b1a; color: #000; box-shadow: none; }
.hero .lead, .hero .eyebrow, .hero .secondary, .hero .live-clock { color: #000; }
.hero .button { background: #000; color: #ff6b1a; box-shadow: none; }
.hero .button:hover { background: #1a1a1a; }
.hero .live-dot { background: #000; box-shadow: none; animation: none; }
.hero a:focus-visible { outline-color: #000; }
.header nav a:first-child { border-top: 0; }
.hero.hero-with-photo > div:first-child { padding: 44px 48px; }
.hero-copy { grid-column: 1; min-width: 0; }
.hero-casual-photo { grid-row: 1; }
.hero .lead { margin: 20px 0 26px; }
@media (max-width: 1120px) { .hero.hero-with-photo > div:first-child { padding: 40px; } }
@media (max-width: 760px) { .hero.hero-with-photo > div:first-child { padding: 32px 24px; } }

/* Slide viewer */
html.viewer-open { overflow: hidden; }
.viewer { width: 100vw; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: #050505; color: #ededed; }
.viewer::backdrop { background: #050505; }
.viewer[open] { display: flex; flex-direction: column; }
.viewer-bar { display: flex; align-items: center; gap: 16px; padding: 16px 22px; border-bottom: 1px solid #262626; }
.viewer-head { flex: 1; min-width: 0; display: flex; align-items: baseline; gap: 14px; }
.viewer-head h2 { margin: 0; font-size: 18px; letter-spacing: -.02em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.viewer-count { margin: 0; font-family: var(--site-mono); font-weight: 500; font-size: 13px; color: #ff4d00; font-variant-numeric: tabular-nums; white-space: nowrap; }
.viewer-download { color: #ff6a26; font-size: 14px; white-space: nowrap; text-underline-offset: 4px; }
.viewer-download:hover { text-decoration: underline; }
.viewer-close { width: 44px; height: 44px; border: 0; border-radius: 50%; background: #1c1c1c; color: #ededed; font-size: 26px; line-height: 1; cursor: pointer; flex: none; }
.viewer-stage { flex: 1; min-height: 0; display: flex; align-items: center; justify-content: center; gap: 12px; padding: 18px; touch-action: pan-y; }

 .viewer-close:hover { background: #262626; }

.viewer button:focus-visible, .viewer a:focus-visible { outline: 3px solid #ff4d00; outline-offset: 3px; }
@media (max-width: 760px) {
  .viewer-bar { flex-wrap: wrap; gap: 6px 12px; padding: 12px 14px; }
  .viewer-head { flex-basis: calc(100% - 56px); flex-direction: column; gap: 2px; }
  .viewer-head h2 { font-size: 16px; }
  .viewer-download { order: 3; flex-basis: 100%; font-size: 13px; }
  .viewer-stage { flex-wrap: wrap; align-content: center; padding: 12px 10px 20px; gap: 18px 24px; }
  
   
}
.viewer-stage {
  display: block; overflow-y: auto; overflow-x: hidden;
  padding: 24px max(14px, calc((100% - 1200px) / 2));
  min-height: 0; overscroll-behavior: contain;
}
.viewer-stage img {
  display: block; width: 100%; height: auto; max-height: none;
  object-fit: contain; margin: 0 auto 24px; border-radius: 8px;
}
.tl-body ul { padding-left: 21px; margin: 16px 0; }
.tl-body li { margin: 8px 0; color: #c4c4c8; }
.tl-org a { color: inherit; text-decoration: underline; text-underline-offset: 4px; }
@media(max-width:650px) { .viewer-stage { display:block; padding:14px 10px; } }
/* Align long timeline text evenly when the reading column is wide. */
.tl-body ul li {
  text-align: justify;
  text-align-last: start;
  hyphens: auto;
}
@media (max-width: 760px) {
  .tl-body ul li { text-align: start; hyphens: manual; }
}
.tl-body li strong {
  color: #f5f5f7;
  font-weight: 700;
}
.tl-body li strong { color: #ff6a26; }
.skip { background: #ff4d00; color: #0a0a0a; font-weight: 600; border-radius: 8px; padding: 10px 14px; }
.external-arrow { display: inline-block; text-decoration: none; font-size: .85em; }
.site-credit {
  margin-top: 0;
  padding-top: 0;
  padding-bottom: 28px;
  color: #b8b8bd;
  font-size: 12px;
  line-height: 1.7;
}
.credit-heart { color: #ff6a26; }
.site-credit > span:last-child { display: inline-block; }
@media (max-width: 650px) {
  .site-credit > span:last-child { display: block; }
}
/* Continuous connectors run from each dot centre to the next dot centre. */
.timeline::before { display: none; }
.tl-item::before { z-index: 1; }
.tl-item:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 189px;
  top: 37px;
  bottom: -37px;
  width: 2px;
  background: #2a2a2a;
}
@media (max-width: 760px) {
  .tl-item:not(:last-child)::after { left: 6px; top: 11px; bottom: -11px; }
}
.rail-resume {
  display: block;
  margin-top: 14px;
  padding: 13px 16px;
  border-radius: 14px;
  background: #ff6a26;
  color: #151515;
  font-size: 14px;
  font-weight: 700;
  text-align: center;
}
.rail-resume:hover { background: #ff956b; }
.rail-resume:focus-visible { outline: 3px solid #f5f5f7; outline-offset: 3px; }
@media (max-width: 760px) { .header .rail-resume { display: none; } }
/* Join the final experience dot to the timeline origin. */
.tl-item:last-child::after {
  content: "";
  position: absolute;
  left: 189px;
  top: 37px;
  bottom: -53px;
  border-left: 2px dashed #2a2a2a;
}
.tl-origin::before { display: none; }
.tl-origin::after { z-index: 1; }
@media (max-width: 760px) {
  .tl-item:last-child::after { left: 6px; top: 11px; bottom: -41px; }
}

/* Card outline drawn above edge-to-edge images so it stays visible all round. */
.case, .achievement-card, .project-preview, .figure-card { position: relative; }
.case::after, .achievement-card::after, .project-preview::after, .figure-card::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 2;
  box-shadow: inset 0 0 0 1px #262626;
}
/* Close the gaps left where the image disclaimers were removed. */
.valve-reference-grid figcaption { padding: 18px 26px 20px; }
.case .case-body { padding-top: 28px; }
@media (min-width: 761px) {
  .case-visual.cooling-visual { height: auto; min-height: 0; }
  .cooling-figs { height: auto; padding: 26px 28px 8px; }
  .cooling-visual svg { height: 300px; }
}
.valve-reference-grid { border-bottom: 1px solid #262626; }
@media (max-width: 760px) { .cooling-visual .cool-stack { margin-bottom: -30px; } }
