/* CSS split file; preserve manifest load order. */ .lineage-tree { overflow: auto; padding: 8px 10px 18px; contain: content; } .lineage-main-card { margin-top: 16px; min-height: 0; } .lineage-main-card h2 { margin-bottom: 6px; } .lineage-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; } .lineage-head h2 { margin-bottom: 0; } .lineage-main-content { height: min(78vh, 980px); min-height: 520px; max-height: calc(100vh - 120px); overflow: auto; overscroll-behavior: auto; padding: 10px 6px 24px; background: rgba(255,250,244,0.48); border-radius: 14px; border: 1px solid rgba(84,68,48,0.10); scrollbar-gutter: stable both-edges; } .lineage-forest { display: flex; flex-direction: column; gap: 12px; } .lineage-main-content .lineage-tree { min-width: 360px; overflow: visible; padding-right: 2px; } body::before { content: ""; position: fixed; inset: 0; pointer-events: none; background: radial-gradient(circle at 8% 20%, rgba(255,255,255,0.62), transparent 16%), radial-gradient(circle at 92% 18%, rgba(255,255,255,0.45), transparent 18%), linear-gradient(180deg, transparent 0%, rgba(114, 152, 78, 0.05) 100%); } .stage-wrap::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle at 18% 14%, rgba(255,255,255,0.12), transparent 18%), radial-gradient(circle at 84% 10%, rgba(255,255,255,0.09), transparent 16%), linear-gradient(180deg, rgba(255,255,255,0.07), transparent 24%); z-index: 1; } #gameCanvas { position: relative; z-index: 0; } .card::after { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; box-shadow: inset 0 1px 0 rgba(255,255,255,0.55); } /* Family tree node primitives. The archive deliberately uses these nodes inside an SVG-backed tree, not the old card/grid UI. */ .family-node { position: relative; display: block; min-width: 0; min-height: 34px; padding: 6px 8px; border-radius: 10px; background: linear-gradient(180deg, rgba(255,253,248,0.96), rgba(248,241,229,0.90)); border: 1px solid rgba(84,68,48,0.14); box-shadow: 0 3px 8px rgba(64,48,32,0.045); overflow: hidden; isolation: isolate; } .family-node.child { border-color: rgba(103, 178, 44, 0.38); box-shadow: inset 0 0 0 1px rgba(156,232,75,0.17), 0 3px 8px rgba(64,48,32,0.045); } .family-node[data-family-tarinai-id] { cursor: pointer; transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease; } .family-node[data-family-tarinai-id]:hover { transform: translateY(-1px); border-color: rgba(112,178,66,0.42); box-shadow: 0 5px 12px rgba(64,48,32,0.08); } .family-node.dead { opacity: 0.9; filter: grayscale(0.32); } .family-node.missing { opacity: 0.48; border-style: dashed; } .family-portrait { position: absolute; right: -6px; bottom: -8px; width: calc(64px * var(--family-icon-scale, 1)); height: calc(64px * var(--family-icon-scale, 1)); z-index: 0; pointer-events: none; } .family-node.alive .family-portrait { opacity: 0.80; } .family-node.dead .family-portrait { opacity: 0.20; } .family-portrait img { width: 100%; height: 100%; object-fit: contain; filter: saturate(0.95); } .family-copy { position: relative; z-index: 1; min-width: 0; line-height: 1.12; max-width: calc(100% - 8px); } .family-copy strong, .family-copy span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .family-copy .death-reason { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.12; margin-top: 1px; color: rgba(126, 80, 64, 0.92); } .family-personality-tags { display: flex !important; overflow: visible !important; text-overflow: clip !important; flex-wrap: wrap; gap: 2px; margin-top: 2px; white-space: normal !important; overflow: visible; max-height: none; } .family-personality-tags em { display: inline-block; max-width: none; padding: 1px 4px; border-radius: 999px; background: rgba(103,178,44,0.11); border: 1px solid rgba(103,178,44,0.20); color: rgba(64,72,48,0.86); font-size: 7.5px; font-style: normal; line-height: 1.25; overflow: visible; text-overflow: clip; white-space: nowrap; } .family-copy strong { font-size: 11px; } .family-copy span { color: var(--muted); font-size: 8.5px; margin-top: 1px; } .colony-card { overflow: visible; min-height: 0; flex: 0 0 auto; } .colony-stats { grid-template-columns: repeat(2, 1fr); margin-bottom: 8px; } .colony-chart { display: block; width: 100%; height: 188px; min-height: 188px; border: 1px solid rgba(84, 68, 48, 0.14); border-radius: 14px; background: linear-gradient(180deg, rgba(255,255,255,0.70), rgba(246,240,228,0.54)); overflow: hidden; } .colony-card h2 { line-height: 1.45; margin-bottom: 10px; } .colony-chart svg { display: block; width: 100%; height: 100%; } .colony-chart-legend { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; margin: 4px 0 8px; font-size: 11px; color: var(--muted); line-height: 1.25; } .colony-chart-legend span { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; } .colony-chart-legend i { width: 8px; height: 8px; border-radius: 999px; display: inline-block; box-shadow: 0 0 0 1px rgba(70, 52, 36, 0.10); } .relation-row strong { display: inline-flex; align-items: center; justify-content: flex-end; gap: 6px; } .relation-face { width: 24px; height: 24px; object-fit: contain; border-radius: 999px; background: rgba(255,255,255,0.66); border: 1px solid rgba(84,68,48,0.12); vertical-align: middle; flex: 0 0 auto; } .lineage-family { padding: 10px; margin: 0 0 12px; border-radius: 15px; background: rgba(255,253,248,0.62); border: 1px solid rgba(84,68,48,0.12); } .lineage-family h3 { margin: 0 0 8px; font-size: 13px; color: rgba(64,52,38,0.86); } /* Family archive: actual top-down tree diagram. */ .lineage-family-tree { overflow-x: auto; overflow-y: visible; padding: 10px 10px 22px; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; } .lineage-family-tree h3 { position: sticky; left: 0; z-index: 3; width: max-content; padding-right: 12px; background: rgba(255,253,248,0.82); border-radius: 8px; } .lineage-tree-hint { position: sticky; left: 0; z-index: 3; width: max-content; max-width: 100%; margin: -2px 0 8px; padding: 5px 8px; border-radius: 9px; color: var(--muted); font-size: 11px; background: rgba(255,255,255,0.62); border: 1px solid rgba(84,68,48,0.08); } .lineage-family-tree .lineage-tree-panel { position: relative; overflow: visible; min-width: 360px; margin-top: 6px; border-radius: 14px; background: linear-gradient(90deg, rgba(84,68,48,0.045) 1px, transparent 1px), linear-gradient(180deg, rgba(84,68,48,0.040) 1px, transparent 1px), rgba(255,250,244,0.48); background-size: 34px 34px, 34px 34px, auto; border: 1px solid rgba(84,68,48,0.10); } .lineage-family-tree .lineage-links { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; z-index: 1; isolation: isolate; } .lineage-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; } .btn.active { background: #efffde; border-color: rgba(103,178,44,0.46); font-weight: 700; } .lineage-render-status { position: sticky; top: 0; left: 0; z-index: 6; width: max-content; margin: 0 0 8px; padding: 6px 10px; border-radius: 999px; font-size: 12px; color: var(--muted); background: rgba(255,255,255,0.88); border: 1px solid rgba(84,68,48,0.10); box-shadow: 0 4px 10px rgba(64,48,32,0.06); } .lineage-stale-status { position: sticky; top: 0; left: 0; z-index: 6; width: max-content; max-width: calc(100% - 12px); margin: 0 0 8px; padding: 6px 10px; border-radius: 999px; font-size: 12px; color: rgba(92, 75, 52, 0.82); background: rgba(255, 249, 232, 0.92); border: 1px solid rgba(150, 115, 46, 0.16); box-shadow: 0 4px 10px rgba(64,48,32,0.05); } .lineage-family-tree .lineage-links path { fill: none; stroke: rgba(107, 88, 61, 0.58); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } .lineage-family-tree .lineage-links .partner-link { stroke-width: 2.4; stroke: rgba(98, 80, 56, 0.68); stroke-dasharray: 5 4; } .lineage-family-tree .lineage-links .child-link { stroke-width: 2; stroke: rgba(107, 88, 61, 0.58); } .lineage-family-tree .tree-node { position: absolute; width: 132px; height: 84px; min-height: 84px; box-sizing: border-box; align-items: flex-start; background: linear-gradient(180deg, #fffdf8, #f8f1e5); box-shadow: 0 2px 5px rgba(64,48,32,0.035); contain: layout paint style; z-index: 2; isolation: isolate; } .lineage-family-tree .tree-node.child { border-color: rgba(103,178,44,0.34); } .lineage-family-tree .tree-node.dead { opacity: 1; filter: none; } .lineage-family-tree .tree-node[data-family-tarinai-id]:hover { transform: none; } .lineage-family-tree .tree-node .family-portrait { right: 0; bottom: -6px; width: 58px; height: 58px; } .lineage-family-tree .tree-generation-label { position: absolute; left: 10px; width: 54px; padding: 3px 0; border-radius: 999px; font-size: 10px; color: var(--muted); text-align: center; background: rgba(255,255,255,0.70); border: 1px solid rgba(84,68,48,0.08); z-index: 2; } .lineage-family-tree .lineage-empty-family { position: absolute; left: 72px; bottom: 8px; padding: 5px 8px; border-radius: 9px; background: rgba(255,255,255,0.70); } @media (max-width: 720px) { .ecology-grid { grid-template-columns: 1fr; } .ecology-card { grid-template-columns: 68px minmax(0, 1fr); } .ecology-card img { width: 68px; height: 68px; } } @media (max-width: 720px) { .lineage-main-content { height: 70vh; min-height: 420px; max-height: none; } } .tool[data-tip] { position: relative; }