/* Controles uniformes y fichas compactas — Legalexbo. */
.portal-dock { align-items:stretch; }
.master-nav,.master-nav:first-child,.master-nav:nth-child(3) { min-height:108px; padding:20px 22px; display:flex; flex-direction:row; align-items:center; justify-content:flex-start; gap:16px; text-align:left; }
.master-nav strong { font-size:1.125rem; font-weight:750; line-height:1.35; }
.master-nav small { font-size:.875rem; line-height:1.4; }
.master-nav svg { width:30px; height:30px; flex:0 0 30px; }
.quick-links { display:flex; flex-wrap:wrap; justify-content:center; gap:9px; margin:17px 0 0; }
.quick-links a { padding:9px 14px; min-height:40px; background:#ffffff85; border:1px solid #adbdd1; border-radius:999px; color:#1c477d; font-size:.875rem; font-weight:650; text-decoration:none; }
.quick-links a:hover { background:#fff; border-color:#326bb4; }
.node-menu-panel { left:0; width:300px; max-width:calc(100vw - 28px); padding:12px; gap:4px; background:#f7f9fc; color:#18345e; border:1px solid #bacbdf; border-radius:17px; box-shadow:0 16px 42px #172d4f38; }
.node-menu-panel::before,.node-menu-panel a::before,.node-menu-panel a::after { content:none; display:none; }
.node-menu-panel p { padding:10px 11px 14px; margin:0 0 4px; border-bottom:1px solid #d7e0ec; color:#102878; font-size:1.05rem; letter-spacing:0; text-transform:none; }
.node-menu-panel p span { display:block; margin-top:3px; color:#61728a; font-size:.8125rem; font-weight:500; }
.node-menu-panel a { display:flex; align-items:center; min-height:48px; padding:12px; color:#203c63; border:1px solid transparent; border-radius:10px; font-size:1rem; font-weight:650; }
.node-menu-panel a:hover,.node-menu-panel a:focus-visible { color:#123f91; background:#e2ebf8; border-color:#c8d9ef; }
.node-menu-panel a[aria-current="page"] { background:#193b78; color:white; }
.catalog-workspace { min-width:0; }
.catalog-search { margin:0 0 20px; }
.catalog-search label { display:block; margin:0 0 8px; color:#264267; font-size:.9375rem; font-weight:700; }
.catalog-search-field { display:flex; gap:8px; padding:5px; background:#f9fbfe; border:1px solid #9eb4cf; border-radius:13px; }
.catalog-search-field:focus-within { outline:3px solid #236ada26; border-color:#3975c5; }
.catalog-search input { width:100%; min-width:0; min-height:44px; padding:8px 10px; color:#18375d; border:0; outline:0; background:transparent; font-size:1rem; }
.catalog-search button { border:0; border-radius:9px; padding:8px 12px; color:#fff; background:#244f91; font-size:.875rem; }
.catalog-search button[hidden] { display:none; }
.catalog-search p { margin:9px 0 0; color:#455f7f; font-size:.875rem; }
.group-grid,.family-grid { padding:3px 2px 9px; gap:14px; scrollbar-width:none; scroll-snap-type:x proximity; }
.group-grid::-webkit-scrollbar,.family-grid::-webkit-scrollbar { display:none; }
.group-grid .card,.family-grid .family-card { flex:0 0 288px; }
.carousel-controls { margin:4px 2px 0; padding:10px 13px 9px; color:#234774; background:#cfdbeb; border:1px solid #aabed8; border-radius:12px; }
.carousel-controls[hidden] { display:none; }
.carousel-control-caption { display:flex; justify-content:space-between; align-items:center; gap:10px; font-size:.8125rem; }
.carousel-control-caption output { color:#15386b; font-weight:800; font-variant-numeric:tabular-nums; }
.carousel-range { --progress:0%; appearance:none; -webkit-appearance:none; display:block; width:100%; height:30px; padding:0; margin:3px 0; background:transparent; cursor:ew-resize; }
.carousel-range::-webkit-slider-runnable-track { height:6px; background:linear-gradient(to right,#145ecc var(--progress),#91aacb var(--progress)); border-radius:9px; }
.carousel-range::-moz-range-track { height:6px; background:#91aacb; border-radius:9px; }
.carousel-range::-moz-range-progress { height:6px; background:#145ecc; border-radius:9px; }
.carousel-range::-webkit-slider-thumb { appearance:none; -webkit-appearance:none; width:44px; height:14px; margin-top:-4px; background:#123b83; border:2px solid #e8f2ff; border-radius:5px; box-shadow:0 2px 4px #17386430; }
.carousel-range::-moz-range-thumb { width:40px; height:10px; background:#123b83; border:2px solid #e8f2ff; border-radius:5px; box-shadow:0 2px 4px #17386430; }
.carousel-range:focus-visible { outline:2px solid #1b64c9; outline-offset:2px; border-radius:6px; }
.carousel-step-buttons { display:flex; justify-content:space-between; gap:10px; }
.carousel-step-buttons button { min-height:36px; padding:5px 12px; color:#163f7e; border:1px solid #9cb4d3; border-radius:7px; background:#eaf1fa; font-size:.875rem; font-weight:650; }
.carousel-step-buttons button:disabled { opacity:.4; cursor:default; }
.carousel-step-buttons button:hover:not(:disabled) { color:white; background:#245aa5; }
.card { border-radius:14px; }
.card-media { display:block; width:100%; height:190px; aspect-ratio:auto; padding:0; border:0; border-bottom:1px solid #ccd8e8; background:linear-gradient(125deg,#1b2f54,#334d72); }
.card-media > img { width:100%; height:100%; object-fit:contain; object-position:center; }
.card-media:focus-visible { outline-offset:-4px; }
.card-body { padding:13px 15px 15px; }
.card-top { align-items:center; gap:8px; }
.category-tag { font-size:.75rem; line-height:1.3; }
.item-number { flex-shrink:0; min-width:42px; padding:3px 7px; font-size:.8125rem; }
.card h3 { margin:10px 0 0; font-size:1.0625rem; line-height:1.35; }
.card-title-button { padding:0; border:0; background:transparent; color:inherit; text-align:left; font:inherit; font-weight:750; }
.card-title-button:hover { color:#155cb5; text-decoration:underline; text-underline-offset:3px; }
.source-row { display:flex; flex-direction:column; align-items:stretch; gap:10px; margin-top:11px; padding-top:11px; }
.source { font-size:.875rem; line-height:1.4; }
.source-actions { display:flex; gap:8px; }
.source-icon { display:flex; flex:1; gap:7px; width:auto; min-height:40px; padding:7px 10px; justify-content:center; text-decoration:none; font-size:.875rem; font-weight:700; border-radius:9px; }
.tiktok-icon { color:white; }
.source-icon svg,.tiktok-icon img { width:19px; height:19px; }
.precedent-trigger { top:10px; right:10px; width:44px; height:44px; border-radius:11px; background:#102f70f2; border:1px solid #a8c6f0; box-shadow:0 3px 10px #15294955; }
.precedent-trigger img { width:34px; height:34px; filter:none; }
.precedent-trigger:hover { transform:translateY(-1px); }
.card-cover-fallback { padding:20px; }
.card-cover-fallback strong { font-size:1.2rem; line-height:1.2; }
.card-cover-fallback small { font-size:.8125rem; }
.family-card-media { aspect-ratio:auto; min-height:190px; height:190px; padding:21px; }
.family-card-media strong { font-size:1.45rem; }
.family-card-body { min-height:0; padding:15px; }
.family-grid article h3 { margin:12px 0 8px; font-size:1.0625rem; }
.family-card-body p { font-size:.9375rem; }
.detail-source-links { display:flex; gap:9px; flex-wrap:wrap; margin:13px 0 15px; }
.detail-source-links a { padding:9px 12px; min-height:40px; background:#e6edf8; border:1px solid #afc5e2; border-radius:8px; color:#18478c; text-decoration:none; font-size:.875rem; font-weight:700; }
.detail-source-links a[hidden] { display:none; }
.resources-section { max-width:1260px; margin:0 auto; padding:38px 32px; scroll-margin-top:90px; }
.resources-section h2 { color:#19345d; font-size:clamp(1.7rem,3vw,2.4rem); }
.resource-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:25px; }
.resource-card { align-self:start; background:#eaf0f8; border:1px solid #a8bdd7; border-radius:15px; overflow:hidden; }
.resource-card summary { display:flex; flex-direction:column; align-items:flex-start; padding:24px; list-style:none; cursor:pointer; }
.resource-card summary::-webkit-details-marker { display:none; }
.resource-card summary strong { color:#193a6f; font-size:1.2rem; line-height:1.3; margin-top:15px; }
.resource-status { color:#526a88; background:#dae4f1; padding:5px 9px; border:1px solid #b5c5db; border-radius:6px; font-size:.75rem; font-weight:700; }
.resource-summary { color:#526782; margin-top:7px; font-size:.9375rem; }
.resource-detail-label { margin-top:20px; color:#1c58a8; font-size:.875rem; font-weight:700; text-decoration:underline; text-underline-offset:4px; }
.resource-card p { padding:20px 24px; margin:0; border-top:1px solid #b8c9df; color:#3b5678; font-size:1rem; }
.resource-card[open] { border-color:#5682bb; background:#f3f7fc; }
@media(max-width:720px) {
 .portal-dock { grid-template-columns:1fr; gap:10px; }
 .master-nav,.master-nav:first-child,.master-nav:nth-child(3) { grid-column:auto; min-height:84px; padding:17px 20px; flex-direction:row; align-items:center; justify-content:flex-start; gap:16px; }
 .master-nav strong { font-size:1.125rem; }.master-nav small { font-size:.875rem; }.master-nav svg { width:28px; height:28px; flex-basis:28px; }
 .quick-links { gap:7px; }.quick-links a { padding:8px 11px; }
 .node-menu-panel { left:-52px; width:min(310px,calc(100vw - 28px)); }
 .group-grid,.family-grid { padding-right:15px; gap:12px; }
 .group-grid .card,.family-grid .family-card { flex-basis:min(79vw,288px); }
 .card-media { height:180px; }.card-body { padding:12px 14px 14px; }
 .family-card-media { height:180px; min-height:180px; }
 .catalog-search { margin-bottom:17px; }.catalog-search input { font-size:1rem; }
 .resources-section { padding:30px 16px; }.resource-grid { grid-template-columns:1fr; gap:12px; }
 .resource-card summary { padding:21px; }.resource-card p { padding:18px 21px; }
}
