/* ==========================================================================
   LUMO Arquitectura — estilos del sitio
   ========================================================================== */
:root {
	--dark: #111821;
	--ink: #111111;
	--muted: #8b9097;
	--muted-light: #9a9a9a;
	--header-h: 72px;
	--font: "Helvetica Neue", Helvetica, Arial, sans-serif;
	--gap: 2px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	font-family: var(--font);
	font-size: 15px;
	line-height: 1.6;
	background: var(--dark);
	color: #fff;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
body.lumo-light { background: #fff; color: var(--ink); }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); white-space: nowrap;
}
.skip-link:focus {
	clip: auto; clip-path: none; width: auto; height: auto; z-index: 999;
	top: 8px; left: 8px; padding: 8px 12px; background: #fff; color: var(--ink);
}

/* Encabezado ------------------------------------------------------------- */
.site-header {
	position: sticky; top: 0; z-index: 50;
	height: var(--header-h);
	background: var(--dark);
}
.lumo-light .site-header { background: #fff; }
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 0; } }

.site-header__inner {
	height: 100%;
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	padding: 0 28px;
}
.site-logo { display: inline-block; }
.site-logo img { height: 32px; width: auto; }
.lumo-light .site-logo img { filter: invert(1); }

.site-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 44px; }
.site-nav a,
.site-header__lang a {
	font-size: 18px;
	color: var(--muted);
	transition: color .2s ease;
}
.site-nav a:hover,
.site-header__lang a:hover { color: #fff; }
.site-nav a.is-active { color: #fff; font-weight: 700; }
.lumo-light .site-nav a,
.lumo-light .site-header__lang a { color: var(--muted-light); }
.lumo-light .site-nav a:hover,
.lumo-light .site-header__lang a:hover,
.lumo-light .site-nav a.is-active { color: var(--ink); }
.site-header__lang { justify-self: end; }

/* Pie -------------------------------------------------------------------- */
.site-footer {
	padding: 22px 20px;
	text-align: center;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .02em;
	text-transform: uppercase;
	color: var(--muted);
}
.site-footer p { margin: 0; }
.site-footer a:hover { color: #fff; }
.lumo-light .site-footer a:hover { color: var(--ink); }

/* Home ------------------------------------------------------------------- */
.hero {
	position: relative;
	height: calc(100vh - var(--header-h));
	height: calc(100svh - var(--header-h));
	min-height: 420px;
	overflow: hidden;
	background: #000;
}
.admin-bar .hero { height: calc(100vh - var(--header-h) - 32px); }
.hero__slide {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
	opacity: 0;
	transition: opacity 1.4s ease;
}
.hero__slide.is-active { opacity: 1; }
.hero .site-footer.hero__footer {
	position: absolute; left: 0; right: 0; bottom: 0; z-index: 2;
	padding: 14px 20px;
	color: #fff;
	text-shadow: 0 1px 8px rgba(0, 0, 0, .45);
}

/* Grilla de proyectos ---------------------------------------------------- */
.grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--gap);
	background: var(--dark);
}
.grid__item {
	position: relative;
	display: block;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	background: #1d242d;
}
.grid__img {
	width: 100%; height: 100%;
	object-fit: cover;
	filter: grayscale(1);
	transition: filter .5s ease;
}
.grid__label {
	position: absolute; left: 0; right: 0; bottom: 18%;
	padding: 0 16px;
	text-align: center;
	color: #fff;
	text-transform: uppercase;
	line-height: 1.1;
	opacity: 0;
	transition: opacity .4s ease;
	text-shadow: 0 1px 12px rgba(0, 0, 0, .4);
}
.grid__label-a { display: block; font-size: 13px; letter-spacing: .04em; }
.grid__label-b { display: block; font-size: 24px; font-weight: 700; }
.grid__item:hover .grid__img,
.grid__item:focus-visible .grid__img { filter: grayscale(0); }
.grid__item:hover .grid__label,
.grid__item:focus-visible .grid__label { opacity: 1; }
.grid__item:focus-visible { outline-offset: -4px; }
@media (hover: none) {
	.grid__img { filter: none; }
	.grid__label { opacity: 1; }
}
@media (max-width: 1100px) { .grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px)  { .grid { grid-template-columns: 1fr; } }

/* Detalle de proyecto ---------------------------------------------------- */
.project {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(240px, 320px);
	grid-template-areas: "media info" "desc .";
	column-gap: clamp(24px, 3vw, 48px);
	padding: 0 clamp(20px, 4vw, 64px) 88px clamp(20px, 10vw, 170px);
}
.project__media { grid-area: media; min-width: 0; }
.project__info  { grid-area: info; }
.project__desc  { grid-area: desc; max-width: 640px; margin-top: 44px; line-height: 1.75; }
.project__desc p { margin: 0 0 1em; }

.project__main { display: block; width: 100%; cursor: zoom-in; }
.project__main-img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	background: #1d242d;
}
.project__thumbs { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.project__thumb { display: block; width: 84px; opacity: .5; transition: opacity .2s ease; }
.project__thumb img { width: 84px; height: 84px; object-fit: cover; }
.project__thumb:hover,
.project__thumb.is-active { opacity: 1; }

.project__title {
	margin: -4px 0 34px;
	font-size: 30px;
	font-weight: 400;
	line-height: 1.15;
	text-transform: uppercase;
}
.project__title strong { font-weight: 700; }
.project__facts { list-style: none; margin: 0 0 26px; padding: 0; line-height: 1.75; }

@media (max-width: 900px) {
	.project {
		grid-template-columns: 1fr;
		grid-template-areas: "media" "info" "desc";
		padding: 0 0 64px;
	}
	.project__thumbs { padding: 0 20px; }
	.project__thumb, .project__thumb img { width: 64px; height: 64px; }
	.project__info, .project__desc { padding: 0 20px; }
	.project__info { margin-top: 28px; }
	.project__title { font-size: 26px; margin-bottom: 24px; }
	.project__desc { margin-top: 12px; }
}

/* Visor ampliado --------------------------------------------------------- */
body.lb-open { overflow: hidden; }
.lb {
	position: fixed; inset: 0; z-index: 1000;
	display: flex; align-items: center; justify-content: center;
	background: rgba(10, 13, 18, .97);
	opacity: 0; visibility: hidden;
	transition: opacity .25s ease, visibility .25s;
}
.lb.is-open { opacity: 1; visibility: visible; }
.lb__img { max-width: 92vw; max-height: 86vh; width: auto; height: auto; object-fit: contain; }
.lb__btn { position: absolute; padding: 14px 18px; color: #fff; font-size: 30px; line-height: 1; opacity: .65; transition: opacity .2s; }
.lb__btn:hover { opacity: 1; }
.lb__close { top: 8px; right: 8px; }
.lb__prev { left: 4px; top: 50%; transform: translateY(-50%); }
.lb__next { right: 4px; top: 50%; transform: translateY(-50%); }
.lb__count { position: absolute; left: 0; right: 0; bottom: 18px; text-align: center; font-size: 13px; color: var(--muted); }

/* Publicaciones ---------------------------------------------------------- */
.pubs {
	min-height: calc(100vh - var(--header-h) - 60px);
	display: flex; align-items: center; justify-content: center;
	padding: 64px 6vw;
}
.pubs__grid {
	list-style: none; margin: 0; padding: 0;
	width: 100%; max-width: 1200px;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 72px 64px;
	align-items: center; justify-items: center;
}
.pubs__item a, .pubs__item > span { display: block; }
.pubs__logo { max-width: 180px; max-height: 92px; width: auto; height: auto; object-fit: contain; transition: opacity .2s ease; }
.pubs__item a:hover .pubs__logo { opacity: .65; }
.pubs__name { font-size: 18px; font-weight: 700; color: var(--ink); }
@media (max-width: 900px) { .pubs__grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 600px) {
	.pubs__grid { grid-template-columns: repeat(2, 1fr); gap: 48px 32px; }
	.pubs__logo { max-width: 130px; max-height: 80px; }
}

/* Info ------------------------------------------------------------------- */
.info {
	display: grid;
	grid-template-columns: 1fr 1fr;
	min-height: calc(100vh - var(--header-h));
}
.info__media { position: relative; background: #d9d9d9; min-height: 420px; }
.info__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.info__panel {
	background: var(--dark);
	color: #fff;
	padding: clamp(36px, 6vw, 72px) clamp(24px, 4.5vw, 64px) 72px;
	line-height: 1.55;
}
.info__title, .info h2 { font-size: 15px; font-weight: 700; margin: 0 0 22px; }
.info__text { max-width: 560px; }
.info__text p, .info__extra p { margin: 0 0 1em; }
.info__cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; margin-top: 64px; max-width: 560px; }
.info__col ul { list-style: none; margin: 0; padding: 0; }
.info__col a:hover { text-decoration: underline; text-underline-offset: 3px; }
.lumo-light .site-main + .site-footer { color: var(--muted-light); }
@media (max-width: 900px) {
	.info { grid-template-columns: 1fr; }
	.info__media { min-height: 0; height: 70vh; }
	.info__cols { grid-template-columns: 1fr; gap: 40px; margin-top: 44px; }
}

/* Páginas ---------------------------------------------------------------- */
.page-content { max-width: 760px; margin: 0 auto; padding: 64px 24px 96px; line-height: 1.75; }
.page-title { font-size: 30px; font-weight: 400; margin: 0 0 32px; }
.page-content .entry a, .page-content .link { text-decoration: underline; text-underline-offset: 3px; }
.empty { padding: 80px 24px; text-align: center; color: var(--muted); grid-column: 1 / -1; }

/* Móvil ------------------------------------------------------------------ */
@media (max-width: 720px) {
	:root { --header-h: 96px; }
	.site-header__inner {
		padding: 0 16px;
		grid-template-columns: 1fr auto;
		grid-template-rows: 54px 42px;
		grid-template-areas: "brand lang" "nav nav";
	}
	.site-header__brand { grid-area: brand; }
	.site-header__lang { grid-area: lang; }
	.site-nav { grid-area: nav; justify-self: stretch; align-self: start; }
	.site-nav ul { justify-content: space-between; gap: 12px; }
	.site-nav a { font-size: 15px; }
	.site-header__lang a { font-size: 15px; }
	.site-logo img { height: 24px; }
	.grid__label-b { font-size: 20px; }
}

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