:root{color-scheme:dark;--bg:#0f0e17;--fg:#fffffe;--dim:#a7a9be;--accent:#ff8906;--red:#e53170;--orange:#f25f4c;--yellow:#ff8906;--tint:255, 255, 254;--panel:rgba(255, 255, 254, 0.04);--panel-line:rgba(255, 255, 254, 0.14);--bar-shadow:0 8px 32px rgba(0, 0, 0, 0.25);--float-shadow:0 16px 48px rgba(0, 0, 0, 0.35);--backdrop:#0f0e17;--selection:#2e2c45;--mono:"JetBrains Mono", "JetBrainsMono Nerd Font", ui-monospace, SFMono-Regular, Menlo, monospace;--sans:"Noto Sans TC", "JetBrains Mono", sans-serif}html[data-theme=light]{color-scheme:light;--bg:#f8f5f2;--fg:#232323;--dim:#5f6262;--accent:#078080;--red:#f45d48;--orange:#f45d48;--yellow:#078080;--tint:35, 35, 35;--panel:rgba(35, 35, 35, 0.03);--panel-line:rgba(35, 35, 35, 0.14);--bar-shadow:0 8px 32px rgba(35, 35, 35, 0.06);--float-shadow:0 16px 48px rgba(35, 35, 35, 0.10);--backdrop:#f8f5f2;--selection:#cfe5e5}*{box-sizing:border-box}html{background:var(--backdrop)}body{margin:0;min-height:100vh;background:var(--backdrop);color:var(--fg);font-family:var(--mono);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{color:var(--fg);text-decoration:underline;text-underline-offset:3px}::selection{background:var(--selection);color:var(--fg)}.meta{color:var(--dim);font-size:13px}[hidden]{display:none!important}.glass{background:var(--panel);border:1px solid var(--panel-line);border-radius:18px;box-shadow:var(--bar-shadow);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);overflow:hidden}.hairline{border:1px solid var(--panel-line);border-radius:18px;overflow:hidden}@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.glass,.tabs{background:var(--bg)}}.wrap{max-width:1120px;margin:0 auto;padding:40px 32px 80px}.column{width:min(720px,100%);margin:0 auto}.site-header{display:flex;align-items:center;gap:40px;margin-bottom:56px}.brand{display:block;line-height:0}.brand:hover{text-decoration:none}.logo{display:block;height:28px;width:auto}.site-nav{display:flex;gap:2px}.theme-toggle{margin-left:auto}.nav-item{appearance:none;border:0;background:0 0;font:inherit;cursor:pointer;display:inline-flex;align-items:center;height:38px;padding:0 10px;border-radius:999px;color:var(--dim);font-size:13px;white-space:nowrap;text-decoration:none;transition:color .2s,background .2s}.nav-item svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.nav-item .label{max-width:0;margin-left:0;opacity:0;overflow:hidden;transition:max-width .3s ease,margin-left .3s ease,opacity .2s ease}.nav-item:focus-visible{color:var(--fg);text-decoration:none;outline:none}.nav-item:focus-visible .label{max-width:9ch;margin-left:8px;opacity:1}@media(hover:hover){.nav-item:hover{color:var(--fg);text-decoration:none}.nav-item:hover .label{max-width:9ch;margin-left:8px;opacity:1}}html[data-theme=dark] .i-moon,html[data-theme=light] .i-sun{display:none}:root{--bar-h:24px;--bar-gap:8px}.bar{height:var(--bar-h);margin-bottom:var(--bar-gap);color:var(--dim);display:flex;justify-content:space-between;align-items:center}.split{display:grid;grid-template-columns:minmax(0,1fr);gap:56px;align-items:start}.split-head{display:flex;align-items:center;margin-bottom:24px}.split-head .label{color:var(--dim)}@media(min-width:800px){.split{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:56px;row-gap:0}.split-main,.split-side{display:grid;grid-row:span 2;grid-template-rows:subgrid;grid-template-columns:minmax(0,1fr);align-self:start}.split-side{position:sticky;top:24px}.split-body--offset{padding-top:calc(var(--bar-h) + var(--bar-gap))}}.tabs{display:flex;width:fit-content;gap:2px;padding:5px;border-radius:999px;background:var(--panel);border:1px solid var(--panel-line);box-shadow:var(--bar-shadow);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.tab{padding:6px 18px;border-radius:999px;color:var(--dim);font-size:14px;transition:color .2s,background .2s}.tab:hover{color:var(--fg);text-decoration:none;background:rgba(var(--tint),.08)}.tab[aria-current=page]{color:var(--fg);background:rgba(var(--tint),.16)}.learn-home .tabs{margin-bottom:24px}.post-group{margin-top:8px}.post{padding:20px 22px}.post:not([hidden])~.post:not([hidden]){border-top:1px solid var(--panel-line)}.post .meta{margin-bottom:8px;font-size:12px}.post .title{display:block;margin-bottom:8px;color:var(--fg);font:500 19px/1.4 var(--sans)}.post .desc{margin:0 0 12px;color:rgba(var(--tint),.6);font:13px/1.7 var(--sans)}.tags{display:flex;gap:8px;flex-wrap:wrap}.tag{padding:2px 10px;border:1px solid var(--panel-line);border-radius:99px;color:var(--accent);font-size:12px;line-height:1.7}.tag:hover{color:var(--fg);text-decoration:none;border-color:var(--accent)}.tag.is-active{background:var(--accent);border-color:var(--accent);color:var(--bg)}.tag.is-active:hover{color:var(--bg)}.clear{padding:2px 10px;border:1px solid var(--panel-line);border-radius:99px;background:0 0;color:var(--accent);font:inherit;font-size:12px;cursor:pointer}.clear:hover{border-color:var(--accent);color:var(--fg)}.learn-home{container-type:inline-size}.series-list{display:grid;gap:16px;position:relative;width:min(100%,560px);left:calc((100% - min(100%,560px))/2);transition:left .5s cubic-bezier(.22,.9,.28,1)}.series{position:relative;padding:20px 22px}.series .title{margin:0 0 6px;font:500 19px/1.4 var(--sans)}.series .title a{color:var(--fg)}.series .desc{margin:0;color:rgba(var(--tint),.6);font:13px/1.7 var(--sans)}.series-link::after{content:"";position:absolute;inset:0}.series-link:hover{text-decoration:none}.series--link{transition:border-color .2s,transform .2s}.series--link:hover{border-color:var(--accent)}.chapters{margin-top:8px}.ch{display:flex;gap:16px;padding:14px 22px;color:var(--fg);font-family:var(--sans)}.ch:hover{text-decoration:none;background:rgba(var(--tint),.04)}.ch b{width:24px;color:var(--dim);font:14px var(--mono)}.ch span{flex:1}.ch em{color:var(--dim);font:12px var(--mono)}.ch.todo{color:rgba(var(--tint),.3)}.ch.todo:hover{background:0 0}.split-main .series{margin-bottom:32px}.ch:not([hidden])~.ch:not([hidden]){border-top:1px solid var(--panel-line)}.series-item{position:relative}.series-row{display:flex;align-items:center;gap:12px}.series-row .series{flex:1;min-width:0}.series:has([aria-expanded=true]){border-color:var(--accent)}.orb{display:none;flex:none;width:52px;height:52px;padding:0;place-items:center;cursor:pointer;border-radius:50%;color:var(--dim);background:var(--panel);border:1px solid var(--panel-line);box-shadow:var(--bar-shadow);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);transition:color .2s,border-color .2s}.js .series-item:has(.series-panel:not([hidden])) .orb{display:grid}@media(min-width:700px){.series-row{position:relative}.orb{position:absolute;left:calc(100% + 12px);top:50%;translate:0 -50%}}.orb svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.orb:hover,.orb[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.series-panel{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:10;max-height:min(70vh,640px);overflow-y:auto;padding:16px;scrollbar-width:thin;scrollbar-color:var(--panel-line)transparent;border:1px solid var(--panel-line);border-radius:18px;background:color-mix(in srgb,var(--bg) 55%,transparent);box-shadow:var(--float-shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.series-panel .chapters{margin-top:0;border:0;border-radius:0}.series-panel .bar{padding:0 6px}.series-graph{position:absolute;top:calc(100% + 8px);left:0;right:0;height:300px;z-index:10}.series-graph .graph-canvas{aspect-ratio:auto;height:100%;border:1px solid var(--panel-line);border-radius:18px;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.series-item.graph-on .series-panel{top:calc(100% + 8px + 300px + 12px)}@container(min-width:900px){.series-list:has(.graph-on) { left: 0; }
  .series-graph { top: 0; left: calc(100% + 80px); right: auto; width: calc(100cqw - 560px - 80px); height: 560px; }
  .series-item.graph-on .series-panel { top: calc(100% + 8px); }
}@media(prefers-reduced-motion:no-preference){.series-panel:not([hidden]){animation:panel-in .18s ease-out}@keyframes panel-in{from{transform:translateY(-6px)}}.series-graph:not([hidden]) canvas{animation:graph-in .3s .15s ease-out backwards}@keyframes graph-in{from{opacity:0}}}.prose h1{margin:0 0 .6em;font-size:1.6em;line-height:1.3}.prose h2,.prose h3{margin:1.8em 0 .5em;line-height:1.3}.prose ul{padding-left:1.4em}.prose pre{padding:14px 16px;border-radius:10px;overflow-x:auto;font-size:13px;line-height:1.6}.prose :not(pre)>code{padding:1px 6px;border-radius:5px;background:rgba(var(--tint),.1);font-size:.92em}.graph-canvas{display:none;width:100%;aspect-ratio:400/440}.js .graph-canvas{display:block}.js .graph-panel.is-failed .graph-canvas{display:none}.graph-toggle{display:none;margin-left:-10px}.js .graph-toggle{display:inline-flex}.graph-toggle[aria-expanded=true]{color:var(--accent)}.js .split--collapsible:not(.graph-open) .graph-panel{display:none}.js .graph-panel:not(.is-failed) .topic-list{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.graph-canvas{position:relative}.graph-controls{position:absolute;top:10px;right:10px;z-index:1;display:flex;gap:6px}.graph-ctl{display:grid;place-items:center;width:30px;height:30px;padding:0;cursor:pointer;border-radius:50%;color:var(--dim);background:var(--panel);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:color .2s,border-color .2s}.graph-ctl:hover{color:var(--accent);border-color:var(--accent)}.graph-ctl svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}@media(prefers-reduced-motion:no-preference){@view-transition{navigation: auto; }::view-transition-group(*){animation-duration:.55s;animation-timing-function:cubic-bezier(.22,.9,.28,1)}::view-transition-old(root),::view-transition-new(root){animation-duration:.25s}.site-header{view-transition-name:site-header}.tabs{view-transition-name:tabs}}