/*!
 * Themeasy — Logo Wall Widget Styles
 *
 * Static wall of brand logos with shared hairline dividers: every cell
 * carries a full border and a negative end/bottom margin, so adjacent
 * borders collapse into a single crisp line (the "table wall" look). The
 * wrapper clips the outermost cell borders; the optional outer frame is the
 * wrapper's own border, keeping edges single-weight and symmetric even on
 * incomplete last rows. Pure CSS — no JS.
 *
 * Public tokens (--tms-*) are consumed — never private (--themeasy-*).
 *
 * @author Themeasy
 * @link https://themeasy.co
 * @since 1.0.0
 */
.tms-logo-wall{--tms-logo-wall-columns:4;--tms-logo-wall-border-color:var(--tms-border-color,#e5e7eb);--tms-logo-wall-border-style:solid;--tms-logo-wall-border-width:1px;--tms-logo-wall-cell-height:8.75rem;--tms-logo-wall-duration:.35s;--tms-logo-wall-label-offset:.75rem;overflow:hidden}.tms-logo-wall--framed{border:var(--tms-logo-wall-border-width) var(--tms-logo-wall-border-style) var(--tms-logo-wall-border-color)}.tms-logo-wall .tms-logo-wall__list{grid-template-columns:repeat(var(--tms-logo-wall-columns), minmax(0, 1fr));margin:calc(-1 * var(--tms-logo-wall-border-width));padding:0;list-style:none;display:grid}.tms-logo-wall .tms-logo-wall__item{min-width:0;min-height:var(--tms-logo-wall-cell-height);border:var(--tms-logo-wall-border-width) var(--tms-logo-wall-border-style) var(--tms-logo-wall-border-color);transition:background-color var(--tms-logo-wall-duration) ease;margin-block-end:calc(-1 * var(--tms-logo-wall-border-width));margin-inline-end:calc(-1 * var(--tms-logo-wall-border-width));display:flex;position:relative}.tms-logo-wall .tms-logo-wall__link{justify-content:center;align-items:center;width:100%;padding:1.5rem;text-decoration:none;display:flex}.tms-logo-wall .tms-logo-wall__image{object-fit:contain;width:auto;max-width:min(100%,10rem);height:auto;max-height:3.5rem;transition:filter var(--tms-logo-wall-duration) ease, opacity var(--tms-logo-wall-duration) ease, transform var(--tms-logo-wall-duration) ease;display:block}.tms-logo-wall--hover-color .tms-logo-wall__image{filter:grayscale();opacity:.55}.tms-logo-wall--hover-color .tms-logo-wall__item:hover .tms-logo-wall__image,.tms-logo-wall--hover-color .tms-logo-wall__item:focus-within .tms-logo-wall__image{filter:grayscale(0);opacity:1}.tms-logo-wall--hover-grayscale .tms-logo-wall__item:hover .tms-logo-wall__image,.tms-logo-wall--hover-grayscale .tms-logo-wall__item:focus-within .tms-logo-wall__image{filter:grayscale();opacity:.55}.tms-logo-wall--hover-zoom .tms-logo-wall__item{overflow:hidden}.tms-logo-wall--hover-zoom .tms-logo-wall__item:hover .tms-logo-wall__image,.tms-logo-wall--hover-zoom .tms-logo-wall__item:focus-within .tms-logo-wall__image{transform:scale(1.08)}.tms-logo-wall .tms-logo-wall__label{bottom:var(--tms-logo-wall-label-offset);color:var(--tms-muted-color,#6c757d);font-family:var(--tms-accent-font);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;opacity:0;transition:opacity var(--tms-logo-wall-duration) ease, translate var(--tms-logo-wall-duration) ease;pointer-events:none;font-size:.6875rem;font-weight:600;line-height:1;position:absolute;translate:0 .25rem}.tms-logo-wall .tms-logo-wall__label:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--tms-logo-wall-label-offset)}.tms-logo-wall .tms-logo-wall__label:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--tms-logo-wall-label-offset)}.tms-logo-wall .tms-logo-wall__label:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--tms-logo-wall-label-offset)}.tms-logo-wall .tms-logo-wall__label:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--tms-logo-wall-label-offset)}.tms-logo-wall--labels .tms-logo-wall__item:hover .tms-logo-wall__label,.tms-logo-wall--labels .tms-logo-wall__item:focus-within .tms-logo-wall__label{opacity:1;translate:0}.tms-logo-wall .tms-logo-wall__wordmark{overflow-wrap:normal;max-width:100%;color:var(--tms-heading-color,#1a1a2e);font-family:var(--tms-heading-font,inherit);text-align:center;transition:color var(--tms-logo-wall-duration) ease, opacity var(--tms-logo-wall-duration) ease, transform var(--tms-logo-wall-duration) ease;font-size:1.125rem;font-weight:700;line-height:1.2;display:block}.tms-logo-wall--hover-color .tms-logo-wall__wordmark{opacity:.55}.tms-logo-wall--hover-color .tms-logo-wall__item:hover .tms-logo-wall__wordmark,.tms-logo-wall--hover-color .tms-logo-wall__item:focus-within .tms-logo-wall__wordmark{opacity:1}.tms-logo-wall--hover-grayscale .tms-logo-wall__item:hover .tms-logo-wall__wordmark,.tms-logo-wall--hover-grayscale .tms-logo-wall__item:focus-within .tms-logo-wall__wordmark{opacity:.55}.tms-logo-wall--hover-zoom .tms-logo-wall__item:hover .tms-logo-wall__wordmark,.tms-logo-wall--hover-zoom .tms-logo-wall__item:focus-within .tms-logo-wall__wordmark{transform:scale(1.08)}.tms-logo-wall .tms-logo-wall__link:focus-visible{outline:2px solid var(--tms-primary-color,#2563eb);outline-offset:calc(-2px - var(--tms-logo-wall-border-width))}@media (prefers-reduced-motion:reduce){.tms-logo-wall .tms-logo-wall__item,.tms-logo-wall .tms-logo-wall__image,.tms-logo-wall .tms-logo-wall__label,.tms-logo-wall .tms-logo-wall__wordmark{transition-duration:.01ms!important}.tms-logo-wall--hover-zoom .tms-logo-wall__item:hover .tms-logo-wall__image,.tms-logo-wall--hover-zoom .tms-logo-wall__item:focus-within .tms-logo-wall__image,.tms-logo-wall--hover-zoom .tms-logo-wall__item:hover .tms-logo-wall__wordmark,.tms-logo-wall--hover-zoom .tms-logo-wall__item:focus-within .tms-logo-wall__wordmark{transform:none}}