
table.data.guidedir td.ftlcell, table.data.guidedir th.ftlcell { width:220px; }
table.data.guidedir td.ftlcell { vertical-align:middle; }
table.data.guidedir .td-sub.eg { margin-top:4px; }
.ftlmini { position:relative; padding:4px 6px; }
.ftlm-lane { position:relative; height:11px; }
.ftlm-lane::before { content:""; position:absolute; left:0; right:0; top:50%; height:1px; background:var(--hairline); }
.ftlm-lane i {
    position:absolute;
    left:var(--x);
    top:50%;
    width:6px; height:6px;
    margin:-3px 0 0 -3px;
    border-radius:50%;
    background:var(--signal);
}
.ftlm-lane i.hollow { background:var(--panel); box-shadow:0 0 0 1px var(--text-muted); }
a.ftlmini { display:block; border-radius:4px; text-decoration:none; transition:background .15s; }
a.ftlmini:hover { background:var(--panel-2); }
a.ftlmini:hover .ftlm-lane i:not(.hollow) { background:var(--signal); box-shadow:0 0 0 1px var(--signal); }
.ftlm-axis { position:relative; height:14px; margin-top:4px; font-family:var(--font-mono); font-size:9.5px; color:var(--text-muted); }
.ftlm-axis span { position:absolute; left:var(--x); transform:translateX(-50%); }
.lineup {
    grid-column:1 / -1;
    display:grid;
    grid-template-columns:repeat(6, minmax(0, 1fr));
    gap:18px 20px;
    align-items:end;
    padding:18px 0 4px;
    border-top:1px solid var(--hairline);
}
.lineup a { display:flex; flex-direction:column; align-items:center; gap:8px; min-width:0; text-decoration:none; text-align:center; }
.lineup img { width:100%; max-width:150px; height:48px; object-fit:contain; object-position:center bottom; transition:transform .15s; }
.lineup a:hover img { transform:translateY(-3px); }
.lineup span {
    font-family:var(--font-mono);
    font-size:9.5px;
    line-height:1.4;
    letter-spacing:.06em;
    text-transform:uppercase;
    color:var(--text-muted);
}
.lineup a:hover span { color:var(--signal); }
@media (max-width: 992px) {
    .lineup { grid-template-columns:repeat(3, minmax(0, 1fr)); }
}
.famtimeline { padding:18px 18px 6px; }
.ftl-eras { position:relative; height:26px; margin-left:110px; }
.ftl-eras span {
    position:absolute;
    left:var(--x);
    width:var(--w);
    top:0;
    bottom:0;
    display:flex;
    align-items:center;
    justify-content:center;
    font-family:var(--font-mono);
    font-size:9.5px;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--text-muted);
    border-left:1px dashed var(--hairline-strong);
    overflow:hidden;
    white-space:nowrap;
    padding:0 4px;
}
.ftl-lane {
    display:grid;
    grid-template-columns:110px 1fr;
    align-items:center;
    min-height:36px;
    border-top:1px solid var(--hairline);
}
.ftl-lane .fam { font-family:var(--font-mono); font-size:11px; font-weight:600; letter-spacing:.06em; }
.ftl-lane .fam small {
    display:block;
    font-weight:400;
    color:var(--text-muted);
    font-size:9.5px;
    letter-spacing:.03em;
}
.ftl-track { position:relative; height:36px; }
.ftl-track::before { content:""; position:absolute; left:0; right:0; top:50%; height:1px; background:var(--hairline); }
.ftl-dot {
    position:absolute;
    top:50%;
    left:var(--x);
    transform:translate(-50%,-50%);
    width:9px;
    height:9px;
    border-radius:50%;
    background:var(--signal);
    border:2px solid var(--panel);
    box-shadow:0 0 0 1px var(--signal);
}
.ftl-dot.hollow { background:var(--panel); box-shadow:0 0 0 1px var(--text-muted); }
a.ftl-dot::before { content:""; position:absolute; inset:-8px; border-radius:50%; }
a.ftl-dot:hover { width:13px; height:13px; }
.ftl-lbl {
    position:absolute;
    left:var(--x);
    top:1px;
    transform:translateX(-50%);
    font-family:var(--font-mono);
    font-size:9px;
    color:var(--text-muted);
    white-space:nowrap;
}
.ftl-lbl.below { top:auto; bottom:1px; }
.ftl-axis { position:relative; height:22px; margin-left:110px; }
.ftl-axis span {
    position:absolute;
    left:var(--x);
    transform:translateX(-50%);
    top:4px;
    font-family:var(--font-mono);
    font-size:10px;
    color:var(--text-muted);
}
.ftl-legend {
    display:flex;
    gap:18px;
    padding:10px 18px 14px;
    font-family:var(--font-mono);
    font-size:10.5px;
    color:var(--text-muted);
    flex-wrap:wrap;
}
.ftl-legend i { display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:6px; vertical-align:-1px; }
.ftl-legend .full i { background:var(--signal); }
.ftl-legend .empty i { background:var(--panel); box-shadow:inset 0 0 0 1px var(--text-muted); }
@media (max-width:768px) {
    .ftl-lane { grid-template-columns:72px 1fr; }
    .ftl-eras, .ftl-axis { margin-left:72px; }
    .ftl-lbl { display:none; }
}
.lineage { padding:10px 8px 4px; overflow-x:auto; }
.lineage svg {
    display:block;
    width:100%;
    height:auto;
    min-width:560px;
    max-width:calc(var(--lw, 900) * 1.25px);
    margin:0 auto;
}
.lineage .node rect { fill:var(--panel-2); stroke:var(--hairline-strong); }
.lineage a:hover .node rect { stroke:var(--signal); }
.lineage .node text { font-family:var(--font-mono); font-size:11px; font-weight:600; fill:var(--text-color); }
.lineage .node .yr { font-size:8.5px; font-weight:400; fill:var(--text-muted); letter-spacing:.05em; }
.lineage .node.tofill rect { stroke-dasharray:3 3; fill:transparent; }
.lineage .node.tofill text { fill:var(--text-muted); }
.lineage .edge { stroke:var(--hairline-strong); stroke-width:1.2; fill:none; }
.lineage .edge.tech { stroke-dasharray:4 4; }
.lineage .rowlbl {
    font-family:var(--font-mono);
    font-size:9.5px;
    letter-spacing:.12em;
    fill:var(--text-muted);
}
.rangespec { padding:16px 18px 8px; position:relative; }
.rs-head { display:flex; gap:16px; padding:0 0 14px; margin-top:4px; }
.rs-head .cls {
    font-family:var(--font-mono);
    font-size:10px;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--text-muted);
}
.rs-row { display:grid; grid-template-columns:88px 1fr; align-items:center; min-height:26px; }
.rs-row .lbl { font-family:var(--font-mono); font-size:11px; font-weight:500; }
.rs-row .lbl a { color:inherit; }
.rs-track { position:relative; height:26px; }
.rs-bar {
    position:absolute;
    left:0;
    top:50%;
    transform:translateY(-50%);
    width:var(--w);
    height:7px;
    border-radius:0 4px 4px 0;
    background:var(--bar-a);
}
.rs-bar.hgv { background:var(--amber); }
.rs-val {
    position:absolute;
    left:min(calc(var(--w) + 8px), calc(100% - 48px));
    top:50%;
    transform:translateY(-50%);
    font-family:var(--font-mono);
    font-size:10px;
    color:var(--text-muted);
    white-space:nowrap;
}
.rs-guides { position:absolute; top:16px; bottom:36px; left:calc(88px + 18px); right:18px; pointer-events:none; }
.rs-guides i {
    position:absolute;
    left:var(--x);
    top:0;
    bottom:0;
    width:0;
    border-left:1px dashed var(--hairline-strong);
}
.rs-guides i::after {
    content:attr(data-l);
    position:absolute;
    top:-14px;
    transform:translateX(-50%);
    font-family:var(--font-mono);
    font-size:9px;
    letter-spacing:.08em;
    color:var(--text-muted);
    white-space:nowrap;
}
.rs-land { position:relative; height:30px; margin-left:88px; border-top:1px solid var(--hairline); margin-top:8px; }
.rs-land span {
    position:absolute;
    left:var(--x);
    transform:translateX(-50%);
    top:6px;
    font-family:var(--font-mono);
    font-size:9.5px;
    color:var(--amber);
    white-space:nowrap;
}
.rs-land span::before { content:"▲"; display:block; text-align:center; font-size:7px; }
@media (max-width:768px) {
    .rs-row { grid-template-columns:64px 1fr; }
    .rs-land { margin-left:64px; }
    .rs-guides { left:calc(64px + 18px); }
    .rs-val { display:none; }
}
table.data td.zh { font-size:15px; white-space:nowrap; }
