@import"https://fonts.googleapis.com/css2?family=Noto+Serif+TC:wght@400;500;600;700&family=Noto+Sans+TC:wght@300;400;500;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";/**
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
* https://github.com/chjj/term.js
* @license MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* Originally forked from (with the author's permission):
*   Fabrice Bellard's javascript vt100 for jslinux:
*   http://bellard.org/jslinux/
*   Copyright (c) 2011 Fabrice Bellard
*   The original design remains. The terminal itself
*   has been extended to include xterm CSI codes, among
*   other features.
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}:root{--paper: #F5F1E8;--paper-2: #EFE9DC;--paper-3: #E7E0CF;--ink: #211C16;--ink-soft: #4C4339;--grey: #8C8274;--line: #D9D0BF;--line-soft: #E5DDCD;--seal: #B43A2D;--seal-soft: #CC6657;--seal-wash: #F0DAD2;--belt-white: #C9BFAA;--belt-yellow:#C2A03E;--belt-blue: #4C6E86;--belt-brown: #7E5C42;--belt-black: #2A2620;--gold: #A8842F;--silver: #9C9485;--term-bg: #1A1813;--term-fg: #E9E3D5;--term-dim: #8A8274;--term-line: #302C24;--serif: "Noto Serif TC", "Source Serif 4", Georgia, "Songti TC", serif;--sans: "Noto Sans TC", system-ui, -apple-system, "PingFang TC", sans-serif;--mono: "IBM Plex Mono", "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;--t-display: clamp(2.6rem, 1.4rem + 4.4vw, 5.2rem);--t-h1: clamp(2rem, 1.4rem + 2.4vw, 3.2rem);--t-h2: clamp(1.4rem, 1.1rem + 1.1vw, 2rem);--t-h3: 1.2rem;--t-body: 1.0625rem;--t-small: .875rem;--t-eyebrow: .72rem;--sp-1: .5rem;--sp-2: 1rem;--sp-3: 1.5rem;--sp-4: 2.5rem;--sp-5: 4rem;--sp-6: 6rem;--r-sm: 4px;--r-md: 8px;--r-lg: 14px;--shadow: 0 1px 2px rgba(33,28,22,.04), 0 8px 28px -12px rgba(33,28,22,.18);--shadow-lift: 0 2px 4px rgba(33,28,22,.05), 0 18px 48px -16px rgba(33,28,22,.28);--maxw: 1200px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--sans);font-weight:300;font-size:var(--t-body);line-height:1.7;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(120% 80% at 80% -10%,rgba(180,58,45,.035),transparent 60%),radial-gradient(100% 60% at -10% 110%,rgba(76,110,134,.04),transparent 55%);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.18;color:var(--ink);margin:0 0 .5em;letter-spacing:-.01em}p{margin:0 0 1em;max-width:64ch}a{color:inherit;text-decoration:none}strong,b{font-weight:600}::selection{background:var(--seal-wash);color:var(--ink)}.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:clamp(1.2rem,4vw,3rem)}.eyebrow{font-family:var(--mono);font-size:var(--t-eyebrow);font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--grey);display:inline-flex;align-items:center;gap:.6em}.eyebrow:before{content:"";width:1.6em;height:1px;background:var(--seal)}.display{font-family:var(--serif);font-size:var(--t-display);font-weight:700;line-height:1.04;letter-spacing:-.02em}.lede{font-family:var(--serif);font-weight:400;font-size:var(--t-h3);line-height:1.55;color:var(--ink-soft)}.section-no{font-family:var(--mono);color:var(--seal);font-size:var(--t-small);font-weight:500}.hairline{border:0;border-top:1px solid var(--line);margin:0}.muted{color:var(--grey)}.serif{font-family:var(--serif)}.mono{font-family:var(--mono)}.nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 86%,transparent);-webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid var(--line)}.nav__inner{display:flex;align-items:center;justify-content:space-between;height:64px}.brand{display:flex;align-items:baseline;gap:.6rem;font-family:var(--serif);font-weight:700;font-size:1.15rem;letter-spacing:-.01em}.brand__dot{width:9px;height:9px;border-radius:50%;background:var(--seal);display:inline-block;transform:translateY(-1px)}.brand__en{font-family:var(--mono);font-weight:500;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--grey)}.nav__links{display:flex;gap:2rem;align-items:center}.nav__links a{font-size:var(--t-small);color:var(--ink-soft);transition:color .2s}.nav__links a:hover{color:var(--seal)}.nav__url{font-family:var(--mono);font-size:.72rem;color:var(--grey);letter-spacing:.04em}.btn{display:inline-flex;align-items:center;gap:.6em;font-family:var(--sans);font-weight:500;font-size:var(--t-small);padding:.7em 1.4em;border-radius:var(--r-md);border:1px solid transparent;cursor:pointer;transition:all .2s ease}.btn--primary{background:var(--ink);color:var(--paper)}.btn--primary:hover{background:var(--seal);transform:translateY(-1px)}.btn--ghost{border-color:var(--line);color:var(--ink);background:transparent}.btn--ghost:hover{border-color:var(--ink)}.btn__kbd{font-family:var(--mono);font-size:.8em;opacity:.7}.seal{width:64px;height:64px;border-radius:50%;border:2px solid var(--seal);color:var(--seal);display:grid;place-items:center;text-align:center;font-family:var(--mono);font-weight:600;line-height:1.1;transform:rotate(-7deg);background:radial-gradient(circle,var(--seal-wash),transparent 72%)}.seal small{display:block;font-size:.5rem;letter-spacing:.15em;opacity:.8}.seal .num{font-size:1.3rem}.card{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-3);box-shadow:var(--shadow);transition:transform .25s ease,box-shadow .25s ease}.card--hover:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift)}.case{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-3);align-items:start}.case__meta{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.4rem}.tag{font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;padding:.25em .6em;border-radius:100px;border:1px solid var(--line);color:var(--ink-soft);background:var(--paper)}.tag--seal{color:var(--seal);border-color:var(--seal-soft);background:var(--seal-wash)}.subgoal{font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;padding:.2em .55em;border-radius:var(--r-sm);border:1px solid var(--line);color:var(--grey);background:var(--paper)}.subgoal--active{color:var(--seal);border-color:var(--seal-soft);background:var(--seal-wash)}.node{display:grid;grid-template-columns:auto 1fr;gap:.9rem;align-items:center;padding:.9rem 1rem;border-radius:var(--r-md);background:var(--paper-2);border:1px solid var(--line);transition:all .2s ease;cursor:default}.node--hover:hover{border-color:var(--seal-soft);transform:translate(2px)}.node__ring{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex:none;font-family:var(--mono);font-size:.72rem;font-weight:600;border:2px solid var(--belt-white);color:var(--ink-soft);background:var(--paper)}.node__ring--gold{border-color:var(--gold);color:var(--gold);box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 18%,transparent)}.node__ring--silver{border-color:var(--silver);color:var(--silver)}.node__ring--locked{border-style:dashed;color:var(--grey);opacity:.6}.node__ring--rusty{border-color:var(--silver);color:var(--silver);filter:grayscale(.4) brightness(.95)}.node__title{font-family:var(--serif);font-weight:600;font-size:1rem}.node__sub{font-size:.78rem;color:var(--grey)}.node--locked{opacity:.55}.belt-chip{display:inline-flex;align-items:center;gap:.5em;font-family:var(--mono);font-size:.72rem;letter-spacing:.1em}.belt-chip i{width:22px;height:6px;border-radius:3px;display:inline-block}.belt-white i{background:var(--belt-white)}.belt-yellow i{background:var(--belt-yellow)}.belt-blue i{background:var(--belt-blue)}.belt-brown i{background:var(--belt-brown)}.belt-black i{background:var(--belt-black)}.dag-line{stroke:var(--line);stroke-width:1.5;fill:none}.dag-line--main{stroke:var(--seal);stroke-width:2;stroke-dasharray:0}.hint{border-left:2px solid var(--line);padding-left:1rem;margin-bottom:.9rem}.hint__tier{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;color:var(--grey);text-transform:uppercase}.hint--t1{border-color:var(--belt-white)}.hint--t2{border-color:var(--belt-yellow)}.hint--t3{border-color:var(--belt-blue)}.hint--t4{border-color:var(--seal)}.hint__cost{font-size:.72rem;color:var(--grey);font-style:italic}.terminal{background:var(--term-bg);color:var(--term-fg);border-radius:var(--r-md);border:1px solid var(--term-line);font-family:var(--mono);font-size:.82rem;line-height:1.65;overflow:hidden;box-shadow:var(--shadow-lift)}.terminal__bar{display:flex;align-items:center;gap:.6rem;padding:.55rem .9rem;border-bottom:1px solid var(--term-line);background:#14120e}.terminal__dots{display:flex;gap:6px}.terminal__dots i{width:10px;height:10px;border-radius:50%;background:#3a352c}.terminal__label{font-family:var(--mono);font-size:.68rem;color:var(--term-dim);letter-spacing:.04em;margin-left:auto}.terminal__body{padding:1rem 1.1rem;white-space:pre-wrap;overflow-x:auto}.terminal__body .prompt{color:var(--term-fg)}.terminal__body .out{color:var(--term-dim)}.terminal__body .bp{color:var(--seal-soft)}.terminal__body .cursor{display:inline-block;width:.5em;height:1.05em;background:var(--term-fg);vertical-align:-.18em;animation:blink 1.1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.panel{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}.panel__head{display:flex;align-items:center;justify-content:space-between;padding:.55rem .85rem;border-bottom:1px solid var(--line);background:var(--paper)}.panel__title{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.panel__body{padding:.85rem;font-family:var(--mono);font-size:.78rem;line-height:1.6}.reg{display:flex;justify-content:space-between;padding:.12rem 0;color:var(--ink-soft)}.reg b{color:var(--ink)}.reg--diff{background:var(--seal-wash);margin-inline:-.4rem;padding-inline:.4rem;border-radius:3px}.reg--diff b{color:var(--seal)}.stack-frame{padding:.35rem .5rem;border:1px solid var(--line);border-radius:var(--r-sm);margin-bottom:.35rem;background:var(--paper)}.stack-frame--top{border-color:var(--seal-soft);background:var(--seal-wash)}.mem-byte{display:inline-block;padding:.05rem .25rem;border-radius:2px;color:var(--ink-soft)}.mem-byte--hot{background:var(--seal);color:var(--paper)}.grid{display:grid;gap:var(--sp-3)}.cols-2{grid-template-columns:repeat(2,1fr)}.cols-3{grid-template-columns:repeat(3,1fr)}.flow>*+*{margin-top:var(--sp-2)}.stack-gap{display:flex;flex-direction:column;gap:var(--sp-2)}.footer{border-top:1px solid var(--line);margin-top:var(--sp-6);padding-block:var(--sp-4);color:var(--grey);font-size:var(--t-small)}.footer a:hover{color:var(--seal)}@media (max-width: 860px){.cols-2,.cols-3{grid-template-columns:1fr}.nav__links{display:none}}@media (prefers-reduced-motion: no-preference){.reveal{opacity:0;transform:translateY(14px);animation:rise .7s cubic-bezier(.2,.7,.2,1) forwards}.reveal:nth-child(2){animation-delay:.08s}.reveal:nth-child(3){animation-delay:.16s}@keyframes rise{to{opacity:1;transform:none}}}#root{min-height:100vh}code{font-family:var(--mono);font-size:.92em}.hero{padding-block:clamp(3rem,8vw,7rem) clamp(2rem,5vw,4rem)}.hero__grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(2rem,5vw,4rem);align-items:end}.hero__cta{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1.6rem}.hero__aside{border-left:1px solid var(--line);padding-left:1.6rem}.stat{font-family:var(--serif);font-size:2.4rem;font-weight:700;line-height:1}.stat+.stat{margin-top:1.2rem}.stat small{display:block;font-family:var(--sans);font-size:.8rem;font-weight:300;color:var(--grey);margin-top:.3rem}.principles{padding-block:var(--sp-5)}.principle__no{font-family:var(--serif);font-size:3rem;font-weight:700;color:var(--seal);line-height:1}.case-head{display:flex;align-items:center;gap:var(--sp-3);padding-block:var(--sp-3)}.case-head h1{font-size:var(--t-h2);margin:0}.progress{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.5rem}.lab{display:grid;grid-template-columns:1.25fr .75fr;gap:var(--sp-3);align-items:start;padding-block:var(--sp-3) var(--sp-5)}.term-col{position:sticky;top:80px}.panels{display:flex;flex-direction:column;gap:var(--sp-2)}.brief{background:var(--paper-2);border:1px solid var(--line);border-left:3px solid var(--seal);border-radius:var(--r-md);padding:1rem 1.2rem;margin-bottom:var(--sp-2)}.brief p{font-family:var(--serif);font-style:italic;color:var(--ink-soft);margin:0;font-size:.98rem}.terminal__host{height:380px;padding:.6rem .8rem 0;background:var(--term-bg)}.terminal__host .xterm{height:100%}.src{font-family:var(--mono);font-size:.76rem;line-height:1.6}.src .ln{color:var(--grey);-webkit-user-select:none;user-select:none;display:inline-block;width:2.2em;text-align:right;margin-right:1em}.src .bugline{background:var(--seal-wash);display:block;margin-inline:-.85rem;padding-inline:.85rem;border-left:2px solid var(--seal)}.hintbox{margin-top:var(--sp-2)}.map-head{padding-block:var(--sp-4) var(--sp-3)}.legend{display:flex;gap:1.4rem;flex-wrap:wrap;align-items:center;margin-top:var(--sp-2);font-size:.78rem;color:var(--ink-soft)}.legend .node__ring{width:24px;height:24px}.belt-band{display:grid;grid-template-columns:180px 1fr;gap:var(--sp-3);padding-block:var(--sp-3);border-top:1px solid var(--line);align-items:start}.belt-band__label{position:sticky;top:84px}.belt-band__nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.9rem}.belt-name{font-family:var(--serif);font-size:1.4rem;font-weight:600}.belt-modules{font-family:var(--mono);font-size:.72rem;color:var(--grey);letter-spacing:.06em;margin-top:.2rem}.boss{grid-column:1 / -1;display:flex;align-items:center;gap:1rem;padding:.9rem 1.2rem;border:1px dashed var(--seal-soft);border-radius:var(--r-md);background:var(--seal-wash)}.mainline-note{font-family:var(--mono);font-size:.72rem;color:var(--seal);display:inline-flex;align-items:center;gap:.4rem}.mainline-note:before{content:"";width:18px;height:2px;background:var(--seal);display:inline-block}@media (max-width: 980px){.lab{grid-template-columns:1fr}.term-col{position:static}}@media (max-width: 860px){.hero__grid{grid-template-columns:1fr}.hero__aside{border-left:0;padding-left:0}.belt-band{grid-template-columns:1fr}.belt-band__label{position:static}}
