:root{--bg: #0b0906;--bg-2: #13100b;--panel: #1a1610;--panel-2: #221c13;--line: #3a2f1e;--line-soft: #2a2317;--text: #ece4d4;--muted: #a99d86;--gold: #d6b25e;--gold-2: #f0d48a;--gold-dim: #8a6e33;--red: #b5473a;--green: #7fa66b;--blue: #6f8fb8;--radius: 10px;--serif: "Cormorant Garamond", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sidebar-w: 248px;--topbar-h: 56px;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);background-image:radial-gradient(ellipse at 70% -10%,rgba(214,178,94,.08),transparent 55%);background-attachment:fixed;color:var(--text);font:15.5px/1.6 var(--sans);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}a{color:var(--gold-2);text-decoration-color:#f0d48a59;text-underline-offset:3px}a:hover{text-decoration-color:var(--gold-2)}h1,h2,h3,h4{font-family:var(--serif);font-weight:600;color:var(--gold-2);line-height:1.2;letter-spacing:.01em}h1{font-size:clamp(2rem,4vw,2.8rem);margin:.2em 0 .4em}h2{font-size:1.75rem;margin:1.8em 0 .5em;padding-bottom:.25em;border-bottom:1px solid var(--line)}h3{font-size:1.35rem;margin:1.4em 0 .4em;color:var(--gold)}h4{font-size:1.1rem;margin:1.2em 0 .3em;color:var(--gold)}code{font-family:var(--mono);font-size:.88em;background:var(--panel-2);padding:.1em .35em;border-radius:4px}pre{background:var(--panel);border:1px solid var(--line-soft);border-radius:var(--radius);padding:12px 14px;overflow-x:auto}pre code{background:none;padding:0}hr{border:0;border-top:1px solid var(--line);margin:2em 0}blockquote{margin:1em 0;padding:.6em 1em;border-left:3px solid var(--gold-dim);background:var(--bg-2);color:var(--muted);border-radius:0 var(--radius) var(--radius) 0}table{border-collapse:collapse;width:100%;font-size:.92em;margin:1em 0;display:block;overflow-x:auto}th,td{border-bottom:1px solid var(--line-soft);padding:7px 10px;text-align:left;vertical-align:top}th{color:var(--gold);font-weight:600;background:var(--bg-2);position:sticky;top:0}img{max-width:100%}::selection{background:#d6b25e59}.topbar{position:fixed;inset:0 0 auto;height:var(--topbar-h);z-index:30;display:flex;align-items:center;gap:10px;padding:0 16px;background:#0b0906eb;backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top);height:calc(var(--topbar-h) + env(safe-area-inset-top))}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text)}.brand-mark{font-size:1.6rem;color:var(--gold);filter:drop-shadow(0 0 6px rgba(214,178,94,.4))}.brand-text{font-family:var(--serif);font-size:1.35rem;font-weight:700;color:var(--gold-2);display:flex;flex-direction:column;line-height:1.05}.brand-text small{font-family:var(--sans);font-size:.66rem;font-weight:500;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.nav-toggle{display:none;background:none;border:1px solid var(--line);color:var(--gold);border-radius:8px;width:40px;height:36px;font-size:1.1rem;cursor:pointer}.sidebar{position:fixed;top:calc(var(--topbar-h) + env(safe-area-inset-top));bottom:0;left:0;width:var(--sidebar-w);overflow-y:auto;padding:14px 10px 30px;border-right:1px solid var(--line-soft);background:#0b090699;z-index:20}.sidebar a{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;color:var(--text);text-decoration:none;font-size:.94rem}.sidebar a .num{font-family:var(--serif);color:var(--gold-dim);width:1.3em;text-align:right;font-size:1.05rem}.sidebar a:hover{background:var(--panel)}.sidebar a.active{background:linear-gradient(90deg,#d6b25e29,#d6b25e08);color:var(--gold-2);box-shadow:inset 2px 0 0 var(--gold)}.sidebar .sub{margin-left:22px;font-size:.86rem;padding:5px 12px;color:var(--muted)}.sidebar .sub.active{color:var(--gold-2);box-shadow:inset 2px 0 0 var(--gold-dim)}.sidebar .sep{height:1px;background:var(--line-soft);margin:10px 8px}.sidebar .ext:after{content:"↗";margin-left:auto;color:var(--gold-dim);font-size:.8em}main{margin-left:var(--sidebar-w);padding:calc(var(--topbar-h) + env(safe-area-inset-top) + 24px) clamp(16px,4vw,48px) 80px;max-width:calc(var(--sidebar-w) + 1060px);outline:none}main.wide{max-width:none}@media(max-width:860px){.nav-toggle{display:inline-block}.sidebar{transform:translate(-100%);transition:transform .2s ease;width:min(84vw,300px);background:var(--bg);box-shadow:10px 0 30px #0009}body.nav-open .sidebar{transform:none}main{margin-left:0;padding-left:16px;padding-right:16px}h2{font-size:1.5rem}}.lead{font-size:1.12rem;color:var(--muted);max-width:46em}.eyebrow{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-dim);font-weight:600}.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.card{background:linear-gradient(180deg,var(--panel),var(--bg-2));border:1px solid var(--line-soft);border-radius:var(--radius);padding:16px 18px;position:relative}.card h3{margin-top:0}a.card{text-decoration:none;color:var(--text);display:block;transition:border-color .15s,transform .15s}a.card:hover{border-color:var(--gold-dim);transform:translateY(-1px)}.card .meta{color:var(--muted);font-size:.86rem}.ornament{text-align:center;color:var(--gold-dim);letter-spacing:.6em;margin:2em 0;user-select:none}.tag{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:99px;border:1px solid var(--line);color:var(--muted);margin:2px 4px 2px 0;white-space:nowrap}.tag.gold{border-color:var(--gold-dim);color:var(--gold-2)}.tag.ok{border-color:#4d6b3f;color:#a8cf93}.tag.warn{border-color:#7a5a2a;color:#e5b866}.tag.bad{border-color:#6b3530;color:#e08b80}.note{border:1px solid var(--gold-dim);background:#d6b25e0f;border-radius:var(--radius);padding:12px 16px;margin:1em 0}.note.warn{border-color:#7a5a2a;background:#e5b8660f}button,.btn{font:500 .92rem var(--sans);color:var(--bg);background:var(--gold);border:0;padding:9px 16px;border-radius:8px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;min-height:38px}button:hover,.btn:hover{background:var(--gold-2)}button.ghost,.btn.ghost{background:transparent;color:var(--gold-2);border:1px solid var(--gold-dim)}button.ghost:hover,.btn.ghost:hover{background:#d6b25e1a}button:disabled{opacity:.45;cursor:not-allowed}.btn-row{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}label.field{display:flex;flex-direction:column;gap:4px;font-size:.86rem;color:var(--muted)}input[type=text],input[type=number],input[type=date],select,textarea{font:15px var(--sans);color:var(--text);background:var(--bg-2);border:1px solid var(--line);border-radius:7px;padding:8px 10px;width:100%}textarea{min-height:90px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid var(--gold-dim);outline-offset:1px}input[type=range]{width:100%;accent-color:var(--gold)}.form-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.md{max-width:52em}.md li{margin:.2em 0}.md li>p{margin:.2em 0}.md .toc{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:var(--radius);padding:10px 16px;margin:1em 0 2em;font-size:.92rem}.md .toc ul{margin:.3em 0;padding-left:1.2em}.md .toc strong{color:var(--gold);font-family:var(--serif);font-size:1.1rem}.md h2[id],.md h3[id]{scroll-margin-top:calc(var(--topbar-h) + 20px)}.doc-src{font-size:.8rem;color:var(--muted);margin-top:3em;border-top:1px solid var(--line-soft);padding-top:10px}.demo-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:10px}.demo-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}@media(max-width:1000px){.demo-layout{grid-template-columns:1fr}}.stage{position:relative;background:#000;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;aspect-ratio:4 / 3;width:100%;touch-action:none}.stage canvas{display:block;width:100%;height:100%}.stage.tall{aspect-ratio:3 / 4;max-height:78vh;margin:0 auto}.stage:fullscreen,.stage.pseudo-fs{aspect-ratio:auto;border:0;border-radius:0;width:100vw;height:100vh;height:100dvh;max-height:none}.stage.pseudo-fs{position:fixed;inset:0;z-index:100}.stage .overlay-ui{position:absolute;left:8px;right:8px;bottom:8px;display:flex;flex-wrap:wrap;gap:6px;justify-content:center;transition:opacity .3s;pointer-events:none}.stage .overlay-ui>*{pointer-events:auto}.stage .overlay-ui button{background:#1a1610d9;color:var(--gold-2);border:1px solid var(--gold-dim);font-size:.82rem;padding:6px 10px;min-height:32px}.stage.ui-hidden .overlay-ui{opacity:0;pointer-events:none}.stage.ui-hidden .overlay-ui>*{pointer-events:none}.stage .hint{position:absolute;top:8px;left:8px;right:8px;text-align:center;color:var(--muted);font-size:.78rem;pointer-events:none;transition:opacity .3s}.stage.ui-hidden .hint{opacity:0}.stage .status{position:absolute;top:8px;left:8px;font:12px var(--mono);color:var(--gold-2);background:#0009;padding:4px 8px;border-radius:6px;pointer-events:none;white-space:pre}.stage video.preview{position:absolute;right:8px;top:8px;width:140px;border:1px solid var(--gold-dim);border-radius:6px;transform:scaleX(-1);opacity:.85}.controls{background:var(--panel);border:1px solid var(--line-soft);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:12px}.controls h4{margin:0;font-size:1rem}.ctl{display:flex;flex-direction:column;gap:2px;font-size:.84rem;color:var(--muted)}.ctl .row{display:flex;justify-content:space-between;gap:8px}.ctl output{color:var(--gold-2);font-family:var(--mono);font-size:.8rem}.ctl-check{display:flex;align-items:center;gap:8px;font-size:.86rem;color:var(--text);cursor:pointer}.ctl-check input{accent-color:var(--gold);width:18px;height:18px}.seg{display:flex;flex-wrap:wrap;gap:4px}.seg button{flex:1 1 auto;background:var(--bg-2);color:var(--muted);border:1px solid var(--line);padding:6px 8px;font-size:.8rem;min-height:32px}.seg button.on{background:#d6b25e2e;color:var(--gold-2);border-color:var(--gold-dim)}.learn{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-top:22px}.learn .card h4{margin-top:0;display:flex;align-items:center;gap:8px}.learn .card ul,.learn .card ol{padding-left:1.2em;margin:.4em 0;font-size:.92rem}.learn .card p{font-size:.92rem}.tpl-preview{background:#fff;border-radius:6px;padding:8px;overflow:auto}.tpl-preview svg{display:block;margin:0 auto;max-width:100%;height:auto}.kv{display:grid;grid-template-columns:auto 1fr;gap:3px 14px;font-size:.9rem}.kv dt{color:var(--muted)}.kv dd{margin:0;font-family:var(--mono);color:var(--gold-2)}.warnings li{color:#e5b866}#print-root{display:none}@media print{@page{size:A4 portrait;margin:0}body{background:#fff!important}body>#app{display:none!important}#print-root{display:block!important}#print-root svg{display:block}#print-root .page{page-break-after:always;break-after:page}}.matrix-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0 16px}.tech-card{cursor:pointer}.tech-card.open{grid-column:1 / -1;border-color:var(--gold-dim);cursor:default}.tech-card .diagram{background:#0d0b08;border:1px solid var(--line-soft);border-radius:8px;padding:6px;margin:10px 0}.tech-card .diagram svg{width:100%;height:auto;display:block;max-height:260px}.tech-card .stars{color:var(--gold);letter-spacing:.1em}.tech-card .attrs{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;font-size:.86rem;margin-top:8px}.tech-card .attrs dt{color:var(--muted)}.tech-card .attrs dd{margin:0}.tech-card .detail{display:none}.tech-card.open .detail{display:block}.tech-card.open .summary-only{display:none}.tech-card .close{position:absolute;top:10px;right:10px;display:none}.tech-card.open .close{display:inline-flex}.file-list{list-style:none;padding:0;margin:0;font-size:.9rem}.file-list li{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line-soft)}.file-list .size{color:var(--muted);font-family:var(--mono);font-size:.8rem;white-space:nowrap}.journal-entry{margin-bottom:14px}.journal-entry .md h1{font-size:1.4rem;margin-top:0}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--panel-2);border:1px solid var(--gold-dim);color:var(--text);padding:10px 16px;border-radius:8px;z-index:200;box-shadow:0 8px 30px #00000080;max-width:90vw}.timeline{list-style:none;padding:0;margin:1em 0;border-left:2px solid var(--line)}.timeline li{position:relative;padding:4px 0 12px 18px}.timeline li:before{content:"";position:absolute;left:-7px;top:10px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--gold-dim)}.timeline li.done:before{background:var(--gold);border-color:var(--gold)}.timeline li.now:before{background:var(--gold-2);border-color:var(--gold-2);box-shadow:0 0 10px var(--gold)}.timeline .when{font-family:var(--mono);font-size:.8rem;color:var(--gold-dim)}code,.file-list a,.file-list span{overflow-wrap:anywhere;word-break:break-word}.file-list li>:first-child{min-width:0}main{min-width:0}
