:root{
  color-scheme:dark;
  --bg:#07090d;
  --panel:#0d1118;
  --panel-2:#121822;
  --line:rgba(255,255,255,.10);
  --line-strong:rgba(255,255,255,.18);
  --ink:#f4f6f8;
  --muted:#8e98a8;
  --soft:#bbc3cf;
  --gold:#d5b46e;
  --blue:#7da9ff;
  --green:#78c7a0;
  --rose:#df91ac;
  --violet:#9d8cff;
  --orange:#d69b69;
  --shadow:0 24px 70px rgba(0,0,0,.46);
}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
button,input{font:inherit}
button,a{ -webkit-tap-highlight-color:transparent }
.app-shell{height:100%;display:grid;grid-template-rows:72px 1fr;background:radial-gradient(circle at 50% 35%,rgba(43,55,81,.23),transparent 44%),var(--bg)}
.topbar{position:relative;z-index:40;display:grid;grid-template-columns:auto minmax(240px,620px) auto;align-items:center;gap:28px;padding:0 22px;border-bottom:1px solid rgba(255,255,255,.07);background:rgba(7,9,13,.86);backdrop-filter:blur(22px)}
.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;min-width:max-content}.brand>span:last-child{display:grid;line-height:1.02}.brand strong{font-family:Georgia,"Times New Roman",serif;font-size:18px;font-weight:500;letter-spacing:.01em}.brand small{margin-top:4px;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.16em}
.brand-mark{position:relative;display:block;width:34px;height:34px}.brand-mark i{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 18px rgba(213,180,110,.45)}.brand-mark i:nth-child(1){left:2px;top:13px}.brand-mark i:nth-child(2){left:14px;top:3px}.brand-mark i:nth-child(3){right:2px;top:14px}.brand-mark i:nth-child(4){left:14px;bottom:2px}.brand-mark:before,.brand-mark:after{content:"";position:absolute;inset:7px 8px;border:1px solid rgba(213,180,110,.48);transform:rotate(45deg)}
.search-wrap{position:relative;width:100%}.search-wrap>svg{position:absolute;left:15px;top:50%;width:17px;height:17px;transform:translateY(-50%);fill:none;stroke:#7f8998;stroke-width:1.8;z-index:2}.search-wrap input{width:100%;height:42px;padding:0 18px 0 43px;border:1px solid rgba(255,255,255,.09);border-radius:13px;outline:none;background:rgba(255,255,255,.055);color:var(--ink);font-size:13px;transition:.2s}.search-wrap input:focus{border-color:rgba(213,180,110,.48);background:rgba(255,255,255,.075);box-shadow:0 0 0 3px rgba(213,180,110,.07)}.search-wrap input::placeholder{color:#707988}.search-results{position:absolute;left:0;right:0;top:50px;padding:7px;border:1px solid var(--line);border-radius:14px;background:rgba(14,18,26,.98);box-shadow:var(--shadow);max-height:360px;overflow:auto}.search-result{display:flex;width:100%;gap:11px;align-items:center;padding:10px;border:0;border-radius:10px;background:transparent;color:var(--ink);text-align:left;cursor:pointer}.search-result:hover,.search-result:focus-visible{background:rgba(255,255,255,.06);outline:none}.search-result .mini-dot{width:28px;height:28px;flex:0 0 28px;border-radius:50%;display:grid;place-items:center;background:rgba(213,180,110,.12);border:1px solid rgba(213,180,110,.26);color:var(--gold);font-size:9px}.search-result .mini-dot.place{color:var(--green);border-radius:9px}.search-result .mini-dot.event{color:var(--violet);border-radius:9px}.search-result .mini-dot.story{color:var(--rose);border-radius:8px}.search-result .mini-dot.organization,.search-result .mini-dot.artifact,.search-result .mini-dot.media{color:var(--blue);border-radius:9px}.search-result b{display:block;font-size:12px}.search-result small{display:block;color:var(--muted);font-size:10px;margin-top:2px;line-height:1.35}.search-status,.search-empty{display:flex;align-items:center;gap:10px;padding:16px 17px;color:var(--muted);font-size:13px}.search-empty{align-items:flex-start;flex-direction:column;gap:4px}.search-empty b{color:var(--ink);font-size:14px}.search-empty small{line-height:1.45}.search-error{color:#d9a8a8}.search-spinner{width:13px;height:13px;border:1px solid rgba(255,255,255,.2);border-top-color:var(--gold);border-radius:50%;animation:search-spin .75s linear infinite}.search-match-context{margin:14px 0 0;padding:9px 11px;border:1px solid rgba(213,180,110,.2);border-radius:9px;color:var(--muted);font-size:12px}@keyframes search-spin{to{transform:rotate(360deg)}}
.top-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.icon-btn{width:38px;height:38px;border:1px solid rgba(255,255,255,.09);border-radius:11px;background:rgba(255,255,255,.04);display:grid;place-items:center;color:var(--soft);text-decoration:none;cursor:pointer}.icon-btn:hover{background:rgba(255,255,255,.08);color:#fff}.icon-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7}.tree-scope-btn{width:auto;grid-auto-flow:column;gap:8px;padding:0 12px;color:#d9e9ef}.tree-scope-btn span{font-size:11px;font-weight:750;white-space:nowrap}.tree-scope-btn.active{border-color:rgba(91,225,255,.42);background:rgba(54,230,255,.10);color:#dffcff;box-shadow:0 0 20px rgba(54,230,255,.10)}.profile-chip{height:38px;display:flex;align-items:center;gap:9px;padding:0 11px 0 6px;border:1px solid rgba(255,255,255,.09);border-radius:12px;background:rgba(255,255,255,.04);color:var(--soft)}.profile-chip span{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#b89558,#735d34);color:#fff;font-size:9px;font-weight:800;letter-spacing:.05em}.profile-chip b{font-size:11px;font-weight:600}
.viewport{position:relative;min-width:0;min-height:0;overflow:hidden;cursor:grab;touch-action:none;background-image:radial-gradient(rgba(255,255,255,.12) .7px,transparent .7px);background-size:28px 28px;background-position:0 0}.viewport.dragging{cursor:grabbing}.world{position:absolute;left:0;top:0;width:4200px;height:3000px;transform-origin:0 0;will-change:transform}.canvas-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at center,transparent 42%,rgba(7,9,13,.28) 72%,rgba(7,9,13,.68) 100%)}
.bands{position:absolute;inset:0;pointer-events:none}.generation-band{position:absolute;left:300px;width:3600px;height:230px;border-top:1px solid rgba(255,255,255,.055);border-bottom:1px solid rgba(255,255,255,.025)}.generation-band span{position:absolute;left:12px;top:10px;color:rgba(255,255,255,.23);font-size:10px;text-transform:uppercase;letter-spacing:.2em}.generation-band:nth-child(2n){background:rgba(255,255,255,.007)}
.edges{position:absolute;inset:0;overflow:visible;pointer-events:none}.edge{fill:none;stroke:rgba(145,157,176,.23);stroke-width:1.2;transition:opacity .25s,stroke .25s,stroke-width .25s}.edge.spouse{stroke:rgba(213,180,110,.40);stroke-width:1.5}.edge.friend{stroke:rgba(125,169,255,.30);stroke-dasharray:5 8}.edge.uncertain{stroke-dasharray:2 7}.edge.related{stroke:rgba(224,229,236,.58);stroke-width:1.8}.edge.dimmed{opacity:.08}
.nodes{position:absolute;inset:0}.graph-node{position:absolute;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:7px;width:116px;border:0;background:transparent;color:var(--ink);cursor:pointer;transition:filter .25s,opacity .25s,transform .28s cubic-bezier(.2,.75,.3,1);z-index:2}.graph-node:hover{transform:translate(-50%,-50%) scale(1.05);z-index:4}.graph-node.dimmed{opacity:.19;filter:saturate(.4)}.graph-node.focused{z-index:8;transform:translate(-50%,-50%) scale(1.12)}.node-orb{position:relative;width:62px;height:62px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(255,255,255,.18);background:radial-gradient(circle at 36% 28%,rgba(255,255,255,.13),rgba(255,255,255,.03) 52%,rgba(0,0,0,.2));box-shadow:0 12px 30px rgba(0,0,0,.28),0 0 0 7px rgba(255,255,255,.015)}.node-orb:after{content:"";position:absolute;inset:-7px;border-radius:50%;border:1px solid transparent;transition:.25s}.graph-node.focused .node-orb:after{border-color:rgba(213,180,110,.44);box-shadow:0 0 25px rgba(213,180,110,.16)}.person .node-orb{color:var(--gold)}.event .node-orb{border-radius:18px;color:var(--violet);background:rgba(157,140,255,.08)}.place .node-orb{border-radius:16px;color:var(--green);background:rgba(120,199,160,.08)}.organization .node-orb{border-radius:18px;color:var(--blue)}.story .node-orb{border-radius:14px;color:var(--rose)}.node-initials{font-family:Georgia,"Times New Roman",serif;font-size:16px;letter-spacing:.03em}.node-icon{font-size:18px}.node-copy{max-width:126px;text-align:center;text-shadow:0 2px 10px rgba(0,0,0,.9)}.node-copy b{display:block;font-family:Georgia,"Times New Roman",serif;font-size:12px;font-weight:500;line-height:1.15}.node-copy small{display:block;margin-top:3px;color:var(--muted);font-size:8px;letter-spacing:.05em}.node-meta-dot{position:absolute;right:-1px;bottom:4px;width:11px;height:11px;border:2px solid var(--bg);border-radius:50%;background:var(--green)}
.intro-card{position:absolute;z-index:18;left:36px;bottom:36px;width:min(410px,calc(100% - 72px));padding:24px 25px 23px;border:1px solid rgba(255,255,255,.10);border-radius:20px;background:rgba(12,16,23,.86);backdrop-filter:blur(18px);box-shadow:var(--shadow);transition:.4s}.intro-card.hidden{opacity:0;transform:translateY(16px);pointer-events:none}.eyebrow{margin:0 0 9px;color:var(--gold);font-size:9px;text-transform:uppercase;letter-spacing:.2em;font-weight:700}.intro-card h1{margin:0;font-family:Georgia,"Times New Roman",serif;font-size:31px;line-height:1.03;font-weight:500;letter-spacing:-.025em}.intro-card>p:not(.eyebrow){margin:12px 0 0;color:#a1aab8;font-size:12px;line-height:1.65}.primary-btn{margin-top:18px;height:38px;padding:0 15px;border:1px solid rgba(213,180,110,.44);border-radius:10px;background:rgba(213,180,110,.12);color:#ecd9ae;font-size:11px;font-weight:700;cursor:pointer}.primary-btn:hover{background:rgba(213,180,110,.18)}
.zoom-controls{position:absolute;right:20px;bottom:20px;z-index:20;display:grid;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:rgba(12,16,23,.86);backdrop-filter:blur(16px)}.zoom-controls button{width:39px;height:36px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--soft);font-size:19px;cursor:pointer}.zoom-controls button:last-child{border-bottom:0}.zoom-controls button:hover{background:rgba(255,255,255,.06)}.dataset-badge{position:absolute;z-index:16;left:50%;bottom:18px;transform:translateX(-50%);max-width:calc(100% - 160px);padding:8px 12px;border:1px solid rgba(255,255,255,.08);border-radius:999px;background:rgba(7,9,13,.76);backdrop-filter:blur(12px);color:#778191;font-size:9px;letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.detail-panel{position:absolute;z-index:60;right:14px;top:86px;bottom:14px;width:min(390px,calc(100% - 28px));padding:28px;border:1px solid rgba(255,255,255,.11);border-radius:22px;background:rgba(13,17,24,.94);backdrop-filter:blur(24px);box-shadow:var(--shadow);overflow:auto}.detail-panel[hidden]{display:none}.close-detail{position:absolute;right:16px;top:14px;width:32px;height:32px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.04);color:var(--muted);font-size:20px;cursor:pointer}.detail-kicker{color:var(--gold);font-size:9px;text-transform:uppercase;letter-spacing:.19em;font-weight:700}.detail-panel h2{margin:7px 42px 0 0;font-family:Georgia,"Times New Roman",serif;font-size:31px;line-height:1.04;font-weight:500}.detail-years{margin-top:7px;color:var(--muted);font-size:11px}.detail-summary{margin:20px 0 0;color:#b8c0cb;font-size:12px;line-height:1.7}.detail-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:22px 0}.detail-stat{position:relative;min-width:0;padding:12px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(255,255,255,.03);color:inherit;text-align:left}.detail-stat--link{cursor:pointer;transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease}.detail-stat--link:hover{transform:translateY(-2px);border-color:rgba(213,180,110,.4);background:rgba(213,180,110,.08);box-shadow:0 9px 22px rgba(0,0,0,.18)}.detail-stat--link:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.detail-stat strong{display:block;font-family:Georgia,"Times New Roman",serif;font-size:20px;font-weight:500}.detail-stat span{display:block;margin-top:3px;padding-right:12px;color:var(--muted);font-size:8px;text-transform:uppercase;letter-spacing:.08em}.detail-stat i{position:absolute;right:9px;top:10px;color:var(--gold);font-size:10px;font-style:normal;opacity:.58;transition:transform .2s ease,opacity .2s ease}.detail-stat--link:hover i{transform:translate(2px,-2px);opacity:1}.detail-section{padding-top:17px;margin-top:17px;border-top:1px solid rgba(255,255,255,.07)}.detail-section h3{margin:0 0 10px;font-size:9px;text-transform:uppercase;letter-spacing:.15em;color:#758092}.connection-list{display:grid;gap:8px}.connection-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:11px;background:rgba(255,255,255,.03);cursor:pointer}.connection-item:hover{background:rgba(255,255,255,.06)}.connection-item i{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:rgba(213,180,110,.10);color:var(--gold);font-style:normal;font-size:9px}.connection-item b{display:block;font-size:10px}.connection-item small{display:block;color:var(--muted);font-size:8px;margin-top:2px}.certainty{display:inline-flex;align-items:center;gap:6px;margin-top:12px;color:#929cac;font-size:9px}.certainty:before{content:"";width:18px;border-top:1px dashed var(--gold)}
@media(max-width:900px){.topbar{grid-template-columns:auto 1fr auto;gap:12px;padding:0 12px}.brand>span:last-child{display:none}.tree-scope-btn{width:38px;padding:0}.tree-scope-btn span{display:none}.profile-chip b{display:none}.profile-chip{padding-right:6px}.dataset-badge{max-width:55%}}
@media(max-width:650px){.app-shell{grid-template-rows:62px 1fr}.topbar{height:62px}.top-actions .icon-btn:first-child{display:none}.search-wrap input{height:38px}.intro-card{left:14px;bottom:58px;width:calc(100% - 28px);padding:20px}.intro-card h1{font-size:27px}.detail-panel{top:70px;right:8px;bottom:8px;width:calc(100% - 16px)}.dataset-badge{left:14px;transform:none;max-width:calc(100% - 86px);bottom:12px}.zoom-controls{right:10px;bottom:10px}}

/* Direct edit for a selected person's name and dates (private graph only). */
.detail-edit-person{display:inline-flex;align-items:center;min-height:30px;margin-top:9px;padding:0 12px;border:1px solid rgba(213,180,110,.34);border-radius:999px;background:rgba(213,180,110,.08);color:var(--gold);font-size:10px;font-weight:700;letter-spacing:.04em;cursor:pointer;transition:border-color .2s ease,background .2s ease}
.detail-edit-person:hover{border-color:rgba(213,180,110,.64);background:rgba(213,180,110,.16)}
.detail-edit-person:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media(any-pointer:coarse){.detail-edit-person{min-height:var(--tap-size,44px);font-size:12px}}
