:root{
    --bg:#ffffff; --bg-soft:#f4f5f8; --bg-soft-2:#eceff4;
    --ink:#0a0f1c; --ink-2:#39414f; --muted:#6a7385; --muted-2:#9aa2b3;
    --line:#e7eaf0; --line-2:#f0f2f6;
    --accent:#1f5fd6; --accent-press:#164aa8; --accent-soft:#eaf1fc;
    --ok:#15935f; --ok-soft:#e7f6ef; --warn:#b07914; --warn-soft:#fbf2e1;
    --bad:#cf4040; --bad-soft:#fbeaea;
    --r-lg:24px; --r-md:16px; --r-sm:11px;
    --sh-1:0 1px 2px rgba(10,15,28,.04), 0 1px 3px rgba(10,15,28,.06);
    --sh-2:0 10px 30px -12px rgba(10,15,28,.18);
    --sh-3:0 30px 60px -24px rgba(10,15,28,.30);
    --container:1200px;
    --ease:cubic-bezier(.22,.61,.36,1);
  }
  [data-theme="dark"]{
    --bg:#0b0f17; --bg-soft:#121826; --bg-soft-2:#1b2334;
    --ink:#eef1f6; --ink-2:#c4cbd8; --muted:#8b94a7; --muted-2:#646d80;
    --line:#222b3c; --line-2:#19202e;
    --accent:#5e9bff; --accent-press:#83b2ff; --accent-soft:rgba(94,155,255,.16);
    --ok:#34d39a; --ok-soft:rgba(52,211,154,.14); --warn:#e3b04b; --warn-soft:rgba(227,176,75,.14);
    --bad:#f08a8a; --bad-soft:rgba(240,138,138,.16);
    --sh-1:0 1px 2px rgba(0,0,0,.35); --sh-2:0 12px 32px -14px rgba(0,0,0,.6); --sh-3:0 34px 64px -26px rgba(0,0,0,.72);
  }
  html{color-scheme:light}
  html[data-theme="dark"]{color-scheme:dark}
  body, .nav, .controls, .stats-wrap, .tile, .soft, .modal, .table-wrap, footer, .search input{
    transition:background-color .35s var(--ease), border-color .35s var(--ease), color .35s var(--ease)}
  *{box-sizing:border-box}
  html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
  body{
    margin:0;background:var(--bg);color:var(--ink);
    font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
    font-size:16px;line-height:1.5;letter-spacing:-.01em;
    -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
    overflow-x:hidden;
  }
  a{color:inherit;text-decoration:none}
  h1,h2,h3{margin:0;font-weight:800;letter-spacing:-.025em}
  .container{max-width:var(--container);margin:0 auto;padding:0 clamp(18px,4vw,40px);width:100%}
  .eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}

  /* ============ NAV ============ */
  .nav{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.72);
    backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);
    border-bottom:1px solid var(--line)}
  .nav-inner{height:62px;display:flex;align-items:center;gap:16px}
  .brand{display:flex;align-items:center;gap:11px}
  .brand-img{height:46px;width:auto;object-fit:contain;display:block}
  .brand-dark{display:none}
  [data-theme="dark"] .brand-light{display:none}
  [data-theme="dark"] .brand-dark{display:block}
  @media(max-width:560px){.brand-img{height:38px}}
  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
  .brand .logo{width:38px;height:38px;border-radius:10px;flex:none;display:grid;place-items:center;
    background:linear-gradient(135deg,var(--accent),#1aa6c4);box-shadow:var(--sh-1)}
  .brand .logo svg{width:21px;height:21px}
  .brand b{font-size:1.02rem;font-weight:800;letter-spacing:-.02em;line-height:1}
  .brand small{display:block;color:var(--muted);font-size:.72rem;font-weight:500;margin-top:2px;letter-spacing:0}
  .nav-spacer{flex:1}
  .nav-meta{color:var(--muted);font-size:.78rem;text-align:right;line-height:1.4}
  .nav-meta b{color:var(--ink-2);font-weight:600}
  @media(max-width:680px){.nav-meta{display:none}}

  /* ============ HERO ============ */
  #hero-mount:empty{display:none}
  .hero-feature{position:relative;overflow:hidden;color:#fff;text-align:center;cursor:pointer;
    display:flex;flex-direction:column;align-items:center;
    padding:clamp(42px,5.5vw,68px) 24px 0;min-height:clamp(430px,60vh,560px);
    background:
      radial-gradient(72% 90% at 74% -6%, rgba(58,120,236,.55), transparent 60%),
      radial-gradient(60% 70% at 16% 104%, rgba(28,190,205,.30), transparent 60%),
      linear-gradient(180deg,#070c18 0%,#0a1426 55%,#080f1e 100%);}
  .hero-feature::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;
    background:linear-gradient(180deg, rgba(6,10,18,.46) 0%, rgba(6,10,18,.54) 48%, rgba(6,10,18,.82) 100%)}
  /* Vídeo de fondo del hero */
  .hero-video{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;border:0}
  /* Fondo fotográfico del header (campus UJA) */
  .hero-photo{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center 36%}
  .hero-photo::after{content:"";position:absolute;inset:0;
    background:linear-gradient(180deg, rgba(6,10,18,.52) 0%, rgba(6,10,18,.6) 48%, rgba(6,10,18,.86) 100%)}
  .hero-feature .eyebrow{color:#9fc0ff;position:relative;z-index:2}
  /* Portada con título (sin producto) */
  .hero-title{justify-content:center;cursor:default;padding-bottom:clamp(46px,6vw,76px)}
  .hero-inner{position:relative;z-index:2;width:100%;max-width:940px;
    display:flex;flex-direction:column;align-items:center}
  .hero-title .hero-name{font-size:clamp(2.4rem,5.8vw,4.1rem);max-width:20ch;margin:14px 0 0}
  .hero-logo{position:relative;z-index:2;width:min(480px,86%);height:auto;
    filter:drop-shadow(0 18px 40px rgba(0,0,0,.55))}
  .hero-project{position:relative;z-index:2;margin-top:18px;display:inline-flex;align-items:center;
    font-size:.82rem;font-weight:700;letter-spacing:.34em;text-transform:uppercase;color:#fff;
    padding:7px 18px 7px 20px;border:1px solid rgba(255,255,255,.45);border-radius:999px;
    background:rgba(255,255,255,.08);backdrop-filter:blur(4px);text-shadow:0 1px 8px rgba(0,0,0,.4)}
  .hero-title .hero-tag{max-width:60ch;margin-top:18px}
  .hero-title .hero-cta{margin-top:28px;cursor:pointer}
  .hero-name{position:relative;z-index:2;font-size:clamp(2.2rem,5.2vw,3.6rem);font-weight:900;
    line-height:1.02;margin:14px 0 0;max-width:16ch}
  .hero-tag{position:relative;z-index:2;color:#ffffff;font-size:clamp(1rem,1.6vw,1.22rem);
    max-width:62ch;margin:16px 0 0;font-weight:500;text-shadow:0 1px 14px rgba(0,0,0,.45)}
  .hero-cta{position:relative;z-index:2;margin-top:26px;display:inline-flex;align-items:center;gap:9px;
    background:#fff;color:#0a0f1c;font-weight:700;font-size:.95rem;padding:13px 24px;border-radius:999px;
    transition:transform .2s var(--ease), box-shadow .2s}
  .hero-feature:hover .hero-cta{transform:translateY(-2px);box-shadow:0 14px 30px -10px rgba(0,0,0,.5)}
  .hero-img-wrap{position:relative;z-index:1;margin-top:auto;width:100%;align-self:stretch;
    height:clamp(230px,32vh,360px);display:flex;align-items:flex-end;justify-content:center}
  .hero-img-wrap::before{content:"";position:absolute;left:50%;bottom:6%;transform:translateX(-50%);
    width:62%;height:60%;border-radius:50%;background:radial-gradient(closest-side, rgba(120,170,255,.45), transparent 72%);filter:blur(8px)}
  .hero-img{position:relative;max-width:88%;max-height:100%;object-fit:contain;
    filter:drop-shadow(0 32px 46px rgba(0,0,0,.6));transition:transform .6s var(--ease)}
  .hero-feature:hover .hero-img{transform:translateY(-6px) scale(1.02)}
  .hero-svg{position:relative;z-index:1;width:40%;max-width:300px;margin:auto 0 8%}
  .hero-svg svg{width:100%;height:auto}

  /* ============ STATS STRIP ============ */
  .stats-wrap{border-bottom:1px solid var(--line);background:var(--bg)}
  .stats{display:flex;flex-wrap:wrap;gap:0}
  .stat{flex:1 1 0;min-width:120px;padding:15px 8px;text-align:center;position:relative}
  .stat + .stat::before{content:"";position:absolute;left:0;top:26%;height:48%;width:1px;background:var(--line)}
  .stat .n{font-size:1.7rem;font-weight:800;letter-spacing:-.03em;line-height:1}
  .stat .l{font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin-top:6px}

  /* ============ CONTROLS ============ */
  .controls{position:sticky;top:62px;z-index:50;background:rgba(255,255,255,.82);
    backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);
    border-bottom:1px solid var(--line)}
  .controls-inner{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:13px 0}
  .controls-label{font-size:.82rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
  .search{flex:1;min-width:240px;position:relative}
  .search input{width:100%;padding:11px 16px 11px 42px;border-radius:12px;border:1px solid var(--line);
    background:var(--bg-soft);color:var(--ink);font-size:.94rem;font-family:inherit;outline:none;transition:.18s}
  .search input::placeholder{color:var(--muted-2)}
  .search input:focus{border-color:var(--accent);background:var(--bg);box-shadow:0 0 0 4px var(--accent-soft)}
  .search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--muted-2)}
  .tabs{display:flex;gap:6px;flex-wrap:wrap}
  .tab{border:1px solid var(--line);background:var(--bg);color:var(--ink-2);padding:9px 16px;border-radius:10px;
    cursor:pointer;font-size:.88rem;font-weight:600;font-family:inherit;transition:.16s}
  .tab:hover{border-color:#cfd6e2;background:var(--bg-soft)}
  .tab.active{color:#fff;background:var(--accent);border-color:var(--accent)}
  .view-toggle{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg)}
  .view-toggle button{border:0;background:transparent;color:var(--muted);padding:9px 12px;cursor:pointer;display:grid;place-items:center;transition:.15s}
  .view-toggle button.active{background:var(--accent);color:#fff}
  .view-toggle button svg{width:17px;height:17px}
  .view-toggle button+button{border-left:1px solid var(--line)}

  /* ============ EDITORIAL ============ */
  .intro{max-width:760px;margin:0 auto;text-align:center;padding:clamp(46px,6.5vw,82px) 0 clamp(14px,2vw,22px)}
  .intro h2{font-size:clamp(1.7rem,3.2vw,2.4rem);font-weight:900;letter-spacing:-.035em;margin-top:14px;line-height:1.12}
  .intro p{color:var(--muted);font-size:clamp(1.02rem,1.4vw,1.14rem);line-height:1.7;margin:16px auto 0;max-width:64ch}
  .statement{text-align:center;max-width:860px;margin:clamp(40px,6vw,72px) auto clamp(8px,2vw,16px);
    font-size:clamp(1.25rem,2.4vw,1.85rem);font-weight:800;letter-spacing:-.03em;line-height:1.32;color:var(--ink)}
  .statement span{color:var(--accent)}

  /* ============ BANDA DIVISORIA (imagen a sangre completa, parallax) ============ */
  .band{position:relative;width:100vw;margin-left:calc(50% - 50vw);
    min-height:clamp(320px,46vh,480px);display:flex;align-items:center;justify-content:center;text-align:center;
    color:#fff;overflow:hidden;margin-top:clamp(52px,7vw,88px);margin-bottom:clamp(52px,7vw,88px)}
  .band-bg{position:absolute;inset:0;background-size:cover;background-position:center;background-attachment:fixed}
  .band-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0}
  .band::after{content:"";position:absolute;inset:0;
    background:linear-gradient(180deg,rgba(7,11,20,.64),rgba(7,11,20,.5) 45%,rgba(7,11,20,.74))}
  .band-inner{position:relative;z-index:2;max-width:820px;padding:48px 24px}
  .band .eyebrow{color:#bcd0f4}
  .band h2{font-size:clamp(1.7rem,3.6vw,2.7rem);font-weight:900;letter-spacing:-.03em;line-height:1.1;margin:12px 0 0}
  .band p{color:#dde4f1;font-size:clamp(1rem,1.5vw,1.18rem);line-height:1.62;margin:14px auto 0;max-width:60ch}
  .band p span{color:#86b8ff;font-weight:600}
  .band .src{position:absolute;right:14px;bottom:10px;z-index:2;font-size:.66rem;
    color:rgba(255,255,255,.55);letter-spacing:.02em}
  @media(max-width:820px){.band-bg{background-attachment:scroll}}

  /* ============ SECTIONS ============ */
  main{padding-bottom:40px}
  .cat{padding-top:clamp(40px,6vw,72px)}
  .cat-head{font-size:clamp(1.8rem,3.4vw,2.6rem);font-weight:900;letter-spacing:-.035em}
  .cat-sub{margin:8px 0 0;color:var(--muted);font-size:1.05rem;max-width:60ch}
  .sub-head{display:flex;align-items:center;gap:12px;margin:36px 0 18px;font-size:.78rem;
    font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
  .sub-head .pill{font-size:.7rem;color:var(--ink-2);background:var(--bg-soft);border:1px solid var(--line);
    padding:2px 9px;border-radius:999px;font-weight:700;letter-spacing:0}
  .sub-head::after{content:"";flex:1;height:1px;background:var(--line)}

  /* ============ TILES ============ */
  .showcase{display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}
  @media(max-width:1080px){.showcase{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:640px){.showcase{grid-template-columns:1fr}}
  .tile{position:relative;border:1px solid #e7eaf0;border-radius:var(--r-lg);overflow:hidden;
    min-height:406px;display:flex;flex-direction:column;align-items:center;text-align:center;
    padding:26px 22px 0;cursor:pointer;background:linear-gradient(180deg,#fafbfd 0%,#eef1f6 100%);
    transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s}
  [data-theme="dark"] .tile{box-shadow:var(--sh-1)}
  .tile:hover{transform:translateY(-5px);box-shadow:var(--sh-3);border-color:#dbe1ea}
  .tile-label{font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;color:#6a7385;font-weight:700}
  .tile-name{font-size:clamp(1.12rem,1.5vw,1.34rem);font-weight:800;letter-spacing:-.025em;margin:6px 0 4px;line-height:1.12;color:#0a0f1c}
  .tile-tag{color:#39414f;font-size:.88rem;line-height:1.45;max-width:34ch;margin:0}
  .tile-cta{margin-top:11px;display:inline-flex;gap:6px;align-items:center;font-size:.83rem;font-weight:700;color:var(--accent)}
  .tile-cta svg{transition:transform .25s var(--ease)}
  .tile:hover .tile-cta svg{transform:translateX(5px)}
  .tile-img-wrap{margin-top:auto;width:100%;height:212px;position:relative;
    display:flex;align-items:flex-end;justify-content:center;padding-bottom:12px}
  .tile-img-wrap::before{content:"";position:absolute;left:50%;bottom:8%;transform:translateX(-50%);
    width:56%;height:38%;border-radius:50%;background:radial-gradient(closest-side, rgba(10,15,28,.16), transparent 72%);
    filter:blur(7px);opacity:0;transition:opacity .3s}
  .tile:hover .tile-img-wrap::before{opacity:1}
  .tile-img{position:relative;max-width:100%;max-height:212px;object-fit:contain;
    filter:drop-shadow(0 14px 20px rgba(10,15,28,.16));
    transition:transform .6s var(--ease)}
  .tile:hover .tile-img{transform:scale(1.06)}
  .tile-svg{width:44%;max-width:165px;display:grid;place-items:center;margin:auto 0}
  .tile-svg svg.art{width:100%;height:auto}
  .tile-status{position:absolute;top:18px;right:18px;z-index:2;font-size:.7rem;font-weight:600;
    padding:5px 11px;border-radius:999px;display:flex;align-items:center;gap:6px;border:1px solid;
    background:rgba(255,255,255,.9);backdrop-filter:blur(4px)}
  .tile-status.ok{color:var(--ok);border-color:#bfe6d3}
  .tile-status.warn{color:var(--warn);border-color:#ecd9ac}
  .tile-status.bad{color:var(--bad);border-color:#f0c4c4}
  .tile-status .dot{width:6px;height:6px;border-radius:50%;background:currentColor}
  .hidden{display:none!important}

  /* ============ TABLE ============ */
  .table-wrap{margin-top:26px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh-1)}
  table.inv{width:100%;border-collapse:collapse;font-size:.9rem}
  table.inv thead th{text-align:left;padding:14px 18px;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;
    color:var(--muted);font-weight:700;background:var(--bg-soft);border-bottom:1px solid var(--line)}
  table.inv tbody tr{border-bottom:1px solid var(--line-2);cursor:pointer;transition:background .14s}
  table.inv tbody tr:last-child{border-bottom:0}
  table.inv tbody tr:hover{background:var(--accent-soft)}
  table.inv td{padding:12px 18px;vertical-align:middle}
  .t-cell{display:flex;align-items:center;gap:13px}
  .t-thumb{width:50px;height:50px;border-radius:11px;border:1px solid var(--line);flex:none;
    display:grid;place-items:center;overflow:hidden;background:var(--bg-soft)}
  .t-thumb svg.art{width:72%;height:72%}
  .t-thumb .thumb-bg{display:none}
  .t-thumb .art-img{width:100%;height:100%;object-fit:contain;padding:4px}
  .t-thumb .svg-fallback{width:72%;height:72%}
  .t-name{font-weight:700;letter-spacing:-.01em}
  .t-brand{color:var(--muted-2);font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;font-weight:600}
  .t-type{display:inline-flex;align-items:center;gap:7px}
  .t-type .sq{width:8px;height:8px;border-radius:2px}
  .t-serial{font-family:ui-monospace,"SFMono-Regular",Consolas,monospace;font-size:.8rem;color:var(--muted)}
  .st{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:600;padding:4px 10px;border-radius:999px;border:1px solid}
  .st.ok{background:var(--ok-soft);color:var(--ok);border-color:#bfe6d3}
  .st.warn{background:var(--warn-soft);color:var(--warn);border-color:#ecd9ac}
  .st.bad{background:var(--bad-soft);color:var(--bad);border-color:#f0c4c4}
  .st .dot{width:6px;height:6px;border-radius:50%;background:currentColor}
  .t-view{color:var(--accent);font-weight:700;font-size:.82rem;white-space:nowrap}
  .chips{display:flex;flex-wrap:wrap;gap:5px}
  .chip{font-size:.72rem;color:var(--accent);background:var(--accent-soft);border:1px solid #d9e6f8;padding:2px 9px;border-radius:7px;font-weight:600}
  @media(max-width:880px){table.inv .hide-sm{display:none}}

  .empty{margin-top:26px;color:var(--muted);text-align:center;padding:64px 20px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md)}

  /* ============ SOFTWARE ============ */
  .soft-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));margin-top:18px}
  .soft{display:flex;gap:14px;align-items:flex-start;background:var(--bg);border:1px solid var(--line);
    border-radius:16px;padding:16px 18px;box-shadow:var(--sh-1);transition:.22s var(--ease);color:inherit}
  .soft:hover{transform:translateY(-4px);box-shadow:var(--sh-2);border-color:#cfd8e6}
  .soft-ico{flex:none;width:48px;height:48px;border-radius:13px;display:grid;place-items:center;
    font-weight:800;font-size:1.02rem;color:#fff;letter-spacing:-.02em;
    background:linear-gradient(145deg, var(--c), color-mix(in srgb, var(--c) 62%, #000 12%));
    box-shadow:0 6px 16px -6px var(--c)}
  .soft-body{display:flex;flex-direction:column;min-width:0;flex:1}
  .soft-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .soft-top b{font-size:1rem;font-weight:700;letter-spacing:-.01em}
  .soft-cat{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);
    background:var(--bg-soft);border:1px solid var(--line);padding:2px 7px;border-radius:6px}
  .soft-desc{color:var(--muted);font-size:.85rem;line-height:1.45;margin-top:5px}
  .soft-link{margin-top:9px;display:inline-flex;align-items:center;gap:5px;font-size:.8rem;font-weight:700;color:var(--accent)}
  .soft-link svg{transition:transform .2s var(--ease)}
  .soft:hover .soft-link svg{transform:translateX(4px)}
  .soft-link--muted{color:var(--muted-2);font-weight:600}

  /* ============ GALERÍA PROMOCIONAL (vídeos) ============ */
  .promo-grid{display:grid;gap:14px;grid-template-columns:repeat(3,1fr);margin-top:20px}
  @media(max-width:900px){.promo-grid{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:560px){.promo-grid{grid-template-columns:1fr}}
  .promo-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:16px;overflow:hidden;
    background:var(--bg);box-shadow:var(--sh-1);transition:transform .25s var(--ease), box-shadow .25s var(--ease)}
  .promo-card:hover{transform:translateY(-4px);box-shadow:var(--sh-2);border-color:#cfd8e6}
  .promo-media{position:relative;border:0;padding:0;margin:0;cursor:pointer;display:block;width:100%;
    aspect-ratio:16/9;overflow:hidden;background:#0a0f1c}
  .promo-thumb{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s var(--ease)}
  .promo-card:hover .promo-thumb{transform:scale(1.06)}
  .promo-media::after{content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(180deg,transparent 55%,rgba(6,10,18,.4));opacity:.6;transition:opacity .25s}
  .promo-card:hover .promo-media::after{opacity:.35}
  .promo-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;
    width:54px;height:54px;border-radius:50%;display:grid;place-items:center;
    background:rgba(255,255,255,.92);color:var(--accent);box-shadow:0 10px 26px -8px rgba(0,0,0,.6);
    transition:transform .25s var(--ease), background .2s}
  .promo-card:hover .promo-play{transform:translate(-50%,-50%) scale(1.1);background:#fff}
  .promo-play svg{width:24px;height:24px;margin-left:3px}
  .promo-cap{padding:14px 16px 16px;display:flex;flex-direction:column;gap:5px}
  .promo-title{font-size:1rem;font-weight:700;letter-spacing:-.01em;color:var(--ink)}
  .promo-util{font-size:.86rem;line-height:1.45;color:var(--muted)}

  /* Lightbox de vídeo */
  .lightbox{position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;
    background:rgba(4,7,14,.93);backdrop-filter:blur(4px);padding:5vh 4vw}
  .lightbox.open{display:flex;animation:pop .22s var(--ease)}
  .lightbox-vid{max-width:100%;max-height:90vh;width:auto;border-radius:12px;background:#000;
    box-shadow:0 30px 80px -20px rgba(0,0,0,.85)}
  .lightbox-close{position:absolute;top:18px;right:20px;z-index:2;width:46px;height:46px;border-radius:13px;
    border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.12);color:#fff;font-size:1.55rem;
    cursor:pointer;display:grid;place-items:center;transition:.15s}
  .lightbox-close:hover{background:rgba(255,255,255,.24)}

  /* ============ RESULTADOS DE VUELOS ============ */
  .results-grid{display:grid;gap:14px;grid-template-columns:repeat(3,1fr);margin-top:20px}
  @media(max-width:900px){.results-grid{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:560px){.results-grid{grid-template-columns:1fr}}
  .results-credit{margin-top:18px;text-align:center;font-size:.78rem;color:var(--muted);font-style:italic}
  .result-card{position:relative;margin:0;border-radius:16px;overflow:hidden;
    background:#f4f6f8;box-shadow:var(--sh-1);transition:transform .25s var(--ease), box-shadow .25s var(--ease);
    display:flex;flex-direction:column}
  .result-card:hover{transform:translateY(-4px);box-shadow:var(--sh-2)}
  .result-img{width:100%;aspect-ratio:4/3;object-fit:contain;display:block;background:#f4f6f8;transition:transform .5s var(--ease)}
  .result-card:hover .result-img{transform:scale(1.03)}
  .result-cap{position:relative;z-index:2;padding:10px 14px 12px;
    display:flex;flex-direction:column;gap:3px;color:var(--ink-2);background:#fff;
    border-top:1px solid var(--line)}
  .result-cat{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--accent)}
  .result-title{font-size:.9rem;font-weight:700;letter-spacing:-.01em;color:var(--ink-2)}

  /* ============ MODAL ============ */
  .overlay{position:fixed;inset:0;z-index:100;display:none;align-items:flex-start;justify-content:center;
    background:rgba(8,12,22,.5);backdrop-filter:blur(5px);padding:5vh 16px;overflow-y:auto}
  .overlay.open{display:flex}
  .modal{width:min(820px,100%);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);
    box-shadow:0 40px 90px -28px rgba(8,12,22,.5);overflow:hidden;animation:pop .26s var(--ease)}
  @keyframes pop{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
  .modal-hero{position:relative;height:340px;display:flex;align-items:center;justify-content:center;overflow:hidden;
    border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fafbfd,var(--bg-soft))}
  .modal-hero svg.art{width:34%;height:auto;max-height:70%}
  .modal-hero .thumb-bg{position:absolute;inset:0;background-size:cover;background-position:center;
    filter:blur(34px) saturate(1.2);transform:scale(1.35);opacity:.36}
  .modal-hero .art-img{position:relative;z-index:1;max-width:86%;max-height:100%;width:auto;height:auto;
    object-fit:contain;padding:28px}
  .modal-hero .svg-fallback{position:relative;z-index:1;display:grid;place-items:center}
  .modal-close{position:absolute;top:14px;right:14px;z-index:3;width:38px;height:38px;border-radius:11px;
    border:1px solid var(--line);background:rgba(255,255,255,.92);color:var(--ink-2);cursor:pointer;font-size:1.25rem;
    display:grid;place-items:center;transition:.16s}
  .modal-close:hover{background:#fbe9e9;color:#c0392b;border-color:#f0c9c9}
  .modal-body{padding:26px clamp(20px,3.4vw,34px) 30px}
  .modal-body .tile-label{margin-bottom:5px;display:block}
  .modal-body h2{font-size:clamp(1.5rem,2.6vw,1.85rem);font-weight:800;letter-spacing:-.03em;margin:0 0 5px}
  .modal-body .lead{color:var(--muted);font-size:1.02rem;margin-bottom:16px}
  .status-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
  .status-tag{display:inline-flex;align-items:center;gap:7px;font-size:.8rem;font-weight:600;padding:6px 12px;
    border-radius:9px;background:var(--bg-soft);border:1px solid var(--line);color:var(--ink-2)}
  .status-tag.ok{background:var(--ok-soft);color:var(--ok);border-color:#bfe6d3}
  .status-tag.warn{background:var(--warn-soft);color:var(--warn);border-color:#ecd9ac}
  .status-tag.bad{background:var(--bad-soft);color:var(--bad);border-color:#f0c4c4}
  .status-tag .dot{width:7px;height:7px;border-radius:50%;background:currentColor}
  /* Editor de estado */
  .status-edit{margin:0 0 20px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--bg-soft)}
  .status-edit-label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;
    color:var(--muted);font-weight:700;margin-bottom:9px}
  .status-edit-opts{display:flex;flex-wrap:wrap;gap:8px}
  .se-btn{font-size:.82rem;font-weight:600;padding:7px 13px;border-radius:8px;cursor:pointer;
    border:1px solid var(--line);background:var(--bg);color:var(--ink-2);
    display:inline-flex;align-items:center;gap:7px;transition:.15s var(--ease)}
  .se-btn::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.55}
  .se-btn:hover{border-color:#cfd6e2}
  .se-btn.ok{color:var(--ok)} .se-btn.warn{color:var(--warn)} .se-btn.bad{color:var(--bad)}
  .se-btn.active{color:#fff;border-color:transparent}
  .se-btn.active::before{opacity:1;background:#fff}
  .se-btn.active.ok{background:var(--ok)} .se-btn.active.warn{background:var(--warn)} .se-btn.active.bad{background:var(--bad)}
  .desc{color:var(--ink-2);line-height:1.68;margin:0 0 20px;font-size:.97rem}
  .specs-title{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted-2);font-weight:700;margin:0 0 6px}
  table.specs{width:100%;border-collapse:collapse;margin-bottom:18px}
  table.specs td{padding:11px 4px;border-bottom:1px solid var(--line-2);font-size:.92rem;vertical-align:top}
  table.specs td:first-child{color:var(--muted);width:46%}
  table.specs td:last-child{font-weight:600;color:var(--ink)}
  .meta-line{font-size:.85rem;color:var(--muted);margin:4px 0;line-height:1.5}
  .meta-line b{color:var(--ink-2);font-weight:600}
  .doc-btn{display:inline-flex;align-items:center;gap:9px;margin-top:16px;padding:13px 22px;border-radius:12px;
    font-weight:700;font-size:.92rem;background:var(--accent);color:#fff;transition:.18s}
  .doc-btn:hover{background:var(--accent-press);transform:translateY(-1px)}

  /* ============ FOOTER ============ */
  /* ============ ENTIDADES / LOGOS ============ */
  .partners{padding:clamp(44px,6vw,76px) 0 8px;text-align:center;border-top:1px solid var(--line)}
  .partners-label{display:block;font-size:.74rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:16px}
  .partners-logos{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(28px,6vw,62px)}
  .partners-logos a{display:block;opacity:.9;transition:opacity .2s, transform .2s var(--ease)}
  .partners-logos a:hover{opacity:1;transform:translateY(-2px)}
  .partners-logos img{height:84px;width:auto;object-fit:contain;display:block}
  .partners-logos img.logo-uja{height:66px}
  .partners-logos img.logo-inuo{height:68px}
  @media(max-width:560px){.partners-logos img{height:58px}.partners-logos img.logo-uja{height:46px}.partners-logos img.logo-inuo{height:48px}}
  /* Franja superior de entidades */
  .partners-top{padding:clamp(18px,2.6vw,28px) 0;border-top:0;border-bottom:1px solid var(--line)}

  footer{border-top:1px solid var(--line);background:var(--bg-soft);margin-top:30px}
  .foot{display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between;padding:34px 0;color:var(--muted);font-size:.84rem;line-height:1.65}
  .foot b{color:var(--ink-2)}
  .foot a{color:var(--accent);font-weight:600}

  /* ============ ICON BUTTONS / THEME ============ */
  .icon-btn{width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--bg);
    color:var(--ink-2);display:grid;place-items:center;cursor:pointer;transition:.16s var(--ease);flex:none}
  .icon-btn:hover{background:var(--bg-soft);color:var(--ink);border-color:#cfd6e2}
  .icon-btn svg{width:18px;height:18px}
  .icon-btn .moon{display:none}
  [data-theme="dark"] .icon-btn .sun{display:none}
  [data-theme="dark"] .icon-btn .moon{display:block}

  /* ============ NAV ON SCROLL ============ */
  .nav.scrolled{box-shadow:0 6px 24px -12px rgba(10,15,28,.22);background:rgba(255,255,255,.9)}
  [data-theme="dark"] .nav.scrolled{background:rgba(11,15,23,.92);box-shadow:0 6px 24px -10px rgba(0,0,0,.5)}

  /* ============ SCROLL REVEAL ============ */
  @media (prefers-reduced-motion: no-preference){
    html.has-reveal .reveal{opacity:0;transform:translateY(22px);transition:opacity .6s var(--ease), transform .6s var(--ease)}
    html.has-reveal .reveal.in{opacity:1;transform:none}
  }

  /* ============ BACK TO TOP ============ */
  .totop{position:fixed;right:clamp(16px,3vw,28px);bottom:clamp(16px,3vw,28px);z-index:70;
    width:48px;height:48px;border-radius:50%;border:1px solid var(--line);background:var(--bg);color:var(--ink);
    box-shadow:var(--sh-2);display:grid;place-items:center;cursor:pointer;
    opacity:0;transform:translateY(12px) scale(.9);pointer-events:none;transition:.28s var(--ease)}
  .totop.show{opacity:1;transform:none;pointer-events:auto}
  .totop:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
  .totop svg{width:20px;height:20px}

  /* ============ A11Y FOCUS ============ */
  :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:8px}
  .tile:focus-visible,.hero-feature:focus-visible,table.inv tbody tr:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

  /* ============ DETALLES PREMIUM / ACTUALES ============ */
  .grad-text{background:linear-gradient(118deg,var(--accent) 0%,#21b3cf 96%);
    -webkit-background-clip:text;background-clip:text;color:transparent}

  /* Hero: aurora animada (sobre la foto, color sutil) */
  .hero-feature::before{content:"";position:absolute;inset:-25%;z-index:1;pointer-events:none;opacity:.65;
    background:
      radial-gradient(38% 46% at 28% 36%, rgba(60,122,236,.55), transparent 62%),
      radial-gradient(34% 42% at 74% 64%, rgba(26,196,210,.42), transparent 62%),
      radial-gradient(30% 36% at 60% 18%, rgba(150,110,255,.30), transparent 60%);
    filter:blur(46px);animation:aurora 20s ease-in-out infinite alternate}
  @keyframes aurora{
    0%{transform:translate3d(-3%,-2%,0) scale(1) rotate(0deg)}
    100%{transform:translate3d(5%,3%,0) scale(1.18) rotate(8deg)}}
  .hero-feature .eyebrow,.hero-name,.hero-tag,.hero-cta,.hero-img-wrap{position:relative;z-index:2}

  /* Tarjetas: inclinación 3D + foco que sigue al cursor */
  .tile{transform-style:preserve-3d;transition:transform .25s var(--ease),box-shadow .3s var(--ease),border-color .3s}
  .tile.tilting{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-5px);
    transition:transform .08s linear,box-shadow .3s var(--ease),border-color .3s}
  .tile::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;border-radius:inherit;
    background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%), rgba(31,95,214,.10), transparent 64%);
    opacity:0;transition:opacity .3s}
  .tile:hover::after{opacity:1}

  /* Marquesina de fabricantes */
  .marquee{overflow:hidden;border-bottom:1px solid var(--line);background:var(--bg);
    -webkit-mask:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
    mask:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
  .marquee-track{display:flex;align-items:center;gap:40px;width:max-content;padding:13px 20px;
    animation:marquee 28s linear infinite}
  .marquee:hover .marquee-track{animation-play-state:paused}
  .marquee-track span{color:var(--muted-2);font-weight:700;font-size:.92rem;letter-spacing:.02em;white-space:nowrap;
    display:inline-flex;align-items:center;gap:40px}
  .marquee-track span::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent);opacity:.5}
  @keyframes marquee{to{transform:translateX(-50%)}}

  @media (prefers-reduced-motion: reduce){
    .hero-feature::before{animation:none}
    .marquee-track{animation:none}
  }