.home-frames{pointer-events:auto;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(8px,1.2vw,16px);width:min(92vw,760px);margin-top:clamp(4px,1vh,10px);display:grid;position:relative}.home-frame{-webkit-backdrop-filter:blur(22px)saturate(170%);background:#10151b70;border:1px solid #ffffff1a;border-radius:20px;align-items:center;gap:10px;min-width:0;min-height:72px;padding:16px;display:flex;box-shadow:0 12px 36px #0003}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.home-frame{background:#10151bc7}}.home-frame--projects{flex-direction:column;align-items:stretch}.home-frame--contact{flex-direction:column;align-items:stretch;height:100%}.home-frame__header{align-items:center;gap:8px;min-width:0;display:flex}.home-frame__icon{color:#ffffffb8;flex:none;place-items:center;width:20px;height:20px;display:grid}.home-frame__icon svg{width:16px;height:16px}.home-frame__copy{gap:4px;min-width:0;display:grid}.home-projects{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px;margin-top:10px;display:grid}.home-project{color:#ffffffeb;background:#ffffff0f;border-radius:11px;align-items:center;gap:7px;min-width:0;min-height:32px;padding:5px 10px;font-size:.72rem;font-weight:500;text-decoration:none;transition:color .16s,background-color .16s,transform .16s cubic-bezier(.22,1,.36,1);display:flex}.home-project:last-child:nth-child(odd){grid-column:1/-1}.home-project:hover{color:#fff;background:#ffffff21}.home-project:active{transform:scale(.97)}.home-project:focus-visible,.home-contact:focus-visible{outline-offset:2px;outline:2px solid #ffffffc7}.home-project span{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.home-project__glyph{color:#ffffff9e;flex:none;width:14px;height:14px}.home-project__external{color:#ffffff8c;opacity:0;flex:none;width:12px;height:12px;transition:opacity .16s,transform .16s cubic-bezier(.22,1,.36,1);transform:translate(-2px)}.home-project:hover .home-project__external,.home-project:focus-visible .home-project__external{opacity:1;transform:translate(0)}.home-frame__copy strong,.home-frame__copy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home-frame__copy strong{color:#fffffff0;font-size:.84rem;font-weight:600}.home-frame__copy small{color:#ffffff8c;font-size:.66rem}.home-contacts{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px;display:grid}.home-contact-item{min-width:0;position:relative}.home-contact{color:#ffffffeb;min-width:0;min-height:40px;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#ffffff0f;border:0;border-radius:11px;align-items:center;gap:8px;margin:0;padding:6px 10px;text-decoration:none;transition:color .16s,background-color .16s,transform .16s cubic-bezier(.22,1,.36,1);display:flex;overflow:hidden}.home-contact-item>.home-contact{width:100%;height:100%}.home-contact-item[data-open=true]>.home-contact{color:#fff;background:#ffffff26}.home-contact:hover{color:#fff;background:#ffffff21}.home-contact:active{transform:scale(.98)}.home-contact__icon{color:#ffffffad;flex:none;place-items:center;width:22px;height:22px;display:grid}.home-contact__icon svg{width:15px;height:15px}.home-contact__copy{flex:auto;gap:2px;min-width:0;display:grid}.home-contact__copy small,.home-contact__copy strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home-contact__copy small{color:#ffffff8c;font-size:.6rem;font-weight:500}.home-contact__copy strong{font-size:.7rem;font-weight:600}.home-contact__external{color:#ffffff80;flex:none;width:12px;height:12px}.contact-qr-popover{z-index:30;color:#fffffff2;-webkit-backdrop-filter:blur(22px)saturate(170%);transform-origin:0 0;background:#10151be6;border:1px solid #ffffff21;border-radius:16px;width:clamp(164px,18vw,190px);padding:10px;animation:.18s cubic-bezier(.22,1,.36,1) both contact-qr-popover-enter;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 18px 48px #0000005c}.home-contact-item[data-contact=qq] .contact-qr-popover{transform-origin:100% 0;left:auto;right:0}.contact-qr-popover:before{content:"";background:#10151be6;border-top:1px solid #ffffff21;border-left:1px solid #ffffff21;width:9px;height:9px;position:absolute;top:-5px;left:18px;transform:rotate(45deg)}.home-contact-item[data-contact=qq] .contact-qr-popover:before{left:auto;right:18px}.contact-qr-popover__copy{gap:2px;margin:0 2px 8px;display:grid}.contact-qr-popover__copy strong{font-size:.72rem;font-weight:650}.contact-qr-popover__copy small{color:#ebf9ff99;font-size:.58rem}.contact-qr-popover__image{background:#fff;border-radius:9px;overflow:hidden}.contact-qr-popover img{aspect-ratio:1;object-fit:cover;-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}@keyframes contact-qr-popover-enter{0%{opacity:0;transform:translateY(-4px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@media (max-width:640px){.home-frames{gap:6px;width:calc(100vw - 24px)}.home-frame{-webkit-backdrop-filter:blur(14px)saturate(160%);border-radius:16px;gap:6px;min-height:62px;padding:11px}.home-frame__header{gap:6px}.home-frame__icon{width:25px;height:25px}.home-frame__icon svg{width:14px;height:14px}.home-frame__copy{gap:3px}.home-frame__copy strong{font-size:.7rem}.home-frame__copy small{font-size:.6rem}.home-contacts{grid-template-columns:minmax(0,1fr);gap:3px;margin-top:5px}.home-contact{gap:5px;min-height:34px;padding:4px 7px}.home-projects{grid-template-columns:minmax(0,1fr);gap:4px}.home-project{min-height:30px;padding:4px 8px}.contact-qr-popover{transform-origin:0 100%;width:min(176px,72vw);top:auto;bottom:calc(100% + 6px)}.home-contact-item[data-contact=qq] .contact-qr-popover{transform-origin:100% 100%}.contact-qr-popover:before{border:1px solid #ffffff21;border-top:0;border-left:0;top:auto;bottom:-5px}.home-contact__icon{width:20px;height:20px}.home-contact__icon svg{width:13px;height:13px}.home-contact__copy{align-items:baseline;gap:5px;display:flex}.home-contact__copy small{flex:none;font-size:.55rem}.home-contact__copy strong{font-size:.6rem}}@media (max-height:520px){.home-frames{gap:6px;margin-top:2px}.home-frame{min-height:58px;padding:7px 8px}}@media (prefers-reduced-motion:reduce){.home-contact,.home-project,.home-project__external,.contact-qr-popover{transition:none;animation:none}}
.netease-player-host{z-index:20;pointer-events:auto;--nmpv3-accent:#55c9ea;--nmpv3-accent-2:#70a9ff;--nmpv3-accent-3:#b2efff;--nmpv3-radius:12px;--nmpv3-flow-opacity:0;position:relative}.netease-player-host[data-visible=false]{visibility:hidden;pointer-events:none}.netease-player-host .nmpv3-player{box-shadow:none;background:0 0;border-color:#0000;transition:width .38s cubic-bezier(.32,.72,0,1),height .38s cubic-bezier(.32,.72,0,1),min-height .38s cubic-bezier(.32,.72,0,1),padding .38s cubic-bezier(.32,.72,0,1),border-radius .38s cubic-bezier(.32,.72,0,1),background-color .22s,color .22s;top:auto!important;left:auto!important;right:max(20px, env(safe-area-inset-right))!important;bottom:max(20px, env(safe-area-inset-bottom))!important;opacity:1!important;position:fixed!important;transform:none!important}.netease-player-host .nmpv3-player:before{display:none}.netease-player-host .nmpv3-player:not(.nmpv3-is-minimized) .nmpv3-main{animation:.34s cubic-bezier(.22,1,.36,1) both nmpv3-section-enter}.netease-player-host .nmpv3-player:not(.nmpv3-is-minimized) .nmpv3-controls{animation:.34s cubic-bezier(.22,1,.36,1) 60ms both nmpv3-section-enter}.netease-player-host .nmpv3-player:not(.nmpv3-is-minimized) .nmpv3-bottom{animation:.34s cubic-bezier(.22,1,.36,1) .11s both nmpv3-section-enter}@keyframes nmpv3-section-enter{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.netease-player-host .nmpv3-player:not(.nmpv3-is-minimized) .nmpv3-main,.netease-player-host .nmpv3-player:not(.nmpv3-is-minimized) .nmpv3-controls,.netease-player-host .nmpv3-player:not(.nmpv3-is-minimized) .nmpv3-bottom{animation:none}}.netease-player-host .nmpv3-player.nmpv3-is-minimized{background:0 0}@media (max-width:640px){.netease-player-host{--nmpv3-radius:10px}.netease-player-host .nmpv3-player{right:max(12px, env(safe-area-inset-right))!important;bottom:max(12px, env(safe-area-inset-bottom))!important}.netease-player-host .nmpv3-player .nmpv3-volume{display:flex}}
.specular-button{--sb-radius:18px;--sb-tint:#fff;--sb-tint-opacity:0;--sb-blur:0px;--sb-text-color:#f5f5f5;border-radius:var(--sb-radius);color:var(--sb-text-color);background:color-mix(in srgb, var(--sb-tint) calc(var(--sb-tint-opacity) * 100%), transparent);-webkit-backdrop-filter:blur(var(--sb-blur));letter-spacing:.02em;cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;outline:none;justify-content:center;align-items:center;margin:0;font-family:inherit;font-weight:500;line-height:1;transition:transform .15s;display:inline-flex;position:relative;overflow:visible;box-shadow:inset 0 1px #ffffff14,0 8px 24px #00000040}.specular-button:active{transform:scale(.97)}.specular-button:focus-visible{outline:2px solid color-mix(in srgb, var(--sb-text-color) 70%, transparent);outline-offset:4px}.specular-button:disabled{opacity:.55;cursor:default}.specular-button:disabled:active{transform:none}.specular-button--sm{padding:11px 20px;font-size:.85rem}.specular-button--md{padding:14px 30px;font-size:1rem}.specular-button--lg{padding:18px 40px;font-size:1.15rem}.specular-button.theme-switch-button{width:40px;height:40px;padding:0;box-shadow:inset 0 1px #ffffff14,0 4px 14px #0000002e}.theme-switch-button svg{width:18px;height:18px;display:block}.specular-button__fx{z-index:1;pointer-events:none;position:absolute;inset:-20px}.specular-button__fx canvas{width:100%;height:100%;display:block}.specular-button__label{z-index:2;white-space:nowrap;position:relative}@media (prefers-reduced-motion:reduce){.specular-button{transition:none}}@media (max-width:640px){.specular-button.theme-switch-button{width:36px;height:36px;padding:0}.theme-switch-button svg{width:17px;height:17px}}
.circular-text{color:#fff;cursor:default;letter-spacing:.08em;text-align:center;text-shadow:0 2px 8px #000000a6;transform-origin:50%;width:100%;height:100%;animation:circular-text-spin var(--circular-text-duration,20s) linear infinite;will-change:transform;border-radius:50%;font-size:clamp(.64rem,1.05vw,.82rem);font-weight:800;position:absolute;inset:0}.circular-text--slowDown:hover{animation-duration:calc(var(--circular-text-duration,20s) * 2)}.circular-text--speedUp:hover{animation-duration:calc(var(--circular-text-duration,20s) / 4)}.circular-text--pause:hover{animation-play-state:paused}.circular-text--goBonkers:hover{animation-duration:calc(var(--circular-text-duration,20s) / 20);scale:.88}.circular-text__letter{transform-origin:50% 100%;justify-content:center;align-items:flex-start;width:1.45em;height:50%;margin-left:-.725em;padding-top:.12em;display:flex;position:absolute;top:0;left:50%}@keyframes circular-text-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.circular-text{cursor:default;will-change:auto;animation:none}}
.depth-text{perspective:var(--depth-text-perspective);perspective-origin:50% 48%;isolation:isolate;transform-style:preserve-3d;display:inline-block}.depth-text__stage{transform-origin:50%;transform-style:preserve-3d;will-change:transform;place-items:center;display:inline-grid;position:relative;transform:rotateX(-2.4deg)rotateY(3.15deg)}.depth-text__layer,.depth-text__face{font-size:var(--depth-text-font-size);font-weight:var(--depth-text-font-weight);letter-spacing:-.045em;white-space:nowrap;-webkit-user-select:none;user-select:none;backface-visibility:hidden;font-kerning:normal;text-rendering:geometricprecision;transform-style:preserve-3d;grid-area:1/1;line-height:.9;display:inline-block}.depth-text--flip:hover{animation:.64s cubic-bezier(.22,1,.36,1) depth-text-flip}.depth-text--stack:hover{animation:.52s cubic-bezier(.22,1,.36,1) depth-text-stack}.depth-text--wave:hover{animation:.72s cubic-bezier(.32,.72,.25,1) depth-text-wave}@keyframes depth-text-flip{0%{transform:rotateY(0)}55%{transform:rotateY(-210deg)scale(1.04)}to{transform:rotateY(-360deg)}}@keyframes depth-text-stack{0%,to{transform:translateY(0)scale(1)}48%{transform:translateY(-9px)scale(1.12)}}@keyframes depth-text-wave{0%,to{transform:rotate(0)translateY(0)}25%{transform:rotate(-3deg)translateY(-4px)}62%{transform:rotate(2.5deg)translateY(-7px)}}.depth-text__layer{z-index:0;filter:saturate(.95)brightness(.92);pointer-events:none;position:absolute;inset:0}.depth-text__face{z-index:1;color:var(--depth-text-face-color);text-shadow:var(--depth-text-shadow);position:relative;transform:translateZ(.6px)}@media (prefers-reduced-motion:reduce){.depth-text__stage{will-change:auto}.depth-text--flip:hover,.depth-text--stack:hover,.depth-text--wave:hover{animation:none}}
.warp-text{isolation:isolate;width:100%;min-height:220px;display:block;position:relative;overflow:hidden;container-type:inline-size}.warp-text canvas{opacity:0;filter:drop-shadow(0 4px 16px #00000075);width:100%;height:100%;transition:opacity .12s;display:block;position:absolute;inset:0}.warp-text__fallback{text-align:center;white-space:pre;text-shadow:0 4px 18px #0000008c;justify-content:center;align-items:center;padding:0 5%;transition:opacity .12s;display:flex;position:absolute;inset:0}.warp-text[data-enhanced=true] canvas{opacity:1}.warp-text[data-enhanced=true] .warp-text__fallback{opacity:0}@media (prefers-reduced-motion:reduce){.warp-text canvas,.warp-text__fallback{transition:none}}
