:root,:root[data-theme=dark]{--ground: #1b1409;--panel: #241b0c;--panel-2: #2d2211;--line: #3d2f16;--line-soft: #32270f;--ink: #f0e2b6;--ink-strong: #f7ecc9;--ink-muted: #b39a63;--ink-faint: #7d6a3f;--gold: #e3c76a;--gold-deep: #c8a54a;--accent: #d1542a;--field: #1d1509;--field-line: #4a3a1c;--card: rgba(30, 22, 10, .9);--card-line: rgba(227, 199, 106, .22);--wash: rgba(227, 199, 106, .12);--wash-strong: rgba(227, 199, 106, .18);--shadow: rgba(0, 0, 0, .5)}:root[data-theme=light]{--ground: #efe4cf;--panel: #e9dcc2;--panel-2: #e1d1af;--line: #cbb894;--line-soft: #dccdae;--ink: #3a2f1c;--ink-strong: #241c0e;--ink-muted: #6b5b3f;--ink-faint: #8d7b5c;--gold: #86671a;--gold-deep: #6b5213;--accent: #b8451c;--field: #f7f1e4;--field-line: #c9b691;--card: rgba(247, 241, 228, .94);--card-line: rgba(107, 82, 19, .3);--wash: rgba(107, 82, 19, .1);--wash-strong: rgba(107, 82, 19, .16);--shadow: rgba(90, 70, 35, .16)}.app{display:flex;flex-direction:column;height:100%;background:var(--ground);color:var(--ink)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto}.brand{display:flex;align-items:center;gap:11px;min-width:0}.petras-logo{color:var(--gold);flex:0 0 auto}.brand-text{min-width:0}.brand h1{margin:0;font-size:19px;letter-spacing:.2em;font-weight:700;line-height:1.1;color:var(--gold)}.subtitle{margin:1px 0 0;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.project-picker{display:flex;align-items:center;gap:7px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.project-picker select{min-width:168px}button,select{font:inherit;color:var(--ink);background:var(--field);border:1px solid var(--field-line);border-radius:6px;padding:5px 10px;cursor:pointer}button:hover:not(:disabled),select:hover{border-color:var(--gold-deep)}button:disabled{opacity:.42;cursor:not-allowed}button.primary{background:var(--gold-deep);border-color:var(--gold-deep);color:var(--ground);font-weight:700}label{font-size:12px;color:var(--ink-muted)}.menu{position:relative}.menu-button{display:flex;align-items:center;gap:7px;font-size:12px}.menu-button.active{background:var(--gold-deep);border-color:var(--gold-deep);color:var(--ground)}.menu-glyph{font-size:13px;line-height:1}.menu-list{position:absolute;top:calc(100% + 6px);right:0;min-width:176px;display:flex;flex-direction:column;padding:5px;background:var(--panel-2);border:1px solid var(--line);border-radius:9px;box-shadow:0 14px 34px var(--shadow);z-index:60}.menu-list button{background:none;border:0;border-radius:6px;text-align:left;padding:7px 10px;font-size:13px;color:var(--ink)}.menu-list button:hover{background:var(--gold-deep);color:var(--ground)}.main{display:grid;grid-template-columns:minmax(0,1fr) 330px;flex:1 1 auto;min-height:0}.stage{position:relative;min-width:0;min-height:0;overflow:hidden}.graph-canvas,.graph-canvas-3d{width:100%;height:100%;display:block}.empty{display:grid;place-items:center;height:100%;color:var(--ink-faint);font-size:13px}.ov{position:absolute;z-index:12;pointer-events:none;display:flex;flex-direction:column;gap:8px}.ov>*,.ov button,.ov .overlay-card{pointer-events:auto}.ov-tl{top:10px;left:10px;max-height:calc(100% - 58px);max-width:262px}.ov-tr{top:10px;right:10px;align-items:flex-end;max-width:44%}.ov-bl{bottom:10px;left:10px;max-width:52%}.ov-br{bottom:10px;right:10px;align-items:flex-end}.ov-stack{display:flex;flex-direction:column;gap:8px;min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:2px;pointer-events:auto}.overlay-card{position:relative;background:var(--card);border:1px solid var(--card-line);border-radius:10px;padding:9px 10px;box-shadow:0 8px 22px var(--shadow);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);flex:0 0 auto}.overlay-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.overlay-head h3{margin:0;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}.overlay-close{background:none;border:0;padding:0 2px;font-size:12px;line-height:1;color:var(--ink-faint)}.overlay-close:hover{color:var(--accent)}.overlay-close.floating{position:absolute;top:8px;right:9px;z-index:2}.toggle-row{display:flex;flex-wrap:wrap;gap:6px;pointer-events:auto}.toggle{display:flex;background:var(--card);border:1px solid var(--card-line);border-radius:8px;overflow:hidden;box-shadow:0 6px 16px var(--shadow);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.toggle button{background:none;border:0;border-radius:0;padding:5px 11px;font-size:12px;letter-spacing:.04em;color:var(--ink-muted)}.toggle button+button{border-left:1px solid var(--card-line)}.toggle button.on{background:var(--gold-deep);color:var(--ground);font-weight:700}.toggle.ghost button{color:var(--gold)}.theme-toggle{background:var(--field);border-color:var(--field-line);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.theme-toggle button{padding:5px 10px;font-size:11px;letter-spacing:.06em}.theme-toggle button+button{border-left-color:var(--field-line)}.legend-group+.legend-group{margin-top:7px}.legend-group h4{margin:0 0 4px;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.legend-row{display:grid;grid-template-columns:11px 1fr auto;align-items:center;gap:8px;width:100%;padding:3px 5px;background:none;border:1px solid transparent;border-radius:5px;font-size:12px;color:var(--ink);text-align:left}.legend-row:hover{background:var(--wash)}.legend-row.active{border-color:var(--gold);background:var(--wash-strong)}.swatch{width:11px;height:11px;border-radius:3px}.legend-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.count{font-variant-numeric:tabular-nums;color:var(--ink-faint);font-size:11px}.legend-foot{margin:7px 0 0;padding-top:6px;border-top:1px solid var(--card-line);font-size:10.5px;color:var(--ink-faint)}.stage-title{display:flex;flex-direction:column;align-items:flex-end;gap:1px;padding:7px 11px;background:var(--card);border:1px solid var(--card-line);border-radius:10px;box-shadow:0 8px 22px var(--shadow);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);text-align:right}.stage-title strong{font-size:13px;color:var(--gold);letter-spacing:.03em}.stage-title span{font-size:10.5px;color:var(--ink-faint)}.stage-hint{margin:0;padding:5px 10px;font-size:11px;color:var(--ink-muted);background:var(--card);border:1px solid var(--card-line);border-radius:8px;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.fit-row{display:flex;gap:5px;padding:5px;background:var(--card);border:1px solid var(--card-line);border-radius:9px;box-shadow:0 8px 22px var(--shadow);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.fit-row button{background:none;border:1px solid transparent;padding:4px 9px;font-size:12px;color:var(--ink-muted)}.fit-row button:hover{border-color:var(--gold-deep);color:var(--ink)}.rightbar{overflow-y:auto;padding:12px 14px 22px;background:var(--panel);border-left:1px solid var(--line);min-width:0}.rightbar h2{margin:0 0 9px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.entity-detail .badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#14100a}.entity-detail h3{margin:8px 0 4px;font-size:15px;color:var(--ink-strong);line-height:1.3;word-break:break-word}.entity-role{margin:0 0 10px;font-size:11.5px;line-height:1.5;color:var(--ink-muted)}.entity-detail dl{margin:0 0 12px;display:grid;grid-template-columns:auto 1fr;gap:4px 10px;font-size:12px}.entity-detail dt{color:var(--ink-faint);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding-top:2px}.entity-detail dd{margin:0;min-width:0;word-break:break-word;color:var(--ink)}.entity-actions{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.entity-actions button{font-size:12px}.entity-raw summary{cursor:pointer;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);padding:4px 0}.entity-raw pre,.entity-detail pre{margin:6px 0 0;padding:9px;background:var(--field);border:1px solid var(--line-soft);border-radius:7px;font-size:11px;line-height:1.45;color:var(--ink-muted);overflow-x:auto;white-space:pre-wrap;word-break:break-word}code{font-size:11.5px;color:var(--gold);word-break:break-all}.hint{font-size:12px;line-height:1.55;color:var(--ink-muted)}.hint.dim{color:var(--ink-faint);font-size:11.5px}.cq-overlay{padding-top:9px}.cq-panel h2{margin:0;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}.cq-panel-head{display:flex;align-items:center;gap:8px;padding-right:22px}.cq-badge{font-size:9.5px;letter-spacing:.05em;padding:2px 7px;border-radius:999px;white-space:nowrap;font-weight:700}.cq-badge.ok{background:var(--gold-deep);color:var(--ground)}.cq-badge.warn{background:var(--accent);color:#fff}.cq-list{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-top:8px}.cq-item{display:grid;gap:0;justify-items:center;padding:4px 2px;font-size:10.5px;line-height:1.2;background:var(--field);border:1px solid var(--line-soft);border-radius:5px}.cq-item:hover{border-color:var(--gold-deep)}.cq-item.active{background:var(--gold-deep);border-color:var(--gold)}.cq-item.active .cq-id,.cq-item.active .cq-rows{color:var(--ground)}.cq-item.empty{border-style:dashed;border-color:var(--accent)}.cq-id{font-variant-numeric:tabular-nums;color:var(--gold);font-weight:700}.cq-rows{font-size:9.5px;color:var(--ink-faint);font-variant-numeric:tabular-nums}.cq-detail{margin-top:9px;padding-top:8px;border-top:1px solid var(--card-line)}.cq-question{margin:0 0 7px;font-size:11.5px;line-height:1.45;color:var(--ink-strong)}.cq-detail-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.cq-mini{padding:3px 9px;font-size:11px}.cq-meta{margin:7px 0 0;font-size:10.5px;color:var(--ink-faint)}.cq-table-wrap{margin-top:7px;max-height:168px;overflow:auto;border:1px solid var(--line-soft);border-radius:6px}.cq-table{width:100%;border-collapse:collapse;font-size:10.5px}.cq-table th{position:sticky;top:0;background:var(--panel-2);text-align:left;padding:4px 6px;color:var(--ink-faint);font-weight:600;letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--line)}.cq-table td{padding:3px 6px;border-bottom:1px solid var(--line-soft);color:var(--ink-muted);max-width:132px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cq-table tbody tr{cursor:pointer}.cq-table tbody tr:hover td{background:var(--wash);color:var(--ink)}.cq-error{color:var(--accent)}.check{display:flex;align-items:center;gap:7px;cursor:pointer;color:var(--ink);font-size:11.5px}.docs-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:26px}.docs-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008c;border:0;padding:0;cursor:default}.docs-dialog{position:relative;display:flex;flex-direction:column;width:min(860px,100%);max-height:100%;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 26px 70px #0009;overflow:hidden}.docs-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;background:var(--panel-2);border-bottom:1px solid var(--line);flex:0 0 auto}.docs-tabs{display:flex;gap:5px;flex-wrap:wrap}.docs-tabs button{background:none;border:1px solid transparent;font-size:12px;letter-spacing:.05em;color:var(--ink-muted);padding:4px 11px}.docs-tabs button:hover{color:var(--ink);border-color:var(--field-line)}.docs-tabs button.active{background:var(--gold-deep);border-color:var(--gold-deep);color:var(--ground);font-weight:700}.docs-close{background:none;border:0;font-size:14px;line-height:1;color:var(--ink-faint);padding:4px 6px}.docs-close:hover{color:var(--accent)}.docs-body{overflow-y:auto;padding:20px 26px 30px;min-height:0}.docs-title{margin:0 0 7px;font-size:21px;line-height:1.28;color:var(--gold);letter-spacing:.01em}.docs-lede{margin:0 0 20px;font-size:14px;line-height:1.6;color:var(--ink-muted);max-width:66ch}.docs-section{padding-top:16px;margin-top:16px;border-top:1px solid var(--line-soft)}.docs-section h3{margin:0 0 9px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.docs-body p{margin:0 0 11px;font-size:13.5px;line-height:1.65;max-width:68ch;color:var(--ink)}.doc-note{padding:9px 12px;border-left:3px solid var(--gold-deep);background:var(--field);border-radius:0 7px 7px 0;color:var(--ink-muted)!important;font-size:12.5px!important}.doc-code{margin:0 0 11px;padding:9px 12px;background:var(--field);border:1px solid var(--line-soft);border-radius:7px;font-size:12px;color:var(--gold);overflow-x:auto}.doc-list{margin:0 0 12px;padding-left:19px;max-width:68ch}.doc-list li{font-size:13.5px;line-height:1.6;margin-bottom:5px;color:var(--ink)}.doc-table-wrap{overflow-x:auto;margin-bottom:13px;border:1px solid var(--line-soft);border-radius:8px}.doc-table{width:100%;border-collapse:collapse;font-size:12.5px}.doc-table th{text-align:left;padding:7px 11px;background:var(--panel-2);color:var(--ink-faint);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--line)}.doc-table td{padding:7px 11px;border-bottom:1px solid var(--line-soft);color:var(--ink);line-height:1.5;vertical-align:top}.doc-table tr:last-child td{border-bottom:0}.doc-table td:last-child{color:var(--ink-muted)}.layer-group-title{margin:16px 0 9px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}.layer-card{padding:11px 13px;margin-bottom:8px;background:var(--field);border:1px solid var(--line-soft);border-radius:9px;transition:border-color .2s ease}.layer-card.focus{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold-deep) inset}.layer-card-head{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:5px}.layer-code{font-size:10px;font-weight:700;letter-spacing:.08em;padding:2px 7px;border-radius:999px;background:var(--gold-deep);color:var(--ground)}.layer-card-head strong{font-size:14px;color:var(--ink-strong)}.layer-card p{margin:0!important;font-size:12.5px!important;color:var(--ink-muted)!important}.layer-classes{margin:8px 0 0;padding-left:17px}.layer-classes li{font-size:12px;line-height:1.55;color:var(--ink-muted);margin-bottom:3px}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;border:0;padding:0;z-index:90;cursor:default}.drawer{position:fixed;top:0;right:0;bottom:0;width:320px;max-width:92vw;z-index:91;background:var(--panel);border-left:1px solid var(--line);box-shadow:-14px 0 40px var(--shadow);overflow-y:auto;padding-bottom:24px}.drawer-head{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:10px 12px 10px 16px;background:var(--panel-2);border-bottom:1px solid var(--line)}.drawer-head h2{margin:0;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}.drawer-section{padding:12px 16px;border-bottom:1px solid var(--line-soft);display:flex;flex-direction:column;gap:7px}.drawer-section h3{margin:0 0 2px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.drawer-note{margin:2px 0 0;font-size:11px;line-height:1.5;color:var(--ink-faint)}.slider{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 10px;font-size:11.5px}.slider input[type=range]{grid-column:1 / -1;width:100%;accent-color:var(--gold-deep)}.slider-val{font-variant-numeric:tabular-nums;color:var(--ink-muted);font-size:11px}.bg-control{display:flex;gap:7px;align-items:center}.bg-control select{flex:1 1 auto;min-width:0}.bg-swatch{width:30px;height:26px;border-radius:6px;border:1px solid var(--field-line);cursor:pointer;padding:0;flex:0 0 auto}@media (max-width: 900px){.main{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto}.rightbar{border-left:0;border-top:1px solid var(--line);max-height:40vh}.subtitle{display:none}}:root{font-family:IBM Plex Sans,Segoe UI,system-ui,sans-serif;line-height:1.4;font-weight:400;color:var(--ink, #f0e2b6);background:var(--ground, #1b1409)}:root,:root[data-theme=dark]{color-scheme:dark}:root[data-theme=light]{color-scheme:light}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}code{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.85em}
