.lang{position:relative;font-family:var(--mono);font-size:12px}.lang>summary{list-style:none;cursor:pointer;color:var(--muted);display:flex;align-items:center;gap:6px;padding:5px 8px;border:1px solid transparent;border-radius:4px;min-height:24px}.lang>summary::-webkit-details-marker{display:none}.lang>summary:hover,.lang>summary:focus-visible,.lang[open]>summary{color:var(--fg);border-color:var(--line)}.lang>summary:after{content:"";width:0;height:0;border-left:3.5px solid transparent;border-right:3.5px solid transparent;border-top:4px solid currentColor}.lang ul{position:absolute;right:0;top:calc(100% + 5px);z-index:20;margin:0;padding:4px;list-style:none;min-width:130px;background:var(--panel);border:1px solid var(--line);border-radius:6px}.lang li+li{margin-top:2px}.lang a{display:block;padding:7px 10px;border-radius:3px;color:var(--muted);text-decoration:none;white-space:nowrap}.lang a:hover,.lang a:focus-visible{color:var(--fg);background:rgb(var(--blue-rgb) / .1)}.lang a[aria-current=true]{color:var(--blue)}:root{--blue-rgb: 77 163 255;--bg-rgb: 13 17 23;--panel-rgb: 20 26 35;--blue: rgb(var(--blue-rgb));--bg: rgb(var(--bg-rgb));--panel: rgb(var(--panel-rgb));--line: #1e2937;--fg: #e9eef5;--muted: #8a98ab;--on-blue: #04121f;--gutter: 22px;--maxw: 960px;--mono: ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:72px}body{margin:0;color:var(--fg);line-height:1.75;font-family:system-ui,-apple-system,Noto Sans TC,sans-serif;display:flex;flex-direction:column;min-height:100vh;background:linear-gradient(rgb(var(--blue-rgb) / .04) 1px,transparent 1px) 0 0 / 100% 28px,linear-gradient(90deg,rgb(var(--blue-rgb) / .04) 1px,transparent 1px) 0 0 / 28px 100%,var(--bg)}a{color:var(--blue)}main{flex:1;width:100%;max-width:var(--maxw);margin:0 auto;padding:8px var(--gutter) 48px}header.site{position:sticky;top:0;z-index:5;background:rgb(var(--bg-rgb) / .86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.site-in{max-width:var(--maxw);margin:0 auto;padding:13px var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:16px}.site-right{display:flex;align-items:center;gap:16px}.search-link{font-size:12px;padding:8px 0;text-decoration:none}.logo{font-size:17px;font-weight:800;letter-spacing:-.02em;text-decoration:none;color:var(--fg)}.logo span{color:var(--blue)}.site-nav{display:flex;gap:18px;font-family:var(--mono);font-size:12px}.site-nav a{color:var(--muted);text-decoration:none}.site-nav a:hover,.site-nav a:focus-visible{color:var(--fg)}@media(max-width:560px){.site-nav{display:none}}footer.site{max-width:var(--maxw);width:100%;margin:0 auto;padding:34px var(--gutter) 34px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}.foot{display:grid;gap:22px;grid-template-columns:1fr}@media(min-width:560px){.foot{grid-template-columns:2fr 1fr 1fr}}.foot p{margin:8px 0 0;line-height:1.7}.foot h2{margin:0 0 9px;font-family:var(--mono);font-size:10px;color:var(--blue);letter-spacing:.14em;font-weight:600}.foot a{display:block;color:var(--muted);text-decoration:none;padding:3px 0;margin-bottom:4px}.foot a:hover,.foot a:focus-visible{color:var(--fg)}.foot .logo{margin-bottom:0}.copy{margin:26px 0 0;font-size:12px}h1{font-size:clamp(26px,7vw,36px);line-height:1.3;margin:16px 0 8px}h2{font-size:clamp(18px,5vw,22px);margin:36px 0 12px}p{margin:0 0 12px}.muted{color:var(--muted)}.btn{display:inline-flex;align-items:center;font:inherit;font-weight:700;font-size:14px;padding:12px 24px;min-height:48px;border:1px solid var(--blue);border-radius:6px;background:var(--blue);color:var(--on-blue);cursor:pointer;text-decoration:none}.btn:hover{background:rgb(var(--blue-rgb) / .85)}.btn:active{transform:translateY(1px)}.btn.ghost{background:transparent;color:var(--blue)}.btn.ghost:hover{background:rgb(var(--blue-rgb) / .12)}.mark{font-family:var(--mono);font-size:10px;color:var(--blue);letter-spacing:.2em;margin-bottom:10px}.mark:before{content:"/ / "}.bracket{position:relative}.bracket:before,.bracket:after{content:"";position:absolute;width:7px;height:7px;border:1px solid var(--blue);pointer-events:none}.bracket:before{top:-1px;left:-1px;border-right:0;border-bottom:0}.bracket:after{bottom:-1px;right:-1px;border-left:0;border-top:0}.sec{padding:44px 0}.sec+.sec{border-top:1px solid var(--line)}
