:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#080d14;--panel:#0d1520;--panel-2:#101b28;--line:#adc8e22e;--text:#e8eef5;--muted:#8fa3b8;--accent:#7cc7ff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);width:100%;height:100%;color:var(--text);margin:0;overflow:hidden}body{grid-template-rows:auto minmax(0,1fr) auto;display:grid}.topbar{border-bottom:1px solid var(--line);background:linear-gradient(#101925,#0a111a);align-items:center;gap:28px;min-height:68px;padding:9px 16px 10px 18px;display:flex}.title-block{min-width:max-content}.title-block h1{letter-spacing:-.02em;margin:1px 0 0;font-size:20px;font-weight:580}.eyebrow{color:var(--accent);letter-spacing:.16em;text-transform:uppercase;font-size:9px;font-weight:700}.controls{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:11px;display:flex}.controls label:not(.check){grid-template-columns:auto auto;align-items:center;gap:6px;display:grid}.check{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.light-warm{color:#ffd27a}.light-blue{color:#72b8ff}.light-magenta{color:#ff78bc}.line-pair{color:#56b8c5}.line-conic{color:#d7b75c}.line-exceptional{color:#c9789f}button,select{color:var(--text);font:inherit;background:#172433;border:1px solid #b2cfe833;border-radius:5px;padding:6px 9px}button:hover,select:hover{border-color:#7cc7ff8c}button:focus-visible,select:focus-visible,input:focus-visible,.splitter:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input{accent-color:var(--accent)}.workspace{min-width:0;min-height:0;display:flex}.view-panel{background:var(--panel);grid-template-rows:31px minmax(0,1fr);min-width:250px;display:grid;position:relative;overflow:hidden}.moduli-panel{flex:0 0 50%}.object-panel{flex:auto}.view-heading{z-index:3;border-bottom:1px solid var(--line);color:var(--muted);letter-spacing:.02em;background:#0c141ef0;justify-content:space-between;align-items:center;gap:10px;padding:0 10px;font-size:10px;display:flex}.view-heading>div{color:var(--text);text-transform:uppercase;letter-spacing:.09em;font-size:12px;font-weight:620}.view-number{color:var(--accent);font-variant-numeric:tabular-nums;margin-right:7px}.splitter{cursor:col-resize;background:#172331;border-left:1px solid #253548;border-right:1px solid #05080c;flex:0 0 6px}.splitter:hover,.splitter.dragging{background:var(--accent)}#moduli-canvas{cursor:grab;touch-action:none;background:#0b131d;width:100%;height:100%;display:block}#moduli-canvas.dragging{cursor:grabbing}.object-host{background:radial-gradient(circle at 50% 45%,#142230,#080d13 72%);min-width:0;min-height:0;position:relative}.object-host canvas{touch-action:none;overscroll-behavior:contain;cursor:grab;width:100%;height:100%;display:block}.object-host canvas:active{cursor:grabbing}.object-hint{pointer-events:none;z-index:2;color:#d7e3ee;text-align:center;background:#050a10bf;border:1px solid #b7d6ef33;border-radius:6px;padding:8px 13px;font-size:11px;line-height:1.45;transition:opacity .15s;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.object-hint small{color:var(--muted)}.object-hint.hidden{opacity:0}.statusbar{border-top:1px solid var(--line);min-height:34px;max-height:38vh;color:var(--muted);background:#0a111a;justify-content:space-between;align-items:flex-start;gap:20px;padding:8px 14px;font-size:11px;display:flex}#status.error{color:#ffb070}#status.good{color:#9bdcbc}details{text-align:right;position:relative}summary{cursor:pointer;color:#bccddd;white-space:nowrap}.equation-list{z-index:10;text-align:left;background:#0a111afa;border:1px solid #accde840;border-radius:7px;width:min(700px,82vw);padding:12px 14px;position:absolute;bottom:24px;right:0;box-shadow:0 14px 50px #0000006b}.equation{grid-template-columns:22px 1fr;gap:8px;padding:4px 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;line-height:1.4;display:grid}.equation-name{font-weight:800}@media (width<=850px){.topbar{align-items:flex-start;gap:12px}.title-block,.view-heading>span{display:none}.moduli-panel{flex-basis:50%}}
