.shell-page[data-v-b2c86372]{box-sizing:border-box;width:100%;min-height:100vh;padding:var(--shell-page-padding-y) var(--shell-page-padding-x);background:var(--f0-page);flex-direction:column;display:flex}.shell-window[data-v-b2c86372]{background:var(--f0-window);border:2px solid silver;flex-direction:column;flex-grow:1;display:flex;box-shadow:0 0 0 1px #404040,0 20px 50px #00000040}.shell-window.has-overlay[data-v-b2c86372]{position:relative}.shell-titlebar[data-v-b2c86372]{background:linear-gradient(90deg, var(--f0-title-a), var(--f0-title-b));color:#fff;flex-shrink:0;justify-content:space-between;align-items:center;height:30px;padding:0 4px 0 10px;font-size:14px;font-weight:700;display:flex}.shell-titlebar-label[data-v-b2c86372]{align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.shell-titlebar-label span[data-v-b2c86372]:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.shell-titlebar-icon[data-v-b2c86372]{box-sizing:border-box;color:silver;text-align:center;background:#000;border:1px solid silver;flex-shrink:0;width:16px;height:14px;font-size:9px;line-height:12px}.shell-titlebar-buttons[data-v-b2c86372]{flex-shrink:0;gap:2px;display:flex}.shell-titlebar-btn[data-v-b2c86372]{color:#000;text-align:center;background:silver;width:20px;height:18px;font-size:11px;line-height:18px;box-shadow:inset -1px -1px #404040,inset 1px 1px #fff}.shell-content[data-v-b2c86372]{padding:var(--shell-content-padding-y) var(--shell-content-padding-x);color:var(--f0-text);font-size:var(--fs-body);line-height:var(--lh-body);flex-direction:column;flex-grow:1;gap:28px;display:flex}.app-nav[data-v-35d11e9b]{flex-wrap:wrap;gap:28px;display:flex}.app-nav-link[data-v-35d11e9b]{color:var(--f0-text);border-bottom-color:var(--f0-rule)}.app-nav-link.is-active[data-v-35d11e9b]{color:var(--f0-accent);border-bottom-color:var(--f0-accent)}.version-banner[data-v-3e4d7b90]{color:var(--f0-muted);font-size:var(--fs-meta)}.intro[data-v-3e4d7b90]{flex-direction:column;gap:10px;display:flex}.name[data-v-3e4d7b90]{font-size:var(--fs-home-name);letter-spacing:-.01em;color:var(--f0-strong);margin:0;font-weight:700;line-height:1}.tagline[data-v-3e4d7b90]{max-width:760px;margin:0}.col[data-v-3e4d7b90]{flex-direction:column;gap:8px;display:flex}.section-label[data-v-3e4d7b90]{color:var(--f0-accent);font-weight:700}.writing-item[data-v-3e4d7b90]{gap:20px;display:flex}.writing-date[data-v-3e4d7b90]{color:var(--f0-muted)}.writing-title[data-v-3e4d7b90]{color:var(--f0-strong);border-bottom-color:var(--f0-rule)}.elsewhere[data-v-3e4d7b90]{flex-direction:column;gap:8px;display:flex}.elsewhere-links[data-v-3e4d7b90]{gap:28px;display:flex}.elsewhere-links a[data-v-3e4d7b90]{color:var(--f0-strong);border-bottom-color:var(--f0-rule)}.footer-prompt[data-v-3e4d7b90]{align-items:center;gap:4px;margin-top:auto;display:flex}.prompt-label[data-v-3e4d7b90]{color:var(--f0-muted)}.cursor[data-v-3e4d7b90]{background:var(--f0-text);width:10px;height:19px;animation:1s step-end infinite blink;display:inline-block}:root{--f0-page:#dcd8d0;--f0-window:#fbfaf6;--f0-text:#2a2a2a;--f0-muted:#86827a;--f0-strong:#111;--f0-accent:#0a246a;--f0-rule:#b8b4ac;--f0-title-a:#0a246a;--f0-title-b:#a6caf0;--f0-code-bg:#f1eee7;--f0-code-border:#d6d2c9;--font-body:"Ubuntu Mono", monospace;--fs-body:17px;--fs-article-body:18px;--fs-meta:15px;--fs-home-name:64px;--fs-h1:44px;--fs-article-h1:48px;--lh-body:1.65;--lh-article:1.7;--shell-page-padding-y:56px;--shell-page-padding-x:120px;--shell-content-padding-y:36px;--shell-content-padding-x:48px}@media (width<=768px){:root{--shell-page-padding-y:16px;--shell-page-padding-x:16px;--shell-content-padding-y:20px;--shell-content-padding-x:20px;--fs-home-name:40px;--fs-h1:32px;--fs-article-h1:34px}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-body);color:var(--f0-text);background-color:var(--f0-page)}#app{height:100%}a{color:inherit;border-bottom:1px dotted var(--f0-rule);text-decoration:none}a:hover{border-bottom-style:solid}:focus-visible{outline:2px solid var(--f0-accent);outline-offset:2px}@keyframes blink{50%{opacity:0}}
