.notif-tray{position:fixed;top:calc(var(--menu-height) + .6rem);right:1rem;z-index:500;display:flex;flex-direction:column;gap:.4rem;pointer-events:none}.notif{position:relative;width:351px;min-height:64px;display:flex;align-items:center;gap:.65rem;padding:.65rem .8rem;background:#f5f6f824;backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);border:1px solid rgba(255,255,255,.15);border-radius:1.2rem;box-shadow:0 4px 18px #00000040;cursor:pointer;pointer-events:auto;animation:notif-enter .34s cubic-bezier(.22,1,.36,1) both;user-select:none;-webkit-user-select:none;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Helvetica Neue,Helvetica,Arial,sans-serif}.notif:hover{background:#28282deb}.notif.is-leaving{animation:notif-leave .22s cubic-bezier(.55,0,1,.45) both;pointer-events:none}@keyframes notif-enter{0%{transform:translate(calc(100% + 1.5rem));opacity:0}to{transform:translate(0);opacity:1}}@keyframes notif-leave{0%{transform:translate(0);opacity:1}to{transform:translate(calc(100% + 1.5rem));opacity:0}}.notif-x{position:absolute;top:-.3rem;left:-.3rem;width:1.8rem;height:1.8rem;border-radius:50%;background:#000000d9;border:2px solid rgba(255,255,255,.3);color:#fff;font-size:1rem;font-family:inherit;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;opacity:0;transition:opacity .14s;z-index:10;line-height:1;box-shadow:0 2px 8px #0000004d}.notif:hover .notif-x{opacity:1}.notif-icon{width:2.6rem;height:2.6rem;border-radius:.6rem;object-fit:cover;flex-shrink:0}.notif-body{flex:1;min-width:0}.notif-title{font-size:.8rem;font-weight:700;color:#fff;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.notif-msg{font-size:.8rem;color:#ffffffe6;line-height:1.25;margin:0;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.notif-msg[data-lines="1"]{-webkit-line-clamp:1}.notif-msg[data-lines="2"]{-webkit-line-clamp:2}.notif-msg[data-lines="3"]{-webkit-line-clamp:3}.notif[data-line-count="1"]{min-height:58px}.notif[data-line-count="2"]{min-height:72px}.notif[data-line-count="3"]{min-height:86px}:root{--color-bg: #ffffff;--color-text: #111111;--color-text-muted: #5f6368;--color-accent: #0b84ff;--color-menu-bg: rgba(241, 242, 244, .92);--color-menu-border: rgba(0, 0, 0, .08);--color-menu-text: #1d1d1f;--color-wallpaper-fallback-top: #d7dbe4;--color-wallpaper-fallback-bottom: #bcc6d9;--font-primary: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-fallback: Times, sans-serif;--max-width: 1100px;--page-padding: 2rem;--menu-height: clamp(2.2rem, 3.1vh, 2.75rem);--dock-height: clamp(4rem, 7.1vh, 5.5rem);--workspace-side-padding: clamp(1.2rem, 2.4vw, 2rem);--workspace-top-padding: clamp(1.2rem, 2.2vh, 1.8rem);--workspace-bottom-padding: clamp(1.4rem, 2.5vh, 2rem)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-primary);background:var(--color-bg);color:var(--color-text);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}body{min-height:100vh;overflow:hidden}h1,h2,h3,h4{color:var(--color-text-muted);font-weight:600;line-height:1.2}h1{font-size:2.5rem}h2{font-size:1.75rem}h3{font-size:1.25rem}p{color:var(--color-text);margin-bottom:1rem}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}ul,ol{padding-left:1.5rem;margin-bottom:1rem}li{margin-bottom:.25rem}img{max-width:100%;height:auto;display:block}.desktop-shell{position:relative;min-height:100vh;overflow:hidden;isolation:isolate;background:#cfd5df}.desktop-wallpaper{position:fixed;inset:0;z-index:0;background-image:url(/images/wallpaper.jpg);background-size:cover;background-position:center;background-repeat:no-repeat}.desktop-wallpaper:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.22) 0%,transparent 12%),linear-gradient(180deg,#0a0b1300,#0a0b130f)}.desktop-menu{position:fixed;top:0;left:0;right:0;z-index:40;height:var(--menu-height);display:flex;align-items:center;justify-content:flex-start;gap:1rem;padding:0 max(1rem,env(safe-area-inset-right)) 0 max(1rem,env(safe-area-inset-left));background:#0000001a;backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);border-bottom:1px solid rgba(0,0,0,.12);box-shadow:0 18px 48px #0d111d1a,0 1px #ffffff80 inset}.menu-section{display:flex;align-items:center;justify-content:flex-start;min-width:0}.menu-section-left{gap:1.25rem}.menu-logo,.menu-focus-title,.menu-dropdown-trigger,.menu-nav-link,.menu-dropdown-panel a,.menu-dropdown-panel button{color:#ffffffd9;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Helvetica Neue,Arial,sans-serif;font-weight:500;font-size:.75rem}.menu-clock{color:#000000d9;text-decoration:none;font-size:.85rem;line-height:1;font-weight:400}.menu-nav-link{cursor:pointer}.menu-logo{display:inline-flex;align-items:center;justify-content:center;width:1.8rem;height:1.8rem;appearance:none;background:none;border:none;padding:0;cursor:pointer;user-select:none;-webkit-user-select:none;line-height:1}.menu-logo img{width:100%;height:100%;object-fit:contain}.menu-focus-title{font-weight:700;font-size:.82rem;color:#fffffff2;white-space:nowrap;user-select:none;-webkit-user-select:none;line-height:1.2;margin-top:.08rem;min-width:0}.menu-focus-title:empty{display:none}.menu-section-right{margin-left:auto}.menu-clock{color:#000000d9;white-space:nowrap;user-select:none;-webkit-user-select:none;cursor:default;letter-spacing:.01em}.menu-dropdown-group{position:relative;display:flex;align-items:center}.menu-dropdown-trigger{appearance:none;background:none;border:none;padding:0;font:inherit;font-size:.82rem;font-weight:550;cursor:pointer;color:#ffffffe6;text-align:left}.menu-dropdown-trigger:hover,.menu-dropdown-trigger:focus-visible,.menu-dropdown-panel a:hover,.menu-dropdown-panel button:hover{text-decoration:none;background:none;outline:none}.menu-dropdown-panel[hidden]{display:none}.menu-dropdown-panel{position:absolute;top:calc(100% + .25rem);left:0;min-width:10rem;display:flex;flex-direction:column;gap:0;padding:.15rem;border-radius:.5rem;border:1px solid rgba(255,255,255,.25);background:#0003;backdrop-filter:blur(25px) saturate(1.6);-webkit-backdrop-filter:blur(25px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);box-shadow:0 18px 48px #0d111d1f,0 1px #ffffff80 inset}.menu-dropdown-panel a,.menu-dropdown-panel button{appearance:none;display:flex;align-items:center;min-height:1.6rem;padding:.25rem .5rem;border:none;border-radius:.35rem;background:none;text-align:left;white-space:nowrap;cursor:pointer;font-size:.75rem}.menu-divider{height:1px;background:#fff3;margin:.35rem .5rem;flex-shrink:0}.menu-item-disabled{display:flex;align-items:center;min-height:1.6rem;padding:.25rem .5rem;border-radius:.35rem;color:#ffffff80;font-size:.75rem;text-align:left;white-space:nowrap;cursor:not-allowed;user-select:none}.desktop-workspace{position:relative;z-index:1;height:100vh;min-height:100vh;padding:calc(var(--menu-height) + var(--workspace-top-padding)) 0 calc(var(--dock-height) + var(--workspace-bottom-padding));overflow:visible}.desktop-workspace>*{position:relative;z-index:1}.hero{margin-bottom:3rem}.hero h1{color:var(--color-text);font-size:2.5rem;margin-bottom:.25rem}.hero .subtitle{color:var(--color-text-muted);font-size:1.06rem;margin-bottom:.5rem}.hero .tagline{color:var(--color-text-muted);font-size:.94rem}.section-heading{font-size:1.06rem;font-weight:600;color:var(--color-text-muted);margin-bottom:1.5rem;margin-top:2.5rem}.cards-list{display:flex;flex-direction:column;gap:2.5rem;list-style:none;padding:0}.card{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:start}.card-image img{width:100%;border-radius:4px;object-fit:cover}.card-content .card-title{color:var(--color-accent);font-size:1.2rem;font-weight:600;margin-bottom:.4rem}.card-content .card-meta{color:var(--color-text-muted);font-size:.82rem;margin-bottom:.5rem}.card-content .card-tagline{color:var(--color-text);font-size:.94rem}.detail-header{text-align:center;margin-bottom:2rem}.detail-header h1{color:var(--color-text);font-size:2rem;margin-bottom:.75rem}.detail-meta{display:flex;justify-content:center;gap:2rem;font-size:.82rem;color:var(--color-text-muted);margin-bottom:2rem}.detail-cover{width:100%;max-height:480px;object-fit:cover;border-radius:4px;margin-bottom:2.5rem}.detail-body{max-width:720px;margin:0 auto}.detail-body h2,.detail-body h3{margin-top:2rem;margin-bottom:.75rem}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:3rem}.about-links{display:flex;flex-direction:column;gap:.5rem}.about-tools{color:var(--color-text-muted);font-size:.82rem;margin-top:.5rem}.project-nav{margin-top:4rem;padding-top:1.5rem;border-top:1px solid #eee;display:flex;flex-direction:column;gap:.4rem;font-size:.94rem}.social-links{display:flex;gap:1rem;margin-top:1rem;font-size:.94rem}.lang-toggle{display:flex;gap:.4rem;justify-content:flex-end;margin-bottom:1.5rem}.lang-btn{background:none;border:1px solid var(--color-border, #ddd);border-radius:3px;padding:.2rem .65rem;font-size:.69rem;cursor:pointer;color:var(--color-text-muted);font-family:inherit;transition:all .12s}.lang-btn:hover{border-color:var(--color-text);color:var(--color-text)}.lang-btn.active{background:var(--color-text);color:var(--color-bg);border-color:var(--color-text)}body[data-lang=en] .lang-zh,body[data-lang=zh] .lang-en{display:none}@media(max-width:700px){:root{--page-padding: 1.25rem}body{background:var(--color-bg);overflow:auto}.desktop-shell{overflow:visible;background:var(--color-bg)}.desktop-wallpaper{display:none}.desktop-menu{position:static;height:auto;flex-wrap:wrap;justify-content:flex-start;gap:.9rem;padding:1rem var(--page-padding) 0;background:transparent;border-bottom:none;box-shadow:none}.menu-section-left{flex-wrap:wrap;gap:.65rem}.menu-dropdown-panel{position:static;margin-top:.35rem;min-width:0}.menu-focus-title{flex-basis:100%}.desktop-workspace{height:auto;min-height:auto;padding:1.2rem var(--page-padding) 2rem;overflow:visible}.card,.about-grid{grid-template-columns:1fr}.detail-meta{flex-direction:column;gap:.5rem}}
