.tt-tree{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-width:1120px}.tt-gen{position:relative;padding:26px 0 30px 26px}.tt-gen:before{content:"";position:absolute;left:6px;top:8px;bottom:-8px;width:1px;background:linear-gradient(180deg,var(--ember),color-mix(in srgb,var(--ember) 10%,transparent))}.tt-tree>.tt-gen:last-child:before{bottom:24px}.tt-gen-head{position:relative;display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin-bottom:18px}.tt-gen-head:before{content:"";position:absolute;left:-26px;top:6px;width:11px;height:11px;border-radius:999px;background:var(--bg-page);border:2px solid var(--ember);box-shadow:0 0 10px color-mix(in srgb,var(--ember) 45%,transparent)}.tt-gen-num{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-faint)}.tt-gen-label{font-family:var(--font-display);font-weight:600;font-size:clamp(19px,2.4vw,25px);line-height:1.1;letter-spacing:.07em;text-transform:uppercase;color:var(--text-hi);margin:0}.tt-gen-people{display:grid;grid-template-columns:repeat(auto-fill,minmax(288px,1fr));grid-gap:16px;gap:16px}.tt-person{--tt-accent:var(--ember);position:relative;display:flex;flex-direction:column;gap:8px;background:var(--surface-card);border:1px solid var(--border-1);border-radius:var(--radius-md);padding:18px 20px 20px;box-shadow:var(--shadow-1);transition:border-color var(--dur-raven) var(--ease-forge),box-shadow var(--dur-base) var(--ease-forge),transform var(--dur-base) var(--ease-forge)}.tt-person:hover{border-color:color-mix(in srgb,var(--tt-accent) 42%,var(--border-2));box-shadow:var(--shadow-2);transform:translateY(-2px)}.tt-person[data-bastard=true]{--tt-accent:var(--gold-400);border-style:dashed;border-color:color-mix(in srgb,var(--gold-400) 42%,var(--border-2));background:color-mix(in srgb,var(--gold-400) 5%,var(--surface-card))}.tt-name{font-family:var(--font-display);font-weight:600;font-size:var(--text-md);line-height:1.2;letter-spacing:.04em;text-transform:uppercase;color:var(--text-hi);margin:0}.tt-epithet{display:block;margin-top:4px;font-family:var(--font-serif);font-style:italic;font-weight:400;font-size:var(--text-sm);letter-spacing:0;text-transform:none;color:var(--tt-accent)}.tt-person[data-bastard=true] .tt-epithet{color:var(--gold-300)}.tt-meta{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline}.tt-life{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-body)}.tt-reign{color:var(--text-mute)}.tt-dragon i,.tt-line i,.tt-reign,.tt-reign i{font-family:var(--font-mono);font-size:var(--text-2xs)}.tt-dragon i,.tt-line i,.tt-reign i{font-style:normal;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-faint);margin-right:6px}.tt-dragon{display:flex;align-items:center;gap:8px;margin:2px 0 0;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ember)}.tt-dragon .tt-vis{color:var(--text-body)}.tt-dragon .tt-vis i{color:var(--text-faint)}.tt-dragon-mark{flex:none;width:17px;height:17px;color:var(--ember);opacity:.9}.tt-line{margin:0;font-family:var(--font-sans);font-size:var(--text-sm);line-height:1.45;color:var(--text-body)}.tt-parents{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-mute)}.tt-note{margin:6px 0 0;font-family:var(--font-serif);font-size:var(--text-base);line-height:var(--leading-base);color:var(--text-body);text-wrap:pretty}.tt-spnote{border-left:2px solid var(--border-2);padding-left:12px;color:var(--text-mute)}.tt-legend{font-family:var(--font-serif);font-style:italic;font-size:var(--text-sm);color:var(--text-faint);max-width:720px;margin:18px 0 0;text-wrap:pretty}.tt-person .veilwrap{margin-top:2px}.tt-person .veiled-body{filter:blur(6px)}@media (prefers-reduced-motion:no-preference){.tt-person{opacity:0;animation:tt-rise var(--dur-base,.32s) var(--ease-forge,ease) forwards}@keyframes tt-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}}@media (max-width:720px){.tt-gen{padding-left:20px}.tt-gen-head:before{left:-20px}.tt-gen-people{grid-template-columns:minmax(0,1fr)}}