:root{--clr-bg:#FFFFFF;--clr-surface:#FAFAFA;--clr-border:#000000;--clr-border-dim:#E5E5E5;--clr-shadow:rgba(0,0,0,0.05);--nav-shadow:rgba(0,0,0,0.10);--clr-text:#000000;--clr-muted:#444444;--clr-faint:#757575;--clr-grid:#F5F5F5;--clr-accent:#FF3B30;--clr-accent-text:#D70015;--clr-on-accent:#FFFFFF;--clr-green:#1FB574;--clr-pink:#FF4FA3;--clr-cyan:#1FB6CE;--font-display:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";--font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-mono:ui-monospace,"SF Mono","Fira Code","Menlo","Monaco","Consolas",monospace;--text-2xs:0.625rem;--text-xs:0.75rem;--text-sm:0.875rem;--text-base:1rem;--text-md:1.25rem;--text-lg:1.5rem;--text-xl:clamp(1.5rem,3.5vw,2rem);--text-2xl:clamp(1.85rem,5vw,3.5rem);--text-hero:clamp(2.5rem,8.5vw,6.5rem);--leading-body:1.6;--space-unit:0.5rem;--space-4:calc(var(--space-unit) * 0.5);--space-8:var(--space-unit);--space-16:calc(var(--space-unit) * 2);--space-24:calc(var(--space-unit) * 3);--space-32:calc(var(--space-unit) * 4);--space-48:calc(var(--space-unit) * 6);--space-64:calc(var(--space-unit) * 8);--space-96:calc(var(--space-unit) * 12);--space-160:calc(var(--space-unit) * 20);--space-xs:var(--space-8);--space-sm:var(--space-16);--space-md:var(--space-32);--space-lg:var(--space-64);--space-xl:var(--space-96);--space-xxl:var(--space-160);--border-width:1px;--container-max:1600px;--nav-h:72px;--grid-gutter:var(--space-32);--ease-swiss:cubic-bezier(0.25,0.1,0.25,1);--dur-fast:150ms;--dur-base:300ms;--dur-slow:500ms;}:root[data-theme="dark"]{--clr-bg:#0A0A0A;--clr-surface:#141414;--clr-border:#FFFFFF;--clr-border-dim:#2A2A2A;--clr-shadow:rgba(255,255,255,0.06);--nav-shadow:rgba(0,0,0,0.60);--clr-text:#FFFFFF;--clr-muted:#B5B5B5;--clr-faint:#8A8A8A;--clr-grid:#1A1A1A;--clr-accent:#FF453A;--clr-accent-text:#FF6B61;--clr-on-accent:#0A0A0A;--clr-green:#2FD08A;--clr-pink:#FF6FB5;--clr-cyan:#3FD3E8;}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--clr-bg:#0A0A0A;--clr-surface:#141414;--clr-border:#FFFFFF;--clr-border-dim:#2A2A2A;--clr-shadow:rgba(255,255,255,0.06);--nav-shadow:rgba(0,0,0,0.60);--clr-text:#FFFFFF;--clr-muted:#B5B5B5;--clr-faint:#8A8A8A;--clr-grid:#1A1A1A;--clr-accent:#FF453A;--clr-accent-text:#FF6B61;--clr-on-accent:#0A0A0A;--clr-green:#2FD08A;--clr-pink:#FF6FB5;--clr-cyan:#3FD3E8;}}@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url("../fonts/inter-latin.woff2") format("woff2");}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}html{-webkit-text-size-adjust:100%;}body{min-height:100vh;min-height:100dvh;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}img,picture,video,canvas,svg{display:block;max-width:100%;height:auto;}input,button,textarea,select{font:inherit;}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;}ul,ol{list-style:none;}a{color:inherit;text-decoration:none;}button{cursor:pointer;background:none;border:none;}:focus-visible{outline:2px solid var(--clr-accent);outline-offset:4px;}::selection{background:var(--clr-accent-text);color:var(--clr-on-accent);}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + var(--space-16) + env(safe-area-inset-top));font-size:100%;-webkit-text-size-adjust:100%;}html:not(.js) .reveal{opacity:1 !important;transform:none !important;}body{background-color:var(--clr-bg);color:var(--clr-text);font-family:var(--font-body);font-size:var(--text-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:800;line-height:1;letter-spacing:-0.04em;color:var(--clr-text);text-transform:uppercase;text-wrap:balance;}.hero__inner,.about__grid,.skills__grid,.edu__meta,.contact__inner,.project-item,.project-item__content,.exp__card,.skills__group,.contact__links,.hero__meta{min-width:0;}p{max-width:60ch;margin-bottom:var(--space-16);}a{color:inherit;text-decoration:none;transition:color var(--dur-fast) var(--ease-swiss);outline:none;}a:focus-visible{outline:2px solid var(--clr-accent-text);outline-offset:4px;}.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--space-lg);}.section{padding-block:var(--space-xl);border-top:var(--border-width) solid var(--clr-border);position:relative;}.section__header{margin-bottom:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-8);}.section__num{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--clr-accent-text);font-weight:700;}.section__title{font-size:var(--text-2xl);margin-left:-0.05em;}.btn{display:inline-flex;align-items:center;justify-content:center;padding:0.65rem 1.4rem;font-family:var(--font-display);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:0.04em;background-color:transparent;border:var(--border-width) solid var(--clr-text);color:var(--clr-text);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-swiss),color var(--dur-fast) var(--ease-swiss),border-color var(--dur-fast) var(--ease-swiss);position:relative;overflow:hidden;}.btn:hover{background-color:var(--clr-text);color:var(--clr-bg);}.btn:active{transform:translate(1px,1px);}.btn--accent{border-color:var(--clr-accent-text);color:var(--clr-accent-text);}.btn--accent:hover{background-color:var(--clr-accent-text);border-color:var(--clr-accent-text);color:var(--clr-on-accent);}.tag{display:inline-flex;align-items:center;gap:var(--space-8);padding:0.5rem 1rem;font-family:var(--font-display);font-size:var(--text-2xs);font-weight:700;text-transform:uppercase;letter-spacing:0.05em;border:var(--border-width) solid var(--clr-border-dim);color:var(--clr-faint);background:transparent;line-height:1;}.badge{display:inline-flex;align-items:center;padding:0.4rem 0.85rem;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:700;text-transform:uppercase;letter-spacing:0.08em;border:var(--border-width) solid var(--clr-border-dim);color:var(--clr-text);background:var(--clr-surface);line-height:1;white-space:nowrap;transition:transform var(--dur-fast) var(--ease-swiss),border-color var(--dur-fast) var(--ease-swiss),box-shadow var(--dur-fast) var(--ease-swiss);}.badge:hover{border-color:var(--clr-border);box-shadow:1px 1px 0 var(--clr-border);}.badge--accent{border-color:var(--clr-accent);color:var(--clr-accent-text);}.badge--accent:hover{border-color:var(--clr-accent-text);box-shadow:1px 1px 0 var(--clr-accent-text);}.status-pill{display:inline-flex;align-items:center;gap:var(--space-8);padding:0.35rem 0.75rem;font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:0.1em;border:1px solid var(--clr-accent);border-radius:999px;color:var(--clr-accent-text);white-space:nowrap;}.status-pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--clr-accent-text);}.tag::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--clr-faint);}.reveal{opacity:0;transform:translateY(30px);transition:opacity var(--dur-base) var(--ease-swiss),transform var(--dur-base) var(--ease-swiss);}.reveal.visible{opacity:1;transform:translateY(0);}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none;}html{scroll-behavior:auto;}}::-webkit-scrollbar{width:10px;}::-webkit-scrollbar-track{background:var(--clr-bg);}::-webkit-scrollbar-thumb{background:var(--clr-text);border:3px solid var(--clr-bg);}.text-muted{color:var(--clr-muted);}.text-center{text-align:center;}.mb-16{margin-bottom:var(--space-16);}.mb-sm{margin-bottom:var(--space-sm);}.mb-lg{margin-bottom:var(--space-lg);}.mt-48{margin-top:var(--space-48);}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;}.sr-only-focusable:focus,.sr-only-focusable:focus-within{position:fixed;top:0;left:0;width:auto;height:auto;margin:0;padding:1rem;overflow:visible;clip:auto;clip-path:none;white-space:normal;background:var(--clr-bg);color:var(--clr-text);outline:2px solid var(--clr-accent-text);z-index:10000;}.scroll-progress-container{position:fixed;top:0;left:0;width:100%;height:2px;background:transparent;z-index:1100;}.scroll-progress-bar{height:100%;width:0%;background:var(--clr-accent);}.nav{position:fixed;top:0;left:0;right:0;z-index:1000;height:calc(var(--nav-h) + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);background:var(--clr-bg);border-bottom:var(--border-width) solid var(--clr-border);display:flex;align-items:center;transition:transform var(--dur-base) var(--ease-swiss);}.nav--hidden{transform:translateY(-100%);}.nav .container{display:flex;align-items:center;justify-content:space-between;}.nav__brand{font-family:var(--font-display);font-size:var(--text-md);font-weight:900;color:var(--clr-text);letter-spacing:-0.05em;text-transform:uppercase;display:flex;align-items:center;gap:var(--space-8);}.nav__brand::before{content:"";display:block;width:12px;height:12px;background:var(--clr-accent);}.nav__theme{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-left:auto;padding:0;cursor:pointer;color:var(--clr-muted);background:none;border:1px solid var(--clr-border);border-radius:50%;transition:color var(--dur-fast) var(--ease-swiss),border-color var(--dur-fast) var(--ease-swiss),background-color var(--dur-fast) var(--ease-swiss);}.nav__theme:hover,.nav__theme:focus-visible{color:var(--clr-on-accent);background:var(--clr-accent);border-color:var(--clr-accent);}.nav__theme:focus-visible{outline:2px solid var(--clr-accent-text);outline-offset:4px;}.nav__theme-icon{display:none;}:root[data-theme="light"] .nav__theme-icon--moon{display:block;}:root[data-theme="dark"] .nav__theme-icon--sun{display:block;}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .nav__theme-icon--sun{display:block;}:root:not([data-theme="light"]) .nav__theme-icon--moon{display:none;}}@media (prefers-color-scheme:light){:root:not([data-theme="dark"]) .nav__theme-icon--moon{display:block;}:root:not([data-theme="dark"]) .nav__theme-icon--sun{display:none;}}.nav__links{display:flex;align-items:center;gap:var(--space-32);margin-left:auto;}.nav__links a{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:0.1em;color:var(--clr-muted);position:relative;}.nav__links a::after{content:"";position:absolute;bottom:-4px;left:0;width:100%;height:1px;background:var(--clr-accent);transform:scaleX(0);transform-origin:right;transition:transform var(--dur-fast) var(--ease-swiss);}.nav__links a:hover::after,.nav__links a.active::after{transform:scaleX(1);transform-origin:left;}.nav__links a:hover,.nav__links a.active{color:var(--clr-text);}.nav__toggle{display:none;width:44px;height:44px;flex-direction:column;justify-content:center;align-items:center;cursor:pointer;background:none;border:none;z-index:1001;}.nav__toggle span{display:block;width:20px;height:2px;background:var(--clr-text);margin-bottom:4px;transition:transform var(--dur-base) var(--ease-swiss),opacity var(--dur-base) var(--ease-swiss);}.nav__toggle.open span:nth-child(1){transform:translateY(6px) rotate(45deg);}.nav__toggle.open span:nth-child(2){opacity:0;}.nav__toggle.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}@media (min-width:769px) and (max-width:1024px) and (orientation:landscape){.nav__links{gap:var(--space-16);}}@media (max-width:768px),(max-width:1024px) and (orientation:portrait){.nav__theme{margin-left:auto;margin-right:var(--space-8);}.nav__toggle{display:flex;}}.hero{min-height:100vh;min-height:100dvh;padding-top:calc(var(--nav-h) + var(--space-xl) + env(safe-area-inset-top));padding-bottom:var(--space-xl);display:flex;align-items:center;background-color:var(--clr-bg);position:relative;overflow:hidden;}.hero::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(to right,var(--clr-grid) 1px,transparent 1px),linear-gradient(to bottom,var(--clr-grid) 1px,transparent 1px);background-size:40px 40px;mask-image:radial-gradient(circle at 50% 50%,black,transparent 80%);pointer-events:none;z-index:0;}.hero__inner{width:100%;position:relative;z-index:1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gutter);}.hero__content{grid-column:1 / span 12;min-width:0;}.hero__name{font-family:var(--font-display);font-size:var(--text-hero);line-height:0.92;font-weight:900;text-transform:uppercase;letter-spacing:-0.04em;margin-bottom:var(--space-24);color:var(--clr-text);word-break:break-word;min-width:0;}.hero__title{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:700;color:var(--clr-accent-text);text-transform:uppercase;letter-spacing:0.2em;margin-bottom:var(--space-16);display:flex;align-items:center;gap:var(--space-16);}.hero__title::before{content:"";width:40px;height:2px;background:var(--clr-accent);}.hero__badges{display:flex;flex-wrap:wrap;gap:var(--space-8);margin-bottom:var(--space-32);}.hero__meta{grid-column:1 / span 12;margin-top:var(--space-64);display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-32);border-top:var(--border-width) solid var(--clr-text);padding-top:var(--space-24);}.hero__meta-item{display:flex;flex-direction:column;gap:var(--space-4);transition:transform var(--dur-fast) var(--ease-swiss);}.hero__meta-item:hover{transform:translateY(-2px);}.hero__meta-label{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--clr-faint);text-transform:uppercase;letter-spacing:0.1em;}.hero__meta-value{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;color:var(--clr-text);}.hero__links{display:flex;gap:var(--space-16);}@media (max-width:1024px){.hero__meta{grid-template-columns:repeat(2,1fr);gap:var(--space-24);}}@media (max-width:768px){.hero{padding-top:calc(var(--nav-h) + var(--space-lg) + env(safe-area-inset-top));}.hero__name{font-size:clamp(2.5rem,16vw,4.5rem);}.hero__meta{grid-template-columns:repeat(2,1fr);gap:var(--space-16);margin-top:var(--space-48);}}@media (max-width:480px){.hero__title{font-size:var(--text-xs);gap:var(--space-12);}.hero__title::before{width:24px;}.hero__meta{grid-template-columns:1fr;gap:var(--space-12);margin-top:var(--space-36);}.hero__meta-item{flex-direction:row;justify-content:space-between;align-items:center;padding-bottom:var(--space-8);border-bottom:1px solid var(--clr-border-dim);}.hero__meta-item:last-child{border-bottom:none;padding-bottom:0;}.hero__meta-value{text-align:right;}}.about__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gutter);}.about__bio{grid-column:span 8;}.about__bio p{font-size:var(--text-base);line-height:var(--leading-body);color:var(--clr-text);margin-bottom:var(--space-md);}.about__bio strong,.about__bio em{color:var(--clr-text);font-weight:700;font-style:normal;}.about__sidebar{grid-column:span 4;padding-left:var(--space-lg);border-left:1px solid var(--clr-border);}.about__stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-16);margin-block:var(--space-32);}.stat{display:flex;flex-direction:column;gap:var(--space-8);padding:var(--space-16);background:var(--clr-surface);border:var(--border-width) solid var(--clr-border-dim);transition:transform var(--dur-fast) var(--ease-swiss),border-color var(--dur-fast) var(--ease-swiss),box-shadow var(--dur-fast) var(--ease-swiss);}.stat:hover{transform:translateY(-2px);border-color:var(--clr-accent);box-shadow:2px 2px 0px var(--clr-border);}.stat__num{font-family:var(--font-display);font-size:var(--text-xl);font-weight:900;letter-spacing:-0.03em;color:var(--clr-accent-text);line-height:1;}.stat__label{font-family:var(--font-mono);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:0.1em;color:var(--clr-faint);font-weight:600;}.about__tags{display:flex;flex-wrap:wrap;gap:var(--space-8);}@media (min-width:769px) and (max-width:1024px) and (orientation:landscape){.about__bio{grid-column:span 7;}.about__sidebar{grid-column:span 5;padding-left:var(--space-24);}}@media (max-width:768px),(max-width:1024px) and (orientation:portrait){.about__bio,.about__sidebar{grid-column:1 / -1;}.about__sidebar{padding-left:0;border-left:none;border-top:1px solid var(--clr-border);padding-top:var(--space-lg);}}@media (max-width:768px){.about__stats{grid-template-columns:repeat(2,1fr);}}@media (max-width:400px){.about__stats{gap:var(--space-8);}.stat{padding:var(--space-12) var(--space-8);}.stat__num{font-size:1.5rem;}}.edu__meta{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gutter);}.edu__table-wrapper{grid-column:span 12;}.edu__table{width:100%;border-collapse:collapse;}.edu__table tr{border-bottom:1px solid var(--clr-border);}.edu__table th,.edu__table td{padding-block:var(--space-md);vertical-align:top;text-align:left;font-weight:normal;}.edu__table th,.edu__table td:first-child{width:30%;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--clr-accent-text);text-transform:uppercase;}.edu__table td:last-child{font-size:var(--text-base);color:var(--clr-text);}.edu__table a{color:var(--clr-text);font-weight:700;text-decoration:underline;text-underline-offset:4px;}.edu__table a:hover{color:var(--clr-accent);}@media (max-width:768px){.edu__table tr{display:block;padding-block:var(--space-16);}.edu__table th,.edu__table td{display:block;width:100% !important;padding-block:0;}.edu__table th{display:inline-block;padding:0.2rem 0.55rem;margin-bottom:var(--space-8);background:var(--clr-surface);border:1px solid var(--clr-border-dim);font-size:var(--text-2xs);}.edu__table td:last-child{padding-top:var(--space-4);line-height:var(--leading-body);}}.exp__list{display:flex;flex-direction:column;gap:0;border-left:1px solid var(--clr-border);}.exp__card{position:relative;padding-left:var(--space-lg);padding-bottom:var(--space-xl);display:grid;grid-template-columns:1fr auto;column-gap:var(--space-32);align-items:baseline;transition:transform var(--dur-fast) var(--ease-swiss);}.exp__desc{grid-column:1 / -1;}@media (max-width:480px){.exp__card{grid-template-columns:1fr;padding-left:var(--space-24);padding-bottom:var(--space-32);}.exp__title{font-size:var(--text-base);}}.exp__card::before{content:'';position:absolute;left:-5px;top:4px;width:9px;height:9px;background-color:var(--clr-bg);border:2px solid var(--clr-border);border-radius:50%;transition:background-color var(--dur-fast) var(--ease-swiss),border-color var(--dur-fast) var(--ease-swiss),box-shadow var(--dur-fast) var(--ease-swiss),transform var(--dur-fast) var(--ease-swiss);}.exp__card:hover::before{background-color:var(--clr-accent);border-color:var(--clr-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--clr-accent) 25%,transparent);transform:scale(1.25);}.exp__card:hover .exp__title{color:var(--clr-accent-text);}.exp__title{font-size:var(--text-lg);font-weight:700;text-transform:uppercase;margin-bottom:0.25rem;transition:color var(--dur-fast) var(--ease-swiss);}.exp__date{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--clr-accent-text);text-transform:uppercase;margin-bottom:var(--space-md);display:block;}.exp__tags{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:var(--space-8);margin-top:var(--space-16);}.exp__tag{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;color:var(--clr-faint);background:var(--clr-surface);border:1px solid var(--clr-border-dim);padding:0.25rem 0.6rem;line-height:1;text-transform:uppercase;letter-spacing:0.05em;transition:border-color var(--dur-fast) var(--ease-swiss),color var(--dur-fast) var(--ease-swiss);}.exp__card:hover .exp__tag{border-color:var(--clr-accent);color:var(--clr-text);}.exp__desc{font-size:var(--text-base);color:var(--clr-muted);max-width:60ch;}.exp__desc strong{color:var(--clr-accent-text);font-weight:700;}.exp__desc a{color:var(--clr-accent-text);font-weight:700;text-decoration:underline;text-underline-offset:2px;}.exp__desc a:hover{color:var(--clr-accent);}.skills__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gutter);}.skills__group{grid-column:span 4;margin-bottom:var(--space-lg);}.skills__group-title{font-family:var(--font-display);font-size:var(--text-sm);font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:var(--clr-accent-text);margin-bottom:var(--space-md);display:flex;align-items:center;gap:var(--space-8);border-bottom:1px solid var(--clr-border-dim);padding-bottom:var(--space-8);}.skills__list{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-8);}.skills__list li{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;color:var(--clr-text);border:var(--border-width) solid var(--clr-border-dim);background:var(--clr-surface);padding:0.5rem 0.85rem;line-height:1;display:inline-flex;align-items:center;gap:var(--space-8);transition:transform var(--dur-fast) var(--ease-swiss),border-color var(--dur-fast) var(--ease-swiss),box-shadow var(--dur-fast) var(--ease-swiss),color var(--dur-fast) var(--ease-swiss);}.skills__list li:hover{transform:translateY(-2px);border-color:var(--clr-accent);color:var(--clr-accent-text);box-shadow:2px 2px 0px var(--clr-border);}.skills__list .text-muted{color:var(--clr-faint);font-weight:400;font-size:var(--text-2xs);}@media (min-width:769px) and (max-width:1024px){.skills__group{grid-column:span 6;}.skills__group:last-child{grid-column:span 12;}}@media (max-width:768px){.skills__group{grid-column:span 12;margin-bottom:var(--space-md);}}.projects__list{display:flex;flex-direction:column;}.project-item{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));border-bottom:var(--border-width) solid var(--clr-border);transition:background-color var(--dur-base) var(--ease-swiss);}.project-item:hover{background-color:var(--clr-surface);}.project-item__image-container{grid-column:1 / span 4;aspect-ratio:4 / 3;align-self:start;border-right:var(--border-width) solid var(--clr-border);padding:var(--space-32);display:flex;align-items:center;justify-content:center;background-color:var(--clr-bg);position:relative;overflow:hidden;}.project-item__image-container::before{content:"";position:absolute;inset:0;opacity:0.05;background-image:radial-gradient(var(--clr-text) 1px,transparent 1px);background-size:20px 20px;}.project-item__image{width:100%;height:100%;border:var(--border-width) solid var(--clr-text);background-color:var(--clr-bg);display:flex;align-items:center;justify-content:center;position:relative;z-index:1;transition:transform var(--dur-slow) var(--ease-swiss);}.project-item__image img{width:100%;height:100%;object-fit:contain;display:block;}:root[data-theme="dark"] .project-item__image img{filter:invert(1) hue-rotate(180deg);}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .project-item__image img{filter:invert(1) hue-rotate(180deg);}}.project-item:hover .project-item__image{transform:scale(0.98) rotate(-1deg);}.project-item__content{grid-column:5 / span 8;padding:var(--space-48) var(--space-64);display:flex;flex-direction:column;}.project-item__tagline{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--clr-accent-text);text-transform:uppercase;letter-spacing:0.2em;margin-bottom:var(--space-16);font-weight:700;}.project-item__title{font-size:var(--text-xl);line-height:0.9;margin-bottom:var(--space-24);letter-spacing:-0.04em;}.project-item__description{font-size:var(--text-base);color:var(--clr-muted);margin-bottom:var(--space-32);line-height:var(--leading-body);}.project-item__meta{margin-top:auto;display:flex;justify-content:space-between;align-items:flex-end;}.project-item__year{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--clr-faint);}.project-item__links{display:flex;gap:var(--space-16);}.project-item__links .btn{padding:0.35rem 0.75rem;font-size:var(--text-2xs);letter-spacing:0.03em;}@media (max-width:1200px){.project-item__content{padding:var(--space-32) var(--space-48);}}@media (min-width:769px) and (max-width:1024px) and (orientation:landscape){.project-item__content{grid-column:6 / span 7;padding:var(--space-32);}.project-item__image-container{grid-column:1 / span 5;aspect-ratio:4 / 3;padding:var(--space-24);}}@media (max-width:768px),(max-width:1024px) and (orientation:portrait){.project-item{grid-template-columns:1fr;}.project-item__image-container{grid-column:1 / span 1;border-right:none;border-bottom:var(--border-width) solid var(--clr-border);aspect-ratio:16 / 9;padding:var(--space-24);}.project-item__content{grid-column:1 / span 1;padding:var(--space-32) var(--space-24);}.project-item__links .btn{min-height:44px;padding:0.75rem 1.25rem;font-size:var(--text-xs);}}@media (max-width:768px){.project-item__content{padding:var(--space-32) var(--space-16);}}@media (max-width:480px){.project-item__image-container{padding:var(--space-16);}.project-item__title{font-size:1.5rem;margin-bottom:var(--space-16);}.project-item__meta{flex-wrap:wrap;gap:var(--space-16);}.project-item__links{width:100%;flex-wrap:wrap;gap:var(--space-8);}.project-item__links .btn{flex:1 1 calc(50% - var(--space-8));min-width:120px;}.project-item__links .tag{width:100%;justify-content:center;min-height:40px;}}.faq__list{display:flex;flex-direction:column;border-top:var(--border-width) solid var(--clr-border);}.faq__item{border-bottom:var(--border-width) solid var(--clr-border);transition:background-color var(--dur-fast) var(--ease-swiss),border-color var(--dur-fast) var(--ease-swiss),padding var(--dur-fast) var(--ease-swiss);}.faq__item:hover{background-color:var(--clr-surface);}.faq__item[open]{background-color:var(--clr-surface);padding-inline:var(--space-16);border-left:3px solid var(--clr-accent);}.faq__item summary{list-style:none;cursor:pointer;padding:var(--space-20) 0;min-height:48px;display:flex;justify-content:space-between;align-items:center;gap:var(--space-16);user-select:none;font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;letter-spacing:-0.02em;color:var(--clr-text);outline:none;transition:color var(--dur-fast) var(--ease-swiss);}.faq__item summary::-webkit-details-marker{display:none;}.faq__item summary:hover{color:var(--clr-accent-text);}.faq__item summary:focus-visible{outline:2px solid var(--clr-accent-text);outline-offset:4px;}.faq__question-text{display:flex;align-items:baseline;gap:var(--space-16);}.faq__num{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--clr-accent-text);font-weight:700;flex-shrink:0;}.faq__icon{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:700;color:var(--clr-accent-text);transition:transform var(--dur-fast) var(--ease-swiss);flex-shrink:0;line-height:1;}.faq__item[open] .faq__icon{transform:rotate(45deg);}.faq__content{padding-bottom:var(--space-24);padding-left:calc(var(--text-xs) + var(--space-16));}.faq__content p{font-size:var(--text-base);line-height:var(--leading-body);color:var(--clr-muted);max-width:70ch;margin-bottom:0;}.faq__content a{color:var(--clr-accent-text);font-weight:600;text-decoration:underline;text-underline-offset:2px;}.faq__content a:hover{color:var(--clr-accent);}@media (max-width:768px){.faq__item[open]{padding-inline:var(--space-12);}.faq__item summary{font-size:var(--text-base);padding:var(--space-16) 0;}.faq__content{padding-left:0;padding-bottom:var(--space-16);}}.contact__inner{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gutter);}.contact__head{grid-column:span 6;display:flex;flex-direction:column;gap:var(--space-16);}.contact__line{font-family:var(--font-display);font-size:var(--text-2xl);line-height:1.1;font-weight:700;text-transform:uppercase;letter-spacing:-0.04em;overflow-wrap:break-word;}.contact__status{display:inline-flex;align-items:center;gap:var(--space-8);align-self:flex-start;font-family:var(--font-mono);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:0.1em;color:var(--clr-accent-text);border:1px solid var(--clr-accent);border-radius:999px;padding:0.35rem 0.75rem;}.contact__status-dot{width:8px;height:8px;border-radius:50%;background:var(--clr-accent-text);box-shadow:0 0 0 0 var(--clr-accent-text);animation:contact-pulse 2s infinite var(--ease-swiss);}@keyframes contact-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--clr-accent-text) 60%,transparent);}70%{box-shadow:0 0 0 8px transparent;}100%{box-shadow:0 0 0 0 transparent;}}.contact__links{grid-column:span 6;display:flex;flex-direction:column;gap:var(--space-sm);padding-top:0.5rem;}.contact__links a{font-family:var(--font-display);font-size:var(--text-lg);font-weight:500;color:var(--clr-text);border-bottom:1px solid var(--clr-border);padding-block:0.5rem;display:flex;justify-content:space-between;align-items:center;transition:color var(--dur-fast) var(--ease-swiss),border-color var(--dur-fast) var(--ease-swiss);}.contact__links a:hover,.contact__links a:focus-visible{color:var(--clr-accent);border-color:var(--clr-accent);}.contact__links a:focus-visible{outline:2px solid var(--clr-accent-text);outline-offset:4px;}.contact__arrow{display:inline-block;transition:transform var(--dur-fast) var(--ease-swiss);}.contact__links a:hover .contact__arrow,.contact__links a:focus-visible .contact__arrow{transform:translate(4px,-4px);}.contact__email-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-16);border-bottom:1px solid var(--clr-border);padding-block:0.5rem;transition:border-color var(--dur-fast) var(--ease-swiss);}.contact__email-row:hover,.contact__email-row:focus-within{border-color:var(--clr-accent);}.contact__email-link{font-family:var(--font-display);font-size:var(--text-lg);font-weight:500;color:var(--clr-text);display:flex;align-items:center;gap:var(--space-8);text-decoration:none;transition:color var(--dur-fast) var(--ease-swiss);}.contact__email-link:hover,.contact__email-link:focus-visible{color:var(--clr-accent);}.contact__email-link:focus-visible{outline:2px solid var(--clr-accent-text);outline-offset:4px;}.contact__copy{font-family:var(--font-mono);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:0.1em;color:var(--clr-accent-text);border:1px solid var(--clr-accent);border-radius:999px;padding:0.35rem 0.75rem;display:inline-flex;align-items:center;gap:var(--space-8);background:none;cursor:pointer;white-space:nowrap;transition:background-color var(--dur-fast) var(--ease-swiss),color var(--dur-fast) var(--ease-swiss);}.contact__copy:hover{background:var(--clr-accent);color:var(--clr-on-accent);}.contact__copy:focus-visible{outline:2px solid var(--clr-accent-text);outline-offset:4px;}.contact__copy-status{font-family:var(--font-mono);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:0.1em;color:var(--clr-accent-text);}@media (max-width:768px),(max-width:1024px) and (orientation:portrait){.contact__head,.contact__links{grid-column:span 12;}}@media (max-width:768px){.contact__line{font-size:var(--text-xl);}}@media (max-width:480px){.contact__email-row{flex-wrap:wrap;gap:var(--space-8);}.contact__email-link{font-size:var(--text-base);word-break:break-word;}.contact__copy{min-height:40px;padding:0.4rem 0.85rem;}.contact__links a{font-size:var(--text-base);min-height:44px;padding-block:0.65rem;}}@media (prefers-reduced-motion:reduce){.contact__status-dot{animation:none;}.contact__arrow{transition:none;}}.footer{padding-block:var(--space-lg);border-top:var(--border-width) solid var(--clr-border);background:var(--clr-bg);}.footer .container{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-24);}.footer__left{display:flex;flex-direction:column;gap:var(--space-4);min-width:0;}.footer__note{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--clr-faint);text-transform:uppercase;letter-spacing:0.05em;max-width:100%;overflow-wrap:break-word;}.footer__links{display:flex;align-items:center;gap:var(--space-16);min-width:0;margin-right:calc(48px + var(--space-24) + env(safe-area-inset-right));}.footer__links a{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;color:var(--clr-faint);border:1px solid var(--clr-border);border-radius:50%;text-decoration:none;transition:color var(--dur-fast) var(--ease-swiss),border-color var(--dur-fast) var(--ease-swiss),background-color var(--dur-fast) var(--ease-swiss);}.footer__icon{display:block;}.footer__links a:hover,.footer__links a:focus-visible{color:var(--clr-on-accent);background:var(--clr-accent);border-color:var(--clr-accent);}.footer__links a:focus-visible{outline:2px solid var(--clr-accent-text);outline-offset:4px;}@media (max-width:768px){.footer .container{flex-direction:column;align-items:center;text-align:center;gap:var(--space-16);}.footer__left{align-items:center;}.footer__links{flex-wrap:wrap;justify-content:center;gap:var(--space-16);margin-right:0;}}.to-top{position:fixed;right:calc(var(--space-24) + env(safe-area-inset-right));bottom:calc(var(--space-24) + env(safe-area-inset-bottom));width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-size:var(--text-lg);font-weight:700;color:var(--clr-on-accent);background:var(--clr-accent-text);border:none;border-radius:50%;cursor:pointer;z-index:1050;box-shadow:0 8px 24px -8px var(--nav-shadow);opacity:0;transform:translateY(12px);transition:opacity var(--dur-base) var(--ease-swiss),transform var(--dur-base) var(--ease-swiss),background-color var(--dur-fast) var(--ease-swiss);}.to-top:not([hidden]){opacity:1;transform:translateY(0);}.to-top:hover{background:var(--clr-accent);}.to-top:focus-visible{outline:2px solid var(--clr-accent-text);outline-offset:4px;}@media (max-width:480px){.to-top{right:calc(var(--space-16) + env(safe-area-inset-right));bottom:calc(var(--space-16) + env(safe-area-inset-bottom));width:44px;height:44px;font-size:var(--text-base);}}@media (prefers-reduced-motion:reduce){.to-top{transition:opacity var(--dur-fast) var(--ease-swiss);transform:none;}}@media (min-width:1600px){:root{--space-unit:0.625rem;}}@media (max-width:1024px){:root{--space-lg:var(--space-48);--space-xl:var(--space-64);--space-xxl:var(--space-96);}.container{padding-inline:var(--space-32);}.section__title{font-size:var(--text-xl);}}@media (max-width:768px){:root{--nav-h:64px;--space-lg:var(--space-32);--space-xl:var(--space-48);--space-xxl:var(--space-64);--grid-gutter:var(--space-16);}.container{padding-inline:var(--space-16);}.hero__inner,.about__grid,.skills__grid,.edu__meta,.contact__inner{grid-template-columns:1fr;}.section{padding-block:var(--space-lg);}.section__title{font-size:var(--text-lg);}}@media (max-width:768px),(max-width:1024px) and (orientation:portrait){.nav__links{position:fixed;top:0;right:0;width:100%;height:100vh;height:100dvh;background:color-mix(in srgb,var(--clr-bg) 96%,transparent);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);flex-direction:column;justify-content:safe center;align-items:center;gap:var(--space-12);padding-top:calc(var(--nav-h) + env(safe-area-inset-top) + var(--space-16));padding-bottom:calc(env(safe-area-inset-bottom) + var(--space-24));padding-inline:calc(var(--space-24) + env(safe-area-inset-left)) calc(var(--space-24) + env(safe-area-inset-right));overflow-y:auto;-webkit-overflow-scrolling:touch;transform:translateX(100%);visibility:hidden;pointer-events:none;transition:transform var(--dur-base) var(--ease-swiss),visibility var(--dur-base) var(--ease-swiss);z-index:999;counter-reset:nav-counter;}.nav__links.open{transform:translateX(0);visibility:visible;pointer-events:auto;}.nav__links a{width:100%;max-width:320px;min-height:48px;display:flex;align-items:center;justify-content:flex-start;font-size:var(--text-base);font-weight:700;letter-spacing:0.05em;padding:var(--space-12) var(--space-16);border-bottom:1px solid var(--clr-border-dim);transition:background-color var(--dur-fast) var(--ease-swiss),color var(--dur-fast) var(--ease-swiss),padding-left var(--dur-fast) var(--ease-swiss);}.nav__links a::before{counter-increment:nav-counter;content:"0" counter(nav-counter) " /";font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;color:var(--clr-accent-text);margin-right:var(--space-12);}.nav__links a:hover,.nav__links a.active{background-color:var(--clr-surface);color:var(--clr-accent-text);padding-left:var(--space-24);}.nav__links a:last-child{border-bottom:none;}}@media (max-width:480px){.hero__links{flex-direction:column;width:100%;gap:var(--space-12);}.hero__links .btn{width:100%;min-height:48px;}}@media (max-width:360px){.container{padding-inline:var(--space-12);}}@media (max-height:500px) and (orientation:landscape){.hero{min-height:auto;}}@media (max-width:768px) and (max-height:500px) and (orientation:landscape){.nav__links{flex-direction:row;flex-wrap:wrap;align-content:center;gap:var(--space-16);padding-block:calc(var(--nav-h) + env(safe-area-inset-top)) var(--space-16);}.nav__links a{font-size:var(--text-md);}}@media (orientation:portrait){.hero{min-height:auto;align-items:flex-start;padding-top:calc(var(--nav-h) + var(--space-32) + env(safe-area-inset-top));padding-bottom:var(--space-48);}}