.image-view{width:100%;height:100%;position:relative}.image-view .image{object-fit:contain;border-radius:var(--size-rounded);box-shadow:0 2px 8px var(--black-a-m)}
.loading{z-index:30;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.loading.is-loading{-webkit-backdrop-filter:blur(2vw);backdrop-filter:blur(2vw);background:radial-gradient(circle at top,#6fb6d733,#0000 42%),#06111fc7}.loading.is-failed{-webkit-backdrop-filter:blur(2vw);backdrop-filter:blur(2vw);background:#06111feb}.loading-panel{background:var(--bg-layer-2);border-radius:var(--size-rounded);text-align:center;border:1px solid #ffffff1f;min-width:min(22rem,100vw - 3rem);padding:1.4rem 1.6rem 1.8rem;box-shadow:0 20px 40px #00000047,inset 0 0 0 1px #ffffff08}.loading-kicker{font-size:var(--size-caption);text-wrap:wrap;letter-spacing:.18em;text-transform:uppercase;color:#ffffff94;margin-bottom:.45rem}.loading-title{color:var(--gold-100);font-size:var(--size-title);text-wrap:wrap;margin-top:.45rem}.loading-progress{background:#ffffff1f;border-radius:9999rem;width:100%;height:max(.8rem,1.2vw);margin:max(1.2rem,2vh) 0 0;position:relative;overflow:hidden}.loading-progress-bar{transform-origin:0;background:linear-gradient(90deg,#fbc253b3,#fbc253);transition:transform .2s;position:absolute;inset:0;box-shadow:0 0 24px #fbc2535c}
.modal-backdrop{z-index:20;background:var(--black-a-s);-webkit-backdrop-filter:blur(1.2vw);backdrop-filter:blur(1.2vw);place-items:center;animation:.2s modal-in;display:grid;position:fixed;inset:0}[data-theme=day] .modal-backdrop{background:#c2e2f04d}[data-theme=night] .modal-backdrop{background:#040a1266}.modal{background:var(--bg-layer-1);border-radius:var(--size-rounded);max-width:calc(100vw - 1rem);max-height:calc(100% - 1rem);box-shadow:0 24px 80px var(--black-a-m), 0 0 0 1px var(--white-a-s) inset;transform-origin:bottom;border:1px solid #22567024;grid-template-rows:auto minmax(0,1fr);animation:.2s modal-panel-in;display:grid;position:relative;overflow:hidden}[data-theme=night] .modal{background:var(--bg-layer-2);box-shadow:0 24px 80px #1a48622e, 0 0 0 1px var(--white-a-s) inset}.modal-close{z-index:21;width:var(--size-btn);aspect-ratio:1;font-size:var(--size-btn-icon);color:var(--black-a-m);cursor:pointer;background:0 0;border:0;border-radius:9999rem;place-items:center;display:grid;position:absolute;top:1rem;right:1rem}.modal-close:hover,.modal-close:focus-visible{color:var(--black-a-s)}[data-theme=night] .modal-close{color:var(--white-a-l)}[data-theme=night] .modal-close:hover{color:var(--gold-100)}.modal-close:focus-visible{color:var(--gold-500)}.project{max-width:100%;height:auto;min-height:0;padding:var(--size-padding-s) var(--size-padding-s);flex-direction:column;justify-content:start;align-items:center;gap:.2rem 1rem;display:flex;overflow-y:scroll}.project-image{flex:none;justify-content:center;align-items:center;width:max(230px,28vw);height:max(180px,22vw);display:grid;transform:translateY(8px)}.project-text{text-transform:uppercase;color:var(--blue-700);font-family:SF Mono,Menlo,Consolas,monospace;font-size:var(--size-caption);letter-spacing:.2em;margin-bottom:.4rem;font-weight:600}[data-theme=night] .project-text{color:var(--blue-500)}.project-title{color:var(--gold-700);font-size:var(--size-title);letter-spacing:.1em;margin:0 0 .8rem;font-weight:600;line-height:1.2}[data-theme=night] .project-title{color:var(--gold-500)}.project-description{color:#28323ccc;font-size:var(--size-body);white-space:pre-line;font-weight:500;line-height:1.5}[data-theme=night] .project-description{color:#e6f0facc}.project-stack{flex-wrap:wrap;gap:.4rem .8rem;margin:1rem 0;padding:0;list-style:none;display:flex}.project-chip{font-family:var(--title-font);color:var(--blue-500);font-size:var(--size-caption);font-weight:600}[data-theme=night] .project-chip{color:var(--blue-100)}@keyframes modal-in{0%{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur()}to{opacity:1;-webkit-backdrop-filter:blur(1.2vw);backdrop-filter:blur(1.2vw)}}@keyframes modal-panel-in{0%{opacity:0;transform:translateY(28px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@media screen and (min-width:624px) and (orientation:landscape){.project{flex-direction:row;justify-content:center;overflow-y:hidden}.project-content{max-width:40vw;height:100%;padding-right:1rem;overflow-y:scroll}}
.project-nav{z-index:-2;opacity:0;pointer-events:none}
.scene,.scene canvas{width:100%;height:100%}
@font-face{font-family:Sen;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6ffefb9b0f4c2ff2-s.0k_pfntc7bq~0.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sen;font-style:normal;font-weight:500;font-display:swap;src:url(../media/aad74cf6bdb77bfc-s.p.01t6nd1rjea~p.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sen Fallback;src:local(Arial);ascent-override:87.52%;descent-override:24.56%;line-gap-override:0.0%;size-adjust:107.34%}.sen_26a35e58-module__mgpnGa__className{font-family:Sen,Sen Fallback;font-style:normal;font-weight:500}
