*,:before,:after{box-sizing:border-box}:root{--navy:#0c2340;--navy-mid:#1b3a6b;--gold:#c49a22;--gold-lt:#e8c84a;--parchment:#f8f5ee;--cream:#fffef8;--border:#d4c9b0;--text:#1a1a1a;--muted:#5c5c5c;--red:#c0392b;--green:#1a6b3a}body{background:var(--parchment);color:var(--text);margin:0;font-family:"\"Times New Roman\", Times, serif"}#root{overflow-x:hidden}.site-content{flex:1;padding:2rem}.ticker-wrap{background:var(--navy);border-top:2px solid var(--gold);border-bottom:2px solid var(--gold);white-space:nowrap;padding:8px 0;overflow:hidden}.ticker-track{gap:0;animation:40s linear infinite ticker-scroll;display:inline-flex}.ticker-track:hover{animation-play-state:paused}.ticker-item{border-right:1px solid #c49a224d;align-items:baseline;gap:6px;padding:0 2.5rem;display:inline-flex}.ticker-symbol{color:var(--gold-lt);letter-spacing:1px;font-family:Courier New,Courier,monospace;font-size:12px;font-weight:700}.ticker-price{color:#fff;font-size:13px;font-weight:600}.ticker-change-pos{color:#4ade80;font-size:12px}.ticker-change-neg{color:#f87171;font-size:12px}@keyframes ticker-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.site-nav{border-bottom:2px solid var(--navy);background:var(--cream);justify-content:space-between;align-items:center;padding:0 2rem;display:flex}.site-nav-tools{flex-shrink:0;align-items:center;gap:8px;display:flex}.site-nav-tabs{justify-content:flex-end;display:flex}.nav-tab{cursor:pointer;color:var(--muted);letter-spacing:.3px;background:0 0;border:none;border-bottom:3px solid #0000;margin-bottom:-2px;padding:10px 22px;font-family:"\"Times New Roman\", Times, serif";font-size:15px;font-weight:600;transition:color .15s,border-color .15s}.nav-tab:hover{color:var(--navy)}.nav-tab.active{color:var(--navy);border-bottom-color:var(--gold)}.contact-page{gap:40px;width:100%;max-width:900px;display:flex}.contact-column{flex:1 1 0;min-width:0}.contact-link{color:var(--navy);overflow-wrap:anywhere;font-family:"\"Times New Roman\", Times, serif";font-size:14px;text-decoration:none}.proj-tab{cursor:pointer;color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 18px;font-family:"\"Times New Roman\", Times, serif";font-size:13.5px;transition:color .15s,border-color .15s}.proj-tab:hover{color:var(--navy)}.proj-tab.active{color:var(--navy);border-bottom-color:var(--gold)}.masthead-bar-top{border-top:4px solid var(--navy);border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;margin-bottom:6px;padding:10px 0;display:flex}.masthead-label{letter-spacing:2px;text-transform:uppercase;color:var(--navy);font-size:11px;font-weight:600}.masthead-meta{color:var(--muted);font-size:11px}.masthead-rule{border:none;border-bottom:3px solid var(--navy);margin-bottom:28px}.abstract-box{background:var(--cream);border-left:4px solid var(--gold);border-top:1px solid var(--border);border-right:1px solid var(--border);border-bottom:1px solid var(--border);margin-bottom:36px;padding:20px 24px}.abstract-label{letter-spacing:2.5px;text-transform:uppercase;color:var(--navy);margin-bottom:10px;font-size:10px;font-weight:700}.keyword-tag{border:1px solid var(--navy-mid);color:var(--navy);background:var(--cream);letter-spacing:.5px;border-radius:2px;padding:2px 9px;font-size:11px}.btn-outline{border:1px solid var(--navy);background:var(--cream);cursor:pointer;color:var(--navy);border-radius:2px;padding:8px 20px;font-family:"\"Times New Roman\", Times, serif";font-size:13px;text-decoration:none;transition:background .15s,color .15s;display:inline-block}.btn-outline:hover{background:var(--navy);color:#fff}.btn-nav{border:1px solid var(--navy);background:var(--cream);cursor:pointer;color:var(--navy);border-radius:2px;padding:6px 20px;font-family:"\"Times New Roman\", Times, serif";font-size:13px;text-decoration:none;transition:background .15s,color .15s;display:inline-block}.btn-nav:hover:not(:disabled){background:var(--navy);color:#fff}.btn-nav:disabled{opacity:.35;cursor:default}.notebook-frame{border:1px solid var(--border);background:#fff;border-radius:2px;width:100%;height:700px}.projects-hub3d-root{background:radial-gradient(circle at 70% 14%,#ffe396e6,#0000 11%),radial-gradient(circle at 74% 18%,#ff915442,#0000 24%),radial-gradient(circle at 20% 22%,#7cbeff29,#0000 24%),linear-gradient(#f08a58 0%,#ad596a 38%,#34486d 69%,#0c1b32 100%);border-radius:6px;width:100%;height:clamp(520px,70vh,760px);position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff6b,inset 0 -90px 110px #050d1c8a}.projects-hub3d-canvas{position:absolute;inset:0}.projects-hub3d-canvas canvas{width:100%;height:100%;display:block}.projects-hub3d-labels{pointer-events:none;position:absolute;inset:0}.hub3d-label{color:#fffef8;cursor:pointer;pointer-events:auto;text-align:center;will-change:transform;background:#050f1dbd;border:1px solid #ffe9ab80;border-radius:4px;flex-direction:column;align-items:center;gap:2px;min-width:144px;max-width:220px;padding:8px 14px 9px;font-family:"\"Times New Roman\", Times, serif";transition:transform .22s,border-color .22s,box-shadow .22s,background .22s;display:flex;position:absolute;top:0;left:0;box-shadow:0 12px 22px #00000052,0 0 16px #ffcf6b1a,inset 0 1px #ffffff2e}.hub3d-label-meta{letter-spacing:1.6px;text-transform:uppercase;color:#ffd87a;font-size:9.5px;font-weight:700}.hub3d-label-title{color:#fffef8;font-size:16px;line-height:1.2}.hub3d-label.is-hot,.hub3d-label:hover,.hub3d-label:focus-visible{background:#071324db;border-color:#ffe8a8f2;box-shadow:0 16px 28px #0000006b,0 0 26px #ffcf6b52,inset 0 1px #ffffff42}.hub3d-label:focus-visible{outline-offset:3px;outline:2px solid #ffe08b}.projects-hub3d-fallback{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;padding:20px 0;display:grid}.hub3d-toggle{color:var(--navy);letter-spacing:.5px;cursor:pointer;background:0 0;border:none;margin:12px 0 0;padding:4px 0;font-family:"\"Times New Roman\", Times, serif";font-size:12px;text-decoration:underline;display:inline-block}@media (width<=768px){.site-content{padding:1.25rem 1rem}.site-nav{flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:8px 1rem 0}.site-nav-tabs{flex-wrap:wrap;justify-content:center;width:100%}.nav-tab{text-align:center;flex:auto;min-width:max-content;padding:10px 12px}.contact-page{flex-direction:column;gap:28px;max-width:100%}.projects-hub3d-root{display:none}}@media (width<=420px){.nav-tab{padding-inline:9px;font-size:14px}}.projects-scene{--scene-x:0;--scene-y:0;color:#fff;isolation:isolate;perspective:1300px;background:radial-gradient(circle at calc(18% + (var(--scene-x) * 2%)) 18%, #ffd178f2, transparent 13%), radial-gradient(circle at 78% 22%, #9acdff38, transparent 22%), linear-gradient(180deg, #f18b54 0%, #b95664 38%, #31446a 70%, #10203a 100%);border:1px solid #0c23402e;border-radius:6px;min-height:calc(100vh - 360px);padding:clamp(24px,5vw,64px);animation:.42s cubic-bezier(.2,.8,.2,1) both projects-scene-in;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff6b,inset 0 -90px 110px #050d1c8a}.projects-scene:before{content:"";z-index:-1;background:radial-gradient(at 50% 95%,#0000007a,#0000 54%),linear-gradient(#0b172a00,#081220f7);height:42%;position:absolute;inset:auto 0 0}.projects-scene:after{content:"";pointer-events:none;mix-blend-mode:screen;opacity:.86;z-index:1;background:linear-gradient(105deg,#ffe08b47 0%,#0000 32%),radial-gradient(circle at 52% 72%,#ffffff14,#0000 34%),linear-gradient(#0000 0%,#040b1638 100%);position:absolute;inset:0}.projects-academic-scene{perspective:1500px;background:radial-gradient(circle at calc(74% + (var(--scene-x) * 2%)) 17%, #ffe396eb, transparent 12%), radial-gradient(circle at 82% 20%, #ffa46442, transparent 24%), radial-gradient(circle at 18% 30%, #8ec6ff33, transparent 24%), linear-gradient(180deg, #df815d 0%, #89536f 42%, #293f63 74%, #0d2136 100%);box-shadow:inset 0 1px #fff6db6b,inset 0 -120px 130px #030a179e}.projects-academic-hallway,.projects-academic-office{background:#050510;border-radius:6px;min-height:calc(100vh - 315px);animation:.42s cubic-bezier(.2,.8,.2,1) both projects-scene-in;position:relative;overflow:hidden}.hallway-overlay{z-index:3;pointer-events:none;flex-direction:column;justify-content:space-between;padding:clamp(18px,3.5vw,44px);display:flex;position:absolute;inset:0}.hallway-overlay>*{pointer-events:auto}.hallway-back{color:#c4a03ce0;cursor:pointer;letter-spacing:.5px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a0e16b8;border:1px solid #c4922861;border-radius:4px;align-self:flex-start;padding:8px 16px;font-family:"\"Times New Roman\", Times, serif";font-size:13px;transition:background .2s,border-color .2s,color .2s}.hallway-back:hover{color:#e8c060;background:#141a26e0;border-color:#c49228b8}.hallway-title{pointer-events:none}.hallway-title span{letter-spacing:2.5px;text-transform:uppercase;color:#c49228;margin-bottom:6px;font-size:11px;font-weight:700;display:block}.hallway-title h1{color:#f0e8d0;text-shadow:0 2px 24px #000000b3;margin:0;font-size:clamp(28px,5vw,56px);line-height:.95}.hallway-hint{letter-spacing:2px;text-transform:uppercase;color:#c4922885;pointer-events:none;align-self:center;margin:0;font-size:12px;font-weight:600}.projects-hub-scene{background:radial-gradient(circle at calc(70% + (var(--scene-x) * 2%)) 14%, #ffe396e6, transparent 11%), radial-gradient(circle at 74% 18%, #ff915442, transparent 24%), radial-gradient(circle at 20% 22%, #7cbeff29, transparent 24%), linear-gradient(180deg, #f08a58 0%, #ad596a 38%, #34486d 69%, #0c1b32 100%);min-height:calc(100vh - 315px)}.projects-hub-3d{z-index:2;position:absolute;inset:0}.projects-hub-3d canvas{width:100%;height:100%;display:block}.projects-hub-3d-loading{z-index:2;background:radial-gradient(circle at 50% 54%,#ffcf6b14,#0000 30%),linear-gradient(#08111f00,#04091247);position:absolute;inset:0}.projects-hub-scene:before{background:linear-gradient(#08132300,#08111f57 34%,#040912fa),radial-gradient(at 50% 100%,#0000008f,#0000 62%);height:54%}.projects-hub-scene:after{background:linear-gradient(116deg,#ffe6a157 0%,#0000 36%),radial-gradient(circle at 70% 15%,#ffe8a657,#0000 16%),linear-gradient(#0000 0%,#040a155c 100%)}.projects-academic-scene:before{background:linear-gradient(#09132200,#08111f85 38%,#040a14fa),radial-gradient(at 50% 90%,#00000085,#0000 58%);height:48%}.projects-academic-scene:after{background:linear-gradient(120deg,#ffe5a452 0%,#0000 38%),radial-gradient(circle at 74% 18%,#ffe59d4d,#0000 18%),radial-gradient(circle at 42% 76%,#ffffff14,#0000 34%),linear-gradient(#0000 0%,#0309144d 100%)}.projects-ambient{pointer-events:none;filter:blur(18px);transform:translate3d(calc(var(--scene-x) * 16px), calc(var(--scene-y) * 10px), 0);z-index:0;border-radius:999px;transition:transform .42s;position:absolute}.projects-ambient-a{background:#ffbe6342;width:220px;height:220px;top:13%;left:9%}.projects-ambient-b{background:#4fa1d529;width:260px;height:180px;top:35%;right:7%}.projects-cloud{filter:blur(1px);pointer-events:none;z-index:0;background:linear-gradient(90deg,#0000,#ffeeca33,#0000);border-radius:999px;height:28px;animation:18s ease-in-out infinite alternate projects-cloud-drift;position:absolute}.projects-cloud-a{width:32%;top:25%;left:14%}.projects-cloud-b{width:26%;animation-duration:24s;top:16%;right:8%}.projects-scene-header{z-index:3;text-shadow:0 2px 16px #00000059;max-width:680px;transform:translate3d(calc(var(--scene-x) * -7px), calc(var(--scene-y) * -4px), 36px);transition:transform .36s;position:relative}.projects-scene-header span,.projects-scene-kicker{letter-spacing:2px;text-transform:uppercase;color:#ffe08b;font-size:12px;font-weight:700;display:block}.projects-scene-header h1{letter-spacing:0;margin:8px 0 0;font-size:clamp(34px,7vw,72px);line-height:.95}.projects-scene-stage{z-index:3;min-height:390px;transform-style:preserve-3d;transform:rotateX(calc(var(--scene-y) * -3deg)) rotateY(calc(var(--scene-x) * 4deg));grid-template-columns:repeat(2,minmax(220px,360px));justify-content:center;align-items:end;gap:clamp(28px,6vw,86px);padding-top:54px;transition:transform .48s cubic-bezier(.2,.8,.2,1);display:grid;position:relative}.projects-hub-scene .projects-scene-stage{min-height:520px;transform:rotateX(calc(-7deg + (var(--scene-y) * -2deg))) rotateY(calc(var(--scene-x) * 5deg)) translateZ(26px);pointer-events:none;grid-template-columns:repeat(2,minmax(230px,320px));align-items:end;gap:clamp(46px,10vw,150px);padding-top:24px}.hub-3d-label{z-index:4;color:#fff;text-align:left;cursor:pointer;pointer-events:auto;background:#050f1db8;border:1px solid #ffe9ab70;border-radius:6px;align-self:end;width:min(100%,310px);min-height:0;margin-bottom:18px;padding:16px 16px 15px;font-family:"\"Times New Roman\", Times, serif";transition:transform .24s,border-color .24s,box-shadow .24s,background .24s;display:block;position:relative;box-shadow:0 18px 28px #0000003d,0 0 24px #ffcf6b1f,inset 0 1px #ffffff2e}.hub-3d-label:hover,.hub-3d-label:focus-visible{background:#071324d1;border-color:#ffe8a8e6;transform:translateY(-4px);box-shadow:0 24px 34px #00000052,0 0 34px #ffcf6b3d,inset 0 1px #ffffff42}.hub-3d-label:focus-visible{outline-offset:4px;outline:2px solid #ffe08b}.hub-street-plane{z-index:1;pointer-events:none;height:26%;transform:translate3d(calc(var(--scene-x) * -10px), calc(var(--scene-y) * -3px), 0);background:linear-gradient(#111c2b00,#050a129e 34%,#04080ff5),radial-gradient(at 50% 44%,#ffd68b1f,#0000 52%);transition:transform .52s;position:absolute;bottom:0;left:-4%;right:-4%}.hub-sidewalk{transform-origin:bottom;background:linear-gradient(90deg,#0000 0 6%,#ffffff1a 6% 6.4%,#0000 6.4% 18%,#ffffff14 18% 18.4%,#0000 18.4% 31%,#ffffff14 31% 31.4%,#0000 31.4% 44%,#ffffff14 44% 44.4%,#0000 44.4% 58%,#ffffff14 58% 58.4%,#0000 58.4% 72%,#ffffff14 72% 72.4%,#0000 72.4% 86%,#ffffff14 86% 86.4%,#0000 86.4% 100%),linear-gradient(#46505d,#252f3d 56%,#151d29);border-top:1px solid #ffe8b138;border-bottom:1px solid #0000007a;height:72px;position:absolute;bottom:22%;left:8%;right:8%;transform:perspective(700px)rotateX(58deg);box-shadow:0 -18px 45px #ffbe5e14,0 22px 42px #0000006b,inset 0 1px #ffffff2e}.hub-curb{background:repeating-linear-gradient(90deg,#ffdd8b57 0 42px,#1e232ccc 42px 84px),linear-gradient(#6d7480,#2a323e);height:16px;position:absolute;bottom:16%;left:5%;right:5%;box-shadow:0 10px 24px #0000006b}.projects-scene-object,.academic-object{color:#fff;cursor:pointer;transform-style:preserve-3d;will-change:transform;font-family:"\"Times New Roman\", Times, serif";transition:transform .32s cubic-bezier(.2,.8,.2,1),box-shadow .32s,filter .32s,border-color .32s}.projects-scene-object{text-align:left;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(120deg,#ffebb738,#0000 34%,#96daff14 66%,#ffffff24),linear-gradient(155deg,#0e2b46e0,#0b1d34eb);border:1px solid #ffe8af57;border-radius:8px;min-height:230px;padding:28px;position:relative;overflow:hidden;box-shadow:0 30px 0 -10px #0309146b,22px 28px #040c1838,0 26px 70px #0000005c,inset 0 1px #fff6,inset 0 -38px 48px #01071138}.projects-hub-scene .projects-scene-object{text-align:left;isolation:isolate;-webkit-backdrop-filter:none;backdrop-filter:none;background:linear-gradient(90deg,#ffeebe2e,#0000 18%,#ffffff0f 48%,#00000029),linear-gradient(#4c677cf5,#11223afa 58%,#071121);border:1px solid #ffdf9d6b;border-radius:10px 10px 4px 4px;width:min(100%,320px);min-height:455px;padding:0;box-shadow:0 42px 0 -16px #0000007a,26px 34px 42px #0107116b,-16px -18px 44px #ffbe5e1f,0 0 32px #ffce741f,inset 1px 0 #fff6dc52,inset -34px 0 42px #0000002e,inset 0 -80px 70px #0107115c}.projects-hub-scene .projects-scene-object::marker{content:""}.projects-hub-scene .projects-scene-object-academic{transform:rotateY(13deg)rotateX(2deg)translateZ(34px)scale(1)}.projects-hub-scene .projects-scene-object-personal{background:linear-gradient(90deg,#ffeebe29,#0000 18%,#97e0ff12 48%,#0000002e),linear-gradient(#4f5274f7,#1f344afa 58%,#081323);min-height:415px;transform:rotateY(-13deg)rotateX(2deg)translateZ(26px)scale(.98)}.projects-hub-scene .projects-scene-object:before{opacity:1;z-index:-1;background:linear-gradient(90deg,#ffe8ab40,#0000 12% 82%,#00000038),repeating-linear-gradient(0deg,#0000 0 21px,#ffffff14 21px 22px),repeating-linear-gradient(90deg,#0000 0 39px,#ffffff12 39px 40px);height:auto;inset:0;transform:none}.projects-hub-scene .projects-scene-object:after{filter:blur(12px);background:radial-gradient(#00000094,#0000003d 46%,#0000 72%);height:58px;inset:auto -14% -34px}.skyscraper-roof{background:linear-gradient(90deg,#ffedbe47,#0000 60%),linear-gradient(#485e74fa,#0e1e34);border-radius:6px 6px 0 0;height:28px;position:absolute;top:-18px;left:12%;right:12%;box-shadow:0 -10px 26px #ffcc681f,inset 0 1px #ffffff3d}.skyscraper-roof:before{content:"";background:linear-gradient(#ffe08b00,#ffe08bc7);width:2px;height:34px;position:absolute;bottom:100%;left:50%;box-shadow:0 0 16px #ffe08b5c}.skyscraper-windows{opacity:.92;background:repeating-linear-gradient(0deg,#ffdc883d 0 9px,#0000 9px 25px),repeating-linear-gradient(90deg,#ffdc88c7 0 13px,#0000 13px 31px);position:absolute;inset:38px 32px 128px;-webkit-mask-image:linear-gradient(#000,#000000e6 70%,#00000061);mask-image:linear-gradient(#000,#000000e6 70%,#00000061)}.skyscraper-upper-floor{opacity:.76;background:linear-gradient(90deg,#fff0bb80,#ffce6b3d,#6db8e633),repeating-linear-gradient(90deg,#ffffff80 0 2px,#0000 2px 24px);border:1px solid #ffe69ac2;border-radius:4px;height:62px;position:absolute;top:72px;left:28px;right:28px;box-shadow:0 0 28px #ffd37647,inset 0 0 20px #ffe8a833}.skyscraper-label{background:#050f1dad;border:1px solid #ffe9ab61;border-radius:6px;padding:16px 16px 15px;display:block;position:absolute;bottom:86px;left:18px;right:18px;box-shadow:0 18px 28px #00000038,inset 0 1px #ffffff2e}.projects-hub-scene .projects-scene-object .skyscraper-label:after{content:"";background:linear-gradient(90deg,#ffe59d47,#0000 47%,#ffe59d33 49%,#0000 51%,#6db8e62e),linear-gradient(#102439e0,#050d1afa);border:1px solid #ffe08b7a;border-bottom:none;border-radius:4px 4px 0 0;width:92px;height:58px;position:absolute;bottom:-78px;left:50%;transform:translate(-50%);box-shadow:0 0 24px #ffcf6b2e,inset 0 1px #ffffff38}.projects-hub-scene .projects-scene-object .skyscraper-label:before{content:"";background:linear-gradient(#7a8088,#303845);border-radius:2px;width:130px;height:12px;position:absolute;bottom:-89px;left:50%;transform:translate(-50%);box-shadow:0 8px 18px #00000057,inset 0 1px #ffffff2e}.projects-scene-object:before,.academic-object:before{content:"";opacity:.5;pointer-events:none;background:linear-gradient(110deg,#0000 18%,#ffffff3d,#0000 72%);height:70%;transition:transform .52s,opacity .32s;position:absolute;inset:-45% -35% auto;transform:translate(-38%)rotate(8deg)}.projects-scene-object:after,.academic-object:after{content:"";filter:blur(8px);pointer-events:none;background:radial-gradient(#0000006b,#0000 70%);border-radius:999px;height:28px;position:absolute;inset:auto 12% -22px;transform:translateZ(-80px)}.projects-scene-object-academic{transform:rotateY(12deg)rotateX(3deg)translateZ(24px)scale(1)}.projects-scene-object-personal{background:linear-gradient(120deg,#ffebb73d,#0000 36%,#96daff1a 68%,#ffffff21),linear-gradient(155deg,#542f51e6,#0f4a58ed);transform:rotateY(-12deg)rotateX(3deg)translateZ(24px)scale(1)}.projects-hub-scene .projects-scene-object:hover{border-color:#ffe8a8f2;transform:translateY(-12px)rotateY(0)rotateX(0)translateZ(70px)scale(1.035);box-shadow:0 48px 0 -18px #00000085,28px 42px 56px #01071175,-22px -22px 54px #ffbe5e33,0 0 48px #ffce7447,inset 1px 0 #fff6dc66,inset -34px 0 42px #0000001f,inset 0 -80px 70px #01071142}.projects-hub-scene .projects-scene-object:hover .skyscraper-upper-floor{opacity:1;box-shadow:0 0 44px #ffda8180,inset 0 0 24px #ffe8a852}.projects-hub-scene.entering-academic .projects-scene-stage,.projects-hub-scene.entering-personal .projects-scene-stage{transition:transform .48s cubic-bezier(.16,.84,.22,1),opacity .48s}.projects-hub-scene.entering-academic .projects-scene-stage{opacity:0;transform:translate3d(24%,-17%,280px)scale(1.34)rotateX(-2deg)rotateY(-7deg)}.projects-hub-scene.entering-personal .projects-scene-stage{opacity:0;transform:translate3d(-24%,-16%,280px)scale(1.34)rotateX(-2deg)rotateY(7deg)}.projects-hub-scene.entering-academic .projects-scene-object-personal,.projects-hub-scene.entering-personal .projects-scene-object-academic{opacity:.28;filter:blur(2px)brightness(.75)}.projects-hub-scene.entering-academic .projects-scene-object-academic .skyscraper-upper-floor,.projects-hub-scene.entering-personal .projects-scene-object-personal .skyscraper-upper-floor{opacity:1;animation:.48s both skyscraper-floor-pulse}.projects-scene-object:hover,.academic-object:hover{filter:saturate(1.08);border-color:#ffe59de6;transform:translateY(-8px)rotateY(0)rotateX(0)translateZ(42px)scale(1.035);box-shadow:0 34px 0 -12px #03091473,18px 34px #040c1833,0 0 34px #ffcf6b47,0 34px 90px #0000006b,inset 0 1px #ffffff85,inset 0 -38px 48px #0107112e}.academic-object:nth-child(2n):hover{transform:translateY(26px)rotateY(0)rotateX(0)translateZ(54px)scale(1.04)}.academic-object:hover{animation-play-state:paused;box-shadow:0 42px 0 -16px #0308118c,18px 36px 46px #02071061,-18px -16px 44px #ffbc582e,0 0 42px #ffcf6b4d,0 36px 92px #0000006b,inset 0 1px #ffffff85,inset 0 -46px 56px #01071133}.projects-scene-object:active,.academic-object:active{transition-duration:.14s;transform:translateY(-4px)rotateY(0)rotateX(0)translateZ(26px)scale(1.015)}.projects-scene-object:focus-visible,.academic-object:focus-visible,.projects-scene-back:focus-visible,.projects-frame-btn:focus-visible{outline-offset:4px;outline:2px solid #ffe08b}.projects-scene-object:hover:before,.academic-object:hover:before{opacity:.78;transform:translate(24%)rotate(8deg)}.projects-scene-title{margin-top:18px;font-size:clamp(28px,4vw,43px);font-weight:700;line-height:1.02;display:block}.projects-scene-detail{color:#ffffffd1;max-width:25ch;margin-top:18px;font-size:15px;line-height:1.45;display:block}.projects-scene-action,.academic-object-action{color:#ffe08b;letter-spacing:1.7px;text-transform:uppercase;opacity:.72;margin-top:22px;font-size:12px;font-weight:700;transition:opacity .28s,transform .28s;display:inline-block;transform:translateY(3px)}.projects-scene-object:hover .projects-scene-action,.academic-object:hover .academic-object-action{opacity:1;transform:translateY(0)}.projects-skyline{z-index:0;opacity:.92;height:45%;transform:translate3d(calc(var(--scene-x) * -18px), calc(var(--scene-y) * -6px), 0);transition:transform .52s;position:absolute;inset:auto 0 0}.projects-academic-scene .projects-skyline:before,.projects-academic-scene .projects-skyline:after{content:"";filter:blur(7px);opacity:.58;background:linear-gradient(90deg,#0000 0 4%,#0b182a52 4% 10%,#0000 10% 14%,#0e1c304d 14% 22%,#0000 22% 28%,#08142457 28% 36%,#0000 36% 44%,#0b192b4d 44% 52%,#0000 52% 59%,#0d1d2f57 59% 68%,#0000 68% 74%,#09152652 74% 83%,#0000 83% 100%);height:42%;position:absolute;bottom:20%;left:-5%;right:-5%}.projects-academic-scene .projects-skyline:after{filter:blur(3px);opacity:.72;height:36%;transform:translateX(calc(var(--scene-x) * -10px));bottom:4%}.building{background:linear-gradient(90deg,#ffdd8b14,#0000 18%,#ffffff0a 52%,#0000),linear-gradient(#1d2a43,#08101f);width:12%;position:absolute;bottom:0;box-shadow:inset 0 12px #ffd78514,16px 18px 36px #01050c5c}.building:before{content:"";opacity:.55;background:repeating-linear-gradient(#ffdc8bbf 0 7px,#0000 7px 22px);height:55%;position:absolute;inset:18px 18% auto}.b1{height:45%;left:2%}.b2{width:10%;height:72%;left:14%}.b3{width:15%;height:54%;left:28%}.b4{width:13%;height:80%;left:50%}.b5{width:11%;height:58%;left:68%}.b6{width:14%;height:68%;left:83%}.projects-scene-back,.projects-frame-btn{z-index:3;color:#fff;cursor:pointer;background:#0c23407a;border:1px solid #ffffff9e;border-radius:4px;padding:9px 16px;font-family:"\"Times New Roman\", Times, serif";font-size:13px;transition:background .22s,transform .22s,box-shadow .22s;position:relative;box-shadow:0 12px 30px #0000002e,inset 0 1px #ffffff38}.projects-scene-back{margin-bottom:26px}.academic-object-grid{z-index:3;perspective:1200px;min-height:380px;transform-style:preserve-3d;transform:rotateX(calc(-7deg + (var(--scene-y) * -2deg))) rotateY(calc(var(--scene-x) * 4deg)) translateZ(18px);grid-template-columns:repeat(4,minmax(150px,1fr));align-items:end;gap:clamp(16px,3vw,28px);padding-top:58px;transition:transform .48s cubic-bezier(.2,.8,.2,1);display:grid;position:relative}.academic-object-grid:before{content:"";filter:blur(12px);pointer-events:none;background:radial-gradient(#0000006b,#0000002e 42%,#0000 72%);border-radius:999px;height:72px;position:absolute;bottom:-24px;left:6%;right:6%;transform:rotateX(72deg)translateZ(-80px)}.academic-object{text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:radial-gradient(circle at 82% 16%,#ffdd8b2e,#0000 24%),linear-gradient(130deg,#fff0c63d,#0000 34%,#7fc2e41f 70%,#ffffff1a),linear-gradient(#495d70eb,#0d1f36f7);border:1px solid #ffe5a65c;border-radius:7px 7px 4px 4px;min-height:230px;padding:22px 18px;animation:6s ease-in-out infinite academic-card-float;position:relative;overflow:hidden;transform:rotateX(5deg)rotateY(-4deg)translateZ(22px)scale(1);box-shadow:0 32px 0 -14px #03081180,16px 28px 34px #02071057,-14px -12px 36px #ffbc581a,0 0 24px #ffcf6b1a,inset 0 1px #ffffff6b,inset 0 -46px 56px #01071147}.academic-object:nth-child(2n){transform:rotateX(5deg)rotateY(4deg)translateY(38px)translateZ(10px)scale(.985)}.academic-object:first-child{filter:brightness(1.08)saturate(1.06);animation-delay:-.8s}.academic-object:nth-child(2){filter:brightness(1.01)saturate(1.03);animation-delay:-2.1s}.academic-object:nth-child(3){filter:brightness(.96)saturate(1.02);animation-delay:-1.2s}.academic-object:nth-child(4){filter:brightness(.92)saturate(1.01);animation-delay:-3s}.academic-object:nth-child(2):after,.academic-object:nth-child(4):after{opacity:.86;inset:auto 8% -24px}.academic-object-marker{color:#ffe08b;background:radial-gradient(circle at 35% 25%,#ffffff38,#ffe08b14 48%,#0813232e);border:2px solid #ffe08bdb;border-radius:50%;place-items:center;width:74px;height:74px;margin:0 auto 20px;font-size:20px;font-weight:700;display:inline-grid;box-shadow:inset 0 1px 10px #ffffff29,0 0 24px #ffcd6624}.academic-object-title{min-height:58px;font-size:21px;font-weight:700;line-height:1.12;display:block}.academic-object-meta{color:#ffffffc7;margin-top:13px;font-size:13px;line-height:1.35;display:block}.projects-frame-toolbar{justify-content:flex-start;margin-bottom:22px;display:flex}.projects-frame-btn{border-color:var(--navy);background:var(--navy);color:var(--cream)}.projects-frame-btn:hover,.projects-scene-back:hover{background:#1b3a6b;transform:translateY(-1px);box-shadow:0 16px 34px #0000003d,0 0 22px #ffcf6b29}@keyframes projects-scene-in{0%{opacity:0;transform:scale(.985)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes projects-cloud-drift{0%{opacity:.45;transform:translate(-12px)}to{opacity:.72;transform:translate(22px)}}@keyframes academic-card-float{0%,to{translate:0}50%{translate:0 -5px}}@keyframes skyscraper-floor-pulse{0%{transform:scale(1);box-shadow:0 0 28px #ffd37647,inset 0 0 20px #ffe8a833}to{transform:scale(1.06);box-shadow:0 0 70px #ffe08bb8,inset 0 0 30px #ffe8a866}}@media (width<=900px){.projects-scene-stage,.academic-object-grid{grid-template-columns:1fr;min-height:auto}.projects-scene-object,.projects-scene-object-academic,.projects-scene-object-personal,.academic-object,.academic-object:nth-child(2n){transform:none}.academic-object{min-height:190px;animation:none}.projects-hub-scene .projects-scene-stage{grid-template-columns:1fr;min-height:auto}.projects-hub-scene .projects-scene-object,.projects-hub-scene .projects-scene-object-personal{min-height:380px;transform:none}}@media (prefers-reduced-motion:reduce){.projects-scene,.projects-cloud,.academic-object{animation:none}.projects-scene-stage,.academic-object-grid,.projects-scene-header,.projects-skyline,.projects-ambient{transition:none;transform:none}}
