/* Consistent vector icons and phone layouts. No icon fonts or remote assets. */
.icon{display:inline-block;width:1em;height:1em;vertical-align:-.1em;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.button .icon,.text-link .icon,.case-link .icon,.footer-name .icon,.nav-contact .icon{width:20px;height:20px}
.button>span[aria-hidden],.text-link>span[aria-hidden],.case-link>span[aria-hidden]{display:inline-flex;align-items:center}
.core-star{display:grid;place-items:center;width:44px;height:44px}
.core-star .icon,.contact-spark .icon{width:100%;height:100%;stroke-width:1.25}
.contact-spark{display:block;width:48px;height:48px}
.dialog-close .icon{width:20px;height:20px}
.stat-symbol{line-height:1}.stat-arrow .icon{width:.9em;height:.9em;vertical-align:-.04em}
.direction-flow i{display:flex}.direction-flow .icon{width:22px;height:16px}
.metric-transition{display:inline-flex;align-items:center;gap:8px}.metric-transition .icon{width:.6em;height:.6em}
.visibility-aware .hero-visual:not(.is-in-view) *, .visibility-aware .project-art:not(.is-in-view) *, .page-backgrounded *{animation-play-state:paused!important}
@media(max-width:900px){
  html{scroll-padding-top:88px}
  .site-header{height:calc(68px + env(safe-area-inset-top,0px));padding-top:env(safe-area-inset-top,0px);gap:16px}
  .wordmark{min-height:44px;gap:8px;font-size:9px;letter-spacing:.07em}
  .header-controls{border:0;padding:0;margin-left:auto;gap:16px}
  .theme-toggle{min-width:64px;min-height:44px;justify-content:center;font-size:13px;padding:9px 3px}
  .theme-toggle svg{width:19px;height:19px}
  .menu-toggle{display:flex;align-items:center;gap:9px;min-height:44px;min-width:72px;padding:9px 0 9px 8px;background:transparent;font-size:13px}
  .menu-lines{display:block;width:20px;height:9px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
  .menu-toggle[aria-expanded=true] .menu-lines{height:1px;transform:rotate(-45deg)}
  .site-header nav{display:none;position:absolute;top:100%;left:calc(-1 * var(--gutter));right:calc(-1 * var(--gutter));margin:0;padding:8px var(--gutter) 18px;background:var(--paper);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:0;max-height:calc(100vh - 68px);max-height:calc(100dvh - 68px - env(safe-area-inset-top,0px));overflow-y:auto}
  .site-header nav.is-open{display:flex}
  .site-header nav a,.site-header nav .nav-contact{display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:14px 0;font-size:16px;border:0;border-bottom:1px solid var(--line);border-radius:0}
  .site-header nav a::after{display:none}
  .dialog-close{min-width:82px;min-height:44px;justify-content:flex-end;font-size:14px}
}
@media(max-width:760px){
  :root{--gutter:clamp(18px,5vw,28px);--sans:Arial,Helvetica,sans-serif}
  .section-shell{padding-left:max(var(--gutter),env(safe-area-inset-left,0px));padding-right:max(var(--gutter),env(safe-area-inset-right,0px))}
  .site-header{margin-left:max(var(--gutter),env(safe-area-inset-left,0px));margin-right:max(var(--gutter),env(safe-area-inset-right,0px))}
  body{font-size:16px;line-height:1.65;text-size-adjust:100%;-webkit-text-size-adjust:100%}
  h1,h2,h3,h4{overflow-wrap:normal}
  .hero{padding-top:20px}
  .hero-topline .eyebrow{font-size:10px;letter-spacing:.04em}
  .hero-grid{padding:26px 0 28px;gap:25px}
  .hero-copy h1{font-size:clamp(56px,18.7vw,90px);line-height:1;letter-spacing:-.065em;font-weight:600}
  .hero-copy .surname{font-size:1em;font-weight:400;letter-spacing:-.065em}
  .hero-statement{font-size:clamp(22px,6vw,29px);line-height:1.35;margin-top:20px}
  .hero-description{font-size:16px;line-height:1.7;margin-top:15px;max-width:38ch}
  .hero-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;margin-top:22px;align-items:stretch}
  .button,.hero-actions .button{min-height:48px;padding:12px 16px;font-size:14px;gap:12px;justify-content:space-between}
  .hero-actions .text-link{min-height:48px;max-width:none;font-size:14px;gap:10px;padding:10px 6px;white-space:nowrap}
  .hero-visual{width:100%;max-width:460px;padding:0}
  .signal-art{height:clamp(220px,62vw,285px);aspect-ratio:auto}
  .signal-map{height:100%}.map-labels{display:none}
  .art-meta,.art-bottom{font-size:9px;letter-spacing:.035em}.art-meta{top:9px}.art-bottom{bottom:9px}
  .signal-core{width:clamp(110px,31vw,145px);gap:5px}.core-star{width:32px;height:32px}
  .core-label{font-size:11px}.core-caption{font-size:14px}
  .signal-controls{gap:3px;margin-top:7px}
  .signal-controls button{min-height:48px;padding:10px 5px;font-size:13px}
  .signal-note{font-size:13px;line-height:1.6;min-height:42px;margin-top:10px}
  .visual-options{justify-content:flex-end;margin-top:0}.visual-options>span{display:none}
  #motion-toggle{min-height:44px;padding:8px 4px;font-size:13px;gap:9px}
  .hero-foot{display:none}
  .impact-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 12px;padding-top:25px;padding-bottom:28px;align-items:start}
  .impact-intro{grid-column:1/-1}.impact-intro .eyebrow{font-size:11px}.impact-intro>p{display:none}
  .impact-stat,.impact-stat:nth-child(3){min-height:0;padding:0;border:0;justify-content:flex-start}
  .impact-stat:not(:nth-child(2)){border-left:1px solid var(--line);padding-left:12px}
  .stat-number{font-size:clamp(31px,8.8vw,44px);line-height:1.1;letter-spacing:-.065em;white-space:nowrap}
  .stat-symbol{font-size:.42em;padding-top:0;margin-left:4px;vertical-align:4px}
  .stat-arrow{padding:0 3px;vertical-align:0}.stat-plus{font-size:.6em;vertical-align:3px}
  .impact-stat p{font-size:12px;line-height:1.55;margin-top:10px;overflow-wrap:normal}
  .impact-stat p br{display:none}
  .work-section,.about-section,.next-section{padding-top:48px;padding-bottom:48px}
  .section-heading{gap:18px;margin-bottom:25px}
  .section-number{font-size:11px;line-height:1.6;margin-bottom:14px}
  .section-heading h2{font-size:clamp(34px,9vw,49px);line-height:1.12}
  .section-intro{font-size:15px;line-height:1.75}
  .work-toolbar{display:block;padding-bottom:16px}
  .work-filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-width:none}
  .work-filters button{min-height:44px;padding:9px 10px;font-size:14px;border:1px solid var(--line);border-radius:4px;text-align:center}
  .work-filters button>span{font-size:10px;margin-left:5px}
  .result-count{font-size:11px;margin-top:12px}
  .project-row{display:grid;grid-template-columns:minmax(0,1fr);gap:0;padding-top:28px;padding-bottom:30px}
  .project-index{display:none}.project-kind{font-size:11px;line-height:1.6;letter-spacing:.02em}
  .project-copy h3{font-size:clamp(28px,7.5vw,36px);line-height:1.16;margin-top:12px}
  .project-copy h3 br{display:none}
  .project-copy>p:not(.eyebrow){font-size:15px;line-height:1.75;margin-top:14px;max-width:42ch}
  .case-link{min-height:46px;gap:16px;font-size:14px;padding:10px 0;margin-top:12px}
  .project-art{grid-column:1;width:100%;max-width:none;margin-top:22px;height:222px;padding:18px;border-radius:6px}
  .visual-tag{font-size:10px;line-height:1.4;letter-spacing:.02em}
  .visual-footer{left:18px;right:18px;bottom:17px;gap:14px}
  .visual-footer>span{font-size:11px;line-height:1.55}
  .visual-footer .art-arrow .icon{width:30px;height:30px}
  .recovery-art .visual-footer>strong{font-size:55px}
  .system-grid{top:50px;right:24px;width:128px;gap:8px}
  .system-grid span{width:14px;height:14px}
  .week-bar{left:18px;right:18px;font-size:10px;gap:9px}.week-bar>span{width:45px}.week-bar>strong{font-size:20px;width:29px}
  .week-bar.before{top:68px}.week-bar.after{top:107px}
  .week-bar.after>div{flex-basis:calc((100% - 92px)/3)}
  .control-figure{top:61px;left:18px;font-size:57px}.control-figure>span{font-size:34px}
  .control-stack{right:26px;top:57px;width:90px;height:78px}
  .identity-flow{display:grid;grid-template-columns:auto minmax(8px,1fr) auto minmax(8px,1fr) auto;gap:4px;margin-top:28px}
  .identity-flow>span{font-size:clamp(9px,2.5vw,11px);padding:8px 6px}.identity-flow>i{min-width:0}
  .identity-art .visual-footer{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;bottom:47px;align-items:center}
  .identity-art .visual-footer>strong{font-size:40px}.identity-art .visual-footer>strong>span{font-size:25px}
  .identity-art .visual-footer>span{font-size:10px;line-height:1.5}
  .art-footnote{left:18px;right:18px;bottom:9px;max-width:none;font-size:10px;line-height:1.4}
  .about-grid,.next-grid{gap:26px}
  .about-heading h2{font-size:clamp(32px,9vw,44px);line-height:1.16}
  .about-heading h2 br{display:none}.about-heading h2 em{display:block}
  .about-copy .large-copy{font-size:25px;line-height:1.35;margin-bottom:20px}
  .about-copy>p:not(.large-copy){font-size:15px;line-height:1.8}
  .skills-block{margin-top:24px}.skill-tags{gap:7px}.skill-tags>span{font-size:12px;padding:6px 9px}
  .career-heading{margin-top:35px;margin-bottom:17px}.career-heading>h3{font-size:23px}.career-heading>.eyebrow{display:none}
  .career-list article{padding:21px 0;gap:8px}.career-date{font-size:11px}.career-list h4{font-size:21px}.career-detail{font-size:14px;line-height:1.75}
  .next-section h2{font-size:clamp(36px,10vw,50px);line-height:1.12}
  .next-intro{font-size:15px;line-height:1.8;margin-top:20px}.next-direction{font-size:14px}
  .direction-flow{gap:10px;font-size:10px;margin-top:23px}.direction-flow .icon{width:18px;height:14px}
  .transfer-list article{gap:17px;padding:22px 0}.transfer-list h3{font-size:22px}.transfer-list p{font-size:15px;line-height:1.7}
  .education-section{padding-top:42px;padding-bottom:42px}.education-top{align-items:flex-start}.education-year{font-size:10px;white-space:nowrap;padding-top:1px}
  .education-grid{gap:24px;margin-top:27px}.education-grid h2{font-size:clamp(53px,14.5vw,76px)}
  .education-detail>.eyebrow{font-size:11px;line-height:1.7}.education-detail h3{font-size:23px;line-height:1.4;margin-top:14px}
  .education-focus{font-size:19px}.education-honors{gap:9px 0;font-size:11px;margin-top:20px}
  .education-honors>span{padding-right:11px}.education-honors>span+span{padding-left:11px}
  .continuing{font-size:13px;line-height:1.7}.continuing>span{margin-left:0;margin-top:7px;font-size:11px}
  .contact-section{padding-top:42px;padding-bottom:34px}.contact-top{gap:20px}.contact-top>.section-number{max-width:none;font-size:11px}
  .contact-spark{width:32px;height:32px;flex-shrink:0}.contact-section h2{font-size:clamp(33px,9vw,46px);line-height:1.15;margin-top:17px}
  .contact-bottom{margin-top:22px;gap:22px}.contact-bottom>p{font-size:15px;line-height:1.75}.contact-bottom>p br{display:none}
  .contact-actions{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:10px;width:100%;max-width:none}
  .contact-actions>.button{min-height:48px;font-size:14px;padding:12px 15px;gap:12px}
  .copy-email{grid-column:1/-1;min-height:46px;font-size:14px;border:1px solid var(--line);border-radius:3px;text-decoration:none;padding:10px}
  .site-footer{padding-top:17px;padding-bottom:calc(17px + env(safe-area-inset-bottom,0px));gap:15px}
  .footer-name{min-height:44px;align-items:center;font-size:14px}.footer-year{font-size:11px}
  .toast{bottom:max(18px,env(safe-area-inset-bottom,0px));font-size:14px;padding:13px 17px;max-width:calc(100vw - 28px);overflow-wrap:anywhere}
  .case-dialog{width:calc(100% - 16px);max-width:640px;max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px);margin:auto;padding:0 20px calc(22px + env(safe-area-inset-bottom,0px));border-radius:14px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .dialog-top{position:sticky;top:0;z-index:2;padding:14px 0 10px;background:var(--paper);gap:10px}
  .dialog-top>.eyebrow{font-size:10px}.dialog-close{min-height:44px;font-size:14px;gap:10px}
  .dialog-category{font-size:10px;line-height:1.6;margin-top:24px}
  .case-dialog h2{font-size:clamp(29px,7.6vw,38px);line-height:1.15;margin-top:12px}
  .dialog-summary{font-size:16px;line-height:1.7;margin-top:16px}
  .dialog-metric{gap:17px;align-items:flex-start;padding:20px 0;margin-top:21px}
  .dialog-metric strong{font-size:36px}.dialog-metric p{font-size:13px;line-height:1.7}
  .case-narrative{gap:23px;margin-top:25px}.case-narrative h3{font-size:11px;line-height:1.6}.case-narrative p{font-size:15px;line-height:1.8}
  .dialog-tags>span{font-size:11px;padding:6px 8px;line-height:1.5}.dialog-foot{font-size:10px;line-height:1.6;align-items:center}
  .dialog-foot a{min-height:44px;align-items:center;font-size:12px}
  [data-motion='on'] .system-grid span{animation:none;opacity:.7}
  [data-motion='on'] .system-grid span:nth-child(5n+3){animation:node-breathe 7s ease-in-out infinite;animation-delay:calc(var(--node,0) * .2s)}
}
@media(max-width:360px){
  .header-controls{gap:10px}.wordmark{font-size:8px}.monogram{width:24px;font-size:27px}.theme-toggle{min-width:58px}.menu-toggle{min-width:65px}
  .hero-actions .button{font-size:13px;padding:12px 13px}.hero-actions .text-link{font-size:13px;padding-inline:3px;gap:8px}
  .hero-actions .icon{width:18px;height:18px}.signal-controls button{font-size:12px}
  .direction-flow{font-size:9px;gap:8px}.direction-flow .icon{width:15px}
  .impact-stat:not(:nth-child(2)){padding-left:9px}.impact-strip{column-gap:9px}
  .contact-actions>.button{font-size:13px;padding:12px;gap:8px}
}
@media(max-width:900px) and (max-height:500px) and (orientation:landscape){
  .site-header{height:58px;padding-top:0}.site-header nav{max-height:calc(100dvh - 58px)}
  .case-dialog{max-height:calc(100vh - 12px);max-height:calc(100dvh - 12px);padding-top:0}
  .dialog-top{position:sticky;top:0;background:var(--paper);z-index:2;padding:5px 0}
}
@media(hover:none){.button:hover,.project-row:hover .project-art{transform:none}.case-link:hover span,.button:hover span,.text-link:hover span{transform:none}}
@media print{.core-star,.contact-spark{display:none}.case-dialog{display:none}}
/* Keep phone-landscape and tablet controls as easy to tap as portrait controls. */
@media(max-width:900px){
  .case-link,.text-link,.copy-email,.work-filters button,.signal-controls button,.footer-name,.hero-foot>a{min-height:44px}
  #motion-toggle{min-height:44px}
  .footer-name,.hero-foot>a{align-items:center}
}
@media(min-width:761px) and (max-width:900px){
  .identity-flow>span{font-size:9px}
  .identity-art .visual-footer>span{font-size:9px}
  .visual-footer>span{font-size:10px}
}