@font-face{font-family:RobotoMono;font-style:normal;font-weight:100;src:url(/static/media/RobotoMono-Thin.b54395e68207fbc88b36.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:italic;font-weight:100;src:url(/static/media/RobotoMono-ThinItalic.909e042f2bebd7d009e9.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:normal;font-weight:200;src:url(/static/media/RobotoMono-ExtraLight.4620604e700a4d69b5af.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:italic;font-weight:200;src:url(/static/media/RobotoMono-ExtraLightItalic.b39873212192ff37b920.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:normal;font-weight:300;src:url(/static/media/RobotoMono-Light.234f40fa88a810bad5e4.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:italic;font-weight:300;src:url(/static/media/RobotoMono-LightItalic.967bee7c12d18800b9b3.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:normal;font-weight:400;src:url(/static/media/RobotoMono-Regular.94ffabb10cbc81ee42ba.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:italic;font-weight:400;src:url(/static/media/RobotoMono-Italic.3cf8ca3e53a0ed6c6917.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:normal;font-weight:500;src:url(/static/media/RobotoMono-Medium.275e41b58d96111c1152.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:italic;font-weight:500;src:url(/static/media/RobotoMono-MediumItalic.cdbe51a19ce2897078b0.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:normal;font-weight:600;src:url(/static/media/RobotoMono-SemiBold.caa2274ab099019bc599.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:italic;font-weight:600;src:url(/static/media/RobotoMono-SemiBoldItalic.37663932da268e6b006c.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:normal;font-weight:700;src:url(/static/media/RobotoMono-Bold.7211ab61a8b83177865a.ttf) format("truetype")}@font-face{font-family:RobotoMono;font-style:italic;font-weight:700;src:url(/static/media/RobotoMono-BoldItalic.93aa05f8e36217573b30.ttf) format("truetype")}@font-face{font-display:swap;font-family:"Source Serif 4";font-style:normal;font-weight:200 900;src:url(/static/media/SourceSerif4.3eb5632774d7c60a54d9.ttf) format("truetype")}@font-face{font-display:swap;font-family:"Source Serif 4";font-style:italic;font-weight:200 900;src:url(/static/media/SourceSerif4-Italic.76b2abdf56b4a7ffc633.ttf) format("truetype")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:400;src:url(/static/media/Inter-Regular.9ca9ba81e9dcaa12b3a1.ttf) format("truetype")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:500;src:url(/static/media/Inter-Medium.3f7acfe50aad7ad68548.ttf) format("truetype")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:600;src:url(/static/media/Inter-SemiBold.6058d3da655fb35169c2.ttf) format("truetype")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:700;src:url(/static/media/Inter-Bold.0eaf807b1cf0eceabe0f.ttf) format("truetype")}@font-face{font-display:swap;font-family:General Sans;font-style:normal;font-weight:200 700;src:url(/static/media/GeneralSans-Variable.65a7e76e15a342e2ed8f.woff2) format("woff2")}@font-face{font-display:swap;font-family:General Sans;font-style:italic;font-weight:200 700;src:url(/static/media/GeneralSans-VariableItalic.fae5b46e32e628ff5f9b.woff2) format("woff2")}@font-face{font-display:swap;font-family:Jeju Myeongjo;font-style:normal;font-weight:400;src:url(/static/media/JejuMyeongjo-Regular-latinext.342a3e1368abd60a47e7.woff2) format("woff2")}@font-face{font-display:swap;font-family:Geist Mono;font-style:normal;font-weight:100 900;src:url(/static/media/GeistMono-Variable.4dde9a7f8edce1232f87.woff2) format("woff2-variations")}@font-face{font-display:swap;font-family:Geist;font-style:normal;font-weight:100 900;src:url(/static/media/Geist-Variable.6dcbe209be934f5801e7.woff2) format("woff2-variations")}@font-face{font-display:swap;font-family:Geist Pixel;font-style:normal;font-weight:400;src:url(/static/media/GeistPixel-Square.53ec6e1138f2d01c6acb.woff2) format("woff2")}:root{--font-geist:"Geist",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-serif:"Jeju Myeongjo",Georgia,Cambria,"Times New Roman",serif;--font-serif-reading:"Source Serif 4",Georgia,Cambria,"Times New Roman",serif;--font-mono:"Geist Mono","RobotoMono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--font-pixel:"Geist Pixel","Geist Mono",ui-monospace,monospace;--font-sans:"General Sans",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-body:var(--font-sans);--font-display:var(--font-serif)}html[data-type=geist]{--font-sans:var(--font-geist);--font-display:var(--font-geist)}:root{--accent:#3f5ba0;--accent-strong:#243f7c;--accent-text:#8aa5d8;--accent-text-soft:#5c7bc0;--accent-heading:#c3d2ea;--accent-soft:color-mix(in srgb,var(--accent) 10%,#0000);--accent-ring:color-mix(in srgb,var(--accent) 30%,#0000)}body,html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:General Sans,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-family:var(--font-body);margin:0;overflow-x:hidden;padding:0}html{background-color:#141416}html[data-theme],html[data-theme] body *,html[data-theme] body :after,html[data-theme] body :before{transition:background-color .28s ease,border-color .28s ease,color .22s ease,box-shadow .28s ease}@media (prefers-reduced-motion:reduce){html[data-theme] body *,html[data-theme] body :after,html[data-theme] body :before{transition:none}}:root[data-theme=light]{--page-bg:#fff;--surface:#f6f6f6;--surface-sunken:#eef0f2;--text:#0e1320;--text-strong:#0a1530;--text-muted:#3e4b66;--text-faint:#5f6e8b;--border:#e6e9ec;--border-strong:color-mix(in srgb,color-mix(in srgb,#182e5f 12%,#d8d8d8) 70%,#0000);--accent:#182e5f;--accent-strong:#0f1f44;--accent-text:#182e5f;--accent-text-soft:#3f5ba0;--accent-heading:#0f1f44;--accent-soft:#eaf0f8;--accent-ring:#c3d2ea;--status-good:#1f8f4e;--status-good-surface:#eef6f0;--status-warn:#c47d1a;--status-bad:#c0392b;--claude:#d97757;--shadow-card:0 1px 2px #0e13200d,0 8px 24px #0e13200d;--shadow-accent:0 1px 2px #0e13201a;--container-px:64px}@media (max-width:768px){:root[data-theme=light]{--container-px:24px}}:root[data-canvas=paper][data-theme=light]{--page-bg:#f3eee4;--surface:#faf7f0;--surface-sunken:#ebe4d6;--text:#1d1a13;--text-strong:#12100a;--text-muted:#1d1a13ad;--text-faint:#1d1a139e;--border:#1d1a131c;--border-strong:#1d1a132e;--shadow-card:0 1px 2px #1d1a130d,0 10px 30px #1d1a1312}:root[data-theme=light]{background-color:var(--page-bg)}code{font-family:Geist Mono,RobotoMono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-family:var(--font-mono)}:focus-visible{outline:2px solid #3f5ba0;outline:2px solid var(--accent);outline-offset:2px}.skip-link{background:#3f5ba0;background:var(--accent);border-radius:8px;color:#fff;font-weight:600;left:12px;padding:10px 16px;position:absolute;text-decoration:none;top:-48px;transition:top .2s ease;z-index:2000}.skip-link:focus{top:12px}#about,#home,#projects,#resume{scroll-margin-top:100px}:root{--text-display:clamp(2.5rem,5.5vw,4rem);--text-h1:clamp(2rem,4vw,3rem);--text-h2:clamp(1.5rem,2.6vw,2rem);--text-h3:clamp(1.25rem,1.8vw,1.5rem);--text-h4:1.125rem;--text-h5:1rem;--text-h6:0.875rem;--text-lead:clamp(1.1875rem,1.7vw,1.375rem);--text-body:1.0625rem;--text-small:0.9375rem;--text-caption:0.75rem;--text-label:0.75rem;--leading-display:1.05;--leading-heading:1.15;--leading-tight:1.3;--leading-body:1.6;--tracking-display:-0.02em;--tracking-heading:-0.01em;--tracking-body:0;--tracking-label:0.08em;--weight-display:400;--weight-heading:400;--weight-body:400;--weight-medium:500;--weight-label:500}html[data-type=geist]{--weight-display:600;--weight-heading:600}body{font-size:1.0625rem;font-size:var(--text-body);letter-spacing:0;letter-spacing:var(--tracking-body);line-height:1.6;line-height:var(--leading-body)}h1{font-size:clamp(2rem,4vw,3rem);font-size:var(--text-h1)}h2{font-size:clamp(1.5rem,2.6vw,2rem);font-size:var(--text-h2)}h3{font-size:clamp(1.25rem,1.8vw,1.5rem);font-size:var(--text-h3)}h4{font-size:1.125rem;font-size:var(--text-h4)}h5{font-size:1rem;font-size:var(--text-h5)}h6{font-size:.875rem;font-size:var(--text-h6)}h1,h2,h3,h4,h5,h6{font-weight:400;font-weight:var(--weight-heading);letter-spacing:-.01em;letter-spacing:var(--tracking-heading);line-height:1.15;line-height:var(--leading-heading)}.t-display{font-size:clamp(2.5rem,5.5vw,4rem);font-size:var(--text-display);font-weight:400;font-weight:var(--weight-display);letter-spacing:-.02em;letter-spacing:var(--tracking-display);line-height:1.05;line-height:var(--leading-display)}.t-h1{font-size:clamp(2rem,4vw,3rem);font-size:var(--text-h1)}.t-h1,.t-h2{font-weight:400;font-weight:var(--weight-heading);letter-spacing:-.01em;letter-spacing:var(--tracking-heading);line-height:1.15;line-height:var(--leading-heading)}.t-h2{font-size:clamp(1.5rem,2.6vw,2rem);font-size:var(--text-h2)}.t-h3{font-size:clamp(1.25rem,1.8vw,1.5rem);font-size:var(--text-h3);line-height:1.15;line-height:var(--leading-heading)}.t-h3,.t-h4{font-weight:400;font-weight:var(--weight-heading);letter-spacing:-.01em;letter-spacing:var(--tracking-heading)}.t-h4{font-size:1.125rem;font-size:var(--text-h4);line-height:1.3;line-height:var(--leading-tight)}.t-h5{font-size:1rem;font-size:var(--text-h5)}.t-h5,.t-h6{font-weight:500;font-weight:var(--weight-medium);line-height:1.3;line-height:var(--leading-tight)}.t-h6{font-size:.875rem;font-size:var(--text-h6)}.t-lead{font-size:clamp(1.1875rem,1.7vw,1.375rem);font-size:var(--text-lead);line-height:1.3;line-height:var(--leading-tight)}.t-body,.t-lead{font-weight:400;font-weight:var(--weight-body)}.t-body{font-size:1.0625rem;font-size:var(--text-body);line-height:1.6;line-height:var(--leading-body)}.t-small{font-size:.9375rem;font-size:var(--text-small)}.t-caption,.t-small{line-height:1.3;line-height:var(--leading-tight)}.t-caption{color:inherit;color:var(--text-muted,inherit);font-size:.75rem;font-size:var(--text-caption)}.t-label{font-size:.75rem;font-size:var(--text-label);font-weight:500;font-weight:var(--weight-label);letter-spacing:.08em;letter-spacing:var(--tracking-label);text-transform:uppercase}.t-label,.t-mono{font-family:var(--font-mono)}.t-mono{font-size:.9375rem;font-size:var(--text-small)}.about-highlight__title,.about-title,.blog-feature__title,.blog-listing__title,.blog-post__title,.blog-row__title,.contact__title,.job-title,.now-hero__title,.now-media__title,.pcard__title,.resume-title,.section-title,.things-card__name,.things-hero__title,h1,h2,h3{font-family:var(--font-display)!important;font-weight:var(--weight-heading);letter-spacing:var(--tracking-heading)}.serif-accent{color:inherit;color:var(--accent-text,inherit);font-family:var(--font-serif)!important;font-style:italic;font-weight:400}.pixel-accent{font-family:var(--font-pixel)!important;font-weight:400;letter-spacing:0}.about-highlight__eyebrow,.blog-chip,.blog-listing__eyebrow,.blog-post__category,.contact__eyebrow,.logo,.now-hero__kicker,.pcard__subtitle,.pcard__tag,.things-hero__kicker{font-family:var(--font-mono)!important}:root[data-theme=light] .about-container:after,:root[data-theme=light] .projects-container:after,:root[data-theme=light] .projects-container:before,:root[data-theme=light] .resume-container:after{background-image:radial-gradient(circle,#182e5f61 1.05px,#0000 1.35px);background-size:7px 7px;content:"";height:190px;-webkit-mask-image:radial-gradient(ellipse 60% 55% at 42% 48%,#000 0,#0000008c 45%,#0000 72%);mask-image:radial-gradient(ellipse 60% 55% at 42% 48%,#000 0,#0000008c 45%,#0000 72%);pointer-events:none;position:absolute;width:240px;z-index:0}@media(max-width:900px){:root[data-theme=light] .about-container:after,:root[data-theme=light] .projects-container:after,:root[data-theme=light] .projects-container:before,:root[data-theme=light] .resume-container:after{display:none}}:root[data-theme=light] .about-container{position:relative}:root[data-theme=light] .about-container:after{right:-40px;top:8%}:root[data-theme=light] .projects-container{position:relative}:root[data-theme=light] .projects-container:before{left:-60px;top:20%}:root[data-theme=light] .projects-container:after{right:-50px;top:62%}:root[data-theme=light] .resume-container{position:relative}:root[data-theme=light] .resume-container:after{bottom:4%;left:-70px}:root[data-theme=light] .header-container{background:#fff;border:none;border-bottom:1px solid var(--border);border-radius:0;box-shadow:none;color:var(--text);left:0;max-width:100%;padding:14px 64px;padding:14px var(--container-px,64px);right:0;top:0}:root[data-theme=light] .header-container:before{backdrop-filter:none;-webkit-backdrop-filter:none}@media(max-width:768px){:root[data-theme=light] .header-container{border-radius:0;left:0;max-width:100%;padding:12px 24px;padding:12px var(--container-px,24px);right:0;top:0}}:root[data-theme=light] .logo{color:var(--text-strong)}:root[data-theme=light] .logo:hover{color:var(--accent)}:root[data-theme=light] .nav-link{color:var(--text-muted)}:root[data-theme=light] .nav-link:hover{color:var(--text-strong)}:root[data-theme=light] .nav-link--active{color:var(--accent)!important}@media(max-width:768px){:root[data-theme=light] .nav-link{color:var(--text-muted)}}:root[data-theme=light] .button{background:var(--accent);border-color:var(--accent);border-radius:999px;color:#fff}:root[data-theme=light] .button:hover{background:var(--accent-strong);border-color:var(--accent-strong);box-shadow:none;color:#fff}:root[data-theme=light] .hamburger{color:var(--text-strong)}@media(max-width:768px){:root[data-theme=light] .nav{background:#fffffffa}}:root[data-theme=light] .site-theme-toggle{display:none}:root[data-theme=light] .lang-switcher{background:#0000;border-color:var(--border)}:root[data-theme=light] .lang-switcher__option{color:var(--text-muted)}:root[data-theme=light] .lang-switcher__option:hover{color:var(--text-strong)}:root[data-theme=light] .lang-switcher__option--active{background:var(--accent);color:#fff}:root[data-theme=light] .about-container{color:var(--text)}:root[data-theme=light] .about-container .about-title,:root[data-theme=light] .about-container h2{color:var(--accent)}:root[data-theme=light] .about-container .about-intro .about-text p{color:var(--text-muted)}:root[data-theme=light] .about-container .about-intro .about-text .purple-text,:root[data-theme=light] .about-container .about-intro .about-text .purple-text a{color:var(--accent-strong)}:root[data-theme=light] .about-container .about-intro .about-text .purple-text a:hover{color:var(--accent)}:root[data-theme=light] .about-container .about-intro .about-text a{color:var(--accent-strong);-webkit-text-decoration-color:var(--accent-ring);text-decoration-color:var(--accent-ring)}:root[data-theme=light] .about-container .about-intro .about-text a:visited{color:var(--accent-strong)}:root[data-theme=light] .about-container .about-intro .about-text a:hover{color:var(--accent);-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}:root[data-theme=light] .about-container .about-intro .about-text .specializations{border-bottom-color:var(--border);border-top-color:var(--border)}:root[data-theme=light] .about-container .about-intro .about-text .specializations .spec-title{color:var(--text-strong)}:root[data-theme=light] .about-container .about-intro .about-text .specializations .spec-item{color:var(--text-muted)}:root[data-theme=light] .about-container .about-intro .about-text .specializations .spec-item .spec-arrow{color:var(--accent)}:root[data-theme=light] .about-container .about-photo .profile-photo{border:1px solid var(--border);box-shadow:var(--shadow-card)}:root[data-theme=light] .about-container .about-photo .profile-photo:hover{border-color:var(--accent-ring);box-shadow:var(--shadow-card)}:root[data-theme=light] .about-highlight{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card)}:root[data-theme=light] .about-highlight:hover{background:var(--surface);border-color:var(--accent-ring);box-shadow:0 14px 40px #16161a1a}:root[data-theme=light] .about-highlight:hover .about-highlight__cta{background:var(--accent-strong)}:root[data-theme=light] .about-highlight__media{background:var(--surface-sunken)}:root[data-theme=light] .about-highlight__text p{color:var(--text-muted)}:root[data-theme=light] .about-highlight__eyebrow{color:var(--accent-strong)}:root[data-theme=light] .about-highlight__title{color:var(--text-strong)!important}:root[data-theme=light] .about-highlight__cta{background:var(--accent);border-radius:999px;box-shadow:var(--shadow-accent);color:#fff}:root[data-theme=light] .about-container .about-contact form input,:root[data-theme=light] .about-container .about-contact form textarea{background:var(--surface);border:1px solid var(--border);color:var(--text)}:root[data-theme=light] .about-container .about-contact form input:focus,:root[data-theme=light] .about-container .about-contact form textarea:focus{border-color:var(--accent)}:root[data-theme=light] .about-container .about-contact form button{background:var(--accent);color:#fff}:root[data-theme=light] .about-container .about-contact form button:hover{background:var(--accent-strong)}:root[data-theme=light] .resume-container{color:var(--text)}:root[data-theme=light] .resume-title,:root[data-theme=light] .section-title{color:var(--accent)}:root[data-theme=light] .job-title{color:var(--text-strong)}:root[data-theme=light] .company{color:#3f5ba0;font-weight:700}:root[data-theme=light] .company__sub{color:var(--text-faint)}:root[data-theme=light] a.company--link:focus-visible,:root[data-theme=light] a.company--link:hover{color:var(--accent)}:root[data-theme=light] a.company--link:focus-visible .company__sub,:root[data-theme=light] a.company--link:hover .company__sub{color:var(--text-muted)}:root[data-theme=light] .job-dates{color:var(--text-faint)}:root[data-theme=light] .bullet-point{color:color-mix(in srgb,var(--text-muted) 55%,var(--text))}:root[data-theme=light] .bullet-point:before{color:var(--accent)}:root[data-theme=light] .bullet-point .kw{color:var(--accent-text);font-weight:600}:root[data-theme=light] .line-container:before{background:var(--border-strong)}:root[data-theme=light] .job-container:before{background:var(--accent)}:root[data-theme=light] .right-column iframe{border:1px solid var(--border);box-shadow:var(--shadow-card)}:root[data-theme=light] .cv-actions__btn--primary{background:var(--accent);border-radius:999px;box-shadow:var(--shadow-accent);color:#fff}:root[data-theme=light] .cv-actions__btn--primary:hover{background:var(--accent-strong)}:root[data-theme=light] .cv-actions__btn--ghost{background:#fff;border:1px solid var(--accent-ring);border-radius:999px;color:var(--accent-strong)}:root[data-theme=light] .cv-actions__btn--ghost:hover{background:var(--accent-soft);border-color:var(--accent)}:root[data-theme=light] .projects-container{color:var(--text)}:root[data-theme=light] .projects-container .section-title{color:var(--accent)}:root[data-theme=light] .projects-intro{color:var(--text-muted)}:root[data-theme=light] .pcard__title{color:var(--text-strong)}:root[data-theme=light] .pcard__subtitle{color:var(--text-faint)}:root[data-theme=light] .pcard__description{color:var(--text-muted)}:root[data-theme=light] .pcard__tag{background:var(--surface-sunken);border:1px solid var(--border);color:var(--text-muted)}:root[data-theme=light] .pcard__media{border:2px solid color-mix(in srgb,var(--accent) 22%,var(--border-strong));box-shadow:0 1px 0 #16161a0d,0 16px 40px #16161a24}:root[data-theme=light] .pcard__media:hover{border-color:var(--accent);box-shadow:0 1px 0 #16161a0f,0 24px 56px #16161a2e}:root[data-theme=light] .pcard__link--github{background:var(--surface);border:1px solid var(--border-strong);color:var(--text-muted)}:root[data-theme=light] .pcard__link--github:hover{background:var(--surface-sunken);border-color:var(--accent-ring);color:var(--text-strong)}:root[data-theme=light] .case-modal__backdrop{background:#16161a61}:root[data-theme=light] .case-modal__panel{background:var(--surface);border:1px solid var(--border);box-shadow:0 30px 90px #16161a38}:root[data-theme=light] .case-modal__close{background:var(--surface-sunken);border:1px solid var(--border-strong);color:var(--text-muted)}:root[data-theme=light] .case-modal__close:hover{background:var(--accent-soft);color:var(--accent-strong)}:root[data-theme=light] .case-modal__title{color:var(--text-strong)}:root[data-theme=light] .case-modal__subtitle{color:var(--text-faint)}:root[data-theme=light] .case-modal__eyebrow,:root[data-theme=light] .case-modal__h{color:var(--accent-strong)}:root[data-theme=light] .case-modal__media{border:1px solid var(--border);box-shadow:var(--shadow-card)}:root[data-theme=light] .case-modal__p{color:var(--text-muted)}:root[data-theme=light] .case-modal__p strong{color:var(--text-strong)}:root[data-theme=light] .case-modal__p a{color:var(--accent-strong);-webkit-text-decoration-color:var(--accent-ring);text-decoration-color:var(--accent-ring)}:root[data-theme=light] .case-modal__p a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}:root[data-theme=light] .contact{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card)}:root[data-theme=light] .contact__eyebrow{color:var(--accent-strong)}:root[data-theme=light] .contact__title{color:var(--accent)}:root[data-theme=light] .contact__direct,:root[data-theme=light] .contact__lead{color:var(--text-muted)}:root[data-theme=light] .contact__direct a{border-bottom-color:var(--accent-ring);color:var(--accent-strong)}:root[data-theme=light] .contact__direct a:hover{border-bottom-color:var(--accent);color:var(--accent)}:root[data-theme=light] .contact__btn--primary{background:var(--accent);border-radius:999px;box-shadow:var(--shadow-accent);color:#fff}:root[data-theme=light] .contact__btn--primary:hover{background:var(--accent-strong)}:root[data-theme=light] .contact__btn--ghost{background:#fff;border:1px solid var(--accent-ring);border-radius:999px;color:var(--accent-text)}:root[data-theme=light] .contact__btn--ghost:hover{background:var(--accent-soft);border-color:var(--accent)}:root[data-theme=light] .contact__socials a{color:var(--text-faint)}:root[data-theme=light] .contact__socials a:hover{color:var(--accent)}:root[data-theme=light] .footer-container{background-color:var(--surface);border-top:1px solid var(--border);color:var(--text-muted)}:root[data-theme=light] .footer-container .purple-heart{color:var(--accent)}:root[data-theme=light] .footer-container .footer-link{color:var(--accent-strong);-webkit-text-decoration-color:var(--accent-ring);text-decoration-color:var(--accent-ring)}:root[data-theme=light] .footer-container .footer-link:hover{color:var(--accent);-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}:root[data-theme=light] .footer-container .footer-email,:root[data-theme=light] .footer-container .footer-phone{border-bottom-color:var(--border-strong);color:var(--text-muted)}:root[data-theme=light] .footer-container .footer-email:hover,:root[data-theme=light] .footer-container .footer-phone:hover{border-bottom-color:var(--accent);color:var(--accent)}:root[data-theme=light] .footer-container .social-icons a{color:var(--text-faint)}:root[data-theme=light] .footer-container .social-icons a:hover{color:var(--accent)}:root[data-theme=light] .footer-container p{color:var(--text-faint)}.header-container{align-items:center;background:#09090bd9;border:1px solid #ffffff14;border-radius:14px;box-shadow:0 4px 24px #0009;color:#fff;display:flex;font-family:var(--font-body);justify-content:space-between;left:18px;margin:0 auto;max-width:calc(100% - 36px);padding:16px 36px;position:fixed;right:18px;top:18px;z-index:1000}.header-container:before{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:inherit;content:"";inset:0;position:absolute;z-index:-1}@media(max-width:768px){.header-container{border-radius:12px;left:10px;max-width:calc(100% - 20px);padding:14px 20px;right:10px;top:10px}}.logo{color:#f8fafc;font-size:var(--text-h4);font-weight:var(--weight-heading);letter-spacing:1.5px;position:relative;text-decoration:none;transition:color .2s ease;z-index:1}.logo:hover{color:var(--accent-text-soft)}.nav{align-items:center;display:flex}@media(max-width:768px){.nav{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:#09090bfa;flex-direction:column;height:100vh;height:100dvh;justify-content:center;overflow-y:auto;position:fixed;right:-100%;top:0;transition:right .3s ease-in-out,visibility 0s linear .3s;visibility:hidden;width:100vw;z-index:999}.nav.open{transition:right .3s ease-in-out,visibility 0s;visibility:visible}}.nav.open{right:0}.nav-link{align-items:center;color:#f8fafc8c;display:flex;font-family:var(--font-body);font-size:var(--text-small);font-weight:var(--weight-medium);letter-spacing:.04em;margin-left:32px;position:relative;text-decoration:none;transition:color .2s ease;z-index:1}.nav-link:hover{color:#f8fafc}.nav-link--active{color:var(--accent-text-soft)!important}.nav-link--active svg{opacity:1!important}.nav-link svg{margin-right:7px;opacity:.6;transition:opacity .2s ease}.nav-link:hover svg{opacity:1}@media(max-width:768px){.nav-link{color:#f8fafcb3;font-size:clamp(1.2em,4vw,1.5em);margin-bottom:28px;margin-left:0}}.hamburger{-webkit-appearance:none;appearance:none;background:none;border:0;cursor:pointer;display:none;padding:0}@media(max-width:768px){.hamburger{color:#f8fafcb3;display:block;position:absolute;right:20px;top:12px;z-index:1001}}.button{align-items:center;background:color-mix(in srgb,var(--accent) 8%,#0000);border:1px solid color-mix(in srgb,var(--accent-text-soft) 35%,#0000);border-radius:8px;color:var(--accent-text-soft);display:flex;font-family:var(--font-body);font-size:var(--text-small);font-weight:var(--weight-medium);letter-spacing:.04em;margin-left:32px;padding:8px 16px;position:relative;text-decoration:none;transition:color .2s ease,background .2s ease,border-color .2s ease;z-index:1}.button:hover{background:color-mix(in srgb,var(--accent) 18%,#0000);border-color:color-mix(in srgb,var(--accent-text-soft) 60%,#0000);box-shadow:0 2px 12px color-mix(in srgb,var(--accent) 20%,#0000);color:var(--accent-heading)}.button svg{margin-right:7px;transition:transform .2s ease}.button:hover svg{transform:scale(1.1) rotate(5deg)}@media(max-width:768px){.button{font-size:clamp(1.2em,4vw,1.5em);margin-bottom:24px;margin-left:0;padding:12px 24px}}.close-icon{display:block;z-index:1002}.lang-switcher{align-items:center;background:#ffffff0a;border:1px solid #ffffff24;border-radius:9px;display:inline-flex;gap:2px;margin-left:24px;padding:3px;position:relative;z-index:1}.lang-switcher__option{-webkit-appearance:none;appearance:none;background:#0000;border:none;border-radius:6px;color:#f8fafc99;cursor:pointer;font-family:var(--font-mono);font-size:.72rem;font-weight:var(--weight-medium);letter-spacing:.06em;padding:5px 9px;transition:color .2s ease,background .2s ease}.lang-switcher__option:hover{color:#f8fafc}.lang-switcher__option--active{background:var(--accent);color:#fff;color:var(--accent-text,#fff)}@media(max-width:768px){.lang-switcher{margin-left:0;margin-top:8px}.lang-switcher__option{font-size:.9rem;padding:9px 14px}}.site-theme-toggle{align-items:center;background:#ffffff0a;border:1px solid #ffffff24;border-radius:9px;color:#f8fafcbf;cursor:pointer;display:inline-flex;height:38px;justify-content:center;margin-left:24px;position:relative;transition:color .2s ease,background .2s ease,border-color .2s ease;width:38px;z-index:1}.site-theme-toggle svg{height:1.05em;width:1.05em}.site-theme-toggle:hover{background:#ffffff17;border-color:#ffffff47;color:#fff}@media(max-width:768px){.site-theme-toggle{height:46px;margin-left:0;margin-top:8px;width:46px}}.footer-container{align-items:center;background-color:#09090b;border-top:1px solid #ffffff12;color:#fff;display:grid;font-family:var(--font-body);grid-template-columns:repeat(3,1fr);padding:24px 40px;text-align:center}@media(max-width:768px){.footer-container{display:flex;flex-direction:column;gap:10px;text-align:center}}.footer-container .footer-content{align-items:center;display:flex;flex-direction:column}@media(max-width:768px){.footer-container .footer-content{align-items:center;text-align:center}}.footer-container .purple-heart{animation:pulse 2s ease-in-out infinite;color:var(--accent-text-soft)}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.footer-container .footer-link{color:var(--accent-text-soft);font-weight:var(--weight-medium);margin-left:5px;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--accent-text-soft) 30%,#0000);text-decoration-color:color-mix(in srgb,var(--accent-text-soft) 30%,#0000);transition:color .2s ease}.footer-container .footer-link:hover{color:var(--accent-heading);-webkit-text-decoration-color:color-mix(in srgb,var(--accent-heading) 50%,#0000);text-decoration-color:color-mix(in srgb,var(--accent-heading) 50%,#0000)}.footer-container .footer-email,.footer-container .footer-phone{border-bottom:1px solid #ffffff24;color:#f8fafc80;display:inline-block;font-size:var(--text-small);margin-top:4px;text-decoration:none;transition:color .2s ease,border-color .2s ease}.footer-container .footer-email:hover,.footer-container .footer-phone:hover{border-color:color-mix(in srgb,var(--accent-heading) 50%,#0000);color:var(--accent-heading)}.footer-container .social-icons{display:flex;gap:20px;justify-content:flex-end}@media(max-width:768px){.footer-container .social-icons{justify-content:center}}.footer-container .social-icons a{color:#f8fafc66;font-size:clamp(1.3em,2vw,1.6em);position:relative;transition:color .2s ease,transform .2s ease;z-index:1}.footer-container .social-icons a:hover{color:var(--accent-text-soft);transform:translateY(-2px)}.footer-container p{color:#f8fafc66;font-size:var(--text-small);margin:0;position:relative;z-index:1}.footer-container .left-align{text-align:left}@media(max-width:768px){.footer-container .left-align{padding-bottom:5px;text-align:center}}.footer-container .center-align{text-align:center}.footer-container .right-align{text-align:right}@media(max-width:768px){.footer-container .right-align{padding-top:5px;text-align:center}}.about-container{color:#fff;font-family:var(--font-body);margin:0 auto;padding:40px 0;width:80%}.about-container h2{color:var(--accent-heading);font-family:var(--font-body);font-size:var(--text-h1);font-weight:var(--weight-heading);letter-spacing:var(--tracking-heading);line-height:var(--leading-heading);margin:0 0 30px;padding-top:10px;text-align:left}.about-container .about-intro{align-items:flex-start;display:flex;flex-direction:row;margin-bottom:40px}@media(min-width:769px){.about-container .about-intro{align-items:center}}@media(max-width:768px){.about-container .about-intro{flex-direction:column;text-align:center}}.about-container .about-intro .about-text{flex:1 1;padding-right:0;text-align:left}@media(max-width:768px){.about-container .about-intro .about-text{padding-right:0;text-align:center}}.about-container .about-intro .about-text p{color:#f8fafca6;font-size:var(--text-body);line-height:1.8;margin-bottom:20px}.about-container .about-intro .about-text .purple-text{color:var(--accent-text-soft);font-weight:600}.about-container .about-intro .about-text .purple-text a{color:var(--accent-text-soft);text-decoration:none}.about-container .about-intro .about-text .purple-text a:hover{color:var(--accent-heading)}.about-container .about-intro .about-text a{color:var(--accent-text-soft);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--accent-text-soft) 35%,#0000);text-decoration-color:color-mix(in srgb,var(--accent-text-soft) 35%,#0000);transition:color .2s ease,-webkit-text-decoration-color .2s ease;transition:color .2s ease,text-decoration-color .2s ease;transition:color .2s ease,text-decoration-color .2s ease,-webkit-text-decoration-color .2s ease}.about-container .about-intro .about-text a:visited{color:var(--accent-text-soft)}.about-container .about-intro .about-text a:hover{color:var(--accent-heading);-webkit-text-decoration-color:color-mix(in srgb,var(--accent-heading) 60%,#0000);text-decoration-color:color-mix(in srgb,var(--accent-heading) 60%,#0000)}.about-container .about-intro .about-text .specializations{border-bottom:1px solid color-mix(in srgb,var(--accent-text-soft) 15%,#0000);border-top:1px solid color-mix(in srgb,var(--accent-text-soft) 15%,#0000);margin:28px 0;padding:20px 0}.about-container .about-intro .about-text .specializations .spec-title{color:var(--accent-heading);font-size:var(--text-body);font-weight:var(--weight-medium);letter-spacing:.05em;margin:0 0 14px}.about-container .about-intro .about-text .specializations .spec-item{color:#f8fafcbf;font-size:var(--text-body);letter-spacing:.02em;line-height:var(--leading-body);padding:5px 0}.about-container .about-intro .about-text .specializations .spec-item .spec-arrow{color:var(--accent-text-soft);font-weight:600;margin-right:6px}@media(max-width:768px){.about-container .about-intro .about-text .specializations{padding-left:20px;text-align:left}}.about-container .about-intro .about-photo{align-items:center;display:flex;flex:0 0 40%;justify-content:flex-end;padding-left:5%}.about-container .about-intro .about-photo .profile-photo{aspect-ratio:3/4;border:1px solid #ffffff1a;border-radius:12px;box-shadow:0 4px 20px #00000080;height:auto;max-width:500px;object-fit:cover;transition:transform .3s ease,box-shadow .3s ease;width:100%}.about-container .about-intro .about-photo .profile-photo:hover{border-color:color-mix(in srgb,var(--accent-text-soft) 30%,#0000);box-shadow:0 8px 32px #0006;transform:translateY(-5px)}@media(max-width:768px){.about-container .about-intro .about-photo{align-items:center;justify-content:center;margin-left:auto;margin-right:auto;margin-top:20px;padding-left:0;width:70%}}.about-container .about-highlight{align-items:center;background:#ffffff08;border:1px solid color-mix(in srgb,var(--accent-text-soft) 15%,#0000);border-radius:14px;color:inherit;display:flex;flex-direction:row;gap:0;margin:0 auto 40px;max-width:840px;overflow:hidden;text-decoration:none;transition:border-color .25s ease,background .25s ease,transform .2s ease;width:100%}.about-container .about-highlight:hover{background:color-mix(in srgb,var(--accent-text-soft) 6%,#0000);border-color:color-mix(in srgb,var(--accent-text-soft) 45%,#0000);transform:translateY(-2px)}.about-container .about-highlight:hover .about-highlight__cta{background:var(--accent-text);transform:translateY(-1px)}.about-container .about-highlight:hover .about-highlight__cta-icon{transform:translateX(4px)}.about-container .about-highlight__media{align-items:center;align-self:stretch;background:#0b0b14;display:flex;flex:0 0 auto;justify-content:center;overflow:hidden;width:clamp(300px,46%,440px)}.about-container .about-highlight__media img{display:block;height:auto;max-height:100%;object-fit:contain;width:100%}.about-container .about-highlight__text{display:flex;flex:1 1 auto;flex-direction:column;justify-content:center;min-width:0;padding:24px 28px;text-align:left}.about-container .about-highlight__text p{color:#f8fafca6;font-size:var(--text-body);line-height:var(--leading-body);margin:0 0 16px}.about-container .about-highlight__eyebrow{color:var(--accent-text-soft);font-size:var(--text-label);font-weight:var(--weight-label);letter-spacing:var(--tracking-label);margin-bottom:10px;text-transform:uppercase}.about-container .about-highlight__title{color:#f8fafc!important;font-size:var(--text-h3)!important;font-weight:var(--weight-heading);line-height:var(--leading-tight);margin:0 0 12px!important;padding-top:0!important}.about-container .about-highlight__cta{align-items:center;align-self:flex-start;background:var(--accent);border-radius:999px;color:#fff;display:inline-flex;font-size:var(--text-body);font-weight:700;gap:.5em;letter-spacing:.02em;margin-top:6px;padding:12px 24px;transition:background .25s ease,box-shadow .25s ease,transform .2s ease}.about-container .about-highlight__cta-icon{stroke-width:2.5;flex-shrink:0;height:1.1em;transition:transform .2s ease;width:1.1em}@media(max-width:768px){.about-container .about-highlight{flex-direction:column;text-align:center}.about-container .about-highlight__media{flex-basis:auto;max-width:none;width:100%}.about-container .about-highlight__text{text-align:left}}.about-container .about-contact,.about-container .about-technologies{margin-bottom:40px}.about-container .about-contact form{display:flex;flex-direction:column}.about-container .about-contact form label{font-family:var(--font-body);margin-bottom:10px}.about-container .about-contact form input,.about-container .about-contact form textarea{background:#ffffff0a;border:1px solid #ffffff1a;border-radius:6px;color:#f8fafc;font-family:var(--font-body);font-size:1em;margin-bottom:20px;padding:10px}.about-container .about-contact form input:focus,.about-container .about-contact form textarea:focus{border-color:color-mix(in srgb,var(--accent) 50%,#0000)}.about-container .about-contact form input:focus-visible,.about-container .about-contact form textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.about-container .about-contact form button{background:var(--accent);border:none;border-radius:6px;color:#f8fafc;cursor:pointer;font-family:var(--font-body);font-size:1.1em;padding:10px 20px;transition:background .2s ease}.about-container .about-contact form button:hover{background:var(--accent-text)}.about-technologies-container{color:#fff;font-family:var(--font-body);margin:0 auto;padding:20px 0;width:70%}.about-technologies-container .about-technologies h2{color:#fff;font-family:var(--font-body);font-size:var(--text-h2);font-weight:var(--weight-heading);line-height:var(--leading-heading);margin-bottom:20px;text-align:center}.about-technologies-container .about-technologies .technology-categories{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr}@media(max-width:500px){.about-technologies-container .about-technologies .technology-categories{grid-template-columns:1fr}}.about-technologies-container .about-technologies .technology-categories .technology-category{background-color:#2a2a2a;border-radius:10px;color:#fff;padding:20px}.about-technologies-container .about-technologies .technology-categories .technology-category h3{color:#fff;font-size:var(--text-h3);font-weight:var(--weight-heading);line-height:var(--leading-tight);margin-bottom:30px;text-align:center}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(3,1fr)}@media(max-width:500px){.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items{grid-template-columns:repeat(2,1fr)!important}}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items .technology-item{align-items:center;color:#fff;cursor:pointer;display:flex;flex-direction:column;font-size:1.2em}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items .technology-item i{color:#fff;font-size:3em;margin-bottom:10px}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items .technology-item p{color:#fff;font-family:var(--font-body);margin:0;text-align:center}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items .technology-item:hover{color:var(--accent-text-soft)}.resume-container{align-items:center;color:#fff;display:flex;flex-direction:column;font-family:var(--font-body);margin:0 auto;max-width:1400px;padding:40px 0;width:95%}.resume-container .resume-title{color:var(--accent-heading);font-size:var(--text-h1);font-weight:var(--weight-heading);letter-spacing:var(--tracking-heading);line-height:var(--leading-heading);margin:0 0 30px;padding:0;text-align:left;width:100%}.resume-container .content-wrapper{display:flex;flex-direction:column;gap:20px;width:100%}@media(min-width:1025px){.resume-container .content-wrapper{flex-direction:row;gap:60px;justify-content:center}}.left-column{flex:1.3 1;margin-bottom:20px}@media(min-width:1025px){.left-column{margin-right:0}}@media(max-width:1024px){.left-column{margin-right:0;width:100%}}.right-column{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:16px;width:100%}.right-column iframe{border:1px solid #ffffff12;border-radius:8px;box-shadow:0 4px 24px #00000080;height:115vh;width:100%}@media(max-width:1200px){.right-column iframe{height:60vh}}.cv-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;width:100%}.cv-actions__btn{align-items:center;border-radius:10px;cursor:pointer;display:inline-flex;font-family:var(--font-body);font-size:var(--text-small);font-weight:var(--weight-medium);gap:8px;letter-spacing:.01em;padding:11px 20px;text-decoration:none;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease}.cv-actions__btn svg{stroke-width:2.25;height:1.05em;transition:transform .18s ease;width:1.05em}.cv-actions__btn:hover{transform:translateY(-2px)}.cv-actions__btn--primary{background:var(--accent);border:1px solid #0000;color:#fff}.cv-actions__btn--primary:hover{background:var(--accent-strong)}.cv-actions__btn--primary:hover svg{transform:translateY(2px)}.cv-actions__btn--ghost{background:#ffffff08;border:1px solid color-mix(in srgb,var(--accent-text-soft) 35%,#0000);color:var(--accent-heading)}.cv-actions__btn--ghost:hover{background:color-mix(in srgb,var(--accent) 10%,#0000);border-color:color-mix(in srgb,var(--accent-text-soft) 70%,#0000)}.cv-actions__btn--ghost:hover svg{transform:translate(2px,-2px)}.section-container,.section-title{position:relative}.section-title{color:var(--accent-heading);font-size:var(--text-h1);font-weight:var(--weight-heading);letter-spacing:var(--tracking-heading);line-height:var(--leading-heading);margin-bottom:24px}.line-container{position:relative}.line-container:before{background:#ffffff24;bottom:0;content:"";position:absolute;top:0;width:1px}.job-container{margin-bottom:20px;padding-left:40px;position:relative}.job-container:before{background:var(--accent);content:"";height:1px;left:0;position:absolute;top:1em;width:18px}.job-title{color:#f8fafc;font-size:var(--text-h3);font-weight:var(--weight-heading);line-height:var(--leading-tight);margin:10px 0;position:relative}.company{color:var(--accent-text-soft);font-weight:600}.company__main{align-items:center;display:inline-flex;gap:.28em}.company__sub{color:color-mix(in srgb,var(--accent-text-soft) 55%,#0000);display:block;font-size:var(--text-body);font-weight:var(--weight-medium);letter-spacing:.01em}a.company--link{align-items:flex-start;cursor:pointer;display:inline-flex;flex-direction:column;text-decoration:none;transition:color .15s ease;vertical-align:top}a.company--link:focus-visible,a.company--link:hover{color:var(--accent-heading)}a.company--link:focus-visible .company__sub,a.company--link:hover .company__sub{color:color-mix(in srgb,var(--accent-heading) 70%,#0000)}a.company--link:focus-visible .company__external,a.company--link:hover .company__external{opacity:.95;transform:translate(1px,-1px)}.company__external{stroke-width:2.25;flex-shrink:0;height:.66em;opacity:.45;transition:opacity .15s ease,transform .15s ease;width:.66em}.job-dates{color:#f8fafc66;letter-spacing:.02em;margin:4px 0 10px}.bullet-point,.job-dates{font-size:var(--text-small)}.bullet-point{color:#f8fafca6;line-height:var(--leading-body);list-style-type:none;margin-bottom:4px;padding-left:20px;position:relative}.bullet-point:before{color:var(--accent);content:"›";font-size:1.1em;font-weight:700;left:0;line-height:1.5;position:absolute}.bullet-point .kw{color:var(--accent-text);font-weight:600}.projects-container{color:#f8fafc;font-family:var(--font-mono);margin:0 auto;max-width:1400px;padding:80px clamp(24px,6vw,100px) 40px}.projects-container .section-title{color:var(--accent-heading);font-size:var(--text-h1);font-weight:var(--weight-heading);letter-spacing:var(--tracking-heading);line-height:var(--leading-heading);margin-bottom:12px}.projects-intro{color:#f8fafc8c;font-size:var(--text-body);line-height:var(--leading-body);margin:0 0 8px;max-width:480px}.projects-container .port-projects{padding-top:32px}.portfolio-page{color:#f8fafc;font-family:var(--font-mono);min-height:100vh;padding-top:88px}.port-back{align-items:center;color:#f8fafc66;display:inline-flex;font-size:var(--text-small);gap:8px;letter-spacing:.07em;margin-bottom:40px;text-decoration:none;transition:color .2s ease}.port-back:hover{color:var(--accent-text-soft)}.port-back svg{font-size:.85em;transition:transform .2s ease}.port-back:hover svg{transform:translateX(-3px)}.port-hero{margin:0 auto;max-width:1200px;opacity:0;padding:72px clamp(24px,6vw,100px) 80px;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}.port-hero--visible{opacity:1;transform:translateY(0)}.port-hero__eyebrow{color:#f8fafc59;font-size:var(--text-label);letter-spacing:var(--tracking-label);margin:0 0 16px;text-transform:uppercase}.port-hero__title{color:var(--accent-text-soft);font-size:var(--text-display);font-weight:var(--weight-display);letter-spacing:var(--tracking-display);line-height:var(--leading-display);margin:0 0 28px}.port-hero__tagline{color:#f8fafc8c;font-size:var(--text-body);line-height:1.75;margin:0 0 20px;max-width:480px}.port-hero__meta{align-items:center;color:#f8fafc40;display:flex;flex-wrap:wrap;font-size:var(--text-caption);gap:10px;letter-spacing:.06em}.port-hero__sep{color:#f8fafc1f}.port-projects{display:flex;flex-direction:column;gap:120px;margin:0 auto;max-width:1400px;padding:20px clamp(24px,6vw,100px) 80px}.pcard{grid-gap:clamp(32px,5vw,72px);align-items:center;display:grid;gap:clamp(32px,5vw,72px);grid-template-columns:1.15fr .85fr;opacity:0;transform:translateY(48px);transition:opacity .75s cubic-bezier(.22,1,.36,1),transform .75s cubic-bezier(.22,1,.36,1)}.pcard--visible{opacity:1;transform:translateY(0)}.pcard--reversed{grid-template-columns:.85fr 1.15fr}.pcard--reversed .pcard__media{order:2}.pcard--reversed .pcard__info{order:1}@media(max-width:900px){.pcard{gap:28px;grid-template-columns:1fr!important}.pcard .pcard__media{order:1!important}.pcard .pcard__info{order:2!important}}.pcard__media{aspect-ratio:16/10;background:#0b0b14;border:1px solid #ffffff12;border-radius:20px;box-shadow:0 24px 64px #0000008c,inset 0 1px 0 #ffffff0a;overflow:hidden;position:relative;transition:border-color .35s ease,box-shadow .35s ease}.pcard__media:hover{border-color:#ffffff24;box-shadow:0 28px 80px #000000a6,inset 0 1px 0 #ffffff0f}@media(max-width:900px){.pcard__media{aspect-ratio:16/9;border-radius:14px}}.pcard__img,.pcard__video{display:block;height:100%;object-fit:cover;width:100%}.media-placeholder{align-items:center;background:#0e0e14;display:flex;flex-direction:column;gap:10px;height:100%;justify-content:center;overflow:hidden;padding:24px;position:relative;text-align:center;width:100%}.media-placeholder__label{color:#f8fafc;font-size:var(--text-h2);font-weight:var(--weight-heading);letter-spacing:var(--tracking-heading);line-height:var(--leading-heading);position:relative}.media-placeholder__note{color:#f8fafc73;font-size:var(--text-label);letter-spacing:var(--tracking-label);position:relative;text-transform:uppercase}.slideshow{height:100%;position:relative;width:100%}.slideshow__slide{height:100%;inset:0;object-fit:cover;opacity:0;position:absolute;transition:opacity .8s ease;width:100%;will-change:opacity}.slideshow__slide--active{opacity:1}.slideshow__dots{bottom:8px;display:flex;gap:0;left:50%;position:absolute;transform:translateX(-50%);z-index:10}.slideshow__dot{align-items:center;background:none;border:none;cursor:pointer;display:flex;height:24px;justify-content:center;padding:0;width:24px}.slideshow__dot:before{background:#ffffff40;border-radius:50%;content:"";height:6px;transition:background .3s ease,transform .2s ease;width:6px}.slideshow__dot--active:before{background:var(--accent);transform:scale(1.4)}.slideshow__dot:hover:before{background:#ffffff80}.concept-card{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.concept-card,.concept-card__hud{overflow:hidden;position:relative}.concept-card__hud{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#06b6d40a;border:1px solid #06b6d440;border-radius:12px;font-size:clamp(.65em,1.2vw,.8em);max-width:460px;padding:0;width:calc(100% - 48px);z-index:1}.concept-card__topbar{align-items:center;background:#06b6d40f;border-bottom:1px solid #06b6d426;display:flex;gap:12px;padding:10px 16px}.concept-card__logo{color:#67e8f9;flex:1 1;font-size:var(--text-small);font-weight:var(--weight-heading);letter-spacing:.05em}.concept-card__status{align-items:center;color:#67e8f980;display:flex;font-size:var(--text-caption);gap:5px}.concept-card__dot{animation:xr-pulse 2.4s ease-in-out infinite;background:#4ade80;border-radius:50%;height:6px;width:6px}.concept-card__battery{color:#67e8f966;font-size:var(--text-caption);letter-spacing:.02em}.concept-card__body{padding:18px 20px}.concept-card__chapter{color:#67e8f973;font-size:var(--text-label);letter-spacing:var(--tracking-label);margin:0 0 4px;text-transform:uppercase}.concept-card__booktitle{color:#e0f7fa;font-size:var(--text-h5);font-weight:var(--weight-heading);letter-spacing:.02em;margin:0 0 14px}.concept-card__divider{background:#06b6d41f;height:1px;margin:0 0 14px}.concept-card__line{color:#e0f7fab3;font-size:var(--text-small);letter-spacing:.01em;line-height:1.9;margin:0}.concept-card__line--faint{color:#e0f7fa59}.concept-card__footer{align-items:center;border-top:1px solid #06b6d41f;display:flex;gap:12px;padding:12px 20px}.concept-card__progress-track{background:#06b6d426;border-radius:2px;flex:1 1;height:3px;overflow:hidden}.concept-card__progress-fill{background:#06b6d4;border-radius:2px;height:100%;width:67%}.concept-card__page{color:#67e8f966;font-size:var(--text-caption);letter-spacing:.04em;white-space:nowrap}@keyframes xr-pulse{0%,to{opacity:1}50%{opacity:.4}}.pcard__info{padding:8px 0;position:relative}@media(max-width:900px){.pcard__info{padding:0}}.pcard__number{color:color-mix(in srgb,var(--accent) 13%,#0000);font-size:clamp(5em,10vw,8.5em);font-weight:700;left:-.08em;letter-spacing:-.04em;line-height:1;pointer-events:none;position:absolute;top:-.35em;-webkit-user-select:none;user-select:none}@media(max-width:900px){.pcard__number{display:none}}.pcard__title{color:#f5f7fb;display:inline-block;font-size:var(--text-h1);font-weight:var(--weight-heading);letter-spacing:var(--tracking-display);line-height:var(--leading-heading);margin:0 0 14px;position:relative}.pcard__title:after{background:var(--accent);border-radius:2px;content:"";display:block;height:3px;margin-top:14px;width:46px}.pcard__subtitle{color:#f8fafc66;font-size:var(--text-label);letter-spacing:var(--tracking-label);margin:0 0 22px;text-transform:uppercase}.pcard__description{color:#f8fafc9e;font-size:var(--text-small);line-height:1.85;margin:0 0 28px}.pcard__tags{display:flex;flex-wrap:wrap;gap:7px;list-style:none;margin:0 0 32px;padding:0}.pcard__tag{background:hsla(0,0%,100%,.025);border:1px solid #ffffff17;border-radius:4px;color:#f8fafc73;font-size:var(--text-label);letter-spacing:var(--tracking-label);padding:4px 10px}.pcard__links{display:flex;flex-wrap:wrap;gap:10px}.pcard__link{align-items:center;border-radius:10px;display:inline-flex;font-family:var(--font-mono);font-size:var(--text-small);font-weight:var(--weight-heading);gap:8px;letter-spacing:.04em;padding:10px 20px;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease,color .2s ease}.pcard__link:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.pcard__link--demo{background:var(--accent);border:1px solid #0000;color:#fff}.pcard__link--demo:hover{background:color-mix(in srgb,var(--accent) 85%,#000);transform:translateY(-2px)}.pcard__link--github{background:hsla(0,0%,100%,.035);border:1px solid #ffffff24;color:#f8fafcc7}.pcard__link--github:hover{background:#ffffff14;border-color:#ffffff47;color:#f8fafc;transform:translateY(-2px)}.pcard__link svg{font-size:1em}.pcard__favicon{background:#fff;border-radius:4px;flex:0 0 auto;height:17px;object-fit:contain;padding:1.5px;width:17px}.pcard__case-trigger{align-items:center;background:none;border:none;color:var(--accent-text);cursor:pointer;display:inline-flex;font-family:var(--font-mono);font-size:var(--text-label);font-weight:var(--weight-label);gap:9px;letter-spacing:var(--tracking-label);margin-top:26px;padding:9px 0;text-transform:uppercase;transition:gap .2s ease,opacity .2s ease}.pcard__case-trigger:hover{gap:13px;opacity:.85}.pcard__case-trigger svg{font-size:1.1em}.case-modal{align-items:center;display:flex;inset:0;justify-content:center;opacity:0;padding:clamp(16px,4vw,48px);position:fixed;transition:opacity .28s ease,visibility .28s ease;visibility:hidden;z-index:1000}.case-modal--open{opacity:1;visibility:visible}.case-modal__backdrop{backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);background:#05050cbd;inset:0;position:absolute}.case-modal__panel{background:#12121a;border:1px solid #ffffff17;border-radius:20px;box-shadow:0 40px 120px #000000b3;font-family:var(--font-mono);max-height:86vh;max-width:760px;overflow-y:auto;padding:clamp(28px,5vw,52px);position:relative;transform:translateY(16px) scale(.985);transition:transform .32s cubic-bezier(.22,1,.36,1);width:100%;z-index:1}.case-modal__panel:before{background:var(--accent);border-radius:20px 20px 0 0;content:"";height:3px;left:0;position:absolute;right:0;top:0}.case-modal--open .case-modal__panel{transform:translateY(0) scale(1)}.case-modal__close{align-items:center;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:10px;color:#f8fafcb3;cursor:pointer;display:inline-flex;height:38px;justify-content:center;position:absolute;right:16px;top:16px;transition:background .2s ease,color .2s ease;width:38px}.case-modal__close:hover{background:#ffffff1a;color:#fff}.case-modal__close svg{font-size:1.15em}.case-modal__head{margin-bottom:26px;padding-right:44px}.case-modal__media{aspect-ratio:16/10;background:#0b0b14;border:1px solid #ffffff14;border-radius:14px;box-shadow:0 18px 48px #00000073;margin-bottom:30px;overflow:hidden;position:relative}.case-modal__media .concept-card,.case-modal__media .media-placeholder,.case-modal__media .slideshow,.case-modal__media img,.case-modal__media video{display:block;height:100%;object-fit:cover;width:100%}.case-modal__eyebrow{color:var(--accent-text);font-size:var(--text-label);font-weight:var(--weight-label);letter-spacing:var(--tracking-label);text-transform:uppercase}.case-modal__title{color:#f5f7fb;font-size:var(--text-h1);font-weight:var(--weight-heading);letter-spacing:var(--tracking-display);line-height:var(--leading-display);margin:9px 0 6px}.case-modal__subtitle{color:#f8fafc66;font-size:var(--text-label);letter-spacing:var(--tracking-label);margin:0;text-transform:uppercase}.case-modal__section{margin-bottom:24px}.case-modal__section:last-child{margin-bottom:0}.case-modal__h{color:var(--accent-text);font-size:var(--text-label);font-weight:var(--weight-label);letter-spacing:var(--tracking-label);margin:0 0 8px;text-transform:uppercase}.case-modal__p{color:#f8fafcbd;font-size:var(--text-body);line-height:1.75;margin:0}.case-modal__p strong{color:#f8fafc;font-weight:600}.case-modal__p a{color:var(--accent-text);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--accent) 50%,#0000);text-decoration-color:color-mix(in srgb,var(--accent) 50%,#0000);text-underline-offset:2px;transition:-webkit-text-decoration-color .2s ease;transition:text-decoration-color .2s ease;transition:text-decoration-color .2s ease,-webkit-text-decoration-color .2s ease}.case-modal__p a:hover{-webkit-text-decoration-color:currentColor;text-decoration-color:initial}@media(max-width:600px){.case-modal__panel{border-radius:16px;max-height:92vh}}.port-footer{border-top:1px solid #ffffff0d;margin:0 auto;max-width:1200px;padding:40px clamp(24px,6vw,100px) 80px}.port-footer .port-back{margin-bottom:0}.tech-marquee{font-family:var(--font-mono);margin:0 auto;max-width:1400px;padding:24px clamp(24px,6vw,100px) 48px}.tech-marquee__eyebrow{color:var(--text-faint);font-size:var(--text-small);letter-spacing:.02em;margin:0 0 20px;text-align:center}.tech-marquee__viewport{-webkit-mask-image:linear-gradient(90deg,#0000,#000 12%,#000 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12%,#000 88%,#0000);overflow:hidden;padding:10px 0}.tech-marquee__track{animation:tech-marquee-scroll 55s linear infinite;display:flex;gap:40px;list-style:none;margin:0;padding:0;width:-webkit-max-content;width:max-content}.tech-marquee__viewport:hover .tech-marquee__track{animation-play-state:paused}.tech-marquee__item{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:999px;color:var(--text-muted);display:inline-flex;font-size:var(--text-small);gap:10px;padding:10px 18px;transition:color .2s ease,border-color .2s ease,transform .2s ease;white-space:nowrap}.tech-marquee__item:hover{border-color:var(--accent-ring);color:var(--accent-text);transform:translateY(-2px)}.tech-marquee__icon{color:var(--accent);height:20px;width:20px}@keyframes tech-marquee-scroll{0%{transform:translateX(0)}to{transform:translateX(-50%)}}@media(prefers-reduced-motion:reduce){.tech-marquee__track{animation:none;flex-wrap:wrap;justify-content:center;width:100%}}.contactg{animation:contactg-pan 16s ease infinite;background:linear-gradient(120deg,var(--accent-strong),var(--accent),var(--accent-text-soft),var(--accent),var(--accent-strong));background-size:300% 300%;border-radius:24px;color:#fff;margin:40px auto;max-width:760px;overflow:hidden;padding:48px 40px;text-align:center;width:92%}.contactg__inner{margin:0 auto;max-width:640px}.contactg__eyebrow{color:#ffffffb3;font-family:var(--font-mono);font-size:var(--text-label);font-weight:var(--weight-label);letter-spacing:var(--tracking-label);margin:0 0 12px;text-transform:uppercase}.contactg__title{font-family:var(--font-serif);font-family:var(--font-display,var(--font-serif));font-size:var(--text-h2);font-weight:var(--weight-heading);letter-spacing:var(--tracking-heading);line-height:var(--leading-heading);margin:0 0 14px}.contactg__lead{color:#ffffffe0;font-size:var(--text-lead);line-height:var(--leading-body);margin:0 auto 30px;max-width:54ch}.contactg__actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:center}.contactg__btn{align-items:center;border-radius:999px;cursor:pointer;display:inline-flex;font-family:var(--font-mono);font-size:var(--text-small);font-weight:var(--weight-medium);gap:9px;padding:13px 26px;text-decoration:none;transition:transform .18s ease,background .18s ease,border-color .18s ease}.contactg__btn svg{height:1.1em;transition:transform .18s ease;width:1.1em}.contactg__btn:hover{transform:translateY(-2px)}.contactg__btn--primary{background:#fff;color:var(--accent-strong)}.contactg__btn--primary:hover .contactg__btn-arrow{transform:translateX(3px)}.contactg__btn--ghost{background:#0000;border:1px solid #ffffff73;color:#fff}.contactg__btn--ghost:hover{background:#ffffff14;border-color:#fff}.contactg__direct{color:#ffffffb8;font-size:var(--text-small);margin:24px 0 0}.contactg__direct a{color:#fff;text-decoration:underline;text-underline-offset:3px}.contactg__socials{display:flex;gap:22px;justify-content:center;margin-top:22px}.contactg__socials a{color:#ffffffbf;transition:color .18s ease,transform .18s ease}.contactg__socials a:hover{color:#fff;transform:translateY(-2px)}.contactg__socials svg{height:22px;width:22px}@keyframes contactg-pan{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@media(prefers-reduced-motion:reduce){.contactg{animation:none;background-position:0 50%}}
/*# sourceMappingURL=main.3ba4170c.css.map*/