:root{
  --paper:#F1EEE5; --paper-2:#FBF9F3; --paper-tint:#EAEEE0;
  --ink:#15150F; --ink-dim:#57564C;
  --line: rgba(21,21,15,.14); --line-strong: rgba(21,21,15,.32);
  --green:#3E6B27; --green-bright:#5C9A3B;
  --red:#A33B2E; --red-bright:#C24C3D;
  --focus:#3E6B27; --max:1200px;
}
*{ box-sizing:border-box; }
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  line-height:1.5; -webkit-font-smoothing:antialiased;
}
a{ color:inherit; }
img{ max-width:100%; display:block; }
.wrap{ max-width:var(--max); margin:0 auto; padding-inline:clamp(18px,4vw,44px); }
h1,h2,h3{ font-family:'Big Shoulders Display',system-ui,sans-serif; text-transform:uppercase; letter-spacing:-.01em; line-height:1.08; margin:0; font-weight:800; text-wrap:balance; }
.tag{ font-family:'IBM Plex Mono',monospace; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:var(--green); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{ outline:2px solid var(--focus); outline-offset:2px; }

.site-header{ position:sticky; top:0; z-index:40; background:var(--paper); border-bottom:2px solid var(--ink); }
.nav-inner{ max-width:var(--max); margin:0 auto; padding:16px clamp(18px,4vw,44px); display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.brand{ display:flex; align-items:center; gap:10px; text-decoration:none; }
.brand svg{ width:26px; height:26px; }
.brand-word{ font-family:'Big Shoulders Display',sans-serif; font-weight:800; text-transform:uppercase; font-size:1.2rem; }
.brand-word em{ font-style:normal; color:var(--green); }
.brand-sub{ font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-dim); margin-left:8px; padding-left:8px; border-left:1px solid var(--line-strong); }

.nav-main{ display:flex; align-items:center; flex-wrap:wrap; gap:4px; font-family:'IBM Plex Mono',monospace; font-size:.76rem; letter-spacing:.05em; text-transform:uppercase; }
.nav-main a{ text-decoration:none; padding:8px 12px; }
.nav-main a:hover, .nav-main a.activo{ color:var(--green); }
.nav-actions{ display:flex; align-items:center; flex-wrap:wrap; gap:10px 14px; font-family:'IBM Plex Mono',monospace; font-size:.76rem; letter-spacing:.05em; text-transform:uppercase; }
.nav-actions a{ text-decoration:none; }
.nav-actions a:hover{ color:var(--green); }

.btn{
  font-family:'IBM Plex Mono',monospace; font-size:.76rem; letter-spacing:.06em; text-transform:uppercase;
  text-decoration:none; padding:12px 20px; display:inline-flex; align-items:center; gap:8px; border:1px solid var(--ink);
  background:var(--paper); color:var(--ink); cursor:pointer; min-width:0; overflow-wrap:anywhere;
}
.btn.primary{ background:var(--green); border-color:var(--green); color:var(--paper-2); }
.btn.primary:hover{ background:var(--green-bright); border-color:var(--green-bright); }
.btn.danger{ border-color:var(--red); color:var(--red); background:transparent; }
.btn.danger:hover{ background:var(--red); color:var(--paper-2); }
.btn:not(.primary):not(.danger):hover{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.btn.small{ padding:8px 14px; font-size:.68rem; }
.btn[disabled]{ opacity:.4; cursor:not-allowed; }

.masthead{ padding:44px 0 40px; border-bottom:2px solid var(--ink); }
.masthead h1{ font-size:clamp(1.9rem,5vw,3rem); }
.masthead .lede{ margin-top:14px; max-width:60ch; color:var(--ink-dim); }
.masthead-bar{ display:flex; justify-content:space-between; align-items:flex-end; gap:20px; flex-wrap:wrap; }

.vacio{ padding:80px 0; text-align:center; color:var(--ink-dim); font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.06em; font-size:.82rem; }
.volver{ display:inline-flex; align-items:center; gap:6px; font-family:'IBM Plex Mono',monospace; font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-dim); text-decoration:none; margin-bottom:18px; }
.volver:hover{ color:var(--green); }

/* filtros / pills */
.filtros{ display:flex; flex-wrap:wrap; gap:8px; padding:24px 0; }
.pill{ font-family:'IBM Plex Mono',monospace; font-size:.7rem; letter-spacing:.05em; text-transform:uppercase; padding:7px 14px; border:1px solid var(--line-strong); text-decoration:none; color:var(--ink-dim); }
.pill:hover{ border-color:var(--ink); color:var(--ink); }
.pill.activo{ background:var(--ink); border-color:var(--ink); color:var(--paper-2); }

/* foro: lista de preguntas */
.lista-preguntas{ border-top:1px solid var(--line-strong); }
.item-pregunta{ display:block; padding:24px 0; border-bottom:1px solid var(--line-strong); text-decoration:none; color:inherit; }
.item-pregunta:hover .item-pregunta-titulo{ color:var(--green); }
.item-pregunta-meta{ display:flex; gap:12px; align-items:center; font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-dim); margin-bottom:8px; }
.item-pregunta-meta .cat{ color:var(--green); }
.item-pregunta-titulo{ font-family:'Big Shoulders Display',sans-serif; font-weight:800; font-size:1.3rem; text-transform:none; letter-spacing:0; }
.item-pregunta-extracto{ margin-top:6px; color:var(--ink-dim); font-size:.9rem; max-width:80ch; }
.contador-resp{ font-family:'IBM Plex Mono',monospace; font-size:.72rem; color:var(--ink-dim); }

.paginacion{ display:flex; align-items:center; justify-content:center; gap:16px; padding:32px 0; flex-wrap:wrap; }
.paginacion-info{ font-family:'IBM Plex Mono',monospace; font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-dim); }
.pill.deshabilitado{ opacity:.35; pointer-events:none; }

/* foro: detalle */
.pregunta-detalle{ padding:12px 0 28px; border-bottom:1px solid var(--line-strong); }
.pregunta-detalle h1{ font-size:clamp(1.5rem,3.4vw,2.1rem); text-transform:none; letter-spacing:0; margin-top:10px; }
.pregunta-detalle .texto{ margin-top:16px; color:var(--ink-dim); white-space:pre-line; max-width:76ch; }
.respuestas{ margin-top:8px; }
.respuesta{ padding:20px 0; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.respuesta .cuerpo{ flex:1; }
.respuesta .autor{ font-family:'IBM Plex Mono',monospace; font-size:.7rem; letter-spacing:.05em; text-transform:uppercase; color:var(--green); margin-bottom:6px; }
.respuesta .texto{ color:var(--ink-dim); white-space:pre-line; }
.form-respuesta{ margin-top:28px; padding-top:24px; border-top:1px solid var(--line-strong); }

/* capacitación: cursos/módulos */
.grid-cursos{ display:grid; grid-template-columns:repeat(auto-fit, minmax(280px,360px)); justify-content:center; gap:24px; padding:40px 0 80px; }
.card-curso{ border:1px solid var(--line-strong); padding:28px; text-decoration:none; color:inherit; display:flex; flex-direction:column; gap:10px; transition:border-color .2s ease; }
.card-curso:hover{ border-color:var(--ink); }
.card-curso h3{ font-size:1.3rem; }
.card-curso p{ color:var(--ink-dim); font-size:.9rem; margin:0; }
.card-curso .progreso-mini{ margin-top:auto; padding-top:14px; font-family:'IBM Plex Mono',monospace; font-size:.72rem; color:var(--green); border-top:1px solid var(--line); }

.lista-modulos{ border-top:1px solid var(--line-strong); margin-top:24px; }
.item-modulo{ display:flex; justify-content:space-between; align-items:center; gap:16px; padding:20px 0; border-bottom:1px solid var(--line-strong); text-decoration:none; color:inherit; }
.item-modulo:hover .item-modulo-titulo{ color:var(--green); }
.item-modulo-titulo{ font-family:'Big Shoulders Display',sans-serif; font-weight:800; font-size:1.15rem; text-transform:none; letter-spacing:0; }
.check-completado{ font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase; padding:5px 10px; border:1px solid var(--green); color:var(--green); flex:none; }
.check-completado.pendiente{ border-color:var(--line-strong); color:var(--ink-dim); }

.materiales{ margin-top:24px; display:flex; flex-direction:column; gap:10px; }
.material-item{ display:flex; align-items:center; gap:12px; padding:14px 16px; border:1px solid var(--line-strong); text-decoration:none; color:inherit; }
.material-item:hover{ border-color:var(--ink); }
.material-item svg{ width:18px; height:18px; color:var(--green); flex:none; }
.material-item .nombre{ font-size:.92rem; }
.material-video{ margin-bottom:10px; }
.video-wrap{ position:relative; }
.video-player{ width:100%; background:#000; display:block; }
.video-watermark{
  position:absolute; pointer-events:none; user-select:none;
  font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.04em;
  color:rgba(255,255,255,.55); background:rgba(0,0,0,.25); padding:4px 8px;
  transition:top .6s ease, left .6s ease, right .6s ease, bottom .6s ease;
}

/* admin */
.admin-bar{ display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; padding:28px 0; }
.tabla{ width:100%; border-collapse:collapse; margin-top:12px; }
.tabla th{ text-align:left; font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.06em; text-transform:uppercase; color:var(--green); padding:10px 12px; border-bottom:2px solid var(--ink); }
.tabla td{ padding:14px 12px; border-bottom:1px solid var(--line-strong); font-size:.9rem; vertical-align:middle; }
.tabla tr:hover{ background:var(--paper-tint); }
.tabla .acciones{ display:flex; gap:8px; flex-wrap:nowrap; align-items:center; white-space:nowrap; }
.tabla .acciones form{ margin:0; }
.rol-pill{ font-family:'IBM Plex Mono',monospace; font-size:.66rem; letter-spacing:.05em; text-transform:uppercase; padding:4px 10px; border:1px solid var(--line-strong); color:var(--ink-dim); display:inline-block; }
.rol-pill.admin{ border-color:var(--ink); color:var(--ink); }
.rol-pill.instructor{ border-color:var(--green); color:var(--green); }

.login-box{ max-width:380px; margin:80px auto; border:2px solid var(--ink); padding:40px 32px; }
.login-box h1{ font-size:1.6rem; margin-bottom:24px; }

.form-box{ max-width:720px; }
.campo{ display:flex; flex-direction:column; gap:6px; margin-bottom:18px; }
.campo label{ font-family:'IBM Plex Mono',monospace; font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--green); }
.campo input[type=text], .campo input[type=password], .campo input[type=date], .campo input[type=number], .campo select, .campo textarea{
  font-family:'IBM Plex Sans',sans-serif; font-size:.92rem; color:var(--ink); background:var(--paper-2);
  border:1px solid var(--ink); border-radius:0; padding:11px 12px; width:100%; min-width:0; box-sizing:border-box;
}
.campo textarea{ min-height:120px; resize:vertical; }
.campo-row{ display:flex; gap:16px; flex-wrap:wrap; }
.campo-row .campo{ flex:1; min-width:160px; }
.check-row{ display:flex; align-items:center; gap:8px; font-size:.9rem; margin-bottom:10px; }
.error-box{ border:1px solid var(--red); color:var(--red); padding:14px 16px; font-size:.88rem; margin-bottom:20px; }
.ok-box{ border:1px solid var(--green); color:var(--green); padding:14px 16px; font-size:.88rem; margin-bottom:20px; }
.archivos-actuales{ display:flex; flex-direction:column; gap:10px; margin-bottom:16px; }
.archivo-actual-item{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 14px; border:1px solid var(--line-strong); font-size:.86rem; }
.archivo-actual-item form{ margin:0; }

footer{ border-top:1px solid var(--line-strong); padding:24px 0; }
footer .wrap{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.04em; color:var(--ink-dim); text-transform:uppercase; }

/* -- oportunidades inmobiliarias (fusionado desde GTH Propiedades) -- */
.grid-props{ display:grid; grid-template-columns:repeat(auto-fit, minmax(280px,360px)); justify-content:center; gap:24px; padding:48px 0 80px; margin:0; }
.card-prop{ background:var(--paper); border:1px solid var(--line-strong); display:flex; flex-direction:column; text-decoration:none; color:inherit; transition:border-color .2s ease; }
.card-prop:hover{ border-color:var(--ink); }
.card-prop .foto{ aspect-ratio:4/3; background:var(--paper-tint) center/cover no-repeat; position:relative; }
.card-prop .foto .sin-foto{ display:flex; align-items:center; justify-content:center; height:100%; color:var(--ink-dim); font-family:'IBM Plex Mono',monospace; font-size:.7rem; text-transform:uppercase; letter-spacing:.06em; }
.badge{ position:absolute; top:10px; left:10px; font-family:'IBM Plex Mono',monospace; font-size:.64rem; letter-spacing:.06em; text-transform:uppercase; padding:5px 10px; background:var(--paper-2); border:1px solid var(--ink); }
.badge.reservado{ background:var(--ink); color:var(--paper-2); border-color:var(--ink); }
.card-prop .body{ padding:20px; display:flex; flex-direction:column; gap:8px; flex:1; }
.card-prop .tipo{ font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.06em; text-transform:uppercase; color:var(--green); }
.card-prop h3{ font-size:1.25rem; }
.card-prop .ubicacion{ font-size:.86rem; color:var(--ink-dim); }
.card-prop .monto{ margin-top:auto; padding-top:10px; font-family:'IBM Plex Mono',monospace; font-size:.86rem; border-top:1px solid var(--line); }

.detalle{ padding:44px 0 80px; }
.detalle-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:48px; }
.detalle h1{ font-size:clamp(1.8rem,4vw,2.6rem); margin-top:14px; }
.detalle .descripcion{ margin-top:14px; color:var(--ink-dim); white-space:pre-line; max-width:72ch; }
.descripcion-full{ margin-top:56px; padding-top:32px; border-top:1px solid var(--line-strong); }
.ficha{ margin-top:28px; border-top:1px solid var(--line-strong); }

.slider{ position:relative; background:#000; aspect-ratio:4/3; overflow:hidden; }
.slider .slide{ display:none; width:100%; height:100%; }
.slider .slide.activo{ display:block; }
.slider .slide img, .slider .slide video{ width:100%; height:100%; object-fit:cover; display:block; background:#000; }
.slider-nav{ position:absolute; top:50%; transform:translateY(-50%); width:40px; height:40px; background:rgba(21,21,15,.55); border:0; color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; z-index:2; }
.slider-nav:hover{ background:rgba(21,21,15,.8); }
.slider-nav.prev{ left:10px; }
.slider-nav.next{ right:10px; }
.slider-nav svg{ width:18px; height:18px; }
.slider-contador{ position:absolute; bottom:10px; right:10px; background:rgba(21,21,15,.6); color:#fff; font-family:'IBM Plex Mono',monospace; font-size:.7rem; padding:4px 10px; z-index:2; }
.slider-expand{ position:absolute; bottom:10px; left:10px; background:rgba(21,21,15,.6); border:0; color:#fff; font-family:'IBM Plex Mono',monospace; font-size:.66rem; text-transform:uppercase; letter-spacing:.05em; padding:7px 12px; cursor:pointer; display:flex; align-items:center; gap:6px; z-index:2; }
.slider-expand:hover{ background:rgba(21,21,15,.85); }

.lightbox{ position:fixed; inset:0; background:rgba(10,10,8,.96); z-index:100; display:none; align-items:center; justify-content:center; }
.lightbox.abierto{ display:flex; }
.lightbox .slide{ display:none; }
.lightbox .slide.activo{ display:block; }
.lightbox .slide img, .lightbox .slide video{ max-width:90vw; max-height:86vh; width:auto; height:auto; display:block; margin:0 auto; object-fit:contain; }
.lightbox-close{ position:absolute; top:18px; right:22px; background:none; border:0; color:#fff; font-size:2.2rem; line-height:1; cursor:pointer; z-index:2; }
.ficha .fila{ display:flex; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid var(--line); font-size:.92rem; }
.ficha .fila .k{ font-family:'IBM Plex Mono',monospace; font-size:.7rem; letter-spacing:.06em; text-transform:uppercase; color:var(--green); }
.acciones-contacto{ display:flex; flex-direction:column; gap:10px; margin-top:28px; }
.acciones-contacto .btn{ justify-content:center; }

.estado-pill{ font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase; padding:4px 10px; border:1px solid var(--green); color:var(--green); display:inline-block; }
.estado-pill.reservado{ border-color:var(--ink-dim); color:var(--ink-dim); }

.fotos-actuales{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:16px; }
.foto-item{ position:relative; width:110px; }
.foto-item img{ width:110px; height:82px; object-fit:cover; border:1px solid var(--line-strong); }
.foto-item form{ margin-top:4px; }
.tabla .thumb{ width:56px; height:42px; object-fit:cover; background:var(--paper-tint); }

@media (max-width:800px){
  .tabla{ display:block; overflow-x:auto; }
  .respuesta{ flex-direction:column; }
  .detalle-grid{ grid-template-columns:1fr; }
}
