/* Mapa familiar · identidad «Álbum». */
@layer views{
  .map-page{--map-sea:#D5E9E8;--map-land:#FBF5EA;--map-coast:#CDB99A;--map-label:#6F6257}
  .map-heading{align-items:flex-end}
  .map-heading .eyebrow{margin-bottom:10px}
  .map-heading h1{font-size:clamp(var(--t-34),4.4vw,var(--t-56))}
  .map-totals{display:flex;gap:10px;flex-shrink:0}
  .map-totals>span{display:grid;justify-items:center;gap:2px;min-width:92px;padding:10px 16px;border-radius:var(--r-m);background:var(--surface);box-shadow:var(--sh-1);font-size:var(--t-13);color:var(--muted)}
  .map-totals b{font:400 34px/1 var(--font-display);color:var(--ink)}
  .map-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:0 0 18px}
  .map-mode{display:inline-flex;gap:2px;padding:4px;background:var(--surface-2);border-radius:var(--r-pill)}
  .map-mode button{min-height:36px;padding:0 16px;border-radius:var(--r-pill);font-weight:500;font-size:var(--t-14);color:var(--muted);white-space:nowrap}
  .map-mode button:hover{color:var(--ink)}
  .map-mode button[aria-pressed=true]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--sh-1)}
  .map-family-label,.map-generation-label{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 6px 0 16px;border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--sh-1);font-size:var(--t-14);font-weight:500;color:var(--muted)}
  .map-toolbar select{height:32px;border:0;border-radius:var(--r-pill);background:var(--surface-2);padding:0 12px;font-weight:600;color:var(--ink);max-width:200px;cursor:pointer}
  .map-certainty{display:inline-flex;align-items:center;gap:8px;margin-left:auto;font-size:var(--t-14);font-weight:500;cursor:pointer}
  .map-certainty input{accent-color:var(--primary);width:18px;height:18px}
  .map-workbench{display:grid;grid-template-columns:minmax(0,1fr) 340px;border-radius:var(--r-xl);overflow:hidden;background:var(--surface);box-shadow:var(--sh-2)}
  .map-stage{position:relative;overflow:hidden;height:clamp(460px,calc(100dvh - 330px),820px);background:var(--map-sea);isolation:isolate;min-width:0;user-select:none;-webkit-user-select:none}
  .map-stage:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
  .map-canvas,.map-markers{position:absolute;width:100%;height:100%;inset:0}
  .map-canvas{z-index:0}
  .map-markers{pointer-events:none;z-index:2}
  .map-stage .maplibregl-canvas:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
  .map-stage .maplibregl-ctrl-bottom-left{bottom:42px;left:8px}
  .map-stage .maplibregl-ctrl-scale{font:500 12px/20px var(--font-text);color:var(--ink);border-color:var(--muted);background:rgba(255,255,255,.88);border-radius:0 0 3px 3px}
  .map-stage .maplibregl-cooperative-gesture-screen{font-family:var(--font-text);font-size:var(--t-16)}
  .map-node{position:absolute;width:44px;height:44px;transform:translate(-50%,-50%);padding:0;border:0;background:transparent;pointer-events:auto;z-index:1;color:var(--ink);overflow:visible;outline:0;cursor:pointer}
  .map-pin{position:absolute;display:grid;place-items:center;left:calc(22px - var(--pin-size)*.5);top:calc(22px - var(--pin-size)*.5);width:var(--pin-size);height:var(--pin-size);border-radius:50%;background:var(--pin-ring);box-shadow:0 0 0 3px rgba(255,255,255,.85),0 3px 8px rgba(43,33,27,.22)}
  .map-pin>span{display:grid;place-items:center;background:#fff;width:calc(100% - 7px);height:calc(100% - 7px);border-radius:50%;font:600 12px var(--font-text);color:var(--ink)}
  .map-node.uncertain .map-pin{outline:2px dashed var(--pin-color);outline-offset:3px}
  .map-node.selected,.map-node:focus-visible,.map-node:hover{z-index:5}
  .map-node.selected .map-pin,.map-node:focus-visible .map-pin,.map-node:hover .map-pin{box-shadow:0 0 0 5px rgba(255,255,255,.9),0 0 0 8px color-mix(in srgb,var(--pin-color) 35%,transparent),0 4px 12px rgba(43,33,27,.28)}
  .map-node.selected .map-pin>span{background:var(--pin-color);color:#fff}
  .map-pin-label{position:absolute;white-space:nowrap;background:rgba(255,255,255,.94);border-radius:var(--r-pill);padding:3px 9px;font:500 12px/19px var(--font-text);box-shadow:0 1px 4px rgba(43,33,27,.14);pointer-events:none;max-width:190px;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
  .map-area-heading{position:absolute;z-index:3;top:16px;left:16px;pointer-events:none;max-width:calc(100% - 100px);background:rgba(255,255,255,.92);padding:10px 16px;border-radius:var(--r-m);box-shadow:var(--sh-1);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
  .map-area-heading>span{font:600 12px/1.3 var(--font-text);letter-spacing:.08em;color:var(--muted);display:block;margin-bottom:3px}
  .map-area-heading b{font-weight:600;color:var(--ink)}
  .map-area-heading>strong{font:400 22px/1.15 var(--font-display);color:var(--ink)}
  .map-compass{position:absolute;z-index:3;right:20px;top:20px;display:grid;justify-items:center;color:var(--muted);font:600 12px var(--font-text);gap:2px;pointer-events:none}
  .map-compass svg{width:16px;height:24px;fill:var(--muted);stroke:none}
  .map-controls{position:absolute;z-index:4;right:14px;bottom:48px;display:flex;align-items:center;gap:2px;padding:4px;background:var(--surface);border-radius:var(--r-pill);box-shadow:var(--sh-2)}
  .map-controls button{min-width:36px;height:36px;border-radius:var(--r-pill);padding:0 10px;font:600 16px/1 var(--font-text);display:grid;place-items:center}
  .map-controls button[data-map-fit]{font-size:var(--t-14);padding:0 12px}
  .map-controls button:hover{background:var(--surface-2)}
  .map-controls button:disabled{opacity:.38;cursor:default}
  .map-controls .icon{width:18px;height:18px}
  .map-credit{position:absolute;z-index:4;right:0;bottom:0;max-width:100%;font-size:11px;line-height:1.5;background:rgba(255,255,255,.94);padding:4px 10px;border-top-left-radius:var(--r-s);color:var(--muted);text-align:right;user-select:text;-webkit-user-select:text}
  .map-credit a{text-decoration:underline;text-decoration-color:var(--rule-strong);text-underline-offset:2px}
  .map-status{position:absolute;z-index:5;left:50%;top:50%;transform:translate(-50%,-50%);width:min(390px,calc(100% - 32px));padding:18px 20px;text-align:center;border-radius:var(--r-m);background:rgba(255,255,255,.96);box-shadow:var(--sh-2);user-select:text;-webkit-user-select:text}
  .map-status[hidden]{display:none}
  .map-status h2{font:400 var(--t-28)/1.1 var(--font-display);margin:0 0 10px}
  .map-status p{font-size:var(--t-14);line-height:1.5;margin:0}
  .map-status>div{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:14px}
  .map-status .button{font-size:var(--t-13);min-height:36px;padding:8px 12px}
  .map-status[data-state=offline]{top:auto;bottom:110px;left:16px;transform:none;text-align:left;max-width:360px;font-size:13px}
  .map-status[data-state=offline]>div{justify-content:flex-start}
  .map-blank{position:absolute;z-index:3;left:10%;right:10%;top:44%;text-align:center;padding:20px;background:rgba(255,255,255,.94);font:400 22px var(--font-display);border-radius:var(--r-m);box-shadow:var(--sh-2)}
  .map-blank[hidden]{display:none}
  .map-panel{display:flex;flex-direction:column;min-width:0;border-left:1px solid var(--rule);max-height:clamp(460px,calc(100dvh - 330px),820px)}
  .map-search{padding:14px 16px;border-bottom:1px solid var(--rule);display:flex;gap:8px;flex-shrink:0}
  .map-search input{min-width:0;width:100%;height:42px;border:1px solid transparent;background:var(--surface-2);border-radius:var(--r-pill);padding:0 16px;font-size:var(--t-14)}
  .map-search input:focus{outline:none;background:var(--surface);border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 22%,transparent)}
  .map-search button{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;color:var(--ink)}
  .map-search button:hover{background:var(--surface-2)}
  .map-panel-body{padding:20px;overflow:auto;scrollbar-width:thin;flex:1;overscroll-behavior:contain}
  .map-panel h2{font-size:var(--t-28);margin:8px 0 10px;overflow-wrap:anywhere}
  .map-panel p{font-size:var(--t-15);line-height:1.55;color:var(--muted);margin:8px 0 16px}
  .map-date-range{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:16px 0 20px}
  .map-date-range b{font:400 26px var(--font-display);color:var(--ink)}
  .map-date-range>span{height:2px;background:var(--rule-strong);flex:1;position:relative;border-radius:2px}
  .map-date-range small{width:100%;font-size:12px;color:var(--muted)}
  .map-family-cards{display:grid;gap:8px}
  .map-family-card{display:flex;align-items:center;gap:12px;text-align:left;width:100%;padding:12px 14px;border-radius:var(--r-m);background:var(--bg);border:1.5px solid transparent;transition:background .15s}
  .map-family-card:hover{background:var(--surface-2)}
  .map-family-card>span:nth-child(2){flex:1;min-width:0}
  .map-family-card b{font:400 20px/1.1 var(--font-display);display:block;color:var(--ink)}
  .map-family-card small{font-size:13px;color:var(--muted);display:block;margin-top:2px}
  .map-family-card.active{background:color-mix(in srgb,var(--family-color) 12%,var(--surface));border-color:var(--family-color)}
  .map-family-dot{width:12px;height:12px;background:var(--family-color);border-radius:50%;flex-shrink:0;box-shadow:0 0 0 3px color-mix(in srgb,var(--family-color) 22%,transparent)}
  .map-family-card>span:last-child{color:var(--muted)}
  .map-place-list,.map-unlocated,.map-connection-list{margin-top:20px;border-top:1px solid var(--rule);padding-top:12px}
  .map-connection-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;text-align:left;width:100%;padding:10px 0;border-bottom:1px solid var(--rule);font-size:var(--t-13);line-height:1.45}
  .map-connection-row>span{overflow-wrap:anywhere}
  .map-connection-row small{color:var(--muted);white-space:nowrap}
  .map-connection-row:hover{color:var(--primary)}
  .map-panel p.map-connection-note{font-size:var(--t-13);padding:10px 12px;background:var(--surface-2);border-radius:var(--r-s)}
  .map-panel summary{font-weight:600;cursor:pointer;margin-bottom:6px}
  .map-panel summary>span{float:right;color:var(--muted);font-weight:500}
  .map-place-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;margin:0 -10px;width:calc(100% + 20px);border-radius:var(--r-s);text-align:left;font-weight:500}
  .map-place-row:hover{background:var(--surface-2)}
  .map-place-row b{font-size:12px;color:var(--muted);background:var(--surface-2);padding:3px 8px;border-radius:var(--r-pill);font-weight:600}
  .map-person-link{display:grid;grid-template-columns:minmax(0,1fr) auto;text-align:left;width:100%;padding:12px 0;border-bottom:1px solid var(--rule);gap:3px 10px}
  .map-person-link b{font:400 20px/1.1 var(--font-display);overflow-wrap:anywhere}
  .map-person-link small{grid-column:1;font-size:13px;color:var(--muted)}
  .map-person-link>span{grid-column:2;grid-row:1/3;align-self:center;color:var(--muted)}
  .map-person-link:hover b{color:var(--primary)}
  .map-place-event{padding:8px 0 6px;font-size:13px}
  .map-place-event>span:first-child{display:block;margin-bottom:4px;color:var(--muted)}
  .map-source{display:block;font-size:13px;color:var(--muted);margin-top:6px;text-decoration:underline;text-decoration-color:var(--rule-strong);text-underline-offset:3px;overflow-wrap:anywhere}
  .map-source:hover{color:var(--ink)}
  .map-evidence{display:inline-flex;align-items:center;height:22px;font:600 12px/1 var(--font-text);padding:0 9px;border-radius:var(--r-pill);background:var(--cert-doc-bg);color:var(--cert-doc)}
  .map-evidence.uncertain{background:var(--cert-fam-bg);color:var(--cert-fam)}
  .map-back{display:inline-flex;font-weight:500;color:var(--muted);margin:0 0 16px;padding:6px 10px;margin-left:-10px;border-radius:var(--r-pill)}
  .map-back:hover{background:var(--surface-2);color:var(--ink)}
  .map-profile{color:var(--primary);font-weight:600;text-decoration:none}
  .map-panel p.map-place-meta{font-size:13px;margin:0 0 16px}
  .map-panel .map-precision{font-size:13px;padding:10px 12px;background:var(--cert-fam-bg);color:var(--cert-fam);border-radius:var(--r-s)}
  .map-coordinate-source{margin-top:20px}
  .map-timeline{list-style:none;padding:0 0 0 6px;margin-top:20px}
  .map-timeline li{border-left:2px solid var(--rule);padding:0 0 22px 18px;position:relative}
  .map-timeline li::before{content:'';position:absolute;width:10px;height:10px;background:var(--primary);border-radius:50%;top:3px;left:-6px;box-shadow:0 0 0 3px var(--surface)}
  .map-timeline li:last-child{border-color:transparent}
  .map-event-date{font:600 13px var(--font-text);color:var(--primary)}
  .map-timeline h3{font:400 22px/1.1 var(--font-display);margin:4px 0}
  .map-inline-place{font-weight:500;color:var(--ink);text-decoration:underline;text-decoration-color:var(--rule-strong);text-underline-offset:3px;display:block;text-align:left;margin:4px 0 8px}
  .map-timeline p{font-size:13px;margin:8px 0}
  .map-family-connection{border-top:1px solid var(--rule);padding:14px 0;display:grid;gap:4px;font:400 19px/1.2 var(--font-display)}
  .map-family-connection>span,.map-family-connection>small{font:500 13px/1.4 var(--font-text);color:var(--muted)}
  .map-key{display:flex;align-items:center;flex-wrap:wrap;gap:10px 22px;font-size:var(--t-13);color:var(--muted);padding:16px 4px}
  .map-key>span{display:flex;gap:8px;align-items:center}
  .map-key-line{width:26px;border-top:2.5px solid var(--lin-micalo)}
  .map-key-line.uncertain{border-top-style:dashed;border-color:var(--cert-fam)}
  .map-key-line.timeline{border-top-style:dotted;border-color:var(--ink)}
  .map-key-line.journey{border-color:var(--primary);position:relative}
  .map-key-line.journey::after{content:'';position:absolute;right:-1px;top:-5px;border-left:7px solid var(--primary);border-top:4px solid transparent;border-bottom:4px solid transparent}
  .map-key-dot{display:inline-block;width:12px;height:12px;border:3px solid var(--lin-duran);border-radius:50%;background:#fff}
  .map-key-help{margin-left:auto}
  .map-method{background:var(--surface);border-radius:var(--r-l);box-shadow:var(--sh-1);padding:4px 22px;color:var(--muted)}
  .map-method summary{cursor:pointer;padding:14px 0;font-weight:600;color:var(--ink)}
  .map-method p{max-width:880px;margin:0 0 12px;line-height:1.6}
  .map-expanded{position:fixed;inset:12px;z-index:150;box-shadow:0 0 0 40px rgba(43,33,27,.45),var(--sh-3);grid-template-columns:minmax(0,1fr) 360px}
  .map-expanded .map-stage,.map-expanded .map-panel{height:calc(100dvh - 24px);max-height:calc(100dvh - 24px)}
  .map-loading{min-height:460px;display:grid;place-content:center;gap:12px;text-align:center;padding:40px;background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--sh-1);font:400 24px/1.3 var(--font-display);color:var(--muted)}
  .map-loading p{font:400 var(--t-15)/1.5 var(--font-text)}
  @media(max-width:1150px){
    .map-workbench{grid-template-columns:minmax(0,1fr) 300px}
    .map-certainty{margin-left:0}
    .map-key-help{margin-left:0}
  }
  @media(max-width:850px){
    .map-workbench{grid-template-columns:minmax(0,1fr);border-radius:var(--r-l)}
    .map-stage{height:min(56dvh,520px);min-height:320px}
    .map-panel{border-left:0;border-top:1px solid var(--rule);max-height:min(60dvh,640px);min-height:220px}
    .map-panel::before{content:'';display:block;width:34px;height:4px;margin:9px auto 0;border-radius:4px;background:var(--rule-strong);flex-shrink:0}
    .map-panel-body{overflow:auto;min-height:0}
    .map-expanded{inset:6px;grid-template-rows:54% minmax(0,1fr);height:calc(100dvh - 12px)}
    .map-expanded .map-stage{height:100%;min-height:0;max-height:none}
    .map-expanded .map-panel{height:100%;min-height:0;max-height:none;overflow:hidden}
    .map-expanded .map-panel-body{overflow:auto}
    .map-area-heading{top:10px;left:10px;padding:8px 12px}
    .map-area-heading>strong{font-size:19px}
  }
  @media(max-width:600px){
    .map-heading{gap:14px}
    .map-totals{width:100%}
    .map-totals>span{flex:1;min-width:0;padding:8px 10px}
    .map-totals b{font-size:28px}
    .map-toolbar{display:grid;grid-template-columns:1fr;gap:8px}
    .map-mode{display:flex}
    .map-mode button{flex:1}
    .map-family-label,.map-generation-label{justify-content:space-between}
    .map-toolbar select{max-width:62%}
    .map-certainty{padding:4px 2px}
    .map-compass{right:12px;top:14px}
    .map-controls{right:8px;bottom:52px}
    .map-controls button{min-width:38px;height:38px}
    .map-stage .maplibregl-ctrl-bottom-left{left:2px;bottom:45px}
    .map-credit{font-size:10px;padding:4px 8px;max-width:100%}
    .map-area-heading>strong{max-width:230px}
    .map-pin-label{font-size:12px}
    .map-key{gap:8px 14px}
    .map-key-help{width:100%}
  }
}
