.nav-wrap{z-index:50;view-transition-name:nav;width:100%;max-width:1080px;height:76px;transition:transform var(--spring-d) var(--spring);position:fixed;top:0;left:50%;translate:-50%}.nav-wrap.tucked{transition-duration:.45s;transition-timing-function:var(--ease-ios);transform:translateY(calc(-100% - 30px))}.nav-bar{align-items:center;height:100%;padding:0 4.6rem 0 5rem;display:flex;position:relative}.nav-bar:before{content:"";z-index:-1;background:color-mix(in srgb, var(--nav-bg) 94%, transparent);-webkit-backdrop-filter:saturate(180%)blur(20px);transform-origin:top;height:130%;box-shadow:0 12px 28px color-mix(in srgb, var(--shadow) 35%, transparent);border-bottom-right-radius:14px;border-bottom-left-radius:14px;position:absolute;inset:0 0 auto;transform:perspective(250px)rotateX(-25deg)}.nav-bar .nav-links{--seg-r:12px;--seg-bg:color-mix(in srgb, var(--fg) 8%, transparent);gap:2.4rem;margin:0;padding:0;list-style:none;display:flex;position:absolute;left:50%;translate:-50%}.nav-link{color:var(--muted);transition:color .3s var(--ease-ios);border-radius:12px;padding:8px 14px;font-size:15.5px;font-weight:600;display:block;position:relative}.nav-link.active{color:var(--text)}@media (hover:hover){.nav-link:hover{color:var(--text)}}.lang{--seg-r:8px;background:color-mix(in srgb, var(--fg) 6%, transparent);border-radius:11px;padding:3px;display:flex}.nav-wrap .lang{view-transition-name:lang-toggle}.lang button{font-family:var(--mono);color:var(--dim);cursor:pointer;transition:color .3s var(--ease-ios);background:0 0;border:0;border-radius:8px;padding:4px 8px;font-size:12px}.lang button.on{color:var(--text)}.nav-actions{align-items:center;gap:1rem;margin-left:auto;display:flex}.nav-theme{border:1px solid var(--line);background:color-mix(in srgb, var(--fg) 4%, transparent);width:42px;height:42px;color:var(--text);cursor:pointer;transition:background .25s var(--ease-ios), transform var(--snappy-d) var(--snappy);border-radius:50%;place-items:center;display:grid}@media (hover:hover){.nav-theme:hover{background:color-mix(in srgb, var(--fg) 9%, transparent)}}.nav-theme:active{transform:scale(.92)}.nav-pill{border-radius:var(--r,17px 7px 12px 6px);background:var(--text);height:38px;color:var(--on-inverse);white-space:nowrap;rotate:var(--tilt,1.6deg);translate:0 var(--ty,0);transform:translate(var(--mx,0px), var(--my,0px));transition:transform var(--snappy-d) var(--snappy), rotate var(--bouncy-d) var(--bouncy), translate var(--bouncy-d) var(--bouncy), background .2s var(--ease-ios);align-items:center;gap:7px;padding:0 16px;font-size:14px;font-weight:600;display:inline-flex}.nav-pill .hand{transition:transform var(--bouncy-d) var(--bouncy)}@media (hover:hover){.nav-pill:hover{background:var(--text-2);translate:0;rotate:0deg}.nav-pill:hover .hand{transform:rotate(-14deg)}}.nav-pill:active{transform:translate(var(--mx,0px), var(--my,0px)) scale(.97)}@media (pointer:coarse){.nav-link,.nav-theme,.nav-pill,.nav-burger,.lang button{min-width:44px;min-height:44px}}.nav-burger,.nav-overlay{display:none}@media (width<=768px){.nav-wrap{height:62px;left:0;translate:none}.nav-bar{padding:0 16px}.nav-bar:before{border-radius:0;height:100%;transform:none}.nav-actions{gap:8px}.nav-theme{width:38px;height:38px}.nav-pill{justify-content:center;width:38px;padding:0}.nav-pill span{display:none}.nav-burger{z-index:3;cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;gap:5px;width:38px;height:38px;padding:0 8px;display:flex;position:relative}.nav-burger i{background:var(--text);height:2.5px;transition:transform .45s var(--spring), opacity .2s var(--ease-ios);border-radius:2px;display:block}.nav-wrap.open .nav-burger i:first-child{transform:translateY(7.5px)rotate(45deg)}.nav-wrap.open .nav-burger i:nth-child(2){opacity:0;transform:scaleX(0)}.nav-wrap.open .nav-burger i:nth-child(3){transform:translateY(-7.5px)rotate(-45deg)}.nav-bar .nav-links{--seg-bg:transparent;z-index:2;background:var(--surface);width:min(300px,82vw);height:100dvh;box-shadow:-10px 0 40px color-mix(in srgb, var(--shadow) 40%, transparent);transition:translate .5s var(--ease-ios);flex-direction:column;justify-content:center;align-items:center;gap:1.6rem;padding:2rem;position:fixed;inset:0 0 0 auto;translate:100%}.nav-wrap.open .nav-bar .nav-links{translate:0}.nav-links li{opacity:0;transition:opacity .4s var(--ease-out), transform .5s var(--spring);transform:translate(24px)}.nav-wrap.open .nav-links li{opacity:1;transition-delay:calc(80ms + var(--n) * 60ms);transform:none}.nav-link{color:var(--text);font-size:1.35rem}.nav-link.active{text-underline-offset:6px;text-decoration:underline;text-decoration-thickness:2px}.nav-overlay{z-index:1;-webkit-backdrop-filter:blur(4px);opacity:0;pointer-events:none;width:100vw;height:100dvh;transition:opacity .35s var(--ease-ios);background:#00000080;display:block;position:fixed;inset:0}.nav-wrap.open .nav-overlay{opacity:1;pointer-events:auto}}.holo{z-index:120;flex-direction:column;justify-content:center;align-items:center;gap:22px;padding:16px;display:flex;position:fixed;inset:0}.holo-backdrop{-webkit-backdrop-filter:blur(18px)saturate(140%);animation:fade-in .45s var(--ease-ios) both;background:#0000009e;position:absolute;inset:0}.holo.out .holo-backdrop,.holo.out .holo-bar{animation:fade-out .4s var(--ease-ios) both}.holo-fly{perspective:1100px;position:relative}.holo-card{--w:min(300px, 76vw);width:var(--w);aspect-ratio:5/7;transform:rotateX(var(--rx)) rotateY(var(--ry));transform-style:preserve-3d;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.holo-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform var(--bouncy-d) var(--bouncy);position:relative}.holo-inner.flipped{transform:rotateY(180deg)}.holo-face{backface-visibility:hidden;box-shadow:0 0 0 1px #ffffff24, 0 40px 80px -30px #000000f2, 0 0 60px -20px rgba(47, 134, 238, calc(.25 + var(--hyp) * .35));border-radius:20px 12px 20px 14px;position:absolute;inset:0;overflow:hidden}.holo-front{background:linear-gradient(135deg,#8ab4ff,#c9a7ff 30%,#7ff0d6 55%,#ffd58a 80%,#8ab4ff);padding:9px}.holo-frame{height:100%;color:var(--text);background:linear-gradient(170deg,#1d1d24,#0d0d11 60%);border-radius:13px 8px 13px 9px;flex-direction:column;gap:9px;padding:12px 12px 10px;display:flex}.holo-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.holo-head strong{letter-spacing:-.01em;font-size:21px;font-weight:800}.holo-rarity{color:#1a1206;background:linear-gradient(90deg,#ffd58a,#ffb35c);border-radius:10px 4px 10px 5px;padding:2px 8px;font-size:10.5px;font-weight:700;rotate:3deg}.holo-art{background:radial-gradient(circle at 50% 30%,#3b2a6b,#11111a 70%);border-radius:10px 5px 10px 6px;flex:1;min-height:0;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff26}.holo-art img{object-fit:cover;width:100%;height:100%;transform:translate(calc((var(--px) - 50%) * -.06), calc((var(--py) - 50%) * -.06)) scale(1.08)}.holo-type{color:var(--muted);text-align:center;margin:0;font-size:11px;font-style:italic}.holo-moves{flex-direction:column;gap:7px;display:flex}.holo-moves div{flex-direction:column;gap:1px;display:flex}.holo-moves strong{align-items:center;gap:6px;font-size:12.5px;display:flex}.holo-moves span{color:var(--muted);font-size:10.5px;line-height:1.4}.holo-stats{text-align:center;color:var(--dim);border-top:1px solid #ffffff1a;grid-template-columns:repeat(3,1fr);gap:4px;padding-top:8px;font-size:9.5px;display:grid}.holo-stats b{color:var(--text);font-variant-numeric:tabular-nums;font-size:15px;display:block}.holo-foot{color:var(--dim);justify-content:space-between;font-size:9px;display:flex}.holo-back{color:#c8dcffcc;background:radial-gradient(circle at 50% 40%,#2f86ee73,#0000 60%),repeating-linear-gradient(45deg,#0f1730 0 10px,#0c1226 10px 20px);flex-direction:column;justify-content:center;align-items:center;gap:16px;font-size:12px;display:flex;transform:rotateY(180deg)}.holo-back img{filter:drop-shadow(0 16px 30px #1c71d899);width:42%}.holo-shine,.holo-glare{border-radius:inherit;pointer-events:none;position:absolute;inset:0}.holo-shine{background:repeating-linear-gradient(115deg,#ff5a5a00 0%,#6ec8ff8c 7%,#c878ff8c 14%,#ffdc788c 21%,#78ffc88c 28%,#ff5a5a00 35%) 0 0/260% 260%;background-position:var(--px) var(--py);mix-blend-mode:color-dodge;opacity:calc(.12 + var(--hyp) * .45)}.holo-glare{background:radial-gradient(circle at var(--px) var(--py), #ffffff80, #fff0 55%);mix-blend-mode:overlay;opacity:calc(.25 + var(--hyp) * .6)}.holo-bar{animation:fade-in .6s var(--ease-out) .5s both;align-items:center;gap:10px;display:flex;position:relative}.holo-hint{color:var(--muted);font-size:13px}.leave{z-index:100;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.leave-backdrop{-webkit-backdrop-filter:blur(6px)saturate(120%);opacity:0;background:#0000008c;transition:opacity .35s;position:absolute;inset:0}.leave.shown .leave-backdrop{opacity:1}.leave-sheet{border:1px solid var(--line);background:var(--sheet-bg);opacity:0;border-radius:22px;width:100%;max-width:400px;padding:20px 18px 14px;transition:transform .45s cubic-bezier(.32,.72,0,1),opacity .3s;position:relative;transform:translateY(12px)scale(.96);box-shadow:0 30px 80px -20px #000000e6}.leave.shown .leave-sheet{opacity:1;transform:none}.leave-handle{display:none}.leave-head{align-items:center;gap:14px;padding:2px 4px 16px;display:flex}.leave-icon{background:var(--surface-2);width:46px;height:46px;color:var(--text);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.leave-kicker{color:var(--muted);font-size:13px;display:block}.leave-host{font-size:18px;font-weight:600;line-height:1.3;display:block}.leave-url{color:var(--dim);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;display:block;overflow:hidden}.leave-actions{flex-direction:column;gap:2px;display:flex}.leave-row{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:14px;padding:12px 6px;font-size:16px;font-weight:600;transition:background .15s,transform .15s;display:flex}.leave-row svg{color:var(--muted)}@media (hover:hover){.leave-row:hover{background:color-mix(in srgb, var(--fg) 5%, transparent)}}.leave-row:active{background:color-mix(in srgb, var(--fg) 8%, transparent);transform:scale(.98)}.leave-row.primary svg{color:var(--text)}.leave-cancel{border:0;border-top:1px solid var(--line);width:100%;color:var(--dim);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:8px;margin-top:8px;padding:14px;font-size:16px;font-weight:600;display:flex}@media (hover:hover){.leave-cancel:hover{color:var(--text)}}@media (width<=640px){.leave{place-items:end stretch;padding:0}.leave-sheet{max-width:none;padding:10px 18px calc(10px + env(safe-area-inset-bottom));opacity:1;touch-action:none;-webkit-user-select:none;user-select:none;border-bottom:0;border-radius:24px 24px 0 0;transform:translateY(100%)}.leave.shown .leave-sheet{transform:translateY(0)}.leave-handle{background:color-mix(in srgb, var(--fg) 22%, transparent);border-radius:99px;width:40px;height:5px;margin:0 auto 16px;display:block}}.dl{isolation:isolate;border:1px solid var(--line);background:var(--surface);border-radius:20px 10px 18px 12px;flex-direction:column;gap:14px;padding:16px 18px;display:flex;position:relative;overflow:hidden}.dl-row{align-items:center;gap:14px;display:flex}.dl-avatar{flex-shrink:0;width:60px;height:60px;position:relative}.dl-avatar .avatar-sm{display:block}.dl-deco{pointer-events:none;width:120%;max-width:none;height:120%;position:absolute;top:-10%;left:-10%}.dl-dot{z-index:1;border:4px solid var(--surface);background:var(--tone);width:22px;height:22px;transition:background .5s var(--ease-ios);border-radius:50%;position:absolute;bottom:-2px;right:-2px}.dl-dot:after{content:"";transition:all .4s var(--ease-ios);position:absolute}.dl-dot.dnd:after{background:var(--surface);border-radius:2px;height:3px;inset:calc(50% - 1.5px) 3px}.dl-dot.idle:after{background:var(--surface);border-radius:50%;width:9px;height:9px;top:-2px;left:-2px}.dl-dot.offline:after{background:var(--surface);border-radius:50%;inset:3.5px}.dl-text{flex-direction:column;flex:1;min-width:0;display:flex}.dl-line{min-width:0;color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:13.5px;display:flex}.dl-sep{color:var(--dim)}.dl-emoji{width:16px;height:16px}.dl-custom{text-overflow:ellipsis;overflow:hidden}.dl-name{align-items:center;gap:8px;min-width:0;display:flex}.dl-name strong{white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:650;overflow:hidden}.dl-tag{background:color-mix(in srgb, var(--fg) 8%, transparent);border-radius:7px 4px 6px;flex-shrink:0;align-items:center;gap:4px;padding:1px 6px 1px 4px;font-size:12px;font-weight:600;line-height:1.5;display:inline-flex}.dl-tag img{width:14px;height:14px}.dl-now{background:color-mix(in srgb, var(--fg) 3.5%, transparent);animation:dl-in .6s var(--ease-out) both;border-radius:16px 8px 14px 10px;flex-direction:column;gap:10px;padding:12px 14px 14px;display:flex}@keyframes dl-in{0%{opacity:0;filter:blur(4px);transform:translateY(6px)}}.dl-kicker{color:var(--muted);align-items:center;gap:6px;font-size:13px;font-weight:600;display:inline-flex}.dl-media{align-items:center;gap:14px;display:flex}.dl-cover{object-fit:cover;border-radius:10px 5px 9px 6px;flex-shrink:0;width:64px;height:64px}.dl-cover-empty{background:var(--surface-2);color:var(--muted);place-items:center;font-size:22px;font-weight:700;display:grid}.dl-media-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.dl-media-text strong,.dl-media-text>span:not(.dl-track){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dl-media-text strong{font-size:15px;font-weight:650}.dl-media-text>span{color:var(--muted);font-size:13.5px}.dl-track{align-items:center;gap:10px;margin-top:6px;display:flex;color:var(--text)!important;font-size:12px!important}.dl-bar{background:color-mix(in srgb, var(--fg) 18%, transparent);border-radius:99px;flex:1;height:4px;overflow:hidden}.dl-bar i{background:var(--text);border-radius:99px;height:100%;transition:width 1s linear;display:block}.dl-elapsed{margin-top:4px;font-size:12px!important}.profile{flex-direction:column;gap:22px;display:flex}.profile-top{align-items:center;gap:28px;display:flex}.avatar{object-fit:cover;background:var(--surface-2);width:120px;height:120px;box-shadow:0 0 0 1px var(--line), 0 12px 30px -12px #000000e6;transition:rotate var(--bouncy-d) var(--bouncy), scale var(--bouncy-d) var(--bouncy);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border-radius:18px;flex-shrink:0;rotate:-3deg}.avatar.boop{animation:boop var(--bouncy-d) var(--bouncy)}@keyframes boop{40%{scale:.92}}@media (hover:hover){.avatar:hover{rotate:0deg;scale:1.04}}.profile-id{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;display:flex}.profile-name{letter-spacing:-.01em;align-items:center;gap:8px;margin:0;font-size:26px;font-weight:700;line-height:1.2;display:flex}.name-letters{display:inline-flex}.name-ch{animation:name-in var(--bouncy-d) var(--bouncy) both;animation-delay:calc(.15s + var(--i) * 55ms);display:inline-block}.name-ch.hop{animation:name-hop .7s var(--spring) both;animation-delay:calc(var(--i) * 40ms)}@keyframes name-in{0%{opacity:0;filter:blur(5px);transform:translateY(.45em)rotate(10deg)}}@keyframes name-hop{35%{transform:translateY(-.28em)rotate(-5deg)}65%{transform:translateY(.04em)}}.verified{color:#fff;fill:var(--blue)}.handle{font-size:14px}.status{text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);font-size:14.5px;font-weight:600}@media (hover:hover){a.status:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}}.facts{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:6px;font-size:13px;display:flex}.facts .sep{color:var(--dim)}.tabular{font-variant-numeric:tabular-nums}.clock-toggle{border:1px dashed var(--line-strong);width:20px;height:20px;color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;place-items:center;margin-left:2px;display:inline-grid}@media (hover:hover){.clock-toggle:hover{color:var(--text);border-style:solid}}.bio{color:var(--muted);margin:0;font-size:17px;line-height:1.75}.bio-light .w,.bio-light .w *{transition:color .7s var(--ease-out), filter .7s var(--ease-out);transition-delay:calc(var(--w) * 38ms)}.bio-light:not(.lit) .w{filter:blur(1.5px)}.bio-light:not(.lit) .w,.bio-light:not(.lit) .w *{color:var(--dim)}@media (prefers-reduced-motion:reduce){.bio-light .w{filter:none}}.cards{grid-template-columns:1fr 1fr;gap:10px;display:grid}.mini-card{border:1px solid var(--line);background:var(--surface);min-width:0;transition:transform var(--spring-d) var(--spring), background .3s var(--ease-ios), border-color .3s var(--ease-ios);border-radius:16px;align-items:center;gap:12px;padding:11px 14px 11px 11px;display:flex}@media (hover:hover){.mini-card:hover{background:var(--surface-raise);border-color:var(--line-strong);transform:translateY(-2px)}}.mini-card:active{transform:scale(.98)}.mini-text{flex-direction:column;flex:1;min-width:0;display:flex}.mini-text strong,.mini-text>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mini-text strong{font-size:15px;font-weight:600;line-height:1.35}.mini-text>span{color:var(--muted);align-items:center;gap:4px;font-size:13px;display:flex}.mini-dot{background:var(--green);border-radius:50%;width:7px;height:7px}.mini-faces{padding-left:7px;display:flex}.face{box-shadow:0 0 0 2px var(--surface);transition:margin var(--spring-d) var(--spring);transition-delay:calc(var(--i) * 20ms);border-radius:50%;margin-left:-7px}.face .avatar-sm{display:block}@media (hover:hover){.mini-card:hover .face{margin-left:-3px}}.mini-arrow{color:var(--dim);transition:transform var(--spring-d) var(--spring), color .3s var(--ease-ios);flex-shrink:0}@media (hover:hover){.mini-card:hover .mini-arrow{color:var(--text);transform:translate(2px,-2px)}}@media (width<=400px){.mini-faces{display:none}}.hero-links{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.hero-links .or{color:var(--dim);font-size:12px}.hero-links .bar{background:var(--line-strong);width:1px;height:18px;margin:0 2px}.hero-links .cv-btn{margin-left:auto}.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.marquee-track{gap:34px;width:max-content;animation:38s linear infinite slide;display:flex}.marquee[data-reverse=true] .marquee-track{animation-direction:reverse}@media (hover:hover){.marquee:hover .marquee-track{animation-play-state:paused}}@keyframes slide{to{transform:translate(calc(-50% - 17px))}}.marquee-group{flex-direction:column;display:flex}.marquee-group .marquee{padding:14px 0}.skill{color:var(--text-2);white-space:nowrap;will-change:transform;align-items:center;gap:9px;font-size:15px;font-weight:500;display:inline-flex}.contrib{flex-direction:column;gap:12px;padding:16px 18px;display:flex}.contrib-scroll{scrollbar-width:none;position:relative;overflow-x:auto}.contrib-scroll::-webkit-scrollbar{display:none}.contrib-scroll svg{margin:0 auto;display:block}.contrib-month{fill:var(--muted);font-size:11.5px;font-family:var(--font)}.contrib-cell{transform-box:fill-box;transform-origin:50%;animation:cell-in .55s var(--bouncy) both;animation-delay:var(--d);transition:opacity .15s}.reveal:not(.in) .contrib-cell{animation-play-state:paused}@keyframes cell-in{0%{opacity:0;transform:scale(.2)}}@media (hover:hover){.contrib svg:hover .contrib-cell{opacity:.55}.contrib svg:hover .contrib-cell:hover{opacity:1}}.contrib-tip{z-index:60;border:1px solid var(--line);background:var(--tip-bg);-webkit-backdrop-filter:blur(12px);white-space:nowrap;pointer-events:none;box-shadow:0 10px 24px -10px var(--shadow);animation:tip-in .25s var(--ease-out) both;border-radius:12px 6px 10px 7px;flex-direction:column;padding:7px 11px;font-size:12px;display:flex;position:fixed;transform:translate(-50%)}@keyframes tip-in{0%{opacity:0;translate:0 4px}}.contrib-tip.below{animation-name:tip-in-below}@keyframes tip-in-below{0%{opacity:0;translate:0 -4px}}.contrib-tip span{color:var(--muted)}.contrib-foot{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:13px;display:flex}.contrib-foot strong{color:var(--text);font-weight:600}.contrib-legend{align-items:center;gap:4px;display:inline-flex}.contrib-legend i{border-radius:3px;width:11px;height:11px}.vouch-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.vouch-marquee .marquee-track{gap:14px}.marquee-track.slow{animation-duration:60s}.vouch-slot{width:290px}.last-comment{flex-direction:column;gap:10px;display:flex}.caps{letter-spacing:.08em;text-transform:uppercase;font-size:11.5px}.one-line{white-space:nowrap;text-overflow:ellipsis;margin:2px 0 0;font-size:14px;overflow:hidden}.blog-preview{flex-direction:column;gap:18px;display:flex}.post-link{border-radius:12px;flex-direction:column;gap:4px;margin:0 -16px;padding:14px 16px;transition:background .15s;display:flex}@media (hover:hover){.post-link:hover{background:color-mix(in srgb, var(--fg) 4%, transparent)}}.post-link strong{font-size:18px;font-weight:600}.contact{text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.contact-title{margin:0;font-size:24px;font-weight:700}@media (width<=560px){.profile-top{gap:18px}.avatar{border-radius:16px;width:92px;height:92px}.profile-name{font-size:22px}.bio{font-size:16px}.cards{grid-template-columns:1fr}.hero-links .cv-btn{margin-left:0}.marquee-track{gap:24px}.skill{font-size:14px}.facts .sep{display:none}.facts{flex-direction:column;align-items:flex-start;gap:3px}}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--fg:#fff;--bg:#09090b;--surface:#0f0f12;--surface-2:#16161a;--surface-raise:#141418;--sheet-bg:#1b1b20;--nav-bg:#121215;--btn-hover:#1e1e23;--skel-a:#17171b;--skel-b:#222228;--tip-bg:var(--tip-bg);--line:color-mix(in srgb, var(--fg) 13%, transparent);--line-strong:color-mix(in srgb, var(--fg) 22%, transparent);--text:#fafafa;--text-2:#e4e4e7;--text-3:#d4d4d8;--muted:#a1a1aa;--dim:#8a8a94;--on-inverse:#09090b;--brand-dark:#f4f4f5;--success-text:#bbf7d0;--shadow:#000;--aurora:1;--lvl-0:#18181b;--lvl-1:#3f3f46;--lvl-2:#71717a;--lvl-3:#b4b4bb;--lvl-4:#fafafa;--accent:#5865f2;--green:#22c55e;--amber:#f59e0b;--red:#ef4444;--blue:#3b82f6;--chart-1:#2dd4bf;--chart-2:#f472b6;--radius:14px;--radius-sm:9px;--btn-r:15px 6px 6px 15px;--page:664px;--page-wide:1180px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-ios:cubic-bezier(.32, .72, 0, 1);--spring:linear(0, .0253, .0884, .1742, .271, .3707, .4676, .558, .6398, .7119, .774, .8266, .8702, .9056, .934, .9562, .9732, .9859, .9951, 1.0015, 1.0058, 1.0084, 1.0097, 1.0102, 1.01, 1.0094, 1.0086, 1.0076, 1.0066, 1.0056, 1.0046, 1.0038, 1.003, 1.0024, 1.0018, 1.0014, 1);--spring-d:.69s;--bouncy:linear(0, .0354, .1253, .2481, .386, .5254, .6567, .7733, .8716, .9502, 1.0097, 1.0514, 1.0777, 1.0912, 1.0948, 1.0909, 1.0821, 1.0703, 1.0572, 1.044, 1.0316, 1.0207, 1.0115, 1.0042, .9987, .9949, .9925, .9913, .991, .9914, .9923, .9934, .9947, .9959, .9971, .9981, 1);--bouncy-d:.81s;--snappy:linear(0, .0235, .0819, .1606, .2493, .3407, .4298, .5135, .5899, .6583, .7183, .7701, .8144, .8516, .8827, .9083, .9291, .946, .9594, .9701, .9784, .9848, .9897, .9934, .9961, .9981, .9994, 1.0004, 1.001, 1.0013, 1.0015, 1.0015, 1.0015, 1.0014, 1.0013, 1.0011, 1);--snappy-d:.47s;--font:"Figtree Variable", system-ui, sans-serif;--mono:"Geist Mono Variable", ui-monospace, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--fg:#09090b;--bg:#fafafb;--surface:#fff;--surface-2:#f2f2f5;--surface-raise:#fff;--sheet-bg:#fff;--nav-bg:#fff;--btn-hover:#e9e9ee;--skel-a:#ececf0;--skel-b:#f6f6f8;--tip-bg:#fffffff0;--line:color-mix(in srgb, var(--fg) 12%, transparent);--line-strong:color-mix(in srgb, var(--fg) 24%, transparent);--text:#0b0b0e;--text-2:#27272a;--text-3:#3f3f46;--muted:#52525b;--dim:#686874;--on-inverse:#fafafa;--brand-dark:#18181b;--success-text:#166534;--shadow:#0f172a47;--aurora:.55;--chart-1:#0d9488;--chart-2:#db2777;--lvl-0:#ebebef;--lvl-1:#c7c7cf;--lvl-2:#9b9ba6;--lvl-3:#5f5f6b;--lvl-4:#18181b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}@media (pointer:fine){html{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--text) 32%, transparent) transparent}html::-webkit-scrollbar{width:10px;height:10px}html::-webkit-scrollbar-track{background:0 0}html::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text) 24%, transparent);background-clip:content-box;border:3px solid #0000;border-radius:999px;min-height:44px}html::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb, var(--text) 40%, transparent)}html::-webkit-scrollbar-thumb:active{background-color:color-mix(in srgb, var(--text) 52%, transparent)}}body{color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background:0 0;margin:0;font-size:16px;line-height:1.6;position:relative}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit}::selection{background:color-mix(in srgb, var(--fg) 90%, transparent);color:var(--shadow)}:focus-visible{outline:2px solid var(--text);outline-offset:2px;border-radius:6px}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.dim{color:var(--dim)}.page{width:100%;max-width:calc(var(--page) + 32px);margin:0 auto;padding:104px 16px 0}.page.wide{max-width:calc(var(--page-wide) + 32px)}.stack{flex-direction:column;gap:56px;display:flex}.section{flex-direction:column;gap:22px;display:flex}.row{align-items:center;gap:10px;display:flex}.spread{justify-content:space-between;align-items:center;gap:12px;display:flex}.wrap{flex-wrap:wrap}@property --k{syntax:"<length>";inherits:false;initial-value:9px}@property --fill{syntax:"<color>";inherits:false;initial-value:#0000}.bracket{--c:color-mix(in srgb, var(--fg) 75%, transparent);--fill:color-mix(in srgb, var(--fg) 4%, transparent);color:var(--text);background:linear-gradient(var(--c), var(--c)) top left / var(--k) 1.5px, linear-gradient(var(--c), var(--c)) top left / 1.5px var(--k), linear-gradient(var(--c), var(--c)) top right / var(--k) 1.5px, linear-gradient(var(--c), var(--c)) top right / 1.5px var(--k), linear-gradient(var(--c), var(--c)) bottom left / var(--k) 1.5px, linear-gradient(var(--c), var(--c)) bottom left / 1.5px var(--k), linear-gradient(var(--c), var(--c)) bottom right / var(--k) 1.5px, linear-gradient(var(--c), var(--c)) bottom right / 1.5px var(--k), var(--fill);transform-origin:0;transition:rotate var(--bouncy-d) var(--bouncy), translate var(--bouncy-d) var(--bouncy);background-repeat:no-repeat;align-self:flex-start;margin:0;padding:3px 12px;font-size:17px;font-weight:500;rotate:-2deg}.stack>.section:nth-child(2n)>.bracket{translate:7px;rotate:1.6deg}.stack>.section:nth-child(3n)>.bracket{translate:3px 2px;rotate:-1deg}.stack>.section:nth-child(5n)>.bracket{translate:10px;rotate:2.4deg}.frame{border:1px dashed var(--line);border-radius:var(--radius);background:color-mix(in srgb, var(--surface) 60%, transparent);padding:18px}.frame.pad-lg{padding:26px}.divider{background:linear-gradient(90deg, transparent, var(--line-strong), transparent);border:0;height:1px;margin:0}.btn{border:1px solid var(--line);border-radius:var(--r,var(--btn-r));background:var(--surface-2);height:34px;color:var(--text);white-space:nowrap;cursor:pointer;rotate:var(--tilt,-1deg);translate:0 var(--ty,0);transition:background .2s var(--ease-ios), border-color .2s var(--ease-ios), color .2s var(--ease-ios), transform var(--snappy-d) var(--snappy), rotate var(--bouncy-d) var(--bouncy), translate var(--bouncy-d) var(--bouncy);align-items:center;gap:8px;padding:0 12px;font-size:14px;font-weight:500;display:inline-flex}@media (hover:hover){.btn:hover,.btn:focus-visible{translate:0;rotate:0deg}.btn:hover{background:var(--btn-hover);border-color:var(--line-strong)}}.btn{transform:translate(var(--mx,0px), var(--my,0px))}.btn:active{transform:translate(var(--mx,0px), var(--my,0px)) scale(.97)}.btn.magnet,.nav-pill.magnet{transition-duration:.2s, .2s, .2s, .18s, var(--bouncy-d), var(--bouncy-d);transition-timing-function:var(--ease-ios), var(--ease-ios), var(--ease-ios), var(--ease-out), var(--bouncy), var(--bouncy)}.btn.sm{height:30px;padding:0 10px;font-size:13px}.btn.icon{justify-content:center;width:34px;padding:0}.btn.primary{background:var(--text);color:var(--on-inverse);border-color:var(--text)}@media (hover:hover){.btn.primary:hover{background:var(--text-2)}}.btn.accent{background:var(--accent);color:#fff;border-color:#0000}@media (hover:hover){.btn.accent:hover{background:#6875f5}}.btn.ghost{background:0 0}@media (hover:hover){.btn.danger:hover{border-color:var(--red);color:var(--red)}}.btn[disabled]{opacity:.5;pointer-events:none}.btn .arrow{transition:transform var(--spring-d) var(--spring)}@media (hover:hover){.btn:hover .arrow{transform:translate(3px)}}.chip{border:1px solid var(--line);background:var(--surface-2);height:24px;color:var(--text-2);border-radius:7px;align-items:center;padding:0 9px;font-size:12.5px;display:inline-flex}.pcard-tech{gap:5px}.pcard-tech-icon{flex:none;display:inline-flex}.icon-fallback{background:var(--line-strong);font-weight:700;font-family:var(--mono);border-radius:4px;place-items:center;display:inline-grid}.field{color:var(--muted);flex-direction:column;gap:6px;font-size:13.5px;display:flex}.input{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2);resize:vertical;width:100%;padding:10px 12px;font-size:15px;transition:border-color .15s}.input:focus{border-color:var(--line-strong);outline:none}.note{color:var(--muted);font-size:14px}.note.ok{color:var(--green)}.note.err{color:#f87171}.skeleton{background:linear-gradient(90deg, var(--skel-a) 0%, var(--skel-b) 50%, var(--skel-a) 100%);background-size:200% 100%;border-radius:8px;animation:1.4s ease-in-out infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.reveal{opacity:0;transition:opacity .2s var(--ease-out), transform .25s var(--ease-out);transition-delay:var(--delay,0s);transform:translateY(6px)}.reveal.in{opacity:1;filter:none;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;filter:none;transform:none}*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;transition-delay:0s!important;animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}@media (width<=560px){.page{padding-top:88px}.stack{gap:44px}.frame.pad-lg{padding:18px}}.rt-strong{color:var(--text);font-weight:500}.rt-link{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:3px;font-weight:500;transition:text-decoration-color .15s}@media (hover:hover){.rt-link:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}}.rt-tech{color:var(--text);white-space:nowrap;vertical-align:-2px;align-items:center;gap:5px;margin:0 1px;font-weight:500;display:inline-flex}.footer{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:72px 0 40px;display:flex}.footer-quote{color:var(--muted);margin:0;font-size:17px;font-style:italic}.footer-made{align-items:center;gap:6px;margin:8px 0 14px;font-weight:500;display:inline-flex}.footer-made .heart{color:var(--red);animation:2.4s ease-in-out infinite beat}@keyframes beat{0%,40%,to{transform:scale(1)}20%{transform:scale(1.18)}}.footer-meta{width:100%;color:var(--dim);justify-content:space-between;align-items:center;gap:12px;padding:0 4px;font-size:12.5px;display:flex}.pcard{border:1px solid var(--line);background:var(--surface);transition:transform var(--spring-d) var(--spring), border-color .3s var(--ease-ios);border-radius:22px;position:relative;overflow:hidden}@media (hover:hover){.pcard:hover{border-color:var(--line-strong);transform:translateY(-2px)}}.pcard-banner{isolation:isolate;pointer-events:none;height:128px;position:relative;overflow:hidden}.pcard-banner:before{content:"";z-index:0;background:var(--img) center / cover;filter:blur(36px)saturate(1.8)brightness(.95);transition:transform 1.4s var(--ease-out);position:absolute;inset:-60px}.pcard-banner:after{content:"";z-index:1;background:linear-gradient(to bottom, transparent 30%, var(--surface));position:absolute;inset:0}.pcard-banner-logo{z-index:2;object-fit:contain;object-position:left center;filter:drop-shadow(0 8px 18px #00000080);width:min(220px,58%);max-height:72px;position:absolute;bottom:25px;left:20px}@media (hover:hover){.pcard:hover .pcard-banner:before{transform:scale(1.15)translateY(-10px)}}.pcard-body{z-index:1;flex-direction:column;gap:12px;margin-top:-40px;padding:0 20px 20px;display:flex;position:relative}.pcard-body--below-banner{margin-top:0}.pcard-head{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.pcard-head>img,.pcard-head>svg{filter:drop-shadow(0 10px 18px #0000008c);transition:rotate var(--bouncy-d) var(--bouncy), scale var(--bouncy-d) var(--bouncy);rotate:-6deg}@media (hover:hover){.pcard:hover .pcard-head>img,.pcard:hover .pcard-head>svg{rotate:0deg;scale:1.05}}.pcard-actions{gap:6px;display:flex}.pcard-name{letter-spacing:-.015em;margin:4px 0 0;font-size:22px;font-weight:700;line-height:1.2}.pcard-desc{color:var(--muted);margin:0;font-size:15px;line-height:1.65}.pcard-shots{grid-template-columns:repeat(3,1fr);gap:8px;margin:4px 0 2px;display:grid}.pcard-thumb{border:1px solid var(--line);background:var(--surface-2);cursor:zoom-in;transition:transform var(--bouncy-d) var(--bouncy), border-color .3s var(--ease-ios);border-radius:10px;padding:0;overflow:hidden}.pcard-thumb img{aspect-ratio:16/10;object-fit:cover;width:100%}@media (hover:hover){.pcard-thumb:hover{border-color:var(--line-strong);transform:translateY(-3px)scale(1.03)}}.lightbox{z-index:110;-webkit-backdrop-filter:blur(14px)saturate(130%);cursor:zoom-out;animation:fade-in .35s var(--ease-ios) both;background:#000000b3;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.lightbox img{max-width:min(1200px,100%);max-height:86vh;box-shadow:0 40px 100px -30px var(--shadow);transform-origin:50%;border-radius:14px}.lightbox.out{animation:fade-out .42s var(--ease-ios) both}.lightbox.out .lightbox-close{opacity:0}.lightbox-close{border-radius:50%;position:absolute;top:18px;right:18px}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}@media (width<=560px){.pcard-body{padding:0 16px 16px}.pcard-head>img,.pcard-head>svg{width:54px;height:54px}}.vouch{flex-direction:column;gap:12px;height:100%;padding:14px 16px;display:flex}.vouch-name{font-size:15px;font-weight:600;line-height:1.3;display:block}.vouch-date{font-size:12px}.vouch-body{color:var(--text-3);white-space:pre-line;margin:0;font-size:14.5px}.vouch-body.clamp{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.avatar-sm{object-fit:cover;background:var(--surface-2);border-radius:50%;flex-shrink:0}.avatar-sm.initials{color:var(--muted);border:1px solid var(--line);place-items:center;font-weight:700;display:inline-grid}.pager{justify-content:center;gap:8px;display:flex}.pager .btn.on{border-color:var(--text)}@media (width<=640px){.project.row{grid-template-columns:1fr}}.project-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:18px;display:grid}.project-grid[data-single=true]{grid-template-columns:1fr}.uses-page{gap:34px}.uses-head{max-width:540px}.uses-head p{color:var(--muted);margin:12px 0 0}.uses-groups{gap:24px;display:grid}.uses-group{border-top:1px solid var(--line);grid-template-columns:132px 1fr;gap:20px;padding-top:20px;display:grid}.uses-group h2{color:var(--dim);text-transform:uppercase;letter-spacing:.08em;margin:2px 0 0;font-size:.8125rem;font-weight:600}.uses-group ul{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.uses-item{border:1px solid var(--line);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--surface) 84%, transparent);min-height:38px;color:var(--text-2);align-items:center;gap:8px;padding:7px 11px;font-size:.875rem;font-weight:550;display:inline-flex}.uses-item small{color:var(--dim);font-size:.75rem;font-weight:450}@media (width<=540px){.uses-group{grid-template-columns:1fr;gap:10px}}.post-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);transition:border-color .2s var(--ease-out), transform .2s var(--ease-out);flex-direction:column;gap:9px;padding:20px 22px;display:flex}@media (hover:hover){.post-row:hover{border-color:var(--line-strong);transform:translateY(-2px)}}.post-row h2{letter-spacing:-.02em;margin:0;font-size:1.1875rem;font-weight:650;line-height:1.3}.post-list{gap:12px;display:grid}.post-meta{color:var(--dim);font-size:.75rem;font-family:var(--mono);flex-wrap:wrap;align-items:center;gap:8px;margin-top:7px;display:flex}.post-draft{border:1px dashed var(--line-strong);border-radius:5px;padding:1px 6px}.post-summary{color:var(--muted);font-size:.9375rem;line-height:1.55}.footer-count-error{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.footer-meta{flex-wrap:wrap;gap:12px}.article-toc{border-left:1px solid var(--line-strong);margin:0 0 32px;padding:4px 0 4px 18px}.article-toc>strong{font-size:.9375rem}.article-toc ul{margin:12px 0 0;padding:0;list-style:none}.article-toc a{align-items:center;min-height:36px;display:inline-flex}.article-toc .nested{padding-inline-start:16px}.prose h2[id],.prose h3[id]{scroll-margin-top:110px}@media (pointer:coarse){.btn,.btn.sm,.btn.icon{min-width:44px;min-height:44px}.article-toc a{min-height:44px}}.prose{--syntax-keyword:#d9b8ff;--syntax-string:#a3dfa5;--syntax-number:#f4c780;--syntax-title:#a8d5ff;--article-link:#70b5ff;--diff-green:#a3dfa5;--diff-red:#ffb4b4;font-family:var(--font);color:var(--text-2);overflow-wrap:anywhere;font-size:1rem;line-height:1.7}:root[data-theme=light] .prose{--syntax-keyword:#7634a7;--syntax-string:#24652c;--syntax-number:#805000;--syntax-title:#175f9d;--article-link:#005bb5;--diff-green:#21612b;--diff-red:#a3212b}.article-page{max-width:calc(var(--page) + 32px)}.article-back{align-self:flex-start;min-height:44px}.article-header{margin-bottom:24px;padding:12px 0 8px}.prose .article-meta{color:var(--muted);font-size:.8125rem;font-family:var(--mono);margin:0 0 14px;line-height:1.5}.prose h1{letter-spacing:-.035em;color:var(--text);text-wrap:balance;margin:0 0 24px;font-size:clamp(1.625rem,4vw,2rem);font-weight:700;line-height:1.12}.prose .article-header h1{margin-bottom:0}.prose h2,.prose h3,.prose h4{color:var(--text);letter-spacing:-.02em;text-wrap:balance;margin:2em 0 .65em;font-weight:650;line-height:1.3}.prose h2{font-size:1.375rem}.prose h3{font-size:1.25rem}.prose h4{font-size:1.0625rem}.prose p{margin:0 0 1.25em}.prose ul,.prose ol{padding-inline-start:1.5em}.prose li+li{margin-top:.4em}.prose hr{border:0;border-top:1px solid var(--line);margin:36px 0}.prose :focus-visible{outline:3px solid var(--article-link);outline-offset:4px}.prose a{color:var(--article-link);text-underline-offset:3px;text-decoration:underline}.prose code{background:var(--surface-2);font-family:ui-monospace, "SFMono-Regular", var(--mono), monospace;border-radius:6px;padding:2px 6px;font-size:.88em}.prose pre{border:1px solid var(--line);border-radius:0 0 var(--radius-sm) var(--radius-sm);background:var(--surface);tab-size:2;overflow-wrap:normal;margin:0;padding:18px 20px;line-height:1.65;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose blockquote{border-left:2px solid var(--line-strong);color:var(--muted);margin:20px 0;padding-left:16px}.prose .prose-code{grid-template-columns:minmax(0,1fr) auto;margin:24px 0;display:grid;position:relative}.prose .prose-code>pre{grid-column:1/-1;min-width:0}.prose .prose-code-label{grid-area:1/1/2/3;padding-right:175px}.prose-copy{z-index:1;grid-area:1/2/2/3;align-self:center;margin:6px 10px}.copy-control{flex-direction:column;align-items:center;gap:5px;display:inline-flex}.copy-error{max-width:22ch;color:var(--muted);font-family:var(--font);font-size:.75rem;line-height:1.4}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.prose .prose-code-label{border:1px solid var(--line);border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--surface-2);color:var(--muted);font-family:var(--mono);border-bottom:0;padding:12px 175px 12px 16px;font-size:.8125rem;display:block}.prose .hljs{color:var(--text-2);display:block}.prose .hljs-keyword,.prose .hljs-selector-tag,.prose .hljs-built_in,.prose .hljs-type{color:var(--syntax-keyword)}.prose .hljs-string,.prose .hljs-attr,.prose .hljs-template-variable{color:var(--syntax-string)}.prose .hljs-number,.prose .hljs-literal,.prose .hljs-symbol{color:var(--syntax-number)}.prose .hljs-title,.prose .hljs-title.function_,.prose .hljs-function .hljs-title{color:var(--syntax-title)}.prose .hljs-comment{color:var(--muted)}.prose .diff-add,.prose .diff-remove,.prose .diff-hunk,.prose .diff-context{margin:0 -8px;padding:0 8px;display:block}.prose .diff-add{color:var(--diff-green);background:color-mix(in srgb, var(--green) 16%, transparent)}.prose .diff-remove{color:var(--diff-red);background:color-mix(in srgb, var(--red) 16%, transparent)}.prose .diff-hunk{color:var(--article-link);background:color-mix(in srgb, var(--blue) 16%, transparent)}.prose table{border:1px solid var(--line);border-radius:var(--radius-sm);border-spacing:0;width:max-content;max-width:100%;margin:24px 0;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--line);text-align:left;padding:10px 14px}.prose th{background:var(--surface-2);color:var(--text);font-weight:650}.prose tr:last-child td{border-bottom:0}.prose input[type=checkbox]{accent-color:var(--accent);margin-right:8px}.prose .prose-callout{border-left:2px solid var(--line-strong);margin:24px 0;padding:4px 0 4px 16px}.prose .prose-callout>strong{color:var(--text);margin-bottom:4px;font-size:.875rem;font-weight:650;display:block}.prose .prose-callout-icon{display:none}.prose .prose-callout>:last-child{margin-bottom:0}.prose .prose-callout[data-kind=warning],.prose .prose-callout[data-kind=caution]{border-left-color:var(--amber)}.prose .prose-callout[data-kind=warning]>strong,.prose .prose-callout[data-kind=caution]>strong{color:#fde68a}.prose .prose-callout[data-kind=important]{border-left-color:#c4b5fd}:root[data-theme=light] .prose .prose-callout>strong{color:var(--text)}:root[data-theme=light] .prose .prose-callout[data-kind=warning]>strong,:root[data-theme=light] .prose .prose-callout[data-kind=caution]>strong{color:#92400e}:root[data-theme=light] .prose .prose-callout[data-kind=important]>strong{color:#6d28d9}.prose .prose-figure{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin:24px 0;overflow:hidden}.prose img{border-radius:var(--radius);width:100%;display:block}.prose .prose-figure img,.prose .prose-media img{border-radius:0}.prose figcaption{color:var(--muted);padding:10px 14px;font-size:.8125rem;line-height:1.5}.prose .prose-media{grid-template-columns:1fr;align-items:center;gap:20px;margin:28px 0;display:grid}.prose .prose-media>*{min-width:0}.prose .prose-media.is-left,.prose .prose-media.is-right{grid-template-columns:minmax(0,1fr) minmax(220px,.8fr)}.prose .prose-media.is-left .prose-figure{order:2}.prose .prose-media.is-left .prose-media-copy{order:1}.prose .prose-media .prose-figure{margin:0}.prose .prose-media-copy>:first-child{margin-top:0}.prose .prose-media-copy>:last-child{margin-bottom:0}@media (width<=560px){.prose .prose-media,.prose .prose-media.is-left,.prose .prose-media.is-right{grid-template-columns:1fr;gap:14px}.prose .prose-media.is-left .prose-figure,.prose .prose-media.is-left .prose-media-copy{order:initial}}.form{flex-direction:column;gap:14px;display:flex}.comments{flex-direction:column;gap:18px;display:flex}.comment{gap:12px;display:flex}.comment-body{color:var(--text-3);white-space:pre-line;overflow-wrap:anywhere;margin:2px 0 0;font-size:14.5px}.grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=560px){.grid-2{grid-template-columns:1fr}}.delta{font-family:var(--mono);border-radius:99px;align-items:center;gap:2px;padding:2px 7px;font-size:12.5px;display:inline-flex}.delta.up{color:var(--green);background:#22c55e1a}.delta.down{color:#f87171;background:#ef44441a}.chart-card{flex-direction:column;gap:14px;padding:18px;display:flex}.legend{color:var(--muted);gap:16px;font-size:12.5px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i,.chart-tip i{border-radius:50%;width:8px;height:8px}.tabs{--seg-r:7px;background:color-mix(in srgb, var(--fg) 5%, transparent);border-radius:10px;padding:3px;display:flex}.tabs button{font-family:var(--mono);color:var(--dim);cursor:pointer;transition:color .3s var(--ease-ios);background:0 0;border:0;border-radius:7px;padding:4px 11px;font-size:12.5px}.tabs button.on{color:var(--text)}.chart{touch-action:pan-y;width:100%;position:relative}.chart svg{display:block;overflow:visible}.chart .grid-line{stroke:color-mix(in srgb, var(--fg) 6%, transparent);stroke-dasharray:3 5;stroke-linecap:round}.chart .axis{font-family:var(--mono);fill:var(--dim);font-size:11px}.chart .cursor-line{stroke:color-mix(in srgb, var(--fg) 25%, transparent);stroke-width:1px;stroke-linecap:round}.chart path{transition:d var(--spring-d) var(--spring)}.chart-tip{border:1px solid var(--line);background:var(--tip-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;min-width:150px;box-shadow:0 14px 30px -14px var(--shadow);border-radius:12px;flex-direction:column;gap:4px;padding:10px 12px;font-size:13px;display:flex;position:absolute;transform:translate(-50%)}.chart-tip>span:first-child{margin-bottom:2px;font-size:11.5px}.table{flex-direction:column;padding:6px 14px;display:flex}.table-row{border-bottom:1px dashed var(--line);padding:10px 0;font-size:14px}.table-row:last-child{border-bottom:0}.grow{flex:1;min-width:0}.tag{background:color-mix(in srgb, var(--fg) 6%, transparent);border-radius:99px;padding:2px 8px;font-size:11.5px}.tag.actif{color:var(--green)}.created{overflow-wrap:anywhere;background:#22c55e14;border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:12px;font-size:13px;display:flex}.corner{position:absolute;top:10px;right:10px}.fog{z-index:40;pointer-events:none;height:140px;transition:opacity .5s var(--ease-out);view-transition-name:fog;position:fixed;inset:auto 0 0}.fog.hidden{opacity:0}.fog i{position:absolute;inset:0}.fog i:first-child{-webkit-backdrop-filter:blur(2px);-webkit-mask-image:linear-gradient(#0000 0%,#000 70% 100%);mask-image:linear-gradient(#0000 0%,#000 70% 100%)}.fog i:nth-child(2){-webkit-backdrop-filter:blur(6px);-webkit-mask-image:linear-gradient(#0000 35%,#000 85% 100%);mask-image:linear-gradient(#0000 35%,#000 85% 100%)}.fog i:nth-child(3){background:linear-gradient(to top, var(--bg) 0%, color-mix(in srgb, var(--bg) 70%, transparent) 30%, transparent 100%)}::view-transition-old(root){animation:page-out .28s var(--ease-ios) both}::view-transition-new(root){animation:page-in .55s var(--ease-out) both}@keyframes page-out{to{opacity:0;filter:blur(6px);transform:translateY(-10px)scale(.985)}}@keyframes page-in{0%{opacity:0;filter:blur(10px);transform:translateY(18px)scale(.985)}}::view-transition-group(nav){animation:none}::view-transition-group(fog){animation:none}.roll{font-variant-numeric:tabular-nums;white-space:pre;display:inline-flex}.rc{display:inline-grid}.rc>span{grid-area:1/1}.rc-in{animation:rc-in var(--snappy-d) var(--snappy) both}.rc-out{animation:rc-out .28s var(--ease-ios) both}@keyframes rc-in{0%{opacity:0;transform:translateY(calc(60% * var(--d))) scale(.9);filter:blur(3px)}}@keyframes rc-out{to{opacity:0;transform:translateY(calc(-60% * var(--d))) scale(.9);filter:blur(3px)}}.swap{align-items:center;gap:inherit;display:inline-flex}.swap-in{animation:swap-in var(--bouncy-d) var(--bouncy) both}@keyframes swap-in{0%{opacity:0;filter:blur(4px);transform:scale(.6)}}.seg{isolation:isolate;position:relative}.seg:before{content:"";z-index:-1;width:var(--w,0);height:var(--h,0);border-radius:var(--seg-r,8px);background:var(--seg-bg,color-mix(in srgb, var(--fg) 12%, transparent));opacity:var(--o,0);transform:translate(var(--x,0), var(--y,0));position:absolute;top:0;left:0}.seg[data-ready]:before{transition:transform var(--spring-d) var(--spring), width var(--spring-d) var(--spring), height var(--spring-d) var(--spring), opacity .2s var(--ease-ios)}html[data-vt=lang]::view-transition-old(*){animation:lang-out .22s var(--ease-ios) both}html[data-vt=lang]::view-transition-new(*){animation:lang-in .5s var(--ease-out) both}html[data-vt=lang]::view-transition-group(*){animation-duration:var(--spring-d);animation-timing-function:var(--spring)}@keyframes lang-out{to{opacity:0;filter:blur(6px)}}@keyframes lang-in{0%{opacity:0;filter:blur(6px)}}::view-transition-old(lang-toggle){display:none}::view-transition-new(lang-toggle){animation:none}.bracket{white-space:nowrap;width:fit-content}.bracket .ch{display:inline-block}.fx-draw:not(.on){--k:0px;--fill:color-mix(in srgb, var(--fg) 0%, transparent);color:#0000}.fx-draw.on{transition:--k var(--bouncy-d) var(--bouncy), --fill .6s var(--ease-ios), color .5s var(--ease-out) .2s, rotate var(--bouncy-d) var(--bouncy), translate var(--bouncy-d) var(--bouncy)}.fx-decrypt .ch{position:relative}.fx-decrypt .real{transition:opacity .45s var(--ease-out), filter .45s var(--ease-out)}.fx-decrypt .real.off{opacity:0;filter:blur(5px)}.fx-decrypt .ghost{text-align:center;color:color-mix(in srgb, var(--text) 55%, transparent);pointer-events:none;position:absolute;inset:0}.fx-type .untyped{opacity:0}.fx-type .caret{vertical-align:-.15em;background:var(--text);border-radius:1px;width:2px;height:1.05em;margin-left:2px;margin-right:-2px;animation:.9s step-end infinite caret;display:inline-block}@keyframes caret{50%{opacity:0}}.fx-decrypt:not(.on) .ch,.fx-drop:not(.on) .ch,.fx-blur:not(.on) .ch,.fx-slide:not(.on) .ch{opacity:0}.fx-drop.on .ch{animation:ch-drop var(--bouncy-d) var(--bouncy) both;animation-delay:calc(var(--i) * 35ms)}@keyframes ch-drop{0%{opacity:0;transform:translateY(-.9em)rotate(-12deg)}}.fx-blur.on .ch{animation:ch-blur .7s var(--ease-out) both;animation-delay:calc(var(--i) * 30ms)}@keyframes ch-blur{0%{opacity:0;filter:blur(8px);transform:scale(1.3)}}.fx-slide{overflow:hidden}.fx-slide.on .ch{animation:ch-slide var(--spring-d) var(--spring) both;animation-delay:calc(var(--i) * 28ms)}@keyframes ch-slide{0%{opacity:0;transform:translateY(110%)}}.fx-expand:not(.on){clip-path:inset(0 50% round 4px);opacity:0}.fx-expand.on{clip-path:inset(0);opacity:1;transition:clip-path var(--spring-d) var(--spring), opacity .3s var(--ease-ios), rotate var(--bouncy-d) var(--bouncy), translate var(--bouncy-d) var(--bouncy)}.fx-flip:not(.on){opacity:0;transform:perspective(500px)rotateX(-95deg)}.fx-flip{transform-origin:50% 0}.fx-flip.on{opacity:1;transition:transform var(--bouncy-d) var(--bouncy), opacity .25s var(--ease-ios), rotate var(--bouncy-d) var(--bouncy), translate var(--bouncy-d) var(--bouncy);transform:none}@media (hover:hover){.fx-draw.done:hover{--k:16px;--fill:color-mix(in srgb, var(--fg) 10%, transparent);translate:0;rotate:0deg}}.fx-expand.done{transition:padding var(--bouncy-d) var(--bouncy), letter-spacing var(--bouncy-d) var(--bouncy), rotate var(--bouncy-d) var(--bouncy), translate var(--bouncy-d) var(--bouncy)}@media (hover:hover){.fx-expand.done:hover{letter-spacing:.03em;padding-inline:22px}}.fx-flip.hov{animation:flip-spin .85s var(--bouncy) both}@keyframes flip-spin{0%{transform:perspective(500px)rotateX(0)}to{transform:perspective(500px)rotateX(360deg)}}.fx-drop.on .ch.hov{animation:ch-hop .8s var(--spring) both;animation-delay:calc(var(--i) * 32ms)}@keyframes ch-hop{30%{transform:translateY(-.45em)rotate(-8deg)}60%{transform:translateY(.06em)rotate(2deg)}}.fx-blur.on .ch.hov{animation:ch-focus .75s var(--ease-out) both;animation-delay:calc(var(--i) * 28ms)}@keyframes ch-focus{35%{opacity:.35;filter:blur(5px);transform:scale(1.18)}}.fx-slide.on .ch.hov{animation:ch-roll .75s var(--ease-ios) both;animation-delay:calc(var(--i) * 26ms)}@keyframes ch-roll{45%{transform:translateY(-115%)}45.01%{transform:translateY(115%)}}.intro-layer{z-index:300;pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.intro-veil{background:var(--bg);position:absolute;inset:0}.intro-avatar{object-fit:cover;width:140px;height:140px;box-shadow:0 30px 80px -20px var(--shadow);animation:intro-pop var(--bouncy-d) var(--bouncy) both;border-radius:36px;position:relative}@keyframes intro-pop{0%{opacity:0;filter:blur(10px);transform:scale(.6)}}html.intro .profile .avatar{visibility:hidden}.aurora{z-index:-1;pointer-events:none;height:900px;opacity:var(--aurora);animation:fade-in 2.4s var(--ease-out) both;position:absolute;inset:0 0 auto;overflow:hidden;-webkit-mask-image:linear-gradient(#000 35%,#0000 100%);mask-image:linear-gradient(#000 35%,#0000 100%)}.aurora i{filter:blur(90px);will-change:transform;border-radius:50%;position:absolute}.aurora i:first-child{opacity:.2;background:#1c71d8;width:760px;height:460px;margin-left:-560px;animation:26s ease-in-out infinite alternate aurora-a;top:-260px;left:50%}.aurora i:nth-child(2){opacity:.14;background:#2f86ee;width:620px;height:380px;margin-left:-40px;animation:34s ease-in-out infinite alternate aurora-b;top:-200px;left:50%}.aurora i:nth-child(3){opacity:.22;background:#0a3d91;width:520px;height:300px;margin-left:-300px;animation:22s ease-in-out infinite alternate aurora-c;top:40px;left:50%}@keyframes aurora-a{to{transform:translate(180px,60px)scale(1.15)rotate(8deg)}}@keyframes aurora-b{to{transform:translate(-220px,90px)scale(.9)rotate(-10deg)}}@keyframes aurora-c{to{transform:translate(160px,-40px)scale(1.2)}}@media (width<=560px){.aurora{height:640px}.aurora i{filter:blur(70px)}}.skip{z-index:400;background:var(--text);color:var(--on-inverse);transition:transform .3s var(--ease-ios);border-radius:12px 6px 10px 7px;padding:10px 16px;font-weight:600;position:fixed;top:10px;left:10px;transform:translateY(-160%)}.skip:focus-visible{transform:none}#main:focus{outline:none}.holo-card:focus-visible{outline-offset:6px;border-radius:20px;outline:2px solid #fff}html[data-vt=theme] .nav-wrap,html[data-vt=theme] .fog,html[data-vt=theme] .nav-wrap .lang{view-transition-name:none}html[data-vt=theme]::view-transition-old(root){animation:none}html[data-vt=theme]::view-transition-new(root){animation:theme-reveal .7s var(--ease-ios) both}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--vt-x,50%) var(--vt-y,0))}to{clip-path:circle(var(--vt-r,150vmax) at var(--vt-x,50%) var(--vt-y,0))}}
