:root{--lab-bg:#05060f;--lab-fg:#e8ecff;--lab-dim:#8a93c4;--lab-accent:#ffd479;--c-primordial:#9aa7d8;--c-titan:#e0907f;--c-olympian:#ffd479;--c-minor:#7fb8a0;--c-nymph:#c58fd0;--c-giant:#8fa5c9;--c-monster:#b56a6a}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--lab-bg);color:var(--lab-fg);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden}#stage{position:fixed;inset:0;touch-action:none;cursor:grab}#stage.dragging{cursor:grabbing}svg{display:block;width:100%;height:100%}.edge{stroke:#2f3a6b;stroke-width:1.4;fill:none}.edge.spouse{stroke:#b98fe0;stroke-width:2.2;stroke-dasharray:5 3}.edge.soft{stroke:#4a5590;stroke-dasharray:2 4}.node rect{fill:#111737;stroke:#2a3568;stroke-width:1.2;rx:8}.node text{fill:var(--lab-fg);font-size:13px;font-weight:600;text-anchor:middle;dominant-baseline:middle;pointer-events:none}.node{cursor:pointer}.node[data-type=primordial] rect{stroke:var(--c-primordial)}.node[data-type=titan] rect{stroke:var(--c-titan)}.node[data-type=olympian] rect{stroke:var(--c-olympian)}.node[data-type=minor-god] rect{stroke:var(--c-minor)}.node[data-type=nymph] rect{stroke:var(--c-nymph)}.node[data-type=giant] rect{stroke:var(--c-giant)}.node[data-type=monster] rect{stroke:var(--c-monster)}.node[data-gender=female] rect{rx:18}.node[data-gender=male] rect{rx:2}body[data-focus="1"] .node{opacity:.18}body[data-focus="1"] .edge{opacity:.06}body[data-focus="1"] .node.on{opacity:1}body[data-focus="1"] .edge.on{opacity:.95;stroke-width:2}.node.self rect{fill:#2a2140;stroke-width:2.4}.node,.edge{transition:opacity .15s ease,stroke .15s ease}body[data-hover="1"] .node.hover-dim{opacity:.16}body[data-hover="1"] .edge:not(.hover-on){opacity:.08}.node.hover-on rect,.node.hover-self rect{stroke:var(--lab-accent);stroke-width:2}.node.hover-on text,.node.hover-self text{fill:#fff}.node.hover-self rect{stroke-width:2.6;filter:drop-shadow(0 0 7px rgba(255,212,121,.6))}.edge.hover-on{stroke:var(--lab-accent);stroke-width:2;opacity:1;stroke-dasharray:5 4;animation:edge-flow .6s linear infinite}@keyframes edge-flow{to{stroke-dashoffset:-18}}@media(prefers-reduced-motion:reduce){.edge.hover-on{animation:none}}.node[data-twelve="1"] rect{fill:#1a1330;stroke-width:2}.node[data-twelve="1"] text{font-weight:800;fill:#fff}.iso-label{fill:var(--lab-dim);font-size:12px;text-anchor:middle}.topbar{position:fixed;left:0;right:0;top:0;z-index:5;display:flex;align-items:center;gap:10px;padding:10px 14px;background:linear-gradient(#05060fdd,#05060f00)}.topbar a.back{color:var(--lab-fg);text-decoration:none;font-size:13px;border:1px solid #2a3568;border-radius:999px;padding:6px 12px}.topbar .t{font-size:13px;color:var(--lab-dim)}body[data-embed="1"] .topbar{display:none}.legend{position:fixed;left:12px;bottom:12px;z-index:5;display:flex;flex-wrap:wrap;gap:6px 12px;max-width:min(520px,calc(100vw - 24px));font-size:11px;color:var(--lab-dim);pointer-events:none;text-shadow:0 1px 3px #000}.legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:4px;border:1.5px solid currentColor;vertical-align:-1px}.hint{position:fixed;left:50%;top:52px;transform:translate(-50%);z-index:5;font-size:12px;color:var(--lab-dim);pointer-events:none;text-shadow:0 1px 3px #000}body[data-embed="1"] .hint{top:12px}body[data-focus="1"] .hint{display:none}.fs-btn,.reset-btn{position:fixed;right:12px;z-index:6;background:#161d40e6;color:var(--lab-fg);border:1px solid #2a3568;border-radius:999px;padding:10px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:transform .28s cubic-bezier(.2,.8,.2,1)}.fs-btn{bottom:12px}.reset-btn{bottom:58px}body[data-card="1"] .fs-btn,body[data-card="1"] .reset-btn{transform:translateY(calc(-1 * var(--card-h, 0px)))}body[data-fs="1"] .topbar{display:none}#card{position:fixed;left:0;right:0;bottom:0;z-index:7;transform:translateY(115%);transition:transform .28s cubic-bezier(.2,.8,.2,1);background:#0d1330f2;backdrop-filter:blur(8px);border-top:1px solid #223;border-radius:18px 18px 0 0;padding:18px 20px 26px;max-width:560px;margin:0 auto;max-height:62vh;overflow-y:auto}#card.show{transform:translateY(0)}#card .more{margin:10px 0 0;font-size:12px;color:var(--lab-dim)}#card .more a{color:var(--lab-accent)}#card .tag{display:inline-block;background:var(--lab-accent);color:#1a1400;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:700}#card .note:not(:empty){margin:0 0 12px;padding:10px 12px;border-radius:10px;background:#161d40;border-left:3px solid var(--lab-accent)}#card .note b{display:block;font-size:12px;color:var(--lab-accent);margin-bottom:4px}#card .note p{margin:0 0 6px;font-size:12.5px;line-height:1.65;color:var(--lab-dim)}#card .note p:last-child{margin-bottom:0}#card h2{margin:0 0 2px;font-size:18px;color:#fff}#card .rom{color:var(--lab-accent);font-size:12px;margin:0 0 8px}#card .epi{color:var(--lab-dim);font-size:13px;line-height:1.7;margin:0 0 12px}#card dl{margin:0 0 12px;font-size:13px;display:grid;grid-template-columns:auto 1fr;gap:4px 10px}#card dt{color:var(--lab-dim);white-space:nowrap}#card dd{margin:0;color:var(--lab-fg)}#card .go{display:inline-block;background:var(--lab-accent);color:#1a1400;text-decoration:none;border-radius:999px;padding:9px 16px;font-weight:700;font-size:13px;margin:2px 6px 0 0}#card .close{position:absolute;right:14px;top:12px;color:var(--lab-dim);font-size:22px;cursor:pointer;background:none;border:0}
