﻿@font-face{font-family:"IBMPlexSans";src:local("IBMPlexSans"),url("font/IBMPlexSans-Regular.woff2");font-display:swap}@font-face{font-family:"IBMPlexSans";src:local("IBMPlexSans-Italic"),url("font/IBMPlexSans-Italic.woff2");font-style:italic;font-display:swap}@font-face{font-family:"IBMPlexSans";src:local("IBMPlexSans-Bold"),url("font/IBMPlexSans-Bold.woff2");font-weight:bold;font-display:swap}@font-face{font-family:"IBMPlexMono";src:local("IBM Plex Mono"),local("IBM-Plex-Mono"),local("IBMPlexMono"),local("IBM-Plex-Mono-Regular"),local("IBMPlexMono-Regular"),url("font/IBMPlexMono-Regular.woff2");font-display:swap}@font-face{font-family:"IBMPlexMono";src:local("IBM Plex Mono Italic"),local("IBM-Plex-Mono-Italic"),local("IBMPlexMono-Italic"),url("font/IBMPlexMono-Italic.woff2");font-style:italic;font-display:swap}*,*::before,*::after{box-sizing:border-box}body{min-height:100%;font-family:var(--main-font);background-color:var(--bg-color);color:var(--text-color)}html{scroll-behavior:smooth}button:focus-visible,a:focus-visible{outline:var(--primary-color) solid 3px}::selection{background-color:var(--primary-color);color:var(--bg-color)}@media screen and (min-width: 425px){body::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:rgba(0,0,0,0)}::-webkit-scrollbar-thumb{background:rgba(174,183,202,.631372549);border-radius:0px}::-webkit-scrollbar-thumb:hover{background:rgba(138,144,161,.631372549)}}.prose h1{font-size:1.4em;font-weight:bolder;margin:1em 0 .5em 0}.prose h2{font-size:1.25em;padding-top:65px;margin-top:-45px}.prose h3{font-size:1.1em;padding-top:65px;margin-top:-45px}.prose h4{font-size:1.05em;margin:30px 0 15px 0}.prose .zola-anchor{visibility:hidden;margin-left:.75em;font-size:.85em}.prose h1:hover a.zola-anchor,.prose h2:hover a.zola-anchor,.prose h3:hover a.zola-anchor,.prose h4:hover a.zola-anchor,.prose h5:hover a.zola-anchor,.prose h6:hover a.zola-anchor{visibility:visible}.prose p{font-size:var(--paragraph-font-size);line-height:inherit;hyphens:auto}.prose a{color:var(--primary-color);text-decoration:none;border-bottom:1px solid var(--primary-color)}.prose a:hover{text-decoration-color:var(--primary-color)}@media (max-width: 425px){.prose a{text-decoration-color:unset;text-decoration-thickness:auto}}.prose .youtube iframe{border-style:none;width:100%;height:480px;overflow:hidden}.prose .twitter{display:block;max-width:100%}.prose img{display:block;max-width:100%;height:auto;margin:0 auto;background-color:var(--bg-color);border-radius:var(--img-border-radius)}.prose figure{background-color:var(--bg-color);margin:0 auto;max-width:100%;overflow:hidden;border-radius:var(--img-border-radius)}.prose figcaption{text-align:center;padding-top:5px;font-size:.9em}.prose blockquote{border-left:3px var(--primary-pale-color) solid;padding-left:16px;margin:0 0 24px 0;color:var(--text-pale-color)}.prose ul li::marker{color:var(--primary-color);font-size:1.5em}.prose ul li{list-style-type:"‣";padding-left:.5em;margin-left:0;margin-bottom:0}.prose ul li li{list-style-type:"•";margin-bottom:0}.prose hr{border:none;background-color:var(--primary-pale-color);height:3px;margin:36px 0}.prose table{width:100%;border-spacing:0;border:1px solid var(--primary-pale-color)}.prose thead{background-color:var(--primary-pale-color)}.prose th,.prose td{line-height:2;text-align:center;border:1px solid var(--primary-pale-color);padding:1px 10px}.prose p>code,.prose li>code,.prose td>code,.prose th>code{font-family:var(--code-font);font-size:.9em;padding:1px 6px;margin:0 2px;color:var(--inline-code-color);background-color:var(--primary-pale-color);border-radius:var(--inline-code-border-radius)}.prose pre{font-size:.8em;margin:1.25em 0;padding:12px 48px 12px 16px;line-height:1.5;border:1.5px solid var(--primary-color);overflow:auto}.prose pre code{font-family:var(--code-font)}.prose pre[data-linenos]{padding:12px 48px 12px 8px}.prose pre table{width:100%;border-collapse:collapse;border:none}.prose pre table th,.prose pre table td{line-height:1.5}.prose pre table tr td:first-of-type{color:var(--text-pale-color)}.prose pre table td{padding:0;padding-right:48px;text-align:initial;border:initial}.prose pre table td:nth-of-type(1){text-align:right;user-select:none;padding-right:1em}.prose pre table td:nth-of-type(1) mark::before{left:-8px;width:calc(100% + 1em + 8px)}.prose pre mark{display:block;color:inherit;background-color:rgba(0,0,0,0);position:relative;overflow:visible}.prose pre mark::before{pointer-events:none;content:"";position:absolute;top:0;bottom:0;width:calc(100% + 48px + 48px);background-color:var(--highlight-mark-color)}.prose pre.mermaid{border:none}.prose pre>code>mark::before{width:calc(100% + 48px + 16px);left:-16px}.prose .codeblock{margin:1em 0;position:relative;overflow:auto}.prose .codeblock pre{margin:0}.prose .codeblock .copy{z-index:1;position:absolute;right:.6em;top:.6em;width:24px;height:24px;padding:2px;cursor:pointer;background:rgba(0,0,0,0);border:none;color:var(--text-pale-color)}.prose .codeblock .copy.copied,.prose .codeblock .copy:hover{color:var(--primary-color)}.prose .codeblock .copy svg{width:20px;height:20px}.prose .codeblock-with-filename{margin-top:calc(0px - 1.2em - 24px - 1em - 1.5px)}.prose .codeblock-with-filename .filename{z-index:1;position:relative;top:calc(1.2em + 24px + 1em + 1.5px);padding:12px 16px;line-height:1.2;color:var(--text-pale-color);border-bottom:1.5px solid var(--primary-pale-color)}.prose .codeblock-with-filename pre>code{display:inline-block;min-width:100%;margin-top:3.2em}.prose .footnote-definition{display:flex}.prose .footnote-definition .footnote-definition-label{position:static;font-size:1em;line-height:inherit;vertical-align:auto;margin-right:.5em}.prose .footnote-definition .footnote-definition-label::before{content:"["}.prose .footnote-definition .footnote-definition-label::after{content:"]"}.prose .footnote-definition p{margin:0}.prose .footnote-definition button.backlink{border:none;background:none;display:flex;align-items:center;margin-left:.5em;color:var(--primary-color);cursor:pointer}.prose .callout{line-height:inherit;margin-bottom:20px;border:1.5px solid var(--primary-color);padding:6px 12px;display:flex;gap:12px}.prose .callout .icon{height:1.75em;display:flex;align-items:center}.prose .callout .content p{margin:0}.prose .callout .content p+p{margin:.2em 0 .5em}.prose .callout.note{color:var(--callout-note-color);border-color:var(--callout-note-color)}.prose .callout.important{color:var(--callout-important-color);border-color:var(--callout-important-color)}.prose .callout.warning{color:var(--callout-warning-color);border-color:var(--callout-warning-color)}.prose .callout.alert{color:var(--callout-alert-color);border-color:var(--callout-alert-color)}.prose .callout.question{color:var(--callout-question-color);border-color:var(--callout-question-color)}.prose .callout.tip{color:var(--callout-tip-color);border-color:var(--callout-tip-color)}body.prose-page main{font-size:var(--paragraph-font-size);min-height:100vh;padding-top:45px;margin:0 auto;max-width:var(--main-max-width);display:flex;flex-direction:column;justify-content:space-between}body.prose-page article{padding:45px 15px 30px;font-size:var(--paragraph-font-size);line-height:var(--paragraph-line-height)}body.prose-page .giscus{padding:0 15px}.layout-list .category{font-size:1.3em;margin:2em 15px 1em}.layout-list .post-list{margin-top:25px}.layout-list .post{font-size:1.2em;display:flex;justify-content:space-between;align-items:flex-end;gap:5px;padding:6px 15px;margin:1px 0;border-radius:2px;text-decoration:none;color:var(--primary-color);-webkit-tap-highlight-color:rgba(0,0,0,0)}.layout-list .post:hover{background-color:var(--primary-pale-color)}@media (max-width: 768px){.layout-list .post{font-size:1em;margin:2.5px 5px;padding:5px 10px}}.layout-list .post .date{white-space:nowrap}body.homepage{position:relative;overflow-x:hidden;}body.homepage::before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at 20% 80%, rgba(57,255,20,.05) 0%, rgba(0,0,0,0) 50%),radial-gradient(circle at 80% 20%, rgba(57,255,20,.05) 0%, rgba(0,0,0,0) 50%),radial-gradient(circle at 40% 40%, rgba(57,255,20,.03) 0%, rgba(0,0,0,0) 50%);animation:backgroundPulse 8s ease-in-out infinite alternate;z-index:-1;pointer-events:none}body.homepage #wrapper{width:100%;min-height:100vh;display:flex;justify-content:center;align-items:center;position:relative}body.homepage main{width:100%;max-width:var(--homepage-max-width);padding:45px 15px 30px}body.homepage #info{padding:0 15px;display:flex;align-items:flex-start;gap:1.5em;}body.homepage #info .terminal-window{flex:1;min-width:0}body.homepage #info .avatar-container{flex-shrink:0;display:flex;flex-direction:column;align-items:center}body.homepage #info .terminal-avatar{height:var(--avatar-size);width:var(--avatar-size);object-fit:cover;border:2px solid var(--primary-color);border-radius:0;box-shadow:0 0 15px var(--primary-color)}body.homepage #info .social-icons{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:20px}body.homepage #info .social-icons a{width:24px;height:24px;color:var(--text-color);transition:all .3s ease;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:6px}body.homepage #info .social-icons a:hover{color:var(--primary-color);background-color:var(--primary-pale-color);transform:translateY(-3px) scale(1.1);box-shadow:0 0 15px var(--primary-color),0 0 30px rgba(57,255,20,.3),0 4px 15px rgba(0,0,0,.2);text-shadow:0 0 10px var(--primary-color);animation:socialPulse .3s ease-out;position:relative}body.homepage #info .social-icons a:hover::before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:radial-gradient(circle, rgba(57,255,20,.3) 0%, rgba(0,0,0,0) 70%);border-radius:50%;transform:translate(-50%, -50%);animation:socialRipple .4s ease-out;pointer-events:none;z-index:-1}body.homepage #info .social-icons a:active{transform:translateY(-1px) scale(1.05);box-shadow:0 0 10px var(--primary-color),0 0 20px rgba(57,255,20,.4),0 2px 8px rgba(0,0,0,.3)}body.homepage #info .social-icons a:active::before{animation:socialPress .2s ease-out}body.homepage #info .social-icons a svg{width:20px;height:20px}body.homepage #info img:not(.terminal-avatar){height:var(--avatar-size);border-radius:50%}body.homepage #info #text{font-size:1.2em;display:flex;flex-direction:column;justify-content:space-around}body.homepage #info #bio{font-size:.85em}@media (max-width: 768px){body.homepage #info{flex-direction:column;align-items:center;text-align:center}body.homepage #info .terminal-window{order:2;width:100%}body.homepage #info .avatar-container{order:1}body.homepage #info .avatar-container .terminal-avatar{width:120px;height:120px}body.homepage #info .avatar-container .social-icons{margin-top:16px;gap:14px}body.homepage #info .avatar-container .social-icons a{width:22px;height:22px}body.homepage #info .avatar-container .social-icons a svg{width:18px;height:18px}}body.homepage #links{padding:0 15px;margin:0 0 2em 0;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.8em 1.5em;font-size:var(--paragraph-font-size);}body.homepage #links a,body.homepage #links button{text-decoration:none;color:var(--text-color)}body.homepage #links a:hover,body.homepage #links button:hover{color:var(--primary-color)}body.homepage #links #left{display:flex;flex-wrap:wrap;gap:1em}body.homepage #links #left a{border-bottom:1.5px solid var(--primary-color);line-height:24px;text-decoration:none;color:var(--text-color);transition:color .3s ease}body.homepage #links #left a:hover{color:var(--primary-color)}body.homepage #links.homepage #left{display:flex;gap:12px}body.homepage #links.homepage #left a{position:relative;padding:18px 24px 18px 24px;background:linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 100%);border:2px solid var(--primary-color);border-bottom:4px solid var(--primary-color);border-radius:10px 10px 0 0;font-weight:600;font-size:.95em;font-family:var(--code-font);line-height:1.1;transition:all .2s ease;text-transform:lowercase;letter-spacing:.4px;color:var(--primary-color);box-shadow:inset 0 2px 0 rgba(255,255,255,.15),0 4px 8px rgba(0,0,0,.4),0 0 0 1px rgba(34,197,94,.4);cursor:pointer;user-select:none;min-width:120px;text-align:center;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1.1em;letter-spacing:.3px;line-height:1.2;}body.homepage #links.homepage #left a::after{content:"";position:absolute;top:2px;left:50%;transform:translateX(-50%);width:80%;height:1px;background:linear-gradient(90deg, rgba(0,0,0,0), var(--primary-color), rgba(0,0,0,0));opacity:.6}body.homepage #links.homepage #left a:hover{background:linear-gradient(135deg, #2d2d2d 0%, #404040 100%);border-bottom-color:var(--primary-color);box-shadow:inset 0 2px 0 rgba(255,255,255,.25),0 6px 12px rgba(0,0,0,.5),0 0 0 2px var(--primary-color),0 0 25px rgba(57,255,20,.6),0 0 50px rgba(57,255,20,.3);transform:translateY(-3px) scale(1.02);padding:19px 25px 17px 25px;text-shadow:0 0 10px var(--primary-color);cursor:pointer;animation:tabPulse .3s ease-out}body.homepage #links.homepage #left a:hover::after{opacity:1;height:2px;background:linear-gradient(90deg, rgba(0,0,0,0), var(--primary-color), var(--primary-color), rgba(0,0,0,0))}body.homepage #links.homepage #left a:hover::before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:radial-gradient(circle, rgba(57,255,20,.4) 0%, rgba(0,0,0,0) 70%);border-radius:50%;transform:translate(-50%, -50%);animation:clickRipple .6s ease-out;pointer-events:none;z-index:-1}body.homepage #links.homepage #left a:active{background:linear-gradient(135deg, #0d1117 0%, #1a1a1a 100%);transform:translateY(2px) scale(.98);box-shadow:inset 0 4px 8px rgba(0,0,0,.8),inset 0 0 20px rgba(57,255,20,.2),0 1px 3px rgba(0,0,0,.3),0 0 0 2px var(--primary-color),0 0 15px rgba(57,255,20,.8);border-bottom-width:2px;padding:20px 24px 16px 24px;text-shadow:0 0 15px var(--primary-color)}body.homepage #links.homepage #left a:active::after{height:3px;opacity:1;background:linear-gradient(90deg, rgba(0,0,0,0), var(--primary-color), var(--primary-color), rgba(0,0,0,0));box-shadow:0 0 10px var(--primary-color)}body.homepage #links.homepage #left a:active::before{animation:clickPress .2s ease-out}body.homepage #links.homepage #left a:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}body.homepage #links #right{display:flex;gap:10px;margin-left:auto}body.homepage #links #right a,body.homepage #links #right button{width:20px;height:20px;padding:0;border:none;background-color:rgba(0,0,0,0);cursor:pointer}@media (max-width: 768px){body.homepage #links{}body.homepage #links #info{flex-direction:column;align-items:center;text-align:center}body.homepage #links #info .terminal-window{order:2;width:100%}body.homepage #links #info .terminal-avatar{order:1;width:120px;height:120px}body.homepage #links.homepage .terminal-window{font-size:.9em}body.homepage #links.homepage .terminal-content{padding:.8em}body.homepage #links.homepage #left a{padding:16px 18px 16px 18px;font-size:.9em;min-width:100px}body.homepage #links.homepage #left a:hover{padding:17px 19px 15px 19px;animation:tabPulse .3s ease-out;box-shadow:inset 0 2px 0 rgba(255,255,255,.25),0 4px 8px rgba(0,0,0,.4),0 0 0 2px var(--primary-color),0 0 20px rgba(57,255,20,.5),0 0 40px rgba(57,255,20,.2)}body.homepage #links.homepage #left a:hover::before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:radial-gradient(circle, rgba(57,255,20,.4) 0%, rgba(0,0,0,0) 70%);border-radius:50%;transform:translate(-50%, -50%);animation:clickRipple .6s ease-out;pointer-events:none;z-index:-1}body.homepage #links.homepage #left a:active{padding:18px 18px 14px 18px;transform:scale(.98);box-shadow:inset 0 4px 8px rgba(0,0,0,.8),inset 0 0 15px rgba(57,255,20,.2),0 1px 3px rgba(0,0,0,.3),0 0 0 2px var(--primary-color),0 0 12px rgba(57,255,20,.7)}body.homepage #links.homepage #left a:active::before{animation:clickPress .2s ease-out}}@media (max-width: 425px){body.homepage #links{}body.homepage #links #left{gap:.75em;justify-content:center}body.homepage #links #left a{padding:6px 12px;font-size:.9em}body.homepage #links.homepage #left{gap:1px}body.homepage #links.homepage #left a{padding:16px 20px 14px 20px;font-size:.95em;border-radius:8px 8px 0 0;min-width:70px}body.homepage #links.homepage #left a:hover{transform:translateY(-2px);padding:17px 21px 13px 21px;animation:tabPulse .3s ease-out;box-shadow:inset 0 2px 0 rgba(255,255,255,.25),0 3px 6px rgba(0,0,0,.4),0 0 0 1px var(--primary-color),0 0 15px rgba(57,255,20,.4)}body.homepage #links.homepage #left a:hover::before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:radial-gradient(circle, rgba(57,255,20,.3) 0%, rgba(0,0,0,0) 70%);border-radius:50%;transform:translate(-50%, -50%);animation:clickRipple .5s ease-out;pointer-events:none;z-index:-1}body.homepage #links.homepage #left a:active{padding:18px 20px 12px 20px;transform:scale(.98);box-shadow:inset 0 3px 6px rgba(0,0,0,.7),inset 0 0 10px rgba(57,255,20,.15),0 1px 2px rgba(0,0,0,.3),0 0 0 1px var(--primary-color),0 0 8px rgba(57,255,20,.6)}body.homepage #links.homepage #left a:active::before{animation:clickPress .15s ease-out}body.homepage #links.homepage #left a::before{content:"●";margin-right:6px;font-size:.7em}}@media (max-width: 425px) and (max-width: 320px){body.homepage #links #left{flex-direction:column;align-items:center;width:100%}body.homepage #links #left a{width:100%;text-align:center;max-width:200px}}body.homepage #brief{padding:0 15px;font-size:1.15em;line-height:1.5}body.homepage.homepage .terminal-window{background:var(--bg-color);border:2px solid var(--primary-color);border-radius:0;margin-bottom:1em;font-family:var(--code-font);box-shadow:0 0 20px rgba(57,255,20,.3),0 0 40px rgba(57,255,20,.15),0 0 60px rgba(57,255,20,.05),inset 0 0 20px rgba(57,255,20,.05);position:relative;overflow:hidden;transform:perspective(1000px) rotateX(0deg);transition:all .3s ease;}body.homepage.homepage .terminal-window:hover{transform:perspective(1000px) rotateX(1deg) translateY(-2px);box-shadow:0 0 30px rgba(57,255,20,.4),0 0 60px rgba(57,255,20,.2),0 0 100px rgba(57,255,20,.08),inset 0 0 30px rgba(57,255,20,.08)}body.homepage.homepage .terminal-window::before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg, rgba(0,0,0,0), rgba(57,255,20,.15), rgba(57,255,20,.3), rgba(57,255,20,.15), rgba(0,0,0,0));animation:scan 4s linear infinite;z-index:1;pointer-events:none}body.homepage.homepage .terminal-window::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(rgba(0,0,0,0) 50%, rgba(57,255,20,.03) 50%);background-size:100% 4px;z-index:2;pointer-events:none;opacity:.5}@keyframes scan{0%{left:-100%}100%{left:100%}}body.homepage.homepage .terminal-header{background:var(--primary-color);color:var(--bg-color);padding:8px 12px;display:flex;align-items:center;gap:8px;font-size:.9em;font-weight:bold}body.homepage.homepage .terminal-button{width:12px;height:12px;border-radius:50%;display:inline-block}body.homepage.homepage .terminal-button.close{background:#ff5f57}body.homepage.homepage .terminal-button.minimize{background:#ffbd2e}body.homepage.homepage .terminal-button.maximize{background:#28ca42}body.homepage.homepage .terminal-title{margin-left:auto;font-size:.85em}body.homepage.homepage .terminal-content{padding:1em;background:var(--bg-color);position:relative;z-index:3}body.homepage.homepage .terminal-line{margin-bottom:.5em;font-family:var(--code-font);opacity:0;animation:typeIn .3s ease-in-out forwards}body.homepage.homepage .terminal-line:nth-child(1){animation-delay:.3s}body.homepage.homepage .terminal-line:nth-child(3){animation-delay:2.5s}body.homepage.homepage .terminal-line:nth-child(5){animation-delay:5s}body.homepage.homepage .prompt{color:var(--primary-color);font-weight:bold;margin-right:8px;text-shadow:0 0 10px var(--primary-color)}body.homepage.homepage .command{color:var(--primary-color);text-shadow:0 0 8px var(--primary-color);animation:textGlow 2s ease-in-out infinite alternate}body.homepage.homepage .output{color:var(--text-color);margin:.5em 0 1em 0;padding-left:1em;line-height:1.4;opacity:0;animation:fadeInUp .4s ease-out forwards}body.homepage.homepage .output:nth-of-type(1){animation-delay:1.1s}body.homepage.homepage .output:nth-of-type(2){animation-delay:3.8s}body.homepage.homepage .cursor{color:var(--primary-color);animation:blink 1s infinite,cursorGlow 2s ease-in-out infinite alternate;text-shadow:0 0 15px var(--primary-color)}@keyframes blink{0%, 50%{opacity:1}51%, 100%{opacity:0}}@keyframes typeIn{0%{opacity:0;transform:translateX(-10px)}100%{opacity:1;transform:translateX(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}@keyframes textGlow{0%{text-shadow:0 0 8px var(--primary-color)}100%{text-shadow:0 0 15px var(--primary-color),0 0 25px var(--primary-color)}}@keyframes cursorGlow{0%{text-shadow:0 0 15px var(--primary-color)}100%{text-shadow:0 0 25px var(--primary-color),0 0 35px var(--primary-color)}}body.homepage .terminal-avatar{border:3px solid var(--primary-color);border-radius:0;box-shadow:0 0 20px var(--primary-color),0 0 40px rgba(57,255,20,.3),0 0 60px rgba(57,255,20,.1),inset 0 0 20px rgba(57,255,20,.1);transition:all .3s ease;animation:avatarPulse 3s ease-in-out infinite alternate}body.homepage .terminal-avatar:hover{transform:scale(1.05) rotateZ(1deg);box-shadow:0 0 30px var(--primary-color),0 0 60px rgba(57,255,20,.4),0 0 100px rgba(57,255,20,.2),inset 0 0 30px rgba(57,255,20,.15)}@keyframes avatarPulse{0%{box-shadow:0 0 20px var(--primary-color),0 0 40px rgba(57,255,20,.3),0 0 60px rgba(57,255,20,.1)}100%{box-shadow:0 0 25px var(--primary-color),0 0 50px rgba(57,255,20,.4),0 0 80px rgba(57,255,20,.15)}}@keyframes backgroundPulse{0%{opacity:.3;transform:scale(1)}100%{opacity:.6;transform:scale(1.05)}}@keyframes tabPulse{0%{transform:translateY(-3px) scale(1.02)}50%{transform:translateY(-4px) scale(1.05)}100%{transform:translateY(-3px) scale(1.02)}}@keyframes clickRipple{0%{width:0;height:0;opacity:.8}50%{width:100px;height:100px;opacity:.4}100%{width:150px;height:150px;opacity:0}}@keyframes clickPress{0%{width:0;height:0;opacity:1}100%{width:200px;height:200px;opacity:0}}@keyframes socialPulse{0%{transform:translateY(-3px) scale(1.1)}50%{transform:translateY(-4px) scale(1.15)}100%{transform:translateY(-3px) scale(1.1)}}@keyframes socialRipple{0%{width:0;height:0;opacity:.6}50%{width:40px;height:40px;opacity:.3}100%{width:60px;height:60px;opacity:0}}@keyframes socialPress{0%{width:0;height:0;opacity:.8}100%{width:80px;height:80px;opacity:0}}header{z-index:99;position:fixed;top:0;width:100%;height:40px;background-color:var(--bg-color);}@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none){header.blur{background-color:initial;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}}header #header-wrapper{height:100%;max-width:var(--main-max-width);margin:0 auto;padding:0 15px;display:flex;justify-content:space-between;align-items:center;position:relative}header nav{font-size:1.1em;display:flex;align-items:center;gap:.5em}header nav a{color:var(--text-color);text-decoration:none}header nav a:hover{color:var(--primary-color)}header nav .separator{width:.75em;text-align:left;line-height:1;cursor:pointer;border:none;padding:0;background:rgba(0,0,0,0);margin:0 0 0 .1em;color:var(--text-color);-webkit-tap-highlight-color:rgba(0,0,0,0)}header nav .wrap.left{margin:0 .3em 0 -.1em}header nav .wrap.right{margin:0 0 0 .3em}header nav .wrap-separator{margin:0 .5em 0 .1em}header nav .fold{display:none}header nav .fold.shown{display:initial}header #btns{display:flex;gap:10px;align-items:center;padding-top:1.5px}header #btns a,header #btns button{width:20px;height:20px;border:none;background-color:rgba(0,0,0,0);padding:0;text-decoration:none;color:var(--text-color);cursor:pointer}@media (hover: hover){header #btns a:hover,header #btns button:hover{color:var(--primary-color)}}header #toc-toggle{display:none}@media (max-width: 1024px){header #toc-toggle{display:inline-block}header #toc-toggle.active{color:var(--primary-color)}}header #snippets-nav-toggle{display:none}@media (max-width: 1199px){header #snippets-nav-toggle{display:inline-block}header #snippets-nav-toggle.active{color:var(--primary-color)}}body.gallery #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between;position:relative}body.gallery main{margin:60px 0;padding:0 15px}.layout-gallery{max-width:1200px;margin:0 auto}.layout-gallery .gallery-intro{margin-bottom:2em;text-align:center}.layout-album{padding:0 15px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));gap:2em;margin-bottom:2em}.gallery-album-card{background:var(--bg-color);border-radius:8px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.1);transition:transform .3s ease,box-shadow .3s ease}.gallery-album-card:hover{transform:translateY(-4px);box-shadow:0 4px 16px rgba(0,0,0,.15)}.gallery-album-card .album-link{display:block;color:inherit;text-decoration:none}.gallery-album-card .album-cover{position:relative;aspect-ratio:16/9;overflow:hidden}.gallery-album-card .album-cover img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.gallery-album-card .album-cover:hover img{transform:scale(1.05)}.gallery-album-card .album-cover .album-overlay{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(rgba(0,0,0,0), rgba(0,0,0,.8));color:#fff;padding:2em 1em 1em}.gallery-album-card .album-cover .album-overlay .album-title{margin:0;font-size:1.2em;font-weight:600}.gallery-album-card .album-cover .album-overlay .album-count{font-size:.9em;opacity:.9}.gallery-album-card .album-placeholder{aspect-ratio:16/9;background:var(--primary-pale-color);display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-pale-color)}.gallery-album-card .album-placeholder .album-title{margin:0;font-size:1.2em;font-weight:600}.gallery-album-card .album-placeholder .album-count{font-size:.9em;margin-top:.5em}.gallery-album-card .album-description{padding:1em;margin:0;font-size:.9em;color:var(--text-pale-color);line-height:1.4}.gallery-album-card .album-date{display:block;padding:0 1em 1em;font-size:.8em;color:var(--text-pale-color)}body.gallery-album #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.gallery-album main{margin:60px 0}.layout-album .album-header{text-align:center;margin-bottom:2em}.layout-album .album-header h1{font-size:1.5em;font-weight:600;margin-bottom:.5em;color:var(--text-color)}.layout-album .album-header .album-description{font-size:1.1em;color:var(--text-pale-color);line-height:1.5;margin-bottom:1em}.layout-album .album-header .album-date{color:var(--text-pale-color);font-size:.9em}.layout-album .album-content{margin-bottom:2em;line-height:1.6;text-align:center}.image-gallery{display:grid;grid-template-columns:repeat(auto-fill, minmax(250px, 1fr));gap:1.5em;margin-bottom:2em;max-width:1200px;margin:0 auto 2em}.gallery-item{margin:0;background:var(--bg-color);border-radius:8px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.1);transition:transform .3s ease,box-shadow .3s ease}.gallery-item:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.15)}.gallery-item .gallery-link{display:block}.gallery-item .gallery-link img{width:100%;height:200px;object-fit:cover;transition:transform .3s ease}.gallery-item .gallery-link:hover img{transform:scale(1.02)}.gallery-item figcaption{padding:1em;font-size:.9em;color:var(--text-pale-color);line-height:1.4}.album-nav{text-align:center;margin-top:3em}.album-nav .back-link{display:inline-flex;align-items:center;padding:.8em 1.5em;background:var(--primary-pale-color);color:var(--primary-color);text-decoration:none;border-radius:6px;font-weight:500;transition:all .3s ease}.album-nav .back-link:hover{background:var(--primary-color);color:var(--bg-color);transform:translateX(-4px)}.lightbox{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.9)}.lightbox .lightbox-content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);max-width:90%;max-height:90%;object-fit:contain}.lightbox .lightbox-close{position:absolute;top:20px;right:35px;color:#fff;font-size:40px;font-weight:bold;cursor:pointer;user-select:none}.lightbox .lightbox-close:hover{opacity:.7}.lightbox .lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:100%;display:flex;justify-content:space-between;padding:0 20px;pointer-events:none}.lightbox .lightbox-nav button{pointer-events:all;background:rgba(255,255,255,.2);border:none;color:#fff;font-size:24px;padding:10px 15px;border-radius:4px;cursor:pointer;transition:background .3s ease}.lightbox .lightbox-nav button:hover{background:rgba(255,255,255,.4)}@media (max-width: 768px){.gallery-grid{grid-template-columns:1fr;gap:1.5em}.image-gallery{grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:1em}.gallery-item img{height:150px}.lightbox-content{max-width:95%;max-height:85%}.lightbox-close{top:10px;right:20px;font-size:30px}}footer{font-size:.8rem;padding:0 15px;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:15px;color:var(--text-pale-color)}footer .copyright{margin-right:auto}footer .credits{display:block}footer a{color:var(--text-pale-color)}@media (max-width: 374px){footer{flex-direction:column;gap:0}footer .copyright,footer .credits{margin:0}}body.blog #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.blog main{margin:60px 0}body.post #wrapper{display:flex;justify-content:space-between;font-size:18px}body.post #blank{order:1;position:sticky;width:calc((100% - var(--main-max-width))/2)}body.post main{order:2;width:100%;margin:0 auto;padding-top:45px;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.post article{padding:0 15px 30px;font-size:var(--paragraph-font-size);line-height:var(--paragraph-line-height)}body.post article #post-info{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:1em}body.post article #date{color:var(--text-pale-color);margin-bottom:1em}body.post article #date #publish,body.post article #date #updated{margin-right:20px}body.post article #tags{margin-bottom:1em;display:flex;gap:1em;flex-wrap:wrap}body.post article #tags a{color:var(--primary-color);text-decoration:none}body.post article #tags a span{font-size:.95em;margin-right:2px}body.post article #outdate_alert.hidden{display:none}body.post .mermaid{background:#fff}body.post .giscus{padding:0 15px}body.post aside{order:3;width:calc((100% - var(--main-max-width))/2);position:sticky;margin-top:195px;top:60px;height:min-content;font-size:var(--aside-font-size)}body.post aside nav{padding:5px 15px 5px 2em;min-width:60%;overflow-y:auto;max-height:calc(100vh - 50px - 5em);scrollbar-width:none}body.post aside nav::-webkit-scrollbar{width:0}body.post aside nav:hover::-webkit-scrollbar{width:4px}body.post aside ul{list-style-type:none;padding:0;line-height:1.75em;margin:0}body.post aside a{text-decoration:none;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-pale-color);position:relative;padding:0 1em}body.post aside a.h3{padding-left:2.5em;font-size:.95em}body.post aside a::before{display:block;content:"";width:2px;position:absolute;top:.6em;bottom:.7em;left:0em;background:rgba(0,0,0,0)}body.post aside a:hover,body.post aside a.active{color:var(--primary-color)}body.post aside a:hover::before{background-color:var(--primary-color)}body.post aside #back-to-top{z-index:99;height:28px;padding:0;position:fixed;bottom:1.5em;margin-left:3em;color:var(--text-pale-color);background:rgba(0,0,0,0);border:none;cursor:pointer;transform:translateY(-5px) scale(0);transition:transform .2s}body.post aside #back-to-top svg{width:28px;height:28px}body.post aside #back-to-top.shown{transform:translateY(0px) scale(1)}body.post aside #back-to-top:hover{color:var(--primary-color)}@media screen and (max-width: 1024px){body.post aside{position:fixed;right:-100%;top:45px;margin-top:0;min-width:260px;height:100%;background-color:var(--bg-color);box-shadow:rgba(0,0,0,.08) -2px 8px 8px 0px}body.post aside.shown{right:0}body.post aside nav{padding:1em 0}body.post aside ul{padding-left:10px}body.post aside #back-to-top{display:none}@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none){body.post aside.blur{z-index:99;background-color:fade(var(--bg-color), 75%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}}body.post #blank{display:none}body.post main{margin:0 auto}}body.tag-list #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.tag-list main{margin:85px auto 60px}body.tag-list .title{width:min-content;font-size:1.3em;margin:0 auto}body.tag-list .tags{margin-top:40px;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;font-size:1.1em}body.tag-list .tags a{color:var(--primary-color);text-decoration:none;margin:2em}body.tag-single #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.tag-single main{width:100%;margin:85px auto 60px}body.tag-single .title{width:min-content;white-space:nowrap;color:var(--text-color);font-size:1.3em;margin:0 auto;margin-bottom:40px;padding:0 0 0 60px}body.tag-single .title a{margin-left:30px;font-size:.5em;color:var(--primary-color)}body.tag-single .post{display:flex;justify-content:space-between;align-items:flex-end;gap:5px;padding:6px 15px;margin:1px 0;border-radius:2px;font-size:1.1em;text-decoration:none;color:var(--primary-color);-webkit-tap-highlight-color:rgba(0,0,0,0)}body.tag-single .post:hover{background-color:var(--primary-pale-color)}body.tag-single .post .date{white-space:nowrap}@media screen and (max-width: 768px){body.tag-single .post{font-size:1em;margin:2.5px 5px;padding:5px 10px}}body.projects #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.projects main{width:100%;margin:90px auto 40px}body.projects .proj{margin:0px 15px 45px}body.projects .proj .name{font-size:1.1em;margin:0 0 15px 0;color:var(--primary-color)}body.projects .proj .desc{line-height:1.5;margin:0 0 10px 0}body.projects .proj .desc a{color:var(--primary-color);text-decoration:underline var(--primary-pale-color) 2px}body.projects .proj .desc a:hover{text-decoration-color:var(--primary-color)}body.projects .proj .desc p>code{font-family:var(--code-font);font-size:.8em;padding:1px 6px;color:var(--primary-color);background-color:var(--primary-pale-color);border-radius:4px}body.projects .proj .more{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1em}body.projects .proj .more .tags{font-size:.9em;display:flex;gap:.5em 1em;flex-wrap:wrap}body.projects .proj .more .tags div{color:var(--text-pale-color)}body.projects .proj .more .tags div span{font-size:.9em;margin-right:1.5px}body.projects .proj .more .links{margin-left:auto;display:flex;justify-content:end;gap:.5em 1em}body.projects .proj .more .links a{text-decoration:none;border-bottom:1px solid var(--primary-color);padding:0 2px;cursor:pointer;color:inherit}body.projects .proj .more .links a:visited{color:inherit}body.projects .proj .more .links a:hover{color:var(--primary-color)}body.not-found{height:100vh;height:100dvh;display:flex;justify-content:center;align-items:center}body.not-found .wrapper{display:flex;flex-direction:column;align-items:center;gap:3em}body.not-found .error{display:flex;align-items:center;font-size:2em;color:var(--text-pale-color)}body.not-found .spacer{background:var(--text-pale-color);width:2px;height:.75em;margin:0 .5em}body.not-found .text{font-size:.85em}body.not-found a{color:var(--primary-color);text-decoration-color:var(--primary-pale-color)}body.not-found a:hover,body.not-found a:active{text-decoration-color:var(--primary-color)}html{line-height:1.15;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;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{display:none}[hidden]{display:none}