.time-machine-timeline{width:100%;height:100%;display:flex;flex-direction:column;position:relative;-webkit-user-select:none;user-select:none;overflow:hidden;transition:all .4s cubic-bezier(.32,.72,0,1)}.time-machine-timeline.minimized{cursor:default}.time-machine-timeline.expanded{cursor:grab}.time-machine-timeline.expanded:active{cursor:grabbing}.timeline-header{display:flex;align-items:center;justify-content:center;gap:12px;padding:8px 24px;z-index:10;transition:opacity .4s ease,height .4s ease,padding .4s ease;pointer-events:none}.time-machine-timeline.minimized .timeline-header{height:0;padding:0;overflow:hidden;opacity:0}.timeline-header-year{font-size:12px;font-weight:600;color:#ff5800}.timeline-header-name{font-size:16px;font-weight:600;color:#fff;margin:0}.timeline-header-role{font-size:12px;color:#ffffff80;margin:0}.timeline-playhead{position:absolute;left:50%;top:50px;bottom:12px;width:2px;background:#ff5800;z-index:50;pointer-events:none;box-shadow:0 0 8px #ff580080;transition:opacity .4s ease}.time-machine-timeline.minimized .timeline-playhead{opacity:0}.timeline-playhead:before{content:"";position:absolute;top:-4px;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:8px solid #FF5800}.timeline-viewport{flex:1;display:flex;align-items:center;overflow:visible;position:relative}.time-machine-timeline.minimized .timeline-viewport{justify-content:flex-start;overflow:hidden}.timeline-track{display:flex;align-items:center;gap:8px;padding-left:50%;padding-right:50%;will-change:transform;transition:gap .4s cubic-bezier(.32,.72,0,1),transform .4s cubic-bezier(.32,.72,0,1)}.time-machine-timeline.minimized .timeline-track{gap:4px}.timeline-group-divider{display:flex;align-items:center;justify-content:center;padding:0 12px;height:80px;position:relative}.timeline-group-divider:before{content:"";position:absolute;left:50%;top:10%;bottom:10%;width:1px;background:#ffffff26}.timeline-group-divider span{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:#ffffff4d;writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);background:#1a1a1a;padding:8px 0;position:relative;z-index:1}.timeline-clip{position:relative;flex-shrink:0;width:160px;height:90px;border-radius:8px;overflow:hidden;cursor:pointer;background:#1a1a1a;border:2px solid rgba(255,255,255,.1);transition:all .4s cubic-bezier(.32,.72,0,1);will-change:width,height,border-radius}.time-machine-timeline.minimized .timeline-clip{width:2px;height:24px;border-radius:1px;cursor:default;border:none;background:#fff3}.time-machine-timeline.minimized .timeline-clip.active{width:32px;height:24px;border-radius:4px;background:transparent;border:2px solid #FF5800;box-shadow:none;transform:none}.time-machine-timeline.expanded .timeline-clip:hover{border-color:#ffffff4d}.time-machine-timeline.expanded .timeline-clip.active{border-color:#ff5800;box-shadow:0 0 0 1px #ff5800,0 4px 20px #ff580066;transform:scale(1.05);z-index:10}.timeline-clip.selected{border-color:#ff5800}.timeline-clip:not(.active){opacity:.7}.timeline-clip:not(.active):hover{opacity:1}.timeline-clip-content{position:relative;width:100%;height:100%;transition:opacity .4s ease}.time-machine-timeline.minimized .timeline-clip-content{opacity:0;pointer-events:none}.timeline-clip-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.timeline-clip-image{width:100%;height:100%;object-fit:cover;transition:opacity .2s ease;pointer-events:none}.timeline-clip-label{position:absolute;bottom:0;left:0;right:0;padding:24px 8px 8px;background:linear-gradient(transparent,#000000f2);pointer-events:none;transition:opacity .4s ease;opacity:1}.time-machine-timeline.minimized .timeline-clip-label{opacity:0}.timeline-clip-name{font-size:12px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;text-align:center;letter-spacing:.3px}.time-machine-horizontal.intro-mode{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.timeline-intro-card{width:100%;height:100%;overflow:hidden;transform-origin:center center;will-change:transform,border-radius,opacity;backface-visibility:hidden;-webkit-backface-visibility:hidden;transition:transform .05s linear,border-radius .05s linear,opacity .3s ease-out}.light-mode .timeline-header-name{color:#1a1a1a}.light-mode .timeline-header-role{color:#00000080}.light-mode .timeline-group-divider:before{background:#00000026}.light-mode .timeline-group-divider span{color:#0000004d;background:#f5f5f5}.light-mode .timeline-clip{background:#f0f0f0;border-color:#0000001a}.light-mode .timeline-clip:hover{border-color:#0000004d}.light-mode .timeline-clip-label{background:linear-gradient(transparent,#000c)}.light-mode .time-machine-timeline.minimized .timeline-clip{background:#00000040}.light-mode .time-machine-timeline.minimized .timeline-clip.active{background:transparent;border-color:#ff5800}@media (max-width: 768px){.timeline-clip{width:120px;height:68px}.timeline-clip-name{font-size:10px}.timeline-header{padding:6px 12px;gap:8px}.timeline-header-name{font-size:14px}.timeline-group-divider{height:60px;padding:0 8px}.timeline-group-divider span{font-size:8px}}@media (max-width: 480px){.timeline-clip{width:100px;height:56px;border-radius:6px}.timeline-clip-name{font-size:9px}.timeline-clip-label{padding:16px 6px 6px}.timeline-header{padding:4px 8px;gap:6px}.timeline-header-year{font-size:10px}.timeline-header-name{font-size:12px}.timeline-header-role{font-size:10px}.timeline-playhead{top:40px}.timeline-group-divider{height:50px;padding:0 6px}.timeline-group-divider span{font-size:7px;letter-spacing:.1em}.timeline-track{gap:6px}.time-machine-timeline.minimized .timeline-clip.active{width:24px;height:20px}.time-machine-timeline.minimized .timeline-clip{height:20px}}.film-strip-container{width:100%;height:100%;position:relative;overflow:hidden;border-radius:6px;background:#000}.film-strip-frame-img{width:100%;height:100%;object-fit:cover;object-position:center center;display:block}html,body{touch-action:pan-x pan-y;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;overscroll-behavior:none}.portfolio-app{--bg-primary: #000000;--bg-primary-rgb: 0, 0, 0;--bg-secondary: #1a1a1a;--bg-tertiary: #2a2a2a;--text-primary: #ffffff;--text-secondary: rgba(255, 255, 255, .7);--text-muted: rgba(255, 255, 255, .5);--accent: #FF5800;--border-color: rgba(255, 255, 255, .1);--border-hover: rgba(255, 255, 255, .2);--card-bg: rgba(255, 255, 255, .05);--card-hover: rgba(255, 255, 255, .1);--overlay-bg: rgba(0, 0, 0, .4);--shadow-color: rgba(0, 0, 0, .3)}.portfolio-app.light-mode{--bg-primary: #ffffff;--bg-primary-rgb: 255, 255, 255;--bg-secondary: #f0f0f0;--bg-tertiary: #e5e5e5;--text-primary: #1a1a1a;--text-secondary: rgba(0, 0, 0, .7);--text-muted: rgba(0, 0, 0, .5);--accent: #FF5800;--border-color: rgba(0, 0, 0, .1);--border-hover: rgba(0, 0, 0, .2);--card-bg: rgba(0, 0, 0, .03);--card-hover: rgba(0, 0, 0, .06);--overlay-bg: rgba(255, 255, 255, .8);--shadow-color: rgba(0, 0, 0, .1)}:root{--font-sans: "Aeonik", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-serif: "Romie", Georgia, "Times New Roman", serif;--font-mono: "Geist Mono", "SF Mono", "Fira Code", monospace;--vh-full: 100vh;--vh-full: 100dvh;--grid-columns: 12;--grid-gutter: 24px;--container-max: 1200px;--container-padding: 40px}.grid-container{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--grid-gutter);max-width:var(--container-max);margin:0 auto;padding:0 var(--container-padding);width:100%}.col-1{grid-column:span 1}.col-2{grid-column:span 2}.col-3{grid-column:span 3}.col-4{grid-column:span 4}.col-5{grid-column:span 5}.col-6{grid-column:span 6}.col-7{grid-column:span 7}.col-8{grid-column:span 8}.col-9{grid-column:span 9}.col-10{grid-column:span 10}.col-11{grid-column:span 11}.col-12{grid-column:span 12}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-4{grid-column-start:4}.col-start-5{grid-column-start:5}.col-start-6{grid-column-start:6}.col-start-7{grid-column-start:7}@media (max-width: 1024px){:root{--grid-gutter: 20px;--container-padding: 32px}.md-col-6{grid-column:span 6}.md-col-8{grid-column:span 8}.md-col-10{grid-column:span 10}.md-col-12{grid-column:span 12}.md-col-start-1{grid-column-start:1}.md-col-start-2{grid-column-start:2}.md-col-start-3{grid-column-start:3}}@media (max-width: 768px){:root{--grid-gutter: 16px;--container-padding: 20px}.sm-col-12{grid-column:span 12}.sm-col-start-1{grid-column-start:1}}.content-narrow{max-width:680px;margin:0 auto}.content-medium{max-width:840px;margin:0 auto}.content-wide{max-width:1080px;margin:0 auto}.content-full{max-width:100%}.portfolio-app{width:100vw;height:100vh;height:var(--vh-full);display:flex;flex-direction:column;gap:0;padding:0;background-color:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-sans);transition:background-color .3s ease,color .3s ease,padding .4s cubic-bezier(.32,.72,0,1),gap .4s cubic-bezier(.32,.72,0,1);position:relative;overflow:hidden;box-sizing:border-box}.portfolio-app.intro-mode{gap:0;padding:0;background-color:var(--bg-secondary)}.portfolio-app.intro-mode .main-content{border-radius:0;display:none}.portfolio-app.bottom-bar-open{gap:0;padding:0}.main-content{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;background:var(--bg-primary);border-radius:24px;transition:transform .4s cubic-bezier(.32,.72,0,1),flex 1s cubic-bezier(.16,1,.3,1),min-height 1s cubic-bezier(.16,1,.3,1),max-height 1s cubic-bezier(.16,1,.3,1),background .3s ease,border-radius .6s cubic-bezier(.16,1,.3,1);transform-origin:center center;transform:scale(1)}.main-content.bottom-bar-open{transform:scale(.94)}@keyframes pageTransitionIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.parallax-element{will-change:transform;transition:transform .1s ease-out}@keyframes navbarFadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes sidebarFadeIn{0%{opacity:0;transform:translateY(-50%) translate(-10px)}to{opacity:1;transform:translateY(-50%) translate(0)}}.theme-toggle-btn{position:fixed;top:24px;right:24px;width:44px;height:44px;border-radius:50%;border:1px solid var(--border-color);background:var(--overlay-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:9999;transition:all .2s ease;animation:navbarFadeIn .6s cubic-bezier(.4,0,.2,1) forwards}.theme-toggle-btn:hover{background:#0009;border-color:#ffffff4d;transform:scale(1.05)}.scroll-progress-indicator{position:fixed;top:0;left:0;height:3px;min-width:0;background:linear-gradient(90deg,var(--text-muted),var(--text-secondary));z-index:9999;transition:width .1s ease-out;box-shadow:0 2px 4px var(--shadow-color);pointer-events:none}.page-wipe-overlay{position:fixed;top:0;left:0;width:100vw;height:calc(100vh - 80px);height:calc(var(--vh-full) - 80px);background:var(--accent);z-index:900;pointer-events:none;will-change:transform;display:flex;align-items:center;justify-content:center;transform:translate(100%)}.page-wipe-overlay.from-right{transform:translate(100%)}.page-wipe-overlay.from-right.entering{transition:transform .2s cubic-bezier(.4,0,.2,1);transform:translate(0)}.page-wipe-overlay.from-right.exiting{transition:transform .35s cubic-bezier(.4,0,.2,1);transform:translate(-100%)}.page-wipe-overlay.from-left{transform:translate(-100%)}.page-wipe-overlay.from-left.entering{transition:transform .2s cubic-bezier(.4,0,.2,1);transform:translate(0)}.page-wipe-overlay.from-left.exiting{transition:transform .35s cubic-bezier(.4,0,.2,1);transform:translate(100%)}.page-wipe-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:16px}.page-wipe-progress{width:64px;height:64px;position:relative}.page-wipe-progress-circle{width:100%;height:100%;transform:rotate(-90deg)}.page-wipe-progress-bg{fill:none;stroke:#00000026;stroke-width:3}.page-wipe-progress-fill{fill:none;stroke:#000;stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset .1s ease-out}.page-wipe-label{font-size:14px;font-weight:600;color:#000;text-transform:uppercase;letter-spacing:3px}.portfolio-header{display:flex;justify-content:space-between;align-items:center;padding:24px 40px;background-color:transparent;position:fixed;top:0;left:0;right:0;z-index:1000;transition:transform .3s cubic-bezier(.4,0,.2,1),background-color .3s ease,backdrop-filter .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:var(--overlay-bg)}.portfolio-header.header-hidden{transform:translateY(-100%)}.portfolio-header:before{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--border-color),transparent);transition:opacity .3s ease}.header-left{display:flex;align-items:center}.header-name{font-size:18px;font-weight:400;color:var(--text-secondary);margin:0;letter-spacing:-.02em;transition:color .3s ease}.header-name span{margin-left:4px}.header-nav{display:flex;gap:32px}.header-nav a{font-size:16px;color:var(--text-muted);text-decoration:none;font-weight:400;position:relative;transition:color .3s cubic-bezier(.4,0,.2,1);padding:4px 0}.header-nav a:after{content:"";position:absolute;bottom:0;left:0;width:0;height:1px;background:currentColor;transition:width .3s cubic-bezier(.4,0,.2,1)}.header-nav a:hover{color:var(--text-primary)}.header-nav a:hover:after{width:100%}.theme-toggle{background:none;border:none;font-size:20px;cursor:pointer;padding:4px 8px;margin-left:16px;transition:transform .2s ease}.theme-toggle:hover{transform:scale(1.1)}.canvas-section{width:100vw;height:100vh;height:var(--vh-full);margin:0 auto;position:relative;background:var(--bg-primary);border-radius:0;overflow:hidden;transition:transform .8s cubic-bezier(.33,1,.68,1),border-radius .8s cubic-bezier(.33,1,.68,1),width .8s cubic-bezier(.33,1,.68,1),height .8s cubic-bezier(.33,1,.68,1),background-color .3s ease,filter .3s ease;flex-shrink:0;z-index:1;contain:layout style paint;object-fit:contain}.canvas-section.menu-open{filter:brightness(.6)}.canvas-section.animation-complete{border-radius:16px;transform:none;transition:transform .4s cubic-bezier(.32,.72,0,1),width .6s cubic-bezier(.4,0,.2,1),height .6s cubic-bezier(.4,0,.2,1),border-radius .3s ease,background-color .3s ease}.canvas-section canvas{display:block;width:100%!important;height:100%!important}.fps-control-container{max-width:768px;margin:24px auto;padding:0 40px;display:flex;align-items:center;gap:16px}.fps-control-label{font-size:14px;color:var(--text-muted);font-weight:400;min-width:120px;transition:color .3s ease}.fps-control-slider{flex:1;height:4px;border-radius:2px;background:#e0e0e0;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background .3s ease}.portfolio-app.dark-mode .fps-control-slider{background:#333}.fps-control-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#333;cursor:pointer;transition:background .2s ease,transform .2s ease}.portfolio-app.dark-mode .fps-control-slider::-webkit-slider-thumb{background:#ccc}.fps-control-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.fps-control-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#333;cursor:pointer;border:none;transition:background .2s ease,transform .2s ease}.portfolio-app.dark-mode .fps-control-slider::-moz-range-thumb{background:#ccc}.fps-control-slider::-moz-range-thumb:hover{transform:scale(1.2)}.bottom-bar{flex-shrink:0;display:flex;flex-direction:column;width:100%;background:var(--bg-secondary);border:none;border-radius:24px;will-change:height,flex;transition:background .3s ease,height .4s cubic-bezier(.32,.72,0,1),flex .4s cubic-bezier(.32,.72,0,1);overflow:hidden;z-index:1000}.bottom-bar.collapsed{height:64px}.bottom-bar.expanded{height:320px}.bottom-bar .bottom-bar-content{flex:1;opacity:1!important;transform:none!important}.bottom-bar.intro-mode{border-radius:0;background:var(--bg-secondary)}.bottom-bar.intro-mode .bottom-bar-content{opacity:1;transform:none;height:100%;width:100%;padding:0}.bottom-bar-header{display:flex;align-items:center;gap:12px;height:64px;padding:0 20px;cursor:pointer;transition:background .15s ease}.bottom-bar-header:hover{background:#ffffff08}.bottom-bar-thumbnail{width:40px;height:40px;border-radius:10px;overflow:hidden;flex-shrink:0;background:#ffffff0d;border:1px solid rgba(255,255,255,.08)}.bottom-bar-thumbnail img{width:100%;height:100%;object-fit:cover}.bottom-bar-info{flex:1;min-width:0}.bottom-bar-title{font-size:14px;font-weight:600;color:#fff;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bottom-bar-role{font-size:12px;color:#ffffff73;margin:2px 0 0}.bottom-bar-fps{font-size:11px;font-weight:600;color:var(--accent);font-variant-numeric:tabular-nums;padding:5px 10px;background:#ff58001f;border-radius:8px;flex-shrink:0}.bottom-bar-toggle{width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:#fff6;font-size:10px;flex-shrink:0;transform:rotate(180deg);transition:transform .3s cubic-bezier(.32,.72,0,1);border-radius:50%;background:#ffffff0d}.bottom-bar-toggle.expanded{transform:rotate(0)}.bottom-bar-content{flex:1;min-height:0;overflow:visible;display:flex;align-items:center;padding:0 20px}@media (max-width: 480px){.bottom-bar-header{padding:0 16px}.bottom-bar-fps{display:none}}.page-toc-sidebar{position:fixed;left:24px;top:50%;transform:translateY(-50%);width:fit-content;pointer-events:none;z-index:100;transition:transform .4s cubic-bezier(.32,.72,0,1),left .4s cubic-bezier(.32,.72,0,1),top .4s cubic-bezier(.32,.72,0,1);animation:sidebarFadeIn .6s cubic-bezier(.4,0,.2,1) forwards}.page-toc-sidebar.bottom-bar-open{transform:translateY(-50%) scale(.94);left:calc(24px + 3%);top:calc(50% - 60px)}.page-toc{display:flex;flex-direction:column;gap:6px;padding:12px 8px;height:fit-content;width:fit-content;pointer-events:auto;border-radius:8px;transition:background .2s ease}.page-toc:hover{background:var(--card-bg)}.page-toc-item{cursor:pointer;display:flex;align-items:center;gap:10px;height:18px;padding:2px 0}.page-toc-line{width:12px;height:1.5px;background:var(--text-muted);border-radius:1px;flex-shrink:0;transition:width .2s ease,background .2s ease,box-shadow .2s ease}.page-toc-item.active .page-toc-line{width:16px;background:var(--accent)}.page-toc.expanded .page-toc-line{width:20px}.page-toc.expanded .page-toc-item.active .page-toc-line{width:24px;background:var(--accent)}.page-toc.expanded .page-toc-item.line-hovered .page-toc-line{width:28px;background:var(--text-primary)}.page-toc.expanded .page-toc-item.active.line-hovered .page-toc-line{width:28px;background:var(--accent)}.page-toc-label{font-family:var(--font-mono);font-size:10px;font-weight:450;letter-spacing:.02em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;opacity:0;max-width:0;overflow:hidden;transition:opacity .2s ease,max-width .25s ease,color .15s ease;pointer-events:none}.page-toc.expanded .page-toc-label{opacity:1;max-width:100px}.page-toc-item.active .page-toc-label{color:var(--accent)}.page-toc.expanded .page-toc-item.line-hovered .page-toc-label{color:var(--text-primary)}.page-toc.expanded .page-toc-item.active.line-hovered .page-toc-label{color:var(--accent)}@media (max-width: 768px){.page-toc-sidebar,.page-toc{display:none}}.timeline-label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:#fff6;margin:0 0 12px;text-align:center}.canvas-timeline-section{max-width:768px;margin:32px auto 0;padding:0 40px}.timeline-container{background:#0a0a0a;border-radius:12px;padding:20px;margin-bottom:16px}.fps-slider-row{display:flex;align-items:center;gap:16px;padding:12px 16px;background:#ffffff05;border:1px solid rgba(255,255,255,.04);border-radius:8px;margin-bottom:8px}.fps-value{font-size:13px;font-weight:500;color:var(--accent);min-width:60px;font-variant-numeric:tabular-nums}.fps-slider-orange{flex:1;height:4px;border-radius:2px;background:#ffffff1a;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.fps-slider-orange::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;box-shadow:0 0 8px #ff580066;transition:transform .15s ease,box-shadow .15s ease}.fps-slider-orange::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 0 12px #ff580099}.fps-slider-orange::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;border:none;box-shadow:0 0 8px #ff580066}.fps-slider-orange::-moz-range-thumb:hover{transform:scale(1.15)}.fps-slider-orange::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,#FF5800 0%,#FF5800 var(--progress, 25%),rgba(255,255,255,.1) var(--progress, 25%),rgba(255,255,255,.1) 100%)}.canvas-controls-section{margin-top:8px}.canvas-controls-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:8px;color:#ffffff80;font-size:12px;font-family:inherit;cursor:pointer;transition:all .2s ease}.canvas-controls-toggle:hover{background:#ffffff0f;color:#ffffffb3}.toggle-arrow{font-size:10px;transition:transform .2s ease}.toggle-arrow.open{transform:rotate(180deg)}.canvas-controls-content{margin-top:12px;padding:16px;background:#ffffff05;border:1px solid rgba(255,255,255,.04);border-radius:8px;display:flex;flex-direction:column;gap:16px;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.canvas-controls-content .control-row{display:flex;align-items:center;gap:12px}.canvas-controls-content .fps-control-label{font-size:12px;color:#ffffff80;min-width:auto}.canvas-controls-content .fps-control-slider{flex:1;max-width:200px}.canvas-controls-content .canvas-fullwidth-toggle{font-size:12px;color:#ffffff80;display:flex;align-items:center;gap:8px;cursor:pointer}.canvas-controls-content .canvas-fullwidth-toggle input{accent-color:var(--accent)}.photo-set-menu-container{display:none}.canvas-section .photo-set-menu-trigger{position:absolute;bottom:24px;left:24px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#ffffffe6;padding:10px 24px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:400;transition:all .2s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10}.portfolio-app.dark-mode .canvas-section .photo-set-menu-trigger{background:#0000004d;border-color:#ffffff1a;color:#ffffffe6}.canvas-section .photo-set-menu-trigger:hover{background:#ffffff26;border-color:#ffffff4d;color:#fff}.portfolio-app.dark-mode .canvas-section .photo-set-menu-trigger:hover{background:#0006;border-color:#fff3}.canvas-section .canvas-fullscreen-btn{position:absolute;bottom:24px;right:24px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#ffffffe6;width:44px;height:44px;border-radius:8px;cursor:pointer;font-size:20px;font-weight:400;transition:all .2s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;display:flex;align-items:center;justify-content:center}.portfolio-app.dark-mode .canvas-section .canvas-fullscreen-btn{background:#0000004d;border-color:#ffffff1a;color:#ffffffe6}.canvas-section .canvas-fullscreen-btn:hover{background:#ffffff26;border-color:#ffffff4d;color:#fff;transform:scale(1.05)}.portfolio-app.dark-mode .canvas-section .canvas-fullscreen-btn:hover{background:#0006;border-color:#fff3}.canvas-section .photo-set-menu-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#0000004d;z-index:100;cursor:pointer;transition:opacity .3s ease}.portfolio-app.dark-mode .canvas-section .photo-set-menu-overlay{background:#00000080}.canvas-section .photo-set-menu{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#ffffffb3;backdrop-filter:blur(40px) saturate(180%);-webkit-backdrop-filter:blur(40px) saturate(180%);border-radius:16px;padding:32px 0;min-width:280px;box-shadow:0 8px 32px #00000026,0 0 0 1px #ffffff1a;z-index:101;animation:fadeInUp .3s ease}.portfolio-app.dark-mode .canvas-section .photo-set-menu{background:#1a1a1ab3;box-shadow:0 8px 32px #00000080,0 0 0 1px #ffffff1a}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%,calc(-50% - 10px))}to{opacity:1;transform:translate(-50%,-50%)}}.photo-set-menu-list{display:flex;flex-direction:column;gap:0}.photo-set-menu-item{background:transparent;border:none;padding:16px 24px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background-color .2s ease;text-align:left;width:100%}.photo-set-menu-item:hover{background:#0000000d}.portfolio-app.dark-mode .photo-set-menu-item:hover{background:#ffffff0d}.photo-set-menu-item.active{background:#00000014}.portfolio-app.dark-mode .photo-set-menu-item.active{background:#ffffff14}.photo-set-menu-title{font-size:16px;font-weight:400;color:var(--text-primary);transition:color .2s ease}.portfolio-app.dark-mode .photo-set-menu-title{color:var(--text-primary)}.photo-set-menu-item.active .photo-set-menu-title{font-weight:500}.photo-set-menu-year{font-size:14px;font-weight:400;color:var(--text-muted);transition:color .2s ease}.portfolio-app.dark-mode .photo-set-menu-year,.photo-set-menu-item.active .photo-set-menu-year{color:var(--text-secondary)}.portfolio-app.dark-mode .photo-set-menu-item.active .photo-set-menu-year{color:var(--text-muted)}.photo-set-menu-divider{height:1px;background:#0000001a;margin:8px 0}.portfolio-app.dark-mode .photo-set-menu-divider{background:#ffffff1a}.photo-set-menu-toggles{padding:12px 24px}.photo-set-menu-toggle{display:flex;align-items:center;gap:12px;cursor:pointer;font-size:14px;color:var(--text-primary)}.portfolio-app.dark-mode .photo-set-menu-toggle{color:var(--text-primary)}.photo-set-menu-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--text-primary);cursor:pointer}.portfolio-app.dark-mode .photo-set-menu-toggle input[type=checkbox]{accent-color:var(--text-primary)}.toggle-label{font-weight:400}.scroll-timeline{position:fixed;left:32px;top:50%;transform:translateY(-50%);z-index:1000;display:flex;flex-direction:column;gap:8px;padding:20px 16px;background:#ffffffd9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:16px;border:1px solid rgba(0,0,0,.08);box-shadow:0 4px 24px #00000014;animation:fadeInLeft .4s cubic-bezier(.16,1,.3,1)}.portfolio-app.dark-mode .scroll-timeline{background:#1e1e1ed9;border-color:#ffffff14;box-shadow:0 4px 24px #0000004d}@keyframes fadeInLeft{0%{opacity:0;transform:translateY(-50%) translate(-20px)}to{opacity:1;transform:translateY(-50%) translate(0)}}.scroll-timeline-header{display:flex;align-items:center;gap:8px;padding-bottom:12px;border-bottom:1px solid rgba(0,0,0,.08);margin-bottom:4px}.portfolio-app.dark-mode .scroll-timeline-header{border-bottom-color:#ffffff14}.scroll-timeline-year{font-family:var(--font-serif);font-size:18px;font-weight:400;color:var(--text-primary);letter-spacing:-.02em}.portfolio-app.dark-mode .scroll-timeline-year{color:var(--text-primary)}.scroll-timeline-chevron{font-size:12px;color:var(--text-muted)}.portfolio-app.dark-mode .scroll-timeline-chevron{color:var(--text-muted)}.scroll-timeline-items{display:flex;flex-direction:column;gap:2px}.scroll-timeline-item{display:flex;align-items:center;gap:12px;padding:10px 8px;background:transparent;border:none;cursor:pointer;transition:all .2s ease;border-radius:8px;text-align:left}.scroll-timeline-item:hover{background:#0000000a}.portfolio-app.dark-mode .scroll-timeline-item:hover{background:#ffffff0a}.scroll-timeline-indicator{width:6px;height:6px;border-radius:50%;background:#ccc;transition:all .3s cubic-bezier(.16,1,.3,1);flex-shrink:0}.portfolio-app.dark-mode .scroll-timeline-indicator{background:#555}.scroll-timeline-indicator.active{width:4px;height:28px;border-radius:4px;background:#222}.portfolio-app.dark-mode .scroll-timeline-indicator.active{background:#f0f0f0}.scroll-timeline-label{font-size:15px;font-weight:400;color:var(--text-muted);transition:all .2s ease;letter-spacing:-.01em}.portfolio-app.dark-mode .scroll-timeline-label{color:var(--text-muted)}.scroll-timeline-item.active .scroll-timeline-label{color:var(--text-primary);font-weight:500}.portfolio-app.dark-mode .scroll-timeline-item.active .scroll-timeline-label{color:var(--text-primary)}.canvas-fullwidth-toggle{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:400;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .3s ease}.portfolio-app.dark-mode .canvas-fullwidth-toggle{color:var(--text-muted)}.canvas-fullwidth-toggle:hover{color:var(--text-primary)}.portfolio-app.dark-mode .canvas-fullwidth-toggle:hover{color:var(--text-secondary)}.canvas-fullwidth-toggle input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--text-primary);transition:accent-color .3s ease}.portfolio-app.dark-mode .canvas-fullwidth-toggle input[type=checkbox]{accent-color:var(--text-secondary)}.portfolio-content{width:100%;background:#fff;transition:background-color .3s ease;padding-top:0;padding-bottom:100px;animation:pageTransitionIn .6s cubic-bezier(.4,0,.2,1)}.portfolio-app.dark-mode .portfolio-content{background:#000}.experience-page-content{animation:fadeInUp .5s ease-out}.experience-page-content.end-credits-page{height:100%;max-height:100%;overflow:hidden;touch-action:none;-webkit-overflow-scrolling:auto;overscroll-behavior:none}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.playground-page{display:flex;flex-direction:column;align-items:center;padding:60px 40px;min-height:80vh}.playground-title{font-size:24px;font-weight:500;color:#ffffffe6;margin:0 0 40px;text-align:center}.end-credits-page{background:var(--bg-primary);height:100%;min-height:100%;max-height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:0;touch-action:none;-webkit-user-select:none;user-select:none;overscroll-behavior:none}.end-credits-container{width:100%;height:100%;overflow:hidden;position:relative;pointer-events:none}.end-credits-scroll{animation:creditsScroll 30s linear infinite;display:flex;flex-direction:column;align-items:center;padding-top:30vh;padding-bottom:50vh}@keyframes creditsScroll{0%{transform:translateY(0)}to{transform:translateY(-100%)}}.credits-section{text-align:center;margin-bottom:48px;opacity:0;animation:fadeInCredits .8s ease forwards}.end-credits-scroll .credits-section:nth-child(1){animation-delay:.2s}.end-credits-scroll .credits-section:nth-child(2){animation-delay:.4s}.end-credits-scroll .credits-section:nth-child(3){animation-delay:.6s}.end-credits-scroll .credits-section:nth-child(4){animation-delay:.8s}.end-credits-scroll .credits-section:nth-child(5){animation-delay:1s}.end-credits-scroll .credits-section:nth-child(6){animation-delay:1.2s}.end-credits-scroll .credits-section:nth-child(7){animation-delay:1.4s}.end-credits-scroll .credits-section:nth-child(8){animation-delay:1.6s}.end-credits-scroll .credits-section:nth-child(9){animation-delay:1.8s}.end-credits-scroll .credits-section:nth-child(10){animation-delay:2s}@keyframes fadeInCredits{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.credits-title{font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--accent);text-transform:uppercase;letter-spacing:.1em;margin:0 0 24px}.credits-name{font-family:var(--font-serif);font-size:28px;font-weight:400;letter-spacing:-.02em;color:var(--text-primary);margin:0 0 12px}.credits-final{margin-top:64px;margin-bottom:120px}.credits-year{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);letter-spacing:.08em;margin:0 0 24px}.credits-logo{font-family:var(--font-sans);font-size:72px;font-weight:700;color:var(--accent);margin:0 0 24px;letter-spacing:4px}.credits-tagline{font-size:18px;font-weight:300;color:var(--text-secondary);font-style:italic;margin:0}.contact-page{background:#000;min-height:100vh;min-height:var(--vh-full);display:flex;align-items:center;justify-content:center;padding:60px 40px}.contact-page-container{max-width:600px;text-align:center}.contact-page-container .project-page-label{margin-bottom:16px}.contact-page-title{font-family:var(--font-serif);font-size:48px;font-weight:400;letter-spacing:-.02em;color:#fff;margin:0 0 24px}.contact-page-text{font-size:18px;font-weight:300;color:#fff9;line-height:1.7;margin:0 0 48px}.contact-page-links{display:flex;flex-direction:column;gap:0;border-top:1px solid rgba(255,255,255,.1)}.contact-page-link{display:flex;align-items:center;gap:16px;padding:20px 0;border-bottom:1px solid rgba(255,255,255,.1);text-decoration:none;transition:all .2s ease}.contact-page-link:hover{padding-left:12px}.contact-page-link .contact-link-icon{color:#fff6;display:flex;align-items:center;transition:color .2s ease}.contact-page-link:hover .contact-link-icon{color:var(--accent)}.contact-link-label{font-size:20px;font-weight:400;color:#fff;flex:1;transition:color .2s ease}.contact-page-link:hover .contact-link-label{color:var(--accent)}.contact-link-arrow{font-size:20px;color:#ffffff4d;transition:all .2s ease}.contact-page-link:hover .contact-link-arrow{color:var(--accent);transform:translate(4px)}.playground-canvas-container{width:100%;max-width:800px;display:flex;justify-content:center;align-items:center}.playground-canvas-container .radial-timeline{opacity:0;pointer-events:none;position:absolute;z-index:-1}.portfolio-container{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--grid-gutter);max-width:var(--container-max);margin:0 auto;padding:48px var(--container-padding) 64px;width:100%}.portfolio-container>*{grid-column:3 / 11}.portfolio-container>.full-bleed{grid-column:1 / -1}.section-title{font-family:var(--font-serif);font-size:28px;font-weight:400;letter-spacing:-.02em;color:var(--text-primary);margin:0 0 48px;transition:color .3s ease;position:relative;display:inline-block}.pitch-deck-embed{width:100%;padding:40px 0}.pitch-deck-container{width:100%;max-width:1200px;margin:0 auto;aspect-ratio:16 / 9;border-radius:12px;overflow:hidden;box-shadow:0 8px 32px #0003}.pitch-deck-container iframe{display:block}.ramp-intelligence-section{width:100%;padding:40px 0}.ramp-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;margin-bottom:32px}.ramp-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:16px;overflow:hidden;text-decoration:none;color:inherit;transition:transform .3s ease,border-color .3s ease,box-shadow .3s ease}.ramp-card:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 8px 32px #ff580026}.ramp-card-content{padding:24px}.ramp-card-content h3{font-size:20px;font-weight:600;margin:0 0 8px;color:var(--text-primary)}.ramp-card-content p{font-size:14px;color:var(--text-secondary);margin:0 0 16px;line-height:1.5}.ramp-card-link{font-size:14px;color:var(--accent);font-weight:500}.ramp-card-video .ramp-card-video-thumb{position:relative;aspect-ratio:16 / 9;overflow:hidden}.ramp-card-video .ramp-card-video-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.ramp-card-video:hover .ramp-card-video-thumb img{transform:scale(1.05)}.ramp-card-video .play-button{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:64px;height:64px;background:#000000b3;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff;transition:background .3s ease,transform .3s ease}.ramp-card-video:hover .play-button{background:var(--accent);transform:translate(-50%,-50%) scale(1.1)}.ramp-period{text-align:center;color:#ffffff80;font-size:14px}.about-content{display:grid;grid-template-columns:280px 1fr;gap:48px;align-items:start}.about-image-container{position:relative;width:100%;aspect-ratio:1;border-radius:16px;overflow:hidden;box-shadow:0 8px 32px #00000026}.about-image{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.4,0,.2,1)}.about-image-container:hover .about-image{transform:scale(1.05)}.about-text-container{display:flex;flex-direction:column;gap:16px}.about-greeting{font-family:var(--font-serif);font-size:48px;font-weight:400;letter-spacing:-.02em;color:var(--text-primary);margin:0;line-height:1.1;transition:color .3s ease}.about-tagline{font-size:20px;font-weight:500;color:var(--text-secondary);margin:0 0 8px;opacity:.8;transition:color .3s ease}.about-text{font-size:17px;line-height:1.8;color:var(--text-secondary);margin:0;font-weight:400;transition:color .3s ease}.about-superpowers{margin:16px 0;padding:20px 24px;background:var(--card-bg);border-left:3px solid var(--text-muted);border-radius:0 8px 8px 0}.superpowers-title{font-size:15px;font-weight:600;color:var(--text-secondary);margin:0 0 12px;text-transform:uppercase;letter-spacing:.5px}.portfolio-app.dark-mode .superpowers-title{color:var(--text-secondary)}.superpowers-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.superpowers-list li{font-size:15px;color:var(--text-secondary);padding-left:20px;position:relative;line-height:1.5}.superpowers-list li:before{content:"→";position:absolute;left:0;color:var(--text-muted)}.portfolio-app.dark-mode .superpowers-list li{color:var(--text-muted)}.portfolio-app.dark-mode .superpowers-list li:before{color:var(--text-secondary)}@media (max-width: 900px){.about-content{grid-template-columns:1fr;gap:40px}.about-image-container{max-width:250px;margin:0 auto}.about-greeting{font-size:32px;text-align:center}.about-tagline,.about-text{text-align:center}}.projects-catalog{display:grid;grid-template-columns:1fr 1fr;gap:64px;margin-top:0;align-items:start}.projects-catalog-images{display:grid;grid-template-columns:1fr 1fr;gap:48px 40px;align-content:start}.projects-catalog-details{display:flex;flex-direction:column;gap:48px;padding-top:0}.catalog-item-image{position:relative;display:flex;flex-direction:column;gap:12px}.catalog-item-number{font-size:13px;font-weight:400;color:var(--accent);letter-spacing:.3px;line-height:1}.portfolio-app.dark-mode .catalog-item-number{color:var(--accent)}.catalog-image-wrapper{width:100%;aspect-ratio:1;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid transparent;transition:border-color .3s ease,background-color .3s ease}.portfolio-app.dark-mode .catalog-image-wrapper{background:#0a0a0a;border-color:transparent}.catalog-item-image:hover .catalog-image-wrapper,.catalog-item-image.hovered .catalog-image-wrapper{border-color:var(--accent)}.catalog-image-wrapper img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}.catalog-item-image:hover .catalog-image-wrapper img,.catalog-item-image.hovered .catalog-image-wrapper img{transform:scale(1.02)}.catalog-item-image.dimmed{opacity:.4}.catalog-item-image{transition:opacity .3s ease}.catalog-item-detail{text-decoration:none;color:inherit;display:flex;align-items:flex-start;gap:16px;transition:opacity .3s ease,transform .2s ease;position:relative}.catalog-item-detail:hover,.catalog-item-detail.hovered{opacity:1}.catalog-item-detail.hovered .catalog-item-title{color:var(--accent)}.catalog-item-detail.dimmed{opacity:.4}.catalog-item-detail:hover .catalog-item-title{color:var(--accent)}.catalog-detail-number{font-size:13px;font-weight:400;color:var(--accent);letter-spacing:.3px;flex-shrink:0;width:20px;line-height:1.4;padding-top:2px}.portfolio-app.dark-mode .catalog-detail-number{color:var(--accent)}.catalog-detail-content{flex:1;display:flex;flex-direction:column;gap:10px}.catalog-item-title{font-family:var(--font-serif);font-size:17px;font-weight:400;letter-spacing:-.01em;color:var(--text-primary);margin:0;line-height:1.4;transition:color .3s ease}.portfolio-app.dark-mode .catalog-item-title{color:var(--text-primary);transition:color .3s ease}.portfolio-app.dark-mode .catalog-item-detail:hover .catalog-item-title{color:var(--accent)}.catalog-item-meta{display:flex;flex-direction:column;gap:4px;font-size:12px;line-height:1.5;margin-top:2px}.catalog-meta-row{display:flex;gap:6px}.catalog-meta-label{font-family:var(--font-mono);color:var(--text-secondary);font-weight:400;text-transform:uppercase;letter-spacing:.04em}.portfolio-app.dark-mode .catalog-meta-label{color:var(--text-muted)}.catalog-meta-value{color:var(--text-primary);font-weight:400}.portfolio-app.dark-mode .catalog-meta-value{color:var(--text-secondary)}.catalog-item-description{font-size:13px;line-height:1.6;color:var(--text-muted);margin:4px 0 0;font-weight:400}@media (max-width: 1024px){.projects-catalog{grid-template-columns:1fr;gap:48px}.projects-catalog-images{grid-template-columns:repeat(4,1fr);gap:24px}.catalog-image-wrapper{aspect-ratio:1}}@media (max-width: 768px){.projects-catalog{gap:40px}.projects-catalog-images{grid-template-columns:repeat(2,1fr);gap:24px}.projects-catalog-details{gap:40px}}.project-year{font-family:var(--font-mono);font-size:12px;font-weight:400;color:var(--text-muted);margin-bottom:8px;display:block;letter-spacing:.02em}.portfolio-app.dark-mode .project-year{color:var(--text-muted)}.project-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:18px;font-weight:500;background:linear-gradient(135deg,#f5f5f5,#e8e8e8);transition:color .3s ease,background .3s ease}.portfolio-app.dark-mode .project-placeholder{background:linear-gradient(135deg,#1a1a1a,#0a0a0a);color:var(--text-secondary)}.portfolio-contact-section{padding:80px 0 48px;text-align:center;margin-top:0;border-top:1px solid currentColor;border-top-color:#fff3}.light-mode .portfolio-contact-section{border-top-color:#0003}.contact-section-title{font-family:var(--font-serif);font-size:32px;font-weight:400;color:var(--text-primary);margin:0 0 40px;letter-spacing:-.02em}.contact-section-links{display:flex;justify-content:center;gap:48px;margin-bottom:60px}.contact-section-link{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-muted);text-decoration:none;transition:color .2s ease,transform .2s ease}.contact-section-link:hover{color:var(--accent);transform:translateY(-4px)}.contact-section-link svg{width:32px;height:32px;stroke-width:1.5}.contact-section-link span{font-size:14px;font-weight:450;letter-spacing:.02em}.contact-section-year{font-size:13px;color:var(--text-muted);margin:0;letter-spacing:.02em}@media (max-width: 768px){.portfolio-contact-section{padding:60px 0 80px;margin-top:60px}.contact-section-title{font-size:24px;margin-bottom:32px}.contact-section-links{gap:32px;margin-bottom:40px}.contact-section-link svg{width:28px;height:28px}}.project-info{padding:8px 0;flex:1;display:flex;flex-direction:column}.project-title{font-size:22px;font-weight:500;color:var(--text-primary);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;margin:0 0 12px;transition:color .3s ease}.project-description{font-size:15px;line-height:1.5;color:var(--text-secondary);margin:0;flex:1;transition:color .3s ease}.portfolio-app.dark-mode .project-description{color:var(--text-muted)}.portfolio-app.dark-mode .project-title{color:var(--text-primary)}.project-tech{display:flex;flex-wrap:wrap;gap:8px}.tech-tag{font-size:12px;padding:4px 12px;background:var(--bg-secondary);color:var(--text-secondary);border-radius:12px;font-weight:500;transition:background-color .3s ease,color .3s ease}.portfolio-app.dark-mode .tech-tag{background:var(--bg-secondary);color:var(--text-muted)}.portfolio-project-detail{position:relative;display:flex;min-height:100vh;min-height:var(--vh-full)}.project-nav-toggle{position:fixed;left:40px;top:40px;z-index:1001;background:#ffffffe6;border:1px solid var(--border-color);border-radius:8px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:300;color:var(--text-primary);cursor:pointer;transition:opacity .3s ease,transform .3s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:1;transform:translateY(0)}.project-nav-toggle.hidden{opacity:0;pointer-events:none;transform:translateY(-20px)}.portfolio-app.dark-mode .project-nav-toggle{background:#1a1a1ae6;border-color:var(--text-primary);color:var(--text-primary)}.project-nav-toggle:hover{background:#fff;transform:scale(1.05)}.project-nav-toggle.hidden:hover{transform:translateY(-20px) scale(1)}.portfolio-app.dark-mode .project-nav-toggle:hover{background:#1a1a1a}.project-side-nav{position:fixed;left:40px;top:100px;width:280px;background:var(--bg-tertiary);border-radius:16px;z-index:1000;opacity:1;transform:translate(0) translateY(0);pointer-events:all;transition:opacity .3s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1);overflow:hidden;box-shadow:0 8px 32px #0003;max-height:calc(100vh - 200px);max-height:calc(var(--vh-full) - 200px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.project-side-nav.hidden{opacity:0;transform:translate(-120%) translateY(-20px);pointer-events:none}.project-side-nav::-webkit-scrollbar{width:6px}.project-side-nav::-webkit-scrollbar-track{background:transparent}.project-side-nav::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.side-nav-header{padding:20px;display:flex;justify-content:space-between;align-items:center}.side-nav-home{background:none;border:none;color:var(--text-muted);font-size:14px;font-weight:400;cursor:pointer;padding:0;display:flex;align-items:center;gap:4px;transition:color .2s ease}.side-nav-home:hover{color:#fff}.side-nav-close{background:none;border:none;color:var(--text-muted);font-size:28px;font-weight:300;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:color .2s ease;line-height:1}.side-nav-close:hover{color:#fff}.side-nav-divider{height:1px;background:#ffffff1a;margin:0 20px}.side-nav-title{padding:24px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.side-nav-title span{font-size:20px;font-weight:500;color:var(--text-muted);flex:1}.side-nav-progress{width:24px;height:24px;border:2px solid rgba(255,255,255,.2);border-radius:50%;position:relative;flex-shrink:0}.side-nav-progress:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg);width:20px;height:20px;border-radius:50%;border:2px solid transparent;border-top-color:var(--text-muted);border-right-color:var(--text-muted)}.side-nav-list{list-style:none;padding:0;margin:16px 0 0;display:flex;flex-direction:column}.side-nav-item{margin:0;padding:0}.side-nav-link{background:none;border:none;color:var(--text-muted);font-size:14px;font-weight:400;cursor:pointer;padding:12px 20px;text-align:left;transition:color .2s ease,background-color .2s ease;position:relative;font-family:inherit;display:block;width:100%}.side-nav-link:hover{color:#fff;background:#ffffff0d}.side-nav-link.active{color:#fff;font-weight:500;background:#ffffff1a}.animate-on-load{animation:fadeInUp .8s ease-out forwards;opacity:0}.animate-on-scroll,.animate-on-scroll.animate-in,.animate-on-scroll-item,.project-section.animate-in .animate-on-scroll-item{opacity:1!important;transform:none!important;animation:none!important}.impact-item{transition:transform .2s ease,opacity .2s ease}.impact-item:hover{transform:translate(4px)}.stat-item{transition:transform .3s ease,opacity .3s ease}.stat-item:hover{transform:translateY(-2px)}.stat-value{transition:transform .3s ease}.stat-item:hover .stat-value{transform:scale(1.05)}.project-metadata{opacity:1}.project-header-section .project-metadata,.project-header-section.animate-in .project-metadata{opacity:1!important;animation:none!important}.project-section-header,.project-section.animate-in .project-section-header{opacity:1!important;transform:none!important;animation:none!important}.subsection,.project-section.animate-in .subsection{opacity:1!important;transform:none!important;transition:none!important}.project-container{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--grid-gutter);max-width:var(--container-max);margin:0 auto;padding:0 var(--container-padding) 80px;width:100%}.project-container>*{grid-column:3 / 11}.project-container>.full-bleed{grid-column:1 / -1}.project-container>.wide{grid-column:2 / 12}.project-hero-image{grid-column:1 / -1;width:calc(100% + var(--container-padding) * 2);margin-left:calc(var(--container-padding) * -1);margin-right:calc(var(--container-padding) * -1);margin-bottom:0;position:relative;overflow:visible;background:transparent;height:50vh;min-height:320px;max-height:560px}.project-hero-image img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.project-hero-image:after{content:"";position:absolute;bottom:-2px;left:-1px;right:-1px;height:calc(70% + 4px);background:linear-gradient(to bottom,transparent 0%,rgba(var(--bg-primary-rgb, 0, 0, 0),.01) 15%,rgba(var(--bg-primary-rgb, 0, 0, 0),.03) 25%,rgba(var(--bg-primary-rgb, 0, 0, 0),.06) 35%,rgba(var(--bg-primary-rgb, 0, 0, 0),.12) 45%,rgba(var(--bg-primary-rgb, 0, 0, 0),.22) 55%,rgba(var(--bg-primary-rgb, 0, 0, 0),.38) 65%,rgba(var(--bg-primary-rgb, 0, 0, 0),.58) 75%,rgba(var(--bg-primary-rgb, 0, 0, 0),.82) 85%,var(--bg-primary) 95%,var(--bg-primary) 100%);pointer-events:none;z-index:2}.project-header-section{margin-bottom:80px}.project-page-label{font-family:var(--font-mono);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin:0 0 16px}.project-main-title{font-family:var(--font-serif);font-size:56px;font-weight:400;letter-spacing:-.03em;line-height:1.1;color:var(--text-primary);margin:0 0 24px;transition:color .3s ease}.portfolio-app.dark-mode .project-main-title{color:var(--text-primary)}.project-main-description{font-size:18px;font-weight:400;line-height:1.6;color:var(--text-secondary);margin:0 0 48px;max-width:640px;transition:color .3s ease}.project-metadata{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:32px;padding-top:32px;border-top:1px solid var(--border-color);transition:border-color .3s ease}.portfolio-app.dark-mode .project-metadata{border-top-color:var(--text-primary)}.project-info-group{display:flex;flex-direction:column;gap:8px}.project-info-label{font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0;transition:color .3s ease}.portfolio-app.dark-mode .project-info-label{color:var(--text-secondary)}.project-info-description{font-size:15px;line-height:1.5;color:var(--text-primary);margin:0;transition:color .3s ease}.project-info-description.project-info-highlight{color:var(--accent);font-weight:500}.project-info-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.project-info-list li{font-size:15px;line-height:1.5;color:var(--text-primary);transition:color .3s ease}.portfolio-app.dark-mode .project-info-list li{color:var(--text-primary)}.project-section{margin-bottom:80px}.project-section:last-child{margin-bottom:0}.project-section-header{margin-bottom:24px}.contact-links-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.contact-link-card{display:flex;flex-direction:column;padding:32px;background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:12px;text-decoration:none;transition:all .2s ease}.contact-link-card:hover{background:#ffffff0f;border-color:#ff58004d;transform:translateY(-2px)}.contact-link-card:hover .contact-link-icon{color:var(--accent)}.contact-link-icon{color:var(--text-secondary);margin-bottom:16px;transition:color .2s ease}.contact-link-icon svg{width:28px;height:28px}.contact-link-name{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);margin-bottom:8px}.contact-link-value{font-size:16px;font-weight:400;color:var(--text-primary)}.credits-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:48px}.credits-group{text-align:left}.credits-group-title{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);margin:0 0 16px}.credits-group-name{font-size:18px;font-weight:400;color:var(--text-primary);margin:0 0 8px;line-height:1.5}.credits-footer{margin-top:80px;padding-top:32px;border-top:1px solid rgba(255,255,255,.08)}.credits-copyright{font-size:14px;color:var(--text-secondary);margin:0}@media (max-width: 768px){.contact-links-grid{grid-template-columns:1fr}.credits-grid{grid-template-columns:1fr;gap:32px}}.project-section-title{font-family:var(--font-serif);font-size:28px;font-weight:400;letter-spacing:-.02em;color:var(--text-primary);margin:0 0 8px;transition:color .3s ease}.portfolio-app.dark-mode .project-section-title{color:var(--text-primary)}.project-section-subtitle{font-size:16px;font-weight:400;color:var(--text-muted);margin:0 0 24px;transition:color .3s ease}.project-section-content{font-size:16px;line-height:1.7;color:var(--text-secondary);transition:color .3s ease}.project-section-content p{margin:0 0 20px}.project-section-content p:last-child{margin-bottom:0}.project-section-content strong{font-weight:600;color:var(--text-primary);transition:color .3s ease}.portfolio-app.dark-mode .project-section-content strong{color:var(--text-primary)}.project-section-content .project-image{margin:32px 0;border-radius:12px;overflow:hidden;background:var(--bg-secondary);transition:background .3s ease}.portfolio-app.dark-mode .project-section-content .project-image{background:var(--bg-secondary)}.project-section-content .project-image img{width:100%;height:auto;display:block}.project-section-intro{font-size:16px;line-height:1.7;color:var(--text-secondary);margin:0 0 32px;transition:color .3s ease}.portfolio-app.dark-mode .project-section-intro{color:var(--text-muted)}.impact-list{display:flex;flex-direction:column;gap:32px;margin-top:32px}.impact-item{display:flex;flex-direction:column;gap:8px}.impact-label{font-size:17px;font-weight:600;color:var(--text-primary);margin:0;transition:color .3s ease}.impact-description{font-size:16px;line-height:1.7;color:var(--text-secondary);margin:0;transition:color .3s ease}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:32px;margin:32px 0}.stat-item{display:flex;flex-direction:column;gap:8px}.stat-value{font-family:var(--font-serif);font-size:48px;font-weight:400;letter-spacing:-.02em;color:var(--text-primary);line-height:1;transition:color .3s ease}.portfolio-app.dark-mode .stat-value{color:var(--text-primary)}.stat-label{font-family:var(--font-mono);font-size:11px;font-weight:400;text-transform:uppercase;letter-spacing:.04em;line-height:1.5;color:var(--text-secondary);transition:color .3s ease}.portfolio-app.dark-mode .stat-label{color:var(--text-muted)}.subsection{margin-top:32px}.subsection-title{font-size:17px;font-weight:600;color:var(--text-primary);margin:0 0 12px;transition:color .3s ease}.subsection p{font-size:16px;line-height:1.7;color:var(--text-secondary);margin:0 0 16px;transition:color .3s ease}.subsection p:last-child{margin-bottom:0}.project-body-text{font-size:17px;line-height:1.7;color:var(--text-secondary);margin:0 0 24px;max-width:600px}.project-body-text:last-of-type{margin-bottom:48px}.project-body-text.project-body-muted{color:var(--text-muted);font-style:italic}.project-nda-note{font-family:var(--font-mono);font-size:12px;letter-spacing:.02em;color:var(--text-muted);margin:48px 0 0;padding-top:24px;border-top:1px solid var(--border-color)}.project-nda-note a{color:var(--accent);text-decoration:none}.project-nda-note a:hover{text-decoration:underline}.offer-text{font-size:14px;font-weight:600;color:#34a853}.project-highlights{display:flex;flex-direction:column;gap:20px;margin:32px 0 48px}.project-highlight-item{font-size:16px;line-height:1.7;color:var(--text-secondary);margin:0;padding-left:20px;position:relative}.project-highlight-item:before{content:"";position:absolute;left:0;top:10px;width:6px;height:6px;background:var(--accent);border-radius:50%}.nda-notice{display:flex;gap:20px;padding:24px;background:#ff580014;border:1px solid rgba(255,88,0,.2);border-radius:12px;margin-bottom:32px}.nda-icon{font-size:32px;flex-shrink:0}.nda-text h4{font-size:18px;font-weight:600;color:var(--accent);margin:0 0 8px}.nda-text p{font-size:15px;line-height:1.6;color:var(--text-secondary);margin:0;transition:color .3s ease}.portfolio-app.dark-mode .nda-text p{color:var(--text-muted)}.project-focus-areas{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-bottom:32px}.focus-area{padding:24px;background:#f8f8f8;border-radius:12px;transition:background .3s ease,transform .2s ease}.portfolio-app.dark-mode .focus-area{background:#ffffff0d}.focus-area:hover{transform:translateY(-2px)}.focus-area h4{font-size:16px;font-weight:600;color:var(--text-primary);margin:0 0 8px;transition:color .3s ease}.portfolio-app.dark-mode .focus-area h4{color:var(--text-primary)}.focus-area p{font-size:14px;line-height:1.6;color:var(--text-secondary);margin:0;transition:color .3s ease}.portfolio-app.dark-mode .focus-area p{color:var(--text-muted)}.reach-out{font-size:16px;line-height:1.7;color:var(--text-secondary);text-align:center;margin-top:24px;transition:color .3s ease}.portfolio-app.dark-mode .reach-out{color:var(--text-muted)}.reach-out a{color:var(--accent);text-decoration:none;font-weight:500}.reach-out a:hover{text-decoration:underline}@media (max-width: 768px){.project-focus-areas{grid-template-columns:1fr}.nda-notice{flex-direction:column;text-align:center}}.portfolio-experience{border-bottom:1px solid var(--border-color);transition:border-color .3s ease}.portfolio-app.dark-mode .portfolio-experience{border-bottom-color:var(--text-primary)}.portfolio-constellation{border-bottom:1px solid var(--border-color);transition:border-color .3s ease;background:linear-gradient(180deg,#0000,#6366f105)}.portfolio-app.dark-mode .portfolio-constellation{border-bottom-color:var(--text-primary);background:linear-gradient(180deg,#0000,#8b5cf608)}.experience-list{display:flex;flex-direction:column;gap:32px}.experience-item{padding:24px 24px 32px;border-radius:8px;transition:transform .3s cubic-bezier(.4,0,.2,1),background-color .3s ease,box-shadow .3s ease;position:relative;overflow:hidden}.experience-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--text-primary);opacity:0;transition:opacity .3s ease}.experience-item:hover{transform:translate(8px);background-color:var(--card-bg);box-shadow:0 4px 12px var(--shadow-color)}.portfolio-app.dark-mode .experience-item:hover{background-color:#ffffff05}.experience-item:hover:before{opacity:1}.experience-item:last-child{padding-bottom:32px}.experience-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px;flex-wrap:wrap;gap:12px}.experience-role{font-family:var(--font-serif);font-size:20px;font-weight:400;letter-spacing:-.01em;color:var(--text-primary);margin:0 0 4px;transition:color .3s ease}.portfolio-app.dark-mode .experience-role{color:var(--text-primary)}.experience-company{font-size:16px;color:var(--text-secondary);margin:0;transition:color .3s ease}.portfolio-app.dark-mode .experience-company{color:var(--text-muted)}.experience-period{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);white-space:nowrap;transition:color .3s ease}.portfolio-app.dark-mode .experience-period{color:var(--text-secondary)}.experience-desc{font-size:15px;line-height:1.6;color:var(--text-secondary);margin:0;transition:color .3s ease}.portfolio-app.dark-mode .experience-desc{color:var(--text-muted)}.portfolio-education{border-bottom:1px solid var(--border-color);transition:border-color .3s ease}.portfolio-app.dark-mode .portfolio-education{border-bottom-color:var(--text-primary)}.education-minimap-wrapper{margin-bottom:40px}.education-minimap-wrapper .minimap-label{font-size:12px;color:#ffffff80;text-transform:uppercase;letter-spacing:1px;margin-bottom:12px;text-align:center}.portfolio-app:not(.dark-mode) .education-minimap-wrapper .minimap-label{color:#00000080}.education-list{display:flex;flex-direction:column;gap:32px}.education-item{padding:24px 24px 32px;border-radius:8px;transition:transform .3s cubic-bezier(.4,0,.2,1),background-color .3s ease,box-shadow .3s ease;position:relative;overflow:hidden}.education-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#333;opacity:0;transition:opacity .3s ease}.portfolio-app.dark-mode .education-item:before{background:#fff}.education-item:hover{transform:translate(8px);background-color:#00000005;box-shadow:0 4px 12px #0000000d}.portfolio-app.dark-mode .education-item:hover{background-color:#ffffff05}.education-item:hover:before{opacity:1}.education-item:last-child{padding-bottom:32px}.education-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px}.education-degree{font-family:var(--font-serif);font-size:20px;font-weight:400;letter-spacing:-.01em;color:var(--text-primary);margin:0 0 4px;transition:color .3s ease}.portfolio-app.dark-mode .education-degree{color:var(--text-primary)}.education-field{font-size:16px;color:var(--text-secondary);margin:0 0 4px;transition:color .3s ease}.portfolio-app.dark-mode .education-field{color:var(--text-muted)}.education-school{font-size:15px;color:var(--text-muted);margin:0;transition:color .3s ease}.portfolio-app.dark-mode .education-school{color:var(--text-secondary)}.education-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.education-period{font-size:14px;color:var(--text-muted);white-space:nowrap;transition:color .3s ease}.portfolio-app.dark-mode .education-period{color:var(--text-secondary)}.education-gpa{font-size:14px;color:var(--text-secondary);font-weight:500;white-space:nowrap;transition:color .3s ease}.portfolio-app.dark-mode .education-gpa{color:var(--text-muted)}.portfolio-contact{padding-bottom:80px}.contact-text{font-size:16px;line-height:1.7;color:var(--text-secondary);margin:0 0 32px;transition:color .3s ease}.portfolio-app.dark-mode .contact-text{color:var(--text-muted)}.contact-links{display:flex;flex-wrap:wrap;gap:24px}.contact-link{font-size:16px;color:var(--text-primary);text-decoration:none;font-weight:500;transition:color .3s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1);position:relative;display:inline-block;padding:8px 16px;border-radius:4px}.portfolio-app.dark-mode .contact-link{color:var(--text-primary)}.contact-link:hover{color:var(--text-primary);transform:translateY(-2px);background-color:#0000000d}.portfolio-app.dark-mode .contact-link:hover{color:#fff;background-color:#ffffff0d}.contact-link:after{content:"";position:absolute;bottom:4px;left:16px;width:calc(100% - 32px);height:2px;background:#333;transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.4,0,.2,1)}.portfolio-app.dark-mode .contact-link:after{background:#e0e0e0}.contact-link:hover:after{transform:scaleX(1)}.controls-panel{position:fixed;top:20px;right:20px;background:#fffffff2;border:1px solid #ddd;border-radius:8px;padding:20px;min-width:300px;max-width:350px;max-height:90vh;overflow-y:auto;box-shadow:0 4px 6px #0000001a;z-index:1000;font-family:var(--font-sans)}.controls-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid #eee}.controls-header h3{margin:0;font-size:18px;font-weight:600;color:var(--text-primary)}.controls-header button{background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-secondary);padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s}.controls-header button:hover{background:#f0f0f0}.control-group{margin-bottom:20px}.control-group label{display:block;font-size:14px;color:var(--text-secondary);margin-bottom:8px;font-weight:500}.control-group input[type=range]{width:100%;height:6px;border-radius:3px;background:#ddd;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.control-group input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#333;cursor:pointer;transition:background .2s}.control-group input[type=range]::-webkit-slider-thumb:hover{background:#000}.control-group input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#333;cursor:pointer;border:none;transition:background .2s}.control-group input[type=range]::-moz-range-thumb:hover{background:#000}.menu-icon-btn{position:fixed;top:20px;right:20px;width:40px;height:40px;background:#1e1e1ecc;border:1px solid rgba(255,255,255,.1);border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1001;color:#ffffffb3;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:background .2s ease,border-color .2s ease,color .2s ease,transform .2s ease}.menu-icon-btn:hover{background:#323232e6;border-color:#fff3;color:#fffffff2;transform:scale(1.05)}.menu-icon-btn svg{transition:transform .2s ease}.menu-icon-btn:hover svg{transform:scale(1.1)}.mute-toggle-btn{position:fixed;bottom:20px;right:20px;width:44px;height:44px;background:#333333e6;color:#fff;border:1px solid rgba(255,255,255,.1);border-radius:50%;cursor:pointer;font-size:18px;z-index:1000;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0000004d;transition:all .3s ease}.mute-toggle-btn:hover{background:#000000e6;transform:scale(1.05)}.mute-toggle-btn.muted{opacity:.7}.control-carousel-container{max-width:768px;margin:24px auto;padding:0 40px;position:relative}.carousel-collapse-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:8px;color:#ffffff80;font-size:12px;font-family:inherit;cursor:pointer;transition:all .2s ease;margin-bottom:16px}.carousel-collapse-toggle:hover{background:#ffffff0f;color:#ffffffb3}.carousel-collapse-toggle .toggle-arrow{font-size:10px;transition:transform .2s ease}.carousel-collapse-toggle .toggle-arrow.open{transform:rotate(180deg)}.control-carousel{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.control-carousel::-webkit-scrollbar{display:none}.control-card{flex:0 0 calc(100% - 20px);scroll-snap-align:start;background:#f8f8f8;border:1px solid var(--border-color);border-radius:12px;padding:24px;transition:transform .3s ease,opacity .3s ease,box-shadow .3s ease;opacity:.6;transform:scale(.95);box-shadow:0 2px 8px #0000000d}.portfolio-app.dark-mode .control-card{background:var(--bg-secondary);border-color:var(--text-primary);box-shadow:0 2px 8px #0000004d}.control-card.active{opacity:1;transform:scale(1);box-shadow:0 4px 16px #0000001a}.portfolio-app.dark-mode .control-card.active{box-shadow:0 4px 16px #00000080}.control-card-header{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:20px;text-align:center;letter-spacing:.05em;text-transform:uppercase}.portfolio-app.dark-mode .control-card-header{color:var(--text-primary)}.control-card-content{display:flex;flex-direction:column;gap:24px}.control-knob-group{display:flex;justify-content:space-around;gap:16px}.control-knob{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1}.knob-label{font-size:11px;color:var(--text-secondary);font-weight:500;text-transform:uppercase;letter-spacing:.05em}.portfolio-app.dark-mode .knob-label{color:var(--text-muted)}.knob-value{font-size:12px;font-weight:600;color:var(--text-primary);font-family:var(--font-mono);min-height:16px}.portfolio-app.dark-mode .knob-value{color:var(--text-primary)}.knob-input{width:60px;height:60px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;cursor:pointer;position:relative}.knob-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:60px;height:60px;border-radius:50%;background:#e0e0e0;border:3px solid #fff;cursor:pointer;position:relative;box-shadow:0 2px 4px #0003;transition:background .2s ease,transform .1s ease}.portfolio-app.dark-mode .knob-input::-webkit-slider-thumb{background:#333;border-color:var(--border-color);box-shadow:0 2px 4px #0006}.knob-input::-webkit-slider-thumb:hover{transform:scale(1.05)}.knob-input::-webkit-slider-thumb:active{transform:scale(.95)}.knob-input::-webkit-slider-track{width:100%;height:4px;background:#ddd;border-radius:2px}.portfolio-app.dark-mode .knob-input::-webkit-slider-track{background:#333}.knob-input::-moz-range-thumb{width:60px;height:60px;border-radius:50%;background:#e0e0e0;border:3px solid #fff;cursor:pointer;box-shadow:0 2px 4px #0003;transition:background .2s ease,transform .1s ease}.portfolio-app.dark-mode .knob-input::-moz-range-thumb{background:#333;border-color:var(--border-color);box-shadow:0 2px 4px #0006}.knob-input::-moz-range-thumb:hover{transform:scale(1.05)}.knob-input::-moz-range-thumb:active{transform:scale(.95)}.knob-input::-moz-range-track{width:100%;height:4px;background:#ddd;border-radius:2px}.portfolio-app.dark-mode .knob-input::-moz-range-track{background:#333}.control-faders{display:flex;justify-content:space-around;gap:24px;padding:12px 0}.control-fader{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1;max-width:60px}.fader-label{font-size:11px;color:var(--text-secondary);font-weight:500;text-transform:uppercase;letter-spacing:.05em}.portfolio-app.dark-mode .fader-label{color:var(--text-muted)}.fader-input{-webkit-appearance:slider-vertical;-moz-appearance:slider-vertical;appearance:slider-vertical;writing-mode:bt-lr;width:8px;height:120px;cursor:pointer}.fader-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:24px;height:24px;border-radius:50%;background:#333;cursor:pointer;border:2px solid #fff;box-shadow:0 2px 4px #0003;transition:background .2s ease,transform .1s ease}.portfolio-app.dark-mode .fader-input::-webkit-slider-thumb{background:#e0e0e0;border-color:var(--border-color);box-shadow:0 2px 4px #0006}.fader-input::-webkit-slider-thumb:hover{transform:scale(1.1)}.fader-input::-webkit-slider-track{width:8px;height:100%;background:#ddd;border-radius:4px}.portfolio-app.dark-mode .fader-input::-webkit-slider-track{background:#333}.fader-input::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:#333;cursor:pointer;border:2px solid #fff;box-shadow:0 2px 4px #0003;transition:background .2s ease,transform .1s ease}.portfolio-app.dark-mode .fader-input::-moz-range-thumb{background:#e0e0e0;border-color:var(--border-color);box-shadow:0 2px 4px #0006}.fader-input::-moz-range-thumb:hover{transform:scale(1.1)}.fader-input::-moz-range-track{width:8px;height:100%;background:#ddd;border-radius:4px}.portfolio-app.dark-mode .fader-input::-moz-range-track{background:#333}.fader-value{font-size:11px;font-weight:600;color:var(--text-primary);font-family:var(--font-mono);min-height:14px}.portfolio-app.dark-mode .fader-value{color:var(--text-primary)}.control-buttons{display:flex;justify-content:center;gap:12px;margin-top:12px}.control-button{padding:8px 16px;background:#e0e0e0;border:1px solid #ccc;border-radius:6px;font-size:12px;font-weight:500;color:var(--text-primary);cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em}.portfolio-app.dark-mode .control-button{background:#333;border-color:var(--text-secondary);color:var(--text-primary)}.control-button:hover{background:#d0d0d0;transform:translateY(-1px)}.portfolio-app.dark-mode .control-button:hover{background:#444}.control-button.active{background:#333;border-color:var(--text-primary);color:#fff}.portfolio-app.dark-mode .control-button.active{background:#ff6b35;border-color:#ff6b35;color:#fff}.carousel-indicators{display:flex;justify-content:center;gap:8px;margin-top:16px}.carousel-indicator{width:8px;height:8px;border-radius:50%;background:#ccc;border:none;cursor:pointer;transition:all .2s ease;padding:0}.portfolio-app.dark-mode .carousel-indicator{background:#555}.carousel-indicator:hover{transform:scale(1.2)}.carousel-indicator.active{background:#333;width:24px;border-radius:4px}.portfolio-app.dark-mode .carousel-indicator.active{background:#ff6b35}.splash-screen{position:fixed;top:0;left:0;width:100vw;height:100vh;height:var(--vh-full);background-color:#000;display:flex;align-items:center;justify-content:center;z-index:10000;transition:opacity .1s ease}.splash-skip-button{position:absolute;top:24px;right:24px;background:#ffffff1a;border:1px solid rgba(255,255,255,.3);color:#fff;font-size:14px;font-weight:500;padding:8px 20px;cursor:pointer;font-family:inherit;transition:all .2s ease;letter-spacing:.05em;text-transform:uppercase;border-radius:4px;z-index:10001;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.splash-skip-button:hover{background:#fff3;border-color:#ffffff80;transform:translateY(-1px)}.splash-screen.splash-number .splash-skip-button{background:#0000004d;border-color:#ffffff80;color:#fff}.splash-screen.splash-number .splash-skip-button:hover{background:#00000080;border-color:#fffc}.intro-skip-button{position:fixed;top:24px;right:24px;background:#ffffff1a;border:1px solid rgba(255,255,255,.3);color:#fff;font-size:14px;font-weight:500;padding:8px 20px;cursor:pointer;font-family:inherit;transition:all .2s ease;letter-spacing:.05em;text-transform:uppercase;border-radius:4px;z-index:10001;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.intro-skip-button:hover{background:#fff3;border-color:#ffffff80;transform:translateY(-1px)}.light-mode .intro-skip-button{background:#0000001a;border-color:#0000004d;color:#000}.light-mode .intro-skip-button:hover{background:#0003;border-color:#00000080}.splash-text-content{max-width:800px;padding:40px;color:#fff;font-family:var(--font-sans);font-size:16px;line-height:1.6;text-align:center}.splash-text-content p{margin:0 0 20px}.splash-text-content p:last-of-type:not(.splash-version-note){margin-bottom:40px}.splash-version-note{font-size:12px;opacity:.6;letter-spacing:.1em;margin-top:32px!important;margin-bottom:20px!important}.splash-number-content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;gap:40px}.splash-enter-button{background:transparent;border:1px solid #ffffff;color:#fff;font-size:16px;font-weight:400;padding:12px 32px;cursor:pointer;font-family:inherit;transition:all .3s ease;letter-spacing:.05em;text-transform:uppercase}.splash-screen.splash-number .splash-enter-button{border-color:#000;color:#000;opacity:1;visibility:visible}.splash-enter-button:hover{background:#fff;color:#000;transform:translateY(-2px)}.splash-screen.splash-number .splash-enter-button:hover{background:#000;color:#fff}.splash-number{font-size:240px;font-weight:900;color:#000;font-family:var(--font-sans);letter-spacing:-.02em;line-height:1;margin:0;padding:0}.splash-screen.splash-number{background-color:#e8e8e8}.loading-screen{background-color:#000}.loading-content{display:flex;flex-direction:column;align-items:center;gap:32px}.loading-logo-container{position:relative;display:inline-block}.loading-logo-outline{font-family:var(--font-sans);font-size:80px;font-weight:700;letter-spacing:4px;color:transparent;-webkit-text-stroke:2px var(--accent);text-stroke:2px var(--accent)}.loading-logo-fill{position:absolute;top:0;left:0;font-family:var(--font-sans);font-size:80px;font-weight:700;letter-spacing:4px;color:var(--accent);will-change:clip-path}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.loading-text{font-family:var(--font-mono);font-size:11px;font-weight:400;color:#ffffff80;letter-spacing:.08em;text-transform:uppercase;margin:0}@media (max-width: 768px){.portfolio-container{padding:40px var(--container-padding)}.portfolio-container>*{grid-column:2 / 12}.project-container{padding:0 var(--container-padding) 60px}.project-container>*{grid-column:2 / 12}.project-hero-image{grid-column:1 / -1;height:40vh;min-height:280px;max-height:400px}.project-side-nav{display:none}.section-title{font-size:28px;margin-bottom:24px}.about-text{font-size:15px;text-align:center}.project-main-title{font-size:36px;margin-bottom:32px}.project-metadata{grid-template-columns:1fr;gap:24px}.project-section-title{font-size:28px}.project-section-subtitle{font-size:15px}.stats-grid{grid-template-columns:1fr;gap:24px}.stat-value{font-size:36px}.experience-header{flex-direction:column;align-items:flex-start}.experience-period{align-self:flex-start}.education-header{flex-direction:column;align-items:flex-start}.education-meta{align-items:flex-start}.contact-links{flex-direction:column;gap:16px}}@media (max-width: 480px){.portfolio-container{padding:32px var(--container-padding)}.portfolio-container>*{grid-column:1 / -1}.project-container{padding:0 var(--container-padding) 40px}.project-container>*,.project-container>.wide{grid-column:1 / -1}.project-hero-image{grid-column:1 / -1;height:35vh;min-height:220px;max-height:320px}.project-side-nav{display:none}.section-title{font-size:24px;margin-bottom:20px}.project-main-title{font-size:28px;margin-bottom:24px}.project-section{margin-bottom:60px}.project-section-title{font-size:24px}.project-section-subtitle{font-size:14px}.stat-value{font-size:32px}.impact-label{font-size:16px}.impact-description,.project-section-content{font-size:15px}}.project-main-title{animation:fadeInUp .8s ease-out forwards}.project-section-content,.project-section.animate-in .project-section-content{opacity:1!important;animation:none!important;transition:none!important}.section-animate,.section-animate.animate-in{opacity:1!important;transform:none!important;animation:none!important}.portfolio-container{position:relative;will-change:transform}.project-card-link{display:block;perspective:1000px}.project-card{transform-style:preserve-3d;transition:transform .4s cubic-bezier(.4,0,.2,1),box-shadow .4s cubic-bezier(.4,0,.2,1)}.project-card:hover .project-image{transform:scale(1.05)}.project-image{transition:transform .6s cubic-bezier(.4,0,.2,1);overflow:hidden}.project-image img{transition:transform .6s cubic-bezier(.4,0,.2,1)}.project-card:hover .project-image img{transform:scale(1.1)}html{scroll-behavior:smooth;scroll-padding-top:100px}.section-title:after{content:"";position:absolute;bottom:-8px;left:0;width:100%;height:1px;background:currentColor;opacity:.2}.projects-grid{opacity:0;animation:fadeIn .6s ease-out .2s forwards}.projects-grid .project-card-link{animation:fadeInUp .6s cubic-bezier(.4,0,.2,1) forwards;opacity:0}.projects-grid .project-card-link:nth-child(1){animation-delay:.1s}.projects-grid .project-card-link:nth-child(2){animation-delay:.2s}.projects-grid .project-card-link:nth-child(3){animation-delay:.3s}.projects-grid .project-card-link:nth-child(4){animation-delay:.4s}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.animate-on-scroll,.animate-on-scroll-item,.animate-on-load,.project-section-content,.subsection{animation:none!important;transition:none!important;opacity:1!important;transform:none!important}}.fullscreen-preview-overlay{position:fixed;top:16px;right:16px;bottom:16px;left:16px;z-index:10000;background:#000;border-radius:24px;display:flex;flex-direction:column;overflow:hidden;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fullscreen-preview-close{position:absolute;top:20px;right:20px;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.15);background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fffc;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s ease}.fullscreen-preview-close:hover{background:#ff58004d;border-color:var(--accent);color:var(--accent);transform:scale(1.1)}.fullscreen-preview-title{position:absolute;top:20px;left:50%;transform:translate(-50%);font-size:14px;font-weight:500;color:#fffc;z-index:10;padding:8px 16px;background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:8px;border:1px solid rgba(255,255,255,.1)}.fullscreen-preview-canvas{flex:1;width:100%;height:100%}@media (max-width: 768px){.bottom-bar.collapsed{height:56px}.bottom-bar.expanded{height:240px}.theme-toggle-btn{top:16px;right:16px;width:40px;height:40px}.main-content{border-radius:16px}.portfolio-container{padding:32px 24px 48px}.about-greeting{font-size:32px}.about-tagline{font-size:16px}.about-text{font-size:15px;line-height:1.7}.section-title{font-size:24px;margin-bottom:24px}.work-page-header{padding:24px 24px 16px}.work-page-title{font-size:28px}.work-page-role{font-size:13px}.controls-panel{display:none}.menu-icon-buttons{right:16px;bottom:72px}.fullscreen-preview-overlay{top:8px;right:8px;bottom:8px;left:8px;border-radius:16px}.fullscreen-preview-close{top:12px;right:12px;width:36px;height:36px}}@media (max-width: 480px){.bottom-bar.collapsed{height:48px}.bottom-bar.expanded{height:200px}.theme-toggle-btn{top:12px;right:12px;width:36px;height:36px}.main-content{border-radius:12px}.main-content.bottom-bar-open{transform:scale(.96)}.portfolio-container{padding:24px 16px 40px}.about-greeting{font-size:28px}.about-tagline{font-size:14px}.about-text{font-size:14px;line-height:1.6}.section-title{font-size:20px;margin-bottom:20px}.work-page-header{padding:20px 16px 12px}.work-page-title{font-size:24px}.work-page-role{font-size:12px}.projects-catalog{gap:32px}.projects-catalog-images{gap:12px}.catalog-image-wrapper{border-radius:12px}.catalog-item-title{font-size:16px}.catalog-item-description{font-size:13px}.contact-links{gap:12px}.contact-link{padding:14px 20px;font-size:14px}.menu-icon-buttons{right:12px;bottom:64px;gap:8px}.menu-icon-btn{width:40px;height:40px}.page-wipe-overlay{height:calc(100vh - 48px);height:calc(var(--vh-full) - 48px)}.fullscreen-preview-overlay{top:4px;right:4px;bottom:4px;left:4px;border-radius:12px}.fullscreen-preview-close{top:8px;right:8px;width:32px;height:32px}.fullscreen-preview-title{font-size:12px;padding:6px 12px}.loading-logo-outline,.loading-logo-fill{font-size:56px;letter-spacing:2px}.loading-logo-outline{-webkit-text-stroke:1.5px var(--accent);text-stroke:1.5px var(--accent)}.loading-text{font-size:12px}.splash-skip-button,.intro-skip-button{top:16px;right:16px;padding:8px 16px;font-size:12px}}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;min-height:100%;overflow-x:hidden;overflow-y:auto}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff;transition:background-color .3s ease}body.dark-mode{background-color:#000}#root{width:100%;height:100%}
