:root{
  --bg:#f5f6f8; --card:#ffffff; --tx:#16181d; --tx2:#5b6170; --tx3:#8a90a0;
  --bd:#e3e6ec; --bd2:#eef0f4;
  --pri:#2448d8; --pri-tx:#fff; --pri-soft:#e8edff;
  --ok:#147a4a; --ok-soft:#e3f5ec; --err:#b42318; --err-soft:#fdecea;
  --warn:#9a6700; --warn-soft:#fff4d6;
  --r:14px; --sh:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.06);
  --sh2:0 8px 24px rgba(16,24,40,.10);
  --e-idea:#7c5cff; --e-desarrollo:#2448d8; --e-piloto:#d97706; --e-produccion:#15935b; --e-pausado:#8a90a0;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#0f1115; --card:#171a21; --tx:#eceef3; --tx2:#a8aebb; --tx3:#757c8b;
    --bd:#2a2f3a; --bd2:#20242d;
    --pri:#6d8bff; --pri-tx:#0b0d12; --pri-soft:#1c2440;
    --ok:#4ad295; --ok-soft:#12291f; --err:#ff7b72; --err-soft:#2d1514;
    --warn:#f5c04a; --warn-soft:#2b230e;
    --sh:0 1px 2px rgba(0,0,0,.4); --sh2:0 8px 24px rgba(0,0,0,.45);
    --e-idea:#a593ff; --e-desarrollo:#6d8bff; --e-piloto:#f5a623; --e-produccion:#4ad295; --e-pausado:#8a90a0;
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.55 Inter,system-ui,-apple-system,"Segoe UI",sans-serif}
a{color:var(--pri);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-family:"Space Grotesk",Inter,sans-serif;line-height:1.2;margin:0 0 .4em;letter-spacing:-.01em}
h1{font-size:1.9rem} h2{font-size:1.3rem} h3{font-size:1.05rem}
img{max-width:100%;display:block}
.wrap{max-width:1180px;margin:0 auto;padding:0 16px}
.muted{color:var(--tx2)} .small{font-size:.85rem}

/* barra superior */
.topbar{background:var(--card);border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:20}
.topbar-in{display:flex;align-items:center;gap:20px;height:60px}
.marca{font-family:"Space Grotesk";font-weight:700;color:var(--tx);font-size:1.05rem;white-space:nowrap}
.marca:hover{text-decoration:none}
.marca-ico{color:var(--pri)}
.nav{display:flex;gap:4px;flex:1;overflow-x:auto}
.nav a{color:var(--tx2);padding:7px 11px;border-radius:9px;font-weight:500;white-space:nowrap}
.nav a:hover,.nav a.on{background:var(--bd2);color:var(--tx);text-decoration:none}
.pill{background:var(--err);color:#fff;border-radius:99px;padding:0 6px;font-size:.72rem}
.topbar-der{display:flex;align-items:center;gap:10px}
.menu{position:relative}
.menu summary{list-style:none;cursor:pointer}
.menu summary::-webkit-details-marker{display:none}
.menu-pop{position:absolute;right:0;top:44px;background:var(--card);border:1px solid var(--bd);border-radius:12px;box-shadow:var(--sh2);padding:12px;min-width:220px;display:flex;flex-direction:column;gap:6px}
.menu-solo-movil{display:none}
@media (max-width:720px){.menu-solo-movil{display:block}}
.menu-pop small{color:var(--tx3);margin-bottom:6px;word-break:break-all}
@media (max-width:720px){.nav{display:none}.topbar-der .btn-pri{padding:7px 10px}}

/* botones y formularios */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--bd);background:var(--card);color:var(--tx);border-radius:10px;padding:9px 15px;font:600 .9rem Inter,sans-serif;cursor:pointer;white-space:nowrap}
.btn:hover{text-decoration:none;border-color:var(--tx3)}
.btn-pri{background:var(--pri);border-color:var(--pri);color:var(--pri-tx)}
.btn-pri:hover{filter:brightness(1.08);border-color:var(--pri)}
.btn-sm{padding:6px 11px;font-size:.84rem}
.btn-peligro{color:var(--err)}
.btn-link{background:none;border:0;color:var(--tx3);cursor:pointer;font:inherit;font-size:.82rem;padding:0}
.btn-link:hover{color:var(--err)}
label{display:block;font-weight:600;font-size:.88rem;margin:0 0 5px}
.campo{margin-bottom:16px}
.ayuda{color:var(--tx3);font-size:.8rem;font-weight:400;margin-top:4px}
input[type=text],input[type=email],input[type=password],input[type=url],input[type=number],input[type=search],select,textarea{
  width:100%;padding:10px 12px;border:1px solid var(--bd);border-radius:10px;background:var(--card);color:var(--tx);font:inherit}
textarea{min-height:110px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--pri-soft);border-color:var(--pri)}
input[type=range]{width:100%;accent-color:var(--pri)}
.fila{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:640px){.fila{grid-template-columns:1fr}}
.check-lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px;max-height:220px;overflow:auto;border:1px solid var(--bd);border-radius:10px;padding:10px}
.check-lista label{font-weight:500;display:flex;gap:8px;align-items:center;margin:0}

/* alertas */
.alerta{padding:11px 14px;border-radius:10px;margin:16px 0 0;font-weight:500}
.alerta-ok{background:var(--ok-soft);color:var(--ok)}
.alerta-error{background:var(--err-soft);color:var(--err)}
.alerta-aviso{background:var(--warn-soft);color:var(--warn)}

/* tarjetas */
.card{background:var(--card);border:1px solid var(--bd);border-radius:var(--r);box-shadow:var(--sh)}
.pad{padding:22px}
.avatar{--h:220;display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;font:600 .78rem Inter;
  background:hsl(var(--h) 70% 90%);color:hsl(var(--h) 55% 32%);flex:none}
@media (prefers-color-scheme:dark){.avatar{background:hsl(var(--h) 40% 24%);color:hsl(var(--h) 80% 82%)}}
.avatar.xs{width:24px;height:24px;font-size:.62rem}
.avatar.lg{width:44px;height:44px;font-size:.95rem}
.equipo{display:flex}
.equipo .avatar{border:2px solid var(--card);margin-left:-8px}
.equipo .avatar:first-child{margin-left:0}

/* estado y progreso */
.estado{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:600;padding:3px 9px;border-radius:99px;
  color:var(--c);background:color-mix(in srgb,var(--c) 13%,transparent)}
.estado::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c)}
.e-idea{--c:var(--e-idea)} .e-desarrollo{--c:var(--e-desarrollo)} .e-piloto{--c:var(--e-piloto)}
.e-produccion,.e-beta{--c:var(--e-produccion)} .e-pausado{--c:var(--e-pausado)}
.barra{height:6px;background:var(--bd2);border-radius:99px;overflow:hidden}
.barra>i{display:block;height:100%;background:var(--pri);border-radius:99px}
.chips{display:flex;flex-wrap:wrap;gap:5px}
.chip{font-size:.74rem;padding:2px 8px;border-radius:6px;background:var(--bd2);color:var(--tx2);font-weight:500}
a.chip:hover{text-decoration:none;background:var(--pri-soft);color:var(--pri)}

/* portada principal */
.hero{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;padding:30px 0 20px}
.hero p{margin:0;color:var(--tx2);max-width:560px}
.stats{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:12px;margin-bottom:22px}
.stat{padding:14px 16px}
.stat b{display:block;font:700 1.6rem "Space Grotesk"}
.stat span{color:var(--tx2);font-size:.82rem}
@media (max-width:640px){.stats{grid-template-columns:repeat(2,1fr)}}
.filtros{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.filtros input[type=search]{flex:2 1 220px;width:auto}
.filtros select{flex:1 1 150px;width:auto;min-width:0}
.layout{display:grid;grid-template-columns:1fr 300px;gap:24px;align-items:start}
@media (max-width:960px){.layout{grid-template-columns:1fr}}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px}
.pcard{display:flex;flex-direction:column;overflow:hidden;color:var(--tx);transition:transform .15s,box-shadow .15s}
.pcard:hover{transform:translateY(-2px);box-shadow:var(--sh2);text-decoration:none}
.portada{aspect-ratio:16/9;background:var(--bd2);position:relative;overflow:hidden}
.portada img{width:100%;height:100%;object-fit:cover}
.portada-vacia{--h:220;width:100%;height:100%;display:grid;place-items:center;
  background:linear-gradient(135deg,hsl(var(--h) 75% 62%),hsl(calc(var(--h) + 50) 70% 48%));
  color:#fff;font:700 2.2rem "Space Grotesk";letter-spacing:.02em}
.portada .estado{position:absolute;top:10px;left:10px;background:var(--card)}
.pcard-body{padding:16px;display:flex;flex-direction:column;gap:10px;flex:1}
.pcard-body h3{margin:0}
.pcard-body p{margin:0;color:var(--tx2);font-size:.9rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pcard-pie{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:10px;border-top:1px solid var(--bd2);font-size:.82rem;color:var(--tx2)}
.pcard-pie .quien{display:flex;align-items:center;gap:7px;min-width:0}
.pcard-pie .quien span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.contadores{display:flex;gap:10px;white-space:nowrap}
.prog{display:flex;align-items:center;gap:10px;font-size:.8rem;color:var(--tx2)}
.prog .barra{flex:1}
.vacio{text-align:center;padding:50px 20px;color:var(--tx2)}

/* actividad */
.feed h3{margin-bottom:12px}
.feed-item{display:flex;gap:10px;padding:10px 0;border-top:1px solid var(--bd2);font-size:.86rem}
.feed-item:first-of-type{border-top:0}
.feed-item small{color:var(--tx3)}

/* detalle de proyecto */
.det-cab{margin:26px 0 22px;overflow:hidden}
.det-portada{aspect-ratio:21/7;max-height:300px;width:100%;background:var(--bd2)}
.det-portada img{width:100%;height:100%;object-fit:cover}
.det-portada .portada-vacia{font-size:3rem}
.det-info{padding:22px;display:grid;grid-template-columns:1fr auto;gap:20px}
@media (max-width:760px){.det-info{grid-template-columns:1fr}.det-portada{aspect-ratio:16/8}}
.det-info h1{margin:8px 0 6px}
.det-info .resumen{color:var(--tx2);margin:0 0 14px;font-size:1.02rem}
.meta{display:flex;flex-wrap:wrap;gap:18px;font-size:.86rem;color:var(--tx2);align-items:center}
.meta b{color:var(--tx);font-weight:600}
.acciones{display:flex;flex-direction:column;gap:8px;min-width:200px}
.like.on{background:var(--pri-soft);border-color:var(--pri);color:var(--pri)}
.det-layout{display:grid;grid-template-columns:1fr 320px;gap:24px;align-items:start}
@media (max-width:960px){.det-layout{grid-template-columns:1fr}}
.seccion{margin-bottom:22px}
.seccion>h2{display:flex;justify-content:space-between;align-items:center}
.desc{white-space:normal;word-wrap:break-word}
.lateral .card{margin-bottom:18px}
.dato{padding:10px 0;border-top:1px solid var(--bd2);font-size:.9rem}
.dato:first-child{border-top:0;padding-top:0}
.dato span{display:block;color:var(--tx3);font-size:.78rem;margin-bottom:3px}
.miembro{display:flex;align-items:center;gap:10px;padding:6px 0}

/* galería */
.galeria{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.g-item{position:relative;border-radius:10px;overflow:hidden;background:var(--bd2);aspect-ratio:4/3}
.g-item img,.g-item video{width:100%;height:100%;object-fit:cover;cursor:zoom-in}
.g-item .g-acc{position:absolute;inset:auto 6px 6px auto;display:flex;gap:4px;opacity:0;transition:.15s}
.g-item:hover .g-acc,.g-item:focus-within .g-acc{opacity:1}
.g-acc button{background:rgba(0,0,0,.65);color:#fff;border:0;border-radius:6px;font-size:.72rem;padding:3px 7px;cursor:pointer}
.g-portada{position:absolute;top:6px;left:6px;background:var(--pri);color:var(--pri-tx);font-size:.68rem;font-weight:700;padding:2px 7px;border-radius:5px}
.docs{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.doc{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--bd);border-radius:10px}
.doc-ico{width:38px;height:38px;border-radius:8px;display:grid;place-items:center;background:var(--pri-soft);color:var(--pri);font:700 .68rem Inter;text-transform:uppercase;flex:none}
.doc-n{flex:1;min-width:0}
.doc-n a{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.doc-n small{color:var(--tx3)}

/* bitácora */
.timeline{position:relative;padding-left:26px}
.timeline::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:2px;background:var(--bd)}
.hito{position:relative;padding-bottom:22px}
.hito::before{content:"";position:absolute;left:-23px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--card);border:3px solid var(--pri)}
.hito-cab{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:baseline}
.hito-cab h3{margin:0}
.hito-meta{font-size:.8rem;color:var(--tx3);display:flex;align-items:center;gap:6px;margin:3px 0 8px}
.hito-pct{font-size:.76rem;font-weight:700;color:var(--pri);background:var(--pri-soft);padding:2px 8px;border-radius:99px}
.hito .galeria{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));margin-top:10px}
.nuevo-avance{border:1px dashed var(--bd);border-radius:12px;padding:16px;margin-bottom:22px}
.nuevo-avance summary{cursor:pointer;font-weight:600;color:var(--pri)}
.nuevo-avance[open] summary{margin-bottom:14px}

/* comentarios */
.coment{display:flex;gap:12px;padding:14px 0;border-top:1px solid var(--bd2)}
.coment:first-of-type{border-top:0}
.coment-c{flex:1;min-width:0}
.coment-c header{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.coment-c header small{color:var(--tx3)}
.coment-c p{margin:4px 0 0;word-wrap:break-word}
.form-coment{display:flex;gap:10px;align-items:flex-start;margin-bottom:8px}
.form-coment textarea{min-height:60px}

/* login */
.auth{max-width:420px;margin:60px auto}
.auth h1{text-align:center}
.auth .sub{text-align:center;color:var(--tx2);margin-bottom:22px}

/* tablas */
.tabla{width:100%;border-collapse:collapse;font-size:.9rem}
.tabla th,.tabla td{padding:11px 12px;border-bottom:1px solid var(--bd2);text-align:left;vertical-align:middle}
.tabla th{color:var(--tx3);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}
.tabla-wrap{overflow-x:auto}
.inline{display:inline}

/* visor */
.visor{position:fixed;inset:0;background:rgba(0,0,0,.88);display:none;place-items:center;z-index:50;padding:20px;cursor:zoom-out}
.visor.on{display:grid}
.visor img{max-height:90vh;max-width:95vw;border-radius:8px}

.pie{padding:40px 16px;color:var(--tx3);font-size:.82rem;text-align:center}

/* aportes del equipo */
.tipo-aporte{display:flex;gap:10px;flex-wrap:wrap}
.tipo-aporte label{margin:0;font-weight:500;cursor:pointer}
.tipo-aporte input{position:absolute;opacity:0;pointer-events:none}
.tipo-aporte span{display:inline-block;padding:9px 14px;border:1px solid var(--bd);border-radius:10px;background:var(--card)}
.tipo-aporte input:checked+span{border-color:var(--pri);background:var(--pri-soft);color:var(--pri);font-weight:600}
.tipo-aporte input:focus-visible+span{outline:2px solid var(--pri)}
.filtro-aportes{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.filtro-aportes a{font-size:.82rem;padding:5px 11px;border-radius:99px;color:var(--tx2);background:var(--bd2)}
.filtro-aportes a:hover{text-decoration:none;color:var(--tx)}
.filtro-aportes a.on{background:var(--pri);color:var(--pri-tx)}
.aporte{padding:16px 0;border-top:1px solid var(--bd2)}
.aporte h3{margin:6px 0 2px}
.aporte-cab{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tipo-chip{font-size:.74rem;font-weight:600;padding:3px 9px;border-radius:6px}
.t-mejora{background:var(--warn-soft);color:var(--warn)}
.t-documentacion{background:var(--pri-soft);color:var(--pri)}
.estado-idea,.sel-estado{font-size:.74rem;font-weight:600;padding:3px 9px;border-radius:99px;border:1px solid transparent}
.sel-estado{width:auto;cursor:pointer;padding:3px 24px 3px 9px}
.ea-nueva{background:var(--bd2);color:var(--tx2)}
.ea-revision{background:var(--pri-soft);color:var(--pri)}
.ea-aceptada{background:color-mix(in srgb,var(--e-idea) 14%,transparent);color:var(--e-idea)}
.ea-implementada{background:var(--ok-soft);color:var(--ok)}
.ea-descartada{background:var(--bd2);color:var(--tx3);text-decoration:line-through}
.aporte .galeria{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));margin-top:10px}

/* zona de riesgo */
.btn-peligro{border-color:color-mix(in srgb,var(--err) 40%,var(--bd))}
.btn-peligro:hover{background:var(--err-soft);border-color:var(--err)}
.zona-riesgo{margin-top:18px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;border-color:color-mix(in srgb,var(--err) 35%,var(--bd))}
.zona-riesgo h3{color:var(--err);margin:0 0 2px}
.zona-riesgo p{margin:0}
.hero p.nota-beta{margin-top:8px;font-size:.84rem;color:var(--tx3)}

/* zona para pegar / arrastrar archivos */
.file-oculto{position:absolute!important;width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden}
.zona-pegar{flex:1 1 100%;border:1.5px dashed var(--bd);border-radius:12px;padding:12px 14px;background:var(--bg);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}
.zona-pegar:hover,.zona-pegar:focus{border-color:var(--pri);outline:none}
.zona-pegar:focus-visible{box-shadow:0 0 0 3px var(--pri-soft)}
.zona-pegar.arrastrando{border-color:var(--pri);background:var(--pri-soft)}
.zona-pegar.destello{box-shadow:0 0 0 3px var(--pri-soft);border-color:var(--pri)}
.zona-pegar.error{border-color:var(--err);background:var(--err-soft)}
.zona-pegar.error .zp-vacio b::after{content:" — agrega al menos un archivo";color:var(--err);font-weight:500}
.zp-vacio{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.zp-vacio>div{flex:1;min-width:180px;font-size:.9rem}
.zp-vacio>div span{color:var(--tx2)}
.zp-ico{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--pri-soft);color:var(--pri);font-size:1.1rem;flex:none}
.zp-lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.zona-pegar.con-archivos .zp-lista{margin-top:12px}
.zp-item{position:relative;border:1px solid var(--bd);border-radius:9px;overflow:hidden;background:var(--card);cursor:default}
.zp-item img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.zp-ext{display:grid;place-items:center;aspect-ratio:4/3;background:var(--pri-soft);color:var(--pri);font:700 .9rem Inter;text-transform:uppercase}
.zp-item small{display:block;padding:5px 7px;font-size:.7rem;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zp-quitar{position:absolute;top:5px;right:5px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.65);color:#fff;font-size:15px;line-height:1;cursor:pointer}
.zp-quitar:hover{background:var(--err)}
