.portfolio-page :is([class^=r-],[class*=\ r-]){width:auto;height:auto;position:static;inset:auto}.portfolio-page .header-ground,.portfolio-page .hero-ground,.portfolio-page .project-ground,.portfolio-page .about-ground{display:none}.portfolio-page{overflow:clip}.portfolio-top{position:relative}.portfolio-page .site-header{z-index:40;border-bottom:1px solid var(--color-line);background:#080808;align-items:center;gap:2rem;width:100%;min-height:5.5rem;padding:.9rem 6.45%;display:flex;position:fixed;top:0;left:0}.portfolio-page .brand{letter-spacing:-.04em;flex:none;font-size:clamp(1.6rem,2.5vw,2.2rem)}.portfolio-page .main-nav{align-items:center;gap:clamp(1rem,2.3vw,2.5rem);margin:0 0 0 auto;display:flex}.portfolio-page .main-nav a{padding:.4rem 0;font-size:clamp(.82rem,1.05vw,1rem);display:inline-flex}.portfolio-page .theme-toggle{flex:none;position:static}.portfolio-page .hero,.portfolio-page .project-feature,.portfolio-page .about-intro,.portfolio-page .stack-section,.portfolio-page .contact-section{scroll-margin-top:5.5rem}.portfolio-page .hero{background:var(--color-surface);min-height:100svh;padding:0;display:block;position:relative;overflow:visible}.portfolio-page .hero-stage{flex-direction:column;justify-content:center;align-items:flex-start;height:100svh;min-height:36rem;padding:8rem 6.45% 5rem;display:flex;position:sticky;top:0;overflow:hidden}.portfolio-page .hero-stage:after{content:"";background:var(--color-line);width:min(29vw,24rem);height:1px;position:absolute;bottom:4rem;right:6.45%}.portfolio-page .hero-fill-line{width:fit-content;max-width:100%;color:inherit;white-space:nowrap;padding:0;display:block;position:relative}.portfolio-page .hero-fill-overlay{white-space:nowrap;padding:0;display:none}.portfolio-page .hero-progress-track{display:none}html.has-scroll-motion .portfolio-page .hero{height:185svh}html.has-scroll-motion .portfolio-page .hero-name,html.has-scroll-motion .portfolio-page .hero-role{transform:translate3d(0,var(--hero-shift,0px),0)}html.has-scroll-motion .portfolio-page .hero-fill-line{color:#72797f}html.has-scroll-motion .portfolio-page .hero-fill-overlay{color:#e6e9eb;width:100%;clip-path:inset(0 calc(100% - var(--hero-name-fill,100%)) 0 0);pointer-events:none;display:block;position:absolute;inset:0;overflow:hidden}html.has-scroll-motion .portfolio-page .hero-fill-line--role .hero-fill-overlay{clip-path:inset(0 calc(100% - var(--hero-role-fill,100%)) 0 0)}html.has-scroll-motion .portfolio-page .hero-fill-line--specialty .hero-fill-overlay{clip-path:inset(0 calc(100% - var(--hero-specialty-fill,100%)) 0 0)}html.has-scroll-motion .portfolio-page .hero-progress-track{background:var(--color-line);width:min(29vw,24rem);height:2px;display:block;position:absolute;bottom:4rem;right:6.45%}html.has-scroll-motion .portfolio-page .hero-progress-track span{width:100%;height:100%;transform:scaleX(var(--hero-progress,0));transform-origin:0;background:#e6e9eb;display:block}html.has-scroll-motion .portfolio-page .hero-stage:after{display:none}.portfolio-page .hero-name{transform-origin:0;width:100%;margin:0;font-size:clamp(5.5rem,13vw,12rem);line-height:.95;transform:none}.portfolio-page .hero-role{white-space:normal;max-width:18ch;margin:1.5rem 0 0;font-size:clamp(2rem,4.4vw,5rem);line-height:1.14}.portfolio-page .hero-role .hero-fill-line--specialty{margin-top:.12em}.portfolio-page .primary-action{border-radius:9px;width:auto;min-height:3.7rem;margin-top:3.5rem;padding:1rem 1.35rem;font-size:1.05rem}.portfolio-page .text-action{margin-top:1.5rem;font-size:1.05rem}.portfolio-page .chapter-stage{position:relative}.portfolio-page .chapter-fill-line{color:inherit;display:block;position:relative}.portfolio-page .chapter-fill-overlay,.portfolio-page .chapter-progress-track{display:none}html.has-scroll-motion .portfolio-page .project-feature,html.has-scroll-motion .portfolio-page .about-intro,html.has-scroll-motion .portfolio-page .stack-section,html.has-scroll-motion .portfolio-page .contact-section{height:170svh}html.has-scroll-motion .portfolio-page .chapter-stage{height:100svh;position:sticky;top:0}html.has-scroll-motion .portfolio-page .chapter-fill-line{color:#72797f}html.has-scroll-motion .portfolio-page .chapter-fill-overlay{color:#e6e9eb;width:100%;clip-path:inset(0 calc(100% - var(--chapter-title-fill,0%)) 0 0);pointer-events:none;display:block;position:absolute;inset:0}html.has-scroll-motion .portfolio-page .chapter-progress-track{background:var(--color-line);width:min(29vw,24rem);height:2px;display:block;position:absolute;bottom:4rem;right:6.45%}html.has-scroll-motion .portfolio-page .chapter-progress-track span{width:100%;height:100%;transform:scaleX(var(--chapter-progress,0));transform-origin:0;background:#e6e9eb;display:block}html.has-scroll-motion .portfolio-page .project-stage .chapter-progress-track{bottom:2rem}@media (prefers-reduced-motion:no-preference){.portfolio-page .hero-name .hero-fill-line{animation:.7s cubic-bezier(.16,1,.3,1) 70ms both hero-ink-arrive}.portfolio-page .hero-fill-line--role{animation:.6s cubic-bezier(.16,1,.3,1) .23s both hero-ink-arrive}.portfolio-page .hero-fill-line--specialty{animation:.6s cubic-bezier(.16,1,.3,1) .39s both hero-ink-arrive}.portfolio-page .hero-stage>.primary-action{animation:.44s cubic-bezier(.16,1,.3,1) .62s both hero-action-arrive}.portfolio-page .hero-stage>.text-action{animation:.44s cubic-bezier(.16,1,.3,1) .72s both hero-action-arrive}@keyframes hero-ink-arrive{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes hero-action-arrive{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translate(0,0)}}}.portfolio-page .project-feature{background:var(--color-project);isolation:isolate;min-height:100svh;padding:0;position:relative}.portfolio-page .project-stage{flex-direction:column;justify-content:center;min-height:100svh;padding:7.5rem 6.45% 4rem;display:flex}.portfolio-page .projects-heading{letter-spacing:-.035em;flex:none;margin:0 0 1.4rem;font-size:clamp(3rem,5vw,5.5rem);line-height:1.05}.portfolio-page .project-deck{gap:1.5rem;width:100%;display:grid}.portfolio-page .project-card{border:1px solid var(--color-line);background:#0c0e0f;border-radius:16px;grid-template-columns:minmax(0,41%) minmax(0,1fr);align-items:center;gap:clamp(2rem,5vw,5rem);min-width:0;min-height:31rem;padding:clamp(1.5rem,2vw,2.25rem);display:grid}.portfolio-page .project-content{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.portfolio-page .project-visual{flex-direction:column;min-width:0;display:flex}.portfolio-page .project-title{letter-spacing:-.025em;white-space:normal;text-wrap:balance;max-width:17ch;margin:0 0 1.3rem;font-size:clamp(2.5rem,3.5vw,4.25rem);line-height:1.1}.portfolio-page .project-meta{white-space:normal;margin:.4rem 0;font-size:clamp(1rem,1.15vw,1.2rem);line-height:1.55}.portfolio-page .project-tech{flex-wrap:wrap;gap:.55rem;margin-top:1.7rem;display:flex}.portfolio-page .tech-chip{border-radius:8px;align-items:center;min-height:2.1rem;padding:.4rem .7rem;font-size:.85rem;display:inline-flex}.portfolio-page .github-action{margin-top:1.8rem;font-size:1.2rem}.portfolio-page .project-details-link{margin-top:1rem;font-size:1rem;display:inline-flex;position:static}.portfolio-page .diagram-caption{text-align:left;margin:0 0 1.2rem;font-size:.9rem}.portfolio-page .project-description{max-width:60ch;color:var(--color-copy);margin:0;font-size:1.25rem;line-height:1.6}.portfolio-page .project-card--soon{align-items:center;min-height:24rem;padding:clamp(2rem,5vw,5rem);display:flex;position:relative;overflow:hidden}.portfolio-page .project-card--soon h3{letter-spacing:-.035em;margin:0;font-size:clamp(3.5rem,8vw,8rem);line-height:1}.portfolio-page .project-card--soon p:last-child{color:var(--color-copy);margin:1.5rem 0 0;font-size:clamp(1rem,1.5vw,1.3rem)}@media (width>=1101px) and (height>=641px){html.has-scroll-motion .portfolio-page .project-feature{height:var(--project-scroll-height,290svh)}html.has-scroll-motion .portfolio-page .project-stage{overflow:hidden}html.has-scroll-motion .portfolio-page .project-deck{flex:1;min-height:0;position:relative;overflow:hidden}html.has-scroll-motion .portfolio-page .project-card{min-height:0;transform:translate3d(var(--project-card-x,0%), 0, 0);will-change:transform;position:absolute;inset:0}}.portfolio-page .diagram-layer{grid-template-rows:repeat(3,minmax(6.8rem,1fr));grid-template-columns:minmax(0,44%) minmax(0,12%) minmax(0,44%);gap:1.25rem 0;min-height:28rem;margin:0;display:grid;position:relative}.portfolio-page .diagram-layer:before{content:"";z-index:1;border-left:2px dashed var(--color-line);height:67%;position:absolute;top:16.5%;left:22%}.portfolio-page .diagram-node{z-index:2;border-radius:14px;min-width:0}.portfolio-page .diagram-icon,.portfolio-page .diagram-label{z-index:3;align-self:center}.portfolio-page .diagram-icon{justify-self:start;width:2.8rem;height:2.8rem;margin-left:1rem}.portfolio-page .diagram-label{min-width:0;margin-left:4.4rem;font-size:1.05rem}.portfolio-page .diagram-label strong{line-height:1.15}.portfolio-page .diagram-label small{margin-top:.3rem;font-size:.82em}.portfolio-page .r-node-vue,.portfolio-page .r-node-vue-icon,.portfolio-page .r-node-vue-label{grid-area:1/1}.portfolio-page .r-node-api,.portfolio-page .r-node-api-icon,.portfolio-page .r-node-api-label{grid-area:2/1}.portfolio-page .r-node-postgres,.portfolio-page .r-node-postgres-icon,.portfolio-page .r-node-postgres-label{grid-area:3/1}.portfolio-page .r-node-telegram,.portfolio-page .r-node-telegram-icon,.portfolio-page .r-node-telegram-label{grid-area:1/3}.portfolio-page .r-node-checks,.portfolio-page .r-node-checks-icon,.portfolio-page .r-node-checks-label{grid-area:3/3}.portfolio-page .diagram-connectors{z-index:1;position:absolute;inset:0}.portfolio-page .diagram-connectors .line{display:none}.portfolio-page .diagram-connectors:before,.portfolio-page .diagram-connectors:after{content:"";opacity:.72;border-color:currentColor;display:block;position:absolute}.portfolio-page .diagram-connectors:before{border-top:2px dashed;width:12%;top:50%;left:44%}.portfolio-page .diagram-connectors:after{border-left:2px dashed;height:67%;top:16.5%;left:56%}.portfolio-page .diagram-mobile{display:none}.portfolio-page .about-intro{background:var(--color-surface);min-height:78svh;position:relative}.portfolio-page .about-stage{flex-direction:column;justify-content:center;min-height:78svh;padding:8rem 6.45%;display:flex}.portfolio-page .about-title{margin:0;font-size:clamp(4rem,8vw,9rem);line-height:1}.portfolio-page .about-rule{transform-origin:0;width:100%;height:2px;margin:2rem 0}.portfolio-page .about-copy{max-width:30ch;margin:0;font-size:clamp(1.6rem,3vw,3.2rem);line-height:1.35}.portfolio-page .stack-section{border-top:1px solid var(--color-line);background:var(--color-surface);width:100%;min-height:100svh;margin:0;padding:0;overflow:visible}.portfolio-page .stack-stage{flex-direction:column;justify-content:center;min-height:100svh;padding:8rem 6.45%;display:flex}.portfolio-page .stack-switcher{margin-top:clamp(3rem,5vw,5.5rem)}.portfolio-page .contact-section{min-height:100svh;padding:0}.portfolio-page .contact-inner{flex-direction:column;justify-content:center;min-height:100svh;padding:8rem 0;display:flex}html.has-scroll-motion .portfolio-page .about-rule{transform:scaleX(var(--chapter-reveal-ratio,0))}html.has-scroll-motion .portfolio-page .about-copy,html.has-scroll-motion .portfolio-page .stack-tabs,html.has-scroll-motion .portfolio-page .contact-list{opacity:calc(.55 + var(--chapter-reveal-ratio,0) * .45)}html.has-scroll-motion .portfolio-page .stack-panel{opacity:var(--stack-content-opacity,1);transform:translate3d(0,var(--stack-content-lift,0px),0);animation:none}html.has-scroll-motion .portfolio-page .stack-section.is-interacted .stack-panel{opacity:1;transform:none}html[data-theme=light] .portfolio-page .site-header,html[data-theme=light] .portfolio-page .hero{background:#fbfbfb}html[data-theme=light].has-scroll-motion .portfolio-page .hero-fill-line{color:#6f8399}html[data-theme=light].has-scroll-motion .portfolio-page .hero-fill-overlay{color:#0b1428}html[data-theme=light].has-scroll-motion .portfolio-page .hero-progress-track span{background:#086af8}html[data-theme=light].has-scroll-motion .portfolio-page .chapter-fill-line{color:#6f8399}html[data-theme=light].has-scroll-motion .portfolio-page .chapter-fill-overlay{color:#0b1428}html[data-theme=light].has-scroll-motion .portfolio-page .chapter-progress-track span{background:#086af8}html[data-theme=light] .portfolio-page .project-feature{background:#eaf5fb}html[data-theme=light] .portfolio-page .project-card{background:#f8fbfd}html[data-theme=light] .portfolio-page .about-intro,html[data-theme=light] .portfolio-page .stack-section{background:#fbfbfb}@media (width<=1100px){.portfolio-page .site-header{min-height:6rem;padding-inline:6%}.portfolio-page .hero{min-height:100svh}.portfolio-page .hero-stage{padding:9rem 6% 5rem}.portfolio-page .hero-name{font-size:clamp(4.3rem,12vw,8rem)}.portfolio-page .hero-role{font-size:clamp(2rem,5.5vw,4rem)}html.has-scroll-motion .portfolio-page .project-feature{height:auto}html.has-scroll-motion .portfolio-page .project-stage{height:auto;position:relative}.portfolio-page .project-stage{min-height:auto;padding:8rem 6% 6rem;display:block}.portfolio-page .projects-heading{margin-bottom:1.5rem}.portfolio-page .project-card{grid-template-columns:1fr;min-height:0}.portfolio-page .project-card--soon{min-height:18rem}.portfolio-page .project-title{max-width:22ch;font-size:clamp(2.5rem,5vw,4rem)}.portfolio-page .diagram-caption{margin-top:4rem}.portfolio-page .diagram-layer{min-height:0;display:block}.portfolio-page .diagram-layer:before{display:none}html.has-scroll-motion .portfolio-page .diagram-layer{clip-path:none}.portfolio-page .diagram-layer>:not(.diagram-mobile){display:none!important}.portfolio-page .diagram-mobile{display:block}.portfolio-page .about-stage{min-height:70svh;padding-inline:6%}.portfolio-page .stack-stage{padding-inline:6%}}@media (width<=700px){.portfolio-page .hero,.portfolio-page .project-feature,.portfolio-page .about-intro,.portfolio-page .stack-section,.portfolio-page .contact-section{scroll-margin-top:8rem}.portfolio-page .site-header{min-height:8rem;padding:1rem 6%;display:block}.portfolio-page .brand{font-size:1.7rem}.portfolio-page .main-nav{justify-content:space-between;gap:.7rem;width:100%;margin:1.15rem 0 0}.portfolio-page .main-nav a{align-items:center;min-height:2.75rem;padding:.6rem 0;font-size:.82rem}.portfolio-page .theme-toggle{position:absolute;top:.7rem;right:6%}.portfolio-page .hero-stage{padding-top:9rem}html.has-scroll-motion .portfolio-page .hero{height:165svh}html.has-scroll-motion .portfolio-page .hero-progress-track{width:29vw;right:6%}html.has-scroll-motion .portfolio-page .chapter-progress-track{width:29vw;bottom:2rem;right:6%}html.has-scroll-motion .portfolio-page .contact-inner .chapter-progress-track{right:0}.portfolio-page .hero-name{font-size:clamp(4.1rem,14vw,6rem)}.portfolio-page .hero-role{font-size:clamp(1.75rem,7vw,3rem)}.portfolio-page .primary-action{margin-top:2.6rem}.portfolio-page .project-stage{padding-top:9rem}.portfolio-page .project-title{font-size:clamp(2.25rem,8vw,3.2rem)}.portfolio-page .about-stage{min-height:68svh;padding-block:7rem}.portfolio-page .about-title{font-size:clamp(3.4rem,12vw,5rem)}.portfolio-page .about-copy{font-size:clamp(1.35rem,5.4vw,2.2rem)}html.has-scroll-motion .portfolio-page .stack-section{height:auto}html.has-scroll-motion .portfolio-page .stack-stage{height:auto;position:relative}.portfolio-page .stack-stage{min-height:auto;padding-block:9rem 7rem}.portfolio-page .contact-inner{padding-block:7rem}}@media (width>=1101px) and (height>=641px) and (height<=800px){.portfolio-page .project-stage{padding-block:6rem 2.5rem}.portfolio-page .projects-heading{margin-bottom:1rem;font-size:clamp(2.5rem,4vw,3.8rem)}.portfolio-page .project-card{gap:2rem;padding:1.25rem}.portfolio-page .project-title{margin-bottom:.75rem;font-size:clamp(2rem,3vw,3rem)}.portfolio-page .project-meta{margin-block:.2rem}.portfolio-page .project-tech,.portfolio-page .github-action{margin-top:1rem}.portfolio-page .project-details-link{margin-top:.65rem}.portfolio-page .diagram-caption{margin-bottom:.7rem}.portfolio-page .diagram-layer{grid-template-rows:repeat(3,minmax(5.5rem,1fr));gap:.75rem 0;min-height:20rem}.portfolio-page .diagram-icon{width:2.3rem;height:2.3rem;margin-left:.7rem}.portfolio-page .diagram-label{margin-left:3.7rem;font-size:.95rem}}@media (width>=1101px) and (height<=640px){html.has-scroll-motion .portfolio-page .project-feature{height:auto}html.has-scroll-motion .portfolio-page .project-stage{height:auto;position:relative;overflow:visible}}@media (height<=600px){html.has-scroll-motion .portfolio-page .hero,html.has-scroll-motion .portfolio-page .project-feature,html.has-scroll-motion .portfolio-page .about-intro,html.has-scroll-motion .portfolio-page .stack-section,html.has-scroll-motion .portfolio-page .contact-section{height:auto}.portfolio-page .hero-stage,html.has-scroll-motion .portfolio-page .chapter-stage{height:auto;min-height:100svh;position:relative;overflow:visible}html.has-scroll-motion .portfolio-page .hero-fill-line,html.has-scroll-motion .portfolio-page .chapter-fill-line{color:var(--color-ink)!important}html.has-scroll-motion .portfolio-page .hero-fill-overlay,html.has-scroll-motion .portfolio-page .hero-progress-track,html.has-scroll-motion .portfolio-page .chapter-fill-overlay,html.has-scroll-motion .portfolio-page .chapter-progress-track{display:none}html.has-scroll-motion .portfolio-page .diagram-layer{clip-path:none}html.has-scroll-motion .portfolio-page .about-rule{transform:none}html.has-scroll-motion .portfolio-page .about-copy,html.has-scroll-motion .portfolio-page .stack-tabs,html.has-scroll-motion .portfolio-page .stack-panel,html.has-scroll-motion .portfolio-page .contact-list{opacity:1}}@media (prefers-reduced-motion:reduce){.portfolio-page [data-scroll-block] *,.portfolio-page [data-scroll-block]:before,.portfolio-page [data-scroll-block]:after{clip-path:none!important;opacity:1!important;transform:none!important}}
