.book-k-architecture{--book-k-ink:#3d3d3a;--book-k-ink-soft:#5c5b57;--book-k-paper:#f8f7f4;--book-k-paper-raised:#ede8e0;--book-k-paper-card:#fff;--book-k-rule:#d9d3c6;--book-k-teal:#00827f;--book-k-gold:#b08f3c;--book-k-slate:#4f6482;--book-k-sage:#5e7350;--book-k-cap-ink:#2a2a28;--book-k-cap-soft:#efeae0;--book-k-shadow:0 1px 2px #3d3d3a0f, 0 6px 16px #3d3d3a0f;--book-k-font-display:var(--book-k-display), "DM Serif Display", Georgia, serif;--book-k-font-sans:var(--book-k-sans), "DM Sans", ui-sans-serif, system-ui, sans-serif;--book-k-font-mono:var(--book-k-mono), "DM Mono", ui-monospace, monospace;background:var(--book-k-paper);color:var(--book-k-ink);font-family:var(--book-k-font-sans);-webkit-font-smoothing:antialiased;line-height:1.5}@media (prefers-color-scheme:dark){.book-k-architecture:not([data-theme=light]){--book-k-ink:#f2f0ea;--book-k-ink-soft:#c7c3b8;--book-k-paper:#201f1c;--book-k-paper-raised:#2a2925;--book-k-paper-card:#26251f;--book-k-rule:#3c3a34;--book-k-teal:#3fbdb8;--book-k-gold:#e3c578;--book-k-slate:#93aad0;--book-k-sage:#9bbb88;--book-k-cap-ink:#efeae0;--book-k-cap-soft:#2e2c26;--book-k-shadow:0 1px 2px #0000004d, 0 6px 20px #00000059}}.book-k-architecture[data-theme=dark]{--book-k-ink:#f2f0ea;--book-k-ink-soft:#c7c3b8;--book-k-paper:#201f1c;--book-k-paper-raised:#2a2925;--book-k-paper-card:#26251f;--book-k-rule:#3c3a34;--book-k-teal:#3fbdb8;--book-k-gold:#e3c578;--book-k-slate:#93aad0;--book-k-sage:#9bbb88;--book-k-cap-ink:#efeae0;--book-k-cap-soft:#2e2c26;--book-k-shadow:0 1px 2px #0000004d, 0 6px 20px #00000059}.book-k-architecture h1,.book-k-architecture h2,.book-k-architecture h3{font-family:var(--book-k-font-display);text-wrap:balance;margin:0;font-weight:400}.book-k-architecture .book-k-mono{font-family:var(--book-k-font-mono)}.book-k-architecture .N{--book-k-strand:var(--book-k-teal)}.book-k-architecture .A{--book-k-strand:var(--book-k-gold)}.book-k-architecture .G{--book-k-strand:var(--book-k-slate)}.book-k-architecture .D{--book-k-strand:var(--book-k-sage)}.book-k-architecture .capstone{--book-k-strand:var(--book-k-gold)}.book-k-topnav{z-index:20;background:color-mix(in srgb, var(--book-k-paper) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--book-k-rule);align-items:center;gap:2px;padding:10px 20px;display:flex;position:sticky;top:0;overflow-x:auto}.book-k-topnav .brand{font-family:var(--book-k-font-display);border-right:1px solid var(--book-k-rule);white-space:nowrap;margin-right:8px;padding-right:14px;font-size:15px}.book-k-topnav a,.book-k-topnav button{font-family:var(--book-k-font-mono);letter-spacing:.03em;white-space:nowrap;color:var(--book-k-ink-soft);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;padding:6px 9px;font-size:11.5px;text-decoration:none}.book-k-topnav a:hover,.book-k-topnav a:focus-visible,.book-k-topnav button:hover,.book-k-topnav button:focus-visible,.book-k-topnav button[aria-current=page],.book-k-topnav button[aria-pressed=true]{border-color:var(--book-k-rule);color:var(--book-k-ink);background:var(--book-k-paper-raised);outline:none}.book-k-main{max-width:900px;margin:0 auto;padding:0 20px 100px}.book-k-masthead{border-bottom:1px solid var(--book-k-rule);padding:52px 0 26px}.book-k-eyebrow{font-family:var(--book-k-font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--book-k-ink-soft);font-size:11px}.book-k-masthead h1{margin-top:10px;font-size:clamp(30px,5vw,42px)}.book-k-lede{max-width:64ch;color:var(--book-k-ink-soft);margin-top:14px;font-size:15.5px}.book-k-status{font-family:var(--book-k-font-mono);background:var(--book-k-paper-raised);border:1px solid var(--book-k-rule);color:var(--book-k-ink-soft);border-radius:3px;align-items:center;gap:8px;margin-top:18px;padding:6px 10px;font-size:11px;display:inline-flex}.book-k-status b{color:var(--book-k-ink)}.book-k-howto{border-bottom:1px solid var(--book-k-rule);grid-template-columns:repeat(4,1fr);gap:18px;padding:26px 0 30px;display:grid}@media (max-width:720px){.book-k-howto{grid-template-columns:1fr 1fr}}.book-k-howto .k{font-family:var(--book-k-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--book-k-ink-soft);margin-bottom:4px;font-size:10px}.book-k-howto .v{color:var(--book-k-ink);font-size:13px;line-height:1.4}.book-k-chapter{border-bottom:1px solid var(--book-k-rule);padding:44px 0;scroll-margin-top:56px}.book-k-chapter:last-of-type{border-bottom:none}.book-k-chap-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.book-k-chap-tag{font-family:var(--book-k-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--book-k-strand,var(--book-k-ink-soft));align-items:center;gap:6px;font-size:10.5px;display:inline-flex}.book-k-chap-tag .dot{background:var(--book-k-strand,var(--book-k-ink-soft));border-radius:50%;width:7px;height:7px}.book-k-chap-head h2{margin-top:6px;font-size:clamp(21px,3vw,27px)}.book-k-movement{font-family:var(--book-k-font-mono);color:var(--book-k-ink-soft);white-space:nowrap;border:1px solid var(--book-k-rule);border-radius:3px;padding:4px 9px;font-size:11px}.book-k-arc{max-width:66ch;color:var(--book-k-ink-soft);margin-top:10px;font-size:13.5px}.book-k-sections{flex-direction:column;gap:10px;margin-top:22px;display:flex}.book-k-section{background:var(--book-k-paper-card);border:1px solid var(--book-k-rule);border-left:4px solid var(--book-k-strand,var(--book-k-ink-soft));box-shadow:var(--book-k-shadow);border-radius:3px;padding:14px 16px}.book-k-section .top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.book-k-section .num{font-family:var(--book-k-font-mono);color:var(--book-k-ink-soft);font-size:10.5px}.book-k-section h4{font-family:var(--book-k-font-sans);margin:2px 0 0;font-size:15px;font-weight:700}.book-k-heart{color:var(--book-k-ink-soft);max-width:68ch;margin-top:6px;font-size:13px}.book-k-meta{flex-wrap:wrap;gap:6px 8px;margin-top:10px;display:flex}.book-k-tag{font-family:var(--book-k-font-mono);border:1px solid var(--book-k-rule);color:var(--book-k-ink-soft);border-radius:3px;padding:3px 7px;font-size:10.5px}.book-k-tag.bar{border-color:var(--book-k-strand,var(--book-k-rule));color:var(--book-k-strand,var(--book-k-ink-soft));font-weight:500}.book-k-tag.solo{background:var(--book-k-paper-raised)}.book-k-done{border-top:1px dashed var(--book-k-rule);gap:8px;margin-top:11px;padding-top:10px;font-size:12px;display:flex}.book-k-done .lbl{font-family:var(--book-k-font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--book-k-ink-soft);white-space:nowrap;padding-top:1px;font-size:10px}.book-k-done p{color:var(--book-k-ink-soft);margin:0}.book-k-capstone-wrap{background:var(--book-k-cap-soft);border:1px solid var(--book-k-gold);border-radius:4px;padding:24px 22px}.book-k-problems{border-top:1px dashed var(--book-k-rule);flex-direction:column;gap:8px;margin-top:12px;padding-top:12px;display:flex}.book-k-problem{background:var(--book-k-paper-raised);text-align:left;width:100%;font:inherit;cursor:pointer;border:0;border-radius:3px;padding:10px 12px;display:block}.book-k-problem:hover,.book-k-problem:focus-visible{box-shadow:0 0 0 2px var(--book-k-teal);outline:none}.book-k-role{font-family:var(--book-k-font-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--book-k-strand,var(--book-k-ink-soft));margin-bottom:5px;font-size:9.5px;display:block}.book-k-prompt{color:var(--book-k-ink);max-width:64ch;margin:0;font-size:13px}.book-k-target{color:var(--book-k-ink-soft);max-width:64ch;margin-top:5px;font-size:11.5px;font-style:italic}.book-k-konva-wrap{border-top:1px dashed var(--book-k-rule);margin-top:10px;padding-top:10px}.book-k-konva-tag{font-family:var(--book-k-font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--book-k-gold);margin-bottom:6px;font-size:9.5px}.book-k-stage-frame{border:1px solid var(--book-k-rule);background:var(--book-k-paper-card);touch-action:none;border-radius:4px;width:min(100%,360px)}.book-k-demo-btn{font-family:var(--book-k-font-mono);border:1px solid var(--book-k-rule);background:var(--book-k-paper-raised);min-height:44px;color:var(--book-k-ink);cursor:pointer;border-radius:3px;margin-top:8px;margin-right:8px;padding:8px 12px;font-size:11px;display:inline-block}.book-k-demo-btn:hover,.book-k-demo-btn:focus-visible{border-color:var(--book-k-teal);color:var(--book-k-teal);outline:none}.book-k-demo-btn[aria-pressed=true]{border-color:var(--book-k-ink);background:var(--book-k-paper-card)}.book-k-demo-btn:disabled{opacity:.45;cursor:not-allowed}.book-k-child-prompt{max-width:42ch;margin:0 0 12px;font-size:16px}.book-k-ids{font-family:var(--book-k-font-mono);color:var(--book-k-ink-soft);margin-top:8px;font-size:10px}
