@font-face{font-family:'Poppins Subset';src:url('assets/fonts/poppins-semibold-subset.woff') format('woff');font-weight:600;font-style:normal;font-display:swap}:root{--bg:#0d0d0f;--bg-lift:#161619;--text:#d9d9d9;--muted:#7a7a82;--border:#262629;--border-hi:#4a4a52;--accent:150 160 255;--glass:rgb(16 16 20 / 30%);--glass-hi:rgb(22 22 28 / 44%);--glass-edge:rgb(255 255 255 / 11%);--glass-edge-hi:rgb(255 255 255 / 24%);--glass-blur:blur(16px) saturate(130%);--veil-mid:26%;--veil-out:42%;--veil-edge:58%;--safe-top:env(safe-area-inset-top, 0px);--safe-right:env(safe-area-inset-right, 0px);--safe-bottom:env(safe-area-inset-bottom, 0px);--safe-left:env(safe-area-inset-left, 0px);--ease:cubic-bezier(.16, 1, .3, 1);--ease-soft:cubic-bezier(.4, 0, .2, 1);--gate-ms:500ms;--gate-blur:12px;--avatar-size:clamp(56px, min(69.4px + 2.07vw, 17vh), 88px);--brand-gap:clamp(13px, min(17.5px + 0.5vw, 3.6vh), 22px);--mark-width:min(72vw, clamp(260px, 194px + 11.76vw, 300px), 46vh);--group-gap:calc(var(--brand-gap) * 1.35);--cell:clamp(50px, 13.5vw, 62px);--stage-max:min(clamp(320px, 62vw, 560px),
                   calc(100vw - 2 * clamp(14px, 4vw, 28px)));--social-cell:min(62px, calc((var(--stage-max) - 4px) / 6))}*{box-sizing:border-box}body,html{min-height:100%;margin:0}html{background:var(--bg)}body{min-width:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden;overflow-y:auto}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.backdrop{position:fixed;inset:0;overflow:hidden;background:var(--bg);height:100lvh;filter:blur(0px);transition:filter var(--gate-ms) var(--ease-soft)}.backdrop-video{position:absolute;top:calc(-2 * var(--gate-blur));left:calc(-2 * var(--gate-blur));width:calc(100% + 4 * var(--gate-blur));height:calc(100% + 4 * var(--gate-blur));object-fit:cover;pointer-events:none}.backdrop-veil{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 90% 70% at 50% 45%,rgb(13 13 15 / var(--veil-mid)) 0,rgb(13 13 15 / var(--veil-out)) 60%,rgb(13 13 15 / var(--veil-edge)) 100%)}.scene{position:relative;z-index:1;min-height:100svh;overflow:hidden}.field{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.aura{position:absolute;top:50%;left:50%;width:min(1180px,130vw);height:min(1180px,130vw);transform:translate(-50%,-50%);pointer-events:none;background:radial-gradient(circle at 50% 50%,rgb(var(--accent) / 7.5%) 0,rgb(var(--accent) / 3.2%) 26%,rgb(var(--accent) / 0%) 62%);animation:breathe 13s var(--ease-soft) infinite}.grain{position:absolute;inset:-120px;pointer-events:none;opacity:.034;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:7s steps(6) infinite drift}.stage{position:relative;min-height:100svh;display:grid;place-items:safe center;padding:clamp(14px,4vw,28px)}.brand{display:flex;flex-direction:column;align-items:center;max-width:100%;transform:translateY(-3vh)}.avatar{position:relative;width:var(--avatar-size);height:var(--avatar-size);margin-bottom:var(--brand-gap)}.avatar picture{display:contents}.avatar img{position:relative;width:100%;height:100%;display:block;border-radius:50%;object-fit:cover;box-shadow:0 0 0 1px rgb(255 255 255 / 7%),0 18px 44px rgb(0 0 0 / 55%);transition:transform 620ms var(--ease)}.avatar-glow{position:absolute;inset:-34%;border-radius:50%;background:radial-gradient(circle at 50% 50%,rgb(var(--accent) / 20%) 0,rgb(var(--accent) / 0%) 68%);opacity:.85;animation:breathe 9s var(--ease-soft) infinite;animation-name:breathe-local}.avatar:hover img{transform:scale(1.045)}.wordmark{position:relative;display:block;width:var(--mark-width)}.wordmark::before{content:'';position:absolute;inset:-18% -8%;background:url("assets/sparkles/whitesparkle.gif") 50% 50%/90px 68px;opacity:.42;pointer-events:none}.wordmark img{position:relative;width:100%;height:auto;display:block;user-select:none;-webkit-user-drag:none}.music,.socials{max-width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--glass-edge);border-radius:10px;background:var(--glass);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:border-color 240ms var(--ease),background-color 240ms var(--ease),box-shadow 320ms var(--ease)}.socials{margin-top:var(--brand-gap)}.music:hover,.socials:hover{border-color:var(--glass-edge-hi);background:var(--glass-hi);box-shadow:0 0 34px rgb(var(--accent) / 7%)}.music-toggle,.social{height:48px;flex:none;display:grid;place-items:center;color:#787880;text-decoration:none;transition:color 220ms var(--ease),transform 320ms var(--ease)}.music-toggle{width:var(--cell)}.social{width:var(--social-cell)}.music-toggle svg,.social svg{display:block}.music-toggle:hover,.social:hover{color:var(--text);transform:translateY(-1px)}.music-toggle:active,.social:active{transform:translateY(0)}.avatar a:focus-visible,.music-toggle:focus-visible,.social:focus-visible{outline:#bbb solid 2px;outline-offset:-4px;border-radius:6px}.projects{margin-top:var(--brand-gap);width:var(--stage-max);display:grid;grid-template-columns:1fr 1px 1fr;overflow:hidden;border:1px solid var(--glass-edge);border-radius:14px;background:var(--glass);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:border-color 240ms var(--ease),background-color 240ms var(--ease),box-shadow 320ms var(--ease)}.projects:hover{border-color:var(--glass-edge-hi);background:var(--glass-hi);box-shadow:0 0 34px rgb(var(--accent) / 7%)}.projects::before{content:'';grid-column:2;grid-row:1;align-self:stretch;background:var(--glass-edge)}.project{grid-row:1;min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:clamp(12px,2.4vw,16px)}.project:first-of-type{grid-column:1}.project:last-of-type{grid-column:3}.project-shot{width:100%;margin:0;padding:0;border:1px solid var(--glass-edge);border-radius:8px;background:0 0;overflow:hidden;cursor:zoom-in;display:block;-webkit-tap-highlight-color:transparent;transition:border-color 240ms var(--ease),box-shadow 320ms var(--ease),transform 320ms var(--ease)}.project-shot img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover}.project-shot:focus-visible,.project-shot:hover{border-color:var(--glass-edge-hi);box-shadow:0 0 26px rgb(var(--accent) / 12%);transform:translateY(-1px)}.project-shot:active{transform:translateY(0)}.project-name{margin:2px 0 0;font-size:12.5px;font-weight:600;line-height:1.25;color:var(--text);overflow-wrap:anywhere;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px}.project-tag{flex:none;padding:1px 6px;border:1px solid var(--glass-edge-hi);border-radius:999px;font-size:10px;font-weight:500;color:var(--muted)}.project-desc{margin:0;font-size:11.5px;line-height:1.45;color:var(--muted);text-wrap:pretty}.project-link{margin-top:auto;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--glass-edge);border-radius:8px;background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:11.5px;font-weight:500;color:#787880;text-decoration:none;transition:color 220ms var(--ease),border-color 240ms var(--ease),box-shadow 320ms var(--ease),transform 320ms var(--ease)}.project-link svg{display:block}.project-link span{transform:translateY(-.06em)}.project-link:focus-visible,.project-link:hover{color:var(--text);border-color:var(--glass-edge-hi);background:var(--glass-hi);box-shadow:0 0 22px rgb(var(--accent) / 9%);transform:translateY(-1px)}.project-link:active{transform:translateY(0)}.project-link:focus-visible,.project-shot:focus-visible{outline:#bbb solid 2px;outline-offset:2px}.lightbox{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:clamp(16px,5vw,56px)}.lightbox[hidden]{display:none}.lightbox-backdrop{position:absolute;inset:0;background:rgb(6 6 8 / 82%);opacity:0;transition:opacity 260ms var(--ease-soft);cursor:zoom-out}.lightbox-figure{position:relative;margin:0;max-width:100%;max-height:100%;display:flex;flex-direction:column;align-items:center;gap:10px;opacity:0;transform:scale(.94) translateY(10px);transition:opacity .3s var(--ease),transform 380ms var(--ease)}.lightbox-img{display:block;max-width:100%;max-height:calc(100svh - 2 * clamp(16px,5vw,56px) - 34px);width:auto;height:auto;border:1px solid var(--border-hi);border-radius:10px;box-shadow:0 30px 80px rgb(0 0 0 / 60%);object-fit:contain}.lightbox-caption{font-size:11.5px;color:var(--muted);text-align:center;overflow-wrap:anywhere}.lightbox-close{position:absolute;top:clamp(12px,3vw,22px);right:clamp(12px,3vw,22px);width:34px;height:34px;display:grid;place-items:center;padding:0;border:1px solid var(--glass-edge);border-radius:999px;background:var(--glass-hi);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:#9a9aa2;cursor:pointer;opacity:0;transform:scale(.9);transition:opacity 240ms var(--ease-soft),transform 260ms var(--ease),color .2s var(--ease),border-color .2s var(--ease);-webkit-tap-highlight-color:transparent}.lightbox-close:focus-visible,.lightbox-close:hover{color:var(--text);border-color:var(--glass-edge-hi);transform:scale(1.06)}.lightbox.is-open .lightbox-backdrop{opacity:1}.lightbox.is-open .lightbox-figure{opacity:1;transform:none}.lightbox.is-open .lightbox-close{opacity:1;transform:scale(1)}.lightbox.is-open .lightbox-close:focus-visible,.lightbox.is-open .lightbox-close:hover{transform:scale(1.06)}.music-row{position:fixed;left:clamp(14px,4vw,28px);bottom:clamp(14px,4vw,28px);z-index:2;display:flex;max-width:calc(100% - 2 * clamp(14px,4vw,28px))}.music-row[hidden]{display:none}.music{min-width:0}.music-toggle{margin:0;padding:0;border:0;background:0 0;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}.music-off,.music-wave{transition:opacity 220ms var(--ease)}.music-off,.music.is-quiet .music-wave{opacity:0}.music.is-quiet .music-off{opacity:1}.music-toggle svg{transform:translate(.92px,1.72px)}.music.is-quiet .music-toggle svg{transform:translate(.22px,1.72px)}.gate{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:rgb(9 9 11 / 80%);-webkit-tap-highlight-color:transparent;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);opacity:0;visibility:hidden;transition:opacity var(--gate-ms) var(--ease-soft),-webkit-backdrop-filter var(--gate-ms) var(--ease-soft),backdrop-filter var(--gate-ms) var(--ease-soft),visibility 0s linear var(--gate-ms)}.gated .gate{opacity:1;visibility:visible;-webkit-backdrop-filter:blur(var(--gate-blur));backdrop-filter:blur(var(--gate-blur));transition:opacity var(--gate-ms) var(--ease-soft),-webkit-backdrop-filter var(--gate-ms) var(--ease-soft),backdrop-filter var(--gate-ms) var(--ease-soft),visibility 0s}@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){:root{--glass:rgb(16 16 20 / 74%);--glass-hi:rgb(22 22 28 / 84%)}.gated .backdrop{filter:blur(var(--gate-blur))}}.gate-message{margin:0;font-family:'Poppins Subset',ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-size:30px;line-height:36px;font-weight:600;text-align:center;color:#fff;overflow-wrap:break-word;user-select:none}.js [data-reveal]{opacity:0;transform:translateY(12px) scale(.985)}.ready [data-reveal]{animation:reveal .9s var(--ease) both}.ready [data-reveal="1"]{animation-delay:60ms}.ready [data-reveal="2"]{animation-delay:.2s}.ready [data-reveal="3"]{animation-delay:360ms}.ready [data-reveal="4"]{animation-delay:480ms}.ready .field{animation:fade-in 1.5s var(--ease-soft) both}.ready .aura{animation:breathe 13s var(--ease-soft) infinite,fade-in 1.9s var(--ease-soft) both}@keyframes reveal{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes breathe{0%,100%{opacity:.72;transform:translate(-50%,-50%) scale(1)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.075)}}@keyframes breathe-local{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.09)}}@keyframes drift{0%,100%{transform:translate(0,0)}20%{transform:translate(-14px,8px)}40%{transform:translate(9px,-12px)}60%{transform:translate(-8px,-6px)}80%{transform:translate(12px,10px)}}@media (max-width:560px){.brand{transform:translateY(-2vh)}}@media (max-width:700px){.brand{transform:none}.projects{grid-template-columns:1fr;grid-template-rows:auto 1px auto}.projects::before{grid-column:1;grid-row:2;justify-self:stretch}.project:first-of-type{grid-column:1;grid-row:1}.project:last-of-type{grid-column:1;grid-row:3}}@media (max-width:700px),(max-height:540px) and (orientation:landscape) and (pointer:coarse){.scene{display:flex;flex-direction:column}.music-row{position:static;order:-1;align-self:flex-start;margin:14px 0 0 clamp(14px,4vw,28px);z-index:auto;max-width:calc(100% - 2 * clamp(14px,4vw,28px))}.stage{min-height:0;flex:1 1 auto;padding-top:8px;padding-bottom:calc(clamp(14px,4vw,28px) + var(--safe-bottom));padding-left:calc(clamp(14px,4vw,28px) + var(--safe-left));padding-right:calc(clamp(14px,4vw,28px) + var(--safe-right))}body{position:relative}.backdrop{position:absolute;inset:0;height:auto}}@media (max-height:520px){.brand{transform:none}}@media (max-height:520px) and (orientation:landscape){.music-row{left:calc(var(--safe-left) + clamp(14px,4vw,28px));bottom:calc(var(--safe-bottom) + clamp(14px,4vw,28px))}.stage{padding-left:calc(clamp(14px,4vw,28px) + var(--safe-left));padding-right:calc(clamp(14px,4vw,28px) + var(--safe-right));padding-bottom:calc(clamp(14px,4vw,28px) + var(--safe-bottom))}}@media (prefers-reduced-motion:reduce){.aura,.avatar-glow,.gate-message,.grain{animation:none}.ready [data-reveal]{animation-duration:1ms}.avatar:hover img,.music-toggle:hover,.social:hover{transform:none}.project-link:focus-visible,.project-link:hover,.project-shot:focus-visible,.project-shot:hover{transform:none}.lightbox-close,.lightbox-figure,.lightbox.is-open .lightbox-close,.lightbox.is-open .lightbox-figure{transform:none}}