:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#0a0a0e;font-family:Lora,Georgia,serif;font-weight:400;line-height:1.5}*,:before,:after{box-sizing:border-box}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}button,input,textarea,select{font-family:inherit}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff24;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#ffffff42}#root,html,body{box-sizing:border-box;width:100%;height:100%;margin:0;padding:0;overflow:visible}:root{--font-primary:"Lora", Georgia, serif}body{font-family:var(--font-primary)}.object-label{text-transform:uppercase;letter-spacing:.18em;white-space:nowrap;color:#f5b56f;-webkit-backdrop-filter:blur(8px);background:#091223e6;border:1px solid #e59a4d6b;border-radius:999px;padding:7px 11px 6px;font-family:Lora,Georgia,serif;font-size:9px;font-style:italic;animation:.18s ease-out forwards label-appear;box-shadow:0 8px 22px #01050e6b,0 0 18px #376cc51f}.experience.is-screen-focused .object-label{display:none}@keyframes label-appear{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.navbar{box-sizing:border-box;z-index:1500;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(12px);background:#0f0f1459;border-bottom:1px solid #ffffff0f;align-items:center;width:100%;height:78px;padding:0 48px;transition:opacity 1s,transform 1s;display:flex;position:fixed;top:0;left:0;transform:translateY(-10px)}.navbar.navbar-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-content{justify-content:flex-start;align-items:center;gap:48px;display:flex}.navbar-logo{object-fit:contain;width:auto;height:36px}.navbar-left{align-items:center;gap:48px;display:flex}.navbar-left a,.navbar-left button{color:#ffffffeb;letter-spacing:.4px;font-family:Lora,Georgia,serif;font-size:.95rem;font-weight:500;text-decoration:none;transition:color .25s,text-shadow .25s,transform .25s;position:relative}.navbar-left button{cursor:pointer;background:0 0;border:none;padding:0}.navbar-left a:after,.navbar-left button:after{content:"";background:#fffffff2;width:0%;height:1px;transition:width .25s;position:absolute;bottom:-6px;left:0;box-shadow:0 0 8px #ffffff8c}.navbar-left a:hover,.navbar-left button:hover{color:#fff;text-shadow:0 0 8px #ffffff8c,0 0 16px #ffffff40;transform:translateY(-1px)}.navbar-left a:hover:after,.navbar-left button:hover:after{width:100%}.navbar-logo{color:#fff;object-fit:contain;width:auto;height:50px;font-size:1.1rem;font-weight:600}@media (width<=640px){.navbar{height:64px;padding:0 20px}.navbar-content{gap:24px}.navbar-left{gap:20px}.navbar-left a,.navbar-left button{font-size:.88rem}.navbar-logo{height:38px}}@media (width<=420px){.navbar-left a,.navbar-left button{display:none}}.loader-overlay{z-index:2000;pointer-events:none;background:0 0;position:fixed;inset:0;overflow:hidden}.curtain{will-change:transform;background:linear-gradient(#08080c,#101016);height:100%;transition:transform 1.8s cubic-bezier(.77,0,.18,1);position:absolute;top:0}.curtain-left{width:calc(50% + 3px);left:0}.curtain-right{width:calc(50% + 3px);right:0}.loader-overlay.opening .curtain-left{transform:translate(-100%)}.loader-overlay.opening .curtain-right{transform:translate(100%)}.loader-spinner{opacity:1;place-items:center;transition:opacity .5s;display:grid;position:absolute;inset:0}.loader-spinner.hide{opacity:0}.typographic-loader{opacity:0;flex-direction:column;align-items:center;gap:18px;animation:.8s ease-out forwards loader-fade-rise;display:flex}.loader-fill-wrap{position:relative}.loader-title-base,.loader-title-fill{letter-spacing:.35em;text-transform:uppercase;white-space:nowrap;font-family:Lora,Georgia,serif;font-size:clamp(1.6rem,3.5vw,2.6rem);font-weight:600;line-height:1.2}.loader-title-base{color:#0000;-webkit-text-stroke:1px #ffffff38}.loader-title-fill{color:#fff;position:absolute;inset:0}.loader-percent{letter-spacing:.2em;color:#ffffff59;font-family:Lora,Georgia,serif;font-size:11px;font-style:italic}@keyframes loader-fade-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.welcome-text{letter-spacing:.04em;color:#fff;opacity:0;text-shadow:0 0 18px #ffffff1f,0 0 36px #ffffff14;place-items:center;font-family:Lora,Georgia,serif;font-size:clamp(2.2rem,5vw,4.8rem);font-weight:300;transition:opacity .8s,transform .8s;display:grid;position:absolute;inset:0;transform:scale(.97)}.welcome-text.show{opacity:1;transform:scale(1)}.welcome-text.hide{opacity:0;transform:scale(.97)}.loader-overlay.enter{pointer-events:auto;cursor:pointer}.loader-overlay.fast .curtain{transition-duration:.7s}.loader-skip{color:#ffffff73;letter-spacing:.18em;text-transform:uppercase;cursor:pointer;pointer-events:auto;opacity:0;background:0 0;border:1px solid #ffffff2e;border-radius:4px;padding:8px 14px;font-family:Lora,Georgia,serif;font-size:.68rem;transition:color .25s,border-color .25s;animation:.6s ease-out .4s forwards loader-fade-rise;position:absolute;bottom:24px;right:28px}.loader-skip:hover,.loader-skip:focus-visible{color:#ffffffd9;border-color:#ffffff73;outline:none}.enter-text{letter-spacing:.22em;text-transform:uppercase;color:#ffffff73;opacity:0;pointer-events:none;place-items:center;font-family:Lora,Georgia,serif;font-size:clamp(.7rem,1.8vw,.85rem);font-weight:400;transition:opacity 1s;display:grid;position:absolute;inset:0}.enter-text.show{opacity:1;animation:2.2s ease-in-out infinite enter-pulse}@keyframes enter-pulse{0%,to{opacity:.35}50%{opacity:.75}}.quick-actions{z-index:3000;opacity:0;pointer-events:none;grid-template-rows:repeat(2,52px);grid-template-columns:repeat(2,52px);gap:8px;transition:opacity .9s,transform .9s;display:grid;position:fixed;bottom:28px;left:28px;transform:translateY(18px)}.quick-actions.quick-actions-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.quick-action-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);background:#080a0fb8;border:1px solid #ffffff57;border-radius:6px;justify-content:center;align-items:center;width:52px;height:52px;transition:background .25s,color .25s,transform .25s,box-shadow .25s,border-color .25s;display:flex}.quick-action-btn:hover,.quick-action-btn.active{color:#fff;box-shadow:none;background:#ffffff1f;border-color:#ffffffd1;transform:translateY(-1px)}.quick-action-btn{opacity:0;animation:.6s forwards quickActionIn;transform:translateY(10px)}.quick-actions.quick-actions-visible .quick-action-btn:first-child{animation-delay:50ms}.quick-actions.quick-actions-visible .quick-action-btn:nth-child(2){animation-delay:.12s}.quick-actions.quick-actions-visible .quick-action-btn:nth-child(3){animation-delay:.19s}.quick-actions.quick-actions-visible .quick-action-btn:nth-child(4){animation-delay:.26s}@keyframes quickActionIn{to{opacity:1;transform:translateY(0)}}@media (width<=640px){.quick-actions{grid-template-rows:56px;grid-template-columns:repeat(4,56px);gap:8px;transition:opacity .6s,transform .6s;bottom:24px;left:calc(50% - 156px);transform:translateY(18px)}.quick-actions.quick-actions-visible{transform:translateY(0)}.quick-action-btn{width:56px;height:56px}.quick-actions.has-panel{opacity:0;pointer-events:none;transition:opacity .3s,transform .3s}}.info-panel-backdrop{-webkit-backdrop-filter:blur();backdrop-filter:blur();pointer-events:none;z-index:2800;background:#0c0c1200;transition:background .4s,-webkit-backdrop-filter .4s,backdrop-filter .4s;position:fixed;inset:0}.info-panel-backdrop.show{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:auto;background:#0c0c124d}.info-panel{z-index:2900;opacity:0;-webkit-backdrop-filter:blur(22px)saturate(115%);box-sizing:border-box;background:#080c16b3;border-left:1px solid #bed0eb24;width:42vw;min-width:460px;max-width:780px;height:100vh;transition:transform .55s cubic-bezier(.22,1,.36,1),opacity .35s;position:fixed;top:0;right:0;overflow:visible;transform:translate(100%)scale(.98)}.info-panel.open{opacity:1;transform:translate(0)scale(1)}.info-panel-inner{box-sizing:border-box;flex-direction:column;width:100%;max-width:620px;height:100%;margin-left:auto;margin-right:auto;padding:34px 30px 26px;display:flex;position:relative}.info-panel-header{flex-shrink:0;margin-bottom:20px}.info-panel-header h2{color:#fff;letter-spacing:.02em;border-bottom:1px solid #ffffff12;margin:0;padding-bottom:16px;font-family:Lora,Georgia,serif;font-size:1.8rem;font-weight:500}.info-panel-content{color:#ffffffe6;flex-direction:column;flex:1;padding-right:6px;font-family:Lora,Georgia,serif;font-size:.98rem;line-height:1.8;display:flex;overflow-y:auto}.info-panel-content p{margin-top:0}.info-panel-close-edge{color:#fff;cursor:pointer;z-index:20;-webkit-backdrop-filter:blur(10px);background:#1c1c24f5;border:1px solid #ffffff2e;border-radius:10px;justify-content:center;align-items:center;width:38px;height:38px;font-size:1.2rem;line-height:1;transition:background .25s,color .25s,border-color .25s,transform .25s,box-shadow .25s;display:flex;position:absolute;top:50%;left:-14px;transform:translateY(-50%);box-shadow:0 8px 24px #00000047}.info-panel-close-edge:hover{color:#000;background:#fff;border-color:#fff;transform:translateY(-50%)scale(1.05);box-shadow:0 10px 28px #ffffff24}.resume-actions-bottom{border-top:1px solid #ffffff14;flex-shrink:0;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px;padding-top:18px;display:grid}.resume-action-btn{color:#fff;background:#0006;border:1px solid #ffffff29;border-radius:12px;justify-content:center;align-items:center;min-height:48px;font-family:Lora,Georgia,serif;font-size:.95rem;font-weight:500;text-decoration:none;transition:background .25s,color .25s,border-color .25s,transform .25s,box-shadow .25s;display:flex}.resume-action-btn:hover{color:#000;background:#fff;border-color:#fff;transform:translateY(-2px);box-shadow:0 10px 30px #ffffff1f}.info-panel-content::-webkit-scrollbar{width:4px}.info-panel-content::-webkit-scrollbar-track{background:0 0}.info-panel-content::-webkit-scrollbar-thumb{background:#ffffff29;border-radius:4px}.info-panel-content::-webkit-scrollbar-thumb:hover{background:#ffffff47}@media (width<=640px){.info-panel{width:100vw;min-width:unset;max-width:unset;opacity:1;border-top:1px solid #ffffff1a;border-left:none;border-radius:20px 20px 0 0;height:88vh;top:auto;bottom:0;right:0;transform:translateY(100%)}.info-panel.open{opacity:1;transform:translateY(0)}.info-panel-close-edge{top:20px;left:auto;right:20px;transform:none}.info-panel-close-edge:hover{transform:scale(1.05)}.info-panel-inner{padding:24px 20px 20px}}.about-panel-shell{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.about-page-stage{scrollbar-width:none;flex:1;min-height:0;padding-right:6px;position:relative;overflow:hidden auto}.about-page-stage::-webkit-scrollbar{display:none}.about-intro-card,.about-page{padding-bottom:20px;animation:.6s aboutFadeUp}.about-page{padding:4px 4px 20px}.about-page p{color:#ffffffb8;margin:0 0 12px;font-family:Lora,Georgia,serif;font-size:.83rem;line-height:1.7}.about-intro-card{opacity:0;flex-direction:column;justify-content:center;gap:10px;height:100%;min-height:460px;padding-left:10%;display:flex;transform:translateY(18px)}.about-intro-card.show{opacity:1;transition:opacity .6s,transform .6s;transform:translateY(0)}.about-intro-card.leave{opacity:0;transition:opacity .5s,transform .5s;transform:translateY(-12px)}.about-intro-eyebrow{text-transform:uppercase;letter-spacing:.16em;color:#ffffff9e;font-size:.85rem}.about-intro-card h3{color:#fff;margin:0;font-size:2.2rem;font-weight:500}.about-location{color:#ffffff61;letter-spacing:.06em;align-items:center;gap:5px;margin-top:2px;font-size:.78rem;display:inline-flex}.about-intro-card p{color:#ffffffd1;margin:0;font-size:1.05rem}.about-page-show{animation:.55s aboutFadeUp}.about-photo-grid{grid-template-rows:220px 220px;grid-template-columns:1.2fr .8fr;gap:14px;margin-bottom:18px;display:grid}.about-photo{object-fit:cover;width:100%;height:100%;box-shadow:none;border:1px solid #ffffff14;border-radius:6px}.about-photo-large{grid-row:1/span 2}.about-photo:nth-child(2){animation-delay:.25s}.about-photo:nth-child(3){animation-delay:.5s}.about-copy-card{background:#ffffff0b;border:1px solid #ffffff14;border-radius:20px;padding:20px}.about-copy-card--personal{padding:14px 16px}.about-copy-card--personal h3{margin-bottom:8px;font-size:1.15rem}.about-copy-card--personal>p{margin-bottom:8px;font-size:.78rem;line-height:1.55}.about-copy-card h3{color:#fff;margin:0 0 12px;font-size:1.45rem;font-weight:500}.about-copy-card p{color:#ffffffdb;margin:0 0 12px;line-height:1.75}.about-stats-row{border-top:1px solid #ffffff12;grid-template-columns:repeat(3,1fr);margin-top:20px;padding-top:18px;display:grid}.about-stat{flex-direction:column;align-items:center;gap:6px;padding:10px 8px;display:flex}.about-stat+.about-stat{border-left:1px solid #ffffff17}.about-stat-num{color:#fff;font-family:Lora,Georgia,serif;font-size:1.6rem;font-weight:500;line-height:1}.about-stat-label{color:#ffffff6b;text-transform:lowercase;letter-spacing:.02em;text-align:center;font-family:Lora,Georgia,serif;font-size:.72rem;font-style:italic;line-height:1.35}.about-strength-cards{flex-direction:column;margin-top:18px;display:flex}.about-strength-card{border-top:1px solid #ffffff14;align-items:flex-start;gap:14px;padding:14px 2px;display:flex}.about-entry-num{color:#ffffff4d;font-variant-numeric:tabular-nums;flex-shrink:0;font-family:Lora,Georgia,serif;font-size:.7rem;line-height:2}.about-strength-card h4{color:#fff;margin:0 0 4px;font-family:Lora,Georgia,serif;font-size:.92rem;font-weight:500}.about-strength-card p{color:#ffffffb8;margin:0;font-family:Lora,Georgia,serif;font-size:.83rem;line-height:1.7}.skills-subtitle{color:#fff9;letter-spacing:.08em;text-transform:uppercase;margin-top:16px;margin-bottom:8px;font-size:.9rem}.skills-logo-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0 26px;display:grid}.skill-logo-card{cursor:default;opacity:0;background:#ffffff0a;border:1px solid #ffffff14;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;min-height:92px;padding:14px 10px;transition:transform .28s,background .28s,border-color .28s,box-shadow .28s;animation:.6s forwards skillLogoIn;display:flex;position:relative;transform:translateY(8px)}.skill-logo-card img{object-fit:contain;width:28px;height:28px;margin-bottom:8px}.skill-logo-card span{text-align:center;color:#ffffffe0;font-size:.8rem}.skill-logo-card:hover{box-shadow:none;background:#fff1;border-color:#ffffff24;transform:translateY(-1px)}.skill-tooltip{color:#ffffffeb;text-align:left;opacity:0;pointer-events:none;z-index:20;background:#12121af5;border:1px solid #ffffff1f;border-radius:4px;width:220px;padding:10px 12px;font-size:.78rem;line-height:1.5;transition:opacity .22s,transform .22s;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%)translateY(8px);box-shadow:0 10px 26px #00000038}.skill-tooltip:after{content:"";border:6px solid #0000;border-top-color:#12121af5;position:absolute;top:100%;left:50%;transform:translate(-50%)}.skill-logo-card:hover .skill-tooltip{opacity:1;transform:translate(-50%)translateY(0)}.skills-detail-list{gap:16px;display:grid}.skills-detail-list h4{color:#fff;margin:0 0 6px;font-size:1rem;font-weight:500}.skills-detail-list p{margin:0}.personal-photo-grid{grid-template-rows:minmax(0,1fr) minmax(0,1fr);grid-template-columns:2fr 1fr;gap:7px;height:clamp(220px,42vh,460px);margin:8px 0 10px;display:grid;overflow:hidden}.personal-photo-grid img{object-fit:cover;opacity:0;border-radius:6px;width:100%;height:100%;min-height:0;transition:transform .3s,filter .3s;animation:.6s forwards photoIn;transform:translateY(12px)scale(.98)}.personal-photo-grid img:first-child{grid-row:span 2;animation-delay:.1s}.personal-photo-grid img:nth-child(2){animation-delay:.2s}.personal-photo-grid img:nth-child(3){animation-delay:.3s}.personal-photo-grid img:hover{filter:brightness(1.05);transform:scale(1.03)}.personal-interests-grid{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:grid}.personal-interest-card{border-top:1px solid #ffffff14;padding:12px 2px 4px}.personal-interest-card .about-entry-num{margin-bottom:4px;line-height:1.4;display:block}.personal-interest-card h4{color:#fff;margin:0 0 3px;font-family:Lora,Georgia,serif;font-size:.88rem;font-weight:500}.personal-interest-card p{color:#ffffffb8;margin:0;font-family:Lora,Georgia,serif;font-size:.83rem;line-height:1.7}.about-nav{background:0 0;border-top:none;flex-shrink:0;grid-template-columns:44px 1fr 44px;align-items:center;gap:12px;padding:12px 0 4px;animation:.35s aboutNavFade;display:grid}.about-nav-arrow{color:#fff;cursor:pointer;background:#00000038;border:1px solid #ffffff24;border-radius:4px;justify-content:center;align-items:center;width:44px;height:44px;font-size:1rem;transition:all .25s;display:flex}.about-nav-arrow:hover:not(:disabled){color:#000;background:#fff;transform:translateY(-1px)}.about-nav-arrow:disabled{opacity:.35;cursor:not-allowed}.about-nav-dots{justify-content:center;gap:10px;display:flex}.about-dot{cursor:pointer;background:#ffffff3d;border:none;border-radius:50%;width:6px;height:6px;transition:all .25s}.about-dot.active{background:#fff}@keyframes aboutFadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes aboutNavFade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes photoIn{to{opacity:1;transform:translateY(0)scale(1)}}@keyframes skillLogoIn{0%{opacity:0;transform:translateY(16px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=640px){.about-photo-grid{grid-template-rows:160px 160px;gap:10px}.about-photo{animation:none}.about-intro-card{min-height:320px;padding-left:6%}.about-intro-card h3{font-size:1.8rem}.skills-logo-grid{gap:10px}.personal-interests-grid{grid-template-columns:1fr}}.projects-gallery-view,.projects-detail-view{animation:.4s projectsFadeUp}.projects-header-row{align-items:baseline;gap:14px;margin-bottom:18px;padding-bottom:14px;display:flex}.projects-heading{color:#fff;white-space:nowrap;margin:0;font-family:Lora,Georgia,serif;font-size:1.15rem;font-weight:500}.projects-header-rule{background:#ffffff17;flex:1;align-self:center;height:1px}.projects-count-word{color:#ffffff61;white-space:nowrap;font-family:Lora,Georgia,serif;font-size:.76rem;font-style:italic}.projects-gallery-view{flex-direction:column;flex:1;min-height:0;display:flex}.projects-list{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex}.project-row{cursor:pointer;opacity:0;background:0 0;border:none;border-radius:8px;flex:1;width:100%;min-height:0;padding:0;animation:.42s forwards projectRowIn;position:relative;overflow:hidden;transform:translate(-10px)}.project-row-label{pointer-events:none;text-align:left;color:#fffffff0;opacity:0;background:linear-gradient(#0000,#05070cd9);border-radius:0 0 8px 8px;align-items:baseline;gap:8px;padding:26px 14px 10px;font-family:Lora,Georgia,serif;font-size:.85rem;font-weight:500;transition:opacity .25s;display:flex;position:absolute;bottom:0;left:0;right:0}.project-row-label em{color:#ffffff8c;font-size:.68rem;font-weight:400}.project-row:hover .project-row-label,.project-row:focus-visible .project-row-label{opacity:1}@media (hover:none),(pointer:coarse){.project-row-label{opacity:1}}.project-row:focus-visible{outline-offset:2px;outline:1px solid #e8ad6680}.project-row-thumb{object-fit:cover;filter:brightness(.82);border-radius:8px;width:100%;height:100%;transition:filter .25s,transform .25s;display:block}.project-row:hover .project-row-thumb,.project-row:focus-visible .project-row-thumb{filter:brightness(1.05);transform:scale(1.02)}.project-detail-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.project-detail-header-right{align-items:center;gap:16px;display:flex}.project-detail-category{color:#ffffff6b;font-family:Lora,Georgia,serif;font-size:.85rem;font-style:italic;font-weight:400}.project-detail-visit{color:#ffffff6b;letter-spacing:.01em;font-family:Lora,Georgia,serif;font-size:.72rem;text-decoration:none;transition:color .2s}.project-detail-visit:hover{color:#ffffffe6}.projects-back-btn{color:#ffffffa6;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff21;border-radius:8px;flex-shrink:0;align-items:center;gap:6px;height:32px;padding:0 12px;font-family:Lora,Georgia,serif;font-size:.78rem;transition:background .22s,color .22s,border-color .22s;display:inline-flex}.projects-back-btn:hover{color:#000;background:#fff;border-color:#fff}.project-detail-title-row{justify-content:space-between;align-items:baseline;gap:12px;margin:18px 0 12px;padding-left:6px;display:flex}.project-detail-title{color:#fff;margin:0;font-family:Lora,Georgia,serif;font-size:1.35rem;font-weight:500;line-height:1.25}.project-hero{background:#05091180;border:1px solid #ffffff12;border-radius:6px;width:100%;margin-bottom:0;position:relative;overflow:hidden}.project-hero-image{object-fit:contain;width:100%;height:300px;display:block}.project-image-arrow{-webkit-backdrop-filter:blur(8px);color:#fff;cursor:pointer;z-index:10;opacity:0;background:#0c0c12b8;border:1px solid #ffffff2e;border-radius:9px;justify-content:center;align-items:center;width:28px;height:28px;transition:opacity .2s,transform .2s,background .2s,color .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.project-image-arrow-left{left:10px}.project-image-arrow-right{right:10px}.project-hero:hover .project-image-arrow{opacity:1}.project-image-arrow:hover{color:#000;background:#fff;transform:translateY(-50%)scale(1.06)}.project-image-dots{justify-content:center;gap:8px;padding:10px 0 2px;display:flex}.project-image-dot{cursor:pointer;background:#ffffff59;border:none;border-radius:4px;width:7px;height:7px;transition:all .25s}.project-image-dot.active{background:#fff;width:22px}.project-detail-body{flex-direction:column;gap:12px;padding-top:16px;display:flex}.project-detail-section{border-bottom:1px solid #ffffff0e;flex-direction:column;gap:12px;padding-bottom:20px;display:flex}.project-section-label{text-transform:lowercase;letter-spacing:.04em;color:#ffffff59;align-items:center;gap:12px;font-family:Lora,Georgia,serif;font-size:.74rem;font-style:italic;font-weight:400;display:flex}.project-section-label:after{content:"";background:#ffffff14;flex:1;height:1px}.project-tools-line{color:#fff9;font-family:Lora,Georgia,serif;font-size:.82rem;font-style:italic;line-height:1.6}.project-detail-copy{flex-direction:column;gap:14px;display:flex}.project-detail-copy p{color:#ffffffb8;margin:0;font-size:.83rem;line-height:1.7}.project-detail-visit-bottom{color:#fff9;text-underline-offset:4px;align-self:flex-start;font-family:Lora,Georgia,serif;font-size:.85rem;font-style:italic;-webkit-text-decoration:underline #ffffff40;text-decoration:underline #ffffff40;transition:color .22s,text-decoration-color .22s}.project-detail-visit-bottom:hover{color:#fff;text-decoration-color:#fff}@keyframes projectRowIn{to{opacity:1;transform:translate(0)}}@keyframes projectsFadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.project-hero-image--clickable{cursor:zoom-in}.project-lightbox{z-index:2950;-webkit-backdrop-filter:blur(12px);background:#0a0a10f0;justify-content:center;align-items:center;width:42vw;min-width:460px;max-width:780px;height:100vh;animation:.22s projectsFadeUp;display:flex;position:fixed;top:0;right:0}.project-lightbox-image{object-fit:contain;border-radius:10px;max-width:90%;max-height:80%;display:block;box-shadow:0 24px 64px #0009}.project-lightbox-close{color:#fff;cursor:pointer;z-index:10;background:#14141ce6;border:1px solid #ffffff2e;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:background .2s,color .2s,border-color .2s;display:flex;position:absolute;top:14px;right:14px}.project-lightbox-close:hover{color:#000;background:#fff;border-color:#fff}.project-lightbox-arrow{-webkit-backdrop-filter:blur(8px);color:#fff;cursor:pointer;z-index:10;background:#14141cd9;border:1px solid #ffffff2e;border-radius:10px;justify-content:center;align-items:center;width:34px;height:34px;transition:background .2s,color .2s,border-color .2s,transform .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.project-lightbox-arrow-left{left:14px}.project-lightbox-arrow-right{right:14px}.project-lightbox-arrow:hover{color:#000;background:#fff;border-color:#fff;transform:translateY(-50%)scale(1.06)}.project-lightbox-dots{gap:8px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}@media (width<=640px){.projects-gallery-view{overflow-y:auto}.projects-list{flex:none;overflow-y:auto}.project-row{flex:none;height:120px}.project-hero-image{height:220px}.project-lightbox{width:100vw;min-width:unset;max-width:unset;border-radius:20px 20px 0 0;height:88vh;top:auto;bottom:0;right:0}}.contact-panel-shell{flex-direction:column;gap:26px;margin-top:auto;margin-bottom:auto;display:flex}.contact-intro-card{background:0 0;border:none;border-bottom:1px solid #ffffff1a;border-radius:0;padding:0 0 20px;animation:.5s contactFadeUp}.contact-intro-card h3{color:#fff;margin:0 0 10px;font-size:1.5rem;font-weight:500}.contact-intro-card p{color:#ffffffd1;margin:0;line-height:1.7}.contact-card-list{gap:0;margin-top:0;display:grid}.contact-card{color:inherit;opacity:0;background:0 0;border:none;border-bottom:1px solid #ffffff17;border-radius:0;justify-content:space-between;align-items:center;gap:14px;padding:18px 4px;text-decoration:none;transition:transform .28s,background .28s,border-color .28s,box-shadow .28s;animation:.55s forwards contactCardIn;display:flex;transform:translateY(8px)}.contact-card:hover{box-shadow:none;background:#ffffff06;border-color:#ffffff26;transform:translate(4px)}.contact-card-left{align-items:flex-start;gap:14px;display:flex}.contact-icon-wrap{color:#fff;background:0 0;border:none;border-radius:0;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.contact-copy{flex-direction:column;gap:4px;display:flex}.contact-label{color:#ffffff9e;letter-spacing:.08em;text-transform:uppercase;font-size:.82rem}.contact-value{color:#fff;font-size:1rem;font-weight:500}.contact-copy p{color:#fffc;margin:2px 0 0;font-size:.92rem;line-height:1.6}.contact-card-right{color:#ffffffbd;flex-shrink:0;transition:transform .25s,color .25s}.contact-card:hover .contact-card-right{color:#fff;transform:translate(2px,-2px)}@keyframes contactFadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes contactCardIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.resume-doc{transform-origin:top;flex-direction:column;gap:8px;padding:2px 0 4px;font-family:Lora,Georgia,serif;display:flex}.resume-doc-header{text-align:center;border-bottom:1px solid #ffffff17;padding-bottom:8px}.resume-name{color:#fff;letter-spacing:.01em;margin:0 0 4px;font-size:1.35rem;font-weight:600;line-height:1.2}.resume-contact{color:#ffffff8c;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;margin:0;font-size:.65rem;display:flex}.resume-contact a{color:#ffffffb8;text-decoration:none;transition:color .2s}.resume-contact a:hover{color:#fff}.resume-contact-dot{color:#ffffff40;font-size:.5rem}.resume-summary{color:#ffffffb3;margin:0;font-size:.7rem;line-height:1.42}.resume-section{flex-direction:column;gap:5px;display:flex}.resume-section-title{text-transform:uppercase;letter-spacing:.15em;color:#ffffff6b;border-bottom:1px solid #ffffff12;margin:0;padding-bottom:5px;font-size:.6rem;font-weight:600;line-height:1.2}.resume-entry{flex-direction:column;gap:2px;display:flex}.resume-entry-header{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.resume-entry-title{color:#fff;font-size:.82rem;font-weight:600;line-height:1.3}.resume-entry-date{color:#ffffff70;white-space:nowrap;flex-shrink:0;font-size:.68rem;line-height:1.3}.resume-entry-sub{color:#fff9;justify-content:space-between;align-items:baseline;font-size:.7rem;font-style:italic;line-height:1.3;display:flex}.resume-entry-tech{color:#ffffff70;font-size:.68rem;font-style:italic;line-height:1.3}.resume-bullets{flex-direction:column;gap:2px;margin:3px 0 0;padding-left:14px;display:flex}.resume-bullets li{color:#ffffffc7;font-size:.7rem;line-height:1.42}.resume-skills-list{flex-direction:column;gap:4px;display:flex}.resume-skill-row{gap:12px;font-size:.7rem;line-height:1.38;display:flex}.resume-skill-label{color:#ffffff85;flex-shrink:0;min-width:110px;font-weight:500}.resume-skill-value{color:#ffffffd1}@media (width<=640px){.resume-name{font-size:1.1rem}.resume-entry-header{flex-direction:column;gap:1px}.resume-entry-sub{flex-direction:column;gap:0}.resume-skill-row{flex-direction:column;gap:1px}.resume-skill-label{min-width:unset;color:#fff6}}.ambient-player-iframe{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed;top:-9999px;left:-9999px}.ambient-mute-btn{z-index:3000;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);opacity:0;pointer-events:none;background:#080a0fb8;border:1px solid #ffffff57;border-radius:6px;justify-content:center;align-items:center;width:52px;height:52px;transition:background .25s,color .25s,box-shadow .25s,border-color .25s,opacity .5s;display:flex;position:fixed;bottom:28px;right:28px}.ambient-mute-btn.ambient-mute-btn-visible{opacity:1;pointer-events:auto}.ambient-mute-btn.ambient-mute-btn-panel-hidden{opacity:0!important;pointer-events:none!important;transition:opacity .5s!important}.ambient-mute-btn:hover{color:#fff;box-shadow:none;background:#ffffff1f;border-color:#ffffffd1;transform:translateY(-1px)}@media (width<=640px){.ambient-mute-btn{width:56px;height:56px;bottom:24px;left:calc(50% + 100px);right:auto}}*{cursor:none!important}@media (hover:none),(pointer:coarse){*{cursor:auto!important}.cursor-dot,.cursor-ring{display:none!important}}.cursor-dot{pointer-events:none;z-index:9999;will-change:transform;position:fixed;top:0;left:0}.cursor-dot:after{content:"";background:#fffffff2;border-radius:50%;width:4px;height:4px;transition:transform .18s cubic-bezier(.25,.46,.45,.94),opacity .18s;display:block;transform:translate(-50%,-50%)}.cursor-dot--hover:after{opacity:0;transform:translate(-50%,-50%)scale(0)}.cursor-ring{pointer-events:none;z-index:9998;will-change:transform;position:fixed;top:0;left:0}.cursor-ring:after{content:"";border:1px solid #ffffff61;border-radius:50%;width:20px;height:20px;transition:transform .32s cubic-bezier(.25,.46,.45,.94),border-color .32s,border-width .32s;display:block;transform:translate(-50%,-50%)scale(1)}.cursor-ring--hover:after{border-width:.5px;border-color:#ffffff2e;transform:translate(-50%,-50%)scale(2.6)}.hero-title{pointer-events:none;z-index:1400;width:auto;max-width:500px;position:fixed;top:38%;left:5vw;transform:translateY(-50%)}.hero-eyebrow{letter-spacing:.2em;text-transform:uppercase;color:#ffffff8c;opacity:0;font-family:Lora,Georgia,serif;font-size:clamp(.7rem,1.2vw,.85rem);font-weight:500;animation:.6s ease-out .4s forwards hero-fade-in;transform:translateY(18px)}.hero-name{letter-spacing:-.02em;color:#fff;opacity:0;margin:0;padding:0;font-family:Lora,Georgia,serif;font-size:clamp(2.6rem,5vw,4.2rem);font-weight:600;line-height:1.1;animation:.6s ease-out .55s forwards hero-fade-in;transform:translateY(18px)}.hero-tagline{letter-spacing:.01em;color:#ffffffa6;opacity:0;max-width:320px;margin:16px 0 0;padding:0;font-family:Lora,Georgia,serif;font-size:clamp(.9rem,1.8vw,1.1rem);font-weight:400;line-height:1.5;animation:.6s ease-out .7s forwards hero-fade-in;transform:translateY(18px)}.hero-hint{opacity:0;align-items:center;gap:8px;margin-top:20px;animation:.6s ease-out .85s forwards hero-fade-in;display:flex}.hint-text{letter-spacing:.05em;color:#ffffff8c;text-transform:lowercase;font-family:Lora,Georgia,serif;font-size:.8rem;animation:2.4s ease-in-out infinite hint-pulse}.hint-dot{background:#ffffff8c;border-radius:50%;width:6px;height:6px;animation:2.4s ease-in-out infinite hint-drift}@keyframes hero-fade-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes hint-pulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes hint-drift{0%,to{opacity:.6;transform:translate(0)}50%{opacity:1;transform:translate(4px)}}.hero-title.dimmed{opacity:0;transition:opacity .4s}.hero-title:not(.dimmed){opacity:1;transition:opacity .4s}@media (width<=900px){.hero-title{display:none}}.desktop-overlay{z-index:6000;opacity:0;pointer-events:none;background:radial-gradient(circle at 20% 90%,#b370371a,#0000 30%),#080d19;display:flex;position:fixed;inset:0;overflow:hidden}.desktop-overlay--visible{opacity:1;pointer-events:auto;transition:opacity .5s}.desktop-overlay--closed{transition:none}.desktop-stage{flex:1;place-items:center;min-height:0;padding:clamp(14px,2.5vw,38px);display:grid}.desktop-window{background:#0c1423;border:1px solid #b5c7e429;border-radius:9px;flex-direction:column;width:min(1500px,95vw);height:min(900px,90vh);display:flex;overflow:hidden;box-shadow:0 32px 90px #00000080}.desktop-titlebar{background:#1b2840;border-bottom:1px solid #00000047;flex:0 0 36px;grid-template-columns:1fr auto 1fr;align-items:center;height:36px;display:grid}.desktop-back-btn{color:#ebf1fbb8;cursor:pointer;background:0 0;border:0;justify-self:start;align-items:center;gap:7px;height:100%;padding:0 13px;font:500 .7rem/1 system-ui,sans-serif;display:flex}.desktop-back-btn:hover{color:#fff;background:#ffffff0d}.desktop-window-title{color:#e6edf994;letter-spacing:.1em;text-transform:uppercase;font:500 .64rem/1 system-ui,sans-serif}.desktop-window-controls{justify-self:end;align-items:center;height:100%;display:flex}.desktop-clock{color:#e0e8f666;font-variant-numeric:tabular-nums;padding:0 13px;font:.65rem/1 system-ui,sans-serif}.desktop-window-close{color:#ffffffad;cursor:pointer;background:0 0;border:0;place-items:center;width:44px;height:100%;display:grid}.desktop-window-close:hover{color:#fff;background:#b94c49}.desktop-tabbar{background:#17233a;flex:0 0 39px;align-items:end;gap:8px;height:39px;padding:5px 10px 0;display:flex}.desktop-active-tab{color:#eef3fc;background:#0f192a;border-radius:7px 7px 0 0;align-items:center;gap:9px;width:min(260px,30vw);height:34px;padding:0 11px;font:.7rem/1 system-ui,sans-serif;display:flex}.desktop-active-tab>span:nth-child(2){white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.desktop-site-mark{color:#111827;background:#d89252;flex:0 0 17px;place-items:center;width:17px;height:17px;font:700 .58rem/1 Lora,Georgia,serif;display:grid}.desktop-active-tab svg{color:#ffffff6b}.desktop-new-tab{color:#e1eaf773;align-self:center}.desktop-toolbar{color:#dce6f561;background:#0f192a;border-bottom:1px solid #91abd517;flex:0 0 42px;align-items:center;gap:13px;height:42px;padding:0 13px;display:flex}.desktop-address{color:#d5e0f27a;background:#09111f;border-radius:5px;flex:1;align-items:center;gap:9px;height:28px;padding:0 12px;font:.67rem/1 system-ui,sans-serif;display:flex}.desktop-address-lock{background:#80a98a;border-radius:50%;width:6px;height:6px}.desktop-workspace{background:#09111e;flex:1;grid-template-columns:210px minmax(0,1fr) 280px;min-height:0;display:grid}.desktop-project-nav{background:#0b1423;border-right:1px solid #93add71a;flex-direction:column;min-height:0;padding:24px 17px 18px;display:flex}.desktop-project-nav-header{color:#d3def161;letter-spacing:.09em;text-transform:uppercase;justify-content:space-between;gap:12px;padding:0 5px 15px;font:600 .58rem/1 system-ui,sans-serif;display:flex}.desktop-project-list{flex-direction:column;display:flex}.desktop-project-item{color:#dbe5f575;text-align:left;cursor:pointer;background:0 0;border:0;border-top:1px solid #96afd714;grid-template-columns:25px 1fr;align-items:center;gap:7px;width:100%;min-height:52px;padding:0 6px;transition:color .18s,background .18s;display:grid}.desktop-project-item:last-child{border-bottom:1px solid #96afd714}.desktop-project-item:hover{color:#eef4fcd1;background:#ffffff05}.desktop-project-item--active{color:#f4f7fc;background:#5677ae1c}.desktop-project-item:focus{outline:none}.desktop-project-item:focus-visible{background:#5677ae1c;box-shadow:inset 2px 0 #d89455}.desktop-project-number{color:#d89455;font-variant-numeric:tabular-nums;font:600 .56rem/1 system-ui,sans-serif}.desktop-project-name{font:.72rem/1.25 Lora,Georgia,serif}.desktop-preview{background:#08101c;min-width:0;min-height:0;padding:clamp(18px,2.6vw,40px);display:flex}.desktop-viewer{background:#050a12;border:1px solid #94aed817;flex:1;place-items:center;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.desktop-viewer-image{object-fit:contain;filter:saturate(.95)contrast(.99);width:100%;height:100%;display:block}.desktop-image-count{color:#e7edf894;letter-spacing:.08em;font-variant-numeric:tabular-nums;background:#040911bf;padding:5px 7px;font:600 .58rem/1 system-ui,sans-serif;position:absolute;bottom:11px;left:13px}.desktop-viewer-arrow{color:#f0f5fcb8;cursor:pointer;opacity:0;background:#070d17d1;border:1px solid #b7c9e624;place-items:center;width:35px;height:48px;transition:opacity .18s,background .18s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.desktop-viewer-arrow--left{left:12px}.desktop-viewer-arrow--right{right:12px}.desktop-viewer:hover .desktop-viewer-arrow{opacity:1}.desktop-viewer-arrow:hover{color:#fff;background:#d89150db}.desktop-inspector{background:#0d1727;border-left:1px solid #93add71a;flex-direction:column;min-height:0;padding:clamp(24px,3vw,42px) 28px 26px;display:flex}.desktop-project-category{color:#dc9858;letter-spacing:.12em;text-transform:uppercase;font:600 .6rem/1 system-ui,sans-serif}.desktop-inspector h2{color:#f4f6fa;margin:10px 0 17px;font:500 clamp(1.35rem,2vw,2rem)/1.15 Lora,Georgia,serif}.desktop-project-blurb{color:#d7e1f19e;margin:0;font:.78rem/1.65 system-ui,sans-serif}.desktop-inspector-meta{border-top:1px solid #97b0d71a;margin-top:30px;padding-top:20px}.desktop-meta-label{color:#d3dff05c;letter-spacing:.1em;text-transform:uppercase;font:600 .57rem/1 system-ui,sans-serif}.desktop-inspector-meta p{color:#e4ebf6b3;margin:9px 0 0;font:.7rem/1.6 system-ui,sans-serif}.desktop-image-nav{gap:0;margin-top:27px;display:flex}.desktop-image-nav button{color:#d5e1f259;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #d2def02e;width:32px;height:28px;font:600 .55rem/1 system-ui,sans-serif}.desktop-image-nav button.active{color:#efa968;border-bottom-color:#dd9958}.desktop-live-link{color:#f0a766;letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid #d89556;justify-content:space-between;align-items:center;margin-top:auto;padding:14px 0 9px;font:600 .68rem/1 system-ui,sans-serif;text-decoration:none;transition:color .18s,padding .18s;display:flex}.desktop-live-link:hover{color:#ffd2a8;padding-left:4px}@media (width<=980px){.desktop-workspace{grid-template-columns:170px minmax(0,1fr)}.desktop-inspector{border-top:1px solid #93add71a;border-left:0;grid-column:1/-1;grid-template-columns:1fr 1.4fr auto;align-items:center;gap:18px;min-height:150px;padding:18px 22px;display:grid}.desktop-inspector h2{margin:7px 0 0}.desktop-project-blurb{margin:0}.desktop-inspector-meta,.desktop-image-nav{display:none}.desktop-live-link{min-width:150px;margin:0}}@media (width<=680px){.desktop-stage{padding:7px}.desktop-window{width:100%;height:96vh}.desktop-clock,.desktop-window-title{display:none}.desktop-titlebar{grid-template-columns:1fr 1fr}.desktop-workspace{flex-direction:column;display:flex}.desktop-project-nav{border-bottom:1px solid #93add71a;border-right:0;flex:none;padding:10px}.desktop-project-nav-header{display:none}.desktop-project-list{flex-direction:row;overflow-x:auto}.desktop-project-item{border-top:0;border-right:1px solid #96afd714;min-width:135px}.desktop-project-item:last-child{border-bottom:0}.desktop-preview{flex:1;padding:10px}.desktop-inspector{min-height:auto;padding:14px 16px;display:block}.desktop-project-category{display:none}.desktop-inspector h2{margin:0 0 7px;font-size:1rem}.desktop-project-blurb{font-size:.7rem;line-height:1.45}.desktop-live-link{margin-top:12px}}.experience{width:100%;height:100vh;position:relative;overflow:visible}.experience canvas{display:block;width:100%!important;height:100%!important}.scene-vignette{pointer-events:none;z-index:1100;background:radial-gradient(at 55% 45%,#0000 50%,#00000080 100%);position:absolute;inset:0}
