@font-face{font-family:Jalvair;src:url('/type/Jalvair.otf') format('opentype');font-weight:400;font-display:swap}
@font-face{font-family:Parceh;src:url('/type/Parceh.otf') format('opentype');font-weight:400;font-display:swap;unicode-range:U+0020,U+0026,U+002C,U+002E,U+0041-005A,U+0061-007A}
@font-face{font-family:DM Sans;src:url('/type/dm-sans.woff2') format('woff2');font-weight:400 700;font-display:swap}
:root{color-scheme:dark;--paper:#101d17;--surface:#192b21;--ink:#e8ede2;--muted:#a3b3a6;--accent:#dfb7c5;--line:#354b3c;--glass:#15251ce6;--shadow:#040c0740;--serif:Parceh,Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--gutter:clamp(24px,6vw,100px);--ease:cubic-bezier(.22,.75,.18,1);--scroll-thumb:#526b59;--scroll-hover:#a3b3a6;--scroll-active:#dfb7c5}
:root[data-theme=light]{color-scheme:light;--paper:#e7eddf;--surface:#d9e4d2;--ink:#263e2e;--muted:#586f5d;--accent:#824b61;--line:#b6c8af;--glass:#eef3e7eb;--shadow:#243b2c14;--scroll-thumb:#81967d;--scroll-hover:#586f5d;--scroll-active:#824b61}
*,*::before,*::after{box-sizing:border-box}
*{scrollbar-color:var(--scroll-thumb) var(--paper);scrollbar-width:thin}
::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border:2px solid var(--paper);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--scroll-hover)}::-webkit-scrollbar-thumb:active{background:var(--scroll-active)}
html{scroll-behavior:smooth;scroll-padding-top:100px;scrollbar-gutter:stable}
body{margin:0;background:var(--paper);color:var(--ink);font:400 15px/1.7 var(--sans);overflow-wrap:break-word;-webkit-font-smoothing:antialiased}
::selection{background:var(--accent);color:var(--paper)}
h1,h2,h3,h4,p,figure{margin:0}h1,h2,h3,h4{font-weight:400}a{color:inherit;text-decoration:none}button,select{font:inherit;color:inherit}button,a,select{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button,a,select{cursor:pointer}button:disabled{cursor:default;opacity:.5}svg,img{display:block;max-width:100%}[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--accent);outline-offset:5px}main:focus{outline:none}
.wrap{max-width:1440px;margin-inline:auto;padding-inline:var(--gutter);width:100%}.section{padding-block:95px}.eyebrow{font-size:10px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);line-height:1.6}.accent{color:var(--accent)}
h2{font:clamp(40px,4.5vw,67px)/1.16 var(--serif);letter-spacing:-.02em}.arrow{width:20px;height:20px;flex:none;transition:transform .3s var(--ease)}a:hover>.arrow{transform:translate(3px,-3px)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;padding:0;border:0}.skip-link{position:fixed;top:12px;left:12px;z-index:200;padding:12px 20px;background:var(--ink);color:var(--paper);transform:translateY(-160%)}.skip-link:focus{transform:none}.pending{font-size:12px;line-height:1.8;color:var(--muted)}
.text-link,.button{display:inline-flex;align-items:center;gap:20px;min-height:44px;font-size:12px}.text-link:hover{color:var(--accent)}.button{padding:12px 24px;border:1px solid var(--line);border-radius:99px;background:var(--surface)}.button:hover{background:var(--ink);color:var(--paper)}
/* Shared expanding-fill action, adapted to this palette from Obsidian DiscoverButton. */
.discover-button{position:relative;display:inline-flex;align-items:center;min-height:54px;max-width:100%;overflow:hidden;border:1px solid var(--line);border-radius:99px;background:var(--surface);font-size:12px;line-height:1.3;isolation:isolate;transition:transform .2s}
.discover-fill{position:absolute;inset:4px auto 4px 4px;width:44px;border-radius:inherit;background:var(--ink);transition:width .48s cubic-bezier(.65,0,.076,1);z-index:-1}.discover-icon{display:grid;place-items:center;width:52px;height:52px;flex:none;color:var(--paper);transition:transform .48s var(--ease)}.discover-label{padding:0 24px 0 10px;transition:color .3s}.discover-button:is(:hover,:focus-visible) .discover-fill{width:calc(100% - 8px)}.discover-button:is(:hover,:focus-visible) .discover-label{color:var(--paper)}.discover-button:is(:hover,:focus-visible) .discover-icon{transform:translateX(5px)}.discover-button:active{transform:scale(.98)}.section-action{display:flex;justify-content:center;margin-top:44px}
/* Only the homepage owns global navigation. */
.site-header{position:fixed;inset:0 0 auto;z-index:50;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:max(26px,env(safe-area-inset-top)) max(38px,env(safe-area-inset-right)) 26px max(38px,env(safe-area-inset-left));pointer-events:none;color:var(--ink)}.site-header>*{pointer-events:auto}
.navigation{position:relative;display:flex;align-items:center;gap:2px;padding:6px;min-width:0;border:1px solid var(--line);border-radius:99px;background:var(--glass);box-shadow:0 5px 30px var(--shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:transform .4s var(--ease),background-color .25s var(--ease),border-color .25s var(--ease);transform-origin:50% 0}.site-header.is-compact .navigation{transform:scale(.89)}
.navigation>a{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;flex:none;min-height:44px;padding:12px 14px;border-radius:99px;font-size:11px;white-space:nowrap;line-height:1.4;transition:color .25s}.navigation>a:hover{color:var(--accent)}.nav-indicator{position:absolute;left:0;top:6px;height:calc(100% - 12px);width:0;border-radius:99px;background:var(--ink);opacity:0;transition:transform var(--nav-speed,300ms) var(--ease),width var(--nav-speed,300ms) var(--ease),opacity .2s;will-change:transform}.navigation>a[aria-current]{color:var(--paper)}.navigation:not(.nav-ready)>a[aria-current]{background:var(--ink)}
.theme-toggle,.header-resume{border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(16px);box-shadow:0 4px 24px var(--shadow);height:46px;border-radius:99px}.theme-toggle{justify-self:start;position:relative;display:grid;place-items:center;width:46px}.theme-toggle svg{position:absolute;width:20px;height:20px;transition:opacity .4s,transform .5s var(--ease)}[data-theme=dark] .moon,[data-theme=light] .sun{opacity:0;transform:rotate(-60deg) scale(.7)}[data-theme=dark] .sun,[data-theme=light] .moon{opacity:1;transform:rotate(0) scale(1)}.header-resume{justify-self:end;display:flex;gap:16px;align-items:center;padding:0 18px;font-size:11px}.header-resume .arrow{width:16px;height:16px}.hero-control{transition:opacity .35s var(--ease),transform .4s var(--ease)}.site-header:not(.over-hero) .hero-control{opacity:0;transform:translateY(-16px);pointer-events:none}.over-hero{color:#f3eee5}.over-hero .navigation,.over-hero .hero-control{--ink:#f3eee5;--paper:#203126;--line:#edf5e340;--glass:#13251ba8;--accent:#f2cdd7}
/* Fixed photo composition; the light blend moves through foliage greens into sage. */
.footer-signature [data-signature-letter]>path{stroke:currentColor;stroke-width:6;stroke-linejoin:round;stroke-linecap:round;paint-order:stroke fill}
.contact-email>a{transition:color .2s}
.contact-email>a:focus-visible,.social-links .text-link:focus-visible{color:var(--accent)}
.social-links .text-link>.arrow{width:16px;height:16px}
.subpage-theme-toggle{position:fixed;z-index:50;top:max(24px,env(safe-area-inset-top));right:max(24px,env(safe-area-inset-right))}
.inner-page .back-link,.inner-page .project-breadcrumb{max-width:calc(100% - 64px)}
@media(max-width:600px){.subpage-theme-toggle{top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right))}}
.hero{position:relative;isolation:isolate;min-height:620px;height:100svh;max-height:1200px;display:grid;place-items:center;overflow:hidden;transition:opacity .7s var(--ease)}.hero-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:-3}.hero-shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,#07130c12,#07130c0d 45%,#07130c05)}.hero::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:18%;z-index:-1;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--paper) 18%,transparent) 26%,color-mix(in srgb,var(--paper) 66%,transparent) 67%,var(--paper))}.hero-title{padding:0 25px 24px;text-align:center;color:#f6e6e7;width:100%}.hero h1{font:clamp(60px,8.45vw,136px)/1.25 Jalvair,Georgia,serif;letter-spacing:.005em;text-shadow:0 4px 24px #06170db3}.booting .hero{opacity:0}
.intro-layout{display:grid;grid-template-columns:1.3fr 1fr;align-items:center;gap:12%;padding:25px 0 90px;min-height:650px}.intro-copy .eyebrow{margin-bottom:22px}.intro-copy h2{margin-bottom:26px}.intro-copy>p:not(.eyebrow){font-size:17px;line-height:1.9;color:var(--muted)}.intro-copy>p+p{margin-top:17px}.intro-note{font-size:11px;color:var(--muted);margin-top:24px}.intro-links{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-top:28px}.portrait-wrap{width:100%;max-width:375px;justify-self:end;perspective:1200px}.portrait{position:relative;overflow:hidden;border-radius:180px 180px 26px 26px;aspect-ratio:3/4.2;transform:perspective(1000px) rotateX(var(--portrait-x,0deg)) rotateY(var(--portrait-y,0deg));transition:transform .35s var(--ease);background:var(--surface);box-shadow:0 22px 55px var(--shadow)}.home-page .portrait img{object-position:center 44%}.portrait img{width:100%;height:100%;object-fit:cover;object-position:58% 34%}.portrait-sheen{position:absolute;inset:0;pointer-events:none;background:linear-gradient(120deg,#fff0 20%,#fff2 50%,#fff0 80%);opacity:0;transform:translateX(-50%);transition:opacity .4s,transform .7s}.portrait:hover .portrait-sheen{opacity:.28;transform:translateX(40%)}
.ambient-signal{max-width:300px;margin-top:22px}.ambient-signal svg{width:100%;height:60px;stroke:var(--accent)}.signal-rail{stroke:var(--line);stroke-width:1}.signal-flow{stroke-dasharray:.09 .91;stroke-width:1.7;animation:signal-travel 4s linear infinite}.signal-flow.alternate{animation-delay:-2s}.ambient-signal>div{display:flex;justify-content:space-between;color:var(--muted);font-size:9px;letter-spacing:.08em}.ambient-signal circle{fill:var(--paper)}
.skills-layout{display:grid;grid-template-columns:1fr 1.8fr;gap:30px;align-items:center;padding:55px 0 10px;border-top:1px solid var(--line)}.skills-copy h2{font-size:clamp(34px,3.3vw,48px);margin:20px 0 28px}.skills-stage{position:relative;height:auto;aspect-ratio:800/440;isolation:isolate}.skill-orbits{position:absolute;width:100%;height:100%;stroke:var(--line);stroke-width:.85;transform:rotate(var(--orbit-angle,0deg));transition:transform .15s linear}.skill-orbits>ellipse:nth-child(2){stroke-dasharray:2 7}.skill-orbit-highlight{stroke:var(--accent);stroke-width:1.7;stroke-dasharray:.15 .85;stroke-dashoffset:var(--orbit-offset,0);transition:stroke-dashoffset .12s linear;opacity:.75}.skill-orbit-highlight.second{stroke:var(--muted);stroke-dasharray:.07 .93;stroke-dashoffset:calc(var(--orbit-offset,0) * -1)}
.skill-node{position:absolute;left:var(--x);top:var(--y);display:flex;gap:9px;align-items:center;padding:10px 15px 10px 10px;background:var(--paper);border:1px solid var(--line);border-radius:99px;font-size:12px;line-height:1.4;white-space:nowrap;box-shadow:0 6px 20px var(--shadow);transform:translate(-50%,-50%);transition:transform .3s var(--ease),border-color .25s}.skill-node:hover{border-color:var(--accent);transform:translate(-50%,-50%) scale(1.09);z-index:2}.skill-node img{width:27px;height:27px;padding:3px;background:#e7eddf;border-radius:50%;object-fit:contain}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:35px;margin-bottom:50px}.section-heading .eyebrow{margin-bottom:22px}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:65px 50px}.project-card{min-width:0}.project-art{position:relative;display:block;overflow:hidden;border-radius:22px;background:var(--surface);padding:12px 15px;transition:transform .5s var(--ease)}.project-card:hover .project-art{transform:translateY(-5px)}.project-diagram{width:100%;aspect-ratio:600/360;color:var(--ink);height:auto}.accent-stroke{stroke:var(--accent)}.diagram-label{fill:var(--muted);font:10px var(--sans);letter-spacing:.7px}.art-caption{display:block;text-align:center;font-size:8px;letter-spacing:.1em;color:var(--muted);padding:0 0 9px}.project-card-meta{display:flex;justify-content:space-between;gap:16px;margin-top:23px;font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.project-card h3{font:28px/1.4 var(--serif);margin-top:10px;letter-spacing:-.02em}.project-card h3>a{display:flex;justify-content:space-between;align-items:center;gap:20px}.project-card h3>a:hover{color:var(--accent)}.project-card>p{font-size:13px;color:var(--muted);line-height:1.85;margin-top:12px;max-width:520px}.project-status{display:inline-block;margin-top:17px;font-size:10px;color:var(--accent)}.award{display:inline-flex;align-items:center;gap:10px;margin-top:18px;padding:8px 14px 8px 9px;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:40px;color:var(--accent);font-size:10px;background:color-mix(in srgb,var(--accent) 6%,transparent)}.award svg{width:30px;height:30px}
.role-preview{position:relative;display:grid;grid-template-columns:1fr 180px 24px;gap:30px;align-items:center;padding:36px 0;border-top:1px solid var(--line)}.role-preview:last-child{border-bottom:1px solid var(--line)}.role-preview h3{font:clamp(22px,2.5vw,34px)/1.4 var(--serif);transition:transform .4s var(--ease),color .2s}.role-preview p{font-size:12px;color:var(--muted);margin-top:6px}.role-preview-date{font-size:11px;color:var(--muted);text-align:right}.role-preview:hover h3{color:var(--accent);transform:translateX(7px)}
.learning-section{padding-block:70px}.learning-section h2{margin-top:18px}.education-compact{margin-top:32px}.education-compact>a{display:grid;grid-template-columns:1fr auto 24px;gap:30px;align-items:center;border-top:1px solid var(--line);padding:25px 0}.education-compact h3{font:clamp(22px,2.5vw,34px)/1.4 var(--serif);transition:transform .4s var(--ease),color .2s}.education-compact p,.education-compact>a>span:nth-child(2){color:var(--muted);font-size:11px}.education-compact>a>span:nth-child(2){text-align:right}.education-compact small{font-size:9px}.education-compact>a:is(:hover,:focus-visible) h3{color:var(--accent);transform:translateX(7px)}
.marquee{width:100%;overflow:hidden;touch-action:auto;cursor:grab;padding:15px 0 20px;isolation:isolate}.marquee.is-dragging{cursor:grabbing}.marquee-track{display:flex;width:max-content;will-change:transform}.marquee-set{display:flex;gap:28px;padding-right:28px}.marquee-set img{flex:none;width:360px;height:240px;object-fit:cover;border-radius:14px;user-select:none;-webkit-user-drag:none}.gallery-controls{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:16px}.circle-control{display:grid;place-items:center;width:44px;height:44px;background:transparent;border:1px solid var(--line);border-radius:50%}.circle-control:hover{background:var(--surface)}[data-marquee-prev] .arrow{transform:rotate(180deg)}.marquee-pause{min-width:60px;min-height:44px;font-size:10px;background:none;border:0;color:var(--muted)}.certifications-section .section-action{margin-top:22px}
.contact-section h2{font-size:clamp(44px,5.6vw,80px);margin-top:25px}.contact-email{display:flex;justify-content:space-between;align-items:center;gap:30px;padding:30px 0;margin-top:40px;border-block:1px solid var(--line)}.contact-email>a{display:flex;align-items:center;gap:15px;font-size:clamp(14px,1.8vw,26px);letter-spacing:-.03em;overflow-wrap:anywhere;min-width:0}.contact-email>a:hover{color:var(--accent)}.copy-email{position:relative;flex:none;background:var(--ink);color:var(--paper);border:1px solid var(--ink);border-radius:25px;font-size:11px;width:120px;height:46px;overflow:hidden;transition:box-shadow .25s,transform .25s}.copy-email:hover{box-shadow:0 0 0 4px color-mix(in srgb,var(--ink) 12%,transparent)}.copy-email:active{transform:scale(.97)}.copy-idle,.copy-done{position:absolute;inset:0;display:flex;gap:8px;align-items:center;justify-content:center;transition:transform .35s var(--ease),opacity .3s}.copy-done{transform:translateY(100%);opacity:0}.copy-done svg{width:17px;height:17px}.copy-done path{stroke-dasharray:24;stroke-dashoffset:24;transition:stroke-dashoffset .4s .15s}.copy-email.copied .copy-idle{transform:translateY(-100%);opacity:0}.copy-email.copied .copy-done{transform:none;opacity:1}.copy-email.copied .copy-done path{stroke-dashoffset:0}.social-links{display:flex;gap:30px;flex-wrap:wrap;margin-top:30px}.social-links .text-link{font-size:12px;gap:12px}.site-footer{padding-block:35px 45px;text-align:center;color:var(--ink);border-top:1px solid var(--line)}.site-footer p{font-size:10px;margin-bottom:9px}.footer-name{display:inline-flex;align-items:center;justify-content:center;width:clamp(210px,21vw,260px);max-width:100%;min-height:64px;color:var(--ink)}.footer-signature{display:block;width:100%;height:auto;overflow:visible}.signature-ready .signature-stroke{stroke-dasharray:1;stroke-dashoffset:0}
/* Collection routes have only local back navigation. */
.collection,.project-page{padding-top:55px;padding-bottom:85px}.collection-heading{margin-bottom:65px;max-width:900px}.back-link,.project-breadcrumb>a{display:inline-flex;align-items:center;gap:15px;font-size:11px;min-height:44px;color:var(--muted)}.back-link .arrow,.project-breadcrumb>a .arrow{transform:rotate(180deg);width:16px}.collection-heading>.eyebrow{margin-top:40px}.collection-heading h1,.project-heading h1{font:clamp(48px,6.5vw,92px)/1.25 var(--serif);letter-spacing:-.035em;margin-top:20px}.collection-heading>p:not(.eyebrow){font-size:15px;color:var(--muted);margin-top:20px;max-width:600px}.experience-record{display:grid;grid-template-columns:1fr 1.4fr;gap:12%;padding:50px 0;border-top:1px solid var(--line);scroll-margin-top:40px}.experience-record h2{font-size:29px;line-height:1.4;margin-top:14px}.record-role{margin-bottom:22px}.record-role h3{font-size:16px}.record-role>span{font-size:10px;color:var(--muted)}.experience-record p,.experience-record li{font-size:13px;color:var(--muted);line-height:1.9}.experience-record ul{padding-left:18px}.tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:23px}.tags>span{border:1px solid var(--line);border-radius:22px;padding:6px 12px;font-size:10px;color:var(--muted)}
.sort-bar{display:flex;align-items:center;gap:15px;margin:0 0 30px;font-size:12px}.sort-bar label{color:var(--muted)}.sort-bar select,.sort-direction{border:1px solid var(--line);background:var(--surface);border-radius:8px;min-height:44px;padding:9px 15px}.sort-direction{min-width:145px}.certificate-row{display:grid;grid-template-columns:1fr 140px;gap:30px;align-items:center;padding:35px 0;border-top:1px solid var(--line)}.certificate-row h2{font-size:29px;line-height:1.45;margin-top:10px}.certificate-row p:not(.eyebrow){font-size:12px;color:var(--muted);margin-top:10px}.certificate-row>.pending{text-align:right;font-size:10px}
.about-detail{display:grid;grid-template-columns:1.4fr 1fr;gap:12%;align-items:start}.about-detail p{font-size:17px;line-height:1.9;color:var(--muted);margin-bottom:22px}.about-detail-photo{margin:0;border-radius:160px 160px 24px 24px;max-width:360px;width:100%;justify-self:end;height:auto;aspect-ratio:3/4.2;object-fit:cover}.about-toolkit-link{display:flex;justify-content:space-between;align-items:center;margin-top:70px;padding-top:30px;border-top:1px solid var(--line)}
.curiosity-mark{width:min(300px,100%);margin-top:20px;color:var(--accent)}
.curiosity-mark svg{display:block;width:100%;height:auto;overflow:visible}
.curiosity-rail{stroke:var(--line);stroke-width:1}
.curiosity-bloom{stroke:currentColor;stroke-width:1;transform-origin:160px 50px;animation:curiosity-turn 18s linear infinite}
.curiosity-seed,.curiosity-spark{fill:currentColor}
.curiosity-seed{transform-origin:160px 50px;animation:curiosity-breathe 3.5s ease-in-out infinite}
.curiosity-spark{animation:curiosity-glimmer 3.5s ease-in-out infinite}.curiosity-spark.second{animation-delay:-1.75s}
@keyframes curiosity-turn{to{transform:rotate(180deg)}}
@keyframes curiosity-breathe{50%{transform:scale(.6);opacity:.45}}
@keyframes curiosity-glimmer{50%{opacity:.2}}
.toolkit-group{border-top:1px solid var(--line);padding:65px 0 95px;scroll-margin-top:65px}
.toolkit-group:focus{outline:none}
.toolkit-group h2{font-size:43px;margin:16px 0 45px}
.toolkit-grid{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:45px 30px;list-style:none;padding:0;margin:0}
.toolkit-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:17px;min-width:0;transform-origin:0 0;transform:translate(var(--item-x,0px),var(--item-y,0px)) scale(var(--item-scale,1))}
.toolkit-logo{display:grid;place-items:center;flex:none;width:88px;height:88px;border-radius:50%;background:#e7eddf;box-shadow:0 8px 26px var(--shadow)}
:root[data-theme=light] .toolkit-page .toolkit-logo{background:#d9e4d2}
.toolkit-logo img{width:50px;height:50px;object-fit:contain}
.toolkit-name{font-size:14px;text-align:center;opacity:var(--label-opacity,1)}
.quantum-concepts{margin-top:34px;color:var(--muted);font-size:12px}
.project-breadcrumb{display:flex;align-items:center;justify-content:space-between;gap:20px}
.project-heading{padding-top:35px;max-width:1000px}
.project-subtitle{font-size:18px;color:var(--muted);margin-top:22px}
.project-overview{display:grid;grid-template-columns:1fr 1fr;gap:12%;margin-top:45px}
.large-copy{font-size:21px;line-height:1.8}
.project-facts{margin:0}
.project-facts>div{display:grid;grid-template-columns:70px 1fr;gap:20px;border-top:1px solid var(--line);padding:13px 0}
.project-facts dt{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.project-facts dd{margin:0;font-size:12px}
.project-resources{display:flex;flex-wrap:wrap;gap:15px;margin:32px 0 45px}
.detail-visual{padding:30px 13%;border-radius:22px;background:var(--surface)}
.detail-visual .project-diagram{max-height:390px}
.detail-visual figcaption{text-align:center;font-size:8px;margin-top:15px}
.project-body{display:grid;grid-template-columns:1fr 2fr;gap:12%;padding:65px 0}
.stack-list{list-style:none;padding:0;font-size:13px;color:var(--muted);line-height:2.2}
.project-narrative section+section{margin-top:40px}
.project-narrative h2{font-size:33px;line-height:1.4;margin:12px 0 20px}
.project-narrative p{font-size:14px;color:var(--muted);line-height:1.95}
.project-narrative p+p{margin-top:18px}
.project-metric{padding:25px 0;border-block:1px solid var(--line);margin-top:25px}
.project-metric strong{font:58px var(--serif);color:var(--accent)}
.project-metric figcaption{font-size:12px;margin-top:14px}
.project-metric small{display:block;font-size:10px;color:var(--muted);margin-top:7px}
.project-pending{padding:20px;border:1px dashed var(--line);border-radius:15px}
.project-pending h2{font-size:23px;margin-top:0}
.project-pending ul{font-size:12px;color:var(--muted);line-height:1.9;padding-left:18px;margin-bottom:0}
.next-project{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);align-items:center;gap:25px;padding:35px 0;border-top:1px solid var(--line)}
.next-project>span:nth-child(2){font:35px/1.5 var(--serif);text-align:center;overflow-wrap:anywhere}
.next-project>.arrow{justify-self:end}
.next-project:hover{color:var(--accent)}
.not-found{min-height:75vh;padding-block:clamp(100px,15vw,180px) 80px}
.not-found h1{font:clamp(36px,6vw,65px)/1.25 var(--serif);margin-block:30px}
.not-found>p:not(.eyebrow){max-width:680px;margin-top:14px}.not-found-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}.not-found-actions .button{justify-content:center;padding:12px 18px;max-width:100%}

/* Motion and responsive fallbacks also keep content usable without JavaScript. */
.marquee{overflow-x:auto;scroll-behavior:auto}
@keyframes signal-travel{to{stroke-dashoffset:-1}}
@keyframes logo-float{50%{transform:translateY(-5px)}}
@keyframes page-enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:no-preference){
 .reveal-ready{transition:opacity .5s var(--ease),transform .55s var(--ease);transition-delay:calc(var(--stagger,0)*40ms)}
 .reveal-ready:not(.is-visible){opacity:0;transform:translateY(20px)}
 .reveal-ready:focus-within{opacity:1;transform:none}
 @view-transition{navigation:auto}
 ::view-transition-old(root){animation-duration:.25s}
 ::view-transition-new(root){animation:page-enter .35s var(--ease)}
 .theme-changing::view-transition-new(root){animation:none;mix-blend-mode:normal}
 .theme-changing::view-transition-old(root){animation:none;mix-blend-mode:normal}
 ::view-transition{pointer-events:none}
}
@media(max-width:1100px){
 .site-header{padding:22px;gap:12px}.navigation>a{font-size:10px;padding:12px 10px}.intro-layout{gap:8%}.skills-layout{gap:15px;grid-template-columns:1fr 1.7fr}.skill-node{font-size:10px;padding:8px;gap:6px}.skill-node img{width:23px;height:23px}.project-grid{gap:45px 30px}.header-resume{padding-inline:13px;gap:8px}.toolkit-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:800px){
 :root{--gutter:28px}.site-header{grid-template-columns:1fr 1fr;row-gap:12px;padding:16px 22px}.theme-toggle{grid-column:1;grid-row:1}.header-resume{grid-column:2;grid-row:1}.navigation{grid-column:1/-1;grid-row:2;justify-self:center;max-width:100%}.navigation>a{padding:12px 11px;font-size:12px}.site-header:not(.over-hero) .navigation{transform:translateY(-58px)}.site-header.is-compact .navigation{transform:none}.site-header.is-compact:not(.over-hero) .navigation{transform:translateY(-58px)}.hero h1{font-size:8.75vw}.section{padding-block:70px}.intro-copy>p:not(.eyebrow){font-size:15px}.intro-layout{gap:7%;padding-bottom:60px}.skills-layout{display:block}.skills-stage{max-width:650px;margin:20px auto 0}.skills-copy h2 br{display:none}.skills-copy h2{margin-block:15px 22px}.project-card h3{font-size:25px}.experience-record{gap:7%}.contact-email>a{font-size:17px;gap:15px}.collection-heading h1,.project-heading h1{font-size:clamp(42px,7.4vw,60px)}.role-preview{grid-template-columns:1fr 145px 20px;gap:20px}.project-overview,.project-body{gap:7%}.about-detail{gap:8%}
}
@media(max-width:600px){
 :root{--gutter:clamp(20px,5.5vw,28px)}html{scroll-padding-top:100px}.site-header{padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) 12px max(12px,env(safe-area-inset-left));gap:10px}.navigation{width:100%;justify-content:flex-start;gap:2px;padding:5px;overflow-x:auto;overscroll-behavior-x:contain;scroll-padding-inline:8px;scrollbar-width:thin;border-radius:30px}.navigation>a{font-size:12px;padding:12px 15px;min-height:46px}.navigation>a:focus-visible{outline-offset:-3px}.nav-indicator{top:5px;height:46px}.site-header.is-compact .navigation{transform:none}.site-header.is-compact:not(.over-hero) .navigation{transform:translateY(-58px)}.theme-toggle{width:44px;height:44px}.header-resume{height:44px;font-size:12px}.header-resume .arrow{display:none}.hero{height:100svh;min-height:500px}.hero h1{font-size:12.55vw;line-height:1.5}.hero-title{padding-inline:17px}.hero-image{object-position:52% center}.hero::after{height:17%}h2{font-size:39px}.section{padding-block:58px}.intro-layout{display:flex;flex-direction:column;gap:35px;padding:0 0 55px}.intro-copy h2{font-size:40px}.intro-copy>p:not(.eyebrow){font-size:15px}.portrait-wrap{width:80%;max-width:320px;align-self:center}.intro-links{margin-top:24px}.discover-button{font-size:11px;min-height:52px}.discover-label{padding-right:20px}.skills-stage{height:auto;min-height:300px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-content:center;gap:20px 8px;margin:24px 0 0;padding:28px 0}.skill-node{position:relative;inset:auto;transform:none;flex-direction:column;justify-content:center;min-width:0;font-size:11px;padding:12px 5px;gap:8px;border-radius:18px;white-space:normal;text-align:center}.skill-node:hover{transform:none}.skill-node img{width:30px;height:30px}.skill-orbits{inset:0;opacity:.6}.skills-copy h2{font-size:34px}.section-heading{margin-bottom:32px}.project-grid{grid-template-columns:1fr;gap:38px}.project-card h3{font-size:28px}.project-art{padding:10px}.role-preview{grid-template-columns:1fr 20px;gap:8px;padding:26px 0}.role-preview-date{grid-column:1;text-align:left}.role-preview>.arrow{grid-column:2;grid-row:1/3}.role-preview h3{font-size:26px}.education-compact>a{grid-template-columns:1fr 20px;gap:14px}.education-compact>a>span:nth-child(2){grid-column:1;text-align:left}.education-compact>a>.arrow{grid-column:2;grid-row:1/3}.education-compact h3{font-size:26px}.marquee-set{gap:18px;padding-right:18px}.marquee-set img{width:min(280px,80vw);height:auto;aspect-ratio:3/2}.contact-section h2{font-size:43px}.contact-email{display:flex;justify-content:space-between;gap:12px;margin-top:28px;padding-block:22px}.contact-email>a{font-size:18px;gap:10px;overflow-wrap:anywhere;word-break:break-word}.contact-email>a .arrow{width:16px}.copy-email{order:0;margin-top:0;margin-left:auto;width:72px;height:36px;font-size:10px}.social-links{gap:12px 24px}.social-links .text-link{font-size:13px}.collection,.project-page{padding-top:25px;padding-bottom:55px}.collection-heading{margin-bottom:35px}.collection-heading h1,.project-heading h1{font-size:44px;overflow-wrap:anywhere}.collection-heading>.eyebrow{margin-top:28px}.collection-heading>p:not(.eyebrow){font-size:13px}.experience-record{display:block;padding-block:30px}.experience-record h2{font-size:28px;margin-bottom:24px}.certificate-row{grid-template-columns:1fr;gap:12px;padding-block:27px}.certificate-row h2{font-size:26px;overflow-wrap:anywhere}.certificate-row>.pending{text-align:left}.sort-bar{gap:10px;flex-wrap:wrap;font-size:13px}.sort-bar select{font-size:16px}.sort-direction{min-width:130px}.about-detail{display:flex;flex-direction:column;gap:35px}.about-detail p{font-size:15px}.about-detail-photo{width:80%;max-width:310px}.about-toolkit-link{flex-direction:column;align-items:flex-start;gap:28px;margin-top:45px}.toolkit-group{padding:40px 0 65px}.toolkit-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 10px}.toolkit-logo{width:66px;height:66px}.toolkit-logo img{width:38px;height:38px}.toolkit-name{font-size:12px}.toolkit-group h2{font-size:34px;margin-bottom:30px}.project-overview{display:block;margin-top:25px}.project-facts{margin-top:25px}.project-subtitle{font-size:16px}.large-copy{font-size:18px}.project-body{display:flex;flex-direction:column-reverse;gap:30px;padding-block:35px}.project-narrative h2{font-size:28px}.detail-visual{padding:20px 8px}.project-breadcrumb{gap:12px}.project-breadcrumb>.eyebrow{font-size:8px}.project-resources{margin-block:25px}.next-project{grid-template-columns:22px minmax(0,1fr) 22px;gap:14px}.next-project>.eyebrow{grid-column:1/-1}.next-project>span:nth-child(2){font-size:28px;grid-column:2}.next-project>.arrow{grid-column:3}
}
@media(max-width:360px){.hero h1{font-size:12.35vw}.toolkit-grid{gap:10px}.project-card h3{font-size:26px}.contact-section h2{font-size:38px}.intro-copy h2{font-size:37px}}
@media(max-height:500px) and (orientation:landscape){.hero{min-height:450px}.site-header{padding-top:10px}.hero-title{padding-top:65px}}
@media(hover:none){.portrait{transform:none}.portrait-sheen{display:none}.project-card:hover .project-art,.role-preview:hover h3,.education-compact>a:hover h3{transform:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal-ready{opacity:1!important;transform:none!important}.marquee-set[aria-hidden=true]{display:none}.portrait{transform:none!important}}
@media(forced-colors:active){*{scrollbar-color:auto}.navigation,.discover-button,.copy-email{border:1px solid ButtonText}}

.toolkit-logo[data-logo="n8n"] img{width:80%;height:auto}
.organisation-link{display:flex;align-items:center;gap:16px}
.organisation-link>span:last-child{min-width:0}
.organisation-link:hover{color:var(--accent)}
.organisation-logo{display:grid;place-items:center;flex:0 0 88px;width:88px;height:72px}
.organisation-logo img{grid-area:1/1;width:64px;height:64px;object-fit:contain}
.organisation-logo[data-organisation="role-2"] img{width:94px;height:64px}
.organisation-logo[data-organisation="role-5"] img{width:82px;height:64px}
.organisation-logo[data-organisation="role-0"] img{width:78px;height:64px}
.organisation-logo .logo-dark{display:none}
:root[data-theme=dark] .organisation-logo:has(.logo-dark) .logo-default{display:none}
:root[data-theme=dark] .organisation-logo .logo-dark{display:block}
@media(max-width:800px){.organisation-link{gap:12px}.organisation-logo{flex-basis:76px;width:76px;height:64px}.organisation-logo img{max-width:100%;height:56px}.organisation-logo[data-organisation="role-2"] img{width:81px;max-width:none}.organisation-logo[data-organisation="role-5"] img{width:71px}}
.experience-record{scroll-margin-top:24px}
html:has(.experience-record:target){scroll-behavior:auto}

:root[data-theme=light] .hero{
 background:var(--paper);
 --photo-fade:linear-gradient(180deg,#000 82%,#000000fc 84.25%,#000000ed 86.5%,#000000cf 88.75%,#0000009b 91%,#00000064 93.25%,#00000030 95.5%,#0000000b 97.75%,#0000 100%);
}
:root[data-theme=light] .hero-image,:root[data-theme=light] .hero-shade{
 -webkit-mask-image:var(--photo-fade);
 mask-image:var(--photo-fade);
}
:root[data-theme=light] .hero::after{background:none;pointer-events:none}
@media(max-width:600px){
 :root[data-theme=light] .hero{--photo-fade:linear-gradient(180deg,#000 83%,#000000fc 85.125%,#000000ed 87.25%,#000000cf 89.375%,#0000009b 91.5%,#00000064 93.625%,#00000030 95.75%,#0000000b 97.875%,#0000 100%)}
}




.skill-orbit-highlight.third{stroke:var(--accent);stroke-dasharray:.1 .9;stroke-dashoffset:calc(var(--orbit-offset,0) * 1.2 + .33);opacity:.55}
/* Hide the selector at the same breakpoint where the header becomes two rows. */
@media(max-width:800px){.site-header .navigation{display:none}}
@media(max-width:600px){
 .skills-layout{display:flex;flex-direction:column;align-items:stretch;gap:0}
 .skills-copy{display:contents}
 .skills-layout .skills-stage{order:1;width:100%}
 .skills-copy>.discover-button{order:2;align-self:flex-start;margin-top:28px}
 .intro-copy>.portrait-wrap{width:min(85%,300px);margin:0 auto 30px}
 .skills-stage{display:block;height:auto;aspect-ratio:800/440;min-height:0;padding:0}
 .skill-orbits{opacity:1}
 .skill-orbits>*{vector-effect:non-scaling-stroke}
 .skill-node{position:absolute;left:var(--x);top:var(--y);width:28px;height:28px;padding:0;gap:0;transform:translate(-50%,-50%);border:0;border-radius:0;background:transparent;box-shadow:none}
 .skill-node>span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
 .skill-node:hover{transform:translate(-50%,-50%)}
 .skill-node img{width:28px;height:28px;flex:none;padding:3px;background:#e7eddf;border-radius:50%}
 .about-detail-photo{order:-1;align-self:center;width:min(85%,310px);margin:0}
}
/* Project figures share one manual gallery across home, index and detail. */
.project-slideshow{margin:0;min-width:0;border:0;border-radius:22px;overflow:hidden;background:var(--surface)}
.project-slides{aspect-ratio:600/360;background:#fff;position:relative}
.project-slide{display:block;width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 1s ease-in-out}
.project-slide.is-active{opacity:1;pointer-events:auto;z-index:1}
.project-slide img{display:block;width:100%;height:100%;object-fit:cover}
.project-team{margin-top:45px;padding-top:28px;border-top:1px solid var(--line)}
.project-team ul{list-style:none;padding:0;margin-top:10px}
.project-team li+li{margin-top:0}
.project-team a{display:inline-flex;align-items:center;gap:8px;font-size:14px;min-height:36px;line-height:1.5}
.project-team svg{width:16px;height:16px}

@media(prefers-reduced-motion:reduce){.project-slide{transition:none}}
.project-slides{width:100%}


.project-preview{display:block;color:inherit}
.project-preview .project-slide{pointer-events:none}
.project-gallery{margin-bottom:65px}
.project-gallery-inline{width:92%;margin-inline:auto;border:0;border-radius:18px;overflow:hidden;background:var(--surface)}
.project-image-open{padding:0;border:0;border-radius:18px;overflow:hidden;background:white;cursor:zoom-in;aspect-ratio:16/10;min-width:0}
.project-image-open:first-child{display:block;aspect-ratio:16/10;max-height:620px;width:100%;border:0;border-radius:0}.project-image-open>span{display:block;width:100%;height:100%}.project-image-open>span[hidden]{display:none}
.project-image-open img{width:100%;height:100%;object-fit:contain;display:block;transition:transform .3s var(--ease)}
.project-image-open:hover img{transform:scale(1.015)}
.project-lightbox{border:0;padding:0;background:transparent;color:var(--ink);width:min(94vw,960px);max-width:none;max-height:94svh;overflow:visible;margin:auto}
.project-lightbox::backdrop{background:#07110ed9;backdrop-filter:blur(8px)}
.lightbox-panel{position:relative;padding:52px 58px 38px;background:var(--paper);border:0;border-radius:22px}
.project-lightbox[open] .lightbox-panel{animation:lightbox-enter .28s var(--ease)}
.lightbox-image{height:min(65svh,580px);background:#fff;border-radius:10px;overflow:hidden}
.lightbox-image>div{width:100%;height:100%;}
.lightbox-image img{display:block;width:100%;height:100%;object-fit:contain}
.lightbox-panel button{position:absolute;display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink);cursor:pointer}
.lightbox-panel button:hover{background:var(--ink);color:var(--paper)}
.lightbox-close{right:12px;top:6px;font-size:26px}
.lightbox-prev{left:7px;top:calc(50% - 22px)}
.lightbox-next{right:7px;top:calc(50% - 22px)}
.lightbox-panel svg{width:19px;height:19px}
.lightbox-prev svg{transform:rotate(180deg)}
.lightbox-status{position:absolute;bottom:8px;left:0;right:0;text-align:center;font-size:12px}
@keyframes lightbox-enter{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}

@media(max-width:600px){.lightbox-panel{padding:52px 0 48px}.lightbox-image{height:55svh;border-radius:0}.lightbox-prev,.lightbox-next{top:auto;bottom:3px;z-index:1}.lightbox-prev{left:12px}.lightbox-next{right:12px}.lightbox-status{bottom:16px}}
@media(prefers-reduced-motion:reduce){.project-lightbox[open] .lightbox-panel,.lightbox-image>div{animation:none}.project-image-open img{transition:none}}

.inline-image-controls{display:flex;align-items:center;justify-content:center;gap:20px;padding:8px;font-size:12px}.inline-image-controls button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink);cursor:pointer}.inline-image-controls button:hover{background:var(--ink);color:var(--paper)}.inline-image-controls svg{width:18px;height:18px}.inline-image-controls button:first-child svg{transform:rotate(180deg)}

@media(max-width:600px){.project-gallery-inline{width:100%}}
.project-toolbar{display:flex;align-items:center;gap:14px;margin-bottom:18px}.project-search,.project-view{border:1px solid var(--line);border-radius:99px;background:var(--surface);color:var(--ink);min-height:48px}.project-search{display:flex;align-items:center;gap:12px;padding:0 16px;flex:1;min-width:0}.project-search svg,.project-view svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;flex:none}.project-search input{width:100%;min-width:0;border:0;background:transparent;color:var(--ink);font:14px var(--sans);height:46px;outline-offset:0}.project-search input::placeholder{color:var(--muted)}.project-search input::-webkit-search-cancel-button{display:none}.project-search button{border:0;background:none;color:var(--ink);font-size:22px;cursor:pointer;min-width:28px}.project-view{display:flex;overflow:hidden;margin-left:auto;flex:none}.project-view button{display:flex;align-items:center;justify-content:center;gap:8px;min-width:56px;min-height:46px;padding:0 14px;border:0;background:transparent;color:var(--ink);cursor:pointer;transition:background .25s}.project-view button+button{border-left:1px solid var(--line)}.project-view button[aria-pressed=true]{background:color-mix(in srgb,var(--accent) 24%,var(--surface));color:var(--ink)}.view-check{display:none}.project-view [aria-pressed=true] .view-check{display:inline}.project-view button:focus-visible{outline-offset:-5px}.project-results{font-size:12px;color:var(--muted);margin-bottom:28px}.project-results-grid>[hidden]{display:none}.project-results-grid[data-view=list]{grid-template-columns:1fr;gap:0}.project-results-grid[data-view=list] .project-card{display:grid;grid-template-columns:minmax(180px,30%) minmax(0,1fr);column-gap:36px;padding:28px 0;border-bottom:1px solid var(--line)}.project-results-grid[data-view=list] .project-card>:first-child{grid-column:1;grid-row:1/6;align-self:center}.project-results-grid[data-view=list] .project-card>:not(:first-child){grid-column:2}.project-results-grid[data-view=list] .project-card-meta{margin-top:0}.project-results-grid[data-view=list] .award,.project-results-grid[data-view=list] .project-status{justify-self:start}.project-results-grid .project-card{opacity:1;transform:none}
@media(max-width:600px){.project-toolbar{flex-wrap:wrap;gap:10px}.project-search{flex-basis:100%}.project-results-grid[data-view=list] .project-card{grid-template-columns:minmax(85px,28%) minmax(0,1fr);column-gap:16px}.project-results-grid[data-view=list] .project-card h3{font-size:23px}.project-results-grid[data-view=list] .project-card>p{font-size:12px}.project-results-grid[data-view=list] .project-card-meta{flex-wrap:wrap;gap:4px}.project-results-grid[data-view=list] .project-card>:first-child{align-self:start}.project-results-grid[data-view=list] .award{font-size:9px;padding:6px}.project-results-grid[data-view=list] .award svg{width:22px;flex:none}}
/* Compact project browser controls and text-only list presentation. */
.project-search{flex:0 1 300px;transition:border-color .2s,box-shadow .2s}
.project-search:focus-within{border-color:var(--muted);box-shadow:0 0 0 3px color-mix(in srgb,var(--muted) 14%,transparent)}
.project-search input:focus,.project-search input:focus-visible{outline:none;box-shadow:none}

.project-view{position:relative;isolation:isolate;padding:3px;gap:0}
.project-view::before{content:"";position:absolute;left:3px;top:3px;bottom:3px;width:calc((100% - 6px)/2);border-radius:99px;background:var(--ink);transition:transform .38s var(--ease);z-index:-1}
.project-view:has(button:nth-child(2)[aria-pressed=true])::before{transform:translateX(100%)}
.project-view button{width:66px;min-height:40px;padding:0 10px;transition:color .25s}
.project-view button+button{border-left:0}
.project-view button[aria-pressed=true]{background:transparent;color:var(--paper)}
.project-view .view-check{display:inline;width:12px;opacity:0;transform:scale(.6);transition:opacity .25s,transform .3s var(--ease)}
.project-view [aria-pressed=true] .view-check{opacity:1;transform:scale(1)}
.project-results-grid[data-view=list] .project-card{display:block;padding:22px 0}
.project-results-grid[data-view=list] .project-card>:first-child{display:none}
.project-results-grid[data-view=list] .project-card-meta{max-width:100%;margin:0}
.project-results-grid[data-view=list] .project-card h3{margin-top:5px}
.project-results-grid[data-view=list] .project-card>p{max-width:860px;margin-top:6px}
.project-results-grid[data-view=list] .project-status,.project-results-grid[data-view=list] .award{margin-top:10px}
@media(max-width:600px){.project-search{flex:1 1 100%;max-width:100%}.project-results-grid[data-view=list] .project-card{padding:20px 0}}
@media(prefers-reduced-motion:reduce){.project-view::before,.project-view .view-check,.project-view button{transition:none}}
.project-search{flex-basis:380px}












@keyframes sort-open{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){.project-search{flex-basis:100%}}
@media(prefers-reduced-motion:reduce){}

.project-search{flex:0 1 568px}
@media(max-width:600px){.project-search{flex:1 1 100%}}
.project-hover-preview{position:fixed;left:0;top:0;width:400px;height:250px;z-index:45;pointer-events:none}
.project-hover-window{height:100%;overflow:hidden;border-radius:16px;background:var(--surface);box-shadow:none;border:0;opacity:0;transform:scale(.75);transition:opacity .25s,transform .4s var(--ease)}
.project-hover-window.is-visible{opacity:1;transform:scale(1)}
.project-hover-track{transition:transform .4s var(--ease)}
.project-hover-frame{height:250px;width:400px;display:grid;place-items:center;overflow:hidden;background:var(--surface)}
.project-hover-frame img,.project-hover-frame svg{width:100%;height:100%;object-fit:cover}
@media(hover:hover) and (pointer:fine) and (min-width:801px){.project-results-grid[data-view=list] .project-card h3{transition:transform .4s var(--ease)}.project-results-grid[data-view=list] .project-card:hover h3{transform:translateX(10px)}}
@media(prefers-reduced-motion:reduce),(max-width:800px),(hover:none){.project-hover-preview{display:none}.project-results-grid[data-view=list] .project-card:hover h3{transform:none}}
/* Grid thumbnails share the placeholder panels' restrained hover lift. */
.home-page .projects-section .project-slideshow,.project-results-grid[data-view=grid] .project-slideshow{transition:transform .5s var(--ease)}
@media(hover:hover) and (pointer:fine){.home-page .projects-section .project-card:hover .project-slideshow,.project-results-grid[data-view=grid] .project-card:hover .project-slideshow{transform:translateY(-5px)}}
@media(prefers-reduced-motion:reduce){.home-page .projects-section .project-slideshow,.project-results-grid[data-view=grid] .project-slideshow{transition:none}.home-page .projects-section .project-card:hover .project-slideshow,.project-results-grid[data-view=grid] .project-card:hover .project-slideshow{transform:none}}

.project-image-open,.lightbox-image{position:relative;overflow:hidden}
.project-image-open>[data-inline-image],.lightbox-image>[data-large-image]{position:absolute;inset:0;width:100%;height:100%}
.certificate-preview{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:contain;background:var(--surface)}
.project-gallery button[hidden]{display:none}
[data-marquee]{overflow:hidden;touch-action:pan-y;user-select:none;cursor:grab}
[data-marquee].is-dragging{cursor:grabbing}
.certificate-drag-track{display:flex;width:max-content;will-change:transform}
.certificate-drag-track img{-webkit-user-drag:none}
@media(prefers-reduced-motion:reduce){[data-marquee]{overflow-x:auto;touch-action:auto}.certificate-drag-track{transform:none!important;will-change:auto}.certificate-drag-track .marquee-set[aria-hidden=true]{display:none}}
.marquee-set>a{display:block;flex:none;border-radius:14px;cursor:grab}.marquee-set>a:focus-visible{outline-offset:-4px}.marquee-set>a img{display:block}

.site-header:not(.controls-ready) .hero-control{visibility:hidden;opacity:0;transition:none}

/* Project previews fill their frames; enlarged figures remain fully readable. */
.project-gallery[data-project-figures] .project-image-open img{object-fit:cover}

/* Fullscreen project viewer; controls remain anchored to the viewport. */
.project-lightbox{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;overflow:hidden;background:var(--paper)}
.project-lightbox .lightbox-panel{width:100%;height:100%;padding:0;border:0;border-radius:0}
.project-lightbox .lightbox-image{width:100%;height:100%;border-radius:0;background:var(--paper)}
.project-lightbox .lightbox-panel button{z-index:2;padding:0;line-height:1}
.project-lightbox .lightbox-close{top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right))}
.project-lightbox .lightbox-close svg{width:20px;height:20px;display:block}
.project-lightbox .lightbox-prev,.project-lightbox .lightbox-next{top:calc(50% - 22px);bottom:auto}
.project-lightbox .lightbox-prev{left:max(16px,env(safe-area-inset-left))}
.project-lightbox .lightbox-next{right:max(16px,env(safe-area-inset-right))}
.project-lightbox .lightbox-status{z-index:2;bottom:max(16px,env(safe-area-inset-bottom));left:50%;right:auto;transform:translateX(-50%);padding:6px 14px;border-radius:99px;background:var(--surface);color:var(--ink)}

/* Keep restored keyboard focus subtle and within the rounded image frame. */
.project-image-open:focus-visible{outline:2px solid var(--muted);outline-offset:-2px}

/* Readable project status and achievement labels across card layouts. */
.projects-section .project-status,.projects-section .award,[data-project-browser] .project-status,[data-project-browser] .award{font-size:11px;line-height:1.5}

/* Certificate frames fit landscape originals; portrait artwork keeps themed bezels. */
.certificate-page{--certificate-bezel:#000}
:root[data-theme=light] .certificate-page{--certificate-bezel:#fff}
.certificate-page .project-gallery{max-width:720px;margin:28px auto 24px}
.certificate-page .project-gallery-inline{width:100%}
.certificate-page .project-image-open:first-child{aspect-ratio:var(--certificate-ratio,1.5);max-height:none;background:var(--certificate-bezel);transition:aspect-ratio .38s var(--ease)}
.certificate-page .project-image-open img{object-fit:contain;transform:none}
.certificate-page .lightbox-image{background:var(--certificate-bezel)}
.certificate-page .certificate-pdf{max-width:720px;margin:0 auto 65px}
@media(prefers-reduced-motion:reduce){.certificate-page .project-image-open:first-child{transition:none}}

/* Certificate collection cards are display-only, with edge-to-edge previews. */
[data-browser-kind=certificate] .certificate-preview{width:100%;height:100%;aspect-ratio:3/2;object-fit:cover}
[data-browser-kind=certificate] .project-card{cursor:default}

/* Keep hover preview edges free of a shadow or colored backing rim. */
.project-hover-window,.project-hover-frame{background:transparent}
.project-slideshow,.project-preview{background:transparent}

/* Preserve portrait certificate artwork; landscape previews continue to fill. */
[data-browser-kind=certificate] .certificate-preview.is-portrait{width:100%;height:100%;aspect-ratio:3/2;object-fit:contain;background:var(--surface)}
.project-hover-frame:has(.certificate-preview.is-portrait){background:var(--surface)}
.project-hover-frame img.certificate-preview.is-portrait{object-fit:contain}
