:root{font-family:"Times New Roman",Times,"Liberation Serif",serif;color:#000;background:#fff;color-scheme:only light;font-synthesis:none;--line:#ccc}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:40px}body{margin:0;font-size:17px;line-height:1.6;background:#fff}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:#fff;border:0}a:hover{text-decoration:underline;text-underline-offset:5px}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:2px solid #000;outline-offset:5px}[hidden]{display:none!important}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400}::selection{background:#ddd}.skip{position:fixed;left:16px;top:-80px;z-index:3;background:#fff;border:1px solid;padding:12px}.skip:focus{top:10px}
main,.site-footer{width:min(1120px,calc(100% - 160px));margin:0 auto 0 max(100px,calc((100% - 1120px)/2))}section,article,figure,.award-art,.portrait-placeholder{background:#fff}
/* The only fixed UI layer is the quiet left navigation rail. */
.side-nav{position:fixed;z-index:1;left:25px;top:50%;display:flex;flex-direction:column;align-items:center;gap:25px;transform:translateY(-50%);visibility:hidden;opacity:0;transition:opacity .45s ease,visibility .45s;color:#707070;font-size:19px;line-height:1.2}
.side-nav.is-visible{visibility:visible;opacity:1}.side-nav a{writing-mode:vertical-rl;transform:rotate(180deg);padding:3px}.side-nav a:hover{color:#444}.side-nav .type-stage{vertical-align:baseline}
.hero{display:grid;grid-template-columns:1.4fr 1fr;gap:70px;align-items:center;padding:74px 0 58px;min-height:590px}h1{font-size:clamp(42px,4.8vw,68px);line-height:1.08;letter-spacing:-2px;margin-bottom:26px}.hero-role{font-size:18px;font-style:italic;margin-bottom:18px}.hero-intro{max-width:420px;font-size:19px;line-height:1.55}.portrait{justify-self:end;width:100%;max-width:330px}.portrait-placeholder{height:340px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid var(--line);outline:1px solid var(--line);outline-offset:-12px;gap:18px}.portrait-initials{font-size:104px;font-style:italic;letter-spacing:-9px;line-height:1}.portrait-placeholder>span:last-child{font-size:10px;letter-spacing:1.4px;text-transform:uppercase}.portrait img{width:100%;height:340px;object-fit:cover;filter:grayscale(1);display:block}.portrait figcaption{font-size:13px;line-height:1.5;margin-top:15px}.portrait figcaption>span:last-child{font-size:11px}
.abstract{border-top:3px double #000;border-bottom:1px solid var(--line);padding:25px 0 27px;font-size:16px;text-align:justify;columns:2;column-gap:55px}.abstract strong{font-style:italic}.abstract .keywords{margin-top:12px;font-size:14px}.paper-section{padding-top:85px;scroll-margin-top:10px}.section-heading{margin-bottom:38px;max-width:650px}h2{font-size:31px;line-height:1.25;letter-spacing:-.5px}.section-heading>p{font-size:16px;margin-top:13px;max-width:540px}.centered{margin-inline:auto;text-align:center}.centered>p{margin-inline:auto}
.timeline{list-style:none;padding:0;margin:0;position:relative}.timeline::before{content:'';position:absolute;top:0;bottom:24px;left:50%;width:1px;background:#ccc}.timeline-item{display:grid;grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);position:relative;padding-bottom:36px}.timeline-item::before{content:'';position:absolute;left:calc(50% - 4px);top:22px;width:7px;height:7px;border:1px solid #000;border-radius:50%;background:#fff}.timeline-item:first-child::before{background:#000}.timeline-date{grid-column:3;grid-row:1;padding:15px 0 0 18px;font-size:14px;text-align:left}.current{display:block;font-size:11px;margin-top:8px}.timeline-item article{grid-column:1;grid-row:1;padding:12px 18px 16px 0;text-align:right;min-width:0}.timeline-item:nth-child(even) article{grid-column:3;padding:12px 0 16px 18px;text-align:left}.timeline-item:nth-child(even) .timeline-date{grid-column:1;padding:15px 18px 0 0;text-align:right}.meta{font-size:11px;line-height:1.6;text-transform:uppercase;letter-spacing:1.1px;margin-bottom:7px}h3{font-size:24px;line-height:1.25}.organization{font-size:14px;margin:6px 0 11px}.timeline-item article>p:last-child{font-size:16px}
/* Three visible desktop slots, advancing one actual card at a time. */
.achievement-window{overflow-x:auto;padding:2px 0 20px;scrollbar-width:thin}.enhanced .achievement-window{overflow:hidden}.achievement-track{display:flex;gap:22px;position:relative}.achievement-track.is-moving{transition:transform .7s cubic-bezier(.22,.61,.36,1)}.achievement{flex:0 0 calc((100% - 44px)/3);min-width:0}.achievement,.certification{border:1px solid var(--line)}.award-art{height:200px;padding:12px}.award-art a{display:flex;align-items:center;height:100%;width:100%}.award-art img{object-fit:contain;width:100%;height:100%;display:block}.award-copy{padding:20px 22px 24px}.award-copy h3{font-size:22px;min-height:83px}.award-copy>p:last-of-type{font-size:14px;margin-top:12px}.credential-link{display:inline-block;font-size:13px;margin-top:14px;text-decoration:underline;text-underline-offset:4px}.certification-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.certification{min-width:0}
.filters{display:flex;gap:24px;margin-bottom:27px;flex-wrap:wrap}.filters button{font-size:14px;padding:0 0 5px;border-bottom:1px solid transparent}.filters button[aria-pressed=true]{border-color:#000}.projects{display:grid;grid-template-columns:1fr 1fr;gap:30px}.project{border:1px solid var(--line);min-width:0}.project-copy{padding:26px}.project-copy h3{font-size:26px}.project-subtitle{font-style:italic;font-size:15px;margin-top:8px}.project-copy>p:not(.meta):not(.project-subtitle){font-size:16px;margin-top:15px}.project-copy>a{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:16px;margin-top:24px;font-size:13px}
.contact{display:grid;grid-template-columns:1fr 180px;gap:70px;padding-bottom:75px}.contact h2{font-size:37px}.contact>div>p{max-width:560px;margin-top:20px;font-size:18px}.contact-link{display:inline-block;font-size:23px;border-bottom:1px solid #000;padding-bottom:8px;margin-top:29px}.contact>div>.phone{font-size:13px;margin-top:12px}.contact aside{font-size:14px;padding-top:10px}.contact aside p{font-style:italic;margin-bottom:15px}.contact aside a{display:block;margin:8px 0}.site-footer{border-top:1px solid #000;padding:22px 0 30px;font-size:12px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.type-stage{position:relative;display:inline-grid;vertical-align:bottom;max-width:100%}.type-stage:is(p,h1,h2,h3,div){display:grid}.type-reserve{visibility:hidden;grid-area:1/1}.type-output{grid-area:1/1;min-width:0}.type-output.typing:after{content:'';display:inline-block;width:1px;height:.85em;margin-left:3px;background:currentColor;vertical-align:-.04em;animation:blink .8s step-end infinite}.enhanced [data-reveal]{opacity:0;filter:blur(6px);transform:translateY(14px);mask-image:linear-gradient(to bottom,#000 40%,transparent 50%);mask-size:100% 250%;mask-repeat:no-repeat;mask-position:0 100%;transition:opacity .65s ease,filter .85s ease,transform .85s ease,mask-position .85s ease}.enhanced [data-reveal].visible{opacity:1;filter:blur(0);transform:none;mask-position:0 0}@keyframes blink{50%{opacity:0}}
@media(max-width:1000px){main,.site-footer{width:calc(100% - 124px);margin-left:88px}.side-nav{left:17px;font-size:18px;gap:22px}.hero{gap:32px}.portrait{max-width:270px}.portrait-placeholder,.portrait img{height:310px}.timeline-item{grid-template-columns:minmax(0,1fr) 40px minmax(0,1fr)}.award-copy{padding:18px 15px 22px}.award-copy h3{font-size:20px}.award-art{height:165px;padding:8px}.contact{gap:35px;grid-template-columns:1fr 140px}.contact h2{font-size:31px}.achievement-track,.certification-gallery{gap:16px}.achievement{flex-basis:calc((100% - 32px)/3)}}
@media(max-width:767px){main,.site-footer{width:calc(100% - 80px);margin-left:58px}.side-nav{left:12px;font-size:15px;gap:20px}.hero{grid-template-columns:1fr;padding:45px 0 35px;gap:32px;min-height:0}h1{font-size:46px;letter-spacing:-1.5px}.hero-role{font-size:16px}.hero-intro{font-size:18px}.portrait{justify-self:start;max-width:none;display:grid;grid-template-columns:110px 1fr;gap:18px;align-items:end}.portrait-placeholder,.portrait img{height:140px;outline-offset:-6px}.portrait-initials{font-size:54px;letter-spacing:-5px}.portrait-placeholder>span:last-child{font-size:7px;letter-spacing:.2px}.portrait-placeholder{gap:12px}.portrait figcaption{font-size:12px;margin-bottom:8px}.portrait figcaption>span:last-child{display:block;margin-top:5px}.abstract{columns:1;font-size:15px;text-align:left;padding:22px 0}.paper-section{padding-top:58px}.section-heading{margin-bottom:26px}h2{font-size:27px}.section-heading>p{font-size:15px}.timeline::before{left:0}.timeline-item{grid-template-columns:minmax(0,1fr);padding:0 0 12px 20px}.timeline-item::before{left:-4px;top:7px}.timeline-item article,.timeline-item:nth-child(even) article{grid-column:1;grid-row:2;padding:0 0 20px;text-align:left}.timeline-item .timeline-date,.timeline-item:nth-child(even) .timeline-date{grid-column:1;grid-row:1;padding:0 0 8px;text-align:left;font-size:12px}.current{display:inline;margin-left:12px}h3{font-size:22px}.timeline-item article>p:last-child{font-size:15px}.achievement{flex-basis:100%}.award-art{height:225px;padding:12px}.award-copy{padding:20px}.award-copy h3{min-height:0;font-size:23px}.certification-gallery,.projects{grid-template-columns:1fr;gap:25px}.filters{gap:12px 18px}.filters button{font-size:13px}.project-copy{padding:22px}.project-copy h3{font-size:24px}.contact{grid-template-columns:1fr;gap:28px;padding-bottom:40px}.contact h2{font-size:28px}.contact>div>p{font-size:17px}.contact-link{font-size:20px}.contact aside{display:flex;flex-wrap:wrap;gap:15px;padding:0}.contact aside p{width:100%;margin:0}.contact aside a{margin:0}.site-footer{font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.enhanced [data-reveal]{opacity:1;filter:none;transform:none;mask-image:none}.type-reserve{visibility:visible}.type-output{display:none}.achievement-track{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));transform:none!important}.achievement{min-width:0}.side-nav .type-reserve{visibility:visible}}
@media(prefers-reduced-motion:reduce) and (max-width:767px){.achievement-track{grid-template-columns:1fr}}
@media print{.side-nav,.filters,.portrait{display:none!important}main,.site-footer{width:100%;margin:0}.hero{display:block;min-height:0;padding:25px 0}.paper-section{padding-top:30px}.enhanced [data-reveal]{opacity:1;filter:none;transform:none;mask-image:none}.type-reserve{visibility:visible}.type-output{display:none}.achievement-track{display:grid;grid-template-columns:1fr 1fr;transform:none!important}.achievement,.certification,.project{break-inside:avoid}.projects{display:block}.project{margin-bottom:15px}.contact{padding-bottom:20px}h1{font-size:38px}}

/* The current center card takes visual focus as each individual card rotates. */
.achievement-window { padding: 24px 0 30px; }
.achievement { border: 0; }
.achievement .credential-card { height: 100%; border: 1px solid #ccc; background: #fff; scale: .93; transform-origin: center; transition: scale .7s cubic-bezier(.22,.61,.36,1); }
.achievement.is-center .credential-card { scale: 1.04; }
@media (max-width:767px) { .achievement .credential-card, .achievement.is-center .credential-card { scale: 1; } .achievement-window { padding-top: 4px; } }
@media (prefers-reduced-motion:reduce), print { .achievement .credential-card { scale: 1 !important; } }

.enhanced [data-reveal].reveal-complete { mask-image: none; filter: none; }

/* Keep the portrait's original color and transparent cutout on white paper. */
.portrait-image { height: 340px; width: 100%; background: #fff; }
.portrait .portrait-image img { height: 100%; width: 100%; object-fit: contain; filter: none; }
.crt-image { position: relative; overflow: hidden; isolation: isolate; }
.enhanced .crt-image:not(.crt-complete) img { clip-path: inset(0 0 100% 0); }
.crt-image::before, .crt-image::after { content: ''; position: absolute; inset: 0; pointer-events: none; opacity: 0; }
.crt-image::before { background: repeating-linear-gradient(to bottom, transparent 0 2px, rgb(0 0 0 / .065) 2px 3px); }
.crt-image::after { background: linear-gradient(to bottom, rgb(0 0 0 / .35), rgb(0 0 0 / .12) 2px, transparent 6px); }
.enhanced .crt-image.is-scanning img { animation: crt-raster 1.15s steps(40, end) both; }
.crt-image.is-scanning::before { animation: crt-lines 1.15s ease-out both; }
.crt-image.is-scanning::after { animation: crt-beam 1.15s linear both; }
@keyframes crt-raster { from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0); } }
@keyframes crt-lines { 0% { opacity: 0; } 15% { opacity: .8; } 85% { opacity: .45; } 100% { opacity: 0; } }
@keyframes crt-beam { 0% { transform: translateY(0); opacity: .7; } 95% { opacity: .7; } 100% { transform: translateY(100%); opacity: 0; } }
.side-nav { z-index: 10; max-height: calc(100dvh - 30px); }
@media(max-width:1000px) { .portrait-image { height: 310px; } }
@media(max-width:767px) { .portrait-image { height: 140px; } }
@media(max-height:600px) { .side-nav { font-size: 12px; gap: 10px; } }
@media(prefers-reduced-motion:reduce), print {
  .enhanced .crt-image:not(.crt-complete) img { clip-path: none; }
  .crt-image::before, .crt-image::after { display: none; }
}

/* Preserve the supplied square portrait at every breakpoint. */
.portrait .portrait-image { aspect-ratio: 1 / 1; height: auto; }
.portrait .portrait-image img { aspect-ratio: 1 / 1; height: auto; }

/* Phone layout: full-width paper, a safe-area-aware bottom index, and touch
   targets that remain usable without giving up the desktop navigation rail. */
@media(max-width:767px) {
  html { scroll-padding-bottom: 90px; -webkit-text-size-adjust: 100%; }
  body { padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)); }
  main, .site-footer { width: auto; margin-inline: max(20px, env(safe-area-inset-left, 0px)) max(20px, env(safe-area-inset-right, 0px)); }
  .side-nav { left: 0; right: 0; top: auto; bottom: 0; transform: none; flex-direction: row; gap: 0; justify-content: space-between; font-size: 14px; line-height: 1.2; background: #fff; border-top: 1px solid var(--line); padding: 5px max(4px, env(safe-area-inset-right, 0px)) calc(5px + env(safe-area-inset-bottom, 0px)) max(4px, env(safe-area-inset-left, 0px)); max-height: none; }
  .side-nav a { writing-mode: horizontal-tb; transform: none; display: flex; align-items: center; justify-content: center; flex: 1 0 auto; min-width: 44px; min-height: 48px; padding: 4px 2px; }
  .side-nav a:focus-visible { outline-offset: -3px; }
  .hero { padding-top: 36px; gap: 28px; }
  h1 { font-size: clamp(34px, 9.6vw, 48px); line-height: 1.1; letter-spacing: -1px; margin-bottom: 22px; }
  .hero-copy, .hero-copy > *, .abstract > *, .type-stage, .type-reserve { min-width: 0; }
  .hero-role { font-size: 17px; }
  .hero-intro { font-size: 18px; }
  .portrait { display: block; width: min(100%, 230px); justify-self: center; }
  .portrait figcaption { margin: 12px 0 0; text-align: center; font-size: 13px; }
  .portrait figcaption > span:last-child { display: grid; font-size: 12px; }
  .portrait figcaption br { display: none; }
  .abstract { font-size: 16px; }
  .abstract .keywords { font-size: 15px; }
  .timeline-item article > p:last-child { font-size: 16px; }
  .organization { font-size: 15px; }
  .timeline-item .timeline-date, .timeline-item:nth-child(even) .timeline-date { font-size: 14px; }
  .achievement-window { touch-action: pan-y pinch-zoom; }
  .award-art { height: auto; aspect-ratio: 1.5; }
  .award-copy { padding: 18px; }
  .award-copy > p:last-of-type { font-size: 15px; }
  .credential-link { min-height: 44px; padding-block: 10px; font-size: 15px; }
  .filters { gap: 6px 16px; margin-bottom: 22px; }
  .filters button { min-height: 44px; padding-block: 8px; font-size: 15px; }
  .project-copy { padding: 20px; }
  .project-copy h3, .award-copy h3 { overflow-wrap: anywhere; }
  .project-copy > a { min-height: 48px; font-size: 15px; }
  .contact-link { display: flex; align-items: center; width: fit-content; min-height: 48px; font-size: clamp(18px, 5vw, 23px); }
  .contact aside { gap: 4px 20px; }
  .contact aside a { display: flex; align-items: center; min-height: 44px; font-size: 16px; }
  .site-footer { font-size: 12px; padding-bottom: 24px; }
}
@media(max-width:359px) { .side-nav { font-size: 12px; } }
@media print { body { padding-bottom: 0; } }
