@font-face{font-family:Anybody Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:50% 150%;src:url(/assets/anybody-vietnamese-standard-normal-9GtAklmW.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Anybody Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:50% 150%;src:url(/assets/anybody-latin-ext-standard-normal-BaQ5u-C4.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Anybody Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:50% 150%;src:url(/assets/anybody-latin-standard-normal-CHqbGEEr.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2)format("woff2"),url(/assets/instrument-serif-latin-400-normal-BVbkICAY.woff)format("woff")}@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-italic-DKMiL14s.woff2)format("woff2"),url(/assets/instrument-serif-latin-400-italic-u__WvvIK.woff)format("woff")}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-vietnamese-wght-normal-CHiFlh_0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-ext-wght-normal-Dg-wlmqe.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-wght-normal-CaVRRdDk.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#000;--surface:#0b0c0f;--line:#23252b;--field:#5d616b;--text:#eceef0;--muted:#8d9198;--text-soft:#b9bcc2;--accent:#0b7471;--accent-hover:#0c7c78;--accent-text:#4fc7bf;--display:"Anybody Variable", system-ui, sans-serif;--serif:"Instrument Serif", Georgia, serif;--sans:"Hanken Grotesk Variable", system-ui, sans-serif;--mono:"Geist Mono Variable", ui-monospace, Consolas, monospace;--ease-out:cubic-bezier(.23, 1, .32, 1);--spring:cubic-bezier(.34, 1.56, .64, 1);--radius:2px;--nav-h:64px;--pad:clamp(16px, 4vw, 56px);--max:1280px;--fs-h2:clamp(2.5rem, 5vw, 4.25rem);--fs-h3:clamp(1.5rem, 2.2vw, 2rem);--fs-small:.875rem;--fs-xs:.8125rem;--section-y:clamp(88px, 10vw, 136px);--head-gap:clamp(40px, 5vw, 64px);--gap:24px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f6f7f9;--surface:#eceef2;--line:#d5d8de;--field:#868b95;--text:#0c0e12;--muted:#555a64;--text-soft:#33373f;--accent-hover:#096360;--accent-text:#0a6663;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;overflow-x:clip}body{background:var(--bg);color:var(--text);font:400 1.0625rem/1.6 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}h1,h2,h3,p,ul,ol,figure{margin:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}ul,ol{padding:0;list-style:none}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent-text);outline-offset:3px}main:focus,section:focus{outline:none}kbd{border:1px solid var(--line);min-width:1.6em;font:400 .75rem/1.4 var(--mono);text-align:center;color:var(--muted);border-radius:3px;padding:1px 5px;display:inline-block}[id]{scroll-margin-top:calc(var(--nav-h) + 16px)}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.label{color:var(--muted);font-size:.875rem;line-height:1.4}.muted{color:var(--muted)}.small{font-size:.875rem}.skip{left:var(--pad);z-index:100;background:var(--accent);color:#fff;padding:10px 14px;position:fixed;top:8px;transform:translateY(-200%)}.skip:focus{transform:none}.btn{border-radius:var(--radius);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;min-height:48px;transition:transform .52s var(--spring), translate .3s var(--ease-out), background-color .2s ease, border-color .2s ease, color .2s ease;border:1px solid #0000;justify-content:center;align-items:center;padding:0 22px;font-weight:550;display:inline-flex}.btn:active{transition-duration:90ms,.3s,.2s,.2s,.2s;transition-timing-function:var(--ease-out);transform:scale(.95)}@media (prefers-reduced-motion:reduce){.btn{transition:background-color .2s,border-color .2s,color .2s}}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-line{border-color:var(--field);background:var(--bg)}.btn-line:hover{border-color:var(--text)}.icon-btn{border-radius:var(--radius);min-width:36px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;place-items:center;padding:0 8px;transition:color .2s,border-color .2s;display:inline-grid}.icon-btn:hover{color:var(--text);border-color:var(--line)}.icon-btn-sm{min-width:28px;height:28px;padding:0}.actions{flex-wrap:wrap;gap:12px;display:flex}.nav{z-index:50;height:var(--nav-h);padding:0 max(var(--pad), calc((100% - var(--max)) / 2 + var(--pad)));background:var(--bg);justify-content:space-between;align-items:center;gap:24px;display:flex;position:fixed;inset:0 0 auto}.nav nav{margin-left:auto}.nav-start{align-items:center;gap:28px;display:flex}.brand{font:800 1.375rem/1 var(--display);letter-spacing:-.03em}.status{color:var(--muted);font-size:.875rem}.status-hero{display:none}@media (width<=900px){.status-nav{display:none}.status-hero{display:inline-flex}}.nav ul{gap:clamp(14px,3vw,32px);font-size:.9375rem;display:flex}.nav li a{color:var(--muted);padding:8px 0;transition:color .2s;display:inline-block}.nav li a:hover,.nav li a[aria-current]{color:var(--text)}.nav li a[aria-current]{-webkit-text-decoration:underline 1px var(--accent);text-decoration:underline 1px var(--accent);text-underline-offset:8px}.nav-toggle{cursor:pointer;touch-action:manipulation;background:0 0;border:0;place-items:center;width:44px;height:44px;margin-right:-10px;display:none}@media (width<=767px){.nav nav{display:none}.nav-toggle{display:grid}}.menu{width:100%;max-width:none;height:100%;max-height:none;padding:0 var(--pad);background:var(--bg);color:var(--text);border:0;margin:0}.menu-bar{height:var(--nav-h);justify-content:space-between;align-items:center;display:flex}.menu-list{padding-top:clamp(24px,6vh,56px)}.menu-list a{border-bottom:1px solid var(--line);min-height:72px;font:800 clamp(2rem, 10vw, 2.75rem) / 1 var(--display);letter-spacing:-.03em;touch-action:manipulation;align-items:center;display:flex}.menu-list a:active{color:var(--accent-text)}html:has(.menu[open]){overflow:hidden}@media (prefers-reduced-motion:no-preference){.menu[open]{animation:menu-in .26s var(--ease-out)}.menu[open] li{animation:menu-item .52s var(--ease-out) both}.menu[open] li:nth-child(2){animation-delay:40ms}.menu[open] li:nth-child(3){animation-delay:80ms}.menu[open] li:nth-child(4){animation-delay:.12s}@keyframes menu-in{0%{opacity:0}}@keyframes menu-item{0%{opacity:0;transform:translateY(16px)}}}.kbd-hint{cursor:pointer;background:0 0;border:0;gap:4px;margin-right:-6px;padding:6px;display:inline-flex}.kbd-hint:hover kbd{border-color:var(--field);color:var(--text)}@media (hover:none),(width<=560px){.kbd-hint{display:none}}.palette{border:1px solid var(--field);background:var(--bg);width:min(560px,100vw - 32px);color:var(--text);border-radius:6px;margin:14vh auto auto;padding:0}.palette::backdrop,.term::backdrop{background:#0009}.palette-input{border:0;border-bottom:1px solid var(--line);background:0 0;width:100%;height:56px;padding:0 20px;font-size:1.0625rem}.palette-input:focus-visible{border-bottom-color:var(--accent-text);outline:none}.palette-list{max-height:min(50vh,380px);padding:8px;overflow-y:auto}.palette-list li{cursor:pointer;border-radius:4px;justify-content:space-between;gap:16px;padding:10px 12px;display:flex}.palette-list li[aria-selected=true]{background:var(--surface);box-shadow:inset 2px 0 var(--accent)}.palette-group,.palette-empty{color:var(--muted);font-size:.8125rem}.palette-empty{padding:4px 20px 16px}.palette-keys{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;gap:6px 18px;padding:10px 20px;font-size:.75rem;display:flex}.palette-keys kbd{margin-right:2px}.term{border:1px solid var(--field);background:var(--surface);width:min(720px,100vw - 32px);height:min(460px,72vh);color:var(--text);font-family:var(--mono);border-radius:6px;padding:0}.term[open]{flex-direction:column;display:flex}.term-bar{border-bottom:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;padding:6px 8px 6px 16px;font-size:.8125rem;display:flex}.term-log{white-space:pre-wrap;overflow-wrap:anywhere;flex:1;padding:14px 16px;font-size:.875rem;line-height:1.65;overflow-y:auto}.term-in{margin-top:10px}.term-in:before{content:"$ ";color:var(--accent-text)}.term-form{border-top:1px solid var(--line);align-items:center;gap:10px;padding:10px 16px 14px;display:flex}.term-prompt{color:var(--accent-text)}.term-input{min-width:0;font:400 1rem var(--mono);caret-color:var(--accent-text);background:0 0;border:0;flex:1}.term-input:focus-visible{outline:none}.term-form:focus-within{border-top-color:var(--accent-text)}.toast{z-index:60;border:1px solid var(--field);background:var(--bg);opacity:0;pointer-events:none;transition:opacity .2s ease, translate .2s var(--ease-out);padding:10px 16px;font-size:.9375rem;position:fixed;bottom:24px;left:50%;translate:-50% 12px}.toast.is-on{opacity:1;translate:-50%}.hero{isolation:isolate;min-height:100svh;padding:calc(var(--nav-h) + 24px) var(--pad) 0;display:grid;position:relative;overflow:clip}.hero-stage{grid-template-rows:1fr auto;grid-template-columns:1fr auto 1fr;column-gap:clamp(16px,2.5vw,48px);width:100%;max-width:1600px;margin-inline:auto;display:grid}.hero-name{grid-area:1/1/2/-1;grid-template-columns:subgrid;font:400 clamp(3.5rem, 9vw, 10rem) / .9 var(--serif);letter-spacing:-.02em;text-shadow:0 0 .25em var(--bg), 0 0 .5em var(--bg);align-self:center;display:grid}.hero-foot{text-shadow:0 0 12px var(--bg), 0 0 24px var(--bg)}.hero-first{grid-column:1;justify-self:end}.hero-last{grid-column:3;justify-self:start;font-style:italic}.hero-photo{grid-area:1/2/3/3;align-self:end;position:relative}.hero-photo img{aspect-ratio:4/5;object-fit:cover;width:auto;height:min(74svh,780px)}.code-field{z-index:-1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.hero-foot{flex-direction:column;grid-area:2/1;align-self:end;align-items:flex-start;gap:20px;padding-bottom:clamp(32px,7vh,72px);display:flex;position:relative}.hero-foot:before{content:"";z-index:-1;background:radial-gradient(closest-side, var(--bg) 55%, transparent);pointer-events:none;position:absolute;inset:-24px -40px 0}.hero-foot .actions{gap:10px;display:grid}.hero-foot .hero-role{max-width:30ch;color:var(--muted);font-size:1.1875rem}@media (width<=900px){.hero-stage{grid-template-rows:auto auto 1fr;grid-template-columns:1fr;justify-items:center;row-gap:24px}.hero{container-type:inline-size}.hero-name{text-align:center;white-space:nowrap;grid-area:1/1;font-size:clamp(2rem,13.8889cqi - 2.22222px,6.5rem);display:block}.hero-foot{text-align:center;grid-area:2/1;align-items:center;padding-bottom:8px}.hero-foot .actions{justify-items:stretch}.hero-photo{grid-area:3/1}.hero-photo img{height:min(48svh,520px)}}.section{max-width:var(--max);padding:var(--section-y) var(--pad);border-top:1px solid var(--line);margin:0 auto}.section-head{column-gap:var(--gap);margin-bottom:var(--head-gap);grid-template-columns:repeat(12,1fr);align-items:end;row-gap:20px;display:grid;container-type:inline-size}.section-head h2{font:900 clamp(1.25rem, calc((58.33cqi - 10px) / 13), var(--fs-h2)) / 1.05 var(--display);letter-spacing:-.03em;text-transform:uppercase;grid-column:1/span 7;font-stretch:150%}.section-intro{max-width:46ch;color:var(--text-soft);grid-column:8/span 5}@media (width<=900px){.section-head h2,.section-intro{grid-column:1/-1}.section-head h2{font-size:clamp(1.25rem, calc(100cqi / 13), var(--fs-h2))}}.about{column-gap:var(--gap);grid-template-columns:repeat(12,1fr);align-items:start;row-gap:56px;display:grid}.about-main{grid-column:1/span 7}.about-lead{max-width:24ch;font:800 clamp(2rem, 3.6vw, 3.25rem) / 1.08 var(--display);letter-spacing:-.035em;text-wrap:balance}.about-text{max-width:60ch;color:var(--text-soft);gap:1em;margin-top:clamp(32px,4vw,48px);font-size:1.125rem;line-height:1.65;display:grid}.about-side{grid-column:9/span 4;gap:12px;padding-top:10px;display:grid}.about-side h3{color:var(--muted);font-size:.875rem;font-weight:500}.about-side h3+*{margin-bottom:36px}.about-list,.about-langs{border-top:1px solid var(--line);margin:0;display:grid}.about-list li,.about-langs div{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;padding:12px 0;display:flex}.about-langs dd{color:var(--muted);margin:0}@media (width<=900px){.about-main,.about-side{grid-column:1/-1}}.project+.project{margin-top:var(--section-y)}.project-stage{border:1px solid var(--line);background:var(--surface);padding:clamp(20px,5vw,72px) clamp(20px,5vw,72px) 0;position:relative;overflow:hidden}.device-browser{border:1px solid var(--line);background:var(--bg);border-bottom:0;border-radius:8px 8px 0 0;width:86%;overflow:hidden;box-shadow:0 30px 80px -30px #0009}.device-bar{border-bottom:1px solid var(--line);justify-content:center;align-items:center;height:36px;display:flex;position:relative}.device-dots,.device-dots:before,.device-dots:after{background:var(--line);border-radius:50%;width:9px;height:9px}.device-dots{position:absolute;left:32px}.device-dots:before,.device-dots:after{content:"";position:absolute;top:0}.device-dots:before{left:-16px}.device-dots:after{left:16px}.device-url{background:var(--surface);font-size:var(--fs-xs);color:var(--muted);border-radius:4px;padding:3px 14px}.device-phone{background:#050506;border:1px solid #2a2c31;border-radius:clamp(16px,2.4vw,30px);width:clamp(92px,21%,230px);padding:6px;position:absolute;bottom:clamp(-120px,-8vw,-24px);right:clamp(16px,4vw,56px);box-shadow:0 30px 60px -20px #000000b3}.device-phone img{border-radius:clamp(11px,1.9vw,24px)}.project-text{column-gap:var(--gap);grid-template-columns:repeat(12,1fr);row-gap:24px;padding-top:clamp(32px,4vw,48px);display:grid}.project-title{grid-column:1/span 5;align-content:start;gap:10px;display:grid}.project-client{font-size:var(--fs-small);color:var(--muted)}.project-title h3{font:800 clamp(2rem, 3.4vw, 3rem) / 1.02 var(--display);letter-spacing:-.035em}@media (width<=560px){.about-lead,.project-title h3{font-size:1.5rem}}.project-body{grid-column:7/span 6;justify-items:start;gap:24px;display:grid}.project-body>p{max-width:56ch;color:var(--text-soft);font-size:1.125rem;line-height:1.6}@media (width<=900px){.project-title,.project-body{grid-column:1/-1}.device-browser{width:100%}.device-phone{width:26%;bottom:-16px;right:12px}}.study{border-bottom:1px solid var(--line);margin-top:clamp(56px,8vw,96px)}.study-row{column-gap:var(--gap);border-top:1px solid var(--line);grid-template-columns:repeat(12,1fr);row-gap:8px;padding:28px 0;display:grid}.study-row h3{font:800 var(--fs-h3) / 1.1 var(--display);letter-spacing:-.03em;grid-column:1/span 4}.study-row>p,.study-list{grid-column:5/span 8;max-width:64ch}.study-list{color:var(--text-soft);gap:8px;display:grid}.study-list li{padding-left:22px;position:relative}.study-list li:before{content:"";background:var(--accent-text);width:10px;height:1px;position:absolute;top:.8em;left:0}#notenrechner .tags{margin-top:32px}@media (width<=900px){.study-row h3,.study-row>p,.study-list{grid-column:1/-1}}.tags{flex-wrap:wrap;gap:6px;display:flex}.tags li{border:1px solid var(--line);color:var(--muted);padding:3px 10px;font-size:.8125rem}.calc{border:1px solid var(--line);background:var(--surface);border-radius:10px;max-width:920px;overflow:hidden}.calc-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:14px 20px 14px 28px;display:flex}.calc-subject{min-width:0;font:800 clamp(1rem, 4.4vw, 1.75rem) / 1.1 var(--display);letter-spacing:-.03em;background:0 0;border:0;border-bottom:1px solid #0000;flex:1;padding:4px 0}.calc-subject:hover{border-bottom-color:var(--field)}.calc-body{grid-template-columns:minmax(0,1fr) 300px;display:grid}.calc-main{padding:24px 28px 28px}.calc-result{border-left:1px solid var(--line);background:var(--bg);padding:28px}.calc-average{font:800 clamp(4.5rem, 9vw, 6.5rem) / .9 var(--display);letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--accent-text);margin:8px 0 12px}.calc-empty{color:var(--muted);padding:12px 0}.grades{border-top:1px solid var(--line)}.grade{border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;grid-template-columns:1fr auto auto;align-items:center;gap:16px;padding:6px 0 6px 4px;display:grid}.grade-value{font-size:1.25rem;font-weight:600}.grade-weight{font-size:var(--fs-small);color:var(--muted)}.add-grade{grid-template-columns:minmax(0,1fr) 140px auto;align-items:end;gap:10px;margin-top:24px;display:grid}.field{flex-direction:column;gap:6px;display:flex}.input{border:1px solid var(--field);background:var(--bg);font-variant-numeric:tabular-nums;border-radius:6px;width:100%;height:44px;padding:0 12px;font-size:1rem;transition:border-color .2s}.input::placeholder{color:var(--muted)}.input:hover{border-color:var(--muted)}.input:focus-visible{outline-offset:0;border-color:var(--accent-text)}.input[aria-invalid=true]{border-color:var(--text);border-style:dashed}.calc .btn{border-radius:6px;min-height:44px;padding:0 18px}.error{font-size:var(--fs-small);grid-column:1/-1;line-height:1.4}.error:before{content:"! ";color:var(--accent-text);font-weight:700}@media (width<=700px){.calc-head{padding-left:20px}.calc-body{grid-template-columns:1fr}.calc-result{border-left:0;border-bottom:1px solid var(--line);order:-1;padding:20px}.calc-main{padding:20px}.add-grade{grid-template-columns:repeat(2,minmax(0,1fr))}.add-grade .btn{grid-column:1/-1}}.career{border-bottom:1px solid var(--line)}.career-row{column-gap:var(--gap);border-top:1px solid var(--line);grid-template-columns:repeat(12,1fr);padding:clamp(28px,4vw,48px) 0;display:grid}.career-year{font:800 clamp(3.5rem, 7vw, 6.5rem) / .85 var(--display);letter-spacing:-.04em;font-variant-numeric:lining-nums;color:var(--muted);grid-column:1/span 4;align-self:start}.career-row.is-now .career-year{color:var(--text)}.career-row.is-next .career-year{color:var(--accent-text)}.career-body{grid-column:5/span 8;align-self:center;gap:8px;display:grid}.career-body h3{font:800 var(--fs-h3) / 1.1 var(--display);letter-spacing:-.03em}.career-body p{max-width:44ch;color:var(--muted)}.career-body .career-tag{border:1px solid var(--field);font-size:var(--fs-xs);color:var(--text);justify-self:start;margin-top:6px;padding:2px 10px}.is-next .career-tag{border-style:dashed;border-color:var(--accent-text)}@media (width<=900px){.career-year,.career-body{grid-column:1/-1}.career-year{margin-bottom:12px}}.stack{border-bottom:1px solid var(--line)}.stack-row{column-gap:var(--gap);border-top:1px solid var(--line);grid-template-columns:repeat(12,1fr);align-items:baseline;row-gap:16px;padding:28px 0;display:grid}.stack-row h3{font:800 var(--fs-h3) / 1.1 var(--display);letter-spacing:-.03em;grid-column:1/span 4}.stack-items{flex-wrap:wrap;grid-column:5/span 8;gap:14px 36px;display:flex}.stack-items li{align-items:center;gap:10px;font-size:1.0625rem;display:inline-flex}.stack-items svg{color:var(--muted);flex:none}@media (width<=900px){.stack-row h3,.stack-items{grid-column:1/-1}}.contact-text{max-width:44ch;color:var(--text-soft);margin-bottom:clamp(32px,4vw,48px);font-size:clamp(1.125rem,1.8vw,1.375rem);line-height:1.5}.contact-mail-row{flex-wrap:wrap;align-items:center;gap:16px 28px;display:flex;container-type:inline-size}.contact-mail{font:800 clamp(1.25rem, calc((100cqi - 16px) / 14.5), 6.5rem) / 1.05 var(--display);letter-spacing:-.035em;white-space:nowrap;background:linear-gradient(var(--accent-text), var(--accent-text)) 0 100% / 0 2px no-repeat, linear-gradient(var(--field), var(--field)) 0 100% / 100% 1px no-repeat;transition:background-size .6s var(--ease-out), color .3s ease;padding-bottom:.06em}.contact-mail:hover,.contact-mail:focus-visible{color:var(--accent-text);background-size:100% 2px,100% 1px}@media (prefers-reduced-motion:reduce){.contact-mail{transition:none}}.contact-copy{min-width:112px;min-height:40px;font-size:var(--fs-small);padding:0 16px}.contact-links{flex-wrap:wrap;gap:12px;margin-top:clamp(40px,5vw,64px);display:flex}.btn-icon{transition:translate .3s var(--ease-out);margin-left:10px}.btn:hover .btn-icon{translate:2px -2px}@media (width<=560px){.contact-links{flex-direction:column}.contact-links .btn{justify-content:space-between;width:100%}}.footer{max-width:var(--max);padding:28px var(--pad);border-top:1px solid var(--line);font-size:var(--fs-small);color:var(--muted);justify-content:space-between;align-items:center;gap:16px;margin:0 auto;display:flex}.footer a{color:var(--text)}.footer a:hover{color:var(--accent-text)}@media (prefers-reduced-motion:no-preference){html:not(.lenis){scroll-behavior:smooth}.enter{animation:slide-in .24s var(--ease-out) both}@keyframes slide-in{0%{opacity:0;transform:translateY(-6px)}}}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}
