@import url("https://fonts.googleapis.com/css2?family=Inter:wght@600;700;800&family=Roboto+Mono:wght@400;500&family=Noto+Sans+TC:wght@400;500;700&display=swap");.highlight{color:#d0d0d0}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .w{color:#d0d0d0}.highlight .err{color:#151515;background-color:#ac4142}.highlight .c,.highlight .cd,.highlight .cm,.highlight .c1,.highlight .cs{color:#888}.highlight .cp{color:#f4bf75}.highlight .o,.highlight .ow{color:#f4bf75}.highlight .p,.highlight .pi{color:#d0d0d0}.highlight .gi{color:#90a959}.highlight .gd{color:#ac4142}.highlight .gh{color:#6a9fb5;font-weight:bold}.highlight .k,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kv{color:#aa759f}.highlight .kc,.highlight .kt,.highlight .kd{color:#d28445}.highlight .s,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s2,.highlight .sh,.highlight .sx,.highlight .s1{color:#90a959}.highlight .sr{color:#75b5aa}.highlight .si,.highlight .se{color:#8f5536}.highlight .nt,.highlight .nn,.highlight .nc,.highlight .no{color:#f4bf75}.highlight .na{color:#6a9fb5}.highlight .m,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo,.highlight .mb,.highlight .mx{color:#90a959}.highlight .ss{color:#90a959}body{margin:0;padding:0;background:#151515 url("../images/bkg.png") 0 0;color:#eaeaea;font-size:16px;line-height:1.5;font-family:Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace}.container{width:90%;max-width:1000px;margin:0 auto}section{display:block;margin:0 0 20px 0}h1,h2,h3,h4,h5,h6{margin:0 0 20px}li{line-height:1.4}header{background:rgba(0,0,0,0.1);width:100%;border-bottom:1px dashed #b5e853;padding:20px 0;margin:0 0 40px 0}header h1{font-size:30px;line-height:1.5;margin:0 0 0 -40px;font-weight:bold;font-family:Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;color:#b5e853;text-shadow:0 1px 1px rgba(0,0,0,0.1),0 0 5px rgba(181,232,83,0.1),0 0 10px rgba(181,232,83,0.1);letter-spacing:-1px;-webkit-font-smoothing:antialiased}@media (max-width: 1000px){header h1{margin-left:0}}header h1:before{content:"./ ";font-size:24px}header h2{font-size:18px;font-weight:300;color:#666}#downloads .btn{display:inline-block;text-align:center;margin:0}#main_content{width:100%;-webkit-font-smoothing:antialiased}section img{max-width:100%}h1,h2,h3,h4,h5,h6{font-weight:normal;font-family:Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;color:#b5e853;letter-spacing:-0.03em;text-shadow:0 1px 1px rgba(0,0,0,0.1),0 0 5px rgba(181,232,83,0.1),0 0 10px rgba(181,232,83,0.1)}#main_content h1{font-size:30px}#main_content h2{font-size:24px}#main_content h3{font-size:18px}#main_content h4{font-size:14px}#main_content h5{font-size:12px;text-transform:uppercase;margin:0 0 5px 0}#main_content h6{font-size:12px;text-transform:uppercase;color:#999;margin:0 0 5px 0}dt{font-style:italic;font-weight:bold}ul li{list-style-image:url("../images/bullet.png")}blockquote{color:#aaa;padding-left:10px;border-left:1px dotted #666}pre{background:rgba(0,0,0,0.9);border:1px solid rgba(255,255,255,0.15);padding:10px;font-size:16px;color:#b5e853;border-radius:2px;word-wrap:normal;overflow:auto;overflow-y:hidden}code.highlighter-rouge{background:rgba(0,0,0,0.9);border:1px solid rgba(255,255,255,0.15);padding:0px 3px;margin:0px -3px;color:#aa759f;border-radius:2px}table{width:100%;margin:0 0 20px 0}th{text-align:left;border-bottom:1px dashed #b5e853;padding:5px 10px}td{padding:5px 10px}hr{height:0;border:0;border-bottom:1px dashed #b5e853;color:#b5e853}.btn{display:inline-block;background:-webkit-linear-gradient(top, rgba(40,40,40,0.3), rgba(35,35,35,0.3) 50%, rgba(10,10,10,0.3) 50%, rgba(0,0,0,0.3));padding:8px 18px;border-radius:50px;border:2px solid rgba(0,0,0,0.7);border-bottom:2px solid rgba(0,0,0,0.7);border-top:2px solid #000;color:rgba(255,255,255,0.8);font-family:Helvetica, Arial, sans-serif;font-weight:bold;font-size:13px;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.75);box-shadow:inset 0 1px 0 rgba(255,255,255,0.05)}.btn:hover{background:-webkit-linear-gradient(top, rgba(40,40,40,0.6), rgba(35,35,35,0.6) 50%, rgba(10,10,10,0.8) 50%, rgba(0,0,0,0.8))}.btn .icon{display:inline-block;width:16px;height:16px;margin:1px 8px 0 0;float:left}.btn-github .icon{opacity:0.6;background:url("../images/blacktocat.png") 0 0 no-repeat}a{color:#63c0f5;text-shadow:0 0 5px rgba(104,182,255,0.5)}.cf:before,.cf:after{content:"";display:table}.cf:after{clear:both}.cf{zoom:1}#a-title{text-decoration:none}.definition,.theorem,.lemma,.proof,.example,.remark,.algorithm{margin:1.4rem 0;padding:1rem 1.15rem;background:#111;border:1px solid #2a2a2a;border-left:4px solid;border-radius:0;box-shadow:none;color:#e6e6e6}.definition strong,.theorem strong,.lemma strong,.proof strong,.example strong,.remark strong,.algorithm strong{display:block;margin-bottom:0.55rem;font-family:"Inter", "Noto Sans TC", sans-serif;font-weight:800;letter-spacing:0.01em}.definition p:last-child,.theorem p:last-child,.lemma p:last-child,.proof p:last-child,.example p:last-child,.remark p:last-child,.algorithm p:last-child{margin-bottom:0}.definition ul,.theorem ul,.lemma ul,.proof ul,.example ul,.remark ul,.algorithm ul,.definition ol,.theorem ol,.lemma ol,.proof ol,.example ol,.remark ol,.algorithm ol{margin-bottom:0}.definition{border-left-color:#33ff33}.definition strong{color:#33ff33}.theorem{border-left-color:#60a5fa}.theorem strong{color:#60a5fa}.lemma{border-left-color:#a78bfa}.lemma strong{color:#a78bfa}.proof{border-left-color:#e879f9}.proof strong{color:#e879f9}.proof .qed{float:right;font-size:1.05em;color:#e879f9}.example{border-left-color:#9ca3af}.example strong{color:#d1d5db}.remark{border-left-color:#f59e0b}.remark strong{color:#fbbf24}.algorithm{border-left-color:#2dd4bf}.algorithm strong{color:#2dd4bf}.definition code,.theorem code,.lemma code,.proof code,.example code,.remark code,.algorithm code{background:#1a1a1a;border:1px solid #2f2f2f;padding:0.08em 0.35em;border-radius:0;color:#e6e6e6}.definition pre,.theorem pre,.lemma pre,.proof pre,.example pre,.remark pre,.algorithm pre{background:#0d0d0d;border:1px solid #2f2f2f}details.chap-toggle{margin:0.25rem 0 0.75rem 0}details.chap-toggle>summary.chap-toggle__summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0}details.chap-toggle>summary::-webkit-details-marker{display:none}details.chap-toggle .chap-toggle__link{text-decoration:none}details.chap-toggle .chap-toggle__btn{appearance:none;border:none;border-radius:999px;background:transparent;cursor:pointer;padding:4px 8px;line-height:1;opacity:0.8;transition:background 0.15s ease, opacity 0.15s ease}details.chap-toggle .chap-toggle__btn::before{content:"▸";font-size:32px}details.chap-toggle[open] .chap-toggle__btn::before{content:"▾"}details.chap-toggle .chap-toggle__btn:hover{background:rgba(0,0,0,0.08);opacity:1}details.chap-toggle .chap-toggle__list{margin:6px 0 0 0;padding-left:24px}details.chap-toggle .chap-toggle__list li{margin:12px 0}.articles-list{list-style:none;padding-left:0;margin:0;display:grid;gap:.75rem}.articles-item{border:1px solid rgba(127,127,127,0.28);background:rgba(127,127,127,0.06);border-radius:14px;padding:.9rem 1rem;transition:transform .08s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease}.articles-item:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,0.08);border-color:rgba(127,127,127,0.45);background:rgba(127,127,127,0.09)}.articles-link{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;font-weight:800;font-size:1.05rem;text-decoration:none;line-height:1.25}.articles-link:hover{text-decoration:underline}.articles-meta{margin-top:.25rem;font-size:.85rem;opacity:.75;display:flex;width:100%;align-items:center;gap:.5rem;flex-wrap:wrap}.articles-meta .sep{opacity:.6}.articles-meta .authors,.articles-meta .venue,.articles-meta .note-date{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.articles-meta .a-tag{position:relative;display:inline-flex;align-items:center;font-size:.78rem;line-height:1;font-weight:850;white-space:nowrap;padding:.20rem .60rem .20rem 1.10rem;border:2px solid rgba(90,90,90,0.85);background:rgba(59,130,246,0.16);color:rgba(30,64,175,0.95);border-radius:10px 0 0 10px;box-shadow:0 1px 0 rgba(0,0,0,0.06),0 0 0 1px rgba(255,255,255,0.55) inset;text-decoration:none;opacity:1;clip-path:polygon(16px 0%, 100% 0%, 100% 100%, 16px 100%, 0% 50%)}.articles-meta .a-tag::after{content:"";position:absolute;left:.44rem;top:50%;transform:translateY(-50%);width:.40rem;height:.40rem;border-radius:999px;background:rgba(255,255,255,0.96);border:2px solid rgba(0,0,0,0.22);box-shadow:0 1px 0 rgba(0,0,0,0.06) inset}.articles-item:hover .articles-meta .a-tag{border-color:rgba(60,60,60,0.95);background:rgba(59,130,246,0.22);color:rgba(30,58,138,0.98)}@media (min-width: 900px){.articles-list{grid-template-columns:1fr 1fr}}.articles-controls{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center;margin:1rem 0 1.25rem;justify-content:center}.articles-controls .group{display:flex;gap:.5rem;align-items:center}.articles-controls .sep{width:1px;height:28px;background:rgba(127,127,127,0.35);margin:0 .25rem}.pill{display:inline-flex;align-items:center;padding:.35rem .7rem;border-radius:999px;border:1px solid rgba(127,127,127,0.35);background:rgba(127,127,127,0.08);cursor:pointer;user-select:none;font-size:0.95rem;line-height:1;transition:transform .05s ease, background .15s ease, border-color .15s ease}.pill:hover{transform:translateY(-1px)}.pill:active{transform:translateY(0px)}.pill.active{border-color:rgba(16,185,129,0.9);background:rgba(16,185,129,0.18);font-weight:700}.pill button{all:unset;cursor:pointer}.pill[role="button"]{color:inherit}.tags-bar{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0 18px}.tag-btn{appearance:none;border:1px solid #e5e7eb;background:#f9fafb;color:#111827;padding:6px 12px;border-radius:999px;font-size:14px;cursor:pointer;transition:background .15s ease, border-color .15s ease, transform .05s ease}.tag-btn:hover{background:#f3f4f6;border-color:#d1d5db}.tag-btn:active{transform:translateY(1px)}.tag-btn.is-active{background:#16a34a;border-color:#16a34a;color:#ffffff}.tags-hint{padding:10px 12px;border:1px dashed #d1d5db;border-radius:10px;color:#6b7280;margin:0 0 16px}.articles-list.is-hidden{display:none}.tags-page{margin-top:8px}.tag-btn--clear{margin-left:6px;border-style:dashed;background:#fff;color:#6b7280}.tag-btn--clear:hover{background:#f3f4f6;border-color:#9ca3af}.tag-btn--clear.is-active{background:#fff;border-color:#e5e7eb;color:#6b7280}.page-submeta{margin-top:8px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;color:#6b7280}.page-submeta .meta-item{display:inline-flex;align-items:center;gap:6px}.page-submeta .meta-sep{color:#d1d5db;margin:0 2px}.page-submeta .meta-ico{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;line-height:0;flex:0 0 16px}.page-submeta .meta-ico .ico{width:16px;height:16px;fill:currentColor}.page-submeta .meta-tags{display:inline-flex;flex-wrap:wrap;gap:8px;align-items:center}.page-submeta .tag-pill{display:inline-flex;align-items:center;padding:4px 10px;border:1px solid #e5e7eb;border-radius:999px;background:#f9fafb;color:#111827;text-decoration:none;font-size:13px;line-height:1;transition:background .15s ease, border-color .15s ease, transform .05s ease}.page-submeta .tag-pill:hover{background:#fff;border-color:#d1d5db}.page-submeta .tag-pill:active{transform:translateY(1px)}.page-submeta--citation{margin-top:0.35rem;margin-bottom:0.2rem;font-size:0.98rem;line-height:1.6}.page-submeta--meta{margin-top:0;margin-bottom:0.75rem;font-size:0.9rem;line-height:1.5}.page-content h2{font-weight:800;line-height:1.25;margin:2.2rem 0 1rem;padding-bottom:.35rem;border-bottom:2px solid currentColor}.page-content h3{font-weight:700;line-height:1.3;margin:1.6rem 0 .8rem;padding-left:.6rem;border-left:4px solid #93c5fd}.page-content h2,.page-content h3{scroll-margin-top:90px}.page-content>h2:first-child,.page-content>h3:first-child{margin-top:0}html{overflow-y:scroll}html{scroll-behavior:smooth}.back-to-top{position:fixed;right:18px;bottom:18px;z-index:1200;width:44px;height:44px;display:grid;place-items:center;border-radius:999px;background:#111;color:#fff;text-decoration:none;opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .2s ease, transform .2s ease}.back-to-top.is-visible{opacity:.85;pointer-events:auto;transform:translateY(0)}.back-to-top:hover{opacity:1}.now-grid{display:grid;grid-template-columns:1fr;gap:20px;margin:20px 0}.now-card{position:relative;margin:0 0 24px;padding:0;border:1px solid #6a6f73;background:#0d0d0d;box-shadow:inset 0 0 0 1px rgba(255,255,255,0.03);overflow:hidden}.now-card::before{content:"$ now";display:block;padding:10px 14px;border-bottom:1px solid #6a6f73;background:#111;color:#33ff33;font-family:"Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;font-size:12px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase}header.now-head{display:flex;align-items:center;gap:10px;margin:0;padding:12px 16px;border:0;border-bottom:1px solid #1d1d1d;background:#0f0f0f;min-width:0}header.now-head::before,header.now-head::after{content:none}.now-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin:0;padding:0;border:0;background:transparent;color:inherit;font-size:14px;line-height:1}.now-title{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:12px}.now-title h2{flex:0 0 auto;margin:0;padding:0;border:0;background:transparent;color:#f0f0f0;font-family:"Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;font-size:18px;font-weight:700;line-height:1.1;white-space:nowrap}.now-title h2 a{color:inherit;text-decoration:none}.now-title h2 a:hover{color:#33ff33;text-decoration:none}.now-badge{flex:1 1 auto;min-width:0;display:inline-block;margin:0;padding:3px 8px;border:1px solid #245c24;background:rgba(51,255,51,0.08);color:#33ff33;font-family:"Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;font-size:11px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-body{padding:16px 18px 18px;color:#cfcfcf;font-family:"Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;font-size:14px;line-height:1.75}.now-body>:first-child{margin-top:0}.now-body>:last-child{margin-bottom:0}.now-body p{margin:0 0 12px;color:#cfcfcf}.now-primary{margin:0 0 8px;color:#181111}.now-body h2,.now-body h3,.now-body h4{margin:22px 0 10px;color:#33ff33;font-family:"Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;font-weight:700;line-height:1.3}.now-body h2{font-size:18px}.now-body h3{font-size:15px}.now-body h4{font-size:14px}.now-card a,.now-link{color:#7ee787;text-decoration:none;border-bottom:1px dotted #2f6f2f}.now-card a:hover,.now-link:hover{color:#33ff33;border-bottom-color:#33ff33}.now-list{margin:0 0 14px;padding-left:18px;color:#cfcfcf}.now-list li{margin:6px 0}.now-list li::marker{color:#33ff33}.now-list--bib{list-style:none;padding-left:0;margin:0 0 16px}.now-list--bib .now-item{display:grid;grid-template-columns:78px minmax(0, 1fr);gap:12px;align-items:start;margin:10px 0}.now-list--bib .now-key{display:block;color:#33ff33;font-family:"Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;font-size:12px;font-weight:700;line-height:1.7;white-space:nowrap}.now-list--bib .now-item>.now-body{padding:0;margin:0;min-width:0;color:#cfcfcf;font-size:14px;line-height:1.7}.now-list--bib .now-item>.now-body a{display:inline}.now-list--bib .now-item>.now-body span{color:#9a9a9a;font-size:13px}.primality-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:2rem;align-items:start}.primality-column h3{margin-top:0;margin-bottom:0.75rem}.primality-column .now-list{margin:0;padding-left:1.2rem}.chap-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}.chap{width:28px;height:28px;display:inline-grid;place-items:center;padding:0;border:1px solid #2a2a2a;border-radius:0;background:#111;color:#8b949e;font-family:"Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;font-size:12px;font-weight:700;line-height:1;user-select:none;transition:border-color .12s ease, color .12s ease, background-color .12s ease, transform .12s ease}.chap.done{border-color:#1f6f1f;background:#0f1a0f;color:#33ff33}.chap.reading{border-color:#33ff33;background:#122012;color:#f5f5f5;box-shadow:inset 0 0 0 1px rgba(51,255,51,0.12)}.chap:hover{transform:translateY(-1px);border-color:#33ff33;color:#33ff33}.chap-hint{margin:10px 0 0;display:flex;align-items:center;gap:12px;flex-wrap:wrap;color:#8b949e;font-family:"Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;font-size:12px;line-height:1.6}.chap-dot{width:10px;height:10px;display:inline-block;margin-right:6px;border:1px solid #2a2a2a;border-radius:999px;background:#111;vertical-align:-1px}.chap-dot--done{border-color:#1f6f1f;background:#33ff33}.chap-dot--reading{border-color:#33ff33;background:#b7ffb7}.chap-dot--todo{background:#111}.chap-pill{display:inline-flex;align-items:center;max-width:100%;min-height:28px;padding:0 10px;border:1px solid #2a2a2a;border-radius:0;background:#111;color:#cfcfcf;font-family:"Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;font-size:12px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:border-color .12s ease, color .12s ease, background-color .12s ease, transform .12s ease}.chap-pill.done{border-color:#1f6f1f;background:#0f1a0f;color:#33ff33}.chap-pill.reading{border-color:#33ff33;background:#122012;color:#f5f5f5;box-shadow:inset 0 0 0 1px rgba(51,255,51,0.12)}.chap-pill:hover{transform:translateY(-1px);border-color:#33ff33;color:#33ff33}.level-progress{margin-top:14px;padding-top:14px;border-top:1px solid rgba(255,255,255,0.08)}.level-progress__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.level-progress__title{font-weight:700;letter-spacing:.2px;opacity:.95}.level-progress__grid{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:10px;align-items:center}.level-divider{width:1px;height:56px;background:rgba(255,255,255,0.12)}.level-item{display:grid;place-items:center;gap:8px}.level-item__label{font-size:13px;opacity:.85}.level-ring{--size: 74px;--thickness: 8px;--fill: rgb(34, 197, 94);--track: rgba(34, 197, 94, .22);--pct: 0;width:var(--size);height:var(--size);border-radius:999px;background:conic-gradient(var(--fill) calc(var(--pct) * 1%), var(--track) 0);display:grid;place-items:center}.level-ring__inner{width:calc(var(--size) - var(--thickness) * 2);height:calc(var(--size) - var(--thickness) * 2);border-radius:999px;background:transparent;display:grid;place-items:center;text-align:center}.level-ring__num{font-weight:800;font-size:18px;line-height:1.1}.level-ring__sub{font-size:12px;opacity:.8;margin-top:2px}.level-ring--alt{--fill: rgb(59, 130, 246);--track: rgba(59, 130, 246, .22)}.level-ring--alt2{--fill: rgb(168, 85, 247);--track: rgba(168, 85, 247, .22)}@media (max-width: 520px){.level-progress__grid{grid-template-columns:1fr 1fr 1fr}.level-divider{display:none}}.level{display:inline-flex;align-items:center;margin-left:.5rem;padding:.12rem .5rem;border-radius:999px;font-size:12px;font-weight:700;line-height:1.4;letter-spacing:.02em;border:1px solid currentColor;background:transparent;vertical-align:middle;white-space:nowrap}.level--apprentice{color:#16a34a;background:rgba(22,163,74,0.1)}.level--practitioner{color:#2563eb;background:rgba(37,99,235,0.1)}.level--expert{color:#7c3aed;background:rgba(124,58,237,0.1)}.lab-status{justify-self:end;font-size:12px;font-weight:700;padding:.14rem .55rem;border-radius:999px;border:1px solid #d1d5db;color:#6b7280;background:rgba(107,114,128,0.08);white-space:nowrap}.lab-status.is-solved{border-color:rgba(22,163,74,0.45);color:#16a34a;background:rgba(22,163,74,0.1)}.lab-table{list-style:none;padding-left:0;margin:.75rem 0 1.25rem;border:1px solid #e5e7eb;border-radius:14px;overflow:hidden}.lab-row{display:grid;grid-template-columns:120px 1fr 90px;gap:12px;align-items:center;padding:10px 14px;border-top:1px solid #e5e7eb}.lab-row:first-child{border-top:none}.lab-row a{text-decoration:none}.lab-row a:hover{text-decoration:underline}.lab-row .level{justify-self:center}:root{--cite-fg: #072f57;--cite-bg: rgba(11, 58, 110, 0.18);--cite-bd: rgba(11, 58, 110, 0.40);--cite-fg-hover: #041e3a;--cite-bg-hover: rgba(11, 58, 110, 0.24);--cite-ring: rgba(11, 58, 110, 0.38)}.cite{display:inline-flex;align-items:baseline;padding:0.08em 0.42em;border:1px solid var(--cite-bd);border-radius:999px;background:var(--cite-bg);color:var(--cite-fg);font-size:0.88em;line-height:1.2;font-weight:600;letter-spacing:0.01em;white-space:nowrap;text-decoration:none;vertical-align:baseline;transform:translateY(-0.06em)}.cite::before{content:"[";opacity:0.9;margin-right:0.06em}.cite::after{content:"]";opacity:0.9;margin-left:0.06em}a.cite,a .cite{cursor:pointer}a.cite:hover,a:hover .cite{background:var(--cite-bg-hover);color:var(--cite-fg-hover)}a.cite:focus-visible,a:focus-visible .cite{outline:none;box-shadow:0 0 0 3px var(--cite-ring)}.cite--sm{font-size:0.82em;padding:0.06em 0.36em}.cite-list{display:inline-flex;flex-wrap:wrap;gap:0.25em;vertical-align:baseline}.cite-list .cite{transform:translateY(-0.05em)}.bib{list-style:none;margin:0;padding:0}.bib>li{display:grid;grid-template-columns:6.5ch 1fr;column-gap:1.2rem;align-items:start;margin:0.6rem 0}.bib-key{display:inline-flex;justify-content:flex-start;align-items:baseline;font-weight:700;white-space:nowrap}.bib-key::before{content:"["}.bib-key::after{content:"]"}.bib-body{min-width:0;overflow-wrap:anywhere}.bib>li:target{scroll-margin-top:90px;background:rgba(255,230,150,0.35);border-radius:10px;padding:0.25rem 0.4rem}body.has-toc .page-layout{display:grid;grid-template-columns:minmax(0, 820px) 280px;gap:40px;align-items:start;justify-content:center}body.has-toc #page-content{min-width:0}body.has-toc .page-toc{position:sticky;top:88px;height:fit-content;max-height:calc(100vh - 104px);overflow-y:auto;overflow-x:hidden;padding:0 8px 0 14px;border-left:1px solid #2a2a2a;font-size:13px;color:#bfbfbf;scrollbar-width:thin;scrollbar-color:#33ff33 #111}body.has-toc .page-toc__title{position:sticky;top:0;margin:0 0 12px;padding:0 0 8px;background:#0d0d0d;color:#33ff33;font-family:"Roboto Mono", monospace;font-size:0.82rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;z-index:2}body.has-toc .page-toc__list,body.has-toc .page-toc__sublist{list-style:none;margin:0;padding:0}body.has-toc .page-toc__item{margin:0 0 0.45rem}body.has-toc .page-toc__sublist{margin-top:0.35rem;margin-left:1.2rem;padding-left:0.8rem;border-left:1px solid rgba(51,255,51,0.16)}body.has-toc .page-toc__subitem{margin:0.22rem 0}body.has-toc .page-toc__row{display:flex;align-items:flex-start;justify-content:space-between;gap:0.5rem}body.has-toc .page-toc__toggle{appearance:none;border:0;background:transparent;cursor:pointer;padding:0;margin:0.08rem 0 0;width:1rem;height:1rem;flex:0 0 1rem;display:inline-flex;align-items:center;justify-content:center;color:#8f8f8f;line-height:1;transition:color 0.18s ease, transform 0.18s ease;order:2}body.has-toc .page-toc__toggle:hover,body.has-toc .page-toc__toggle:focus-visible{color:#33ff33;outline:none}body.has-toc .page-toc__toggle .tri{display:inline-flex;align-items:center;justify-content:center;width:0.82rem;height:0.82rem;transition:transform 0.18s ease;transform-origin:50% 50%}body.has-toc .page-toc__toggle .tri-icon{display:block;width:100%;height:100%;fill:currentColor}body.has-toc .page-toc__item.is-expanded>.page-toc__row .page-toc__toggle .tri{transform:rotate(90deg)}body.has-toc .page-toc__link,body.has-toc .page-toc__sublink{position:relative;display:block;min-width:0;max-width:100%;padding:0.08rem 0 0.08rem 1rem;color:#9f9f9f;text-decoration:none;line-height:1.45;word-break:break-word;overflow-wrap:anywhere;box-sizing:border-box;transition:color 0.15s ease, background-color 0.15s ease}body.has-toc .page-toc__link{font-family:"Inter", "Noto Sans TC", sans-serif;font-weight:700}body.has-toc .page-toc__sublink{font-family:"Roboto Mono", monospace;font-size:12.5px;color:#7f7f7f}body.has-toc .page-toc__link::before,body.has-toc .page-toc__sublink::before{content:">";position:absolute;left:0;top:0.08rem;color:#33ff33;opacity:0;font-family:"Roboto Mono", monospace;font-weight:700;transition:opacity 0.15s ease}body.has-toc .page-toc__link:hover,body.has-toc .page-toc__sublink:hover{color:#33ff33}body.has-toc .page-toc__link.is-active,body.has-toc .page-toc__sublink.is-active,body.has-toc .page-toc__item.is-active>.page-toc__row .page-toc__link,body.has-toc .page-toc__subitem.is-active>.page-toc__sublink,body.has-toc .page-toc__link[aria-current="true"],body.has-toc .page-toc__sublink[aria-current="true"]{color:#eaffea;background:rgba(51,255,51,0.06);font-weight:700}body.has-toc .page-toc__link.is-active::before,body.has-toc .page-toc__sublink.is-active::before,body.has-toc .page-toc__item.is-active>.page-toc__row .page-toc__link::before,body.has-toc .page-toc__subitem.is-active>.page-toc__sublink::before,body.has-toc .page-toc__link[aria-current="true"]::before,body.has-toc .page-toc__sublink[aria-current="true"]::before{opacity:1}body.has-toc .page-toc::-webkit-scrollbar{width:8px}body.has-toc .page-toc::-webkit-scrollbar-track{background:#111;border-left:1px solid #1a1a1a}body.has-toc .page-toc::-webkit-scrollbar-thumb{background:#33ff33;border-radius:999px;border:1px solid #111}body.has-toc .page-toc::-webkit-scrollbar-thumb:hover{background:#66ff66}body{background:#0d0d0d;color:#e6e6e6;font-family:Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", monospace, sans-serif;line-height:1.8}a,a:visited{color:#4dd0e1;text-decoration:none}a:hover,a:focus{color:#80deea;text-decoration:underline;text-underline-offset:2px;text-shadow:0 0 4px rgba(77,208,225,0.35)}a:active{color:#b2ebf2}.wrapper{max-width:1100px;margin:0 auto;padding-left:20px;padding-right:20px}.page-content{padding-top:8px;padding-bottom:32px}.page-content .wrapper{max-width:1100px}.page-content>.wrapper>:first-child{margin-top:0}h1,h2,h3,h4,h5,h6,.site-title{font-family:"Inter", "Noto Sans TC", sans-serif;letter-spacing:0.01em}.site-nav,.page-link{font-family:"Inter", "Noto Sans TC", sans-serif}code,pre{font-family:"Roboto Mono", monospace}.site-header{position:sticky;top:0;z-index:1000;background:#111;border-bottom:1px solid #33ff33;box-shadow:0 1px 0 rgba(51,255,51,0.15)}.site-header .wrapper{min-height:66px;padding-top:0;padding-bottom:0;display:flex;align-items:center;justify-content:space-between;gap:12px}.site-title,.site-title:visited{margin:0;color:#33ff33;font-family:Monaco, "Noto Sans TC", sans-serif;font-size:1.2rem;font-weight:800;line-height:1;text-decoration:none;display:block}.site-title:hover{color:#66ff66;text-decoration:none}.site-nav{display:flex;align-items:center;gap:16px;flex-wrap:nowrap}.site-nav .page-link,.site-nav .page-link:visited{margin:0;color:#ddd;font-family:Monaco, monospace;font-size:1.1rem;font-weight:500;line-height:1;text-decoration:none;display:block}.site-nav .page-link:hover{color:#33ff33;text-decoration:none}.nav-trigger,.menu-icon,.trigger{display:none !important}.site-header{margin:0;padding:0;display:flow-root}.site-header h1,.site-header h2,.site-header h3,.site-header h4,.site-header p{margin:0}.site-header ul,.site-header ol,.site-header li{margin:0;padding:0;list-style:none}.site-footer{margin-top:48px;padding:28px 0 20px;background:#111;border-top:1px solid #33ff33}.site-footer .wrapper{max-width:1100px;margin:0 auto;padding-left:20px;padding-right:20px}.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:28px}.footer-col{min-width:0}.footer-title{color:#33ff33;font-family:"Inter", "Noto Sans TC", sans-serif;font-size:1.1rem;font-weight:800;margin-bottom:10px}.footer-heading{color:#33ff33;font-weight:700;margin-bottom:10px}.footer-desc{margin:0;color:#cfcfcf;line-height:1.7}.footer-links{list-style:none;margin:0;padding:0}.footer-links li+li{margin-top:8px}.site-footer a,.site-footer a:visited{color:#e6e6e6;text-decoration:none}.site-footer a:hover{color:#33ff33;text-decoration:none}.footer-bottom{margin-top:24px;padding-top:14px;border-top:1px solid rgba(51,255,51,0.18)}.footer-bottom p{margin:0;color:#9a9a9a;font-size:0.95rem}.back-to-top{position:fixed;right:18px;bottom:18px;width:42px;height:42px;display:grid;place-items:center;border:1px solid #33ff33;background:#111;color:#33ff33;text-decoration:none;opacity:0;pointer-events:none;transition:opacity 0.2s ease}.back-to-top.is-visible{opacity:1;pointer-events:auto}.back-to-top:hover{color:#111;background:#33ff33}.video-window{max-width:800px;margin:1.5rem auto;border:1px solid #33ff33;background:#000}.video-window__title{padding:0.5rem 0.75rem;border-bottom:1px solid #33ff33;font-size:0.9rem}.video-window__body{position:relative;width:100%;padding-bottom:56.25%;height:0}.video-window__body iframe{position:absolute;inset:0;width:100%;height:100%;border:0}hr{border:0;border-top:3px solid #d0d0d0;width:100%;margin:24px auto;height:0;background:transparent}
