@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{color:#27251f;font-synthesis:none;text-rendering:optimizelegibility;--paper:#d8c6a5;--paper-light:#eadfc9;--paper-face:#e8dcc4;--ink:#27251f;--ink-soft:#696357;--line:#34312a47;--line-strong:#2d2a248f;--accent:#b84930;--guide-bg:#e8dcc4b8;--direction-bg:#e2d3b8d1;--construction-bg:#e2d3b8e0;--dock-bg:#ddccade6;--cube-border:#3530279e;--cube-inner-border:#48311e70;--cube-outline:#48311eeb;--cube-shadow-color:#382b1b3d;--cube-inset:#70552e1f;--cube-ring:#ffffff3d;--subtle-number:#27251f1f;--dot-glow:#f4e9d3b3;--surface-cell-bg:#ffffff24;--surface-cell-active:#27251f12;--panel-grid-line:#3e3a3109;--panel-inner-line:#2b292424;--panel-shadow-color:#3f2f1d40;--dock-shadow-color:#3f2f1d1f;--accent-wash:#b8493017;--arrow-trail-faint:#402d1c0a;--arrow-trail-mid:#402d1c47;--arrow-trail-strong:#402d1ceb;--cube-size:min(clamp(16rem, 37vw, 27.5rem), calc(69.44dvh - 11.45rem));background:#d8c6a5;font-family:Manrope,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{background:var(--paper)}button,a{font:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.dot-field,.interaction-guide,.cube-stage,.direction-button,.construction-control,.section-dock,[data-face-animate]{translate:var(--assemble-x,0px) var(--assemble-y,0px)}.portfolio-shell{background:var(--paper);width:100%;height:100dvh;color:var(--ink);isolation:isolate;position:relative;overflow:hidden}.portfolio-shell.is-ui-dark{--paper:#0d1723;--paper-light:#162536;--paper-face:#182a3c;--ink:#e8dfca;--ink-soft:#9caaba;--line:#b2c6d840;--line-strong:#c4d5e48a;--accent:#d36b52;--guide-bg:#142535db;--direction-bg:#142535db;--construction-bg:#142535e0;--dock-bg:#122231eb;--cube-border:#b8ccde94;--cube-inner-border:#b8ccde57;--cube-outline:#c6d7e5e6;--cube-shadow-color:#01081085;--cube-inset:#6f97b824;--cube-ring:#e0ecf51f;--subtle-number:#dce7ef1f;--dot-glow:#1f374ec2;--surface-cell-bg:#ffffff09;--surface-cell-active:#ffffff13;--panel-grid-line:#cadbe80b;--panel-inner-line:#c9d9e721;--panel-shadow-color:#01070d7a;--dock-shadow-color:#02080e52;--accent-wash:#d36b521f;--arrow-trail-faint:#9bbeda0f;--arrow-trail-mid:#a7cbe657;--arrow-trail-strong:#d5e4f0f0}.dot-field{z-index:0;background:radial-gradient(circle at 50% 47%, var(--dot-glow), transparent 43%), var(--paper);pointer-events:auto;touch-action:none;width:100%;height:100%;transition:filter .36s,opacity .36s,transform .5s cubic-bezier(.2,.8,.2,1);position:absolute;inset:0}.interaction-guide{color:var(--ink-soft);letter-spacing:.07em;text-transform:uppercase;z-index:2;flex-direction:column;align-items:flex-end;gap:.55rem;font:500 .62rem/1.4 DM Mono,ui-monospace,monospace;display:flex;position:absolute;top:clamp(1.3rem,3vw,2.4rem);right:clamp(1rem,3vw,2.5rem)}.interaction-guide__toggle{display:none!important}.interaction-guide__menu{flex-direction:column;align-items:flex-end;gap:.55rem;display:flex}.interaction-guide button{border:1px solid var(--line-strong);background:var(--guide-bg);width:8.75rem;height:2.55rem;color:var(--ink);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;align-items:center;gap:.45rem;padding:.48rem .6rem;font:500 .56rem/1 DM Mono,ui-monospace,monospace;display:flex}@media (hover:hover) and (pointer:fine){.interaction-guide button:hover{background:var(--ink);color:var(--paper-light)}}.interaction-guide .theme-toggle{align-items:center;padding:.3rem .6rem .3rem .3rem;display:flex}.interaction-guide .theme-toggle:hover{border-color:var(--accent);background:var(--guide-bg);color:var(--ink)}.theme-toggle__icon{border:1px solid var(--line);place-items:center;width:1.8rem;height:1.8rem;display:grid}.theme-toggle__crescent{transform-origin:50%;place-items:center;display:grid}.theme-toggle svg{transition:color .22s,fill .22s,transform .42s cubic-bezier(.2,.85,.2,1)}.portfolio-shell.is-ui-dark .theme-toggle svg{fill:#e8dfca29;transform:rotate(-24deg)}.theme-toggle:disabled{cursor:wait;opacity:.72}.cube-stage{z-index:1;perspective:1200px;place-items:center;transition:opacity .4s,transform .7s cubic-bezier(.2,.8,.2,1),filter .4s;display:grid;position:absolute;inset:4.5rem 0 7rem}.cube-wrap{--hold-tilt-x:0deg;--hold-tilt-y:0deg;width:calc(var(--cube-size) * 1.52);height:calc(var(--cube-size) * 1.52);perspective:1200px;transform:translateY(0) rotateX(var(--hold-tilt-x)) rotateY(var(--hold-tilt-y)) scale(1);transform-style:preserve-3d;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;transition:transform .38s cubic-bezier(.2,.88,.2,1)}.cube-wrap.is-held{transform:translateY(-1.1rem) rotateX(var(--hold-tilt-x)) rotateY(var(--hold-tilt-y)) scale(1.025);cursor:grabbing;transition-duration:.18s}.portfolio-cube{width:var(--cube-size);height:var(--cube-size);margin:calc(var(--cube-size) / -2) 0 0 calc(var(--cube-size) / -2);transform-style:preserve-3d;text-rendering:geometricprecision;-webkit-font-smoothing:subpixel-antialiased;will-change:auto;position:absolute;top:50%;left:50%}@keyframes cube-raster-refresh{0%,to{rotate:1 1 0 0deg}50%{rotate:1 1 0 .008deg}}.portfolio-cube.is-raster-refresh{will-change:transform;animation:.32s ease-in-out both cube-raster-refresh}.cube-wrap.is-moving .portfolio-cube,.portfolio-shell--unfolding .portfolio-cube,.portfolio-shell--folding .portfolio-cube{will-change:transform}.portfolio-shell--unfolding .cube-wrap,.portfolio-shell--folding .cube-wrap,.cube-wrap.is-net{cursor:default;transform:none}.cube-wrap.is-net{perspective:none}.portfolio-shell--unfolding .cube-shadow,.portfolio-shell--folding .cube-shadow,.portfolio-shell--net .cube-shadow{opacity:0}.portfolio-shell--net .cube-face{backface-visibility:hidden;cursor:zoom-in;transform-style:flat;will-change:auto}.portfolio-shell--net .face-density,.portfolio-shell--net .face-upright{transform-style:flat;will-change:auto;text-rendering:geometricprecision;-webkit-font-smoothing:subpixel-antialiased}.cube-shadow{width:calc(var(--cube-size) * .82);height:calc(var(--cube-size) * .22);background:var(--cube-shadow-color);filter:blur(22px);transform:translateY(calc(var(--cube-size) * .68)) rotateX(76deg) scale(1);border-radius:50%;transition:opacity .26s,transform .35s,filter .35s;position:absolute}.cube-shadow.is-held{opacity:.52;filter:blur(28px);transform:translateY(calc(var(--cube-size) * .72)) rotateX(76deg) scale(1.15)}.cube-face{border:1px solid var(--cube-border);background:var(--paper-face);width:200%;height:200%;box-shadow:inset 0 0 0 1px var(--cube-inset), 0 0 0 1px var(--cube-ring);backface-visibility:hidden;transform-style:preserve-3d;text-rendering:geometricprecision;-webkit-font-smoothing:subpixel-antialiased;will-change:auto;padding:0;position:absolute;top:-50%;left:-50%;overflow:hidden}.cube-wrap.is-moving .cube-face,.portfolio-shell--unfolding .cube-face,.portfolio-shell--folding .cube-face,.portfolio-cube[data-active-face=home] .face-home,.portfolio-cube[data-active-face=projects] .face-projects,.portfolio-cube[data-active-face=experience] .face-experience,.portfolio-cube[data-active-face=education] .face-education,.portfolio-cube[data-active-face=resume] .face-resume,.portfolio-cube[data-active-face=contact] .face-contact{will-change:transform}.face-density{transform-origin:0 0;backface-visibility:hidden;text-rendering:geometricprecision;width:50%;height:50%;padding:0;position:relative;overflow:hidden;transform:scale(2);container-type:inline-size}.face-density:after{content:"";z-index:7;border:1px solid var(--cube-inner-border);pointer-events:none;position:absolute;inset:2%}.face-outline{z-index:8;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.face-outline rect{fill:none;stroke:var(--cube-outline);stroke-width:.62px;stroke-linecap:square;stroke-linejoin:miter}.face-upright{clip-path:inset(2%);transform-origin:50%;backface-visibility:hidden;text-rendering:geometricprecision;-webkit-font-smoothing:subpixel-antialiased;text-shadow:0 0;flex-direction:column;width:100%;height:100%;padding:8cqw;display:flex;position:relative;overflow:hidden}.cube-face--front{transform:rotateY(0deg) translateZ(calc(var(--cube-size) / 2)) scale(.5)}.cube-face--back{transform:rotateY(180deg) translateZ(calc(var(--cube-size) / 2)) scale(.5)}.cube-face--right{transform:rotateY(90deg) translateZ(calc(var(--cube-size) / 2)) scale(.5)}.cube-face--left{transform:rotateY(-90deg) translateZ(calc(var(--cube-size) / 2)) scale(.5)}.cube-face--top{transform:rotateX(90deg) translateZ(calc(var(--cube-size) / 2)) scale(.5)}.cube-face--bottom{transform:rotateX(-90deg) translateZ(calc(var(--cube-size) / 2)) scale(.5)}.face-index,.face-kicker,.face-footnote,.face-tags,.project-mini span,.project-mini small,.panel-label,.panel-kicker{text-transform:uppercase;font-family:DM Mono,ui-monospace,monospace}.face-index{z-index:1;border-bottom:1px solid var(--line);color:var(--ink-soft);letter-spacing:.08em;flex-shrink:0;padding-bottom:3cqw;font-size:3.2cqw;position:relative}.face-kicker{z-index:1;color:var(--accent);letter-spacing:.05em;flex-shrink:0;margin:3cqw 0 2cqw;font-size:3.2cqw;font-weight:500;position:relative}.face-home h1,.face-contact h2{z-index:1;color:var(--ink);letter-spacing:-.075em;flex-shrink:0;margin:0;font-size:19cqw;font-weight:800;line-height:.98;position:relative}.face-summary{z-index:1;max-width:32em;color:var(--ink-soft);flex-shrink:0;margin:3cqw 0 0;font-size:4cqw;line-height:1.55;position:relative}.face-tags{z-index:1;flex-wrap:wrap;gap:.35rem;display:flex;position:absolute;bottom:clamp(1.1rem,2.5vw,2rem);left:clamp(1.1rem,2.5vw,2rem);right:clamp(1.1rem,2.5vw,2rem)}.face-tags span{border:1px solid var(--line);padding:.3rem .45rem;font-size:clamp(.48rem,.7vw,.58rem)}.draft-mark{aspect-ratio:1;border:1px solid var(--line);border-radius:50%;width:33%;position:absolute;bottom:25%;right:11%}.draft-mark:before,.draft-mark:after{content:"";background:var(--line);position:absolute}.draft-mark:before{width:136%;height:1px;top:50%;left:-18%}.draft-mark:after{width:1px;height:136%;top:-18%;left:50%}.face-heading-row{justify-content:space-between;align-items:flex-start;display:flex;position:relative}.face-heading-row .face-kicker{margin-bottom:.12rem}.face-projects__title{white-space:normal;max-width:8ch;margin-top:0}.project-count{color:var(--subtle-number);margin-top:3cqw;font-size:15cqw;font-weight:800;line-height:1;position:absolute;top:0;right:0}.project-mini-grid{z-index:1;flex:1 1 0;align-content:start;gap:2cqw;min-height:0;margin-top:3cqw;display:grid;position:relative;overflow:hidden}.project-mini{border:1px solid var(--line);background:var(--surface-cell-bg);grid-template-columns:27% 1fr;min-height:clamp(2.8rem,6vw,4.5rem);display:grid}.project-artwork{min-width:0;min-height:0;display:block;overflow:hidden}.project-artwork img{object-fit:cover;width:100%;height:100%;display:block}.project-mini .project-artwork{width:100%;height:100%}.project-mini img{filter:saturate(.72)contrast(.92)}.project-mini>div{grid-template-columns:auto 1fr;align-content:center;gap:.08rem .5rem;min-width:0;padding:clamp(.35rem,.7vw,.6rem);display:grid}.project-mini span,.project-mini small{color:var(--ink-soft);font-size:clamp(.42rem,.62vw,.56rem)}.project-mini strong{text-overflow:ellipsis;white-space:nowrap;font-size:clamp(.66rem,1.1vw,.95rem);overflow:hidden}.project-mini small{text-overflow:ellipsis;white-space:nowrap;grid-column:2;overflow:hidden}.face-projects .project-mini-grid{gap:2cqw}.face-projects .project-mini{height:15cqw;min-height:15cqw}.face-projects .project-mini>div{gap:.5cqw 2cqw;padding:2cqw}.face-projects .project-mini strong{font-size:4cqw}.face-projects .project-mini span,.face-projects .project-mini small{font-size:2.5cqw}.face-footnote{color:var(--ink-soft);margin:0;font-size:clamp(.45rem,.65vw,.58rem);position:absolute;bottom:clamp(1rem,2vw,1.55rem);right:clamp(1.1rem,2.5vw,2rem)}.contact-stub{z-index:1;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);flex-shrink:0;align-items:center;gap:2cqw;margin-top:auto;padding:3cqw 0;font:500 3.3cqw/1.3 DM Mono,ui-monospace,monospace;display:flex;position:relative}.contact-stub svg{flex-shrink:0;width:4cqw;height:4cqw}.contact-stub span{overflow-wrap:anywhere;min-width:0}.face-contact .face-summary{margin-bottom:3cqw}.face-home h1{font-size:18cqw}.face-section-title{z-index:1;max-width:10ch;color:var(--ink);letter-spacing:-.075em;flex-shrink:0;margin:0;font-size:15cqw;font-weight:800;line-height:.98;position:relative}.face-experience .face-section-title{font-size:12.5cqw}.face-record{z-index:1;border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);margin-top:4cqw;padding:3cqw 0;display:grid;position:relative}.face-record span,.face-record small,.resume-sheet-mark span{color:var(--ink-soft);letter-spacing:.05em;text-transform:uppercase;font:500 clamp(.46rem,.7vw,.58rem)/1.35 DM Mono,ui-monospace,monospace}.face-record span,.face-record small{font-size:2.8cqw}.face-record strong{margin:1cqw 0;font-size:4.5cqw}.face-record small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.experience-mini-list{z-index:1;flex:1 1 0;align-content:start;gap:2cqw;min-height:0;margin-top:4cqw;display:grid;position:relative;overflow:hidden}.experience-mini{border:1px solid var(--line);background:var(--surface-cell-bg);grid-template-columns:10cqw minmax(0,1fr);align-items:center;min-height:20cqw;padding:3cqw;display:grid}.experience-mini>span{color:var(--accent);font:500 2.8cqw/1 DM Mono,ui-monospace,monospace}.experience-mini>div{min-width:0}.experience-mini strong,.experience-mini small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.experience-mini strong{font-size:4cqw}.experience-mini small{color:var(--ink-soft);text-transform:uppercase;margin-top:1cqw;font:500 2.6cqw/1.2 DM Mono,ui-monospace,monospace}.resume-sheet-mark{aspect-ratio:.76;border:1px solid var(--line-strong);background:var(--surface-cell-bg);place-items:center;width:29%;display:grid;position:absolute;bottom:17%;right:12%;transform:rotate(7deg)}.resume-sheet-mark:before,.resume-sheet-mark:after{content:"";background:var(--line);height:1px;position:absolute;left:14%;right:14%}.resume-sheet-mark:before{bottom:27%}.resume-sheet-mark:after{bottom:19%}.resume-sheet-mark svg{opacity:.72;width:30%;height:auto}.resume-sheet-mark span{position:absolute;bottom:8%}.direction-button{z-index:3;border:1px solid var(--line-strong);background:var(--direction-bg);width:2.55rem;height:2.55rem;color:var(--ink);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:50%;place-items:center;padding:0;transition:opacity .2s,background .15s,transform .15s;display:grid;position:absolute}.direction-button svg{width:1rem}.direction-button__icon{place-items:center;display:grid}.direction-button__trail{border-radius:inherit;background:conic-gradient(from 0deg, transparent 0deg, var(--arrow-trail-faint) 190deg, var(--arrow-trail-mid) 285deg, var(--arrow-trail-strong) 360deg);pointer-events:none;transform-origin:50%;position:absolute;inset:-1px;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 1.5px),#000 calc(100% - 1.1px));mask:radial-gradient(farthest-side,#0000 calc(100% - 1.5px),#000 calc(100% - 1.1px))}.direction-button:hover .direction-button__trail,.direction-button:focus-visible .direction-button__trail{-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 3.5px),#000 calc(100% - 3px));mask:radial-gradient(farthest-side,#0000 calc(100% - 3.5px),#000 calc(100% - 3px))}.direction-button__surface{color:var(--ink);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;font:500 .56rem/1 DM Mono,ui-monospace,monospace;position:absolute;bottom:calc(100% + .5rem);left:50%;transform:translate(-50%)}.direction-button:hover{background:var(--paper-light)}.direction-button:disabled{opacity:0;pointer-events:none}.direction-button--up{top:max(.4rem, calc(50% - var(--cube-size) * .72 - 3.4rem - 3cm));translate:var(--assemble-x,0px) calc(var(--assemble-y,0px) - 1cm);left:50%;transform:translate(-50%)}.direction-button--down{bottom:max(.4rem, calc(50% - var(--cube-size) * .72 - 3.4rem - 3cm));translate:var(--assemble-x,0px) calc(var(--assemble-y,0px) + 1cm);left:50%;transform:translate(-50%)}.direction-button--left{left:max(.3rem, calc(50% - var(--cube-size) * .72 - 3.4rem - 1.5cm));top:50%;transform:translateY(-50%)}.direction-button--right{right:max(.3rem, calc(50% - var(--cube-size) * .72 - 3.4rem - 1.5cm));top:50%;transform:translateY(-50%)}.direction-button--focus{z-index:30}.direction-button--focus.direction-button--left{left:max(.3rem, calc(50% - var(--focus-panel-width,70rem) / 2 - 1cm - 2.55rem))}.direction-button--focus.direction-button--right{right:max(.3rem, calc(50% - var(--focus-panel-width,70rem) / 2 - 1cm - 2.55rem))}.direction-button--up:hover{transform:translate(-50%,-2px)}.direction-button--down:hover{transform:translate(-50%,2px)}.direction-button--left:hover{transform:translate(-2px,-50%)}.direction-button--right:hover{transform:translate(2px,-50%)}.gesture-coach{z-index:18;border:1px solid var(--line-strong);background:var(--guide-bg);width:min(29rem,100% - 2rem);box-shadow:0 1.2rem 3.2rem var(--panel-shadow-color);opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);gap:.75rem;padding:.9rem;display:grid;position:absolute;top:50%;left:50%;translate:-50% -50%}.gesture-coach__eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font:500 .56rem/1 DM Mono,ui-monospace,monospace}.gesture-coach__steps{border:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.gesture-coach__step{grid-template-columns:4.4rem 1fr;align-items:center;gap:.7rem;min-height:4.4rem;padding:.65rem;display:grid}.gesture-coach__step+.gesture-coach__step{border-left:1px solid var(--line)}.gesture-coach__step small,.gesture-coach__step strong,.gesture-dock small,.gesture-dock strong{display:block}.gesture-coach__step small,.gesture-dock small{color:var(--ink-soft);text-transform:uppercase;font:500 .48rem/1.35 DM Mono,ui-monospace,monospace}.gesture-coach__step strong{margin-top:.22rem;font-size:.68rem}.gesture-coach__demo{width:4rem;height:2.5rem;color:var(--ink);place-items:center;display:grid;position:relative}.gesture-coach__demo svg{z-index:2;width:1.35rem;height:1.35rem;position:relative}.gesture-coach__drag-line{background:var(--accent);transform-origin:50%;width:100%;height:1px;position:absolute;top:50%;left:0}.gesture-coach__wheel-dot{z-index:3;background:var(--accent);border-radius:999px;width:2px;height:.35rem;position:absolute;top:.65rem;left:50%;translate:-50%}.gesture-dock{border:1px solid var(--line-strong);background:var(--guide-bg);color:var(--ink);cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);align-items:stretch;padding:0;display:flex;position:static}.interaction-guide .gesture-dock{letter-spacing:normal;text-transform:none;gap:0;padding:0}.interaction-guide .gesture-dock:hover{background:var(--paper-light);color:var(--ink)}.gesture-dock__item{text-align:left;grid-template-columns:1.4rem auto;align-items:center;gap:.55rem;min-width:8.2rem;padding:.55rem .7rem;display:grid}.gesture-dock__item+.gesture-dock__item{border-left:1px solid var(--line)}.gesture-dock svg{width:1rem;height:1rem;color:var(--accent)}.gesture-dock strong{margin-top:.14rem;font-size:.62rem}.gesture-dock:hover{background:var(--paper-light)}.construction-control{z-index:15;border:1px solid var(--line-strong);background:var(--construction-bg);min-height:2.7rem;color:var(--ink);letter-spacing:.07em;text-transform:uppercase;translate:var(--assemble-x,0px) var(--assemble-y,0px);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;align-items:center;gap:.55rem;padding:.65rem .8rem;font:500 .57rem/1 DM Mono,ui-monospace,monospace;transition:color .16s,background .16s,opacity .2s,transform .16s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.construction-control--deconstruct{left:clamp(.75rem,2.2vw,2rem)}.construction-control--reconstruct{right:clamp(.75rem,2.2vw,2rem)}.construction-control:hover:not(:disabled){background:var(--ink);color:var(--paper-light)}.construction-control--deconstruct:hover:not(:disabled){transform:translate(-3px,-50%)}.construction-control--reconstruct:hover:not(:disabled){transform:translate(3px,-50%)}.construction-control:disabled{opacity:.28;cursor:default}.portfolio-shell.is-focused .construction-control{opacity:0;pointer-events:none}.section-dock{bottom:max(1.1rem, env(safe-area-inset-bottom));z-index:20;border:1px solid var(--line-strong);background:var(--dock-bg);box-shadow:0 .7rem 2rem var(--dock-shadow-color);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);align-items:stretch;padding:.3rem;display:flex;position:absolute;left:50%;transform:translate(-50%)}.section-dock__label{color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase;align-self:center;padding:0 .8rem;font:500 .55rem/1 DM Mono,ui-monospace,monospace}.section-dock button{border:0;border-left:1px solid var(--line);min-width:6.2rem;color:var(--ink);text-transform:capitalize;cursor:pointer;background:0 0;align-items:center;gap:.65rem;padding:.68rem .8rem;font-size:.72rem;font-weight:700;transition:color .15s,background .15s;display:flex}.section-dock button .section-dock__number{color:var(--ink-soft);font:500 .5rem/1 DM Mono,ui-monospace,monospace}.section-dock__name{min-width:0;color:inherit;overflow-wrap:anywhere;line-height:1.05}.section-dock__name--short{display:none}.section-dock button:hover,.section-dock button.is-active{background:var(--ink);color:var(--paper-light)}.section-dock button.is-active .section-dock__number{color:var(--ink-soft)}@media (hover:none){.section-dock button:hover:not(.is-active){color:var(--ink);background:0 0}}.portfolio-shell.is-focused .cube-stage{opacity:.16;filter:blur(6px);pointer-events:none;transform:scale(1.48)}.portfolio-shell.is-focused .dot-field{opacity:.72;filter:blur(8px);pointer-events:none;transform:scale(1.025)}.portfolio-shell.is-focused .interaction-guide{z-index:1;opacity:.35;filter:blur(6px);pointer-events:none}.focus-panel{z-index:12;border:1px solid var(--line-strong);background:linear-gradient(90deg, transparent 49.9%, var(--panel-grid-line) 50%, transparent 50.1%), var(--paper-light);width:min(70rem,100% - max(2rem,10vw));box-shadow:0 2rem 6rem var(--panel-shadow-color);transform-origin:50%;grid-template-rows:auto minmax(0,1fr);margin:0;display:grid;position:absolute;inset:clamp(4.7rem,9vh,6.4rem) auto clamp(5.5rem,11vh,7.2rem) 50%;overflow:hidden;translate:-50%}.focus-panel:before{content:"";border:1px solid var(--panel-inner-line);pointer-events:none;position:absolute;inset:.55rem}.panel-header{z-index:2;border-bottom:1px solid var(--line-strong);justify-content:space-between;align-items:center;min-height:4.7rem;padding:.8rem clamp(1rem,2.6vw,2rem);display:flex;position:relative}.panel-header__meta{align-items:baseline;gap:1.2rem;display:flex}.panel-header__meta>span{color:var(--accent);letter-spacing:.08em;font:500 .6rem/1 DM Mono,ui-monospace,monospace}.panel-header h2{letter-spacing:-.05em;margin:0;font-size:clamp(1.3rem,2.5vw,2.1rem)}.panel-close{border:1px solid var(--line-strong);background:var(--paper-light);color:var(--ink);text-transform:uppercase;cursor:pointer;align-items:center;gap:.5rem;padding:.55rem .65rem;font:500 .58rem/1 DM Mono,ui-monospace,monospace;display:flex}.panel-close svg:last-child{display:none}.panel-close__label{display:inline}.panel-close:hover{background:var(--ink);color:var(--paper-light)}.panel-kicker{color:var(--accent);letter-spacing:.06em;margin:0 0 .8rem;font-size:.62rem}.panel-label{color:var(--ink-soft);letter-spacing:.08em;font-size:.58rem}.home-panel-grid{z-index:1;grid-template-rows:1fr auto;grid-template-columns:1.35fr .95fr;min-height:0;padding:clamp(1.1rem,3vw,2.4rem);display:grid;position:relative}.home-statement{border-right:1px solid var(--line);flex-direction:column;justify-content:center;padding-right:clamp(1rem,4vw,3.5rem);display:flex}.home-statement h3,.contact-message h3{letter-spacing:-.075em;max-width:11ch;margin:0 0 1rem;font-size:clamp(2.2rem,5vw,5rem);font-weight:800;line-height:.88}.home-statement>p:last-child,.contact-message>p:last-child{max-width:51ch;color:var(--ink-soft);margin:0;font-size:clamp(.78rem,1.1vw,1rem);line-height:1.65}.home-capabilities{padding-left:clamp(1rem,3vw,2.4rem)}.home-capabilities ul{margin:.85rem 0 0;padding:0;list-style:none}.home-capabilities li{border-top:1px solid var(--line);grid-template-columns:1.6rem 1fr;align-items:center;min-height:clamp(2rem,5vh,3.1rem);font-size:clamp(.7rem,1vw,.9rem);font-weight:700;display:grid}.home-capabilities li:last-child{border-bottom:1px solid var(--line)}.home-capabilities li span{color:var(--accent);font:500 .52rem/1 DM Mono,ui-monospace,monospace}.home-tech{border-top:1px solid var(--line);grid-column:1/-1;grid-template-columns:8rem 1fr;align-items:center;gap:1rem;padding-top:clamp(1rem,2vh,1.6rem);display:grid}.tech-grid{border:1px solid var(--line);grid-template-columns:repeat(5,1fr);display:grid}.tech-grid>div{border-right:1px solid var(--line);justify-content:center;align-items:center;gap:.55rem;min-height:3rem;display:flex}.tech-grid>div:last-child{border-right:0}.tech-grid img{object-fit:contain;opacity:.72;width:1.25rem;height:1.25rem}.tech-grid strong{font-size:.7rem}.projects-panel-grid{z-index:1;grid-template-columns:minmax(8.7rem,12rem) minmax(0,1fr);gap:clamp(.9rem,2vw,1.7rem);min-height:0;padding:clamp(.9rem,2.4vw,1.8rem);display:grid;position:relative}.project-selector{border:1px solid var(--line);flex-direction:column;display:flex}.project-selector button{border:0;border-bottom:1px solid var(--line);background:var(--surface-cell-bg);min-width:0;min-height:0;color:var(--ink);text-align:left;cursor:pointer;flex:1;grid-template-columns:1.5rem 1fr;align-content:center;gap:.2rem .45rem;padding:.75rem;display:grid;position:relative;overflow:hidden}.project-selector button:last-child{border-bottom:0}.project-selector button:after{content:"";background:var(--accent);width:3px;transition:transform .18s;position:absolute;inset:0 auto 0 0;transform:scaleY(0)}.project-selector button:hover,.project-selector button.is-active{background:var(--surface-cell-active)}.project-selector button.is-active:after{transform:scaleY(1)}.project-selector span{color:var(--accent);font:500 .52rem/1 DM Mono,ui-monospace,monospace}.project-selector strong{overflow-wrap:anywhere;min-width:0;font-size:clamp(.68rem,1vw,.85rem)}.project-selector small{min-width:0;color:var(--ink-soft);overflow-wrap:anywhere;text-transform:uppercase;grid-column:2;font:400 calc(.48rem + 4px)/1.3 DM Mono,ui-monospace,monospace}.project-detail{grid-template-columns:minmax(15rem, .78fr) minmax(var(--project-copy-min,24rem), 1.22fr);border:1px solid var(--line-strong);min-height:0;display:grid;position:relative;overflow:hidden}.project-visual{color:#eee3ce;text-align:left;cursor:pointer;background:#26251f;border:0;min-width:0;min-height:0;padding:0;position:relative;overflow:hidden}.project-visual>.project-artwork{width:100%;height:100%}.project-visual img{filter:saturate(.78)sepia(.08)}.project-visual:after{content:"";pointer-events:none;background:linear-gradient(#0000 55%,#181611c2);position:absolute;inset:0}.project-detail.is-artwork-expanded .project-visual{cursor:pointer}.project-visual__toggle{z-index:4;color:#eee3ce;letter-spacing:.06em;text-transform:uppercase;pointer-events:none;background:#1917129e;border:1px solid #eee3ce9e;align-items:center;gap:.4rem;padding:.45rem .55rem;font:500 .52rem/1 DM Mono,ui-monospace,monospace;display:flex;position:absolute;top:.85rem;right:.85rem}.project-visual__toggle svg{width:.85rem;height:.85rem}.project-visual__caption{z-index:3;color:#eee3ce;text-transform:uppercase;justify-content:space-between;gap:1rem;font:500 calc(.52rem + 4px)/1 DM Mono,ui-monospace,monospace;display:flex;position:absolute;bottom:.9rem;left:1rem;right:1rem}.project-visual__caption span:last-child{align-items:center;gap:.35rem;display:flex}.project-copy-viewport{background:var(--surface-cell-bg);min-width:0;min-height:0;overflow:hidden}.project-copy{background:var(--surface-cell-bg);grid-template-rows:auto minmax(0,1fr);width:100%;min-width:0;height:100%;padding:clamp(1rem,2.5vw,2rem);display:grid;overflow:hidden}.project-title-row{min-width:0;padding-bottom:.12rem;display:block;position:relative;overflow:hidden}.project-title-row>div{z-index:1;min-width:0;padding-right:clamp(2.8rem,6vw,5.5rem);position:relative}.project-title-row .panel-label{overflow-wrap:anywhere;max-width:100%;font-size:calc(.58rem + 4px);line-height:1.35;display:block}.project-title-row h3{letter-spacing:-.07em;white-space:nowrap;max-width:none;margin:.35rem 0 0;padding-bottom:.12em;font-size:clamp(1.8rem,3.6vw,3.5rem);line-height:1.02;overflow:visible}.project-number{z-index:0;color:var(--subtle-number);pointer-events:none;font-size:clamp(2.5rem,4vw,4.2rem);font-weight:800;line-height:.8;position:absolute;top:0;right:0}.project-details{overscroll-behavior:contain;min-width:0;min-height:0;margin-top:clamp(.8rem,2vh,1.35rem);padding-right:.25rem;overflow:auto}.project-details__section{border-top:1px solid var(--line-strong);padding:clamp(.72rem,1.7vh,1.05rem) 0}.project-details__section:first-child{padding-top:.65rem}.project-details__section h4{color:var(--ink);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:.55rem;margin:0 0 .62rem;font:600 .58rem/1.2 DM Mono,ui-monospace,monospace;display:flex}.project-details__section h4 span{color:var(--accent);font-size:.48rem}.project-details__section p{max-width:100%;color:var(--ink);overflow-wrap:anywhere;margin:0;font-size:clamp(.7rem,1vw,.9rem);line-height:1.52}.project-details__secondary{color:var(--ink-soft)!important;margin-top:.58rem!important;font-size:clamp(.62rem,.88vw,.78rem)!important}.skill-chips{flex-wrap:wrap;gap:.45rem;min-width:0;display:flex}.skill-chips span{border:1px solid var(--line);background:var(--surface-cell-bg);overflow-wrap:anywhere;text-transform:uppercase;min-width:0;padding:.45rem .55rem;font:500 .58rem/1.2 DM Mono,ui-monospace,monospace}.contact-panel-grid{z-index:1;grid-template-columns:1.15fr .85fr;gap:clamp(1.5rem,5vw,5rem);min-height:0;padding:clamp(1.2rem,4vw,3rem);display:grid;position:relative}.contact-message{flex-direction:column;justify-content:center;display:flex}.contact-message h3{max-width:12ch}.contact-links{border-top:1px solid var(--line-strong);flex-direction:column;justify-content:center;display:flex}.contact-links>*{border:0;border-bottom:1px solid var(--line-strong);min-height:clamp(4.2rem,10vh,6rem);color:var(--ink);text-align:left;cursor:pointer;background:0 0;grid-template-columns:2.6rem minmax(0,1fr) auto;align-items:center;gap:.8rem;padding:0 .6rem;transition:background .16s,padding .16s;display:grid}.contact-links>:hover{background:var(--surface-cell-active);padding-left:.8rem;padding-right:.8rem}.contact-icon{border:1px solid var(--line-strong);place-items:center;width:2.25rem;height:2.25rem;display:grid}.contact-icon svg{width:1rem}.contact-links small,.contact-links strong{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.contact-links small{color:var(--ink-soft);text-transform:uppercase;margin-bottom:.25rem;font:500 .52rem/1 DM Mono,ui-monospace,monospace}.contact-links strong{font-size:clamp(.68rem,1vw,.88rem)}.contact-links>*>svg{width:1rem}.experience-panel-grid{z-index:1;grid-template-columns:minmax(10rem,.34fr) minmax(0,1fr);gap:clamp(1rem,3vw,2.3rem);min-height:0;padding:clamp(1rem,3vw,2.2rem);display:grid;position:relative}.experience-selector{flex-direction:column;min-height:0;display:flex}.experience-selector>.panel-label{border-bottom:1px solid var(--line-strong);padding-bottom:.75rem}.experience-selector button{border:0;border-bottom:1px solid var(--line);color:var(--ink);text-align:left;cursor:pointer;background:0 0;grid-template-columns:1.65rem minmax(0,1fr);gap:.25rem .4rem;padding:1rem .75rem;display:grid;position:relative}.experience-selector button:before{content:"";background:var(--accent);width:3px;transition:transform .16s;position:absolute;inset:0 auto 0 0;transform:scaleY(0)}.experience-selector button:hover,.experience-selector button.is-active{background:var(--surface-cell-active)}.experience-selector button.is-active:before{transform:scaleY(1)}.experience-selector button span{color:var(--accent);font:500 .52rem/1 DM Mono,ui-monospace,monospace}.experience-selector button strong{font-size:.82rem}.experience-selector button small{color:var(--ink-soft);text-transform:uppercase;grid-column:2;font:500 .52rem/1.35 DM Mono,ui-monospace,monospace}.experience-detail{border:1px solid var(--line-strong);background:var(--surface-cell-bg);grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr) minmax(12rem,.38fr);min-height:0;display:grid;overflow:hidden}.experience-heading{border-bottom:1px solid var(--line-strong);grid-column:1/-1;justify-content:space-between;align-items:flex-start;gap:1rem;padding:clamp(1rem,2.6vw,2rem);display:flex}.experience-heading h3{letter-spacing:-.07em;max-width:15ch;margin:0;font-size:clamp(1.8rem,4vw,3.8rem);line-height:.92}.experience-heading>div>strong{color:var(--accent);text-transform:uppercase;margin-top:.55rem;font-size:clamp(.8rem,1.25vw,1rem);display:block}.experience-heading>span{color:var(--ink-soft);text-transform:uppercase;flex:none;font:500 .58rem/1.3 DM Mono,ui-monospace,monospace}.experience-highlights{min-height:0;margin:0;padding:clamp(.7rem,1.8vw,1.4rem) clamp(1rem,2.6vw,2rem);list-style:none;overflow:auto}.experience-highlights li{border-bottom:1px solid var(--line);grid-template-columns:1.8rem minmax(0,1fr);padding:clamp(.55rem,1.2vh,.85rem) 0;display:grid}.experience-highlights li>span{color:var(--accent);padding-top:.18rem;font:500 .5rem/1 DM Mono,ui-monospace,monospace}.experience-highlights p{color:var(--ink-soft);margin:0;font-size:clamp(.7rem,1vw,.88rem);line-height:1.52}.experience-highlights li.is-highlighted{border-left:3px solid var(--accent);background:var(--accent-wash);margin:.25rem 0;padding-left:.7rem;padding-right:.7rem}.experience-highlights li.is-highlighted p{color:var(--ink);font-weight:700}.experience-detail .experience-highlights{grid-column:1/-1}.education-panel-grid{z-index:1;grid-template-columns:1fr .8fr;gap:clamp(1rem,3vw,2.5rem);min-height:0;padding:clamp(1rem,3vw,2.3rem);display:grid;position:relative}.education-column,.certification-column{flex-direction:column;min-width:0;min-height:0;display:flex}.education-column{border-right:1px solid var(--line-strong);padding-right:clamp(1rem,3vw,2.5rem);overflow:auto}.education-card{border:1px solid var(--line-strong);background:var(--surface-cell-bg);width:100%;color:var(--ink);text-align:left;cursor:pointer;grid-template-columns:2rem minmax(0,1fr);margin-top:.45rem;padding:clamp(.65rem,1.5vw,1rem);display:grid;position:relative}.education-card:before{content:"";background:var(--accent);width:3px;transition:transform .16s;position:absolute;inset:0 auto 0 0;transform:scaleY(0)}.education-card:hover,.education-card.is-active{background:var(--surface-cell-active)}.education-card.is-active:before{transform:scaleY(1)}.education-card>span{color:var(--accent);font:500 .54rem/1 DM Mono,ui-monospace,monospace}.education-card small{color:var(--ink-soft);text-transform:uppercase;font:500 .56rem/1 DM Mono,ui-monospace,monospace}.education-card h3{letter-spacing:-.045em;max-width:24ch;margin:.35rem 0;font-size:clamp(1rem,1.8vw,1.45rem);line-height:1.02}.education-card strong{max-width:45ch;color:var(--accent);text-transform:uppercase;font-size:clamp(.62rem,.9vw,.78rem);line-height:1.4;display:block}.education-card p{color:var(--ink-soft);margin:.55rem 0 0;font-size:clamp(.72rem,1vw,.88rem);line-height:1.5}.certification-column__header{border-bottom:1px solid var(--line-strong);flex:none;padding-bottom:.8rem}.certification-column__header .panel-kicker{margin:0}.certification-column__body{overflow-anchor:none;min-width:0;min-height:0}.education-selection{padding:.85rem 0 1rem}.education-selection h3{letter-spacing:-.055em;max-width:22ch;margin:.45rem 0;font-size:clamp(1.25rem,2.6vw,2.25rem);line-height:1}.education-selection__detail{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.education-selection p{min-width:0;max-width:42ch;color:var(--ink-soft);margin:0;font-size:clamp(.65rem,.9vw,.78rem);line-height:1.45}.education-selection time{color:var(--accent);white-space:nowrap;flex:none;font:500 clamp(.52rem,.75vw,.64rem)/1.45 DM Mono,ui-monospace,monospace}.certification-list{border-top:1px solid var(--line-strong);margin-top:.8rem;display:grid}.certification-list article{border-bottom:1px solid var(--line);grid-template-columns:2rem minmax(0,1fr);padding:1rem 0;display:grid}.certification-list article>span{color:var(--accent);font:500 .52rem/1 DM Mono,ui-monospace,monospace}.certification-list strong,.certification-list small{display:block}.certification-list strong{font-size:.82rem}.certification-list small{color:var(--ink-soft);margin-top:.25rem;font-size:.68rem}.certification-placeholder{border:1px dashed var(--line-strong);flex-direction:column;flex:1;justify-content:center;margin-top:.8rem;padding:clamp(1rem,2.8vw,2rem);display:flex}.certification-placeholder>span{color:var(--accent);text-transform:uppercase;font:500 .54rem/1 DM Mono,ui-monospace,monospace}.certification-placeholder h3{letter-spacing:-.065em;max-width:10ch;margin:.7rem 0;font-size:clamp(1.8rem,3.5vw,3rem);line-height:.94}.certification-placeholder p{max-width:32ch;color:var(--ink-soft);margin:0;font-size:.78rem;line-height:1.5}.certification-placeholder a{border-bottom:1px solid var(--ink);text-transform:uppercase;align-self:flex-start;align-items:center;gap:.45rem;margin-top:1rem;padding-bottom:.25rem;font:500 .58rem/1 DM Mono,ui-monospace,monospace;display:inline-flex}.resume-panel-grid{z-index:1;grid-template-columns:.8fr 1fr;gap:clamp(1.5rem,5vw,5rem);min-height:0;padding:clamp(1rem,3vw,2.5rem);display:grid;position:relative}.resume-document{aspect-ratio:.74;border:1px solid var(--line-strong);background:var(--surface-cell-bg);width:min(28vh,15rem);box-shadow:.8rem .8rem 0 var(--surface-cell-active);place-self:center end;padding:1.2rem;position:relative;transform:rotate(-2deg)}.resume-document svg{width:2rem;height:2rem;color:var(--accent)}.resume-document span{font:500 .5rem/1 DM Mono,ui-monospace,monospace;position:absolute;top:1.35rem;right:1rem}.resume-document i{background:var(--line);width:100%;height:1px;margin-top:1.2rem;display:block}.resume-document i:first-of-type{background:var(--ink);width:55%;height:.5rem;margin-top:3rem}.resume-document i:nth-of-type(2){width:85%}.resume-document i:nth-of-type(3){width:72%}.resume-document i:nth-of-type(4){width:90%}.resume-copy{flex-direction:column;justify-content:center;max-width:34rem;display:flex}.resume-copy h3{letter-spacing:-.075em;max-width:10ch;margin:0 0 1rem;font-size:clamp(2.1rem,5vw,4.6rem);line-height:.9}.resume-copy>p:not(.panel-kicker){max-width:48ch;color:var(--ink-soft);margin:0;font-size:clamp(.75rem,1.05vw,.92rem);line-height:1.6}.resume-download{border:1px solid var(--ink);background:var(--ink);color:var(--paper-light);text-transform:uppercase;align-self:flex-start;align-items:center;gap:.55rem;margin-top:1.3rem;padding:.8rem 1rem;font:500 .62rem/1 DM Mono,ui-monospace,monospace;display:inline-flex}.resume-download:disabled{border-color:var(--line-strong);background:var(--surface-cell-active);color:var(--ink-soft);cursor:not-allowed}.resume-copy>small{color:var(--ink-soft);margin-top:.7rem;font:500 .5rem/1.35 DM Mono,ui-monospace,monospace}@media (width<=820px),(width<=960px) and (height<=560px) and (orientation:landscape){.interaction-guide{z-index:20;width:auto;display:block}.interaction-guide .interaction-guide__toggle{z-index:2;justify-content:center;place-items:center;width:2.2rem;height:2.2rem;margin-left:auto;padding:0;line-height:0;position:relative;display:grid!important}.interaction-guide__toggle svg{width:1rem;height:1rem;margin:0;display:block}.interaction-guide__menu{border:1px solid var(--line-strong);background:var(--guide-bg);width:min(28rem,100vw - 1.7rem);box-shadow:0 .8rem 2rem var(--panel-shadow-color);opacity:0;visibility:hidden;pointer-events:none;transform-origin:100% 0;grid-template-columns:repeat(2,minmax(0,1fr));gap:.22rem;padding:.25rem;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1),visibility .18s step-end;display:grid;position:absolute;top:calc(100% + .32rem);right:0;transform:translateY(-.35rem)scale(.97)}.interaction-guide.is-mobile-menu-open .interaction-guide__menu{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1),visibility step-start;transform:translateY(0)scale(1)}.interaction-guide__menu .gesture-dock{grid-column:1/-1;width:100%}.interaction-guide__menu>.theme-toggle,.interaction-guide__menu>button:last-child{justify-content:center;width:100%}}@media (width<=820px){:root{--cube-size:min(54vw, 16.5rem, calc(100dvh - 20rem))}.portfolio-shell:not(.is-focused){touch-action:none}.portfolio-shell.is-focused .cube-stage{opacity:0;filter:none;transition:opacity .18s;transform:none}.portfolio-shell.is-focused .cube-face{will-change:auto}.direction-button,.gesture-coach,.gesture-dock,.construction-control,.section-dock{-webkit-backdrop-filter:none;backdrop-filter:none}.cube-stage{inset:6rem 0 6.4rem}.interaction-guide{top:max(.85rem, env(safe-area-inset-top));right:max(.85rem, env(safe-area-inset-right));gap:.4rem;font-size:.5rem}.direction-button--focus{display:none}.direction-button--up{top:calc(50% - var(--cube-size) / 2 - 5.1rem);translate:var(--assemble-x,0px) var(--assemble-y,0px)}.direction-button--down{bottom:calc(50% - var(--cube-size) / 2 - 5.1rem);translate:var(--assemble-x,0px) var(--assemble-y,0px)}.direction-button--left{left:max(.45rem, calc(50% - var(--cube-size) / 2 - 5.1rem))}.direction-button--right{right:max(.45rem, calc(50% - var(--cube-size) / 2 - 5.1rem))}.section-dock{right:max(.55rem, env(safe-area-inset-right));left:max(.55rem, env(safe-area-inset-left));width:auto;transform:none}.section-dock__label{display:none}.section-dock button{flex:1 1 0;justify-content:center;min-width:0;min-height:2.75rem;padding-left:.35rem;padding-right:.35rem}.section-dock__name--full{display:none}.section-dock__name--short{display:inline}.construction-control{top:max(4.15rem, calc(env(safe-area-inset-top) + 4.15rem));bottom:auto;right:auto;left:max(.85rem, env(safe-area-inset-left));justify-content:center;min-width:2.75rem;min-height:2.75rem;padding:.58rem .72rem;transform:none}.construction-control--deconstruct,.construction-control--reconstruct{right:auto;left:max(.85rem, env(safe-area-inset-left))}.construction-control--deconstruct:hover:not(:disabled),.construction-control--reconstruct:hover:not(:disabled){transform:translateY(-2px)}.construction-control span{writing-mode:horizontal-tb}.construction-control:disabled{display:none}.focus-panel{touch-action:pan-y;width:calc(100% - 1.1rem);box-shadow:0 1rem 2.6rem var(--panel-shadow-color);inset:4.5rem auto 5.45rem 50%}.focus-panel:before{top:4.35rem}.panel-header{min-height:3.9rem}.panel-close{justify-content:center;width:2.75rem;height:2.75rem;margin-right:.65rem;padding:0;font-size:0}.panel-close svg:first-child{display:none}.panel-close svg:last-child{display:block}.panel-close__label{display:none}.home-panel-grid{grid-template-columns:1.25fr .95fr;padding:1rem}.home-statement{padding-right:1rem}.home-capabilities{padding-left:1rem}.home-tech{grid-template-columns:5rem 1fr}.tech-grid>div{flex-direction:column;gap:.25rem}.projects-panel-grid{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr;gap:.65rem;padding:.8rem}.project-selector{flex-direction:row}.project-selector button{border-right:1px solid var(--line);border-bottom:0;min-width:0}.project-selector button:last-child{border-right:0}.project-selector small{display:none}.project-detail{grid-template-columns:minmax(12rem, .75fr) minmax(var(--project-copy-min,20rem), 1.25fr)}.project-copy{padding:1rem}.experience-panel-grid{grid-template-columns:minmax(8rem,.28fr) minmax(0,1fr);gap:1rem;padding:1rem}.experience-detail{grid-template-columns:minmax(0,1fr) minmax(9rem,.34fr)}.experience-heading{padding:1rem}.experience-highlights{padding:.55rem 1rem}.education-panel-grid{gap:1rem;padding:1rem}.education-column{padding-right:1rem}.education-card{padding:1rem}.resume-panel-grid{gap:2rem;padding:1.25rem}.contact-panel-grid{grid-template-columns:1fr 1fr;gap:1.3rem;padding:1.25rem}}@media (width<=560px){:root{--cube-size:min(52vw, 13rem, calc(100dvh - 22rem))}.interaction-guide{top:max(.6rem, env(safe-area-inset-top));right:max(.6rem, env(safe-area-inset-right));width:auto}.interaction-guide .interaction-guide__toggle{width:2rem;height:2rem}.interaction-guide__menu{gap:.14rem;width:min(10.5rem,100vw - 1.2rem);padding:.14rem}.interaction-guide__menu .gesture-dock{flex-direction:row;grid-column:1/-1;width:100%}.interaction-guide__menu .theme-toggle,.interaction-guide__menu>button:last-child{text-align:center;justify-content:center;gap:.14rem;width:100%;height:1.7rem;padding:.08rem .12rem;font-size:.38rem;line-height:1}.interaction-guide .theme-toggle__icon{flex:0 0 1rem;width:1rem;height:1rem}.interaction-guide .theme-toggle__icon svg,.interaction-guide__menu>button:last-child svg{width:.82rem;height:.82rem}.cube-stage{inset:7rem 0 5.8rem}.direction-button{width:2.75rem;height:2.75rem}.direction-button--up{top:calc(50% - var(--cube-size) / 2 - 5.25rem);translate:var(--assemble-x,0px) var(--assemble-y,0px)}.direction-button--down{bottom:calc(50% - var(--cube-size) / 2 - 5.25rem);translate:var(--assemble-x,0px) var(--assemble-y,0px)}.direction-button--left{left:max(.35rem, calc(50% - var(--cube-size) / 2 - 5.25rem))}.direction-button--right{right:max(.35rem, calc(50% - var(--cube-size) / 2 - 5.25rem))}.direction-button__surface{overflow-wrap:anywhere;white-space:normal;width:max-content;max-width:7.25rem;font-size:.46rem;line-height:1.25;bottom:calc(100% + .32rem)}.direction-button--left .direction-button__surface,.direction-button--right .direction-button__surface{text-align:center;width:4rem;left:50%;right:auto;transform:translate(-50%)}.gesture-coach{padding:.65rem}.gesture-coach__steps{grid-template-columns:1fr}.gesture-coach__step{min-height:3.7rem}.gesture-coach__step+.gesture-coach__step{border-top:1px solid var(--line);border-left:0}.gesture-dock__item{text-align:left;grid-template-columns:.68rem minmax(0,1fr);gap:.16rem;width:33.333%;min-width:0;min-height:2.2rem;padding:.14rem .16rem}.gesture-dock__item+.gesture-dock__item{border-top:0;border-left:1px solid var(--line)}.gesture-dock svg{width:.66rem;height:.66rem}.gesture-dock small{margin-top:.05rem;font-size:.28rem;line-height:1.12;display:block}.gesture-dock strong{margin-top:0;font-size:.34rem;line-height:1.08}.construction-control{top:max(3.45rem, calc(env(safe-area-inset-top) + 3.45rem));width:auto;min-height:2.55rem;padding:.5rem .65rem}.construction-control span{display:inline}.face-density{width:75%;height:75%;transform:scale(1.33333)}.face-projects .project-mini small,.face-projects .face-footnote{display:none}.section-dock{bottom:max(.55rem, env(safe-area-inset-bottom))}.section-dock button{flex-direction:column;gap:.22rem;min-height:3.4rem;padding:.42rem .08rem;font-size:.56rem}.section-dock button .section-dock__number{font-size:.46rem}.section-dock__name{width:100%}.focus-panel{width:calc(100% - .7rem);top:3.65rem;bottom:5.35rem}.focus-panel:before{top:3.85rem}.panel-header{min-height:3.45rem;padding:.38rem .65rem}.panel-close{flex:0 0 2.75rem;place-content:center;place-items:center;line-height:0;display:grid}.panel-close svg:last-child{grid-area:1/1;align-self:center;width:1rem;height:1rem;margin:0}.panel-header__meta{gap:.65rem}.panel-header h2{font-size:1.1rem}.home-panel-grid,.projects-panel-grid,.experience-panel-grid,.education-panel-grid,.resume-panel-grid,.contact-panel-grid{overscroll-behavior:contain;min-height:0;overflow:auto}.focus-panel>*,.panel-header,.panel-header__meta,.project-detail,.project-copy,.experience-detail,.education-column,.certification-column,.contact-message,.contact-links{min-width:0;max-width:100%}.panel-header__meta{overflow:hidden}.panel-header h2{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.home-panel-grid{grid-template-rows:1fr auto;grid-template-columns:1fr}.home-statement{border-right:0;padding:0 0 .7rem}.home-statement h3{margin-bottom:.65rem;font-size:clamp(2rem,11vw,3rem)}.home-statement>p:last-child{font-size:.7rem;line-height:1.48}.home-capabilities{display:none}.home-tech{grid-column:1;grid-template-columns:1fr;gap:.45rem;padding-top:.65rem}.tech-grid>div{min-height:2.5rem}.tech-grid img{width:1rem;height:1rem}.tech-grid strong{font-size:.56rem}.projects-panel-grid{padding:.55rem}.project-selector button{grid-template-columns:auto 1fr;min-height:2.75rem;padding:.5rem .3rem}.project-selector strong{white-space:nowrap;text-overflow:ellipsis;font-size:.58rem;overflow:hidden}.project-detail{grid-template-rows:minmax(6.5rem,38%) minmax(0,1fr);grid-template-columns:1fr}.project-detail.is-artwork-expanded .project-visual img{object-fit:contain;object-position:center}.project-copy{padding:.72rem}.project-title-row h3{padding-bottom:.14em;font-size:1.45rem;line-height:1.05}.project-number{font-size:2rem}.project-details{margin-top:.55rem;padding-right:.12rem}.project-details__section{padding:.58rem 0}.project-details__section:first-child{padding-top:.5rem}.project-details__section h4{margin-bottom:.42rem;font-size:.5rem}.project-details__section p{font-size:.62rem;line-height:1.42}.project-details__secondary{margin-top:.42rem!important;font-size:.57rem!important}.skill-chips{gap:.28rem}.skill-chips span{padding:.32rem;font-size:.45rem}.project-visual__caption{font-size:calc(.43rem + 4px)}.experience-panel-grid{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr;gap:.55rem;padding:.6rem}.experience-selector{flex-direction:row}.experience-selector>.panel-label{display:none}.experience-selector button{flex:1;grid-template-columns:auto minmax(0,1fr);min-width:0;min-height:2.75rem;padding:.5rem .3rem}.experience-selector button strong{text-overflow:ellipsis;white-space:nowrap;font-size:.58rem;overflow:hidden}.experience-selector button small{text-overflow:ellipsis;white-space:nowrap;grid-column:2;font-size:.45rem;overflow:hidden}.experience-detail{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:1fr}.experience-heading{flex-direction:column;gap:.55rem;padding:.75rem}.experience-heading h3{font-size:1.55rem}.experience-heading>span{font-size:.47rem}.experience-highlights{padding:.35rem .75rem}.experience-highlights li{padding:.4rem 0}.experience-highlights p{font-size:.62rem;line-height:1.35}.education-panel-grid{grid-template-rows:max-content max-content;grid-template-columns:1fr;align-content:start;gap:.45rem;padding:.7rem;overflow:auto}.education-column{border-right:0;border-bottom:1px solid var(--line-strong);padding:0 0 .35rem}.education-card{margin-top:.35rem;padding:.75rem}.education-card h3{margin:.35rem 0;font-size:1.35rem}.education-card p{font-size:.65rem}.certification-column__header{z-index:3;background:var(--paper-light);margin:0 -.7rem;padding:.7rem .7rem .65rem;position:sticky;top:-.7rem}.education-selection{min-height:0;padding-bottom:.55rem}.education-selection__detail{grid-template-columns:minmax(0,1fr) auto;gap:.65rem;display:grid}.education-selection time{font-size:.5rem}.certification-list{margin-top:0}.certification-placeholder{min-height:9rem;margin-top:.35rem;padding:.8rem}.certification-placeholder h3{margin:.4rem 0;font-size:1.35rem}.certification-placeholder p{font-size:.65rem}.certification-placeholder a{margin-top:.6rem;font-size:.5rem}.resume-panel-grid{grid-template-columns:1fr;gap:0;padding:1rem}.resume-document{display:none}.resume-copy{align-self:center}.resume-copy h3{font-size:clamp(2rem,11vw,3rem)}.resume-copy>p:not(.panel-kicker){font-size:.7rem}.resume-download{margin-top:.9rem}.contact-panel-grid{grid-template-columns:1fr;gap:.7rem;padding:1rem}.contact-message h3{margin-bottom:.5rem;font-size:clamp(2rem,10vw,3rem)}.contact-message>p:last-child{font-size:.7rem}.contact-links>*{grid-template-columns:2.4rem minmax(0,1fr) auto;gap:.55rem;min-height:3.4rem}}@media (width<=380px){:root{--cube-size:min(50vw, 12rem, calc(100dvh - 22rem))}.interaction-guide__menu{width:min(9.75rem,100vw - 1rem)}.cube-stage{top:6.8rem}.section-dock button{font-size:.52rem}.panel-header__meta>span{display:none}.project-title-row>div{padding-right:2.4rem}.contact-links strong{font-size:.62rem}}@media (width<=960px) and (height<=560px) and (orientation:landscape){:root{--cube-size:min(42vh, 14rem)}.interaction-guide{width:auto;display:block;top:.4rem;right:.5rem}.interaction-guide .interaction-guide__toggle{width:1.75rem;height:1.75rem}.interaction-guide__menu{gap:.12rem;width:22rem;padding:.15rem}.interaction-guide__menu .gesture-dock{width:100%}.interaction-guide__menu .theme-toggle{gap:.12rem;width:auto;height:1.75rem;padding:.08rem .2rem;font-size:.4rem}.interaction-guide__menu>button:last-child{width:100%;height:1.75rem;padding:0}.interaction-guide .theme-toggle__icon{flex-basis:.9rem;width:.9rem;height:.9rem}.gesture-dock__item{grid-template-columns:.7rem max-content;gap:.12rem;width:auto;min-width:0;min-height:1.75rem;padding:.1rem .18rem}.gesture-dock svg{width:.62rem;height:.62rem}.gesture-dock strong{white-space:nowrap;font-size:.4rem}.gesture-dock small{display:none}.cube-stage{inset:3.2rem 0 3.65rem}.direction-button{width:2.4rem;height:2.4rem}.direction-button--up{top:calc(50% - var(--cube-size) / 2 - 4.25rem)}.direction-button--down{bottom:calc(50% - var(--cube-size) / 2 - 4.25rem)}.direction-button--left{left:max(.35rem, calc(50% - var(--cube-size) / 2 - 4.25rem))}.direction-button--right{right:max(.35rem, calc(50% - var(--cube-size) / 2 - 4.25rem))}.construction-control{width:auto;min-width:2.4rem;min-height:2.4rem;top:3.35rem;bottom:auto}.section-dock{bottom:.25rem}.section-dock button{flex-direction:row;min-height:2.8rem;font-size:.5rem}.focus-panel{top:2.9rem;bottom:3.9rem}.focus-panel:before{top:3.2rem}.panel-header{min-height:2.9rem}.panel-close{width:2.35rem;height:2.35rem}.gesture-coach{width:min(27rem,100% - 5rem);padding:.6rem}.gesture-coach__steps{grid-template-columns:1fr 1fr}.gesture-coach__step+.gesture-coach__step{border-top:0;border-left:1px solid var(--line)}}@media (width>=961px) and (height<=680px){:root{--cube-size:min(49vh, 18rem)}.cube-stage{inset:3.6rem 0 5.2rem}.section-dock{bottom:.45rem}.focus-panel{top:3.6rem;bottom:4.5rem}.panel-header{min-height:3.35rem}.home-statement h3,.contact-message h3{font-size:clamp(2rem,7vh,3.5rem)}.project-copy{padding-top:.75rem;padding-bottom:.75rem}}@media (prefers-reduced-motion:reduce){.cube-wrap,.cube-shadow,.cube-stage,.direction-button,.section-dock button{transition:none}.portfolio-cube{animation:none!important}}
