:root{--azul:#0e224d;--azul2:#1b3a7a;--azul3:#2c5aa8;--oro:#c9a227;--oro2:#e8cf74;--crema:#fbf8ef;--tinta:#1d2433;--gris:#6b7280;--borde:#e3dcc3;--rojo:#9b2c2c;
--serif:"Cormorant Garamond","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--sans);color:var(--tinta);background:var(--crema);-webkit-tap-highlight-color:transparent}
h1,h2,h3{font-family:var(--serif);color:var(--azul);margin:.4em 0 .3em;font-weight:700}h1{font-size:1.7rem}h2{font-size:1.35rem;border-bottom:2px solid var(--oro);padding-bottom:.2em}
a{color:var(--azul2)}.hidden{display:none!important}
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:.6rem;padding:.45rem .8rem;padding-top:calc(.45rem + env(safe-area-inset-top));background:linear-gradient(135deg,var(--azul),var(--azul2));color:#fff;border-bottom:3px solid var(--oro)}
.brand{display:flex;align-items:center;gap:.5rem;color:var(--oro2);text-decoration:none;font-family:var(--serif);font-size:1.3rem;font-weight:700;white-space:nowrap}.brand img{height:36px}
.search{flex:1}.search input{width:100%;padding:.5rem .8rem;border-radius:999px;border:1px solid var(--oro);background:#fff;font-size:1rem}
.badge-off{background:var(--oro);color:var(--azul);border-radius:6px;padding:.1rem .4rem;font-size:.8rem}
main{padding:1rem;padding-bottom:5.5rem;max-width:1100px;margin:0 auto;outline:none}
main.full{max-width:none;padding:0;padding-bottom:4.2rem}
.bottom{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;background:var(--azul);border-top:2px solid var(--oro);padding-bottom:env(safe-area-inset-bottom)}
.bottom a{flex:1;text-align:center;color:#dfe6f5;text-decoration:none;font-size:.78rem;padding:.45rem 0}.bottom a span{display:block;font-size:1.25rem}.bottom a.on{color:var(--oro2)}
.card{background:#fff;border:1px solid var(--borde);border-radius:14px;padding:1rem;margin:.8rem 0;box-shadow:0 1px 3px rgba(14,34,77,.06)}
.btn{display:inline-flex;align-items:center;gap:.3rem;border:1px solid var(--azul2);background:var(--azul2);color:#fff;border-radius:10px;padding:.55rem .9rem;font-size:.95rem;cursor:pointer;text-decoration:none;margin:.15rem}
.btn.oro{background:var(--oro);border-color:var(--oro);color:var(--azul)}.btn.ghost{background:#fff;color:var(--azul2)}.btn.danger{background:var(--rojo);border-color:var(--rojo)}.btn.sm{padding:.3rem .6rem;font-size:.85rem}
label{display:block;font-size:.85rem;color:var(--gris);margin:.55rem 0 .15rem}
input,select,textarea{width:100%;padding:.55rem .65rem;border:1px solid #cfc7ab;border-radius:9px;font-size:1rem;background:#fff;font-family:inherit}textarea{min-height:90px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 .8rem}@media(max-width:560px){.grid2{grid-template-columns:1fr}}
.auth{max-width:420px;margin:2rem auto;text-align:center}.auth img{width:140px}.auth form{text-align:left}
.err{color:var(--rojo);margin:.4rem 0}.muted{color:var(--gris);font-size:.9rem}
.list{list-style:none;padding:0;margin:0}.list li{display:flex;align-items:center;gap:.7rem;padding:.55rem .3rem;border-bottom:1px solid #eee7d2;cursor:pointer}.list li:hover{background:#fffaf0}
.av{width:44px;height:44px;border-radius:50%;flex:none;background:var(--azul2);color:var(--oro2);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:700;overflow:hidden;border:2px solid var(--oro)}.av img{width:100%;height:100%;object-fit:cover}.av.F{background:#7a2c5a}.av.big{width:120px;height:120px;font-size:2.4rem}
.cert{font-size:.72rem;border-radius:999px;padding:.1rem .5rem;white-space:nowrap}.cert.Confirmado{background:#e3f4e8;color:#1e6b3a}.cert.Probable{background:#fff3cd;color:#7a5b00}.cert.Por{background:#fde8e8;color:#8a2a2a}
.phead{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.phead h1{margin:0}
.chips a,.chip{display:inline-block;background:#eef2fb;border:1px solid #cdd8f0;color:var(--azul);border-radius:999px;padding:.25rem .65rem;margin:.15rem;text-decoration:none;font-size:.9rem;cursor:pointer}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.5rem}.gallery figure{margin:0;background:#f4f0e2;border-radius:10px;overflow:hidden;position:relative}.gallery img{width:100%;height:110px;object-fit:cover;display:block;cursor:pointer}.gallery figcaption{font-size:.75rem;padding:.2rem .35rem}
.doc{display:flex;align-items:center;justify-content:center;height:110px;font-size:2rem;text-decoration:none}
.treebar{position:relative;display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;padding:.4rem .6rem;background:#fff;border-bottom:1px solid var(--borde);z-index:5}
.treebar .seg{display:inline-flex;border:1px solid var(--azul2);border-radius:10px;overflow:hidden}.treebar .seg button{border:0;background:#fff;color:var(--azul2);padding:.45rem .7rem;font-size:.9rem}.treebar .seg button.on{background:var(--azul2);color:#fff}
main.full{display:flex;flex-direction:column;height:calc(100vh - 58px - 64px);height:calc(100dvh - 58px - 64px - env(safe-area-inset-bottom));padding-bottom:0;overflow:hidden}
#treeWrap{position:relative;flex:1;min-height:0;overflow:hidden;background:radial-gradient(circle at 50% 30%,#fff,#f3eedd);touch-action:none;cursor:grab}
#treeWrap svg{width:100%;height:100%;display:block}
.node rect.box{fill:#fff;stroke:var(--azul2);stroke-width:1.5}.node.F rect.box{stroke:#7a2c5a}.node.focus rect.box{stroke:var(--oro);stroke-width:3.5;fill:#fffbea}.node:hover rect.box{fill:#f2f6ff}
.node text{font-family:var(--sans);font-size:12px;fill:var(--tinta)}.node text.nm{font-weight:600;font-size:12.5px}.node text.yr{fill:var(--gris);font-size:11px}
.link{fill:none;stroke:#8a96b3;stroke-width:1.4}.link.union{stroke:var(--oro);stroke-width:2.2}.link.union.otra,.link.union.union{stroke-dasharray:5 4}.link.adopt{stroke-dasharray:2 3}
.zoom{position:absolute;right:.6rem;bottom:.6rem;display:flex;flex-direction:column;gap:.3rem}.zoom button{width:42px;height:42px;border-radius:50%;border:1px solid var(--azul2);background:#fff;font-size:1.3rem;color:var(--azul2)}
.legend{font-size:.72rem;max-height:3.2em;overflow:auto;color:var(--gris);padding:.2rem .6rem}
.modal{position:fixed;inset:0;background:rgba(10,20,40,.55);z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--crema);width:100%;max-width:640px;max-height:92vh;overflow:auto;border-radius:18px 18px 0 0;padding:1rem 1rem 2rem;position:relative}
@media(min-width:700px){.modal{align-items:center}.sheet{border-radius:18px}}
.close{position:absolute;right:.6rem;top:.4rem;border:0;background:none;font-size:2rem;color:var(--gris);cursor:pointer}
.toast{position:fixed;left:50%;bottom:5.5rem;transform:translateX(-50%);background:var(--azul);color:#fff;padding:.6rem 1rem;border-radius:10px;z-index:60;border:1px solid var(--oro);max-width:90vw}
.menu a{display:flex;gap:.7rem;align-items:center;padding:.85rem .5rem;border-bottom:1px solid #eee7d2;text-decoration:none;color:var(--tinta);font-size:1.05rem}
.stat{display:inline-block;min-width:130px;text-align:center;margin:.3rem;padding:.8rem;background:#fff;border:1px solid var(--borde);border-radius:12px}.stat b{display:block;font-family:var(--serif);font-size:2rem;color:var(--azul)}
.tl{border-left:3px solid var(--oro);margin-left:.6rem;padding-left:1rem}.tl div{margin:.5rem 0;position:relative}.tl div:before{content:"";position:absolute;left:-1.45rem;top:.35rem;width:.7rem;height:.7rem;border-radius:50%;background:var(--azul2)}
table{border-collapse:collapse;width:100%}td,th{border-bottom:1px solid #eee7d2;padding:.4rem;text-align:left;font-size:.92rem;vertical-align:top}
.loading{text-align:center;color:var(--gris);padding:3rem}
@media print{.top,.bottom,.treebar,.zoom,.btn,.noprint,.close{display:none!important}main{padding:0}body{background:#fff}.card{border:0;box-shadow:none}#treeWrap{height:auto;overflow:visible;background:#fff}.print-head{display:flex!important}}
.print-head{display:none;align-items:center;gap:.6rem;border-bottom:2px solid var(--oro);margin-bottom:.6rem}.print-head img{height:50px}

/* ---- v2 ---- */
#map { height: 62vh; min-height: 320px; border-radius: 14px; margin: .6rem 0; border: 1px solid #d9dfeb; }
.poster-prev { background: #e9edf5; padding: .6rem; border-radius: 12px; overflow: auto; }
.poster-prev svg { display: block; background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,.15); max-width: 100%; height: auto; }
.story { display: flex; flex-direction: column; gap: .3rem; padding: .6rem 0; border-bottom: 1px solid #eef1f6; }
.story audio, .story video { width: 100%; max-height: 360px; border-radius: 10px; background: #000; }
.story audio { background: none; }
.recdot { width: 26px; height: 26px; margin: 1rem auto; border-radius: 50%; background: #c0392b; animation: pulse 1.2s infinite; }
@keyframes pulse { 50% { opacity: .3; } }
.bar { height: 8px; background: #e6e9f0; border-radius: 6px; overflow: hidden; margin: .5rem 0; } .bar i { display: block; height: 100%; width: 0; background: #c9a227; transition: width .2s; }
.warn { background: #fff6d6; border: 1px solid #e8cf7a; padding: .6rem; border-radius: 10px; margin: .5rem 0; }
.hint { background: #eef3ff; border: 1px solid #c7d3f0; padding: .6rem; border-radius: 10px; margin: .5rem 0; }
.answer { background: #f5f7fc; border-left: 4px solid #1b3a7a; padding: .6rem .8rem; border-radius: 8px; margin: .7rem 0; } .answer.no { border-color: #c9a227; }
.post .coms { border-top: 1px solid #eef1f6; margin-top: .5rem; padding-top: .3rem; font-size: .95rem; }
.comF { display: flex; gap: .4rem; } .oculto { opacity: .55; }
.chips a.on { background: #1b3a7a; color: #fff; }
.bottom a { min-width: 0; }
/* v3: selector por búsqueda, ficha de familia */
.pick{display:block;position:relative}.pick .pickl{position:absolute;z-index:30;left:0;right:0;background:#fff;box-shadow:0 6px 18px #0002;border-radius:10px;max-height:320px;overflow:auto;margin:0}
.pick .pickl:empty{display:none}.sheet table th{text-align:left;vertical-align:top;color:var(--azul2)}
@media print{.sheet{break-inside:avoid;page-break-inside:avoid}}
.vsel{display:flex;align-items:center;gap:.4rem;font-weight:600;color:#1b3a7a;margin:0}
.vsel select{width:auto;min-width:10rem;border:2px solid #c9a227;font-weight:600}
/* Abanico (vista principal): hombres en azules y mujeres en dorados, más claros hacia afuera */
.fan path.box{stroke:#fff;stroke-width:2;cursor:pointer}.fan.M.g1 path.box{fill:#b9c8ea}.fan.M.g2 path.box{fill:#cdd8f0}.fan.M.g3 path.box{fill:#dde5f5}.fan.M.g4 path.box{fill:#ebf0fa}
.fan.F.g1 path.box{fill:#ecd889}.fan.F.g2 path.box{fill:#f2e3a8}.fan.F.g3 path.box{fill:#f7ecc4}.fan.F.g4 path.box{fill:#fbf4dc}
.fan path.box:hover,.fan:focus path.box{stroke:var(--azul2);stroke-width:2.5}.fan .nm{fill:var(--azul2)}
.fan circle.box{fill:#fffbea;stroke:var(--oro);stroke-width:3;cursor:pointer}.more{cursor:pointer}
.treebar .pedpick{flex:1 1 180px;min-width:160px;margin-left:auto}.treebar .btn.sm{min-height:40px}@media (max-width:600px){.treebar{gap:.25rem}.treebar select,.treebar .btn.sm{font-size:.95rem}.treebar .pedpick{flex-basis:100%}}
/* Pedigrí (vista principal) */
.node.ped rect.box{fill:#fff;stroke:#c8cfdf;stroke-width:1.2;filter:drop-shadow(0 1px 2px rgba(27,58,122,.12))}.node.ped.F rect.box{stroke:#c8cfdf}.node.ped.focus rect.box{fill:#fffbea;stroke:var(--oro);stroke-width:3}.node.ped:hover rect.box{fill:#f2f6ff;stroke:var(--azul2)}
.node.ped .bar{fill:var(--azul2)}.node.ped.F .bar{fill:var(--oro)}.ph.M{fill:#9fb3dc}.ph.F{fill:#e3c978}
.node.ped text.nm{font-size:15px;font-weight:700;fill:var(--azul2)}.node.ped text.yr{font-size:13px;fill:#4b5563}.node.ped text.pl{font-size:12px;fill:var(--gris)}
.node.add rect.box{fill:rgba(255,255,255,.6);stroke:#9aa6c0;stroke-width:1.4;stroke-dasharray:6 5}.node.add text{font-size:14px;fill:#5b6b8f;font-weight:600}.node.add:hover rect.box{fill:#fff}
.grp{font-family:Georgia,serif;font-size:22px;font-weight:700;fill:#1b3a7a}.chips{display:flex;flex-wrap:wrap;gap:.35rem}.chips .btn{margin:0}

.stats{display:flex;flex-wrap:wrap;gap:.4rem;margin:.4rem 0 .6rem}.stats span{background:#eef3f8;border-radius:999px;padding:.2rem .7rem}.tblwrap{overflow-x:auto}table.acc td{vertical-align:top}.chip.ok{background:#e3f4e8;color:#1e6b3a}.chip.off{background:#f6e1e1;color:#8a2b2b}.chip.pendc{background:#fff3d6;color:#7a5a00}.chip{display:inline-block;border-radius:999px;padding:.1rem .55rem;font-size:.85em}label.canedit{display:inline-flex;gap:.3rem;align-items:center;color:inherit;white-space:nowrap;margin-top:.3rem}label.canedit input{width:auto}tr.pend{background:#fffaf0}

.solchip{position:fixed;right:12px;bottom:calc(78px + env(safe-area-inset-bottom));z-index:25;background:#b3261e;color:#fff;font-weight:700;text-decoration:none;padding:.6rem .9rem;border-radius:14px;box-shadow:0 4px 14px rgba(0,0,0,.3);border:2px solid #fff;max-width:calc(100vw - 24px);font-size:.95rem}.solchip:hover{background:#8f1d17}.solchip.hidden{display:none}#cuentas tr.pend.flash td{background:#fff0c2}
