@font-face{font-family:DM Mono;src:url(../assets/fonts/dm-mono/dm-mono-v16-latin-300.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:DM Mono;src:url(../assets/fonts/dm-mono/dm-mono-v16-latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:DM Mono;src:url(../assets/fonts/dm-mono/dm-mono-v16-latin-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(../assets/fonts/ibm-plex-sans/ibm-plex-sans-v23-latin-200.woff2) format("woff2");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(../assets/fonts/ibm-plex-sans/ibm-plex-sans-v23-latin-300.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(../assets/fonts/ibm-plex-sans/ibm-plex-sans-v23-latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(../assets/fonts/ibm-plex-sans/ibm-plex-sans-v23-latin-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(../assets/fonts/ibm-plex-sans/ibm-plex-sans-v23-latin-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans SC;src:url(../assets/fonts/noto-sans-sc/noto-sans-sc-v39-chinese-simplified_latin-300.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans SC;src:url(../assets/fonts/noto-sans-sc/noto-sans-sc-v39-chinese-simplified_latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans SC;src:url(../assets/fonts/noto-sans-sc/noto-sans-sc-v39-chinese-simplified_latin-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans SC;src:url(../assets/fonts/noto-sans-sc/noto-sans-sc-v39-chinese-simplified_latin-700.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:"Noto Serif SC";src:url(../assets/fonts/noto-serif-sc/noto-serif-sc-v34-chinese-simplified_latin-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"Noto Serif SC";src:url(../assets/fonts/noto-serif-sc/noto-serif-sc-v34-chinese-simplified_latin-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:"Noto Serif SC";src:url(../assets/fonts/noto-serif-sc/noto-serif-sc-v34-chinese-simplified_latin-700.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--color-primary: #0918E5;--color-secondary: #0087A1;--color-accent: #4E36C5;--color-black: #000000;--color-white: #ffffff;--color-gray-light: #f5f5f5;--color-gray-medium: #999999;--color-gray-dark: #333333;--font-dm-mono: "DM Mono", monospace;--font-ibm-plex: "IBM Plex Sans", sans-serif;--font-noto-sans-sc: "Noto Sans SC", sans-serif;--font-noto-serif-sc: "Noto Serif SC", serif;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-base: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 30px;--font-size-4xl: 36px;--font-size-5xl: 48px;--font-size-6xl: 60px;--line-height-tight: 19.200000762939453px;--line-height-normal: 19.200000762939453px;--line-height-relaxed: 31.248001098632812px;--font-weight-light: 300;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--letter-spacing-tight: -.01em;--letter-spacing-normal: 0em;--letter-spacing-wide: .01em;--paragraph-spacing-tight: 0px;--paragraph-spacing-normal: 16px;--paragraph-spacing-relaxed: 24px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--spacing-3xl: 64px;--spacing-4xl: 96px;--transition-fast: .2s;--transition-normal: .3s;--transition-slow: .5s;--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-ibm-plex);font-size:var(--font-size-base);color:var(--color-black);background-color:var(--color-white);overflow-x:hidden}.page-container{width:100vw;height:100vh;position:relative;overflow:hidden}#app{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.ui-layer{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none}.ui-layer>*{pointer-events:auto}.scroll-area{overflow-y:auto;overscroll-behavior:contain}.scroll-area::-webkit-scrollbar{width:8px}.scroll-area::-webkit-scrollbar-track{background:transparent}.scroll-area::-webkit-scrollbar-thumb{border-radius:4px;background:#00000040}.scroll-area::-webkit-scrollbar-thumb:hover{background:#0006}.scroll-area{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.25) transparent}.button{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-sm) var(--spacing-md);border:2px solid var(--color-primary);background:transparent;color:var(--color-primary);font-family:var(--font-dm-mono);font-size:var(--font-size-base);font-weight:400;text-decoration:none;cursor:pointer;transition:all var(--transition-normal) ease;border-radius:0}.button:hover{background:var(--color-primary);color:var(--color-white)}.button:active{transform:scale(.95)}.button--primary{background:var(--color-primary);color:var(--color-white)}.button--primary:hover{background:transparent;color:var(--color-primary)}.language-switch{display:flex;gap:var(--spacing-sm)}.language-switch button{background:none;border:none;font-family:var(--font-dm-mono);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-normal) ease;padding:var(--spacing-xs) var(--spacing-sm)}.language-switch button.active{color:var(--color-primary);font-weight:600}.language-switch button.inactive{color:var(--color-gray-medium)}.text-vertical{writing-mode:vertical-rl;text-orientation:mixed}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.fade-in{animation:fadeIn var(--transition-normal) ease-in-out}.fade-out{animation:fadeOut var(--transition-normal) ease-in-out}.slide-up{animation:slideUp var(--transition-normal) ease-out}.slide-down{animation:slideDown var(--transition-normal) ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes breathe{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}.breathe{animation:breathe 3s ease-in-out infinite}@keyframes typing{0%{width:0}to{width:100%}}@keyframes blink-caret{0%,to{border-color:transparent}50%{border-color:var(--color-primary)}}.typing-effect{overflow:hidden;border-right:2px solid var(--color-primary);white-space:nowrap;animation:typing 3s steps(40,end),blink-caret .75s step-end infinite}@media (max-width: 1440px){:root{--font-size-6xl: 48px;--font-size-5xl: 36px;--font-size-4xl: 30px}}@media (max-width: 1024px){:root{--font-size-6xl: 36px;--font-size-5xl: 30px;--font-size-4xl: 24px}}.hidden{display:none!important}.visible{display:block!important}.opacity-0{opacity:0}.opacity-100{opacity:1}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.theme-gradient{background:linear-gradient(45deg,var(--color-primary),var(--color-secondary),var(--color-accent),var(--color-black));background-size:400% 400%;animation:gradientShift 8s ease infinite}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}
