:root{--c1:#dde7d4;--c2:#d7d9cb;--c3:#b6cac3;--c4:#94afaa;--bg:#f5f5f0;--text:#3a4a3f;--text-secondary:#6b7c6f;--radius:1rem;--ease:cubic-bezier(.33, .33, 0, 1);--duration:.8s}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{color:var(--text);background-color:var(--bg);background-image:radial-gradient(circle,var(--c1) 1px,transparent 1px);background-size:24px 24px;height:100dvh;font-family:Noto Sans SC,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;overflow:hidden}a{color:var(--c4);text-decoration:none;transition:color .3s}a:hover{color:var(--text)}.scroll-container{scroll-snap-type:y mandatory;touch-action:none;overscroll-behavior:none;-ms-overflow-style:none;scrollbar-width:none;height:100dvh;overflow-y:scroll}.scroll-container::-webkit-scrollbar{display:none}.page{scroll-snap-align:start;scroll-snap-stop:always;backface-visibility:hidden;justify-content:center;align-items:center;height:100dvh;padding:2rem;display:flex;position:relative;overflow:hidden;transform:translateZ(0)}.avatar-float{z-index:100;border:4px solid var(--c3);pointer-events:none;opacity:0;will-change:top,left,width,height,opacity;transition:top var(--duration) var(--ease),left var(--duration) var(--ease),width var(--duration) var(--ease),height var(--duration) var(--ease),opacity var(--duration) var(--ease);border-radius:50%;position:fixed;overflow:hidden;box-shadow:0 8px 32px #94afaa4d}.avatar-float img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.page-indicators{z-index:200;flex-direction:column;gap:.75rem;display:flex;position:fixed;top:50%;right:1.5rem;transform:translateY(-50%)}.page-indicators .dot{background:var(--c2);cursor:pointer;width:10px;height:10px;transition:all .3s var(--ease);border:none;border-radius:50%;padding:0}.page-indicators .dot.active{background:var(--c4);transform:scale(1.4)}.page-hero .hero-content{text-align:left;max-width:480px}.page-hero .hero-greeting{color:var(--c4);letter-spacing:.1em;margin-bottom:.5rem;font-size:1rem}.page-hero .hero-name{color:var(--text);margin-bottom:.75rem;font-size:3rem;font-weight:700;line-height:1.2}.page-hero .hero-bio{color:var(--text-secondary);margin-bottom:1.5rem;font-size:1.1rem;line-height:1.7}.page-hero .hero-links{gap:.75rem;display:flex}.hero-links a{border-radius:var(--radius);background:var(--c1);color:var(--text);align-items:center;gap:.4rem;padding:.6rem 1.2rem;font-size:.9rem;font-weight:500;transition:all .3s;display:inline-flex}.hero-links a:hover{background:var(--c3);color:#fff;box-shadow:0 4px 12px #94afaa4d}.hero-links svg{width:18px;height:18px}@media (width>=769px){.page-hero{justify-content:flex-start;padding-left:12%}}@media (width<=768px){.page-hero .hero-content{text-align:center;padding-top:calc(18vh + 200px)}.page-hero .hero-name{font-size:2rem}.page-hero .hero-links{flex-wrap:wrap;justify-content:center}}.page-projects{padding:0;overflow:hidden}.projects-layout{align-items:center;width:100%;height:100%;display:flex;position:relative}.orbit-wrapper{--orbit-size:calc(min(90vh, 60vw));width:var(--orbit-size);height:var(--orbit-size);left:calc(var(--orbit-size) / -3);position:absolute;top:50%;transform:translateY(-50%)}.orbit-container{width:100%;height:100%;position:relative}.orbit-rotor{transition:transform .5s var(--ease);will-change:transform;position:absolute;inset:0;transform:translateZ(0)}.orbit-rotor.dragging{transition:none}.orbit-ring{border:2px dashed var(--c3);border-radius:50%;position:absolute;inset:0}.orbit-pointer{border-top:10px solid #0000;border-bottom:10px solid #0000;border-left:14px solid var(--c4);z-index:5;filter:drop-shadow(0 2px 4px #0000001a);width:0;height:0;margin-left:calc(42% - 7px);transform:translateY(-50%)}.orbit-item,.orbit-pointer{position:absolute;top:50%;left:50%}.orbit-item{border:2px solid var(--c3);cursor:pointer;width:52px;height:52px;transition:width .35s var(--ease),transform .5s var(--ease),background .3s ease,border-color .3s ease,box-shadow .3s ease;z-index:1;transform-origin:26px 26px;background:#fff;border-radius:999px;justify-content:flex-start;align-items:center;margin-top:-26px;margin-left:-26px;padding-left:12px;display:flex;overflow:hidden;box-shadow:0 2px 8px #00000014}.orbit-rotor.dragging .orbit-item{transition:width .35s var(--ease),background .3s ease,border-color .3s ease,box-shadow .3s ease}.orbit-item img,.orbit-item svg{flex-shrink:0;transition:none}.orbit-item-label{color:var(--c4);white-space:nowrap;pointer-events:none;opacity:0;font-size:.78rem;font-weight:600;transition:opacity .25s;position:absolute;left:44px}.orbit-item:hover{border-color:var(--c4);z-index:10;width:160px;box-shadow:0 4px 16px #94afaa4d}.orbit-item:hover .orbit-item-label{opacity:1}.orbit-item.active{background:var(--c4);border-color:var(--c4)}.orbit-item.active svg,.orbit-item.active:hover .orbit-item-label{color:#fff}.orbit-item svg{width:24px;height:24px;color:var(--c4)}.project-detail{opacity:0;max-width:calc(min(420px,42vw));transition:all .5s var(--ease);position:absolute;top:50%;right:8%;transform:translateY(-50%)}.project-detail.visible{opacity:1}.project-detail .proj-title{color:var(--text);margin-bottom:.5rem;font-size:2.4rem;font-weight:700}.project-detail .proj-desc{color:var(--text-secondary);margin-bottom:1rem;font-size:1rem;line-height:1.7}.project-detail .proj-tags{flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem;display:flex}.proj-tag{background:var(--c1);color:var(--text-secondary);border-radius:999px;padding:.25rem .75rem;font-size:.8rem}.proj-link{border-radius:var(--radius);background:var(--c4);color:#fff;align-items:center;gap:.4rem;padding:.6rem 1.4rem;font-size:.9rem;font-weight:500;transition:all .3s;display:inline-flex}.proj-link:hover{background:var(--text);color:#fff;box-shadow:0 4px 12px #00000026}@media (width<=768px){.projects-layout{flex-direction:column;justify-content:flex-start;align-items:center;padding-top:0;overflow:hidden}.orbit-wrapper{--orbit-size:calc(min(55vh, 95vw));width:var(--orbit-size);height:var(--orbit-size);left:auto;top:calc(var(--orbit-size) / -3);flex-shrink:0;position:relative;transform:none}.orbit-pointer{border-left:10px solid #0000;border-right:10px solid #0000;border-top:14px solid var(--c4);border-bottom:none;margin-top:0;margin-bottom:calc(-42% - 7px);margin-left:-10px;top:auto;bottom:50%;left:50%;transform:translate(0)}.orbit-item-label{font-size:.68rem;left:34px}.orbit-item:hover{width:130px}.project-detail{text-align:left;flex-shrink:0;width:90%;max-width:90%;margin-top:-6vh;padding:0 1.2rem;position:relative;top:auto;bottom:auto;right:auto;transform:none}.project-detail .proj-tags{justify-content:flex-start}.project-detail .proj-link{margin:0}}.page-blog,.page-friends{padding:0}.split-layout{width:100%;height:100%;display:flex;position:relative}.split-left{z-index:2;flex-direction:column;align-items:flex-start;gap:.75rem;display:flex;position:absolute;bottom:3rem;left:3rem}.split-left .section-avatar-placeholder{width:80px;height:80px}.split-left .section-label{color:var(--text);font-size:3.2rem;font-weight:700}.split-left .section-sublabel{color:var(--text-secondary);margin-top:-.15rem;font-size:.9rem}.split-right{justify-content:center;width:55%;max-width:600px;height:100%;margin-left:auto;padding:3rem 4rem 3rem 0}.blog-list,.split-right{flex-direction:column;display:flex}.blog-list{gap:.75rem}.blog-card{backdrop-filter:blur(8px);border-radius:var(--radius);border:1px solid var(--c1);color:var(--text);background:#ffffffb3;justify-content:space-between;align-items:center;padding:1rem 1.25rem;transition:all .3s;display:flex}.blog-card:hover{border-color:var(--c3);color:var(--text);background:#ffffffe6;box-shadow:0 4px 16px #94afaa26}.blog-card .blog-title{flex:1;font-size:.95rem;font-weight:500}.blog-card .blog-arrow{color:var(--c3);flex-shrink:0;margin-left:1rem;transition:transform .3s}.blog-card:hover .blog-arrow{color:var(--c4);transform:translate(4px)}.blog-more{text-align:center;border-radius:var(--radius);background:var(--c1);color:var(--text);margin-top:1.5rem;padding:.6rem 1.4rem;font-size:.9rem;font-weight:500;transition:all .3s;display:block}.blog-more:hover{background:var(--c3);color:#fff}.friends-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;display:grid}.friend-card{backdrop-filter:blur(8px);border-radius:var(--radius);border:1px solid var(--c1);color:var(--text);background:#ffffffb3;align-items:center;gap:.75rem;padding:1rem 1.25rem;transition:all .3s;display:flex}.friend-card:hover{border-color:var(--c3);color:var(--text);background:#ffffffe6;box-shadow:0 4px 16px #94afaa26}.friend-card .friend-name{font-size:.95rem;font-weight:500}@media (width<=768px){.page-indicators{right:.75rem}.page-indicators .dot{width:8px;height:8px}.split-left{bottom:1.5rem;left:1.5rem}.split-right{justify-content:flex-start;width:100%;max-width:100%;padding:3rem 1.5rem 5rem}.friends-grid{grid-template-columns:1fr}.blog-card,.friend-card{backdrop-filter:none;background:#ffffffd9}.blog-card:hover,.friend-card:hover{background:#fff}}
