/* ─── Pedigree Tree Wrapper ──────────────────────────────────────── */ .pedigree-tree-wrapper { position: relative; width: 100%; height: calc(100vh - 200px); background: radial-gradient( ellipse at 20% 50%, rgba(194, 134, 42, 0.06) 0%, var(--bg-primary) 60% ); border-radius: var(--radius); overflow: hidden; border: 1px solid var(--border); box-shadow: var(--shadow-lg); } .tree-container { width: 100%; height: 100%; } /* ─── SVG Link Paths ─────────────────────────────────────────────── */ .pedigree-tree-wrapper svg .rd3t-link { stroke: var(--border-light) !important; stroke-width: 1.5px !important; stroke-opacity: 0.6; } /* ─── Controls ───────────────────────────────────────────────────── */ .pedigree-controls { position: absolute; top: 16px; right: 16px; z-index: 10; display: flex; gap: 0.75rem; align-items: center; } .control-group { display: flex; gap: 0.25rem; background: var(--bg-elevated); padding: 0.375rem; border-radius: var(--radius-sm); border: 1px solid var(--border); box-shadow: var(--shadow); backdrop-filter: blur(8px); } .control-btn { background: transparent; border: 1px solid transparent; border-radius: var(--radius-sm); padding: 0.4rem; cursor: pointer; display: flex; align-items: center; justify-content: center; color: var(--text-secondary); transition: var(--transition); } .control-btn:hover { background: var(--bg-tertiary); border-color: var(--border); color: var(--primary-light); } .control-btn:active { transform: scale(0.93); } /* ─── COI Display ────────────────────────────────────────────────── */ .coi-display { background: var(--bg-elevated); padding: 0.5rem 0.875rem; border-radius: var(--radius-sm); border: 1px solid var(--border); box-shadow: var(--shadow); display: flex; align-items: center; gap: 0.5rem; backdrop-filter: blur(8px); } .coi-label { font-weight: 600; color: var(--text-muted); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; } .coi-value { font-weight: 700; font-size: 1.1rem; letter-spacing: -0.02em; } .coi-value.low { color: var(--success); } .coi-value.medium { color: var(--warning); } .coi-value.high { color: var(--danger); } /* ─── Legend ─────────────────────────────────────────────────────── */ .pedigree-legend { position: absolute; bottom: 16px; left: 16px; z-index: 10; background: var(--bg-elevated); padding: 0.625rem 1rem; border-radius: var(--radius-sm); border: 1px solid var(--border); box-shadow: var(--shadow); display: flex; gap: 1.25rem; backdrop-filter: blur(8px); } .legend-item { display: flex; align-items: center; gap: 0.4rem; font-size: 0.8rem; color: var(--text-secondary); font-weight: 500; } .legend-color { width: 14px; height: 14px; border-radius: 50%; border: 2px solid rgba(255,255,255,0.15); box-shadow: 0 0 6px rgba(0,0,0,0.4); } .legend-color.male { background: #3b82f6; box-shadow: 0 0 8px rgba(59,130,246,0.4); } .legend-color.female { background: #ec4899; box-shadow: 0 0 8px rgba(236,72,153,0.4); } /* ─── Zoom Indicator ─────────────────────────────────────────────── */ .zoom-indicator { position: absolute; bottom: 16px; right: 16px; z-index: 10; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 0.3rem 0.6rem; font-size: 0.7rem; color: var(--text-muted); font-variant-numeric: tabular-nums; backdrop-filter: blur(8px); } /* ─── Mobile ─────────────────────────────────────────────────────── */ @media (max-width: 768px) { .pedigree-tree-wrapper { height: calc(100vh - 150px); } .pedigree-controls { top: 10px; right: 10px; flex-direction: column; gap: 0.4rem; } .coi-display { padding: 0.375rem 0.625rem; } .coi-label { font-size: 0.7rem; } .coi-value { font-size: 0.95rem; } .pedigree-legend { bottom: 10px; left: 10px; padding: 0.5rem 0.75rem; gap: 0.875rem; } .legend-item { font-size: 0.75rem; } .legend-color { width: 12px; height: 12px; } } /* ─── Print ──────────────────────────────────────────────────────── */ @media print { .pedigree-controls, .pedigree-legend, .zoom-indicator { display: none; } .pedigree-tree-wrapper { height: 100vh; box-shadow: none; background: white; border: none; } .tree-container { page-break-inside: avoid; } }