summary::-webkit-details-marker{display:none}summary::marker{content:""}.home-bio-box{display:flex;flex-direction:row;justify-content:space-evenly;justify-items:center;align-items:center;margin:1rem auto;width:100%}.home-bio{display:flex;align-items:flex-start;flex-direction:column;text-align:left}.home-bio-img{border:var(--dim-color)1px solid!important;border-radius:100%!important;margin:0!important;width:180px!important;aspect-ratio:1/1;object-fit:cover}@media(max-width:768px){.home-bio-box{display:flex;flex-direction:column-reverse;gap:1rem}.home-bio p{text-align:center}.home-bio{display:flex;align-items:center;flex-direction:column;text-align:left}.home-bio-img{border:var(--dim-color)1px solid!important;border-radius:100%!important;margin:0!important;width:180px!important;aspect-ratio:1/1;object-fit:cover}}.callout{border-left:4px solid;padding:.6em .9em;margin:1em 0 0 .3em;background:rgba(0,0,0,3%);color:inherit;font-family:inherit;overflow:hidden}.callout-header{display:flex;align-items:center;gap:.5rem;font-weight:600;cursor:default}details.callout .callout-header{cursor:pointer}details.callout summary:focus{outline:none}.callout-title{margin-right:.5rem}.toggle-icon{margin-left:auto;transition:transform .18s ease;font-size:.9em;opacity:.85}details.callout[open] .toggle-icon{transform:rotate(0)}details.callout:not([open]) .toggle-icon{transform:rotate(-90deg)}.callout-content{margin-top:.45rem;line-height:1.45;max-height:0;opacity:0;overflow:hidden;transition:max-height .35s ease,opacity .25s ease}details[open] .callout-content{max-height:1e3px;opacity:1;transition:max-height .4s ease,opacity .3s ease}.callout-static .callout-content{max-height:1e3px;opacity:1;transition:max-height .4s ease,opacity .3s ease}.callout-static .toggle-icon{display:none}.callout-note{border-color:#3b82f6;background:rgba(59,130,246,5%)}.callout-abstract{border-color:#6366f1;background:rgba(99,102,241,5%)}.callout-info{border-color:#0ea5e9;background:rgba(14,165,233,5%)}.callout-tip{border-color:#a855f7;background:rgba(168,85,247,5%)}.callout-success{border-color:#22c55e;background:rgba(34,197,94,5%)}.callout-question{border-color:#14b8a6;background:rgba(20,184,166,5%)}.callout-warning{border-color:#f59e0b;background:rgba(245,158,11,5%)}.callout-failure{border-color:#ef4444;background:rgba(239,68,68,5%)}.callout-danger{border-color:#b91c1c;background:rgba(185,28,28,6%)}.callout-bug{border-color:#d946ef;background:rgba(217,70,239,6%)}.callout-example{border-color:#2563eb;background:rgba(37,99,235,5%)}.callout-quote{border-color:#6b7280;background:rgba(107,114,128,5%)}.callout-opinion{border-color:#e879f9;background:rgba(232,121,249,6%)}.callout-header i[aria-hidden=true]{display:inline-block;width:1.1em;text-align:center}details.callout summary:focus-visible{outline:2px solid rgba(0,0,0,8%);border-radius:4px}.jumpto-button{display:inline-block;text-decoration:none;cursor:pointer;position:relative;padding:2px 16px;color:var(--primary-color);border:1px solid var(--primary-color);border-radius:16px;background-color:initial;font-weight:600;transition:all .3s cubic-bezier(.23,1,.32,1);overflow:hidden;isolation:isolate}.jumpto-button::before{content:'';position:absolute;inset:0;border-radius:inherit;background-color:var(--primary-color);transform:scale(0);transform-origin:center;z-index:-1;transition:transform .6s cubic-bezier(.23,1,.32,1)}.jumpto-button:hover::before{transform:scale(1.5)}.jumpto-button:hover{color:var(--body-background-color);border-color:transparent}.jumpto-button:active{transform:scale(.98)}.post-cover{width:100%;max-height:400px;overflow:hidden;margin:none;border-radius:8px}.projects-grid{display:flex;flex-direction:column;gap:.5rem;margin:0 .5rem}.project-card{border:1px solid var(--dim-color);border-radius:8px;padding:1rem;background-color:var(--body-background-color);box-shadow:0 2px 4px rgba(0,0,0,5%);transition:transform .2s ease,box-shadow .2s ease}.project-card h3{margin:0;color:var(--primary-color)}.project-card p{margin:.5rem 0 .8rem;color:var(--body-secondary-text-color)}.projects-grid a{color:var(--body-text-color)}.project-card:hover{background:linear-gradient(131deg,var(--body-background-color) 0%,var(--body-background-highlight-color) 50%,var(--body-background-color) 100%)}.project-tech{color:var(--body-secondary-text-color);border:1px solid var(--dim-color);border-radius:8px;font-size:.8rem;padding:.5rem;margin-right:8px}.view-all-projects{display:inline-block;margin-bottom:1rem;color:var(--primary-color);text-decoration:none;font-weight:600;transition:opacity .2s ease}.view-all-projects:hover{opacity:.8;text-decoration:underline}.fancy-icon{transition:transform .3s ease}.fancy-icon:hover{transform:rotate(-8deg)}.image-lightbox{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:9999}.image-lightbox.is-active{display:flex}.image-lightbox__backdrop{position:absolute;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(3px)}.image-lightbox__content{position:relative;max-width:96vw;max-height:95vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:0 0;border-radius:0;overflow:hidden}.image-lightbox__img{display:block;border:none;border-radius:.5rem;max-width:96vw;max-height:88vh;object-fit:contain;background:0 0}.image-lightbox__caption{padding:.5rem 1rem 1.25rem;font-size:.9rem;text-align:center;color:#f3f4f6}.image-lightbox__close{position:fixed;top:1.25rem;right:1.5rem;border:var(--body-secondary-text-color)1px solid;background:0 0;color:#f9fafb;font-size:2rem;line-height:1;cursor:pointer;z-index:10000}.image-lightbox__close:hover{color:var(--reject-color)}.projects-header{display:flex;align-items:center;justify-content:space-between}.projects-header a{margin:auto 1rem auto 0}.project-sidebar{display:flex;flex-direction:column;gap:1rem}.side-content-mobile{display:none}@media(max-width:768px){.side-content-mobile{display:block}}.project-actions{display:flex;flex-direction:column;gap:.5rem}.project-action-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1rem;border:1px solid var(--dim-color);border-radius:8px;background-color:var(--body-background-color);color:var(--body-text-color);text-decoration:none;font-weight:600;font-size:.9rem;transition:all .2s ease;text-align:center}.project-action-btn:hover{background:linear-gradient(131deg,var(--body-background-color) 0%,var(--body-background-highlight-color) 50%,var(--body-background-color) 100%);border-color:var(--primary-color);color:var(--primary-color);transform:translateY(-1px)}.project-action-btn i{font-size:1rem}.project-btn-source{border-color:var(--primary-color);color:var(--primary-color)}.project-btn-website{border-color:var(--primary-color);color:var(--primary-color)}.project-btn-demo{border-color:var(--primary-color);color:var(--primary-color)}.project-tech-section{border-top:1px solid var(--dim-color);padding-top:1rem}.project-tech-section h3{font-size:1rem;font-weight:600;margin:0 0 .75rem;color:var(--body-text-color)}.project-tech-links{display:flex;flex-wrap:wrap;gap:.5rem}.project-tech-link{display:inline-block;padding:.4rem .75rem;border:1px solid var(--dim-color);border-radius:6px;font-size:.85rem;color:var(--body-secondary-text-color);text-decoration:none;transition:all .2s ease;background-color:var(--body-background-color)}.project-tech-link:hover{border-color:var(--primary-color);color:var(--primary-color);background:linear-gradient(131deg,var(--body-background-color) 0%,var(--body-background-highlight-color) 50%,var(--body-background-color) 100%)}.yt-video-card{display:flex;flex-direction:row;gap:1rem;padding:.9rem 1rem;border-radius:12px;background:var(--body-background-color);border:1px solid var(--dim-color);align-items:center;justify-content:space-between;position:relative}.yt-video-card:hover{background-color:var(--body-background-highlight-color)}.yt-video-title{margin:0 0 .25rem;font-size:1rem;font-weight:600}.yt-video-desc{margin:0 0 .6rem;font-size:.9rem;opacity:.85;line-height:1.4}.yt-video-link{display:inline-flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--body-secondary-text-color);text-decoration:none;word-break:break-all}.yt-video-link span{text-wrap:nowrap;text-overflow:ellipsis}.yt-video-stretched-link{position:absolute;inset:0;z-index:10}.yt-img-right{width:16rem;border-radius:10px;aspect-ratio:16/9;object-fit:cover;margin:0!important}@media(max-width:768px){.yt-video-card{display:flex;flex-direction:column!important}.yt-img-right{width:100%;border-radius:10px;aspect-ratio:16/9;object-fit:cover;margin:0!important}}.blog-title{font-family:radley,serif!important;font-weight:500!important;font-style:italic!important;font-size:4rem}@media(max-width:768px){.blog-title{font-size:2rem}}.comments-box{margin-top:1.2rem}.comments-box summary{font-weight:600;margin-bottom:1rem;cursor:pointer;color:var(--primary-color);background-color:var(--body-background-color);border:2px solid var(--primary-color);padding:.5rem 1rem;border-radius:8px}.comments-box[open] summary{margin-bottom:1rem}.comments-box .giscus-comments{margin-top:1rem}.comments-toggle{display:flex;flex-direction:row;align-items:center;gap:.5rem;align-self:center}.comments-box summary{list-style:none;cursor:pointer}.comments-box summary::-webkit-details-marker{display:none}.comments-toggle{display:inline-flex;align-items:center;gap:.5rem}.comments-box .open{display:none}.comments-box[open] .closed{display:none}.comments-box[open] .open{display:inline}.comments-box summary{user-select:none}.comments-box summary:hover{}