/* Shared editorial details and responsive navigation. */
.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}
.eyebrow,.hero .eyebrow,.footer-label,.tech{font-size:14px}
.header nav{gap:clamp(20px,2.6vw,42px)}
.header nav a{position:relative;white-space:nowrap;min-height:44px}
.header nav a::after{content:"";position:absolute;bottom:3px;left:0;right:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .25s}
.header nav a:hover::after,.header nav a[aria-current]::after{transform:scaleX(1)}
.header nav a[aria-current]{color:var(--blue)}
.skills-grid article{transition:border-color .25s,transform .25s}
@media(hover:hover){.skills-grid article:hover{border-color:var(--blue);transform:translateY(-5px)}}
.skills-grid article>svg{transition:color .2s}
.skills-grid article:hover>svg{color:var(--navy)}
.section-head,.skills-grid article,.about-copy{scroll-margin-top:110px}
.reveal{transition:opacity .65s ease,transform .65s ease}
.reveal.is-pending{opacity:0;transform:translateY(20px)}

/* The photography moves; the message remains easy to read. */
.hero-carousel{height:min(920px,100svh);min-height:760px;background:var(--navy);touch-action:pan-y}
.hero-slides{position:absolute;inset:0;z-index:-3}
.hero-slide{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity 1.1s ease,visibility 1.1s;pointer-events:none}
.hero-slide.is-active{opacity:1;visibility:visible}
.hero-slide .hero-photo{z-index:auto;object-position:center}
.hero-carousel .hero-shade{background:linear-gradient(90deg,#091c2c9c 0%,#091c2c42 50%,#091c2c12 100%),linear-gradient(0deg,#091c2cba 0%,transparent 30%,transparent 75%,#091c2c50 100%)}
.hero-carousel .hero-content{padding-top:45px;padding-bottom:120px}
.hero-carousel h1{font-size:clamp(45px,5.1vw,79px);margin-bottom:20px}
.hero-description{font-size:17px;color:#dae5ed;margin-bottom:27px}
.hero-rail{position:absolute;bottom:32px;left:0;right:0;display:flex;align-items:end;gap:40px}
.slide-selectors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;flex:1;min-width:0}
.slide-selector{position:relative;text-align:left;border:0;background:none;color:#d0dde8;font-size:14px;padding:18px 0 14px;display:flex;align-items:center;gap:12px;min-height:64px;line-height:1.4}
.slide-selector:hover,.slide-selector.is-active{color:white}
.slide-index{font-size:12px;opacity:.75}
.slide-line{position:absolute;bottom:0;left:0;right:0;height:2px;background:#ffffff4a;overflow:hidden}
.slide-line i{display:block;width:100%;height:100%;background:white;transform:scaleX(0);transform-origin:left}
.slide-selector.is-active .slide-line i{transform:scaleX(1)}
.is-playing .slide-selector.is-active .slide-line i{animation:slide-progress 5s linear both}
.slideshow-controls{display:flex;gap:6px;align-items:center;padding-bottom:7px}
.slideshow-controls button{width:44px;height:44px;border:1px solid #ffffff65;border-radius:50%;background:#102b4333;color:white;display:grid;place-items:center;transition:background .2s}
.slideshow-controls button:hover{background:#ffffff25}
.slideshow-controls button:disabled{opacity:.5;cursor:default}
.slideshow-controls svg{width:19px;height:19px}
.slide-previous svg{transform:rotate(180deg)}
.slide-count{font-size:12px;letter-spacing:1.2px;white-space:nowrap;margin-right:13px;font-variant-numeric:tabular-nums;color:#d0dde8}
.slide-toggle .play-icon{display:none}
.slideshow-paused .slide-toggle .pause-icon{display:none}
.slideshow-paused .slide-toggle .play-icon{display:block}
@keyframes slide-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Select an application to explore it. */
.project-explorer{display:grid;grid-template-columns:.86fr 1.14fr;gap:55px;align-items:stretch}
.project-explorer:not(.is-interactive){display:block}
.project-picker{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.project-picker button{display:flex;align-items:center;text-align:left;gap:22px;width:100%;padding:26px 18px;border:0;border-bottom:1px solid var(--line);background:white;color:var(--ink);flex:1;transition:background .2s}
.project-picker button:hover{background:var(--pale)}
.project-picker button[aria-selected=true]{background:var(--pale);box-shadow:inset 3px 0 var(--blue)}
.project-picker small{display:block;font-size:12px;letter-spacing:1.3px;color:var(--muted);margin-bottom:7px}
.project-picker strong{display:block;font-size:25px;line-height:1.2;font-weight:500;letter-spacing:-.6px}
.project-picker svg{width:22px;margin-left:auto;opacity:0;transform:translateX(-6px);transition:opacity .2s,transform .2s}
.project-picker button[aria-selected=true] svg,.project-picker button:hover svg{opacity:1;transform:none}
.project-index{font-size:12px;color:var(--muted);align-self:flex-start;padding-top:1px}
.project-panels{min-width:0}
.project-panel{background:var(--navy);color:white;min-height:520px;height:100%;padding:35px 38px;display:flex;flex-direction:column;position:relative;overflow:hidden}
.project-panel+.project-panel{margin-top:25px}
.project-explorer.is-interactive .project-panel{margin-top:0;animation:panel-enter .35s ease-out}
.project-panel-top{display:flex;align-items:center;justify-content:space-between;gap:20px;color:#bdd1df}
.project-panel-top .eyebrow{font-size:12px;letter-spacing:1.5px;margin:0}
.project-panel-top svg{height:36px;width:36px}
.project-statement{font-family:var(--font-ui);font-style:normal;font-size:clamp(45px,5vw,78px);font-weight:400;color:#829fb6;line-height:1.2;margin:40px 0 26px;letter-spacing:-2px}
.project-panel-copy{margin-top:auto;max-width:37ch}
.project-panel h3{font-size:34px;font-weight:500;line-height:1.2;letter-spacing:-1px;margin-bottom:18px}
.project-panel p{font-size:18px;color:#d0dde7;line-height:1.7;margin-bottom:26px}
.project-panel .project-tags{font-size:14px;border-top:1px solid #ffffff2e;padding-top:20px}
@keyframes panel-enter{from{opacity:.6;transform:translateY(5px)}to{opacity:1;transform:none}}

/* Privacy is a first-class page in the same visual language. */
.policy-page .header{position:sticky;top:0}
.policy-hero{position:relative;padding:0 0 45px;margin-bottom:50px}
.policy-back{display:inline-flex;font-size:14px;color:var(--muted);margin-bottom:40px;border-bottom:1px solid var(--line);padding-bottom:6px}
.policy-back:hover{color:var(--blue)}
.policy-hero>.eyebrow{font-size:14px;margin-bottom:22px}
.policy-hero h1{font-size:clamp(48px,6vw,86px);margin-bottom:32px;font-weight:450;letter-spacing:-2.5px}
.policy-hero h1 em{font-size:1.06em;line-height:1.1;letter-spacing:-2px;color:#52738c}
.policy-meta{font-size:14px;gap:10px 30px}
.policy-layout{grid-template-columns:260px minmax(0,1fr);gap:70px}
.policy-toc{top:120px;max-height:calc(100svh - 150px);overflow-y:auto;padding-right:10px;scrollbar-width:thin}
.reading-status{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--muted);margin-bottom:26px}
.reading-status progress{display:block;width:100%;height:3px;border:0;appearance:none;background:var(--line);color:var(--blue)}
.reading-status progress::-webkit-progress-bar{background:var(--line)}
.reading-status progress::-webkit-progress-value{background:var(--blue)}
.reading-status progress::-moz-progress-bar{background:var(--blue)}
.policy-contents summary{list-style:none;cursor:pointer;font-size:16px;font-weight:600;padding:0 0 17px;display:flex;align-items:center;justify-content:space-between}
.policy-contents summary::-webkit-details-marker{display:none}
.policy-contents[open] summary span{transform:rotate(45deg)}
.policy-toc a{padding:8px 12px 8px 17px;border-left:2px solid transparent;margin-left:-1px}
.policy-toc a[aria-current=location]{color:var(--navy);background:var(--pale);border-left-color:var(--blue);font-weight:600}
.policy-section{scroll-margin-top:20px;margin-bottom:38px}
.policy-section:not(:first-child){padding-top:28px;border-top:1px solid var(--line)}
.policy-article .section-num{font-size:12px;letter-spacing:1.6px;color:#52738c}
.policy-article .policy-section h2{font-size:29px;margin-bottom:20px}
.policy-article p,.policy-article li{color:#52677b;line-height:1.9}
.policy-article .info-box{padding:28px 30px;background:#f0f5f8;border-left-width:2px;color:var(--ink)}
.policy-article .perm-table th{font-size:15px;padding:16px}
.policy-article .perm-table td{padding:16px;font-size:15px}
.policy-article .contact-box{padding:30px;background:var(--navy);color:white}
.policy-article .contact-box p,.policy-article .contact-row-pp .label{color:#c1d2df}
.policy-article .contact-rows{border-color:#ffffff35}
.policy-article .contact-row-pp a{color:white}

@media(max-width:1150px){.header-inner{gap:24px}.header nav{gap:22px;font-size:13px}.header-language{padding-left:16px}.hero-rail{gap:25px}.slide-selectors{gap:20px}.slide-selector{gap:8px;font-size:14px}.slide-count{display:none}.project-explorer{gap:30px;grid-template-columns:1fr 1.1fr}.project-picker button{gap:15px;padding:24px 14px}.project-picker strong{font-size:23px}.policy-layout{grid-template-columns:230px minmax(0,1fr);gap:40px}}
@media(max-width:980px){.header-inner{height:80px;gap:20px}.header-language{display:none}.menu-toggle{display:flex;align-items:center;gap:15px;background:none;border:1px solid #a4b4c2;color:inherit;padding:6px 12px;font-size:14px}.header nav{display:none;position:absolute;top:79px;left:0;right:0;padding:20px 36px;background:white;color:var(--navy);border-bottom:1px solid var(--line);gap:8px}.header nav.open{display:flex;flex-direction:column;align-items:stretch}.header nav a::after{display:none}.hero-rail{display:grid;gap:20px}.slideshow-controls{justify-self:end;padding:0}.slide-count{display:block}.hero-carousel .hero-content{padding-bottom:155px}.policy-toc{top:105px}.project-picker strong{font-size:21px}.project-panel{padding:28px}.project-panel h3{font-size:29px}}
@media(max-width:760px){.header-inner{height:77px}.header nav{top:76px;padding:20px}.hero-carousel{height:100svh;min-height:735px;max-height:940px}.hero-carousel .hero-content{padding-top:25px;padding-bottom:170px}.hero-carousel h1{font-size:clamp(36px,8.8vw,62px);margin-bottom:15px}.hero-carousel h1 em{white-space:normal;letter-spacing:-1.6px}.hero-carousel .hero-shade{background:linear-gradient(90deg,#081e33ce,#102b4870),linear-gradient(0deg,#081e33c4,transparent 40%)}.hero-slide .hero-photo{object-position:63% center}.hero-description{font-size:16px;max-width:30ch;line-height:1.6;margin-bottom:24px}.hero .eyebrow{font-size:12px;letter-spacing:1.3px}.hero-rail{bottom:25px;gap:18px}.slide-selectors{gap:15px}.slide-selector{display:block;padding:10px 0 14px;font-size:14px;line-height:1.4;min-height:83px}.slide-index{display:block;margin-bottom:7px}.slide-selector>span:nth-child(2){display:block;max-width:11ch}.slideshow-controls{gap:8px}.slideshow-controls button{width:44px;height:44px}.slide-count{margin-right:12px}.hero-carousel a.hero-link{min-height:44px}.project-explorer{grid-template-columns:1fr;gap:24px}.project-picker{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}.project-picker button{padding:18px 12px;gap:10px;min-height:97px}.project-picker button:nth-child(odd){border-right:1px solid var(--line)}.project-picker strong{font-size:18px;letter-spacing:-.4px}.project-picker small{font-size:12px;letter-spacing:.7px;margin-bottom:6px;line-height:1.4}.project-picker svg{display:none}.project-index{font-size:12px}.project-panel{min-height:405px;padding:28px}.project-statement{font-size:58px;margin:25px 0}.project-panel h3{font-size:30px}.project-panel p{font-size:17px;margin-bottom:22px}.policy-hero{padding-bottom:30px;margin-bottom:30px}.policy-back{margin-bottom:30px}.policy-hero h1{font-size:52px;letter-spacing:-1.6px;margin-bottom:27px}.policy-hero h1 em{font-size:1em;letter-spacing:-1.6px;white-space:normal}.policy-layout{grid-template-columns:1fr;gap:30px}.policy-toc{position:static;max-height:none;overflow:visible;padding:0;border-bottom:1px solid var(--line);padding-bottom:15px}.reading-status{margin-bottom:20px}.policy-contents summary{padding-bottom:5px}.policy-contents[open] summary{padding-bottom:16px}.policy-toc a{padding:10px;font-size:14px}.policy-toc ul{gap:3px 7px}.policy-section{scroll-margin-top:15px}.policy-article .info-box{padding:22px}.policy-article .policy-section h2{font-size:27px}.policy-article .contact-box{padding:24px}.policy-article .perm-table{min-width:540px}.policy-article .contact-row-pp{font-size:15px}.reveal.is-pending{transform:translateY(12px)}}
@media(max-width:380px){.hero-carousel{min-height:730px}.hero-carousel h1{font-size:35px}.hero-carousel .hero-content{padding-top:25px}.hero-description{font-size:15px}.slide-selectors{gap:10px}.slide-selector{font-size:13px}.project-picker button{padding:15px 9px;gap:7px}.project-picker strong{font-size:17px}.project-panel{padding:25px}.project-statement{font-size:50px}.policy-hero h1{font-size:44px}.policy-toc ul{grid-template-columns:1fr 1fr}.policy-toc a{font-size:13px;padding:9px 7px}}
.reduce-motion .reveal.is-pending{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.reveal.is-pending{opacity:1;transform:none}.hero-slide{transition:none}}
