/* Filipuzzi Torralba Propiedades — concepto "Frente a la UNS" (Leomak.Soft)
   La oficina está en Av. Alem 1304, enfrente de la universidad: la mitad fija de la página muestra ese lugar y, en la
   lista, el plano con la distancia a pie desde la sede donde cursás. Colores y letra pesada tomados del logo (rojo y gris
   carbón, techo en ángulo), afinados para contraste AA. Esquinas rectas, como el techo. */
@font-face { font-family: "Funnel Display"; src: url("fonts/funnel-display-800.woff2") format("woff2"); font-weight: 800; font-display: swap; }
@font-face { font-family: "Funnel Display"; src: url("fonts/funnel-display-700.woff2") format("woff2"); font-weight: 700; font-display: swap; }
@font-face { font-family: "Host Grotesk"; src: url("fonts/host-grotesk-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Host Grotesk"; src: url("fonts/host-grotesk-600.woff2") format("woff2"); font-weight: 600; font-display: swap; }

:root {
  --rojo: #d21f2c; --rojo-osc: #a8141f; --carbon: #1f2124; --gris: #575a5e; --niebla: #eceeef; --papel: #ffffff;
  --display: "Funnel Display", "Arial Narrow", sans-serif; --texto: "Host Grotesk", system-ui, sans-serif;
  --t-display: clamp(2.6rem, 5.4vw, 4.75rem); --t-h2: clamp(2rem, 3.4vw, 3rem); --t-fila: clamp(1.25rem, 1.7vw, 1.5rem);
  --t-texto: 1.0625rem; --t-chico: .875rem;
  --margen: clamp(1rem, 3vw, 2rem); --ease: cubic-bezier(.16, 1, .3, 1);
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--papel); color: var(--carbon); font: 400 var(--t-texto)/1.55 var(--texto); }
img, svg { display: block; max-width: 100%; }
h1, h2 { font-family: var(--display); font-weight: 800; letter-spacing: -.03em; line-height: .98; margin: 0; }
p { margin: 0; }
a { color: inherit; }
:focus-visible { outline: 3px solid var(--rojo); outline-offset: 3px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.saltar { position: absolute; left: -9999px; top: 0; z-index: 100; padding: .75rem 1rem; background: var(--carbon); color: var(--papel); }
.saltar:focus { left: 1rem; top: 1rem; }
section { scroll-margin-top: 1rem; }

.franja { padding: .5rem var(--margen); background: var(--carbon); color: #e9eaeb; font-size: var(--t-chico); text-align: center; }

/* Cabecera: barra simple, marca, tres enlaces y una acción. */
.cabecera { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .75rem var(--margen); background: var(--papel); }
.marca { display: flex; align-items: center; gap: .55rem; min-height: 44px; font: 800 1.25rem/1 var(--display); letter-spacing: -.02em; text-decoration: none; }
.marca-techo { width: 30px; height: 15px; color: var(--rojo); }
.cabecera ul { display: none; gap: 1.6rem; margin: 0; padding: 0; list-style: none; }
.cabecera nav a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; text-decoration: none; text-underline-offset: .3em; }
@media (hover: hover) { .cabecera nav a:hover { text-decoration: underline; text-decoration-color: var(--rojo); text-decoration-thickness: 2px; } }
@media (min-width: 760px) { .cabecera ul { display: flex; } }

.boton { display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 0 1.6rem; border: 0; background: var(--rojo); color: var(--papel); font: 600 var(--t-texto) var(--texto); text-decoration: none; cursor: pointer; transition: background-color .2s, transform .2s var(--ease); }
.boton-chico { min-height: 44px; padding: 0 1.1rem; }
.boton:active { transform: translateY(1px); }
@media (hover: hover) { .boton:hover { background: var(--rojo-osc); } }
.enlace { font-weight: 600; text-decoration: underline; text-decoration-color: var(--rojo); text-decoration-thickness: 2px; text-underline-offset: .3em; }
.enlace { display: inline-flex; align-items: center; min-height: 44px; }

/* Split: la lectura a la izquierda, la escena fija a la derecha. En celular la escena va arriba, fija en una franja. */
.split { display: grid; }
.escena { position: relative; order: -1; height: 46svh; overflow: hidden; background: var(--niebla); }
.capa { position: absolute; inset: 0; margin: 0; opacity: 0; transition: opacity 1.6s ease; }
.capa.activa { opacity: 1; }
.capa img { width: 100%; height: 100%; object-fit: cover; }
.capa-mapa { padding: 2rem 1rem 3rem; background: var(--niebla); }
.plano { width: 100%; height: 100%; overflow: visible; }
.plano text { font: 600 15px var(--texto); fill: var(--gris); }
.plano-sedes rect { fill: var(--carbon); }
.plano-sedes g.activa rect { fill: var(--rojo); }
.plano-sedes g.activa text { fill: var(--carbon); }
.plano-oficina use { color: var(--rojo); }
.plano-props circle { fill: var(--papel); stroke: var(--carbon); stroke-width: 3; transition: r .4s var(--ease), fill .3s; }
.plano-props circle.activa { fill: var(--rojo); stroke: var(--rojo); r: 11; }
.plano-ruta { stroke: var(--rojo); stroke-width: 4; stroke-dasharray: 2 10; stroke-linecap: round; }
.plano-rotulo { font-size: 20px !important; fill: var(--carbon) !important; font-family: var(--display) !important; font-weight: 800 !important; }

.lectura { min-width: 0; position: relative; z-index: 1; background: var(--papel); }
.hero { padding: 0 var(--margen) clamp(4rem, 9vw, 7rem); }
.cinta { height: 40px; margin: 0 calc(var(--margen) * -1) clamp(2.5rem, 6vw, 4.5rem); background: var(--carbon) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M4 30 20 14l16 16' fill='none' stroke='%23d21f2c' stroke-width='5'/%3E%3C/svg%3E") 0 0 / 40px 40px repeat-x; }
.hero h1 { font-size: var(--t-display); max-width: 16ch; text-wrap: balance; }
.hero h1 .palabra { display: inline-block; white-space: nowrap; }
.hero h1 .letra { display: inline-block; transform-origin: 50% 100%; }
.hero-bajada { max-width: 40ch; margin-top: 2rem; font-size: 1.25rem; }
.hero-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.6rem; margin-top: 2.2rem; }

.lista { padding: clamp(3.5rem, 8vw, 7rem) var(--margen); background: var(--niebla); }
.lista h2 { font-size: var(--t-h2); max-width: 18ch; }
.buscador { display: grid; gap: .9rem; margin-top: 2rem; }
.buscador label, .form-tas label { display: grid; gap: .35rem; font-weight: 600; font-size: var(--t-chico); }
select, input { width: 100%; min-height: 52px; padding: .6rem .85rem; border: 2px solid var(--carbon); border-radius: 0; background: var(--papel); color: var(--carbon); font: 400 1rem var(--texto); }
input::placeholder { color: #6a6d71; }
.estado { margin-top: 1.4rem; }
.estado span { color: var(--carbon); font-weight: 600; }
.filas { display: grid; gap: 4px; margin: 1.4rem 0 0; padding: 0; list-style: none; }
.fila { padding: 0 1rem; background: var(--papel); transition: background-color .25s; }
.fila-cab { display: flex; width: 100%; min-height: 64px; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 1rem 0; border: 0; background: none; color: var(--gris); font: 700 var(--t-fila)/1.2 var(--display); letter-spacing: -.01em; text-align: left; cursor: pointer; transition: color .25s; }
.fila-precio { flex: none; font: 600 var(--t-texto) var(--texto); }
.fila.activa .fila-cab { color: var(--carbon); }
.fila.activa .fila-dir { text-decoration: underline; text-decoration-color: var(--rojo); text-decoration-thickness: 3px; text-underline-offset: .25em; }
.fila-det { display: grid; gap: .3rem; max-width: 46ch; padding: 0 0 1.2rem; }
.fila-det p { font-size: var(--t-texto); }
.fila-dist { color: var(--rojo-osc); }
html.anim .fila:not(.abierta) .fila-det { display: none; }
@media (min-width: 560px) { .buscador { grid-template-columns: 1.4fr 1fr; } }

.intro { padding: clamp(4rem, 9vw, 7rem) var(--margen) clamp(5rem, 10vw, 8rem); }
.intro p { max-width: 40ch; margin-top: 1.1rem; }
.intro .intro-uno { margin-top: 0; color: var(--carbon); font-weight: 600; font-size: 1.25rem; }

@media (min-width: 960px) {
  .split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .escena { position: sticky; top: 0; order: 0; height: 100svh; }
  .lectura { padding-right: 0; }
  .hero { min-height: calc(100svh - 7rem); display: flex; flex-direction: column; justify-content: center; padding-top: 0; }
  .cinta { margin-top: 0; }
  .intro { padding-left: 15%; }
}

/* Propietarios: rompe el split y ocupa todo el ancho, en el rojo de la marca. */
.propietarios { display: grid; gap: 2.5rem; padding: clamp(4rem, 10vw, 8rem) var(--margen); background: var(--rojo); color: var(--papel); }
.propietarios h2 { font-size: var(--t-h2); max-width: 18ch; }
.propietarios-texto p { max-width: 42ch; margin-top: 1.4rem; font-size: 1.25rem; }
.form-tas { display: grid; gap: 1rem; align-content: start; }
.form-tas select, .form-tas input { border-color: var(--papel); }
.boton-claro { background: var(--carbon); color: var(--papel); }
@media (hover: hover) { .boton-claro:hover { background: #000; } }
.aviso { font-size: var(--t-texto); }
@media (min-width: 900px) { .propietarios { grid-template-columns: 1fr 1fr; align-items: start; } }

/* Contacto: campo carbón, tira de fotos que deriva despacio y tres celdas. */
.contacto { padding: 3rem 0 clamp(4rem, 9vw, 7rem); background: var(--carbon); color: var(--papel); overflow: hidden; }
.tira { overflow: hidden; }
.tira-pista { display: flex; gap: 8px; width: max-content; }
.tira img { height: 150px; width: auto; object-fit: cover; }
.contacto h2 { margin: 4rem var(--margen) 0; font-size: var(--t-h2); }
.celdas { display: grid; gap: 8px; margin: 2.5rem var(--margen) 0; padding: 0; list-style: none; }
.celdas a { display: grid; gap: .2rem; min-height: 96px; align-content: center; padding: 1rem 1.3rem; background: #2f3236; color: var(--papel); text-decoration: none; overflow-wrap: anywhere; transition: background-color .2s; }
.celdas span { font: 800 var(--t-fila) var(--display); }
.celdas li:first-child a { background: var(--rojo); }
@media (hover: hover) { .celdas a:hover { background: #3d4146; } .celdas li:first-child a:hover { background: var(--rojo-osc); } }
@media (min-width: 760px) { .celdas { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 759px) { .tira img { height: 110px; } }

/* Pie: la última foto es el pie, con el nombre a todo el ancho. */
.pie { position: relative; display: grid; grid-template-rows: auto 1fr auto auto; min-height: 88svh; padding: 2rem var(--margen) 1.5rem; color: var(--papel); background: #111214; overflow: hidden; }
.pie-foto { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(.45); }
.pie > :not(.pie-foto) { position: relative; }
.pie-arriba { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1.5rem; }
.pie-arriba ul { display: grid; gap: .2rem; margin: 0; padding: 0; list-style: none; }
.pie-arriba a { display: inline-flex; align-items: center; min-height: 44px; }
.pie-arriba p { text-align: right; }
.pie-nombre { grid-row: 3; font: 800 clamp(3rem, 11.5vw, 11rem)/.9 var(--display); letter-spacing: -.045em; white-space: nowrap; }
.pie-legal { margin-top: 1rem; font-size: var(--t-chico); color: #e3e4e5; max-width: 110ch; }
.pie-legal a { text-underline-offset: .2em; }
.creditos { font-size: var(--t-chico); }

::selection { background: var(--rojo); color: var(--papel); }
html { scrollbar-color: var(--rojo) var(--niebla); accent-color: var(--rojo); caret-color: var(--rojo); }
h1, h2 { text-wrap: balance; }
p { text-wrap: pretty; }

/* Entradas: solo con JS y sin reduced-motion (el contenido nunca queda oculto si el script falla). */
html.anim [data-entra] { opacity: 0; }
html.anim .sube { opacity: 0; transform: translateY(24px); }
html.anim .sube.vista { opacity: 1; transform: none; transition: opacity .8s var(--ease), transform .8s var(--ease); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}


/* Contacto en escritorio: título y celdas en la misma fila de la grilla, sin hueco en el medio. */
@media (min-width: 960px) {
  .contacto { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.6fr); align-items: end; column-gap: 3rem; }
  .tira { grid-column: 1 / -1; }
  .contacto h2 { margin-right: 0; }
  .celdas { margin-left: 0; }
}


/* Fila: dirección y, debajo, siempre visibles los minutos a pie y qué es. */
.fila-dir { display: grid; gap: .25rem; }
.fila-meta { font: 400 var(--t-chico)/1.35 var(--texto); letter-spacing: 0; color: var(--gris); }
.fila-min { color: var(--rojo-osc); font-weight: 600; }
.fila-precio small { font-size: var(--t-chico); font-weight: 400; color: var(--gris); }
.fila-det { grid-template-columns: 1fr; }
.fila-det .enlace { justify-self: start; }

/* Plano compacto sobre la lista en pantallas chicas; en escritorio lo muestra la escena fija. */
.plano-movil { margin-top: 1.4rem; aspect-ratio: 4 / 5; max-height: 52svh; padding: .8rem; background: var(--papel); }
.plano-movil .plano { width: 100%; height: 100%; }
.plano-rotulo { paint-order: stroke; stroke: var(--niebla); stroke-width: 6px; }
.plano-movil .plano-rotulo { stroke: var(--papel); }
@media (min-width: 960px) { .plano-movil { display: none; } }
@media (max-width: 959px) {
  .escena { height: 32svh; }
  .cinta { margin-bottom: 1.5rem; }
  .hero { padding-bottom: 3.5rem; }
}

/* Capa de efectos (360° y mapa) a tono con esta marca: esquinas rectas, mismo margen y mismo título. */
.fx-360-marco, .fx-mapa-frame, .fx-mapa-lista a { border-radius: 0; }
.fx-360, .fx-mapa { max-width: none; margin-inline: 0; padding-inline: var(--margen); }
.fx-360 h2, .fx-mapa h2 { font-size: var(--t-h2); }
.fx-mapa-lista a { border: 0; background: var(--niebla); }
.fx-mapa-lista a[aria-current="true"] { background: var(--carbon); color: var(--papel); }
.fx-360-ayuda { opacity: 1; color: var(--gris); font-size: var(--t-chico); flex-wrap: nowrap; align-items: baseline; }
.fx-360-credito { opacity: 1; font-size: inherit; }

.plano-movil .plano text { font-size: 26px; }
.plano-movil .plano-rotulo { font-size: 30px !important; }
.plano-movil .plano-props circle { r: 10; stroke-width: 4; }
.plano-movil .plano-props circle.activa { r: 15; }
.plano-calles polyline { fill: none; stroke: #b9bdc1; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.plano-calle { font-size: 13px !important; fill: #8a8e93 !important; letter-spacing: .02em; }
.fx-mapa .fx-mapa-lista a { background: var(--niebla); color: var(--carbon); }
.fx-mapa .fx-mapa-lista a[aria-current="true"], .fx-mapa .fx-mapa-lista a:hover { background: var(--carbon); color: var(--papel); }
@media (max-width: 599px) { .fx-360-rumbo { display: none; } }

/* fx: colores para la capa de efectos */
:root { --fx-acento: #d21f2c; --fx-oscuro: #1f2124; --fx-claro: #eceeef; }
