/* =============================================================
   Client Gallery Portal — Public stylesheet (v1.1)
   Layout reference: Pixieset / SpaceLens / studio portfolios.
   ============================================================= */

:root{
	--cgp-brand:#111;
	--cgp-accent:#c9a96e;
	--cgp-bg:#ffffff;
	--cgp-soft:#fafaf8;
	--cgp-text:#1b1b1b;
	--cgp-muted:#7a7a78;
	--cgp-line:#eceae5;
	--cgp-radius:0px;
	--cgp-shadow-lg:0 24px 60px -20px rgba(0,0,0,.35);
	--cgp-serif:'Cormorant Garamond','Playfair Display',Georgia,serif;
	--cgp-sans:-apple-system,BlinkMacSystemFont,'Inter','Helvetica Neue','Segoe UI',Arial,sans-serif;

	--cgp-toolbar-h:64px;
	--cgp-gap:6px;
}

/* Scoped reset */
.cgp-body{margin:0;background:var(--cgp-bg);color:var(--cgp-text);font-family:var(--cgp-sans);-webkit-font-smoothing:antialiased;}
.cgp-body *{box-sizing:border-box;}
.cgp-body img{max-width:100%;display:block;}
.cgp-body button{font-family:inherit;cursor:pointer;}
.cgp-body a{color:inherit;text-decoration:none;}
.cgp-body h1,.cgp-body h2,.cgp-body h3,.cgp-body p{margin:0;}

/* ============================================================
   HERO
   ============================================================ */
.cgp-hero{
	position:relative;
	min-height:90vh;
	background:#1a1a1a center/cover no-repeat;
	display:flex;align-items:flex-end;justify-content:center;
	padding:0 20px 64px;
	color:#fff;
}
.cgp-hero-bottom{
	text-align:center;position:relative;z-index:2;
	display:flex;flex-direction:column;align-items:center;gap:18px;
}
.cgp-hero-brand{
	font-family:var(--cgp-sans);
	font-weight:700;
	font-size:clamp(42px,7vw,84px);
	letter-spacing:2px;
	line-height:1;
	color:#fff;
	text-shadow:0 2px 24px rgba(0,0,0,.45);
	margin:0;
	text-align:center;
}
.cgp-hero-brand .cgp-dot{color:var(--cgp-accent);}
.cgp-hero-cta{
	display:inline-block;
	font-size:12px;letter-spacing:4px;font-weight:500;
	color:#fff;padding:8px 4px 10px;
	border-bottom:1px solid rgba(255,255,255,.7);
	transition:border-color .25s,color .25s;
}
.cgp-hero-cta:hover{border-color:var(--cgp-accent);color:var(--cgp-accent);}

/* ============================================================
   TOOLBAR (sticky)
   ============================================================ */
.cgp-toolbar{
	position:sticky;top:0;z-index:50;
	background:rgba(255,255,255,.94);
	backdrop-filter:saturate(150%) blur(10px);
	-webkit-backdrop-filter:saturate(150%) blur(10px);
	border-bottom:1px solid var(--cgp-line);
	min-height:72px;
	padding:14px 40px;
	display:flex;align-items:center;justify-content:flex-end;gap:24px;
}

.cgp-toolbar-actions{
	display:flex;align-items:center;gap:8px;flex-wrap:nowrap;
}
.cgp-tool{
	background:none;border:none;padding:12px 18px;
	display:inline-flex;align-items:center;gap:10px;
	color:var(--cgp-text);font-size:12px;letter-spacing:1.5px;font-weight:500;
	text-transform:none;
	transition:color .15s,background .15s;border-radius:3px;
}
.cgp-tool:hover{color:var(--cgp-accent);background:var(--cgp-soft);}
.cgp-tool svg{flex:0 0 auto;opacity:.9;width:22px;height:22px;}
.cgp-tool[data-active="1"]{color:var(--cgp-accent);}
.cgp-tool[data-active="1"] svg{fill:currentColor;}

/* ============================================================
   GRID — true equal-cell, 5/3/2 cols, 4:5 portrait
   ============================================================ */
.cgp-grid-wrap{padding:40px 40px 48px;}

.cgp-grid{
	display:grid;
	grid-template-columns:repeat(5, minmax(0, 1fr));
	gap:var(--cgp-gap);
}

.cgp-cell{
	margin:0;position:relative;overflow:hidden;background:#f3f1ec;
	border-radius:var(--cgp-radius);cursor:zoom-in;
	aspect-ratio:4/5;
}
.cgp-cell img{
	width:100%;height:100%;display:block;object-fit:cover;
	transition:transform .9s cubic-bezier(.2,.7,.2,1);
	will-change:transform;
}
.cgp-cell:hover img{transform:scale(1.04);}
.cgp-cell::after{
	content:"";position:absolute;inset:0;
	background:linear-gradient(180deg,transparent 65%,rgba(0,0,0,.22));
	opacity:0;transition:opacity .25s;pointer-events:none;
}
.cgp-cell:hover::after{opacity:1;}

.cgp-cell-fav{
	position:absolute;top:10px;right:10px;z-index:2;
	width:34px;height:34px;border-radius:50%;
	background:rgba(0,0,0,.45);border:none;color:#fff;
	display:flex;align-items:center;justify-content:center;
	opacity:0;transition:opacity .2s,background .2s,transform .15s;
}
.cgp-cell:hover .cgp-cell-fav,
.cgp-cell-fav[data-on="1"]{opacity:1;}
.cgp-cell-fav:hover{background:rgba(0,0,0,.65);}
.cgp-cell-fav[data-on="1"]{background:var(--cgp-accent);}
.cgp-cell-fav[data-on="1"] svg{fill:currentColor;}

.cgp-cell.cgp-hidden{display:none;}

/* Responsive breakpoints */
@media (max-width:1280px){.cgp-grid{grid-template-columns:repeat(4, minmax(0,1fr));}}
@media (max-width:980px) {.cgp-grid{grid-template-columns:repeat(3, minmax(0,1fr));}}
@media (max-width:640px) {
	.cgp-grid{grid-template-columns:repeat(2, minmax(0,1fr));gap:4px;}
	.cgp-grid-wrap{padding:14px;}
	.cgp-toolbar{padding:10px 14px;justify-content:center;min-height:60px;}
	.cgp-tool span{display:none;}
	.cgp-tool{padding:10px;}
	.cgp-tool svg{width:24px;height:24px;}
	.cgp-toolbar-actions{gap:4px;}
}
@media (max-width:380px){.cgp-grid{grid-template-columns:repeat(2, minmax(0,1fr));}}

.cgp-empty{
	padding:96px 20px;text-align:center;color:var(--cgp-muted);
	font-size:15px;
}
.cgp-empty-help{margin-top:8px;font-size:13px;}
.cgp-empty-help a{color:var(--cgp-accent);border-bottom:1px solid currentColor;padding-bottom:2px;}

/* ============================================================
   BACK TO TOP
   ============================================================ */
.cgp-back{padding:32px 20px 24px;display:flex;justify-content:center;}
.cgp-back-btn{
	display:inline-flex;align-items:center;gap:10px;
	background:#222;color:#fff;border:none;
	padding:12px 24px;border-radius:999px;
	font-size:11px;letter-spacing:2.5px;font-weight:600;
	transition:background .2s,transform .2s;
}
.cgp-back-btn:hover{background:var(--cgp-accent);transform:translateY(-2px);}
.cgp-back-btn svg{width:14px;height:14px;}

/* ============================================================
   FOOTER
   ============================================================ */
.cgp-foot{
	padding:24px 20px 64px;text-align:center;
	color:var(--cgp-muted);font-size:11px;letter-spacing:2.5px;
	text-transform:uppercase;
}

/* ============================================================
   LIGHTBOX
   ============================================================ */
.cgp-lightbox{
	position:fixed;inset:0;z-index:9999;
	background:rgba(15,15,15,.96);
	display:flex;align-items:center;justify-content:center;
	animation:cgpFade .25s ease;
}
@keyframes cgpFade{from{opacity:0;}to{opacity:1;}}
.cgp-lb-stage{
	position:absolute;inset:60px 80px 70px;
	display:flex;align-items:center;justify-content:center;
}
.cgp-lb-image{
	max-width:100%;max-height:100%;object-fit:contain;
	box-shadow:var(--cgp-shadow-lg);transition:opacity .25s;
}
.cgp-lb-image.cgp-loading{opacity:.3;}

.cgp-lb-close,.cgp-lb-prev,.cgp-lb-next{
	position:absolute;background:none;border:none;color:#fff;
	width:48px;height:48px;display:flex;align-items:center;justify-content:center;
	font-size:36px;line-height:1;opacity:.75;transition:opacity .2s,transform .2s;
}
.cgp-lb-close:hover,.cgp-lb-prev:hover,.cgp-lb-next:hover{opacity:1;}
.cgp-lb-close{top:16px;right:16px;font-size:32px;}
.cgp-lb-prev{left:16px;top:50%;transform:translateY(-50%);}
.cgp-lb-next{right:16px;top:50%;transform:translateY(-50%);}
.cgp-lb-prev:hover{transform:translateY(-50%) translateX(-3px);}
.cgp-lb-next:hover{transform:translateY(-50%) translateX(3px);}

.cgp-lb-meta{
	position:absolute;bottom:0;left:0;right:0;
	padding:14px 24px;display:flex;align-items:center;justify-content:space-between;
	background:linear-gradient(0deg,rgba(0,0,0,.6),transparent);color:#fff;
}
.cgp-lb-counter{font-size:12px;letter-spacing:2px;opacity:.7;}
.cgp-lb-actions{display:flex;gap:4px;}
.cgp-lb-action{
	background:none;border:none;color:#fff;
	width:40px;height:40px;display:flex;align-items:center;justify-content:center;
	opacity:.75;transition:opacity .2s;
}
.cgp-lb-action:hover{opacity:1;}
.cgp-lb-action[data-on="1"]{color:var(--cgp-accent);opacity:1;}
.cgp-lb-action[data-on="1"] svg{fill:currentColor;}

.cgp-lightbox.cgp-slideshow .cgp-lb-prev,
.cgp-lightbox.cgp-slideshow .cgp-lb-next,
.cgp-lightbox.cgp-slideshow .cgp-lb-meta,
.cgp-lightbox.cgp-slideshow .cgp-lb-close{opacity:.15;}
.cgp-lightbox.cgp-slideshow:hover .cgp-lb-prev,
.cgp-lightbox.cgp-slideshow:hover .cgp-lb-next,
.cgp-lightbox.cgp-slideshow:hover .cgp-lb-meta,
.cgp-lightbox.cgp-slideshow:hover .cgp-lb-close{opacity:.7;}

@media(max-width:720px){
	.cgp-lb-stage{inset:50px 8px 64px;}
	.cgp-lb-prev,.cgp-lb-next{width:40px;height:40px;}
}

/* ============================================================
   MODALS
   ============================================================ */
.cgp-modal{
	position:fixed;inset:0;z-index:10000;
	background:rgba(0,0,0,.55);
	display:flex;align-items:center;justify-content:center;
	animation:cgpFade .2s ease;padding:20px;
}
.cgp-modal-card{
	position:relative;background:#fff;border-radius:2px;
	padding:36px 32px;max-width:440px;width:100%;box-shadow:var(--cgp-shadow-lg);
}
.cgp-modal-card h3{
	font-family:var(--cgp-serif);font-weight:400;
	font-size:24px;margin:0 0 8px;
}
.cgp-modal-note{margin:0 0 22px;color:var(--cgp-muted);font-size:14px;}
.cgp-modal-x{
	position:absolute;top:10px;right:14px;background:none;border:none;
	font-size:28px;color:var(--cgp-muted);line-height:1;
}

.cgp-share-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:20px;}
.cgp-share-btn{
	display:block;padding:12px;text-align:center;text-decoration:none;
	background:var(--cgp-soft);color:var(--cgp-text);
	font-size:12px;letter-spacing:1.5px;text-transform:uppercase;
	transition:background .2s;
}
.cgp-share-btn:hover{background:#ebe9e3;}

.cgp-copy-row{display:flex;gap:8px;}
.cgp-copy-row input{
	flex:1;padding:11px 12px;border:1px solid var(--cgp-line);
	font-size:13px;background:var(--cgp-soft);color:var(--cgp-muted);
}
.cgp-copy-btn{
	padding:11px 18px;background:var(--cgp-brand);color:#fff;border:none;
	font-size:11px;letter-spacing:2px;text-transform:uppercase;
}

#cgp-email-form{display:flex;flex-direction:column;gap:10px;}
#cgp-email-form input{padding:14px;border:1px solid var(--cgp-line);font-size:14px;}
.cgp-modal-submit{
	padding:14px;background:var(--cgp-accent);color:#fff;border:none;
	font-size:12px;letter-spacing:2px;text-transform:uppercase;
}
.cgp-modal-submit:disabled{opacity:.6;cursor:not-allowed;}
.cgp-modal-status{margin:14px 0 0;font-size:13px;}
.cgp-modal-status.cgp-ok{color:#1f7a3e;}
.cgp-modal-status.cgp-err{color:#b3261e;}

/* ============================================================
   TOAST
   ============================================================ */
.cgp-toast{
	position:fixed;left:50%;bottom:32px