:root{--default-font:"Roboto",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--heading-font:"Ubuntu",sans-serif;--nav-font:"Nunito",sans-serif;--background-color:#1f1f1f;--default-color:#fff;--heading-color:#fff;--accent-color:#ececec;--surface-color:#232323;--contrast-color:#310606;--nav-color:#ececec96;--nav-hover-color:#fff;--nav-mobile-background-color:#393939;--nav-dropdown-background-color:#393939;--nav-dropdown-color:#fff;--nav-dropdown-hover-color:#ececec}.light-background{--background-color:#2c2c2c;--surface-color:#323232}.dark-background{--background-color:#161618;--default-color:#fff;--heading-color:#fff;--surface-color:#151f2b;--contrast-color:#fff}:root{scroll-behavior:smooth}body{color:var(--default-color);background-color:var(--background-color);font-family:var(--default-font)}a{color:var(--accent-color);text-decoration:none;transition:all .3s}a:hover{color:color-mix(in srgb,var(--accent-color),transparent 25%);text-decoration:none}h1,h2,h3,h4,h5,h6{color:var(--heading-color);font-family:var(--heading-font)}.footer{color:var(--default-color);background-color:var(--background-color);padding:0 0 40px;font-size:14px;position:relative}.footer .copyright{border-top:1px solid color-mix(in srgb,var(--default-color),transparent 90%);padding-top:40px}.footer .copyright p{margin-bottom:0}.footer .credits{text-align:center;margin-top:4px;font-size:13px}.scroll-top{visibility:hidden;opacity:0;z-index:99999;background-color:var(--accent-color);border-radius:50px;width:44px;height:44px;transition:all .4s;position:fixed;bottom:-15px;right:15px}.scroll-top i{color:var(--contrast-color);font-size:24px;line-height:0}.scroll-top:hover{background-color:color-mix(in srgb,var(--accent-color),transparent 20%);color:var(--contrast-color)}.scroll-top.active{visibility:visible;opacity:1;bottom:15px}@media screen and (max-width:768px){[data-aos-delay]{transition-delay:0!important}}.page-title{color:var(--default-color);padding:25px 0 0;position:relative}.page-title .container{border-bottom:1px solid color-mix(in srgb,var(--default-color),transparent 90%);padding-bottom:25px}.page-title h1{font-size:24px;font-weight:700}.page-title .breadcrumbs ol{flex-wrap:wrap;margin:0;padding:0;font-size:14px;font-weight:400;list-style:none;display:flex}.page-title .breadcrumbs ol li+li{padding-left:10px}.page-title .breadcrumbs ol li+li:before{content:"/";color:color-mix(in srgb,var(--default-color),transparent 70%);padding-right:10px;display:inline-block}section,.section{color:var(--default-color);background-color:var(--background-color);padding:60px 0;overflow:clip}.section-title{text-align:center;padding-bottom:60px;position:relative}.section-title h2{font-size:32px;font-weight:700;position:relative}.section-title h2:before,.section-title h2:after{content:"";background:var(--accent-color);width:50px;height:2px;display:inline-block}.section-title h2:before{margin:0 15px 10px 0}.section-title h2:after{margin:0 0 10px 15px}.section-title p{margin-bottom:0}.skills .skills-category{background-color:var(--surface-color);border-radius:8px;height:100%;padding:30px;transition:transform .3s;box-shadow:0 0 20px #0000000d}.skills .skills-category:hover{transform:translateY(-5px)}.skills .skills-category h3{margin-bottom:25px;padding-bottom:15px;font-size:24px;position:relative}.skills .skills-category h3:after{content:"";background-color:var(--accent-color);width:50px;height:2px;position:absolute;bottom:0;left:0}.skills .skill-item{margin-bottom:25px}.skills .skill-item:last-child{margin-bottom:0}.skills .skill-item h4{margin-bottom:8px;font-size:16px}.skills .skill-item .skill-percentage{color:color-mix(in srgb,var(--heading-color),transparent 30%);font-size:14px}.skills .skill-item .progress{background-color:color-mix(in srgb,var(--accent-color),transparent 90%);border-radius:20px;height:8px;position:relative;overflow:hidden}.skills .skill-item .progress .progress-bar{background-color:var(--accent-color);border-radius:20px;width:0;height:100%;transition:width 1.5s ease-in-out}.skills .skill-item .skill-tooltip{color:color-mix(in srgb,var(--default-color),transparent 30%);opacity:0;margin-top:8px;font-size:14px;transition:all .3s;transform:translateY(-5px)}.skills .skill-item:hover .skill-tooltip{opacity:1;transform:translateY(0)}.skills .skill-box{background-color:var(--surface-color);text-align:center;border-radius:8px;height:100%;padding:25px 20px;transition:all .3s;position:relative;overflow:hidden;box-shadow:0 0 15px #0000000d}.skills .skill-box:hover{transform:translateY(-5px)}.skills .skill-box:hover i{color:var(--accent-color);transform:scale(1.1)}.skills .skill-box:hover .skill-tooltip{opacity:1;transform:translateY(0)}.skills .skill-box i{color:color-mix(in srgb,var(--accent-color),transparent 20%);margin-bottom:15px;font-size:36px;transition:all .3s;display:inline-block}.skills .skill-box h4{margin-bottom:10px;font-size:18px}.skills .skill-box .skill-tooltip{color:color-mix(in srgb,var(--default-color),transparent 30%);opacity:0;font-size:14px;transition:all .3s;transform:translateY(5px)}@media (max-width:991.98px){.skills .skills-category{margin-bottom:30px}.skills .skills-category:last-child{margin-bottom:0}}@media (max-width:767.98px){.skills .skill-box{margin-bottom:20px}.skills .skill-box:last-child{margin-bottom:0}}.resume .resume-side{background-color:var(--surface-color);border-radius:10px;height:100%;padding:2rem;box-shadow:0 0 20px #0000001a}.resume .resume-side .profile-img{text-align:center}.resume .resume-side .profile-img img{object-fit:cover;border:5px solid color-mix(in srgb,var(--accent-color),transparent 85%);border-radius:50%;width:200px;height:200px}.resume .resume-side h3{color:var(--heading-color);margin-bottom:1rem;font-size:1.5rem;font-weight:600}.resume .resume-side .contact-info li{color:var(--default-color);margin-bottom:1rem}.resume .resume-side .contact-info li i{width:25px;color:var(--accent-color);margin-right:.5rem}.resume .resume-side .skill-item{margin-bottom:1.5rem}.resume .resume-side .skill-item span{color:var(--default-color);font-size:.9rem}.resume .resume-side .skill-item .progress{background-color:color-mix(in srgb,var(--accent-color),transparent 90%);border-radius:4px;height:8px;margin-top:.5rem}.resume .resume-side .skill-item .progress .progress-bar{background-color:var(--accent-color);width:0;transition:width 1s}.resume .resume-section{margin-bottom:3rem}.resume .resume-section h3{color:var(--heading-color);margin-bottom:1.5rem;font-size:1.75rem;font-weight:600}.resume .resume-section h3 i{color:var(--accent-color)}.resume .resume-section .resume-item{border-left:2px solid color-mix(in srgb,var(--accent-color),transparent 80%);margin-bottom:2rem;padding-left:1.5rem;position:relative}.resume .resume-section .resume-item:before{content:"";background:var(--accent-color);border-radius:50%;width:16px;height:16px;position:absolute;top:0;left:-9px}.resume .resume-section .resume-item h4{color:var(--heading-color);margin-bottom:.5rem;font-size:1.2rem;font-weight:600}.resume .resume-section .resume-item h5{color:var(--accent-color);margin-bottom:.5rem;font-size:1rem}.resume .resume-section .resume-item .company{color:var(--heading-color);margin-bottom:1rem;font-size:.95rem}.resume .resume-section .resume-item .company i{margin-right:.5rem}.resume .resume-section .resume-item ul{padding-left:1.2rem}.resume .resume-section .resume-item ul li{color:var(--default-color);margin-bottom:.5rem}.resume .resume-section .resume-item p{color:var(--default-color);margin-bottom:0}@media (max-width:991.98px){.resume .resume-side{margin-bottom:2rem}}
:root{--header-height:72px;--mono-font:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;--status-ok:#3fb950;--nav-font:"Nunito Variable","Nunito",sans-serif}html{scroll-padding-top:calc(var(--header-height) + 12px)}img{max-width:100%}:focus-visible{outline:2px solid var(--accent-color);outline-offset:3px}.header{--nav-link-pad:.5rem .85rem;z-index:997;height:var(--header-height);color:var(--default-color);background-color:color-mix(in srgb,var(--background-color)88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid color-mix(in srgb,var(--default-color),transparent 90%);will-change:transform;transition:transform .3s ease-in-out;position:fixed;top:0;left:0;right:0;transform:translateY(0)}.header.header-hidden{transform:translateY(-100%)}.header .header-inner{justify-content:space-between;align-items:center;gap:1rem;height:100%;display:flex}.header .brand{font-family:var(--heading-font);color:var(--heading-color);white-space:nowrap;font-size:1.25rem;font-weight:700}.header .brand:hover{color:var(--accent-color)}.header .header-collapse{align-items:center;gap:1.5rem;display:flex}.header.dark-background{--background-color:#0f0f0f;--surface-color:#1a1a1a}.navmenu ul{align-items:center;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.navmenu a,.navmenu a:focus{width:auto;padding:var(--nav-link-pad);font-family:var(--nav-font);color:var(--nav-color);white-space:nowrap;border-bottom:2px solid #0000;align-items:center;font-size:16px;display:flex}.navmenu a:hover,.navmenu a.active,.navmenu a.active:focus{color:var(--nav-hover-color)}.navmenu a.active{border-bottom-color:var(--accent-color)}.header .social-links{align-items:center;gap:.25rem;display:flex}.header .social-links a,.footer .social-links a{width:40px;height:40px;color:var(--default-color);background:color-mix(in srgb,var(--default-color),transparent 90%);border-radius:50%;justify-content:center;align-items:center;font-size:16px;transition:all .3s;display:inline-flex}.header .social-links a:hover{color:var(--background-color);background:var(--accent-color)}.footer .social-links a:hover{color:var(--contrast-color);background:var(--accent-color)}.header .mobile-nav-toggle{width:44px;height:44px;color:var(--background-color);background-color:var(--accent-color);cursor:pointer;border:0;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:24px;line-height:1;display:none}@media (max-width:991.98px){.header .mobile-nav-toggle{display:inline-flex}.header .header-collapse{background-color:var(--nav-mobile-background-color);border-bottom:1px solid color-mix(in srgb,var(--default-color),transparent 85%);max-height:calc(100vh - var(--header-height));flex-direction:column;align-items:stretch;gap:1rem;padding:1rem .75rem 1.25rem;display:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.header .header-collapse.show{display:flex}.navmenu ul{flex-direction:column;align-items:stretch}.navmenu a,.navmenu a:focus{border-bottom:0;border-left:3px solid #0000;min-height:44px;padding:.5rem .9rem}.navmenu a.active{border-left-color:var(--accent-color)}.header .social-links{justify-content:flex-start;padding:0 .5rem}}@media (prefers-reduced-motion:reduce){.header{transition:none}}.section-title p{max-width:720px;margin-left:auto;margin-right:auto}.scroll-top{cursor:pointer;border:0;justify-content:center;align-items:center;padding:0;display:flex}.page-title{padding-top:calc(var(--header-height) + 25px);background-color:var(--background-color)}.page-title .breadcrumbs a{color:var(--accent-color)}.btn-snap{border:2px solid var(--accent-color);border-radius:50px;align-items:center;gap:.5rem;padding:.85rem 1.75rem;font-weight:600;line-height:1.2;transition:all .3s;display:inline-flex}.btn-snap.btn-primary-snap{background-color:var(--accent-color);color:var(--contrast-color)}.btn-snap.btn-primary-snap:hover{background-color:color-mix(in srgb,var(--accent-color),black 12%);color:var(--contrast-color);transform:translateY(-2px)}.btn-snap.btn-outline-snap{color:var(--accent-color);background-color:#0000}.btn-snap.btn-outline-snap:hover{background-color:var(--accent-color);color:var(--contrast-color);transform:translateY(-2px)}.hero{min-height:100svh;padding:calc(var(--header-height) + 2.5rem)0 4rem;align-items:center;display:flex;position:relative;overflow:hidden}.hero .background-elements{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.hero .background-elements .bg-circle{background:color-mix(in srgb,var(--accent-color),transparent 94%);border-radius:50%;position:absolute}.hero .background-elements .circle-1{width:300px;height:300px;top:12%;right:8%}.hero .background-elements .circle-2{width:200px;height:200px;bottom:12%;left:4%}.hero .container{z-index:3;position:relative}.hero .hero-meta{color:color-mix(in srgb,var(--default-color),transparent 35%);flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;margin-bottom:1.25rem;font-size:.8rem;display:flex}.hero .hero-meta .place{text-transform:uppercase;letter-spacing:.2em}.hero .hero-meta .legend{align-items:center;gap:.45rem;display:inline-flex}.hero .dot{background:var(--accent-color);border-radius:50%;width:8px;height:8px;display:inline-block}.hero .dot.dot-soft{background:color-mix(in srgb,var(--accent-color),transparent 45%)}.hero .dot.dot-ok{background:var(--status-ok)}.hero .role-chip{text-transform:uppercase;letter-spacing:.18em;color:var(--accent-color);background:color-mix(in srgb,var(--accent-color),transparent 90%);border:1px solid color-mix(in srgb,var(--accent-color),transparent 75%);border-radius:2rem;align-items:center;gap:.5rem;margin-bottom:1.25rem;padding:.4rem 1rem;font-size:.8rem;font-weight:600;display:inline-flex}.hero .hero-text h1{margin-bottom:1.25rem;font-size:clamp(2.5rem,7vw,4.75rem);font-weight:800;line-height:1.05}.hero .hero-text h1 .accent-text{color:var(--accent-color);position:relative}.hero .hero-text h1 .accent-text:after{content:"";background:var(--accent-color);width:100%;height:3px;position:absolute;bottom:-6px;left:0}.hero .hero-text .description{max-width:540px;color:color-mix(in srgb,var(--default-color),transparent 20%);margin-bottom:1.75rem;font-size:1.125rem;line-height:1.7}.hero .hero-tags{flex-wrap:wrap;gap:.6rem;margin:0 0 2rem;padding:0;list-style:none;display:flex}.hero .hero-tags li{color:color-mix(in srgb,var(--default-color),transparent 25%);background:var(--surface-color);border:1px solid color-mix(in srgb,var(--default-color),transparent 85%);border-radius:2rem;padding:.4rem .95rem;font-size:.9rem}.hero .hero-actions{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.hero .status-pill{color:color-mix(in srgb,var(--default-color),transparent 25%);background:var(--surface-color);border:1px solid color-mix(in srgb,var(--default-color),transparent 85%);border-radius:2rem;align-items:center;gap:.5rem;padding:.55rem 1rem;font-size:.8rem;display:inline-flex}@media (max-width:991.98px){.hero{align-items:flex-start}.hero .hero-visual{margin-top:2.5rem}}.runtime-panel{background:var(--surface-color);border:1px solid color-mix(in srgb,var(--default-color),transparent 88%);border-radius:1.25rem;gap:1rem;max-width:460px;margin:0 auto;padding:1.25rem;display:grid;box-shadow:0 10px 30px #0000004d}.runtime-panel .panel-top{justify-content:flex-start;display:flex}.runtime-panel .panel-pill{color:color-mix(in srgb,var(--default-color),transparent 30%);border:1px solid color-mix(in srgb,var(--default-color),transparent 82%);border-radius:2rem;align-items:center;gap:.5rem;padding:.3rem .8rem;font-size:.72rem;display:inline-flex}.runtime-panel .panel-grid{grid-template-columns:1.35fr 1fr;gap:1rem;display:grid}@media (max-width:575.98px){.runtime-panel .panel-grid{grid-template-columns:1fr}}.runtime-panel .module{background:color-mix(in srgb,var(--surface-color),var(--default-color)4%);border:1px solid color-mix(in srgb,var(--default-color),transparent 90%);border-radius:.85rem;padding:.9rem}.runtime-panel .module-head{text-transform:uppercase;letter-spacing:.12em;color:color-mix(in srgb,var(--default-color),transparent 35%);justify-content:space-between;align-items:center;gap:.5rem;font-size:.72rem;display:flex}.runtime-panel .metric-big{font-family:var(--heading-font);color:var(--heading-color);margin-top:.5rem;font-size:1.6rem;font-weight:600;line-height:1}.runtime-panel .bar-track{background:color-mix(in srgb,var(--accent-color),transparent 85%);border-radius:99px;height:6px;margin-top:.6rem;overflow:hidden}.runtime-panel .bar-fill{border-radius:inherit;background:color-mix(in srgb,var(--accent-color),transparent 30%);height:100%}.runtime-panel .rules{gap:.4rem;margin-top:.9rem;display:grid}.runtime-panel .rules span{background:color-mix(in srgb,var(--accent-color),transparent 55%);height:1px;display:block}.runtime-panel .bars{grid-template-columns:repeat(6,1fr);align-items:end;gap:4px;height:52px;margin-top:.8rem;display:grid}.runtime-panel .bars span{background:color-mix(in srgb,var(--accent-color),transparent 40%);border-radius:2px;display:block}.runtime-panel .code-box{font-family:var(--mono-font);color:color-mix(in srgb,var(--default-color),transparent 30%);background:color-mix(in srgb,var(--background-color),black 20%);border:1px solid color-mix(in srgb,var(--default-color),transparent 88%);border-radius:.75rem;margin:0;padding:.8rem 1rem;font-size:.78rem;line-height:1.7}.runtime-panel .code-box .key{color:var(--accent-color);font-weight:600}.about .profile-card{background:var(--surface-color);border:1px solid color-mix(in srgb,var(--default-color),transparent 90%);border-radius:1.5rem;padding:1.25rem;position:relative;overflow:hidden;box-shadow:0 10px 30px #00000040}.about .profile-card:before{content:"";background:var(--accent-color);height:4px;position:absolute;top:0;left:0;right:0}.about .profile-card img{aspect-ratio:1;object-fit:cover;border-radius:1rem;width:100%;height:auto;margin-top:.25rem;display:block}.about .about-content h3,.about .skills-block h3{margin-bottom:1rem;font-size:1.25rem;font-weight:700}.about .about-content .description p{color:color-mix(in srgb,var(--default-color),transparent 20%);margin-bottom:1.25rem;font-size:1.1rem;line-height:1.7}.about .badge-list{flex-wrap:wrap;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.about .badge-list li{color:var(--accent-color);background:color-mix(in srgb,var(--accent-color),transparent 90%);border:1px solid color-mix(in srgb,var(--accent-color),transparent 78%);border-radius:2rem;padding:.4rem 1rem;font-size:.875rem;font-weight:500}.skills .skill-box svg{width:36px;height:36px;color:color-mix(in srgb,var(--accent-color),transparent 20%);margin-bottom:15px;transition:all .3s;display:inline-block}.skills .skill-box:hover svg{color:var(--accent-color);transform:scale(1.1)}.skills .skill-box h4{margin:0;font-size:1rem}.resume .resume-section .resume-item h3{margin-bottom:.5rem;font-size:1.35rem;font-weight:600}.resume .resume-section .resume-item .resume-meta{color:var(--accent-color);background:color-mix(in srgb,var(--accent-color),transparent 90%);border-radius:2rem;margin-bottom:1rem;padding:.2rem .75rem;font-size:.9rem;display:inline-block}.resume .resume-section .resume-item p{color:color-mix(in srgb,var(--default-color),transparent 15%);margin-bottom:1rem;line-height:1.7}.resume .resume-section .resume-item p:last-child{margin-bottom:0}.resume .resume-side h3:not(:first-child){margin-top:2rem}.resume .tile{background:color-mix(in srgb,var(--surface-color),var(--default-color)5%);border:1px solid color-mix(in srgb,var(--default-color),transparent 92%);border-radius:.75rem;align-items:center;gap:.75rem;height:100%;padding:.75rem;transition:background-color .3s;display:flex}.resume .tile:hover{background:color-mix(in srgb,var(--surface-color),var(--default-color)10%)}.resume .tile i{color:var(--accent-color);font-size:1.25rem}.resume .tile .tile-name{color:var(--heading-color);font-size:.9rem;font-weight:500;display:block}.resume .tile .tile-spec{color:color-mix(in srgb,var(--default-color),transparent 35%);font-size:.78rem;display:block}.resume .tile.tile-stack{flex-direction:column;align-items:flex-start;gap:.25rem}.resume .tile.tile-stack .tile-title{align-items:center;gap:.5rem;display:flex}.portfolio .portfolio-filters{flex-wrap:wrap;justify-content:center;gap:10px;margin:0 0 2.5rem;padding:0;list-style:none;display:flex}.portfolio .portfolio-filters button{color:var(--default-color);border:1px solid color-mix(in srgb,var(--accent-color),transparent 80%);cursor:pointer;background:0 0;border-left-width:3px;border-radius:6px;padding:8px 16px;font-size:15px;font-weight:500;line-height:1.2;transition:all .3s ease-in-out}.portfolio .portfolio-filters button:hover,.portfolio .portfolio-filters button.filter-active{color:var(--accent-color);background-color:color-mix(in srgb,var(--accent-color),transparent 90%);border-left-color:var(--accent-color)}.portfolio .portfolio-filters button.filter-active{font-weight:600}.portfolio .portfolio-wrap{background:var(--surface-color);border:1px solid color-mix(in srgb,var(--default-color),transparent 90%);border-radius:12px;flex-direction:column;height:100%;transition:transform .4s,border-color .3s;display:flex;position:relative;overflow:hidden;box-shadow:0 5px 20px #00000040}.portfolio .portfolio-wrap.is-linked:hover,.portfolio .portfolio-wrap.is-linked:focus-within{border-color:color-mix(in srgb,var(--accent-color),transparent 50%);transform:translateY(-5px)}.portfolio .portfolio-media{aspect-ratio:16/9;background:color-mix(in srgb,var(--surface-color),black 25%);border-bottom:1px solid color-mix(in srgb,var(--default-color),transparent 90%);position:relative;overflow:hidden}.portfolio .portfolio-media img{object-fit:contain;transition:transform .6s cubic-bezier(.215,.61,.355,1)}.portfolio .portfolio-wrap.is-linked:hover .portfolio-media img{transform:scale(1.05)}.portfolio .portfolio-links{z-index:3;gap:.5rem;display:flex;position:absolute;bottom:.75rem;right:.75rem}.portfolio .portfolio-links a,.portfolio .portfolio-ext a{z-index:3;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;transition:all .3s;display:inline-flex;position:relative}.portfolio .portfolio-links a{color:var(--contrast-color);background-color:color-mix(in srgb,var(--accent-color),transparent 12%)}.portfolio .portfolio-links a:hover{background-color:var(--accent-color);color:var(--contrast-color);transform:translateY(-3px)}.portfolio .video-badge{z-index:3;color:var(--default-color);background:#1a1a1a;border-radius:2rem;align-items:center;gap:.35rem;padding:.25rem .75rem;font-size:.75rem;font-weight:600;display:inline-flex;position:absolute;bottom:.75rem;left:.75rem}.portfolio .portfolio-body{flex-direction:column;flex:1;padding:1.25rem 1.5rem 1.5rem;display:flex}.portfolio .portfolio-title-row{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.portfolio .portfolio-title{margin:0 0 .75rem;font-size:1.25rem;font-weight:700}.portfolio .portfolio-title a{color:var(--heading-color)}.portfolio .portfolio-wrap.is-linked:hover .portfolio-title a{color:var(--accent-color)}.portfolio .portfolio-ext{flex-shrink:0;gap:.25rem;margin:-.35rem -.5rem 0 0;display:flex}.portfolio .portfolio-ext a{width:40px;height:40px;color:color-mix(in srgb,var(--default-color),transparent 25%);font-size:18px}.portfolio .portfolio-ext a:hover{color:var(--accent-color);background:color-mix(in srgb,var(--accent-color),transparent 90%)}.portfolio .portfolio-summary{color:color-mix(in srgb,var(--default-color),transparent 25%);margin:0 0 1.25rem;line-height:1.65}.tag-list{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.portfolio .tag-list{margin-top:auto}.tag-list li{color:color-mix(in srgb,var(--default-color),transparent 15%);background:color-mix(in srgb,var(--surface-color),var(--default-color)10%);border-radius:2rem;padding:.25rem .75rem;font-size:.8rem}.contact .contact-card{background:var(--surface-color);border:1px solid color-mix(in srgb,var(--default-color),transparent 90%);border-radius:1rem;justify-content:space-between;align-items:flex-start;gap:1rem;height:100%;padding:1.5rem;transition:border-color .3s,transform .3s;display:flex;position:relative}.contact .contact-card:hover,.contact .contact-card:focus-within{border-color:color-mix(in srgb,var(--accent-color),transparent 50%);transform:translateY(-3px)}.contact .contact-card .icon-box{width:3.5rem;height:3.5rem;color:var(--contrast-color);background:var(--accent-color);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1.5rem;display:flex}.contact .contact-card h3{margin:0 0 .25rem;font-size:1.25rem;font-weight:700}.contact .contact-card h3 a{color:var(--heading-color)}.contact .contact-card:hover h3 a{color:var(--accent-color)}.contact .contact-card p{margin:0}.contact .contact-card .handle{color:color-mix(in srgb,var(--default-color),transparent 20%);overflow-wrap:anywhere;font-size:.95rem}.contact .contact-card .blurb{color:color-mix(in srgb,var(--default-color),transparent 40%);margin-top:.25rem;font-size:.85rem}.contact .contact-card .go{color:color-mix(in srgb,var(--default-color),transparent 40%);flex-shrink:0}.contact .btn-cta{color:var(--contrast-color);background-color:var(--accent-color);border-radius:2rem;align-items:center;gap:.5rem;padding:1rem 2.5rem;font-weight:600;transition:all .3s;display:inline-flex}.contact .btn-cta:hover{color:var(--contrast-color);background-color:color-mix(in srgb,var(--accent-color),var(--contrast-color)20%)}.footer .footer-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;padding:2.5rem 0 1.5rem;display:flex}.footer .footer-nav{flex-wrap:wrap;gap:.5rem 1.5rem;margin:0;padding:0;list-style:none;display:flex}.footer .footer-nav a{color:color-mix(in srgb,var(--default-color),transparent 25%)}.footer .footer-nav a:hover{color:var(--accent-color)}.footer .social-links{gap:.25rem;display:flex}.footer .copyright{padding-top:1.5rem}.footer .credits a{color:var(--accent-color);text-decoration:underline}.portfolio-details .portfolio-info{background-color:var(--surface-color);border:1px solid color-mix(in srgb,var(--default-color),transparent 90%);border-radius:8px;padding:30px}@media (min-width:992px){.portfolio-details .portfolio-info{top:calc(var(--header-height) + 1rem);position:sticky}}.portfolio-details .portfolio-info .lead-summary{color:color-mix(in srgb,var(--default-color),transparent 15%);margin-bottom:1.25rem;line-height:1.7}.portfolio-details .portfolio-info .tag-list{margin:0 0 1.5rem}.portfolio-details .portfolio-info .info-actions{flex-wrap:wrap;gap:.75rem;display:flex}.portfolio-details .cover-frame,.portfolio-details .media-frame{background:var(--surface-color);border:1px solid color-mix(in srgb,var(--default-color),transparent 88%);border-radius:8px;position:relative;overflow:hidden}.portfolio-details .cover-frame{aspect-ratio:16/9;max-height:560px}.portfolio-details .cover-frame img{object-fit:contain}.portfolio-details .media-frame img{width:100%;height:auto;display:block}.portfolio-details .media-frame.is-video{background:#000}.portfolio-details .media-frame video,.portfolio-details .media-frame iframe{object-fit:contain;width:100%;height:100%}.portfolio-details .block-stack>*+*{margin-top:2rem}.portfolio-details .block-heading{margin:0;padding-top:1rem;font-size:26px;font-weight:700}.portfolio-details .block-text p{color:color-mix(in srgb,var(--default-color),transparent 20%);margin-bottom:1.25rem;font-size:1.1rem;line-height:1.7}.portfolio-details .block-text p:last-child{margin-bottom:0}.portfolio-details .block-list{color:color-mix(in srgb,var(--default-color),transparent 20%);margin:0;padding:0;font-size:1.1rem;line-height:1.6;list-style:none}.portfolio-details .block-list li{padding:.35rem 0 .35rem 1.75rem;position:relative}.portfolio-details .block-list li:before{content:"";background:var(--accent-color);opacity:.8;border-radius:50%;width:5px;height:5px;position:absolute;top:1.05rem;left:.25rem}.portfolio-details figcaption{color:color-mix(in srgb,var(--default-color),transparent 35%);margin-top:.75rem;font-size:.9rem}.portfolio-details .code-block{font-family:var(--mono-font);color:var(--default-color);background:color-mix(in srgb,var(--surface-color),black 25%);border:1px solid color-mix(in srgb,var(--default-color),transparent 88%);border-radius:8px;margin:0;padding:1.25rem;font-size:.9rem;line-height:1.6;overflow-x:auto}.portfolio-details .embed-error{color:#ff8a8a;border:1px dashed #ff8a8a;border-radius:8px;padding:1rem;font-size:.9rem}.yt-play{cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:100%;padding:0;display:flex;position:absolute;inset:0}.yt-play img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.yt-play .yt-scrim{background:#0000004d;transition:background-color .3s;position:absolute;inset:0}.yt-play:hover .yt-scrim{background:#00000026}.yt-play .yt-icon{width:64px;height:64px;color:var(--contrast-color);background:var(--accent-color);border-radius:50%;justify-content:center;align-items:center;font-size:32px;transition:transform .3s;display:flex;position:relative}.yt-play:hover .yt-icon{transform:scale(1.1)}@media (prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}[data-aos]{opacity:1!important;transform:none!important}}
