/* Shared read-only pedigree explorer. AnimalisPro tokens; no global framework changes. */
.pe-page { padding-bottom:2rem; }
.pe-page h1 { font-size:clamp(1.7rem,3vw,2.4rem);overflow-wrap:anywhere; }
.pe-page .breadcrumb-item.active,.pe-page .breadcrumb-item::before { color:var(--text-muted); }
.pe-heading { display:flex;gap:1rem;justify-content:space-between;flex-wrap:wrap;align-items:start;margin-bottom:1rem; }
.pe-page-actions { display:flex;gap:.5rem;flex-wrap:wrap; }
.pe-layout { display:grid;gap:1rem;align-items:start; }
.pe-sidebar { padding:1rem; }
.pe-sidebar-image { display:block;width:100%;max-height:12rem;object-fit:contain;border-radius:var(--radius-sm);margin-bottom:.75rem; }
.pe-sidebar h2 { display:block;overflow-wrap:anywhere; }
.pe-sidebar dl { margin:1rem 0; }
.pe-sidebar dl>div { padding:.65rem 0;border-top:1px solid var(--glass-border); }
.pe-sidebar dt { color:var(--text-muted);font-size:.8rem;font-weight:400; }
.pe-sidebar dd { margin:.25rem 0 0;font-size:1.05rem; }
.pe-explorer { min-width:0;border:1px solid var(--glass-border-h);border-radius:var(--radius-md);background:var(--bg-card);overflow:hidden; }
.pe-toolbar { display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem;padding:.85rem;border-bottom:1px solid var(--glass-border); }
.pe-tools,.pe-generation-control { display:flex;align-items:center;gap:.4rem;flex-wrap:wrap; }
.pe-tools .btn,.pe-generation-control .btn { min-width:2.6rem;min-height:2.6rem; }
.pe-generation-control [aria-pressed=true] { background:var(--grad-soft);box-shadow:inset 0 -2px var(--accent-primary);color:var(--text-main); }
.pe-zoom { min-width:3.25rem;text-align:center;color:var(--text-muted); }
.pe-help { padding:.5rem .85rem;margin:0;color:var(--text-muted);font-size:.75rem; }
.pe-viewport { height:clamp(350px,65vh,680px);position:relative;overflow:hidden;touch-action:none;cursor:grab;background:var(--bg-dark); }
.pe-viewport:focus-visible { outline:2px solid var(--accent-primary);outline-offset:-3px; }
.pe-viewport.pe-dragging { cursor:grabbing; }
.pe-stage { position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform; }
.pe-connections { position:absolute;left:0;top:0;overflow:visible;pointer-events:none; }
.pe-link { fill:none;stroke-width:2;stroke:var(--glass-border-h); }
.pe-link-father { stroke:var(--accent-secondary); }
.pe-link-mother { stroke:var(--accent-primary); }
.pe-node { position:absolute;display:flex;gap:.65rem;align-items:center;width:260px;min-height:106px;padding:.8rem;border:1px solid var(--glass-border-h);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-main)!important;text-decoration:none!important;overflow-wrap:anywhere; }
.pe-node:focus-visible { outline:3px solid var(--accent-soft);outline-offset:3px; }
.pe-node:hover:not(.pe-unknown) { background:var(--bg-card); }
.pe-node.pe-subject { border-color:var(--accent-soft); }
.pe-node.pe-father { border-inline-start:3px solid var(--accent-secondary); }
.pe-node.pe-mother { border-inline-start:3px solid var(--accent-primary); }
.pe-node.pe-unknown { border-style:dashed;border-color:var(--glass-border-h);min-height:74px;color:var(--text-muted)!important; }
.pe-node-visual { flex:0 0 48px;display:grid;place-items:center;color:var(--accent-soft); }
.pe-node-visual img { width:48px;height:48px;object-fit:cover;border-radius:var(--radius-sm); }
.pe-node-visual i { font-size:1.4rem; }
.pe-node-body { min-width:0;display:block; }
.pe-node-line { display:block;font-size:.65rem;letter-spacing:.02em;color:var(--text-muted); }
.pe-node-name { display:block;font-size:1rem;line-height:1.35;margin:.2rem 0; }
.pe-node-meta { display:block;font-size:.7rem;line-height:1.4;color:var(--text-muted); }
.pe-canvas-footer { padding:.75rem .85rem;border-top:1px solid var(--glass-border); }
.pe-legend { display:flex;gap:.6rem 1rem;flex-wrap:wrap;font-size:.75rem;color:var(--text-muted); }
.pe-legend span { display:inline-flex;align-items:center;gap:.4rem; }
.pe-legend i { width:.85rem;height:.85rem;border:1px solid var(--glass-border-h);border-radius:.2rem; }
.pe-legend .pe-line-father { border-color:var(--accent-secondary); }
.pe-legend .pe-line-mother { border-color:var(--accent-primary); }
.pe-legend .pe-line-unknown { border-style:dashed; }
.pe-stat-summary { margin:.65rem 0 0;color:var(--text-muted); }
.pe-preview .pe-viewport { height:clamp(300px,48vh,480px); }
.pe-modal .modal-content { background:var(--bg-secondary);color:var(--text-main);border:1px solid var(--glass-border-h); }
.pe-modal .modal-header,.pe-modal .modal-footer { border-color:var(--glass-border); }
.pe-modal .modal-header h2 { color:var(--text-main); }
.pe-modal .modal-body { padding:.75rem; }
.pe-modal .btn-outline-primary { color:var(--accent-soft);border-color:var(--accent-primary); }
.pe-explorer:fullscreen { background:var(--bg-dark);width:100%;height:100%;display:flex;flex-direction:column;border-radius:0; }
.pe-explorer:fullscreen .pe-viewport { flex:1;height:auto; }
.pe-note { margin-top:1rem;font-size:.8rem;color:var(--text-muted); }
.pe-print-summary { display:none; }
@media(min-width:992px){.pe-layout { grid-template-columns:230px minmax(0,1fr); }.pe-sidebar { position:sticky;top:1rem; }}
@media(max-width:991px){.pe-sidebar { display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:1rem; }.pe-sidebar dl { margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem; }.pe-sidebar .pe-note { grid-column:1/-1;margin:0; }.pe-sidebar-image { max-height:7rem; }.pe-sidebar dt { font-size:.7rem; }.pe-sidebar dd { font-size:.85rem; }}
@media(max-width:575px){.pe-tools .btn span { display:none; }.pe-toolbar { gap:.5rem;padding:.6rem; }.pe-help { font-size:.7rem; }.pe-sidebar { display:block; }.pe-sidebar>div:first-child { display:flex;gap:1rem;align-items:center;margin-bottom:.75rem; }.pe-sidebar-image { width:4rem;height:4rem;margin:0; }.pe-sidebar dl { margin-bottom:.75rem; }}
@media(prefers-reduced-motion:reduce){.pe-explorer * { transition:none!important;animation:none!important; }}
@media print {
 @page { size:A4 landscape;margin:10mm; }
 html,body { background:white!important;color:black!important; }
 body>nav,body>header,body>footer,.bg-orbs,.pe-heading .breadcrumb,.pe-page-actions,.pe-toolbar,.pe-help,.pe-viewport,.pe-sidebar-image,.pe-print-hide { display:none!important; }
 .pe-page { max-width:none!important;width:auto!important;padding:0!important;margin:0!important; }
 .pe-heading,.pe-layout,.pe-sidebar { display:block!important;position:static!important; }
 .pe-page h1,.pe-page h2,.pe-page p,.pe-page dt,.pe-page dd { color:black!important; }
 .pe-sidebar { padding:0!important;border:0!important;background:none!important; }
 .pe-sidebar dl { display:flex;gap:1rem;flex-wrap:wrap;font-size:10pt; }
 .pe-sidebar dl>div { border:0; }
 .pe-note { font-size:9pt; }
 .pe-explorer { display:none!important; }
 .pe-print-summary { display:block!important;color:black; }
 .pe-print-generation { break-before:page; }
 .pe-print-generation:first-child { break-before:auto; }
 .pe-print-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3mm; }
 .pe-print-node { border:1px solid #777;border-radius:2mm;padding:3mm;break-inside:avoid;font-size:9pt;overflow-wrap:anywhere; }
 .pe-print-node strong,.pe-print-node small { display:block; }
 .pe-print-father { border-left:2mm solid #333; }
 .pe-print-mother { border-left:2mm double #333; }
 .pe-print-unknown { border-style:dashed; }
}
@media print {
 .pe-page .text-muted { color:#333!important; }
 .pe-page .table th,.pe-page .table td { background:white!important;color:black!important; }
 body:has(.pe-page)::before,body:has(.pe-page)::after { display:none!important; }
 body:has(.pe-page) .navbar,body:has(.pe-page) footer { display:none!important; }
}
@media print { .pe-page .card { box-shadow:none!important; }.pe-page>nav { display:none!important; } }
