:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--panel: rgba(10, 13, 19, .72);--line: rgba(220, 236, 255, .22);--text: #f4f7fb;--muted: rgba(226, 235, 246, .66);--glow: #dcecff}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden;background:#05070b}body{color:var(--text)}.portfolio-launch{position:fixed;z-index:100;inset:0;display:none;place-items:center;padding:32px;background:radial-gradient(circle at 72% 18%,rgba(109,164,205,.16),transparent 34%),radial-gradient(circle at 18% 78%,rgba(255,177,92,.08),transparent 28%),#05080d;opacity:1;visibility:visible;transition:opacity .48s ease,visibility .48s ease}.portfolio-launch-inner{width:min(980px,100%)}.portfolio-launch-kicker{margin:0 0 18px;color:var(--muted);font-size:10px;letter-spacing:.2em;text-transform:uppercase}.portfolio-launch h1{max-width:760px;margin:0;font-size:clamp(42px,7vw,88px);font-weight:380;line-height:.98;letter-spacing:-.055em}.portfolio-launch-intro{max-width:620px;margin:24px 0 44px;color:#e2ebf6bd;font-size:clamp(14px,1.5vw,18px);line-height:1.6}.portfolio-launch-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.portfolio-launch-option{display:grid;min-height:230px;padding:26px;border:1px solid rgba(220,236,255,.2);border-radius:16px;color:var(--text);text-align:left;text-decoration:none;background:linear-gradient(135deg,#ffffff14,#ffffff04);box-shadow:0 24px 70px #00000047;cursor:pointer;transition:transform .3s ease,border-color .3s ease,background .3s ease}.portfolio-launch-option:hover,.portfolio-launch-option:focus-visible{transform:translateY(-5px);border-color:#dcecff85;background:linear-gradient(135deg,#add7f621,#ffffff06);outline:none}.portfolio-launch-option span{align-self:start;color:#dcecff80;font-size:10px;letter-spacing:.18em}.portfolio-launch-option strong{align-self:end;margin-top:42px;font-size:clamp(24px,3vw,38px);font-weight:420;letter-spacing:-.035em}.portfolio-launch-option small{margin-top:10px;color:var(--muted);font-size:12px;line-height:1.5}.portfolio-launch-option em{margin-top:24px;color:#fff;font-size:10px;font-style:normal;letter-spacing:.14em;text-transform:uppercase}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}.drag-zone{position:fixed;inset:0;z-index:3;cursor:grab;touch-action:none}.drag-zone.dragging{cursor:grabbing}.drag-guide{position:fixed;z-index:6;left:50%;bottom:190px;display:flex;align-items:center;gap:14px;padding:10px 16px;border:1px solid rgba(220,236,255,.2);border-radius:999px;color:#f4f7fbe0;background:#060a0f9e;box-shadow:0 12px 35px #00000040;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:none;transform:translate(-50%);transition:opacity .4s ease,visibility .4s ease}.drag-guide.used{opacity:0;visibility:hidden}.drag-arrow{font-size:18px;animation:drag-arrow-pulse 1.6s ease-in-out infinite}.drag-arrow:last-child{animation-delay:.8s}.drag-gesture{display:grid;justify-items:center;gap:2px;font-size:8px;letter-spacing:.16em;text-transform:uppercase}.drag-hand{position:relative;width:10px;height:10px;color:#fff;font-size:9px;animation:drag-hand-move 1.6s ease-in-out infinite}@keyframes drag-hand-move{0%,to{transform:translate(-7px)}50%{transform:translate(7px)}}@keyframes drag-arrow-pulse{0%,to{opacity:.35}50%{opacity:1}}.topbar{position:fixed;top:0;left:0;right:0;z-index:5;display:flex;justify-content:space-between;align-items:flex-start;padding:28px 34px;pointer-events:none}.era-narrative{--era-drift-delay: 0s;position:fixed;z-index:2;top:clamp(180px,27vh,300px);left:clamp(34px,7vw,140px);width:min(390px,34vw);padding:18px 0 18px 22px;pointer-events:none;opacity:.9;filter:blur(0);transform:translateZ(0);transition:opacity .7s ease,filter .7s ease;animation:era-narrative-drift 7s ease-in-out var(--era-drift-delay) infinite}.era-narrative:before{content:"";position:absolute;top:20px;bottom:20px;left:0;width:1px;background:linear-gradient(transparent,rgba(210,235,255,.8),transparent);box-shadow:0 0 16px #aadaff8c}.era-narrative.is-changing{opacity:0;filter:blur(8px)}.era-narrative p,.era-narrative h2{margin:0}.era-narrative-kicker{color:#d7ebfc9e;font-size:9px;letter-spacing:.22em;text-transform:uppercase}.era-narrative-title{margin-top:10px!important;color:#f8fbfff0;font-size:clamp(20px,2vw,34px);font-weight:380;line-height:1.08;letter-spacing:-.035em;text-shadow:0 2px 24px rgba(0,0,0,.72),0 0 24px rgba(184,222,255,.12)}.era-narrative-adoption{max-width:355px;margin-top:13px!important;color:#e6eff8b3;font-size:12px;line-height:1.6;text-shadow:0 2px 16px rgba(0,0,0,.9)}@keyframes era-narrative-drift{0%,to{transform:translate3d(0,3px,0)}50%{transform:translate3d(7px,-8px,0)}}.eyebrow,.panel-code,.panel-index,.panel-meta span,.progress-copy,.bottom-ui{letter-spacing:.18em;text-transform:uppercase}h1{margin:0;font-weight:420;font-size:clamp(28px,3.2vw,52px);letter-spacing:-.04em}.portfolio-title,.disciplines{margin:5px 0 0;color:var(--muted);font-size:11px;letter-spacing:.08em}.disciplines{font-size:9px;letter-spacing:.12em}.progress-copy{display:grid;gap:6px;text-align:right;font-size:10px;color:var(--muted)}.drag-hint{color:#fff}.cv-link{margin-top:5px;color:#fff;pointer-events:auto;text-decoration:none}.cv-link:hover{text-decoration:underline}.contact-menu{position:relative;justify-self:end;margin-top:2px;pointer-events:auto}.contact-menu summary{padding:5px 0;color:#fff;cursor:pointer;list-style:none}.contact-menu summary::-webkit-details-marker{display:none}.contact-menu summary:after{content:" +";color:var(--muted)}.contact-menu[open] summary:after{content:" −"}.contact-card{position:absolute;top:calc(100% + 8px);right:0;display:grid;min-width:190px;gap:10px;padding:18px;border:1px solid var(--line);border-radius:12px;text-align:left;background:#060a0fe6;box-shadow:0 18px 50px #00000061;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.contact-card strong{color:var(--text);font-size:13px;font-weight:540;letter-spacing:.02em;text-transform:none}.contact-card span,.contact-card a{color:var(--muted);font-size:10px;letter-spacing:.12em;text-decoration:none}.contact-card a{color:#fff}.contact-card a:hover{text-decoration:underline}.stage-panel{position:fixed;z-index:8;inset:auto 34px 72px;display:grid;grid-template-columns:minmax(180px,1fr) minmax(0,1.55fr) minmax(170px,.8fr) minmax(140px,170px);grid-template-rows:auto auto 1fr;column-gap:clamp(24px,4vw,72px);align-items:center;padding:20px 24px;transform:translate3d(0,28px,0);opacity:0;pointer-events:none;border:1px solid var(--line);border-radius:14px;background:linear-gradient(110deg,#ffffff0e,#ffffff02),#060a0fc7;box-shadow:0 24px 70px #00000052;-webkit-backdrop-filter:blur(24px) saturate(115%);backdrop-filter:blur(24px) saturate(115%);transition:transform .6s cubic-bezier(.22,.9,.24,1),opacity .45s ease}.stage-panel>*{min-width:0}.stage-panel.open{transform:translateZ(0);opacity:1;pointer-events:auto}.panel-close{position:absolute;top:16px;right:18px;border:0;color:#fff;background:transparent;font-size:26px;cursor:pointer}.panel-code{grid-column:1;grid-row:1;margin:0 0 5px;font-size:10px;color:#d6e8ff}.panel-index{grid-column:1;grid-row:2;margin:0 0 4px;color:var(--muted);font-size:10px}.stage-panel h2{grid-column:1;grid-row:3;margin:0;font-size:clamp(23px,2.3vw,38px);font-weight:420;letter-spacing:-.045em}.panel-period{grid-column:3;grid-row:1;align-self:end;margin:0 0 7px;color:var(--muted);font-size:11px}#panel-description{grid-column:2;grid-row:1 / 4;margin:0;color:#f4f7fbd1;line-height:1.55;font-size:13px}.panel-meta{grid-column:3;grid-row:2 / 4;display:grid;grid-template-columns:1fr;gap:18px;margin:0;padding:0;border:0}.panel-meta div{display:grid;gap:8px}.panel-meta span{font-size:9px;color:var(--muted)}.panel-meta strong{font-size:11px;line-height:1.4;font-weight:520}.project-button{grid-column:4;grid-row:1 / 4;width:100%;min-width:0;padding:14px 18px;border:1px solid rgba(229,239,252,.35);border-radius:999px;color:#fff;background:#ffffff0e;cursor:pointer}.project-drawer{position:absolute;right:0;bottom:calc(100% + 10px);width:min(460px,calc(100vw - 68px));max-height:min(52vh,440px);padding:22px 24px;overflow:auto;border:1px solid var(--line);border-radius:14px;background:#060a0ff0;box-shadow:0 24px 70px #00000070;-webkit-backdrop-filter:blur(24px) saturate(115%);backdrop-filter:blur(24px) saturate(115%);opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .3s ease,transform .3s ease,visibility .3s ease}.projects-open .project-drawer{opacity:1;visibility:visible;transform:translateY(0)}.project-drawer>p{margin:0 0 14px;color:var(--muted);font-size:9px;letter-spacing:.18em;text-transform:uppercase}.project-list{display:grid;gap:0;margin:0;padding:0;list-style:none;counter-reset:projects}.project-list li{counter-increment:projects;display:grid;grid-template-columns:28px 1fr;gap:10px;padding:10px 0;border-top:1px solid rgba(220,236,255,.1);color:var(--muted);font-size:12px;line-height:1.35}.project-list li:before{content:counter(projects,decimal-leading-zero);grid-row:1 / 3;color:#dcecff61;font-size:9px;letter-spacing:.1em}.project-list .signature-project{color:var(--text)}.project-list .signature-project+.supporting-project{margin-top:8px;border-top-color:#dcecff47}.project-list li strong{grid-column:2;color:var(--text);font-size:12px;font-weight:540}.project-list li span{grid-column:2;color:var(--muted);font-size:10px;font-weight:400}.project-list-open{grid-column:2;display:grid;grid-template-columns:64px minmax(0,1fr);gap:3px;width:100%;padding:0;border:0;color:inherit;text-align:left;background:transparent;cursor:pointer}.project-list-open.without-thumbnail{grid-template-columns:minmax(0,1fr)}.project-list-open strong,.project-list-open span{grid-column:2;text-align:left}.project-list-open.without-thumbnail strong,.project-list-open.without-thumbnail span{grid-column:1}.project-list-thumbnail{grid-column:1;grid-row:1 / 3;width:64px;height:44px;border:1px solid rgba(220,236,255,.12);border-radius:5px;object-fit:cover;background:#ffffff09}.project-list-open:hover strong,.project-list-open:focus-visible strong{color:#bfe3ff}.project-detail{position:fixed;z-index:30;inset:0;overflow:auto;overscroll-behavior:contain;color:var(--text);background:radial-gradient(circle at 72% 0%,rgba(112,166,202,.16),transparent 34%),linear-gradient(180deg,#04080df5,#050a10fb);-webkit-backdrop-filter:blur(26px) saturate(110%);backdrop-filter:blur(26px) saturate(110%);opacity:0;visibility:hidden;transform:translateY(24px);transition:opacity .42s ease,transform .55s cubic-bezier(.22,.9,.24,1),visibility .42s}.project-detail.open{opacity:1;visibility:visible;transform:translateY(0)}.project-detail-open{overflow:hidden}.project-detail-bar{position:sticky;z-index:2;top:0;display:flex;justify-content:space-between;align-items:center;padding:18px clamp(24px,4vw,64px);border-bottom:1px solid rgba(220,236,255,.14);background:#05090ecc;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.project-detail-bar span,.project-detail-hero>div>span,.project-detail-section>div:first-child>span{color:var(--muted);font-size:9px;letter-spacing:.2em;text-transform:uppercase}.project-detail-bar button{padding:8px 14px;border:1px solid rgba(220,236,255,.22);border-radius:999px;color:var(--text);background:#ffffff09;cursor:pointer}.project-detail-body{width:min(1180px,calc(100% - 48px));margin:0 auto;padding:clamp(46px,7vw,96px) 0 100px}.project-detail-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:clamp(42px,8vw,120px);align-items:end;min-height:48vh;padding-bottom:clamp(48px,7vw,88px)}.project-detail-hero h2{max-width:780px;margin:12px 0 20px;font-size:clamp(42px,7vw,96px);font-weight:380;letter-spacing:-.055em;line-height:.94}.project-detail-hero>div>p{max-width:720px;color:#f4f7fbc2;font-size:clamp(15px,1.5vw,20px);line-height:1.6}.project-detail-hero dl{margin:0}.project-detail-hero dl div{display:grid;grid-template-columns:105px 1fr;gap:14px;padding:12px 0;border-top:1px solid rgba(220,236,255,.13)}.project-detail-hero dt{color:var(--muted);font-size:9px;letter-spacing:.12em;text-transform:uppercase}.project-detail-hero dd{margin:0;font-size:12px;line-height:1.5}.project-gallery{padding:0 0 clamp(56px,8vw,100px)}.project-gallery-heading{display:flex;align-items:baseline;gap:14px;margin-bottom:16px;color:var(--muted);font-size:9px;letter-spacing:.14em;text-transform:uppercase}.project-gallery-heading strong{color:var(--text);font-weight:520}.project-gallery-heading em{margin-left:auto;font-style:normal}.project-gallery-track{display:flex;gap:14px;padding:0 0 18px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-color:rgba(220,236,255,.35) transparent}.project-gallery figure{flex:0 0 240px;margin:0;scroll-snap-align:start}.project-gallery figure>a,.project-gallery video{display:block;width:100%}.project-gallery img,.project-gallery video{width:100%;height:160px;border:1px solid rgba(220,236,255,.12);border-radius:12px;object-fit:contain;background:#00000052}.project-gallery figcaption{padding:10px 2px 0;color:var(--muted);font-size:10px;line-height:1.45}.project-gallery-document a{display:grid;align-content:center;justify-items:start;min-height:160px;padding:18px;border:1px solid rgba(220,236,255,.14);border-radius:12px;color:var(--text);text-decoration:none;background:linear-gradient(135deg,#75aacd1f,#ffffff06)}.project-gallery-document span,.project-gallery-document em{color:var(--muted);font-size:10px;font-style:normal;letter-spacing:.14em;text-transform:uppercase}.project-gallery-document strong{max-width:620px;margin:14px 0 24px;font-size:18px;font-weight:420;line-height:1.05}.project-detail-section{display:grid;grid-template-columns:minmax(200px,.65fr) minmax(0,1.35fr);gap:clamp(40px,8vw,120px);padding:clamp(42px,6vw,74px) 0;border-top:1px solid rgba(220,236,255,.13)}.project-detail-section h3{margin:12px 0 0;font-size:clamp(24px,3vw,42px);font-weight:420;letter-spacing:-.035em}.project-detail-copy{color:#f4f7fbc7;font-size:15px;line-height:1.75}.project-detail-copy p,.project-detail-copy ul,.project-detail-copy ol{margin:0}.project-detail-copy li+li{margin-top:12px}.project-detail-copy p strong{display:block;margin-bottom:5px;color:var(--text);font-size:10px;letter-spacing:.14em;text-transform:uppercase}.project-detail-copy p+p{margin-top:24px}.project-evidence{display:grid;gap:10px}.project-evidence a{display:grid;gap:5px;padding:18px;border:1px solid rgba(220,236,255,.14);border-radius:10px;color:inherit;text-decoration:none;background:#ffffff06}.project-evidence a span{color:var(--muted);font-size:12px}.project-evidence a em{color:#bfe3ff;font-size:10px;font-style:normal}.project-related{display:flex;flex-wrap:wrap;gap:10px}.project-related button,.project-related span{padding:10px 14px;border:1px solid rgba(220,236,255,.18);border-radius:999px;color:var(--text);background:#ffffff06;font-size:11px}.project-related button{cursor:pointer}.bottom-ui{position:fixed;z-index:5;inset:auto 34px 20px;width:auto;pointer-events:none}.bottom-ui p{margin:8px 0 0;text-align:right;font-size:9px;color:var(--muted)}.timeline{--journey-progress: 0;position:relative;display:grid;grid-template-columns:repeat(5,1fr);align-items:start;gap:0;pointer-events:auto}.timeline:before,.timeline:after{content:"";position:absolute;left:10%;right:10%;top:7px;height:1px;background:#ffffff2e}.timeline:after{right:auto;width:80%;transform:scaleX(var(--journey-progress));transform-origin:left center;background:#ebf5ffeb;box-shadow:0 0 10px #dcecff73}.stage-step{position:relative;z-index:1;display:grid;justify-items:center;gap:8px;padding:0;border:0;color:#ebf2fb6b;background:transparent;cursor:pointer;font:inherit}.stage-dot{width:14px;height:14px;border:1px solid rgba(234,244,255,.35);border-radius:50%;background:#111721;transition:transform .3s ease,background .3s ease,box-shadow .3s ease}.stage-step em{font-size:8px;font-style:normal;letter-spacing:.12em}@media(max-width:900px){.topbar{padding:20px}.topbar h1{font-size:25px}.progress-copy{display:none}.drag-guide{bottom:260px}.bottom-ui{inset:auto 20px 210px}.bottom-ui p{display:none}.stage-panel{inset:auto 16px 14px;grid-template-columns:1fr 1fr;grid-template-rows:auto;gap:12px 22px;padding:18px}.panel-code,.panel-index,.stage-panel h2,#panel-description,.panel-period,.panel-meta,.project-button{grid-column:auto;grid-row:auto}#panel-description{grid-column:1 / 3}.project-button{max-width:200px}}.stage-step.completed .stage-dot{background:#e1efffb8}.stage-step.active{color:#fff}.stage-step.active .stage-dot{transform:scale(1.28);background:#fff;box-shadow:0 0 16px #dcecffe6}.loading{position:fixed;inset:0;z-index:20;display:grid;place-content:center;justify-items:center;gap:28px;background:#05070b;transition:opacity .6s ease,visibility .6s ease}.loading.hidden{opacity:0;visibility:hidden}.loading-ring{order:2}.loading-copy{max-width:min(620px,calc(100vw - 48px));text-align:center}.loading .loading-copy p{margin:0;text-transform:none}.loading .loading-name{color:var(--text);font-size:clamp(30px,5vw,58px);font-weight:420;letter-spacing:.1em}.loading .loading-title{margin-top:8px;color:var(--text);font-size:14px;letter-spacing:.08em}.loading .loading-intro{margin-top:28px;color:var(--muted);font-size:14px;line-height:1.65;letter-spacing:0}.loading .loading-period,.loading .loading-instruction{margin-top:20px;color:var(--muted);font-size:10px;letter-spacing:.16em;text-transform:uppercase}.loading .loading-instruction{margin-top:8px}.loading>p{color:var(--muted);font-size:11px;letter-spacing:.16em;text-transform:uppercase}.loading-ring{width:58px;aspect-ratio:1;border:1px solid rgba(255,255,255,.15);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:720px){.portfolio-launch{align-items:start;padding:48px 20px 28px;overflow-y:auto}.portfolio-launch-options{grid-template-columns:1fr}.portfolio-launch-option{min-height:190px}.portfolio-launch-intro{margin:18px 0 28px}.project-detail-body{width:min(100% - 32px,1180px);padding-top:42px}.project-detail-hero,.project-detail-section{grid-template-columns:1fr;gap:28px}.project-detail-hero{min-height:0}.project-detail-hero h2{font-size:clamp(38px,13vw,64px)}.topbar{padding:20px}.topbar h1{font-size:21px}.era-narrative{top:128px;left:20px;width:min(76vw,310px);padding-left:16px}.era-narrative-title{font-size:clamp(18px,6vw,27px)}.era-narrative-adoption{margin-top:9px!important;font-size:10px;line-height:1.5}.bottom-ui{top:auto;left:16px;right:16px;bottom:min(42vh,250px);width:auto}.stage-panel{top:auto;right:12px;bottom:12px;width:auto;max-height:39vh;overflow:auto;transform:translate3d(0,20px,0)}.stage-panel.open{transform:translateZ(0)}.project-drawer{position:static;grid-column:1 / 3;width:100%;max-height:0;padding:0 18px;overflow:hidden;border-width:0;opacity:0;transform:none}.projects-open .project-drawer{max-height:40vh;padding:18px;overflow:auto;border-width:1px;opacity:1}.drag-hint,.stage-step em{display:none}.drag-guide{bottom:calc(min(42vh,250px) + 54px);padding:9px 14px}}@media(prefers-reduced-motion:reduce){.era-narrative{animation:none}}
