:root {
    --c-bg:#f5f6f8; --c-surface:#fff; --c-surface-2:#f0f3f7; --c-text:#17212e; --c-muted:#5b6778; --c-border:#dde2e9;
    --c-primary:#0b3b62; --c-primary-dark:#032d4e; --c-primary-soft:#e7eff6; --c-accent:#3c7ba5; --c-accent-light:#9cc4e2;
    --c-error:#b42318; --c-ok:#1b7f3b;
    --radius:12px; --shadow-sm:0 1px 2px rgba(16,24,40,.05); --shadow-md:0 10px 28px -12px rgba(16,24,40,.22);
    --font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
* { box-sizing: border-box; }
body { margin:0; font-family:var(--font); background:var(--c-bg); color:var(--c-text); line-height:1.55; -webkit-font-smoothing:antialiased; }
h1, h2, h3 { letter-spacing:-.015em; line-height:1.2; }
a { color:var(--c-primary); }
.site-header { background:#fff; border-bottom:1px solid var(--c-border); padding:.85rem max(1rem, calc((100% - 1120px) / 2 + 1rem)); display:flex; justify-content:space-between; align-items:center; position:sticky; top:0; z-index:10; }
.brand { display:inline-flex; align-items:center; gap:.7rem; color:var(--c-primary-dark); text-decoration:none; }
.brand-mark { height:34px; width:auto; }
.brand-text { display:flex; flex-direction:column; line-height:1.15; padding-left:.7rem; border-left:1px solid var(--c-border); }
.brand-text strong { font-size:1rem; font-weight:750; letter-spacing:.01em; }
.brand-text small { font-size:.75rem; color:var(--c-muted); font-weight:500; }
.login-logo { display:block; width:220px; max-width:70%; height:auto; margin:0 auto 1.25rem; }
.container { max-width:1120px; margin:0 auto; padding:1.5rem 1rem 3rem; }
.card { background:#fff; border:1px solid var(--c-border); border-radius:8px; padding:1.5rem; }
.narrow { max-width:420px; margin:2rem auto; }
label { display:block; margin:1rem 0 .25rem; font-weight:600; }
input[type=text], input[type=tel], input[type=password], input[type=email] { width:100%; padding:.6rem; border:1px solid var(--c-border); border-radius:6px; font:inherit; }
small { color:#52606d; }
.btn { margin-top:1.25rem; background:var(--c-primary); color:#fff; border:0; border-radius:6px; padding:.65rem 1.2rem; font:inherit; cursor:pointer; }
.btn:hover { filter:brightness(1.1); }
.inline { display:inline; margin:0; }
.link-button { background:none; border:0; color:var(--c-primary); cursor:pointer; font:inherit; text-decoration:underline; padding:0; }
.alert { padding:.7rem 1rem; border-radius:6px; margin:0 0 1rem; border:1px solid; }
.alert-error { color:var(--c-error); background:#fef3f2; border-color:#fda29b; }
.alert-success { color:var(--c-ok); background:#ecfdf3; border-color:#a6e4bd; }
.alert-info { color:var(--c-primary); background:#eef5fb; border-color:#b7d2e8; }
.admin-nav { display:flex; gap:1rem; margin-bottom:1.5rem; border-bottom:1px solid var(--c-border); }
.admin-nav a { padding:.5rem .25rem; color:var(--c-text); text-decoration:none; border-bottom:3px solid transparent; }
.admin-nav a[aria-current=page] { border-color:var(--c-primary); font-weight:600; }
.page-head { display:flex; justify-content:space-between; align-items:center; gap:1rem; }
.page-head .btn { margin-top:0; text-decoration:none; }
.stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:1rem; }
.stats .card { display:flex; flex-direction:column; }
.stats strong { font-size:2rem; color:var(--c-primary); }
.table-wrap { overflow-x:auto; }
table { width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--c-border); }
th, td { padding:.6rem .75rem; text-align:left; border-bottom:1px solid var(--c-border); vertical-align:top; }
th { background:#eef1f5; font-size:.85rem; }
.actions { white-space:nowrap; }
.actions > * { margin-right:.75rem; }
.filters { display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1rem; }
.filters input[type=text] { flex:1 1 260px; }
.filters select { padding:.6rem; border:1px solid var(--c-border); border-radius:6px; font:inherit; }
.filters .btn { margin-top:0; }
.field-error { display:block; color:var(--c-error); }
.check { display:flex; align-items:center; gap:.5rem; font-weight:400; }
.danger { color:var(--c-error); }
.card + .card { margin-top:1.5rem; }
fieldset { border:0; padding:0; margin:0 0 1.5rem; }
fieldset.card { padding:1.25rem 1.5rem; }
legend { font-weight:700; font-size:1.1rem; padding:0 .25rem; }
textarea, input[type=url], input[type=file] { width:100%; padding:.6rem; border:1px solid var(--c-border); border-radius:6px; font:inherit; background:#fff; }
.grid-2 { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:0 1rem; }
.lang-tabbar { display:flex; gap:.25rem; border-bottom:1px solid var(--c-border); margin-bottom:.5rem; }
.lang-tabbar button { background:none; border:1px solid transparent; border-bottom:0; padding:.5rem 1rem; font:inherit; cursor:pointer; border-radius:6px 6px 0 0; }
.lang-tabbar button[aria-selected=true] { background:#fff; border-color:var(--c-border); font-weight:600; margin-bottom:-1px; }
.lang-tabbar button.has-error { color:var(--c-error); }
.lang-panel[hidden] { display:none; }
.tag-picker { display:flex; flex-wrap:wrap; gap:.5rem; margin:.5rem 0; }
.tag-option { display:inline-flex; align-items:center; gap:.35rem; margin:0; font-weight:400; padding:.25rem .6rem; border:1px solid var(--c-border); border-radius:999px; background:#fff; cursor:pointer; }
.logo-sm { max-width:120px; max-height:120px; object-fit:contain; }
.company-summary { display:flex; gap:1.5rem; align-items:flex-start; }
.form-actions { display:flex; gap:1rem; align-items:center; }
a.btn { display:inline-block; text-decoration:none; }
.lang-switch { margin-left:auto; margin-right:1rem; font-size:.85rem; }
.lang-switch a { color:var(--c-text); text-decoration:none; margin:0 .25rem; }
.lang-switch a[aria-current] { font-weight:700; color:var(--c-primary); }
.nav-link { margin-left:1.25rem; color:var(--c-text); text-decoration:none; font-weight:600; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
[aria-busy=true] { opacity:.5; transition:opacity .15s; }
.impersonation-bar { background:#fff4e5; border-bottom:2px solid #f0a020; padding:.6rem 1rem; display:flex; gap:1rem; align-items:center; flex-wrap:wrap; }
.impersonation-bar .btn { margin-top:0; }
.btn-light { background:#fff; color:var(--c-text); border:1px solid var(--c-border); }
.btn-danger { background:var(--c-error); }
select { padding:.6rem; border:1px solid var(--c-border); border-radius:6px; font:inherit; width:100%; background:#fff; }
.filters select { width:auto; }

/* ---------- Componentes comunes ---------- */
.icon { width:1.1em; height:1.1em; flex:none; vertical-align:-.15em; }
.muted { color:var(--c-muted); }
.tag { display:inline-block; padding:.15rem .6rem; border-radius:999px; background:var(--c-primary-soft); color:var(--c-primary); font-size:.8rem; font-weight:550; line-height:1.5; }
.tag-list { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:.35rem; }
.tag-more { background:var(--c-surface-2); color:var(--c-muted); }
.monogram { display:flex; align-items:center; justify-content:center; width:100%; height:100%; font-size:2.25rem; font-weight:700; color:var(--c-primary); background:linear-gradient(135deg, var(--c-primary-soft), #dfe7f2); }
.alert-icon { display:flex; gap:.6rem; align-items:flex-start; }
.alert-icon .icon { margin-top:.2rem; }

/* ---------- Directorio: cabecera y buscador ---------- */
.dir-hero { position:relative; overflow:hidden; background:linear-gradient(135deg, var(--c-primary-dark) 0%, var(--c-primary) 100%); color:#fff; border-radius:16px; padding:2.5rem 2.5rem 2rem; margin-bottom:2rem; }
.dir-hero::after { content:""; position:absolute; right:-30px; bottom:-40px; width:440px; height:222px; background:url(../img/logo-watermark.png) no-repeat center / contain; pointer-events:none; }
.dir-hero > * { position:relative; z-index:1; }
.eyebrow { margin:0 0 .5rem; font-size:.78rem; font-weight:650; letter-spacing:.12em; text-transform:uppercase; color:var(--c-accent-light); }
.dir-hero h1 { margin:0; font-size:clamp(1.75rem, 3.5vw, 2.4rem); font-weight:750; }
.dir-hero-sub { margin:.5rem 0 1.75rem; max-width:40rem; color:rgba(255,255,255,.78); font-size:1.05rem; }
.directory-filters { margin:0; }
.search-box { display:flex; align-items:center; gap:.5rem; background:#fff; border-radius:12px; padding:.4rem .4rem .4rem 1rem; box-shadow:0 12px 30px -10px rgba(0,0,0,.35); max-width:720px; }
.search-box:focus-within { outline:3px solid rgba(156,196,226,.75); outline-offset:2px; }
.search-icon { color:var(--c-muted); width:1.25rem; height:1.25rem; }
.search-box input[type=search] { flex:1; min-width:0; border:0; outline:0; padding:.6rem .25rem; font:inherit; font-size:1rem; color:var(--c-text); background:transparent; }
.search-submit { margin:0; border-radius:9px; padding:.65rem 1.4rem; font-weight:600; }
.tag-filter { margin:1.5rem 0 0; }
.tag-filter legend { font-size:.8rem; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:rgba(255,255,255,.65); padding:0; margin-bottom:.6rem; }
.chip-list { display:flex; flex-wrap:wrap; gap:.5rem; }
.chip { position:relative; margin:0; font-weight:500; font-size:.9rem; cursor:pointer; }
.chip input { position:absolute; opacity:0; pointer-events:none; }
.chip span { display:inline-block; padding:.35rem .9rem; border-radius:999px; border:1px solid rgba(255,255,255,.28); color:#fff; background:rgba(255,255,255,.06); transition:background .15s, border-color .15s, color .15s; }
.chip:hover span { background:rgba(255,255,255,.14); border-color:rgba(255,255,255,.5); }
.chip input:checked + span { background:#fff; color:var(--c-primary-dark); border-color:#fff; font-weight:600; }
.chip input:focus-visible + span { outline:2px solid var(--c-accent-light); outline-offset:2px; }

/* ---------- Directorio: resultados ---------- */
.results-bar { display:flex; justify-content:space-between; align-items:center; gap:1rem; margin:0 0 1rem; min-height:2rem; }
.result-count { margin:0; color:var(--c-muted); font-weight:550; }
.clear-link { display:inline-flex; align-items:center; gap:.3rem; font-size:.9rem; font-weight:550; text-decoration:none; }
.clear-link:hover { text-decoration:underline; }
.company-grid { list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:1.25rem; }
.company-card { position:relative; display:flex; flex-direction:column; background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-sm); transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.company-card:hover { transform:translateY(-3px); box-shadow:var(--shadow-md); border-color:#c6d2e2; }
.company-card:focus-within { outline:3px solid rgba(11,59,98,.35); outline-offset:2px; }
.company-card-logo { height:170px; display:flex; align-items:center; justify-content:center; padding:10px 14px; background:#fff; border-bottom:1px solid var(--c-border); }
.company-card-logo:has(.monogram) { background:var(--c-surface-2); }
.company-card-logo img { width:100%; height:100%; object-fit:contain; }
.company-card-logo .monogram { width:84px; height:84px; border-radius:18px; font-size:2.2rem; background:#fff; border:1px solid var(--c-border); box-shadow:var(--shadow-sm); }
.company-card-body { flex:1; display:flex; flex-direction:column; gap:.5rem; padding:1.15rem 1.25rem .75rem; }
.company-card h2 { margin:0; font-size:1.1rem; font-weight:680; }
.company-card h2 a { color:var(--c-text); text-decoration:none; }
.stretched-link::after { content:""; position:absolute; inset:0; z-index:1; }
.stretched-link:focus { outline:0; }
.company-card-city { display:flex; align-items:center; gap:.3rem; margin:0; font-size:.88rem; color:var(--c-muted); }
.company-card-desc { margin:0; font-size:.93rem; color:#3b4656; display:-webkit-box; -webkit-line-clamp:3; line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.company-card .tag-list { margin-top:auto; padding-top:.35rem; }
.company-card-foot { display:flex; align-items:center; gap:.35rem; padding:.85rem 1.25rem; border-top:1px solid var(--c-border); font-size:.9rem; font-weight:600; color:var(--c-primary); }
.company-card-foot .icon { transition:transform .18s ease; }
.company-card:hover .company-card-foot .icon { transform:translateX(4px); }
.empty-state { text-align:center; padding:3.5rem 1.5rem; background:var(--c-surface); border:1px dashed var(--c-border); border-radius:var(--radius); color:var(--c-muted); }
.empty-state .empty-icon { width:2.5rem; height:2.5rem; color:#a7b1c0; }
.empty-state p { margin:.75rem 0 0; font-size:1.05rem; }
.empty-state .btn { margin-top:1.25rem; }

/* ---------- Paginacion ---------- */
.pagination { display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; justify-content:center; margin:2.5rem 0 0; }
.page-list { list-style:none; display:flex; gap:.35rem; margin:0; padding:0; }
.page-num, .page-step { display:inline-flex; align-items:center; justify-content:center; gap:.35rem; min-width:2.5rem; height:2.5rem; padding:0 .75rem; border-radius:9px; border:1px solid var(--c-border); background:var(--c-surface); color:var(--c-text); text-decoration:none; font-weight:550; font-size:.92rem; }
a.page-num:hover, .page-step:hover { border-color:var(--c-primary); color:var(--c-primary); }
.page-num[aria-current] { background:var(--c-primary); border-color:var(--c-primary); color:#fff; }
.page-gap { display:flex; align-items:center; padding:0 .25rem; color:var(--c-muted); }

/* ---------- Ficha de empresa ---------- */
.breadcrumb { margin:0 0 1.25rem; }
.breadcrumb a { display:inline-flex; align-items:center; gap:.4rem; font-size:.92rem; font-weight:550; color:var(--c-muted); text-decoration:none; }
.breadcrumb a:hover { color:var(--c-primary); }
.profile-head { position:relative; display:grid; grid-template-columns:auto 1fr auto; column-gap:1.5rem; align-items:end; background:var(--c-surface); border:1px solid var(--c-border); border-radius:16px; padding:0 2rem 1.75rem; box-shadow:var(--shadow-sm); overflow:hidden; }
.profile-head::before { content:""; grid-column:1 / -1; height:120px; margin:0 -2rem; background:url(../img/logo-watermark.png) no-repeat right 1.5rem bottom -14px / auto 150%, linear-gradient(135deg, var(--c-primary-dark), var(--c-primary)); }
.profile-logo { width:260px; height:180px; border-radius:16px; background:#fff; border:4px solid #fff; box-shadow:0 8px 24px -8px rgba(16,24,40,.28); margin-top:-90px; align-self:start; display:flex; align-items:center; justify-content:center; overflow:hidden; position:relative; }
.profile-logo img { width:100%; height:100%; padding:12px; object-fit:contain; }
.profile-logo .monogram { border-radius:12px; font-size:4rem; }
.profile-title { min-width:0; padding-top:1.25rem; }
.profile-title h1 { margin:0 0 .3rem; font-size:clamp(1.5rem, 3vw, 2.1rem); font-weight:750; overflow-wrap:anywhere; }
.profile-city { display:flex; align-items:center; gap:.35rem; margin:0 0 .7rem; color:var(--c-muted); }
.profile-actions { display:flex; flex-wrap:wrap; gap:.5rem; justify-content:flex-end; }
.profile-actions .btn { margin:0; display:inline-flex; align-items:center; gap:.45rem; font-weight:600; border-radius:9px; font-size:.93rem; }
.profile-body { display:grid; grid-template-columns:minmax(0, 1fr) 340px; gap:1.5rem; margin-top:1.5rem; align-items:start; }
.profile-main, .panel { background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--radius); padding:1.75rem 2rem; box-shadow:var(--shadow-sm); }
.panel { padding:1.5rem; }
.panel + .panel { margin-top:1rem; }
.profile-aside { position:sticky; top:5rem; }
.section-title { margin:0 0 1.1rem; font-size:.78rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--c-muted); display:flex; align-items:center; gap:.6rem; }
.section-title::before { content:""; width:18px; height:2px; background:var(--c-accent); }
.lead { margin:0 0 1.25rem; font-size:1.2rem; line-height:1.5; color:var(--c-text); font-weight:500; }
.description { color:#344054; font-size:1rem; line-height:1.75; max-width:68ch; }
.contact-list { margin:0; display:grid; gap:1rem; }
.contact-list > div { display:grid; gap:.15rem; padding-bottom:1rem; border-bottom:1px solid var(--c-surface-2); }
.contact-list > div:last-child { border-bottom:0; padding-bottom:0; }
.contact-list dt { display:flex; align-items:center; gap:.45rem; font-size:.8rem; font-weight:600; color:var(--c-muted); }
.contact-list dd { margin:0 0 0 1.55rem; overflow-wrap:anywhere; font-weight:500; }
.contact-list dd a { text-decoration:none; }
.contact-list dd a:hover { text-decoration:underline; }
.subtle-link { display:inline-flex; align-items:center; gap:.25rem; font-size:.85rem; font-weight:550; margin-top:.2rem; }
.social-list { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:.5rem; }
.social-list a { display:inline-flex; align-items:center; gap:.35rem; padding:.45rem .85rem; border:1px solid var(--c-border); border-radius:9px; color:var(--c-text); text-decoration:none; font-size:.9rem; font-weight:550; }
.social-list a .icon { width:.9em; height:.9em; color:var(--c-muted); }
.social-list a:hover { border-color:var(--c-primary); color:var(--c-primary); }

@media (max-width: 1080px) {
    .profile-head { grid-template-columns:auto 1fr; }
    .profile-actions { grid-column:1 / -1; justify-content:flex-start; margin-top:1.25rem; }
}
@media (max-width: 860px) {
    .profile-body { grid-template-columns:1fr; }
    .profile-aside { position:static; }
}
@media (max-width: 560px) {
    .site-header { flex-wrap:wrap; gap:.25rem .75rem; position:static; }
    .site-header .brand { flex-basis:100%; }
    .brand-mark { height:28px; }
    .site-header .nav-link { margin-left:0; }
    .dir-hero { padding:1.75rem 1.25rem 1.5rem; border-radius:12px; }
    .search-box { flex-wrap:wrap; padding:.4rem .4rem .4rem .9rem; }
    .search-submit { width:100%; }
    .profile-head { grid-template-columns:1fr; padding:0 1.25rem 1.5rem; }
    .profile-head::before { margin:0 -1.25rem; height:96px; }
    .profile-logo { width:220px; height:150px; margin-top:-75px; }
    .profile-title { padding-top:1rem; }
    .profile-actions .btn { flex:1 1 auto; justify-content:center; }
    .profile-main { padding:1.4rem 1.25rem; }
    .page-step span { display:none; }
}
@media (prefers-reduced-motion: reduce) {
    .company-card, .company-card-foot .icon { transition:none; }
    .company-card:hover { transform:none; }
}
