/* NovaHacking 2 — typography, depth and progressive interaction. */
:root{--max:1280px;--ease:cubic-bezier(.22,1,.36,1);--radius:24px;--muted:#b4c3d7}html{scroll-padding-top:125px}body{font-size:18px;line-height:1.8;background:#101827;overflow-x:clip}body:has(dialog[open]){overflow:hidden}.container{width:min(var(--max),calc(100% - 80px))}h1,h2,h3{font-family:Inter,ui-sans-serif,system-ui,sans-serif;text-wrap:balance}p{text-wrap:pretty}.eyebrow{font-size:13px;letter-spacing:2px;margin-bottom:26px}.reading-progress{position:fixed;inset:0 0 auto;height:3px;z-index:70;pointer-events:none;background:transparent}.reading-progress span{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,#a8cef5,#a7d8c9);box-shadow:0 0 18px #a8cef588}.ambient-light{position:fixed;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(650px circle at var(--pointer-x,65%) var(--pointer-y,15%),#416ba21c,transparent 70%)}.site-header{background:#101827c9;backdrop-filter:blur(22px);border-color:#7ca2d21c;transition:box-shadow .4s}.site-header.is-scrolled{box-shadow:0 15px 50px #060e1f55}.header-inner{min-height:92px;gap:22px}.brand{font-size:20px}.brand-symbol{font-size:42px}.brand small{font-size:11px;letter-spacing:2px}.main-nav{gap:25px;font-size:15px}.main-nav a{position:relative;transition:color .2s}.main-nav a[aria-current="location"]{color:#a8cef5}.main-nav a[aria-current="location"]:after{content:"";position:absolute;bottom:-11px;left:0;right:0;height:2px;background:#a8cef5;border-radius:2px}.nav-contact{border-radius:50px;padding:11px 21px;border-color:#546b8866}.command-trigger{display:flex;align-items:center;gap:9px;background:#20314966;color:#c7d7ec;border:1px solid #6584aa44;border-radius:30px;padding:8px 14px;font-size:13px;margin-left:auto}.command-trigger>span{font-size:23px;line-height:1}.command-trigger kbd{font-size:10px}.command-trigger:hover{background:#2b415e}.hero{position:relative;isolation:isolate;grid-template-columns:1.4fr 1fr;gap:65px;min-height:calc(100svh - 92px);padding-block:85px 105px}.hero:before{content:"";position:absolute;z-index:-1;inset:-30px -10vw 0;background:radial-gradient(ellipse at 72% 38%,#4771a832,transparent 47%),radial-gradient(ellipse at 8% 90%,#487d7510,transparent 45%);pointer-events:none}.hero h1{font-size:clamp(60px,6.9vw,96px);font-weight:750;line-height:1.05;letter-spacing:-5px;margin-bottom:32px}.hero h1 em{background:linear-gradient(100deg,#b5d7fc,#b2e0d4);color:transparent;background-clip:text;position:relative}.hero h1 em:after{content:"";display:block;position:absolute;bottom:-9px;left:2px;width:100%;height:5px;border-radius:100%;background:linear-gradient(90deg,#a8cef588,transparent)}.hero-intro{font-size:20px;line-height:1.8;max-width:620px}.hero .eyebrow{font-size:13px}.status-dot{width:8px;height:8px;box-shadow:0 0 0 5px #a7d8c911}.actions{gap:15px}.button{position:relative;min-height:57px;border-radius:12px;font-size:16px;padding:15px 24px;gap:18px;transition:transform .3s var(--ease),background .2s,box-shadow .3s;overflow:hidden}.button.primary{box-shadow:0 8px 35px #a8cef518}.button.primary:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 25%,#ffffff66 50%,transparent 75%);transform:translateX(-130%);transition:transform .7s}.button.primary:hover:after{transform:translateX(130%)}.button:hover{transform:translateY(-3px);box-shadow:0 14px 40px #0003}.button span{transition:transform .3s}.button:hover span{transform:translate(3px,-3px)}.hero-links{font-size:15px;gap:28px;margin-top:32px}.hero-links a{transition:transform .25s}.hero-links a:hover{transform:translateY(-2px)}.hero-visual{position:relative;display:grid;place-items:center;padding:35px 15px;perspective:1000px;isolation:isolate}.portrait{max-width:365px;border-radius:27px;box-shadow:0 30px 90px #0005,inset 0 1px #dcecff30;transform:rotate(3deg);transition:transform .65s var(--ease);position:relative;justify-self:center;z-index:2;background:#1a2a3f;border:1px solid #a8cef55c}.portrait-top{padding:17px 22px;font-size:12px}.portrait img{aspect-ratio:.94;object-position:center 40%}.portrait figcaption{padding:20px 22px;font-size:15px}.portrait figcaption strong{font-size:17px}.orbit{position:absolute;border:1px solid #7eace22b;width:115%;aspect-ratio:1;border-radius:50%;z-index:0;pointer-events:none}.orbit-one{transform:rotate(-23deg) scaleY(.87);border-style:dashed}.orbit-two{width:135%;transform:rotate(35deg) scaleY(.82);border-color:#a8cef513}.orbit-one:after{content:"";position:absolute;width:12px;height:12px;background:#a7d8c9;border-radius:50%;top:17%;left:12%;box-shadow:0 0 25px #a7d8c999}.floating-label{z-index:3;position:absolute;padding:12px 18px;background:#1d2d43ec;backdrop-filter:blur(20px);border:1px solid #8caedc55;box-shadow:0 18px 45px #0004;border-radius:12px;color:#dbeaff;font:13px ui-monospace,monospace;white-space:nowrap;pointer-events:none}.label-top{top:10px;left:-5px;transform:rotate(-5deg)}.label-bottom{bottom:19px;right:-12px;transform:rotate(-3deg)}.visual-coordinate{position:absolute;right:-16px;top:49%;writing-mode:vertical-rl;font:10px ui-monospace,monospace;letter-spacing:3px;color:#93aaca}.scroll-cue{position:absolute;bottom:32px;left:0;display:flex;align-items:center;gap:20px;font-size:13px;color:#9fb3cd}.scroll-cue>span:last-child{display:grid;place-items:center;width:37px;height:37px;border:1px solid #536b8955;border-radius:50%;font-size:19px}.focus-strip{background:#17233755;border-color:#7793b82b;overflow:hidden}.focus-strip .container{font-size:15px;letter-spacing:.3px;padding-block:27px}.section{padding-block:120px}h2{font-size:clamp(36px,4.1vw,57px);font-weight:650;line-height:1.13;letter-spacing:-2.3px}h3{font-size:27px}.section-heading{gap:60px;margin-bottom:50px;align-items:center}.section-heading>p{font-size:18px;max-width:340px}.about-grid,.education-grid{grid-template-columns:1fr 1.35fr;gap:110px}.about-grid>div:first-child,.education-grid>div:first-child{position:sticky;top:140px;align-self:start}.about-copy p{font-size:19px;line-height:1.85;margin-bottom:25px}.about-copy .lead{font-size:26px;line-height:1.6}.text-link{font-size:17px}.projects-section,.archive-section{position:relative;background:linear-gradient(155deg,#18263a99,#101827 75%);border-color:#3b506535}.featured-project{border-radius:26px;border-color:#587ca655;background:radial-gradient(ellipse at 3% 0,#31527860,transparent 70%),#162337;box-shadow:0 30px 80px #0002;position:relative;overflow:hidden}.featured-copy{padding:48px}.tag{font-size:12px;border-radius:20px;padding:7px 12px;background:#a7d8c909}.featured-copy h3{font-size:52px;letter-spacing:-2px}.featured-copy .lead{font-size:24px}.featured-copy>p:not(.lead){font-size:18px}.reading-list{padding:40px 35px}.reading-list>a{padding:24px 10px;transition:background .3s,transform .3s,border-color .3s;border-color:#56739255}.reading-list>a:hover{background:#a8cef509;transform:translateX(5px);border-color:#a8cef580}.reading-list strong{font-size:17px}.reading-list small{font-size:14px}.reading-number{font-size:13px}.project-pair{gap:28px;margin-top:28px}.project-small{padding:38px;border-radius:24px;background:linear-gradient(140deg,#21334c77,#162132);border:1px solid #47678966;box-shadow:0 14px 40px #0002;position:relative;overflow:hidden;transition:transform .5s var(--ease),border-color .3s,box-shadow .3s}.project-small:before,.archive-card:before{content:"";position:absolute;inset:0;background:radial-gradient(350px circle at var(--card-x,50%) var(--card-y,0%),#a8cef518,transparent 75%);pointer-events:none}.project-small:hover{border-color:#9bbfe788;box-shadow:0 22px 50px #0004}.project-small h3{font-size:30px}.project-small p{font-size:18px}.project-kicker{font-size:12px;letter-spacing:1.2px}.chips{gap:10px;margin-bottom:22px}.chips span{font-size:13px;padding:5px 13px;border-radius:30px;background:#1a2b40}.skill-list{display:grid;grid-template-columns:1fr 1fr;gap:22px}.skill-list article{display:grid;grid-template-columns:35px 1fr;gap:18px;padding:32px;border:1px solid #45617f66!important;border-radius:22px;background:#18263a80;align-content:start;transition:transform .35s var(--ease),background .3s}.skill-list article:hover{background:#223650;transform:translateY(-5px)}.skill-number{font-size:14px;color:#a7d8c9}.skill-list h3{font-size:23px;line-height:1.4}.skill-list p{font-size:17px}.skill-list .skill-tools{grid-column:2;font-size:14px;line-height:2;margin-top:4px;color:#bdd7f5}.migration-note{padding:30px;border-radius:16px;background:linear-gradient(100deg,#233c5688,#1a2b3e66);border:1px solid #6c9bc644;border-left:3px solid #a8cef5}.migration-note h3{font-size:21px}.migration-note p{font-size:17px}.migration-note>.text-link{font-size:15px}.archive-toolbar{flex-wrap:wrap;gap:18px;margin:35px 0 25px}.archive-search{display:flex;gap:12px;align-items:center;border:1px solid #55718d88;background:#101827;border-radius:12px;padding:7px 16px;flex:1 1 250px;max-width:350px}.archive-search:focus-within{outline:2px solid #a8cef5;outline-offset:3px}.archive-search>span:not(.sr-only){font-size:27px;color:#a8cef5}.archive-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:#edf3fb;font:16px inherit;padding:8px 0;font-family:inherit;font-size:16px}.archive-search input::placeholder{color:#a0b3cc}.filter{font-size:15px;padding:10px 20px;transition:background .25s,color .25s,transform .25s}.filter:active{transform:scale(.95)}.archive-toolbar p{font-size:14px}.archive-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:26px}.archive-card{position:relative;border-radius:22px;background:linear-gradient(150deg,#1c2a40,#131e2e);border-color:#4d698755;transition:transform .45s var(--ease),box-shadow .4s,border-color .4s}.archive-card:hover{transform:translateY(-8px);box-shadow:0 25px 55px #0005;border-color:#8bb6e888}.archive-image{overflow:hidden;border-color:#4b658644}.archive-image img{transition:transform .7s var(--ease)}.archive-card:hover .archive-image img{transform:scale(1.045)}.archive-card-body{padding:27px}.archive-card h3{font-size:24px;letter-spacing:-.6px}.archive-card .eyebrow{font-size:12px;letter-spacing:1px}.archive-card p:not(.eyebrow){font-size:17px}.archive-label{font-size:11px;letter-spacing:1px}.timeline{padding-left:35px;border-color:#7298c555}.timeline article{margin-bottom:40px;padding:26px;border:1px solid #3b587555;border-radius:18px;background:linear-gradient(110deg,#1e2f4666,transparent);transition:border-color .3s,transform .3s}.timeline article:before{left:-40px;top:32px;box-shadow:0 0 0 6px #a8cef511}.timeline article:hover{border-color:#80a7d380;transform:translateX(4px)}.timeline-date{font-size:12px}.timeline h3{font-size:24px}.timeline p{font-size:18px}.contact-section{position:relative;overflow:hidden;background:radial-gradient(ellipse at 0 30%,#35557b77,transparent 65%),#19283e;padding-block:100px;border-color:#7298c544}.contact-grid{gap:70px}.contact-grid h2{font-size:clamp(40px,4.5vw,62px);line-height:1.14}.contact-grid p:not(.eyebrow){font-size:18px}.contact-links>a{padding:22px 0;transition:padding .3s,border-color .3s}.contact-links>a:hover{padding-left:9px;border-color:#a8cef5}.contact-links span{font-size:12px}.contact-links strong{font-size:18px}.copy-email{font-size:15px;padding:10px 16px;border:1px solid #7298c566;border-radius:9px;background:#12223866;color:#cce2fc;margin-bottom:12px;transition:background .3s}.copy-email:hover{background:#365374}.footer-inner{font-size:15px}.footer-inner p{font-size:15px}.footer-brand{font-size:23px}.ethics{font-size:13px;padding-bottom:80px}.utility-dock{position:fixed;z-index:35;bottom:21px;left:50%;transform:translateX(-50%);display:flex;gap:12px;align-items:center;padding:9px 12px;border:1px solid #7697bd66;background:#17263be8;backdrop-filter:blur(20px);box-shadow:0 14px 45px #0007,inset 0 1px #e0efff15;border-radius:20px;width:max-content;max-width:calc(100% - 24px)}.utility-dock button,.utility-dock a{border:0;background:transparent;color:#cbdcf1;padding:8px 10px;font-size:13px;border-radius:10px;white-space:nowrap}.utility-dock button:hover,.utility-dock a:hover{background:#a8cef51a;color:#fff}.dock-search{display:flex;align-items:center;gap:10px}.dock-divider{height:23px;width:1px;background:#6c8cb94d}kbd{font:11px ui-monospace,monospace;padding:3px 6px;border:1px solid #7b9ac444;border-radius:5px;color:#aabfda;background:#0c182a66}.utility-dock>a{font-size:20px;line-height:1}dialog{color:#edf3fb;background:#162337;border:1px solid #7194bf77;border-radius:24px;padding:0;box-shadow:0 40px 150px #0009;width:min(630px,calc(100% - 30px));max-height:85svh;overflow:auto}dialog::backdrop{background:#050d1cc9;backdrop-filter:blur(9px)}dialog[open]{animation:dialog-in .25s var(--ease)}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 26px 12px}.dialog-top h2{font-size:24px;letter-spacing:-.5px;margin:0}.dialog-close{border:1px solid #51698766;border-radius:9px;background:#263b53;color:#d9e9ff;width:36px;height:36px}.command-field{display:flex;align-items:center;gap:14px;padding:10px 26px 20px;border-bottom:1px solid #58739255}.command-field>span:not(.sr-only){font-size:30px;color:#a8cef5}.command-field input{font:18px inherit;font-family:inherit;font-size:18px;background:transparent;color:#edf3fb;border:0;outline:0;min-width:0;width:100%}.command-field:focus-within{box-shadow:inset 0 -2px #a8cef5}.command-results{padding:10px;max-height:45svh;overflow:auto}.command-result{display:flex;align-items:center;gap:15px;border-radius:12px;padding:13px 16px;font-size:16px}.command-result:hover,.command-result:focus-visible{background:#2a405d;color:#eaf3ff}.command-result small{display:block;font-size:12px;color:#aac0da}.command-result .result-arrow{margin-left:auto;color:#a8cef5}.command-result .result-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#2d435f;font:16px ui-monospace,monospace;color:#b9d8fa}.command-footer{display:flex;justify-content:space-between;gap:16px;padding:15px 24px;border-top:1px solid #58739255;font-size:12px;color:#a6bcd6}#command-empty{padding:22px;font-size:16px}.toast{position:fixed;z-index:80;bottom:100px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;border:1px solid #8bb0d277;border-radius:12px;background:#243c50;color:#e8f6ff;padding:12px 20px;font-size:15px;max-width:90%;box-shadow:0 12px 45px #0005;transition:opacity .25s,transform .25s}.toast.visible{opacity:1;transform:translate(-50%,0)}.cv-intro h1{font-size:clamp(48px,6vw,78px)}.cv-intro p,.cv-status p{font-size:19px}.cv-status h2{font-size:32px}.cv-help{font-size:16px}.back-link{font-size:16px}.cv-toolbar p{font-size:16px}
@keyframes dialog-in{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
@keyframes float-label{0%,100%{translate:0 0}50%{translate:0 -9px}}
@keyframes halo-breathe{0%,100%{opacity:.45}50%{opacity:1}}
.motion-on .floating-label{animation:float-label 6s ease-in-out infinite}.motion-on .label-bottom{animation-delay:-3s}.motion-on .orbit-two{animation:halo-breathe 7s ease-in-out infinite}
.reveal-ready{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease)}.reveal-ready.is-visible{opacity:1;transform:none}.motion-off .reveal-ready{opacity:1;transform:none}.motion-off *{animation:none!important;transition:none!important;scroll-behavior:auto!important}.motion-off{scroll-behavior:auto}
@media(max-width:1200px){.command-trigger kbd{display:none}.header-inner{gap:16px}.main-nav{gap:17px;font-size:14px}.hero{gap:35px}.hero h1{font-size:clamp(60px,7.2vw,86px)}.portrait{max-width:330px}.label-bottom{right:-5px;font-size:11px}.about-grid,.education-grid{gap:65px}.featured-copy{padding:35px}.archive-card h3{font-size:21px}.hero .actions{flex-wrap:wrap}.button{font-size:15px}.skill-list article{padding:26px}}
@media(max-width:1000px){.container{width:calc(100% - 48px)}.command-trigger{display:none}.hero{grid-template-columns:1.2fr 1fr;min-height:auto;padding-block:70px 95px}.hero h1{font-size:65px;letter-spacing:-3.5px}.hero-intro{font-size:18px}.portrait{max-width:295px}.floating-label{font-size:11px}.visual-coordinate{display:none}.main-nav{gap:16px}.section{padding-block:85px}.section-heading>p{max-width:none}.section-heading{margin-bottom:35px}.about-grid,.education-grid{gap:40px}.about-copy .lead{font-size:24px}.about-copy p{font-size:18px}.featured-copy h3{font-size:46px}.contact-grid{gap:35px}.contact-links strong{font-size:16px}}
@media(max-width:900px){.header-inner{min-height:82px}.main-nav{font-size:16px;padding:8px 0 12px;gap:18px 26px}.menu-toggle{font-size:15px;padding:9px 15px;border-radius:10px}.main-nav a[aria-current="location"]:after{bottom:-4px}.hero h1{font-size:60px}.hero .button{font-size:14px;padding:13px 17px}.hero-links{font-size:14px;gap:20px}.portrait{max-width:265px}.portrait figcaption{display:block;font-size:13px}.portrait figcaption strong{font-size:16px}.portrait-top{font-size:11px}.label-bottom{font-size:10px;padding:10px}.orbit{width:110%}.orbit-two{width:125%}.about-grid>div:first-child,.education-grid>div:first-child{position:static}.featured-project{grid-template-columns:1fr}.reading-list{padding:10px 35px 35px}.reading-list strong{font-size:18px}.project-pair{gap:20px}.project-small{padding:28px}.project-small h3{font-size:27px}.project-small p{font-size:17px}.skill-list{grid-template-columns:1fr}.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.archive-card h3{font-size:24px}.migration-note>.text-link{margin-left:0}.section-heading>p{font-size:18px}.timeline article{padding:20px}.timeline h3{font-size:22px}}
@media(max-width:650px){.container{width:calc(100% - 36px)}.brand{font-size:18px}.brand small{font-size:10px}.hero{grid-template-columns:1fr;padding-top:45px;padding-bottom:85px;gap:40px}.hero h1{font-size:clamp(53px,10.7vw,69px);letter-spacing:-3px;line-height:1.08}.hero-intro{font-size:18px}.hero .eyebrow{font-size:12px;letter-spacing:1.5px}.hero .button{font-size:15px;min-height:54px}.hero-links{font-size:15px}.hero-visual{max-width:390px;width:100%;justify-self:center;padding:30px 20px}.portrait{max-width:310px;transform:rotate(2deg)}.portrait img{aspect-ratio:1.12;object-position:center 42%}.portrait figcaption{display:flex;font-size:13px}.portrait figcaption>span{margin:0}.floating-label{font-size:10px}.label-top{left:1px;top:9px}.label-bottom{right:0;bottom:12px}.orbit-two{width:110%}.orbit-one{width:100%}.scroll-cue{bottom:20px;font-size:13px}.focus-strip .container{font-size:13px;padding-block:23px;gap:12px 24px}.section{padding-block:65px}h2{font-size:39px;letter-spacing:-1.6px}.about-grid,.education-grid,.contact-grid,.project-pair{grid-template-columns:1fr;gap:24px}.about-copy .lead{font-size:23px}.section-heading{margin-bottom:30px}.section-heading>p{font-size:17px}.featured-copy{padding:27px}.featured-copy h3{font-size:43px}.featured-copy .lead{font-size:22px}.featured-copy>p:not(.lead){font-size:17px}.tag{font-size:10px;letter-spacing:.5px}.reading-list{padding:0 23px 27px}.reading-list>a{padding:20px 0;gap:10px;grid-template-columns:23px 1fr 14px}.reading-list strong{font-size:16px}.reading-list small{font-size:13px}.project-small{padding:28px}.project-small h3{font-size:28px}.project-small p{font-size:17px}.project-kicker{font-size:11px}.skill-list article{padding:25px 20px;gap:12px;grid-template-columns:26px 1fr}.skill-list h3{font-size:22px}.skill-list p{font-size:17px}.skill-list .skill-tools{font-size:13px}.migration-note{padding:23px}.migration-note h3{font-size:20px}.migration-note p{font-size:16px}.archive-toolbar{align-items:stretch;gap:17px;margin-top:25px}.archive-search{max-width:none;flex:auto}.filters{gap:8px}.filter{font-size:14px;padding:9px 17px}.archive-grid{grid-template-columns:1fr}.archive-card h3{font-size:26px}.archive-card p:not(.eyebrow){font-size:18px}.archive-label{font-size:12px}.archive-image img{max-height:none}.timeline-date{font-size:11px}.timeline p{font-size:17px}.contact-section{padding-block:65px}.contact-grid h2{font-size:43px}.contact-links strong{font-size:16px}.contact-links>a{padding-block:20px}.footer-inner{font-size:15px}.ethics{font-size:12px}.utility-dock{gap:6px;padding:7px 9px;border-radius:16px;bottom:14px}.utility-dock button,.utility-dock a{font-size:12px;padding:8px}.utility-dock kbd{display:none}.utility-dock>a{font-size:20px}.dialog-top{padding:20px}.dialog-top h2{font-size:21px}.command-field{padding:8px 20px 18px}.command-field input{font-size:16px}.command-footer{font-size:11px;padding:13px 18px}.cv-status{padding:25px}.cv-toolbar .button{font-size:14px}.cv-help{font-size:16px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.floating-label,.orbit-two,dialog[open]{animation:none!important}.reveal-ready{opacity:1;transform:none}*{transition:none!important}}
@media print{.utility-dock,.reading-progress,.ambient-light,.command-trigger,.floating-label,.orbit,.scroll-cue,.copy-email,.archive-search,.toast{display:none!important}.reveal-ready{opacity:1;transform:none}.hero-visual{max-width:200px}.hero{min-height:0}.about-grid>div:first-child,.education-grid>div:first-child{position:static}.hero h1 em{color:#111}.section{padding-block:25px}}
