:root,[data-theme=light]{--primary:#f59e0b;--primary-light:#fbbf24;--primary-lighter:#fde68a;--primary-bg:#fffbeb;--accent-blue:#7dd3fc;--accent-blue-light:#bae6fd;--accent-blue-lighter:#e0f2fe;--accent-pink:#f9a8d4;--bilibili-pink:#fb7299;--bilibili-pink-hover:#e8618a;--bg:#fffbeb;--bg-card:#ffffffd9;--bg-card-hover:#fffffff2;--bg-overlay:#fffbebb3;--text:#4a3728;--text-secondary:#78716c;--text-muted:#a8a29e;--border:#f59e0b33;--border-hover:#f59e0b80;--shadow:0 4px 24px #f59e0b1f;--shadow-hover:0 8px 32px #f59e0b33;--tag-bg:#f59e0b1a;--tag-text:#b45309;--gradient-1:linear-gradient(135deg, #fbbf24, #f59e0b);--gradient-2:linear-gradient(135deg, #fde68a, #fbbf24);--gradient-3:linear-gradient(135deg, #7dd3fc, #fbbf24);--gradient-tab:linear-gradient(135deg, #7dd3fc, #f59e0b);--card-backdrop:blur(16px) saturate(180%);--color-white:#fff;--particle-colors:#fbbf24, #f59e0b, #fcd34d, #7dd3fc, #fde68a;--particle-link-color:#fbbf24;--github-calendar-light:#ebedf0, #fef3c7, #fde68a, #fbbf24, #f59e0b;--github-calendar-dark:#161b22, #451a03, #92400e, #d97706, #fbbf24;--name-gradient:linear-gradient(90deg, #7dd3fc 0%, #38bdf8 25%, #fbbf24 50%, #f59e0b 75%, #7dd3fc 100%);--tab-indicator-bg:radial-gradient(circle at 30% 50%, #7dd3fc 0%, transparent 55%), radial-gradient(circle at 70% 40%, #fbbf24 0%, transparent 55%), radial-gradient(circle at 50% 70%, #38bdf8 0%, transparent 50%), radial-gradient(circle at 40% 30%, #f59e0b 0%, transparent 50%), radial-gradient(circle at 60% 60%, #7dd3fc 0%, transparent 60%);--shimmer-gradient:linear-gradient(120deg, transparent 0%, transparent 30%, #fffbeb40 45%, #fff 50%, #fffbeb40 55%, transparent 70%, transparent 100%)}[data-theme=dark]{--primary:#fbbf24;--primary-light:#f59e0b;--primary-lighter:#b45309;--primary-bg:#1c1917;--accent-blue:#38bdf8;--accent-blue-light:#7dd3fc;--accent-blue-lighter:#1e3a5f;--accent-pink:#f472b6;--bilibili-pink:#fb7299;--bilibili-pink-hover:#e8618a;--bg:#1c1917;--bg-card:#292524d9;--bg-card-hover:#292524f2;--bg-overlay:#1c1917b3;--text:#e7e5e4;--text-secondary:#a8a29e;--text-muted:#78716c;--border:#f59e0b26;--border-hover:#f59e0b66;--shadow:0 4px 24px #0000004d;--shadow-hover:0 8px 32px #0006;--tag-bg:#f59e0b26;--tag-text:#fbbf24;--gradient-1:linear-gradient(135deg, #fbbf24, #f59e0b);--gradient-2:linear-gradient(135deg, #fde68a, #fbbf24);--gradient-3:linear-gradient(135deg, #7dd3fc, #fbbf24);--gradient-tab:linear-gradient(135deg, #7dd3fc, #f59e0b);--card-backdrop:blur(16px) saturate(120%);--color-white:#fff;--particle-colors:#fbbf24, #f59e0b, #fcd34d, #7dd3fc, #fde68a;--particle-link-color:#fbbf24;--github-calendar-light:#ebedf0, #fef3c7, #fde68a, #fbbf24, #f59e0b;--github-calendar-dark:#161b22, #451a03, #92400e, #d97706, #fbbf24;--name-gradient:linear-gradient(90deg, #7dd3fc 0%, #38bdf8 25%, #fbbf24 50%, #f59e0b 75%, #7dd3fc 100%);--tab-indicator-bg:radial-gradient(circle at 30% 50%, #7dd3fc 0%, transparent 55%), radial-gradient(circle at 70% 40%, #fbbf24 0%, transparent 55%), radial-gradient(circle at 50% 70%, #38bdf8 0%, transparent 50%), radial-gradient(circle at 40% 30%, #f59e0b 0%, transparent 50%), radial-gradient(circle at 60% 60%, #7dd3fc 0%, transparent 60%);--shimmer-gradient:linear-gradient(120deg, transparent 0%, transparent 30%, #b453091f 40%, #92400e59 50%, #b453091f 60%, transparent 70%, transparent 100%)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Ubuntu,Noto Sans SC,PingFang SC,Microsoft YaHei,system-ui,sans-serif;line-height:1.6;overflow:hidden}a{color:inherit;text-decoration:none}ul,ol{list-style:none}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{background:var(--bg);color:var(--text);font-family:Ubuntu,Noto Sans SC,PingFang SC,Microsoft YaHei,system-ui,sans-serif;line-height:1.6;transition:background .3s,color .3s;overflow-x:hidden}body:before{content:"";opacity:.12;z-index:-2;pointer-events:none;background:url(https://r.dreamgary.cn/images/hanser2025.jpg) 50%/cover no-repeat;width:100%;height:100%;position:fixed;top:0;left:0}a{color:var(--primary);text-decoration:none;transition:color .2s}a:hover{color:var(--primary-light)}ul{list-style:none}img{max-width:100%;height:auto}.page svg{color:var(--accent-blue)}.particles-bg{z-index:0;pointer-events:none;width:100%;height:100%;top:0;left:0;position:fixed!important}.progress-bar{z-index:1000;background:0 0;width:100%;height:3px;position:fixed;top:0;left:0}.progress-bar .progress-fill{background:var(--gradient-3);border-radius:0 2px 2px 0;height:100%;transition:width .15s}.app{z-index:1;flex-direction:column;height:100vh;transition:background .3s;display:flex;position:relative;overflow:hidden}.app-body{flex-flow:row;flex:1;width:100%;max-width:90%;margin:0;padding:0 20px;display:flex}.snap-container{scrollbar-width:none;scroll-snap-type:y mandatory;scroll-behavior:smooth;z-index:1;flex:1;min-width:0;height:calc(100vh - 69px);position:relative;overflow:hidden auto}.snap-container::-webkit-scrollbar{display:none}.snap-section{scroll-snap-align:start;min-height:calc(100vh - 69px);padding:32px 32px 40px;position:relative}.global-sidebar{flex-direction:column;flex:0 0 380px;align-items:flex-start;width:480px;padding:160px 20px 60px;display:flex}.sidebar-top{align-items:center;gap:10px;display:flex}.sidebar-top .avatar-wrapper{flex-shrink:0;width:170px;height:170px;position:relative}.sidebar-top .avatar{object-fit:cover;border:3px solid var(--primary-light);border-radius:50%;width:170px;height:170px;transition:transform .3s;display:block}.sidebar-top .avatar:hover{transform:scale(1.05)}.sidebar-top .avatar-ring{border:2px dashed var(--accent-blue-light);pointer-events:none;border-radius:50%;width:180px;height:180px;animation:20s linear infinite spin;position:absolute;top:-5px;left:-5px}@keyframes spin{to{transform:rotate(360deg)}}.sidebar-top .profile-name{flex-direction:column;line-height:1.3;display:flex}.sidebar-top .profile-greeting{background:var(--gradient-1);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-family:Pacifico,cursive;font-size:2.25rem}.sidebar-top .profile-name-main{background:var(--name-gradient);-webkit-text-fill-color:transparent;will-change:background-position;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;font-family:Pacifico,cursive;font-size:3rem;line-height:1.8;animation:8s linear infinite nameGradientShift}@keyframes nameGradientShift{0%{background-position:0%}to{background-position:200%}}.global-sidebar .lyrics-section{background:0 0;border-radius:0;width:100%;min-height:0;margin:12px 0 0;padding:0}.global-sidebar .lyrics-typewriter{color:var(--text-secondary);word-break:break-all;text-align:left;font-size:.85rem}.global-sidebar .lyrics-cursor{color:var(--primary);font-weight:700;animation:1s infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.top-bar{box-sizing:border-box;z-index:100;-webkit-backdrop-filter:none;border-bottom:1px solid var(--border);background:0 0;grid-template-columns:1fr auto 1fr;align-items:center;width:100%;padding:18px 20px;transition:border-color .3s;display:grid;position:sticky;top:0}[data-theme=dark] .top-bar{background:0 0}.top-bar-left{white-space:nowrap;align-items:center;gap:8px;display:flex}.site-title{background:var(--name-gradient);-webkit-text-fill-color:transparent;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;font-family:Pacifico,Ubuntu,cursive;font-size:1.5rem;line-height:1.8;animation:8s linear infinite nameGradientShift;display:inline-block}.site-subtitle{color:var(--text-secondary);white-space:nowrap;font-size:.85rem;transition:color .3s}.theme-toggle{border:2px solid var(--border);width:36px;height:36px;color:var(--primary);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;justify-self:end;align-items:center;font-size:1rem;transition:all .35s cubic-bezier(.22,.61,.36,1);display:flex}.theme-toggle:hover{border-color:var(--primary);box-shadow:0 0 20px var(--primary);transform:rotate(25deg)scale(1.1)}.theme-toggle:active{transform:scale(.85)rotate(0)}::view-transition-old(root){animation:none}::view-transition-new(root){clip-path:circle(0 at var(--vt-x,50%) var(--vt-y,50%));animation:.6s cubic-bezier(.22,.61,.36,1) forwards vt-reveal}@keyframes vt-reveal{to{clip-path:circle(150% at var(--vt-x,50%) var(--vt-y,50%))}}body{transition:background .3s,color .3s}.tab-bar{flex-wrap:nowrap;justify-content:center;gap:2px;display:flex;position:relative;overflow:visible}.tab-bar::-webkit-scrollbar{height:0}.tab-indicator{background:var(--tab-indicator-bg);background-blend-mode:screen, normal, overlay, normal, screen;z-index:0;pointer-events:none;height:100%;box-shadow:0 4px 20px var(--accent-blue), 0 0 0 2px var(--primary-light);will-change:transform, width, background-position;background-size:200% 200%;border-radius:12px;transition:transform .55s cubic-bezier(.34,1.56,.64,1),width .55s cubic-bezier(.34,1.56,.64,1),opacity .35s;animation:6s ease-in-out infinite gradientBlend;position:absolute;top:0;left:0}@keyframes gradientBlend{0%{background-position:30%,70% 40%,50% 70%,40% 30%,60% 60%}15%{background-position:55% 35%,45% 65%,75% 45%,25% 55%,40% 70%}30%{background-position:70% 60%,30% 30%,40% 80%,60% 40%,55% 35%}45%{background-position:45% 75%,65%,30%,70% 60%,35% 45%}60%{background-position:35% 45%,55% 70%,60% 35%,45% 65%,70% 55%}75%{background-position:60% 55%,40% 35%,55% 60%,35% 45%,50% 40%}90%{background-position:50% 40%,50% 55%,45% 65%,55% 35%,65%}to{background-position:30%,70% 40%,50% 70%,40% 30%,60% 60%}}.tab-item{color:var(--text-secondary);cursor:pointer;white-space:nowrap;z-index:1;background:0 0;border:none;border-radius:8px;flex-shrink:0;align-items:center;padding:6px 10px;font-family:inherit;font-size:1rem;transition:color .3s,transform .3s cubic-bezier(.22,.61,.36,1);display:flex;position:relative}.tab-item:hover{background:var(--tag-bg);color:var(--primary);transform:translateY(-3px)}.tab-item.active{color:var(--color-white);box-shadow:none;background:0 0;border-radius:12px;font-weight:600;animation:.5s cubic-bezier(.34,1.56,.64,1) jellyPop;transform:translateY(-1px)}@keyframes jellyPop{0%{transform:translateY(-1px)scale(.85)}40%{transform:translateY(-2px)scale(1.08)}70%{transform:translateY(-1px)scale(.96)}to{transform:translateY(-1px)scale(1)}}.tab-item:active{transform:scale(.92)}.snap-section:not(.entered) .page,.snap-section .animate-el{opacity:0}.snap-section.entered .animate-el{animation:.5s ease-out both elFloatUp}@keyframes elFloatUp{0%{opacity:0;transform:translateY(32px)}55%{opacity:1;transform:translateY(-9px)}to{opacity:1;transform:translateY(0)}}.page{padding:32px;transition:opacity .3s,transform .3s}.page h2{color:var(--primary);align-items:center;gap:8px;margin-bottom:20px;font-size:1.5rem;transition:color .3s;display:flex}.page h3{color:var(--text);margin:20px 0 12px;font-size:1.15rem;transition:color .3s}.page p{transition:color .3s}.home-page{text-align:left;padding:40px 32px}.profile-title{color:var(--text-secondary);margin:4px 0;font-size:1rem}.profile-mbti{color:var(--text-muted);font-size:.9rem}.profile-quote{color:var(--accent-pink);margin-top:8px;font-size:.95rem;font-style:italic}.quick-stats{flex-wrap:wrap;gap:16px;margin-top:20px;display:flex}.stat-item{background:var(--tag-bg);color:var(--tag-text);z-index:1;border-radius:30px;align-items:center;gap:8px;padding:10px 20px;font-size:.9rem;font-weight:500;transition:transform .3s cubic-bezier(.22,.61,.36,1);display:flex;position:relative;overflow:hidden}.stat-item:after{content:"";background:var(--shimmer-gradient);pointer-events:none;z-index:-1;background-position:150% 0;background-size:250% 100%;border-radius:30px;width:100%;height:100%;transition:background-position 1s;position:absolute;top:0;left:0}.stat-item:hover{transform:translateY(-2px)}.stat-item:hover:after{background-position:-50% 0}.stat-item svg{font-size:1.1rem;transition:transform .2s}.stat-item:hover svg{transform:scale(1.15)}.about-section{transition:opacity .3s}.about-content p{margin-bottom:10px;line-height:1.8;transition:color .3s}.tag-list{flex-wrap:wrap;gap:8px;display:flex}.tag{background:var(--tag-bg);color:var(--tag-text);z-index:1;border-radius:20px;padding:6px 16px;font-size:.9rem;font-weight:500;transition:transform .3s cubic-bezier(.22,.61,.36,1);position:relative;overflow:hidden}.tag:after{content:"";background:var(--shimmer-gradient);pointer-events:none;z-index:-1;background-position:150% 0;background-size:250% 100%;border-radius:20px;width:100%;height:100%;transition:background-position 1s;position:absolute;top:0;left:0}.tag:hover{transform:translateY(-2px)scale(1.03)}.tag:hover:after{background-position:-50% 0}.friendly{font-size:1.1rem;font-weight:600}.contact-cards{flex-direction:column;gap:6px;display:flex}.contact-card{cursor:pointer;border-bottom:1px solid var(--border);border-radius:12px;align-items:center;gap:12px;padding:12px 16px;transition:all .3s cubic-bezier(.22,.61,.36,1);display:flex}.contact-card:hover{color:var(--primary);background:var(--tag-bg);padding-left:24px;transform:translateY(-2px)}.contact-card:last-child{border-bottom:none}.contact-icon{font-size:1.4rem}.contact-value{flex:1;font-size:.95rem}.copy-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:1rem;transition:color .2s}.copy-btn:hover{color:var(--primary)}.game-cards{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;display:grid}.game-card{border-radius:12px;align-items:center;gap:14px;padding:14px 18px;transition:all .3s cubic-bezier(.22,.61,.36,1);display:flex}.game-card:hover{color:var(--primary);background:var(--tag-bg);padding-left:24px;transform:translateY(-2px)}.game-icon{font-size:2rem}.game-info h3{margin:0 0 4px;font-size:1rem}.game-info p{color:var(--text-secondary);font-size:.9rem}.game-level{background:var(--gradient-1);color:var(--color-white);border-radius:10px;margin-top:4px;padding:2px 10px;font-size:.8rem;font-weight:600;display:inline-block}.anime-section{margin-bottom:24px}.character-grid{flex-wrap:wrap;gap:10px;display:flex}.char-card{color:var(--text);border-radius:10px;align-items:center;gap:8px;padding:8px 16px;transition:all .2s;display:flex}.char-card:hover{color:var(--primary);background:var(--tag-bg);transform:translateY(-2px)}.char-icon{font-size:1.3rem}.char-name{font-size:.95rem;font-weight:500}.project-card{color:var(--text);border-radius:12px;align-items:center;gap:14px;margin-bottom:6px;padding:14px 18px;transition:all .3s cubic-bezier(.22,.61,.36,1);display:flex}.project-card:hover{color:var(--primary);background:var(--tag-bg);padding-left:24px;transform:translateY(-2px)}.project-icon{color:var(--text);font-size:1.5rem}.project-info h4{margin:0;font-size:1rem}.project-info p{color:var(--text-secondary);font-size:.85rem}.project-arrow{color:var(--text-muted);font-size:.85rem}.github-calendar{margin:24px 0;padding:16px 0}.github-calendar h3{margin-top:0}.calendar-wrapper{padding:10px 0}.calendar-wrapper svg{max-width:100%}.calendar-wrapper rect[data-level]{outline:none;transition:stroke .15s}.calendar-wrapper rect[data-level]:hover{stroke:var(--primary);stroke-width:1.5px}.github-link{text-align:center;margin-top:10px}.react-activity-calendar__tooltip{z-index:1001;background:var(--bg-overlay);width:max-content;max-width:calc(100vw - 20px);color:var(--text);border-radius:8px;padding:6px 12px;font-size:.8rem;font-weight:500;box-shadow:0 4px 12px #0000004d}.react-activity-calendar__tooltip[data-color-scheme=dark]{background:var(--color-white,#fff);color:var(--dark-bg,#1c1917)}.react-activity-calendar__tooltip-arrow{fill:var(--dark-bg,#1c1917)}.react-activity-calendar__tooltip[data-color-scheme=dark] .react-activity-calendar__tooltip-arrow{fill:var(--color-white,#fff)}.bilibili-feed{margin-top:24px;padding:16px 0}.bilibili-feed h3{align-items:center;gap:8px;margin-top:0;display:flex}.loading-text{color:var(--text-muted)}.bilibili-link-btn{background:var(--bilibili-pink);color:var(--color-white);border-radius:10px;align-items:center;gap:8px;margin-top:10px;padding:10px 20px;font-weight:500;transition:all .2s;display:inline-flex}.bilibili-link-btn:hover{background:var(--bilibili-pink-hover);color:var(--color-white);transform:translateY(-1px)}.feed-list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.feed-item{border-radius:10px;padding:10px 14px;transition:all .2s}.feed-item:hover{background:var(--tag-bg);transform:translateY(-1px)}.feed-text{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.feed-link{color:var(--accent-blue);font-size:.8rem}.links-grid{flex-direction:column;gap:6px;display:flex}.link-card{color:var(--text);border-radius:12px;align-items:center;gap:14px;padding:14px 18px;transition:all .3s cubic-bezier(.22,.61,.36,1);display:flex}.link-card:hover{color:var(--primary);background:var(--tag-bg);padding-left:24px;transform:translateY(-2px)}.link-icon{font-size:1.5rem}.link-info{flex:1}.link-name{font-size:.95rem;font-weight:600;display:block}.link-desc{color:var(--text-secondary);font-size:.8rem;display:block}.link-arrow{color:var(--text-muted);font-size:.85rem}.app-footer{scroll-snap-align:start;text-align:center;color:var(--text-muted);box-sizing:border-box;z-index:2;border-top:1px solid var(--border);width:100%;padding:24px 20px;font-size:.85rem;position:relative}.app-footer p{margin:4px 0}.footer-quote{color:var(--accent-pink);font-style:italic}.back-to-top{border:2px solid var(--border);background:var(--bg);width:46px;height:46px;color:var(--primary);cursor:pointer;opacity:0;visibility:hidden;z-index:999;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;transition:all .3s;display:flex;position:fixed;bottom:30px;right:30px;transform:translateY(20px)}.back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top:hover{background:var(--gradient-1);color:var(--color-white);box-shadow:0 8px 24px var(--primary);border-color:#0000;transform:translateY(-3px)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--primary-light)}@media (width<=768px){.top-bar{text-align:center;flex-direction:column;gap:8px;padding:12px 0}.top-bar-left{flex-direction:column;gap:2px}.site-title{font-size:1.4rem}.tab-bar{flex-wrap:nowrap;gap:4px;padding:6px 0;overflow:visible}.tab-item{padding:8px 14px;font-size:.82rem}.page{padding:20px 16px}.snap-section{min-height:auto;padding:20px 16px}.snap-container{scroll-snap-type:none;height:auto;overflow-y:visible}.game-cards{grid-template-columns:1fr}.quick-stats{flex-direction:column;align-items:center}.back-to-top{width:40px;height:40px;bottom:20px;right:20px}.global-sidebar{display:none}.app-body{padding:0}}
