@property --banner-progress{syntax:"<number>";inherits:true;initial-value:1}@property --banner-slide{syntax:"<length>";inherits:false;initial-value:0}:root{--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface-1:#ffffff08;--surface-2:#ffffff0f;--surface-3:#ffffff1a;--surface-4:#ffffff29;--border-faint:#ffffff0f;--border-soft:#ffffff1f;--border-strong:#ffffff38;--glass-blur:blur(16px) saturate(160%);--hover-bg:#ffffff26;--fg-mute:#ffffffa6;--fg-soft:#ffffffc7;--fg-strong:#fff;--font-dropcap:"Cinzel Decorative", "Bodoni 72", Didot, Georgia, serif;--dropcap-lines:3;--dropcap-mobile-lines:2;--dropcap-fallback-size:5em;--dropcap-mobile-fallback-size:3.4em}.modal-back,.clear-filters-btn{background:var(--surface-2);border:1px solid var(--border-faint)}.modal-back:hover,.clear-filters-btn:hover{background:var(--hover-bg);border-color:var(--border-soft)}.needsjs{transition:opacity 80ms}html{height:100vh;overflow:hidden}body{scrollbar-gutter:stable;width:100%;max-width:100vw;height:100vh;min-height:100vh;position:relative;overflow:hidden auto}canvas{z-index:-1;touch-action:none;background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:fixed;top:0;left:0;overflow:hidden}.for-banner{--banner-progress:1;opacity:1;will-change:width, height, padding, opacity;transition:top .3s;top:2.25rem}.for-banner.has-size{--banner-slide:0px;top:var(--banner-cy);transform:translate(-50%, calc(-50% + var(--banner-slide)));width:calc(6px + (var(--banner-w) - 6px) * var(--banner-progress));height:calc(6px + (var(--banner-h) - 6px) * var(--banner-progress));padding-block:calc(.4rem * var(--banner-progress));padding-inline:calc(.95rem * var(--banner-progress));transition:--banner-slide .28s cubic-bezier(.34,1.3,.64,1),--banner-progress .56s cubic-bezier(.34,1.5,.64,1) 80ms,opacity 80ms linear}.for-banner.has-size.is-collapsed{--banner-progress:0;--banner-slide:-60px;opacity:0;transition:--banner-progress .3s cubic-bezier(.32,.72,.4,1),--banner-slide .36s cubic-bezier(.4,0,.7,1) 80ms,opacity 80ms linear .38s}.hide-mode .for-banner{opacity:0;pointer-events:none}.for-banner-inner{opacity:clamp(0, calc((var(--banner-progress) - .45) * 2.6), 1)}.hide-toggle{color:#fff;cursor:pointer;z-index:99;width:50px;height:50px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);background-color:#0000;border:none;border-radius:25px;justify-content:center;align-items:center;font-size:20px;transition:all .2s;display:flex;position:fixed;top:20px;right:20px}.hide-toggle svg{transition:opacity .2s}.hide-toggle:hover{background-color:var(--hover-bg)}.hide-mode .hide-toggle{-webkit-backdrop-filter:none;backdrop-filter:none}.hide-mode .hide-toggle svg{opacity:.4}.hide-mode .hide-toggle:hover{background-color:var(--hover-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.hide-mode .hide-toggle:hover svg{opacity:1}main{transform-origin:50%;transition:opacity .46s cubic-bezier(.32,.72,0,1),transform .46s cubic-bezier(.32,.72,0,1),filter .46s cubic-bezier(.32,.72,0,1)}main.content-hidden{opacity:0;filter:blur(16px);pointer-events:none;transform:scale(.86)}body.hide-mode{overflow-y:hidden}.hide-mode main>:not(.hide-toggle){opacity:0;pointer-events:none}.profile-pic-frame img{box-shadow:0 4px 15px #00000080}.icon-overlays{justify-content:space-around;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.brain-icon{width:50px;position:absolute;top:21%;left:52%;transform:translate(-50%,-50%)}.heart-icon{width:50px;position:absolute;top:66%;left:54%;transform:translate(-50%,-50%)}.heart-icon img,.brain-icon img{box-shadow:none;opacity:0;transition:opacity .3s ease-in-out}.heart-icon:hover img,.brain-icon:hover img{opacity:.8}.icon-popup{left:calc(var(--mouseX,0px) - var(--parentOffsetX,0px));top:calc(var(--mouseY,0px) - var(--parentOffsetY,0px));white-space:nowrap;opacity:0;pointer-events:none;background:#000;border:3px solid #fff;border-radius:10px;width:0;padding:.6rem;font-size:.9rem;transition:all .15s ease-in-out;display:block;position:fixed;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 2px 10px #ffffff1a}.brain-icon:hover .icon-popup,.heart-icon:hover .icon-popup{display:block}.brain-icon:hover .icon-popup{opacity:1;width:250px}hgroup>div:nth-child(2){text-align:left;flex:1}.brain-icon .icon-popup{background:linear-gradient(90deg,#000032e6,#000064b3);border:3px solid #00f;width:250px;overflow:hidden;box-shadow:0 0 15px #0000ff80}.brain-icon .scrolling-text{white-space:nowrap;color:#fff;text-shadow:0 0 5px #00f,0 0 10px #00f,0 0 15px red;font-family:"Exo 2",sans-serif;animation:10s linear infinite storm-scroll,.1s infinite flicker;display:inline-block}.brain-icon .text-content{text-transform:uppercase;letter-spacing:2px;display:inline-block}@keyframes storm-scroll{0%{transform:translate(0)skew(0deg)}25%{transform:translate(-25%)skew(5deg)}50%{transform:translate(-50%)skew(-5deg)}75%{transform:translate(-75%)skew(5deg)}to{transform:translate(-50%)skew(0deg)}}@keyframes flicker{0%,to{opacity:1}50%{opacity:.8}}.brain-icon:hover .icon-popup:before{content:"";z-index:1;background:#ffffff4d;width:100%;height:100%;animation:4s infinite lightning;position:absolute;top:0;left:-100%}@keyframes lightning{0%{left:-100%}5%{left:100%}to{left:100%}}.heart-icon .icon-popup{color:#fff;background:linear-gradient(90deg,#320000e6,#640000b3);border:3px solid red;font-family:Bebas Neue,sans-serif;box-shadow:0 0 15px #ff000080}.heart-icon:hover .icon-popup{opacity:1;width:200px}.heart-texts{height:1.5em;margin:0;padding:0;list-style:none;position:relative;overflow:hidden}.heart-texts li{text-align:center;opacity:0;width:100%;animation:6s infinite pulse;position:absolute}.heart-texts li:first-child{animation-delay:0s}.heart-texts li:nth-child(2){animation-delay:2s}.heart-texts li:nth-child(3){animation-delay:4s}@keyframes pulse{0%{opacity:0;transform:scale(.8)}10%{opacity:1;transform:scale(1.1)}20%{opacity:1;transform:scale(1)}30%{opacity:0;transform:scale(.8)}to{opacity:0}}.profile-pic-frame:before{content:"";z-index:-1;border-radius:50%;transition:box-shadow .3s ease-in-out;position:absolute;inset:0;box-shadow:0 0 20px #f000}.profile-pic-frame.heartbeat-active:before{animation:2s infinite heartbeat-aura}.profile-pic-frame.heartbeat-active{animation:2s infinite heartbeat-frame;transform:scale(1)}@keyframes heartbeat-aura{0%{box-shadow:0 0 60px #ff000080}25%{box-shadow:0 0 20px red}50%{box-shadow:0 0 60px #ff000080}75%{box-shadow:0 0 20px red}to{box-shadow:0 0 60px #ff000080}}.about-expertise-section{max-width:600px}.tab-btn{-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-radius:8px;transition:color .25s}.tab-btn:hover{color:#ffffffd9}.tab-panel.active{animation:.3s tab-fade-in}@keyframes tab-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.about-prose p,.expertise-prose p,.modal-desc p{display:flow-root}.about-prose,.expertise-prose{--dropcap-lines:2;--dropcap-fallback-size:3.4em}.about-prose>p:first-of-type:first-letter,.expertise-prose>p:first-of-type:first-letter,.modal-desc p.prose-dropcap:first-letter{float:left;color:#fff;font-family:var(--font-dropcap);font-size:var(--dropcap-fallback-size);text-shadow:0 0 24px #ffffff1f,0 2px 18px #0000007a;margin:.03em .14em 0 0;font-weight:700;line-height:.86}.modal-desc p.prose-dropcap:first-letter{color:color-mix(in srgb, var(--banner-tint,#fff) 28%, #fff)}@supports (initial-letter:3) or (-webkit-initial-letter:3){.about-prose>p:first-of-type:first-letter,.expertise-prose>p:first-of-type:first-letter,.modal-desc p.prose-dropcap:first-letter{-webkit-initial-letter:var(--dropcap-lines);initial-letter:var(--dropcap-lines);float:none;font-size:inherit;margin-right:.16em;line-height:1}}.clean-statement strong,.clean-statement a{color:#fff;font-weight:400}.clean-statement a{border-bottom:1px solid #ffffff61;text-decoration:none;transition:all .2s}.clean-statement a:hover{color:#fff;border-bottom-color:#fff9}[data-highlight]{background:0 0;border-radius:0;padding:0}.skill-group{background:#ffffff08;border:1px solid #ffffff0f;border-radius:8px;flex-direction:column;gap:.6rem;padding:1rem;display:flex}.skill-icons{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.skill-icons img{opacity:.85;cursor:help;color:#ffffffd9;text-align:center;border-radius:6px;width:36px;height:36px;font-size:.65rem;font-weight:700;line-height:36px;transition:opacity .2s,transform .2s;overflow:hidden}.skill-icons img:hover{opacity:1;transform:scale(1.1)}.skill-chip{cursor:pointer;font:inherit;letter-spacing:.01em;color:var(--fg-mute);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);background:0 0;border:none;border-radius:8px;align-items:center;padding:.3rem .5rem;font-size:.7rem;font-weight:500;transition:color .18s,background .18s,opacity .18s;display:inline-flex}.skill-chip:hover{color:var(--fg-strong);background:var(--hover-bg)}.skill-chip:focus-visible{outline-offset:2px;outline:2px solid #ffffff80}.skill-chip.is-active{color:var(--banner-accent,var(--fg-strong))}body.has-active-filters .skill-chip:not(.is-active){opacity:.6}body.has-active-filters .skill-chip:not(.is-active):hover{opacity:.9}.skill-chip-extra{display:none}.skills-section.is-expanded .skill-chip-extra{display:inline-flex}#skills-list{gap:0;margin-left:-.5rem}.skills-section{padding-bottom:1.5rem}.stack-col-head{justify-content:space-between;align-items:center;gap:1rem;display:flex}.stack-col-mode{opacity:.78;font-weight:400}.clear-filters-btn{color:var(--fg-mute);cursor:pointer;font:inherit;letter-spacing:.2em;text-transform:uppercase;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);opacity:0;visibility:hidden;pointer-events:none;border-radius:8px;padding:.35rem .7rem;font-size:.65rem;font-weight:500;transition:color .18s,background .18s,border-color .18s,opacity .3s,visibility 0s linear .3s}body.has-active-filters .clear-filters-btn{opacity:1;visibility:visible;pointer-events:auto;transition:color .18s,background .18s,opacity .3s,visibility linear}.clear-filters-btn:hover{color:var(--fg-strong)}.skills-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.skills-list{flex:1;min-width:0}.skill-toggle-inline{color:var(--fg-strong);cursor:pointer;font:inherit;letter-spacing:.14em;text-transform:uppercase;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);background:0 0;border:none;border-radius:8px;align-items:center;padding:.3rem .55rem;font-size:.6rem;font-weight:500;transition:color .18s,background .18s;display:inline-flex}.skill-toggle-inline:hover{background:var(--hover-bg);font-weight:600}.skill-toggle-inline:focus-visible{outline-offset:2px;outline:2px solid #ffffff80}.skills-row{align-items:flex-start;gap:1.75rem;display:flex}.stack-col{flex-direction:column;flex:1;gap:.6rem;min-width:0;display:flex}.stack-col .skills-card{width:100%}.filter-col-title{letter-spacing:.2em;text-transform:uppercase;color:var(--fg-mute);font-size:.65rem;font-weight:500}.year-filter{flex-direction:column;flex-shrink:0;align-items:center;gap:.6rem;margin:0 .85rem;display:flex}.year-rings{justify-content:center;display:flex}.year-stump-stage{width:178px;height:178px;position:relative}.year-stump-blur{z-index:0;pointer-events:none;position:absolute;inset:0}.year-stump{z-index:1;width:178px;height:178px;position:relative;overflow:visible}.year-bark-edge{fill:none;stroke:var(--fg-strong);stroke-opacity:.7;stroke-width:1.7px;stroke-linejoin:round;stroke-linecap:round;pointer-events:none}.year-ring-line{fill:none;stroke:#ffffff57;stroke-width:1.25px;stroke-linejoin:round;stroke-linecap:round;pointer-events:none}.year-bg{fill:#0000;pointer-events:all}.year-band{fill:#0000;fill-rule:evenodd;pointer-events:none;transition:fill .16s}.year-band.selectable{pointer-events:all;cursor:pointer}.year-band.selectable:hover{fill:#ffffff2e}.year-band.is-selected{fill:#ffffff38}.year-band.selectable.is-selected:hover{fill:#ffffff4d}.year-center{fill:#0000;fill-rule:evenodd;pointer-events:none;transition:fill .16s}.year-stump.year-has-selection .year-center{pointer-events:all;cursor:pointer}.year-stump.year-has-selection .year-center:hover{fill:#fff3}.year-center-x{pointer-events:none;fill:none;stroke:var(--border-strong);stroke-width:1.6px;stroke-linecap:round;transition:stroke .16s;display:none}.year-stump.year-has-selection .year-center-x{display:block}.year-stump.year-has-selection .year-center:hover~.year-center-x{stroke:var(--fg-strong)}.year-label{letter-spacing:.08em;min-height:1em;color:var(--fg-mute);font-size:.8rem;font-weight:400}.year-tap{z-index:2;pointer-events:none;background:0 0;border:0;margin:0;padding:0;position:absolute;inset:0}.year-tick{z-index:3;border-left:5px solid #0000;border-right:5px solid #0000;border-top:6px solid var(--fg-strong);opacity:.75;pointer-events:none;width:0;height:0;display:none;position:absolute;top:-2px;left:50%;transform:translate(-50%)}.year-drawer{align-items:center;width:100%;margin-top:.9rem;padding:.1rem .25rem;display:flex}.year-drawer[hidden]{display:none}.year-slider--close{padding-left:16px}.year-slider-close{z-index:1;width:22px;height:22px;color:var(--fg-mute);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;transition:color .16s,background .16s;display:grid;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.year-slider-close:hover,.year-slider-close.is-armed{color:var(--fg-strong);background:#ffffff2e}.year-slider{border:1px solid var(--border-soft);background:var(--border-faint);height:30px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);cursor:pointer;touch-action:none;border-radius:999px;flex:1;align-items:center;padding:0 15px;display:flex;position:relative}.year-slider:focus-visible{outline-offset:2px;outline:2px solid #ffffff80}.year-slider-track{flex:1;height:100%;position:relative}.year-slider-tick{background:var(--border-strong);pointer-events:none;width:1px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.year-slider-handle{z-index:2;background:var(--fg-strong);pointer-events:none;border-radius:50%;width:16px;height:16px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%);box-shadow:0 0 0 4px #ffffff1f}.year-slider-handle[hidden]{display:none}.year-slider-bubble{letter-spacing:.06em;color:var(--fg-soft);white-space:nowrap;pointer-events:none;font-size:.72rem;position:absolute;bottom:150%;left:50%;transform:translate(-50%)}@media screen and (width>=601px){#year-drawer{display:none}}hgroup .tagline,hgroup h4{opacity:0;animation:1s .5s forwards fade-in}.tagline .heart{animation:1.5s infinite heart-throb;display:inline-block}@keyframes fade-in{to{opacity:1}}@keyframes heart-throb{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}.fade-from-left,.fade-from-right{opacity:0;transition:opacity .6s ease-out,transform .6s ease-out}.fade-from-left{transition-delay:.2s;transform:translate(-50px)}.fade-from-right{transition-delay:.2s;transform:translate(50px)}.fade-in-active{opacity:1;transform:translate(0)}.projects-grid-section{color:#fff;--project-ease:cubic-bezier(.32, .72, 0, 1);max-width:600px;margin:0 auto;padding:3rem 1rem 6rem}.projects-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:1.5rem 0 1rem;display:flex}.projects-header h2{margin:0}.projects-view-toggle{gap:.4rem;display:inline-flex}.view-toggle-btn{width:34px;height:34px;color:var(--fg-mute);opacity:.72;cursor:pointer;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;transition:color .18s,opacity .18s,background .18s;display:inline-flex}.view-toggle-btn svg{display:block}.view-toggle-btn:hover{color:var(--fg-strong);opacity:.85;background:var(--hover-bg)}.view-toggle-btn.is-active{color:var(--fg-strong);opacity:1}.project-grid.is-list-view{flex-direction:column;gap:0;display:flex}.project-list-row{text-align:left;color:#fff;cursor:pointer;width:100%;font:inherit;background:0 0;border:none;justify-content:space-between;align-items:baseline;gap:1rem;padding:.7rem .5rem;transition:background .18s,opacity .2s,padding-left .18s,border-radius .18s;display:flex}.project-list-row:hover{background:var(--hover-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-radius:8px;padding-left:.85rem}.project-list-row.is-faded{opacity:.46}.project-list-row.is-faded:hover{opacity:.85}.list-row-lead{flex:1;align-items:baseline;gap:.6rem;min-width:0;display:flex}.list-row-dot{background:var(--fg-strong);border:1px solid var(--fg-strong);border-radius:50%;flex-shrink:0;align-self:center;width:5px;height:5px;transition:background .18s,box-shadow .18s;box-shadow:0 0 4px #ffffff59}.project-list-row.is-seen .list-row-dot{border-color:var(--fg-mute);box-shadow:none;background:0 0}.project-list-row.is-starred .list-row-dot{width:14px;height:14px;box-shadow:none;filter:drop-shadow(0 0 3px #efd47980);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolygon fill='%23efd479' points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26'/%3E%3C/svg%3E") 50%/contain no-repeat;border:none;border-radius:0;transition:filter .18s}.project-list-row.is-starred.is-seen .list-row-dot{filter:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff8c' stroke-width='1.6' stroke-linejoin='round'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26'/%3E%3C/svg%3E")}.projects-note[hidden]{display:none}.projects-note{color:var(--fg-mute);align-items:center;gap:.5rem;margin:-.25rem 0 1.25rem;font-size:.8rem;font-weight:300;display:flex}.projects-note-star{background-color:currentColor;flex-shrink:0;width:14px;height:14px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26'/%3E%3C/svg%3E") 50%/contain no-repeat}.list-row-main{align-items:baseline;gap:.6rem;min-width:0;display:flex}.list-row-title{white-space:nowrap;font-size:.9rem;font-weight:400}.list-row-desc{color:var(--fg-mute);white-space:nowrap;text-overflow:ellipsis;opacity:0;min-width:0;font-size:.75rem;font-weight:300;transition:opacity .18s;overflow:hidden}.project-list-row:hover .list-row-desc,.project-list-row:focus-visible .list-row-desc{opacity:1}.list-row-meta{color:#ffffff94;white-space:nowrap;flex-shrink:0;font-size:.75rem;font-weight:300}.list-row-category{font-weight:400}.list-row-filter{color:var(--fg-strong);font-weight:400}.list-row-sep{vertical-align:middle;background:currentColor;border-radius:50%;width:3px;height:3px;margin:0 .45rem;display:inline-block}.projects-showcase{grid-template-columns:repeat(4,1fr);grid-auto-flow:dense;gap:.75rem;display:grid}.project-tile.featured{aspect-ratio:1;grid-area:span 2/span 2}.project-tile.featured .tile-info{padding:1rem}.project-tile.featured .tile-title{font-size:1.1rem;font-weight:500}.project-tile.featured .tile-year{font-size:.75rem}.project-tile.featured .tile-desc{color:#ffffffb8;max-width:90%;margin-top:.25rem;font-size:.75rem;font-weight:300;line-height:1.3;display:block}.project-tile{aspect-ratio:1;cursor:pointer;background:#111;border-radius:8px;transition:opacity .2s,box-shadow .2s ease-out,transform .2s ease-out;position:relative;overflow:hidden}.project-tile:hover{transform:translateY(-3px);box-shadow:0 8px 20px #0006}.project-tile.is-entering{opacity:0;transition:opacity .42s var(--project-ease), transform .48s var(--project-ease);transform:translateY(14px)scale(.97)}.project-tile.is-entering.is-visible{opacity:1;transform:translateY(0)scale(1)}.project-tile.is-faded{opacity:.46}.project-tile.is-faded:hover{opacity:.85}.tile-match-badge{z-index:2;color:#111;pointer-events:none;opacity:0;background:#fff;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;transition:opacity .2s,transform .2s cubic-bezier(.32,.72,0,1);display:flex;position:absolute;top:.4rem;right:.4rem;transform:scale(.6);box-shadow:0 2px 8px #0006}.project-tile.is-matched .tile-match-badge{opacity:1;transform:scale(1)}.project-tile:not(.featured) .tile-desc{display:none}.tile-seen-eye{z-index:2;color:#fff;filter:drop-shadow(0 1px 3px #0009);pointer-events:none;display:none;position:absolute;top:.4rem;right:.4rem}.project-tile.is-seen .tile-seen-eye{display:block}.project-tile.is-matched.is-seen .tile-seen-eye{right:1.9rem}.tile-star{z-index:2;filter:drop-shadow(0 1px 3px #0009);pointer-events:none;line-height:0;display:block;position:absolute;top:.4rem;left:.4rem}.project-tile.is-starred{box-shadow:0 0 18px #efd47966}.project-tile.is-starred:hover{box-shadow:0 0 22px #efd4798c,0 8px 20px #0006}.project-empty-tile{color:#ffffff7a;border:1px solid #ffffff14;border-radius:8px;grid-column:1/-1;place-items:center;min-height:8rem;font-size:.9rem;display:grid}.tile-preview{position:absolute;inset:0;overflow:hidden}.tile-preview img{object-fit:cover;width:100%;height:100%;transition:transform .4s ease-out}.project-tile:hover .tile-preview img{transform:scale(1.05)}.tile-emoji{filter:drop-shadow(0 4px 12px #00000080);font-size:1.5rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.project-tile.featured .tile-emoji{font-size:2.5rem}.tile-gradient.blue{background:linear-gradient(135deg,#1a1f2e 0%,#0f1419 100%)}.tile-gradient.purple{background:linear-gradient(135deg,#1a1a2e 0%,#0f0f19 100%)}.tile-gradient.teal{background:linear-gradient(135deg,#0f1f2e 0%,#0a1419 100%)}.tile-gradient.dark{background:linear-gradient(135deg,#111 0%,#0a0a0a 100%)}.tile-gradient.orange{background:linear-gradient(135deg,#2a1f1a 0%,#1a1410 100%)}.tile-gradient.green{background:linear-gradient(135deg,#1a2e1a 0%,#0f190f 100%)}.tile-info{z-index:1;background:linear-gradient(#0000 0%,#000000e6 100%);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.15rem;padding:.6rem;display:flex;position:absolute;bottom:0;left:0;right:0}.tile-title{color:#fff;white-space:nowrap;text-overflow:ellipsis;max-width:70%;font-size:.7rem;font-weight:400;overflow:hidden}.tile-year{color:#fff6;font-size:.65rem;font-weight:300}.tile-year-dot{font-size:1.1rem;line-height:.5;transform:translateY(-2px)}@keyframes gradient-shift{0%,to{background-position:0%}50%{background-position:100%}}@media screen and (width<=900px){.projects-grid-section{max-width:600px}.projects-showcase{aspect-ratio:auto;grid-template-rows:auto;grid-template-columns:repeat(2,1fr);gap:.75rem}.project-tile.featured{aspect-ratio:16/9;grid-area:span 1/span 2}.project-tile{aspect-ratio:16/9}.project-tile.featured .tile-title{font-size:1rem}.project-tile.featured .tile-desc{font-size:.7rem}}@media screen and (width<=600px){.projects-showcase{grid-template-columns:1fr;gap:.75rem}.skills-row{gap:1rem}.year-filter{margin:0}.year-stump-stage,.year-stump{width:92px;height:92px}.year-stump-blur{display:none}.year-tick{display:block}.year-tap{pointer-events:auto;cursor:pointer}.project-tile.featured{aspect-ratio:16/10;grid-column:span 1}.project-tile{aspect-ratio:16/10}.project-tile.featured .tile-title{font-size:.9rem}.project-tile.featured .tile-desc{max-width:100%;font-size:.7rem}.tile-title{font-size:.75rem}}.contact-btn{-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:background .3s ease-in-out,color .3s ease-in-out,border-color .3s ease-in-out;position:relative}.contact-btn:hover{color:#000;background:#fff;border-color:#fff}.contact-btn .btn-default{white-space:nowrap;opacity:1;transition:opacity .2s ease-in-out;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.contact-btn .btn-reveal{white-space:nowrap;opacity:0;align-items:center;gap:.4rem;max-width:2.5rem;transition:max-width .3s ease-in-out,opacity .25s ease-in-out;display:flex;overflow:hidden}.contact-btn:hover .btn-default{opacity:0}.contact-btn:hover .btn-reveal{opacity:1;max-width:11.5rem}.contact-btn .btn-reveal img{filter:invert(0)}.gh-btn{-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:background .2s}.gh-btn:hover{background:var(--hover-bg)}.gh-handle{white-space:nowrap;opacity:0;max-width:0;margin-left:0;transition:max-width .4s cubic-bezier(.4,0,.2,1),opacity .3s,margin-left .4s cubic-bezier(.4,0,.2,1);display:inline-block;overflow:hidden}.gh-btn:hover .gh-handle{opacity:1;max-width:5rem;margin-left:.4rem}.project-modal{z-index:10000;visibility:hidden;pointer-events:none;position:fixed;inset:0}.project-modal.active{visibility:visible;pointer-events:all}.modal-backdrop{background:0 0;position:absolute;inset:0}.modal-container{scrollbar-gutter:stable;box-sizing:border-box;flex-direction:column;width:100%;height:100%;padding:1.25rem 2rem 6rem;display:flex;position:relative;overflow-y:auto}.modal-back{z-index:5;color:var(--fg-soft);font:inherit;cursor:pointer;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);opacity:0;border-radius:10px;align-self:flex-start;align-items:center;gap:.3rem;padding:.45rem .8rem .45rem .55rem;font-size:.85rem;font-weight:500;transition:color .18s,background .18s,border-color .18s,opacity .28s,transform .28s;display:inline-flex;position:sticky;top:0;transform:translateY(-6px)}.project-modal.active .modal-back{opacity:1;transition-delay:.26s;transform:translateY(0)}.modal-back:hover{color:var(--fg-strong)}body:has(.gallery-overlay.active) .modal-back{opacity:0;pointer-events:none}.modal-incomplete{z-index:5;font:inherit;color:#ff1f1f;cursor:pointer;opacity:0;background:0 0;border:none;align-items:center;padding:.45rem .55rem;font-size:.85rem;font-weight:500;line-height:1.2;transition:opacity .28s,transform .28s;display:inline-flex;position:absolute;top:0;right:0;transform:translateY(-6px)}.modal-incomplete[hidden]{display:none}.project-modal.active .modal-incomplete{opacity:1;transition-delay:.26s;transform:translateY(0)}.modal-incomplete-icon{opacity:.6;flex:none;transition:opacity .2s}.modal-incomplete-label{white-space:nowrap;opacity:0;max-width:0;transition:max-width .28s,margin-right .28s,opacity .22s;overflow:hidden}.modal-incomplete:hover .modal-incomplete-icon,.modal-incomplete.open .modal-incomplete-icon{opacity:1}.modal-incomplete:hover .modal-incomplete-label,.modal-incomplete.open .modal-incomplete-label{opacity:1;max-width:180px;margin-right:.4rem}.modal-content{flex-direction:column;gap:2rem;width:100%;max-width:600px;margin:0 auto;display:flex;position:relative}.modal-banner{max-width:100%;max-height:70vh;box-shadow:0 12px 60px -10px var(--banner-tint,transparent), 0 0 140px -40px var(--banner-tint,transparent);background:#111;border-radius:20px;align-self:center;position:relative;overflow:hidden}.modal-banner.no-preview{aspect-ratio:16/9;width:100%}.modal-banner-image{width:auto;max-width:100%;height:auto;max-height:70vh;display:block}.modal-banner-icon{filter:drop-shadow(0 10px 30px #00000080);pointer-events:none;justify-content:center;align-items:center;font-size:6rem;display:flex;position:absolute;inset:0}.modal-banner-scrim{pointer-events:none;background:linear-gradient(#0000 0%,#0000004d 35%,#000000b3 70%,#000000eb 100%);height:75%;position:absolute;bottom:0;left:0;right:0}.modal-banner-text{flex-direction:row;justify-content:space-between;align-items:flex-end;gap:1rem;padding:1.75rem 2rem;display:flex;position:absolute;bottom:0;left:0;right:0}.modal-details{opacity:0;flex-direction:column;gap:1.5rem;transition:opacity .35s,transform .35s;display:flex;transform:translateY(20px)}.modal-year{color:#ffffffb3;letter-spacing:.02em;order:2;font-size:.95rem;font-weight:300}.modal-year.modal-year-dot{font-size:1.6rem;line-height:.5;display:inline-block;transform:translateY(-3px)}.modal-banner-text h2{color:#fff;text-shadow:0 2px 20px #00000080;margin:0;font-size:2.5rem;font-weight:500}.modal-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem .85rem;display:flex}.modal-meta-links{flex-wrap:wrap;gap:.5rem;margin-left:auto;display:flex}.modal-meta-links:empty{display:none}.modal-meta-links a,.modal-desc .project-links a{background:var(--surface-3);border:1px solid var(--border-faint);color:var(--fg-soft);white-space:nowrap;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-radius:8px;align-items:center;gap:.4rem;padding:.4rem .7rem;font-size:.8rem;font-weight:500;text-decoration:none;transition:color .18s,background .18s,border-color .18s;display:inline-flex}.modal-tech{flex-wrap:wrap;gap:.5rem;display:flex}.tech-tag{background:var(--surface-2);border:1px solid var(--border-faint);color:#fffc;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-radius:20px;padding:.3rem .7rem;font-size:.8rem;font-weight:400}.modal-desc{color:#ffffffb3;font-size:1.1rem;line-height:1.8}.modal-desc p{margin:0 0 1rem}.modal-desc p:last-child{margin-bottom:0}.modal-desc h3{color:#ffffffe6;margin:1.25rem 0 .1rem;font-size:1rem;font-weight:500;line-height:1.3}.modal-desc h3:first-child{margin-top:0}.modal-desc .entry-heading{justify-content:space-between;align-items:flex-end;gap:.85rem;margin:3rem 0 .5rem;display:flex}.modal-desc .entry-heading:first-child{margin-top:0}.modal-desc .entry-title{flex-direction:column;display:flex}.modal-desc .entry-title h3{margin:0}.modal-desc .entry-heading .entry-year{color:#fff6;letter-spacing:.02em;font-size:.75rem;font-weight:300;line-height:1.2}.modal-desc img{object-fit:cover;cursor:zoom-in;border:3px solid #ffffff38;border-radius:6px;width:80px;height:80px;margin:.5rem 0;transition:transform .2s,box-shadow .2s;display:block}.modal-desc img:hover{transform:translateY(-2px);box-shadow:0 6px 18px #00000080}.modal-desc img.expanded{object-fit:contain;cursor:zoom-out;border:1px solid #ffffff40;border-radius:8px;width:100%;height:auto;max-height:80vh;margin:1rem 0;display:block}.modal-desc img.expanded:hover{box-shadow:none;transform:none}.modal-desc .video-thumb{cursor:zoom-in;background:#000;border:3px solid #ffffff38;border-radius:6px;width:80px;height:80px;margin:.5rem 0;transition:transform .2s,box-shadow .2s;display:block;position:relative;overflow:hidden}.modal-desc .video-thumb:hover{transform:translateY(-2px);box-shadow:0 6px 18px #00000080}.modal-desc .video-thumb>video{object-fit:cover;pointer-events:none;background:#000;width:100%;height:100%;display:block}.image-group .video-thumb{flex-shrink:0;margin:0}.video-play-icon{pointer-events:none;color:#fff;filter:drop-shadow(0 1px 1.5px #000000d9)drop-shadow(0 0 6px #0000008c);justify-content:center;align-items:center;width:38%;height:38%;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.video-play-icon svg{fill:currentColor;width:100%;height:100%}.video-close-btn{color:#fff;cursor:pointer;z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0000008c;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:background .2s,transform .2s;display:none;position:absolute;top:.6rem;right:.6rem}.video-close-btn:hover{background:#000c;transform:scale(1.08)}.modal-desc .video-thumb.expanded{aspect-ratio:16/9;cursor:default;width:100%;max-width:100%;height:auto;max-height:80vh;box-shadow:none;border:1px solid #ffffff40;border-radius:8px;margin:1rem 0;display:block;transform:none}.modal-desc .video-thumb.expanded>video{object-fit:contain;pointer-events:auto;width:100%;height:100%}.modal-desc .video-thumb.expanded .video-play-icon{display:none}.modal-desc .video-thumb.expanded .video-close-btn{display:flex}.modal-desc .gif-thumb{vertical-align:top;cursor:zoom-in;background:#000;border:3px solid #ffffff38;border-radius:6px;width:80px;height:80px;margin:.5rem 0;transition:transform .2s,box-shadow .2s;display:inline-block;position:relative;overflow:hidden}.modal-desc .gif-thumb:hover{transform:translateY(-2px);box-shadow:0 6px 18px #00000080}.modal-desc .gif-thumb>img{object-fit:cover;pointer-events:none;border:0;border-radius:0;width:100%;height:100%;margin:0;display:block}.gif-badge{letter-spacing:.04em;color:#fff;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000009e;border:1px solid #ffffff47;border-radius:4px;padding:.05rem .3rem;font-size:.62rem;font-weight:700;line-height:1.3;position:absolute;bottom:.3rem;right:.3rem}.image-group .gif-thumb{flex-shrink:0;margin:0}.modal-desc .gif-thumb.expanded{cursor:zoom-out;width:100%;max-width:100%;height:auto;box-shadow:none;border:1px solid #ffffff40;border-radius:8px;margin:1rem 0;display:block;transform:none}.modal-desc .gif-thumb.expanded>img{object-fit:contain;height:auto}.modal-desc .gif-thumb.expanded .gif-badge{bottom:.6rem;right:.6rem}.image-group{flex-wrap:nowrap;align-items:center;gap:.5rem;margin:1rem 0;display:flex;overflow:hidden}.image-group img{border:3px solid #ffffff38;border-radius:6px;flex-shrink:0;width:80px;height:80px;margin:0}.image-group .gif-thumb>img{border:0;width:100%;height:100%}.image-group-more{color:#ffffffeb;cursor:pointer;background:#ffffff0f;border:3px solid #ffffff38;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:80px;height:80px;font-size:.95rem;font-weight:500;display:flex}.modal-meta-links a:before,.modal-desc .project-links a:before{content:"";background-color:currentColor;width:16px;height:16px;-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10 5H8.2c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C5 6.52 5 7.08 5 8.2v7.6c0 1.12 0 1.68.218 2.108a2 2 0 0 0 .874.874C6.52 19 7.08 19 8.197 19h7.606c1.118 0 1.677 0 2.104-.218a2 2 0 0 0 .875-.874C19 17.48 19 16.92 19 15.803V14M20 9V4m0 0h-5m5 0-7 7'/></svg>") 50%/contain no-repeat;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10 5H8.2c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C5 6.52 5 7.08 5 8.2v7.6c0 1.12 0 1.68.218 2.108a2 2 0 0 0 .874.874C6.52 19 7.08 19 8.197 19h7.606c1.118 0 1.677 0 2.104-.218a2 2 0 0 0 .875-.874C19 17.48 19 16.92 19 15.803V14M20 9V4m0 0h-5m5 0-7 7'/></svg>") 50%/contain no-repeat}.modal-meta-links a.github:before,.modal-meta-links a.gh:before,.modal-meta-links a[data-icon=github]:before{-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.117-3.176 0 0 1.005-.322 3.3 1.23.957-.266 1.983-.399 3.003-.405 1.02.006 2.047.138 3.006.405 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.873.118 3.176.77.84 1.235 1.911 1.235 3.22 0 4.61-2.807 5.625-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z'/></svg>") 50%/contain no-repeat;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.117-3.176 0 0 1.005-.322 3.3 1.23.957-.266 1.983-.399 3.003-.405 1.02.006 2.047.138 3.006.405 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.873.118 3.176.77.84 1.235 1.911 1.235 3.22 0 4.61-2.807 5.625-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z'/></svg>") 50%/contain no-repeat}.modal-meta-links a:hover,.modal-desc .project-links a:hover{color:var(--fg-strong);background:var(--hover-bg);border-color:var(--border-soft)}.modal-desc .entry-heading .project-links{flex-wrap:wrap;flex-shrink:0;gap:.5rem;display:flex}.modal-banner.gradient{background-size:200% 200%;animation:15s infinite gradient-shift}.modal-banner.gradient.blue{background:linear-gradient(135deg,#1e3a5f 0%,#0d1f33 50%,#1e3a5f 100%)}.modal-banner.gradient.purple{background:linear-gradient(135deg,#2d1b4e 0%,#1a0f2e 50%,#2d1b4e 100%)}.modal-banner.gradient.teal{background:linear-gradient(135deg,#0d4a4a 0%,#082929 50%,#0d4a4a 100%)}.modal-banner.gradient.dark{background:linear-gradient(135deg,#1a1a1a 0%,#0d0d0d 50%,#1a1a1a 100%)}.modal-banner.gradient.orange{background:linear-gradient(135deg,#4a2d0d 0%,#291808 50%,#4a2d0d 100%)}.modal-banner.gradient.green{background:linear-gradient(135deg,#0d4a1a 0%,#08290d 50%,#0d4a1a 100%)}.inline-gallery{flex-direction:column;gap:.6rem;margin:1rem 0;display:flex}.inline-gallery-main{background:#00000059;border:1px solid #ffffff2e;border-radius:8px;justify-content:center;align-items:center;width:100%;min-height:240px;max-height:70vh;display:flex;position:relative;overflow:hidden}.inline-gallery-stage{justify-content:center;align-items:center;width:100%;max-height:70vh;display:flex}.modal-desc .inline-gallery img{margin:0}.modal-desc .inline-gallery-image{object-fit:contain;cursor:zoom-out;border:none;border-radius:0;width:auto;max-width:100%;height:auto;max-height:70vh;display:block}.modal-desc .inline-gallery-image:hover{box-shadow:none;transform:none}.modal-desc .inline-gallery-video{background:#000;border:none;border-radius:0;width:auto;max-width:100%;height:auto;max-height:70vh;display:block}.inline-gallery-nav{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:2;background:#0000008c;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:background .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.inline-gallery-prev{left:.75rem}.inline-gallery-next{right:.75rem}.inline-gallery-nav:hover{background:#000c}.inline-gallery-thumbs{scrollbar-width:thin;scrollbar-color:#ffffff40 transparent;gap:.5rem;padding:.25rem .1rem .5rem;display:flex;overflow:auto hidden}.inline-gallery-thumbs::-webkit-scrollbar{height:6px}.inline-gallery-thumbs::-webkit-scrollbar-thumb{background:#ffffff40;border-radius:3px}.modal-desc .inline-gallery-thumb{object-fit:cover;cursor:zoom-in;opacity:.6;border:3px solid #ffffff38;border-radius:6px;flex-shrink:0;width:80px;height:80px;margin:0;transition:opacity .18s,border-color .18s,transform .18s}.modal-desc .inline-gallery-thumb:hover{opacity:.9;box-shadow:none;transform:none}.modal-desc .inline-gallery-thumb.is-active{opacity:1;border-color:var(--banner-tint,#fff);cursor:zoom-out}.modal-desc .inline-gallery-thumb.video-thumb{vertical-align:top;background:#000;display:inline-block;position:relative;overflow:hidden}.modal-desc .inline-gallery-thumb.video-thumb:hover{box-shadow:none;transform:none}.modal-desc .inline-gallery-thumb.video-thumb>video{object-fit:cover;pointer-events:none;width:100%;height:100%;display:block}.gallery-overlay{z-index:11000;visibility:hidden;opacity:0;transition:opacity .25s,visibility 0s linear .25s;position:fixed;inset:0}.gallery-overlay.active{visibility:visible;opacity:1;transition:opacity .25s}.gallery-backdrop{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:#000000f0;position:absolute;inset:0}.gallery-stage{box-sizing:border-box;justify-content:center;align-items:center;width:100%;height:100%;padding:4rem 5rem;display:flex;position:relative}.gallery-image,.gallery-video{object-fit:contain;border-radius:6px;max-width:100%;max-height:100%;display:block;box-shadow:0 20px 80px #0009}.gallery-video{background:#000}.gallery-close,.gallery-nav{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:5;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .2s;display:flex;position:fixed}.gallery-close{width:40px;height:40px;top:1.5rem;right:1.5rem}.gallery-close:hover{background:var(--hover-bg);transform:scale(1.08)rotate(90deg)}.gallery-nav{width:48px;height:48px;top:50%;transform:translateY(-50%)}.gallery-prev{left:1.5rem}.gallery-next{right:1.5rem}.gallery-nav:hover{background:var(--hover-bg)}.gallery-counter{color:#ffffffb3;letter-spacing:.05em;z-index:5;font-size:.9rem;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%)}@media screen and (width<=768px){.gallery-stage{padding:4rem 1rem}.gallery-nav{width:40px;height:40px}.gallery-prev{left:.75rem}.gallery-next{right:.75rem}.modal-container{padding:1rem 1.5rem 5rem}.modal-content{gap:1.5rem}.modal-banner-text h2{font-size:1.75rem}.modal-banner-icon{font-size:3.5rem}.modal-banner-text{padding:1.25rem}.modal-desc{font-size:1rem}.about-prose>p:first-of-type:first-letter,.expertise-prose>p:first-of-type:first-letter,.modal-desc p.prose-dropcap:first-letter{font-size:var(--dropcap-mobile-fallback-size);margin-right:.12em;line-height:.84}@supports (initial-letter:2) or (-webkit-initial-letter:2){.about-prose>p:first-of-type:first-letter,.expertise-prose>p:first-of-type:first-letter,.modal-desc p.prose-dropcap:first-letter{-webkit-initial-letter:var(--dropcap-mobile-lines);initial-letter:var(--dropcap-mobile-lines);font-size:inherit;margin-right:.14em;line-height:1}}.tech-tag{font-size:.72rem}}@media screen and (width<=480px){.modal-banner.no-preview{aspect-ratio:4/3}.modal-banner{border-radius:12px}.modal-banner-text h2{font-size:1.5rem}}@media (pointer:coarse) and (hover:none){.icon-overlays{display:none}}
