.ifp-abs-branding {
    --ifp-abs-max-image: 220px;
    --ifp-abs-image-scale: 1;
    --ifp-abs-offset-x: 0px;
    --ifp-abs-offset-y: 0px;
    --ifp-abs-card-bg: linear-gradient(135deg, #f6faff 0%, #ffffff 56%, #eaf4ff 100%);
    --ifp-abs-card-border: rgba(23,105,210,.18);
    --ifp-abs-card-text: #19324d;
    --ifp-abs-card-label: #1769d2;
    --ifp-abs-card-label-bg: rgba(23,105,210,.10);
    position: relative;
    display: flex;
    align-items: center;
    gap: 18px;
    max-width: 100%;
    margin: 18px 0;
    padding: 16px 20px;
    border: 1px solid var(--ifp-abs-card-border);
    border-radius: 20px;
    background: var(--ifp-abs-card-bg);
    color: var(--ifp-abs-card-text);
    box-shadow: 0 14px 36px rgba(11,41,72,.08);
    box-sizing: border-box;
    overflow: visible;
    isolation: isolate;
}
.ifp-abs-branding *,
.ifp-abs-branding *::before,
.ifp-abs-branding *::after {
    box-sizing: border-box;
}
.ifp-abs-branding__accent {
    position: absolute;
    inset: auto 12% -22px auto;
    width: 150px;
    height: 70px;
    border-radius: 999px;
    background: rgba(23,105,210,.10);
    filter: blur(24px);
    opacity: .65;
    pointer-events: none;
    z-index: -1;
}
.ifp-abs-branding__visual {
    flex: 0 0 auto;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    max-width: var(--ifp-abs-max-image);
    position: relative;
    z-index: 2;
}
.ifp-abs-branding__visual picture {
    display: contents;
}
.ifp-abs-branding__visual img {
    display: block;
    width: auto;
    max-width: 100%;
    max-height: var(--ifp-abs-max-image);
    object-fit: contain;
    transform: translate(var(--ifp-abs-offset-x), var(--ifp-abs-offset-y)) scale(var(--ifp-abs-image-scale));
    transform-origin: center bottom;
    filter: drop-shadow(0 18px 20px rgba(11,41,72,.18));
}
.ifp-abs-branding--mirror-x .ifp-abs-branding__visual img {
    transform: translate(var(--ifp-abs-offset-x), var(--ifp-abs-offset-y)) scale(calc(var(--ifp-abs-image-scale) * -1), var(--ifp-abs-image-scale));
}
.ifp-abs-branding__message {
    min-width: 0;
    flex: 1 1 auto;
    font-size: 15px;
    line-height: 1.55;
    color: var(--ifp-abs-card-text);
    position: relative;
    z-index: 1;
}
.ifp-abs-branding__message > :first-child { margin-top: 0; }
.ifp-abs-branding__message > :last-child { margin-bottom: 0; }
.ifp-abs-branding__message p {
    color: inherit;
    margin: 7px 0 0;
}
.ifp-abs-branding__label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    width: fit-content;
    max-width: 100%;
    margin: 0 0 4px;
    padding: 5px 9px;
    border-radius: 999px;
    background: var(--ifp-abs-card-label-bg);
    color: var(--ifp-abs-card-label);
    font-size: 11px;
    font-weight: 900;
    line-height: 1.1;
    letter-spacing: .055em;
    text-transform: uppercase;
}

.ifp-abs-branding--small { --ifp-abs-max-image: 96px; padding: 11px 15px; gap: 12px; }
.ifp-abs-branding--medium { --ifp-abs-max-image: 156px; }
.ifp-abs-branding--large { --ifp-abs-max-image: 220px; }
.ifp-abs-branding--hero { --ifp-abs-max-image: 310px; padding: 20px 24px; }

.ifp-abs-branding--right .ifp-abs-branding__visual { order: 2; }
.ifp-abs-branding--right .ifp-abs-branding__message { order: 1; }
.ifp-abs-branding--left .ifp-abs-branding__visual { order: 1; }
.ifp-abs-branding--left .ifp-abs-branding__message { order: 2; }
.ifp-abs-branding--center {
    flex-direction: column;
    text-align: center;
}
.ifp-abs-branding--inline {
    display: inline-flex;
    width: auto;
}

/* Data-driven tone presets. */
.ifp-abs-branding--tone-navy {
    --ifp-abs-card-bg: linear-gradient(135deg, #0b2948 0%, #123b65 60%, #1769d2 140%);
    --ifp-abs-card-border: rgba(255,255,255,.10);
    --ifp-abs-card-text: #ffffff;
    --ifp-abs-card-label: #ffffff;
    --ifp-abs-card-label-bg: rgba(255,255,255,.14);
    box-shadow: 0 18px 42px rgba(11,41,72,.20);
}
.ifp-abs-branding--tone-mint {
    --ifp-abs-card-bg: linear-gradient(135deg, #f2fbf7 0%, #ffffff 60%, #e6f8ef 100%);
    --ifp-abs-card-border: rgba(26,143,90,.20);
    --ifp-abs-card-label: #176440;
    --ifp-abs-card-label-bg: rgba(26,143,90,.10);
}
.ifp-abs-branding--tone-sand {
    --ifp-abs-card-bg: linear-gradient(135deg, #fffaf2 0%, #ffffff 60%, #fff0d9 100%);
    --ifp-abs-card-border: rgba(184,117,20,.18);
    --ifp-abs-card-label: #9a5d09;
    --ifp-abs-card-label-bg: rgba(184,117,20,.10);
}
.ifp-abs-branding--tone-plain {
    --ifp-abs-card-bg: #ffffff;
}

/*
 * Edge-peek: Werki becomes part of the card instead of a detached picture.
 * The asset sits inside the component, but intentionally protrudes across
 * the upper/lower card edge. Transparent pack assets are ideal for this.
 */
.ifp-abs-branding--layout-edge-peek {
    --ifp-abs-peek-width: 188px;
    --ifp-abs-peek-height: 184px;
    min-height: 124px;
    margin: 28px 0 30px;
    padding: 22px calc(var(--ifp-abs-peek-width) + 30px) 22px 24px;
    border-radius: 24px;
    background:
        radial-gradient(circle at 86% 12%, rgba(23,105,210,.14), transparent 25%),
        var(--ifp-abs-card-bg);
    box-shadow:
        0 18px 44px rgba(11,41,72,.10),
        inset 0 1px 0 rgba(255,255,255,.75);
}
.ifp-abs-branding--layout-edge-peek::before {
    content: "";
    position: absolute;
    inset: 9px;
    border: 1px solid rgba(255,255,255,.65);
    border-radius: 17px;
    pointer-events: none;
    z-index: 0;
}
.ifp-abs-branding--layout-edge-peek .ifp-abs-branding__visual {
    position: absolute;
    width: var(--ifp-abs-peek-width);
    height: var(--ifp-abs-peek-height);
    max-width: none;
    right: -12px;
    bottom: -18px;
    align-items: flex-end;
    justify-content: flex-end;
    pointer-events: none;
}
.ifp-abs-branding--layout-edge-peek .ifp-abs-branding__visual img {
    width: auto;
    max-width: var(--ifp-abs-peek-width);
    max-height: calc(var(--ifp-abs-peek-height) + 58px);
    transform-origin: right bottom;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-right-top .ifp-abs-branding__visual {
    top: -46px;
    bottom: auto;
    align-items: flex-start;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-right-top .ifp-abs-branding__visual img {
    transform-origin: right top;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-bottom {
    padding-left: calc(var(--ifp-abs-peek-width) + 30px);
    padding-right: 24px;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-bottom .ifp-abs-branding__visual {
    left: -12px;
    right: auto;
    justify-content: flex-start;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-bottom .ifp-abs-branding__visual img {
    transform-origin: left bottom;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-top {
    padding-left: calc(var(--ifp-abs-peek-width) + 30px);
    padding-right: 24px;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-top .ifp-abs-branding__visual {
    left: -12px;
    right: auto;
    top: -46px;
    bottom: auto;
    align-items: flex-start;
    justify-content: flex-start;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-top .ifp-abs-branding__visual img {
    transform-origin: left top;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--small {
    --ifp-abs-peek-width: 126px;
    --ifp-abs-peek-height: 126px;
    min-height: 96px;
    padding-top: 16px;
    padding-bottom: 16px;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--medium {
    --ifp-abs-peek-width: 170px;
    --ifp-abs-peek-height: 164px;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--large {
    --ifp-abs-peek-width: 210px;
    --ifp-abs-peek-height: 202px;
    min-height: 138px;
}
.ifp-abs-branding--layout-edge-peek.ifp-abs-branding--hero {
    --ifp-abs-peek-width: 250px;
    --ifp-abs-peek-height: 225px;
    min-height: 152px;
    padding-top: 26px;
    padding-bottom: 26px;
}

/* Minimal mode remains available for packs that only need a small helper. */
.ifp-abs-branding--layout-minimal {
    width: fit-content;
    max-width: 100%;
    margin: 12px 0 18px;
    padding: 8px 12px;
    border-radius: 999px;
    box-shadow: none;
    background: rgba(255,255,255,.92);
}
.ifp-abs-branding--layout-minimal .ifp-abs-branding__accent { display: none; }
.ifp-abs-branding--layout-minimal .ifp-abs-branding__visual { --ifp-abs-max-image: 64px; }
.ifp-abs-branding--layout-minimal .ifp-abs-branding__message { font-size: 13px; }

/* Small motion only; no bouncing mascot. */
@media (prefers-reduced-motion: no-preference) {
    .ifp-abs-branding--layout-edge-peek .ifp-abs-branding__visual img {
        transition: transform .22s ease, filter .22s ease;
    }
    .ifp-abs-branding--layout-edge-peek:hover .ifp-abs-branding__visual img {
        filter: drop-shadow(0 22px 24px rgba(11,41,72,.23));
    }
}

@media (max-width: 720px) {
    .ifp-abs-branding,
    .ifp-abs-branding--right,
    .ifp-abs-branding--left {
        --ifp-abs-max-image: 108px;
        gap: 12px;
        padding: 12px 14px;
    }
    .ifp-abs-branding__message {
        font-size: 13.5px;
        line-height: 1.45;
    }
    .ifp-abs-branding--hero {
        --ifp-abs-max-image: 140px;
    }
    .ifp-abs-branding--layout-edge-peek,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--small,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--medium,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--large,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--hero {
        --ifp-abs-peek-width: 108px;
        --ifp-abs-peek-height: 120px;
        min-height: 104px;
        margin: 30px 0 22px;
        padding: 16px 102px 16px 15px;
        border-radius: 20px;
    }
    .ifp-abs-branding--layout-edge-peek .ifp-abs-branding__visual,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-right-top .ifp-abs-branding__visual {
        width: var(--ifp-abs-peek-width);
        height: var(--ifp-abs-peek-height);
        right: -10px;
        left: auto;
        top: -26px;
        bottom: auto;
        align-items: flex-start;
        justify-content: flex-end;
    }
    .ifp-abs-branding--layout-edge-peek .ifp-abs-branding__visual img,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-right-top .ifp-abs-branding__visual img {
        max-width: 112px;
        max-height: 142px;
        transform-origin: right top;
    }
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-bottom,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-top {
        padding: 16px 15px 16px 102px;
    }
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-bottom .ifp-abs-branding__visual,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-top .ifp-abs-branding__visual {
        left: -10px;
        right: auto;
        top: -26px;
        bottom: auto;
        justify-content: flex-start;
    }
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-bottom .ifp-abs-branding__visual img,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-top .ifp-abs-branding__visual img {
        transform-origin: left top;
    }
    .ifp-abs-branding__label {
        font-size: 10px;
        padding: 4px 7px;
    }
}

@media (max-width: 440px) {
    .ifp-abs-branding--layout-edge-peek,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--small,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--medium,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--large,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--hero {
        --ifp-abs-peek-width: 88px;
        --ifp-abs-peek-height: 102px;
        padding-right: 82px;
    }
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-bottom,
    .ifp-abs-branding--layout-edge-peek.ifp-abs-branding--position-left-top {
        padding-left: 82px;
        padding-right: 15px;
    }
    .ifp-abs-branding--layout-edge-peek .ifp-abs-branding__visual img {
        max-width: 94px;
        max-height: 122px;
    }
}

/* v0.1.18 – neutral planner-modal presentation hints.
 * Exact Werki artwork stays in the active Brand-Pack; these rules only control
 * how an already configured placement sits inside a host modal. */
.ifp-abs-branding--hint-compact,
.ifp-abs-branding--hint-full-body{
    width:100%;
    max-width:100%;
    min-height:0;
    margin:0;
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
    overflow:visible;
    justify-content:center;
}
.ifp-abs-branding--hint-compact::before,
.ifp-abs-branding--hint-full-body::before,
.ifp-abs-branding--hint-compact .ifp-abs-branding__accent,
.ifp-abs-branding--hint-full-body .ifp-abs-branding__accent{
    display:none;
}
.ifp-abs-branding--hint-compact .ifp-abs-branding__visual,
.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual,
.ifp-abs-branding--hint-compact.ifp-abs-branding--layout-edge-peek .ifp-abs-branding__visual,
.ifp-abs-branding--hint-full-body.ifp-abs-branding--layout-edge-peek .ifp-abs-branding__visual{
    position:relative;
    inset:auto;
    right:auto;
    left:auto;
    top:auto;
    bottom:auto;
    width:auto;
    height:auto;
    max-width:100%;
    align-items:flex-end;
    justify-content:center;
    pointer-events:none;
}
.ifp-abs-branding--hint-compact .ifp-abs-branding__visual{
    --ifp-abs-max-image:128px;
}
.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual{
    --ifp-abs-max-image:250px;
}
.ifp-abs-branding--hint-compact .ifp-abs-branding__visual img{
    width:auto;
    max-width:128px;
    max-height:150px;
    transform-origin:center bottom;
}
.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual img{
    width:auto;
    max-width:230px;
    max-height:300px;
    transform-origin:center bottom;
}
.ifp-abs-branding--hint-compact .ifp-abs-branding__message,
.ifp-abs-branding--hint-full-body .ifp-abs-branding__message{
    display:none;
}

@media (max-width:720px){
    .ifp-abs-branding--hint-compact .ifp-abs-branding__visual{
        --ifp-abs-max-image:100px;
    }
    .ifp-abs-branding--hint-full-body .ifp-abs-branding__visual{
        --ifp-abs-max-image:175px;
    }
    .ifp-abs-branding--hint-compact .ifp-abs-branding__visual img{
        max-width:100px;
        max-height:118px;
    }
    .ifp-abs-branding--hint-full-body .ifp-abs-branding__visual img{
        max-width:165px;
        max-height:210px;
    }
}

/* v0.1.19 – modal companion polish.
 * Modal companions should feel docked to the host content, not like a second card.
 * The host may request a visual side; exact artwork still remains pack-owned. */
.ifp-abs-branding.ifp-abs-branding--hint-compact,
.ifp-abs-branding.ifp-abs-branding--hint-full-body{
    position:relative;
    display:flex;
    align-items:flex-end;
    justify-content:flex-end;
    overflow:visible;
    isolation:isolate;
}
.ifp-abs-branding.ifp-abs-branding--hint-compact{
    min-height:148px;
}
.ifp-abs-branding.ifp-abs-branding--hint-full-body{
    min-height:286px;
}
.ifp-abs-branding--hint-compact.ifp-abs-branding--presentation-side-left,
.ifp-abs-branding--hint-full-body.ifp-abs-branding--presentation-side-left{
    justify-content:flex-start;
}
.ifp-abs-branding--hint-compact.ifp-abs-branding--presentation-side-right,
.ifp-abs-branding--hint-full-body.ifp-abs-branding--presentation-side-right{
    justify-content:flex-end;
}
.ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__visual,
.ifp-abs-branding.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual{
    position:relative;
    z-index:1;
    margin:0;
    padding:0;
    overflow:visible;
}
.ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__visual::before,
.ifp-abs-branding.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual::before{
    content:"";
    position:absolute;
    z-index:-1;
    left:50%;
    bottom:2px;
    width:82%;
    height:34%;
    transform:translateX(-50%);
    border-radius:50%;
    background:radial-gradient(ellipse at center, rgba(23,105,210,.15) 0%, rgba(23,105,210,.07) 42%, rgba(23,105,210,0) 74%);
    filter:blur(3px);
    pointer-events:none;
}
.ifp-abs-branding.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual::before{
    width:92%;
    height:29%;
    bottom:-2px;
    background:radial-gradient(ellipse at center, rgba(23,105,210,.17) 0%, rgba(23,105,210,.07) 44%, rgba(23,105,210,0) 76%);
}
.ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__visual img{
    max-width:142px;
    max-height:164px;
    filter:drop-shadow(0 12px 15px rgba(11,41,72,.14));
}
.ifp-abs-branding.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual img{
    max-width:218px;
    max-height:292px;
    filter:drop-shadow(0 16px 19px rgba(11,41,72,.15));
}
.ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__accent,
.ifp-abs-branding.ifp-abs-branding--hint-full-body .ifp-abs-branding__accent{
    display:none;
}
/* Keep transforms stable when a fallback is deliberately mirrored for a modal.
 * The class is mainly diagnostic; the actual mirror state is the normal
 * ifp-abs-branding--mirror-x class after the safe toggle in PHP. */
.ifp-abs-branding--fallback-mirror-inverted{
    --ifp-abs-modal-fallback-direction:1;
}

@media (max-width:780px){
    .ifp-abs-branding.ifp-abs-branding--hint-compact{
        min-height:112px;
    }
    .ifp-abs-branding.ifp-abs-branding--hint-full-body{
        min-height:172px;
    }
    .ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__visual img{
        max-width:104px;
        max-height:122px;
    }
    .ifp-abs-branding.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual img{
        max-width:158px;
        max-height:198px;
    }
}
@media (max-width:480px){
    .ifp-abs-branding.ifp-abs-branding--hint-compact{
        min-height:96px;
    }
    .ifp-abs-branding.ifp-abs-branding--hint-full-body{
        min-height:148px;
    }
    .ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__visual img{
        max-width:92px;
        max-height:108px;
    }
    .ifp-abs-branding.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual img{
        max-width:138px;
        max-height:174px;
    }
}



/* v0.1.20 – modal fallback normalization.
 * A step placement may have host-specific scale/offset values. When that same
 * placement is reused as a modal fallback, those old offsets must not leak into
 * the modal and cover copy or controls. Dedicated modal placements remain fully
 * pack-controlled and are not normalized here. */
.ifp-abs-branding--fallback.ifp-abs-branding--hint-compact,
.ifp-abs-branding--fallback.ifp-abs-branding--hint-full-body{
    --ifp-abs-image-scale:1 !important;
    --ifp-abs-offset-x:0px !important;
    --ifp-abs-offset-y:0px !important;
    box-sizing:border-box;
}
.ifp-abs-branding--fallback.ifp-abs-branding--hint-compact .ifp-abs-branding__visual,
.ifp-abs-branding--fallback.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual{
    max-width:100%;
    margin:0;
    overflow:visible;
}
.ifp-abs-branding--fallback.ifp-abs-branding--hint-compact .ifp-abs-branding__visual img,
.ifp-abs-branding--fallback.ifp-abs-branding--hint-full-body .ifp-abs-branding__visual img{
    display:block;
    margin:0 auto;
}

/* v0.1.21 – neutral header presentation for host modals.
 * A host may place an already configured companion inside its modal header.
 * The header hint is intentionally compact and message-free. Exact artwork,
 * pose and dedicated placement data remain owned by the active Brand-Pack. */
.ifp-abs-branding.ifp-abs-branding--hint-header{
    width:100%;
    max-width:100%;
    min-height:0;
    margin:0;
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
    overflow:visible;
    display:flex;
    align-items:flex-end;
    justify-content:flex-end;
    gap:0;
}
.ifp-abs-branding--hint-header::before,
.ifp-abs-branding--hint-header .ifp-abs-branding__accent,
.ifp-abs-branding--hint-header .ifp-abs-branding__message{
    display:none;
}
.ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual,
.ifp-abs-branding.ifp-abs-branding--hint-header.ifp-abs-branding--layout-edge-peek .ifp-abs-branding__visual{
    position:relative;
    inset:auto;
    right:auto;
    left:auto;
    top:auto;
    bottom:auto;
    width:auto;
    height:auto;
    max-width:100%;
    margin:0;
    padding:0;
    overflow:visible;
    align-items:flex-end;
    justify-content:flex-end;
    pointer-events:none;
}
.ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
    display:block;
    width:auto;
    max-width:112px;
    max-height:94px;
    margin:0 0 -2px auto;
    object-fit:contain;
    transform-origin:center bottom;
    filter:drop-shadow(0 8px 11px rgba(11,41,72,.13));
}
.ifp-abs-branding--hint-header.ifp-abs-branding--presentation-side-left{
    justify-content:flex-start;
}
.ifp-abs-branding--hint-header.ifp-abs-branding--presentation-side-left .ifp-abs-branding__visual{
    justify-content:flex-start;
}
.ifp-abs-branding--hint-header.ifp-abs-branding--presentation-side-left .ifp-abs-branding__visual img{
    margin-left:0;
    margin-right:auto;
}

/* Step placements can still be reused safely as header fallbacks. Their
 * step-specific scaling/offsets must not leak into the small header area. */
.ifp-abs-branding--fallback.ifp-abs-branding--hint-header{
    --ifp-abs-image-scale:1 !important;
    --ifp-abs-offset-x:0px !important;
    --ifp-abs-offset-y:0px !important;
    box-sizing:border-box;
}
.ifp-abs-branding--fallback.ifp-abs-branding--hint-header .ifp-abs-branding__visual{
    max-width:100%;
    margin:0;
}
.ifp-abs-branding--fallback.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
    margin-left:auto;
    margin-right:0;
}

@media (max-width:640px){
    .ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
        max-width:84px;
        max-height:76px;
    }
}
@media (max-width:420px){
    .ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
        max-width:64px;
        max-height:64px;
    }
}

/* v0.1.22 – modal companion scale polish.
 * Slightly larger neutral presentation only. Exact artwork, pose and pack
 * placement remain private/pack-owned. */
.ifp-abs-branding.ifp-abs-branding--hint-compact{
    min-height:160px;
}
.ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__visual img{
    max-width:158px;
    max-height:182px;
}
.ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
    max-width:132px;
    max-height:110px;
    margin-bottom:-1px;
    filter:drop-shadow(0 9px 13px rgba(11,41,72,.14));
}
@media (max-width:780px){
    .ifp-abs-branding.ifp-abs-branding--hint-compact{
        min-height:120px;
    }
    .ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__visual img{
        max-width:114px;
        max-height:132px;
    }
}
@media (max-width:640px){
    .ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
        max-width:98px;
        max-height:88px;
    }
}
@media (max-width:420px){
    .ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
        max-width:72px;
        max-height:72px;
    }
}

/* v0.1.23 – final modal companion size polish.
 * Host layout remains unchanged; only neutral compact/header presentation grows slightly. */
.ifp-abs-branding.ifp-abs-branding--hint-compact{
    min-height:174px;
}
.ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__visual img{
    max-width:178px;
    max-height:204px;
}
.ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
    max-width:156px;
    max-height:128px;
    margin-bottom:0;
    filter:drop-shadow(0 10px 14px rgba(11,41,72,.14));
}
@media (max-width:780px){
    .ifp-abs-branding.ifp-abs-branding--hint-compact{
        min-height:130px;
    }
    .ifp-abs-branding.ifp-abs-branding--hint-compact .ifp-abs-branding__visual img{
        max-width:124px;
        max-height:144px;
    }
}
@media (max-width:640px){
    .ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
        max-width:110px;
        max-height:98px;
    }
}
@media (max-width:420px){
    .ifp-abs-branding.ifp-abs-branding--hint-header .ifp-abs-branding__visual img{
        max-width:82px;
        max-height:80px;
    }
}

