@charset "utf-8";

:root{
	--grey:#AEAEAD;
	--grey-light:#e5e5e4;
	--black:#111111;
}

*{box-sizing:border-box;}

body{
	margin:0;
	padding:0;
	background:#ffffff;
	color:var(--black);
	font-family:"Trebuchet MS","Lucida Grande",Verdana,sans-serif;
}

a{color:var(--black);text-decoration:none;}

/* Header */
header{
	padding:24px 0 8px;
	text-align:center;
}
header .logo img{
	max-width:360px;
	width:80%;
	height:auto;
}

/* Nav */
nav{
	border-top:1px solid var(--grey);
	border-bottom:1px solid var(--grey);
	margin:16px 0 0;
}
nav ul{
	list-style:none;
	margin:0;
	padding:0;
	display:flex;
	flex-wrap:wrap;
	justify-content:center;
}
nav ul li{
	margin:0;
}
nav ul li a{
	display:block;
	padding:14px 20px;
	font-weight:bold;
	letter-spacing:0.03em;
	text-transform:lowercase;
}
nav ul li a:hover{
	text-decoration:underline;
}
nav ul li a.active{
	text-decoration:underline;
	color:var(--grey);
}
nav ul li.nav-right{
	margin-left:auto;
}

/* Intro */
.intro{
	max-width:760px;
	margin:36px auto;
	padding:0 24px;
	text-align:center;
	color:#444;
	font-size:1.05em;
	line-height:1.5em;
}

/* Mosaic gallery */
.mosaic{
	display:grid;
	grid-template-columns:repeat(4,1fr);
	grid-auto-rows:220px;
	gap:4px;
	max-width:1400px;
	margin:0 auto 40px;
	padding:0 4px;
}
.mosaic figure{
	margin:0;
	position:relative;
	overflow:hidden;
	background:#f2f2f2;
}
.mosaic figure img{
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	transition:transform 0.4s ease;
}
.mosaic figure:hover img{
	transform:scale(1.06);
}
.mosaic figcaption{
	position:absolute;
	left:0;right:0;bottom:0;
	padding:10px 12px;
	background:linear-gradient(to top, rgba(0,0,0,0.72), rgba(0,0,0,0));
	color:#fff;
	font-size:0.8em;
	line-height:1.3em;
	opacity:0;
	transition:opacity 0.3s ease;
}
.mosaic figure:hover figcaption{
	opacity:1;
}

/* wide/tall variants for visual rhythm */
.mosaic figure.wide{grid-column:span 2;}
.mosaic figure.tall{grid-row:span 2;}

/* Contact & legal pages */
.contact, .legal{
	max-width:700px;
	margin:50px auto;
	padding:0 24px;
}
.contact h1{
	font-size:2em;
	margin-bottom:0.2em;
}
.contact h2{
	margin-top:0;
}
.contact .subtitle{
	color:var(--grey);
	font-size:0.6em;
	font-weight:normal;
	padding-left:16px;
}
.contact hr, .legal hr{
	border:none;
	border-top:1px solid var(--grey);
	margin:18px 0;
}
.contact h3{
	margin-bottom:0.2em;
}
.contact p{
	margin-top:0;
	line-height:1.6em;
}
.legal h3{
	margin-bottom:0.2em;
}
.legal p{
	line-height:1.6em;
}

/* Lightbox */
.mosaic figure.clickable{
	cursor:pointer;
}
body.lightbox-open{
	overflow:hidden;
}
.lightbox-overlay{
	position:fixed;
	inset:0;
	background:rgba(0,0,0,0.85);
	display:flex;
	align-items:center;
	justify-content:center;
	z-index:1000;
	padding:40px 20px;
}
.lightbox-overlay[hidden]{
	display:none;
}
.lightbox-figure{
	display:flex;
	flex-direction:column;
	align-items:center;
	max-width:100%;
	max-height:100%;
}
.lightbox-img{
	display:block;
	max-width:90vw;
	max-height:82vh;
	width:auto;
	height:auto;
	object-fit:contain;
	box-shadow:0 10px 40px rgba(0,0,0,0.5);
}
.lightbox-caption{
	color:#fff;
	font-size:0.85em;
	margin:12px 0 0;
	text-align:center;
	max-width:90vw;
}
.lightbox-caption[hidden]{
	display:none;
}
.lightbox-close{
	position:fixed;
	top:16px;
	right:24px;
	background:transparent;
	border:none;
	color:#fff;
	font-size:2.2em;
	line-height:1;
	font-weight:300;
	cursor:pointer;
	padding:8px 12px;
	opacity:0.75;
	transition:opacity 0.2s ease;
}
.lightbox-close:hover,
.lightbox-close:focus{
	opacity:1;
}

@media (max-width:640px){
	.lightbox-overlay{padding:20px 12px;}
	.lightbox-img{max-height:78vh;}
	.lightbox-close{top:8px;right:10px;font-size:1.8em;}
}

/* Footer */
footer{
	border-top:1px solid var(--grey);
	padding:18px 20px;
	text-align:center;
	color:#666;
	font-size:0.85em;
}
footer a{
	text-decoration:underline;
}

/* Responsive */
@media (max-width:900px){
	.mosaic{grid-template-columns:repeat(3,1fr);grid-auto-rows:180px;}
}
@media (max-width:640px){
	.mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px;}
	.mosaic figure.wide{grid-column:span 2;}
	.mosaic figure.tall{grid-row:span 1;}
	nav ul li.nav-right{margin-left:0;}
}
