/* Forge block engine — shared by every forge/* block (front-end + editor).
   All values come from CSS custom properties: global tokens (:root) and per-block
   overrides set inline. Responsive values are resolved by the small generated
   stylesheet (--x → --x-d / --x-t / --x-m). */

.fb{
	position:relative;
	box-sizing:border-box;
	margin-top:var(--mt,var(--section-gap));
	margin-bottom:var(--mb,var(--section-gap));
	margin-left:var(--ml,0);
	margin-right:var(--mr,0);
	text-align:var(--ta,inherit);
}
.fb *,.fb *::before,.fb *::after{box-sizing:border-box}
.fb--full,.fb--mcard{margin-top:var(--mt,0);margin-bottom:var(--mb,0)}
.fb--mcard{margin-top:var(--mt,var(--section-gap));margin-bottom:var(--mb,var(--section-gap))}

.fb-container{
	width:100%;
	max-width:calc(var(--maxw,var(--container)) + var(--gutter) * 2);
	margin-inline:auto;
	padding-inline:var(--gutter);
}

/* Surface = the box that carries background, border, radius, shadow, padding */
.fb-surface{
	position:relative;
	isolation:isolate;
	display:flex;
	flex-direction:column;
	min-height:var(--mh,0);
	background-color:var(--bg-color,transparent);
	background-image:var(--bg-image,none);
	background-position:var(--bg-pos,center center);
	background-size:var(--bg-size,cover);
	background-repeat:var(--bg-repeat,no-repeat);
	background-attachment:var(--bg-att,scroll);
	border:var(--bw,0) solid var(--bc,transparent);
	border-radius:var(--fb-radius,0);
	box-shadow:var(--fb-shadow,none);
	padding:var(--pt,0) var(--pr,0) var(--pb,0) var(--pl,0);
	color:var(--color-text);
}
.fb.has-bg .fb-surface{overflow:hidden}
.fb-surface::after{
	content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
	background:var(--ov-color,#000);opacity:var(--ov-op,0);
}
.fb-bgvideo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none}
.fb-inner{position:relative;z-index:2;flex:1 1 auto;width:100%;font-size:var(--fs,inherit)}
.fb--full .fb-inner{display:flex;flex-direction:column;justify-content:var(--va,center)}
.fb--full > .fb-surface > .fb-container{position:relative;z-index:2;flex:1 1 auto;display:flex;flex-direction:column;justify-content:var(--va,center)}

/* Card look (default surface for "text with background") */
.fb--card .fb-surface{
	background-color:var(--bg-color,var(--card-bg));
	border-radius:var(--fb-radius,var(--card-radius));
	box-shadow:var(--fb-shadow,var(--card-shadow));
	border-width:var(--bw,var(--card-bw));
	padding:var(--pt,var(--card-pad)) var(--pr,var(--card-pad)) var(--pb,var(--card-pad)) var(--pl,var(--card-pad));
}
/* Full-width band */
.fb--full .fb-surface{
	border-radius:var(--fb-radius,0);
	padding-top:var(--pt,calc(var(--section-gap) * 1.2));
	padding-bottom:var(--pb,calc(var(--section-gap) * 1.2));
	padding-left:var(--pl,0);padding-right:var(--pr,0);
}
.fb--full .fb-container{max-width:calc(var(--maxw,var(--container)) + var(--gutter) * 2)}

/* Local override of global tokens */
.fb.has-override{color:var(--color-text)}
.fb.has-override :where(h1,h2,h3,h4,h5,h6){color:var(--color-heading)}
.fb.has-override a:not(.forge-btn):not(.wp-block-button__link){color:var(--color-link)}
.fb.has-override a:not(.forge-btn):not(.wp-block-button__link):hover{color:var(--color-link-hover)}
.fb.has-override .fb-surface{font-family:var(--font-body)}
.fb.has-override :where(h1,h2,h3,h4,h5,h6){font-family:var(--font-heading)}

/* Light / dark tone helpers for dark backgrounds */
.fb--tone-dark .fb-surface{--color-text:#e8ecf5;--color-heading:#fff;--color-muted:#b8c0d0;--color-link:#ffb98f;--color-link-hover:#fff;--color-border:rgba(255,255,255,.2);color:#e8ecf5}
.fb--tone-light .fb-surface{--color-text:#2a2f3a;--color-heading:#0d1220;--color-muted:#6b7280;color:#2a2f3a}

/* Text flow inside blocks */
.fb-inner > :first-child{margin-top:0}
.fb-inner > :last-child{margin-bottom:0}
.fb-head{margin:0 0 2rem;text-align:var(--ta,center)}
.fb-head__title{margin:0 0 .5rem}
.fb-head__sub{margin:0;color:var(--color-muted);font-size:1.1em}

/* Two-column split (text + image) */
.fb-split{
	display:grid;
	grid-template-columns:var(--cols,1fr 1fr);
	gap:var(--gap,var(--split-gap));
	align-items:var(--va,center);
	width:100%;
}
.fb-split__text{min-width:0}
.fb-split__text > :first-child{margin-top:0}
.fb-split__text > :last-child{margin-bottom:0}
.fb-split__media{min-width:0;order:var(--ord,0)}
.fb-split__media figure{margin:0}
.fb-split__media img{
	display:block;width:100%;height:auto;
	aspect-ratio:var(--img-ratio,auto);
	object-fit:var(--img-fit,cover);
	object-position:var(--img-pos,50% 50%);
	border-radius:var(--img-radius);
	box-shadow:var(--img-shadow);
}
.fb-split__media.fb-surface{padding:var(--pt,var(--card-pad)) var(--pr,var(--card-pad)) var(--pb,var(--card-pad)) var(--pl,var(--card-pad));background-color:var(--bg-color,var(--card-bg));border-radius:var(--fb-radius,var(--card-radius));box-shadow:var(--fb-shadow,var(--card-shadow));border-width:var(--bw,var(--card-bw));overflow:hidden}
.fb-split__media.fb-surface img{box-shadow:none}
.fb--mcard .fb-split__media.fb-surface{display:block}

/* Placeholder in editor / empty image */
.fb-ph{display:flex;align-items:center;justify-content:center;min-height:220px;border-radius:var(--img-radius,12px);background:repeating-linear-gradient(45deg,rgba(0,0,0,.04),rgba(0,0,0,.04) 10px,rgba(0,0,0,.08) 10px,rgba(0,0,0,.08) 20px);color:var(--color-muted);font-size:14px}

/* Grids driven by --n (columns per device) */
.post-grid,.gallery-grid{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:var(--gap,var(--pc-gap,28px))}
.fb--full .fb-container{font-size:var(--fs,inherit)}
