@import "https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,400&display=swap";:root{--text:#9494a8;--text-h:#eeeef5;--bg:#08080f;--border:#1e1e2e;--code-bg:#111118;--accent:#7c6df0;--accent-bg:#7c6df01f;--accent-border:#7c6df059;--sans:"DM Sans", system-ui, sans-serif;--heading:"Syne", system-ui, sans-serif;font:16px/150% var(--sans);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;width:100%;min-height:100%;scroll-padding-bottom:max(2rem, env(safe-area-inset-bottom,0px));overflow:hidden auto}body{background:var(--bg);width:100%;min-height:100%;margin:0;overflow:hidden visible}#root{width:100%;min-height:100%;overflow:visible}h1,h2,h3{font-family:var(--heading);color:var(--text-h)}a{color:inherit}button{font-family:inherit}img{max-width:100%}.carousel-section{z-index:2;flex-direction:column;justify-content:center;align-items:center;width:100%;max-width:100%;min-height:auto;padding:.5rem 1rem 2rem;display:flex;position:relative}.carousel-inner{z-index:1;width:100%;max-width:520px;position:relative}.carousel-viewport{touch-action:pan-y;-webkit-user-select:none;user-select:none;perspective:1200px;background:0 0;border:none;width:100%;max-width:100%;position:relative;overflow:clip visible}.carousel-track{will-change:transform;z-index:1;width:100%;transition:none;display:flex;position:relative}.carousel-track.animating{transition:transform .45s cubic-bezier(.22,1,.36,1)}.carousel-track.dragging{transition:none}.carousel-arrow,.carousel-dot,.slide-image-btn{pointer-events:auto}.carousel-slide{box-sizing:border-box;flex-direction:column;flex:0 0 100%;align-items:center;width:100%;max-width:100%;padding:2rem 1.25rem 1rem;display:flex;overflow:visible}.slide-stage{z-index:1;justify-content:center;align-items:center;width:100%;padding:2.5rem 0 .5rem;display:flex;position:relative}.slide-frame{z-index:1;width:100%;max-width:280px;transform-style:preserve-3d;will-change:transform, opacity;transition:transform .45s cubic-bezier(.22,1,.36,1),opacity .45s;position:relative}.carousel-track.dragging .slide-frame{transition:none}.slide-image-btn{cursor:pointer;z-index:1;background:#0a0a10;border:none;border-radius:1.25rem;width:100%;padding:0;transition:box-shadow .35s,transform .35s;display:block;position:relative;overflow:hidden;box-shadow:0 4px 6px #00000059,0 24px 60px #0000008c,0 0 0 1px #ffffff14}.carousel-slide.active .slide-image-btn{box-shadow:0 0 0 1px #b4a8ff59,0 0 36px #b4a8ff52,0 0 72px #7c6df038,0 8px 20px #0006,0 24px 48px #0000008c}.slide-image-btn:hover{transform:translateY(-3px)}.slide-image-btn img{aspect-ratio:252/558;object-fit:contain;object-position:center top;pointer-events:none;background:#0a0a10;width:100%;height:auto;display:block}.slide-open-hint{letter-spacing:.04em;text-transform:uppercase;color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;background:#08080fb8;border-radius:2rem;padding:.35rem .65rem;font-size:.65rem;font-weight:600;transition:opacity .25s;position:absolute;bottom:.75rem;right:.75rem}.slide-image-btn:hover .slide-open-hint,.carousel-slide.active .slide-open-hint{opacity:1}.carousel-dots{z-index:3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#08080f8c;border-radius:2rem;gap:.4rem;padding:.35rem .6rem;display:flex;position:absolute;top:1rem;left:50%;transform:translate(-50%)}.carousel-dot{cursor:pointer;background:#ffffff59;border:none;border-radius:50%;width:7px;height:7px;padding:0;transition:background .3s,transform .3s,width .3s}.carousel-dot.active{background:#fff;border-radius:4px;width:18px;transform:scale(1.15)}.carousel-arrow{z-index:3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;cursor:pointer;background:#08080fa6;border:1px solid #ffffff1f;border-radius:50%;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;padding:0 0 .15rem;font-size:1.6rem;line-height:1;transition:background .2s,opacity .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.carousel-arrow:hover:not(:disabled){background:#7c6df080}.carousel-arrow:disabled{opacity:.25;cursor:default}.carousel-arrow--prev{left:.25rem}.carousel-arrow--next{right:.25rem}.carousel-hint{text-align:center;color:var(--text);opacity:.5;text-shadow:0 1px 8px #08080fd9,0 0 20px #08080f80;margin:1rem 0 0;font-size:.75rem}.carousel-hint--mobile,.carousel-scroll-cue{display:none}.card-label{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-sizing:border-box;background:#0c0c14bf;border:1px solid #7c6df033;border-radius:.65rem;flex-direction:column;align-items:center;gap:.4rem;width:100%;min-width:0;max-width:280px;margin-top:.75rem;margin-left:auto;margin-right:auto;padding:.65rem .85rem;display:flex}.card-name{font-family:var(--heading);color:#f0f0f5;letter-spacing:.06em;text-transform:uppercase;text-align:center;text-shadow:0 1px 8px #08080fd9,0 0 20px #08080f80;width:100%;font-size:.9rem;font-weight:700}.card-tech{color:#a0a0b8;text-align:left;flex-direction:column;align-items:flex-start;gap:.25rem;width:100%;font-size:.72rem;display:flex}.card-tech span{overflow-wrap:anywhere;word-break:break-word;text-shadow:0 1px 6px #08080fcc,0 0 16px #08080f66;width:100%;display:block}.card-tech strong{color:var(--accent);margin-right:.2rem;font-weight:600}@media (width<=768px){.carousel-section{justify-content:flex-start;padding:0 0 .5rem}.carousel-inner{flex-direction:column;width:100%;max-width:100%;display:flex}.carousel-viewport{border-radius:0;width:100%}.carousel-slide{justify-content:flex-start;padding:1.5rem 1rem .25rem}.slide-stage{width:100%;padding:1.5rem 0 .25rem}.slide-frame{max-width:min(62vw,260px);margin:0 auto}.slide-image-btn img{aspect-ratio:252/558;width:auto;max-width:100%;max-height:32dvh;margin:0 auto}.slide-image-btn{width:100%;margin:0 auto}.card-label{box-sizing:border-box;width:100%;max-width:min(62vw,260px);margin-top:.5rem;padding:.5rem .65rem}.card-tech{font-size:.65rem}.carousel-arrow,.carousel-hint--desktop{display:none}.carousel-hint--mobile{margin:0;padding:0 1rem .5rem;display:block}.carousel-scroll-cue{right:1rem;bottom:max(1rem, env(safe-area-inset-bottom));z-index:3;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;text-decoration:none;animation:2s ease-in-out infinite scroll-cue-bounce;display:flex;position:absolute}.carousel-scroll-cue-icon{border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);opacity:.7;width:.55rem;height:.55rem;display:block;transform:rotate(45deg)translateY(-2px)}}@keyframes scroll-cue-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.about-section{z-index:2;border-top:1px solid var(--border);overflow-wrap:break-word;word-wrap:break-word;width:100%;max-width:100%;padding:6rem 1.5rem;position:relative}.about-section:before{content:"";pointer-events:none;background:radial-gradient(58% 60% at 50% 45%,#b4aaff2e 0%,#7c6df014 45%,#0000 80%);position:absolute;inset:0}.about-inner{z-index:1;width:100%;min-width:0;max-width:720px;margin:0 auto;position:relative}.about-text{overflow-wrap:break-word;word-wrap:break-word;width:100%;min-width:0}.about-eyebrow{letter-spacing:.2em;text-transform:uppercase;color:var(--accent);text-align:center;text-shadow:0 1px 8px #08080fd9,0 0 20px #08080f80;margin:0 0 .75rem;font-size:.8rem;font-weight:600}.about-photo{border:1px solid #7c6df040;border-radius:1rem;width:min(220px,55vw);margin:0 auto 1.5rem;display:block;overflow:hidden;box-shadow:0 8px 32px #00000073,0 0 0 1px #ffffff0f}.about-photo img{aspect-ratio:480/721;object-fit:cover;object-position:center top;width:100%;height:auto;display:block}.about-title{font-family:var(--heading);color:var(--text-h);letter-spacing:-.03em;text-shadow:0 2px 12px #08080fe6,0 0 32px #08080f99;margin:0 0 1.5rem;font-size:clamp(1.8rem,4vw,2.5rem);font-weight:700;line-height:1.15}.about-body{color:var(--text);overflow-wrap:anywhere;word-break:break-word;text-shadow:0 1px 8px #08080fd9,0 0 20px #08080f80;max-width:100%;margin:0 0 1.25rem;font-size:1rem;line-height:1.7}.about-headline{font-family:var(--heading);color:var(--text-h);letter-spacing:-.02em;overflow-wrap:anywhere;word-break:break-word;text-shadow:0 2px 12px #08080fe6,0 0 32px #08080f99;max-width:100%;margin:2rem 0 1.25rem;font-size:clamp(1.35rem,3.5vw,1.85rem);font-weight:700;line-height:1.25}.about-experience{flex-direction:column;gap:.85rem;margin:0 0 1.5rem;padding:0;list-style:none;display:flex}.about-experience li{color:var(--text);overflow-wrap:anywhere;word-break:break-word;text-shadow:0 1px 8px #08080fd9,0 0 20px #08080f80;max-width:100%;font-size:.95rem;line-height:1.65}.about-experience strong,.about-body--knowledge strong{color:var(--accent);font-weight:600}.about-body--knowledge{margin-bottom:0}@media (width<=768px){.about-section{padding:2.5rem 1.25rem 2rem}.about-photo{aspect-ratio:480/430;width:100%;max-width:100%}.about-photo img{width:100%;height:100%;aspect-ratio:unset;object-fit:cover;object-position:top center}.about-headline{font-size:clamp(1.2rem,5vw,1.6rem)}}.app{background:var(--bg);width:100%;min-height:100dvh;padding-bottom:max(3rem, env(safe-area-inset-bottom,0px));position:relative;overflow:hidden visible}.app-content{z-index:1;width:100%;max-width:100%;position:relative;overflow:hidden visible}.page-spotlights{pointer-events:none;z-index:0;width:100%;min-height:100%;position:absolute;inset:0;overflow:visible}.page-spotlight{pointer-events:none;max-width:100%;position:absolute;left:50%;transform:translate(-50%)}.page-spotlight--header{background:radial-gradient(52% 85% at 50% 0,#b4aaff73 0%,#7c6df047 25%,#7c6df01f 50%,#38bdf80f 65%,#0000 88%);width:100%;height:28vh;top:-5%}.page-spotlight--about{background:radial-gradient(52% 80%,#b4aaff66 0%,#7c6df03d 28%,#38bdf81a 52%,#0000 88%);width:100%;height:75vh;top:38%}.page-spotlight--footer{background:radial-gradient(52% 85% at 50% 100%,#b4aaff6b 0%,#7c6df042 28%,#7c6df01a 52%,#0000 88%);width:100%;height:70vh;top:auto;bottom:0}.page-spotlight--left{background:radial-gradient(65% 70% at 0%,#7c6df047 0%,#7c6df01f 40%,#0000 85%);width:min(38vw,200px);height:80vh;top:45%;left:0;transform:none}.page-spotlight--right{background:radial-gradient(65% 70% at 100%,#38bdf838 0%,#7c6df024 38%,#0000 85%);width:min(38vw,200px);height:75vh;top:48%;left:auto;right:0;transform:none}.site-header{z-index:2;text-align:center;padding:2rem 1.5rem .5rem;position:relative}.site-name{font-family:var(--sans);letter-spacing:.02em;color:var(--text-h);text-shadow:0 2px 12px #08080fe6,0 0 32px #08080f99;margin:0;font-size:clamp(1.35rem,4.5vw,2rem);font-weight:700;line-height:1.25}.site-eyebrow{letter-spacing:.2em;text-transform:uppercase;color:var(--accent);text-shadow:0 1px 8px #08080fd9,0 0 20px #08080f80;margin:.5rem 0 0;font-size:.8rem;font-weight:600}.site-footer{z-index:2;box-sizing:border-box;width:100%;max-width:100%;padding:2rem 1rem max(4rem, calc(env(safe-area-inset-bottom,0px) + 2.5rem));text-align:center;border-top:1px solid var(--border);position:relative}.site-footer p{color:var(--text);opacity:.6;text-shadow:0 1px 8px #08080fd9,0 0 20px #08080f80;margin:0;font-size:.85rem}.site-social{flex-wrap:wrap;justify-content:center;gap:.75rem;margin-bottom:1.5rem;display:flex}.site-social-link{box-sizing:border-box;width:9rem;height:2.75rem;color:var(--text-h);border:1px solid var(--border);cursor:pointer;white-space:nowrap;text-shadow:0 1px 8px #08080fd9,0 0 20px #08080f80;background:0 0;border-radius:.5rem;justify-content:center;align-items:center;padding:0 .5rem;font-family:inherit;font-size:.9rem;font-weight:600;text-decoration:none;transition:opacity .2s,transform .2s,border-color .2s,background .2s;display:inline-flex}.site-social-link--copied{border-color:var(--accent-border);background:var(--accent-bg);color:var(--accent)}.site-social-link:hover{opacity:.9;border-color:var(--accent-border);background:var(--accent-bg);transform:translateY(-1px)}@media (width<=768px){.site-header{padding:1rem 1rem .25rem}.site-name{letter-spacing:.01em;font-size:clamp(1.2rem,5.5vw,1.6rem)}.app{padding-bottom:max(5rem, calc(env(safe-area-inset-bottom,0px) + 3rem))}.site-footer{padding:2rem 1rem max(5rem, calc(env(safe-area-inset-bottom,0px) + 3rem))}}.page-end-spacer{pointer-events:none;width:100%;height:0}@media (width<=768px){.page-end-spacer{height:max(6rem, calc(env(safe-area-inset-bottom,0px) + 4rem))}}
