:root{--paper:#f4ead5;--ink:#171b18;--green:#123c2f;--card:#fff9eb;--border:#c7b393}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.5 Georgia,serif}a{color:var(--green);text-underline-offset:3px}a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #a15312;outline-offset:2px}.tree-header{background:var(--green);color:#fff;padding:16px 4%;display:flex;flex-wrap:wrap;gap:8px 20px}.tree-header a{color:#fff;min-height:36px}.tree-main{max-width:1150px;margin:auto;padding:20px 4% 60px}.tree-main h1{font-size:clamp(1.8rem,4vw,2.8rem);line-height:1.12;margin:.35em 0}.tree-main h2{font-size:1.35rem}.subtitle{color:#554d43}.introtext{max-width:70ch}.controls{display:flex;flex-wrap:wrap;align-items:end;gap:10px;margin:18px 0}.controls label{display:grid;gap:4px}input,select,button{font:inherit;padding:10px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--ink);max-width:100%}input{width:min(100%,430px)}select{width:min(100%,430px)}button{cursor:pointer}button:hover{background:#e5efdf}.viewlinks{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}.viewlinks a,.action{display:inline-block;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--card)}.panel,.person-card,.generation-card{background:var(--card);border:1px solid var(--border);border-radius:9px;padding:13px;margin:10px 0}.panel p{margin:.45em 0}.muted{color:#5a5349;font:14px/1.45 system-ui,sans-serif}.generation-list{list-style:none;padding:0;margin:0}.generation-list li{margin:7px 0;padding:0 0 0 16px;border-left:2px solid var(--border)}.person-card{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.person-card strong{font-size:1.07rem}.person-card .meta{display:block;color:#554d43;font:13px/1.4 system-ui,sans-serif}.person-card button{font:14px system-ui,sans-serif}.fan-desktop{background:#fffdf8;border:1px solid var(--border);border-radius:12px;padding:10px;max-width:100%;overflow:hidden}.fan-desktop svg{display:block;width:100%;height:auto}.fan-desktop .cell{cursor:pointer}.fan-desktop .cell path{stroke:#fff;stroke-width:2}.fan-desktop .cell:hover path,.fan-desktop .cell:focus path{stroke:var(--green);stroke-width:4}.fan-desktop text{font:11px system-ui,sans-serif;pointer-events:none;fill:var(--ink)}.ring-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:10px}.ring-list section{background:var(--card);border:1px solid var(--border);border-radius:9px;padding:12px}.ring-list h3{margin:0 0 5px;font-size:1.1rem}.ring-list ul{list-style:none;margin:0;padding:0}.ring-list li{border-top:1px solid #dbcbb4;padding:6px 0}.ring-list button{font:13px system-ui,sans-serif;padding:4px 7px;margin-left:5px}.mobile-fan{display:none}.generation-list button{font:13px system-ui,sans-serif;padding:5px 8px;margin:4px 8px}dl{display:grid;grid-template-columns:minmax(100px,160px) 1fr;gap:8px;max-width:700px}dt{font-weight:bold}dd{margin:0}@media(max-width:700px){.tree-main{padding:16px 4% 45px}.tree-header{gap:5px 14px}.tree-header a{font-size:15px}.controls>*{width:100%}.controls input,.controls select{width:100%}.fan-desktop{display:block}.fan-desktop svg text{display:none}.fan-desktop svg .fan-center-name{display:block;font:28px system-ui,sans-serif}.mobile-fan{display:block}.ring-list{display:block}.ring-list section{margin:10px 0}.person-card{display:block}.person-card button{margin-top:8px;min-height:40px}dl{grid-template-columns:1fr}dd{margin-bottom:8px}}
.review-badge{display:inline-block;border-radius:5px;padding:2px 6px;margin:2px 4px 2px 0;font:700 12px/1.4 system-ui,sans-serif}.review-badge.published{background:#e0ecdd;color:#1b542a;border:1px solid #81a98a}.review-badge.proposed{background:#fff0c3;color:#69420a;border:1px solid #c88b26}.legend{background:#fff8df;border-left:5px solid #b87716;padding:10px 14px;max-width:80ch}.relation-list{list-style:none;padding:0;max-width:760px}.relation-list li{border-bottom:1px solid #dbcbb4;padding:7px 0}.relation-list .muted{display:block}.ring-list .review-badge{vertical-align:middle}.fan-desktop .proposed-cell path{stroke:#a66315;stroke-width:3;stroke-dasharray:5 3}.fan-desktop .published-cell path{stroke:#fff;stroke-width:2}

@media(max-width:700px){.fan-desktop svg .fan-center-name{font:24px system-ui,sans-serif}}

.fan-desktop svg{max-height:480px}
