.page-index .paper-wrap{flex:none;align-self:flex-start;width:min(440px,78%);margin-top:44px;transition:transform .6s var(--ease-out)}.page-index .paper{container-type:inline-size;display:block;aspect-ratio:1 / 1.414;padding:9% 9% 0;border:1px solid #e8e8ed;border-radius:14px 14px 0 0;background:#fff;box-shadow:0 30px 60px -20px rgba(0,0,0,.25);color:#1d1d1f;text-align:left;transition:box-shadow .6s var(--ease-out)}.page-index .paper span,.page-index .paper i{display:block}.page-index .paper-name{overflow:hidden;font-family:var(--font-display);font-size:17px;font-size:clamp(13px,5.6cqi,20px);font-weight:600;line-height:1.2;letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis}.page-index .paper-sub{margin-top:4px;color:#6e6e73;font-size:12px;font-size:clamp(10px,3.4cqi,12px);line-height:1.33;letter-spacing:0}.page-index .paper-rule{height:1px;margin:7% 0 6%;background:#e8e8ed}.page-index .paper-sec+.paper-sec{margin-top:7%}.page-index .paper-label{margin-bottom:9px;color:#86868b;font-size:10px;font-weight:600;line-height:1.2;letter-spacing:.06em;text-transform:uppercase}.page-index .paper-bar{width:var(--w, 80%);height:7px;border-radius:4px;background:#ececf0}.page-index .paper-bar.strong{background:#d2d2d7}.page-index .paper-bar+.paper-bar{margin-top:8px}.page-index .story-stack{position:relative;isolation:isolate;width:min(360px,80%);height:270px;margin-top:12px}.page-index .story-card{position:absolute;left:0;right:0;display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:18px 22px 22px;border-radius:14px;background:#fff;box-shadow:0 24px 48px -20px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.06);text-align:left;transition:transform .6s var(--ease-out)}.page-index .story-card i{display:block;width:58%;height:8px;border-radius:4px;background:#e8e8ed}.page-index .story-card i:first-of-type{width:88%;height:11px;border-radius:6px;background:#d2d2d7}.page-index .story-card:nth-child(1){top:0;z-index:1;transform:translateX(-5%) rotate(-4deg)}.page-index .story-card:nth-child(2){top:80px;z-index:2;transform:translateX(5%) rotate(2.5deg)}.page-index .story-card:nth-child(3){top:160px;z-index:3;transform:translateX(-2%) rotate(-1.5deg)}.page-index .tile-grid>.tile{min-width:0}@media(min-width:1069px){.page-index #tile-experience .fan{scale:1.14;transform-origin:50% 100%}}.page-index #tile-hackathons .badges{margin-bottom:44px}.page-index .bubbles{display:flex;flex-direction:column;gap:14px;width:min(400px,86%);min-height:300px;margin-bottom:-40px;padding:24px 24px 76px;border-radius:28px 28px 0 0;background:#fff;box-shadow:0 30px 60px -24px rgba(0,0,0,.22),0 0 0 1px rgba(0,0,0,.04);color:#1d1d1f;text-align:left;transition:transform .6s var(--ease-out)}.page-index .bubbles-head{display:flex;flex-direction:column;align-items:center;gap:4px;padding-bottom:14px;border-bottom:1px solid #e8e8ed}.page-index .bubbles-avatar{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:linear-gradient(145deg,#bf5af2,#0a84ff);color:#fff;font-family:var(--font-display);font-size:19px;font-weight:600;line-height:1}.page-index .bubbles-name{color:#6e6e73;font-size:12px;font-weight:600;line-height:1.33;letter-spacing:0}.page-index .bubble-row{position:relative;display:flex}.page-index .bubble-row-out{justify-content:flex-end}.page-index .bubble{max-width:80%;padding:10px 16px;border-radius:20px;font-family:var(--font-display);font-size:17px;font-weight:600;line-height:1.24;letter-spacing:-.01em}.page-index .bubble-in{border-bottom-left-radius:6px;background:#e9e9eb;color:#1d1d1f;transform-origin:0 100%}.page-index .bubble-out{border-bottom-right-radius:6px;background:#0071e3;color:#fff;transform-origin:100% 100%}.page-index .bubble-typing{position:absolute;left:0;bottom:0;display:none;align-items:center;gap:5px;height:41px;padding:0 16px;border-radius:20px 20px 20px 6px;background:#e9e9eb;transform-origin:0 100%}.page-index .bubble-typing i{display:block;width:8px;height:8px;border-radius:50%;background:#8e8e93}@media(max-width:734px){.page-index #tile-resume{min-height:0}.page-index #tile-resume .tile-visual{flex:0 0 320px;min-height:0}.page-index .paper-wrap{width:min(440px,86%);margin-top:36px}.page-index .story-stack{width:78%;height:262px}.page-index .story-card:nth-child(2){top:78px}.page-index .story-card:nth-child(3){top:156px}.page-index #tile-hackathons .badges{scale:.86;transform-origin:50% 100%}.page-index .bubbles{padding:20px 18px 72px}}@media(max-width:374px){.page-index #tile-experience .fan{scale:.6}}.page-index .paper-wrap.hx-armed .paper-bar{transform-origin:0 50%}.no-reduced-motion .page-index .paper-wrap.hx-armed:not(.is-in) .paper{transform:translateY(18%)}.no-reduced-motion .page-index .paper-wrap.hx-armed:not(.is-in) :is(.paper-name,.paper-sub,.paper-label,.paper-rule){opacity:0}.no-reduced-motion .page-index .paper-wrap.hx-armed:not(.is-in) .paper-bar{transform:scaleX(0)}.page-index .paper-wrap.hx-armed.is-in:not(.is-settled) .paper{transition:transform 1.3s var(--ease-out),box-shadow .6s var(--ease-out)}.page-index .paper-wrap.hx-armed.is-in:not(.is-settled) :is(.paper-name,.paper-sub){transition:opacity .6s ease .35s}.page-index .paper-wrap.hx-armed.is-in:not(.is-settled) :is(.paper-label,.paper-rule){transition:opacity .6s ease .5s}.page-index .paper-wrap.hx-armed.is-in:not(.is-settled) .paper-bar{transition:transform .6s var(--ease-out) calc(.55s + var(--d, 0) * 70ms)}.no-reduced-motion .page-index .story-stack.hx-armed:not(.is-in) .story-card{opacity:0;transform:translateY(70px) rotate(0deg) scale(.94)}.page-index .story-stack.hx-armed.is-in:not(.is-settled) .story-card{transition:transform 1s var(--ease-out),opacity .6s ease}.page-index .story-stack.hx-armed.is-in:not(.is-settled) .story-card:nth-child(2){transition-delay:.12s}.page-index .story-stack.hx-armed.is-in:not(.is-settled) .story-card:nth-child(3){transition-delay:.24s}.no-reduced-motion .page-index .bubbles.hx-armed:not(.is-in) :is(.bubble,.bubbles-head){opacity:0}.page-index .bubbles.hx-armed:not(.is-settled) .bubble-typing{display:flex;opacity:0}.page-index .bubbles.hx-armed.is-in:not(.is-settled) .bubbles-head{animation:dfb-fade-in .6s ease both}.page-index .bubbles.hx-armed.is-in:not(.is-settled) .bubble-typing{animation:hx-typing 1.05s ease both .3s}.page-index .bubbles.hx-armed.is-in:not(.is-settled) .bubble-typing i{animation:hx-dot .5s ease-in-out .3s 2 alternate both}.page-index .bubbles.hx-armed.is-in:not(.is-settled) .bubble-typing i:nth-child(2){animation-delay:.45s}.page-index .bubbles.hx-armed.is-in:not(.is-settled) .bubble-typing i:nth-child(3){animation-delay:.6s}.page-index .bubbles.hx-armed.is-in:not(.is-settled) .bubble-in{animation:hx-pop .5s cubic-bezier(.34,1.45,.64,1) 1.3s both}.page-index .bubbles.hx-armed.is-in:not(.is-settled) .bubble-out{animation:hx-pop .5s cubic-bezier(.34,1.45,.64,1) 2s both}.page-index .gitviz.hx-armed path{stroke-dasharray:1 1.05}.page-index .gitviz.hx-armed circle{transform-box:fill-box;transform-origin:center}.no-reduced-motion .page-index .gitviz.hx-armed:not(.is-in) path{stroke-dashoffset:1.02}.no-reduced-motion .page-index .gitviz.hx-armed:not(.is-in) circle{transform:scale(0)}.no-reduced-motion .page-index .gitviz.hx-armed:not(.is-in) code{opacity:0;transform:translateY(10px)}.page-index .gitviz.hx-armed.is-in:not(.is-settled) .gv-main{transition:stroke-dashoffset 1.1s var(--ease-sweep)}.page-index .gitviz.hx-armed.is-in:not(.is-settled) .gv-branch{transition:stroke-dashoffset .9s var(--ease-sweep) .35s}.page-index .gitviz.hx-armed.is-in:not(.is-settled) circle{transition:transform .45s cubic-bezier(.34,1.56,.64,1) calc(.1s + var(--i, 0) * .15s)}.page-index .gitviz.hx-armed.is-in:not(.is-settled) code{transition:opacity .5s ease 1.2s,transform .6s var(--ease-out) 1.2s}.no-reduced-motion .page-index .hello.hx-armed:not(.is-in) span{opacity:0;transform:translateY(28px)}.page-index .hello.hx-armed.is-in:not(.is-settled) span{transition:opacity .8s var(--ease-chapter),transform .8s var(--ease-out)}.page-index .hello.hx-armed.is-in:not(.is-settled) span:nth-child(2){transition-delay:.15s}.page-index .hello.hx-armed.is-in:not(.is-settled) span:nth-child(3){transition-delay:.3s}.no-reduced-motion .page-index .badges.hx-armed:not(.is-in) .badge{opacity:0;translate:0 -90px}.page-index .badges.hx-armed.is-in:not(.is-settled) .badge{transition:transform .6s var(--ease-out),opacity .5s ease,translate 1s cubic-bezier(.34,1.25,.64,1)}.page-index .badges.hx-armed.is-in:not(.is-settled) .badge+.badge{transition-delay:0s,.15s,.15s}.page-index .years.hx-armed .years-bar span{transform-origin:0 50%}.no-reduced-motion .page-index .years.hx-armed:not(.is-in) .years-big{opacity:0;transform:translateY(16px)}.no-reduced-motion .page-index .years.hx-armed:not(.is-in) .years-bar :is(.done,.now){transform:scaleX(0)}.page-index .years.hx-armed.is-in:not(.is-settled) .years-big{transition:opacity .7s ease,transform .8s var(--ease-out)}.page-index .years.hx-armed.is-in:not(.is-settled) .years-bar .done{transition:transform .6s var(--ease-out) .25s}.page-index .years.hx-armed.is-in:not(.is-settled) .years-bar .now{transition:transform .6s var(--ease-out) .55s,background-position 1.2s linear .55s}.page-index .braces>*{display:inline-block}.page-index .braces>span{transition:transform .5s var(--ease-out)}.no-reduced-motion .page-index .braces.hx-armed:not(.is-in)>span:first-child{opacity:0;transform:translateX(1.2em)}.no-reduced-motion .page-index .braces.hx-armed:not(.is-in)>span:last-child{opacity:0;transform:translateX(-1.2em)}.no-reduced-motion .page-index .braces.hx-armed:not(.is-in)>b{opacity:0;transform:scale(.9)}.page-index .braces.hx-armed.is-in:not(.is-settled)>*{transition:opacity .7s ease,transform 1s var(--ease-out)}.page-index .braces.hx-armed.is-in:not(.is-settled)>b{transition-delay:.3s}.page-index .sun{transition:box-shadow .6s var(--ease-out)}.no-reduced-motion .page-index .sun.hx-armed:not(.is-in){opacity:.4;transform:translateY(24%)}.page-index .sun.hx-armed.is-in:not(.is-settled){transition:transform 1.6s var(--ease-out),opacity 1.2s ease}@keyframes hx-pop{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:none}}@keyframes hx-typing{0%{opacity:0;transform:scale(.7)}18%,82%{opacity:1;transform:none}100%{opacity:0;transform:none}}@keyframes hx-dot{from{opacity:.35;transform:none}to{opacity:1;transform:translateY(-3px)}}.no-touch .page-index #tile-experience:hover .fan.is-settled .fan-card.y24{transform:translateX(-196px) rotate(-16deg)}.no-touch .page-index #tile-experience:hover .fan.is-settled .fan-card.y25{transform:translateX(196px) rotate(16deg)}.no-touch .page-index #tile-experience:hover .fan.is-settled .fan-card.y26{transform:translateY(-34px)}.no-touch .page-index #tile-resume:hover .paper-wrap{transform:translateY(-14px)}.no-touch .page-index #tile-resume:hover .paper{box-shadow:0 44px 80px -24px rgba(0,0,0,.3)}.no-touch .page-index #tile-hackathons:hover .badge{transform:rotate(-2deg) translateY(16px)}.no-touch .page-index #tile-hackathons:hover .badge+.badge{transform:rotate(2deg) translateY(24px)}.no-touch .page-index #tile-newsroom:hover .story-stack:is(:not(.hx-armed),.is-settled) .story-card:nth-child(1){transform:translate(-11%,-8px) rotate(-8deg)}.no-touch .page-index #tile-newsroom:hover .story-stack:is(:not(.hx-armed),.is-settled) .story-card:nth-child(2){transform:translateX(10%) rotate(5deg)}.no-touch .page-index #tile-newsroom:hover .story-stack:is(:not(.hx-armed),.is-settled) .story-card:nth-child(3){transform:translate(-3%,10px) rotate(-3deg)}.no-touch .page-index #tile-codeurv:hover .braces:is(:not(.hx-armed),.is-settled)>span:first-child{transform:translateX(-.25em)}.no-touch .page-index #tile-codeurv:hover .braces:is(:not(.hx-armed),.is-settled)>span:last-child{transform:translateX(.25em)}.no-touch .page-index #tile-salou:hover .sun{box-shadow:0 0 170px rgba(255,159,10,.62)}.no-touch .page-index #tile-connect:hover .bubbles{transform:translateY(-10px)}.page-index .terminal.is-live{z-index:4;cursor:text}.page-index .terminal.is-live .terminal-body{height:300px;min-height:0;padding-bottom:60px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#48484a transparent}.page-index .terminal .term-session{display:none}.page-index .terminal.is-live.is-done .term-session{display:block}.page-index .terminal .is-cleared{display:none}.page-index .term-log .out{color:#a1a1a6}.page-index .term-log .dim{color:#6e6e73}.page-index .term-log .err{color:#ff6961}.page-index .term-log .hl{color:#64d2ff}.page-index .term-log .hash{color:#ffd60a}.page-index .term-input{width:calc(100% - 5ch);margin:0;padding:0;border:0;outline:0;background:transparent;color:#f5f5f7;font:inherit;caret-color:#f5f5f7}.page-index .terminal.is-live:focus-within{box-shadow:0 40px 80px -20px rgba(0,0,0,.35),0 0 0 2px var(--accent, #0071e3)}.page-index .term-chips{position:absolute;left:0;right:64px;bottom:0;z-index:5;display:none;gap:8px;padding:0 0 16px 24px;overflow-x:auto;scrollbar-width:none}.page-index .term-chips::-webkit-scrollbar{display:none}.page-index .terminal.is-live.is-done .term-chips{display:flex}.page-index .term-chips button{flex:none;padding:7px 12px;border:0;border-radius:980px;background:rgba(66,66,69,.7);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#e5e5ea;font:500 12px/1 var(--mono);cursor:pointer}.no-touch .page-index .term-chips button:hover{background:rgba(88,88,92,.85)}@media(max-width:734px){.page-index .terminal.is-live .terminal-body{height:240px;padding-bottom:54px}.page-index .term-chips{padding-left:18px}}.touch .page-index .term-input{font-size:16px}@media print{.page-index .term-chips,.page-index .term-session{display:none!important}}
