.theme-toggle-wrapper[data-v-55ad31aa]{align-items:center;display:flex;position:relative}.theme-toggle-wrapper[data-v-55ad31aa]:after{content:"";pointer-events:none;width:164px;height:16px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.theme-toggle[data-v-55ad31aa]{width:36px;height:36px;color:var(--text-secondary);transition:color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.theme-toggle-wrapper.is-open[data-v-55ad31aa]:after{pointer-events:auto}.theme-toggle[data-v-55ad31aa]:hover,.theme-toggle[data-v-55ad31aa]:focus-visible,.theme-toggle-wrapper.is-open .theme-toggle[data-v-55ad31aa]{color:var(--accent);background:color-mix(in oklch, var(--bg-elevated) 72%, transparent);border-color:color-mix(in oklch, var(--accent) 24%, var(--border));transform:translateY(-1px)}.theme-toggle[data-v-55ad31aa]:focus-visible{box-shadow:0 0 0 1px color-mix(in oklch, var(--accent) 28%, transparent);outline:none}.theme-toggle[data-v-55ad31aa]:active{transform:translateY(0)}.rainbow-bar-container[data-v-55ad31aa]{background:color-mix(in oklch, var(--bg-elevated) 88%, transparent);border:1px solid var(--border);opacity:0;visibility:hidden;pointer-events:none;width:156px;box-shadow:0 10px 30px color-mix(in oklch, var(--text-primary) 8%, transparent);transition:opacity var(--transition-fast), transform var(--transition-fast), visibility var(--transition-fast);z-index:1;border-radius:8px;padding:10px 12px;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%,-4px)}.theme-toggle-wrapper.is-open .rainbow-bar-container[data-v-55ad31aa]{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%)}.rainbow-bar[data-v-55ad31aa]{cursor:pointer;background:linear-gradient(90deg,#f65555,#f6f655,#55f655,#55f6f6,#5555f6,#f655f6,#f65555);border-radius:999px;outline:none;width:100%;height:8px;position:relative}.rainbow-bar[data-v-55ad31aa]:focus-visible{box-shadow:0 0 0 2px color-mix(in oklch, var(--accent) 36%, transparent)}.rainbow-thumb[data-v-55ad31aa]{left:var(--hue-percent);border:2px solid var(--bg);background:var(--bg-elevated);width:14px;height:14px;box-shadow:0 0 0 1px color-mix(in oklch, var(--text-primary) 20%, transparent);border-radius:999px;position:absolute;top:50%;transform:translate(-50%,-50%)}.navbar[data-v-cfe32c81]{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:color-mix(in oklch, var(--bg) 92%, transparent);border-bottom:1px solid var(--border-subtle);transition:background var(--transition-base), border-color var(--transition-fast), backdrop-filter var(--transition-base);position:sticky;top:0}.navbar.is-home-top[data-v-cfe32c81]{background:color-mix(in oklch, var(--bg) 72%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-bottom-color:#0000}.nav-inner[data-v-cfe32c81]{justify-content:space-between;align-items:center;gap:16px;width:min(1100px,100% - 48px);height:68px;margin:0 auto;display:flex}.logo[data-v-cfe32c81]{letter-spacing:0;color:var(--text-primary);transition:color var(--transition-fast);font-family:Cormorant Garamond,serif;font-size:1.4rem}.logo[data-v-cfe32c81]:hover,.logo[data-v-cfe32c81]:focus-visible{color:var(--accent)}.logo[data-v-cfe32c81]:focus-visible{outline:none}.nav-links[data-v-cfe32c81]{align-items:center;gap:20px;display:flex}.nav-link[data-v-cfe32c81]{min-height:36px;color:var(--text-secondary);transition:color var(--transition-fast);justify-content:center;align-items:center;padding:0 12px;text-decoration:none;display:inline-flex;position:relative}.nav-link[data-v-cfe32c81]:after{content:"";transition:opacity var(--transition-fast), transform var(--transition-fast);opacity:0;transform-origin:100%;background:currentColor;border-radius:999px;height:1.5px;position:absolute;bottom:6px;left:12px;right:12px;transform:scaleX(0)}.nav-link[data-v-cfe32c81]:hover,.nav-link[data-v-cfe32c81]:focus-visible,.nav-link[data-v-cfe32c81]:active{color:var(--accent)}.nav-link[data-v-cfe32c81]:hover:after,.nav-link[data-v-cfe32c81]:focus-visible:after,.nav-link[data-v-cfe32c81]:active:after,.nav-link.active[data-v-cfe32c81]:after{opacity:1;transform-origin:0;transform:scaleX(1)}.nav-link.active[data-v-cfe32c81]{color:var(--accent)}.nav-link[data-v-cfe32c81]:focus-visible{outline:1px solid color-mix(in oklch, var(--accent) 32%, transparent);outline-offset:4px}.nav-actions[data-v-cfe32c81]{justify-content:flex-end;align-items:center;gap:12px;display:flex}.auth-panel[data-v-cfe32c81]{align-items:center;gap:6px;min-width:0;display:flex}.auth-user[data-v-cfe32c81]{min-width:0;min-height:36px;color:var(--text-secondary);transition:color var(--transition-fast);align-items:center;gap:10px;display:inline-flex}.auth-user[data-v-cfe32c81]:hover,.auth-user[data-v-cfe32c81]:focus-visible{color:var(--accent)}.auth-avatar[data-v-cfe32c81]{border:1px solid color-mix(in oklch, var(--border) 88%, transparent);background:var(--bg-elevated);border-radius:999px;flex:none;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.auth-avatar-fallback[data-v-cfe32c81]{color:var(--text-tertiary)}.auth-name[data-v-cfe32c81]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.login-link[data-v-cfe32c81],.icon-button[data-v-cfe32c81]{min-height:36px;color:var(--text-secondary);background:0 0;border:none;justify-content:center;align-items:center;gap:8px;padding:0 10px;display:inline-flex}.login-link[data-v-cfe32c81]:hover,.login-link[data-v-cfe32c81]:focus-visible,.icon-button[data-v-cfe32c81]:hover,.icon-button[data-v-cfe32c81]:focus-visible{color:var(--accent);background:0 0}.login-link[data-v-cfe32c81]:disabled{cursor:progress;color:var(--text-tertiary)}.icon-button[data-v-cfe32c81]{width:36px;padding:0}@media (width<=720px){.nav-inner[data-v-cfe32c81]{flex-wrap:wrap;width:min(100% - 24px,1100px);height:auto;padding:14px 0}.nav-links[data-v-cfe32c81]{order:3;justify-content:flex-start;gap:12px;width:100%;padding-bottom:2px;overflow-x:auto}.nav-actions[data-v-cfe32c81]{margin-left:auto}.auth-name[data-v-cfe32c81]{max-width:96px}}.app-shell[data-v-8a99098b]{min-height:100vh}:root{--hue:58;--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-6:48px;--space-8:64px;--space-12:96px;--space-16:128px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--transition-fast:.2s ease;--transition-base:.3s ease;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:oklch(.97 .015 var(--hue));--bg-elevated:oklch(.94 .02 var(--hue));--text-primary:oklch(.25 .025 var(--hue));--text-secondary:oklch(.45 .04 var(--hue));--text-tertiary:oklch(.6 .03 var(--hue));--accent:oklch(.5 .18 var(--hue));--accent-hover:oklch(.4 .22 var(--hue));--border:oklch(.8 .025 var(--hue));--border-subtle:oklch(.85 .02 var(--hue));--article-mark-accent:color-mix(in oklab, var(--accent) 18%, transparent);--article-mark-warm:oklch(92% .06 65);--article-mark-green:oklch(90% .07 150);--article-mark-rose:oklch(92% .06 20);--syntax-keyword:oklch(.46 .18 calc(var(--hue) + 230));--syntax-string:oklch(.45 .16 calc(var(--hue) + 92));--syntax-number:oklch(.48 .17 calc(var(--hue) + 35));--syntax-function:oklch(.43 .17 calc(var(--hue) + 165));--syntax-operator:oklch(.44 .16 calc(var(--hue) + 285));--syntax-comment:oklch(.57 .04 var(--hue))}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:oklch(.22 .02 var(--hue));--bg-elevated:oklch(.2 .025 var(--hue));--text-primary:oklch(1 .03 var(--hue));--text-secondary:oklch(.95 .04 var(--hue));--text-tertiary:oklch(.8 .04 var(--hue));--accent:oklch(.7 .14 var(--hue));--accent-hover:oklch(.8 .22 var(--hue));--border:oklch(.3 .025 var(--hue));--border-subtle:oklch(.25 .02 var(--hue));--article-mark-accent:color-mix(in oklab, var(--accent) 26%, transparent);--article-mark-warm:oklch(32% .08 65);--article-mark-green:oklch(32% .08 150);--article-mark-rose:oklch(32% .08 20);--syntax-keyword:oklch(.76 .14 calc(var(--hue) + 230));--syntax-string:oklch(.76 .13 calc(var(--hue) + 92));--syntax-number:oklch(.78 .14 calc(var(--hue) + 35));--syntax-function:oklch(.78 .13 calc(var(--hue) + 165));--syntax-operator:oklch(.77 .13 calc(var(--hue) + 285));--syntax-comment:oklch(.72 .04 var(--hue))}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:oklch(.97 .015 var(--hue));--bg-elevated:oklch(.94 .02 var(--hue));--text-primary:oklch(.25 .025 var(--hue));--text-secondary:oklch(.45 .04 var(--hue));--text-tertiary:oklch(.6 .03 var(--hue));--accent:oklch(.5 .18 var(--hue));--accent-hover:oklch(.4 .22 var(--hue));--border:oklch(.8 .025 var(--hue));--border-subtle:oklch(.85 .02 var(--hue));--article-mark-accent:color-mix(in oklab, var(--accent) 18%, transparent);--article-mark-warm:oklch(92% .06 65);--article-mark-green:oklch(90% .07 150);--article-mark-rose:oklch(92% .06 20);--syntax-keyword:oklch(.46 .18 calc(var(--hue) + 230));--syntax-string:oklch(.45 .16 calc(var(--hue) + 92));--syntax-number:oklch(.48 .17 calc(var(--hue) + 35));--syntax-function:oklch(.43 .17 calc(var(--hue) + 165));--syntax-operator:oklch(.44 .16 calc(var(--hue) + 285));--syntax-comment:oklch(.57 .04 var(--hue))}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html,body,#app{min-height:100%}body{background:var(--bg);color:var(--text-primary);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;transition:background var(--transition-base), color var(--transition-base);font-family:LXGW WenKai,serif;line-height:1.8}a{color:inherit;transition:color var(--transition-fast);text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}button{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;transition:border-color var(--transition-fast), background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);background:0 0}button:hover{border-color:var(--accent);background:var(--bg-elevated)}button:active{transform:translateY(1px)}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,textarea,select{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);width:100%;color:var(--text-primary);transition:border-color var(--transition-fast), background var(--transition-fast);padding:10px 12px}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}input:hover,textarea:hover,select:hover,input:focus,textarea:focus,select:focus{border-color:var(--accent)}@font-face{font-family:LXGW WenKai;src:url(/fonts/LXGWWenKai-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-Light.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-LightItalic.woff2)format("woff2");font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-Italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-MediumItalic.woff2)format("woff2");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-SemiBoldItalic.woff2)format("woff2");font-weight:600;font-style:italic;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-BoldItalic.woff2)format("woff2");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-Thin.ttf.woff2)format("woff2");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-ThinItalic.ttf.woff2)format("woff2");font-weight:100;font-style:italic;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-ExtraLight.ttf.woff2)format("woff2");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-ExtraLightItalic.ttf.woff2)format("woff2");font-weight:200;font-style:italic;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-Light.ttf.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-LightItalic.ttf.woff2)format("woff2");font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-Regular.ttf.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-Italic.ttf.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-Medium.ttf.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-MediumItalic.ttf.woff2)format("woff2");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-SemiBold.ttf.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-SemiBoldItalic.ttf.woff2)format("woff2");font-weight:600;font-style:italic;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-Bold.ttf.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-BoldItalic.ttf.woff2)format("woff2");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-ExtraBold.ttf.woff2)format("woff2");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Maple Mono NR;src:url(/fonts/MapleMonoNR-ExtraBoldItalic.ttf.woff2)format("woff2");font-weight:800;font-style:italic;font-display:swap}:root{--font-body:"LXGW WenKai", serif;--font-heading:"Cormorant Garamond", serif;--font-mono:"Maple Mono NR", "Maple Mono NR NF CN", "Maple Mono NF CN", "Maple Mono CN", monospace;--font-article:var(--font-mono)}body{font-family:var(--font-body)}h1,h2,h3,h4,h5,h6{color:var(--text-primary);font-weight:500;line-height:1.35}h1,h2{font-family:var(--font-heading)}h3,h4,h5,h6{font-family:var(--font-body)}small,time,.meta{color:var(--text-tertiary);font-family:var(--font-heading)}code,pre,kbd,samp{font-family:var(--font-mono)}.article-content{color:var(--text-secondary);font-family:var(--font-article);text-wrap:pretty;font-size:16px;line-height:1.9}.article-content>*+*{margin-top:var(--space-3)}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{color:var(--text-primary);font-family:var(--font-article);line-height:1.4}.article-content h1,.article-content h2{font-family:var(--font-article)}.article-content p{margin:0}.article-content a{color:var(--accent);text-underline-offset:.15em;text-decoration:underline}.article-content a:hover{color:var(--accent-hover)}.article-content ul,.article-content ol{padding-left:var(--space-3)}.article-content li+li{margin-top:var(--space-1)}.article-content blockquote{padding:var(--space-2) var(--space-3);border-left:2px solid var(--accent);background:var(--bg-elevated);color:var(--text-secondary);margin:0}.article-content hr{border:0;border-top:1px solid var(--border-subtle)}.article-content pre{padding:var(--space-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--text-primary);font-family:var(--font-mono);margin:0;font-size:14px;line-height:1.7;overflow-x:auto}.article-content pre code{font-size:inherit}.article-content :not(pre)>code{border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--accent);font-family:var(--font-mono);padding:2px 6px;font-size:.85em}.article-content img{border-radius:var(--radius-lg);max-width:100%;height:auto;display:block}.article-content table{border-collapse:collapse;width:100%;font-size:14px}.article-content th,.article-content td{border:1px solid var(--border-subtle);text-align:left;vertical-align:top;padding:10px 12px}.article-content th{color:var(--text-primary);background:var(--bg-elevated);font-weight:600}
