/**
 * Cache Compatibility: Hide banner and modal by default.
 * JavaScript will show them based on user's consent cookie.
 */
#digiconsent-cookie-banner,
#digiconsent-settings-modal {
    display: none;
}

/* Animations */
@keyframes digiconsent-slide-up {
    from {
        transform: translateY(100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes digiconsent-slide-down {
    from {
        transform: translateY(-100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes digiconsent-slide-left {
    from {
        transform: translateX(100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

@keyframes digiconsent-slide-right {
    from {
        transform: translateX(-100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

@keyframes digiconsent-fade-in {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes digiconsent-scale-in {
    from {
        transform: scale(0.95);
        opacity: 0;
    }
    to {
        transform: scale(1);
        opacity: 1;
    }
}

/* Banner Base */
.digiconsent-banner {
    position: fixed;
    z-index: 999999;
    font-family:
        -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue",
        Arial, sans-serif;
    box-sizing: border-box;

    *,
    *::before,
    *::after {
        box-sizing: border-box;
    }

    /* Layout Styles */
    &.digiconsent-layout-top,
    &.digiconsent-layout-bottom,
    &.digiconsent-layout-side,
    &.digiconsent-layout-fullscreen {
        .digiconsent-banner-actions {
            box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.03);
        }

        .digiconsent-btn.digiconsent-btn-reject {
            border-right: 1px solid rgba(0, 0, 0, 0.06);
        }
    }

    &.digiconsent-layout-top,
    &.digiconsent-layout-bottom {
        max-width: 100%;

        .digiconsent-banner-inner {
            display: flex;
            gap: 2rem;
            align-items: center;
        }

        .digiconsent-banner-content .digiconsent-banner-title {
            margin-bottom: 0.5rem;
        }

        .digiconsent-banner-actions {
            align-self: stretch;
        }
    }

    &.digiconsent-layout-bottom {
        bottom: 0;
        left: 0;
        right: 0;

        .digiconsent-banner-container {
            padding: 2rem;
        }

        &.digiconsent-animation-slide {
            animation: digiconsent-slide-up
                var(--digiconsent-animation-speed, 600ms)
                cubic-bezier(0.16, 1, 0.3, 1);
        }

        &.digiconsent-animation-fade {
            animation: digiconsent-fade-in
                var(--digiconsent-animation-speed, 400ms) ease-out;
        }

        &.digiconsent-animation-zoom {
            animation: digiconsent-scale-in
                var(--digiconsent-animation-speed, 400ms)
                cubic-bezier(0.16, 1, 0.3, 1);
        }
    }

    &.digiconsent-layout-top {
        top: 0;
        left: 0;
        right: 0;

        .digiconsent-banner-container {
            padding: 2rem;
        }

        &.digiconsent-animation-slide {
            animation: digiconsent-slide-down
                var(--digiconsent-animation-speed, 600ms)
                cubic-bezier(0.16, 1, 0.3, 1);
        }

        &.digiconsent-animation-fade {
            animation: digiconsent-fade-in
                var(--digiconsent-animation-speed, 400ms) ease-out;
        }

        &.digiconsent-animation-zoom {
            animation: digiconsent-scale-in
                var(--digiconsent-animation-speed, 400ms)
                cubic-bezier(0.16, 1, 0.3, 1);
        }
    }

    &.digiconsent-layout-side {
        bottom: 1.5rem;
        width: 400px;
        max-width: calc(100vw - 40px);

        &.digiconsent-position-left {
            left: 1.5rem;

            &.digiconsent-animation-slide {
                animation: digiconsent-slide-right
                    var(--digiconsent-animation-speed, 600ms)
                    cubic-bezier(0.16, 1, 0.3, 1);
            }

            &.digiconsent-animation-fade {
                animation: digiconsent-fade-in
                    var(--digiconsent-animation-speed, 400ms) ease-out;
            }

            &.digiconsent-animation-zoom {
                animation: digiconsent-scale-in
                    var(--digiconsent-animation-speed, 400ms)
                    cubic-bezier(0.16, 1, 0.3, 1);
            }
        }

        &.digiconsent-position-right {
            right: 1.5rem;

            &.digiconsent-animation-slide {
                animation: digiconsent-slide-left
                    var(--digiconsent-animation-speed, 600ms)
                    cubic-bezier(0.16, 1, 0.3, 1);
            }

            &.digiconsent-animation-fade {
                animation: digiconsent-fade-in
                    var(--digiconsent-animation-speed, 400ms) ease-out;
            }

            &.digiconsent-animation-zoom {
                animation: digiconsent-scale-in
                    var(--digiconsent-animation-speed, 400ms)
                    cubic-bezier(0.16, 1, 0.3, 1);
            }
        }

        .digiconsent-banner-container {
            padding: 0;
            display: flex;
            flex-direction: column;
        }

        .digiconsent-banner-content {
            flex: 1;
            overflow-y: auto;
        }
    }

    &.digiconsent-layout-fullscreen {
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;

        &.digiconsent-animation-slide,
        &.digiconsent-animation-fade {
            animation: digiconsent-fade-in
                var(--digiconsent-animation-speed, 400ms) ease-out;
        }

        &.digiconsent-animation-zoom {
            animation: digiconsent-fade-in
                var(--digiconsent-animation-speed, 400ms) ease-out;
        }

        .digiconsent-banner-overlay {
            display: block;
        }

        .digiconsent-banner-container {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 90%;
            max-width: 700px;
            max-height: 90vh;
            padding: 2.5rem;
        }

        &.digiconsent-animation-zoom .digiconsent-banner-container {
            animation: digiconsent-scale-in
                var(--digiconsent-animation-speed, 400ms)
                cubic-bezier(0.16, 1, 0.3, 1);
        }
    }
}

/* Banner Overlay */
.digiconsent-banner-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(4px);
    opacity: var(--digiconsent-overlay-opacity);
    animation: digiconsent-fade-in 0.4s ease-out;
}

/* Banner Container */
.digiconsent-banner-container {
    position: relative;
    z-index: 1;
    margin: 0 auto;
    max-width: 1200px;
    padding: 1.5rem;
}

/* Banner Inner */
.digiconsent-banner-inner {
    background-color: var(--digiconsent-bg-color);
    border-radius: var(--digiconsent-border-radius);
    position: relative;
    box-shadow: var(--digiconsent-box-shadow);
    overflow: hidden;
}

/* Banner Content */
.digiconsent-banner-content {
    position: relative;
    padding: 1.25rem;
    width: 100%;
    z-index: 1;

    .digiconsent-banner-title {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 2rem;
        margin-bottom: 1rem;
    }

    .digiconsent-banner-heading {
        display: flex;
        flex-direction: column;
    }

    .digiconsent-banner-pre-heading {
        font-size: 1.1rem;
        line-height: 1.4;
        color: var(--digiconsent-pre-heading-color);
    }

    .digiconsent-banner-heading-text {
        font-size: 1.5rem;
        font-weight: 700;
        color: var(--digiconsent-heading-color);
    }

    p {
        margin: 0 0 1rem;
        font-size: 0.9rem;
        line-height: 1.6;
        color: var(--digiconsent-text-color);

        &:last-child {
            margin-bottom: 0;
        }
    }

    a {
        text-decoration: underline;
    }
}

.digiconsent-banner-logo {
    display: flex;
}

/* Banner Actions */
.digiconsent-banner-actions {
    display: flex;
    flex-wrap: wrap;
    position: relative;
    z-index: 1;
}

/* Banner Buttons */
.digiconsent-btn {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    flex: 1;
    font-size: 0.875rem;
    font-weight: 600;
    gap: 8px;
    min-width: 160px;
    padding: 0.75rem 0.5rem;
    border: none;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.3s ease;

    &.digiconsent-btn-accept {
        background-color: var(--digiconsent-accept-btn-color);
        color: var(--digiconsent-accept-btn-text-color);

        &:hover {
            background-color: var(--digiconsent-accept-btn-hover-color);
            color: var(--digiconsent-accept-btn-hover-text-color);
        }
    }

    &.digiconsent-btn-reject {
        background-color: var(--digiconsent-reject-btn-color);
        color: var(--digiconsent-reject-btn-text-color);

        &:hover {
            background-color: var(--digiconsent-reject-btn-hover-color);
            color: var(--digiconsent-reject-btn-hover-text-color);
        }
    }

    &.digiconsent-btn-settings {
        background-color: var(--digiconsent-settings-btn-color);
        color: var(--digiconsent-settings-btn-text-color);

        &:hover {
            background-color: var(--digiconsent-settings-btn-hover-color);
            color: var(--digiconsent-settings-btn-hover-text-color);
        }
    }

    &.digiconsent-btn-secondary {
        background-color: var(--digiconsent-settings-btn-color);
        color: var(--digiconsent-settings-btn-text-color);
        border-right: 1px solid rgba(0, 0, 0, 0.06);

        &:hover {
            background-color: var(--digiconsent-settings-btn-hover-color);
            color: var(--digiconsent-settings-btn-hover-text-color);
        }
    }
}

/* Cookie Categories */
.digiconsent-settings-modal
    .digiconsent-banner-content
    .digiconsent-banner-heading-text {
    display: flex;
    margin-bottom: 1.5rem;
}

.digiconsent-categories {
    padding: 1.5rem;
    border-top: 1px solid #e5e7eb;
}

.digiconsent-category {
    background: #f9fafb;
    border-radius: 0.5rem;
    margin-bottom: 0.75rem;
    overflow: hidden;

    &:last-child {
        margin-bottom: 0;
    }
}

.digiconsent-category-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem;
    cursor: pointer;
    user-select: none;
    transition: background-color 0.2s ease;

    &:hover {
        background: rgba(0, 0, 0, 0.03);
    }

    &[aria-expanded="true"] .digiconsent-category-arrow {
        transform: rotate(180deg);
    }
}

.digiconsent-category-header-left {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1;
}

.digiconsent-category-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #6b7280;
    transition: transform 0.2s ease;
}

.digiconsent-category-header-text {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: #111827;
}

.digiconsent-category-content {
    padding: 0 1rem 1rem;
    border-top: 1px solid rgba(0, 0, 0, 0.06);
}

.digiconsent-category-content[hidden] {
    display: none;
}

.digiconsent-category-toggle {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
    flex-shrink: 0;
    margin: 0;

    input[type="checkbox"] {
        opacity: 0;
        width: 0;
        height: 0;

        &:checked + .digiconsent-slider {
            background-color: #10b981;

            &:before {
                transform: translateX(20px);
            }
        }

        &:disabled + .digiconsent-slider {
            opacity: 0.5;
            cursor: not-allowed;
        }
    }
}

.digiconsent-slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #d1d5db;
    transition: 0.3s;
    border-radius: 1.5rem;

    &:before {
        position: absolute;
        content: "";
        height: 18px;
        width: 18px;
        left: 3px;
        bottom: 3px;
        background-color: white;
        transition: 0.3s;
        border-radius: 50%;
    }
}

.digiconsent-category-description {
    margin: 0.5rem 0 0.75rem;
    font-size: 0.875rem;
    line-height: 1.5;
    color: #6b7280;
}

/* Close Button */
.digiconsent-close {
    position: absolute;
    top: 1rem;
    right: 1rem;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f3f4f6;
    border: none;
    border-radius: 50%;
    cursor: pointer;
    transition: all 0.2s;
    color: #6b7280;
    font-size: 1.25rem;
    z-index: 99;

    &:hover {
        background: #e5e7eb;
        color: #111827;
    }
}

.digiconsent-cookie-table {
    width: 100%;
    border-collapse: collapse;
    margin: 1.25rem 0;
    background: white;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);

    thead {
        background: #f9fafb;

        th {
            padding: 0.75rem 1rem;
            text-align: left;
            font-weight: 600;
            color: #374151;
            font-size: 0.875rem;
            border-bottom: 2px solid #e5e7eb;
        }
    }

    tbody {
        tr {
            border-bottom: 1px solid #e5e7eb;

            &:hover {
                background: #f9fafb;
            }

            &:last-child {
                border-bottom: none;
            }
        }

        td {
            padding: 0.75rem 1rem;
            color: #6b7280;
            font-size: 0.875rem;
        }
    }
}

/* Modal Settings Panel */
.digiconsent-settings-modal {
    .digiconsent-banner-inner {
        max-height: 80vh;
        display: flex;
        flex-direction: column;
        overflow: hidden;
    }

    .digiconsent-banner-content {
        flex-shrink: 0;
    }

    .digiconsent-categories {
        flex: 1;
        overflow-y: auto;
        min-height: 0;
    }

    .digiconsent-banner-actions {
        flex-shrink: 0;
        box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.08);
    }
}

/* Responsive */
@media (max-width: 768px) {
    .digiconsent-banner {
        &.digiconsent-layout-bottom,
        &.digiconsent-layout-top {
            .digiconsent-banner-container {
                padding: 1.25rem;
            }
        }

        &.digiconsent-layout-fullscreen .digiconsent-banner-container {
            width: 95%;
            padding: 1.5rem;
        }

        &.digiconsent-layout-side {
            width: 100%;
            max-width: 100%;
            left: 0 !important;
            right: 0 !important;
            bottom: 0;

            .digiconsent-banner-inner {
                border-radius: 0;
            }
        }
    }

    .digiconsent-banner-content {
        .digiconsent-banner-heading-text {
            font-size: 1.25rem;
        }

        p {
            font-size: 0.875rem;
        }
    }

    .digiconsent-close {
        top: 0.75rem;
        right: 0.75rem;
    }
}

@media (max-width: 620px) {
    .digiconsent-banner {
        &.digiconsent-layout-top,
        &.digiconsent-layout-bottom {
            .digiconsent-banner-inner {
                gap: 1rem;
                flex-direction: column;
            }
        }
    }
}

@media (max-width: 480px) {
    .digiconsent-banner-content {
        .digiconsent-banner-heading-text {
            font-size: 1.125rem;
        }

        p {
            font-size: 0.8125rem;
        }
    }

    .digiconsent-btn {
        padding: 0.625rem 1rem;
        font-size: 0.875rem;
    }

    .digiconsent-category {
        padding: 0.75rem;
    }

    .digiconsent-cookie-table {
        font-size: 0.75rem;

        thead th,
        tbody td {
            padding: 0.5rem 0.75rem;
        }
    }
}

/* Print Styles */
@media print {
    .digiconsent-banner {
        display: none !important;
    }
}

/* ============================================
   Cookie List - Modal Table
   ============================================ */
.digiconsent-category-cookies {
    margin-top: 0.75rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.digiconsent-cookies-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.75rem;
    background: rgba(0, 0, 0, 0.02);
    border-radius: 6px;
    overflow: hidden;
}

.digiconsent-cookies-table th,
.digiconsent-cookies-table td {
    padding: 0.625rem 0.75rem;
    text-align: left;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.digiconsent-cookies-table th {
    background: rgba(0, 0, 0, 0.04);
    font-weight: 600;
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--digiconsent-text-secondary, #666);
}

.digiconsent-cookies-table tr:last-child td {
    border-bottom: none;
}

.digiconsent-cookies-table code {
    font-family: ui-monospace, "SF Mono", Monaco, "Cascadia Mono", monospace;
    font-size: 0.6875rem;
    background: rgba(0, 0, 0, 0.06);
    padding: 0.125rem 0.375rem;
    border-radius: 3px;
    word-break: break-word;
}

.digiconsent-cookies-table .digiconsent-col-purpose {
    max-width: 200px;
}

/* ==========================================================================
   Cookie List - Shortcode Styles
   ========================================================================== */

.digiconsent-cookie-list {
    font-family:
        -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue",
        Arial, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.6;
    color: inherit;
}

/* Table Layout */
.digiconsent-cookie-list-table .digiconsent-cookie-category {
    margin-bottom: 2.5rem;
}

.digiconsent-cookie-list-table .digiconsent-cookie-category:last-child {
    margin-bottom: 0;
}

.digiconsent-cookie-table-wrapper {
    .digiconsent-cookie-table {
        width: 100%;
        margin: 0;

        code {
            font-family:
                ui-monospace, "SF Mono", Monaco, "Cascadia Mono", monospace;
            font-size: 0.6875rem;
            background: rgba(0, 0, 0, 0.06);
            padding: 0.125rem 0.375rem;
            border-radius: 3px;
            word-break: break-word;
        }
    }
}

/* ============================================
   Responsive - Cookie List & Tables
   ============================================ */
@media (max-width: 768px) {
    /* Modal Cookie Table - Card Layout */
    .digiconsent-cookies-table {
        box-shadow: none;
    }

    .digiconsent-cookies-table thead {
        display: none;
    }

    .digiconsent-cookies-table,
    .digiconsent-cookies-table tbody,
    .digiconsent-cookies-table tr,
    .digiconsent-cookies-table td {
        display: block;
    }

    .digiconsent-cookies-table tr {
        padding: 0.75rem;
        margin-bottom: 0.5rem;
        background: rgba(0, 0, 0, 0.02);
        border-radius: 6px;
        border: 1px solid rgba(0, 0, 0, 0.06);
    }

    .digiconsent-cookies-table tr:last-child {
        margin-bottom: 0;
    }

    .digiconsent-cookies-table td {
        padding: 0.25rem 0;
        border: none;
        display: flex;
        flex-wrap: wrap;
        align-items: flex-start;
        gap: 0.375rem;
    }

    .digiconsent-cookies-table td::before {
        content: attr(data-label) ": ";
        font-weight: 600;
        font-size: 0.625rem;
        text-transform: uppercase;
        color: var(--digiconsent-text-secondary, #888);
        flex-shrink: 0;
        width: 100%;
    }

    .digiconsent-cookies-table td:first-child::before {
        display: none;
    }

    .digiconsent-cookies-table .digiconsent-col-purpose {
        max-width: none;
    }

    /* Shortcode Table - Card Layout */
    .digiconsent-cookie-table-wrapper {
        .digiconsent-cookie-table {
            box-shadow: none;

            thead {
                display: none;
            }

            &,
            tbody,
            tr,
            td {
                display: block;
            }

            tr {
                padding: 1rem;
                margin-bottom: 0.75rem;
                background: #f8f9fa;
                border-radius: 8px;
                border: 1px solid #e0e0e0;

                &:last-child {
                    margin-bottom: 0;
                }
            }

            td {
                padding: 0.25rem 0;
                border: none;
                display: flex;
                flex-wrap: wrap;
                align-items: flex-start;
                gap: 0.375rem;

                &::before {
                    content: attr(data-label) ": ";
                    font-weight: 600;
                    font-size: 0.75rem;
                    text-transform: uppercase;
                    color: #888;
                    flex-shrink: 0;
                    width: 100%;
                }

                &:first-child::before {
                    display: none;
                }
            }

            .digiconsent-col-purpose {
                max-width: none;
            }
        }
    }
}
