:root{--navBarHeight:100px;--shadowColor:rgba(255,0,0,.7);--hightlightColor:#2bb3cd}@media (max-width:470px){:root{--navBarHeight:80px}}.intro{--stage-h:calc(100vh - var(--navBarHeight) - var(--footerHeight));position:relative;height:calc(var(--stage-h) * 2.4)}.intro__stage{position:-webkit-sticky;position:sticky;top:0;height:var(--stage-h);overflow:hidden;container-type:size}.intro__canvas{--stripe-h:76cqh;--stripe-w:calc(var(--stripe-h) * 0.1764);--stripe-top:10cqh;--gap:min(56px,6cqw);--text-w:min(max(460px,60cqh),calc(100cqw - var(--stripe-w) - var(--gap) - 40px));--stripe-x:calc(50cqw - (var(--stripe-w) + var(--gap) + var(--text-w)) / 2);--center-shift:calc(50cqw - var(--stripe-w) / 2 - var(--stripe-x));--text-y:calc(var(--stripe-top) + var(--stripe-h) * 0.49);--roller-w:calc(var(--stripe-w) / 0.766);--roller-h:calc(var(--roller-w) * 0.97);--paint-x:calc(var(--roller-w) * 0.56);--paint-y:calc(var(--roller-h) * 0.26);position:absolute;inset:0}.intro__stripe{position:absolute;z-index:1;top:var(--stripe-top);left:var(--stripe-x);width:var(--stripe-w);height:var(--stripe-h);background:url(/images/intro/stripe.webp) 50%/100% 100% no-repeat}.intro__text{position:absolute;top:var(--text-y);left:calc(var(--stripe-x) + var(--stripe-w) + var(--gap));width:var(--text-w);translate:0 -50%;text-align:left}.window-content .intro__title{display:flex;flex-direction:column;margin:0;font-size:min(76px,calc(var(--text-w) / 7.2));font-weight:800;line-height:1.04;letter-spacing:-.01em;color:#fff}.intro__title-accent{color:#2bb3cd}.window-content .intro__lead{width:auto;margin:20px 0 0;font-size:min(1.2rem,calc(var(--text-w) / 16));line-height:1.65;color:#c7c7c7;text-align:left}.intro__lead b{color:#fff}.intro__roller{position:absolute;z-index:2;top:0;left:0;width:var(--roller-w);height:var(--roller-h);transform-origin:var(--paint-x) var(--paint-y);background:url(/images/intro/roller.webp) 50%/100% 100% no-repeat}.window-content .intro__hint{position:absolute;top:var(--text-y);left:0;display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;margin:0;translate:0 -50%;font-size:.85rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#adadad}.intro__chevron{width:14px;height:14px;border-right:2px solid;border-bottom:2px solid;rotate:45deg;animation:intro-nudge 1.6s ease-in-out infinite}@keyframes intro-nudge{50%{translate:0 6px}}.intro__anchor{position:absolute;top:calc(100% - var(--stage-h) + 20px);left:0}.intro__hint,.intro__lead,.intro__roller,.intro__stripe,.intro__title-line{animation-duration:1s;animation-timing-function:linear;animation-fill-mode:both;animation-play-state:paused;animation-delay:calc(var(--intro-progress, 0) * -1s)}.intro__stripe{animation-name:intro-stripe}.intro__roller{animation-name:intro-roller}.intro__hint{animation-name:intro-hint}.intro__title-line{display:block;animation-name:intro-title}.intro__title-accent{animation-name:intro-title-2}.intro__lead{animation-name:intro-lead}@supports (animation-timeline:view()){.intro{view-timeline:--intro block}.intro__hint,.intro__lead,.intro__roller,.intro__stripe,.intro__title-line{animation-duration:auto;animation-delay:0s;animation-play-state:running;animation-timeline:--intro;animation-range:contain 0 contain 100%}}@keyframes intro-hint{0%{opacity:1}5%,to{opacity:0}}@keyframes intro-stripe{0%,4%{-webkit-clip-path:inset(100% 0 0 0);clip-path:inset(100% 0 0 0);transform:translateX(var(--center-shift))}56%{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}62%{transform:translateX(var(--center-shift));animation-timing-function:ease-in-out}74%,to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);transform:translateX(0)}}@keyframes intro-roller{0%,4%{transform:translate(calc(50cqw - var(--paint-x)),calc(var(--stripe-top) + var(--stripe-h) - var(--paint-y))) rotate(0deg) scale(1)}56%{opacity:1;transform:translate(calc(50cqw - var(--paint-x)),calc(var(--stripe-top) - var(--paint-y))) rotate(0deg) scale(1);animation-timing-function:ease-in}64%,to{opacity:0;transform:translate(calc(50cqw - var(--paint-x)),calc(var(--stripe-top) - var(--paint-y) - 14cqh)) rotate(-10deg) scale(1.2)}}@keyframes intro-title{0%,71%{opacity:0;transform:translateX(-32px);animation-timing-function:ease-out}81%,to{opacity:1;transform:translateX(0)}}@keyframes intro-title-2{0%,74%{opacity:0;transform:translateX(-32px);animation-timing-function:ease-out}84%,to{opacity:1;transform:translateX(0)}}@keyframes intro-lead{0%,79%{opacity:0;transform:translateX(-24px);animation-timing-function:ease-out}93%,to{opacity:1;transform:translateX(0)}}@media (prefers-reduced-motion:reduce){.intro{height:auto}.intro__stage{position:relative}.intro__lead,.intro__stripe,.intro__title-line{animation:none}.intro__hint,.intro__roller{display:none}}#libraries-main,#papers-main,#projects-main{background:#191919;border-radius:7px;color:#c7c7c7;width:100%;margin:0 10px;padding:10px;border:3px solid var(--hightlightColor)}#libraries-main h2,#papers-main h2,#projects-main h2{font-size:2em;margin-top:0}#libraries,#papers,#projects{display:flex;flex-wrap:wrap;align-items:stretch;text-align:center;margin:20px;scroll-margin-top:20px;scroll-snap-margin-top:20px}.library,.project{background:#191919;padding:20px;margin:10px;flex-grow:1;border-radius:7px;color:#c7c7c7;width:max(20%,300px)}.library .icon,.project .icon{width:100px;height:100px;display:block;margin:20px auto}.library a,.project a{text-decoration:none;color:var(--hightlightColor)}.library.is-clickable,.project.is-clickable{position:relative;cursor:pointer;transition:background .2s ease,box-shadow .2s ease,transform .2s ease}.library.is-clickable:hover,.project.is-clickable:hover{background:#202020;box-shadow:inset 0 0 0 1px #2bb3cd;transform:translateY(-2px)}.is-clickable a.card-link{color:inherit}.is-clickable a.card-link:after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit}.is-clickable a.card-link:focus-visible{outline:none}.is-clickable a.card-link:focus-visible:after{outline:2px solid #6fd6ea;outline-offset:2px}.is-clickable p a{position:relative;z-index:2}.card-arrow{position:absolute;top:14px;right:16px;font-size:18px;line-height:1;color:var(--hightlightColor);opacity:.6;transition:opacity .2s ease,transform .2s ease}.is-clickable:hover .card-arrow{opacity:1;transform:translate(2px,-2px)}