/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner{border-style:none;padding:0}[type=button]::-moz-focus-inner{border-style:none;padding:0}[type=reset]::-moz-focus-inner{border-style:none;padding:0}[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring{outline:1px dotted buttontext}[type=button]:-moz-focusring{outline:1px dotted buttontext}[type=reset]:-moz-focusring{outline:1px dotted buttontext}[type=submit]:-moz-focusring{outline:1px dotted buttontext}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;white-space:normal;max-width:100%;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button{height:auto}[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template,[hidden]{display:none}@font-face{font-family:Krub;src:url(/fonts/krub-v11-latin-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Krub;src:url(/fonts/krub-v11-latin-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Krub;src:url(/fonts/krub-v11-latin-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Krub;src:url(/fonts/krub-v11-latin-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:M PLUS Code Latin;src:url(/fonts/m-plus-code-latin-v16-latin-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:M PLUS Code Latin;src:url(/fonts/m-plus-code-latin-v16-latin-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:M PLUS Code Latin;src:url(/fonts/m-plus-code-latin-v16-latin-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:M PLUS Code Latin;src:url(/fonts/m-plus-code-latin-v16-latin-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--color-bg:#eee;--color-bg-light:#f8f8f8;--color-text:#111;--color-muted:#5f5f5f;--color-accent:#9aa8b8;--color-line:#222;--font-main:"Krub", sans-serif;--font-code:"M PLUS Code Latin", monospace;--max-width:1120px;--header-height:72px;--space-page:clamp(1rem, 4vw, 2rem);--radius-lg:1.4rem;--section-min-height:calc(100svh - var(--header-height));--transition-fast:.2s ease;--transition-soft:.6s ease;--transition-move:.25s ease;--skill-color-default:var(--color-accent);--skill-color-python:#3776ab;--skill-color-java:#f89820;--skill-color-cpp:#00599c;--skill-color-js:#f7df1e;--skill-color-sqlite:#96ccef;--skill-color-mongodb:#46a756;--skill-color-nodejs:#7ba766;--skill-color-json:#363636;--skill-color-linux:#111;--skill-color-docker:#2496ed;--skill-color-cloudflare:#e68831;--skill-color-redis:#dc382d;--skill-color-bash:#111;--skill-color-netlify:#51b9b7;--skill-color-git:#f05032;--skill-color-html:#e44d26;--skill-color-css:#264de4;--skill-color-figma:#9e5dfa;--skill-color-react:#61dafb;--skill-color-nextjs:#111;--skill-color-ultralyrics:#191e66;--skill-color-deepstream:#76b900;--skill-color-gstreamer:#ef4444;--skill-color-onnx:#d1d1d1;--skill-color-claude:#cd7d5e;--skill-color-homeassistant:#41bdf5;--skill-color-mqtt:#606;--skill-color-zigbee2mqtt:#ffc135;--skill-color-zigbee:#db3746;--skill-color-marlin:#111;--skill-color-onshape:#58a730;--skill-color-prusaslicer:#dd742f}@media (width<=600px){:root{--header-height:68px}}@media (width<=420px){:root{--space-page:1rem}}@media (width>=1400px){:root{--max-width:1240px}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--header-height)}body{background:var(--color-bg);min-width:320px;color:var(--color-text);font-family:var(--font-main);overflow-x:hidden}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button{font:inherit}@keyframes skillButtonPulse{0%{box-shadow:0 0 #0000}50%{box-shadow:0 0 24px #00000029}to{box-shadow:0 0 #0000}}@keyframes skillBarFill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes panelSoftOpen{0%{opacity:0;transform:translateY(-.6rem)}to{opacity:1;transform:translateY(0)}}.section{min-height:var(--section-min-height);border-top:1px solid var(--color-line);align-items:center;padding:clamp(3rem,7vh,6rem) 0;display:flex}.skills-section{align-items:flex-start}.section__inner{width:min(var(--max-width), calc(100% - (var(--space-page) * 2)));margin:0 auto}.section--alt{background:var(--color-bg-light)}@media (width<=600px){.section{padding-top:4rem;padding-bottom:4rem}.cards{grid-template-columns:1fr}}.header{z-index:100;min-height:var(--header-height);padding:1rem var(--space-page);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#eeeeeee6;justify-content:space-between;align-items:center;gap:1.5rem;display:flex;position:sticky;top:0}.nav{align-items:center;gap:clamp(1rem,3vw,2rem);font-weight:600;display:flex}.nav a{font-size:clamp(.95rem,1.4vw,1rem);position:relative}.nav a:after{content:"";background:var(--color-text);width:0;height:2px;transition:width .25s;position:absolute;bottom:-6px;left:0}.nav a:hover:after{width:100%}.nav-toggle{border:2px solid var(--color-text);cursor:pointer;background:0 0;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:44px;height:44px;padding:0;display:none}.nav-toggle span{background:var(--color-text);width:18px;height:2px;transition:transform .25s,opacity .25s;display:block}.nav-toggle.is-open span:first-child{transform:translateY(6px)rotate(45deg)}.nav-toggle.is-open span:nth-child(2){opacity:0}.nav-toggle.is-open span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}.nav__cv{border:2px solid var(--color-text);background:var(--color-accent);color:var(--color-text);font-family:var(--font-code);transition:background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);border-radius:999px;padding:.55rem 1rem;font-weight:700;line-height:1}.nav__cv:hover{background:var(--color-text);color:var(--color-bg);transform:translateY(-2px)}.nav__cv:after{display:none}@media (width<=600px){.header{padding-top:.8rem;padding-bottom:.8rem}.nav-toggle{display:flex}.nav{top:calc(var(--header-height) + .75rem);right:var(--space-page);left:var(--space-page);border:2px solid var(--color-text);background:var(--color-bg-light);border-radius:1.2rem;flex-direction:column;align-items:stretch;gap:0;padding:.75rem;display:none;position:fixed;box-shadow:0 20px 60px #00000024}.nav.is-open{display:flex}.nav a,.nav__cv{border-radius:.8rem;align-items:center;min-height:48px;padding:.9rem 1rem;display:flex}.nav a:hover{background:var(--color-bg)}.nav a:after{display:none}}.footer{width:min(var(--max-width), calc(100% - (var(--space-page) * 2)));font-family:var(--font-code);justify-content:space-between;align-items:center;gap:1.5rem;margin:0 auto;padding:2rem 0;display:flex}.footer p{margin:0}.footer__legal{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:.9rem;font-size:.9rem;display:flex}.footer__legal a{position:relative}.footer__legal a:after{content:"";background:var(--color-text);width:0;height:1px;transition:width .25s;position:absolute;bottom:-4px;left:0}.footer__legal a:hover{color:var(--color-text)}.footer__legal a:hover:after{width:100%}@media (width<=600px){.footer{align-items:flex-start}.footer__legal{flex-direction:column;align-items:flex-start;gap:.6rem;width:100%}}@media (width<=420px){.footer{flex-direction:column}}.card{border:2px solid var(--color-text);border-radius:var(--radius-lg);background:var(--color-bg);padding:clamp(1.4rem,4vw,2rem)}.card h3{font-family:var(--font-code);margin:0 0 1rem;font-size:clamp(1.15rem,2vw,1.35rem);line-height:1.2}.card p{color:var(--color-muted);margin:0;line-height:1.65}@media (width<=420px){.card{border-radius:1rem}}.hero{min-height:calc(100vh - var(--header-height));min-height:var(--section-min-height);width:min(var(--max-width), calc(100% - (var(--space-page) * 2)));grid-template-columns:minmax(0,1.05fr) minmax(240px,.95fr);grid-template-areas:"intro avatar""content avatar";align-content:center;align-items:center;gap:clamp(1.5rem,5vw,3rem) clamp(2rem,7vw,5rem);margin:0 auto;padding:clamp(2rem,6vh,5rem) 0;display:grid}.hero__intro{grid-area:intro;align-self:end}.hero__content{grid-area:content;align-self:start;max-width:620px}.hero__avatar{grid-area:avatar;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.hero__avatar img{object-fit:contain;width:100%;max-width:none;height:100%;max-height:none}.hero__eyebrow{margin:0 0 1rem;font-size:clamp(1rem,2vw,1.15rem);font-weight:600}.hero__title{color:var(--color-accent);font-family:var(--font-code);letter-spacing:-.08em;margin:0;font-size:clamp(4rem,10vw,7rem);line-height:.88}.hero__title span{color:var(--color-text)}.hero__description{max-width:620px;font-family:var(--font-code);margin:clamp(1.8rem,5vw,2.5rem) 0 5rem;font-size:clamp(.98rem,1.8vw,1.1rem);line-height:1.65}.hero__button{border:2px solid var(--color-text);background:var(--color-accent);width:fit-content;min-height:44px;color:var(--color-text);font-family:var(--font-code);letter-spacing:.18em;transition:background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);border-radius:999px;justify-content:center;align-items:center;padding:.8rem 1.2rem;font-weight:700;display:inline-flex}.hero__button:hover{background:var(--color-text);color:var(--color-bg);transform:translateY(-3px)}@media (width<=1024px){.hero{grid-template-columns:minmax(0,1fr) minmax(220px,.8fr)}}@media (width<=600px){.hero{text-align:left;grid-template-columns:1fr;grid-template-areas:"intro""avatar""content";row-gap:0;min-height:auto;padding-top:2rem;padding-bottom:4rem}.hero__intro,.hero__content{align-self:auto}.hero__content{max-width:100%}.hero__avatar{width:100vw;height:auto;margin-top:-5rem;margin-right:calc(var(--space-page) * -1);margin-bottom:-5rem;margin-left:calc(var(--space-page) * -1)}.hero__avatar img{object-fit:contain;width:min(100vw,430px);max-width:none;height:auto;max-height:none}.hero__title{font-size:clamp(3.4rem,18vw,5rem)}.hero__description{margin:0 0 1.5rem;font-size:.98rem}}@media (width<=420px){.hero__title{letter-spacing:-.09em}}@media (width>=1400px){.hero__avatar img{width:460px}}.skills{gap:2rem;display:grid}.skills-tabs{grid-template-columns:repeat(6,minmax(0,1fr));gap:1rem;display:grid}.skills-tab{border:2px solid var(--color-text);border-radius:var(--radius-lg);background:var(--color-bg);min-height:72px;color:var(--color-text);font-family:var(--font-code);cursor:pointer;padding:1rem;font-weight:700;line-height:1.2;transition-property:background-color,color,transform,box-shadow;transition-duration:1.2s,1.2s,.25s,1.2s;transition-timing-function:ease;animation:2.6s ease-in-out infinite skillButtonPulse}.skills-tab:hover,.skills-tab.is-active{background:var(--color-text);color:var(--color-bg);animation:none;transform:translateY(-4px);box-shadow:0 18px 40px #0000002e}.skills-tab.is-closing{animation:none}.skills-panels{display:grid}.skills-panel{border:2px solid var(--color-text);border-radius:var(--radius-lg);background:var(--color-bg-light);padding:clamp(1.4rem,4vw,2rem);display:none}.skills-panel.is-active{display:block}.skills-panel.is-opening{animation:.45s both panelSoftOpen}.skills-panel h3{border-bottom:1px solid var(--color-line);font-family:var(--font-code);margin:0 0 1.5rem;padding-bottom:1rem;font-size:clamp(1.4rem,3vw,2rem)}.skills-list{grid-template-columns:1fr;gap:1rem;margin:0;padding:0;list-style:none;display:grid}.skill-item{--skill-bar-color:var(--skill-color-default);align-items:center;gap:1.2rem;min-width:0;display:flex}.skill-name{min-width:0;font-family:var(--font-code);flex:0 0 clamp(145px,42%,210px);align-items:center;gap:1.1rem;font-size:clamp(1rem,1.5vw,1.2rem);font-weight:700;line-height:1.2;display:flex}.skill-name span{overflow-wrap:anywhere;min-width:0}.skill-icon{border:2px solid var(--color-text);background:var(--color-bg);object-fit:contain;border-radius:1rem;flex:0 0 56px;justify-content:center;align-items:center;width:56px;height:56px;padding:.55rem;display:inline-flex}.skill-icon svg{width:100%;height:100%;display:block}.skill-level{border:2px solid var(--color-text);background:var(--color-bg);border-radius:999px;flex:auto;min-width:80px;height:14px;overflow:hidden}.skill-level span{width:var(--level);background:var(--skill-bar-color);transform-origin:0;border-radius:999px;height:100%;display:block}.skills-panel.is-opening .skill-level span{animation:2.1s both skillBarFill}.skill-item[data-color=html]{--skill-bar-color:var(--skill-color-html)}.skill-item[data-color=css]{--skill-bar-color:var(--skill-color-css)}.skill-item[data-color=js]{--skill-bar-color:var(--skill-color-js)}.skill-item[data-color=python]{--skill-bar-color:var(--skill-color-python)}.skill-item[data-color=java]{--skill-bar-color:var(--skill-color-java)}.skill-item[data-color=cpp]{--skill-bar-color:var(--skill-color-cpp)}.skill-item[data-color=sqlite]{--skill-bar-color:var(--skill-color-sqlite)}.skill-item[data-color=git]{--skill-bar-color:var(--skill-color-git)}.skill-item[data-color=ultralyrics]{--skill-bar-color:var(--skill-color-ultralyrics)}.skill-item[data-color=deepstream]{--skill-bar-color:var(--skill-color-deepstream)}.skill-item[data-color=gstreamer]{--skill-bar-color:var(--skill-color-gstreamer)}.skill-item[data-color=onnx]{--skill-bar-color:var(--skill-color-onnx)}.skill-item[data-color=linux]{--skill-bar-color:var(--skill-color-linux)}.skill-item[data-color=docker]{--skill-bar-color:var(--skill-color-docker)}.skill-item[data-color=cloudflare]{--skill-bar-color:var(--skill-color-cloudflare)}.skill-item[data-color=redis]{--skill-bar-color:var(--skill-color-redis)}.skill-item[data-color=bash]{--skill-bar-color:var(--skill-color-bash)}.skill-item[data-color=nodejs]{--skill-bar-color:var(--skill-color-nodejs)}.skill-item[data-color=homeassistant]{--skill-bar-color:var(--skill-color-homeassistant)}.skill-item[data-color=mqtt]{--skill-bar-color:var(--skill-color-mqtt)}.skill-item[data-color=zigbee2mqtt]{--skill-bar-color:var(--skill-color-zigbee2mqtt)}.skill-item[data-color=zigbee]{--skill-bar-color:var(--skill-color-zigbee)}.skill-item[data-color=claude]{--skill-bar-color:var(--skill-color-claude)}.skill-item[data-color=figma]{--skill-bar-color:var(--skill-color-figma)}.skill-item[data-color=mongodb]{--skill-bar-color:var(--skill-color-mongodb)}.skill-item[data-color=netlify]{--skill-bar-color:var(--skill-color-netlify)}.skill-item[data-color=json]{--skill-bar-color:var(--skill-color-json)}.skill-item[data-color=marlin]{--skill-bar-color:var(--skill-color-marlin)}.skill-item[data-color=onshape]{--skill-bar-color:var(--skill-color-onshape)}.skill-item[data-color=prusaslicer]{--skill-bar-color:var(--skill-color-prusaslicer)}@media (width>=768px){.skills-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem 2rem}}@media (width<=600px){.skills{gap:1rem}.skills-tabs{grid-template-columns:1fr}.skills-panels{display:none}.skills-tab{width:100%}.skill-item{flex-direction:column;align-items:stretch;gap:.8rem}.skill-name{flex-basis:auto;width:100%;font-size:1rem}.skill-icon{flex-basis:52px;width:52px;height:52px}.skill-level{width:100%;min-width:0;height:13px}.skills-section{align-items:flex-start}}@media (width<=420px){.skills-panel,.skills-tab{border-radius:1rem}}.project-list{gap:1.2rem;display:grid}.project{border:2px solid var(--color-text);border-radius:var(--radius-lg);background:var(--color-bg);cursor:pointer;grid-template-columns:120px 220px minmax(0,1fr);align-items:start;gap:1.5rem;padding:clamp(1.4rem,4vw,2rem);transition-property:background-color,color,transform,box-shadow;transition-duration:1.2s,1.2s,.25s,1.2s;transition-timing-function:ease;display:grid}.project h3{font-family:var(--font-code);margin:0 0 1rem;font-size:clamp(1.15rem,2vw,1.35rem);line-height:1.2}.project p{color:var(--color-muted);margin:0;line-height:1.65}.project:hover,.project.is-active{background:var(--color-text);color:var(--color-bg);transform:translateY(-4px);box-shadow:0 18px 40px #0000002e}.project:hover p,.project.is-active p{color:var(--color-bg)}.project:hover .project__tag,.project.is-active .project__tag{border-color:var(--color-bg)}.project p,.project__tag{transition:color 1.2s,border-color 1.2s}.project__tag{border:1px solid var(--color-text);width:fit-content;font-family:var(--font-code);white-space:nowrap;border-radius:999px;padding:.4rem .8rem;font-size:.85rem}.project-detail{border:2px solid var(--color-text);border-radius:var(--radius-lg);background:var(--color-bg);padding:clamp(1.4rem,4vw,2rem);display:none}.project-detail.is-active{display:block}.project-detail.is-opening{animation:.45s both panelSoftOpen}.project-detail h3{border-bottom:1px solid var(--color-line);font-family:var(--font-code);margin:0 0 1.5rem;padding-bottom:1rem;font-size:clamp(1.35rem,3vw,2rem);line-height:1.15}.project-detail h4{font-family:var(--font-code);margin:0 0 1rem;font-size:1.1rem}.project-detail p{color:var(--color-muted);margin:0 0 1rem;line-height:1.75}.project-detail ul{color:var(--color-muted);margin:0;padding-left:1.2rem;line-height:1.7}.project-detail__grid{gap:2rem;margin-top:2rem;display:grid}.project-detail__tags{flex-wrap:wrap;gap:.7rem;margin:0;padding-left:0;list-style:none;display:flex}.project-detail__tags li{border:1px solid var(--color-text);background:var(--color-bg-light);color:var(--color-text);font-family:var(--font-code);border-radius:999px;padding:.45rem .75rem;font-size:.85rem}@media (width<=1024px){.project{grid-template-columns:110px 190px minmax(0,1fr)}}@media (width>=768px){.project-detail__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=600px){.project{grid-template-columns:1fr;gap:1rem}.project-detail__tags{grid-template-columns:1fr;display:grid}}@media (width<=420px){.project,.project-detail{border-radius:1rem}}.contact{text-align:center}.contact__text{max-width:560px;font-family:var(--font-code);margin:0 auto 2rem;font-size:clamp(1rem,2vw,1.2rem);line-height:1.6}.contact__links{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.contact__links a{border:2px solid var(--color-text);min-height:44px;font-family:var(--font-code);transition:background var(--transition-fast), color var(--transition-fast);border-radius:999px;justify-content:center;align-items:center;padding:.9rem 1.3rem;font-weight:700;display:inline-flex}.contact__links a:hover{background:var(--color-text);color:var(--color-bg)}.contact__cv{background:var(--color-accent);color:var(--color-text)}.contact__cv:hover{background:var(--color-text);color:var(--color-bg)}@media (width<=600px){.contact__links{flex-direction:column;align-items:stretch}.contact__links a{width:100%}}.cookie-banner{right:var(--space-page);bottom:var(--space-page);left:var(--space-page);z-index:9998;display:none;position:fixed}.cookie-banner.is-visible{display:block}.cookie-banner__content{border:2px solid var(--color-text);border-radius:var(--radius-lg);background:var(--color-bg-light);width:min(720px,100%);margin-left:auto;padding:clamp(1.2rem,4vw,1.6rem);box-shadow:0 20px 60px #0003}.cookie-banner__title{font-family:var(--font-code);margin:0 0 .6rem;font-size:1.1rem;font-weight:700}.cookie-banner__text{color:var(--color-muted);margin:0;line-height:1.6}.cookie-banner__text a{color:var(--color-text);text-underline-offset:4px;font-weight:700;text-decoration:underline}.cookie-banner__actions{flex-wrap:wrap;justify-content:flex-end;gap:.8rem;margin-top:1rem;display:flex}.cookie-banner__button{border:2px solid var(--color-text);min-height:44px;font-family:var(--font-code);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);border-radius:999px;padding:.75rem 1.1rem;font-weight:700}.cookie-banner__button:hover{transform:translateY(-2px)}.cookie-banner__button--secondary{color:var(--color-text);background:0 0}.cookie-banner__button--secondary:hover{background:var(--color-text);color:var(--color-bg)}.cookie-banner__button--primary{background:var(--color-accent);color:var(--color-text)}.cookie-banner__button--primary:hover{background:var(--color-text);color:var(--color-bg)}@media (width<=600px){.cookie-banner__actions{flex-direction:column-reverse}.cookie-banner__button{width:100%}}.logo{font-family:var(--font-code);white-space:nowrap;align-items:center;gap:.7rem;font-weight:700;display:flex}.logo__icon{object-fit:contain;border-radius:.35rem;width:clamp(1.5rem,3vw,1.9rem);height:clamp(1.5rem,3vw,1.9rem)}.logo__text{font-size:clamp(1rem,2vw,1.15rem)}@media (width<=420px){.logo__text{display:none}}.section__number{color:var(--color-muted);font-family:var(--font-code);margin:0 0 .5rem}.section__title{font-family:var(--font-code);letter-spacing:-.06em;margin:0 0 clamp(2rem,5vw,3rem);font-size:clamp(2.5rem,8vw,5rem);line-height:.95}@media (width<=600px){.section__title{font-size:clamp(2.4rem,15vw,4rem)}}.orientation-lock{display:none}@media (width<=950px) and (height<=520px) and (orientation:landscape){body{overflow:hidden}.orientation-lock{z-index:9999;background:var(--color-bg);color:var(--color-text);text-align:center;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.orientation-lock__content{max-width:420px;font-family:var(--font-code)}.orientation-lock__icon{margin:0 0 1rem;font-size:4rem;line-height:1}.orientation-lock__title{margin:0 0 .8rem;font-size:2rem;font-weight:700}.orientation-lock__text{color:var(--color-muted);margin:0;line-height:1.6}}.to-top{border:2px solid var(--color-text);width:54px;height:54px;color:var(--color-text);cursor:pointer;appearance:none;background:0 0;border-radius:50%;flex:0 0 54px;justify-content:center;align-items:center;padding:0;font-size:1.6rem;line-height:1;display:inline-flex}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.skills-tab,.project,.project p,.project__tag{transition-duration:1s}.skills-panel.is-opening,.project-detail.is-opening{animation-duration:.2s}.skills-panel.is-opening .skill-level span{animation:none}}
