/* ==========================================================================
   Project galleries + lightbox (replaces Modula)
   ========================================================================== */

/* ── Grid (same look as before: rounded squares, 10px gutters) ── */
.dd-gallery{
	--dd-gap:10px;
	display:grid;grid-template-columns:repeat(var(--dd-cols,6),minmax(0,1fr));gap:var(--dd-gap);
	margin:12px 0 24px;
}
.dd-gallery__item{margin:0;min-width:0}
.dd-gallery__link{
	position:relative;display:block;aspect-ratio:1/1;overflow:hidden;border-radius:8px;
	background:#e6ebf1;cursor:zoom-in;
	box-shadow:0 1px 2px rgba(19,56,94,.08);
	transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s;
}
.dd-gallery__img{
	position:absolute;inset:0;width:100%!important;height:100%!important;max-width:none!important;
	margin:0!important;object-fit:cover;display:block;
	transition:transform .7s cubic-bezier(.2,.7,.2,1),filter .4s;
}
.dd-gallery__zoom{
	position:absolute;right:10px;bottom:10px;width:36px;height:36px;border-radius:50%;
	display:grid;place-items:center;background:rgba(19,56,94,.85);color:#FEC03A;
	opacity:0;transform:scale(.8);transition:opacity .3s,transform .35s cubic-bezier(.2,.7,.2,1);
}
.dd-gallery__link:after{
	content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(19,56,94,.45));
	opacity:0;transition:opacity .35s;
}
@media (hover:hover){
	.dd-gallery__link:hover{transform:translateY(-3px);box-shadow:0 14px 28px -16px rgba(19,56,94,.55)}
	.dd-gallery__link:hover .dd-gallery__img{transform:scale(1.07)}
	.dd-gallery__link:hover:after{opacity:1}
	.dd-gallery__link:hover .dd-gallery__zoom{opacity:1;transform:none}
}
.dd-gallery__link:focus-visible{outline:3px solid #13385E;outline-offset:3px}
.dd-gallery__link:focus-visible .dd-gallery__zoom{opacity:1;transform:none}
@media(max-width:1100px){.dd-gallery{grid-template-columns:repeat(min(var(--dd-cols,6),4),minmax(0,1fr))}}
@media(max-width:600px){.dd-gallery{grid-template-columns:repeat(3,minmax(0,1fr));--dd-gap:6px}.dd-gallery__link{border-radius:6px}.dd-gallery__zoom{display:none}}
@media(max-width:380px){.dd-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ── Lightbox ── */
.dd-lb[hidden]{display:none}
.dd-lb{
	position:fixed;inset:0;z-index:100001;display:grid;grid-template-rows:auto 1fr auto auto;
	background:rgba(6,18,33,.95);color:#fff;
	-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
	opacity:0;transition:opacity .25s ease;
	font-family:'Source Sans Pro',sans-serif;
}
.dd-lb.is-open{opacity:1}
.dd-lb__top{display:flex;align-items:center;justify-content:space-between;padding:14px 18px}
.dd-lb__count{font:600 13px/1 'Source Sans Pro',sans-serif;letter-spacing:.18em;color:rgba(255,255,255,.75);font-variant-numeric:tabular-nums}
.dd-lb__count b{color:#FEC03A;font-weight:700}
.dd-lb__btn{
	appearance:none;border:0;cursor:pointer;display:grid;place-items:center;
	width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.08);color:#fff;
	transition:background .2s,color .2s,transform .2s;
}
.dd-lb__btn:hover{background:#FEC03A;color:#13385E}
.dd-lb__btn:active{transform:scale(.94)}
.dd-lb__btn:focus-visible{outline:2px solid #FEC03A;outline-offset:3px}
.dd-lb__stage{position:relative;display:flex;align-items:center;justify-content:center;min-height:0;padding:0 84px;touch-action:pan-y}
.dd-lb__img{
	max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;
	border-radius:4px;box-shadow:0 30px 80px -30px rgba(0,0,0,.8);
	opacity:0;transform:scale(.985);transition:opacity .3s ease,transform .45s cubic-bezier(.2,.7,.2,1);
	user-select:none;-webkit-user-drag:none;
}
.dd-lb__img.is-loaded{opacity:1;transform:none}
.dd-lb__spinner{position:absolute;width:34px;height:34px;border:3px solid rgba(255,255,255,.15);border-top-color:#FEC03A;border-radius:50%;animation:dd-lb-spin .8s linear infinite}
.dd-lb__spinner[hidden]{display:none}
@keyframes dd-lb-spin{to{transform:rotate(360deg)}}
.dd-lb__prev,.dd-lb__next{position:absolute;top:50%;transform:translateY(-50%);width:54px;height:54px}
.dd-lb__prev:active,.dd-lb__next:active{transform:translateY(-50%) scale(.94)}
.dd-lb__prev{left:18px}
.dd-lb__next{right:18px}
.dd-lb__caption{min-height:22px;max-width:80ch;margin:14px auto 0;padding:0 20px;text-align:center;font-size:15px;line-height:1.5;color:rgba(255,255,255,.82)}
.dd-lb__caption:empty{display:none}
.dd-lb__strip{display:flex;gap:8px;justify-content:safe center;overflow-x:auto;scrollbar-width:none;padding:16px 18px 18px}
.dd-lb__strip::-webkit-scrollbar{display:none}
.dd-lb__thumb{
	flex:none;width:64px;height:48px;padding:0;border:2px solid transparent;border-radius:4px;overflow:hidden;cursor:pointer;
	background:#0e2440;opacity:.5;transition:opacity .2s,border-color .2s;
}
.dd-lb__thumb img{width:100%;height:100%;object-fit:cover;display:block}
.dd-lb__thumb:hover{opacity:.85}
.dd-lb__thumb[aria-current="true"]{opacity:1;border-color:#FEC03A}
.dd-lb__thumb:focus-visible{outline:2px solid #FEC03A;outline-offset:2px}
html.dd-lb-open,html.dd-lb-open body{overflow:hidden}
@media(max-width:700px){
	.dd-lb__stage{padding:0 8px}
	.dd-lb__prev,.dd-lb__next{width:44px;height:44px;top:auto;bottom:-6px;transform:none;background:rgba(255,255,255,.12)}
	.dd-lb__prev{left:12px}.dd-lb__next{right:12px}
	.dd-lb__caption{font-size:14px;padding:0 64px}
	.dd-lb__thumb{width:52px;height:40px}
}
@media (prefers-reduced-motion:reduce){
	.dd-lb,.dd-lb__img,.dd-gallery__link,.dd-gallery__img{transition:none}
}

/* ── Project page layouts ───────────────────────────────────────────────── */
/* feature: lead image + rows of up to 4 thumbnails; extras open in the lightbox */
.dd-gallery--feature{grid-template-columns:repeat(var(--dd-tcols,4),minmax(0,1fr));--dd-gap:12px}
.dd-gallery--feature .is-lead{grid-column:1/-1}
.dd-gallery--feature .is-lead .dd-gallery__link{aspect-ratio:16/9;border-radius:10px}
.dd-gallery--feature .is-extra{display:none}
.dd-gallery--feature .dd-gallery__link{border-radius:8px}
.dd-gallery--feature .is-lead .dd-gallery__zoom{width:44px;height:44px;right:16px;bottom:16px}
@media (hover:hover){.dd-gallery--feature .is-lead .dd-gallery__link:hover .dd-gallery__img{transform:scale(1.03)}}
.dd-gallery__more{
	position:absolute;inset:0;z-index:1;display:grid;place-items:center;
	background:rgba(19,56,94,.72);color:#fff;font:400 30px/1 'Anton',sans-serif;letter-spacing:.02em;
	transition:background .3s;
}
.has-more .dd-gallery__link:hover .dd-gallery__more{background:rgba(19,56,94,.55)}
.has-more .dd-gallery__zoom{display:none}
/* pair: 1 image full-width, 2 images side by side */
.dd-gallery--pair{grid-template-columns:repeat(2,minmax(0,1fr))}
.dd-gallery--pair[data-count="1"]{grid-template-columns:1fr}
.dd-gallery--pair .dd-gallery__link{aspect-ratio:4/3;border-radius:10px}
.dd-gallery--pair[data-count="1"] .dd-gallery__link{aspect-ratio:16/9}
@media(max-width:600px){
	.dd-gallery--feature{grid-template-columns:repeat(min(var(--dd-tcols,4),4),minmax(0,1fr));--dd-gap:6px}
	.dd-gallery--feature .is-lead .dd-gallery__link{aspect-ratio:4/3;border-radius:8px}
	.dd-gallery__more{font-size:22px}
	.dd-gallery--pair{grid-template-columns:1fr}
}
