.project-link-container{filter:grayscale();margin-bottom:24px;transition:filter .3s;display:block}.project-link-container--animating{filter:grayscale(0%)}.project-link-text{display:block}.project-link-text .section__item,.project-link-text .section__item small{transition:none}.project-link-text:hover .section__item{transition:all .15s ease-out}.project-link-text:hover .section__item small{transition:transform .2s}.project-link-text:active{filter:grayscale(0%);transition:filter .3s}.project-link-text:active .section__item{transition:all .15s ease-out}.project-link-text:active .section__item small{transition:transform .2s}.expandable-project-link .section__item:active{-webkit-user-select:none;user-select:none}.expandable-project-content{opacity:1;will-change:max-height,opacity;max-height:1000px;transition:max-height .3s cubic-bezier(.33,1,.68,1),opacity .15s .15s;overflow:hidden}.expandable-project-content-collapsing{opacity:0;will-change:max-height,opacity;max-height:0;transition:max-height .3s cubic-bezier(.33,1,.68,1),opacity .15s .15s}.code-block,.shell-block{font-family:var(--font-mono);-webkit-user-select:none;user-select:none;margin-left:calc(var(--grid-size)/3);box-sizing:border-box;min-width:0;margin-right:auto;line-height:1.6;position:relative;overflow:auto hidden}.code-block{background-color:var(--code-background);margin-top:4px;padding:8px 32px}@media (max-width:768px){.code-block{padding:8px 16px}.shell-block{padding:12px}}.code-block:active,.code-block-animating{-webkit-user-select:none;user-select:none}.code-block-colored{opacity:.75;filter:grayscale()}.code-block-colored.code-block-hovered{opacity:1;filter:grayscale(0%);transition:opacity .3s,filter .7s}.code-line{font-family:var(--font-mono);will-change:transform,opacity;white-space:pre;min-height:1.6em;font-size:.7rem;position:relative}.code-line-encoded{color:#8996a3;width:100%;display:block;position:absolute;top:0;left:0}.code-line-hidden{opacity:0;visibility:hidden}.code-line-visible{opacity:1;visibility:visible;animation:.2s ease-out slideUpLine}.code-line-gray{color:#8996a3;transition:opacity .6s ease-out;display:block}.code-line-gray-hidden{opacity:0;pointer-events:none}.code-line-colored{opacity:0;width:100%;transition:opacity .4s;display:block;position:absolute;top:0;left:0}.code-line-colored-visible{opacity:1}.code-text-gray{color:#8996a3;transition:color .4s}.code-block-colored .code-text-gray{color:var(--sh-identifier)}.code-cursor{color:var(--sh-keyword);margin-left:2px;animation:1s infinite blink;display:inline-block}@keyframes slideUpLine{0%{transform:translateY(8px)}to{transform:translateY(0)}}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}@keyframes fadeInColor{0%{opacity:.2;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.codice-wrapper{margin-top:8px;margin-left:calc(var(--grid-size)/3);background-color:var(--code-background);max-width:400px;box-shadow:none;border-radius:4px;flex-direction:row;align-items:stretch;gap:0;margin-right:auto;padding:4px 10px;display:flex;position:relative;overflow:hidden}.codice-code-block{font-family:var(--font-mono);color:#111827;box-shadow:none;background:0 0;border-right:1px solid #a9b5c54d;flex-direction:column;flex:1.2;padding:4px 4px 8px;font-size:.6rem;line-height:1.5;transition:transform .26s cubic-bezier(.16,1,.3,1),box-shadow .26s cubic-bezier(.16,1,.3,1),border-color .2s,background-color .2s;display:flex;position:relative;transform:translateY(0)}.codice-code-line{white-space:pre;font-family:var(--font-mono);align-items:baseline;display:flex}.codice-code-header{color:#6b7280;justify-content:flex-start;align-items:center;margin-bottom:4px;font-size:.65rem;display:flex}.codice-code-filename{color:#9ca3af}.codice-code-body{margin-top:2px}.codice-code-lineno{text-align:right;color:#6b7280;-webkit-user-select:none;user-select:none;width:2ch;margin-left:-6px;margin-right:6px}.codice-code-text{color:#111827}.codice-code-text [class*=--keyword]{color:#7f8288!important;font-weight:700!important}.codice-code-text [class*=sh__]:not([class*=--keyword]){color:#111827!important}.codice-code-block:hover{box-shadow:none;transform:translateY(0)}.codice-preview{box-shadow:none;background:0 0;border:none;border-radius:0;flex-direction:column;flex:1;padding:4px 4px 8px;display:flex}.codice-preview-header{font-family:var(--font-mono);color:#9ca3af;margin-bottom:4px;font-size:.65rem}.codice-preview-body{flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.codice-preview-svg{transform-origin:50%;width:100%;max-width:120px;height:auto;transition:transform .22s cubic-bezier(.16,1,.3,1);display:block}.codice-wrapper--hovered .codice-preview-svg{transform:translateY(-2px)scale(1.03)}.codice-dot{filter:grayscale();transition:filter .3s}.codice-wrapper--hovered .codice-dot-1{filter:grayscale(0%);animation:1.2s ease-in-out infinite codice-bounce-1}.codice-wrapper--hovered .codice-dot-2{filter:grayscale(0%);animation:1.4s ease-in-out infinite codice-bounce-2}.codice-wrapper--hovered .codice-dot-3{filter:grayscale(0%);animation:1.1s ease-in-out infinite codice-bounce-3}.codice-wrapper--hovered .codice-dot-4{filter:grayscale(0%);animation:1.3s ease-in-out infinite codice-bounce-4}.codice-wrapper--hovered .codice-dot-5{filter:grayscale(0%);animation:1.5s ease-in-out infinite codice-bounce-5}.codice-code-bars{align-items:center;gap:2px;margin-right:8px;display:flex}.codice-code-bar{background:#d1d5db;border-radius:999px;width:6px;height:6px}@keyframes codice-bounce-1{0%,to{transform:translate(0)}50%{transform:translate(3px,-8px)}}@keyframes codice-bounce-2{0%,to{transform:translate(0)}50%{transform:translate(-4px,-6px)}}@keyframes codice-bounce-3{0%,to{transform:translate(0)}50%{transform:translate(5px,-7px)}}@keyframes codice-bounce-4{0%,to{transform:translate(0)}50%{transform:translate(-3px,-5px)}}@keyframes codice-bounce-5{0%,to{transform:translate(0)}50%{transform:translate(4px,-6px)}}@media (max-width:768px){.codice-wrapper{margin-left:0}}.shell-block{cursor:inherit;color:#1e1e1e;background-color:#fff;border:1px solid #e0e0e07d;border-radius:6px;margin-top:12px;padding:12px;font-size:.7rem}.shell-comment{color:#8996a3}.shell-block:active{-webkit-user-select:none;user-select:none}.shell-content{white-space:pre}.shell-line{white-space:pre;min-height:1.6em}.shell-prompt{color:#0060aa99;width:15ch;font-weight:700;display:inline-block}.shell-line-indent{width:15ch;font-weight:700;display:inline-block}.shell-ready .shell-line{color:#1e1e1e}.respinner-wrapper{margin-top:10px;margin-left:calc(var(--grid-size)/3);justify-content:center;align-items:center;min-height:80px;margin-right:auto;padding:16px;display:flex}.respinner-spinners{filter:grayscale();justify-content:center;align-items:center;gap:32px;transition:filter .3s;display:flex;transform:translate(-8px)}.respinner-wrapper--hovered .respinner-spinners{filter:grayscale(0%)}.respinner-spinner{flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.respinner-spinner svg{width:100%;height:100%;display:block}.respinner-spinner svg,.respinner-spinner svg *{animation-play-state:paused}.respinner-wrapper--hovered .respinner-spinner svg,.respinner-wrapper--hovered .respinner-spinner svg *{animation-play-state:running}@keyframes respinner-dot-bounce{0%,80%,to{opacity:.5;transform:scale(.8)}40%{opacity:1;transform:scale(1.2)}}@keyframes respinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes respinner-wave{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}@media (max-width:768px){.respinner-wrapper{margin-left:0}.respinner-spinners{gap:24px}}
.vaso-demo{justify-content:center;align-items:center;width:180px;height:64px;margin:0 auto;display:flex;position:relative}.vaso-demo__base{text-align:center;background:radial-gradient(circle at 30% 20%,#f5b14b,#d88627 65%,#b56816 90%);border-radius:12px;width:40px;height:16px;font-size:12px;line-height:16px;transition:all .5s;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 4px 30px #00000026,0 0 0 1px #ffffff40}.vaso-demo--active .vaso-demo__base{background:radial-gradient(circle at 30% 20%,#ffdca5,#f5b14b 55%,#e09034 90%)}.vaso-demo__glass{pointer-events:none;border-radius:50%;width:48px;height:48px;transition:all .6s cubic-bezier(.33,1,.68,1);position:absolute;top:50%;left:25%;overflow:hidden;transform:translate(-50%,-50%)}.vaso-demo__glass>*{width:100%;height:100%;display:block}.vaso-demo--active .vaso-demo__glass{transform:translate(50%,-50%)}
