.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{align-items:center;gap:10px;min-width:0;min-height:72px;padding:12px 14px;display:flex}.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:10px;min-width:0;display:flex}.home-frame__icon{color:#d3f5ffdb;flex:none;place-items:center;width:30px;height:30px;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:2px 12px;margin-top:8px;display:grid}.home-project{color:#f6fdffe0;justify-content:space-between;align-items:center;gap:6px;min-width:0;min-height:26px;padding:3px 4px;font-size:.7rem;font-weight:600;text-decoration:none;transition:color .18s,background-color .18s;display:flex}.home-project:hover{color:#fff;background:#d8f6ff12}.home-project:focus-visible,.home-contact:focus-visible,.contact-qr-viewer:focus-visible{outline-offset:2px;outline:2px solid #b9efff}.home-project span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home-project svg{color:#a6e8fa;flex:none;width:13px;height:13px}.home-frame__copy strong,.home-frame__copy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home-frame__copy strong{color:#ffffffeb;font-size:.82rem;font-weight:650}.home-frame__copy small{color:#ebf9ff94;font-size:.68rem}.home-contacts{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin-top:8px;display:grid}.home-contact{color:#f6fdffe0;min-width:0;min-height:38px;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#d8f6ff0a;border:0;border-radius:6px;align-items:center;gap:8px;margin:0;padding:5px 7px;text-decoration:none;transition:color .18s,background-color .18s,transform .18s cubic-bezier(.22,1,.36,1);display:flex;overflow:hidden}.home-contact:hover{color:#fff;background:#d8f6ff1a}.home-contact:active{transform:scale(.98)}.home-contact__icon{color:#b9efff;flex:none;place-items:center;width:24px;height:24px;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:#ebf9ff8f;font-size:.58rem;font-weight:500}.home-contact__copy strong{font-size:.66rem;font-weight:620}.home-contact__external{color:#b9efffb8;flex:none;width:12px;height:12px}.contact-qr-viewer{z-index:100;cursor:zoom-out;-webkit-tap-highlight-color:transparent;background:0 0;border:0;outline:0;place-items:center;width:100%;height:100%;margin:0;padding:clamp(16px,5vmin,48px);display:grid;position:fixed;inset:0}.contact-qr-viewer img{object-fit:contain;width:min(76vmin,512px);height:min(76vmin,512px);display:block}@media (max-width:640px){.home-frames{gap:6px;width:calc(100vw - 24px)}.home-frame{gap:6px;min-height:62px;padding:8px 6px}.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:28px;padding:3px 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{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 .24s cubic-bezier(.22,1,.36,1),min-height .24s cubic-bezier(.22,1,.36,1),border-radius .24s cubic-bezier(.22,1,.36,1),background-color .18s,color .18s;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.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%;border-radius:50%;width:100%;height:100%;font-size:clamp(.64rem,1.05vw,.82rem);font-weight:800;position:absolute;inset:0}.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%}@media (prefers-reduced-motion:reduce){.circular-text{cursor:default}}
.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}.warp-text canvas{filter:drop-shadow(0 4px 16px #00000075);width:100%;height:100%;display:block;position:absolute;inset:0}.warp-text__fallback{text-align:center;white-space:pre-wrap;text-shadow:0 4px 18px #0000008c;justify-content:center;align-items:center;padding:0 5%;transition:opacity .18s;display:flex;position:absolute;inset:0}.warp-text[data-enhanced=true] .warp-text__fallback{opacity:0}@media (prefers-reduced-motion:reduce){.warp-text__fallback{transition:none}}
