/* ==========================================================================
   OBRA OS · Planificador lean
   Portada y página de entrada · sistema visual «Luz precisa»
   Tokens de marca/tokens/tokens.css. Tipografía Google Sans (specs/ui.md; Jost solo en el logotipo): pesos 400 y 500,
   nada en 700. Los colores salen de :root: no escribir #hex fuera de él ni radios que no
   estén declarados aquí. La sección 11 es de login.html: no tocarla desde la portada.
   ========================================================================== */

/* --- 1 · Tipografía ------------------------------------------------------ */
@font-face{
  font-family:'Jost';
  src:url('vendor/fonts/Jost-Regular.ttf') format('truetype');
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Jost';
  src:url('vendor/fonts/Jost-Medium.ttf') format('truetype');
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Google Sans';
  src:url('vendor/fonts/GoogleSans-latin.woff2') format('woff2');
  font-weight:400 500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Google Sans Flex';
  src:url('vendor/fonts/GoogleSansFlex-latin.woff2') format('woff2');
  font-weight:400 500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Google Sans Code';
  src:url('vendor/fonts/GoogleSansCode-latin.woff2') format('woff2');
  font-weight:400 500; font-style:normal; font-display:swap;
}

/* --- 2 · Tokens ---------------------------------------------------------- */
:root{
  --cal-pz950:#0E1718; --cal-pz900:#1A2829; --cal-pz800:#253738; --cal-pz700:#314749;
  --cal-pz600:#3E5457; --cal-pz500:#4E686A; --cal-pz400:#6C8586; --cal-pz300:#94A9A9;
  --cal-pz200:#C0CDCC; --cal-pz100:#E1E8E7;
  --cal-am700:#9E620F; --cal-am600:#D0851C; --cal-am500:#F2A93B; --cal-am400:#F7C063;
  --cal-papel:#FAF6EC; --cal-cr500:#F4EACB; --cal-cr400:#E6D9B4; --cal-cr300:#D6C79C;
  --cal-blanco:#FFFFFF;
  --cal-ok:#4F7A5B; --cal-warn:#B4761C; --cal-err:#A8402F; --cal-info:#3E6E7A;

  --fj:'Google Sans','Segoe UI',Arial,sans-serif;
  --fd:'Google Sans Flex','Google Sans',sans-serif;

  /* Forma: angular. 0 en fondos, 4px en tarjetas, 2px en badges e inputs. Botones en pastilla. */
  --r-fondo:0; --r-tarjeta:4px; --r-badge:2px; --r-boton:999px;
  --borde:1px;
  --sombra:0 8px 24px -12px rgba(22,33,31,.18);
  --ancho-max:1180px;
}

/* --- 3 · Base ------------------------------------------------------------ */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
}
body{
  margin:0;
  background:var(--cal-papel);
  color:var(--cal-pz800);
  font-family:var(--fj);
  font-weight:400;
  font-size:1.0625rem;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
}
img,svg{max-width:100%;display:block}
a{color:inherit}
p{margin:0}
strong,b{font-weight:500}
::selection{background:var(--cal-am500);color:var(--cal-pz950)}
section[id]{scroll-margin-top:74px}

/* Foco visible: ámbar oscuro sobre claro, ámbar sobre pizarra. */
:focus-visible{outline:3px solid var(--cal-am700);outline-offset:3px}
.oscuro :focus-visible,.cabecera :focus-visible,.pie :focus-visible{outline-color:var(--cal-am500)}

/* Margen exterior del 7 % — regla 1 del sistema. */
.contenedor{width:min(var(--ancho-max),100% - 14vw);margin-inline:auto}
@media (max-width:560px){ .contenedor{width:calc(100% - 2.5rem)} }

.salto-contenido{
  position:absolute;left:-9999px;top:0;
  background:var(--cal-am500);color:var(--cal-pz950);
  font-weight:500;font-size:.85rem;padding:.75rem 1.25rem;z-index:100;
}
.salto-contenido:focus{left:0}

/* --- 4 · Tipografía del sistema ------------------------------------------ */
.eyebrow{
  font-weight:500;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--cal-am700);margin:0;
}
.oscuro .eyebrow{color:var(--cal-am500)}

h1,h2,h3{font-family:var(--fd);font-weight:500;letter-spacing:-.02em;margin:0;text-wrap:balance}
h1{font-size:clamp(2.2rem,5.2vw,3.9rem);line-height:1.06}
h2{font-size:clamp(1.8rem,3.4vw,2.6rem);line-height:1.12}
h3{font-size:1.15rem;line-height:1.3;letter-spacing:-.01em}

/* Filamento — barra ámbar horizontal. Siempre horizontal, nunca diagonal. */
.filamento{height:5px;width:112px;background:var(--cal-am500);border:0;margin:0}
.filamento.corto{width:64px;height:4px}

.bajada{
  font-size:clamp(1.05rem,1.5vw,1.2rem);line-height:1.6;
  color:var(--cal-pz500);max-width:64ch;margin:0;
}
.oscuro .bajada{color:var(--cal-pz200)}

.etiqueta{
  font-weight:500;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--cal-am700);margin:0;
}
.oscuro .etiqueta{color:var(--cal-am500)}

/* --- 5 · Fondos ---------------------------------------------------------- */
.oscuro{
  background:var(--cal-pz600);
  color:var(--cal-cr500);
  position:relative;overflow:hidden;
  border-radius:var(--r-fondo);
}
.oscuro.profundo{background:var(--cal-pz950)}
.oscuro.media{background:var(--cal-pz900)}
.oscuro > *{position:relative;z-index:2}
.fondo-suave{background:var(--cal-pz100)}

/* Haz de luz */
.haz::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(62% 62% at 12% 0%,rgba(242,169,59,.28),transparent 68%);
}
.haz-inferior::before{
  background:radial-gradient(58% 58% at 94% 100%,rgba(242,169,59,.17),transparent 72%);
}
/* Malla técnica — grilla de 64 px que se desvanece en diagonal */
.malla::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.26;
  background-image:
    linear-gradient(to right,rgba(244,234,203,.55) 1.2px,transparent 1.2px),
    linear-gradient(to bottom,rgba(244,234,203,.55) 1.2px,transparent 1.2px);
  background-size:64px 64px;
  -webkit-mask-image:linear-gradient(to bottom right,black,transparent 62%);
  mask-image:linear-gradient(to bottom right,black,transparent 62%);
}

/* --- 6 · Controles ------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  font-family:var(--fj);font-weight:500;font-size:.95rem;letter-spacing:.03em;
  padding:1rem 1.8rem;border-radius:var(--r-boton);
  text-decoration:none;cursor:pointer;border:2px solid transparent;
  transition:background-color .18s ease,color .18s ease,border-color .18s ease,transform .18s ease;
}
.btn:active{transform:translateY(1px)}
.btn .flecha{transition:transform .18s ease}
.btn:hover .flecha{transform:translateX(4px)}
.btn:disabled{opacity:.6;cursor:progress}

/* Primario: ámbar sólido, texto pizarra 950. Uno solo por pantalla. */
.btn-primario{background:var(--cal-am500);color:var(--cal-pz950)}
.btn-primario:hover{background:var(--cal-am400)}

/* Secundario: contorno crema sobre oscuro; contorno pizarra sobre claro. */
.btn-secundario{border-color:var(--cal-cr500);color:var(--cal-cr500);background:transparent}
.btn-secundario:hover{background:var(--cal-cr500);color:var(--cal-pz900)}
.btn-secundario.sobre-claro{border-color:var(--cal-pz700);color:var(--cal-pz700)}
.btn-secundario.sobre-claro:hover{background:var(--cal-pz700);color:var(--cal-papel)}

.btn-compacto{padding:.65rem 1.2rem;font-size:.82rem}

/* Enlace de acción: ámbar, subrayado de 2 px. */
.enlace{
  display:inline-flex;align-items:center;gap:.45rem;
  font-weight:500;font-size:.92rem;letter-spacing:.02em;
  color:var(--cal-am700);text-decoration:none;
  border-bottom:2px solid var(--cal-am500);padding-bottom:2px;
  background:none;cursor:pointer;font-family:var(--fj);padding-inline:0;border-top:0;border-left:0;border-right:0;
}
.oscuro .enlace{color:var(--cal-am500)}
.enlace:hover{border-bottom-color:var(--cal-am700)}
.oscuro .enlace:hover{border-bottom-color:var(--cal-am400)}

/* --- 7 · Ampolleta E1 y cabecera ----------------------------------------- */
.e1{display:block;flex:none}
/* E1: relleno crema con el borde un poco más oscuro, sombreado gris pizarra en el borde y casquillo crema. */
.e1-g0{stop-color:var(--cal-cr500)}
.e1-g1{stop-color:var(--cal-cr400)}
.e1-sombra{stroke:var(--cal-pz300)}
.e1-barras{fill:var(--cal-cr500)}
.cabecera{
  position:sticky;top:0;z-index:50;
  background:var(--cal-pz950);
  border-bottom:var(--borde) solid var(--cal-pz800);
}
.cabecera-fila{
  display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
  min-height:74px;
}
.marca{display:flex;flex-direction:column;text-decoration:none;color:var(--cal-cr500);line-height:1}
.marca .nombre{font-family:'Jost','Futura',sans-serif;font-weight:500;font-size:1.35rem;letter-spacing:-.01em}
.marca .bajo{
  font-family:'Jost','Futura',sans-serif;display:block;font-weight:500;font-size:.62rem;letter-spacing:.26em;
  color:var(--cal-pz300);margin-top:.4rem;text-transform:uppercase;
}
.marca-e1{flex-direction:row;align-items:center;gap:.75rem}
.marca-texto{display:flex;flex-direction:column;line-height:1}
.nav{display:flex;align-items:center;gap:2rem;margin-left:auto}
.nav a{
  font-weight:500;font-size:.85rem;letter-spacing:.04em;
  color:var(--cal-pz200);text-decoration:none;
}
.nav a:hover{color:var(--cal-am500)}
.cabecera .btn{border-radius:var(--r-boton)}
@media (max-width:900px){ .nav{display:none} .cabecera-fila{justify-content:space-between} }

/* --- 8 · Héroe ----------------------------------------------------------- */
.hero{padding-block:clamp(3rem,8vw,6.5rem)}
.hero-grid{
  display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);
  gap:clamp(2rem,5vw,5rem);align-items:center;
}
.hero-texto{display:flex;flex-direction:column;gap:1.75rem;align-items:flex-start}
.hero-texto h1{max-width:19ch}
.hero-acciones{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.2rem}
.hero-demo{font-size:.95rem;color:var(--cal-pz200)}
.hero-demo .enlace{margin-left:.35rem}

/* La ampolleta grande. El halo y los atributos del SVG los mueve el script de index.html;
   sin JS, o con prefers-reduced-motion, queda quieta con este halo fijo. */
.ampolleta{position:relative;width:min(100%,400px);aspect-ratio:1;justify-self:center}
.ampolleta .halo{
  position:absolute;inset:-30%;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle closest-side,var(--cal-am500) 0%,transparent 100%);
  opacity:.34;will-change:transform,opacity;
}
.ampolleta .e1{position:relative;width:100%;height:100%;overflow:visible}
/* La luz de adentro: lo único de la E1 que se mueve (con el halo). */
/* La luz de adentro tiñe el vidrio crema (multiplicar: crema × ámbar = ámbar). */
.ampolleta #e1-luz{mix-blend-mode:multiply}
.luz-centro{stop-color:var(--cal-am500);stop-opacity:.95}
.luz-borde{stop-color:var(--cal-am500);stop-opacity:0}
@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr}
  .ampolleta{order:-1;width:min(56vw,220px);justify-self:start}
  .hero-texto h1{max-width:none}
}

/* Franja de lo que se puede dar por cierto */
.hechos-lista{
  list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(4,1fr);
}
.hechos-lista li{
  display:flex;flex-direction:column;gap:.35rem;
  padding:1.6rem 1.5rem;border-left:var(--borde) solid var(--cal-pz700);
}
.hechos-lista li:first-child{border-left:0;padding-left:0}
.hechos-lista strong{color:var(--cal-cr500);font-size:1rem;line-height:1.35}
.hechos-lista span{color:var(--cal-pz200);font-size:.9rem;line-height:1.5}
@media (max-width:980px){
  .hechos-lista{grid-template-columns:1fr 1fr}
  .hechos-lista li:nth-child(odd){border-left:0;padding-left:0}
  .hechos-lista li:nth-child(n+3){border-top:var(--borde) solid var(--cal-pz700)}
}
@media (max-width:560px){
  .hechos-lista{grid-template-columns:1fr}
  .hechos-lista li{border-left:0;padding-left:0;padding-block:1.2rem}
  .hechos-lista li+li{border-top:var(--borde) solid var(--cal-pz700)}
}

/* --- 9 · Secciones ------------------------------------------------------- */
.seccion{padding-block:clamp(4rem,8vw,6.5rem)}
.seccion-encabezado{
  display:flex;flex-direction:column;gap:1.25rem;align-items:flex-start;
  max-width:70ch;margin-bottom:clamp(2.5rem,5vw,3.75rem);
}

.rejilla{display:grid;gap:1.5rem}
.rejilla-3{grid-template-columns:repeat(3,1fr)}
.rejilla-2{grid-template-columns:repeat(2,1fr)}
@media (max-width:980px){ .rejilla-3{grid-template-columns:1fr 1fr} }
@media (max-width:680px){ .rejilla-3,.rejilla-2{grid-template-columns:1fr} }

.tarjeta{
  background:var(--cal-blanco);border:var(--borde) solid var(--cal-pz200);
  border-radius:var(--r-tarjeta);
  padding:1.9rem 1.75rem;
  display:flex;flex-direction:column;gap:.9rem;
  transition:border-color .18s ease,box-shadow .18s ease;
}
.tarjeta:hover{border-color:var(--cal-pz300);box-shadow:var(--sombra)}
.tarjeta p{margin:0;color:var(--cal-pz500);font-size:.98rem}
.tarjeta h3{color:var(--cal-pz800)}
.tarjeta .btn{align-self:flex-start;margin-top:auto}
.tarjeta .decide{
  margin-top:auto;padding-top:.9rem;border-top:var(--borde) solid var(--cal-pz100);
  font-size:.92rem;color:var(--cal-pz700);
}
.tarjeta .decide strong{color:var(--cal-am700)}

.tarjeta.oscura{background:var(--cal-pz800);border-color:var(--cal-pz700)}
.tarjeta.oscura h3{color:var(--cal-cr500)}
.tarjeta.oscura p{color:var(--cal-pz200)}

/* Las seis ideas: grilla de 12 columnas, tarjetas de distinto ancho. */
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:1.5rem}
.t-7{grid-column:span 7}
.t-5{grid-column:span 5}
.t-4{grid-column:span 4}
.t-12{grid-column:span 12}
.tarjeta.ancha{
  display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.6fr);
  gap:.9rem 3rem;align-items:start;
}
@media (max-width:980px){
  .t-7,.t-5{grid-column:span 12}
  .t-4{grid-column:span 6}
  .bento .t-4:nth-child(5){grid-column:span 12}
}
@media (max-width:820px){ .tarjeta.ancha{grid-template-columns:1fr} }
@media (max-width:680px){ .t-4{grid-column:span 12} }

/* Una semana en la obra: una fila por momento */
.pasos{display:grid;gap:0;list-style:none;margin:0;padding:0}
.paso{
  display:grid;grid-template-columns:150px 1fr;gap:1.5rem;align-items:start;
  padding-block:1.75rem;border-top:var(--borde) solid var(--cal-pz700);
}
.paso:last-child{border-bottom:var(--borde) solid var(--cal-pz700)}
.paso-dia{
  font-weight:500;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--cal-am500);padding-top:.35rem;
}
.paso h3{color:var(--cal-cr500);margin-bottom:.5rem}
.paso p{color:var(--cal-pz200);max-width:68ch}
@media (max-width:680px){ .paso{grid-template-columns:1fr;gap:.4rem} .paso-dia{padding-top:0} }

/* Ejemplo del PPC (rotulado como ilustrativo) */
.ejemplo-grid{
  display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);
  gap:clamp(2rem,5vw,4.5rem);align-items:start;
}
.ejemplo-grid .seccion-encabezado{margin-bottom:0}
.reserva{
  border-left:4px solid var(--cal-am500);padding-left:1rem;
  color:var(--cal-pz700);font-size:.98rem;max-width:62ch;
}
.ejemplo-ficha{
  margin:0;background:var(--cal-pz800);color:var(--cal-cr500);
  border-radius:var(--r-tarjeta);padding:clamp(1.4rem,3vw,2.1rem);
  display:flex;flex-direction:column;gap:1.15rem;
}
.rotulo{
  font-size:.76rem;line-height:1.45;letter-spacing:.04em;
  background:var(--cal-pz700);color:var(--cal-am400);
  border-radius:var(--r-badge);padding:.55rem .75rem;
}
.ppc-cuadros{display:grid;grid-template-columns:repeat(10,1fr);gap:6px}
.ppc-cuadros span{aspect-ratio:1;border-radius:var(--r-badge);display:block}
.ppc-cuadros .ok{background:var(--cal-am500)}
.ppc-cuadros .no{border:2px solid var(--cal-pz300)}
.ppc-cuenta{font-size:1.1rem;line-height:1.5}
.ppc-cifra{color:var(--cal-am500)}
.ppc-sub{font-size:.85rem;color:var(--cal-pz200);margin-bottom:-.5rem}
.causas{list-style:none;margin:0;padding:0;display:grid;gap:.1rem}
.causas li{
  display:flex;justify-content:space-between;gap:1rem;
  padding:.6rem 0;border-bottom:var(--borde) solid var(--cal-pz700);
}
.causas b{color:var(--cal-am500);font-variant-numeric:tabular-nums}
.ppc-nota{font-size:.9rem;color:var(--cal-pz200);line-height:1.5}
@media (max-width:900px){ .ejemplo-grid{grid-template-columns:1fr} .ejemplo-grid .seccion-encabezado{margin-bottom:.5rem} }

/* Cierre */
.cierre{padding-block:clamp(4rem,8vw,6.5rem)}

/* Pie */
.pie{background:var(--cal-pz900);color:var(--cal-cr500);padding-block:3rem}
.pie-inner{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:2.5rem;align-items:start}
.pie-marca{display:flex;flex-direction:column;gap:1.25rem}
.pie .quien{font-size:.95rem;line-height:1.6;color:var(--cal-pz200);max-width:46ch}
.pie-nav{display:flex;flex-wrap:wrap;gap:.75rem 1.75rem;justify-content:flex-end}
.pie-nav a{font-size:.9rem;color:var(--cal-pz200);text-decoration:none}
.pie-nav a:hover{color:var(--cal-am500)}
.pie-legal{
  border-top:var(--borde) solid var(--cal-pz800);margin-top:2.25rem;padding-top:1.25rem;
  display:flex;flex-wrap:wrap;gap:.75rem 2rem;justify-content:space-between;
  font-size:.78rem;letter-spacing:.06em;color:var(--cal-pz300);
}
@media (max-width:760px){ .pie-inner{grid-template-columns:1fr} .pie-nav{justify-content:flex-start} }

/* ==========================================================================
   11 · PÁGINA DE ENTRADA (login.html) — mismos tokens, otro layout
   ========================================================================== */
.pagina-login{min-height:100vh;display:flex;flex-direction:column}
.pagina-login .cabecera{position:relative}
.entrada{flex:1;display:grid;grid-template-columns:1.05fr .95fr;min-height:calc(100vh - 74px)}
.entrada-panel{padding:clamp(3rem,7vw,6rem) clamp(1.5rem,7vw,6rem);display:flex;flex-direction:column;justify-content:center;gap:1.75rem}
.entrada-panel h1{font-size:clamp(2.1rem,4.4vw,3.3rem)}
.entrada-panel .lista{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.75rem;color:var(--cal-pz200)}
.entrada-panel .lista li{display:flex;gap:.75rem;align-items:flex-start}
.entrada-panel .lista li::before{content:"";width:10px;height:2px;background:var(--cal-am500);margin-top:.8rem;flex:none}
.entrada-form{display:flex;align-items:center;justify-content:center;padding:clamp(2rem,5vw,4rem) clamp(1.25rem,5vw,4rem)}
@media (max-width:900px){
  .entrada{grid-template-columns:1fr;min-height:0}
  .entrada-panel{padding-block:clamp(2.5rem,8vw,4rem)}
}

.ficha{
  width:100%;max-width:440px;
  background:var(--cal-blanco);border:var(--borde) solid var(--cal-pz200);
  border-top:5px solid var(--cal-am500);
  border-radius:var(--r-tarjeta);
  padding:clamp(1.75rem,3vw,2.5rem);
  box-shadow:var(--sombra);
}
.ficha .titulo{font-weight:500;font-size:1.4rem;letter-spacing:-.01em;color:var(--cal-pz800);margin:0 0 .35rem}
.ficha .apoyo{margin:0 0 1.5rem;color:var(--cal-pz500);font-size:.95rem}

.campos{display:grid;gap:1.05rem}
.campo{display:flex;flex-direction:column;gap:.4rem}
.campo label{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--cal-pz500);font-weight:500}
.campo input,.campo textarea{
  font-family:var(--fj);font-size:1rem;color:var(--cal-pz800);
  background:var(--cal-blanco);border:var(--borde) solid var(--cal-pz200);border-radius:var(--r-tarjeta);
  padding:.85rem .95rem;width:100%;transition:border-color .18s ease;
}
.campo textarea{resize:vertical;min-height:6.5rem;line-height:1.45}
.campo input::placeholder,.campo textarea::placeholder{color:var(--cal-pz300)}
.campo input:focus,.campo textarea:focus{border-color:var(--cal-pz600);outline:none}
.con-error input{border-color:var(--cal-err)}
.error{font-size:.85rem;line-height:1.45;color:var(--cal-err);margin:.15rem 0 0}
.aviso{
  border-left:3px solid var(--cal-am500);background:var(--cal-cr500);
  padding:.75rem 1rem;font-size:.92rem;color:var(--cal-pz800);border-radius:var(--r-badge);
}
.aviso.ok{border-left-color:var(--cal-ok)}
.ficha .btn{width:100%;margin-top:1.4rem}
.ficha .btn-primario{background:var(--cal-pz600);color:var(--cal-cr500)}
.ficha .btn-primario:hover{background:var(--cal-pz700)}
.ficha .alternativas{
  display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;justify-content:center;
  margin-top:1.25rem;font-size:.9rem;
}
.ficha .alternativas .enlace{font-size:.88rem}
.ficha .nota{font-size:.78rem;letter-spacing:.03em;color:var(--cal-pz400);margin:1rem 0 0;text-align:center}
