:root{
	--gallery-bg:#f5f5f2;
	--gallery-surface:#fcfcf9;
	--gallery-soft:#efefeb;
	--gallery-deep:#dcdcd8;
	--gallery-text:#151515;
	--gallery-muted:#666666;
	--gallery-line:rgba(21,21,21,.12);
	--gallery-line-strong:rgba(21,21,21,.18);
	--gallery-font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
	--gallery-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

html,
body{
	margin:0;
	padding:0;
	background:
		radial-gradient(circle at top left, rgba(255,255,255,.88), transparent 24%),
		linear-gradient(180deg, #f8f8f6 0%, #f0f0ec 100%);
	color:var(--gallery-text);
	font-family:var(--gallery-font-serif);
}

body{
	min-height:100vh;
}

.gallery-shell,
.gallery-wrap{
	min-height:100vh;
}

.gallery-wrap{
	background:rgba(252,252,249,.88);
}

.gallery-page{
	max-width:1360px;
	margin:0 auto;
	padding-top:0;
}

.gallery-kicker{
	display:inline-block;
	font-family:var(--gallery-font-mono);
	font-size:.76rem;
	font-weight:700;
	letter-spacing:.16em;
	text-transform:uppercase;
	color:#d7d7d2;
}

.gallery-hero{
	position:relative;
	overflow:hidden;
	min-height:100vh;
	width:100vw;
	margin-left:calc(50% - 50vw);
	margin-right:calc(50% - 50vw);
	margin-top:-1px;
	border-radius:0;
	background:#0f0f0f;
	display:flex;
	align-items:center;
	justify-content:center;
	padding:4rem 1.5rem;
	text-align:center;
}

.gallery-hero-media{
	position:absolute;
	inset:0;
}

.gallery-hero-media video{
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
}

.gallery-hero-backdrop{
	position:absolute;
	inset:0;
	background:
		linear-gradient(180deg, rgba(15,15,15,.7), rgba(15,15,15,.78)),
		radial-gradient(circle at 50% 50%, rgba(255,255,255,.1), transparent 24%),
		radial-gradient(circle at 68% 28%, rgba(255,255,255,.06), transparent 18%),
		radial-gradient(circle at 35% 20%, rgba(255,255,255,.05), transparent 16%);
	opacity:1;
}

.gallery-hero-backdrop::before,
.gallery-hero-backdrop::after{
	content:"";
	position:absolute;
	border-radius:999px;
	border:1px solid rgba(255,255,255,.08);
}

.gallery-hero-backdrop::before{
	width:420px;
	height:420px;
	right:-80px;
	top:-120px;
}

.gallery-hero-backdrop::after{
	width:280px;
	height:280px;
	left:-40px;
	bottom:-120px;
}

.gallery-hero-orb{
	position:absolute;
	border-radius:50%;
	background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.3), rgba(255,255,255,.08) 42%, rgba(255,255,255,.02) 72%, rgba(255,255,255,0) 100%);
	border:1px solid rgba(255,255,255,.08);
	box-shadow:
		0 20px 48px rgba(0,0,0,.18),
		inset 1px 1px 0 rgba(255,255,255,.12);
	opacity:.8;
	filter:blur(.1px);
}

.gallery-hero-orb-a{
	width:112px;
	height:112px;
	left:12%;
	top:22%;
	animation:galleryFloatA 6.5s ease-in-out infinite;
}

.gallery-hero-orb-b{
	width:76px;
	height:76px;
	right:16%;
	top:30%;
	animation:galleryFloatB 5.2s ease-in-out infinite;
}

.gallery-hero-orb-c{
	width:148px;
	height:148px;
	right:12%;
	bottom:16%;
	animation:galleryFloatC 7.2s ease-in-out infinite;
}

.gallery-hero-copy{
	position:relative;
	z-index:1;
	max-width:54rem;
}

.gallery-hero-copy h1{
	margin:1rem 0 0;
	font-family:var(--gallery-font-serif);
	font-size:clamp(4rem, 8vw, 6.8rem);
	line-height:.92;
	letter-spacing:-.08em;
	font-weight:600;
	color:#ffffff;
}

.gallery-hero-description{
	max-width:42rem;
	margin:1.35rem auto 0;
	font-size:1.05rem;
	line-height:1.9;
	color:rgba(255,255,255,.76);
}

.gallery-hero-kicker{
	animation:galleryBubbleIn .9s cubic-bezier(.16,1,.3,1) both;
}

.gallery-hero-title{
	display:flex;
	flex-wrap:wrap;
	gap:0 .25em;
	align-items:center;
	justify-content:center;
}

.gallery-title-word{
	display:inline-block;
}

.gallery-title-word-1{
	animation:galleryWordBounce .95s cubic-bezier(.16,1,.3,1) .08s both;
}

.gallery-title-word-2{
	animation:galleryWordBounce .95s cubic-bezier(.16,1,.3,1) .22s both;
}

.gallery-hero-description{
	animation:galleryTextRise 1.05s cubic-bezier(.22,1,.36,1) .28s both;
}

.gallery-ribbon{
	padding:2.75rem 0 3.4rem;
	border-bottom:1px solid var(--gallery-line);
}

.gallery-ribbon-label{
	padding-bottom:1.2rem;
	text-align:center;
	font-size:1rem;
	color:var(--gallery-muted);
}

.gallery-ribbon-diamonds{
	display:flex;
	align-items:center;
	justify-content:center;
	gap:1.2rem;
	padding:2rem 0;
	overflow:hidden;
}

.gallery-ribbon-diamond{
	position:relative;
	width:152px;
	height:152px;
	transform:rotate(45deg);
	overflow:hidden;
	background:#ece7df;
	flex:0 0 auto;
	opacity:0;
	will-change:transform, opacity;
}

.gallery-ribbon-diamond img,
.gallery-ribbon-diamond span{
	position:absolute;
	inset:0;
	width:100%;
	height:100%;
	transform:rotate(-45deg) scale(1.12);
}

.gallery-ribbon-diamond img{
	object-fit:cover;
}

.gallery-ribbon-diamond-center{
	display:flex;
	align-items:center;
	justify-content:center;
	background:#181818;
}

.gallery-ribbon.is-visible .gallery-ribbon-diamond-center{
	animation:galleryDiamondCenterIn .9s cubic-bezier(.16,1,.3,1) .08s both;
}

.gallery-ribbon.is-visible .gallery-ribbon-diamond:nth-child(2){
	animation:galleryDiamondSideLeft .72s cubic-bezier(.22,1,.36,1) .6s both;
}

.gallery-ribbon.is-visible .gallery-ribbon-diamond:nth-child(1){
	animation:galleryDiamondSideLeft .72s cubic-bezier(.22,1,.36,1) .8s both;
}

.gallery-ribbon.is-visible .gallery-ribbon-diamond:nth-child(4){
	animation:galleryDiamondSideRight .72s cubic-bezier(.22,1,.36,1) .6s both;
}

.gallery-ribbon.is-visible .gallery-ribbon-diamond:nth-child(5){
	animation:galleryDiamondSideRight .72s cubic-bezier(.22,1,.36,1) .8s both;
}

.gallery-ribbon-diamond-center span{
	display:flex;
	align-items:center;
	justify-content:center;
	transform:rotate(-45deg);
	font-family:var(--gallery-font-mono);
	font-size:1rem;
	font-weight:700;
	color:#ffffff;
}

.gallery-story{
	padding:3.2rem 0 3.8rem;
	border-bottom:1px solid var(--gallery-line);
}

.gallery-story-top{
	display:grid;
	grid-template-columns:minmax(260px, auto) minmax(0, 1fr);
	gap:1.75rem;
	align-items:center;
}

.gallery-story.is-reverse .gallery-story-top{
	grid-template-columns:minmax(0, 1fr) minmax(260px, auto);
}

.gallery-story-top h2{
	margin:0;
	font-family:var(--gallery-font-serif);
	font-size:clamp(3rem, 6vw, 5rem);
	line-height:.92;
	letter-spacing:-.07em;
	font-weight:500;
}

.gallery-story.is-reverse .gallery-story-top h2{
	order:2;
	text-align:right;
}

.gallery-story-line{
	position:relative;
	height:1px;
	background:rgba(21,21,21,.7);
}

.gallery-story-line::after{
	content:"";
	position:absolute;
	right:0;
	top:50%;
	width:16px;
	height:16px;
	border-radius:50%;
	background:#111111;
	transform:translateY(-50%);
}

.gallery-story.is-reverse .gallery-story-line::after{
	right:auto;
	left:0;
}

.gallery-story-intro{
	display:grid;
	grid-template-columns:minmax(0, 1fr) auto;
	gap:2rem;
	align-items:start;
	max-width:1080px;
	margin:1.8rem 0 0 auto;
}

.gallery-story.is-reverse .gallery-story-intro{
	margin:1.8rem auto 0 0;
}

.gallery-story-intro p{
	margin:0;
	max-width:42rem;
	font-size:1.05rem;
	line-height:1.85;
	color:var(--gallery-muted);
}

.gallery-story-button{
	display:inline-flex;
	align-items:center;
	justify-content:center;
	gap:.75rem;
	padding:.9rem 1.35rem;
	border-radius:999px;
	background:linear-gradient(180deg, #2a2a2a, #111111);
	color:#ffffff;
	text-decoration:none;
	font-family:var(--gallery-font-mono);
	font-size:.92rem;
	font-weight:700;
	box-shadow:0 10px 22px rgba(0,0,0,.12);
}

.gallery-story-button span{
	display:inline-flex;
	align-items:center;
	justify-content:center;
	width:28px;
	height:28px;
	border-radius:50%;
	background:#ffffff;
	color:#111111;
	font-size:1rem;
}

.gallery-story-cards{
	display:grid;
	grid-template-columns:repeat(3, minmax(0, 1fr));
	gap:1.5rem;
	margin-top:2.4rem;
}

.gallery-story-card{
	position:relative;
	display:flex;
	flex-direction:column;
	gap:.95rem;
	padding:.9rem;
	border-radius:1.4rem;
	background:linear-gradient(145deg, rgba(255,255,255,.9), rgba(239,239,235,.96));
	border:1px solid rgba(21,21,21,.08);
	box-shadow:
		0 18px 30px rgba(21,21,21,.06),
		inset 1px 1px 0 rgba(255,255,255,.9),
		inset -8px -10px 18px rgba(21,21,21,.04);
	transform-style:preserve-3d;
	transition:box-shadow .35s ease, border-color .35s ease;
	overflow:hidden;
}

.gallery-story-card::before{
	content:"";
	position:absolute;
	inset:.45rem;
	border-radius:1rem;
	border:1px solid rgba(255,255,255,.55);
	pointer-events:none;
}

.gallery-story-card:hover{
	box-shadow:
		0 28px 48px rgba(21,21,21,.1),
		inset 1px 1px 0 rgba(255,255,255,.92),
		inset -8px -10px 18px rgba(21,21,21,.04);
	border-color:rgba(21,21,21,.12);
}

.gallery-story-glow{
	position:absolute;
	inset:0;
	opacity:0;
	border-radius:inherit;
	transition:opacity .3s ease;
	pointer-events:none;
	mix-blend-mode:screen;
}

.gallery-story-featured .gallery-story-card-featured{
	opacity:0;
	transform:translateX(-42px);
}

.gallery-story-featured.is-visible .gallery-story-card-featured{
	animation:galleryFeaturedSlideIn .9s cubic-bezier(.22,1,.36,1) both;
}

.gallery-story-featured.is-visible .gallery-story-card-featured-1{
	animation-delay:.18s;
}

.gallery-story-featured.is-visible .gallery-story-card-featured-2{
	animation-delay:.38s;
}

.gallery-story-featured.is-visible .gallery-story-card-featured-3{
	animation-delay:.58s;
}

.gallery-story-image{
	overflow:hidden;
	background:#e2ded7;
	border-radius:1rem;
	transform:translateZ(34px);
	box-shadow:
		0 16px 28px rgba(21,21,21,.12),
		inset 0 0 0 1px rgba(255,255,255,.4);
}

.gallery-story-image img{
	width:100%;
	height:360px;
	display:block;
	object-fit:cover;
	transition:transform .7s cubic-bezier(.22,1,.36,1);
}

.gallery-story-card:hover .gallery-story-image img{
	transform:scale(1.045);
}

.gallery-story-meta{
	display:flex;
	align-items:center;
	justify-content:space-between;
	gap:1rem;
	font-size:.98rem;
}

.gallery-story-content{
	position:relative;
	z-index:1;
	transform:translateZ(28px);
	transition:transform .35s ease;
}

.gallery-story-meta span{
	color:var(--gallery-muted);
}

.gallery-story-meta strong{
	font-weight:500;
	text-decoration:underline;
	text-underline-offset:.18em;
}

.gallery-story-card p{
	margin:0;
	max-width:24rem;
	line-height:1.72;
	color:var(--gallery-muted);
}

.gallery-reveal{
	opacity:0;
	transform:translateY(38px);
	transition:
		opacity .85s cubic-bezier(.22,1,.36,1),
		transform .85s cubic-bezier(.22,1,.36,1);
}

.gallery-reveal.is-visible{
	opacity:1;
	transform:none;
}

.gallery-wrap .site-footer{
	margin-top:1rem;
	padding:1.4rem 0 2rem;
	border-top:1px solid rgba(16,16,16,.08);
}

.gallery-wrap .site-footer__inner{
	color:var(--gallery-muted);
}

.gallery-wrap .site-footer__inner strong{
	color:var(--gallery-text);
}

@keyframes galleryBubbleIn{
	0%{
		opacity:0;
		transform:translateY(28px) scale(.78);
		filter:blur(8px);
	}
	58%{
		opacity:1;
		transform:translateY(-8px) scale(1.04);
		filter:blur(0);
	}
	100%{
		opacity:1;
		transform:translateY(0) scale(1);
		filter:blur(0);
	}
}

@keyframes galleryWordBounce{
	0%{
		opacity:0;
		transform:translateY(56px) scale(.84);
		filter:blur(10px);
	}
	60%{
		opacity:1;
		transform:translateY(-10px) scale(1.03);
		filter:blur(0);
	}
	100%{
		opacity:1;
		transform:translateY(0) scale(1);
		filter:blur(0);
	}
}

@keyframes galleryTextRise{
	0%{
		opacity:0;
		transform:translateY(22px);
	}
	100%{
		opacity:1;
		transform:translateY(0);
	}
}

@keyframes galleryFloatA{
	0%, 100%{
		transform:translate3d(0, 0, 0);
	}
	50%{
		transform:translate3d(0, -14px, 0);
	}
}

@keyframes galleryFloatB{
	0%, 100%{
		transform:translate3d(0, 0, 0);
	}
	50%{
		transform:translate3d(10px, -12px, 0);
	}
}

@keyframes galleryFloatC{
	0%, 100%{
		transform:translate3d(0, 0, 0);
	}
	50%{
		transform:translate3d(-10px, -16px, 0);
	}
}

@keyframes galleryDiamondCenterIn{
	0%{
		opacity:0;
		transform:rotate(45deg) scale(.72);
		filter:blur(10px);
	}
	65%{
		opacity:1;
		transform:rotate(45deg) scale(1.04);
		filter:blur(0);
	}
	100%{
		opacity:1;
		transform:rotate(45deg) scale(1);
		filter:blur(0);
	}
}

@keyframes galleryDiamondSideLeft{
	0%{
		opacity:0;
		transform:rotate(45deg) translate3d(-34px, 0, 0) scale(.84);
		filter:blur(8px);
	}
	100%{
		opacity:1;
		transform:rotate(45deg) translate3d(0, 0, 0) scale(1);
		filter:blur(0);
	}
}

@keyframes galleryDiamondSideRight{
	0%{
		opacity:0;
		transform:rotate(45deg) translate3d(34px, 0, 0) scale(.84);
		filter:blur(8px);
	}
	100%{
		opacity:1;
		transform:rotate(45deg) translate3d(0, 0, 0) scale(1);
		filter:blur(0);
	}
}

@keyframes galleryFeaturedSlideIn{
	0%{
		opacity:0;
		transform:translateX(-42px);
	}
	70%{
		opacity:1;
		transform:translateX(6px);
	}
	100%{
		opacity:1;
		transform:translateX(0);
	}
}

@media (prefers-reduced-motion: reduce){
	.gallery-reveal,
	.gallery-story-card,
	.gallery-story-image img{
		transition:none;
	}

	.gallery-reveal{
		opacity:1;
		transform:none;
	}

	.gallery-hero-kicker,
	.gallery-title-word-1,
	.gallery-title-word-2,
	.gallery-hero-description,
	.gallery-hero-orb,
	.gallery-ribbon-diamond{
		animation:none;
	}

	.gallery-ribbon-diamond{
		opacity:1;
	}

	.gallery-story-featured .gallery-story-card-featured{
		opacity:1;
		transform:none;
	}

	.gallery-story-content,
	.gallery-story-image{
		transform:none;
	}
}

@media (max-width:1199px){
	.gallery-ribbon-diamonds{
		gap:.6rem;
	}

	.gallery-ribbon-diamond{
		width:116px;
		height:116px;
	}

	.gallery-story-top,
	.gallery-story.is-reverse .gallery-story-top,
	.gallery-story-intro,
	.gallery-story.is-reverse .gallery-story-intro{
		grid-template-columns:1fr;
		margin-left:0;
		margin-right:0;
	}

	.gallery-story.is-reverse .gallery-story-top h2{
		order:0;
		text-align:left;
	}

	.gallery-story.is-reverse .gallery-story-line::after{
		left:auto;
		right:0;
	}

	.gallery-story-cards{
		grid-template-columns:1fr 1fr;
	}
}

@media (max-width:767px){
	.gallery-page{
		padding-top:0;
	}

	.gallery-hero{
		min-height:100vh;
		width:100vw;
		margin-left:calc(50% - 50vw);
		margin-right:calc(50% - 50vw);
		margin-top:-1px;
		padding:3rem 1.1rem;
		border-radius:0;
	}

	.gallery-hero-copy h1{
		font-size:clamp(3.1rem, 15vw, 4.8rem);
	}

	.gallery-ribbon{
		padding:2rem 0 2.5rem;
	}

	.gallery-ribbon-diamonds{
		justify-content:flex-start;
		overflow-x:auto;
		padding-bottom:.5rem;
	}

	.gallery-ribbon-diamond{
		width:92px;
		height:92px;
	}

	.gallery-story{
		padding:2.5rem 0 3rem;
	}

	.gallery-story-cards{
		grid-template-columns:1fr;
	}

	.gallery-story-image img{
		height:300px;
	}
}
