/* Login del sistema. Mismo lenguaje visual que la página pública. */
@font-face{font-family:"Geist";src:url("../fonts/landing/Geist-Variable.woff2") format("woff2");font-weight:100 900;font-display:swap}

:root{
  --bg:#f5f8f8; --bg-2:#ecf2f2; --surface:#ffffff; --ink:#0e1a1d; --muted:#51656b; --line:#d9e4e5;
  --accent:#0a8487; --accent-hover:#086f72; --accent-ink:#ffffff; --accent-soft:#dff2f2; --accent-text:#08696c;
  --shadow:0 1px 2px rgba(14,43,48,.06),0 12px 32px -12px rgba(14,43,48,.18);
  --shadow-lg:0 2px 4px rgba(14,43,48,.06),0 40px 80px -30px rgba(14,60,66,.35);
  --r-box:20px; --r-ctl:12px; --ease:cubic-bezier(.16,1,.3,1);
  --font:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#0a1114; --bg-2:#0e181c; --surface:#121d21; --ink:#e8f1f1; --muted:#93a8ad; --line:#1f3036;
  --accent:#2fc9cc; --accent-hover:#52d8da; --accent-ink:#03191a; --accent-soft:#0f2b2e; --accent-text:#58d7d9;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 12px 32px -12px rgba(0,0,0,.6);
  --shadow-lg:0 2px 4px rgba(0,0,0,.4),0 40px 80px -30px rgba(0,0,0,.8);
  color-scheme:dark;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{font-family:var(--font);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.5}
.lg{min-height:100vh;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
.lg-form{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2rem 1.25rem;position:relative}
.lg-box{width:100%;max-width:410px}
.lg-logo{display:block;height:68px;width:auto;margin-bottom:2.2rem}
.lg-logo.on-dark{display:none}
:root[data-theme="dark"] .lg-logo.on-light{display:none}
:root[data-theme="dark"] .lg-logo.on-dark{display:block}
.lg h1{font-size:2rem;font-weight:700;letter-spacing:-.02em;line-height:1.15}
.lg-sub{color:var(--muted);margin:.5rem 0 1.8rem}
.lg-err{margin-bottom:1.2rem;padding:.8rem 1rem;border-radius:12px;font-size:.92rem;background:color-mix(in srgb,#e5484d 12%,var(--surface));border:1px solid color-mix(in srgb,#e5484d 45%,var(--line));color:#c4292f}
:root[data-theme="dark"] .lg-err{color:#ff8e92}
.lg-f{margin-bottom:1.1rem}
.lg-f label{display:block;font-size:.88rem;font-weight:600;margin-bottom:.4rem}
.lg-in{position:relative}
.lg-in input[type=text],.lg-in input[type=password]{width:100%;padding:.85rem 1rem;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;transition:border-color .2s,box-shadow .2s}
.lg-in input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 20%,transparent)}
.lg-in input::placeholder{color:color-mix(in srgb,var(--muted) 70%,transparent)}
.lg-ojo{position:absolute;right:.55rem;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--muted);cursor:pointer;padding:.45rem;border-radius:8px;display:flex}
.lg-ojo:hover{color:var(--ink)}
.lg-ojo svg{width:20px;height:20px}
.lg-rec{display:flex;align-items:center;gap:.55rem;margin:.3rem 0 1.4rem;color:var(--muted);font-size:.92rem;cursor:pointer}
.lg-rec input{width:16px;height:16px;accent-color:var(--accent)}
.lg-btn{width:100%;padding:.9rem 1rem;border:0;border-radius:12px;background:var(--accent);color:var(--accent-ink);font:inherit;font-weight:600;cursor:pointer;transition:background .2s,transform .2s}
.lg-btn:hover{background:var(--accent-hover)}
.lg-btn:active{transform:translateY(1px)}
.lg-ayuda{margin-top:1.6rem;color:var(--muted);font-size:.9rem}
.lg-pie{position:absolute;bottom:1.2rem;left:0;right:0;text-align:center;color:var(--muted);font-size:.8rem}
.lg-tema{position:absolute;top:1.1rem;right:1.1rem;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow)}
.lg-tema svg{width:19px;height:19px}
.lg-tema .sol{display:none}
:root[data-theme="dark"] .lg-tema .sol{display:block}
:root[data-theme="dark"] .lg-tema .luna{display:none}
.lg-hero{position:relative;overflow:hidden;background:var(--bg-2);border-left:1px solid var(--line);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2rem}
.lg-hero::before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:44px 44px;opacity:.5;-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 75%);mask-image:radial-gradient(ellipse at center,#000 30%,transparent 75%)}
.lg-hero-in{position:relative;width:100%;max-width:560px;text-align:center}
.lg-hero h2{font-size:clamp(1.5rem,2.4vw,2.1rem);font-weight:700;letter-spacing:-.02em;line-height:1.2}
.lg-hero p{color:var(--muted);margin:.5rem auto 1.2rem;max-width:30em}
.lg-hero .mapa{max-width:520px;margin-inline:auto}
.lg-hero .mapa-svg{max-height:min(58vh,560px)}
@media (max-width:960px){.lg{grid-template-columns:1fr}.lg-hero{display:none}.lg-form{min-height:100vh}}
.mapa{--m-relleno-a:color-mix(in srgb,var(--accent) 26%,var(--surface));--m-relleno-b:color-mix(in srgb,var(--accent) 8%,var(--surface));
  position:relative;border:1px solid var(--line);border-radius:var(--r-box);background:var(--surface);padding:clamp(.5rem,2vw,1.2rem);overflow:hidden;box-shadow:var(--shadow-lg)}
.mapa::before{content:"";position:absolute;inset:0;background:radial-gradient(closest-side at 58% 64%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 72%);pointer-events:none}
.mapa-svg{position:relative;display:block;width:100%;height:auto;max-height:640px;margin-inline:auto;overflow:visible}
.m-grid{fill:none;stroke:var(--line);stroke-width:1;stroke-dasharray:2 7;opacity:.8}
.m-pais-fill{opacity:0;transition:opacity 1.2s var(--ease) .3s}
.mapa.in .m-pais-fill{opacity:1}
.m-deps path{fill:none;stroke:color-mix(in srgb,var(--accent) 38%,transparent);stroke-width:1.2;stroke-linejoin:round}
.m-pais-line{fill:none;stroke:var(--accent);stroke-width:2.4;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 0 7px color-mix(in srgb,var(--accent) 70%,transparent))}
.mapa.in .m-pais-line{animation:m-trazo 2.6s var(--ease) .2s forwards}
@keyframes m-trazo{to{stroke-dashoffset:0}}
.m-arco{fill:none;stroke:var(--accent);stroke-width:1.6;stroke-linecap:round;stroke-dasharray:5 9;opacity:0}
.mapa.in .m-arco{animation:m-aparece .8s ease calc(1.6s + var(--i) * .09s) forwards,m-fluye 2.4s linear calc(1.6s + var(--i) * .09s) infinite}
@keyframes m-aparece{to{opacity:.55}}
@keyframes m-fluye{to{stroke-dashoffset:-28}}
.m-pkt{fill:var(--accent-text);filter:drop-shadow(0 0 5px var(--accent));opacity:0}
.mapa.in .m-pkt{opacity:1;transition:opacity .6s ease 2.4s}
.m-ciudad{cursor:default;outline:none}
.m-punto{fill:var(--accent);stroke:var(--surface);stroke-width:2.2;opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(.2)}
.mapa.in .m-punto{animation:m-pop .6s var(--ease) calc(1.1s + var(--i) * .08s) forwards}
@keyframes m-pop{to{opacity:1;transform:scale(1)}}
.m-onda{fill:none;stroke:var(--accent);stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center}
.mapa.in .m-onda{animation:m-onda 3s ease-out calc(1.4s + var(--i) * .22s) infinite}
.mapa.in .m-onda2{animation-delay:calc(2.4s + var(--i) * .22s)}
@keyframes m-onda{0%{transform:scale(.4);opacity:.85}70%,100%{transform:scale(3.4);opacity:0}}
.m-capital .m-punto{fill:var(--accent-text);filter:drop-shadow(0 0 9px var(--accent))}
.m-capital .m-onda{stroke-width:2.6}
.m-nombre{font:600 21px var(--font);fill:var(--ink);paint-order:stroke;stroke:var(--surface);stroke-width:6px;stroke-linejoin:round;opacity:0;transition:opacity .25s;pointer-events:none}
.m-capital .m-nombre,.m-fija .m-nombre{opacity:.92}
.m-ciudad:hover .m-nombre,.m-ciudad:focus-visible .m-nombre{opacity:1}
.m-ciudad:hover .m-punto,.m-ciudad:focus-visible .m-punto{fill:var(--accent-text);stroke-width:3}
@media (prefers-reduced-motion:reduce){
  .m-pais-fill,.m-arco,.m-pkt,.m-punto{opacity:1!important;transform:none!important;animation:none!important;transition:none!important}
  .m-arco{opacity:.5!important}.m-pais-line{stroke-dashoffset:0!important;animation:none!important}.m-onda,.m-pkts{display:none}
}

/* ---------- Mapa: conexiones hacia el mundo ---------- */
.m-mundo{fill:none;stroke:var(--accent);stroke-width:1.4;stroke-linecap:round;stroke-dasharray:3 10;opacity:0}
.mapa.in .m-mundo{animation:m-aparece2 .9s ease calc(2.4s + var(--i) * .15s) forwards,m-fluye 3s linear calc(2.4s + var(--i) * .15s) infinite}
@keyframes m-aparece2{to{opacity:.4}}
.m-mundo-pt{fill:var(--accent);opacity:0;transform-box:fill-box;transform-origin:center}
.mapa.in .m-mundo-pt{animation:m-pop-s .6s var(--ease) calc(2.8s + var(--i) * .15s) forwards}
@keyframes m-pop-s{to{opacity:.7}}
.mapa-badge{position:absolute;left:clamp(.7rem,2vw,1.2rem);bottom:clamp(.7rem,2vw,1.2rem);display:inline-flex;align-items:center;gap:.5rem;padding:.45rem .85rem .45rem .65rem;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:999px;font-size:.85rem;font-weight:500;color:var(--muted)}
.mapa-badge .ic{color:var(--accent-text)}
