@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/space-mono-vietnamese-400-normal.BNOj0Qhp.woff2)format("woff2"),url(/_astro/space-mono-vietnamese-400-normal.B0PMp_xB.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/space-mono-latin-ext-400-normal.DTLbW2xa.woff2)format("woff2"),url(/_astro/space-mono-latin-ext-400-normal.D4cJI_B-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/space-mono-latin-400-normal.Rg4St2Dn.woff2)format("woff2"),url(/_astro/space-mono-latin-400-normal._3DlpgIW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-mono-vietnamese-700-normal.DWQgDHuA.woff2)format("woff2"),url(/_astro/space-mono-vietnamese-700-normal.D-KrLuLr.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-mono-latin-ext-700-normal.B2s3bDs2.woff2)format("woff2"),url(/_astro/space-mono-latin-ext-700-normal.B_E7P90g.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-mono-latin-700-normal.mWgeinG7.woff2)format("woff2"),url(/_astro/space-mono-latin-700-normal.D7A851RN.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/space-mono-vietnamese-400-italic.CyQIvI4V.woff2)format("woff2"),url(/_astro/space-mono-vietnamese-400-italic.DvlTUS1j.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/space-mono-latin-ext-400-italic.x3PrlAeq.woff2)format("woff2"),url(/_astro/space-mono-latin-ext-400-italic.DYA_DB_l.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/space-mono-latin-400-italic.YylcN9Ay.woff2)format("woff2"),url(/_astro/space-mono-latin-400-italic.zmx7Qf09.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:italic;font-display:swap;font-weight:700;src:url(/_astro/space-mono-vietnamese-700-italic.i2bR4MHS.woff2)format("woff2"),url(/_astro/space-mono-vietnamese-700-italic.BwPKnf-l.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:italic;font-display:swap;font-weight:700;src:url(/_astro/space-mono-latin-ext-700-italic.CkCrmjWu.woff2)format("woff2"),url(/_astro/space-mono-latin-ext-700-italic.CbHMtIk0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:italic;font-display:swap;font-weight:700;src:url(/_astro/space-mono-latin-700-italic.vNvENeTh.woff2)format("woff2"),url(/_astro/space-mono-latin-700-italic.B8C1HgwN.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--c-bg:#0a0d12;--c-panel:#0e1218;--c-content:#131820;--c-border:#242b36;--c-text:#dde4ec;--c-muted:#8a94a2;--c-dim:#75808f;--c-accent:#3ddc97;--c-blue:#6fb4ff;--c-amber:#e8b34b;--c-red:#ff7066;--c-selection:#142a27;--font:"Space Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--fs-ui:12px;--fs-term:13px;--fs-body:15px;--fs-h2:18px;--fs-h1:28px;--fs-display:40px;--fs-widget-clock:55px;--fs-widget-date:31px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-6:24px;--s-8:32px;--s-12:48px;--r-sm:3px;--r-md:6px;--sidebar-w:260px;--tabbar-h:38px;--crumb-h:32px;--term-h:220px;--status-h:26px;--header-h:48px;--dock-h:52px;--panel-h:60dvh;--drawer-w:280px}@media (width<=719px){:root{--fs-body:14px;--fs-h2:17px;--fs-h1:24px;--fs-widget-clock:40px;--fs-widget-date:22px}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--c-bg);color:var(--c-text);font-family:var(--font);font-size:var(--fs-body);line-height:1.7;overflow:hidden}::selection{background:var(--c-selection)}:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.app{flex-direction:column;height:100vh;display:flex}.row{flex:1;min-height:0;display:flex}.topbar,.backdrop{display:none}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--c-panel);border-right:1px solid var(--c-border);font-size:var(--fs-ui);cursor:default;-webkit-user-select:none;user-select:none;flex-direction:column;display:flex}.sidebar-head{padding:var(--s-3) var(--s-4);letter-spacing:.08em;color:var(--c-muted);text-transform:uppercase;align-items:center;display:flex}.sidebar-head .icon-btn{display:none}.tree{padding:0 var(--s-2);line-height:1.4}.tree-row{align-items:center;gap:var(--s-2);padding:5px var(--s-2);color:var(--c-text);white-space:nowrap;border-radius:var(--r-sm);display:flex}.tree-row.child{padding-left:26px}.tree-row .glyph{color:var(--c-dim);flex:0 0 10px;width:10px;font-size:10px}.tree-row .icon{width:14px;height:14px;color:var(--c-muted);flex:0 0 14px}.tree-row .label{text-overflow:ellipsis;overflow:hidden}.tree-row.dim .label{color:var(--c-dim)}.tree-row.dir .label{color:var(--c-text)}.tree-row.active{background:var(--c-selection);color:var(--c-accent)}.tree-row.active .icon{color:var(--c-accent)}.sidebar-hint{padding:var(--s-3) var(--s-4);border-top:1px solid var(--c-border);color:var(--c-accent);font-size:var(--fs-ui);margin-top:auto}.sidebar-hint .dim{color:var(--c-dim)}.main{flex-direction:column;flex:1;min-width:0;display:flex}.tabbar{height:var(--tabbar-h);flex:0 0 var(--tabbar-h);background:var(--c-bg);border-bottom:1px solid var(--c-border);font-size:var(--fs-ui);display:flex}.tab{align-items:center;gap:var(--s-2);padding:0 var(--s-4);color:var(--c-muted);border-right:1px solid var(--c-border);cursor:default;white-space:nowrap;border-top:2px solid #0000;display:flex}.tab.active{background:var(--c-content);color:var(--c-text);border-top-color:var(--c-accent)}.tab .dot{background:var(--c-dim);border-radius:50%;width:8px;height:8px}.tab.active .dot{background:var(--c-accent)}.breadcrumb{height:var(--crumb-h);flex:0 0 var(--crumb-h);align-items:center;gap:var(--s-2);padding:0 var(--s-12);background:var(--c-content);border-bottom:1px solid var(--c-border);font-size:var(--fs-ui);color:var(--c-muted);display:flex}.breadcrumb .sep{color:var(--c-dim)}.breadcrumb .here{color:var(--c-text)}.draft-chip{color:var(--c-amber);padding:1px var(--s-2);border-radius:var(--r-sm);letter-spacing:.05em;border:1px solid #e8b34b59;margin-left:auto;font-size:11px}.content{background:var(--c-content);flex:1;min-height:0;overflow-y:auto}.doc{max-width:760px;padding:var(--s-12) var(--s-12) 72px}.doc h1{font-size:var(--fs-h1);letter-spacing:-.01em;margin-bottom:var(--s-4);font-weight:700;line-height:1.25}.doc .kicker{font-size:var(--fs-ui);color:var(--c-accent);letter-spacing:.12em;text-transform:uppercase;margin-bottom:var(--s-3)}.doc .lede{color:var(--c-muted);margin-bottom:var(--s-6)}.doc h2{font-size:var(--fs-h2);margin:var(--s-8) 0 var(--s-3);font-weight:700}.doc p{margin-bottom:var(--s-4)}.doc ul{margin:0 0 var(--s-4) var(--s-6)}.doc li{margin-bottom:var(--s-2)}.doc code{font-family:var(--font);background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--r-sm);padding:1px 6px;font-size:.92em}.doc pre{background:var(--c-panel);border:1px solid var(--c-border);border-radius:var(--r-md);padding:var(--s-4) var(--s-6);font-size:var(--fs-term);margin-bottom:var(--s-6);line-height:1.8;overflow-x:auto}.doc pre code{background:0 0;border:none;padding:0}.doc .cmd{color:var(--c-accent)}.doc .arg{color:var(--c-amber)}.doc .out{color:var(--c-muted)}.doc hr{border:none;border-top:1px solid var(--c-border);margin:var(--s-8) 0}.doc table{border-collapse:collapse;width:100%;margin-bottom:var(--s-6);font-size:13px}.doc th,.doc td{text-align:left;padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--c-border);vertical-align:top}.doc th{color:var(--c-muted);font-weight:400;font-size:var(--fs-ui);letter-spacing:.06em;text-transform:uppercase}.doc td code{white-space:nowrap}.doc .tbd{color:var(--c-amber)}.terminal{height:var(--term-h);flex:0 0 var(--term-h);background:var(--c-panel);border-top:1px solid var(--c-border);flex-direction:column;display:flex}.term-bar{align-items:center;gap:var(--s-2);height:32px;padding:0 var(--s-4);font-size:var(--fs-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted);border-bottom:1px solid var(--c-border);flex:0 0 32px;display:flex}.term-bar .tag{color:var(--c-dim);text-transform:none;letter-spacing:.02em;margin-left:auto}.dock-bar{display:none}.term-panel{flex-direction:column;flex:1;min-height:0;display:flex}.drag-handle{display:none}.term-out{padding:var(--s-3) var(--s-4) 0;font-size:var(--fs-term);scrollbar-width:thin;scrollbar-color:var(--c-border) transparent;flex:1;line-height:1.65;overflow-y:auto}.term-line{white-space:pre-wrap;word-break:break-word}.t-user{color:var(--c-accent)}.t-path{color:var(--c-blue)}.t-sign{color:var(--c-text)}.t-out{color:var(--c-muted)}.t-cmd{color:var(--c-text)}.t-err{color:var(--c-red)}.t-ok{color:var(--c-accent)}.t-amber{color:var(--c-amber)}.t-dim{color:var(--c-dim)}.term-widget{margin:var(--s-2) 0 var(--s-3)}.widget-time .wt-clock{font-size:var(--fs-widget-clock);color:var(--c-accent);font-weight:700;line-height:1.15}.widget-time .wt-date{font-size:var(--fs-widget-date);margin-top:var(--s-1);color:var(--c-muted);line-height:1.3}.widget-time .wt-zone{font-size:var(--fs-term);margin-top:var(--s-2);color:var(--c-dim)}.term-prompt{padding:var(--s-2) var(--s-4) var(--s-3);font-size:var(--fs-term);cursor:text;align-items:center;gap:0;display:flex}.term-prompt .t-user,.term-prompt .t-path{white-space:pre}#term-input{min-width:0;color:var(--c-text);font-family:var(--font);font-size:var(--fs-term);caret-color:var(--c-accent);background:0 0;border:none;flex:1;padding:0 0 0 6px;line-height:1.65}#term-input:focus{outline:none}.term-prompt:focus-within .caret{opacity:.9}.caret{background:var(--c-accent);opacity:0;width:8px;height:16px;margin-left:2px;animation:1.1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.statusbar{height:var(--status-h);flex:0 0 var(--status-h);align-items:center;gap:var(--s-4);padding:0 var(--s-4);background:var(--c-bg);border-top:1px solid var(--c-border);color:var(--c-muted);cursor:default;-webkit-user-select:none;user-select:none;font-size:11px;display:flex}.statusbar .spacer{margin-left:auto}.statusbar .item{align-items:center;gap:6px;display:flex}.statusbar .accent{color:var(--c-accent)}.icon-btn{width:44px;height:44px;color:var(--c-text);border-radius:var(--r-sm);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:flex}.icon-btn:active{background:var(--c-selection)}.icon-btn svg{width:20px;height:20px}@media (width<=719px){body{background:#06080b}.app{height:100dvh;position:relative;overflow:hidden}.topbar{height:var(--header-h);flex:0 0 var(--header-h);align-items:center;gap:var(--s-2);padding:0 var(--s-2);background:var(--c-bg);border-bottom:1px solid var(--c-border);display:flex}.topbar-title{align-items:baseline;gap:var(--s-2);flex:1;min-width:0;display:flex}.topbar-title .file{font-size:var(--fs-ui);color:var(--c-text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.topbar-title .proj{color:var(--c-dim);font-size:11px}.topbar .draft-chip{margin-left:0;margin-right:var(--s-2);flex:none;font-size:10px}.sidebar{width:var(--drawer-w);z-index:3;flex:none;max-width:85vw;transition:transform .18s;position:absolute;top:0;bottom:0;left:0;transform:translate(-101%)}.sidebar[data-open=true]{transform:none;box-shadow:12px 0 32px #00000073}.sidebar-head{border-bottom:1px solid var(--c-border)}.sidebar-head .icon-btn{margin-left:auto;display:flex}.tree{padding:var(--s-2);flex:1;overflow-y:auto}.tree-row{padding:8px var(--s-2)}@media (prefers-reduced-motion:reduce){.sidebar{transition:none}}.backdrop{opacity:0;pointer-events:none;z-index:2;background:#06080b99;transition:opacity .18s;display:block;position:absolute;inset:0}.backdrop[data-open=true]{opacity:1;pointer-events:auto}@media (prefers-reduced-motion:reduce){.backdrop{transition:none}}.tabbar,.breadcrumb,.statusbar,.term-bar,.caret{display:none}.main{flex:1;min-height:0;position:relative}.doc{padding:var(--s-6) var(--s-4) 96px}.doc .kicker{margin-bottom:var(--s-2);font-size:11px}.doc pre{padding:var(--s-3) var(--s-4);font-size:12px}.doc table{font-size:12px}.doc th,.doc td{padding:var(--s-2) var(--s-1)}.doc th{font-size:11px}.terminal{height:auto;padding-bottom:env(safe-area-inset-bottom);z-index:1;flex:none;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #00000059}.dock-bar{height:var(--dock-h);flex:0 0 var(--dock-h);align-items:center;gap:var(--s-2);padding:0 var(--s-4);color:var(--c-text);font-family:var(--font);font-size:var(--fs-term);cursor:pointer;text-align:left;background:0 0;border:none;width:100%;display:flex}.dock-bar .chev{width:28px;height:28px;color:var(--c-muted);flex:none;justify-content:center;align-items:center;margin-left:auto;transition:transform .18s;display:flex}.terminal[data-open=true] .dock-bar .chev{transform:rotate(180deg)}@media (prefers-reduced-motion:reduce){.dock-bar .chev{transition:none}}.term-panel{flex:none;height:0;transition:height .18s;overflow:hidden}.terminal[data-open=true] .term-panel{height:var(--panel-h)}@media (prefers-reduced-motion:reduce){.term-panel{transition:none}}.term-out{padding:var(--s-2) var(--s-4) 0}.term-prompt{padding:var(--s-2) var(--s-4) var(--s-4)}.drag-handle{background:var(--c-border);width:36px;height:4px;margin:var(--s-2) auto var(--s-1);border-radius:2px;flex:none;display:block}}@media (prefers-reduced-motion:reduce){.caret{opacity:.7;animation:none}}
