:root{--font-sans: "Noto Sans TC Variable", system-ui, -apple-system, "PingFang TC", "Microsoft JhengHei", sans-serif;--font-mono: "JetBrains Mono Variable", ui-monospace, "SFMono-Regular", "Menlo", monospace;--measure: 68ch;--nav-h: 4rem;--radius: 2px;--ease-slow: cubic-bezier(.22, .61, .36, 1);--dur-drift: 1.2s;--ink-navy: #152443}:root,:root[data-theme=dark]{color-scheme:dark;--bg: #05070b;--fg: #eef1f6;--muted: #79828f;--line: rgba(238, 241, 246, .14);--surface: #0b0e15;--logo-halo: rgba(5, 7, 11, .92);--star-color: rgba(238, 241, 246, .9);--selection-bg: rgba(238, 241, 246, .22);--selection-fg: #ffffff}:root[data-theme=light]{color-scheme:light;--bg: #f2f1ed;--fg: var(--ink-navy);--muted: #6c7488;--line: rgba(21, 36, 67, .16);--surface: #fbfaf6;--logo-halo: rgba(242, 241, 237, .92);--crater-color: rgba(21, 36, 67, .05);--selection-bg: rgba(21, 36, 67, .16);--selection-fg: var(--ink-navy)}@font-face{font-family:Noto Sans TC Variable;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/noto-sans-tc-subset.woff2) format("woff2-variations")}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{min-height:100vh;background-color:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:1rem;line-height:1.75;font-weight:400;letter-spacing:.01em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .6s var(--ease-slow),color .6s var(--ease-slow)}img,picture,svg,canvas{display:block;max-width:100%}svg{height:auto}h1,h2,h3,h4{font-family:var(--font-sans);font-weight:700;line-height:1.25;letter-spacing:.005em;text-wrap:balance}h1{font-size:clamp(2rem,5vw,3.25rem);font-weight:700}h2{font-size:clamp(1.5rem,3.2vw,2.125rem)}h3{font-size:clamp(1.2rem,2.4vw,1.5rem)}p{max-width:var(--measure);text-wrap:pretty}p+p,p+ul,p+ol,ul+p,ol+p{margin-top:1.25rem}ul,ol{padding-left:1.4em}.prose li+li{margin-top:.35rem}strong{font-weight:700}small{font-size:.8125rem}.mono{font-family:var(--font-mono);font-weight:500;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-variant-numeric:tabular-nums}a{color:inherit;text-decoration:none;text-underline-offset:.22em;text-decoration-thickness:1px;transition:opacity .3s var(--ease-slow),text-decoration-color .3s var(--ease-slow)}.prose a{text-decoration:underline;text-decoration-color:var(--line)}.prose a:hover{text-decoration-color:var(--fg)}a:hover{opacity:.72}:focus-visible{outline:2px solid var(--fg);outline-offset:3px;border-radius:var(--radius)}hr{border:none;border-top:1px solid var(--line);margin:2.5rem 0}::selection{background:var(--selection-bg);color:var(--selection-fg)}.container{width:100%;max-width:72rem;margin-inline:auto;padding-inline:clamp(1.25rem,5vw,3rem)}.prose{max-width:var(--measure)}.prose>*+*{margin-top:1.25rem}.prose h2,.prose h3{margin-top:2.5rem}:root[data-cursor=custom],:root[data-cursor=custom] *{cursor:none!important}.tuco-cursor{position:fixed;top:0;left:0;z-index:9999;pointer-events:none}.tuco-cursor__dot,.tuco-cursor__ring{position:fixed;top:0;left:0;will-change:transform}.tuco-cursor__dot{width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:var(--fg)}.tuco-cursor__ring{width:34px;height:34px;margin:-17px 0 0 -17px;border:1px solid color-mix(in srgb,var(--fg) 55%,transparent);border-radius:50%;transition:border-color .3s var(--ease-slow)}.tuco-cursor__tick{position:absolute;background:var(--fg);opacity:0;transition:opacity .35s var(--ease-slow)}.tuco-cursor__tick--n,.tuco-cursor__tick--s{left:50%;width:1px;height:5px;margin-left:-.5px}.tuco-cursor__tick--e,.tuco-cursor__tick--w{top:50%;width:5px;height:1px;margin-top:-.5px}.tuco-cursor__tick--n{top:-1px}.tuco-cursor__tick--s{bottom:-1px}.tuco-cursor__tick--e{right:-1px}.tuco-cursor__tick--w{left:-1px}.tuco-cursor.is-hover .tuco-cursor__ring{border-color:color-mix(in srgb,var(--fg) 85%,transparent)}.tuco-cursor.is-hover .tuco-cursor__tick{opacity:.9}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.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}.backdrop[data-astro-cid-2id6qcbw]{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.sky[data-astro-cid-2id6qcbw],.moon[data-astro-cid-2id6qcbw]{position:absolute;inset:0;opacity:0;transition:opacity .8s var(--ease-slow)}:root[data-theme=dark] .sky[data-astro-cid-2id6qcbw]{opacity:1}:root[data-theme=light] .moon[data-astro-cid-2id6qcbw]{opacity:1}.stars[data-astro-cid-2id6qcbw]{position:absolute;inset:-50%;background-repeat:repeat}.stars--far[data-astro-cid-2id6qcbw]{background-image:radial-gradient(1px 1px at 40px 60px,var(--star-color),transparent),radial-gradient(1px 1px at 130px 180px,var(--star-color),transparent),radial-gradient(1px 1px at 220px 90px,var(--star-color),transparent),radial-gradient(1px 1px at 300px 240px,var(--star-color),transparent),radial-gradient(1px 1px at 90px 300px,var(--star-color),transparent);background-size:340px 340px;opacity:.5}.stars--near[data-astro-cid-2id6qcbw]{background-image:radial-gradient(1.4px 1.4px at 180px 120px,var(--star-color),transparent),radial-gradient(1.4px 1.4px at 460px 380px,var(--star-color),transparent),radial-gradient(1.4px 1.4px at 620px 200px,var(--star-color),transparent);background-size:720px 620px;opacity:.75;animation:drift 240s linear infinite;will-change:transform}.twinkle[data-astro-cid-2id6qcbw]{position:absolute;width:2px;height:2px;border-radius:50%;background:var(--star-color);box-shadow:0 0 4px 1px var(--star-color);opacity:.25;animation:twinkle var(--tw-dur, 8s) ease-in-out var(--tw-delay, 0s) infinite;will-change:opacity,transform}@keyframes twinkle{0%,to{opacity:.18;transform:scale(.9)}50%{opacity:.95;transform:scale(1.15)}}.meteors[data-astro-cid-2id6qcbw]{position:absolute;inset:0}.meteors[data-astro-cid-2id6qcbw] .meteor{position:absolute;width:var(--m-len, 160px);height:1px;border-radius:1px;background:linear-gradient(90deg,transparent,var(--star-color));opacity:0;will-change:transform,opacity}.meteors[data-astro-cid-2id6qcbw] .meteor:after{content:"";position:absolute;right:-1px;top:-1px;width:3px;height:3px;border-radius:50%;background:var(--star-color);box-shadow:0 0 6px 1px var(--star-color)}@keyframes drift{0%{transform:translateZ(0)}to{transform:translate3d(-60px,-40px,0)}}.moon[data-astro-cid-2id6qcbw]{background-color:transparent;background-image:radial-gradient(circle at 18% 28%,transparent 52px,var(--crater-color) 53px 55px,transparent 56px),radial-gradient(circle at 74% 20%,transparent 34px,var(--crater-color) 35px 36px,transparent 37px),radial-gradient(circle at 62% 66%,transparent 78px,var(--crater-color) 79px 82px,transparent 83px),radial-gradient(circle at 30% 78%,transparent 26px,var(--crater-color) 27px 28px,transparent 29px),radial-gradient(circle at 88% 72%,transparent 44px,var(--crater-color) 45px 47px,transparent 48px),radial-gradient(circle at 45% 40%,transparent 18px,var(--crater-color) 19px 20px,transparent 21px);background-repeat:no-repeat}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}.theme-toggle[data-astro-cid-x3pjskd3]{display:grid;place-items:center;width:2.5rem;height:2.5rem;padding:0;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--fg);cursor:pointer;transition:border-color .3s var(--ease-slow),transform .5s var(--ease-slow),opacity .3s var(--ease-slow)}.theme-toggle[data-astro-cid-x3pjskd3]:hover{border-color:var(--fg);transform:rotate(-12deg)}.phase[data-astro-cid-x3pjskd3]{grid-area:1 / 1;transition:opacity .5s var(--ease-slow)}.phase--full[data-astro-cid-x3pjskd3]{opacity:0}.phase--new[data-astro-cid-x3pjskd3]{opacity:1}:root[data-theme=light] .phase--full[data-astro-cid-x3pjskd3]{opacity:1}:root[data-theme=light] .phase--new[data-astro-cid-x3pjskd3]{opacity:0}.site-header[data-astro-cid-37fxchfa]{position:sticky;top:0;z-index:50;backdrop-filter:saturate(120%) blur(8px);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 78%,transparent);transition:background-color .6s var(--ease-slow),border-color .6s var(--ease-slow);will-change:transform}.header-inner[data-astro-cid-37fxchfa]{display:flex;align-items:center;gap:1.5rem;height:var(--nav-h)}.brand[data-astro-cid-37fxchfa]{display:inline-flex;align-items:center;gap:.6rem;margin-right:auto}.brand[data-astro-cid-37fxchfa]:hover{opacity:1}.brand[data-astro-cid-37fxchfa] .logo{transition:transform .5s var(--ease-slow)}.brand[data-astro-cid-37fxchfa]:hover .logo{transform:rotate(-8deg) scale(1.06)}.brand__name[data-astro-cid-37fxchfa]{font-family:var(--font-mono);font-weight:500;font-size:.9rem;letter-spacing:.18em}.nav__list[data-astro-cid-37fxchfa]{display:flex;align-items:center;gap:clamp(1rem,3vw,2.25rem);list-style:none;padding:0;margin:0}.nav__link[data-astro-cid-37fxchfa]{position:relative;font-size:.95rem;padding-block:.35rem;color:var(--muted);transition:color .3s var(--ease-slow)}.nav__link[data-astro-cid-37fxchfa]:hover{color:var(--fg);opacity:1}.nav__link[data-astro-cid-37fxchfa][aria-current=page]{color:var(--fg)}.nav__link[data-astro-cid-37fxchfa][aria-current=page]:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--fg)}.site-main[data-astro-cid-37fxchfa]{min-height:calc(100vh - var(--nav-h) - 6rem);padding-block:clamp(2.5rem,6vw,5rem)}.site-footer[data-astro-cid-37fxchfa]{border-top:1px solid var(--line);padding-block:2rem}.footer-inner[data-astro-cid-37fxchfa]{display:flex;align-items:center;justify-content:space-between;gap:1rem 2rem;flex-wrap:wrap}.footer-brand[data-astro-cid-37fxchfa]{display:inline-flex;align-items:center;gap:.5rem}.footer-brand__name[data-astro-cid-37fxchfa]{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.16em;color:var(--muted)}.footer-meta[data-astro-cid-37fxchfa]{display:inline-flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.footer-coord[data-astro-cid-37fxchfa]{color:var(--fg);opacity:.85}.skip-link[data-astro-cid-37fxchfa]{position:absolute;left:.75rem;top:-3rem;z-index:100;padding:.5rem .9rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);transition:top .2s var(--ease-slow)}.skip-link[data-astro-cid-37fxchfa]:focus{top:.75rem}@media(max-width:560px){.header-inner[data-astro-cid-37fxchfa]{gap:.75rem}.brand__name[data-astro-cid-37fxchfa]{display:none}.nav__list[data-astro-cid-37fxchfa]{gap:1.1rem}.nav__link[data-astro-cid-37fxchfa]{font-size:.9rem}.footer-inner[data-astro-cid-37fxchfa]{justify-content:center;text-align:center}}
