*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.grid{display:grid}.hidden{display:none}.resize{resize:both}.underline{text-decoration-line:underline}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}html[data-theme-anim="1"]::view-transition-old(root){z-index:0}html[data-theme-anim="1"]::view-transition-new(root){z-index:1;animation:theme-reveal .7s cubic-bezier(.22,1,.36,1) both}@keyframes theme-reveal{0%{clip-path:circle(0px at var(--theme-cx) var(--theme-cy))}to{clip-path:circle(var(--theme-r) at var(--theme-cx) var(--theme-cy))}}@media(prefers-reduced-motion:reduce){html[data-theme-anim="1"]::view-transition-new(root){animation:none}}:root{--black:#0b0b0c;--ice:#f6f5f3;--muted:#c3c0bb;--line:#373532;--surface:#171615;--raised:#23211f;--tinted:#23211f;--accent:#fff;--focus-ring:#c5c5c5;--board-dot:#958471;--maroon:#8b2445;--maroon-ink:#741d39;--ink:#151413;--paper:#efe8d9;--font-display:Bangers,Impact,sans-serif;--font-note:Caveat,cursive;--font-ui:"DM Sans",system-ui,sans-serif;--font-serif:"Instrument Serif",Georgia,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace;--gutter:clamp(18px,4vw,64px);--radius:clamp(24px,4vw,52px);color-scheme:dark}:root[data-theme=light]{--black:#f1ecdf;--ice:#201c19;--muted:#554e43;--line:#cfc4b1;--surface:#ede5d7;--raised:#fff9ef;--tinted:#e8ddc9;--accent:#222;--board-dot:#aa9478;color-scheme:light}*{box-sizing:border-box}html,body,#root,.site{margin:0;padding:0;background:var(--black);color:var(--ice);font-family:var(--font-ui)}.site{overflow-x:clip}:root[data-theme=light] .site{isolation:isolate}:root[data-theme=light] .site:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:var(--black) url(/media/paper-texture.png) center/cover no-repeat;pointer-events:none}.site:focus{outline:none}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:5px}.skip-content{position:fixed;z-index:20;top:12px;left:12px;transform:translateY(-160%);background:var(--ice);color:var(--black);padding:8px 14px}.skip-content:focus{transform:none}img{display:block}.hero-heading{color:var(--ice)}.micro{font-family:var(--font-mono);font-size:11px;line-height:1.4;font-weight:500;text-transform:uppercase;letter-spacing:.075em}.hero,.hero-reserve{min-height:100svh}.hero{max-width:1480px;margin:0 auto;padding:0 var(--gutter);display:flex;flex-direction:column;font-family:inherit}.hero-header{position:relative;z-index:3;display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center;min-height:83px;border-bottom:1px solid var(--line)}.site-name{justify-self:start;font-size:23px;letter-spacing:-.045em;font-weight:760;white-space:nowrap}.hero-bar{grid-column:2;justify-self:center;display:flex;align-items:center;justify-content:space-between;gap:clamp(16px,4vw,58px);background:linear-gradient(#262729,#1c1c1e);border:1px solid #444446;border-radius:999px;padding:6px 8px 6px clamp(12px,2vw,30px);color:#f6f5f3;box-shadow:0 4px 10px #0003}.hero-nav{display:flex;align-items:center;justify-content:space-between;gap:clamp(12px,2.3vw,34px)}.hero-nav a{display:inline-flex;align-items:center;min-height:36px;font:500 12px/1.2 var(--font-mono);white-space:nowrap}.hero-nav a:hover{text-decoration:underline;text-underline-offset:4px}.mobile-menu{display:none}.mobile-menu summary{list-style:none;cursor:pointer}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu nav{position:absolute;right:0;top:calc(100% + 8px);width:min(210px,100%);padding:6px;background:var(--surface);color:var(--ice);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #0005}.mobile-menu nav a{display:flex;align-items:center;min-height:42px;padding:8px 12px;border-radius:6px;font:500 13px/1.2 var(--font-mono)}.mobile-menu nav a:hover{background:var(--raised)}.about-section{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);align-items:center;gap:clamp(16px,3svh,34px) clamp(18px,4vw,64px);padding:clamp(24px,4svh,46px) 0 clamp(18px,3svh,36px)}.about-center{position:relative;z-index:2;min-width:0;max-width:665px;color:var(--muted);font-size:clamp(15px,1.25vw,18px);line-height:1.5}.about-intro{grid-column:1/-1}.about-intro h1{color:var(--ice);font-size:clamp(44px,min(13vw,20svh),175px);line-height:.98;white-space:nowrap}.about-intro .about-tagline{margin-top:5px;color:var(--ice);font:700 clamp(23px,3.2vw,38px)/1.1 var(--font-note)}.about-tagline strong,.about-center h2 em{text-decoration:underline .13em var(--maroon);text-underline-offset:.14em;text-decoration-skip-ink:auto}.about-center .about-kicker{color:var(--ice);margin-bottom:12px}.about-kicker span{color:var(--muted)}.about-center h2{margin-bottom:12px;color:var(--ice);font-size:clamp(26px,min(3.2vw,5.5svh),46px);font-weight:700;letter-spacing:-.055em;line-height:1.08}.about-center h2 em{color:var(--ice);font-style:normal}.about-center p+p{margin-top:10px}.about-center .about-hint{margin-top:11px;font:700 clamp(16px,1.5vw,21px)/1.2 var(--font-note)}.about-preview{display:inline-block;position:relative;vertical-align:baseline}.about-preview button{color:var(--ice);font-weight:650;text-decoration:underline;text-decoration-color:var(--maroon);text-decoration-thickness:.2em;text-underline-offset:.12em}.about-preview button[aria-expanded=true]{text-decoration-thickness:.27em}.about-popover{position:absolute;top:100%;z-index:3;width:min(296px,calc(100vw - 32px));transform:translate(-50%);padding-top:9px}.about-popover[data-above=true]{top:auto;bottom:100%;padding:0 0 9px}.about-popover-card{position:relative;display:block;padding:11px 11px 13px;background:#f5eddd url(/media/paper-texture.png) center/cover;color:var(--ink);border:1px solid #cec1ab;box-shadow:3px 4px #28231c,0 14px 32px #0005;font:500 11px/1.45 var(--font-mono);transform:rotate(-1deg);animation:about-card-in .16s ease-out}.about-popover-card:before{content:"";position:absolute;top:-7px;left:15%;width:53px;height:14px;background:#e6d3a5cb;transform:rotate(-5deg);pointer-events:none}.about-popover-card img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;object-position:top center;border-radius:2px}.about-popover-title{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:9px;font-weight:700}.about-popover-title svg{flex:none}.about-popover-note{display:block;margin-top:3px;color:#51483d}@keyframes about-card-in{0%{opacity:0;transform:translateY(-4px) rotate(0)}}.about-portrait{width:min(100%,520px);height:auto;max-height:48svh;object-fit:contain;justify-self:center;align-self:center}.about-intro h1,.section-heading,.profile-heading h2,.contact-card h2,.project-card-copy h3{font-family:var(--font-display);font-weight:400;letter-spacing:.02em}.about-intro h1,.section-heading,.profile-heading h2,.contact-card h2{text-shadow:.04em .048em var(--maroon)}.section-heading{font-size:clamp(45px,7.7vw,108px);line-height:1.04}.projects-section{text-align:center;padding:clamp(40px,6vw,85px) var(--gutter) 10px}.projects-section>.micro{display:block;margin-bottom:20px;opacity:.67}.projects-section{position:relative;z-index:1;background:var(--black)}:root[data-theme=light] .projects-section{background:transparent}.project-index{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:clamp(36px,6vw,80px) 0;text-align:left;max-width:1390px;margin:clamp(34px,6vw,82px) auto 0}.project-card{min-width:0}.board-card{background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:clamp(12px,1.65vw,24px)}.project-preview{display:block;width:100%;text-align:left}.project-preview-frame{display:block;padding:clamp(11px,1.25vw,20px);background:linear-gradient(90deg,#332b1f28 1px,transparent 1px) center/30% 100%,linear-gradient(#332b1f28 1px,transparent 1px) center/100% 24%,var(--paper);border:clamp(4px,.55vw,8px) solid #282624;box-shadow:inset 0 0 0 1px #655b4e}.project-preview-window{display:block;overflow:hidden;aspect-ratio:16/10;background:#191817}.project-preview img{width:100%;height:100%;object-fit:cover;object-position:top center;transform-origin:50% 24%;animation:preview-pan 9s ease-in-out infinite alternate paused}.project-preview-frame[data-playing=true] img{animation-play-state:running}.project-preview-frame:not([data-playing]) img{animation:none}.project-card:nth-child(2n) .project-preview img{animation-delay:-3s}@keyframes preview-pan{0%,12%{transform:scale(1)}75%,to{transform:scale(1.16) translateY(-2%)}}.project-card-meta,.project-card-copy{padding-inline:clamp(10px,1.25vw,20px)}.project-card-meta{position:relative;display:flex;flex-wrap:wrap;gap:5px 8px;align-items:center;justify-content:space-between;padding-top:25px}.project-note{position:absolute;right:10px;top:-15px;padding:1px 8px;color:var(--maroon-ink);background:var(--paper);border:1px solid #b9ad97;transform:rotate(-4deg);font:700 clamp(15px,1.5vw,21px)/1.18 var(--font-note)}.project-stamp{padding:3px 5px;background:#eaddc5;color:var(--ink);border:1px solid #b8a98f;border-radius:2px;white-space:nowrap;font-size:10px}.preview-action{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;min-height:28px;background:#fff;color:var(--ink);border:1px solid var(--ink);box-shadow:2px 2px #0005;font:500 10px/1.2 var(--font-mono);white-space:nowrap}.preview-action svg{flex:none}.project-preview:hover .preview-action{background:#e8e8e8}.project-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:5px 8px;margin-top:14px}.project-card-copy h3{font-size:clamp(21px,2.25vw,32px);line-height:1.02}.project-links{display:flex;gap:5px}.project-link{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:28px;padding:3px 6px;border:1px solid #d7d1c7;border-radius:4px;color:var(--ink);background:#fff;font:500 10px/1.2 var(--font-mono)}.project-link:hover{background:#e8e8e8}.project-repo{width:28px;padding:0}.project-summary{margin-top:9px;color:var(--muted);font-size:clamp(14px,1.3vw,17px);line-height:1.4}.project-stack{margin-top:15px;padding-top:10px;border-top:1px dashed var(--line);color:var(--muted);font-size:9px}.project-stack span{color:var(--ice);margin-right:4px}.project-dialog .micro{color:var(--muted);font-size:10px}html:has(.project-dialog[open]){overflow:hidden}.project-dialog{margin:auto;width:min(760px,calc(100% - 28px));max-height:calc(100dvh - 28px);padding:0;background:var(--surface);color:var(--ice);border:1px solid var(--line);border-radius:19px;text-align:left;overflow:auto}.project-dialog::backdrop{background:#000b}.project-dialog article{padding:clamp(16px,3.2vw,32px)}.project-dialog-header{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:16px}.project-dialog-header h3{font-size:clamp(25px,4vw,46px);line-height:1.04;font-weight:700;margin-top:5px}.project-dialog-header button{flex:none}.project-dialog article>img{width:100%;max-height:42dvh;object-fit:contain;background:#131313;border-radius:10px}.project-dialog-copy{display:grid;justify-items:start;gap:11px;margin-top:19px}.project-dialog-copy h4{font-size:clamp(20px,2.7vw,29px);font-weight:700;line-height:1.13}.project-dialog-copy p:not(.micro){font-size:clamp(16px,2vw,20px);line-height:1.4}.project-dialog-copy a{margin-top:4px}.profile-section{padding:clamp(24px,4svh,48px) clamp(12px,1.65vw,28px) 0}:root[data-theme=dark] .profile-section:not(.contact-section){--surface:#080808;--raised:#151515;--tinted:#101010;--line:#303030 }.profile-heading{border-top:1px solid var(--line);padding-top:24px;margin-bottom:clamp(25px,4vw,51px)}.profile-heading .micro{display:block;color:var(--muted);margin-bottom:8px;font-size:10px}.research-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1.8vw,24px)}.research-card{display:grid;grid-template-rows:auto auto 1fr auto;justify-items:start;gap:12px;min-width:0;padding:clamp(14px,2vw,25px);background:var(--surface);border:1px solid var(--line);border-radius:12px}.research-card[data-current]{background:var(--raised);border-color:var(--muted)}.research-meta{display:flex;flex-wrap:wrap;align-items:center;gap:7px 10px}.research-current{padding:3px 6px;color:var(--ink);background:#fff;border-radius:4px;font-size:10px;text-decoration:underline 2px var(--maroon);text-underline-offset:3px}.research-card h3{font-size:clamp(19px,2.1vw,29px);line-height:1.15;font-weight:700}.research-card p{color:var(--muted)}.research-card .project-link{padding-inline:8px}.profile-heading h2{font-size:clamp(39px,8svh,70px);line-height:.99}.board-card .profile-heading{border:0;padding:0;margin-bottom:10px}.board-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px;color:var(--muted);font-size:14px}.dot-board{position:relative;isolation:isolate;overflow:hidden;border:1px solid var(--line);border-radius:16px;background:radial-gradient(circle,var(--board-dot) var(--board-dot-size,1px),transparent var(--board-dot-edge,1.6px)) 1px 1px/var(--board-dot-pitch,18px) var(--board-dot-pitch,18px),var(--tinted)}#certifications .dot-board{--board-dot-size:.6px;--board-dot-edge:1px;--board-dot-pitch:30px}:root[data-theme=dark] #gallery .dot-board{--tinted:#050505;--board-dot:#c8b594}:root[data-theme=light] #gallery .dot-board{--board-dot:#111;--board-dot-size:.6px;--board-dot-edge:1px}.board-piece{position:relative;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.board-piece:active{cursor:grabbing}.board-piece:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.skill-spread{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,2.6vw,36px);padding:clamp(12px,2.2svh,22px)}.skills-filter{display:none}.skill-page{min-width:0}.skill-page h3{font-size:clamp(21px,3.6svh,34px);line-height:1.03;font-weight:700;margin-bottom:12px}.skill-group+.skill-group{margin-top:clamp(9px,1.4svh,14px)}.skill-group h4{font-size:13px;color:var(--muted);margin-bottom:5px}.skill-pieces{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,clamp(63px,6.2vw,95px)),1fr));gap:7px}.skill-piece{--paper:#ededed;display:grid;justify-items:center;align-content:center;gap:5px;min-height:clamp(48px,7svh,68px);padding:5px 3px 7px;text-align:center;font-size:clamp(11px,1.12vw,13px);line-height:1.08;overflow-wrap:anywhere;color:#202020;background:var(--paper);box-shadow:2px 3px #0004}.skill-piece:after{position:absolute;content:"";right:0;bottom:0;border-width:0 0 9px 9px;border-color:transparent transparent #fff transparent}.skill-piece img{height:clamp(21px,3svh,29px);width:34px;object-fit:contain;pointer-events:none}.swatch-1{--paper:#e7e7e7}.swatch-2{--paper:#dedede}.swatch-3{--paper:#f2f2f2}.swatch-4{--paper:#d8d8d8}.gallery-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;justify-items:center;gap:clamp(11px,2.2svh,23px) clamp(12px,2.6vw,38px);padding:clamp(14px,2.5svh,26px)}.gallery-board .photo-piece{width:min(100%,max(155px,31svh))}.photo-piece figure{position:relative;margin:0;padding:8px 8px 11px;background:#fff;color:#202020;rotate:-2deg;box-shadow:4px 6px #0004;text-align:center}.photo-piece:nth-child(2n) figure{rotate:2deg}.photo-piece figure:before{content:"";position:absolute;z-index:1;left:35%;top:-6px;width:30%;height:16px;background:#d9d9d9b3}.photo-piece img{width:100%;aspect-ratio:4/3;object-fit:cover;object-position:50% 24%;pointer-events:none}.photo-piece figcaption{font-family:var(--font-serif);font-style:italic;font-size:clamp(16px,1.8vw,23px);padding-top:8px;line-height:1.1}.photo-cutout figure{background:none;box-shadow:none;color:var(--ice);rotate:0deg}.photo-cutout figure:before{display:none}.photo-cutout img{object-fit:contain;filter:drop-shadow(0 3px 4px #0006)}.certification-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1.65vw,22px);padding:clamp(10px,2.2svh,22px)}.certification-card{min-width:0;display:grid;grid-template-rows:auto 1fr auto;justify-items:start;gap:12px;padding:clamp(8px,1.25vw,14px);background:var(--surface);border:1px solid var(--line);border-radius:12px}.certification-card a{touch-action:auto}.cert-preview{width:100%;height:clamp(125px,16vw,205px);display:grid;place-items:center;padding:12px;background:var(--tinted);border-radius:8px}.cert-preview img{width:100%;height:100%;min-height:0;object-fit:contain;pointer-events:none}.certification-detail h3{font-size:clamp(18px,1.8vw,25px);line-height:1.1;font-weight:700}.certification-detail p{color:var(--muted);font-size:15px;margin-top:5px}.backpack-section{padding-top:clamp(18px,3svh,30px)}.backpack-section .board-card{padding:clamp(14px,2vw,24px);background:var(--surface);border:1px solid var(--line);border-radius:24px}.backpack-section .profile-heading{margin-bottom:10px}.backpack-section .profile-heading h2{font-size:clamp(34px,6svh,52px)}.backpack-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;justify-items:center;gap:clamp(8px,2vw,22px);padding:0}.backpack-figure{display:grid;justify-items:center;align-content:center;gap:5px;width:min(100%,190px);margin:0;text-align:center}.backpack-figure img{height:clamp(86px,14svh,132px);width:100%;object-fit:contain;pointer-events:none}.backpack-figure .backpack-mac,.backpack-figure .backpack-phone{object-fit:contain}.backpack-figure .backpack-coke{width:auto;max-width:100%;height:clamp(86px,14svh,132px)}.backpack-download{display:block;width:min(100%,190px);color:inherit;text-decoration:none;border-radius:8px;transition:transform .18s ease}.backpack-download:hover{transform:translateY(-3px)}.backpack-download:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.backpack-figure .backpack-book{width:auto;max-width:100%;height:clamp(86px,14svh,132px);aspect-ratio:.708;object-fit:cover;border-radius:3px;box-shadow:0 5px 14px #0004}.backpack-figure figcaption{font:700 clamp(14px,1.6vw,19px)/1.05 var(--font-note);color:var(--ice)}.contact-section{padding-bottom:16px}.contact-card{--contact-inset:clamp(20px,4.8vw,66px);position:relative;overflow:hidden;border:1px solid #33312e;border-radius:8px;background:#050505;color:#f6f5f3}.contact-copy{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(13px,3vw,38px);padding:clamp(26px,5.6svh,64px) var(--contact-inset) clamp(23px,4.8svh,54px)}.contact-status{display:flex;align-items:center;gap:8px;margin-bottom:20px;color:#c6c1ba}.contact-status:before{content:"";width:7px;height:7px;flex:none;border-radius:50%;background:#24b76a;box-shadow:0 0 0 3px #24b76a40}.contact-card h2{font-size:clamp(40px,min(8.5vw,13svh),125px);line-height:.94}.contact-card h2 span{display:inline-block}.contact-drink{position:relative;display:grid;justify-items:center;width:clamp(82px,13vw,150px)}.contact-drink img{width:72%;height:auto;max-height:clamp(84px,19svh,164px);object-fit:contain;rotate:8deg;filter:drop-shadow(3px 5px 8px #0006)}.contact-drink svg{position:absolute;z-index:1;color:#f6f5f3;pointer-events:none}.drink-sparkles{top:-7px;right:-4px;rotate:12deg}.drink-zap{top:48%;left:-4px;rotate:-15deg}.contact-message p{margin-top:22px;color:#d6d0c8;font-size:clamp(15px,1.6vw,22px);line-height:1.55}.contact-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.contact-actions .white-button{border-radius:0;padding-inline:14px;box-shadow:3px 3px #0005;font:500 11px/1.2 var(--font-mono);text-transform:uppercase}.contact-footer{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin:0 var(--contact-inset);padding:15px 0 0;border-top:1px solid #fff3;color:#c6c1ba}.contact-links{display:flex;flex-wrap:wrap;gap:7px}.contact-links a{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:6px 9px;border:1px solid #fff5;color:#f6f5f3;background:#080808;font-size:13px}.contact-links a:hover{background:#282522}.contact-landscape{width:100%;height:clamp(176px,39svh,440px);object-fit:cover;object-position:center bottom;-webkit-mask-image:linear-gradient(transparent,#000 34%);mask-image:linear-gradient(transparent,#000 34%);pointer-events:none}.site-credit{margin-top:14px;text-align:center;font-size:12px;letter-spacing:.12em;color:var(--muted)}.gate{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:hidden;background:#000;color:#fff;color-scheme:dark}html:has(.gate[open]){overflow:hidden;background:#000}.gate::backdrop,.gate video{background:#000}.gate video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain}.gate-actions{position:absolute;top:max(14px,env(safe-area-inset-top));right:max(15px,env(safe-area-inset-right));display:flex;gap:8px}.gate-actions button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;border:1px solid #fff5;background:#101010eb;border-radius:999px;color:#fff}.gate-sound{width:42px}.gate-skip{padding:0 13px;font-size:12px;font-weight:500}.gate-actions button:hover{background:#2e2e2e}.white-button,.gate-actions button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;background:#fff;color:#171717;border:1px solid #fff;border-radius:8px;padding:7px 12px;font-size:14px;white-space:nowrap;line-height:1.1}:is(.white-button,.gate-actions button):hover{background:#e8e8e8;color:#171717}.icon-button{width:40px;padding:0}.theme-toggle-icons{position:relative;display:block;width:18px;height:18px}.theme-icon{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transform:rotate(-90deg) scale(.2);transition:opacity .3s,transform .3s}.theme-icon.is-visible{opacity:1;transform:rotate(0) scale(1)}.header-controls{display:flex;align-items:center;gap:6px}.header-controls .white-button{min-height:36px;font:500 11px/1.2 var(--font-mono);border-radius:999px}.header-controls .icon-button{width:36px}.header-controls [aria-pressed=true]{box-shadow:inset 0 -3px #171717}.gate-actions .gate-sound{padding:0}.certification-card .white-button{font-size:12px;gap:5px;padding-inline:8px}@media(min-width:701px)and (max-height:850px){.profile-section{padding-top:18px}.profile-heading h2{font-size:clamp(38px,7.2svh,53px)}.profile-section .board-toolbar{margin-bottom:9px}.profile-section .board-reset{min-height:34px}.skill-spread{padding-block:9px}.skill-page h3{margin-bottom:8px}.skill-group+.skill-group{margin-top:7px}.skill-piece{min-height:44px;gap:3px;padding-block:4px}.contact-landscape{height:clamp(176px,33svh,246px)}}@media(max-width:1179px){.project-index{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:960px){.research-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:820px){.project-index{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:767px){.certification-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-header{gap:12px}.site-name{font-size:21px}.hero-header{grid-template-columns:minmax(0,1fr) auto;min-height:64px}.hero-bar{justify-self:end;max-width:100%;padding:4px;gap:0;border-radius:14px}.hero-nav{display:none}.mobile-menu{display:block}.header-controls{gap:4px}.header-controls .white-button{width:38px;min-height:38px;border-radius:9px}.contact-landscape{height:clamp(176px,33vw,250px)}.certification-grid{gap:8px;padding:8px}.certification-card{gap:6px;padding:6px}.cert-preview{height:clamp(65px,12svh,110px);padding:6px}.certification-detail h3{font-size:clamp(12px,3.6vw,17px)}.certification-detail p{font-size:clamp(11px,3.1vw,13px);line-height:1.3}.certification-card .white-button{min-height:30px;padding-inline:5px;font-size:clamp(9px,2.8vw,12px);gap:3px}.certification-card .white-button svg{width:12px}}@media(max-width:600px){.gallery-board{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-board .photo-piece{width:min(100%,19svh)}}@media(max-width:700px),(max-width:960px)and (max-height:680px){.skill-spread{grid-template-columns:1fr}.skill-page:not([data-active=true]),.skill-group:not([data-active=true]){display:none}.skills-filter{display:grid;justify-items:start;gap:5px;margin:12px 0}.skills-filter select{max-width:100%;min-height:40px;padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:var(--raised);color:var(--ice)}}@media(max-width:619px){.about-section{grid-template-columns:minmax(0,1fr);grid-template-areas:"intro" "portrait" "copy";gap:12px}.about-intro{grid-area:intro}.about-intro h1{font-size:clamp(37px,9vw,68px)}.about-center{grid-area:copy}.about-portrait{grid-area:portrait;width:min(64vw,220px);max-height:17svh}}@media(max-width:510px){.site-name{font-size:19px}.project-index{grid-template-columns:1fr}.research-grid{gap:8px}.research-card{padding:9px;gap:6px;font-size:13px;line-height:1.35}.research-card h3{font-size:clamp(14px,4vw,19px)}.research-card .micro{font-size:9px}.research-card .project-links{flex-wrap:wrap}.research-card .project-link{padding-inline:5px;min-height:26px}.contact-copy{grid-template-columns:minmax(0,1fr) 64px;gap:10px}.contact-drink{width:100%}.contact-drink svg{width:18px;height:18px}.contact-actions{gap:8px}.contact-actions .white-button{padding-inline:8px}}@media(max-width:510px)and (max-height:700px){.about-section{padding:16px 0 12px;gap:9px}.about-intro h1{font-size:clamp(34px,9vw,52px)}.about-intro .about-tagline{font-size:20px}.about-center{font-size:14px;line-height:1.4}.about-center h2{font-size:24px;margin-bottom:9px}.about-center p+p,.about-center .about-hint{margin-top:8px}.about-center .about-kicker{margin:0 0 7px}.profile-section{padding-top:16px}.profile-heading h2{font-size:clamp(33px,6.2svh,43px)}.board-toolbar{margin-bottom:8px;font-size:12px}.research-card{padding:7px;gap:5px;font-size:12px;line-height:1.3}.research-card h3{font-size:14px}.research-meta{gap:4px}.gallery-board{gap:9px;padding:10px}.photo-piece figure{padding:5px 5px 7px}.photo-piece figcaption{font-size:14px;padding-top:5px}.backpack-section{padding-top:12px}.backpack-section .profile-heading h2{font-size:34px}.backpack-section .board-card{padding:12px;border-radius:18px}.backpack-board{gap:6px;padding:0}.backpack-download{width:100%}.backpack-figure img,.backpack-figure .backpack-coke,.backpack-figure .backpack-book{height:clamp(64px,12svh,90px)}.backpack-figure figcaption{font-size:14px}.contact-card{--contact-inset:14px}.contact-card h2{font-size:35px}.contact-copy{grid-template-columns:minmax(0,1fr) 50px;gap:7px;padding-block:18px 13px}.contact-status{margin-bottom:10px}.contact-message p{font-size:14px;line-height:1.4}.contact-message p,.contact-actions{margin-top:12px}.contact-footer{gap:8px;padding-top:10px}.contact-links a{min-height:32px;padding-inline:6px}.contact-landscape{height:clamp(96px,18svh,125px)}}@media(prefers-reduced-motion:reduce){.project-preview img,.about-popover-card{animation:none!important}*,*:before,*:after{transition:none!important}}
