.search-trigger{display:flex;align-items:center;gap:.375rem;padding:.25rem .625rem;font-size:.78rem;color:var(--text-3);background:none;border:1px solid var(--border-1);border-radius:.3125rem;cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s,background .15s}.search-trigger:hover{color:var(--text-1);border-color:var(--border-2);background:#cdd6f40d}.search-trigger-shortcut{display:flex;align-items:center}.search-trigger-shortcut kbd{font-family:var(--font-mono);font-size:.6875rem;color:var(--text-4);background:#cdd6f40f;border:1px solid rgba(205,214,244,.1);border-radius:.25rem;padding:.0625rem .25rem;line-height:1.4}.search-trigger-shortcut .search-trigger-mod{border-right:none;border-radius:.25rem 0 0 .25rem;padding-right:.125rem}.search-trigger-shortcut kbd:last-child:not(.search-trigger-mod){border-radius:0 .25rem .25rem 0;padding-left:.125rem}.search-overlay{position:fixed;inset:0;z-index:500;display:flex;align-items:flex-start;justify-content:center;padding-top:clamp(3rem,8vh,6rem);background:#11111bb8;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .15s}.search-overlay[aria-hidden=false]{opacity:1;pointer-events:auto}.search-dialog{width:min(42rem,calc(100vw - 2rem));max-height:min(30rem,calc(100vh - 8rem));background:var(--bg-1);border:1px solid var(--border-2);border-radius:.625rem;box-shadow:0 24px 64px #0000008c;display:flex;flex-direction:column;overflow:hidden;transform:translateY(-.375rem);transition:transform .15s}.search-overlay[aria-hidden=false] .search-dialog{transform:translateY(0)}.search-header{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;border-bottom:1px solid var(--border-1);flex-shrink:0}.search-header-icon{color:var(--text-3);flex-shrink:0}.search-input{flex:1;min-width:0;background:none;border:none;outline:none;font-family:var(--font-body);font-size:.9375rem;color:var(--text);caret-color:var(--green)}.search-input::placeholder{color:var(--text-4)}.search-input::-webkit-search-cancel-button{display:none}.search-esc-btn{background:none;border:none;cursor:pointer;padding:0;flex-shrink:0}.search-esc-btn kbd{font-family:var(--font-mono);font-size:.6875rem;color:var(--text-4);background:#cdd6f40f;border:1px solid var(--border-1);border-radius:.25rem;padding:.125rem .375rem;transition:color .1s,border-color .1s}.search-esc-btn:hover kbd{color:var(--text-2);border-color:var(--border-2)}.search-results{overflow-y:auto;flex:1;padding:.375rem;min-height:0}.search-result{border-radius:.375rem}.search-result-link{display:flex;flex-direction:column;gap:.1875rem;padding:.625rem .75rem;text-decoration:none;border-radius:.375rem;transition:background .1s}.search-result:hover .search-result-link,.search-result--selected .search-result-link{background:#cdd6f412}.search-result-title{font-size:.875rem;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-excerpt{font-size:.8125rem;color:var(--text-3);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.search-result-excerpt mark{background:transparent;color:var(--green);font-weight:500}.search-no-results{padding:2rem 1rem;text-align:center;color:var(--text-3);font-size:.875rem}.search-footer{display:flex;gap:1rem;align-items:center;padding:.5rem 1rem;border-top:1px solid var(--border);flex-shrink:0}.search-footer-hint{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--text-4)}.search-footer-hint kbd{font-family:var(--font-mono);font-size:.625rem;color:var(--text-3);background:#cdd6f40f;border:1px solid var(--border-1);border-radius:.25rem;padding:.0625rem .25rem}@media(max-width:53.75rem){.search-trigger-label,.search-trigger-shortcut{display:none}}@media(max-width:30rem){.search-footer{display:none}}.site-nav{position:fixed;top:0;left:0;right:0;height:3.5rem;z-index:100;background:#1e1e2ed9;backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);border-bottom:1px solid rgba(205,214,244,.07)}.site-nav-inner{margin-inline:auto;padding-inline:clamp(1rem,4vw,3rem);height:100%;display:flex;align-items:center}.site-nav-menu-btn{display:none;align-items:center;justify-content:center;width:2.125rem;height:2.125rem;margin-right:.75rem;flex-shrink:0;background:none;border:1px solid var(--border-1);border-radius:.3125rem;color:var(--text-3);cursor:pointer;transition:color .15s,border-color .15s}.site-nav-menu-btn:hover{color:var(--green);border-color:var(--d-green-border, rgba(166, 227, 161, .35))}.site-nav-logo{flex-shrink:0;display:flex;align-items:center;opacity:.9;transition:opacity .15s;text-decoration:none}.site-nav-logo:hover{opacity:1}.site-nav-logo img{height:1.25rem;width:auto;display:block}.site-nav-links{display:flex;align-items:center;gap:.125rem;flex:1;margin-left:1.5rem}.site-nav-link{padding:.3125rem .625rem;font-size:.8125rem;color:var(--text-3);border-radius:.3125rem;text-decoration:none;transition:color .15s,background .15s}.site-nav-link:hover{color:var(--text);background:#cdd6f40d}.site-nav-right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.site-nav-stars{display:flex;align-items:center;gap:.3125rem;padding:.25rem .625rem;font-size:.75rem;color:var(--amber);border:1px solid rgba(249,226,175,.2);border-radius:999px;text-decoration:none;transition:border-color .15s,background .15s}.site-nav-stars:hover{border-color:var(--amber);background:var(--amber-dim)}.site-nav-lang{display:flex;align-items:center;gap:.3125rem;padding:.25rem .625rem;font-size:.78rem;color:var(--text-3);border:1px solid var(--border-1);border-radius:.3125rem;text-decoration:none;transition:color .15s,border-color .15s,background .15s}.site-nav-lang:hover{color:var(--green);border-color:#a6e3a159;background:#a6e3a10f}.site-nav-cta{padding:.375rem .875rem;font-size:.8125rem;font-weight:500;color:#11111b;background:var(--green);border-radius:.3125rem;text-decoration:none;transition:background .15s,box-shadow .15s}.site-nav-cta:hover{background:#b5e8b0;box-shadow:0 0 1rem #a6e3a166}@media(max-width:53.75rem){.site-nav-menu-btn{display:flex}}@media(max-width:40rem){.site-nav-links,.site-nav-stars{display:none}}@media(max-width:30rem){.site-nav-lang span{display:none}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{--font-body: GenSenRoundedTW, "GenSenRounded2 TW", sans-serif;--font-mono: JetBrainsMono, "JetBrains Mono", "IBM Plex Mono", ui-monospace, monospace;--bg: #1e1e2e;--bg-1: #313244;--bg-2: #45475a;--bg-3: #585b70;--border: rgba(205, 214, 244, .06);--border-1: rgba(205, 214, 244, .1);--border-2: rgba(205, 214, 244, .18);--text: #cdd6f4;--text-1: #bac2de;--text-2: #a6adc8;--text-3: #7f849c;--text-4: #6c7086;--green: #a6e3a1;--green-1: #94e2d5;--green-dim: rgba(166, 227, 161, .12);--green-glow: rgba(166, 227, 161, .25);--amber: #f9e2af;--amber-1: #fab387;--amber-dim: rgba(249, 226, 175, .1);--amber-glow: rgba(249, 226, 175, .22);--radius: .375rem;--radius-lg: .625rem}@supports (color: oklch(0 0 0)){:root{--bg: oklch(.17 .033 285.64);--bg-1: oklch(.23 .04 282.91);--bg-2: oklch(.32 .04 279.74);--bg-3: oklch(.41 .04 278.96);--text: oklch(.88 .04 272.28);--text-1: oklch(.79 .04 278.39);--text-2: oklch(.72 .04 277.21);--text-3: oklch(.58 .04 276.93);--text-4: oklch(.5 .04 278.47);--green: oklch(.88 .11 145.58);--green-1: oklch(.85 .07 190.58);--green-dim: oklch(.88 .11 145.58 / .12);--green-glow: oklch(.88 .11 145.58 / .25);--amber: oklch(.92 .08 84.37);--amber-1: oklch(.79 .11 49.12);--amber-dim: oklch(.92 .08 84.37 / .1);--amber-glow: oklch(.92 .08 84.37 / .22)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-body);font-size:16px;line-height:1.6;background:var(--bg);color:var(--text-1);scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}::view-transition-old(root),::view-transition-new(root){animation:none}}body{min-height:100vh}a{color:inherit;text-decoration:none}img,video{display:block;max-width:100%}button{font-family:var(--font-body);cursor:pointer;border:none;background:none}pre,code{font-family:var(--font-mono)}@keyframes spf-fade-in{0%{opacity:0}to{opacity:1}}@keyframes spf-fade-out{0%{opacity:1}to{opacity:0}}::view-transition-old(root){animation:.12s ease-in spf-fade-out both}::view-transition-new(root){animation:.18s ease-out spf-fade-in both}
