
:root{--ink:#3E484D;--ink2:#3E484D;--mid:#5B5B5B;--cream:#F7F7F7;--paper:#FFFFFF;--line:#DFDFDF;--lime:#DFDFDF;--blue:#777777;--rust:#5B5B5B;--pill:#EEEEEE;--serif:Georgia,serif;--sans:Inter,'Helvetica Neue',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:86px}body{font-family:var(--sans);margin:0;background:var(--cream);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit}a:focus-visible,button:focus-visible{outline:3px solid #777777;outline-offset:4px}
.top{height:64px;position:sticky;top:0;background:rgba(0,0,0,.97);z-index:100;border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.top-in{max-width:1300px;padding:0 30px;margin:auto;display:flex;align-items:center;justify-content:space-between;height:100%;gap:20px}.wordmark{font-size:13px;font-weight:800;letter-spacing:.1em;text-decoration:none}.wordmark span{color:var(--rust)}.toplinks{display:flex;gap:22px;align-items:center}.toplinks a{font-size:12px;text-decoration:none;font-weight:650}.toplinks a:hover{color:var(--rust)}.toplinks .cta{background:var(--ink);color:#FFFFFF;padding:10px 17px;border-radius:3px}
.app{max-width:1300px;margin:0 auto;padding:0 30px;display:grid;grid-template-columns:220px minmax(0,1fr);gap:44px}.side{position:sticky;top:82px;height:calc(100vh - 82px);overflow:auto;padding:44px 0}.side h2{font-size:10px;color:var(--mid);font-weight:750;letter-spacing:.14em;text-transform:uppercase;margin:0 0 15px}.side a{font-size:12px;display:flex;gap:10px;padding:12px 4px;text-decoration:none;border-bottom:1px solid var(--line);font-weight:650}.side a:hover{color:var(--rust)}.side em{font-style:normal;font-size:10px;font-weight:700;color:#666666}.side-note{color:var(--mid);font-size:11px;line-height:1.55;margin-top:20px}.main{min-width:0;padding-bottom:80px}
.hero{padding:68px 0 65px;border-bottom:1px solid var(--line)}.over{font-size:11px;letter-spacing:.19em;text-transform:uppercase;font-weight:800;color:var(--rust)}h1{font-size:clamp(51px,6.2vw,88px);letter-spacing:-.065em;line-height:1.07;font-weight:470;margin:15px 0 26px}h1 .serif{font-family:var(--serif);font-style:italic;font-weight:400;color:#5B5B5B}.hero-copy{max-width:740px;color:#3E484D;font-size:19px;line-height:1.58}.chips{display:flex;gap:7px;flex-wrap:wrap;margin:29px 0 12px}.chip{background:#EEEEEE;color:#3E484D;font-size:11px;padding:7px 12px;border-radius:100px;font-weight:700}.small{font-size:12px;color:var(--mid)}.legend{border-top:1px solid var(--line);margin-top:34px;padding-top:18px;font-size:11px;color:var(--mid);max-width:830px}
.case{padding:69px 0 64px;border-bottom:1px solid var(--line);scroll-margin-top:76px}.case:target>.casehd{border-left:5px solid var(--rust);padding-left:14px}.casehd{display:flex;justify-content:space-between;gap:15px;align-items:flex-start}.sectionid{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:800;color:var(--rust)}h2{font-size:clamp(36px,4.4vw,61px);line-height:1.08;letter-spacing:-.048em;margin:12px 0 16px;font-weight:500}h2 .i{font-family:var(--serif);font-style:italic;font-weight:400}.deck{font-size:17px;max-width:780px;line-height:1.65;color:#3E484D;margin:0 0 32px}.quicklink{flex-shrink:0;font-size:11px;letter-spacing:.03em;text-decoration:none;border:1px solid #C8C8C8;padding:8px 12px;border-radius:2px;white-space:nowrap}.quicklink:hover{background:var(--ink);color:#FFFFFF}.split{display:grid;grid-template-columns:1fr 1fr;gap:14px}.three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.block{background:var(--paper);border:1px solid var(--line);padding:23px;border-radius:3px}.block h3{font-size:17px;margin:0 0 10px;line-height:1.25}.block p{margin:0;color:#3E484D;font-size:13px;line-height:1.65}.block ul{padding-left:18px;margin:0;color:#3E484D;font-size:13px}.block li{margin:6px 0}.mini{font-size:11px;color:var(--mid)}.eyebrow{font-size:10px;letter-spacing:.17em;font-weight:800;color:var(--rust);margin:0 0 9px;text-transform:uppercase}.copylink{display:inline-flex;margin-top:14px;font-size:11px;text-decoration:none;color:#3E484D;font-weight:750;border-bottom:1px solid #A9A9A9;padding-bottom:3px}.copylink:hover{color:var(--rust)}
.figure{margin:17px 0 0;background:var(--paper);border:1px solid var(--line);border-radius:3px;overflow:hidden}.figure img{display:block;width:100%;height:330px;object-fit:contain;background:#F7F7F7;padding:12px}.figure figcaption{padding:14px 18px;border-top:1px solid var(--line);font-size:11px;line-height:1.5;color:var(--mid)}.figure figcaption strong{color:var(--ink)}.figpair{display:grid;grid-template-columns:1.4fr 1fr;gap:14px}.figpair .figure img{height:310px}
.flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:22px;background:#EEEEEE;margin:21px 0;border:1px solid #DFDFDF}.step{background:#FFFFFF;border:1px solid #DFDFDF;padding:16px;min-height:146px}.step span{font-size:10px;font-weight:800;color:var(--rust);letter-spacing:.08em}.step strong{display:block;font-size:14px;line-height:1.35;margin:9px 0}.step p{font-size:12px;margin:0;color:#5B5B5B}.note{border-left:3px solid #A9A9A9;padding:12px 17px;background:#F7F7F7;font-size:13px;color:#3E484D;line-height:1.62;margin:19px 0}.source{margin-top:28px;border-top:1px solid var(--line);padding-top:13px;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:flex-start;color:var(--mid);font-size:11px}.source strong{color:var(--ink)}.locator{background:#F7F7F7;padding:7px 10px;font-size:11px;border-radius:2px}.trace{font-size:12px;color:var(--mid)}.case [id]:target{outline:3px solid var(--rust);outline-offset:3px}
.process{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line);background:var(--paper);margin:18px 0}.process>div{padding:20px;border-right:1px solid var(--line)}.process>div:last-child{border-right:0}.process h4{font-size:13px;margin:4px 0 7px}.process p{font-size:12px;color:#5B5B5B;margin:0}.number{font-family:var(--serif);font-size:32px;color:var(--rust);line-height:1}.diagram{padding:22px;background:var(--ink2);color:#F7F7F7;border-radius:4px;margin:17px 0}.diagram-grid{display:flex;gap:9px;align-items:stretch}.dia{flex:1;border:1px solid #777777;padding:16px;min-height:125px}.dia b{display:block;font-size:13px}.dia small{font-size:11px;line-height:1.5;color:#DFDFDF;display:block;margin-top:10px}.arrow{align-self:center;font-size:24px;color:var(--lime)}
.bottom{padding:39px 0;color:#5B5B5B;font-size:13px}.bottom a{font-weight:700}.icon-mono{font-weight:800;font-size:12px}.copybutton{border:0;background:transparent;color:var(--rust);padding:0;font:inherit;font-weight:800;cursor:pointer}.chip-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:15px}.chip-list b{font-size:11px;color:#3E484D;background:#F7F7F7;padding:8px 11px;border-radius:3px}.endpoint{display:flex;align-items:center;justify-content:space-between;gap:18px;background:var(--ink);padding:24px;margin-top:22px;color:#FFFFFF}.endpoint h3{margin:0;font-size:16px}.endpoint a{text-decoration:none;background:var(--lime);color:var(--ink);font-size:12px;font-weight:800;padding:11px 15px}
@media(max-width:990px){.app{grid-template-columns:1fr;gap:0}.side{height:auto;position:static;display:flex;gap:6px;flex-wrap:wrap;padding:20px 0 0}.side h2{width:100%}.side a{border:1px solid var(--line);padding:8px 10px;font-size:11px}.side-note{display:none}.hero{padding:36px 0 42px}}@media(max-width:700px){.app{padding:0 17px}.top-in{padding:0 17px}.toplinks{gap:10px}.toplinks a{font-size:11px}.toplinks a:nth-child(2){display:none}.hero-copy{font-size:16px}.case{padding:45px 0}.split,.three,.figpair{grid-template-columns:1fr}.flow{grid-template-columns:1fr 1fr}.diagram-grid{flex-direction:column}.arrow{text-align:center;transform:rotate(90deg)}.casehd{display:block}.quicklink{display:inline-block;margin-bottom:10px}.figure img{height:260px}.figpair .figure img{height:250px}.process{grid-template-columns:1fr}.process>div{border-right:0;border-bottom:1px solid var(--line)}.source{display:block}.source .locator{display:block;margin-top:8px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{.top,.side,.quicklink,.copylink,.copybutton{display:none!important}.app{display:block;padding:0}.main{padding:0}.hero{padding:25px 0}.case{break-inside:avoid;padding:25px 0}.figure img{max-height:220px}.flow{break-inside:avoid}a{text-decoration:none}}

/* Direct primary-source evidence: clear separation from secondary editorial visuals */
.source-loader{background:#EEEEEE;border:1px solid #C8C8C8;margin:0 0 20px;padding:21px 25px;display:grid;grid-template-columns:1fr 1.2fr;gap:22px;align-items:center}
.source-loader-copy strong{font-size:17px;letter-spacing:-.02em}.source-loader-copy p{margin:7px 0 0;font-size:12px;color:#3E484D;line-height:1.6}.source-inputs{display:flex;gap:13px;align-items:center}.source-inputs label{flex:1;display:flex;flex-direction:column;font-size:10px;letter-spacing:.1em;font-weight:800;gap:5px}.source-inputs input{width:100%;background:#FFFFFF;font-size:11px;padding:8px;border:1px solid #DFDFDF}.source-inputs span{font-size:11px;color:#5B5B5B;letter-spacing:normal;font-weight:500}
.original-source-gallery{margin-top:25px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.original-intro{grid-column:1/-1;font-weight:650;font-size:11px;letter-spacing:.055em;line-height:1.6;color:#5B5B5B;padding-top:15px;border-top:1px solid #C8C8C8;margin:5px 0}.source-card{background:#FFFFFF;border:1px solid #DFDFDF;overflow:hidden;min-width:0}.source-pict{background:#EEEEEE;height:240px;display:flex;align-items:center;justify-content:center;overflow:hidden}.source-pict img{display:block;height:100%;width:100%;object-fit:contain}.source-fallback{width:100%;height:100%;background:#EEEEEE;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;color:#3E484D}.source-fallback span{font-size:10px;font-weight:780;letter-spacing:.13em}.source-fallback b{font-size:90px;line-height:1.1;font-weight:330;letter-spacing:-.06em;color:#666666;font-family:Georgia,serif}.source-detail{padding:17px 18px 20px}.source-tag{font-size:10px;text-transform:uppercase;letter-spacing:.14em;font-weight:750;color:#5B5B5B}.source-detail h4{font-size:18px;line-height:1.3;letter-spacing:-.02em;margin:7px 0}.source-detail p{font-size:12px;color:#5B5B5B;line-height:1.6;margin:0 0 13px}.evidence-actions{display:flex;flex-wrap:wrap;gap:8px}.open-original,.preview-original{cursor:pointer;padding:10px 13px;border:0;font-size:11px;font-weight:800}.open-original{background:#3E484D;color:#FFFFFF}.preview-original{background:#EEEEEE;color:#3E484D;border:1px solid #C8C8C8}.source-pict iframe{width:100%;height:100%;display:block;border:none;background:#FFFFFF}.open-original:hover{background:#3E484D}.source-dialog{border:none;box-shadow:0 20px 90px #000000CC;width:min(1100px,94vw);height:min(850px,92vh);padding:0;background:#FFFFFF;color:#3E484D}.source-dialog::backdrop{background:#000000B9}.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;min-height:68px;border-bottom:1px solid #DFDFDF}.dialog-head span{font-size:10px;text-transform:uppercase;letter-spacing:.15em;color:#5B5B5B}.dialog-head h3{margin:3px 0 0;font-size:18px}.dialog-head button{background:#3E484D;color:#FFFFFF;border:0;padding:10px 18px;cursor:pointer}.source-dialog iframe{width:100%;height:calc(100% - 148px);border:0;background:#F7F7F7}.dialog-info{font-size:11px;color:#5B5B5B;margin:5px 19px}.source-dialog a{display:inline-block;font-size:11px;margin:0 19px 10px;font-weight:bold}
@media(max-width:830px){.source-loader{grid-template-columns:1fr}.original-source-gallery{grid-template-columns:1fr}.source-inputs{flex-direction:column;align-items:stretch}.source-dialog iframe{height:calc(100% - 172px)}}
@media print{.source-loader,.source-dialog,.open-original{display:none!important}.source-pict{height:150px}.original-source-gallery{break-inside:avoid}}

/* Source-exact evidence gallery; 2026-11-09 */
.work-strip{margin-top:26px;display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:12px}
.work-tile{display:block;min-width:0;background:#FFFFFF;border:1px solid #DFDFDF;overflow:hidden;text-decoration:none;transition:transform .18s ease,box-shadow .18s ease}
.work-tile:hover{transform:translateY(-3px);box-shadow:0 14px 35px #00000019}
.work-tile img{width:100%;height:194px;object-fit:contain;background:#FFFFFF;display:block;padding:8px}
.work-tile-caption{display:block;padding:12px 14px;border-top:1px solid #EEEEEE}
.work-tile-caption strong{display:block;font-size:12px;letter-spacing:.01em}
.work-tile-caption small{display:block;font-size:11px;color:#5B5B5B;margin-top:3px;line-height:1.35}
.source-loader{display:block;padding:0;background:#F7F7F7;margin:10px 0 25px}
.source-loader summary{cursor:pointer;padding:14px 19px;font-size:12px;font-weight:800;letter-spacing:.015em}
.source-loader summary:hover{background:#EEEEEE}
.source-picker-inner{border-top:1px solid #DFDFDF;padding:14px 19px 19px}
.source-picker-inner p{margin:0 0 11px;font-size:12px;color:#3E484D;line-height:1.6}
.source-image-link{display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-decoration:none;cursor:zoom-in}
.source-image-link img{width:100%;height:100%;object-fit:contain;transition:transform .22s ease}
.source-image-link:hover img{transform:scale(1.035)}
.source-pict{height:265px;background:#FFFFFF}
.source-detail h4{font-size:17px}
.evidence-actions .view-page{display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:750;padding:9px 12px;background:var(--ink2);color:#FFFFFF;text-decoration:none}
.evidence-actions .view-page:hover{background:#3E484D}
.evidence-actions .open-original{background:#F7F7F7;color:#3E484D;border:1px solid #C8C8C8}
.evidence-actions .open-original:hover{background:#EEEEEE;color:#3E484D}
.original-intro{color:#3E484D;letter-spacing:.025em}
@media(max-width:900px){.work-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.work-tile img{height:165px}.source-pict{height:275px}}
@media(max-width:700px){.work-strip{grid-template-columns:1fr 1fr}.work-tile:first-child{grid-column:1/-1}.work-tile img{height:172px}.work-tile:first-child img{height:215px}.source-pict{height:310px}}
@media print{.work-strip{display:none}.source-pict{height:130px}}

/* Newly supplied source material: individual CAD/sketch files and teaching slides */
.raw-asset-intro{padding:22px 0 6px;border-top:1px solid #C8C8C8;margin-top:30px}
.raw-asset-intro h3{font-size:25px;letter-spacing:-.03em;margin:8px 0}
.raw-asset-intro p:not(.eyebrow){font-size:13px;color:#5B5B5B;line-height:1.75;max-width:700px}
.raw-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0 26px}
.raw-gallery figure,.teaching-asset{margin:0;border:1px solid #DFDFDF;background:#FFFFFF;min-width:0}
.raw-gallery figure a,.teaching-asset a{display:flex;height:265px;align-items:center;justify-content:center;background:#F7F7F7;overflow:hidden}
.raw-gallery img,.teaching-asset img{max-width:100%;max-height:100%;object-fit:contain;padding:10px}
.raw-gallery figcaption,.teaching-asset figcaption{padding:11px 15px;font-size:12px;line-height:1.6;color:#3E484D}
.raw-gallery small,.teaching-asset small{font-size:10px;color:#666666}
.teaching-asset{margin:16px 0 0}
.teaching-asset a{height:390px;background:#F7F7F7}
@media(max-width:700px){.raw-gallery{grid-template-columns:1fr}.teaching-asset a{height:280px}}

/* v6 / new projects */
.work-strip{grid-template-columns:repeat(5,minmax(0,1fr))}
.work-tile img{height:152px}
.source-photo-gallery figure a{height:310px;background:#F7F7F7}
.source-photo-gallery img{width:100%;height:100%;object-fit:contain}
.source-photo-gallery figcaption{min-height:70px}
@media(max-width:1100px){.work-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.work-tile img{height:165px}}
@media(max-width:700px){.work-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.work-tile:first-child{grid-column:1/-1}.work-tile img{height:150px}.source-photo-gallery figure a{height:245px}}

/* Interactive CV v7 — only three chromatic brand colors plus neutral grayscale.
Slate #3E484D, Reddish-Gray #3A3237, Gold Mid #FFC46B.
Original project imagery retains its actual colors. */
:root { --ink:#3E484D;--ink2:#3A3237;--mid:#575757;--muted:#575757;--cream:#F7F7F7;--paper:#FFFFFF;--bg:#F7F7F7;--line:#D7D7D7;--border:#D7D7D7;--edge:#D7D7D7;--rust:#3A3237;--accent:#FFC46B;--lime:#FFC46B;--blue:#3E484D;--pill:#EEEEEE; }
html{scroll-behavior:smooth;scroll-padding-top:85px}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #3A3237;outline-offset:3px;box-shadow:0 0 0 6px #FFC46B}
::selection{background:#FFC46B;color:#3A3237}

body{background:#F7F7F7;color:#3E484D}
.top{background:#3A3237;border-bottom:3px solid #FFC46B;backdrop-filter:none}
.top a,.top .wordmark,.toplinks a{color:#FFFFFF}
.toplinks a:hover{color:#FFC46B}
.toplinks .cta{background:#FFC46B;color:#3A3237}
.toplinks .cta:hover{background:#FFFFFF;color:#3A3237}
.hero .serif,.case h2 .i{color:#3A3237}
.chip{background:#EEEEEE;color:#3A3237;border:1px solid #D7D7D7}
.work-tile,.source-card,.figure,.block{background:#FFFFFF}
.work-tile:hover{box-shadow:0 10px 28px rgba(0,0,0,.12)}
.case:target>.casehd,.case [id]:target{border-color:#FFC46B;outline-color:#FFC46B}
.quicklink{border-color:#3A3237;color:#3A3237}
.eyebrow,.source-tag,.sectionid,.over,.source-card .source-tag{color:#3A3237}
.source-detail h4,.source-detail strong{color:#3E484D}
.evidence-actions .view-page{background:#3A3237;color:#FFFFFF}
.evidence-actions .view-page:hover{background:#3E484D;color:#FFFFFF}
.evidence-actions .open-original{background:#FFC46B;color:#3A3237;border:1px solid #3A3237}
.evidence-actions .open-original:hover{background:#EEEEEE;color:#3A3237}
.source-loader{background:#EEEEEE;border-color:#C8C8C8}
.source-image-link:focus-visible{outline-offset:-4px}
.provenance-label{display:inline-block;border-bottom:2px solid #FFC46B;font-size:10px;font-weight:800;letter-spacing:.06em;color:#3A3237;padding-bottom:2px;margin-bottom:7px}
.lang-note{border-left:4px solid #FFC46B;background:#EEEEEE;color:#3E484D;padding:12px 18px;font-size:13px;line-height:1.75;margin:5px 0 25px}
.side-disclosure{width:100%}.side-disclosure summary{display:none}.side-inner{width:100%}
.side-inner a{min-width:0;overflow-wrap:anywhere}
@media(max-width:990px){
.side{display:block;position:static;padding:17px 0 0;height:auto}
.side-disclosure{border:1px solid #D7D7D7;background:#FFFFFF}
.side-disclosure summary{display:block;list-style:revert;cursor:pointer;padding:12px 18px;font-weight:750;color:#3A3237}
.side-disclosure .side-inner{padding:6px 15px 14px}
.side-inner h2{display:none}.side-inner a{display:block;width:100%;padding:9px 10px;font-size:12px;background:#F7F7F7;margin-bottom:3px}
}
@media(max-width:350px){.app{padding:0 15px}.top-in{padding:0 12px}.toplinks{gap:6px}.toplinks a{font-size:10px}.toplinks .cta{padding:8px 10px}}

/* The source image is always available. The full-PDF action only appears after the owner selects that PDF. */
.open-original{display:none}

/* Browser QA v7.1: contrast of the small sub-brand against the dark masthead. */
.top .wordmark span{color:#FFC46B}
