/* Native buttons/forms retain their saved Elementor colors and dimensions.
 * Every button shares the same animated feedback and visible keyboard focus.
 */
.rheinspiel-design :is(label,input,textarea,select) {
    font-family:var(--rsd-font-text);
    font-size:var(--rsd-size-text);
    line-height:var(--rsd-leading);
}
.rheinspiel-design .rsg-form .rsg-check { line-height:var(--rsd-leading); }
.rheinspiel-design :is(.rsg-button,.rs-news-instagram__link,.rcb-content-blocker [role="button"]) {
    display:inline-flex; align-items:center; justify-content:center;
    min-height:44px; max-width:100%; padding:13px 20px;
    border:2px solid var(--rsd-action-bg); border-radius:var(--rsd-control-radius);
    background:var(--rsd-action-bg); color:var(--rsd-action-ink);
    font:600 var(--rsd-size-text)/var(--rsd-leading) var(--rsd-font-text);
    text-decoration:none; text-transform:uppercase; text-shadow:none;
    transform:none; box-shadow:none; cursor:pointer;
}
.rheinspiel-design :is(.rsg-button,.rs-news-instagram__link,.rcb-content-blocker [role="button"]):is(:hover,:focus-visible) {
    background:var(--rsd-action-hover-bg); color:var(--rsd-action-hover-ink); border-color:var(--rsd-action-hover-bg);
}
.rheinspiel-design .rs-news-instagram__settings { background:transparent; color:var(--rsd-action-bg); text-underline-offset:4px; }
.rheinspiel-design .rs-news-instagram__settings:hover { color:var(--rsd-ink); text-decoration:underline; }
.rheinspiel-design .rsg-button:is(:disabled,[aria-disabled="true"]) { background:var(--rsd-cream); color:var(--rsd-muted); border-color:var(--rsd-muted); cursor:not-allowed; }
.rheinspiel-design .rsg-form > label:not(.rsg-check) { color:var(--rsd-ink); font:500 var(--rsd-size-text)/var(--rsd-leading) var(--rsd-font-text); }
.rheinspiel-design .rsg-page .rsg-form :is(input:not([type]),input[type="text"],input[type="email"],input[type="number"],textarea,select) {
    background:#fff; color:var(--rsd-ink); border:1px solid var(--rsd-panel-line);
    border-radius:var(--rsd-field-radius); min-height:46px; font:400 var(--rsd-size-text)/var(--rsd-leading) var(--rsd-font-text);
}
.rheinspiel-design .rsg-form :is(input,textarea)::placeholder { color:var(--rsd-muted); opacity:1; }
/* These accessibility states do not force colors, shapes or spacing over the
 * owner's native controls. A two-color ring works on light and dark surfaces.
 */
.rheinspiel-design :is(a,button,input,textarea,select,summary,[role="button"]):focus-visible {
    outline:3px solid #383327; outline-offset:3px; box-shadow:0 0 0 3px #fffaf0;
}
.rheinspiel-design :is(.elementor-form,.rsg-form) :is(input,textarea,select):is([aria-invalid="true"],:user-invalid) { border-color:#9a2f22; }
.rheinspiel-design .elementor-button :is(.elementor-button-text,.elementor-button-icon) { color:inherit; }
.rheinspiel-design .elementor-button svg { fill:currentColor; }
/* Informational links on native dark panels retain the owner's readable text
 * color, including hover. They remain ordinary underlined links, not buttons. */
.rheinspiel-design .rsd-inverse-copy a:is(:link,:visited,:hover,:focus-visible) {
    color:inherit; text-decoration:underline; text-underline-offset:3px;
}
.rheinspiel-design .rsd-button-label-mobile { display:none; }
.rheinspiel-design .rsd-carousel-controls { display:none; }

/* Smaller visual controls on phones, while retaining 44 px touch targets,
 * the shared text size, validation and the shared focus/hover states.
 * Ordinary Elementor buttons also receive editable native phone padding.
 */
@media(max-width:767px) {
    .rheinspiel-design .rsd-button-label-full { display:none; }
    .rheinspiel-design .rsd-button-label-mobile { display:inline; }
    .rheinspiel-design :is(.elementor-button,.rsg-button,.rs-news-instagram__link,
        .wp-block-button__link,button[type="submit"],input[type="submit"],
        button[type="button"],button:not([type]),[role="button"],
        .rcb-content-blocker [role="button"],.sbi_load_btn,.sbi_follow_btn a):not(:where(#wpadminbar *)) {
        min-height:44px; padding:8px 12px; max-width:100%;
    }
    .rheinspiel-design a.page-numbers { display:inline-flex; align-items:center; min-height:44px; padding:8px 10px; }
    .rheinspiel-design :is([consent-skip-blocker] dialog,.rcb-content-blocker) :is(button,[role="button"]) {
        /* Provider inline spacing is not an Elementor layout control. Keep
         * consent choices and their text intact while compacting their padding. */
        padding:8px 12px!important; min-height:44px;
    }
    .rheinspiel-design :is(.elementor-form,.rsg-form) :is(input:not([type="checkbox"]):not([type="hidden"]),select,textarea) {
        min-height:44px; padding:8px 10px;
    }
    .rheinspiel-design .elementor-widget-form .elementor-form .elementor-button {
        padding:var(--rsd-phone-submit-padding,8px 12px); min-height:44px;
    }
    .rheinspiel-design :is(.elementor-menu-toggle,.rsd-carousel-button) { min-width:44px; min-height:44px; }
}

/* Controls exist only for enhanced collections. They also work for the home
 * information row on a rotated phone, outside Elementor's portrait breakpoint. */
.rheinspiel-design .rsd-carousel-controls:not([hidden]) {
    display:flex; align-items:center; justify-content:space-between; gap:8px;
    width:100%; min-width:0;
    padding:4px 6px; margin-top:4px;
}
.rheinspiel-design .rsd-carousel-button {
    display:inline-flex; align-items:center; justify-content:center;
    min-width:44px; min-height:44px; padding:8px 12px;
    border:2px solid var(--rsd-action-bg); border-radius:var(--rsd-control-radius);
    background:var(--rsd-action-bg); color:var(--rsd-action-ink);
    font:600 var(--rsd-size-text)/var(--rsd-leading) var(--rsd-font-text); text-transform:uppercase;
}
.rheinspiel-design .rsd-carousel-button:is(:hover,:focus-visible) {
    background:var(--rsd-action-hover-bg); border-color:var(--rsd-action-hover-bg); color:var(--rsd-action-hover-ink);
}
.rheinspiel-design .rsd-carousel-button:disabled {
    background:var(--rsd-cream); border-color:var(--rsd-muted); color:var(--rsd-muted); cursor:default;
}
.rheinspiel-design [data-rsd-carousel-ready]:focus-visible {
    outline:3px solid var(--rsd-ink); outline-offset:3px; box-shadow:0 0 0 3px var(--rsd-panel-paper);
}

/* A functional disclosure indicator, not a decoration on ordinary links.
 * The empty CSS shape adds no repeated screen-reader text. Native details
 * exposes its expanded state and keyboard interaction without extra scripts. */
.rheinspiel-design details > summary {
    display:flex; align-items:center; gap:10px; list-style:none; cursor:pointer;
}
.rheinspiel-design details > summary::-webkit-details-marker { display:none; }
.rheinspiel-design details > summary::before {
    content:""; display:block; flex:0 0 8px; width:8px; height:8px;
    margin:0 3px 4px; border-right:2px solid currentColor; border-bottom:2px solid currentColor;
    transform:rotate(45deg); transition:transform 160ms ease-out;
}
.rheinspiel-design details[open] > summary::before { transform:rotate(225deg); margin-bottom:0; }
@media(prefers-reduced-motion:reduce) {
    .rheinspiel-design details > summary::before { transition:none; }
}

/* Legal links keep their native Elementor alignment and wrapping, with usable
 * touch targets when the bottom footer becomes a compact stack on phones. */
@media(max-width:767px) {
    .rheinspiel-design .rsd-footer-legal-links .elementor-icon-list-item a {
        min-height:44px; display:inline-flex; align-items:center;
    }
}

@media(max-width:767px), (min-width:768px) and (max-width:1023px) and (max-height:600px) and (orientation:landscape) {
    .rheinspiel-design .rsd-mobile-details > summary {
        display:flex; align-items:center; min-height:44px; padding:6px 8px;
        border:0; border-radius:8px;
        /* Transparent controls inherit the native Elementor text color. A fixed
         * brown would disappear on brown panels; the chevron follows currentColor. */
        background:transparent; color:inherit;
        font:600 var(--rsd-size-text)/var(--rsd-leading) var(--rsd-font-text);
        text-transform:uppercase; cursor:pointer; list-style:none; text-decoration:underline; text-underline-offset:3px;
    }
    .rheinspiel-design .rsd-mobile-details > summary:is(:hover,:focus-visible) { background:var(--rsd-action-hover-bg); color:var(--rsd-action-hover-ink); }
    .rheinspiel-design .rsd-mobile-details .rsd-details-less,
    .rheinspiel-design .rsd-mobile-details[open] > summary .rsd-details-more { display:none; }
    .rheinspiel-design .rsd-mobile-details[open] > summary .rsd-details-less { display:inline; }
}

/* One small zoom for native and provider buttons alike. The independent scale
 * property preserves existing Elementor transforms and does not reflow nearby
 * content. Colors change together, without a low-contrast intermediate frame.
 * Navigation text links retain their normal link style.
 */
.rheinspiel-design {
    --rsd-button-motion-duration:180ms;
    --rsd-button-hover-scale:1.03;
    --rsd-button-hover-shadow:0 3px 0 rgba(56,51,39,.22), 0 7px 14px rgba(56,51,39,.14);
}
.rheinspiel-design :is(
    button, [role="button"], summary, input[type="button"], input[type="submit"], input[type="reset"],
    .button, .elementor-button, .rsg-button,
    .rs-news-instagram__link, .wp-block-button__link, a.page-numbers,
    a.sbi_load_btn, .sbi_follow_btn a, .df-ui-btn
):not(:where(#wpadminbar *)) {
    /* Providers may set their own inline transition. This override concerns
     * feedback only; their consent logic, colors and visibility stay untouched. */
    scale:1!important;
    transition:scale var(--rsd-button-motion-duration) ease-out,
        box-shadow var(--rsd-button-motion-duration) ease-out!important;
}
.rheinspiel-design :is(
    button, [role="button"], summary, input[type="button"], input[type="submit"], input[type="reset"],
    .button, .elementor-button, .rsg-button,
    .rs-news-instagram__link, .wp-block-button__link, a.page-numbers,
    a.sbi_load_btn, .sbi_follow_btn a, .df-ui-btn
):not(:where(#wpadminbar *)):not(:disabled,[disabled],[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled):is(:hover,:focus-visible) {
    scale:var(--rsd-button-hover-scale)!important;
    box-shadow:var(--rsd-button-hover-shadow)!important;
}
.rheinspiel-design :is(
    button, [role="button"], summary, input[type="button"], input[type="submit"], input[type="reset"],
    .button, .elementor-button, .rsg-button,
    .rs-news-instagram__link, .wp-block-button__link, a.page-numbers,
    a.sbi_load_btn, .sbi_follow_btn a, .df-ui-btn
):not(:where(#wpadminbar *)):not(:disabled,[disabled],[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled):focus-visible {
    /* Preserve the light inner ring beside the existing dark outline. */
    box-shadow:0 0 0 3px #fffaf0, var(--rsd-button-hover-shadow)!important;
}
.rheinspiel-design :is(
    button, [role="button"], summary, input[type="button"], input[type="submit"], input[type="reset"],
    .button, .elementor-button, .rsg-button,
    .rs-news-instagram__link, .wp-block-button__link, a.page-numbers,
    a.sbi_load_btn, .sbi_follow_btn a, .df-ui-btn
):not(:where(#wpadminbar *)):is(:disabled,[disabled],[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled) {
    scale:1!important;
    transition:none!important;
}
@media(prefers-reduced-motion:reduce) {
    .rheinspiel-design :is(
        button, [role="button"], summary, input[type="button"], input[type="submit"], input[type="reset"],
        .button, .elementor-button, .rsg-button,
        .rs-news-instagram__link, .wp-block-button__link, a.page-numbers,
        a.sbi_load_btn, .sbi_follow_btn a, .df-ui-btn
    ):not(:where(#wpadminbar *)) {
        scale:1!important; transition:none!important; animation:none!important;
    }
}
