/* -------------------------------------------------------

    Theme Name: Key Design&Art Theme Elements Library
    Theme URL: https://keydesignart.com/
    Description: Advanced UI Components & Elements.
    Author: Key Design&Art
    Copyright(c) 2026 keydesignart.com
    Version: 1.0.0

------------------------------------------------------- */

/* ===================================
    Table of Contents
    -----------------------------------
    01. Accordions & Collapsibles
    02. Advanced Data Tables
    03. Alerts & Notification Messages
    04. Animation Utilities & Keyframes
    05. Badges, Labels & Tags
    06. Banners & Promo Areas
    07. Before/After Image Comparison
    08. Blockquotes & Citations
    09. Call to Action (CTA) Sections
    10. Carousels (Product & Content Slider)
    11. Client Logos & Partner Grids
    12. Contact Forms & Inputs
    13. Content Cards & Sliders (Merged with 10)
    14. Content Rotators & Typewriters
    15. Countdown Timers
    16. Fancy Text Boxes & Highlights
    17. Flip Boxes & 3D Rotate Cards
    18. Fun Facts & Number Counters
    19. Google Maps & Location Frames
    20. Headings & Typography Styles
    21. Horizontal Lists & Inline Groups
    22. Icon Boxes & Feature Columns
    23. Image Frames, Borders & Overlays
    24. Image Galleries & Lightboxes
    25. Interactive Banners & Hover Cards
    26. Modals, Popups, Offcanvas & Cookie Bars
    27. Navigation Arrows & Directions
    28. Parallax Scrolling & Marquees
    29. Particle Effects & Canvas Backgrounds
    30. Pricing Tables & Plan Cards
    31. Process Steps & Workflows
    32. Product Cards (E-Commerce)
    33. Progress Bars & Skill Meters
    34. Promo Banners & Ads (KD)
    35. Reviews & User Ratings (See Section 42)
    36. Separators & Dividers (KD)
    37. Service Boxes & Info Cards (KD)
    38. Shape Dividers & Section Masks (KD)
    39. Sliders & Hero Areas Add-ons (KD)
    40. Social Feeds & Streams (KD)
    41. Social Media Icons & Networks (KD)
    42. Star Ratings & Review Headers (KD)
    43. Styled Lists & Bullet Points (KD)
    44. Tabs & Tabbed Content (KD)
    45. Team Members & Profiles (KD)
    46. Testimonials & Editorial Quotes (KD)
    47. Text Highlighters & Markers (KD)
    48. Tilt 3D Hover Effects (KD)
    49. Toggles & Switches (KD)
    50. Tooltips & Popovers (KD)
    51. Video Wrappers & Media Players (KD)
    52. Audio Players & Podcasts (KD)
    53. Maps Custom Styles (KD)
====================================== */

/* ===================================
    01. Accordions & Collapsibles
====================================== */

.kd-accordion {
    --kd-acc-radius: var(--radius-6);
    --kd-acc-gap: 15px;
    --kd-acc-border: var(--extra-medium-gray);

    --kd-acc-btn-bg: var(--white);
    --kd-acc-btn-color: var(--dark-gray);
    --kd-acc-btn-color-active: var(--base-color);
    --kd-acc-btn-bg-active: var(--very-light-gray);

    --kd-acc-btn-py: 1.25rem;
    --kd-acc-btn-px: 1.5rem;

    --kd-acc-body-bg: var(--white);
    --kd-acc-body-color: var(--medium-gray);
    --kd-acc-body-py: 1.25rem;
    --kd-acc-body-px: 1.5rem;

    --kd-acc-icon-size: 1.25rem;
    --kd-acc-icon-color: var(--medium-gray);
    --kd-acc-icon-active-color: var(--base-color);

    --kd-acc-transition: 240ms cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-acc-focus-ring: 0 0 0 2px rgba(var(--base-color-rgb), 0.35) inset;
}

.kd-accordion-item {
    background-color: var(--white);
    border: 0;
    border-radius: var(--kd-acc-radius);
    overflow: hidden;
}

.kd-accordion:not(.kd-accordion-flush) .kd-accordion-item + .kd-accordion-item {
    margin-top: var(--kd-acc-gap);
}

.kd-accordion-header {
    margin-bottom: 0;
    line-height: inherit;
}

.kd-accordion-button {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
    padding: var(--kd-acc-btn-py) var(--kd-acc-btn-px);
    font-size: 16px;
    font-weight: 600;
    line-height: 1.5;
    color: var(--kd-acc-btn-color);
    text-align: left;
    background-color: var(--kd-acc-btn-bg);
    border: 0;
    border-radius: 0;
    cursor: pointer;
    overflow-anchor: none;
    transition: background-color var(--kd-acc-transition), color var(--kd-acc-transition);
}

.kd-accordion-button:focus {
    outline: 0;
    box-shadow: none;
}

.kd-accordion-button:focus-visible {
    box-shadow: var(--kd-acc-focus-ring);
}

/* Disabled State */
.kd-accordion-button:disabled,.kd-accordion-button[aria-disabled="true"] {
    cursor: not-allowed;
    opacity: 0.6;
    pointer-events: none;
}

.kd-accordion-body {
    padding: var(--kd-acc-body-py) var(--kd-acc-body-px);
    color: var(--kd-acc-body-color);
    font-size: 15px;
    line-height: 1.75;
    background-color: var(--kd-acc-body-bg);
}

/* Generic Icon */
.kd-accordion-button::after {
    flex-shrink: 0;
    width: var(--kd-acc-icon-size);
    height: var(--kd-acc-icon-size);
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: "bootstrap-icons";
    font-size: 14px;
    line-height: 1;
    color: var(--kd-acc-icon-color);
    background: none;
    transition: transform var(--kd-acc-transition), color var(--kd-acc-transition);
}

/* --- Style 01: Bordered --- */
.kd-accordion-style-01 .kd-accordion-item {
    border: 1px solid var(--kd-acc-border);
}

.kd-accordion-style-01 .kd-accordion-button::after {
    content: ""; /* Chevron Down */
}

.kd-accordion-style-01 .kd-accordion-button:not(.collapsed) {
    color: var(--kd-acc-btn-color-active);
    background-color: var(--kd-acc-btn-bg-active);
}

.kd-accordion-style-01 .kd-accordion-button:not(.collapsed)::after {
    transform: rotate(180deg);
    color: var(--kd-acc-icon-active-color);
}

/* --- Style 02: Floating/Shadow --- */
.kd-accordion-style-02 .kd-accordion-item {
    border: 1px solid transparent;
    box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05);
    transition: transform var(--kd-acc-transition), box-shadow var(--kd-acc-transition);
}

@media (hover: hover) and (pointer: fine) {
    .kd-accordion-style-02 .kd-accordion-item:hover {
        transform: translateY(-2px);
        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
    }
}

.kd-accordion-style-02 .kd-accordion-button::after {
    content: ""; /* Plus Icon */
    font-size: 18px;
}

.kd-accordion-style-02 .kd-accordion-button:not(.collapsed) {
    color: var(--kd-acc-btn-color-active);
    border-bottom: 1px solid var(--very-light-gray);
}

.kd-accordion-style-02 .kd-accordion-button:not(.collapsed)::after {
    transform: rotate(45deg); /* Plus to Cross */
    color: var(--kd-acc-icon-active-color);
}

/* --- Style 03: Left Border Indicator --- */
.kd-accordion-style-03 .kd-accordion-item {
    border: 1px solid var(--kd-acc-border);
}

.kd-accordion-style-03 .kd-accordion-button {
    padding-left: calc(var(--kd-acc-btn-px) + 1.5rem);
    border-left: 4px solid var(--kd-acc-border);
}

/* Left Icon */
.kd-accordion-style-03 .kd-accordion-button::before {
    content: "";
    position: absolute;
    left: var(--kd-acc-btn-px);
    top: 50%;
    transform: translateY(-50%);
    font-family: "bootstrap-icons";
    font-size: 14px;
    line-height: 1;
    color: var(--kd-acc-icon-color);
    transition: transform var(--kd-acc-transition), color var(--kd-acc-transition);
}

/* Hide Default Right Icon */
.kd-accordion-style-03 .kd-accordion-button::after {
    display: none; 
}

.kd-accordion-style-03 .kd-accordion-collapse {
    border-left: 4px solid var(--kd-acc-border);
}

.kd-accordion-style-03 .kd-accordion-button:not(.collapsed) {
    color: var(--kd-acc-btn-color-active);
    border-left-color: var(--kd-acc-btn-color-active);
}

.kd-accordion-style-03 .kd-accordion-button:not(.collapsed)::before {
    transform: translateY(-50%) rotate(180deg);
    color: var(--kd-acc-icon-active-color);
}

.kd-accordion-style-03 .kd-accordion-collapse.show {
    border-left-color: var(--kd-acc-btn-color-active);
}

/* --- Dark Variant --- */
.kd-accordion-style-dark {
    --kd-acc-border: rgba(255, 255, 255, 0.05);
    --kd-acc-btn-bg: transparent;
    --kd-acc-btn-color: var(--white);
    --kd-acc-btn-color-active: var(--white);
    --kd-acc-btn-bg-active: rgba(255, 255, 255, 0.05);
    --kd-acc-body-bg: transparent;
    --kd-acc-body-color: var(--light-gray);
    --kd-acc-icon-color: var(--white);
    --kd-acc-icon-active-color: var(--white);
    --kd-acc-focus-ring: 0 0 0 2px rgba(255, 255, 255, 0.35) inset;
}

.kd-accordion-style-dark .kd-accordion-item {
    background-color: var(--dark-slate-blue);
    border: 1px solid var(--kd-acc-border);
}

.kd-accordion-style-dark .kd-accordion-button::after {
    content: "";
}

.kd-accordion-style-dark .kd-accordion-body {
    border-top: 1px solid var(--kd-acc-border);
}

.kd-accordion-style-dark .kd-accordion-button:not(.collapsed)::after {
    transform: rotate(180deg);
}

/* --- Flush Variant (Edge to Edge) --- */
.kd-accordion-flush .kd-accordion-item {
    border-radius: 0;
    border: 0;
    border-bottom: 1px solid var(--extra-medium-gray);
}

.kd-accordion-flush .kd-accordion-item:last-child {
    border-bottom: 0;
}

.kd-accordion-flush .kd-accordion-button {
    background-color: transparent;
    padding-left: 0;
    padding-right: 0;
}

.kd-accordion-flush .kd-accordion-body {
    padding-left: 0;
    padding-right: 0;
}

/* --- Sizes --- */
.kd-accordion-sm {
    --kd-acc-btn-py: 0.75rem;
    --kd-acc-btn-px: 1rem;
    --kd-acc-body-py: 1rem;
    --kd-acc-body-px: 1rem;
}

.kd-accordion-sm .kd-accordion-button {
    font-size: 14px;
}

.kd-accordion-sm .kd-accordion-body {
    font-size: 13px;
}

.kd-accordion-lg {
    --kd-acc-btn-py: 1.5rem;
    --kd-acc-btn-px: 2rem;
    --kd-acc-body-py: 2rem;
    --kd-acc-body-px: 2rem;
}

.kd-accordion-lg .kd-accordion-button {
    font-size: 18px;
}

.kd-accordion-lg .kd-accordion-body {
    font-size: 16px;
}

/* ===================================
    02. Advanced Data Tables
====================================== */
.kd-table-style-card {
    --kd-table-card-gap: 10px;
    --kd-table-card-radius: var(--radius-6);
    --kd-table-card-bg: var(--white);
    --kd-table-card-bg-hover: var(--white);
    --kd-table-card-shadow: 0 5px 20px rgba(0, 0, 0, 0.03);
    --kd-table-card-shadow-hover: 0 10px 30px rgba(0, 0, 0, 0.06);
    --kd-table-card-lift: -3px;

    border-collapse: separate;
    border-spacing: 0 var(--kd-table-card-gap);
    background-color: transparent;
}

.kd-table-style-card thead th {
    background-color: transparent;
    border-bottom: 0;
    padding: 0.25rem 20px 0.5rem;
    font-size: 12px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--medium-gray);
    white-space: nowrap;
}

.kd-table-style-card tbody tr {
    box-shadow: var(--kd-table-card-shadow);
    transition: transform 280ms ease, box-shadow 280ms ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-table-style-card tbody tr:hover {
        transform: translateY(var(--kd-table-card-lift));
        box-shadow: var(--kd-table-card-shadow-hover);
    }
}

.kd-table-style-card td {
    border: none;
    padding: 20px;
    vertical-align: middle;
    background-color: var(--kd-table-card-bg);
    background-clip: padding-box;
}

.kd-table-style-card tbody tr:hover td {
    background-color: var(--kd-table-card-bg-hover);
}

.kd-table-style-card td:first-child {
    border-top-left-radius: var(--kd-table-card-radius);
    border-bottom-left-radius: var(--kd-table-card-radius);
}

.kd-table-style-card td:last-child {
    border-top-right-radius: var(--kd-table-card-radius);
    border-bottom-right-radius: var(--kd-table-card-radius);
}

.kd-table-style-card.kd-table-hover tbody tr:hover {
    background-color: transparent;
}

.kd-table-style-card.kd-table-striped tbody tr:nth-of-type(odd) {
    background-color: transparent;
}

.kd-table-style-card.kd-table-striped tbody tr:nth-of-type(odd) td {
    background-color: var(--kd-table-card-bg);
}

.kd-table-style-card.kd-table-striped tbody tr:hover td {
    background-color: var(--kd-table-card-bg-hover);
}

.kd-table-style-minimal {
    --kd-table-minimal-divider: var(--extra-medium-gray);
    --kd-table-minimal-head-divider: var(--dark-gray);

    border-collapse: collapse;
    background-color: transparent;
}

.kd-table-style-minimal th {
    background-color: transparent;
    border-bottom: 2px solid var(--kd-table-minimal-head-divider);
    padding: 15px 0;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: none;
    color: var(--dark-gray);
    white-space: normal;
}

.kd-table-style-minimal td {
    background-color: transparent;
    border-bottom: 1px solid var(--kd-table-minimal-divider);
    padding: 18px 0;
}

.kd-table-style-minimal tr:last-child td {
    border-bottom: 0;
}

.kd-table-style-minimal.kd-table-hover tbody tr:hover {
    background-color: transparent;
}

.kd-table-style-minimal.kd-table-hover tbody tr:hover td {
    background-color: rgba(var(--base-color-rgb), 0.03);
}

.kd-table-style-colored-head {
    --kd-table-head-bg: var(--base-color);
    --kd-table-head-color: var(--white);
    --kd-table-row-alt: var(--very-light-gray);

    border-collapse: separate;
    border-spacing: 0;
}

.kd-table-style-colored-head thead th {
    background-color: var(--kd-table-head-bg);
    color: var(--kd-table-head-color);
    border: none;
    font-weight: 600;
    letter-spacing: 0.04em;
    padding: 20px;
    white-space: nowrap;
}

.kd-table-style-colored-head thead th:first-child {
    border-top-left-radius: var(--radius-6);
}

.kd-table-style-colored-head thead th:last-child {
    border-top-right-radius: var(--radius-6);
}

.kd-table-style-colored-head tbody td {
    background-color: var(--white);
}

.kd-table-style-colored-head:not(.kd-table-striped) tbody tr:nth-of-type(even) td {
    background-color: var(--kd-table-row-alt);
}

.kd-table-style-colored-head tbody tr:last-child td:first-child {
    border-bottom-left-radius: var(--radius-6);
}

.kd-table-style-colored-head tbody tr:last-child td:last-child {
    border-bottom-right-radius: var(--radius-6);
}

.kd-table-sticky-head thead th {
    position: sticky;
    top: 0;
    z-index: 2;
}

.kd-table-user {
    display: inline-flex;
    align-items: center;
    gap: 15px;
    min-width: 0;
}

.kd-table-user img {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
    flex: 0 0 auto;
}

.kd-table-user-info {
    min-width: 0;
}

.kd-table-user-info h6 {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.2;
    color: var(--dark-gray);
}

.kd-table-user-info span {
    display: block;
    font-size: 12px;
    line-height: 1.2;
    color: var(--medium-gray);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.kd-table-status {
    --kd-status-bg: rgba(0, 0, 0, 0.06);
    --kd-status-color: var(--medium-gray);

    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background-color: var(--kd-status-bg);
    color: var(--kd-status-color);
}

.kd-table-status::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: currentColor;
    opacity: 0.9;
}

.kd-table-status.kd-status-active {
    --kd-status-bg: rgba(46, 187, 121, 0.12);
    --kd-status-color: var(--green);
}

.kd-table-status.kd-status-pending {
    --kd-status-bg: rgba(255, 234, 35, 0.18);
    --kd-status-color: #bfa800;
}

.kd-table-status.kd-status-cancel {
    --kd-status-bg: rgba(220, 49, 49, 0.12);
    --kd-status-color: var(--red);
}

.kd-table-actions {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
}

.kd-table-actions .kd-btn-action {
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-4);
    color: var(--medium-gray);
    background-color: var(--very-light-gray);
    border: 1px solid transparent;
    padding: 0;
    line-height: 0;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    transition: background-color 200ms ease, color 200ms ease, transform 200ms ease, box-shadow 200ms ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-table-actions .kd-btn-action:hover {
        background-color: var(--base-color);
        color: var(--white);
        transform: translateY(-1px);
    }

    .kd-table-actions .kd-btn-action.kd-delete:hover {
        background-color: var(--red);
        color: var(--white);
    }
}

.kd-table-actions .kd-btn-action:active {
    transform: translateY(0);
}

.kd-table-actions .kd-btn-action:focus {
    outline: 0;
}

.kd-table-actions .kd-btn-action:focus-visible {
    box-shadow: 0 0 0 2px rgba(var(--base-color-rgb), 0.35);
}

.kd-table-actions .kd-btn-action.kd-delete:focus-visible {
    box-shadow: 0 0 0 2px rgba(220, 49, 49, 0.35);
}

@media (prefers-reduced-motion: reduce) {
    .kd-table-style-card tbody tr,
    .kd-table-style-card td,
    .kd-table-style-minimal.kd-table-hover tbody tr,
    .kd-table-actions .kd-btn-action {
        transition: none !important;
    }

    .kd-table-style-card tbody tr:hover {
        transform: none;
    }

    .kd-table-actions .kd-btn-action:hover {
        transform: none;
    }
}

/* ===================================
    03. Alerts & Notification Messages
====================================== */

.kd-alert {
    --kd-alert-theme: var(--base-color);
    --kd-alert-theme-rgb: var(--base-color-rgb);
    --kd-alert-accent: var(--kd-alert-theme);
    --kd-alert-accent-rgb: var(--kd-alert-theme-rgb);

    --kd-alert-bg: var(--white);
    --kd-alert-color: var(--dark-gray);
    --kd-alert-border-color: transparent;

    --kd-alert-soft-text: var(--kd-alert-accent);
    --kd-alert-solid-text: var(--white);
    --kd-alert-solid-icon: rgba(255, 255, 255, 0.85);

    --kd-alert-icon-size: 20px;
    --kd-alert-gap: 15px;
    --kd-alert-padding-y: 1.25rem;
    --kd-alert-padding-x: 1.5rem;
    --kd-alert-radius: var(--radius-4);

    --kd-alert-close-size: 34px;
    --kd-alert-close-top: 1rem;
    --kd-alert-close-right: 1rem;
    --kd-alert-close-radius: var(--radius-4);
    --kd-alert-close-ring: 0 0 0 2px rgba(var(--kd-alert-accent-rgb), 0.35);

    position: relative;
    width: 100%;
    padding: var(--kd-alert-padding-y) var(--kd-alert-padding-x);
    margin-bottom: 30px;
    border: 1px solid var(--kd-alert-border-color);
    border-radius: var(--kd-alert-radius);
    background-color: var(--kd-alert-bg);
    color: var(--kd-alert-color);
    display: flex;
    align-items: flex-start;
    gap: var(--kd-alert-gap);
    font-size: 15px;
    line-height: 1.6;
    transition: background-color 240ms ease, border-color 240ms ease, color 240ms ease, box-shadow 240ms ease, transform 240ms ease;
}

.kd-alert strong {
    font-weight: 600;
}

.kd-alert-link {
    font-weight: 600;
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.kd-alert-icon {
    flex: 0 0 auto;
    font-size: var(--kd-alert-icon-size);
    line-height: 1.4;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--kd-alert-accent);
    margin-top: 1px;
}

.kd-alert-content {
    flex: 1 1 auto;
    min-width: 0;
}

.kd-alert-content p:last-child {
    margin-bottom: 0;
}

.kd-alert-dismissible {
    padding-right: calc(var(--kd-alert-padding-x) + var(--kd-alert-close-size) + 0.75rem);
}

.kd-alert .kd-btn-close {
    position: absolute;
    top: var(--kd-alert-close-top);
    right: var(--kd-alert-close-right);
    width: var(--kd-alert-close-size);
    height: var(--kd-alert-close-size);
    padding: 0;
    border: 0;
    border-radius: var(--kd-alert-close-radius);
    background: transparent;
    background-image: none;
    color: inherit;
    opacity: 0.6;
    cursor: pointer;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    -webkit-appearance: none;
    appearance: none;
    transition: opacity 160ms ease, transform 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.kd-alert .kd-btn-close::before {
    content: "";
    font-family: "bootstrap-icons";
    font-size: 18px;
    line-height: 1;
    display: block;
}

.kd-alert .kd-btn-close:focus {
    outline: 0;
    box-shadow: none;
}

.kd-alert .kd-btn-close:focus-visible {
    box-shadow: var(--kd-alert-close-ring);
    opacity: 1;
}

@media (hover: hover) and (pointer: fine) {
    .kd-alert .kd-btn-close:hover {
        opacity: 1;
        transform: rotate(90deg);
        background-color: rgba(var(--kd-alert-accent-rgb), 0.08);
    }
}

.kd-alert-sm {
    --kd-alert-padding-y: 0.75rem;
    --kd-alert-padding-x: 1rem;
    --kd-alert-icon-size: 18px;
    --kd-alert-close-size: 32px;
    --kd-alert-close-top: 0.75rem;
    --kd-alert-close-right: 0.75rem;
    font-size: 13px;
}

.kd-alert-lg {
    --kd-alert-padding-y: 1.5rem;
    --kd-alert-padding-x: 2rem;
    --kd-alert-icon-size: 22px;
    --kd-alert-close-size: 36px;
    --kd-alert-close-top: 1.25rem;
    --kd-alert-close-right: 1.25rem;
    font-size: 17px;
}

.kd-alert-primary {
    --kd-alert-theme: var(--base-color);
    --kd-alert-theme-rgb: var(--base-color-rgb);
}

.kd-alert-secondary {
    --kd-alert-theme: var(--medium-gray);
    --kd-alert-theme-rgb: 113, 117, 128;
}

.kd-alert-success {
    --kd-alert-theme: var(--green);
    --kd-alert-theme-rgb: 46, 187, 121;
}

.kd-alert-danger {
    --kd-alert-theme: var(--red);
    --kd-alert-theme-rgb: 220, 49, 49;
}

.kd-alert-warning {
    --kd-alert-theme: var(--yellow);
    --kd-alert-theme-rgb: 255, 234, 35;
    --kd-alert-accent: #bfa800;
    --kd-alert-accent-rgb: 191, 168, 0;
    --kd-alert-soft-text: var(--dark-gray);
    --kd-alert-solid-text: var(--dark-gray);
    --kd-alert-solid-icon: rgba(0, 0, 0, 0.55);
}

.kd-alert-info {
    --kd-alert-theme: var(--cornflower-blue);
    --kd-alert-theme-rgb: 68, 95, 237;
}

.kd-alert-dark {
    --kd-alert-theme: var(--dark-gray);
    --kd-alert-theme-rgb: 35, 35, 35;
}

.kd-alert-light {
    --kd-alert-theme: var(--medium-gray);
    --kd-alert-theme-rgb: 113, 117, 128;
}

/* --- Style 01: Soft Background --- */

.kd-alert-style-01 {
    --kd-alert-bg: rgba(var(--kd-alert-theme-rgb), 0.12);
    --kd-alert-border-color: rgba(var(--kd-alert-theme-rgb), 0.24);
    --kd-alert-color: var(--kd-alert-soft-text);
}

.kd-alert-style-01 .kd-alert-icon {
    color: var(--kd-alert-accent);
}

/* --- Style 02: Shadow Card with Side Close --- */

.kd-alert-style-02 {
    --kd-alert-bg: var(--white);
    --kd-alert-border-color: transparent;
    --kd-alert-color: var(--medium-gray);
    --kd-alert-radius: var(--radius-6);
    --kd-alert-close-slot: 60px;

    box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05);
}

.kd-alert-style-02.kd-alert-dismissible {
    padding-right: calc(var(--kd-alert-padding-x) + var(--kd-alert-close-slot));
}

.kd-alert-style-02 .kd-alert-icon {
    color: var(--kd-alert-accent);
}

.kd-alert-style-02 .kd-btn-close {
    top: 0;
    right: 0;
    width: var(--kd-alert-close-slot);
    height: 100%;
    border-left: 1px solid var(--extra-medium-gray);
    border-radius: 0 var(--kd-alert-radius) var(--kd-alert-radius) 0;
    opacity: 0.45;
    transform: none;
    background-color: transparent;
}

@media (hover: hover) and (pointer: fine) {
    .kd-alert-style-02 .kd-btn-close:hover {
        opacity: 1;
        transform: none;
        background-color: var(--very-light-gray);
    }
}

/* --- Style 03: Solid Color --- */

.kd-alert-style-03 {
    --kd-alert-bg: var(--kd-alert-theme);
    --kd-alert-border-color: transparent;
    --kd-alert-color: var(--kd-alert-solid-text);
    --kd-alert-close-ring: 0 0 0 2px rgba(255, 255, 255, 0.4);
}

.kd-alert-style-03 .kd-alert-icon {
    color: var(--kd-alert-solid-icon);
}

.kd-alert-style-03 .kd-alert-link {
    color: inherit;
}

.kd-alert-style-03.kd-alert-warning {
    --kd-alert-close-ring: 0 0 0 2px rgba(0, 0, 0, 0.25);
}

/* --- Style 04: Left Border Accent --- */

.kd-alert-style-04 {
    --kd-alert-bg: rgba(var(--kd-alert-theme-rgb), 0.04);
    --kd-alert-border-color: rgba(0, 0, 0, 0.08);
    --kd-alert-color: var(--dark-gray);
    --kd-alert-radius: var(--radius-4);

    border-left: 4px solid var(--kd-alert-accent);
    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.02);
}

@media (hover: hover) and (pointer: fine) {
    .kd-alert-style-04:hover {
        box-shadow: 0 10px 20px rgba(0, 0, 0, 0.05);
    }
}

.kd-alert-style-04 .kd-alert-icon {
    color: var(--kd-alert-accent);
}

/* --- Style 05: Ghost / Bottom Border --- */

.kd-alert-style-05 {
    --kd-alert-bg: transparent;
    --kd-alert-border-color: transparent;
    --kd-alert-color: var(--dark-gray);
    --kd-alert-radius: 0;

    border-bottom: 2px solid var(--kd-alert-accent);
    padding-left: 0;
    padding-right: 0;
    margin-bottom: 20px;
}

.kd-alert-style-05 .kd-alert-icon {
    color: var(--kd-alert-accent);
}

.kd-alert-style-05 .kd-btn-close {
    top: 0.4rem;
    right: 0;
}

/* ===================================
    Reduced Motion
====================================== */

@media (prefers-reduced-motion: reduce) {
    .kd-alert,
    .kd-alert .kd-btn-close {
        transition: none !important;
    }

    .kd-alert .kd-btn-close:hover {
        transform: none;
    }
}

/* ===================================
    04. Animation Utilities & Keyframes
====================================== */

.kd-animated {
    --kd-anim-duration: 1s;
    --kd-anim-delay: 0s;
    --kd-anim-ease: cubic-bezier(0.215, 0.61, 0.355, 1);
    --kd-anim-fill: both;
    --kd-anim-count: 1;

    animation-duration: var(--kd-anim-duration);
    animation-delay: var(--kd-anim-delay);
    animation-timing-function: var(--kd-anim-ease);
    animation-fill-mode: var(--kd-anim-fill);
    animation-iteration-count: var(--kd-anim-count);

    will-change: transform, opacity;
    backface-visibility: hidden;
}

.kd-animated.kd-infinite { --kd-anim-count: infinite; }
.kd-animated.kd-paused { animation-play-state: paused; }

.kd-anim-delay-0 { --kd-anim-delay: 0s; }
.kd-anim-delay-100 { --kd-anim-delay: 100ms; }
.kd-anim-delay-200 { --kd-anim-delay: 200ms; }
.kd-anim-delay-300 { --kd-anim-delay: 300ms; }
.kd-anim-delay-500 { --kd-anim-delay: 500ms; }
.kd-anim-delay-700 { --kd-anim-delay: 700ms; }
.kd-anim-delay-1000 { --kd-anim-delay: 1000ms; }

.kd-anim-duration-200 { --kd-anim-duration: 200ms; }
.kd-anim-duration-300 { --kd-anim-duration: 300ms; }
.kd-anim-duration-500 { --kd-anim-duration: 500ms; }
.kd-anim-duration-700 { --kd-anim-duration: 700ms; }
.kd-anim-duration-800 { --kd-anim-duration: 800ms; }
.kd-anim-duration-1000 { --kd-anim-duration: 1000ms; }
.kd-anim-duration-1200 { --kd-anim-duration: 1200ms; }

.kd-anim-ease-linear { --kd-anim-ease: linear; }
.kd-anim-ease-out { --kd-anim-ease: cubic-bezier(0.22, 1, 0.36, 1); }
.kd-anim-ease-in-out { --kd-anim-ease: cubic-bezier(0.4, 0, 0.2, 1); }

.kd-anim-fill-none { --kd-anim-fill: none; }
.kd-anim-fill-forwards { --kd-anim-fill: forwards; }

@keyframes kd-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}
.kd-fadeIn { animation-name: kd-fade-in; }

@keyframes kd-fade-in-up {
    from { opacity: 0; transform: translate3d(0, 40px, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}
.kd-fadeInUp { animation-name: kd-fade-in-up; }

@keyframes kd-fade-in-down {
    from { opacity: 0; transform: translate3d(0, -40px, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}
.kd-fadeInDown { animation-name: kd-fade-in-down; }

@keyframes kd-fade-in-left {
    from { opacity: 0; transform: translate3d(-40px, 0, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}
.kd-fadeInLeft { animation-name: kd-fade-in-left; }

@keyframes kd-fade-in-right {
    from { opacity: 0; transform: translate3d(40px, 0, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}
.kd-fadeInRight { animation-name: kd-fade-in-right; }

@keyframes kd-fade-in-up-shorter {
    from { opacity: 0; transform: translate3d(0, 20px, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}
.kd-fadeInUpShorter { animation-name: kd-fade-in-up-shorter; }

@keyframes kd-fade-in-left-shorter {
    from { opacity: 0; transform: translate3d(-20px, 0, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}
.kd-fadeInLeftShorter { animation-name: kd-fade-in-left-shorter; }

@keyframes kd-fade-in-right-shorter {
    from { opacity: 0; transform: translate3d(20px, 0, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}
.kd-fadeInRightShorter { animation-name: kd-fade-in-right-shorter; }

@keyframes kd-zoom-in {
    from { opacity: 0; transform: scale3d(0.92, 0.92, 0.92); }
    to { opacity: 1; transform: scale3d(1, 1, 1); }
}
.kd-zoomIn { animation-name: kd-zoom-in; }

@keyframes kd-blur-in {
    from { opacity: 0; filter: blur(12px); transform: scale3d(1.03, 1.03, 1.03); }
    to { opacity: 1; filter: blur(0); transform: scale3d(1, 1, 1); }
}
.kd-blurIn {
    animation-name: kd-blur-in;
    --kd-anim-duration: 1.2s;
    will-change: transform, opacity, filter;
}

@keyframes kd-text-entrance {
    from { opacity: 0; transform: perspective(1000px) translate3d(0, 100%, 0) rotateX(-80deg); }
    to { opacity: 1; transform: perspective(1000px) translate3d(0, 0, 0) rotateX(0deg); }
}
.kd-textEntrance {
    transform-origin: center top;
    animation-name: kd-text-entrance;
    --kd-anim-duration: 800ms;
    --kd-anim-ease: cubic-bezier(0.215, 0.61, 0.355, 1);
    backface-visibility: hidden;
}

@supports (clip-path: inset(0 0 0 0)) {
    @keyframes kd-mask-up {
        from { clip-path: inset(100% 0 0 0); }
        to { clip-path: inset(0 0 0 0); }
    }
    .kd-maskUp { animation-name: kd-mask-up; }

    @keyframes kd-mask-right {
        from { clip-path: inset(0 100% 0 0); }
        to { clip-path: inset(0 0 0 0); }
    }
    .kd-maskRight { animation-name: kd-mask-right; }

    @keyframes kd-mask-down {
        from { clip-path: inset(0 0 100% 0); }
        to { clip-path: inset(0 0 0 0); }
    }
    .kd-maskDown { animation-name: kd-mask-down; }

    @keyframes kd-mask-left {
        from { clip-path: inset(0 0 0 100%); }
        to { clip-path: inset(0 0 0 0); }
    }
    .kd-maskLeft { animation-name: kd-mask-left; }
}

@supports not (clip-path: inset(0 0 0 0)) {
    .kd-maskUp, .kd-maskRight, .kd-maskDown, .kd-maskLeft { animation-name: kd-fade-in-up-shorter; }
}

@keyframes kd-float-y {
    0%, 100% { transform: translate3d(0, 0, 0); }
    50% { transform: translate3d(0, calc(var(--kd-float-distance, 10px) * -1), 0); }
}
.kd-anim-float-y {
    --kd-float-distance: 10px;
    animation: kd-float-y 3s ease-in-out infinite;
    will-change: transform;
}

@keyframes kd-float-x {
    0%, 100% { transform: translate3d(0, 0, 0); }
    50% { transform: translate3d(var(--kd-float-distance, 10px), 0, 0); }
}
.kd-anim-float-x {
    --kd-float-distance: 10px;
    animation: kd-float-x 3s ease-in-out infinite;
    will-change: transform;
}

@keyframes kd-pulse-scale {
    0%, 100% { transform: scale3d(1, 1, 1); }
    50% { transform: scale3d(1.05, 1.05, 1.05); }
}
.kd-anim-pulse {
    animation: kd-pulse-scale 2s ease-in-out infinite;
    will-change: transform;
}

@keyframes kd-rotate-360 {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}
.kd-anim-rotate {
    animation: kd-rotate-360 10s linear infinite;
    will-change: transform;
}

@keyframes kd-ken-burns-right {
    from { transform: scale3d(1.08, 1.08, 1.08) translate3d(0, 0, 0); }
    to { transform: scale3d(1, 1, 1) translate3d(10px, 0, 0); }
}
.kd-kenBurnsRight {
    animation: kd-ken-burns-right 10s linear infinite alternate;
    will-change: transform;
}

@media (hover: hover) and (pointer: fine) {
    .kd-hover-translate-up:hover { transform: translate3d(0, -5px, 0); }
    .kd-hover-translate-down:hover { transform: translate3d(0, 5px, 0); }
    .kd-hover-translate-right:hover { transform: translate3d(5px, 0, 0); }
    .kd-hover-scale-up:hover { transform: scale3d(1.05, 1.05, 1.05); }
}

.kd-transition-200 {
    transition-property: transform, opacity, box-shadow, color, background-color, border-color, filter;
    transition-duration: 200ms;
    transition-timing-function: ease-in-out;
}

.kd-transition-300 {
    transition-property: transform, opacity, box-shadow, color, background-color, border-color, filter;
    transition-duration: 300ms;
    transition-timing-function: ease-in-out;
}

.kd-transition-500 {
    transition-property: transform, opacity, box-shadow, color, background-color, border-color, filter;
    transition-duration: 500ms;
    transition-timing-function: ease-in-out;
}

.kd-transition-magnetic {
    transition-property: transform;
    transition-duration: 500ms;
    transition-timing-function: cubic-bezier(0.25, 1, 0.2, 1);
}

.kd-typewriter-cursor::after {
    content: "|";
    display: inline-block;
    vertical-align: middle;
    margin-left: 2px;
    color: var(--base-color);
    animation: kd-blink 0.7s infinite;
}

@keyframes kd-blink {
    50% { opacity: 0; }
}

.kd-highlight-scribble {
    --kd-scribble-color: var(--yellow);
    --kd-scribble-width: 8;
    --kd-scribble-duration: 1.5s;

    position: relative;
    display: inline-block;
}

.kd-highlight-scribble svg {
    position: absolute;
    left: 0;
    bottom: -10px;
    width: 100%;
    height: auto;
    z-index: -1;
    pointer-events: none;
}

.kd-highlight-scribble path {
    fill: none;
    stroke: var(--kd-scribble-color);
    stroke-width: var(--kd-scribble-width);
    stroke-linecap: round;
    stroke-dasharray: 2000;
    stroke-dashoffset: 2000;
    animation: kd-scribble-draw var(--kd-scribble-duration) ease-out forwards;
    vector-effect: non-scaling-stroke;
}

@keyframes kd-scribble-draw {
    to { stroke-dashoffset: 0; }
}

@media (prefers-reduced-motion: reduce) {
    .kd-animated,
    .kd-anim-float-y,
    .kd-anim-float-x,
    .kd-anim-pulse,
    .kd-anim-rotate,
    .kd-kenBurnsRight {
        animation: none !important;
    }

    .kd-transition-200,
    .kd-transition-300,
    .kd-transition-500,
    .kd-transition-magnetic {
        transition: none !important;
    }

    .kd-typewriter-cursor::after {
        animation: none !important;
    }

    .kd-highlight-scribble path {
        animation: none !important;
        stroke-dashoffset: 0;
    }
}

/* ===================================
    05. Badges, Labels & Tags
====================================== */

.kd-badge {
    --kd-badge-padding-y: 0.4em;
    --kd-badge-padding-x: 0.75em;
    --kd-badge-font-size: 0.75em;
    --kd-badge-font-weight: 600;
    --kd-badge-radius: var(--radius-4);
    --kd-badge-line-height: 1;
    --kd-badge-gap: 0.35em;

    --kd-badge-bg: var(--dark-gray);
    --kd-badge-color: var(--white);

    --kd-badge-border-width: 1px;
    --kd-badge-border-style: solid;
    --kd-badge-border-color: transparent;

    --kd-badge-bg-hover: var(--kd-badge-bg);
    --kd-badge-color-hover: var(--kd-badge-color);
    --kd-badge-border-color-hover: var(--kd-badge-border-color);
    --kd-badge-shadow: none;
    --kd-badge-shadow-hover: none;
    --kd-badge-transform-hover: none;
    --kd-badge-ring: 0 0 0 2px rgba(var(--base-color-rgb), 0.35);

    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--kd-badge-gap);
    padding: var(--kd-badge-padding-y) var(--kd-badge-padding-x);
    font-size: var(--kd-badge-font-size);
    font-weight: var(--kd-badge-font-weight);
    line-height: var(--kd-badge-line-height);
    color: var(--kd-badge-color);
    background-color: var(--kd-badge-bg);
    border: var(--kd-badge-border-width) var(--kd-badge-border-style) var(--kd-badge-border-color);
    border-radius: var(--kd-badge-radius);
    white-space: nowrap;
    vertical-align: baseline;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    box-shadow: var(--kd-badge-shadow);
    user-select: none;
    transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.kd-badge i,.kd-badge svg {
    flex: 0 0 auto;
}

.kd-badge svg {
    width: 1em;
    height: 1em;
}

.kd-badge-text-normal {
    text-transform: none;
    letter-spacing: normal;
}

a.kd-badge,button.kd-badge {
    text-decoration: none;
    cursor: pointer;
}

a.kd-badge:focus,button.kd-badge:focus {
    outline: 0;
    box-shadow: none;
}

a.kd-badge:focus-visible,button.kd-badge:focus-visible {
    box-shadow: var(--kd-badge-ring);
}

@media (hover: hover) and (pointer: fine) {
    a.kd-badge:hover,
    button.kd-badge:hover,
    .kd-badge.kd-badge-hover:hover {
        background-color: var(--kd-badge-bg-hover);
        color: var(--kd-badge-color-hover);
        border-color: var(--kd-badge-border-color-hover);
        box-shadow: var(--kd-badge-shadow-hover);
        transform: var(--kd-badge-transform-hover);
    }
}

.kd-badge-dot,.kd-badge:empty {
    display: inline-block;
    padding: 0;
    width: 10px;
    height: 10px;
    border-radius: 999px;
    background-color: var(--kd-badge-bg);
    border: var(--kd-badge-border-width) var(--kd-badge-border-style) var(--kd-badge-border-color);
}

.kd-badge-pill {
    --kd-badge-radius: 999px;
    padding-left: 1em;
    padding-right: 1em;
}

.kd-badge-square {
    --kd-badge-radius: 0;
}

.kd-badge-circle {
    --kd-badge-radius: 999px;
    width: 2em;
    height: 2em;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.kd-badge-xs {
    --kd-badge-font-size: 0.65em;
    --kd-badge-padding-y: 0.25em;
    --kd-badge-padding-x: 0.5em;
}

.kd-badge-sm {
    --kd-badge-font-size: 0.7em;
    --kd-badge-padding-y: 0.35em;
    --kd-badge-padding-x: 0.6em;
}

.kd-badge-md {
    --kd-badge-font-size: 0.85em;
    --kd-badge-padding-y: 0.5em;
    --kd-badge-padding-x: 1em;
}

.kd-badge-lg {
    --kd-badge-font-size: 1em;
    --kd-badge-padding-y: 0.65em;
    --kd-badge-padding-x: 1.25em;
}

.kd-badge-xl {
    --kd-badge-font-size: 1.25em;
    --kd-badge-padding-y: 0.75em;
    --kd-badge-padding-x: 1.5em;
}

.kd-badge-primary {
    --kd-badge-bg: var(--base-color);
    --kd-badge-color: var(--white);
    --kd-badge-bg-hover: var(--dark-gray);
    --kd-badge-color-hover: var(--white);
    --kd-badge-transform-hover: translate3d(0, -1px, 0);
    --kd-badge-shadow-hover: 0 8px 18px rgba(0, 0, 0, 0.10);
}

.kd-badge-secondary {
    --kd-badge-bg: var(--medium-gray);
    --kd-badge-color: var(--white);
    --kd-badge-bg-hover: var(--dark-gray);
    --kd-badge-color-hover: var(--white);
    --kd-badge-transform-hover: translate3d(0, -1px, 0);
    --kd-badge-shadow-hover: 0 8px 18px rgba(0, 0, 0, 0.10);
}

.kd-badge-success {
    --kd-badge-bg: var(--green);
    --kd-badge-color: var(--white);
    --kd-badge-bg-hover: #249a63;
    --kd-badge-color-hover: var(--white);
    --kd-badge-transform-hover: translate3d(0, -1px, 0);
    --kd-badge-shadow-hover: 0 8px 18px rgba(0, 0, 0, 0.10);
}

.kd-badge-danger {
    --kd-badge-bg: var(--red);
    --kd-badge-color: var(--white);
    --kd-badge-bg-hover: #b82727;
    --kd-badge-color-hover: var(--white);
    --kd-badge-transform-hover: translate3d(0, -1px, 0);
    --kd-badge-shadow-hover: 0 8px 18px rgba(0, 0, 0, 0.10);
}

.kd-badge-warning {
    --kd-badge-bg: var(--yellow);
    --kd-badge-color: var(--dark-gray);
    --kd-badge-bg-hover: #f2db1a;
    --kd-badge-color-hover: var(--dark-gray);
    --kd-badge-transform-hover: translate3d(0, -1px, 0);
    --kd-badge-shadow-hover: 0 8px 18px rgba(0, 0, 0, 0.10);
}

.kd-badge-info {
    --kd-badge-bg: var(--cornflower-blue);
    --kd-badge-color: var(--white);
    --kd-badge-bg-hover: #334de0;
    --kd-badge-color-hover: var(--white);
    --kd-badge-transform-hover: translate3d(0, -1px, 0);
    --kd-badge-shadow-hover: 0 8px 18px rgba(0, 0, 0, 0.10);
}

.kd-badge-dark {
    --kd-badge-bg: var(--dark-gray);
    --kd-badge-color: var(--white);
    --kd-badge-bg-hover: var(--black);
    --kd-badge-color-hover: var(--white);
    --kd-badge-transform-hover: translate3d(0, -1px, 0);
    --kd-badge-shadow-hover: 0 8px 18px rgba(0, 0, 0, 0.14);
}

.kd-badge-light {
    --kd-badge-bg: var(--very-light-gray);
    --kd-badge-color: var(--dark-gray);
    --kd-badge-border-color: rgba(0, 0, 0, 0.06);
    --kd-badge-bg-hover: var(--white);
    --kd-badge-color-hover: var(--dark-gray);
    --kd-badge-border-color-hover: rgba(0, 0, 0, 0.10);
    --kd-badge-transform-hover: translate3d(0, -1px, 0);
    --kd-badge-shadow-hover: 0 8px 18px rgba(0, 0, 0, 0.08);
}

.kd-badge-soft-primary {
    --kd-badge-bg: rgba(var(--base-color-rgb), 0.12);
    --kd-badge-color: var(--base-color);
    --kd-badge-border-color: rgba(var(--base-color-rgb), 0.18);
    --kd-badge-bg-hover: rgba(var(--base-color-rgb), 0.18);
    --kd-badge-border-color-hover: rgba(var(--base-color-rgb), 0.26);
}

.kd-badge-soft-success {
    --kd-badge-bg: rgba(46, 187, 121, 0.12);
    --kd-badge-color: var(--green);
    --kd-badge-border-color: rgba(46, 187, 121, 0.18);
    --kd-badge-bg-hover: rgba(46, 187, 121, 0.18);
    --kd-badge-border-color-hover: rgba(46, 187, 121, 0.26);
}

.kd-badge-soft-danger {
    --kd-badge-bg: rgba(220, 49, 49, 0.12);
    --kd-badge-color: var(--red);
    --kd-badge-border-color: rgba(220, 49, 49, 0.18);
    --kd-badge-bg-hover: rgba(220, 49, 49, 0.18);
    --kd-badge-border-color-hover: rgba(220, 49, 49, 0.26);
}

.kd-badge-soft-warning {
    --kd-badge-bg: rgba(255, 234, 35, 0.18);
    --kd-badge-color: #bfa800;
    --kd-badge-border-color: rgba(255, 234, 35, 0.24);
    --kd-badge-bg-hover: rgba(255, 234, 35, 0.26);
    --kd-badge-border-color-hover: rgba(255, 234, 35, 0.32);
}

.kd-badge-soft-info {
    --kd-badge-bg: rgba(68, 95, 237, 0.12);
    --kd-badge-color: var(--cornflower-blue);
    --kd-badge-border-color: rgba(68, 95, 237, 0.18);
    --kd-badge-bg-hover: rgba(68, 95, 237, 0.18);
    --kd-badge-border-color-hover: rgba(68, 95, 237, 0.26);
}

.kd-badge-soft-dark {
    --kd-badge-bg: rgba(35, 35, 35, 0.10);
    --kd-badge-color: var(--dark-gray);
    --kd-badge-border-color: rgba(35, 35, 35, 0.14);
    --kd-badge-bg-hover: rgba(35, 35, 35, 0.14);
    --kd-badge-border-color-hover: rgba(35, 35, 35, 0.20);
}

.kd-badge-outline-primary {
    --kd-badge-bg: transparent;
    --kd-badge-border-color: rgba(var(--base-color-rgb), 0.55);
    --kd-badge-color: var(--base-color);
    --kd-badge-bg-hover: rgba(var(--base-color-rgb), 0.10);
    --kd-badge-border-color-hover: rgba(var(--base-color-rgb), 0.75);
}

.kd-badge-outline-dark {
    --kd-badge-bg: transparent;
    --kd-badge-border-color: rgba(35, 35, 35, 0.6);
    --kd-badge-color: var(--dark-gray);
    --kd-badge-bg-hover: rgba(35, 35, 35, 0.06);
    --kd-badge-border-color-hover: rgba(35, 35, 35, 0.8);
}

.kd-badge-outline-light {
    --kd-badge-bg: transparent;
    --kd-badge-border-color: rgba(255, 255, 255, 0.7);
    --kd-badge-color: var(--white);
    --kd-badge-bg-hover: rgba(255, 255, 255, 0.10);
    --kd-badge-border-color-hover: rgba(255, 255, 255, 0.9);
    --kd-badge-ring: 0 0 0 2px rgba(255, 255, 255, 0.35);
}

.kd-badge-float {
    --kd-badge-float-size: 18px;
    --kd-badge-float-font: 10px;
    --kd-badge-float-ring: var(--white);

    position: absolute;
    top: 0;
    right: 0;
    transform: translate3d(50%, -50%, 0);
    padding: 0;
    width: var(--kd-badge-float-size);
    height: var(--kd-badge-float-size);
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--kd-badge-float-font);
    letter-spacing: normal;
    text-transform: none;
    border: 2px solid var(--kd-badge-float-ring);
}

.kd-badge-ribbon {
    --kd-ribbon-bg: var(--base-color);
    --kd-ribbon-color: var(--white);

    position: absolute;
    top: 0;
    right: 15px;
    width: 40px;
    height: 50px;
    background-color: var(--kd-ribbon-bg);
    color: var(--kd-ribbon-color);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.1;
    z-index: 10;
    filter: drop-shadow(0 5px 5px rgba(0, 0, 0, 0.10));
}

@supports (clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 80%, 0 100%)) {
    .kd-badge-ribbon {
        clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 80%, 0 100%);
    }
}

@supports not (clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 80%, 0 100%)) {
    .kd-badge-ribbon::after {
        content: "";
        position: absolute;
        left: 0;
        bottom: -12px;
        width: 0;
        height: 0;
        border-left: 20px solid transparent;
        border-right: 20px solid transparent;
        border-top: 12px solid var(--kd-ribbon-bg);
    }
}

.kd-badge-ribbon span {
    display: block;
    font-size: 9px;
    font-weight: 400;
    opacity: 0.9;
    margin-bottom: 2px;
    text-transform: none;
    letter-spacing: normal;
}

.kd-badge-corner {
    --kd-corner-bg: var(--red);
    --kd-corner-color: var(--white);

    position: absolute;
    top: 15px;
    right: -30px;
    background-color: var(--kd-corner-bg);
    color: var(--kd-corner-color);
    transform: rotate(45deg);
    width: 120px;
    text-align: center;
    font-size: 11px;
    font-weight: 700;
    padding: 6px 0;
    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.10);
    z-index: 10;
}

.kd-badge-corner-wrapper {
    position: relative;
    overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
    .kd-badge {
        transition: none !important;
    }

    .kd-badge.kd-badge-hover:hover,
    a.kd-badge:hover,
    button.kd-badge:hover {
        transform: none !important;
    }
}

/* ===================================
    06. Banners & Promo Areas
====================================== */

.kd-banner {
    --kd-banner-radius: var(--radius-6);

    --kd-banner-overlay: rgba(0, 0, 0, 0.35);
    --kd-banner-overlay-hover: rgba(0, 0, 0, 0.55);

    --kd-banner-text-color: var(--white);
    --kd-banner-text-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);

    --kd-banner-content-padding: 30px;
    --kd-banner-content-gap: 10px;

    --kd-banner-img-scale: 1.08;
    --kd-banner-img-duration: 600ms;
    --kd-banner-overlay-duration: 350ms;
    --kd-banner-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    position: relative;
    overflow: hidden;
    border-radius: var(--kd-banner-radius);
    isolation: isolate;
    backface-visibility: hidden;
    transform: translateZ(0);
}

a.kd-banner {
    display: block;
    color: inherit;
    text-decoration: none;
}

.kd-banner .kd-banner-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1);
    transition: transform var(--kd-banner-img-duration) var(--kd-banner-ease);
    will-change: transform;
}

.kd-banner .kd-banner-overlay {
    position: absolute;
    inset: 0;
    background: var(--kd-banner-overlay);
    transition: background var(--kd-banner-overlay-duration) ease, opacity var(--kd-banner-overlay-duration) ease, transform var(--kd-banner-overlay-duration) var(--kd-banner-ease);
    z-index: 1;
    pointer-events: none;
}

.kd-banner .kd-banner-content {
    position: absolute;
    inset: 0;
    z-index: 2;
    padding: var(--kd-banner-content-padding);
    display: flex;
    flex-direction: column;
    gap: var(--kd-banner-content-gap);
    color: var(--kd-banner-text-color);
    text-shadow: var(--kd-banner-text-shadow);
}

.kd-banner-title,.kd-banner-subtitle,.kd-banner .kd-banner-text {
    margin: 0;
    max-width: none;
    color: inherit;
}

.kd-banner .kd-banner-title {
    font-weight: 700;
    line-height: 1.2;
}

.kd-banner .kd-banner-subtitle {
    font-weight: 600;
    line-height: 1.3;
}

.kd-banner .kd-banner-text {
    font-weight: 400;
    opacity: 0.92;
}

.kd-banner .kd-banner-actions {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 6px;
}

@media (hover: hover) and (pointer: fine) {
    .kd-banner-zoom:hover .kd-banner-image {
        transform: scale(var(--kd-banner-img-scale));
    }

    .kd-banner-zoom:hover .kd-banner-overlay {
        background: var(--kd-banner-overlay-hover);
    }
}

.kd-banner-ratio-21x9 { aspect-ratio: 21 / 9; }
.kd-banner-ratio-16x9 { aspect-ratio: 16 / 9; }
.kd-banner-ratio-4x3 { aspect-ratio: 4 / 3; }
.kd-banner-ratio-3x4 { aspect-ratio: 3 / 4; }
.kd-banner-ratio-1x1 { aspect-ratio: 1 / 1; }

/* --- Style 01: Centered Hero --- */

.kd-banner-style-01 .kd-banner-content {
    align-items: center;
    justify-content: center;
    text-align: center;
}

.kd-banner-style-01 .kd-banner-title {
    font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);
}

.kd-banner-style-01 .kd-banner-subtitle {
    font-size: 0.95rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    opacity: 0.95;
}

.kd-banner-style-01.kd-reveal-on-hover .kd-banner-title,.kd-banner-style-01.kd-reveal-on-hover .kd-banner-subtitle,.kd-banner-style-01.kd-reveal-on-hover .kd-banner-actions {
    opacity: 0;
    transform: translate3d(0, 16px, 0);
    transition: opacity 360ms ease, transform 360ms var(--kd-banner-ease);
    will-change: transform, opacity;
}

.kd-banner-style-01.kd-reveal-on-hover .kd-banner-subtitle {
    transform: translate3d(0, -12px, 0);
}

@media (hover: hover) and (pointer: fine) {
    .kd-banner-style-01.kd-reveal-on-hover:hover .kd-banner-title,
    .kd-banner-style-01.kd-reveal-on-hover:hover .kd-banner-subtitle,
    .kd-banner-style-01.kd-reveal-on-hover:hover .kd-banner-actions {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@media (hover: none) {
    .kd-banner-style-01.kd-reveal-on-hover .kd-banner-title,
    .kd-banner-style-01.kd-reveal-on-hover .kd-banner-subtitle,
    .kd-banner-style-01.kd-reveal-on-hover .kd-banner-actions {
        opacity: 1;
        transform: none;
    }
}

.kd-banner-style-01.kd-visible-content .kd-banner-title,.kd-banner-style-01.kd-visible-content .kd-banner-subtitle,.kd-banner-style-01.kd-visible-content .kd-banner-actions {
    opacity: 1;
    transform: none;
}

/* --- Style 02: Bottom Content --- */

.kd-banner-style-02 {
    --kd-banner-overlay: linear-gradient(to top, rgba(0, 0, 0, 0.78) 0%, rgba(0, 0, 0, 0.00) 62%);
    --kd-banner-overlay-hover: linear-gradient(to top, rgba(0, 0, 0, 0.86) 0%, rgba(0, 0, 0, 0.10) 62%);
}

.kd-banner-style-02 .kd-banner-content {
    justify-content: flex-end;
    align-items: flex-start;
    text-align: left;
}

.kd-banner-style-02 .kd-banner-title {
    font-size: clamp(1.125rem, 1.05rem + 0.5vw, 1.65rem);
    font-weight: 700;
}

.kd-banner-style-02 .kd-banner-link-line {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.9rem;
    font-weight: 700;
    color: inherit;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    text-decoration: none;
}

.kd-banner-style-02 .kd-banner-link-line::after {
    content: "";
    display: block;
    height: 1px;
    width: 32px;
    background-color: currentColor;
    opacity: 0.8;
    transition: width 220ms ease, opacity 220ms ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-banner-style-02:hover .kd-banner-link-line::after {
        width: 56px;
        opacity: 1;
    }
}

/* --- Style 03: Hover Reveal --- */

.kd-banner-style-03 {
    --kd-banner-overlay: rgba(var(--base-color-rgb), 0.88);
    --kd-banner-overlay-hover: rgba(var(--base-color-rgb), 0.92);
    --kd-banner-text-shadow: none;
}

.kd-banner-style-03 .kd-banner-overlay {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
}

.kd-banner-style-03 .kd-banner-content {
    justify-content: center;
    align-items: center;
    text-align: center;
    opacity: 0;
    transition: opacity 240ms ease 80ms;
}

@media (hover: hover) and (pointer: fine) {
    .kd-banner-style-03:hover .kd-banner-overlay {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }

    .kd-banner-style-03:hover .kd-banner-content {
        opacity: 1;
    }
}

@media (hover: none) {
    .kd-banner-style-03 .kd-banner-overlay {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }

    .kd-banner-style-03 .kd-banner-content {
        opacity: 1;
    }
}

/* --- Style 04: Floating Content Box --- */

.kd-banner-style-04 {
    --kd-banner-overlay: rgba(0, 0, 0, 0.18);
    --kd-banner-overlay-hover: rgba(0, 0, 0, 0.30);
    --kd-banner-text-shadow: none;
}

.kd-banner-style-04 .kd-banner-content {
    justify-content: flex-end;
    align-items: flex-start;
    padding: 24px;
}

.kd-banner-style-04 .kd-banner-floating-box {
    --kd-floating-bg: rgba(255, 255, 255, 0.94);
    --kd-floating-border: rgba(0, 0, 0, 0.06);

    width: min(520px, 100%);
    background-color: var(--kd-floating-bg);
    border: 1px solid var(--kd-floating-border);
    border-radius: var(--radius-6);
    padding: 22px 22px;
    color: var(--dark-gray);
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.12);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    transition: transform 240ms var(--kd-banner-ease), box-shadow 240ms ease;
}

.kd-banner-style-04 .kd-banner-title {
    color: var(--dark-gray);
    font-size: 1.25rem;
    margin-bottom: 6px;
}

.kd-banner-style-04 .kd-banner-category {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--base-color);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 10px;
}

.kd-banner-style-04 .kd-banner-category::before {
    content: "";
    width: 10px;
    height: 2px;
    background-color: currentColor;
    opacity: 0.9;
}

@media (hover: hover) and (pointer: fine) {
    .kd-banner-style-04:hover .kd-banner-floating-box {
        transform: translate3d(0, -4px, 0);
        box-shadow: 0 22px 55px rgba(0, 0, 0, 0.16);
    }
}

/* --- Cookie Consent Banner --- */

.kd-banner-cookie {
    --kd-cookie-max-width: 420px;
    --kd-cookie-radius: var(--radius-6);
    --kd-cookie-bg: rgba(255, 255, 255, 0.95);
    --kd-cookie-border: rgba(0, 0, 0, 0.08);
    --kd-cookie-shadow: 0 18px 60px rgba(0, 0, 0, 0.18);
    --kd-cookie-gap: 14px;

    position: fixed;
    left: 20px;
    right: 20px;
    bottom: 20px;
    max-width: var(--kd-cookie-max-width);
    background-color: var(--kd-cookie-bg);
    border-radius: var(--kd-cookie-radius);
    border: 1px solid var(--kd-cookie-border);
    box-shadow: var(--kd-cookie-shadow);
    z-index: 9999;
    padding: 22px;
    display: flex;
    flex-direction: column;
    gap: var(--kd-cookie-gap);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    animation: kd-cookie-in 520ms cubic-bezier(0.22, 1, 0.36, 1) 600ms both;
}

@keyframes kd-cookie-in {
    from { opacity: 0; transform: translate3d(0, 14px, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}

.kd-banner-cookie p {
    font-size: 13px;
    line-height: 1.6;
    color: var(--medium-gray);
    margin: 0;
    max-width: none;
}

.kd-banner-cookie .kd-btn-group {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.kd-banner-cookie .kd-btn-group .kd-btn {
    flex: 0 0 auto;
}

.kd-banner-cookie.kd-banner-cookie-full-width {
    max-width: none;
    left: 0;
    right: 0;
    bottom: 0;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
    padding: 18px 18px;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
}

.kd-banner-cookie.kd-banner-cookie-full-width .kd-btn-group {
    justify-content: flex-end;
}

@media (max-width: 767px) {
    .kd-banner-cookie {
        left: 14px;
        right: 14px;
        bottom: 14px;
        padding: 18px;
    }

    .kd-banner-cookie.kd-banner-cookie-full-width {
        flex-direction: column;
        align-items: stretch;
        text-align: center;
        gap: 12px;
    }

    .kd-banner-cookie.kd-banner-cookie-full-width .kd-btn-group {
        justify-content: center;
    }
}

@media (prefers-reduced-motion: reduce) {
    .kd-banner-image,
    .kd-banner-overlay,
    .kd-banner-style-01.kd-reveal-on-hover .kd-banner-title,
    .kd-banner-style-01.kd-reveal-on-hover .kd-banner-subtitle,
    .kd-banner-style-01.kd-reveal-on-hover .kd-banner-actions,
    .kd-banner-style-04 .kd-banner-floating-box {
        transition: none !important;
    }

    .kd-banner-cookie {
        animation: none !important;
    }

    .kd-banner-style-03 .kd-banner-overlay,
    .kd-banner-style-03 .kd-banner-content {
        transition: none !important;
    }

    @media (hover: hover) and (pointer: fine) {
        .kd-banner-zoom:hover .kd-banner-image { transform: none; }
        .kd-banner-style-04:hover .kd-banner-floating-box { transform: none; }
        .kd-banner-style-01.kd-reveal-on-hover:hover .kd-banner-title,
        .kd-banner-style-01.kd-reveal-on-hover:hover .kd-banner-subtitle,
        .kd-banner-style-01.kd-reveal-on-hover:hover .kd-banner-actions { transform: none; }
    }
}

/* ===================================
    07. Before & After Image Comparison
====================================== */

.kd-before-after-container {
    --kd-ba-handle-color: var(--white);
    --kd-ba-handle-bg: var(--base-color);
    --kd-ba-handle-size: 42px;
    --kd-ba-handle-shadow: 0 0 0 4px rgba(255, 255, 255, 0.20), 0 12px 28px rgba(0, 0, 0, 0.22);
    --kd-ba-border-radius: var(--radius-6);

    --kd-ba-divider-size: 2px;
    --kd-ba-divider-color: var(--kd-ba-handle-color);

    --kd-ba-label-bg: rgba(0, 0, 0, 0.55);
    --kd-ba-label-color: var(--white);
    --kd-ba-label-radius: var(--radius-4);

    --kd-ba-focus-ring: 0 0 0 2px rgba(var(--base-color-rgb), 0.35);

    --kd-ba-pos: 50%;

    position: relative;
    width: 100%;
    overflow: hidden;
    border-radius: var(--kd-ba-border-radius);
    user-select: none;
    cursor: col-resize;
    touch-action: pan-y;
    isolation: isolate;
}

.kd-before-after-container:focus-within {
    box-shadow: var(--kd-ba-focus-ring);
}

.kd-before-after-img {
    width: 100%;
    height: auto;
    display: block;
    pointer-events: none;
}

.kd-before-after-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: var(--kd-ba-pos);
    height: 100%;
    overflow: hidden;
    border-right: var(--kd-ba-divider-size) solid var(--kd-ba-divider-color);
    will-change: width;
    z-index: 2;
    pointer-events: none;
}

.kd-before-after-overlay .kd-before-after-img {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: auto;
    min-width: 100%;
    max-width: none;
}

.kd-before-after-handle {
    position: absolute;
    top: 50%;
    left: var(--kd-ba-pos);
    width: var(--kd-ba-handle-size);
    height: var(--kd-ba-handle-size);
    border-radius: 999px;
    background-color: var(--kd-ba-handle-bg);
    color: var(--kd-ba-handle-color);
    transform: translate3d(-50%, -50%, 0);
    z-index: 10;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--kd-ba-handle-shadow);
    transition: background-color 220ms ease, transform 180ms ease, box-shadow 220ms ease;
    pointer-events: auto;
    touch-action: none;
}

.kd-before-after-handle:focus {
    outline: 0;
    box-shadow: var(--kd-ba-handle-shadow);
}

.kd-before-after-handle:focus-visible {
    box-shadow: var(--kd-ba-handle-shadow), var(--kd-ba-focus-ring);
}

.kd-before-after-handle::before,.kd-before-after-handle::after {
    content: "";
    display: inline-block;
    width: 0;
    height: 0;
    border-top: 5px solid transparent;
    border-bottom: 5px solid transparent;
    margin: 0 2px;
}

.kd-before-after-handle::before {
    border-right: 6px solid currentColor;
}

.kd-before-after-handle::after {
    border-left: 6px solid currentColor;
}

@media (hover: hover) and (pointer: fine) {
    .kd-before-after-container:hover .kd-before-after-handle {
        transform: translate3d(-50%, -50%, 0) scale(1.08);
    }
}

.kd-before-after-label {
    position: absolute;
    top: 18px;
    padding: 6px 14px;
    background-color: var(--kd-ba-label-bg);
    color: var(--kd-ba-label-color);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.10em;
    border-radius: var(--kd-ba-label-radius);
    pointer-events: none;
    opacity: 0;
    transform: translate3d(0, -10px, 0);
    transition: opacity 220ms ease, transform 220ms ease;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    z-index: 5;
}

.kd-before-after-label.kd-label-before { right: 18px; }
.kd-before-after-label.kd-label-after { left: 18px; }

.kd-before-after-container.kd-show-labels .kd-before-after-label {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

@media (hover: hover) and (pointer: fine) {
    .kd-before-after-container:hover .kd-before-after-label {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@media (hover: none) {
    .kd-before-after-label {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

.kd-before-after-range {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: inherit;
    z-index: 20;
    -webkit-appearance: none;
    appearance: none;
}

/* --- Style 02: Vertical Orientation --- */

.kd-before-after-vertical {
    cursor: row-resize;
    touch-action: pan-x;
}

.kd-before-after-vertical .kd-before-after-overlay {
    width: 100%;
    height: var(--kd-ba-pos);
    border-right: 0;
    border-bottom: var(--kd-ba-divider-size) solid var(--kd-ba-divider-color);
}

.kd-before-after-vertical .kd-before-after-overlay .kd-before-after-img {
    width: 100%;
    height: auto;
    min-width: 100%;
    max-width: none;
    top: 0;
    left: 0;
}

.kd-before-after-vertical .kd-before-after-handle {
    top: var(--kd-ba-pos);
    left: 50%;
    transform: translate3d(-50%, -50%, 0);
}

.kd-before-after-vertical .kd-before-after-handle::before,.kd-before-after-vertical .kd-before-after-handle::after {
    border: 0;
    margin: 2px 0;
}

.kd-before-after-vertical .kd-before-after-handle::before {
    border-right: 5px solid transparent;
    border-left: 5px solid transparent;
    border-bottom: 6px solid currentColor;
}

.kd-before-after-vertical .kd-before-after-handle::after {
    border-right: 5px solid transparent;
    border-left: 5px solid transparent;
    border-top: 6px solid currentColor;
}

@media (hover: hover) and (pointer: fine) {
    .kd-before-after-vertical:hover .kd-before-after-handle {
        transform: translate3d(-50%, -50%, 0) scale(1.08);
    }
}

@media (prefers-reduced-motion: reduce) {
    .kd-before-after-overlay,
    .kd-before-after-handle,
    .kd-before-after-label {
        transition: none !important;
    }

    .kd-before-after-container:hover .kd-before-after-handle {
        transform: translate3d(-50%, -50%, 0) !important;
    }

    .kd-before-after-vertical:hover .kd-before-after-handle {
        transform: translate3d(-50%, -50%, 0) !important;
    }
}

/* ===================================
    08. Blockquotes & Citations
====================================== */

blockquote,.kd-blockquote {
    --kd-quote-bg: var(--white);
    --kd-quote-color: var(--dark-gray);
    --kd-quote-border: rgba(0, 0, 0, 0.08);
    --kd-quote-accent: var(--base-color);
    --kd-quote-radius: var(--radius-6);
    --kd-quote-padding: 2.25rem;
    --kd-quote-shadow: none;

    position: relative;
    margin: 0 0 30px 0;
    padding: var(--kd-quote-padding);
    font-size: clamp(1.05rem, 1rem + 0.25vw, 1.15rem);
    line-height: 1.65;
    color: var(--kd-quote-color);
    background-color: var(--kd-quote-bg);
    border: 1px solid transparent;
    border-radius: var(--kd-quote-radius);
    box-shadow: var(--kd-quote-shadow);
}

blockquote p,.kd-blockquote p {
    font-style: italic;
    margin: 0 0 1.25rem 0;
    color: inherit;
}

blockquote p:last-child,.kd-blockquote p:last-child {
    margin-bottom: 0;
}

blockquote footer,blockquote cite,.kd-blockquote footer,.kd-blockquote cite {
    display: block;
    margin-top: 0.75rem;
    font-size: 0.85rem;
    font-style: normal;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--kd-quote-accent);
}

blockquote footer::before,.kd-blockquote footer::before {
    content: "— ";
}

/* --- Style 01: Simple Left Border --- */

.kd-blockquote-style-01 {
    --kd-quote-bg: transparent;

    padding: 1rem 1rem 1rem 1.8rem;
    border-left: 4px solid var(--kd-quote-accent);
    border-radius: 0;
    background-color: transparent;
}

/* --- Style 02: Boxed with Icon --- */

.kd-blockquote-style-02 {
    --kd-quote-bg: var(--very-light-gray);
    --kd-quote-shadow: 0 6px 24px rgba(0, 0, 0, 0.04);

    border: 1px solid var(--kd-quote-border);
    text-align: center;
}

.kd-blockquote-style-02::before {
    content: "";
    font-family: "bootstrap-icons";
    display: block;
    font-size: 2rem;
    color: var(--kd-quote-accent);
    margin-bottom: 14px;
    opacity: 0.85;
}

.kd-blockquote-style-02 footer,.kd-blockquote-style-02 cite {
    margin-top: 1rem;
}

/* --- Style 03: Giant Watermark Icon --- */

.kd-blockquote-style-03 {
    --kd-quote-bg: var(--very-light-gray);

    border-left: 4px solid var(--kd-quote-accent);
    border-radius: 0 var(--kd-quote-radius) var(--kd-quote-radius) 0;
    overflow: hidden;
}

.kd-blockquote-style-03::after {
    content: "“";
    position: absolute;
    top: -24px;
    right: 18px;
    font-family: serif;
    font-size: 10rem;
    line-height: 1;
    color: rgba(0, 0, 0, 0.035);
    pointer-events: none;
}

/* --- Style 04: Overlap Image --- */

.kd-blockquote-style-04 {
    --kd-bq4-bg: rgba(255, 255, 255, 0.94);
    --kd-bq4-border: rgba(0, 0, 0, 0.06);
    --kd-bq4-shadow: 0 18px 60px rgba(0, 0, 0, 0.10);

    position: relative;
    margin-top: 60px;
}

.kd-blockquote-style-04 .kd-blockquote-wrapper {
    display: flex;
    align-items: center;
    gap: 22px;
    background-color: var(--kd-bq4-bg);
    border: 1px solid var(--kd-bq4-border);
    box-shadow: var(--kd-bq4-shadow);
    border-radius: 52px 12px 12px 52px;
    padding: 0;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.kd-blockquote-style-04 .kd-blockquote-img {
    flex: 0 0 auto;
    width: 120px;
    height: 120px;
    margin-left: -40px;
    border-radius: 999px;
    border: 5px solid var(--white);
    box-shadow: 0 10px 26px rgba(0, 0, 0, 0.12);
    overflow: hidden;
    position: relative;
    z-index: 2;
}

.kd-blockquote-style-04 .kd-blockquote-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.kd-blockquote-style-04 .kd-blockquote-content {
    padding: 34px 34px 34px 10px;
}

.kd-blockquote-style-04 blockquote,.kd-blockquote-style-04 .kd-blockquote {
    padding: 0;
    margin: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
    border-radius: 0;
    font-size: clamp(1rem, 0.98rem + 0.3vw, 1.1rem);
}

.kd-blockquote-style-04 blockquote footer,.kd-blockquote-style-04 blockquote cite,.kd-blockquote-style-04 .kd-blockquote footer,.kd-blockquote-style-04 .kd-blockquote cite {
    margin-top: 0.75rem;
}

@media (max-width: 767px) {
    .kd-blockquote-style-04 .kd-blockquote-wrapper {
        flex-direction: column;
        text-align: center;
        border-radius: var(--radius-6);
        padding-top: 42px;
        margin-left: 20px;
        margin-right: 20px;
    }

    .kd-blockquote-style-04 .kd-blockquote-img {
        margin-left: 0;
        margin-top: -80px;
    }

    .kd-blockquote-style-04 .kd-blockquote-content {
        padding: 18px 20px 22px 20px;
    }
}

/* --- Style 05: Reverse (Right Aligned) --- */

.kd-blockquote-style-05 {
    --kd-quote-bg: transparent;

    text-align: right;
    border-left: 0;
    border-right: 4px solid var(--kd-quote-accent);
    background: linear-gradient(to left, rgba(0, 0, 0, 0.04) 0%, transparent 75%);
    padding: 1rem 1.8rem 1rem 1rem;
    border-radius: 0;
}

.kd-blockquote-style-05 footer::before,.kd-blockquote-style-05 cite::before {
    content: "";
}

.kd-blockquote-style-05 footer::after,.kd-blockquote-style-05 cite::after {
    content: " —";
}

/* --- Colors --- */

.kd-blockquote-primary { --kd-quote-accent: var(--base-color); }
.kd-blockquote-secondary { --kd-quote-accent: var(--medium-gray); }
.kd-blockquote-dark { --kd-quote-accent: var(--dark-gray); }

/* ===================================
    09. Call to Action (CTA) Sections
====================================== */

.kd-call-to-action {
    --kd-cta-bg: var(--very-light-gray);
    --kd-cta-color: var(--medium-gray);
    --kd-cta-title-color: var(--dark-gray);
    --kd-cta-border-color: transparent;

    --kd-cta-radius: var(--radius-6);
    --kd-cta-padding-y: 3rem;
    --kd-cta-padding-x: 3rem;
    --kd-cta-gap: 28px;

    --kd-cta-shadow: none;
    --kd-cta-shadow-hover: none;
    --kd-cta-hover-transform: none;

    --kd-cta-max-width: none;

    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--kd-cta-gap);

    background: var(--kd-cta-bg);
    color: var(--kd-cta-color);
    border: 1px solid var(--kd-cta-border-color);
    border-radius: var(--kd-cta-radius);

    padding: var(--kd-cta-padding-y) var(--kd-cta-padding-x);
    box-shadow: var(--kd-cta-shadow);

    overflow: hidden;
    isolation: isolate;
    width: 100%;
    max-width: var(--kd-cta-max-width);

    transition: transform 240ms ease, box-shadow 240ms ease, background-color 240ms ease, border-color 240ms ease;
}

.kd-call-to-action > * {
    position: relative;
    z-index: 1;
}

.kd-cta-content {
    flex: 1 1 420px;
    min-width: 0;
}

.kd-cta-action {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
}

.kd-cta-title {
    font-size: clamp(1.5rem, 1.2rem + 0.9vw, 2.05rem);
    font-weight: 800;
    color: var(--kd-cta-title-color);
    margin: 0 0 10px 0;
    line-height: 1.15;
    letter-spacing: -0.01em;
}

.kd-cta-text {
    font-size: clamp(1rem, 0.98rem + 0.25vw, 1.12rem);
    line-height: 1.6;
    margin: 0;
    opacity: 0.92;
    max-width: 80ch;
}

.kd-cta-kicker {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 0.85rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--kd-cta-color);
    opacity: 0.9;
    margin: 0 0 12px 0;
}

.kd-cta-kicker::before {
    content: "";
    width: 18px;
    height: 2px;
    background-color: currentColor;
    opacity: 0.7;
}

@media (hover: hover) and (pointer: fine) {
    .kd-call-to-action.kd-cta-hover:hover {
        transform: var(--kd-cta-hover-transform);
        box-shadow: var(--kd-cta-shadow-hover);
    }
}

/* --- Style 01: Clean & Minimal --- */

.kd-cta-style-01 {}

/* --- Style 02: Shadow Card (Floating) --- */

.kd-cta-style-02 {
    --kd-cta-bg: var(--white);
    --kd-cta-border-color: rgba(0, 0, 0, 0.06);
    --kd-cta-shadow: 0 14px 50px rgba(0, 0, 0, 0.06);
    --kd-cta-shadow-hover: 0 20px 70px rgba(0, 0, 0, 0.10);
    --kd-cta-hover-transform: translate3d(0, -5px, 0);
}

@media (hover: hover) and (pointer: fine) {
    .kd-cta-style-02.kd-cta-hover:hover {
        transform: var(--kd-cta-hover-transform);
        box-shadow: var(--kd-cta-shadow-hover);
    }
}

/* --- Style 03: Primary Gradient (Featured) --- */

.kd-cta-style-03 {
    --kd-cta-bg: linear-gradient(135deg, rgba(var(--base-color-rgb), 1) 0%, var(--slate-blue) 100%);
    --kd-cta-color: rgba(255, 255, 255, 0.88);
    --kd-cta-title-color: var(--white);
    --kd-cta-border-color: rgba(255, 255, 255, 0.12);
    --kd-cta-shadow: 0 18px 70px rgba(0, 0, 0, 0.18);
}

.kd-cta-style-03 .kd-cta-text,.kd-cta-style-03 .kd-cta-kicker {
    color: rgba(255, 255, 255, 0.88);
}

.kd-cta-style-03 .kd-btn {
    background-color: var(--white);
    color: var(--base-color);
    border-color: var(--white);
}

.kd-cta-style-03 .kd-btn:hover {
    background-color: var(--dark-gray);
    color: var(--white);
    border-color: var(--dark-gray);
}

/* --- Style 04: Bordered Left Accent --- */

.kd-cta-style-04 {
    --kd-cta-bg: var(--white);
    --kd-cta-border-color: rgba(0, 0, 0, 0.08);
    --kd-cta-shadow: 0 10px 40px rgba(0, 0, 0, 0.05);
    --kd-cta-shadow-hover: 0 16px 55px rgba(0, 0, 0, 0.08);
    --kd-cta-hover-transform: translate3d(0, -3px, 0);
    border-left: 5px solid var(--base-color);
    padding-left: calc(var(--kd-cta-padding-x) - 5px);
}


@media (hover: hover) and (pointer: fine) {
    .kd-cta-style-04.kd-cta-hover:hover {
        transform: var(--kd-cta-hover-transform);
        box-shadow: var(--kd-cta-shadow-hover);
    }
}

/* --- Style 05: Dark Theme --- */

.kd-cta-style-05 {
    --kd-cta-bg: var(--dark-gray);
    --kd-cta-color: rgba(255, 255, 255, 0.70);
    --kd-cta-title-color: var(--white);
    --kd-cta-border-color: rgba(255, 255, 255, 0.08);
    --kd-cta-shadow: 0 18px 70px rgba(0, 0, 0, 0.22);
}

.kd-cta-style-05 .kd-cta-text,.kd-cta-style-05 .kd-cta-kicker {
    color: rgba(255, 255, 255, 0.72);
}

.kd-cta-style-05 .kd-btn-outline-dark-gray {
    border-color: rgba(255, 255, 255, 0.22);
    color: var(--white);
}

.kd-cta-style-05 .kd-btn-outline-dark-gray:hover {
    background-color: var(--white);
    border-color: var(--white);
    color: var(--dark-gray);
}

/* --- Style 06: Center Aligned (Column) --- */

.kd-cta-style-center {
    flex-direction: column;
    text-align: center;
    justify-content: center;
    align-items: center;
}

.kd-cta-style-center .kd-cta-content {
    flex: 0 0 auto;
    width: 100%;
    max-width: 740px;
}

.kd-cta-style-center .kd-cta-action {
    justify-content: center;
}

/* --- Background Pattern Decoration --- */

.kd-cta-bg-pattern {
    position: relative;
}

.kd-cta-bg-pattern::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    width: min(320px, 45%);
    height: 100%;
    background-image: radial-gradient(currentColor 1px, transparent 1px);
    background-size: 18px 18px;
    opacity: 0.05;
    pointer-events: none;
    z-index: 0;
    color: var(--base-color);
    mask-image: linear-gradient(to left, black, transparent);
    -webkit-mask-image: linear-gradient(to left, black, transparent);
}

.kd-cta-style-03.kd-cta-bg-pattern::before,.kd-cta-style-05.kd-cta-bg-pattern::before {
    opacity: 0.09;
    color: var(--white);
}

/* --- With Button Arrow Effect --- */

.kd-cta-arrow-btn .kd-btn {
    position: relative;
    padding-right: 3rem;
}

.kd-cta-arrow-btn .kd-btn::after {
    content: "";
    font-family: "bootstrap-icons";
    position: absolute;
    right: 1.25rem;
    top: 50%;
    transform: translate3d(0, -50%, 0);
    transition: transform 220ms ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-cta-arrow-btn .kd-btn:hover::after {
        transform: translate3d(5px, -50%, 0);
    }
}

/* --- Footer CTA Arrow (Triangle on Top) --- */

.kd-cta-arrow-top {
    margin-top: 40px;
    overflow: visible;
}

.kd-cta-arrow-top::before {
    content: "";
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translate3d(-50%, 0, 0);
    width: 0;
    height: 0;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid transparent;
    z-index: 0;
}


.kd-cta-arrow-top.kd-cta-style-01::before,.kd-cta-arrow-top.kd-cta-style-02::before,.kd-cta-arrow-top.kd-cta-style-04::before {
    border-bottom-color: var(--kd-cta-bg);
}

.kd-cta-arrow-top.kd-cta-style-03::before,.kd-cta-arrow-top.kd-cta-style-05::before {
    border-bottom-color: rgba(0, 0, 0, 0.08);
}

/* --- Sizes --- */

.kd-cta-sm {
    --kd-cta-padding-y: 1.6rem;
    --kd-cta-padding-x: 1.6rem;
    --kd-cta-gap: 18px;
}

.kd-cta-sm .kd-cta-title { font-size: 1.25rem; }
.kd-cta-sm .kd-cta-text { font-size: 0.98rem; }

.kd-cta-lg {
    --kd-cta-padding-y: 4.5rem;
    --kd-cta-padding-x: 4rem;
    --kd-cta-gap: 34px;
}

.kd-cta-lg .kd-cta-title { font-size: clamp(2rem, 1.8rem + 1.2vw, 2.7rem); margin-bottom: 14px; }
.kd-cta-lg .kd-cta-text { font-size: 1.25rem; }

/* --- Responsive --- */

@media (max-width: 991px) {
    .kd-call-to-action {
        flex-direction: column;
        text-align: center;
        justify-content: center;
    }

    .kd-cta-content {
        flex: 0 0 auto;
        width: 100%;
    }

    .kd-cta-action {
        width: 100%;
        justify-content: center;
    }

    .kd-cta-arrow-top::before {
        display: none;
    }

    .kd-cta-text {
        margin-left: auto;
        margin-right: auto;
    }
}

@media (prefers-reduced-motion: reduce) {
    .kd-call-to-action {
        transition: none !important;
    }

    .kd-cta-arrow-btn .kd-btn::after {
        transition: none !important;
    }

    @media (hover: hover) and (pointer: fine) {
        .kd-call-to-action.kd-cta-hover:hover {
            transform: none !important;
            box-shadow: var(--kd-cta-shadow) !important;
        }

        .kd-cta-arrow-btn .kd-btn:hover::after {
            transform: translate3d(0, -50%, 0) !important;
        }
    }
}

/* ===================================
    10. Carousels (Owl + Swiper Hybrid)
====================================== */

.kd-carousel-wrapper {
    --kd-carousel-radius: var(--radius-6);

    --kd-nav-size: 50px;
    --kd-nav-icon-size: 18px;
    --kd-nav-offset: 18px;
    --kd-nav-radius: 999px;

    --kd-nav-bg: var(--white);
    --kd-nav-color: var(--dark-gray);
    --kd-nav-border: 1px solid rgba(0, 0, 0, 0.06);
    --kd-nav-shadow: 0 12px 34px rgba(0, 0, 0, 0.10);

    --kd-nav-bg-hover: var(--base-color);
    --kd-nav-color-hover: var(--white);
    --kd-nav-border-hover: 1px solid var(--base-color);
    --kd-nav-shadow-hover: 0 18px 46px rgba(var(--base-color-rgb), 0.35);
    --kd-nav-transform-hover: translate3d(0, -2px, 0);

    --kd-nav-ring: 0 0 0 2px rgba(var(--base-color-rgb), 0.35);

    --kd-dot-size: 10px;
    --kd-dot-gap: 10px;
    --kd-dot-bg: rgba(0, 0, 0, 0.18);
    --kd-dot-active-bg: var(--base-color);
    --kd-dot-ring: 0 0 0 2px rgba(var(--base-color-rgb), 0.28);

    --kd-carousel-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-carousel-dur: 260ms;

    position: relative;
    width: 100%;
    isolation: isolate;
}

/* --- 1. Base Resets --- */

.kd-carousel-wrapper :where(.swiper, .owl-carousel) {
    width: 100%;
    height: 100%;
    position: relative;
    z-index: 1;
}

.kd-carousel-wrapper.kd-carousel-equal-height :where(.swiper-slide, .owl-item) {
    height: auto;
    display: flex;
    flex-direction: column;
}

.kd-carousel-wrapper.kd-carousel-equal-height :where(.swiper-slide > *, .owl-item > *) {
    height: 100%;
}

.kd-carousel-wrapper .swiper-slide {
    min-width: 0;
}

.kd-carousel-wrapper .swiper {
    overflow: hidden;
}

.kd-carousel-wrapper .swiper .swiper-wrapper {
    height: auto;
}

.kd-carousel-wrapper .swiper-button-prev,.kd-carousel-wrapper .swiper-button-next {
    margin-top: 0;
}

/* --- 2. Navigation Arrows (Unified) --- */

.kd-carousel-wrapper .owl-nav {
    position: absolute;
    inset: 0;
    z-index: 5;
    pointer-events: none;
}

.kd-carousel-wrapper :where(.owl-nav button.owl-prev, .owl-nav button.owl-next) {
    position: absolute;
    top: 50%;
    transform: translate3d(0, -50%, 0);
    pointer-events: auto;
}

.kd-carousel-wrapper :where(.swiper-button-prev, .swiper-button-next) {
    position: absolute;
    top: 50%;
    transform: translate3d(0, -50%, 0);
    z-index: 5;
}

.kd-carousel-wrapper :where(.owl-nav button, .swiper-button-prev, .swiper-button-next) {
    width: var(--kd-nav-size);
    height: var(--kd-nav-size);
    border-radius: var(--kd-nav-radius);
    background-color: var(--kd-nav-bg);
    color: var(--kd-nav-color);
    border: var(--kd-nav-border);
    box-shadow: var(--kd-nav-shadow);

    display: inline-flex;
    align-items: center;
    justify-content: center;

    cursor: pointer;
    user-select: none;
    -webkit-tap-highlight-color: transparent;

    font-size: 0;
    line-height: 0;

    transition: background-color var(--kd-carousel-dur) ease, color var(--kd-carousel-dur) ease, border-color var(--kd-carousel-dur) ease, box-shadow var(--kd-carousel-dur) ease, transform var(--kd-carousel-dur) var(--kd-carousel-ease), opacity var(--kd-carousel-dur) ease;
}

.kd-carousel-wrapper :where(.owl-nav button, .swiper-button-prev, .swiper-button-next):focus {
    outline: 0;
    box-shadow: var(--kd-nav-shadow);
}

.kd-carousel-wrapper :where(.owl-nav button, .swiper-button-prev, .swiper-button-next):focus-visible {
    box-shadow: var(--kd-nav-shadow), var(--kd-nav-ring);
}

.kd-carousel-wrapper :where(.owl-nav button, .swiper-button-prev, .swiper-button-next):active {
    transform: translate3d(0, -50%, 0) scale(0.98);
}

.kd-carousel-wrapper :where(.owl-nav button.owl-prev, .swiper-button-prev) {
    left: var(--kd-nav-offset);
}

.kd-carousel-wrapper :where(.owl-nav button.owl-next, .swiper-button-next) {
    right: var(--kd-nav-offset);
}

.kd-carousel-wrapper .swiper-button-prev::after,.kd-carousel-wrapper .swiper-button-next::after {
    display: none;
}

.kd-carousel-wrapper :where(.owl-nav button.owl-prev, .swiper-button-prev)::before,.kd-carousel-wrapper :where(.owl-nav button.owl-next, .swiper-button-next)::before {
    content: "";
    width: 10px;
    height: 10px;
    border: solid currentColor;
    border-width: 0 2px 2px 0;
    display: inline-block;
    transform: rotate(135deg);
}

.kd-carousel-wrapper :where(.owl-nav button.owl-next, .swiper-button-next)::before {
    transform: rotate(-45deg);
}

.kd-carousel-wrapper :where(.owl-nav button, .swiper-button-prev, .swiper-button-next) :where(i, svg) {
    font-size: var(--kd-nav-icon-size);
    width: 1em;
    height: 1em;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.kd-carousel-wrapper :where(.owl-nav button, .swiper-button-prev, .swiper-button-next):has(i, svg)::before {
    display: none;
}

.kd-carousel-wrapper .owl-nav button span {
    font-size: var(--kd-nav-icon-size);
    line-height: 1;
}

.kd-carousel-wrapper .owl-nav button:has(span)::before {
    display: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-carousel-wrapper :where(.owl-nav button:hover, .swiper-button-prev:hover, .swiper-button-next:hover) {
        background-color: var(--kd-nav-bg-hover);
        color: var(--kd-nav-color-hover);
        border: var(--kd-nav-border-hover);
        box-shadow: var(--kd-nav-shadow-hover);
        transform: translate3d(0, calc(-50% + -2px), 0);
    }
}

.kd-carousel-wrapper :where(.owl-nav button.disabled, .swiper-button-disabled) {
    opacity: 0.35;
    pointer-events: none;
    box-shadow: none;
    transform: translate3d(0, -50%, 0);
}

/* --- Style 01: Clean Outline (Minimal) --- */

.kd-slider-nav-style-01 {
    --kd-nav-bg: transparent;
    --kd-nav-color: var(--dark-gray);
    --kd-nav-border: 1px solid rgba(0, 0, 0, 0.35);
    --kd-nav-shadow: none;

    --kd-nav-bg-hover: var(--dark-gray);
    --kd-nav-color-hover: var(--white);
    --kd-nav-border-hover: 1px solid var(--dark-gray);
    --kd-nav-shadow-hover: 0 14px 40px rgba(0, 0, 0, 0.18);
}

/* --- Style 02: Square Dark (Modern) --- */

.kd-slider-nav-style-02 {
    --kd-nav-radius: var(--radius-6);
    --kd-nav-bg: var(--dark-gray);
    --kd-nav-color: var(--white);
    --kd-nav-border: 1px solid rgba(255, 255, 255, 0.08);
    --kd-nav-shadow: 0 14px 40px rgba(0, 0, 0, 0.25);

    --kd-nav-bg-hover: var(--base-color);
    --kd-nav-color-hover: var(--white);
    --kd-nav-border-hover: 1px solid var(--base-color);
    --kd-nav-shadow-hover: 0 18px 46px rgba(var(--base-color-rgb), 0.35);
}

/* --- Style 03: Glassmorphism (Hero) --- */

.kd-slider-nav-style-03 {
    --kd-nav-bg: rgba(255, 255, 255, 0.16);
    --kd-nav-color: var(--white);
    --kd-nav-border: 1px solid rgba(255, 255, 255, 0.22);
    --kd-nav-shadow: 0 14px 40px rgba(0, 0, 0, 0.16);

    --kd-nav-bg-hover: rgba(255, 255, 255, 0.90);
    --kd-nav-color-hover: var(--dark-gray);
    --kd-nav-border-hover: 1px solid rgba(255, 255, 255, 0.85);
    --kd-nav-shadow-hover: 0 18px 52px rgba(0, 0, 0, 0.22);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-slider-nav-style-03 :where(.owl-nav button, .swiper-button-prev, .swiper-button-next) {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

/* --- Style 04: Floating Outside --- */

.kd-slider-nav-outside {
    --kd-nav-outside-offset: 70px;
}

.kd-slider-nav-outside :where(.owl-nav button.owl-prev, .swiper-button-prev) {
    left: calc(0px - var(--kd-nav-outside-offset));
}

.kd-slider-nav-outside :where(.owl-nav button.owl-next, .swiper-button-next) {
    right: calc(0px - var(--kd-nav-outside-offset));
}

@media (max-width: 1300px) {
    .kd-slider-nav-outside :where(.owl-nav button.owl-prev, .swiper-button-prev) {
        left: var(--kd-nav-offset);
    }

    .kd-slider-nav-outside :where(.owl-nav button.owl-next, .swiper-button-next) {
        right: var(--kd-nav-offset);
    }
}

/* --- Style 05: Reveal on Hover --- */

.kd-slider-nav-reveal :where(.owl-nav button, .swiper-button-prev, .swiper-button-next) {
    opacity: 0;
    transform: translate3d(0, -50%, 0);
    transition: background-color var(--kd-carousel-dur) ease, color var(--kd-carousel-dur) ease, border-color var(--kd-carousel-dur) ease, box-shadow var(--kd-carousel-dur) ease, transform 320ms var(--kd-carousel-ease), opacity 320ms ease;
}

.kd-slider-nav-reveal :where(.owl-nav button.owl-prev, .swiper-button-prev) {
    transform: translate3d(-12px, -50%, 0);
}

.kd-slider-nav-reveal :where(.owl-nav button.owl-next, .swiper-button-next) {
    transform: translate3d(12px, -50%, 0);
}

@media (hover: hover) and (pointer: fine) {
    .kd-carousel-wrapper:hover .kd-slider-nav-reveal :where(.owl-nav button, .swiper-button-prev, .swiper-button-next) {
        opacity: 1;
    }

    .kd-carousel-wrapper:hover .kd-slider-nav-reveal :where(.owl-nav button.owl-prev, .swiper-button-prev),
    .kd-carousel-wrapper:hover .kd-slider-nav-reveal :where(.owl-nav button.owl-next, .swiper-button-next) {
        transform: translate3d(0, -50%, 0);
    }
}

@media (hover: none) {
    .kd-slider-nav-reveal :where(.owl-nav button, .swiper-button-prev, .swiper-button-next) {
        opacity: 1;
        transform: translate3d(0, -50%, 0);
    }
}

/* --- 3. Pagination Dots (Unified) --- */

.kd-carousel-wrapper :where(.owl-dots, .swiper-pagination) {
    position: relative;
    inset: auto;
    width: 100%;
    margin-top: 28px;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: var(--kd-dot-gap);
    line-height: 0;
    z-index: 4;
}

.kd-carousel-wrapper :where(.owl-dot, .swiper-pagination-bullet) {
    outline: 0;
}

.kd-carousel-wrapper .owl-dot {
    background: transparent;
    border: 0;
    padding: 0;
    cursor: pointer;
}

.kd-carousel-wrapper :where(.owl-dot span, .swiper-pagination-bullet) {
    width: var(--kd-dot-size);
    height: var(--kd-dot-size);
    background: var(--kd-dot-bg);
    border-radius: 999px;
    display: block;
    opacity: 1;
    transform: scale(1);
    transition: background-color var(--kd-carousel-dur) ease, transform var(--kd-carousel-dur) var(--kd-carousel-ease), box-shadow var(--kd-carousel-dur) ease, width var(--kd-carousel-dur) ease;
}

.kd-carousel-wrapper :where(.owl-dot.active span, .swiper-pagination-bullet-active) {
    background: var(--kd-dot-active-bg);
    transform: scale(1.28);
}

.kd-carousel-wrapper :where(.owl-dot:focus-visible span, .swiper-pagination-bullet:focus-visible) {
    box-shadow: var(--kd-dot-ring);
}

/* --- Dots Style 01: Lines --- */

.kd-slider-dots-style-01 {
    --kd-dot-size: 4px;
}

.kd-slider-dots-style-01 :where(.owl-dot span, .swiper-pagination-bullet) {
    width: 24px;
    border-radius: 4px;
    transform: none;
}

.kd-slider-dots-style-01 :where(.owl-dot.active span, .swiper-pagination-bullet-active) {
    width: 44px;
    transform: none;
}

/* --- Dots Style 02: Bordered Ring --- */

.kd-slider-dots-style-02 :where(.owl-dot span, .swiper-pagination-bullet) {
    background: transparent;
    border: 2px solid rgba(0, 0, 0, 0.35);
    width: 12px;
    height: 12px;
    position: relative;
    transform: none;
}

.kd-slider-dots-style-02 :where(.owl-dot.active span, .swiper-pagination-bullet-active) {
    border-color: var(--kd-dot-active-bg);
}

.kd-slider-dots-style-02 :where(.owl-dot.active span, .swiper-pagination-bullet-active)::after {
    content: "";
    position: absolute;
    inset: 50% auto auto 50%;
    transform: translate3d(-50%, -50%, 0);
    width: 6px;
    height: 6px;
    background-color: var(--kd-dot-active-bg);
    border-radius: 999px;
}

/* --- Dots Style 03: Fraction (Swiper) --- */

.kd-carousel-wrapper .swiper-pagination-fraction {
    font-family: var(--secondary-font);
    font-weight: 700;
    color: rgba(0, 0, 0, 0.55);
    letter-spacing: 0.18em;
}

.kd-carousel-wrapper .swiper-pagination-current {
    color: var(--base-color);
    font-size: 1.15em;
}

/* --- Dots Style 04: Progressbar (Swiper) --- */

.kd-carousel-wrapper .swiper-pagination-progressbar {
    background: rgba(0, 0, 0, 0.10);
    height: 4px;
    border-radius: 999px;
    overflow: hidden;
}

.kd-carousel-wrapper .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
    background: var(--base-color);
    border-radius: 999px;
}

/* --- Dots Variations --- */

.kd-slider-dots-light {
    --kd-dot-bg: rgba(255, 255, 255, 0.40);
    --kd-dot-active-bg: var(--white);
    --kd-dot-ring: 0 0 0 2px rgba(255, 255, 255, 0.28);
}

.kd-slider-dots-dark {
    --kd-dot-bg: rgba(0, 0, 0, 0.22);
    --kd-dot-active-bg: var(--dark-gray);
    --kd-dot-ring: 0 0 0 2px rgba(0, 0, 0, 0.20);
}

/* --- 4. Layout Presets --- */

.kd-hero-slider {
    position: relative;
    height: 100vh;
    height: 100svh;
    min-height: 600px;
    overflow: hidden;
}

.kd-hero-slider :where(.swiper, .owl-carousel) {
    height: 100%;
}

.kd-hero-slider :where(.swiper-slide, .owl-item) {
    height: 100%;
}

.kd-hero-bg {
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    position: absolute;
    inset: 0;
    z-index: 0;
}

.kd-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0.35) 35%, rgba(0,0,0,0.55) 100%);
    z-index: 1;
}

.kd-hero-content {
    position: relative;
    z-index: 2;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    color: var(--white);
    padding: 0 15px;
    max-width: 900px;
    margin: 0 auto;
}

.kd-hero-title,.kd-hero-text {
    color: inherit;
    margin: 0;
    text-shadow: 0 16px 40px rgba(0,0,0,0.35);
}

.kd-hero-title {
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -0.02em;
    font-size: clamp(2rem, 1.4rem + 2.2vw, 3.75rem);
}

.kd-hero-text {
    margin-top: 14px;
    opacity: 0.92;
    font-size: clamp(1rem, 0.95rem + 0.35vw, 1.25rem);
    line-height: 1.7;
}

.owl-item.active .kd-hero-title,.swiper-slide-active .kd-hero-title {
    animation: fadeInUp 800ms cubic-bezier(0.215, 0.61, 0.355, 1) 260ms both;
}

.owl-item.active .kd-hero-text,.swiper-slide-active .kd-hero-text {
    animation: fadeInUp 800ms cubic-bezier(0.215, 0.61, 0.355, 1) 420ms both;
}

.owl-item.active .kd-hero-btn,.swiper-slide-active .kd-hero-btn {
    animation: fadeInUp 800ms cubic-bezier(0.215, 0.61, 0.355, 1) 580ms both;
}

/* --- Center Scale Mode --- */

.kd-slider-scale-center :where(.owl-item, .swiper-slide) {
    transform: scale(0.92);
    opacity: 0.60;
    transition: transform 360ms var(--kd-carousel-ease), opacity 360ms ease, filter 360ms ease;
    filter: saturate(0.90);
}

.kd-slider-scale-center :where(.owl-item.kd-center, .swiper-slide-active) {
    transform: scale(1);
    opacity: 1;
    filter: none;
    z-index: 2;
}

/* --- Thumbs (Swiper) --- */

.kd-slider-gallery-thumbs {
    height: 420px;
    overflow: hidden;
}

.kd-slider-gallery-thumbs .swiper-slide {
    width: 100%;
    height: auto;
    opacity: 0.45;
    cursor: pointer;
    transition: opacity var(--kd-carousel-dur) ease, transform var(--kd-carousel-dur) var(--kd-carousel-ease), border-color var(--kd-carousel-dur) ease;
    border-radius: var(--radius-6);
}

.kd-slider-gallery-thumbs .swiper-slide-thumb-active {
    opacity: 1;
    transform: translate3d(0, -1px, 0);
    box-shadow: 0 12px 30px rgba(0,0,0,0.10);
}

/* --- 5. Responsive --- */

@media (max-width: 767px) {
    .kd-carousel-wrapper {
        --kd-nav-size: 40px;
        --kd-nav-offset: 10px;
        --kd-dot-gap: 8px;
        --kd-dot-size: 9px;
    }

    .kd-slider-nav-outside :where(.owl-nav button.owl-prev, .swiper-button-prev) {
        left: var(--kd-nav-offset);
    }

    .kd-slider-nav-outside :where(.owl-nav button.owl-next, .swiper-button-next) {
        right: var(--kd-nav-offset);
    }

    .kd-slider-nav-reveal :where(.owl-nav button, .swiper-button-prev, .swiper-button-next) {
        opacity: 1;
        transform: translate3d(0, -50%, 0);
    }
}

/* --- 6. Reduced Motion --- */

@media (prefers-reduced-motion: reduce) {
    .kd-carousel-wrapper :where(.owl-nav button, .swiper-button-prev, .swiper-button-next),
    .kd-carousel-wrapper :where(.owl-dot span, .swiper-pagination-bullet),
    .kd-slider-scale-center :where(.owl-item, .swiper-slide),
    .kd-slider-gallery-thumbs .swiper-slide {
        transition: none !important;
    }

    .owl-item.active .kd-hero-title,
    .swiper-slide-active .kd-hero-title,
    .owl-item.active .kd-hero-text,
    .swiper-slide-active .kd-hero-text,
    .owl-item.active .kd-hero-btn,
    .swiper-slide-active .kd-hero-btn {
        animation: none !important;
    }

    @media (hover: hover) and (pointer: fine) {
        .kd-carousel-wrapper :where(.owl-nav button:hover, .swiper-button-prev:hover, .swiper-button-next:hover) {
            transform: translate3d(0, -50%, 0) !important;
            box-shadow: var(--kd-nav-shadow) !important;
        }
    }
}

/* ===================================
    11. Client Logos & Partner Grids
====================================== */

.kd-clients-grid-wrapper {
    --kd-client-gap: 30px;
    --kd-client-logo-height: 42px;

    --kd-client-grayscale: 100%;
    --kd-client-opacity: 0.55;
    --kd-client-hover-opacity: 1;
    --kd-client-hover-scale: 1.06;

    --kd-client-border-color: rgba(0, 0, 0, 0.08);
    --kd-client-bg: transparent;
    --kd-client-radius: var(--radius-6);

    --kd-client-tile-padding-y: 18px;
    --kd-client-tile-padding-x: 18px;

    --kd-client-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-client-dur: 280ms;

    position: relative;
    width: 100%;
    isolation: isolate;
}

/* --- Base Grid Layout --- */

.kd-clients-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: var(--kd-client-gap);
    align-items: center;
    justify-content: center;
}

.kd-client-item {
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;

    padding: var(--kd-client-tile-padding-y) var(--kd-client-tile-padding-x);
    height: 100%;
    border-radius: var(--kd-client-radius);

    transition: transform var(--kd-client-dur) var(--kd-client-ease), box-shadow var(--kd-client-dur) ease, background-color var(--kd-client-dur) ease, border-color var(--kd-client-dur) ease;
}

.kd-client-item a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    text-decoration: none;
    border-radius: inherit;
    -webkit-tap-highlight-color: transparent;
}

.kd-client-item :where(img, svg) {
    max-width: 100%;
    width: auto;
    height: var(--kd-client-logo-height);
    object-fit: contain;

    filter: grayscale(var(--kd-client-grayscale));
    opacity: var(--kd-client-opacity);

    transform: translateZ(0) scale(1);
    will-change: transform, filter, opacity;

    transition: filter var(--kd-client-dur) ease, opacity var(--kd-client-dur) ease, transform var(--kd-client-dur) var(--kd-client-ease);
}

.kd-client-item:focus-within {
    box-shadow: 0 0 0 2px rgba(var(--base-color-rgb), 0.28);
}

@media (hover: hover) and (pointer: fine) {
    .kd-client-item:hover :where(img, svg) {
        filter: grayscale(0%);
        opacity: var(--kd-client-hover-opacity);
        transform: translateZ(0) scale(var(--kd-client-hover-scale));
    }
}

@media (prefers-reduced-motion: reduce) {
    .kd-client-item,
    .kd-client-item :where(img, svg) {
        transition: none !important;
    }
}

/* ===================================
    Style 01: Clean & Minimal (Default)
====================================== */

.kd-clients-style-01 .kd-client-item {
    padding: 0;
    border-radius: 0;
}

.kd-clients-style-01 .kd-client-item:focus-within {
    box-shadow: none;
}

.kd-clients-style-01 .kd-client-item a:focus-visible {
    outline: 2px solid rgba(var(--base-color-rgb), 0.45);
    outline-offset: 6px;
    border-radius: var(--radius-6);
}

/* ===================================
    Style 02: Boxed Grid (Bordered)
====================================== */

.kd-clients-style-02 {
    --kd-client-logo-height: 50px;
    --kd-client-gap: 1px;
    --kd-client-bg: var(--white);
    --kd-client-radius: 0px;

    background-color: var(--kd-client-border-color);
    border: 1px solid var(--kd-client-border-color);
    border-radius: var(--radius-6);
    overflow: hidden;
}

.kd-clients-style-02 .kd-clients-grid {
    gap: 1px;
    background-color: var(--kd-client-border-color);
}

.kd-clients-style-02 .kd-client-item {
    background-color: var(--kd-client-bg);
    padding: 38px 20px;
    border-radius: 0;
    box-shadow: none;
    transform: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-clients-style-02 .kd-client-item:hover {
        z-index: 1;
        box-shadow: 0 16px 50px rgba(0, 0, 0, 0.10);
        transform: translate3d(0, -2px, 0);
    }
}

/* ===================================
    Style 03: Floating Cards (Shadow)
====================================== */

.kd-clients-style-03 {
    --kd-client-gap: 20px;
    --kd-client-bg: var(--white);
    --kd-client-radius: var(--radius-6);
}

.kd-clients-style-03 .kd-client-item {
    background-color: var(--kd-client-bg);
    border: 1px solid rgba(0, 0, 0, 0.05);
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.05);
}

@media (hover: hover) and (pointer: fine) {
    .kd-clients-style-03 .kd-client-item:hover {
        transform: translate3d(0, -6px, 0);
        box-shadow: 0 18px 46px rgba(0, 0, 0, 0.10);
        border-color: rgba(var(--base-color-rgb), 0.18);
    }
}

/* ===================================
    Style 04: Infinite Marquee
====================================== */

.kd-clients-marquee-wrapper {
    --kd-marquee-gap: 64px;
    --kd-marquee-speed: 28s;

    overflow: hidden;
    position: relative;
    mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
    -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
    isolation: isolate;
}

.kd-clients-marquee {
    display: inline-flex;
    align-items: center;
    gap: var(--kd-marquee-gap);
    padding-left: var(--kd-marquee-gap);
    white-space: nowrap;
    will-change: transform;
    animation: kd-marquee-scroll var(--kd-marquee-speed) linear infinite;
}

.kd-clients-marquee > * {
    flex: 0 0 auto;
}

.kd-clients-marquee-wrapper:hover .kd-clients-marquee {
    animation-play-state: paused;
}

@keyframes kd-marquee-scroll {
    0% { transform: translate3d(0, 0, 0); }
    100% { transform: translate3d(-50%, 0, 0); }
}

.kd-clients-marquee :where(img, svg) {
    height: var(--kd-client-logo-height);
    width: auto;
    max-width: none;

    filter: grayscale(100%);
    opacity: 0.60;

    transform: translateZ(0) scale(1);
    transition: filter var(--kd-client-dur) ease, opacity var(--kd-client-dur) ease, transform var(--kd-client-dur) var(--kd-client-ease);
}

@media (hover: hover) and (pointer: fine) {
    .kd-clients-marquee :where(img, svg):hover {
        filter: grayscale(0%);
        opacity: 1;
        transform: translateZ(0) scale(1.08);
    }
}

@media (prefers-reduced-motion: reduce) {
    .kd-clients-marquee {
        animation: none;
        flex-wrap: wrap;
        white-space: normal;
        justify-content: center;
        gap: 22px;
        padding-left: 0;
    }

    .kd-clients-marquee :where(img, svg) {
        transition: none !important;
    }
}

/* ===================================
    Style 05: Dark Theme High Contrast
====================================== */

.kd-clients-style-dark {
    --kd-client-opacity: 0.45;
    --kd-client-hover-opacity: 1;
    --kd-client-grayscale: 100%;
}

.kd-clients-style-dark .kd-client-item :where(img, svg) {
    filter: grayscale(100%) brightness(6);
    opacity: var(--kd-client-opacity);
}

@media (hover: hover) and (pointer: fine) {
    .kd-clients-style-dark .kd-client-item:hover :where(img, svg) {
        filter: grayscale(0%) brightness(1);
        opacity: var(--kd-client-hover-opacity);
    }
}

/* ===================================
    Helpers: Grid Columns Presets
====================================== */

.kd-grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
.kd-grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
.kd-grid-cols-4 { grid-template-columns: repeat(4, 1fr); }
.kd-grid-cols-5 { grid-template-columns: repeat(5, 1fr); }
.kd-grid-cols-6 { grid-template-columns: repeat(6, 1fr); }

@media (max-width: 991px) {
    .kd-grid-cols-4, .kd-grid-cols-5, .kd-grid-cols-6 {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (max-width: 767px) {
    .kd-clients-grid {
        gap: 16px;
    }

    .kd-grid-cols-2, .kd-grid-cols-3, .kd-grid-cols-4, .kd-grid-cols-5, .kd-grid-cols-6 {
        grid-template-columns: repeat(2, 1fr);
    }

    .kd-clients-style-02 .kd-client-item {
        padding: 22px 12px;
    }
}

/* ===================================
    12. Contact Forms & Inputs
====================================== */

/* --- Base Form Variables --- */
.kd-form-wrapper {
    --kd-input-height: 52px;
    --kd-input-padding-x: 18px;
    --kd-input-font-size: 0.95rem;
    --kd-input-line-height: 1.5;

    --kd-input-bg: var(--white);
    --kd-input-color: var(--dark-gray);
    --kd-input-placeholder: rgba(113, 117, 128, 0.8);

    --kd-input-border: 1px solid rgba(0, 0, 0, 0.12);
    --kd-input-radius: var(--radius-4);

    --kd-input-focus-border: var(--base-color);
    --kd-input-focus-ring: 0 0 0 3px rgba(var(--base-color-rgb), 0.16);

    --kd-input-shadow: none;
    --kd-input-shadow-focus: 0 10px 30px rgba(0, 0, 0, 0.06);

    --kd-input-disabled-bg: rgba(0, 0, 0, 0.03);
    --kd-input-disabled-color: rgba(113, 117, 128, 0.75);

    --kd-input-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-input-dur: 220ms;

    width: 100%;
}

/* --- Base Input Style (Scoped Reset) --- */
.kd-form-wrapper :where(.kd-form-control, .kd-form-select) {
    display: block;
    width: 100%;
    height: var(--kd-input-height);
    padding: 0 var(--kd-input-padding-x);

    font-size: var(--kd-input-font-size);
    font-weight: 400;
    line-height: var(--kd-input-line-height);

    color: var(--kd-input-color);
    background-color: var(--kd-input-bg);
    background-clip: padding-box;

    border: var(--kd-input-border);
    border-radius: var(--kd-input-radius);

    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;

    box-shadow: var(--kd-input-shadow);

    transition: background-color var(--kd-input-dur) ease, color var(--kd-input-dur) ease, border-color var(--kd-input-dur) ease, box-shadow var(--kd-input-dur) ease, transform var(--kd-input-dur) var(--kd-input-ease);
}

.kd-form-wrapper :where(.kd-form-control, .kd-form-select)::placeholder {
    color: var(--kd-input-placeholder);
    opacity: 1;
}

.kd-form-wrapper :where(.kd-form-control, .kd-form-select):hover {
    border-color: rgba(0, 0, 0, 0.18);
}

.kd-form-wrapper :where(.kd-form-control, .kd-form-select):focus {
    color: var(--kd-input-color);
    background-color: var(--kd-input-bg);
    border-color: var(--kd-input-focus-border);
    outline: 0;
    box-shadow: var(--kd-input-focus-ring), var(--kd-input-shadow-focus);
}

.kd-form-wrapper :where(.kd-form-control, .kd-form-select):focus-visible {
    outline: 0;
}

.kd-form-wrapper :where(.kd-form-control, .kd-form-select):disabled,.kd-form-wrapper :where(.kd-form-control, .kd-form-select)[disabled] {
    background-color: var(--kd-input-disabled-bg);
    color: var(--kd-input-disabled-color);
    cursor: not-allowed;
    opacity: 1;
    box-shadow: none;
}

.kd-form-wrapper :where(.kd-form-control, .kd-form-select)[readonly] {
    background-color: rgba(0, 0, 0, 0.02);
}

.kd-form-wrapper :where(.kd-form-control, .kd-form-select)[aria-invalid="true"] {
    border-color: var(--red);
}

/* --- Textarea --- */
.kd-form-wrapper textarea.kd-form-control {
    min-height: 120px;
    height: auto;
    padding-top: 14px;
    padding-bottom: 14px;
    resize: vertical;
}

/* --- Select (Chevron with CSS, currentColor) --- */
.kd-form-wrapper select.kd-form-control,.kd-form-wrapper select.kd-form-select,.kd-form-wrapper .kd-form-select {
    padding-right: calc(var(--kd-input-padding-x) + 28px);
    background-image:
        linear-gradient(45deg, transparent 50%, currentColor 50%),
        linear-gradient(135deg, currentColor 50%, transparent 50%);
    background-position:
        calc(100% - var(--kd-input-padding-x) - 12px) 50%,
        calc(100% - var(--kd-input-padding-x) - 7px) 50%;
    background-size: 6px 6px, 6px 6px;
    background-repeat: no-repeat;
}

.kd-form-wrapper select.kd-form-control:focus,.kd-form-wrapper select.kd-form-select:focus,.kd-form-wrapper .kd-form-select:focus {
    background-image:
        linear-gradient(45deg, transparent 50%, currentColor 50%),
        linear-gradient(135deg, currentColor 50%, transparent 50%);
}

.kd-form-wrapper select.kd-form-control::-ms-expand,.kd-form-wrapper select.kd-form-select::-ms-expand {
    display: none;
}

/* --- Autofill (WebKit) --- */
.kd-form-wrapper :where(input.kd-form-control, input.kd-form-select):-webkit-autofill,.kd-form-wrapper :where(input.kd-form-control, input.kd-form-select):-webkit-autofill:hover,.kd-form-wrapper :where(input.kd-form-control, input.kd-form-select):-webkit-autofill:focus {
    -webkit-text-fill-color: var(--kd-input-color);
    -webkit-box-shadow: 0 0 0 1000px var(--kd-input-bg) inset;
    box-shadow: 0 0 0 1000px var(--kd-input-bg) inset;
    transition: background-color 9999s ease-out 0s;
}

/* --- Style 01: Clean Bordered (Minimal) --- */
.kd-form-style-01 {
    --kd-input-border: 1px solid rgba(0, 0, 0, 0.14);
    --kd-input-shadow-focus: none;
    --kd-input-focus-ring: none;
}

.kd-form-style-01 :where(.kd-form-control, .kd-form-select):focus {
    border-color: rgba(0, 0, 0, 0.65);
    box-shadow: none;
}

/* --- Style 02: Soft Filled (Gray Background) --- */
.kd-form-style-02 {
    --kd-input-bg: var(--very-light-gray);
    --kd-input-border: 1px solid transparent;
    --kd-input-shadow: none;
}

.kd-form-style-02 :where(.kd-form-control, .kd-form-select):focus {
    --kd-input-bg: var(--white);
    border-color: rgba(0, 0, 0, 0.10);
    box-shadow: var(--kd-input-focus-ring), 0 12px 30px rgba(0, 0, 0, 0.06);
}

/* --- Style 03: Underline / Material --- */
.kd-form-style-03 {
    --kd-input-bg: transparent;
    --kd-input-border: 0;
    --kd-input-shadow: none;
    --kd-input-shadow-focus: none;
    --kd-input-focus-ring: none;
}

.kd-form-style-03 :where(.kd-form-control, .kd-form-select) {
    border: none;
    border-bottom: 1px solid rgba(0, 0, 0, 0.22);
    border-radius: 0;
    padding-left: 0;
    padding-right: 0;
    background-color: transparent;
}

.kd-form-style-03 :where(.kd-form-control, .kd-form-select):hover {
    border-bottom-color: rgba(0, 0, 0, 0.35);
}

.kd-form-style-03 :where(.kd-form-control, .kd-form-select):focus {
    border-bottom-color: var(--base-color);
    box-shadow: none;
    background-color: transparent;
}

/* --- Style 04: Floating Labels --- */
.kd-form-floating {
    position: relative;
    margin-bottom: 20px;
}

.kd-form-floating .kd-form-control {
    height: calc(var(--kd-input-height) + 10px);
    padding-top: 20px;
    padding-bottom: 6px;
}

.kd-form-floating textarea.kd-form-control {
    min-height: 140px;
}

.kd-form-floating label {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    padding: 1rem var(--kd-input-padding-x);
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    pointer-events: none;
    transform-origin: 0 0;
    transition: transform 140ms ease, opacity 140ms ease;
    color: var(--kd-input-placeholder);
}

.kd-form-floating .kd-form-control::placeholder {
    color: transparent;
}

.kd-form-floating .kd-form-control:focus ~ label,.kd-form-floating .kd-form-control:not(:placeholder-shown) ~ label,.kd-form-floating .kd-form-control:-webkit-autofill ~ label {
    opacity: 0.75;
    transform: translate3d(0.15rem, -0.55rem, 0) scale(0.86);
}

/* --- Style 05: Glassmorphism (Dark/Hero) --- */
.kd-form-style-05 {
    --kd-input-bg: rgba(255, 255, 255, 0.10);
    --kd-input-color: var(--white);
    --kd-input-placeholder: rgba(255, 255, 255, 0.62);
    --kd-input-border: 1px solid rgba(255, 255, 255, 0.22);
    --kd-input-focus-border: rgba(255, 255, 255, 0.60);
    --kd-input-focus-ring: 0 0 0 3px rgba(255, 255, 255, 0.18);
    --kd-input-shadow-focus: 0 18px 60px rgba(0, 0, 0, 0.22);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-form-style-05 :where(.kd-form-control, .kd-form-select) {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

.kd-form-style-05 :where(.kd-form-control, .kd-form-select):hover {
    border-color: rgba(255, 255, 255, 0.32);
}

.kd-form-style-05 :where(.kd-form-control, .kd-form-select):focus {
    background-color: rgba(255, 255, 255, 0.16);
}

/* --- Input Groups (Icons) --- */
.kd-input-group {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    width: 100%;
}

.kd-input-group .kd-form-control {
    flex: 1 1 auto;
    min-width: 0;
}

.kd-input-group-icon {
    position: absolute;
    top: 50%;
    transform: translate3d(0, -50%, 0);
    color: rgba(113, 117, 128, 0.9);
    z-index: 4;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.kd-input-icon-left .kd-input-group-icon { left: 15px; }
.kd-input-icon-right .kd-input-group-icon { right: 15px; }

.kd-input-icon-left .kd-form-control { padding-left: calc(var(--kd-input-padding-x) + 28px); }
.kd-input-icon-right .kd-form-control { padding-right: calc(var(--kd-input-padding-x) + 28px); }

.kd-input-icon-left .kd-form-control:focus ~ .kd-input-group-icon,.kd-input-icon-right .kd-form-control:focus ~ .kd-input-group-icon {
    color: var(--base-color);
}

.kd-input-group-newsletter {
    display: flex;
    position: relative;
    width: 100%;
}

.kd-input-group-newsletter .kd-form-control {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.kd-input-group-newsletter .kd-btn {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    margin-left: -1px;
}

/* --- Custom Checkbox & Radio --- */
.kd-form-check {
    display: block;
    min-height: 1.5rem;
    padding-left: 1.9em;
    margin-bottom: 0.6rem;
    position: relative;
}

.kd-form-check-input {
    position: absolute;
    left: 0;
    top: 0.15em;
    width: 1.15em;
    height: 1.15em;
    margin: 0;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;

    background-color: var(--white);
    border: 1px solid rgba(0, 0, 0, 0.28);
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;

    cursor: pointer;
    transition: border-color var(--kd-input-dur) ease, background-color var(--kd-input-dur) ease, box-shadow var(--kd-input-dur) ease, transform var(--kd-input-dur) var(--kd-input-ease);
}

.kd-form-check-input:focus {
    border-color: var(--base-color);
    box-shadow: 0 0 0 2px rgba(var(--base-color-rgb), 0.22);
    outline: 0;
}

.kd-form-check-input:focus-visible {
    outline: 0;
}

.kd-form-check-input:active {
    transform: scale(0.96);
}

.kd-form-check-input[type="checkbox"] {
    border-radius: 0.28em;
}

.kd-form-check-input[type="checkbox"]:checked {
    background-color: var(--base-color);
    border-color: var(--base-color);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
}

.kd-form-check-input[type="radio"] {
    border-radius: 999px;
}

.kd-form-check-input[type="radio"]:checked {
    background-color: var(--base-color);
    border-color: var(--base-color);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
}

.kd-form-check-input:disabled,.kd-form-check-input[disabled] {
    background-color: rgba(0, 0, 0, 0.04);
    border-color: rgba(0, 0, 0, 0.16);
    cursor: not-allowed;
}

.kd-form-check-label {
    color: var(--dark-gray);
    font-size: 0.95rem;
    user-select: none;
    cursor: pointer;
}

.kd-form-check-input:disabled ~ .kd-form-check-label,.kd-form-check-input[disabled] ~ .kd-form-check-label {
    color: rgba(113, 117, 128, 0.75);
    cursor: not-allowed;
}

/* --- Validation States --- */
.kd-form-wrapper :where(.kd-form-control, .kd-form-select).kd-is-invalid {
    border-color: var(--red);
    padding-right: calc(var(--kd-input-padding-x) + 34px);
    background-repeat: no-repeat;
    background-position: right calc(var(--kd-input-padding-x) - 2px) center;
    background-size: 18px 18px;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3131'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3131' stroke='none'/%3e%3c/svg%3e");
}

.kd-form-wrapper :where(.kd-form-control, .kd-form-select).kd-is-invalid:focus {
    border-color: var(--red);
    box-shadow: 0 0 0 3px rgba(220, 49, 49, 0.18), 0 12px 30px rgba(0, 0, 0, 0.06);
}

.kd-invalid-feedback {
    display: none;
    width: 100%;
    margin-top: 0.35rem;
    font-size: 0.875em;
    color: var(--red);
}

.kd-form-wrapper :where(.kd-form-control, .kd-form-select).kd-is-invalid ~ .kd-invalid-feedback {
    display: block;
}

/* --- Sizes --- */
.kd-form-control-sm,.kd-form-select-sm {
    height: 40px;
    font-size: 0.85rem;
    padding-left: 14px;
    padding-right: 14px;
}

.kd-form-control-lg,.kd-form-select-lg {
    height: 60px;
    font-size: 1.08rem;
    padding-left: 22px;
    padding-right: 22px;
}

@media (prefers-reduced-motion: reduce) {
    .kd-form-wrapper :where(.kd-form-control, .kd-form-select),
    .kd-form-check-input {
        transition: none !important;
    }
}

/* ===================================
    13. Content Carousels
====================================== */

/* --- Base Content Card --- */
.kd-content-slider-item {
    --kd-card-bg: var(--white);
    --kd-card-color: var(--medium-gray);
    --kd-card-title-color: var(--dark-gray);

    --kd-card-radius: var(--radius-6);
    --kd-card-padding: 30px;

    --kd-card-border-color: rgba(0, 0, 0, 0.08);
    --kd-card-border-hover: rgba(var(--base-color-rgb), 0.18);

    --kd-card-shadow: 0 12px 34px rgba(0, 0, 0, 0.06);
    --kd-card-shadow-hover: 0 22px 60px rgba(0, 0, 0, 0.12);

    --kd-card-lift: -8px;
    --kd-card-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-card-dur: 320ms;

    --kd-card-media-ratio: 16 / 9;
    --kd-card-media-radius: var(--kd-card-radius) var(--kd-card-radius) 0 0;
    --kd-card-media-overlay: none;

    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;

    background-color: var(--kd-card-bg);
    color: var(--kd-card-color);

    border-radius: var(--kd-card-radius);
    box-shadow: var(--kd-card-shadow);
    overflow: hidden;

    transform: translateZ(0);
    transition: transform var(--kd-card-dur) var(--kd-card-ease), box-shadow var(--kd-card-dur) ease;
    isolation: isolate;
}

.kd-content-slider-item::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    border: 1px solid var(--kd-card-border-color);
    pointer-events: none;
    transition: border-color var(--kd-card-dur) ease, opacity var(--kd-card-dur) ease;
    opacity: 1;
}

.kd-content-slider-item:focus-within {
    box-shadow: var(--kd-card-shadow-hover);
}

.kd-content-slider-item:focus-within::after {
    border-color: rgba(var(--base-color-rgb), 0.35);
}

@media (hover: hover) and (pointer: fine) {
    .kd-content-slider-item:hover {
        transform: translate3d(0, var(--kd-card-lift), 0);
        box-shadow: var(--kd-card-shadow-hover);
    }

    .kd-content-slider-item:hover::after {
        border-color: var(--kd-card-border-hover);
    }
}

/* --- Media --- */
.kd-content-slider-image {
    position: relative;
    overflow: hidden;
    border-radius: var(--kd-card-media-radius);
    flex-shrink: 0;
    background-color: var(--very-light-gray);
    aspect-ratio: var(--kd-card-media-ratio);
}

.kd-content-slider-image::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--kd-card-media-overlay);
    pointer-events: none;
    z-index: 1;
}

.kd-content-slider-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: translateZ(0) scale(1);
    transition: transform 520ms var(--kd-card-ease);
    will-change: transform;
}

@media (hover: hover) and (pointer: fine) {
    .kd-content-slider-item:hover .kd-content-slider-image img {
        transform: translateZ(0) scale(1.08);
    }
}

/* --- Body --- */
.kd-content-slider-body {
    padding: var(--kd-card-padding);
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.kd-content-meta {
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--base-color);
    line-height: 1.2;
}

.kd-content-title {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.35;
    color: var(--kd-card-title-color);
}

.kd-content-title a {
    color: inherit;
    text-decoration: none;
    outline: none;
}

.kd-content-title a:focus-visible {
    outline: 2px solid rgba(var(--base-color-rgb), 0.45);
    outline-offset: 3px;
    border-radius: 6px;
}

.kd-content-text {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.65;
    color: var(--kd-card-color);
}

.kd-line-clamp-2,.kd-line-clamp-3,.kd-line-clamp-4 {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.kd-line-clamp-2 { -webkit-line-clamp: 2; }
.kd-line-clamp-3 { -webkit-line-clamp: 3; }
.kd-line-clamp-4 { -webkit-line-clamp: 4; }

.kd-content-footer {
    margin-top: auto;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.kd-content-divider {
    height: 1px;
    width: 100%;
    background-color: rgba(0, 0, 0, 0.06);
    margin: 2px 0;
}

/* --- Clickable Card Helper --- */
.kd-content-card-link {
    position: static;
}

.kd-content-card-link::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
}

.kd-content-slider-body,.kd-content-slider-image,.kd-content-date-badge,.kd-content-style-05 .kd-product-actions,.kd-content-style-02 .kd-social-overlay {
    position: relative;
    z-index: 1;
}

/* --- Style 01: Base --- */
.kd-content-style-01 {
    --kd-card-shadow: none;
    --kd-card-shadow-hover: 0 18px 50px rgba(0, 0, 0, 0.10);
    --kd-card-border-color: rgba(0, 0, 0, 0.10);
    --kd-card-lift: -6px;
}

.kd-content-style-01 .kd-content-title {
    transition: color 220ms ease;
}

.kd-content-style-01 .kd-content-title.kd-line-clamp-2 {
    -webkit-line-clamp: 2;
}

.kd-content-style-01 .kd-content-text.kd-line-clamp-3 {
    -webkit-line-clamp: 3;
}

.kd-content-style-01 .kd-btn-link {
    margin-top: auto;
    align-self: flex-start;
    padding: 0;
    text-decoration: none;
    font-weight: 600;
}

@media (hover: hover) and (pointer: fine) {
    .kd-content-style-01:hover .kd-content-title {
        color: var(--base-color);
    }
}

/* --- Style 01: Date Badge --- */
.kd-content-date-badge {
    position: absolute;
    top: 18px;
    left: 18px;
    z-index: 2;

    background-color: rgba(255, 255, 255, 0.92);
    border: 1px solid rgba(0, 0, 0, 0.06);
    border-radius: var(--radius-4);

    padding: 8px 12px;
    text-align: center;
    line-height: 1;

    box-shadow: 0 10px 26px rgba(0, 0, 0, 0.12);
}

@supports (backdrop-filter: blur(8px)) {
    .kd-content-date-badge {
        backdrop-filter: blur(8px);
        -webkit-backdrop-filter: blur(8px);
    }
}

.kd-content-date-badge .kd-day {
    display: block;
    font-size: 1.1rem;
    font-weight: 800;
    color: var(--dark-gray);
}

.kd-content-date-badge .kd-month {
    display: block;
    font-size: 0.7rem;
    margin-top: 2px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--medium-gray);
}

/* --- Style 02: Base --- */
.kd-content-style-02 {
    --kd-card-bg: transparent;
    --kd-card-shadow: none;
    --kd-card-shadow-hover: none;
    --kd-card-lift: 0;
    --kd-card-border-color: transparent;
    --kd-card-padding: 0;
    --kd-card-media-ratio: 3 / 4;
    --kd-card-media-radius: var(--radius-6);
}

.kd-content-style-02 .kd-content-slider-body {
    padding: 0;
    gap: 10px;
}

.kd-content-style-02 .kd-content-slider-image {
    margin-bottom: 18px;
}

.kd-content-style-02 .kd-social-overlay {
    position: absolute;
    inset: 0;
    z-index: 2;

    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;

    opacity: 0;
    transition: opacity 260ms ease;

    background: rgba(0, 0, 0, 0.38);
}

@supports (backdrop-filter: blur(6px)) {
    .kd-content-style-02 .kd-social-overlay {
        backdrop-filter: blur(6px);
        -webkit-backdrop-filter: blur(6px);
    }
}

.kd-content-style-02 .kd-social-icon {
    width: 42px;
    height: 42px;
    border-radius: 999px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    background-color: rgba(255, 255, 255, 0.95);
    color: var(--dark-gray);
    text-decoration: none;

    transform: translate3d(0, 18px, 0);
    transition: transform 260ms var(--kd-card-ease), background-color 220ms ease, color 220ms ease, box-shadow 220ms ease;
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
}

.kd-content-style-02 .kd-social-icon:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.7);
    outline-offset: 3px;
}

.kd-content-style-02 .kd-social-icon:hover {
    background-color: var(--base-color);
    color: var(--white);
}

.kd-content-style-02:focus-within .kd-social-overlay,.kd-content-style-02:focus-within .kd-social-icon {
    opacity: 1;
    transform: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-content-style-02:hover .kd-social-overlay {
        opacity: 1;
    }

    .kd-content-style-02:hover .kd-social-icon {
        transform: none;
    }

    .kd-content-style-02:hover .kd-social-icon:nth-child(2) { transition-delay: 60ms; }
    .kd-content-style-02:hover .kd-social-icon:nth-child(3) { transition-delay: 120ms; }
    .kd-content-style-02:hover .kd-social-icon:nth-child(4) { transition-delay: 180ms; }
}

.kd-team-info {
    text-align: center;
}

.kd-team-name {
    margin: 0;
    font-size: 1.18rem;
    font-weight: 700;
    color: var(--dark-gray);
}

.kd-team-role {
    margin: 0;
    font-size: 0.85rem;
    color: var(--medium-gray);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

/* --- Style 03: Base --- */
.kd-content-style-03 {
    --kd-card-padding: 40px;
    --kd-card-border-color: rgba(0, 0, 0, 0.06);
}

.kd-content-style-03 .kd-content-slider-body {
    gap: 16px;
}

.kd-content-style-03 .kd-quote-icon {
    font-size: 3rem;
    line-height: 1;
    color: rgba(var(--base-color-rgb), 0.14);
    margin: 0;
}

.kd-testimonial-text {
    margin: 0;
    font-size: 1.05rem;
    line-height: 1.75;
    font-style: italic;
    color: var(--dark-gray);
}

.kd-user-info {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: auto;
}

.kd-user-avatar {
    width: 52px;
    height: 52px;
    border-radius: 999px;
    object-fit: cover;
}

.kd-user-details h5 {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: var(--dark-gray);
}

.kd-user-details span {
    font-size: 0.85rem;
    color: var(--base-color);
}

/* --- Style 04: Base --- */
.kd-content-style-04 {
    text-align: center;
    --kd-card-lift: -10px;
    --kd-card-border-color: rgba(0, 0, 0, 0.06);
}

.kd-content-style-04 .kd-service-icon {
    width: 84px;
    height: 84px;
    margin: 0 auto 24px;

    border-radius: 999px;
    display: flex;
    align-items: center;
    justify-content: center;

    font-size: 32px;
    color: var(--base-color);

    background-color: rgba(var(--base-color-rgb), 0.10);
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.06);

    transition: transform var(--kd-card-dur) var(--kd-card-ease), background-color var(--kd-card-dur) ease, color var(--kd-card-dur) ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-content-style-04:hover .kd-service-icon {
        background-color: var(--base-color);
        color: var(--white);
        transform: translateZ(0) rotate(-10deg) scale(1.02);
    }
}

.kd-content-style-04 .kd-service-title {
    margin: 0;
    font-size: 1.32rem;
    font-weight: 700;
    color: var(--dark-gray);
}

.kd-service-list {
    list-style: none;
    padding: 0;
    margin: 0;
    text-align: left;
    display: grid;
    gap: 10px;
}

.kd-service-list li {
    position: relative;
    padding-left: 22px;
    color: var(--medium-gray);
}

.kd-service-list li::before {
    content: "";
    font-family: "bootstrap-icons";
    position: absolute;
    left: 0;
    top: 2px;
    color: var(--base-color);
    font-size: 14px;
}

/* --- Style 05: Base --- */
.kd-content-style-05 {
    --kd-card-padding: 20px;
    --kd-card-media-ratio: 4 / 3;
    --kd-card-media-overlay: linear-gradient(180deg, rgba(0,0,0,0) 35%, rgba(0,0,0,0.55) 100%);
}

.kd-content-style-05 .kd-product-actions {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 18px;

    display: flex;
    justify-content: center;
    gap: 10px;

    opacity: 0;
    transform: translate3d(0, 16px, 0);
    transition: opacity 260ms ease, transform 260ms var(--kd-card-ease);
    z-index: 3;
}

.kd-content-style-05:focus-within .kd-product-actions {
    opacity: 1;
    transform: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-content-style-05:hover .kd-product-actions {
        opacity: 1;
        transform: none;
    }
}

.kd-action-btn {
    width: 42px;
    height: 42px;

    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;

    background-color: rgba(255, 255, 255, 0.96);
    color: var(--dark-gray);
    box-shadow: 0 12px 26px rgba(0, 0, 0, 0.16);

    transition: background-color 220ms ease, color 220ms ease, transform 220ms var(--kd-card-ease), box-shadow 220ms ease;
    text-decoration: none;
}

.kd-action-btn:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.75);
    outline-offset: 3px;
}

.kd-action-btn:hover {
    background-color: var(--base-color);
    color: var(--white);
    transform: translate3d(0, -2px, 0);
    box-shadow: 0 16px 34px rgba(var(--base-color-rgb), 0.28);
}

.kd-action-btn.kd-delete:hover {
    background-color: var(--red);
    color: var(--white);
    box-shadow: 0 16px 34px rgba(220, 49, 49, 0.22);
}

.kd-content-style-05 .kd-product-price {
    font-size: 1.1rem;
    font-weight: 800;
    color: var(--dark-gray);
}

.kd-content-style-05 .kd-product-price del {
    color: rgba(113, 117, 128, 0.85);
    font-size: 0.9rem;
    font-weight: 400;
    margin-right: 6px;
}

/* --- Optional: Always Show Actions Helper --- */
.kd-content-style-05.kd-content-actions-always .kd-product-actions,.kd-content-style-02.kd-content-actions-always .kd-social-overlay {
    opacity: 1;
    transform: none;
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-content-slider-item,
    .kd-content-slider-image img,
    .kd-social-overlay,
    .kd-product-actions,
    .kd-action-btn,
    .kd-social-icon,
    .kd-service-icon {
        transition: none !important;
        transform: none !important;
    }
}

/* ===================================
    14. Content Rotators & Typewriters
====================================== */

.kd-text-rotator {
    --kd-rotate-cursor-color: var(--base-color);
    --kd-rotate-cursor-width: 2px;
    --kd-rotate-cursor-speed: 0.7s;
    --kd-rotate-perspective: 380px;
    --kd-rotate-anim-dur: 0.55s;
    --kd-rotate-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-rotate-cursor-offset: 0.18em;

    display: inline-flex;
    align-items: baseline;
    vertical-align: baseline;
    position: relative;
    isolation: isolate;
}

.kd-rotating-words-wrapper {
    display: inline-grid;
    grid-auto-flow: row;
    grid-template-columns: max-content;
    align-items: baseline;
    position: relative;
    white-space: nowrap;
    line-height: inherit;
    min-height: 1em;
}

.kd-rotating-word {
    grid-area: 1 / 1;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    will-change: transform, opacity, filter;
    transform: translate3d(0, 0, 0);
}

.kd-rotating-word.kd-is-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    z-index: 1;
}

.kd-rotating-word.kd-is-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 0;
}

/* --- Style 01: Typewriter --- */
.kd-rotator-style-typewriter .kd-rotating-words-wrapper::after {
    content: "";
    position: absolute;
    top: 50%;
    right: calc(var(--kd-rotate-cursor-offset) * -1);
    width: var(--kd-rotate-cursor-width);
    height: 0.92em;
    transform: translate3d(0, -50%, 0);
    background-color: var(--kd-rotate-cursor-color);
    border-radius: 999px;
    animation: kd-cursor-blink var(--kd-rotate-cursor-speed) steps(1, end) infinite;
}

@keyframes kd-cursor-blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0; }
}

/* --- Style 02: Slide Up --- */
.kd-rotator-style-slide {
    overflow: hidden;
    vertical-align: bottom;
}

.kd-rotator-style-slide .kd-rotating-word {
    opacity: 0;
    transform: translate3d(0, 120%, 0);
    transition: transform var(--kd-rotate-anim-dur) var(--kd-rotate-ease), opacity var(--kd-rotate-anim-dur) ease;
}

.kd-rotator-style-slide .kd-rotating-word.kd-is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

.kd-rotator-style-slide .kd-rotating-word.kd-is-hidden {
    opacity: 0;
    transform: translate3d(0, -120%, 0);
}

/* --- Style 03: 3D Flip --- */
.kd-rotator-style-flip {
    perspective: var(--kd-rotate-perspective);
    transform-style: preserve-3d;
}

.kd-rotator-style-flip .kd-rotating-word {
    opacity: 0;
    transform-origin: 50% 70%;
    transform: rotateX(85deg) translate3d(0, 0.08em, 0);
    backface-visibility: hidden;
    transition: transform var(--kd-rotate-anim-dur) var(--kd-rotate-ease), opacity var(--kd-rotate-anim-dur) ease;
}

.kd-rotator-style-flip .kd-rotating-word.kd-is-visible {
    opacity: 1;
    transform: rotateX(0deg) translate3d(0, 0, 0);
}

.kd-rotator-style-flip .kd-rotating-word.kd-is-hidden {
    opacity: 0;
    transform: rotateX(-85deg) translate3d(0, -0.08em, 0);
}

/* --- Style 04: Fade & Zoom --- */
.kd-rotator-style-zoom .kd-rotating-word {
    opacity: 0;
    transform: translate3d(0, 0, 0) scale(0.92);
    filter: blur(10px);
    transition: transform var(--kd-rotate-anim-dur) var(--kd-rotate-ease), opacity var(--kd-rotate-anim-dur) ease, filter var(--kd-rotate-anim-dur) ease;
}

.kd-rotator-style-zoom .kd-rotating-word.kd-is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
    filter: blur(0);
}

.kd-rotator-style-zoom .kd-rotating-word.kd-is-hidden {
    opacity: 0;
    transform: translate3d(0, 0, 0) scale(1.06);
    filter: blur(10px);
}

/* --- Style 05: Highlight --- */
.kd-rotator-highlight {
    --kd-rotate-highlight-bg: rgba(var(--base-color-rgb), 0.28);
    --kd-rotate-highlight-height: 0.38em;
    --kd-rotate-highlight-skew: -10deg;

    position: relative;
    z-index: 1;
    display: inline-block;
}

.kd-rotator-highlight::before {
    content: "";
    position: absolute;
    left: -0.12em;
    right: -0.12em;
    bottom: 0.12em;
    height: var(--kd-rotate-highlight-height);
    background-color: var(--kd-rotate-highlight-bg);
    transform: skewX(var(--kd-rotate-highlight-skew));
    border-radius: 6px;
    z-index: -1;
}

/* ===================================
    15. Countdown Timers
====================================== */

.kd-countdown-container {
    --kd-count-bg: var(--white);
    --kd-count-color: var(--dark-gray);
    --kd-count-label-color: var(--medium-gray);
    --kd-count-border-color: rgba(0, 0, 0, 0.08);

    --kd-count-size: 84px;
    --kd-count-gap: 18px;
    --kd-count-radius: var(--radius-4);

    --kd-count-number-size: 2rem;
    --kd-count-label-size: 0.75rem;

    --kd-count-shadow: none;
    --kd-count-justify: center;

    display: flex;
    flex-wrap: wrap;
    justify-content: var(--kd-count-justify);
    align-items: stretch;
    gap: var(--kd-count-gap);
}

.kd-countdown-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-width: 0;
}

.kd-countdown-number {
    font-size: var(--kd-count-number-size);
    font-weight: 800;
    line-height: 1;
    color: var(--kd-count-color);
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1, "lnum" 1;
}

.kd-countdown-label {
    margin-top: 6px;
    font-size: var(--kd-count-label-size);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--kd-count-label-color);
    font-weight: 700;
    line-height: 1.2;
}

/* --- Style 01: Clean Minimal --- */
.kd-countdown-style-01 .kd-countdown-item {
    padding: 0 10px;
}

.kd-countdown-style-01 .kd-countdown-number {
    font-size: clamp(2rem, 1.35rem + 1.6vw, 3.6rem);
}

.kd-countdown-style-01 .kd-countdown-label {
    font-size: 0.72rem;
    opacity: 0.9;
}

.kd-countdown-style-01.kd-with-separator .kd-countdown-item {
    position: relative;
}

.kd-countdown-style-01.kd-with-separator .kd-countdown-item:not(:last-child)::after {
    content: ":";
    position: absolute;
    right: calc(var(--kd-count-gap) * -0.55);
    top: 50%;
    transform: translate3d(50%, -62%, 0);
    font-size: clamp(1.4rem, 0.9rem + 1vw, 2.6rem);
    color: var(--kd-count-label-color);
    opacity: 0.45;
    line-height: 1;
    pointer-events: none;
}

/* --- Style 02: Boxed --- */
.kd-countdown-style-02 .kd-countdown-item {
    width: var(--kd-count-size);
    min-width: var(--kd-count-size);
    height: var(--kd-count-size);
    padding: 12px 10px;
    background-color: var(--kd-count-bg);
    border: 1px solid var(--kd-count-border-color);
    border-radius: var(--kd-count-radius);
    box-shadow: var(--kd-count-shadow);
}

.kd-countdown-style-02 .kd-countdown-number {
    font-size: 1.75rem;
}

.kd-countdown-style-02 .kd-countdown-label {
    font-size: 0.62rem;
    margin-top: 4px;
}

/* --- Style 03: Circles --- */
.kd-countdown-style-03 {
    --kd-count-size: 92px;
    --kd-count-bg: var(--base-color);
    --kd-count-color: var(--white);
    --kd-count-label-color: rgba(255, 255, 255, 0.85);
    --kd-count-radius: 999px;
    --kd-count-shadow: 0 14px 38px rgba(var(--base-color-rgb), 0.30);
}

.kd-countdown-style-03 .kd-countdown-item {
    width: var(--kd-count-size);
    min-width: var(--kd-count-size);
    height: var(--kd-count-size);
    background-color: var(--kd-count-bg);
    border-radius: var(--kd-count-radius);
    box-shadow: var(--kd-count-shadow);
    border: 1px solid rgba(255, 255, 255, 0.12);
}

.kd-countdown-style-03 .kd-countdown-number,.kd-countdown-style-03 .kd-countdown-label {
    color: inherit;
}

/* --- Style 04: Glassmorphism --- */
.kd-countdown-style-04 {
    --kd-count-bg: rgba(255, 255, 255, 0.14);
    --kd-count-border-color: rgba(255, 255, 255, 0.22);
    --kd-count-color: var(--white);
    --kd-count-label-color: rgba(255, 255, 255, 0.75);
    --kd-count-shadow: 0 18px 45px rgba(0, 0, 0, 0.18);
}

.kd-countdown-style-04 .kd-countdown-item {
    width: var(--kd-count-size);
    min-width: var(--kd-count-size);
    height: var(--kd-count-size);
    background-color: var(--kd-count-bg);
    border: 1px solid var(--kd-count-border-color);
    border-radius: var(--kd-count-radius);
    box-shadow: var(--kd-count-shadow);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-countdown-style-04 .kd-countdown-item {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

/* --- Style 05: Modern Split --- */
.kd-countdown-style-05 {
    --kd-count-justify: flex-start;
}

.kd-countdown-style-05 .kd-countdown-item {
    align-items: flex-start;
    text-align: left;
    min-width: 92px;
    padding-top: 14px;
    border-top: 2px solid var(--base-color);
}

.kd-countdown-style-05 .kd-countdown-number {
    font-size: 2.5rem;
}

.kd-countdown-style-05 .kd-countdown-label {
    font-size: 0.78rem;
    letter-spacing: 0.10em;
}

/* --- Sizes --- */
.kd-countdown-sm {
    --kd-count-size: 68px;
    --kd-count-gap: 12px;
    --kd-count-number-size: 1.6rem;
    --kd-count-label-size: 0.68rem;
}

.kd-countdown-lg {
    --kd-count-size: 104px;
    --kd-count-gap: 22px;
    --kd-count-number-size: 2.4rem;
    --kd-count-label-size: 0.82rem;
}

/* --- Responsive --- */
@media (max-width: 767px) {
    .kd-countdown-container {
        --kd-count-gap: 10px;
        --kd-count-size: 72px;
    }

    .kd-countdown-style-01.kd-with-separator .kd-countdown-item::after {
        display: none;
    }

    .kd-countdown-style-02 .kd-countdown-number,
    .kd-countdown-style-03 .kd-countdown-number,
    .kd-countdown-style-04 .kd-countdown-number {
        font-size: 1.45rem;
    }

    .kd-countdown-style-01 .kd-countdown-number {
        font-size: 2rem;
    }
}

/* ===================================
    Reduced Motion
====================================== */

@media (prefers-reduced-motion: reduce) {
    .kd-rotating-word {
        transition: none !important;
        transform: none !important;
        filter: none !important;
    }

    .kd-rotator-style-typewriter .kd-rotating-words-wrapper::after {
        animation: none !important;
        opacity: 1;
    }

    .kd-countdown-container,
    .kd-countdown-item {
        transition: none !important;
    }
}

/* ===================================
    16. Fancy Text Boxes & Highlights
====================================== */

.kd-fancy-box {
    --kd-fancy-bg: var(--white);
    --kd-fancy-color: var(--medium-gray);
    --kd-fancy-title: var(--dark-gray);
    --kd-fancy-border: 1px solid rgba(0, 0, 0, 0.08);
    --kd-fancy-radius: var(--radius-6);
    --kd-fancy-padding: 40px;
    --kd-fancy-gap: 14px;
    --kd-fancy-icon-size: 3rem;
    --kd-fancy-icon-color: var(--base-color);
    --kd-fancy-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);

    --kd-fancy-hover-lift: -6px;
    --kd-fancy-hover-shadow: 0 18px 50px rgba(0, 0, 0, 0.12);
    --kd-fancy-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-fancy-focus-ring: 0 0 0 3px rgba(var(--base-color-rgb), 0.18);

    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--kd-fancy-gap);
    background-color: var(--kd-fancy-bg);
    color: var(--kd-fancy-color);
    border: var(--kd-fancy-border);
    border-radius: var(--kd-fancy-radius);
    padding: var(--kd-fancy-padding);
    box-shadow: var(--kd-fancy-shadow);
    overflow: hidden;
    isolation: isolate;
    transition: transform 0.4s var(--kd-fancy-ease), box-shadow 0.4s var(--kd-fancy-ease), border-color 0.3s ease, background-color 0.3s ease;
}

.kd-fancy-box:focus-within {
    box-shadow: var(--kd-fancy-shadow), var(--kd-fancy-focus-ring);
}

@media (hover: hover) and (pointer: fine) {
    .kd-fancy-box:hover {
        transform: translateY(var(--kd-fancy-hover-lift));
        box-shadow: var(--kd-fancy-hover-shadow);
    }
}

.kd-fancy-box-icon {
    font-size: var(--kd-fancy-icon-size);
    color: var(--kd-fancy-icon-color);
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    transition: transform 0.4s var(--kd-fancy-ease), color 0.3s ease, opacity 0.3s ease;
    will-change: transform;
}

.kd-fancy-box-title {
    font-size: 1.35rem;
    font-weight: 800;
    color: var(--kd-fancy-title);
    line-height: 1.25;
    margin: 0;
    transition: color 0.3s ease, transform 0.4s var(--kd-fancy-ease);
}

.kd-fancy-box-text {
    margin: 0;
    color: inherit;
    opacity: 0.95;
}

.kd-fancy-box-actions {
    margin-top: auto;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
}

.kd-fancy-box-link {
    position: relative;
    cursor: pointer;
}

.kd-fancy-box-link a {
    color: inherit;
    text-decoration: none;
}

.kd-fancy-box-link a:focus-visible {
    outline: none;
}

/* --- Style 01: Hover Slide Up --- */
.kd-fancy-style-01 {
    --kd-fancy-hover-bg: var(--base-color);
    --kd-fancy-hover-color: rgba(255, 255, 255, 0.92);
    --kd-fancy-hover-title: var(--white);
    --kd-fancy-hover-icon: var(--white);
    --kd-fancy-reveal-shift: 30px;
    --kd-fancy-reveal-blur: 10px;
}

.kd-fancy-style-01 .kd-fancy-content-wrap {
    position: relative;
    z-index: 2;
    transition: transform 0.5s var(--kd-fancy-ease);
}

.kd-fancy-style-01 .kd-fancy-hover-content {
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    opacity: 0;
    visibility: hidden;
    color: var(--kd-fancy-hover-color);
    transform: translate3d(0, 22px, 0);
    filter: blur(var(--kd-fancy-reveal-blur));
    transition: opacity 0.5s var(--kd-fancy-ease), transform 0.5s var(--kd-fancy-ease), filter 0.5s var(--kd-fancy-ease), visibility 0.5s var(--kd-fancy-ease);
    padding-top: 18px;
}

.kd-fancy-style-01::before {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--kd-fancy-hover-bg);
    transform: scaleY(0);
    transform-origin: bottom;
    transition: transform 0.55s var(--kd-fancy-ease);
    z-index: 0;
}

.kd-fancy-style-01::after {
    content: "";
    position: absolute;
    inset: -1px;
    background: radial-gradient(600px circle at 30% 20%, rgba(255, 255, 255, 0.25), transparent 55%);
    opacity: 0;
    transition: opacity 0.55s var(--kd-fancy-ease);
    z-index: 1;
    pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-fancy-style-01:hover {
        border-color: transparent;
    }

    .kd-fancy-style-01:hover::before {
        transform: scaleY(1);
    }

    .kd-fancy-style-01:hover::after {
        opacity: 1;
    }

    .kd-fancy-style-01:hover .kd-fancy-content-wrap {
        transform: translate3d(0, calc(var(--kd-fancy-reveal-shift) * -1), 0);
    }

    .kd-fancy-style-01:hover .kd-fancy-box-title {
        color: var(--kd-fancy-hover-title);
    }

    .kd-fancy-style-01:hover .kd-fancy-box-icon {
        color: var(--kd-fancy-hover-icon);
        transform: translate3d(0, -4px, 0);
    }

    .kd-fancy-style-01:hover .kd-fancy-hover-content {
        opacity: 1;
        visibility: visible;
        transform: translate3d(0, 0, 0);
        filter: blur(0);
    }
}

.kd-fancy-style-01:focus-within {
    border-color: transparent;
}

.kd-fancy-style-01:focus-within::before {
    transform: scaleY(1);
}

.kd-fancy-style-01:focus-within .kd-fancy-content-wrap {
    transform: translate3d(0, calc(var(--kd-fancy-reveal-shift) * -1), 0);
}

.kd-fancy-style-01:focus-within .kd-fancy-box-title,.kd-fancy-style-01:focus-within .kd-fancy-box-icon {
    color: var(--white);
}

.kd-fancy-style-01:focus-within .kd-fancy-hover-content {
    opacity: 1;
    visibility: visible;
    transform: translate3d(0, 0, 0);
    filter: blur(0);
}

/* --- Style 02: Gradient Border Hover --- */
.kd-fancy-style-02 {
    --kd-fancy-border: 1px solid rgba(0, 0, 0, 0.06);
    --kd-fancy-shadow: 0 12px 44px rgba(0, 0, 0, 0.08);
    --kd-fancy-hover-lift: -7px;
}

.kd-fancy-style-02::before {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    background: linear-gradient(135deg, rgba(var(--base-color-rgb), 1), rgba(38, 43, 53, 1));
    opacity: 0;
    transition: opacity 0.4s var(--kd-fancy-ease);
    z-index: 0;
    pointer-events: none;
}

.kd-fancy-style-02::after {
    content: "";
    position: absolute;
    inset: 1px;
    border-radius: calc(var(--kd-fancy-radius) - 2px);
    background: var(--kd-fancy-bg);
    z-index: 1;
    pointer-events: none;
}

.kd-fancy-style-02 > * {
    position: relative;
    z-index: 2;
}

@media (hover: hover) and (pointer: fine) {
    .kd-fancy-style-02:hover::before {
        opacity: 1;
    }
}

.kd-fancy-style-02:focus-within::before {
    opacity: 1;
}

/* --- Style 03: Big Watermark Number --- */
.kd-fancy-style-03 {
    --kd-fancy-number-color: rgba(0, 0, 0, 0.03);
    --kd-fancy-number-hover: rgba(var(--base-color-rgb), 0.10);
}

.kd-fancy-style-03 .kd-fancy-number {
    position: absolute;
    top: -34px;
    right: -22px;
    font-size: clamp(5rem, 7vw, 8rem);
    font-weight: 900;
    line-height: 1;
    color: var(--kd-fancy-number-color);
    z-index: 0;
    transition: transform 0.55s var(--kd-fancy-ease), color 0.55s var(--kd-fancy-ease), opacity 0.55s var(--kd-fancy-ease);
    pointer-events: none;
    opacity: 1;
}

.kd-fancy-style-03 > * {
    position: relative;
    z-index: 1;
}

@media (hover: hover) and (pointer: fine) {
    .kd-fancy-style-03:hover .kd-fancy-number {
        color: var(--kd-fancy-number-hover);
        transform: rotate(-10deg) scale(1.08);
    }
}

/* --- Style 04: Icon Side + Accent Bar --- */
.kd-fancy-style-04 {
    --kd-fancy-padding: 34px;
}

.kd-fancy-style-04::before {
    content: "";
    position: absolute;
    top: 18px;
    bottom: 18px;
    left: 18px;
    width: 3px;
    border-radius: 999px;
    background: linear-gradient(to bottom, rgba(var(--base-color-rgb), 0.15), rgba(var(--base-color-rgb), 0.85));
    opacity: 0.9;
    z-index: 0;
}

.kd-fancy-style-04 > * {
    position: relative;
    z-index: 1;
}

@media (min-width: 768px) {
    .kd-fancy-style-04 {
        flex-direction: row;
        align-items: flex-start;
        gap: 18px;
    }

    .kd-fancy-style-04 .kd-fancy-box-icon {
        margin-top: 2px;
        font-size: calc(var(--kd-fancy-icon-size) * 0.9);
        transform: translate3d(0, 0, 0);
    }

    .kd-fancy-style-04 .kd-fancy-body {
        display: flex;
        flex-direction: column;
        gap: 10px;
        flex: 1 1 auto;
        min-width: 0;
    }
}

/* --- Style 05: Glass / Dark --- */
.kd-fancy-style-05 {
    --kd-fancy-bg: rgba(255, 255, 255, 0.14);
    --kd-fancy-border: 1px solid rgba(255, 255, 255, 0.20);
    --kd-fancy-title: var(--white);
    --kd-fancy-color: rgba(255, 255, 255, 0.80);
    --kd-fancy-icon-color: rgba(255, 255, 255, 0.95);
    --kd-fancy-shadow: 0 18px 48px rgba(0, 0, 0, 0.18);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-fancy-style-05 {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

/* --- Style 06: Spotlight Hover --- */
.kd-fancy-style-06 {
    --kd-fancy-spotlight-opacity: 0.0;
    --kd-fancy-spotlight-size: 620px;
}

.kd-fancy-style-06::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(
        var(--kd-fancy-spotlight-size) circle at var(--kd-fancy-x, 50%) var(--kd-fancy-y, 40%),
        rgba(var(--base-color-rgb), 0.22),
        transparent 55%
    );
    opacity: var(--kd-fancy-spotlight-opacity);
    transition: opacity 0.45s var(--kd-fancy-ease);
    z-index: 0;
    pointer-events: none;
}

.kd-fancy-style-06 > * {
    position: relative;
    z-index: 1;
}

@media (hover: hover) and (pointer: fine) {
    .kd-fancy-style-06:hover {
        --kd-fancy-spotlight-opacity: 1;
    }
}

.kd-fancy-style-06:focus-within {
    --kd-fancy-spotlight-opacity: 1;
}

/* --- Alignments --- */
.kd-fancy-center { text-align: center; align-items: center; }
.kd-fancy-center .kd-fancy-box-actions { justify-content: center; }
.kd-fancy-left { text-align: left; }
.kd-fancy-right { text-align: right; align-items: flex-end; }

/* --- Sizes --- */
.kd-fancy-sm { --kd-fancy-padding: 28px; --kd-fancy-icon-size: 2.4rem; }
.kd-fancy-lg { --kd-fancy-padding: 52px; --kd-fancy-icon-size: 3.4rem; }

/* --- Text Highlights --- */
.kd-text-highlight {
    --kd-highlight-color: rgba(var(--base-color-rgb), 0.26);
    --kd-highlight-radius: 6px;
    --kd-highlight-pad: 0.12em;

    background-image: linear-gradient(to right, var(--kd-highlight-color), var(--kd-highlight-color));
    background-repeat: no-repeat;
    background-size: 0% 38%;
    background-position: 0 88%;
    padding: 0 var(--kd-highlight-pad);
    border-radius: var(--kd-highlight-radius);
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
    transition: background-size 0.55s var(--kd-fancy-ease);
}

.kd-text-highlight-anim:hover,.kd-fancy-box:hover .kd-text-highlight {
    background-size: 100% 38%;
}

.kd-text-highlight-yellow { --kd-highlight-color: rgba(255, 234, 35, 0.35); }
.kd-text-highlight-green { --kd-highlight-color: rgba(46, 187, 121, 0.22); }
.kd-text-highlight-red { --kd-highlight-color: rgba(220, 49, 49, 0.20); }

.kd-text-underline-gradient {
    --kd-underline-color: rgba(var(--base-color-rgb), 0.85);
    background-image: linear-gradient(to right, var(--kd-underline-color), var(--kd-underline-color));
    background-repeat: no-repeat;
    background-size: 0% 2px;
    background-position: 0 100%;
    transition: background-size 0.35s var(--kd-fancy-ease), color 0.35s ease;
}

.kd-text-underline-gradient:hover {
    background-size: 100% 2px;
    color: var(--base-color);
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-fancy-box,
    .kd-fancy-box-icon,
    .kd-fancy-style-01::before,
    .kd-fancy-style-01::after,
    .kd-fancy-style-01 .kd-fancy-content-wrap,
    .kd-fancy-style-01 .kd-fancy-hover-content,
    .kd-fancy-style-02::before,
    .kd-fancy-style-03 .kd-fancy-number,
    .kd-text-highlight,
    .kd-text-underline-gradient {
        transition: none !important;
        transform: none !important;
        filter: none !important;
    }

    .kd-fancy-style-01 .kd-fancy-hover-content {
        opacity: 1;
        visibility: visible;
        position: static;
        transform: none;
        padding-top: 12px;
    }

    .kd-text-highlight {
        background-size: 100% 38%;
    }
}

/* ===================================
    17. Flip Boxes & 3D Rotate
====================================== */

.kd-flip-card {
    --kd-flip-height: 400px;
    --kd-flip-radius: var(--radius-6);
    --kd-flip-padding: 40px;

    --kd-flip-bg-front: var(--white);
    --kd-flip-bg-back: var(--base-color);

    --kd-flip-color-front: var(--medium-gray);
    --kd-flip-title-front: var(--dark-gray);
    --kd-flip-color-back: rgba(255, 255, 255, 0.92);
    --kd-flip-title-back: var(--white);

    --kd-flip-duration: 0.7s;
    --kd-flip-ease: cubic-bezier(0.23, 1, 0.32, 1);

    --kd-flip-shadow: 0 18px 45px rgba(0, 0, 0, 0.12);
    --kd-flip-border: 1px solid rgba(0, 0, 0, 0.06);
    --kd-flip-focus-ring: 0 0 0 3px rgba(var(--base-color-rgb), 0.18);

    position: relative;
    width: 100%;
    height: var(--kd-flip-height);
    perspective: 1400px;
    isolation: isolate;
}

.kd-flip-card-inner {
    position: relative;
    width: 100%;
    height: 100%;
    border-radius: var(--kd-flip-radius);
    box-shadow: var(--kd-flip-shadow);
    transform-style: preserve-3d;
    transition: transform var(--kd-flip-duration) var(--kd-flip-ease);
    will-change: transform;
    transform: translateZ(0);
}


.kd-flip-front,.kd-flip-back {
    position: absolute;
    inset: 0;
    border-radius: var(--kd-flip-radius);
    padding: var(--kd-flip-padding);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 14px;
    overflow: hidden;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}

.kd-flip-front {
    background-color: var(--kd-flip-bg-front);
    color: var(--kd-flip-color-front);
    border: var(--kd-flip-border);
    transform: rotateY(0deg);
}

.kd-flip-back {
    background-color: var(--kd-flip-bg-back);
    color: var(--kd-flip-color-back);
    transform: rotateY(180deg);
}

.kd-flip-front .kd-flip-title { color: var(--kd-flip-title-front); }
.kd-flip-back .kd-flip-title { color: var(--kd-flip-title-back); }

.kd-flip-title {
    margin: 0;
    font-weight: 800;
    line-height: 1.2;
}

.kd-flip-text {
    margin: 0;
    color: inherit;
    opacity: 0.95;
}

.kd-flip-actions {
    margin-top: auto;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: center;
    width: 100%;
}

/* --- Trigger: Hover / Focus / Manual --- */
@media (hover: hover) and (pointer: fine) {
    .kd-flip-card:hover .kd-flip-card-inner {
        transform: rotateY(180deg);
    }
}

.kd-flip-card:focus-within .kd-flip-card-inner {
    transform: rotateY(180deg);
    box-shadow: var(--kd-flip-shadow), var(--kd-flip-focus-ring);
}

.kd-flip-card.kd-is-flipped .kd-flip-card-inner {
    transform: rotateY(180deg);
}

.kd-flip-card.kd-flip-trigger-manual:hover .kd-flip-card-inner,.kd-flip-card.kd-flip-trigger-manual:focus-within .kd-flip-card-inner {
    transform: none;
}

/* --- 3D Depth (Pop Content) --- */
.kd-flip-content {
    transform: translate3d(0, 0, 60px);
    transition: transform var(--kd-flip-duration) var(--kd-flip-ease), opacity 0.3s ease;
    will-change: transform;
}

@media (hover: hover) and (pointer: fine) {
    .kd-flip-card:hover .kd-flip-front .kd-flip-content {
        transform: translate3d(0, 0, 90px);
    }

    .kd-flip-card:hover .kd-flip-back .kd-flip-content {
        transform: translate3d(0, 0, 70px);
    }
}

.kd-flip-card:focus-within .kd-flip-front .kd-flip-content {
    transform: translate3d(0, 0, 90px);
}

.kd-flip-card:focus-within .kd-flip-back .kd-flip-content {
    transform: translate3d(0, 0, 70px);
}

/* --- Style 01: Vertical Flip --- */
.kd-flip-card-vertical .kd-flip-front { transform: rotateX(0deg); }
.kd-flip-card-vertical .kd-flip-back { transform: rotateX(180deg); }

@media (hover: hover) and (pointer: fine) {
    .kd-flip-card.kd-flip-card-vertical:hover .kd-flip-card-inner {
        transform: rotateX(180deg);
    }
}

.kd-flip-card.kd-flip-card-vertical:focus-within .kd-flip-card-inner,.kd-flip-card.kd-flip-card-vertical.kd-is-flipped .kd-flip-card-inner {
    transform: rotateX(180deg);
}

.kd-flip-card.kd-flip-card-vertical.kd-flip-trigger-manual:hover .kd-flip-card-inner,.kd-flip-card.kd-flip-card-vertical.kd-flip-trigger-manual:focus-within .kd-flip-card-inner {
    transform: none;
}

/* --- Style 02: Image Front / Info Back --- */
.kd-flip-style-image .kd-flip-front {
    padding: 0;
    background-color: var(--dark-gray);
    border: none;
}

.kd-flip-style-image .kd-flip-front img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: var(--kd-flip-radius);
    opacity: 0.92;
    transform: scale(1.02);
    transition: opacity 0.35s ease, transform 0.6s var(--kd-flip-ease);
    will-change: transform, opacity;
}

.kd-flip-style-image .kd-flip-front::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.55), transparent 55%);
    opacity: 0.95;
    pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-flip-style-image:hover .kd-flip-front img {
        opacity: 0.55;
        transform: scale(1.08);
    }
}

.kd-flip-style-image .kd-flip-front-title {
    position: absolute;
    left: 30px;
    right: 30px;
    bottom: 28px;
    color: var(--white);
    font-size: 1.5rem;
    font-weight: 800;
    line-height: 1.2;
    z-index: 2;
    transform: translate3d(0, 0, 60px);
}

/* --- Style 03: Glassmorphism Back --- */
.kd-flip-style-glass .kd-flip-back {
    background-color: rgba(var(--base-color-rgb), 0.78);
    border: 1px solid rgba(255, 255, 255, 0.22);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-flip-style-glass .kd-flip-back {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

/* --- Style 04: Sheen + Gradient Accent --- */
.kd-flip-style-sheen .kd-flip-card-inner::before {
    content: "";
    position: absolute;
    inset: -30%;
    background: linear-gradient(
        120deg,
        transparent 35%,
        rgba(255, 255, 255, 0.28) 50%,
        transparent 65%
    );
    transform: translate3d(-40%, 0, 0) rotate(0deg);
    opacity: 0;
    transition: transform 0.9s var(--kd-flip-ease), opacity 0.35s ease;
    pointer-events: none;
    z-index: 2;
    mix-blend-mode: overlay;
}

@media (hover: hover) and (pointer: fine) {
    .kd-flip-style-sheen:hover .kd-flip-card-inner::before {
        opacity: 1;
        transform: translate3d(40%, 0, 0) rotate(0deg);
    }
}

.kd-flip-style-sheen:focus-within .kd-flip-card-inner::before {
    opacity: 1;
    transform: translate3d(40%, 0, 0) rotate(0deg);
}

/* --- Utilities: Alignments --- */
.kd-flip-align-top .kd-flip-front,.kd-flip-align-top .kd-flip-back { justify-content: flex-start; }

.kd-flip-align-bottom .kd-flip-front,.kd-flip-align-bottom .kd-flip-back { justify-content: flex-end; }

/* --- Utilities: Flip Heights --- */
.kd-flip-h-300 { --kd-flip-height: 300px; }
.kd-flip-h-400 { --kd-flip-height: 400px; }
.kd-flip-h-500 { --kd-flip-height: 500px; }

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-flip-card-inner,
    .kd-flip-content,
    .kd-flip-style-image .kd-flip-front img,
    .kd-flip-style-sheen .kd-flip-card-inner::before {
        transition: none !important;
        transform: none !important;
    }

    .kd-flip-card:hover .kd-flip-card-inner,
    .kd-flip-card:focus-within .kd-flip-card-inner,
    .kd-flip-card.kd-is-flipped .kd-flip-card-inner {
        transform: none !important;
    }

    .kd-flip-back {
        opacity: 0;
        visibility: hidden;
        transform: none !important;
    }

    .kd-flip-card:hover .kd-flip-back,
    .kd-flip-card:focus-within .kd-flip-back,
    .kd-flip-card.kd-is-flipped .kd-flip-back {
        opacity: 1;
        visibility: visible;
    }
}

/* ===================================
    18. Fun Facts & Number Counters
====================================== */

/* --- Base --- */
.kd-fun-fact-box {
    --kd-fact-bg: var(--white);
    --kd-fact-color: var(--medium-gray);
    --kd-fact-title-color: var(--dark-gray);
    --kd-fact-icon-color: var(--base-color);
    --kd-fact-number-color: var(--dark-gray);

    --kd-fact-radius: var(--radius-6);
    --kd-fact-padding: 30px;
    --kd-fact-gap: 14px;
    --kd-fact-border: 1px solid rgba(0, 0, 0, 0.08);
    --kd-fact-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);

    --kd-fact-icon-size: clamp(2.4rem, 1.9rem + 1vw, 3rem);
    --kd-fact-number-size: clamp(2.25rem, 1.75rem + 1.6vw, 3.25rem);

    --kd-fact-hover-lift: -6px;
    --kd-fact-hover-shadow: 0 18px 50px rgba(0, 0, 0, 0.12);
    --kd-fact-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-fact-focus-ring: 0 0 0 3px rgba(var(--base-color-rgb), 0.18);

    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--kd-fact-gap);
    background-color: var(--kd-fact-bg);
    color: var(--kd-fact-color);
    padding: var(--kd-fact-padding);
    border-radius: var(--kd-fact-radius);
    border: var(--kd-fact-border);
    box-shadow: var(--kd-fact-shadow);
    transition: transform 0.45s var(--kd-fact-ease), box-shadow 0.45s var(--kd-fact-ease), background-color 0.3s ease, border-color 0.3s ease;
    isolation: isolate;
}

.kd-fun-fact-box:focus-within {
    box-shadow: var(--kd-fact-shadow), var(--kd-fact-focus-ring);
}

.kd-fun-fact-icon {
    width: auto;
    height: auto;
    font-size: var(--kd-fact-icon-size);
    color: var(--kd-fact-icon-color);
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.45s var(--kd-fact-ease), color 0.3s ease, background-color 0.3s ease;
    will-change: transform;
}

.kd-fun-fact-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.kd-fun-fact-number {
    display: inline-flex;
    align-items: baseline;
    gap: 0.14em;
    font-size: var(--kd-fact-number-size);
    font-weight: 900;
    line-height: 1;
    color: var(--kd-fact-number-color);
    margin: 0;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
}

.kd-fun-fact-number[data-prefix]:not([data-prefix=""])::before,.kd-fun-fact-number[data-suffix]:not([data-suffix=""])::after {
    font-size: 0.50em;
    font-weight: 800;
    line-height: 1;
    opacity: 0.82;
    transform: translateY(-0.35em);
}

.kd-fun-fact-number[data-prefix]:not([data-prefix=""])::before {
    content: attr(data-prefix);
    margin-right: 0.06em;
}

.kd-fun-fact-number[data-suffix]:not([data-suffix=""])::after {
    content: attr(data-suffix);
    margin-left: 0.06em;
}

.kd-fun-fact-title {
    font-size: 0.95rem;
    font-weight: 800;
    color: var(--kd-fact-title-color);
    text-transform: uppercase;
    letter-spacing: 0.11em;
    margin: 0;
}

.kd-fun-fact-text {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.6;
    color: inherit;
    opacity: 0.92;
}

@media (hover: hover) and (pointer: fine) {
    .kd-fun-fact-box:hover {
        transform: translateY(var(--kd-fact-hover-lift));
        box-shadow: var(--kd-fact-hover-shadow);
    }

    .kd-fun-fact-box:hover .kd-fun-fact-icon {
        transform: translate3d(0, -2px, 0) scale(1.06);
    }
}

/* --- Style 01: Clean Minimal (No Box) --- */
.kd-fact-style-01 {
    --kd-fact-bg: transparent;
    --kd-fact-padding: 0;
    --kd-fact-border: 1px solid transparent;
    --kd-fact-shadow: none;
    --kd-fact-hover-lift: 0;
    --kd-fact-hover-shadow: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-fact-style-01:hover {
        transform: none;
        box-shadow: none;
    }
}

/* --- Style 02: Soft Card (Modern Shadow) --- */
.kd-fact-style-02 {
    --kd-fact-border: 1px solid rgba(0, 0, 0, 0.06);
    --kd-fact-shadow: 0 12px 36px rgba(0, 0, 0, 0.06);
    --kd-fact-hover-shadow: 0 22px 60px rgba(0, 0, 0, 0.12);
}

/* --- Style 03: Gradient Number (Premium) --- */
.kd-fact-style-03 .kd-fun-fact-number {
    background: linear-gradient(135deg, var(--base-color), var(--slate-blue));
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}

.kd-fact-style-03 .kd-fun-fact-icon {
    color: var(--dark-gray);
    opacity: 0.9;
}

/* --- Style 04: Side Layout (Icon Left) --- */
.kd-fact-style-04 {
    --kd-fact-gap: 18px;
    flex-direction: row;
    align-items: center;
    text-align: left;
    padding: 24px;
}

.kd-fact-style-04 .kd-fun-fact-icon {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    background-color: rgba(var(--base-color-rgb), 0.10);
    flex-shrink: 0;
    font-size: clamp(2rem, 1.6rem + 0.7vw, 2.5rem);
}

.kd-fact-style-04 .kd-fun-fact-content {
    align-items: flex-start;
}

.kd-fact-style-04 .kd-fun-fact-number {
    font-size: clamp(2rem, 1.65rem + 1vw, 2.75rem);
}

.kd-fact-style-04 .kd-fun-fact-title {
    font-size: 0.85rem;
    color: var(--medium-gray);
}

@media (max-width: 767px) {
    .kd-fact-style-04 {
        flex-direction: column;
        text-align: center;
        align-items: center;
    }

    .kd-fact-style-04 .kd-fun-fact-content {
        align-items: center;
    }
}

/* --- Style 05: Bordered Grid (Responsive Lines) --- */
.kd-fun-fact-grid-wrapper {
    --kd-fact-grid-line: rgba(0, 0, 0, 0.10);
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1px;
    background-color: var(--kd-fact-grid-line);
    border-radius: var(--radius-6);
    overflow: hidden;
    width: 100%;
}

.kd-fun-fact-grid-wrapper .kd-fun-fact-box {
    --kd-fact-radius: 0;
    --kd-fact-shadow: none;
    --kd-fact-border: 1px solid transparent;
    --kd-fact-hover-lift: 0;
    --kd-fact-hover-shadow: none;
    border-radius: 0;
}

@media (hover: hover) and (pointer: fine) {
    .kd-fun-fact-grid-wrapper .kd-fun-fact-box:hover {
        transform: none;
        box-shadow: none;
        background-color: rgba(var(--base-color-rgb), 0.03);
    }
}

/* --- Style 06: Glassmorphism (Dark/Hero) --- */
.kd-fact-style-06 {
    --kd-fact-bg: rgba(255, 255, 255, 0.12);
    --kd-fact-border: 1px solid rgba(255, 255, 255, 0.22);
    --kd-fact-shadow: 0 18px 55px rgba(0, 0, 0, 0.20);
    --kd-fact-hover-shadow: 0 24px 70px rgba(0, 0, 0, 0.28);
    --kd-fact-number-color: var(--white);
    --kd-fact-title-color: rgba(255, 255, 255, 0.82);
    --kd-fact-color: rgba(255, 255, 255, 0.75);
    --kd-fact-icon-color: rgba(255, 255, 255, 0.95);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-fact-style-06 {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

/* --- Style 07: Accent Top Line (Dashboard) --- */
.kd-fact-style-07 {
    --kd-fact-border: 1px solid rgba(0, 0, 0, 0.06);
}

.kd-fact-style-07::before {
    content: "";
    position: absolute;
    left: 18px;
    right: 18px;
    top: 14px;
    height: 3px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(var(--base-color-rgb), 0.25), rgba(var(--base-color-rgb), 0.95));
    opacity: 0.9;
    pointer-events: none;
}

.kd-fact-style-07 .kd-fun-fact-icon {
    margin-top: 6px;
}

/* --- Style 08: Outline to Fill (Interactive) --- */
.kd-fact-style-08 {
    --kd-fact-bg: transparent;
    --kd-fact-border: 1px solid rgba(var(--base-color-rgb), 0.28);
    --kd-fact-shadow: none;
}

.kd-fact-style-08::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(600px circle at 30% 20%, rgba(var(--base-color-rgb), 0.20), transparent 55%);
    opacity: 0;
    transition: opacity 0.45s var(--kd-fact-ease);
    z-index: 0;
    pointer-events: none;
}

.kd-fact-style-08 > * {
    position: relative;
    z-index: 1;
}

@media (hover: hover) and (pointer: fine) {
    .kd-fact-style-08:hover {
        border-color: rgba(var(--base-color-rgb), 0.45);
        background-color: rgba(var(--base-color-rgb), 0.04);
    }

    .kd-fact-style-08:hover::before {
        opacity: 1;
    }
}

/* --- Sizes --- */
.kd-fact-sm { --kd-fact-padding: 22px; --kd-fact-icon-size: clamp(2rem, 1.7rem + 0.6vw, 2.4rem); --kd-fact-number-size: clamp(1.9rem, 1.6rem + 1vw, 2.6rem); }
.kd-fact-lg { --kd-fact-padding: 42px; --kd-fact-icon-size: clamp(2.8rem, 2.2rem + 1vw, 3.4rem); --kd-fact-number-size: clamp(2.6rem, 2.1rem + 1.8vw, 3.8rem); }

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-fun-fact-box,
    .kd-fun-fact-icon,
    .kd-fact-style-08::before {
        transition: none !important;
        transform: none !important;
    }
}

@media (prefers-contrast: more) {
    .kd-fun-fact-box {
        --kd-fact-border: 1px solid rgba(0, 0, 0, 0.18);
    }
}

/* ===================================
    19. Google Maps & Location Frames
====================================== */

/* --- Base Map Embed --- */
.kd-map-block {
    position: relative;
    width: 100%;
}

.kd-map-container {
    --kd-map-height: 450px;
    --kd-map-radius: var(--radius-6);
    --kd-map-border: 1px solid rgba(0, 0, 0, 0.08);
    --kd-map-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);

    --kd-map-filter: none;
    --kd-map-filter-hover: var(--kd-map-filter);
    --kd-map-opacity: 1;
    --kd-map-opacity-hover: var(--kd-map-opacity);

    --kd-map-tint: transparent;

    position: relative;
    width: 100%;
    height: var(--kd-map-height);
    background-color: var(--very-light-gray);
    border-radius: var(--kd-map-radius);
    overflow: hidden;
    isolation: isolate;
    border: var(--kd-map-border);
    box-shadow: var(--kd-map-shadow);
    transition: transform 0.35s ease, box-shadow 0.35s ease, border-color 0.25s ease;
}

.kd-map-container iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
    filter: var(--kd-map-filter);
    opacity: var(--kd-map-opacity);
    transition: filter 0.45s ease, opacity 0.45s ease;
    z-index: 1;
}

@media (hover: hover) and (pointer: fine) {
    .kd-map-container:hover {
        transform: translateY(-2px);
        box-shadow: 0 18px 50px rgba(0, 0, 0, 0.10);
    }

    .kd-map-container:hover iframe {
        filter: var(--kd-map-filter-hover);
        opacity: var(--kd-map-opacity-hover);
    }
}

.kd-map-container:focus-within {
    box-shadow: var(--kd-map-shadow), 0 0 0 3px rgba(var(--base-color-rgb), 0.16);
}

/* --- Loading / Shimmer Placeholder --- */
.kd-map-container.kd-map-loading::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(
        110deg,
        rgba(0, 0, 0, 0.02) 0%,
        rgba(0, 0, 0, 0.02) 35%,
        rgba(0, 0, 0, 0.06) 50%,
        rgba(0, 0, 0, 0.02) 65%,
        rgba(0, 0, 0, 0.02) 100%
    );
    transform: translateX(-60%);
    animation: kd-shimmer-sweep 1.4s ease-in-out infinite;
    pointer-events: none;
    z-index: 2;
    opacity: 0.9;
}

.kd-map-container.kd-map-loading.kd-is-loaded::before {
    opacity: 0;
    animation: none;
}

@keyframes kd-shimmer-sweep {
    0% { transform: translateX(-60%); }
    100% { transform: translateX(60%); }
}

/* --- Tint Overlay --- */
.kd-map-container.kd-map-tint::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--kd-map-tint);
    pointer-events: none;
    z-index: 2;
}

/* --- Map Styles (Filters) --- */
.kd-map-style-grayscale {
    --kd-map-filter: grayscale(100%);
    --kd-map-filter-hover: grayscale(0%);
}

.kd-map-style-sepia {
    --kd-map-filter: sepia(60%) contrast(1.08) saturate(1.05);
    --kd-map-filter-hover: sepia(0%) contrast(1) saturate(1);
}

.kd-map-style-dark {
    --kd-map-filter: invert(92%) hue-rotate(180deg) saturate(80%) brightness(92%) contrast(108%);
    --kd-map-filter-hover: var(--kd-map-filter);
}

.kd-map-style-soft-contrast {
    --kd-map-filter: saturate(1.05) contrast(1.05);
    --kd-map-filter-hover: saturate(1.1) contrast(1.08);
}

.kd-map-style-brand-tint {
    --kd-map-tint: rgba(var(--base-color-rgb), 0.08);
}

/* --- Interaction Lock (Scroll Unlock) --- */
.kd-map-interaction-lock {
    cursor: pointer;
}

.kd-map-interaction-lock iframe {
    pointer-events: none;
}

.kd-map-interaction-lock.kd-is-active iframe,.kd-map-interaction-lock:focus-within iframe {
    pointer-events: auto;
}

.kd-map-unlock-btn {
    --kd-unlock-bg: rgba(var(--base-color-rgb), 0.95);
    --kd-unlock-color: var(--white);

    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: var(--kd-unlock-bg);
    color: var(--kd-unlock-color);
    padding: 12px 22px;
    border-radius: 999px;
    font-weight: 700;
    font-size: 0.9rem;
    letter-spacing: 0.2px;
    box-shadow: 0 14px 35px rgba(0, 0, 0, 0.22);
    cursor: pointer;
    z-index: 6;
    border: 1px solid rgba(255, 255, 255, 0.18);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    transition: opacity 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease, background-color 0.25s ease;
    user-select: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-map-unlock-btn:hover {
        transform: translate(-50%, -50%) scale(1.03);
        box-shadow: 0 18px 45px rgba(0, 0, 0, 0.28);
        background-color: rgba(var(--base-color-rgb), 1);
    }
}

.kd-map-unlock-btn:focus-visible {
    outline: none;
    box-shadow: 0 14px 35px rgba(0, 0, 0, 0.22), 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
}

.kd-map-interaction-lock.kd-is-active .kd-map-unlock-btn {
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, -50%) scale(0.98);
}

/* --- Overlay Info Box (Floating Card) --- */
.kd-map-overlay-box {
    --kd-map-overlay-bg: rgba(255, 255, 255, 0.96);
    --kd-map-overlay-radius: var(--radius-6);
    --kd-map-overlay-shadow: 0 18px 60px rgba(0, 0, 0, 0.16);
    --kd-map-overlay-border: 1px solid rgba(0, 0, 0, 0.08);

    position: absolute;
    top: 28px;
    left: 28px;
    width: min(360px, calc(100% - 56px));
    background-color: var(--kd-map-overlay-bg);
    border: var(--kd-map-overlay-border);
    padding: 24px;
    border-radius: var(--kd-map-overlay-radius);
    box-shadow: var(--kd-map-overlay-shadow);
    z-index: 5;
    pointer-events: auto;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.kd-map-overlay-box .kd-overlay-title {
    font-size: 1.15rem;
    font-weight: 800;
    margin: 0 0 8px 0;
    color: var(--dark-gray);
    line-height: 1.25;
}

.kd-map-overlay-box .kd-overlay-info {
    font-size: 0.95rem;
    line-height: 1.65;
    color: var(--medium-gray);
    margin: 0 0 14px 0;
}

.kd-map-overlay-box .kd-btn-link {
    font-size: 0.92rem;
    font-weight: 700;
    text-decoration: none;
}

.kd-map-overlay-right { left: auto; right: 28px; }
.kd-map-overlay-bottom { top: auto; bottom: 28px; }

@media (max-width: 991px) {
    .kd-map-overlay-box {
        top: auto;
        left: 0;
        right: 0;
        bottom: 0;
        width: auto;
        border-radius: 0 0 var(--kd-map-radius) var(--kd-map-radius);
        border-left: 0;
        border-right: 0;
        border-bottom: 0;
        box-shadow: none;
        padding: 18px 18px 20px 18px;
        background-color: rgba(255, 255, 255, 0.92);
    }

    .kd-map-overlay-right,
    .kd-map-overlay-bottom {
        right: 0;
        bottom: 0;
    }
}

.kd-map-overlay-outside .kd-map-overlay-box {
    position: static;
    width: 100%;
    max-width: none;
    margin-top: 16px;
    border-radius: var(--radius-6);
    box-shadow: 0 14px 50px rgba(0, 0, 0, 0.10);
}

/* --- Decorative Frames --- */
.kd-map-frame-offset {
    --kd-map-frame-offset: 18px;
    position: relative;
    z-index: 1;
}

.kd-map-frame-offset::before {
    content: "";
    position: absolute;
    inset: auto;
    top: var(--kd-map-frame-offset);
    left: var(--kd-map-frame-offset);
    width: 100%;
    height: 100%;
    border: 2px solid rgba(var(--base-color-rgb), 0.85);
    border-radius: var(--kd-map-radius);
    z-index: -1;
    pointer-events: none;
}

.kd-map-frame-glass {
    --kd-map-glass-padding: 14px;
    padding: var(--kd-map-glass-padding);
    background: rgba(255, 255, 255, 0.28);
    border-radius: calc(var(--kd-map-radius) + var(--kd-map-glass-padding));
    border: 1px solid rgba(255, 255, 255, 0.45);
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.10);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-map-frame-glass {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

.kd-map-frame-glass .kd-map-container {
    height: 100%;
    box-shadow: none;
}

.kd-map-frame-gradient {
    --kd-map-grad-pad: 2px;
    position: relative;
    padding: var(--kd-map-grad-pad);
    border-radius: calc(var(--kd-map-radius) + var(--kd-map-grad-pad));
    background: linear-gradient(135deg, rgba(var(--base-color-rgb), 0.95), rgba(var(--base-color-rgb), 0.25), var(--slate-blue, var(--base-color)));
}

.kd-map-frame-gradient .kd-map-container {
    border: 0;
    box-shadow: none;
}

/* --- Pins & Markers --- */
.kd-map-pins {
    position: absolute;
    inset: 0;
    z-index: 4;
    pointer-events: none;
}

.kd-map-pin {
    --kd-pin-x: 50%;
    --kd-pin-y: 50%;
    --kd-pin-size: 42px;
    --kd-pin-bg: var(--base-color);
    --kd-pin-border: 3px solid var(--white);
    --kd-pin-dot: var(--white);

    position: absolute;
    left: var(--kd-pin-x);
    top: var(--kd-pin-y);
    width: var(--kd-pin-size);
    height: var(--kd-pin-size);
    background-color: var(--kd-pin-bg);
    border: var(--kd-pin-border);
    border-radius: 50% 50% 50% 0;
    transform: translate(-50%, -100%) rotate(-45deg);
    box-shadow: 0 16px 30px rgba(0, 0, 0, 0.22);
    z-index: 1;
    pointer-events: none;
    will-change: transform;
}

.kd-map-pin::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc(var(--kd-pin-size) * 0.34);
    height: calc(var(--kd-pin-size) * 0.34);
    background-color: var(--kd-pin-dot);
    border-radius: 50%;
    transform: translate(-50%, -50%) rotate(45deg);
    opacity: 0.98;
}

.kd-map-pin-sm { --kd-pin-size: 34px; }
.kd-map-pin-lg { --kd-pin-size: 54px; }

.kd-map-pin-primary { --kd-pin-bg: var(--base-color); }
.kd-map-pin-success { --kd-pin-bg: var(--green); }
.kd-map-pin-danger  { --kd-pin-bg: var(--red); }
.kd-map-pin-dark    { --kd-pin-bg: var(--dark-gray); }
.kd-map-pin-light   { --kd-pin-bg: var(--white); --kd-pin-border: 3px solid rgba(0, 0, 0, 0.12); --kd-pin-dot: var(--dark-gray); }

.kd-map-pin.kd-is-interactive {
    pointer-events: auto;
    cursor: pointer;
}

.kd-map-pin-bounce {
    animation: kd-pin-bounce 2.1s ease-in-out infinite;
}

@keyframes kd-pin-bounce {
    0%, 100% { transform: translate(-50%, -100%) rotate(-45deg); }
    50% { transform: translate(-50%, -112%) rotate(-45deg); }
}

.kd-map-pin-pulse::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 120%;
    height: 120%;
    border-radius: 50%;
    background: rgba(var(--base-color-rgb), 0.25);
    transform: translate(-50%, -50%) rotate(45deg) scale(0.55);
    opacity: 0;
    animation: kd-pin-pulse 1.8s ease-out infinite;
}

@keyframes kd-pin-pulse {
    0% { opacity: 0.55; transform: translate(-50%, -50%) rotate(45deg) scale(0.55); }
    70% { opacity: 0; transform: translate(-50%, -50%) rotate(45deg) scale(1.55); }
    100% { opacity: 0; transform: translate(-50%, -50%) rotate(45deg) scale(1.55); }
}

.kd-map-pin-label {
    position: absolute;
    left: 50%;
    top: -10px;
    transform: translate(-50%, -100%) rotate(45deg);
    background-color: rgba(0, 0, 0, 0.72);
    color: var(--white);
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.3px;
    white-space: nowrap;
    pointer-events: none;
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.22);
}

.kd-map-pin-label-light {
    background-color: rgba(255, 255, 255, 0.92);
    color: var(--dark-gray);
    border: 1px solid rgba(0, 0, 0, 0.10);
}

.kd-map-cluster {
    --kd-cluster-x: 50%;
    --kd-cluster-y: 50%;
    --kd-cluster-size: 44px;

    position: absolute;
    left: var(--kd-cluster-x);
    top: var(--kd-cluster-y);
    width: var(--kd-cluster-size);
    height: var(--kd-cluster-size);
    transform: translate(-50%, -50%);
    border-radius: 50%;
    background-color: rgba(var(--base-color-rgb), 0.92);
    color: var(--white);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 13px;
    box-shadow: 0 16px 34px rgba(0, 0, 0, 0.22);
    pointer-events: none;
    z-index: 2;
}

.kd-map-cluster::after {
    content: "";
    position: absolute;
    inset: -8px;
    border-radius: 50%;
    border: 2px solid rgba(var(--base-color-rgb), 0.28);
}

/* --- Responsive --- */
@media (max-width: 991px) {
    .kd-map-container {
        --kd-map-height: 400px;
    }

    .kd-map-frame-offset::before {
        top: 12px;
        left: 12px;
    }
}

@media (max-width: 767px) {
    .kd-map-container {
        --kd-map-height: 300px;
    }

    .kd-map-unlock-btn {
        padding: 11px 18px;
        font-size: 0.85rem;
    }

    .kd-map-frame-offset::before {
        top: 10px;
        left: 10px;
    }
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-map-container,
    .kd-map-container iframe,
    .kd-map-unlock-btn,
    .kd-map-container.kd-map-loading::before,
    .kd-map-pin-bounce,
    .kd-map-pin-pulse::before {
        transition: none !important;
        animation: none !important;
        transform: none !important;
    }

    .kd-map-container:hover {
        transform: none;
    }
}

/* ===================================
    20. Headings & Typography Styles
====================================== */

:where(:root, .kd-typography-wrapper) {
    --kd-type-color: var(--dark-gray);
    --kd-type-muted: var(--medium-gray);
    --kd-type-accent: var(--base-color);
    --kd-type-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    --kd-heading-font: var(--secondary-font, var(--primary-font, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif));
    --kd-body-font: var(--primary-font, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif);

    --kd-h1-size: clamp(2.5rem, 2rem + 2.5vw, 4rem);
    --kd-h2-size: clamp(2rem, 1.8rem + 1.8vw, 3rem);
    --kd-h3-size: clamp(1.75rem, 1.5rem + 1.2vw, 2.25rem);
    --kd-h4-size: clamp(1.5rem, 1.3rem + 0.8vw, 1.75rem);
    --kd-h5-size: clamp(1.25rem, 1.1rem + 0.5vw, 1.5rem);
    --kd-h6-size: clamp(1rem, 0.95rem + 0.2vw, 1.1rem);

    --kd-heading-lh: 1.2;
    --kd-heading-mb: 0.75em;
    --kd-heading-ls: -0.02em;
    --kd-heading-ls-strong: -0.03em;
}

.kd-typography-wrapper {
    color: var(--kd-type-color);
    font-family: var(--kd-body-font);
}

:where(h1, h2, h3, h4, h5, h6, .kd-heading-base) {
    font-family: var(--kd-heading-font);
    color: var(--kd-type-color);
    font-weight: 700;
    line-height: var(--kd-heading-lh);
    margin: 0 0 var(--kd-heading-mb) 0;
    letter-spacing: var(--kd-heading-ls);
}

@supports (text-wrap: balance) {
    :where(h1, h2, h3, h4, h5, h6, .kd-heading-base) {
        text-wrap: balance;
    }
}

h1,.kd-h1 { font-size: var(--kd-h1-size); font-weight: 900; letter-spacing: var(--kd-heading-ls-strong); line-height: 1.06; }
h2,.kd-h2 { font-size: var(--kd-h2-size); font-weight: 900; letter-spacing: var(--kd-heading-ls); line-height: 1.12; }
h3,.kd-h3 { font-size: var(--kd-h3-size); font-weight: 800; }
h4,.kd-h4 { font-size: var(--kd-h4-size); font-weight: 800; }
h5,.kd-h5 { font-size: var(--kd-h5-size); font-weight: 800; }
h6,.kd-h6 { font-size: var(--kd-h6-size); text-transform: uppercase; letter-spacing: 0.08em; font-weight: 900; }

.kd-lead-text {
    font-size: clamp(1.1rem, 1rem + 0.35vw, 1.35rem);
    line-height: 1.65;
    color: var(--kd-type-muted);
    font-weight: 400;
    max-width: 65ch;
}

@supports (text-wrap: pretty) {
    .kd-lead-text { text-wrap: pretty; }
}

/* --- Style 01: Side Line --- */
.kd-heading-style-01 {
    position: relative;
    padding-left: 20px;
}

.kd-heading-style-01::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.18em;
    bottom: 0.14em;
    width: 4px;
    background-color: var(--kd-type-accent);
    border-radius: 999px;
}

.kd-heading-style-01.kd-gradient-line::before {
    background: linear-gradient(to bottom, var(--kd-type-accent), var(--slate-blue));
}

/* --- Style 02: Underline Animated --- */
.kd-heading-style-02 {
    --kd-underline-h: 3px;
    --kd-underline-scale: 0.22;

    display: inline-block;
    position: relative;
    padding-bottom: 0.35em;
    margin-bottom: 1em;
    isolation: isolate;
}

.kd-heading-style-02::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0.15em;
    width: 100%;
    height: var(--kd-underline-h);
    background-color: var(--kd-type-accent);
    border-radius: 999px;
    transform: scaleX(var(--kd-underline-scale));
    transform-origin: left center;
    transition: transform 0.45s var(--kd-type-ease);
}

.kd-heading-style-02.kd-underline-center::after {
    transform-origin: center;
}

.kd-content-slider-item:hover .kd-heading-style-02::after,.kd-fancy-box:hover .kd-heading-style-02::after,.kd-heading-style-02:hover::after,.kd-heading-underline-parent:hover .kd-heading-style-02::after {
    transform: scaleX(1);
}

/* --- Style 03: Gradient Text --- */
.kd-heading-style-03 {
    display: inline-block;
    background: linear-gradient(135deg, var(--kd-type-color) 0%, var(--kd-type-accent) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}

.kd-heading-style-03.kd-text-vibrant {
    background: linear-gradient(to right, #30CFD0 0%, #330867 100%);
    -webkit-background-clip: text;
    background-clip: text;
}

/* --- Style 04: Stroke Outline --- */
.kd-heading-style-04 {
    letter-spacing: 0.02em;
}

@supports (-webkit-text-stroke: 1px #000) {
    .kd-heading-style-04 {
        color: transparent;
        -webkit-text-stroke: 1px var(--kd-type-color);
    }

    .kd-heading-style-04.kd-text-light-stroke {
        -webkit-text-stroke: 1px rgba(255, 255, 255, 0.45);
    }
}

.kd-heading-style-04.kd-hover-fill {
    transition: color 0.4s ease;
}

.kd-heading-style-04.kd-hover-fill:hover {
    color: var(--kd-type-color);
}

/* --- Style 05: Highlight Marker --- */
.kd-heading-style-05 {
    display: inline;
    background-image: linear-gradient(to right, rgba(var(--base-color-rgb), 0.25) 0%, rgba(var(--base-color-rgb), 0.25) 100%);
    background-size: 100% 35%;
    background-position: 0 85%;
    background-repeat: no-repeat;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
}

/* --- Style 06: Section Label --- */
.kd-heading-label {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 0.85rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    color: var(--kd-type-accent);
    margin: 0 0 15px 0;
}

.kd-heading-label::before {
    content: "";
    width: 40px;
    height: 1px;
    background-color: currentColor;
    opacity: 0.9;
}

.kd-heading-label.kd-line-after::before { display: none; }

.kd-heading-label.kd-line-after::after {
    content: "";
    width: 40px;
    height: 1px;
    background-color: currentColor;
    opacity: 0.9;
}

/* --- Style 07: Watermark Background --- */
.kd-heading-watermark-wrapper {
    position: relative;
    padding-top: 1.5rem;
    z-index: 1;
}

.kd-heading-watermark-bg {
    position: absolute;
    top: -20px;
    left: -20px;
    font-size: clamp(3.5rem, 2.5rem + 3vw, 6rem);
    font-weight: 950;
    color: rgba(0, 0, 0, 0.04);
    line-height: 1;
    z-index: -1;
    white-space: nowrap;
    user-select: none;
    pointer-events: none;
}

/* --- Style 08: Image Mask Text --- */
.kd-heading-style-08 {
    --kd-mask-image: url("../images/texture.jpg");

    display: inline-block;
    background-image: var(--kd-mask-image);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
    font-weight: 950;
    filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.10));
}

.kd-heading-style-08.kd-animated-gradient {
    background-image: linear-gradient(-45deg, var(--base-color), #ee7752, #e73c7e, #23a6d5, var(--base-color));
    background-size: 300%;
    animation: kd-text-gradient 6s ease infinite;
}

@keyframes kd-text-gradient {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

/* --- Style 09: Decorative Dots --- */
.kd-heading-style-09 {
    text-align: center;
    position: relative;
    padding-bottom: 25px;
}

.kd-heading-style-09::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: var(--kd-type-accent);
    box-shadow:
        -14px 0 0 rgba(var(--base-color-rgb), 0.4),
        14px 0 0 rgba(var(--base-color-rgb), 0.4);
}

/* --- Style 10: Double Border --- */
.kd-heading-style-10 {
    display: inline-block;
    border-top: 1px solid rgba(0, 0, 0, 0.28);
    border-bottom: 1px solid rgba(0, 0, 0, 0.28);
    padding: 10px 0;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-weight: 700;
    font-size: clamp(1rem, 0.9rem + 0.5vw, 1.5rem);
}

/* --- Style 11: Brutalist Box --- */
.kd-heading-style-11 {
    display: inline-block;
    background-color: var(--kd-type-color);
    color: var(--white);
    padding: 6px 16px;
    box-shadow: 6px 6px 0px var(--kd-type-accent);
    transform: skewX(-5deg);
    margin-left: 6px;
}

.kd-heading-style-11 span {
    display: block;
    transform: skewX(5deg);
}

/* --- Style 12: Glitch Effect --- */
.kd-heading-style-12 {
    position: relative;
    color: var(--kd-type-color);
    display: inline-block;
    isolation: isolate;
}

.kd-heading-style-12::before,.kd-heading-style-12::after {
    content: attr(data-text);
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0.9;
}

.kd-heading-style-12::before {
    transform: translateX(2px);
    text-shadow: -1px 0 #ff00c1;
    clip-path: inset(44% 0 61% 0);
    animation: kd-glitch-anim-1 2.5s infinite linear alternate-reverse;
}

.kd-heading-style-12::after {
    transform: translateX(-2px);
    text-shadow: -1px 0 #00fff9;
    clip-path: inset(58% 0 43% 0);
    animation: kd-glitch-anim-2 3s infinite linear alternate-reverse;
}

@keyframes kd-glitch-anim-1 {
    0% { clip-path: inset(20% 0 80% 0); }
    20% { clip-path: inset(60% 0 10% 0); }
    40% { clip-path: inset(40% 0 50% 0); }
    60% { clip-path: inset(80% 0 5% 0); }
    80% { clip-path: inset(10% 0 70% 0); }
    100% { clip-path: inset(30% 0 20% 0); }
}

@keyframes kd-glitch-anim-2 {
    0% { clip-path: inset(10% 0 60% 0); }
    20% { clip-path: inset(80% 0 5% 0); }
    40% { clip-path: inset(30% 0 20% 0); }
    60% { clip-path: inset(10% 0 80% 0); }
    80% { clip-path: inset(50% 0 30% 0); }
    100% { clip-path: inset(70% 0 10% 0); }
}

/* --- Style 13: Elegant Mix --- */
.kd-heading-style-13 {
    font-weight: 900;
    line-height: 1.1;
}

.kd-heading-style-13 .kd-font-serif {
    font-family: var(--kd-serif-font, "Playfair Display", serif);
    font-weight: 500;
    font-style: italic;
    color: var(--kd-type-accent);
    display: block;
    font-size: 0.85em;
    margin: 0 0 6px 0;
}

/* --- Style 14: Vertical Side Text --- */
.kd-heading-style-14-wrapper {
    display: flex;
    align-items: center;
    gap: 20px;
}

.kd-heading-style-14-side {
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--kd-type-accent);
    border-left: 2px solid currentColor;
    padding-left: 10px;
    align-self: stretch;
    display: inline-flex;
    justify-content: center;
}

/* --- Style 15: Background Box Inline --- */
.kd-heading-style-15 span {
    background-color: rgba(var(--base-color-rgb), 0.15);
    padding: 0 8px;
    border-radius: 6px;
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
    color: var(--base-color);
}

/* --- Style 16: Half Underline --- */
.kd-heading-style-16 {
    position: relative;
    display: inline-block;
    z-index: 0;
}

.kd-heading-style-16::after {
    content: "";
    position: absolute;
    right: -10px;
    bottom: 0.18em;
    width: 42%;
    height: 0.42em;
    background-color: var(--kd-type-accent);
    opacity: 0.22;
    z-index: -1;
    border-radius: 999px;
    transition: width 0.45s var(--kd-type-ease);
}

.kd-heading-style-16:hover::after {
    width: 105%;
}

/* --- Dropcaps --- */


/* --- Lists (Checkmarks) --- */
.kd-list-style-01 {
    list-style: none;
    padding: 0;
    margin: 0;
}

.kd-list-style-01 li {
    position: relative;
    padding-left: 28px;
    margin-bottom: 12px;
    color: var(--kd-type-muted);
}

.kd-list-style-01 li::before {
    content: "";
    font-family: "bootstrap-icons";
    position: absolute;
    left: 0;
    top: 2px;
    color: var(--kd-type-accent);
    font-size: 1.1em;
}

.kd-list-style-02 {
    list-style: none;
    padding: 0;
    margin: 0;
}

.kd-list-style-02 li {
    position: relative;
    padding-left: 20px;
    margin-bottom: 10px;
    color: var(--kd-type-muted);
}

.kd-list-style-02 li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.7em;
    width: 8px;
    height: 2px;
    background-color: var(--kd-type-accent);
    border-radius: 999px;
}

/* --- Typography Utilities --- */
.kd-display-1 { font-size: clamp(3.5rem, 3rem + 3.5vw, 6rem); line-height: 1; font-weight: 900; letter-spacing: -0.04em; }
.kd-display-2 { font-size: clamp(3rem, 2.5rem + 3vw, 5rem); line-height: 1.06; font-weight: 900; letter-spacing: -0.03em; }
.kd-display-3 { font-size: clamp(2.5rem, 2rem + 2.5vw, 4rem); line-height: 1.12; font-weight: 800; letter-spacing: -0.02em; }


.kd-ls-sm { letter-spacing: -0.02em; }
.kd-ls-md { letter-spacing: 0.05em; }
.kd-ls-lg { letter-spacing: 0.15em; }
.kd-ls-xl { letter-spacing: 0.25em; }

.kd-text-gradient-primary {
    background: linear-gradient(135deg, var(--base-color), #23a6d5);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}

.kd-text-stroke-white { color: rgba(255, 255, 255, 0.95); }
.kd-text-stroke-dark { color: rgba(0, 0, 0, 0.92); }

@supports (-webkit-text-stroke: 1px #000) {
    .kd-text-stroke-white { color: transparent; -webkit-text-stroke: 1px rgba(255, 255, 255, 0.8); }
    .kd-text-stroke-dark { color: transparent; -webkit-text-stroke: 1px rgba(0, 0, 0, 0.75); }
}

@supports (text-wrap: balance) {
    .kd-text-balance { text-wrap: balance; }
}

@supports (text-wrap: pretty) {
    .kd-text-pretty { text-wrap: pretty; }
}

/* --- Selection --- */


/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-heading-style-08.kd-animated-gradient,
    .kd-heading-style-12::before,
    .kd-heading-style-12::after {
        animation: none !important;
    }
}

/* ===================================
    21. Horizontal Lists & Inline Groups
====================================== */

.kd-list-group-wrapper {
    --kd-list-gap-x: 14px;
    --kd-list-gap-y: 10px;
    --kd-list-font-size: 0.95rem;
    --kd-list-color: var(--medium-gray);
    --kd-list-link-color: var(--dark-gray);
    --kd-list-link-hover: var(--base-color);
    --kd-list-icon-color: var(--base-color);
    --kd-list-border-color: rgba(0, 0, 0, 0.10);
    --kd-list-radius: var(--radius-6);
    --kd-list-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-list-focus-ring: 0 0 0 3px rgba(var(--base-color-rgb), 0.18);
}

.kd-list-inline {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--kd-list-gap-y) var(--kd-list-gap-x);
    padding: 0;
    margin: 0;
    list-style: none;
}

.kd-list-inline > li {
    display: inline-flex;
    align-items: center;
    min-width: 0;
    font-size: var(--kd-list-font-size);
    color: var(--kd-list-color);
    line-height: 1.25;
}

.kd-list-inline > li a {
    color: var(--kd-list-link-color);
    text-decoration: none;
    transition: color 0.2s var(--kd-list-ease);
}

.kd-list-inline > li a:hover {
    color: var(--kd-list-link-hover);
}

.kd-list-inline > li a:focus-visible {
    outline: none;
    box-shadow: var(--kd-list-focus-ring);
    border-radius: 6px;
}

.kd-list-inline > li :where(i, svg, .kd-icon) {
    color: var(--kd-list-icon-color);
    margin-right: 0.45rem;
    font-size: 1.1em;
    flex-shrink: 0;
    transition: color 0.2s var(--kd-list-ease);
}

.kd-list-inline :where(svg) {
    width: 1em;
    height: 1em;
    display: inline-block;
}

/* --- Style 01: Meta Data Separated --- */
.kd-list-inline.kd-list-separated {
    --kd-divider-opacity: 0.32;
}

.kd-list-inline.kd-list-separated > li:not(:last-child)::after {
    content: "";
    display: inline-block;
    width: 1px;
    height: 0.9em;
    background-color: currentColor;
    opacity: var(--kd-divider-opacity);
    margin-left: var(--kd-list-gap-x);
    margin-right: 0;
    border-radius: 999px;
}

.kd-list-inline.kd-list-separated-dot > li:not(:last-child)::after {
    content: "•";
    width: auto;
    height: auto;
    background: transparent;
    opacity: 0.55;
    margin-left: var(--kd-list-gap-x);
    transform: translateY(-0.02em);
}

.kd-list-inline.kd-list-separated-slash > li:not(:last-child)::after {
    content: "/";
    width: auto;
    height: auto;
    background: transparent;
    opacity: 0.45;
    margin-left: var(--kd-list-gap-x);
}

.kd-list-inline.kd-list-separated-pipe > li:not(:last-child)::after {
    content: "";
    width: 1px;
    height: 0.95em;
    background-color: currentColor;
    opacity: 0.28;
    margin-left: var(--kd-list-gap-x);
}

/* --- Style 02: Social Icons --- */
.kd-list-inline-social {
    --kd-social-size: 40px;
    --kd-social-bg: rgba(0, 0, 0, 0.04);
    --kd-social-color: var(--dark-gray);
    --kd-social-hover-bg: var(--base-color);
    --kd-social-hover-color: var(--white);
    --kd-social-radius: 999px;
    --kd-social-border: 1px solid transparent;
    --kd-social-shadow: none;
    --kd-social-hover-shadow: 0 10px 25px rgba(var(--base-color-rgb), 0.28);
    --kd-list-gap-x: 10px;
}

.kd-list-inline-social > li {
    margin: 0;
}

.kd-list-inline-social > li a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--kd-social-size);
    height: var(--kd-social-size);
    border-radius: var(--kd-social-radius);
    background-color: var(--kd-social-bg);
    color: var(--kd-social-color);
    border: var(--kd-social-border);
    box-shadow: var(--kd-social-shadow);
    transition: transform 0.3s var(--kd-list-ease), background-color 0.3s var(--kd-list-ease), color 0.3s var(--kd-list-ease), box-shadow 0.3s var(--kd-list-ease), border-color 0.3s var(--kd-list-ease);
    -webkit-tap-highlight-color: transparent;
}

.kd-list-inline-social > li a :where(i, svg, .kd-icon) {
    margin: 0;
    color: inherit;
    font-size: 1.05em;
}

.kd-list-inline-social > li a:hover {
    background-color: var(--kd-social-hover-bg);
    color: var(--kd-social-hover-color);
    transform: translateY(-3px);
    box-shadow: var(--kd-social-hover-shadow);
}

.kd-list-inline-social > li a:focus-visible {
    outline: none;
    box-shadow: var(--kd-list-focus-ring);
}

.kd-list-inline-social.kd-social-square { --kd-social-radius: var(--radius-4); }

.kd-list-inline-social.kd-social-outline {
    --kd-social-bg: transparent;
    --kd-social-border: 1px solid var(--kd-list-border-color);
    --kd-social-shadow: none;
}

.kd-list-inline-social.kd-social-outline > li a:hover {
    border-color: rgba(var(--base-color-rgb), 0.55);
    background-color: rgba(var(--base-color-rgb), 0.08);
    color: var(--base-color);
    box-shadow: none;
}

.kd-list-inline-social.kd-social-glass {
    --kd-social-bg: rgba(255, 255, 255, 0.14);
    --kd-social-border: 1px solid rgba(255, 255, 255, 0.22);
    --kd-social-color: var(--white);
    --kd-social-hover-bg: rgba(255, 255, 255, 0.22);
    --kd-social-hover-color: var(--white);
    --kd-social-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-list-inline-social.kd-social-glass > li a {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

.kd-list-inline-social.kd-social-sm { --kd-social-size: 32px; }
.kd-list-inline-social.kd-social-lg { --kd-social-size: 52px; }

/* --- Style 03: Tags & Categories --- */
.kd-list-inline-tags {
    --kd-tag-bg: var(--white);
    --kd-tag-color: var(--medium-gray);
    --kd-tag-border: 1px solid var(--kd-list-border-color);
    --kd-tag-radius: 999px;
    --kd-tag-shadow: none;
    --kd-tag-hover-bg: rgba(var(--base-color-rgb), 0.08);
    --kd-tag-hover-border: rgba(var(--base-color-rgb), 0.45);
    --kd-tag-hover-color: var(--base-color);
    --kd-tag-pad-y: 0.42rem;
    --kd-tag-pad-x: 0.95rem;
    --kd-tag-size: 0.75rem;
    --kd-list-gap-x: 8px;
    --kd-list-gap-y: 8px;
}

.kd-list-inline-tags > li a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--kd-tag-pad-y) var(--kd-tag-pad-x);
    background-color: var(--kd-tag-bg);
    color: var(--kd-tag-color);
    border: var(--kd-tag-border);
    border-radius: var(--kd-tag-radius);
    font-size: var(--kd-tag-size);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    box-shadow: var(--kd-tag-shadow);
    transition: transform 0.2s var(--kd-list-ease), background-color 0.2s var(--kd-list-ease), border-color 0.2s var(--kd-list-ease), color 0.2s var(--kd-list-ease);
    -webkit-tap-highlight-color: transparent;
}

.kd-list-inline-tags > li a:hover {
    background-color: var(--kd-tag-hover-bg);
    border-color: var(--kd-tag-hover-border);
    color: var(--kd-tag-hover-color);
    transform: translateY(-1px);
}

.kd-list-inline-tags > li a:focus-visible {
    outline: none;
    box-shadow: var(--kd-list-focus-ring);
}

.kd-list-inline-tags.kd-list-tags-filled {
    --kd-tag-bg: var(--very-light-gray);
    --kd-tag-border: 1px solid transparent;
    --kd-tag-shadow: none;
}

.kd-list-inline-tags.kd-list-tags-filled > li a:hover {
    background-color: var(--base-color);
    border-color: var(--base-color);
    color: var(--white);
}

/* --- Style 04: Breadcrumbs & Steps --- */
.kd-list-inline-steps {
    --kd-step-chevron-opacity: 0.4;
    --kd-step-active-color: var(--base-color);
    --kd-step-inactive-color: var(--medium-gray);

    --kd-list-gap-x: 0;
    counter-reset: kd-step;
}

.kd-list-inline-steps > li {
    position: relative;
    padding-left: 18px;
    padding-right: 12px;
    color: var(--kd-step-inactive-color);
    font-weight: 700;
}

.kd-list-inline-steps > li:first-child { padding-left: 0; }

.kd-list-inline-steps > li:not(:last-child)::after {
    content: "";
    font-family: "bootstrap-icons";
    position: absolute;
    right: -6px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.72em;
    opacity: var(--kd-step-chevron-opacity);
}

.kd-list-inline-steps > li :where(a) {
    color: inherit;
}

.kd-list-inline-steps > li.active,.kd-list-inline-steps > li a.active {
    color: var(--kd-step-active-color);
    pointer-events: none;
}

.kd-list-inline-steps.kd-steps-numbered > li {
    counter-increment: kd-step;
    padding-left: 26px;
}

.kd-list-inline-steps.kd-steps-numbered > li::before {
    content: counter(kd-step) ".";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    font-variant-numeric: tabular-nums;
    font-weight: 900;
    color: currentColor;
    opacity: 0.7;
}

.kd-list-inline-steps.kd-steps-pill > li {
    padding: 6px 12px;
    border-radius: 999px;
    background-color: rgba(0, 0, 0, 0.03);
    margin-right: 10px;
}

.kd-list-inline-steps.kd-steps-pill > li:not(:last-child)::after {
    display: none;
}

.kd-list-inline-steps.kd-steps-pill > li.active {
    background-color: rgba(var(--base-color-rgb), 0.12);
    color: var(--base-color);
}

/* --- Style 05: Data Rows --- */
.kd-list-row-layout {
    --kd-row-bg: var(--white);
    --kd-row-hover: var(--very-light-gray);
    --kd-row-border: var(--kd-list-border-color);
    --kd-row-radius: var(--radius-6);
    --kd-row-pad-y: 14px;
    --kd-row-pad-x: 18px;
    --kd-row-gap: 18px;

    display: flex;
    flex-direction: column;
    width: 100%;
    padding: 0;
    margin: 0;
    list-style: none;
    background-color: var(--kd-row-bg);
    border: 1px solid var(--kd-row-border);
    border-radius: var(--kd-row-radius);
    overflow: hidden;
}

.kd-list-row-item {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: var(--kd-row-gap);
    padding: var(--kd-row-pad-y) var(--kd-row-pad-x);
    background-color: transparent;
    border-bottom: 1px solid var(--kd-row-border);
    transition: background-color 0.2s var(--kd-list-ease), transform 0.25s var(--kd-list-ease);
}

.kd-list-row-item:last-child {
    border-bottom: none;
}

.kd-list-row-item:hover {
    background-color: var(--kd-row-hover);
}

.kd-list-row-item:focus-within {
    background-color: rgba(var(--base-color-rgb), 0.06);
}

.kd-list-row-item :where(a):focus-visible {
    outline: none;
    box-shadow: var(--kd-list-focus-ring);
    border-radius: 8px;
}

.kd-list-col-start {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 30px;
    color: var(--medium-gray);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.kd-list-col-main {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.kd-list-col-end {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    text-align: right;
    color: var(--medium-gray);
    font-size: 0.9rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.kd-list-row-layout.kd-list-row-card {
    background-color: transparent;
    border: 0;
    border-radius: 0;
    overflow: visible;
    gap: 10px;
}

.kd-list-row-layout.kd-list-row-card .kd-list-row-item {
    background-color: var(--white);
    border: 1px solid var(--kd-list-border-color);
    border-radius: var(--radius-6);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.04);
    border-bottom: 1px solid var(--kd-list-border-color);
}

@media (hover: hover) and (pointer: fine) {
    .kd-list-row-layout.kd-list-row-card .kd-list-row-item:hover {
        transform: translateY(-2px);
        box-shadow: 0 18px 45px rgba(0, 0, 0, 0.08);
        background-color: var(--white);
    }
}

/* --- Style 05A: Song List --- */
.kd-list-row-song .kd-list-col-start {
    position: relative;
    width: 30px;
}

.kd-list-row-song .kd-list-num {
    opacity: 1;
    transition: opacity 0.2s var(--kd-list-ease);
}

.kd-list-row-song .kd-list-icon-hover {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    opacity: 0;
    transition: opacity 0.2s var(--kd-list-ease);
    font-size: 1.2rem;
    color: var(--base-color);
}

.kd-list-row-song .kd-list-row-item:hover .kd-list-num { opacity: 0; }
.kd-list-row-song .kd-list-row-item:hover .kd-list-icon-hover { opacity: 1; }

.kd-list-row-song .kd-song-title {
    font-weight: 800;
    color: var(--dark-gray);
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.kd-list-row-song .kd-song-artist {
    font-size: 0.85rem;
    color: var(--medium-gray);
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.kd-list-row-song .kd-btn-action {
    opacity: 0;
    transition: opacity 0.2s var(--kd-list-ease), color 0.2s var(--kd-list-ease);
    color: var(--medium-gray);
    cursor: pointer;
    background: none;
    border: none;
    padding: 6px;
    border-radius: 8px;
    -webkit-tap-highlight-color: transparent;
}

.kd-list-row-song .kd-list-row-item:hover .kd-btn-action { opacity: 1; }
.kd-list-row-song .kd-btn-action:hover { color: var(--base-color); }
.kd-list-row-song .kd-btn-action:focus-visible { outline: none; box-shadow: var(--kd-list-focus-ring); }

/* --- Style 05B: Data Rows (File Manager) --- */
.kd-list-row-data .kd-list-row-item {
    grid-template-columns: 44px 2fr 1fr auto;
    gap: 18px;
}

.kd-list-row-data .kd-file-icon {
    width: 44px;
    height: 44px;
    background-color: rgba(var(--base-color-rgb), 0.08);
    color: var(--base-color);
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    flex-shrink: 0;
}

.kd-list-row-data .kd-list-col-date {
    color: var(--medium-gray);
    font-size: 0.9rem;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

/* --- Style 06: Dot Leaders Menu --- */
.kd-list-menu-layout {
    --kd-menu-gap: 14px;
    --kd-menu-dot-color: rgba(0, 0, 0, 0.18);
    --kd-menu-dot-size: 2px;
    --kd-menu-dot-gap: 7px;

    display: flex;
    flex-direction: column;
    gap: var(--kd-menu-gap);
    padding: 0;
    margin: 0;
    list-style: none;
}

.kd-list-menu-item {
    display: flex;
    align-items: baseline;
    width: 100%;
    min-width: 0;
}

.kd-list-menu-title {
    font-weight: 800;
    color: var(--dark-gray);
    flex-shrink: 0;
    padding-right: 8px;
}

.kd-list-menu-dots {
    flex: 1 1 auto;
    min-width: 0;
    height: 1em;
    background-image: radial-gradient(circle, var(--kd-menu-dot-color) var(--kd-menu-dot-size), transparent calc(var(--kd-menu-dot-size) + 0.5px));
    background-size: var(--kd-menu-dot-gap) 2px;
    background-repeat: repeat-x;
    background-position: left calc(100% - 0.15em);
    opacity: 1;
}

.kd-list-menu-price {
    font-weight: 900;
    color: var(--base-color);
    flex-shrink: 0;
    padding-left: 8px;
    font-variant-numeric: tabular-nums;
}

/* --- Style 07: Avatar Group --- */
.kd-list-avatar-group {
    --kd-avatar-size: 40px;
    --kd-avatar-border: 3px solid var(--white);
    --kd-avatar-overlap: 10px;

    display: inline-flex;
    align-items: center;
    padding: 0 0 0 var(--kd-avatar-overlap);
    margin: 0;
    list-style: none;
}

.kd-list-avatar-group > li {
    margin-left: calc(var(--kd-avatar-overlap) * -1);
    position: relative;
    z-index: 1;
    transition: transform 0.2s var(--kd-list-ease);
}

.kd-list-avatar-group > li:hover {
    transform: translateY(-4px);
    z-index: 10;
}

.kd-list-avatar-group :where(a) {
    display: inline-flex;
    border-radius: 999px;
}

.kd-list-avatar-group :where(a):focus-visible {
    outline: none;
    box-shadow: var(--kd-list-focus-ring);
}

.kd-list-avatar-group img {
    width: var(--kd-avatar-size);
    height: var(--kd-avatar-size);
    border-radius: 999px;
    border: var(--kd-avatar-border);
    object-fit: cover;
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.10);
    display: block;
}

.kd-list-avatar-more {
    width: var(--kd-avatar-size);
    height: var(--kd-avatar-size);
    border-radius: 999px;
    background-color: var(--very-light-gray);
    color: var(--dark-gray);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.75rem;
    font-weight: 900;
    border: var(--kd-avatar-border);
    text-decoration: none;
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08);
}

/* --- Responsive --- */
@media (max-width: 767px) {
    .kd-list-row-data .kd-list-row-item {
        grid-template-columns: 44px 1fr auto;
    }

    .kd-list-row-data .kd-list-col-date {
        display: none;
    }

    .kd-list-row-song .kd-list-row-item {
        grid-template-columns: 30px 1fr auto;
        gap: 10px;
        padding: 12px 14px;
    }

    .kd-list-row-song .kd-song-duration {
        display: none;
    }

    .kd-list-row-song .kd-btn-action {
        opacity: 1;
    }

    .kd-list-inline.kd-list-separated {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
    }

    .kd-list-inline.kd-list-separated > li:not(:last-child)::after {
        display: none;
    }
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-list-inline > li a,
    .kd-list-inline-social > li a,
    .kd-list-inline-tags > li a,
    .kd-list-row-item,
    .kd-list-row-layout.kd-list-row-card .kd-list-row-item,
    .kd-list-row-song .kd-list-num,
    .kd-list-row-song .kd-list-icon-hover,
    .kd-list-row-song .kd-btn-action,
    .kd-list-avatar-group > li {
        transition: none !important;
    }

    .kd-list-inline-social > li a:hover,
    .kd-list-row-layout.kd-list-row-card .kd-list-row-item:hover,
    .kd-list-avatar-group > li:hover {
        transform: none !important;
    }
}

/* ===================================
    22. Icon Boxes & Feature Columns
====================================== */

/* --- Base Icon Box --- */
.kd-icon-box {
    --kd-ib-bg: var(--white);
    --kd-ib-color: var(--medium-gray);
    --kd-ib-title-color: var(--dark-gray);
    --kd-ib-icon-color: var(--base-color);
    --kd-ib-icon-bg: rgba(var(--base-color-rgb), 0.08);

    --kd-ib-padding: 30px;
    --kd-ib-radius: var(--radius-6);
    --kd-ib-gap: 16px;

    --kd-ib-border: 1px solid rgba(0, 0, 0, 0.08);
    --kd-ib-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
    --kd-ib-hover-shadow: 0 22px 55px rgba(0, 0, 0, 0.12);

    --kd-ib-icon-size: 3.25rem;
    --kd-ib-icon-box-size: 80px;

    --kd-ib-hover-lift: -8px;
    --kd-ib-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-ib-transition: transform 0.35s var(--kd-ib-ease), box-shadow 0.35s var(--kd-ib-ease), border-color 0.35s var(--kd-ib-ease), background-color 0.35s var(--kd-ib-ease);
    --kd-ib-focus-ring: 0 0 0 3px rgba(var(--base-color-rgb), 0.18);

    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--kd-ib-gap);
    background-color: var(--kd-ib-bg);
    color: var(--kd-ib-color);
    padding: var(--kd-ib-padding);
    border-radius: var(--kd-ib-radius);
    border: var(--kd-ib-border);
    box-shadow: var(--kd-ib-shadow);
    transition: var(--kd-ib-transition);
    height: 100%;
    overflow: hidden;
    isolation: isolate;
}

a.kd-icon-box {
    text-decoration: none;
    color: inherit;
    -webkit-tap-highlight-color: transparent;
}

.kd-icon-box > * {
    position: relative;
    z-index: 2;
}

.kd-icon-box:focus-within {
    border-color: rgba(var(--base-color-rgb), 0.35);
    box-shadow: var(--kd-ib-shadow), var(--kd-ib-focus-ring);
}

@media (hover: hover) and (pointer: fine) {
    .kd-icon-box:hover {
        transform: translateY(var(--kd-ib-hover-lift));
        box-shadow: var(--kd-ib-hover-shadow);
        border-color: rgba(0, 0, 0, 0.10);
    }
}

/* --- Elements --- */
.kd-icon-box-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--kd-ib-icon-color);
    font-size: var(--kd-ib-icon-size);
    line-height: 1;
    flex-shrink: 0;
    transition: transform 0.35s var(--kd-ib-ease), color 0.35s var(--kd-ib-ease), background-color 0.35s var(--kd-ib-ease), box-shadow 0.35s var(--kd-ib-ease);
}

.kd-icon-box-title {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 900;
    color: var(--kd-ib-title-color);
    line-height: 1.25;
}

.kd-icon-box-title a {
    color: inherit;
    text-decoration: none;
}

.kd-icon-box-title a:focus-visible {
    outline: none;
    box-shadow: var(--kd-ib-focus-ring);
    border-radius: 8px;
}

.kd-icon-box-text {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.65;
    color: var(--kd-ib-color);
}

.kd-icon-box-btn {
    margin-top: auto;
    font-weight: 800;
    font-size: 0.9rem;
    color: var(--kd-ib-title-color);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    transition: transform 0.25s var(--kd-ib-ease), color 0.25s var(--kd-ib-ease);
    -webkit-tap-highlight-color: transparent;
}

.kd-icon-box-btn i {
    font-size: 0.85em;
    transition: transform 0.25s var(--kd-ib-ease);
}

.kd-icon-box-btn:hover {
    color: var(--base-color);
    transform: translateY(-1px);
}

.kd-icon-box-btn:hover i {
    transform: translateX(4px);
}

.kd-icon-box-btn:focus-visible {
    outline: none;
    box-shadow: var(--kd-ib-focus-ring);
    border-radius: 10px;
}

.kd-icon-box :where(a:not(.kd-icon-box-link-overlay), button, .kd-btn, input, select, textarea) {
    position: relative;
    z-index: 4;
}

.kd-icon-box-link-overlay {
    position: absolute;
    inset: 0;
    z-index: 3;
    border-radius: inherit;
    -webkit-tap-highlight-color: transparent;
}

.kd-icon-box-link-overlay:focus-visible {
    outline: none;
    box-shadow: var(--kd-ib-focus-ring);
}

/* --- Layout Variants --- */
.kd-icon-box-center {
    align-items: center;
    text-align: center;
}

.kd-icon-box-side {
    flex-direction: row;
    align-items: flex-start;
    text-align: left;
}

.kd-icon-box-side .kd-icon-box-icon {
    margin-top: 4px;
}

.kd-icon-box-side .kd-icon-box-content {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
}

.kd-icon-box-icon-boxed .kd-icon-box-icon {
    width: var(--kd-ib-icon-box-size);
    height: var(--kd-ib-icon-box-size);
    border-radius: 18px;
    background-color: var(--kd-ib-icon-bg);
    font-size: calc(var(--kd-ib-icon-size) * 0.62);
}

/* --- Helpers: Badge & Divider --- */
.kd-icon-box-badge {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 4;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    background-color: rgba(var(--base-color-rgb), 0.10);
    color: var(--base-color);
    border: 1px solid rgba(var(--base-color-rgb), 0.18);
    pointer-events: none;
}

.kd-icon-box-divider {
    width: 100%;
    height: 1px;
    background-color: rgba(0, 0, 0, 0.08);
    margin-top: 6px;
}

/* --- Sizes --- */
.kd-icon-box-sm {
    --kd-ib-padding: 22px;
    --kd-ib-icon-size: 2.6rem;
    --kd-ib-icon-box-size: 64px;
}

.kd-icon-box-sm .kd-icon-box-title { font-size: 1.1rem; }
.kd-icon-box-sm .kd-icon-box-text { font-size: 0.92rem; }

.kd-icon-box-lg {
    --kd-ib-padding: 40px;
    --kd-ib-icon-size: 3.8rem;
    --kd-ib-icon-box-size: 92px;
}

.kd-icon-box-lg .kd-icon-box-title { font-size: 1.45rem; }
.kd-icon-box-lg .kd-icon-box-text { font-size: 1rem; }

/* --- Theme: On Dark Background --- */
.kd-ib-theme-dark {
    --kd-ib-bg: rgba(255, 255, 255, 0.06);
    --kd-ib-color: rgba(255, 255, 255, 0.78);
    --kd-ib-title-color: var(--white);
    --kd-ib-border: 1px solid rgba(255, 255, 255, 0.12);
    --kd-ib-shadow: 0 14px 40px rgba(0, 0, 0, 0.28);
    --kd-ib-hover-shadow: 0 22px 60px rgba(0, 0, 0, 0.38);
    --kd-ib-icon-bg: rgba(255, 255, 255, 0.10);
    --kd-ib-icon-color: var(--white);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-ib-theme-dark {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

.kd-ib-theme-dark .kd-icon-box-btn {
    color: var(--white);
}

.kd-ib-theme-dark .kd-icon-box-btn:hover {
    color: rgba(255, 255, 255, 0.9);
}

/* --- Style 01: Clean Minimal --- */
.kd-ib-style-01 {
    --kd-ib-bg: transparent;
    --kd-ib-border: 0;
    --kd-ib-shadow: none;
    --kd-ib-hover-shadow: none;
    --kd-ib-padding: 0;
    --kd-ib-hover-lift: 0;
}

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-01:hover {
        transform: none;
        box-shadow: none;
    }

    .kd-ib-style-01:hover .kd-icon-box-icon {
        transform: translateY(-6px);
        color: var(--dark-gray);
    }
}

/* --- Style 02: Icon Capsule Card --- */
.kd-ib-style-02 {
    --kd-ib-shadow: 0 10px 30px rgba(0, 0, 0, 0.04);
    --kd-ib-hover-shadow: 0 22px 55px rgba(0, 0, 0, 0.11);
}

.kd-ib-style-02 .kd-icon-box-icon {
    width: var(--kd-ib-icon-box-size);
    height: var(--kd-ib-icon-box-size);
    border-radius: 999px;
    background-color: rgba(var(--base-color-rgb), 0.07);
    font-size: calc(var(--kd-ib-icon-size) * 0.62);
}

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-02:hover .kd-icon-box-icon {
        background-color: var(--base-color);
        color: var(--white);
        transform: translateY(-2px) rotate(8deg);
        box-shadow: 0 16px 34px rgba(var(--base-color-rgb), 0.28);
    }
}

/* --- Style 03: Color Fill Reveal --- */
.kd-ib-style-03 {
    --kd-ib-shadow: none;
    --kd-ib-hover-shadow: 0 20px 55px rgba(var(--base-color-rgb), 0.18);
}

.kd-ib-style-03::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, var(--base-color), var(--slate-blue));
    transform: scaleY(0);
    transform-origin: bottom;
    transition: transform 0.45s var(--kd-ib-ease);
    z-index: 0;
}

.kd-ib-style-03::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(255, 255, 255, 0.22) 1px, transparent 1px);
    background-size: 18px 18px;
    opacity: 0;
    transition: opacity 0.45s var(--kd-ib-ease);
    z-index: 1;
    pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-03:hover {
        border-color: rgba(var(--base-color-rgb), 0.55);
    }

    .kd-ib-style-03:hover::before {
        transform: scaleY(1);
    }

    .kd-ib-style-03:hover::after {
        opacity: 0.35;
    }

    .kd-ib-style-03:hover .kd-icon-box-title,
    .kd-ib-style-03:hover .kd-icon-box-text,
    .kd-ib-style-03:hover .kd-icon-box-btn,
    .kd-ib-style-03:hover .kd-icon-box-icon {
        color: var(--white);
    }

    .kd-ib-style-03:hover .kd-icon-box-btn i {
        transform: translateX(4px);
    }
}

/* --- Style 04: Glass Icon Gradient --- */
.kd-ib-style-04 {
    --kd-ib-bg: rgba(255, 255, 255, 0.65);
    --kd-ib-border: 1px solid rgba(255, 255, 255, 0.55);
    --kd-ib-shadow: 0 14px 40px rgba(0, 0, 0, 0.08);
    --kd-ib-hover-shadow: 0 22px 60px rgba(0, 0, 0, 0.14);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-ib-style-04 {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

.kd-ib-style-04 .kd-icon-box-icon {
    background: linear-gradient(135deg, var(--base-color), var(--slate-blue));
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
    font-size: calc(var(--kd-ib-icon-size) * 1.08);
    filter: drop-shadow(0 12px 14px rgba(var(--base-color-rgb), 0.18));
}

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-04:hover {
        --kd-ib-bg: var(--white);
        --kd-ib-border: 1px solid rgba(0, 0, 0, 0.06);
    }
}

/* --- Style 05: Step Process --- */
.kd-icon-box-steps {
    counter-reset: ib-step;
}

.kd-ib-style-05 {
    --kd-ib-padding: 40px 30px;
    counter-increment: ib-step;
}

.kd-ib-style-05 .kd-icon-box-icon {
    width: 74px;
    height: 74px;
    border-radius: 22px;
    background-color: var(--very-light-gray);
    color: var(--base-color);
    font-size: 2rem;
    transform: rotate(45deg);
}

.kd-ib-style-05 .kd-icon-box-icon :where(i, svg) {
    transform: rotate(-45deg);
}

.kd-ib-style-05::after {
    content: counter(ib-step, decimal-leading-zero);
    position: absolute;
    top: 26px;
    right: 26px;
    font-size: 3.1rem;
    font-weight: 900;
    line-height: 1;
    color: rgba(0, 0, 0, 0.05);
    transition: color 0.35s var(--kd-ib-ease), transform 0.35s var(--kd-ib-ease);
    z-index: 2;
    pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-05:hover .kd-icon-box-icon {
        background-color: var(--base-color);
        color: var(--white);
        transform: rotate(45deg) scale(1.06);
        box-shadow: 0 18px 40px rgba(var(--base-color-rgb), 0.22);
    }

    .kd-ib-style-05:hover::after {
        color: rgba(255, 255, 255, 0.22);
        transform: translateY(2px);
    }
}

/* --- Style 06: Watermark Icon --- */
.kd-ib-style-06 {
    --kd-ib-watermark-space: 84px;
    padding-right: calc(var(--kd-ib-padding) + var(--kd-ib-watermark-space));
}

.kd-ib-style-06 .kd-icon-box-icon {
    position: absolute;
    top: 24px;
    right: 24px;
    font-size: 4.2rem;
    opacity: 0.12;
    color: var(--kd-ib-title-color);
    margin: 0;
}

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-06:hover .kd-icon-box-icon {
        opacity: 0.95;
        color: var(--base-color);
        transform: scale(0.92) translate(-8px, 8px);
    }
}

/* --- Style 07: Image/Video Background --- */
.kd-ib-style-07 {
    --kd-ib-padding: 40px;
    --kd-ib-border: 0;
    --kd-ib-shadow: 0 18px 55px rgba(0, 0, 0, 0.18);
    --kd-ib-hover-shadow: 0 26px 70px rgba(0, 0, 0, 0.24);

    color: var(--white);
    background-color: var(--dark-gray);
    background-size: cover;
    background-position: center;
    justify-content: flex-end;
}

.kd-ib-style-07::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.86), rgba(0, 0, 0, 0.18));
    z-index: 0;
    transition: opacity 0.35s var(--kd-ib-ease), background 0.35s var(--kd-ib-ease);
}

.kd-ib-style-07 .kd-icon-box-title { color: var(--white); }
.kd-ib-style-07 .kd-icon-box-text { color: rgba(255, 255, 255, 0.86); }
.kd-ib-style-07 .kd-icon-box-icon { color: var(--white); }
.kd-ib-style-07 .kd-icon-box-btn { color: rgba(255, 255, 255, 0.92); }

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-07:hover::before {
        background: linear-gradient(to top, rgba(var(--base-color-rgb), 0.92), rgba(var(--base-color-rgb), 0.40));
    }

    .kd-ib-style-07:hover .kd-icon-box-btn {
        color: var(--white);
    }
}

/* --- Style 08: Morphing Blob Icon --- */
.kd-ib-style-08 .kd-icon-box-icon {
    width: 92px;
    height: 92px;
    border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
    background-color: rgba(var(--base-color-rgb), 0.10);
    color: var(--base-color);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 2rem;
    animation: kd-blob-anim 8s ease-in-out infinite;
}

@keyframes kd-blob-anim {
    0%, 100% { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; }
    25% { border-radius: 58% 42% 75% 25% / 76% 46% 54% 24%; }
    50% { border-radius: 50% 50% 33% 67% / 55% 27% 73% 45%; }
    75% { border-radius: 33% 67% 58% 42% / 63% 68% 32% 37%; }
}

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-08:hover .kd-icon-box-icon {
        background-color: var(--base-color);
        color: var(--white);
        transform: scale(1.03);
        box-shadow: 0 18px 45px rgba(var(--base-color-rgb), 0.24);
    }
}

/* --- Style 09: Accent Top Bar --- */
.kd-ib-style-09 {
    --kd-ib-shadow: 0 10px 30px rgba(0, 0, 0, 0.04);
    --kd-ib-hover-shadow: 0 22px 55px rgba(0, 0, 0, 0.10);
}

.kd-ib-style-09::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    height: 4px;
    width: 100%;
    background: linear-gradient(90deg, var(--base-color), var(--slate-blue));
    z-index: 0;
}

.kd-ib-style-09::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(0, 0, 0, 0.06) 1px, transparent 1px);
    background-size: 22px 22px;
    opacity: 0;
    transition: opacity 0.35s var(--kd-ib-ease);
    z-index: 1;
    pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-09:hover::after {
        opacity: 0.55;
    }
}

/* --- Style 10: Outline Hover Glow --- */
.kd-ib-style-10 {
    --kd-ib-shadow: none;
    --kd-ib-border: 1px solid rgba(0, 0, 0, 0.10);
    --kd-ib-hover-shadow: 0 18px 45px rgba(var(--base-color-rgb), 0.12);
}

@media (hover: hover) and (pointer: fine) {
    .kd-ib-style-10:hover {
        border-color: rgba(var(--base-color-rgb), 0.40);
        box-shadow: var(--kd-ib-hover-shadow);
    }

    .kd-ib-style-10:hover .kd-icon-box-icon {
        transform: translateY(-2px);
    }
}

/* --- Responsive --- */
@media (max-width: 767px) {
    .kd-icon-box-side {
        flex-direction: column;
        align-items: center;
        text-align: center;
    }

    .kd-icon-box-side .kd-icon-box-icon {
        margin-top: 0;
    }

    .kd-ib-style-06 {
        padding-right: var(--kd-ib-padding);
    }

    .kd-ib-style-06 .kd-icon-box-icon {
        position: relative;
        top: auto;
        right: auto;
        opacity: 1;
        font-size: 3.2rem;
        color: var(--base-color);
    }
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-icon-box,
    .kd-icon-box-icon,
    .kd-icon-box-btn,
    .kd-ib-style-03::before,
    .kd-ib-style-03::after,
    .kd-ib-style-07::before,
    .kd-ib-style-08 .kd-icon-box-icon,
    .kd-ib-style-09::after {
        transition: none !important;
        animation: none !important;
    }

    .kd-icon-box:hover {
        transform: none !important;
    }

    .kd-icon-box-btn:hover i {
        transform: none !important;
    }
}

/* ===================================
    23. Image Frames & Borders
====================================== */

.kd-img-box {
    --kd-img-radius: var(--radius-6);
    --kd-img-inner-radius: var(--kd-img-radius);
    --kd-img-padding: 0px;

    --kd-img-bg: var(--very-light-gray);
    --kd-img-border: 0;

    --kd-img-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
    --kd-img-hover-shadow: 0 22px 60px rgba(0, 0, 0, 0.16);

    --kd-img-hover-lift: 0px;
    --kd-img-hover-rotate: 0deg;

    --kd-img-media-scale: 1;
    --kd-img-hover-scale: 1.05;
    --kd-img-media-rotate: 0deg;
    --kd-img-hover-media-rotate: 0deg;

    --kd-img-overlay-bg: rgba(0, 0, 0, 0.45);
    --kd-img-overlay-color: var(--white);
    --kd-img-overlay-blur: 8px;

    --kd-img-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-img-transition: transform 0.5s var(--kd-img-ease), box-shadow 0.5s var(--kd-img-ease), border-color 0.5s var(--kd-img-ease), background-color 0.5s var(--kd-img-ease);

    position: relative;
    display: block;
    width: 100%;
    padding: var(--kd-img-padding);
    background-color: var(--kd-img-bg);
    border: var(--kd-img-border);
    border-radius: var(--kd-img-radius);
    box-shadow: var(--kd-img-shadow);
    overflow: hidden;
    isolation: isolate;
    transform: translate3d(0, 0, 0);
    transition: var(--kd-img-transition);
    will-change: transform;
    -webkit-tap-highlight-color: transparent;
}

@supports (overflow: clip) {
    .kd-img-box { overflow: clip; }
}

.kd-img-box :where(picture) {
    display: block;
}

.kd-img-box :where(img, video) {
    position: relative;
    z-index: 1;
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--kd-img-inner-radius);
    transform: translate3d(0, 0, 0) scale(var(--kd-img-media-scale)) rotate(var(--kd-img-media-rotate));
    transition: transform 0.6s var(--kd-img-ease), filter 0.6s var(--kd-img-ease);
    will-change: transform;
}

.kd-img-box :where(video) {
    object-fit: cover;
}

.kd-img-box:is(a, button, [tabindex]):focus-visible {
    outline: none;
    box-shadow: var(--kd-img-shadow), 0 0 0 4px rgba(var(--base-color-rgb), 0.28);
}

.kd-img-box:focus-within {
    box-shadow: var(--kd-img-shadow), 0 0 0 4px rgba(var(--base-color-rgb), 0.18);
}

.kd-img-overlay {
    position: absolute;
    inset: 0;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 22px;
    background: var(--kd-img-overlay-bg);
    color: var(--kd-img-overlay-color);
    opacity: 0;
    transform: translate3d(0, 10px, 0);
    transition: opacity 0.45s var(--kd-img-ease), transform 0.45s var(--kd-img-ease);
    pointer-events: none;
}

@supports (backdrop-filter: blur(8px)) {
    .kd-img-overlay {
        backdrop-filter: blur(var(--kd-img-overlay-blur));
        -webkit-backdrop-filter: blur(var(--kd-img-overlay-blur));
    }
}

.kd-img-overlay-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    text-align: center;
}

.kd-img-overlay-title {
    margin: 0;
    font-size: 1.35rem;
    font-weight: 900;
    color: inherit;
    line-height: 1.2;
}

.kd-img-overlay-subtitle {
    margin: 0;
    font-size: 0.95rem;
    opacity: 0.85;
}

.kd-img-overlay-icon {
    width: 56px;
    height: 56px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background-color: rgba(255, 255, 255, 0.14);
    border: 1px solid rgba(255, 255, 255, 0.22);
    color: var(--white);
    font-size: 1.35rem;
    transform: scale(0.9);
    transition: transform 0.45s var(--kd-img-ease);
}

.kd-img-overlay-visible .kd-img-overlay {
    opacity: 1;
    transform: none;
    pointer-events: auto;
}

.kd-img-overlay-bottom .kd-img-overlay {
    align-items: flex-end;
}

.kd-img-overlay-top .kd-img-overlay {
    align-items: flex-start;
}

@media (hover: hover) and (pointer: fine) {
    .kd-img-box:hover {
        transform: translate3d(0, var(--kd-img-hover-lift), 0) rotate(var(--kd-img-hover-rotate));
        box-shadow: var(--kd-img-hover-shadow);
        --kd-img-media-scale: var(--kd-img-hover-scale);
        --kd-img-media-rotate: var(--kd-img-hover-media-rotate);
    }

    .kd-img-box:hover .kd-img-overlay {
        opacity: 1;
        transform: translate3d(0, 0, 0);
        pointer-events: auto;
    }

    .kd-img-box:hover .kd-img-overlay-icon {
        transform: scale(1);
    }
}

.kd-img-box:focus-within .kd-img-overlay {
    pointer-events: auto;
}

/* --- Style 01: Offset Border --- */
.kd-img-style-01 {
    --kd-img-shadow: none;
    --kd-img-hover-shadow: none;
    --kd-img-offset-size: 14px;
    --kd-img-offset-color: rgba(var(--base-color-rgb), 0.85);
    overflow: visible;
    margin: var(--kd-img-offset-size);
}

.kd-img-style-01::before {
    content: "";
    position: absolute;
    inset: 0;
    border: 2px solid var(--kd-img-offset-color);
    border-radius: var(--kd-img-radius);
    transform: translate3d(var(--kd-img-offset-size), var(--kd-img-offset-size), 0);
    z-index: 0;
    transition: transform 0.45s var(--kd-img-ease);
    pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-img-style-01:hover::before {
        transform: translate3d(calc(var(--kd-img-offset-size) * 0.5), calc(var(--kd-img-offset-size) * 0.5), 0);
    }
}

/* --- Style 02: Polaroid / Caption Card --- */
.kd-img-style-02 {
    --kd-img-padding: 12px;
    --kd-img-bg: var(--white);
    --kd-img-border: 1px solid rgba(0, 0, 0, 0.08);
    --kd-img-shadow: 0 10px 28px rgba(0, 0, 0, 0.08);
    --kd-img-hover-shadow: 0 22px 55px rgba(0, 0, 0, 0.14);
    --kd-img-hover-lift: -6px;
    --kd-img-hover-rotate: 1.2deg;
    --kd-img-hover-scale: 1.03;
    padding-bottom: 38px;
}

.kd-img-style-02::after {
    content: attr(data-caption);
    position: absolute;
    left: 0;
    right: 0;
    bottom: 12px;
    z-index: 2;
    text-align: center;
    font-family: var(--secondary-font);
    font-size: 0.9rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    color: var(--dark-gray);
    opacity: 0.75;
    padding: 0 14px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    pointer-events: none;
}

.kd-img-style-02:not([data-caption])::after,.kd-img-style-02[data-caption=""]::after {
    display: none;
}

/* --- Style 03: Mask Shapes --- */
.kd-img-mask-arch {
    --kd-img-radius: 220px 220px 22px 22px;
    --kd-img-inner-radius: var(--kd-img-radius);
}

.kd-img-mask-blob {
    --kd-img-inner-radius: var(--kd-img-radius);
    animation: kd-img-blob 10s ease-in-out infinite;
}

@keyframes kd-img-blob {
    0%, 100% { border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%; }
    33% { border-radius: 70% 30% 50% 50% / 30% 30% 70% 70%; }
    66% { border-radius: 30% 70% 70% 30% / 70% 70% 30% 30%; }
}

.kd-img-mask-circle {
    --kd-img-radius: 999px;
    --kd-img-inner-radius: 999px;
    aspect-ratio: 1 / 1;
}

.kd-img-box:is(.kd-img-mask-circle, .kd-img-ratio-1x1, .kd-img-ratio-4x3, .kd-img-ratio-3x4, .kd-img-ratio-16x9, .kd-img-ratio-21x9) :where(img, video) {
    height: 100%;
    object-fit: cover;
}

/* --- Style 04: Tech / Glitch Frame --- */
.kd-img-style-04 {
    --kd-img-shadow: none;
    --kd-img-hover-shadow: none;
    overflow: visible;
}

.kd-img-style-04::before,.kd-img-style-04::after {
    content: "";
    position: absolute;
    inset: -6px;
    border-radius: calc(var(--kd-img-radius) + 6px);
    opacity: 0;
    pointer-events: none;
    z-index: 2;
    transition: transform 0.35s var(--kd-img-ease), opacity 0.35s var(--kd-img-ease);
}

.kd-img-style-04::before {
    border: 1px solid rgba(var(--base-color-rgb), 0.9);
    clip-path: polygon(0 0, 100% 0, 100% 18%, 0 18%, 0 82%, 100% 82%, 100% 100%, 0 100%);
    transform: translate3d(0, 0, 0);
}

.kd-img-style-04::after {
    border: 1px solid rgba(255, 0, 193, 0.85);
    clip-path: polygon(0 30%, 100% 30%, 100% 52%, 0 52%);
    transform: translate3d(8px, -8px, 0);
}

@media (hover: hover) and (pointer: fine) {
    .kd-img-style-04:hover::before {
        opacity: 1;
        transform: translate3d(-6px, 6px, 0);
    }

    .kd-img-style-04:hover::after {
        opacity: 1;
        transform: translate3d(8px, -8px, 0);
    }
}

/* --- Style 05: Overlay Reveal --- */
.kd-img-overlay-reveal .kd-img-overlay {
    opacity: 0;
    transform: translate3d(0, 14px, 0);
}

.kd-img-overlay-reveal .kd-img-overlay-title {
    transform: translate3d(0, 10px, 0);
    opacity: 0;
    transition: transform 0.45s var(--kd-img-ease), opacity 0.45s var(--kd-img-ease);
}

.kd-img-overlay-reveal .kd-img-overlay-icon {
    transform: scale(0.75);
    opacity: 0;
    transition: transform 0.45s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.35s var(--kd-img-ease);
}

@media (hover: hover) and (pointer: fine) {
    .kd-img-overlay-reveal:hover .kd-img-overlay {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }

    .kd-img-overlay-reveal:hover .kd-img-overlay-title {
        opacity: 1;
        transform: translate3d(0, 0, 0);
        transition-delay: 0.06s;
    }

    .kd-img-overlay-reveal:hover .kd-img-overlay-icon {
        opacity: 1;
        transform: scale(1);
        transition-delay: 0.12s;
    }
}

.kd-img-overlay-reveal:focus-within .kd-img-overlay,.kd-img-overlay-reveal:focus-within .kd-img-overlay-title,.kd-img-overlay-reveal:focus-within .kd-img-overlay-icon {
    opacity: 1;
    transform: none;
}

/* --- Style 06: Corner Decorations --- */
.kd-img-style-06 {
    --kd-corner-size: 56px;
    --kd-corner-thickness: 4px;
    overflow: visible;
}

.kd-img-style-06::before,.kd-img-style-06::after {
    content: "";
    position: absolute;
    width: var(--kd-corner-size);
    height: var(--kd-corner-size);
    z-index: 2;
    pointer-events: none;
    transition: transform 0.35s var(--kd-img-ease), width 0.35s var(--kd-img-ease), height 0.35s var(--kd-img-ease), opacity 0.35s var(--kd-img-ease);
    opacity: 0.95;
}

.kd-img-style-06::before {
    top: -10px;
    right: -10px;
    border-top: var(--kd-corner-thickness) solid var(--base-color);
    border-right: var(--kd-corner-thickness) solid var(--base-color);
    border-top-right-radius: var(--radius-4);
}

.kd-img-style-06::after {
    bottom: -10px;
    left: -10px;
    border-bottom: var(--kd-corner-thickness) solid var(--base-color);
    border-left: var(--kd-corner-thickness) solid var(--base-color);
    border-bottom-left-radius: var(--radius-4);
}

@media (hover: hover) and (pointer: fine) {
    .kd-img-style-06:hover::before,
    .kd-img-style-06:hover::after {
        width: 42px;
        height: 42px;
        opacity: 1;
    }

    .kd-img-style-06:hover::before {
        transform: translate3d(-14px, 14px, 0);
    }

    .kd-img-style-06:hover::after {
        transform: translate3d(14px, -14px, 0);
    }
}

/* --- Style 07: 3D Tilt Wrapper --- */
.kd-img-tilt-wrapper {
    perspective: 1000px;
    transform-style: preserve-3d;
}

.kd-img-tilt-item {
    transform: translate3d(0, 0, 0);
    transition: transform 0.12s linear, box-shadow 0.25s var(--kd-img-ease);
    will-change: transform;
}

@media (hover: hover) and (pointer: fine) {
    .kd-img-tilt-hover:hover {
        transform: rotateX(6deg) rotateY(-6deg) translate3d(0, -6px, 0);
        box-shadow: -22px 22px 50px rgba(0, 0, 0, 0.22);
    }
}

/* --- Style 08: Gradient Border Frame --- */
.kd-img-style-08 {
    --kd-img-padding: 2px;
    --kd-img-inner-radius: max(0px, calc(var(--kd-img-radius) - var(--kd-img-padding)));
    --kd-img-bg: linear-gradient(135deg, rgba(var(--base-color-rgb), 1) 0%, rgba(0, 0, 0, 0.12) 55%, rgba(var(--base-color-rgb), 0.85) 100%);
    --kd-img-border: 0;
    --kd-img-shadow: 0 12px 34px rgba(0, 0, 0, 0.10);
    --kd-img-hover-shadow: 0 24px 60px rgba(0, 0, 0, 0.18);
}

.kd-img-style-08 :where(img, video) {
    background-color: var(--white);
}

/* --- Style 09: Shine Sweep --- */
.kd-img-style-09 {
    --kd-img-shine-opacity: 0.35;
}

.kd-img-style-09::before {
    content: "";
    position: absolute;
    inset: -40%;
    z-index: 2;
    background: linear-gradient(120deg, transparent 40%, rgba(255, 255, 255, var(--kd-img-shine-opacity)) 50%, transparent 60%);
    transform: translate3d(-35%, 0, 0);
    opacity: 0;
    pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-img-style-09:hover::before {
        opacity: 1;
        transition: transform 0.9s var(--kd-img-ease), opacity 0.25s ease;
        transform: translate3d(35%, 0, 0);
    }
}

/* --- Style 10: Stacked Cards --- */
.kd-img-style-10 {
    --kd-img-shadow: 0 16px 45px rgba(0, 0, 0, 0.12);
    --kd-img-hover-shadow: 0 28px 70px rgba(0, 0, 0, 0.18);
    overflow: visible;
}

.kd-img-style-10::before,.kd-img-style-10::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: var(--kd-img-radius);
    background-color: rgba(0, 0, 0, 0.04);
    z-index: 0;
    pointer-events: none;
    transition: transform 0.45s var(--kd-img-ease), opacity 0.45s var(--kd-img-ease);
    opacity: 1;
}

.kd-img-style-10::before {
    transform: translate3d(10px, 10px, 0);
}

.kd-img-style-10::after {
    transform: translate3d(20px, 20px, 0);
    opacity: 0.65;
}

@media (hover: hover) and (pointer: fine) {
    .kd-img-style-10:hover::before {
        transform: translate3d(8px, 8px, 0);
    }

    .kd-img-style-10:hover::after {
        transform: translate3d(14px, 14px, 0);
        opacity: 0.5;
    }
}

/* --- Helpers: Ratios --- */
.kd-img-ratio-1x1 { aspect-ratio: 1 / 1; }
.kd-img-ratio-4x3 { aspect-ratio: 4 / 3; }
.kd-img-ratio-3x4 { aspect-ratio: 3 / 4; }
.kd-img-ratio-16x9 { aspect-ratio: 16 / 9; }
.kd-img-ratio-21x9 { aspect-ratio: 21 / 9; }

/* --- Helpers: Filters --- */
.kd-img-filter-bw :where(img, video) { filter: grayscale(100%); }
.kd-img-filter-sepia :where(img, video) { filter: sepia(60%) contrast(1.05); }

@media (hover: hover) and (pointer: fine) {
    .kd-img-filter-bw:hover :where(img, video) { filter: grayscale(0%); }
    .kd-img-filter-sepia:hover :where(img, video) { filter: sepia(0%); }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-img-box,
    .kd-img-box :where(img, video),
    .kd-img-overlay,
    .kd-img-overlay-title,
    .kd-img-overlay-icon,
    .kd-img-style-01::before,
    .kd-img-style-04::before,
    .kd-img-style-04::after,
    .kd-img-style-09::before,
    .kd-img-style-10::before,
    .kd-img-style-10::after,
    .kd-img-mask-blob,
    .kd-img-tilt-item {
        transition: none !important;
        animation: none !important;
    }

    .kd-img-box:hover {
        transform: none !important;
        box-shadow: var(--kd-img-shadow) !important;
    }

    .kd-img-box:hover :where(img, video) {
        transform: none !important;
    }
}

/* ===================================
    24. Image Galleries & Lightboxes
====================================== */

/* --- Base Variables --- */
.kd-gallery-wrapper {
    --kd-gallery-gap: 20px;
    --kd-gallery-radius: var(--radius-4);

    --kd-gallery-bg: var(--very-light-gray);
    --kd-gallery-border: 1px solid rgba(0, 0, 0, 0.06);
    --kd-gallery-shadow: none;
    --kd-gallery-hover-shadow: 0 18px 50px rgba(0, 0, 0, 0.14);
    --kd-gallery-hover-lift: -6px;

    --kd-gallery-overlay-bg: rgba(0, 0, 0, 0.62);
    --kd-gallery-overlay-color: var(--white);
    --kd-gallery-overlay-blur: 10px;

    --kd-gallery-icon-size: 1.6rem;
    --kd-gallery-icon-bg: var(--base-color);
    --kd-gallery-icon-color: var(--white);
    --kd-gallery-icon-surface: rgba(255, 255, 255, 0.14);
    --kd-gallery-icon-border: 1px solid rgba(255, 255, 255, 0.22);
    --kd-gallery-icon-box: 64px;
    --kd-gallery-icon-radius: 999px;

    --kd-gallery-text-shadow: 0 10px 25px rgba(0, 0, 0, 0.25);

    --kd-gallery-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-gallery-dur: 0.6s;

    --kd-cols: 1;
    --kd-gallery-min: 220px;
}

/* --- Base Grid System --- */
.kd-gallery-grid {
    display: grid;
    grid-template-columns: repeat(var(--kd-cols), minmax(0, 1fr));
    gap: var(--kd-gallery-gap);
    width: 100%;
}

.kd-gallery-grid.kd-gallery-auto {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--kd-gallery-min)), 1fr));
}

/* --- Responsive Column Control (Utility Classes) --- */
.kd-cols-1 { --kd-cols: 1; }
.kd-cols-2 { --kd-cols: 2; }
.kd-cols-3 { --kd-cols: 3; }
.kd-cols-4 { --kd-cols: 4; }

@media (min-width: 768px) {
    .kd-cols-md-2 { --kd-cols: 2; }
    .kd-cols-md-3 { --kd-cols: 3; }
    .kd-cols-md-4 { --kd-cols: 4; }
    .kd-cols-md-5 { --kd-cols: 5; }
}

@media (min-width: 992px) {
    .kd-cols-lg-3 { --kd-cols: 3; }
    .kd-cols-lg-4 { --kd-cols: 4; }
    .kd-cols-lg-5 { --kd-cols: 5; }
    .kd-cols-lg-6 { --kd-cols: 6; }
}

@media (min-width: 1200px) {
    .kd-cols-xl-4 { --kd-cols: 4; }
    .kd-cols-xl-5 { --kd-cols: 5; }
    .kd-cols-xl-6 { --kd-cols: 6; }
}

/* --- Gallery Item --- */
.kd-gallery-item {
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: var(--kd-gallery-radius);
    isolation: isolate;
    cursor: zoom-in;
    background-color: var(--kd-gallery-bg);
    border: var(--kd-gallery-border);
    box-shadow: var(--kd-gallery-shadow);
    transform: translate3d(0, 0, 0);
    transition: transform var(--kd-gallery-dur) var(--kd-gallery-ease), box-shadow var(--kd-gallery-dur) var(--kd-gallery-ease), border-color var(--kd-gallery-dur) var(--kd-gallery-ease);
    -webkit-tap-highlight-color: transparent;
}

@supports (overflow: clip) {
    .kd-gallery-item { overflow: clip; }
}

/* --- Media Reset --- */
.kd-gallery-item :where(picture) {
    display: block;
}

.kd-gallery-item :where(img, video) {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: translate3d(0, 0, 0) scale(1);
    transition: transform var(--kd-gallery-dur) var(--kd-gallery-ease), filter var(--kd-gallery-dur) var(--kd-gallery-ease), opacity 0.35s ease;
    will-change: transform;
}

.kd-gallery-item :where(video) {
    object-fit: cover;
}

/* --- Overlay --- */
.kd-gallery-overlay {
    position: absolute;
    inset: 0;
    z-index: 2;
    background: var(--kd-gallery-overlay-bg);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 22px;
    opacity: 0;
    transform: translate3d(0, 14px, 0);
    transition: opacity 0.45s var(--kd-gallery-ease), transform 0.45s var(--kd-gallery-ease), backdrop-filter 0.45s var(--kd-gallery-ease);
    pointer-events: none;
    color: var(--kd-gallery-overlay-color);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-gallery-overlay {
        backdrop-filter: blur(0px);
        -webkit-backdrop-filter: blur(0px);
    }
}

.kd-gallery-item.kd-is-overlay-interactive .kd-gallery-overlay {
    pointer-events: auto;
}

.kd-gallery-icon {
    width: var(--kd-gallery-icon-box);
    height: var(--kd-gallery-icon-box);
    border-radius: var(--kd-gallery-icon-radius);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background-color: var(--kd-gallery-icon-surface);
    border: var(--kd-gallery-icon-border);
    color: var(--kd-gallery-icon-color);
    font-size: var(--kd-gallery-icon-size);
    transform: scale(0.86);
    opacity: 0;
    transition: transform 0.45s var(--kd-gallery-ease), opacity 0.35s var(--kd-gallery-ease), background-color 0.45s var(--kd-gallery-ease), border-color 0.45s var(--kd-gallery-ease);
    box-shadow: 0 18px 50px rgba(0, 0, 0, 0.22);
}

.kd-gallery-icon :where(i, svg) {
    color: currentColor;
}

.kd-gallery-info {
    text-align: center;
    transform: translate3d(0, 14px, 0);
    opacity: 0;
    transition: transform 0.45s var(--kd-gallery-ease), opacity 0.45s var(--kd-gallery-ease);
    text-shadow: var(--kd-gallery-text-shadow);
    margin-top: 14px;
}

.kd-gallery-title {
    font-size: 1.2rem;
    font-weight: 800;
    margin: 0;
    line-height: 1.2;
    color: inherit;
}

.kd-gallery-cat {
    margin-top: 6px;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    opacity: 0.85;
}

.kd-gallery-badge {
    position: absolute;
    z-index: 3;
    top: 14px;
    left: 14px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: 999px;
    background-color: rgba(0, 0, 0, 0.55);
    color: var(--white);
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    pointer-events: none;
}

.kd-gallery-badge.kd-badge-primary {
    background-color: rgba(var(--base-color-rgb), 0.85);
}

.kd-gallery-play {
    position: absolute;
    z-index: 3;
    inset: auto auto 14px 14px;
    width: 48px;
    height: 48px;
    border-radius: 999px;
    background-color: rgba(0, 0, 0, 0.5);
    border: 1px solid rgba(255, 255, 255, 0.22);
    color: var(--white);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    transform: translate3d(0, 0, 0);
}

.kd-gallery-play::before {
    content: "";
    width: 0;
    height: 0;
    border-left: 12px solid currentColor;
    border-top: 8px solid transparent;
    border-bottom: 8px solid transparent;
    margin-left: 2px;
    opacity: 0.9;
}

/* --- Hover & Focus States --- */
.kd-gallery-item:focus-visible {
    outline: none;
    box-shadow: var(--kd-gallery-shadow), 0 0 0 4px rgba(var(--base-color-rgb), 0.28);
}

.kd-gallery-item:focus-within {
    box-shadow: var(--kd-gallery-shadow), 0 0 0 4px rgba(var(--base-color-rgb), 0.18);
}

@media (hover: hover) and (pointer: fine) {
    .kd-gallery-item:hover {
        transform: translate3d(0, var(--kd-gallery-hover-lift), 0);
        box-shadow: var(--kd-gallery-hover-shadow);
        border-color: rgba(0, 0, 0, 0.08);
    }

    .kd-gallery-item:hover :where(img, video) {
        transform: translate3d(0, 0, 0) scale(1.08);
    }

    .kd-gallery-item:hover .kd-gallery-overlay {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }

    .kd-gallery-item:hover .kd-gallery-icon {
        opacity: 1;
        transform: scale(1);
    }

    .kd-gallery-item:hover .kd-gallery-info {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

.kd-gallery-item:focus-visible .kd-gallery-overlay,.kd-gallery-item:focus-within .kd-gallery-overlay {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

.kd-gallery-item:focus-visible .kd-gallery-icon,.kd-gallery-item:focus-within .kd-gallery-icon,.kd-gallery-item:focus-visible .kd-gallery-info,.kd-gallery-item:focus-within .kd-gallery-info {
    opacity: 1;
    transform: none;
}

/* --- Style 01: Grayscale to Color --- */
.kd-gallery-item.kd-gallery-style-01 :where(img, video) {
    filter: grayscale(100%);
}

@media (hover: hover) and (pointer: fine) {
    .kd-gallery-item.kd-gallery-style-01:hover :where(img, video) {
        filter: grayscale(0%);
    }
}

/* --- Style 02: Glassmorphism Overlay --- */
.kd-gallery-item.kd-gallery-style-02 .kd-gallery-overlay {
    background: rgba(255, 255, 255, 0.14);
}

@supports (backdrop-filter: blur(10px)) {
    @media (hover: hover) and (pointer: fine) {
        .kd-gallery-item.kd-gallery-style-02:hover .kd-gallery-overlay {
            backdrop-filter: blur(var(--kd-gallery-overlay-blur));
            -webkit-backdrop-filter: blur(var(--kd-gallery-overlay-blur));
        }
    }
}

.kd-gallery-item.kd-gallery-style-02 .kd-gallery-icon {
    background: rgba(255, 255, 255, 0.95);
    border-color: rgba(255, 255, 255, 0.75);
    color: var(--dark-gray);
    box-shadow: 0 18px 50px rgba(0, 0, 0, 0.18);
}

/* --- Style 03: Slide Up Caption --- */
.kd-gallery-item.kd-gallery-style-03 .kd-gallery-overlay {
    background: linear-gradient(to top, rgba(0, 0, 0, 0.92) 0%, rgba(0, 0, 0, 0) 60%);
    justify-content: flex-end;
    align-items: flex-start;
    text-align: left;
    padding: 26px;
    transform: translate3d(0, 0, 0);
}

.kd-gallery-item.kd-gallery-style-03 .kd-gallery-icon {
    display: none;
}

.kd-gallery-item.kd-gallery-style-03 .kd-gallery-info {
    text-align: left;
    transform: translate3d(0, 30px, 0);
}

/* --- Style 04: Minimal Plus --- */
.kd-gallery-item.kd-gallery-style-04 .kd-gallery-overlay {
    background: rgba(var(--base-color-rgb), 0.86);
}

.kd-gallery-item.kd-gallery-style-04 .kd-gallery-icon {
    width: 54px;
    height: 54px;
    background-color: transparent;
    border-color: rgba(255, 255, 255, 0.35);
    box-shadow: none;
    position: relative;
    color: var(--white);
}

.kd-gallery-item.kd-gallery-style-04 .kd-gallery-icon::before,.kd-gallery-item.kd-gallery-style-04 .kd-gallery-icon::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    background-color: currentColor;
    transform: translate(-50%, -50%);
    transition: transform 0.45s var(--kd-gallery-ease);
}

.kd-gallery-item.kd-gallery-style-04 .kd-gallery-icon::before { width: 26px; height: 2px; }
.kd-gallery-item.kd-gallery-style-04 .kd-gallery-icon::after { width: 2px; height: 26px; }

@media (hover: hover) and (pointer: fine) {
    .kd-gallery-item.kd-gallery-style-04:hover .kd-gallery-icon::before {
        transform: translate(-50%, -50%) rotate(180deg);
    }

    .kd-gallery-item.kd-gallery-style-04:hover .kd-gallery-icon::after {
        transform: translate(-50%, -50%) rotate(90deg);
    }
}

/* --- Style 05: 3D Tilt Card --- */
.kd-gallery-item.kd-gallery-style-05 {
    overflow: visible;
    transform-style: preserve-3d;
}

.kd-gallery-item.kd-gallery-style-05::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: var(--kd-gallery-radius);
    background: rgba(0, 0, 0, 0.06);
    z-index: 0;
    transform: translate3d(12px, 12px, -1px);
    opacity: 0;
    transition: opacity 0.45s var(--kd-gallery-ease), transform 0.45s var(--kd-gallery-ease);
    pointer-events: none;
}

.kd-gallery-item.kd-gallery-style-05 :where(img, video) {
    border-radius: var(--kd-gallery-radius);
}

@media (hover: hover) and (pointer: fine) {
    .kd-gallery-item.kd-gallery-style-05:hover {
        transform: translate3d(0, calc(var(--kd-gallery-hover-lift) * 1.1), 0) rotateX(5deg);
        box-shadow: 0 26px 70px rgba(0, 0, 0, 0.22);
    }

    .kd-gallery-item.kd-gallery-style-05:hover::before {
        opacity: 1;
        transform: translate3d(10px, 10px, -1px);
    }

    .kd-gallery-item.kd-gallery-style-05:hover :where(img, video) {
        transform: translate3d(0, 0, 0) scale(1.02);
    }
}

/* --- Style 06: Border Reveal Frame --- */
.kd-gallery-item.kd-gallery-style-06 {
    --kd-gallery-border: 1px solid rgba(0, 0, 0, 0.08);
}

.kd-gallery-item.kd-gallery-style-06::after {
    content: "";
    position: absolute;
    inset: 14px;
    border-radius: calc(var(--kd-gallery-radius) - 10px);
    border: 1px solid rgba(255, 255, 255, 0.42);
    opacity: 0;
    transform: scale(0.98);
    z-index: 2;
    pointer-events: none;
    transition: opacity 0.45s var(--kd-gallery-ease), transform 0.45s var(--kd-gallery-ease);
}

@media (hover: hover) and (pointer: fine) {
    .kd-gallery-item.kd-gallery-style-06:hover::after {
        opacity: 1;
        transform: scale(1);
    }
}

/* --- Special Layout: Masonry --- */
.kd-gallery-masonry {
    column-count: 1;
    column-gap: var(--kd-gallery-gap);
}

.kd-gallery-masonry .kd-gallery-item {
    display: inline-block;
    width: 100%;
    margin: 0 0 var(--kd-gallery-gap);
    break-inside: avoid;
}

@media (min-width: 768px) { .kd-gallery-masonry { column-count: 2; } }
@media (min-width: 992px) { .kd-gallery-masonry { column-count: 3; } }
@media (min-width: 1200px) { .kd-gallery-masonry { column-count: 4; } }

/* --- Special Layout: Metro (Mosaic) --- */
.kd-gallery-grid .kd-span-2-col { grid-column: span 2; }
.kd-gallery-grid .kd-span-3-col { grid-column: span 3; }
.kd-gallery-grid .kd-span-2-row { grid-row: span 2; }
.kd-gallery-grid .kd-span-3-row { grid-row: span 3; }

@media (max-width: 767px) {
    .kd-gallery-grid .kd-span-2-col,
    .kd-gallery-grid .kd-span-3-col,
    .kd-gallery-grid .kd-span-2-row,
    .kd-gallery-grid .kd-span-3-row {
        grid-column: span 1;
        grid-row: span 1;
    }
}

/* --- Ratio Helpers --- */
.kd-gallery-ratio-1x1 { aspect-ratio: 1 / 1; }
.kd-gallery-ratio-4x3 { aspect-ratio: 4 / 3; }
.kd-gallery-ratio-3x4 { aspect-ratio: 3 / 4; }
.kd-gallery-ratio-16x9 { aspect-ratio: 16 / 9; }
.kd-gallery-ratio-21x9 { aspect-ratio: 21 / 9; }

.kd-gallery-item:is(.kd-gallery-ratio-1x1, .kd-gallery-ratio-4x3, .kd-gallery-ratio-3x4, .kd-gallery-ratio-16x9, .kd-gallery-ratio-21x9) :where(img, video) {
    height: 100%;
}

/* --- Loading Skeleton Helpers --- */
.kd-gallery-item.kd-is-loading {
    position: relative;
}

.kd-gallery-item.kd-is-loading :where(img, video) {
    opacity: 0;
}

.kd-gallery-item.kd-is-loading::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(90deg, rgba(0,0,0,0.04) 0%, rgba(0,0,0,0.08) 35%, rgba(0,0,0,0.04) 70%);
    background-size: 200% 100%;
    animation: kd-gallery-shimmer 1.2s linear infinite;
}

@keyframes kd-gallery-shimmer {
    0% { background-position: 0% 0; }
    100% { background-position: 200% 0; }
}

/* --- Filter Nav --- */
.kd-gallery-filter {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    margin-bottom: 40px;
    padding: 0;
    list-style: none;
}

.kd-gallery-filter-btn {
    padding: 9px 22px;
    border-radius: 999px;
    font-weight: 800;
    font-size: 0.82rem;
    color: var(--medium-gray);
    background-color: transparent;
    border: 1px solid transparent;
    cursor: pointer;
    transition: transform 0.25s var(--kd-gallery-ease), background-color 0.25s var(--kd-gallery-ease), color 0.25s var(--kd-gallery-ease), border-color 0.25s var(--kd-gallery-ease), box-shadow 0.25s var(--kd-gallery-ease);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    -webkit-tap-highlight-color: transparent;
}

.kd-gallery-filter-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
}

.kd-gallery-filter-btn:hover,.kd-gallery-filter-btn.active {
    background-color: var(--base-color);
    color: var(--white);
    box-shadow: 0 10px 25px rgba(var(--base-color-rgb), 0.22);
    transform: translate3d(0, -1px, 0);
}

.kd-filter-style-outline .kd-gallery-filter-btn {
    border-color: rgba(0, 0, 0, 0.10);
}

.kd-filter-style-outline .kd-gallery-filter-btn:hover,.kd-filter-style-outline .kd-gallery-filter-btn.active {
    border-color: var(--base-color);
}

.kd-filter-style-soft .kd-gallery-filter-btn {
    background-color: rgba(0, 0, 0, 0.035);
    border-color: transparent;
}

.kd-filter-style-soft .kd-gallery-filter-btn:hover,.kd-filter-style-soft .kd-gallery-filter-btn.active {
    background-color: rgba(var(--base-color-rgb), 1);
}

/* --- Lightbox Base --- */
.kd-lightbox {
    --kd-lightbox-bg: rgba(0, 0, 0, 0.82);
    --kd-lightbox-blur: 10px;
    --kd-lightbox-pad: 24px;

    position: fixed;
    inset: 0;
    z-index: 9999;
    display: grid;
    place-items: center;
    padding: var(--kd-lightbox-pad);
    background: var(--kd-lightbox-bg);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.25s ease, visibility 0.25s ease;
}

@supports (backdrop-filter: blur(10px)) {
    .kd-lightbox {
        backdrop-filter: blur(var(--kd-lightbox-blur));
        -webkit-backdrop-filter: blur(var(--kd-lightbox-blur));
    }
}

.kd-lightbox.kd-is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.kd-lightbox-dialog {
    position: relative;
    width: min(1100px, 100%);
    max-height: min(82vh, 100%);
    display: grid;
    grid-template-rows: 1fr;
    border-radius: var(--radius-6);
    overflow: hidden;
    background-color: rgba(0, 0, 0, 0.2);
    box-shadow: 0 30px 90px rgba(0, 0, 0, 0.45);
}

.kd-lightbox-media {
    width: 100%;
    height: 100%;
    display: grid;
    place-items: center;
    padding: 0;
}

.kd-lightbox-media :where(img, video) {
    width: 100%;
    height: 100%;
    max-height: 82vh;
    object-fit: contain;
    display: block;
}

.kd-lightbox-close {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 44px;
    height: 44px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    background-color: rgba(255, 255, 255, 0.12);
    color: var(--white);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 3;
    transition: transform 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}

.kd-lightbox-close:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
}

.kd-lightbox-close:hover {
    transform: rotate(90deg);
    background-color: rgba(255, 255, 255, 0.18);
    border-color: rgba(255, 255, 255, 0.32);
}

.kd-lightbox-close::before {
    content: "";
    font-family: "bootstrap-icons";
    font-size: 1.1rem;
    line-height: 1;
}

.kd-lightbox-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 48px;
    height: 48px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    background-color: rgba(255, 255, 255, 0.12);
    color: var(--white);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 3;
    transition: transform 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}

.kd-lightbox-prev { left: 14px; }
.kd-lightbox-next { right: 14px; }

.kd-lightbox-nav:hover {
    background-color: rgba(255, 255, 255, 0.18);
    border-color: rgba(255, 255, 255, 0.32);
    transform: translateY(-50%) scale(1.05);
}

.kd-lightbox-prev::before,.kd-lightbox-next::before {
    font-family: "bootstrap-icons";
    font-size: 1.1rem;
    line-height: 1;
}

.kd-lightbox-prev::before { content: ""; }
.kd-lightbox-next::before { content: ""; }

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-gallery-item,
    .kd-gallery-item :where(img, video),
    .kd-gallery-overlay,
    .kd-gallery-icon,
    .kd-gallery-info,
    .kd-gallery-item.kd-gallery-style-06::after,
    .kd-gallery-item.kd-gallery-style-05::before,
    .kd-gallery-item.kd-is-loading::before,
    .kd-gallery-filter-btn,
    .kd-lightbox,
    .kd-lightbox-close,
    .kd-lightbox-nav {
        transition: none !important;
        animation: none !important;
    }
}

/* ===================================
    25. Interactive Banners & Hover Cards
====================================== */

/* --- Base --- */
.kd-banner-wrapper {
    --kd-ban-radius: var(--radius-4);
    --kd-ban-bg: var(--dark-gray);
    --kd-ban-border: 1px solid rgba(0, 0, 0, 0.06);
    --kd-ban-shadow: none;
    --kd-ban-hover-shadow: 0 18px 50px rgba(0, 0, 0, 0.14);
    --kd-ban-hover-lift: -6px;

    --kd-ban-overlay: rgba(0, 0, 0, 0.35);
    --kd-ban-overlay-hover: rgba(0, 0, 0, 0.55);

    --kd-ban-text-color: var(--white);
    --kd-ban-title-size: 1.5rem;
    --kd-ban-icon-size: 2.5rem;

    --kd-ban-padding: 30px;
    --kd-ban-gap: 12px;

    --kd-ban-hover-scale: 1.08;
    --kd-ban-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-ban-dur: 0.55s;

    --kd-ban-text-shadow: 0 12px 30px rgba(0, 0, 0, 0.25);
}

/* --- Base Item Structure --- */
.kd-banner-item {
    position: relative;
    display: block;
    width: 100%;
    overflow: hidden;
    border-radius: var(--kd-ban-radius);
    background-color: var(--kd-ban-bg);
    border: var(--kd-ban-border);
    box-shadow: var(--kd-ban-shadow);
    isolation: isolate;
    cursor: pointer;
    transform: translate3d(0, 0, 0);
    transition: transform var(--kd-ban-dur) var(--kd-ban-ease), box-shadow var(--kd-ban-dur) var(--kd-ban-ease), border-color var(--kd-ban-dur) var(--kd-ban-ease);

    --kd-ban-overlay-alpha: 0;
    --kd-ban-media-scale: 1;
    --kd-ban-media-tx: 0px;
    --kd-ban-media-ty: 0px;

    --kd-ban-btn-opacity: 0;
    --kd-ban-btn-ty: 14px;
}

@supports (overflow: clip) {
    .kd-banner-item { overflow: clip; }
}

/* --- Media Reset --- */
.kd-banner-item :where(img, video) {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    backface-visibility: hidden;
    transform: translate3d(var(--kd-ban-media-tx), var(--kd-ban-media-ty), 0) scale(var(--kd-ban-media-scale));
    transition: transform calc(var(--kd-ban-dur) + 0.15s) var(--kd-ban-ease), filter calc(var(--kd-ban-dur) + 0.15s) var(--kd-ban-ease), opacity 0.35s ease;
    will-change: transform;
}

/* --- Overlay Base --- */
.kd-banner-wrapper .kd-banner-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: var(--kd-ban-overlay);
    opacity: var(--kd-ban-overlay-alpha);
    transition: opacity 0.45s var(--kd-ban-ease), background 0.45s var(--kd-ban-ease), backdrop-filter 0.45s var(--kd-ban-ease);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-banner-wrapper .kd-banner-overlay {
        backdrop-filter: blur(0px);
        -webkit-backdrop-filter: blur(0px);
    }
}

/* --- Content Container --- */
.kd-banner-wrapper .kd-banner-content {
    position: absolute;
    inset: 0;
    z-index: 2;
    padding: var(--kd-ban-padding);
    display: flex;
    flex-direction: column;
    gap: var(--kd-ban-gap);
    pointer-events: none;
}

.kd-banner-wrapper .kd-banner-content :where(a, button, input, select, textarea) {
    pointer-events: auto;
}

.kd-banner-wrapper .kd-banner-title {
    margin: 0;
    font-size: var(--kd-ban-title-size);
    font-weight: 800;
    color: var(--kd-ban-text-color);
    line-height: 1.15;
    text-shadow: var(--kd-ban-text-shadow);
}

.kd-banner-wrapper .kd-banner-text {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.86);
    text-shadow: var(--kd-ban-text-shadow);
    max-width: 52ch;
}

.kd-banner-wrapper .kd-banner-icon {
    font-size: var(--kd-ban-icon-size);
    color: var(--white);
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-shadow: var(--kd-ban-text-shadow);
    transition: transform 0.45s var(--kd-ban-ease), opacity 0.45s var(--kd-ban-ease);
}

.kd-banner-wrapper .kd-banner-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: auto;
    font-weight: 800;
    font-size: 0.85rem;
    color: var(--white);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    text-decoration: none;
    opacity: var(--kd-ban-btn-opacity);
    transform: translate3d(0, var(--kd-ban-btn-ty), 0);
    transition: transform 0.45s var(--kd-ban-ease), opacity 0.45s var(--kd-ban-ease), color 0.25s ease;
    -webkit-tap-highlight-color: transparent;
}

.kd-banner-wrapper .kd-banner-btn :where(i, svg) {
    transition: transform 0.25s ease;
}

.kd-banner-wrapper .kd-banner-btn:hover :where(i, svg) {
    transform: translateX(4px);
}

.kd-banner-wrapper .kd-banner-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
    border-radius: 8px;
    padding: 6px 10px;
    margin-left: -10px;
}

/* --- Focus --- */
.kd-banner-item:focus-visible {
    outline: none;
    box-shadow: var(--kd-ban-shadow), 0 0 0 4px rgba(var(--base-color-rgb), 0.28);
}

.kd-banner-item:focus-within {
    box-shadow: var(--kd-ban-shadow), 0 0 0 4px rgba(var(--base-color-rgb), 0.18);
}

/* --- Global Hover Effects --- */
@media (hover: hover) and (pointer: fine) {
    .kd-banner-item:hover {
        transform: translate3d(0, var(--kd-ban-hover-lift), 0);
        box-shadow: var(--kd-ban-hover-shadow);
        --kd-ban-media-scale: var(--kd-ban-hover-scale);
        --kd-ban-overlay-alpha: 1;
        --kd-ban-btn-opacity: 1;
        --kd-ban-btn-ty: 0px;
    }


    .kd-banner-item:hover .kd-banner-overlay {
        background: var(--kd-ban-overlay-hover);
    }

    @supports (backdrop-filter: blur(10px)) {
        .kd-banner-item:hover .kd-banner-overlay {
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
        }
    }
}

.kd-banner-item:focus-visible,.kd-banner-item:focus-within {
    --kd-ban-overlay-alpha: 1;
    --kd-ban-btn-opacity: 1;
    --kd-ban-btn-ty: 0px;
}

.kd-banner-item:focus-visible .kd-banner-overlay,.kd-banner-item:focus-within .kd-banner-overlay {
    background: var(--kd-ban-overlay-hover);
}

/* --- Ratio Helpers --- */
.kd-ratio-1-1 { aspect-ratio: 1 / 1; }
.kd-ratio-4-3 { aspect-ratio: 4 / 3; }
.kd-ratio-16-9 { aspect-ratio: 16 / 9; }
.kd-ratio-21-9 { aspect-ratio: 21 / 9; }
.kd-ratio-portrait { aspect-ratio: 3 / 4; }

.kd-banner-item:where(.kd-ratio-1-1, .kd-ratio-4-3, .kd-ratio-16-9, .kd-ratio-21-9, .kd-ratio-portrait) :where(img, video) {
    height: 100%;
}

/* --- Mobile/Tap Reveal Helper --- */
@media (hover: none) {
    .kd-banner-item.kd-ban-touch-reveal {
        --kd-ban-overlay-alpha: 1;
        --kd-ban-btn-opacity: 1;
        --kd-ban-btn-ty: 0px;
    }
}

/* --- Style 01: Slide Up Info --- */
.kd-ban-style-01 {
    --kd-ban-overlay-alpha: 1;
    --kd-ban-overlay: linear-gradient(to top, rgba(0, 0, 0, 0.86) 0%, rgba(0, 0, 0, 0) 65%);
    --kd-ban-overlay-hover: linear-gradient(to top, rgba(0, 0, 0, 0.92) 0%, rgba(0, 0, 0, 0) 65%);
    --kd-ban-btn-opacity: 1;
    --kd-ban-btn-ty: 0px;
}

.kd-ban-style-01 .kd-banner-content {
    justify-content: flex-end;
}

.kd-ban-style-01 .kd-banner-text {
    max-height: 0px;
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.5s var(--kd-ban-ease), opacity 0.5s var(--kd-ban-ease);
}

@media (hover: hover) and (pointer: fine) {
    .kd-ban-style-01:hover .kd-banner-text {
        max-height: 5.6em;
        opacity: 1;
    }
}

/* --- Style 02: Icon Reveal --- */
.kd-ban-style-02 {
    --kd-ban-overlay: rgba(var(--base-color-rgb), 0.86);
    --kd-ban-overlay-hover: rgba(var(--base-color-rgb), 0.92);
}

.kd-ban-style-02 .kd-banner-content {
    align-items: center;
    justify-content: center;
    text-align: center;
}

.kd-ban-style-02 .kd-banner-icon {
    opacity: 0;
    transform: translate3d(0, 18px, 0) scale(0.96);
}

.kd-ban-style-02 .kd-banner-title {
    transform: translate3d(0, 10px, 0);
    transition: transform 0.45s var(--kd-ban-ease);
}

@media (hover: hover) and (pointer: fine) {
    .kd-ban-style-02:hover .kd-banner-icon {
        opacity: 1;
        transform: translate3d(0, 0, 0) scale(1);
    }

    .kd-ban-style-02:hover .kd-banner-title {
        transform: translate3d(0, 0, 0);
    }
}

/* --- Style 03: Corner Content --- */
.kd-ban-style-03 .kd-banner-content {
    justify-content: space-between;
    padding: 25px;
}

.kd-ban-style-03 .kd-top-content {
    display: flex;
    justify-content: space-between;
    width: 100%;
    align-items: flex-start;
    gap: 14px;
}

.kd-ban-style-03 .kd-banner-tag {
    background-color: rgba(255, 255, 255, 0.95);
    color: var(--dark-gray);
    padding: 7px 12px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    box-shadow: 0 12px 35px rgba(0, 0, 0, 0.18);
}

.kd-ban-style-03 .kd-banner-arrow {
    width: 44px;
    height: 44px;
    background-color: rgba(255, 255, 255, 0.95);
    color: var(--dark-gray);
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transform: scale(0.7);
    opacity: 0;
    transition: transform 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.3s ease;
    box-shadow: 0 12px 35px rgba(0, 0, 0, 0.18);
}

.kd-ban-style-03 .kd-bottom-content {
    transform: translate3d(0, 10px, 0);
    transition: transform 0.45s var(--kd-ban-ease);
}

@media (hover: hover) and (pointer: fine) {
    .kd-ban-style-03:hover .kd-banner-arrow {
        transform: scale(1);
        opacity: 1;
    }

    .kd-ban-style-03:hover .kd-bottom-content {
        transform: translate3d(0, 0, 0);
    }
}

/* --- Style 04: Floating Card --- */
.kd-ban-style-04 {
    --kd-ban-overlay: linear-gradient(to top, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0) 65%);
    --kd-ban-overlay-hover: linear-gradient(to top, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0) 65%);
}

.kd-ban-style-04 .kd-banner-content {
    justify-content: flex-end;
    padding: 20px;
}

.kd-ban-style-04 .kd-floating-card {
    width: 100%;
    background-color: rgba(255, 255, 255, 0.96);
    border: 1px solid rgba(0, 0, 0, 0.06);
    border-radius: var(--radius-4);
    padding: 24px;
    box-shadow: 0 18px 50px rgba(0, 0, 0, 0.18);
    transform: translate3d(0, 18px, 0);
    transition: transform 0.45s var(--kd-ban-ease), box-shadow 0.45s var(--kd-ban-ease);
    pointer-events: auto;
}

@supports (backdrop-filter: blur(10px)) {
    .kd-ban-style-04 .kd-floating-card {
        background-color: rgba(255, 255, 255, 0.72);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

.kd-ban-style-04 .kd-banner-title {
    color: var(--dark-gray);
    text-shadow: none;
}

.kd-ban-style-04 .kd-banner-text {
    color: var(--medium-gray);
    text-shadow: none;
    max-height: 0px;
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.45s var(--kd-ban-ease), opacity 0.45s var(--kd-ban-ease);
}

.kd-ban-style-04 .kd-banner-btn {
    color: var(--dark-gray);
    text-shadow: none;
    --kd-ban-btn-opacity: 1;
    --kd-ban-btn-ty: 0px;
}

.kd-ban-style-04 .kd-banner-btn:hover {
    color: var(--base-color);
}

@media (hover: hover) and (pointer: fine) {
    .kd-ban-style-04:hover .kd-floating-card {
        transform: translate3d(0, 0, 0);
        box-shadow: 0 22px 60px rgba(0, 0, 0, 0.22);
    }

    .kd-ban-style-04:hover .kd-banner-text {
        max-height: 6.2em;
        opacity: 1;
    }
}

/* --- Style 05: Product Hover Actions --- */
.kd-ban-style-05 {
    --kd-ban-overlay-alpha: 0;
}

.kd-ban-style-05 .kd-banner-overlay {
    display: none;
}

.kd-ban-style-05 .kd-action-buttons {
    position: absolute;
    right: 16px;
    top: 50%;
    transform: translate3d(0, -50%, 0);
    display: flex;
    flex-direction: column;
    gap: 10px;
    z-index: 3;
    pointer-events: auto;
}

.kd-ban-style-05 .kd-action-btn {
    width: 46px;
    height: 46px;
    background: rgba(255, 255, 255, 0.95);
    color: var(--dark-gray);
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transform: translate3d(14px, 0, 0);
    transition: transform 0.35s var(--kd-ban-ease), opacity 0.35s var(--kd-ban-ease), background-color 0.25s ease, color 0.25s ease;
    box-shadow: 0 14px 35px rgba(0, 0, 0, 0.18);
    border: 1px solid rgba(0, 0, 0, 0.06);
    -webkit-tap-highlight-color: transparent;
}

.kd-ban-style-05 .kd-action-btn:hover {
    background: var(--base-color);
    color: var(--white);
    border-color: var(--base-color);
}

.kd-ban-style-05:focus-within .kd-action-btn {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

@media (hover: hover) and (pointer: fine) {
    .kd-ban-style-05:hover .kd-action-btn {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }

    .kd-ban-style-05:hover .kd-action-btn:nth-child(1) { transition-delay: 0.05s; }
    .kd-ban-style-05:hover .kd-action-btn:nth-child(2) { transition-delay: 0.1s; }
    .kd-ban-style-05:hover .kd-action-btn:nth-child(3) { transition-delay: 0.15s; }
}

@media (hover: none) {
    .kd-ban-style-05 .kd-action-btn {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

/* --- Style 06: Shutter / Curtain --- */
.kd-ban-style-06 .kd-banner-overlay {
    display: none;
}

.kd-ban-style-06::before,.kd-ban-style-06::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    transition: transform 0.55s var(--kd-ban-ease);
    will-change: transform;
}

.kd-ban-style-06::before {
    background-color: rgba(var(--base-color-rgb), 0.88);
    transform: scaleX(0);
    transform-origin: left;
}

.kd-ban-style-06::after {
    background-color: rgba(0, 0, 0, 0.22);
    transform: scaleX(0);
    transform-origin: right;
    transition-delay: 0.08s;
}

.kd-ban-style-06 .kd-banner-content {
    align-items: center;
    justify-content: center;
    text-align: center;
    opacity: 0;
    transform: translate3d(0, 10px, 0);
    transition: opacity 0.35s ease 0.18s, transform 0.35s var(--kd-ban-ease) 0.18s;
    z-index: 3;
}

@media (hover: hover) and (pointer: fine) {
    .kd-ban-style-06:hover::before,
    .kd-ban-style-06:hover::after {
        transform: scaleX(1);
    }

    .kd-ban-style-06:hover .kd-banner-content {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

.kd-ban-style-06:focus-within::before,.kd-ban-style-06:focus-within::after {
    transform: scaleX(1);
}

.kd-ban-style-06:focus-within .kd-banner-content {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

/* --- Style 07: Switch Content --- */
.kd-ban-style-07 .kd-banner-content {
    justify-content: center;
    align-items: center;
    text-align: center;
}

.kd-ban-style-07 .kd-content-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    transition: transform 0.55s var(--kd-ban-ease), opacity 0.55s ease;
}

.kd-ban-style-07 .kd-content-hidden {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100%;
    padding: 0 30px;
    transform: translate(-50%, -50%) translate3d(0, 14px, 0);
    opacity: 0;
    transition: transform 0.55s var(--kd-ban-ease), opacity 0.55s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-ban-style-07:hover .kd-content-visible {
        opacity: 0;
        transform: translate3d(0, -14px, 0);
    }

    .kd-ban-style-07:hover .kd-content-hidden {
        opacity: 1;
        transform: translate(-50%, -50%) translate3d(0, 0, 0);
    }

    .kd-ban-style-07:hover :where(img, video) {
        filter: blur(3px) brightness(0.78);
    }
}

.kd-ban-style-07:focus-within .kd-content-visible {
    opacity: 0;
    transform: translate3d(0, -14px, 0);
}

.kd-ban-style-07:focus-within .kd-content-hidden {
    opacity: 1;
    transform: translate(-50%, -50%) translate3d(0, 0, 0);
}

/* --- Style 08: Hotspot --- */
.kd-banner-hotspot {
    position: absolute;
    width: 34px;
    height: 34px;
    z-index: 5;
    transform: translate(-50%, -50%);
    pointer-events: auto;
}

.kd-hotspot-dot {
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.96);
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.24), 0 16px 35px rgba(0, 0, 0, 0.22);
    color: var(--base-color);
    border: 1px solid rgba(0, 0, 0, 0.06);
    transition: transform 0.3s var(--kd-ban-ease), background-color 0.25s ease, color 0.25s ease;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

.kd-hotspot-dot::before,.kd-hotspot-dot::after {
    content: "";
    position: absolute;
    background-color: currentColor;
    border-radius: 2px;
    opacity: 0.95;
}

.kd-hotspot-dot::before {
    width: 14px;
    height: 2px;
}

.kd-hotspot-dot::after {
    width: 2px;
    height: 14px;
}

.kd-hotspot-dot:hover {
    transform: scale(1.12);
}

.kd-hotspot-dot:focus-visible {
    outline: none;
    box-shadow: 0 0 0 6px rgba(var(--base-color-rgb), 0.24), 0 16px 35px rgba(0, 0, 0, 0.22);
}

.kd-hotspot-pulse {
    position: absolute;
    inset: -12px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.9);
    opacity: 0;
    animation: kd-hotspot-pulse 2s infinite;
    pointer-events: none;
}

@keyframes kd-hotspot-pulse {
    0% { transform: scale(0.6); opacity: 0.9; }
    100% { transform: scale(1.35); opacity: 0; }
}

.kd-hotspot-tooltip {
    position: absolute;
    left: 50%;
    top: calc(100% + 10px);
    transform: translateX(-50%) translate3d(0, 6px, 0);
    background-color: rgba(0, 0, 0, 0.72);
    color: var(--white);
    padding: 10px 12px;
    border-radius: 12px;
    font-size: 0.82rem;
    line-height: 1.35;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease, transform 0.25s var(--kd-ban-ease);
    box-shadow: 0 18px 50px rgba(0, 0, 0, 0.3);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.kd-hotspot-tooltip::before {
    content: "";
    position: absolute;
    top: -6px;
    left: 50%;
    transform: translateX(-50%);
    width: 12px;
    height: 12px;
    background-color: rgba(0, 0, 0, 0.72);
    rotate: 45deg;
    border-radius: 3px;
}

.kd-banner-hotspot:hover .kd-hotspot-tooltip,.kd-banner-hotspot:focus-within .kd-hotspot-tooltip {
    opacity: 1;
    transform: translateX(-50%) translate3d(0, 0, 0);
}

/* --- Style 09: Gradient Border Glow --- */
.kd-ban-style-09 {
    --kd-ban-border: 1px solid rgba(0, 0, 0, 0.06);
}

.kd-ban-style-09::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    padding: 1px;
    background: linear-gradient(135deg, var(--base-color), var(--slate-blue));
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.45s var(--kd-ban-ease);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    mask-composite: exclude;
}

@media (hover: hover) and (pointer: fine) {
    .kd-ban-style-09:hover::after {
        opacity: 1;
    }
}

.kd-ban-style-09:focus-within::after {
    opacity: 1;
}

/* --- Style 10: Pan + Zoom (Parallax Feel) --- */
.kd-ban-style-10 {
    --kd-ban-hover-scale: 1.06;
}

@media (hover: hover) and (pointer: fine) {
    .kd-ban-style-10:hover {
        --kd-ban-media-tx: -2%;
        --kd-ban-media-ty: 0px;
    }
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-banner-item,
    .kd-banner-item :where(img, video),
    .kd-banner-overlay,
    .kd-banner-icon,
    .kd-banner-btn,
    .kd-ban-style-01 .kd-banner-text,
    .kd-ban-style-04 .kd-floating-card,
    .kd-ban-style-04 .kd-banner-text,
    .kd-ban-style-05 .kd-action-btn,
    .kd-ban-style-06::before,
    .kd-ban-style-06::after,
    .kd-ban-style-06 .kd-banner-content,
    .kd-ban-style-07 .kd-content-visible,
    .kd-ban-style-07 .kd-content-hidden,
    .kd-hotspot-dot,
    .kd-hotspot-pulse,
    .kd-hotspot-tooltip,
    .kd-ban-style-09::after {
        transition: none !important;
        animation: none !important;
        transform: none !important;
        filter: none !important;
    }

    .kd-banner-item {
        --kd-ban-media-scale: 1;
        --kd-ban-btn-opacity: 1;
        --kd-ban-btn-ty: 0px;
        --kd-ban-overlay-alpha: 1;
    }

    .kd-ban-style-06 .kd-banner-content {
        opacity: 1;
    }
}

/* ===================================
    26. Modals, Popups & Overlays
====================================== */

/* --- 1. Global Backdrop --- */
.kd-overlay-backdrop {
    --kd-overlay-z: 1040;
    --kd-overlay-bg: rgba(0, 0, 0, 0.65);
    --kd-overlay-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-overlay-dur: 0.35s;

    position: fixed;
    inset: 0;
    z-index: var(--kd-overlay-z);
    background-color: var(--kd-overlay-bg);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity var(--kd-overlay-dur) var(--kd-overlay-ease), visibility 0s linear var(--kd-overlay-dur);
}

@supports (backdrop-filter: blur(6px)) {
    .kd-overlay-backdrop {
        backdrop-filter: blur(8px) saturate(120%);
        -webkit-backdrop-filter: blur(8px) saturate(120%);
    }
}

.kd-overlay-backdrop.kd-is-active {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: opacity var(--kd-overlay-dur) var(--kd-overlay-ease), visibility 0s;
}

.kd-overlay-backdrop.kd-overlay-soft { --kd-overlay-bg: rgba(0, 0, 0, 0.5); }
.kd-overlay-backdrop.kd-overlay-strong { --kd-overlay-bg: rgba(0, 0, 0, 0.75); }

/* --- 2. Modal Wrapper --- */
.kd-modal-wrapper {
    --kd-modal-z: 1050;
    --kd-modal-padding: clamp(14px, 2vw, 24px);

    position: fixed;
    inset: 0;
    z-index: var(--kd-modal-z);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--kd-modal-padding);
    padding-top: max(var(--kd-modal-padding), env(safe-area-inset-top));
    padding-bottom: max(var(--kd-modal-padding), env(safe-area-inset-bottom));
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.25s ease, visibility 0s linear 0.25s;
}

.kd-modal-wrapper.kd-is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: opacity 0.25s ease, visibility 0s;
}

.kd-modal-align-top { align-items: flex-start; }
.kd-modal-align-bottom { align-items: flex-end; }

/* --- 3. Modal Dialog --- */
.kd-modal-dialog {
    --kd-modal-bg: var(--white);
    --kd-modal-color: var(--medium-gray);
    --kd-modal-title-color: var(--dark-gray);
    --kd-modal-radius: var(--radius-6);
    --kd-modal-width: 600px;
    --kd-modal-shadow: 0 26px 70px rgba(0, 0, 0, 0.28);
    --kd-modal-border: 1px solid rgba(0, 0, 0, 0.08);

    --kd-modal-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-modal-dur: 0.42s;
    --kd-modal-enter-y: 18px;
    --kd-modal-enter-scale: 0.98;

    position: relative;
    width: min(var(--kd-modal-width), 100%);
    background-color: var(--kd-modal-bg);
    color: var(--kd-modal-color);
    border-radius: var(--kd-modal-radius);
    border: var(--kd-modal-border);
    box-shadow: var(--kd-modal-shadow);
    display: flex;
    flex-direction: column;
    max-height: min(92vh, calc(100dvh - 2 * var(--kd-modal-padding)));
    overflow: hidden;
    transform: translate3d(0, var(--kd-modal-enter-y), 0) scale(var(--kd-modal-enter-scale));
    opacity: 0;
    transition: transform var(--kd-modal-dur) var(--kd-modal-ease), opacity var(--kd-modal-dur) var(--kd-modal-ease);
    will-change: transform;
}

.kd-modal-wrapper.kd-is-open .kd-modal-dialog {
    transform: translate3d(0, 0, 0) scale(1);
    opacity: 1;
}

.kd-modal-dialog.kd-modal-sm,.kd-modal-sm .kd-modal-dialog { --kd-modal-width: 420px; }

.kd-modal-dialog.kd-modal-lg,.kd-modal-lg .kd-modal-dialog { --kd-modal-width: 900px; }

.kd-modal-dialog.kd-modal-xl,.kd-modal-xl .kd-modal-dialog { --kd-modal-width: 1200px; }

/* --- 4. Modal Sections --- */
.kd-modal-header {
    --kd-modal-header-bg: var(--white);

    padding: 20px 28px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    background-color: var(--kd-modal-header-bg);
    flex-shrink: 0;
}

@supports (backdrop-filter: blur(8px)) {
    .kd-modal-style-glass .kd-modal-header {
        background-color: rgba(255, 255, 255, 0.7);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

.kd-modal-title {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 800;
    line-height: 1.2;
    color: var(--kd-modal-title-color);
}

.kd-modal-body {
    padding: 28px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    flex: 1 1 auto;
}

.kd-modal-footer {
    --kd-modal-footer-bg: var(--very-light-gray);

    padding: 18px 28px;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 12px;
    border-top: 1px solid rgba(0, 0, 0, 0.06);
    background-color: var(--kd-modal-footer-bg);
    flex-shrink: 0;
}

/* --- 5. Close Button --- */
.kd-modal-close-btn {
    width: 38px;
    height: 38px;
    border-radius: 999px;
    border: 1px solid rgba(0, 0, 0, 0.08);
    background: rgba(0, 0, 0, 0.04);
    color: var(--dark-gray);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform 0.25s ease, background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
    -webkit-tap-highlight-color: transparent;
}

.kd-modal-close-btn:empty::before {
    content: "";
    font-family: "bootstrap-icons";
    font-size: 1.1em;
    line-height: 1;
}

@media (hover: hover) and (pointer: fine) {
    .kd-modal-close-btn:hover {
        background: rgba(0, 0, 0, 0.07);
        border-color: rgba(0, 0, 0, 0.12);
        transform: rotate(90deg);
    }
}

.kd-modal-close-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
}

.kd-modal-close-btn:active {
    transform: scale(0.96);
}

/* --- 6. Modal Themes & Variants --- */
.kd-modal-style-glass .kd-modal-dialog {
    --kd-modal-bg: rgba(255, 255, 255, 0.78);
    --kd-modal-border: 1px solid rgba(255, 255, 255, 0.6);
    --kd-modal-shadow: 0 30px 80px rgba(0, 0, 0, 0.35);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-modal-style-glass .kd-modal-dialog {
        backdrop-filter: blur(14px);
        -webkit-backdrop-filter: blur(14px);
    }
}

.kd-modal-style-dark .kd-modal-dialog {
    --kd-modal-bg: #121316;
    --kd-modal-color: rgba(255, 255, 255, 0.78);
    --kd-modal-title-color: var(--white);
    --kd-modal-border: 1px solid rgba(255, 255, 255, 0.08);
    --kd-modal-shadow: 0 30px 90px rgba(0, 0, 0, 0.55);
}

.kd-modal-style-dark .kd-modal-header {
    border-bottom-color: rgba(255, 255, 255, 0.08);
    background-color: rgba(255, 255, 255, 0.02);
}

.kd-modal-style-dark .kd-modal-footer {
    border-top-color: rgba(255, 255, 255, 0.08);
    background-color: rgba(255, 255, 255, 0.02);
}

.kd-modal-style-dark .kd-modal-close-btn {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.12);
    color: var(--white);
}

@media (hover: hover) and (pointer: fine) {
    .kd-modal-style-dark .kd-modal-close-btn:hover {
        background: rgba(255, 255, 255, 0.1);
        border-color: rgba(255, 255, 255, 0.18);
    }
}

.kd-modal-sheet .kd-modal-wrapper,.kd-modal-wrapper.kd-modal-sheet {
    align-items: flex-end;
}

.kd-modal-sheet .kd-modal-dialog,.kd-modal-wrapper.kd-modal-sheet .kd-modal-dialog {
    --kd-modal-enter-y: 28px;
    --kd-modal-enter-scale: 1;
    width: min(820px, 100%);
    border-radius: 22px 22px 0 0;
    max-height: min(92vh, calc(100dvh - 2 * var(--kd-modal-padding)));
}

/* --- 7. Fullscreen Modal --- */
.kd-modal-fullscreen .kd-modal-dialog,.kd-modal-wrapper.kd-modal-fullscreen .kd-modal-dialog {
    width: 100%;
    height: 100%;
    max-height: 100%;
    border-radius: 0;
    transform: translate3d(0, 100%, 0);
    opacity: 1;
    border-left: 0;
    border-right: 0;
    border-top: 0;
}

.kd-modal-wrapper.kd-is-open.kd-modal-fullscreen .kd-modal-dialog,.kd-modal-wrapper.kd-modal-fullscreen.kd-is-open .kd-modal-dialog {
    transform: translate3d(0, 0, 0);
}

/* --- 8. Offcanvas Wrapper & Panel --- */
.kd-offcanvas-wrapper {
    --kd-offcanvas-z: 1060;
    position: fixed;
    inset: 0;
    z-index: var(--kd-offcanvas-z);
    pointer-events: none;
}

.kd-offcanvas-wrapper.kd-is-open {
    pointer-events: auto;
}

.kd-offcanvas-panel {
    --kd-offcanvas-width: 420px;
    --kd-offcanvas-bg: var(--white);
    --kd-offcanvas-border: 1px solid rgba(0, 0, 0, 0.08);
    --kd-offcanvas-shadow: 0 0 70px rgba(0, 0, 0, 0.22);
    --kd-offcanvas-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-offcanvas-dur: 0.5s;

    position: absolute;
    background-color: var(--kd-offcanvas-bg);
    border: var(--kd-offcanvas-border);
    box-shadow: var(--kd-offcanvas-shadow);
    display: flex;
    flex-direction: column;
    pointer-events: auto;
    transition: transform var(--kd-offcanvas-dur) var(--kd-offcanvas-ease);
    will-change: transform;
    max-height: 100dvh;
}

.kd-offcanvas-right {
    top: 0;
    right: 0;
    bottom: 0;
    width: min(var(--kd-offcanvas-width), 100%);
    transform: translate3d(100%, 0, 0);
}

.kd-offcanvas-left {
    top: 0;
    left: 0;
    bottom: 0;
    width: min(var(--kd-offcanvas-width), 100%);
    transform: translate3d(-100%, 0, 0);
}

.kd-offcanvas-top {
    top: 0;
    left: 0;
    right: 0;
    height: min(520px, 90dvh);
    transform: translate3d(0, -100%, 0);
}

.kd-offcanvas-bottom {
    left: 0;
    right: 0;
    bottom: 0;
    height: min(520px, 90dvh);
    transform: translate3d(0, 100%, 0);
    border-radius: 22px 22px 0 0;
}

.kd-offcanvas-wrapper.kd-is-open .kd-offcanvas-right,.kd-offcanvas-wrapper.kd-is-open .kd-offcanvas-left,.kd-offcanvas-wrapper.kd-is-open .kd-offcanvas-top,.kd-offcanvas-wrapper.kd-is-open .kd-offcanvas-bottom {
    transform: translate3d(0, 0, 0);
}

.kd-offcanvas-header {
    padding: 20px 22px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    flex-shrink: 0;
}

.kd-offcanvas-title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 800;
    color: var(--dark-gray);
}

.kd-offcanvas-body {
    padding: 22px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    flex: 1 1 auto;
}

.kd-offcanvas-footer {
    padding: 18px 22px;
    border-top: 1px solid rgba(0, 0, 0, 0.06);
    background-color: var(--very-light-gray);
    flex-shrink: 0;
}

/* --- 9. Video Popup --- */
.kd-video-popup-wrapper .kd-modal-dialog {
    --kd-modal-bg: transparent;
    --kd-modal-border: 0;
    --kd-modal-shadow: none;
    --kd-modal-width: 1100px;

    background-color: transparent;
    border: 0;
    box-shadow: none;
    overflow: visible;
    max-height: none;
}

.kd-video-popup-wrapper .kd-modal-header,.kd-video-popup-wrapper .kd-modal-footer {
    display: none;
}

.kd-video-popup-wrapper .kd-modal-close-btn {
    position: absolute;
    top: -52px;
    right: 0;
    width: 44px;
    height: 44px;
    background: rgba(0, 0, 0, 0.35);
    border-color: rgba(255, 255, 255, 0.18);
    color: var(--white);
}

@media (hover: hover) and (pointer: fine) {
    .kd-video-popup-wrapper .kd-modal-close-btn:hover {
        background: rgba(0, 0, 0, 0.55);
        border-color: rgba(255, 255, 255, 0.28);
        transform: rotate(90deg);
    }
}

.kd-video-responsive-container {
    width: 100%;
    border-radius: var(--radius-4);
    overflow: hidden;
    box-shadow: 0 26px 90px rgba(0, 0, 0, 0.6);
    background-color: rgba(0, 0, 0, 0.35);
}

@supports (aspect-ratio: 16 / 9) {
    .kd-video-responsive-container {
        aspect-ratio: 16 / 9;
        height: auto;
    }
}

@supports not (aspect-ratio: 16 / 9) {
    .kd-video-responsive-container {
        position: relative;
        height: 0;
        padding-bottom: 56.25%;
    }
}

.kd-video-responsive-container iframe {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

@supports not (aspect-ratio: 16 / 9) {
    .kd-video-responsive-container iframe {
        position: absolute;
        inset: 0;
    }
}

/* --- 10. GDPR / Cookie Bar --- */
.kd-gdpr-bar {
    --kd-gdpr-z: 1070;
    --kd-gdpr-bg: var(--white);
    --kd-gdpr-color: var(--medium-gray);
    --kd-gdpr-radius: var(--radius-6);
    --kd-gdpr-border: 1px solid rgba(0, 0, 0, 0.08);
    --kd-gdpr-shadow: 0 18px 60px rgba(0, 0, 0, 0.18);
    --kd-gdpr-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    position: fixed;
    left: 50%;
    bottom: max(18px, env(safe-area-inset-bottom));
    transform: translate3d(-50%, calc(100% + 40px), 0);
    width: min(920px, calc(100% - 40px));
    background-color: var(--kd-gdpr-bg);
    color: var(--kd-gdpr-color);
    padding: 20px 26px;
    border-radius: var(--kd-gdpr-radius);
    border: var(--kd-gdpr-border);
    box-shadow: var(--kd-gdpr-shadow);
    z-index: var(--kd-gdpr-z);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    opacity: 0;
    transition: transform 0.5s var(--kd-gdpr-ease), opacity 0.5s ease;
}

.kd-gdpr-bar.kd-is-active {
    transform: translate3d(-50%, 0, 0);
    opacity: 1;
}

.kd-gdpr-bar.kd-gdpr-dark {
    --kd-gdpr-bg: #121316;
    --kd-gdpr-color: rgba(255, 255, 255, 0.75);
    --kd-gdpr-border: 1px solid rgba(255, 255, 255, 0.1);
    --kd-gdpr-shadow: 0 22px 70px rgba(0, 0, 0, 0.55);
}

.kd-gdpr-bar.kd-gdpr-glass {
    --kd-gdpr-bg: rgba(255, 255, 255, 0.72);
    --kd-gdpr-border: 1px solid rgba(255, 255, 255, 0.55);
}

@supports (backdrop-filter: blur(10px)) {
    .kd-gdpr-bar.kd-gdpr-glass {
        backdrop-filter: blur(14px);
        -webkit-backdrop-filter: blur(14px);
    }
}

.kd-gdpr-content {
    font-size: 0.9rem;
    line-height: 1.55;
}

.kd-gdpr-content a {
    color: var(--base-color);
    text-decoration: underline;
    font-weight: 700;
}

.kd-gdpr-actions {
    display: flex;
    gap: 10px;
    flex-shrink: 0;
}

/* --- 11. Cookie Preferences (Inside Modal) --- */
.kd-gdpr-preferences-body {
    max-height: 60vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}

.kd-gdpr-toggle-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 18px;
    padding: 14px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.kd-gdpr-toggle-item:last-child { border-bottom: none; }

.kd-gdpr-toggle-info h5 {
    font-size: 1rem;
    margin: 0 0 5px 0;
    color: var(--dark-gray);
    font-weight: 800;
}

.kd-gdpr-toggle-info p {
    font-size: 0.86rem;
    margin: 0;
    color: var(--medium-gray);
    line-height: 1.5;
}

/* --- 12. Switch Toggle --- */
.kd-form-switch {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.kd-form-switch .kd-form-check-input {
    width: 3.1em;
    height: 1.7em;
    border-radius: 999px;
    background-color: rgba(0, 0, 0, 0.14);
    border: 1px solid rgba(0, 0, 0, 0.12);
    background-image: none;
    position: relative;
    margin: 0;
    cursor: pointer;
    transition: background-color 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}

.kd-form-switch .kd-form-check-input::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0.22em;
    width: 1.18em;
    height: 1.18em;
    border-radius: 999px;
    background-color: var(--white);
    transform: translate3d(0, -50%, 0);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.22);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.kd-form-switch .kd-form-check-input:checked {
    background-color: rgba(var(--base-color-rgb), 0.95);
    border-color: rgba(var(--base-color-rgb), 0.95);
}

.kd-form-switch .kd-form-check-input:checked::before {
    transform: translate3d(1.35em, -50%, 0);
}

.kd-form-switch .kd-form-check-input:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.2);
}

.kd-form-switch .kd-form-check-input:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

.kd-form-switch .kd-form-check-input:disabled::before {
    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18);
}

/* --- 13. Responsive --- */
@media (max-width: 767px) {
    .kd-modal-dialog {
        --kd-modal-width: 100%;
        max-height: min(95vh, calc(100dvh - 2 * var(--kd-modal-padding)));
    }

    .kd-modal-header { padding: 18px 20px; }
    .kd-modal-body { padding: 20px; }
    .kd-modal-footer { padding: 16px 20px; }

    .kd-offcanvas-panel.kd-offcanvas-right,
    .kd-offcanvas-panel.kd-offcanvas-left {
        width: min(88%, 420px);
    }

    .kd-gdpr-bar {
        left: 0;
        right: 0;
        bottom: 0;
        width: 100%;
        transform: translate3d(0, 100%, 0);
        border-radius: 20px 20px 0 0;
        padding: 22px;
        border-left: 0;
        border-right: 0;
        border-bottom: 0;
    }

    .kd-gdpr-bar.kd-is-active {
        transform: translate3d(0, 0, 0);
    }

    .kd-gdpr-actions {
        width: 100%;
        justify-content: flex-end;
        flex-wrap: wrap;
    }
}

/* --- 14. Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-overlay-backdrop,
    .kd-modal-wrapper,
    .kd-modal-dialog,
    .kd-offcanvas-panel,
    .kd-gdpr-bar,
    .kd-modal-close-btn,
    .kd-form-switch .kd-form-check-input,
    .kd-form-switch .kd-form-check-input::before {
        transition: none !important;
        animation: none !important;
        transform: none !important;
    }

    .kd-modal-dialog {
        opacity: 1;
    }

    .kd-overlay-backdrop {
        transition: none !important;
    }
}

/* ===================================
    27. Navigation Arrows & Directions
====================================== */

.kd-arrow-icon {
    --kd-arrow-size: 40px;
    --kd-arrow-radius: 50%;
    --kd-arrow-border: var(--extra-medium-gray);
    --kd-arrow-bg: transparent;
    --kd-arrow-color: var(--dark-gray);

    --kd-arrow-border-hover: var(--base-color);
    --kd-arrow-bg-hover: var(--base-color);
    --kd-arrow-color-hover: var(--white);

    width: var(--kd-arrow-size);
    height: var(--kd-arrow-size);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--kd-arrow-border);
    border-radius: var(--kd-arrow-radius);
    background-color: var(--kd-arrow-bg);
    color: var(--kd-arrow-color);
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    transition: background-color 200ms ease, color 200ms ease, border-color 200ms ease, transform 200ms ease, box-shadow 200ms ease;
}

.kd-arrow-icon i {
    font-size: 16px;
    line-height: 1;
}

.kd-arrow-icon:focus {
    outline: 0;
    box-shadow: none;
}

.kd-arrow-icon:focus-visible {
    box-shadow: 0 0 0 2px rgba(var(--base-color-rgb), 0.35);
}

@media (hover: hover) and (pointer: fine) {
    .kd-arrow-icon:hover {
        background-color: var(--kd-arrow-bg-hover);
        border-color: var(--kd-arrow-border-hover);
        color: var(--kd-arrow-color-hover);
        transform: translate3d(0, -1px, 0);
    }
}

.kd-arrow-icon:active {
    transform: translate3d(0, 0, 0);
}

.kd-arrow-sm {
    --kd-arrow-size: 30px;
}

.kd-arrow-sm i {
    font-size: 14px;
}

.kd-arrow-lg {
    --kd-arrow-size: 50px;
}

.kd-arrow-lg i {
    font-size: 20px;
}

.kd-link-arrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    color: var(--dark-gray);
    text-decoration: none;
    transition: color 200ms ease;
}

.kd-link-arrow i {
    transition: transform 200ms ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-link-arrow:hover {
        color: var(--base-color);
    }

    .kd-link-arrow:hover i {
        transform: translate3d(5px, 0, 0);
    }
}

.kd-link-arrow:focus {
    outline: 0;
}

.kd-link-arrow:focus-visible {
    text-decoration: underline;
    text-underline-offset: 4px;
    color: var(--base-color);
}

.kd-arrow-curved-style-01 {
    --kd-curved-arrow-color: var(--dark-gray);

    position: absolute;
    width: 60px;
    height: auto;
    fill: none;
    stroke: var(--kd-curved-arrow-color);
    stroke-width: 1.5;
    pointer-events: none;
    opacity: 0.9;
}

@media (max-width: 767px) {
    .kd-arrow-curved-style-01 { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    .kd-arrow-icon,
    .kd-link-arrow i {
        transition: none !important;
    }

    .kd-arrow-icon:hover,
    .kd-link-arrow:hover i {
        transform: none;
    }
}

/* ===================================
    28. Parallax Scrolling Elements
====================================== */

.kd-parallax-wrapper {
    --kd-parallax-min-h: 400px;
    --kd-parallax-radius: var(--radius-6);
    --kd-parallax-bg: var(--very-light-gray);
    --kd-parallax-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-parallax-bleed: 18%;
    --kd-parallax-overlay: linear-gradient(to bottom, rgba(0,0,0,0.25), rgba(0,0,0,0.35));

    position: relative;
    min-height: var(--kd-parallax-min-h);
    border-radius: var(--kd-parallax-radius);
    background-color: var(--kd-parallax-bg);
    overflow: hidden;
    isolation: isolate;
    transform: translateZ(0);
    contain: layout paint;
}

@supports (overflow: clip) {
    .kd-parallax-wrapper { overflow: clip; }
}

.kd-parallax-content {
    position: relative;
    z-index: 2;
}

.kd-parallax-media {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    transform: translateZ(0);
    will-change: transform;
}

.kd-parallax-media :where(img, video) {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    transform: translateZ(0);
    backface-visibility: hidden;
}

.kd-parallax-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: var(--kd-parallax-overlay);
    opacity: 0;
    transition: opacity 0.35s var(--kd-parallax-ease);
}

.kd-parallax-overlay.kd-is-visible { opacity: 1; }

.kd-parallax-edge-fade {
    mask-image: linear-gradient(to bottom, transparent 0%, black 12%, black 88%, transparent 100%);
    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 12%, black 88%, transparent 100%);
}

/* --- Style 01: CSS-Only Background (Classic Fixed) --- */
.kd-parallax-bg-fixed {
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    background-attachment: fixed;
}

@media (pointer: coarse), (hover: none) {
    .kd-parallax-bg-fixed { background-attachment: scroll; }
}

/* --- Style 02: Image Scaling / Translate (Scroll-Driven via JS or Timeline) --- */
.kd-parallax-img-scale {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(-1 * var(--kd-parallax-bleed));
    height: calc(100% + (var(--kd-parallax-bleed) * 2));
    width: 100%;
    object-fit: cover;
    transform: translate3d(0, 0, 0) scale(1.08);
    transition: transform 0.08s linear;
    will-change: transform;
    z-index: 0;
    pointer-events: none;
}

.kd-parallax-img-scale.kd-parallax-soft-zoom { transform: translate3d(0, 0, 0) scale(1.04); }
.kd-parallax-img-scale.kd-parallax-strong-zoom { transform: translate3d(0, 0, 0) scale(1.14); }

/* Progressive Enhancement: CSS Scroll-Driven Animations */
@supports (view-timeline-name: --kd) and (animation-timeline: --kd) {
    .kd-parallax-css-timeline {
        view-timeline-name: --kd-parallax;
        view-timeline-axis: block;
    }

    .kd-parallax-css-timeline .kd-parallax-img-scale {
        animation: kd-parallax-zoom 1s linear both;
        animation-timeline: --kd-parallax;
        animation-range: entry 0% exit 100%;
        transition: none;
    }

    @keyframes kd-parallax-zoom {
        from { transform: translate3d(0, 18px, 0) scale(1.12); }
        to { transform: translate3d(0, -18px, 0) scale(1.04); }
    }
}

/* Optional Ambient Motion (No Scroll Needed) */
.kd-parallax-ambient .kd-parallax-img-scale {
    animation: kd-parallax-ambient 18s var(--kd-parallax-ease) infinite alternate;
    transition: none;
}

@keyframes kd-parallax-ambient {
    from { transform: translate3d(0, 10px, 0) scale(1.10); }
    to { transform: translate3d(0, -10px, 0) scale(1.04); }
}

/* --- Style 03: Element Parallax (Floating Items) --- */
.kd-parallax-element {
    position: absolute;
    z-index: 2;
    will-change: transform;
    transform: translate3d(0, 0, 0);
}

.kd-parallax-element.kd-parallax-blur {
    filter: blur(2px);
    opacity: 0.9;
}

.kd-parallax-element.kd-parallax-glow {
    filter: drop-shadow(0 20px 50px rgba(var(--base-color-rgb), 0.18));
}

/* CSS Fallback Float */
.kd-parallax-float-slow { animation: kd-parallax-float-y 7s ease-in-out infinite; }
.kd-parallax-float-fast { animation: kd-parallax-float-y 4.8s ease-in-out infinite; }
.kd-parallax-float-x { animation: kd-parallax-float-x 6.5s ease-in-out infinite; }
.kd-parallax-float-rotate { animation: kd-parallax-float-rotate 9s ease-in-out infinite; }

@keyframes kd-parallax-float-y { 0%, 100% { transform: translate3d(0, 0, 0); } 50% { transform: translate3d(0, -20px, 0); } }
@keyframes kd-parallax-float-x { 0%, 100% { transform: translate3d(0, 0, 0); } 50% { transform: translate3d(16px, 0, 0); } }
@keyframes kd-parallax-float-rotate { 0%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); } 50% { transform: translate3d(0, -10px, 0) rotate(2deg); } }

/* --- Style 04: Horizontal Scroll Marquee (Modern) --- */
.kd-parallax-marquee {
    --kd-marquee-dur: 22s;
    --kd-marquee-gap: clamp(24px, 4vw, 72px);
    --kd-marquee-mask: linear-gradient(to right, transparent, black 10%, black 90%, transparent);

    position: relative;
    display: flex;
    overflow: hidden;
    user-select: none;
    white-space: nowrap;
    gap: 0;
    mask-image: var(--kd-marquee-mask);
    -webkit-mask-image: var(--kd-marquee-mask);
}

.kd-parallax-marquee-inner {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: var(--kd-marquee-gap);
    padding-right: var(--kd-marquee-gap);
    animation: kd-parallax-marquee var(--kd-marquee-dur) linear infinite;
    will-change: transform;
    transform: translate3d(0, 0, 0);
}

.kd-parallax-marquee-inner.kd-reverse { animation-direction: reverse; }

@media (hover: hover) and (pointer: fine) {
    .kd-parallax-marquee.kd-pause-on-hover:hover .kd-parallax-marquee-inner { animation-play-state: paused; }
}

@keyframes kd-parallax-marquee {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(-50%, 0, 0); }
}

.kd-marquee-text {
    font-size: clamp(2.75rem, 7.5vw, 10rem);
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: -0.02em;
    line-height: 1;
    white-space: nowrap;
    color: transparent;
    -webkit-text-stroke: 2px rgba(0,0,0,0.10);
}

.kd-marquee-text.kd-filled {
    color: var(--dark-gray);
    -webkit-text-stroke: 0;
}

.kd-marquee-text.kd-soft {
    -webkit-text-stroke: 2px rgba(var(--base-color-rgb), 0.22);
}

/* --- Style 05: Reveal Curtain (Footer Reveal) --- */
.kd-parallax-curtain {
    --kd-curtain-h: 400px;
    --kd-curtain-shadow: 0 18px 70px rgba(0, 0, 0, 0.18);
}

.kd-parallax-curtain-spacer {
    position: relative;
    z-index: 2;
    background-color: var(--white);
    margin-bottom: var(--kd-curtain-h);
    box-shadow: var(--kd-curtain-shadow);
}

.kd-parallax-curtain-footer {
    position: fixed;
    left: 0;
    bottom: 0;
    width: 100%;
    height: var(--kd-curtain-h);
    z-index: 1;
    visibility: hidden;
    transform: translateZ(0);
}

.kd-parallax-curtain-spacer.kd-is-visible + .kd-parallax-curtain-footer { visibility: visible; }

@media (max-width: 991px) {
    .kd-parallax-curtain { --kd-curtain-h: 340px; }
}

@media (max-width: 767px) {
    .kd-parallax-curtain { --kd-curtain-h: 300px; }
    .kd-parallax-marquee { --kd-marquee-dur: 26s; }
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-parallax-marquee-inner,
    .kd-parallax-float-slow,
    .kd-parallax-float-fast,
    .kd-parallax-float-x,
    .kd-parallax-float-rotate,
    .kd-parallax-ambient .kd-parallax-img-scale {
        animation: none !important;
    }

    .kd-parallax-bg-fixed { background-attachment: scroll !important; }
    .kd-parallax-img-scale { transition: none !important; transform: none !important; }
    .kd-parallax-overlay { transition: none !important; }
}


/* ===================================
    29. Particle Effects & Canvas
====================================== */

.kd-particles-wrapper {
    --kd-particles-opacity: 1;
    --kd-particles-blend: normal;

    position: absolute;
    inset: 0;
    overflow: hidden;
    z-index: 0;
    pointer-events: none;
    opacity: var(--kd-particles-opacity);
    mix-blend-mode: var(--kd-particles-blend);
    transform: translateZ(0);
    contain: paint;
}

.kd-particles-canvas {
    display: block;
    width: 100%;
    height: 100%;
}

/* --- Style 01: CSS Gradient Blobs (No JS) --- */
.kd-particles-blobs {
    --kd-blob-blur: 70px;
    --kd-blob-opacity: 0.65;
    --kd-blob-blend: multiply;

    background: var(--very-light-gray);
}

.kd-particles-blobs .kd-particle-blob {
    position: absolute;
    border-radius: 50%;
    opacity: var(--kd-blob-opacity);
    filter: blur(var(--kd-blob-blur));
    mix-blend-mode: var(--kd-blob-blend);
    transform: translate3d(0, 0, 0) scale(1);
    will-change: transform;
    animation: kd-particles-blob 14s ease-in-out infinite alternate;
}

.kd-particles-blobs .kd-particle-blob-1 {
    top: -18%;
    left: -18%;
    width: 52vw;
    height: 52vw;
    background: radial-gradient(circle at 30% 30%, rgba(var(--base-color-rgb), 0.55), transparent 60%);
    animation-duration: 13s;
}

.kd-particles-blobs .kd-particle-blob-2 {
    bottom: -18%;
    right: -18%;
    width: 46vw;
    height: 46vw;
    background: radial-gradient(circle at 60% 40%, rgba(0, 200, 255, 0.28), transparent 62%);
    animation-duration: 17s;
    animation-direction: alternate-reverse;
}

.kd-particles-blobs .kd-particle-blob-3 {
    top: 34%;
    left: 42%;
    width: 34vw;
    height: 34vw;
    background: radial-gradient(circle at 45% 55%, rgba(255, 0, 120, 0.18), transparent 65%);
    animation-duration: 19s;
}

.kd-particles-blobs .kd-particle-blob-4 {
    top: 10%;
    right: 8%;
    width: 22vw;
    height: 22vw;
    background: radial-gradient(circle at 40% 40%, rgba(var(--base-color-rgb), 0.22), transparent 62%);
    animation-duration: 16s;
}

@keyframes kd-particles-blob {
    0% { transform: translate3d(0, 0, 0) scale(1); }
    33% { transform: translate3d(34px, -42px, 0) scale(1.08); }
    66% { transform: translate3d(-26px, 22px, 0) scale(0.95); }
    100% { transform: translate3d(0, 0, 0) scale(1.02); }
}

/* --- Style 02: CSS Snow / Dust (No JS) --- */
.kd-particles-snow {
    --kd-snow-opacity: 0.55;
    --kd-snow-dur-1: 18s;
    --kd-snow-dur-2: 28s;
    --kd-snow-size-1: 520px 520px;
    --kd-snow-size-2: 760px 760px;

    position: absolute;
    inset: 0;
    opacity: var(--kd-snow-opacity);
    background-repeat: repeat;
    background-size: var(--kd-snow-size-1);
    background-image:
        radial-gradient(2px 2px at 12% 18%, rgba(255,255,255,0.85) 55%, transparent 56%),
        radial-gradient(1.5px 1.5px at 42% 62%, rgba(255,255,255,0.55) 55%, transparent 56%),
        radial-gradient(2.5px 2.5px at 78% 30%, rgba(255,255,255,0.45) 55%, transparent 56%),
        radial-gradient(1.6px 1.6px at 22% 82%, rgba(255,255,255,0.65) 55%, transparent 56%);
    animation: kd-particles-snow-1 var(--kd-snow-dur-1) linear infinite;
}

.kd-particles-snow::after {
    content: "";
    position: absolute;
    inset: 0;
    opacity: 0.7;
    background-repeat: repeat;
    background-size: var(--kd-snow-size-2);
    background-image:
        radial-gradient(1.2px 1.2px at 18% 28%, rgba(255,255,255,0.55) 55%, transparent 56%),
        radial-gradient(2px 2px at 60% 40%, rgba(255,255,255,0.40) 55%, transparent 56%),
        radial-gradient(1.6px 1.6px at 84% 78%, rgba(255,255,255,0.35) 55%, transparent 56%),
        radial-gradient(1.4px 1.4px at 35% 70%, rgba(255,255,255,0.45) 55%, transparent 56%);
    animation: kd-particles-snow-2 var(--kd-snow-dur-2) linear infinite;
}

@keyframes kd-particles-snow-1 {
    from { background-position: 0 0; }
    to { background-position: 120px 560px; }
}

@keyframes kd-particles-snow-2 {
    from { background-position: 0 0; }
    to { background-position: -140px 760px; }
}

/* --- Style 03: Mesh Gradient (Aurora) --- */
.kd-particles-mesh {
    --kd-mesh-opacity: 0.85;
    position: absolute;
    inset: 0;
    opacity: var(--kd-mesh-opacity);
    filter: blur(36px);
    transform: scale(1.12) translateZ(0);
    background-image:
        radial-gradient(at 0% 0%, rgba(var(--base-color-rgb), 0.32) 0px, transparent 52%),
        radial-gradient(at 100% 0%, rgba(255, 0, 120, 0.18) 0px, transparent 52%),
        radial-gradient(at 100% 100%, rgba(0, 200, 255, 0.18) 0px, transparent 52%),
        radial-gradient(at 0% 100%, rgba(120, 80, 255, 0.18) 0px, transparent 52%);
    animation: kd-particles-mesh 14s ease-in-out infinite alternate;
    will-change: transform;
}

@keyframes kd-particles-mesh {
    from { transform: scale(1.12) translate3d(-10px, -6px, 0); }
    to { transform: scale(1.12) translate3d(10px, 8px, 0); }
}

/* --- Style 04: Noise Overlay (Texture) --- */
.kd-overlay-noise {
    --kd-noise-opacity: 0.06;

    position: absolute;
    inset: 0;
    z-index: 10;
    pointer-events: none;
    opacity: var(--kd-noise-opacity);
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
    background-size: 220px 220px;
    mix-blend-mode: overlay;
}

/* --- Style 05: Grid Lines (Architectural) --- */
.kd-particles-grid-lines {
    --kd-grid-minor: rgba(0, 0, 0, 0.05);
    --kd-grid-major: rgba(0, 0, 0, 0.08);

    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(to right, var(--kd-grid-minor) 1px, transparent 1px),
        linear-gradient(to bottom, var(--kd-grid-minor) 1px, transparent 1px),
        linear-gradient(to right, var(--kd-grid-major) 1px, transparent 1px),
        linear-gradient(to bottom, var(--kd-grid-major) 1px, transparent 1px);
    background-size:
        40px 40px,
        40px 40px,
        200px 200px,
        200px 200px;
    mask-image: linear-gradient(to bottom, black 35%, transparent 100%);
    -webkit-mask-image: linear-gradient(to bottom, black 35%, transparent 100%);
    opacity: 0.9;
}

/* --- Blend Helpers --- */
.kd-particles-blend-soft { --kd-particles-blend: soft-light; }
.kd-particles-blend-screen { --kd-particles-blend: screen; }
.kd-particles-blend-normal { --kd-particles-blend: normal; }

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-particles-blobs .kd-particle-blob,
    .kd-particles-snow,
    .kd-particles-snow::after,
    .kd-particles-mesh {
        animation: none !important;
        transform: none !important;
    }
}

/* ===================================
    30. Pricing Tables & Plan Cards
====================================== */

/* --- Base Wrapper --- */
.kd-pricing-wrapper {
    --kd-price-gap: 30px;
    --kd-price-radius: var(--radius-6);
    --kd-price-bg: var(--white);
    --kd-price-color: var(--medium-gray);
    --kd-price-title: var(--dark-gray);
    --kd-price-primary: var(--base-color);

    --kd-price-border: 1px solid rgba(0, 0, 0, 0.08);
    --kd-price-shadow: 0 10px 40px rgba(0, 0, 0, 0.06);
    --kd-price-shadow-hover: 0 22px 70px rgba(0, 0, 0, 0.14);

    --kd-price-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-price-trans: transform 0.35s var(--kd-price-ease), box-shadow 0.35s var(--kd-price-ease), border-color 0.35s var(--kd-price-ease), background-color 0.35s var(--kd-price-ease);

    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
    gap: var(--kd-price-gap);
    width: 100%;
    align-items: stretch;
    container-type: inline-size;
}

.kd-pricing-wrapper.kd-pricing-auto-height { align-items: start; }

/* --- Base Card --- */
.kd-pricing-card {
    --kd-price-pad-y: 46px;
    --kd-price-pad-x: 36px;

    position: relative;
    background-color: var(--kd-price-bg);
    border-radius: var(--kd-price-radius);
    border: var(--kd-price-border);
    box-shadow: var(--kd-price-shadow);
    padding: var(--kd-price-pad-y) var(--kd-price-pad-x);

    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    height: 100%;

    overflow: hidden;
    isolation: isolate;
    transform: translateZ(0);
    backface-visibility: hidden;
    transition: var(--kd-price-trans);
}

/* Subtle spotlight / sheen layer */
.kd-pricing-card::before {
    content: "";
    position: absolute;
    inset: -1px;
    background:
        radial-gradient(900px circle at 50% 0%, rgba(var(--base-color-rgb), 0.14), transparent 42%),
        radial-gradient(700px circle at 0% 100%, rgba(0, 0, 0, 0.06), transparent 48%);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.35s var(--kd-price-ease);
    z-index: 0;
}

.kd-pricing-card > * { position: relative; z-index: 1; }

/* Focus (A11y) */
.kd-pricing-card:focus-within {
    border-color: rgba(var(--base-color-rgb), 0.35);
    box-shadow:
        0 0 0 4px rgba(var(--base-color-rgb), 0.14),
        var(--kd-price-shadow);
}

.kd-pricing-card:focus-within::before { opacity: 1; }

/* --- Elements --- */
.kd-pricing-header {
    width: 100%;
    margin-bottom: 24px;
}

.kd-pricing-icon {
    font-size: 3rem;
    color: var(--kd-price-primary);
    margin-bottom: 18px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.kd-pricing-title {
    font-size: 1.1rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--kd-price-title);
    margin-bottom: 8px;
}

.kd-pricing-subtitle {
    font-size: 0.92rem;
    color: var(--kd-price-color);
    font-weight: 500;
    margin: 0;
}

/* Price */
.kd-pricing-price {
    display: inline-flex;
    align-items: flex-start;
    justify-content: center;
    color: var(--kd-price-title);
    margin-bottom: 26px;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

.kd-pricing-price .kd-currency {
    font-size: 1.25rem;
    font-weight: 700;
    margin-top: 10px;
    margin-right: 6px;
    opacity: 0.9;
}

.kd-pricing-price .kd-amount {
    font-size: clamp(3rem, 2.6rem + 1.2vw, 3.8rem);
    font-weight: 950;
    letter-spacing: -0.04em;
}

.kd-pricing-price .kd-period {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--kd-price-color);
    align-self: flex-end;
    margin-bottom: 10px;
    margin-left: 8px;
    opacity: 0.9;
}

/* Optional: tiny note under price */
.kd-pricing-note {
    margin: -10px 0 22px 0;
    font-size: 0.85rem;
    color: var(--kd-price-color);
    opacity: 0.9;
}

/* Features List */
.kd-pricing-features {
    --kd-feat-gap: 12px;
    --kd-feat-line: rgba(0, 0, 0, 0.06);

    list-style: none;
    padding: 0;
    margin: 0 0 34px 0;
    width: 100%;
    text-align: left;
}

.kd-pricing-features li {
    padding: 10px 0;
    color: var(--kd-price-color);
    font-size: 0.96rem;
    display: flex;
    align-items: flex-start;
    gap: var(--kd-feat-gap);
}

.kd-pricing-features.kd-divided li:not(:last-child) {
    border-bottom: 1px solid var(--kd-feat-line);
}

.kd-pricing-features li i {
    color: var(--kd-price-primary);
    font-size: 1.05em;
    flex-shrink: 0;
    margin-top: 2px;
}

.kd-pricing-features li strong { color: var(--kd-price-title); font-weight: 800; }

.kd-pricing-features li.disabled {
    color: rgba(0, 0, 0, 0.42);
    text-decoration: line-through;
    text-decoration-thickness: 1px;
    text-decoration-color: rgba(0, 0, 0, 0.25);
}

.kd-pricing-features li.disabled i {
    color: rgba(0, 0, 0, 0.22);
}

.kd-pricing-footer {
    margin-top: auto;
    width: 100%;
}

/* --- Hover / Micro-interactions (Global, subtle) --- */
@media (hover: hover) and (pointer: fine) {
    .kd-pricing-card:hover::before { opacity: 1; }
}

/* --- State: Disabled Plan --- */
.kd-pricing-card.kd-is-disabled {
    opacity: 0.65;
    filter: grayscale(15%);
}

.kd-pricing-card.kd-is-disabled :where(a, button) {
    pointer-events: none;
}

/* --- State: Popular / Featured --- */
.kd-pricing-card.kd-is-popular {
    z-index: 2;
    border-color: rgba(var(--base-color-rgb), 0.55);
    box-shadow: 0 30px 90px rgba(var(--base-color-rgb), 0.16);
}

.kd-pricing-card.kd-is-popular::before { opacity: 1; }

/* Badge (top center) */
.kd-popular-badge {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translate(-50%, -55%);
    background-color: var(--kd-price-primary);
    color: var(--white);
    padding: 7px 18px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    box-shadow: 0 10px 28px rgba(var(--base-color-rgb), 0.35);
    z-index: 3;
}

/* Ribbon (corner) */
.kd-popular-ribbon {
    position: absolute;
    top: 18px;
    right: -10px;
    background: var(--kd-price-primary);
    color: var(--white);
    padding: 6px 14px;
    font-size: 0.72rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    box-shadow: 0 10px 25px rgba(0,0,0,0.12);
    z-index: 3;
}

.kd-popular-ribbon::after {
    content: "";
    position: absolute;
    bottom: -10px;
    right: 0;
    border-top: 10px solid rgba(0,0,0,0.25); /* Fallback */
    border-right: 10px solid transparent;
}

@supports (color: color-mix(in srgb, #fff, #000)) {
    .kd-popular-ribbon::after {
        border-top-color: color-mix(in srgb, var(--kd-price-primary) 70%, #000 30%);
    }
}

/* --- Style 01: Classic Clean (Shadow Hover) --- */
@media (hover: hover) and (pointer: fine) {
    .kd-pricing-style-01 .kd-pricing-card:hover {
        transform: translateY(-10px);
        box-shadow: var(--kd-price-shadow-hover);
        border-color: transparent;
    }
}

/* --- Style 02: Featured Scale (Popular) --- */
.kd-pricing-style-02 { align-items: center; }

.kd-pricing-style-02 .kd-pricing-card.kd-is-popular {
    transform: scale(1.06);
}

@media (hover: hover) and (pointer: fine) {
    .kd-pricing-style-02 .kd-pricing-card.kd-is-popular:hover {
        transform: scale(1.06) translateY(-6px);
    }
}

/* --- Style 03: Dark / Gradient --- */
.kd-pricing-style-03 .kd-pricing-card {
    --kd-price-bg: #141414;
    --kd-price-border: 1px solid rgba(255, 255, 255, 0.10);
    --kd-price-shadow: 0 18px 60px rgba(0,0,0,0.35);
    color: rgba(255, 255, 255, 0.72);
}

.kd-pricing-style-03 .kd-pricing-title,.kd-pricing-style-03 .kd-pricing-price { color: var(--white); }

.kd-pricing-style-03 .kd-pricing-subtitle { color: rgba(255, 255, 255, 0.55); }
.kd-pricing-style-03 .kd-pricing-note { color: rgba(255, 255, 255, 0.60); }

.kd-pricing-style-03 .kd-pricing-features { --kd-feat-line: rgba(255, 255, 255, 0.10); }
.kd-pricing-style-03 .kd-pricing-features li { color: rgba(255, 255, 255, 0.80); }
.kd-pricing-style-03 .kd-pricing-features li strong { color: rgba(255,255,255,0.95); }
.kd-pricing-style-03 .kd-pricing-features li.disabled { color: rgba(255,255,255,0.35); text-decoration-color: rgba(255,255,255,0.25); }
.kd-pricing-style-03 .kd-pricing-features li.disabled i { color: rgba(255,255,255,0.25); }

.kd-pricing-style-03 .kd-pricing-card.kd-is-popular {
    background: linear-gradient(145deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02));
    border-color: rgba(var(--base-color-rgb), 0.8);
}

/* --- Style 04: Horizontal Strip (List View) --- */
.kd-pricing-style-04 { grid-template-columns: 1fr; }

.kd-pricing-style-04 .kd-pricing-card {
    display: grid;
    grid-template-columns: 1.2fr auto 1.6fr auto;
    align-items: center;
    gap: clamp(16px, 2.5vw, 44px);
    text-align: left;
    padding: 30px 38px;
}

.kd-pricing-style-04 .kd-pricing-header {
    margin: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.kd-pricing-style-04 .kd-pricing-icon { margin-bottom: 12px; }
.kd-pricing-style-04 .kd-pricing-price { margin: 0; }
.kd-pricing-style-04 .kd-pricing-features { margin: 0; }
.kd-pricing-style-04 .kd-pricing-footer { width: auto; }

@container (max-width: 880px) {
    .kd-pricing-style-04 .kd-pricing-card {
        grid-template-columns: 1fr;
        text-align: center;
        justify-items: center;
    }
    .kd-pricing-style-04 .kd-pricing-header { align-items: center; }
    .kd-pricing-style-04 .kd-pricing-features { text-align: left; }
}

/* --- Style 05: Minimal (No Border) --- */
.kd-pricing-style-05 .kd-pricing-card {
    border: none;
    box-shadow: none;
    background-color: transparent;
}

.kd-pricing-style-05 .kd-pricing-price { color: var(--kd-price-primary); }

@media (hover: hover) and (pointer: fine) {
    .kd-pricing-style-05 .kd-pricing-card:hover {
        background-color: var(--white);
        box-shadow: 0 18px 60px rgba(0, 0, 0, 0.10);
        transform: translateY(-6px);
    }
}

/* --- Style 06: Glassmorphism (Hero / Dark bg) --- */
.kd-pricing-style-06 .kd-pricing-card {
    background: rgba(255, 255, 255, 0.65);
    border: 1px solid rgba(255, 255, 255, 0.55);
    box-shadow: 0 18px 70px rgba(0,0,0,0.10);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

@media (hover: hover) and (pointer: fine) {
    .kd-pricing-style-06 .kd-pricing-card:hover {
        transform: translateY(-8px);
        box-shadow: 0 26px 90px rgba(0,0,0,0.16);
    }
}

/* --- Style 07: Gradient Border (Premium) --- */
.kd-pricing-style-07 .kd-pricing-card {
    border: 1px solid transparent;
    background:
        linear-gradient(var(--kd-price-bg), var(--kd-price-bg)) padding-box,
        linear-gradient(135deg, rgba(var(--base-color-rgb), 1), var(--slate-blue)) border-box;
}

@media (hover: hover) and (pointer: fine) {
    .kd-pricing-style-07 .kd-pricing-card:hover {
        transform: translateY(-10px);
        box-shadow: 0 28px 95px rgba(var(--base-color-rgb), 0.18);
    }
}

/* --- Helpers: Switch Toggle --- */
.kd-pricing-switch-container {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 14px;
    margin-bottom: 50px;
    flex-wrap: wrap;
}

.kd-pricing-label {
    font-weight: 800;
    color: var(--dark-gray);
    cursor: pointer;
    opacity: 0.55;
    transition: opacity 0.25s ease, color 0.25s ease;
}

.kd-pricing-label.active {
    opacity: 1;
    color: var(--kd-price-primary);
}

/* Accessible hide (keeps focus) */
.kd-pricing-checkbox {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

.kd-pricing-switch {
    position: relative;
    width: 56px;
    height: 30px;
    background-color: rgba(0,0,0,0.12);
    border-radius: 999px;
    cursor: pointer;
    transition: background-color 0.25s ease;
}

.kd-pricing-switch::after {
    content: "";
    position: absolute;
    top: 4px;
    left: 4px;
    width: 22px;
    height: 22px;
    background-color: var(--white);
    border-radius: 50%;
    box-shadow: 0 6px 16px rgba(0,0,0,0.18);
    transition: transform 0.3s var(--kd-price-ease);
}

.kd-pricing-checkbox:focus-visible + .kd-pricing-switch {
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
}

.kd-pricing-checkbox:checked + .kd-pricing-switch { background-color: var(--kd-price-primary); }
.kd-pricing-checkbox:checked + .kd-pricing-switch::after { transform: translateX(26px); }

.kd-pricing-save-badge {
    background-color: #d1fae5;
    color: #065f46;
    font-size: 0.72rem;
    padding: 5px 10px;
    border-radius: 8px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

/* --- Responsive --- */
@media (max-width: 991px) {
    .kd-pricing-style-02 .kd-pricing-card.kd-is-popular { transform: none; }
}

@media (max-width: 767px) {
    .kd-pricing-card {
        --kd-price-pad-y: 36px;
        --kd-price-pad-x: 26px;
    }
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-pricing-card,
    .kd-pricing-card::before,
    .kd-popular-badge,
    .kd-pricing-switch::after {
        transition: none !important;
        transform: none !important;
    }
}


/* ===================================
    31. Process Steps & Workflows
====================================== */

.kd-process-wrapper {
    --kd-proc-gap: 30px;
    --kd-proc-icon-size: 82px;
    --kd-proc-line: rgba(0, 0, 0, 0.10);
    --kd-proc-primary: var(--base-color);

    --kd-proc-radius: var(--radius-6);
    --kd-proc-card-bg: var(--white);
    --kd-proc-card-border: 1px solid rgba(0,0,0,0.08);
    --kd-proc-card-shadow: 0 12px 40px rgba(0,0,0,0.06);

    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--kd-proc-gap);
    counter-reset: process-counter;
    align-items: start;
}

/* --- Common Bits (Optional) --- */
.kd-process-title {
    font-size: 1.1rem;
    font-weight: 900;
    color: var(--dark-gray);
    margin: 0 0 10px 0;
}

.kd-process-text {
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--medium-gray);
    margin: 0;
}

/* --- Style 01: Simple Step with Arrow --- */
.kd-process-style-01 .kd-process-item {
    text-align: center;
    position: relative;
}

.kd-process-style-01 .kd-process-icon {
    width: var(--kd-proc-icon-size);
    height: var(--kd-proc-icon-size);
    background-color: var(--white);
    border: 1px solid var(--kd-proc-line);
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 2rem;
    color: var(--medium-gray);
    margin-bottom: 20px;
    transition: transform 0.3s ease, box-shadow 0.3s ease, color 0.3s ease, border-color 0.3s ease, background-color 0.3s ease;
    box-shadow: 0 12px 35px rgba(0,0,0,0.06);
    transform: translateZ(0);
}

/* Arrow only on larger screens (wrap-safe) */
@media (min-width: 992px) {
    .kd-process-style-01 .kd-process-item::after {
        content: ""; /* Bootstrap Chevron Right */
        font-family: "bootstrap-icons";
        position: absolute;
        top: calc(var(--kd-proc-icon-size) / 2);
        right: calc(var(--kd-proc-gap) * -0.5);
        transform: translate(50%, -50%);
        font-size: 1.35rem;
        color: var(--kd-proc-line);
        opacity: 0.65;
        pointer-events: none;
    }
    .kd-process-style-01 .kd-process-item:last-child::after { display: none; }
}

@media (hover: hover) and (pointer: fine) {
    .kd-process-style-01 .kd-process-item:hover .kd-process-icon {
        border-color: rgba(var(--base-color-rgb), 0.55);
        background-color: rgba(var(--base-color-rgb), 0.06);
        color: var(--kd-proc-primary);
        transform: translateY(-6px);
        box-shadow: 0 18px 55px rgba(var(--base-color-rgb), 0.16);
    }
}

/* --- Style 02: Connected Line (Horizontal) --- */
.kd-process-style-02 .kd-process-item {
    text-align: center;
    padding-top: 30px;
    position: relative;
}

@media (min-width: 992px) {
    .kd-process-style-02 .kd-process-item::before {
        content: "";
        position: absolute;
        top: calc(30px + (var(--kd-proc-icon-size) / 2));
        left: calc(var(--kd-proc-gap) * -0.5);
        width: calc(100% + var(--kd-proc-gap));
        height: 2px;
        background-color: var(--kd-proc-line);
        z-index: 0;
    }
    .kd-process-style-02 .kd-process-item:first-child::before { display: none; }
}

/* Completed state (optional) */
@media (min-width: 992px) {
    .kd-process-style-02 .kd-process-item.kd-is-complete::before {
        background-color: rgba(var(--base-color-rgb), 0.35);
    }
}

.kd-process-style-02 .kd-process-icon {
    position: relative;
    z-index: 1;
    width: var(--kd-proc-icon-size);
    height: var(--kd-proc-icon-size);
    background: var(--white);
    border: 2px solid var(--kd-proc-line);
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 2rem;
    color: var(--medium-gray);
    margin-bottom: 20px;
    transition: transform 0.3s ease, border-color 0.3s ease, color 0.3s ease, background-color 0.3s ease;
}

.kd-process-style-02 .kd-process-item.kd-is-active .kd-process-icon,.kd-process-style-02 .kd-process-item:hover .kd-process-icon {
    border-color: rgba(var(--base-color-rgb), 0.55);
    color: var(--kd-proc-primary);
    background-color: rgba(var(--base-color-rgb), 0.06);
}

.kd-process-style-02 .kd-process-number {
    position: absolute;
    top: -6px;
    right: -6px;
    width: 28px;
    height: 28px;
    background-color: var(--kd-proc-primary);
    color: var(--white);
    border-radius: 50%;
    font-size: 0.8rem;
    font-weight: 900;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 3px solid var(--white);
    box-shadow: 0 10px 25px rgba(var(--base-color-rgb), 0.25);
}

/* --- Style 03: ZigZag (Alternating) --- */
.kd-process-zigzag-wrapper {
    display: flex;
    flex-direction: column;
    gap: 60px;
}

.kd-process-zigzag-item {
    display: flex;
    align-items: center;
    gap: 50px;
}

.kd-process-zigzag-item:nth-child(even) { flex-direction: row-reverse; }

.kd-process-zigzag-img {
    flex: 1;
    border-radius: var(--radius-6);
    overflow: hidden;
    box-shadow: 0 26px 70px rgba(0,0,0,0.14);
    transform: translateZ(0);
}

.kd-process-zigzag-img img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    transition: transform 0.6s cubic-bezier(0.25, 0.8, 0.25, 1);
}

@media (hover: hover) and (pointer: fine) {
    .kd-process-zigzag-item:hover .kd-process-zigzag-img img { transform: scale(1.06); }
}

.kd-process-zigzag-content { flex: 1; }

.kd-process-big-number {
    font-size: clamp(3.5rem, 6vw, 6.5rem);
    font-weight: 950;
    color: rgba(0,0,0,0.05);
    line-height: 1;
    margin-bottom: -26px;
    position: relative;
    z-index: -1;
}

/* --- Style 04: Boxed Step (Counter + Hover Lift) --- */
.kd-process-style-04 .kd-process-item {
    background-color: var(--kd-proc-card-bg);
    border: var(--kd-proc-card-border);
    border-radius: var(--kd-proc-radius);
    padding: 40px 30px;
    text-align: center;
    transition: transform 0.35s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.35s cubic-bezier(0.25, 0.8, 0.25, 1), border-color 0.35s ease;
    box-shadow: var(--kd-proc-card-shadow);
    counter-increment: process-counter;
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

/* Soft top glow */
.kd-process-style-04 .kd-process-item::after {
    content: "";
    position: absolute;
    inset: -1px;
    background: radial-gradient(700px circle at 50% 0%, rgba(var(--base-color-rgb), 0.14), transparent 45%);
    opacity: 0;
    transition: opacity 0.35s ease;
    z-index: 0;
    pointer-events: none;
}

.kd-process-style-04 .kd-process-item > * { position: relative; z-index: 1; }

.kd-process-style-04 .kd-process-item::before {
    content: counter(process-counter, decimal-leading-zero);
    display: block;
    font-size: 3rem;
    font-weight: 950;
    color: rgba(var(--base-color-rgb), 0.14);
    margin-bottom: 12px;
    line-height: 1;
    transition: color 0.3s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-process-style-04 .kd-process-item:hover {
        transform: translateY(-10px);
        box-shadow: 0 26px 80px rgba(0,0,0,0.14);
        border-color: transparent;
    }
    .kd-process-style-04 .kd-process-item:hover::before { color: var(--kd-proc-primary); }
    .kd-process-style-04 .kd-process-item:hover::after { opacity: 1; }
}

/* --- Style 05: Vertical Timeline --- */
.kd-process-vertical {
    display: flex;
    flex-direction: column;
    gap: 0;
    grid-template-columns: 1fr;
}

.kd-process-timeline-item {
    display: flex;
    gap: 26px;
    position: relative;
    padding-bottom: 52px;
}

.kd-process-timeline-item:last-child { padding-bottom: 0; }

.kd-process-timeline-item::after {
    content: "";
    position: absolute;
    top: 0;
    left: 35px;
    width: 2px;
    height: 100%;
    background: linear-gradient(to bottom, var(--kd-proc-line), transparent);
    z-index: 0;
}

.kd-process-timeline-item:last-child::after { display: none; }

.kd-process-timeline-icon {
    width: 70px;
    height: 70px;
    background-color: var(--white);
    border: 2px solid var(--kd-proc-line);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.8rem;
    color: var(--medium-gray);
    flex-shrink: 0;
    z-index: 1;
    transition: transform 0.3s ease, border-color 0.3s ease, background-color 0.3s ease, color 0.3s ease;
    box-shadow: 0 14px 40px rgba(0,0,0,0.08);
}

.kd-process-timeline-content {
    padding-top: 10px;
    max-width: 70ch;
}

@media (hover: hover) and (pointer: fine) {
    .kd-process-timeline-item:hover .kd-process-timeline-icon {
        border-color: var(--kd-proc-primary);
        background-color: var(--kd-proc-primary);
        color: var(--white);
        transform: translateY(-3px);
    }
}

/* --- Style 06: Minimal Top Border (Dot Leaders 느낌) --- */
.kd-process-style-06 .kd-process-item {
    text-align: left;
    border-top: 2px solid var(--kd-proc-line);
    padding-top: 22px;
    transition: border-color 0.3s ease;
}

.kd-process-style-06 .kd-process-number {
    font-size: 3rem;
    font-weight: 950;
    color: rgba(0,0,0,0.12);
    margin-bottom: 10px;
    display: block;
    line-height: 1;
    transition: color 0.3s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-process-style-06 .kd-process-item:hover { border-color: var(--kd-proc-primary); }
    .kd-process-style-06 .kd-process-item:hover .kd-process-number { color: var(--kd-proc-primary); }
}

/* --- Style 07: Morphing Shape Hover (Detailed) --- */
.kd-process-style-07 .kd-process-icon {
    width: 92px;
    height: 92px;
    background-color: rgba(var(--base-color-rgb), 0.08);
    border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2.1rem;
    margin: 0 auto 26px;
    transition: all 0.45s ease;
    color: var(--dark-gray);
    box-shadow: 0 14px 40px rgba(0,0,0,0.06);
}

.kd-process-style-07 .kd-process-icon i {
    transition: transform 0.45s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-process-style-07 .kd-process-item:hover .kd-process-icon {
        border-radius: 50%;
        background-color: var(--kd-proc-primary);
        color: var(--white);
        transform: rotate(180deg);
        box-shadow: 0 22px 70px rgba(var(--base-color-rgb), 0.22);
    }
    .kd-process-style-07 .kd-process-item:hover .kd-process-icon i {
        transform: rotate(-180deg);
    }
}

/* --- Style 08: Modern Card + Left Accent (New) --- */
.kd-process-style-08 .kd-process-item {
    background-color: var(--kd-proc-card-bg);
    border: var(--kd-proc-card-border);
    border-radius: var(--kd-proc-radius);
    padding: 34px 30px;
    box-shadow: var(--kd-proc-card-shadow);
    position: relative;
    overflow: hidden;
    transition: transform 0.35s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.35s cubic-bezier(0.25, 0.8, 0.25, 1), border-color 0.35s ease;
}

.kd-process-style-08 .kd-process-item::before {
    content: "";
    position: absolute;
    top: 14px;
    bottom: 14px;
    left: 14px;
    width: 4px;
    border-radius: 4px;
    background: linear-gradient(to bottom, var(--kd-proc-primary), var(--slate-blue));
    opacity: 0.85;
}

.kd-process-style-08 .kd-process-icon {
    width: 60px;
    height: 60px;
    border-radius: 16px;
    background-color: rgba(var(--base-color-rgb), 0.10);
    color: var(--kd-proc-primary);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.6rem;
    margin-bottom: 18px;
    transition: transform 0.35s ease, background-color 0.35s ease, color 0.35s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-process-style-08 .kd-process-item:hover {
        transform: translateY(-8px);
        box-shadow: 0 26px 85px rgba(0,0,0,0.14);
        border-color: transparent;
    }
    .kd-process-style-08 .kd-process-item:hover .kd-process-icon {
        background-color: var(--kd-proc-primary);
        color: var(--white);
        transform: translateY(-2px);
    }
}

/* --- Responsive --- */
@media (max-width: 991px) {
    .kd-process-zigzag-item { flex-direction: column !important; text-align: center; }
}

@media (max-width: 767px) {
    .kd-process-timeline-item { gap: 18px; }
    .kd-process-timeline-icon { width: 54px; height: 54px; font-size: 1.25rem; }
    .kd-process-timeline-item::after { left: 27px; }
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-process-style-01 .kd-process-icon,
    .kd-process-style-02 .kd-process-icon,
    .kd-process-style-04 .kd-process-item,
    .kd-process-style-04 .kd-process-item::after,
    .kd-process-style-07 .kd-process-icon,
    .kd-process-style-07 .kd-process-icon i,
    .kd-process-style-08 .kd-process-item,
    .kd-process-zigzag-img img,
    .kd-process-timeline-icon {
        transition: none !important;
        transform: none !important;
    }
}

/* ===================================
    32. Product & Image Carousels (E-Commerce)
====================================== */

/* --- Product Carousel Wrapper (Owl + Swiper Helpers) --- */
.kd-product-carousel {
    --kd-prod-slide-radius: var(--radius-6);
    --kd-prod-slide-shadow: 0 18px 50px rgba(0,0,0,0.10);
    position: relative;
}

/* Equal-height slide support */
.kd-product-carousel :where(.swiper-slide, .owl-item) {
    height: auto;
    display: flex;
}
.kd-product-carousel :where(.swiper-slide > *, .owl-item > *) {
    height: 100%;
}

/* Optional: allow shadows to spill outside (apply class to wrapper if needed) */
.kd-product-carousel.kd-carousel-overflow-visible :where(.swiper, .owl-stage-outer) {
    overflow: visible;
}

/* Product carousel: softer nav sizing (works great with your Section 10 variables) */
.kd-product-carousel.kd-carousel-wrapper {
    --kd-nav-size: 46px;
    --kd-nav-icon-size: 16px;
    --kd-nav-shadow: 0 12px 35px rgba(0,0,0,0.10);
}

/* Optional: reveal nav on hover (desktop) */
@media (hover: hover) and (pointer: fine) {
    .kd-product-carousel.kd-carousel-nav-reveal :where(.owl-nav, .swiper-button-prev, .swiper-button-next) {
        opacity: 0;
        transition: opacity 0.35s ease;
    }
    .kd-product-carousel.kd-carousel-nav-reveal:hover :where(.owl-nav, .swiper-button-prev, .swiper-button-next) {
        opacity: 1;
    }
}


/* --- Base Product Card --- */
.kd-product-card {
    --kd-prod-bg: var(--white);
    --kd-prod-title-color: var(--dark-gray);
    --kd-prod-price-color: var(--dark-gray);
    --kd-prod-meta-color: var(--medium-gray);
    --kd-prod-accent: var(--base-color);
    --kd-prod-radius: var(--radius-4);

    /* Base (minimal) surface – style classes can turn these on */
    --kd-prod-card-bg: transparent;
    --kd-prod-card-border: 1px solid transparent;
    --kd-prod-card-shadow: none;
    --kd-prod-card-padding: 0;

    --kd-prod-shadow-hover: 0 28px 80px rgba(0, 0, 0, 0.14);
    --kd-prod-hover-lift: -8px;

    --kd-prod-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-prod-trans: transform 0.35s var(--kd-prod-ease), box-shadow 0.35s var(--kd-prod-ease), border-color 0.35s var(--kd-prod-ease), background-color 0.35s var(--kd-prod-ease);

    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;

    background-color: var(--kd-prod-card-bg);
    border: var(--kd-prod-card-border);
    border-radius: var(--kd-prod-radius);
    box-shadow: var(--kd-prod-card-shadow);
    padding: var(--kd-prod-card-padding);

    transition: var(--kd-prod-trans);
    isolation: isolate;
    transform: translateZ(0);
    backface-visibility: hidden;
}

/* Subtle glow layer (modern premium feel) */
.kd-product-card::before {
    content: "";
    position: absolute;
    inset: -1px;
    background:
        radial-gradient(900px circle at 50% 0%, rgba(var(--base-color-rgb), 0.14), transparent 45%),
        radial-gradient(700px circle at 0% 100%, rgba(0,0,0,0.06), transparent 50%);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.35s var(--kd-prod-ease);
    z-index: 0;
}
.kd-product-card > * { position: relative; z-index: 1; }

@media (hover: hover) and (pointer: fine) {
    .kd-product-card.kd-is-hoverable:hover {
        transform: translateY(var(--kd-prod-hover-lift));
        box-shadow: var(--kd-prod-shadow-hover);
    }
    .kd-product-card.kd-is-hoverable:hover::before { opacity: 1; }
}

/* Focus (A11y) */
.kd-product-card:focus-within {
    box-shadow:
        0 0 0 4px rgba(var(--base-color-rgb), 0.16),
        var(--kd-prod-card-shadow);
    border-color: rgba(var(--base-color-rgb), 0.30);
}
.kd-product-card:focus-within::before { opacity: 1; }

/* Optional: disabled/out of stock */
.kd-product-card.kd-is-disabled,.kd-product-card.kd-is-out {
    opacity: 0.65;
    filter: grayscale(12%);
}
.kd-product-card.kd-is-disabled :where(a, button),.kd-product-card.kd-is-out :where(a, button) {
    pointer-events: none;
}


/* --- Image Wrapper & Swap Effect --- */
.kd-product-img-wrapper {
    position: relative;
    display: block;
    width: 100%;
    border-radius: var(--kd-prod-radius);
    overflow: hidden;
    background-color: var(--very-light-gray);
    aspect-ratio: 3 / 4; /* Portrait Standard */
    margin-bottom: 15px;
    transform: translateZ(0);
}

/* Optional: subtle “sheen” highlight (apply .product-img-sheen on card) */
.kd-product-img-sheen .kd-product-img-wrapper::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(600px circle at 30% 20%, rgba(255,255,255,0.35), transparent 55%);
    opacity: 0;
    transition: opacity 0.45s var(--kd-prod-ease);
    z-index: 2;
    pointer-events: none;
}

.kd-product-img-wrapper img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1);
    transition: transform 0.65s var(--kd-prod-ease), opacity 0.45s ease, filter 0.65s var(--kd-prod-ease);
    will-change: transform;
    backface-visibility: hidden;
}

/* Back Image (Hover Swap) */
.kd-product-img-hover {
    position: absolute;
    inset: 0;
    opacity: 0;
    z-index: 1;
    transition: opacity 0.45s ease;
}

/* Optional: slide-swap variant (apply .product-swap-slide) */
.kd-product-swap-slide .kd-product-img-hover {
    opacity: 1;
    transform: translateX(8%);
    transition: transform 0.55s var(--kd-prod-ease), opacity 0.45s ease;
}
.kd-product-swap-slide .kd-product-img-wrapper img:not(.kd-product-img-hover) {
    opacity: 1;
    transition: transform 0.65s var(--kd-prod-ease), opacity 0.45s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-product-card:hover .kd-product-img-wrapper img {
        transform: scale(1.07);
    }
    .kd-product-card:hover .kd-product-img-hover {
        opacity: 1;
    }
    .kd-product-img-sheen:hover .kd-product-img-wrapper::before {
        opacity: 1;
    }

    .kd-product-swap-slide:hover .kd-product-img-hover {
        transform: translateX(0);
    }
    .kd-product-swap-slide:hover .kd-product-img-wrapper img:not(.kd-product-img-hover) {
        opacity: 0.85;
    }
}

/* Optional: skeleton loading (add .is-loading to wrapper until image loads) */
.kd-product-img-wrapper.kd-is-loading {
    background-image: linear-gradient(90deg, rgba(0,0,0,0.04), rgba(0,0,0,0.08), rgba(0,0,0,0.04));
    background-size: 240% 100%;
    animation: kd-skeleton 1.2s linear infinite;
}
@keyframes kd-skeleton {
    0% { background-position: 100% 0; }
    100% { background-position: 0% 0; }
}


/* --- Badges --- */
/* Backward compatible single badge */
.kd-product-badge {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 3;
    padding: 6px 10px;
    font-size: 0.68rem;
    font-weight: 900;
    text-transform: uppercase;
    color: var(--white);
    background-color: rgba(20,20,20,0.92);
    border-radius: 6px;
    line-height: 1;
    pointer-events: none;
    letter-spacing: 0.08em;
    box-shadow: 0 10px 22px rgba(0,0,0,0.12);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

/* Multi-badge stack (recommended) */
.kd-product-badges {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 3;
    display: flex;
    flex-direction: column;
    gap: 6px;
    pointer-events: none;
}
.kd-product-badges.kd-right { left: auto; right: 12px; align-items: flex-end; }

.kd-product-badges .kd-product-badge {
    position: static;
    top: auto;
    left: auto;
}

.kd-product-badge.kd-badge-sale { background-color: var(--red); }
.kd-product-badge.kd-badge-new  { background-color: var(--green); }
.kd-product-badge.kd-badge-hot  { background-color: var(--yellow); color: var(--dark-gray); }

.kd-product-badge.kd-badge-outline {
    background: rgba(255,255,255,0.90);
    color: var(--dark-gray);
    border: 1px solid rgba(0,0,0,0.10);
}
.kd-product-badge.kd-badge-pill { border-radius: 999px; padding: 6px 12px; }


/* --- Action Buttons (Quick View, Wishlist) --- */
.kd-product-actions {
    position: absolute;
    bottom: 12px;
    left: 0;
    right: 0;
    display: flex;
    justify-content: center;
    gap: 8px;
    z-index: 4;
    opacity: 0;
    transform: translateY(10px);
    transition: transform 0.35s var(--kd-prod-ease), opacity 0.35s var(--kd-prod-ease);
    pointer-events: none;
}

/* Variant: vertical actions on right (apply .actions-right) */
.kd-product-actions.kd-actions-right {
    top: 12px;
    bottom: auto;
    left: auto;
    right: 12px;
    flex-direction: column;
    transform: translateX(10px);
}

.kd-product-action-btn {
    --kd-prod-action-size: 40px;
    width: var(--kd-prod-action-size);
    height: var(--kd-prod-action-size);
    border-radius: 999px;
    background-color: rgba(255,255,255,0.95);
    color: var(--dark-gray);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(0,0,0,0.08);
    box-shadow: 0 10px 25px rgba(0,0,0,0.12);
    cursor: pointer;
    transition: transform 0.3s var(--kd-prod-ease), background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, opacity 0.3s ease;
    font-size: 1rem;
    pointer-events: auto;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.kd-product-action-btn:hover {
    background-color: var(--kd-prod-accent);
    color: var(--white);
    border-color: transparent;
    transform: translateY(-3px);
}

.kd-product-action-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22), 0 10px 25px rgba(0,0,0,0.12);
}

/* Active state (e.g., wishlisted) */
.kd-product-action-btn.kd-is-active {
    background-color: var(--kd-prod-accent);
    color: var(--white);
    border-color: transparent;
}

/* Tooltip support (set data-tooltip="Quick view") */
@media (hover: hover) and (pointer: fine) {
    .kd-product-action-btn[data-tooltip] { position: relative; }

    .kd-product-action-btn[data-tooltip]::after {
        content: attr(data-tooltip);
        position: absolute;
        right: 110%;
        top: 50%;
        transform: translateY(-50%) translateX(6px);
        background: rgba(20,20,20,0.92);
        color: var(--white);
        padding: 6px 10px;
        border-radius: 8px;
        font-size: 0.72rem;
        font-weight: 800;
        letter-spacing: 0.04em;
        white-space: nowrap;
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.25s ease, transform 0.25s ease;
        box-shadow: 0 12px 28px rgba(0,0,0,0.18);
    }

    .kd-product-action-btn[data-tooltip]::before {
        content: "";
        position: absolute;
        right: 102%;
        top: 50%;
        transform: translateY(-50%);
        border-width: 6px 0 6px 6px;
        border-style: solid;
        border-color: transparent transparent transparent rgba(20,20,20,0.92);
        opacity: 0;
        transition: opacity 0.25s ease;
        pointer-events: none;
    }

    .kd-product-action-btn[data-tooltip]:hover::after {
        opacity: 1;
        transform: translateY(-50%) translateX(0);
    }
    .kd-product-action-btn[data-tooltip]:hover::before { opacity: 1; }
}

.kd-product-card:hover .kd-product-actions {
    opacity: 1;
    transform: translateY(0);
}
.kd-product-card:hover .kd-product-actions.kd-actions-right {
    transform: translateX(0);
}

/* Optional: always show actions (apply .actions-always) */
.kd-product-card.kd-actions-always .kd-product-actions {
    opacity: 1;
    transform: none;
    pointer-events: auto;
}


/* --- Quick Add Button (Modern) --- */
.kd-product-quick-add {
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: 12px;
    z-index: 5;
    border: none;
    border-radius: 999px;
    padding: 12px 14px;
    background: rgba(20,20,20,0.90);
    color: var(--white);
    font-weight: 900;
    font-size: 0.78rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    opacity: 0;
    transform: translateY(10px);
    transition: transform 0.35s var(--kd-prod-ease), opacity 0.35s var(--kd-prod-ease), background-color 0.35s ease;
    cursor: pointer;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}
.kd-product-quick-add i { font-size: 1.05em; }

@media (hover: hover) and (pointer: fine) {
    .kd-product-card:hover .kd-product-quick-add {
        opacity: 1;
        transform: translateY(0);
    }
    .kd-product-quick-add:hover {
        background: var(--kd-prod-accent);
    }
}


/* --- Content --- */
.kd-product-content {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}

.kd-product-cat {
    font-size: 0.72rem;
    text-transform: uppercase;
    color: var(--kd-prod-meta-color);
    font-weight: 800;
    margin-bottom: 6px;
    display: block;
    letter-spacing: 0.08em;
}

.kd-product-title {
    font-size: 1rem;
    font-weight: 800;
    color: var(--kd-prod-title-color);
    margin: 0 0 6px 0;
    line-height: 1.35;
}

.kd-product-title a {
    color: inherit;
    text-decoration: none;
    transition: color 0.2s ease;
}

.kd-product-title a:hover { color: var(--kd-prod-accent); }

/* Rating */
.kd-product-rating {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    font-size: 0.78rem;
    color: #ffc107;
    margin-bottom: 8px;
    line-height: 1;
}
.kd-product-rating .kd-empty { color: #e0e0e0; }

/* Price */
.kd-product-price {
    font-size: 0.98rem;
    font-weight: 900;
    color: var(--kd-prod-price-color);
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: auto;
    font-variant-numeric: tabular-nums;
}

.kd-product-price del {
    color: var(--kd-prod-meta-color);
    font-weight: 500;
    font-size: 0.92em;
    text-decoration: line-through;
    text-decoration-thickness: 1px;
    opacity: 0.9;
}

.kd-product-price .kd-on-sale { color: var(--red); }

/* Optional: tiny meta row */
.kd-product-meta-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 14px;
    margin-top: 10px;
    color: var(--kd-prod-meta-color);
    font-size: 0.85rem;
}
.kd-product-meta-row span { display: inline-flex; align-items: center; gap: 6px; }
.kd-product-meta-row i { color: var(--kd-prod-accent); }

/* Swatches */
.kd-product-swatches {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 12px;
}

.kd-swatch-item {
    width: 14px;
    height: 14px;
    border-radius: 999px;
    cursor: pointer;
    border: 1px solid rgba(0,0,0,0.12);
    position: relative;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.kd-swatch-item:hover,.kd-swatch-item.active {
    transform: scale(1.18);
    box-shadow: 0 0 0 2px var(--white), 0 0 0 3px rgba(0,0,0,0.65);
}

.kd-swatch-item:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(var(--base-color-rgb), 0.22), 0 0 0 2px var(--white);
}


/* --- Style 01: Minimal (Default) --- */
/* Uses base rules. Add .is-hoverable if you want lift + glow. */


/* --- Style 02: Boxed (Bordered) --- */
.kd-product-style-02 {
    --kd-prod-card-bg: var(--kd-prod-bg);
    --kd-prod-card-border: 1px solid rgba(0, 0, 0, 0.08);
    --kd-prod-card-shadow: 0 12px 40px rgba(0,0,0,0.06);
    --kd-prod-card-padding: 15px;
}

.kd-product-style-02 .kd-product-img-wrapper {
    border-radius: calc(var(--kd-prod-radius) - 4px);
    margin-bottom: 12px;
}

@media (hover: hover) and (pointer: fine) {
    .kd-product-style-02:hover {
        border-color: transparent;
        transform: translateY(-8px);
        box-shadow: var(--kd-prod-shadow-hover);
    }
    .kd-product-style-02:hover::before { opacity: 1; }
}


/* --- Style 03: Add to Cart Bar (Improved) --- */
.kd-product-style-03 { overflow: hidden; }

.kd-product-style-03 .kd-add-to-cart-bar {
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: 12px;
    border: none;
    border-radius: 999px;
    padding: 12px 14px;
    background-color: var(--kd-prod-accent);
    color: var(--white);
    text-align: center;
    font-weight: 900;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    transform: translateY(120%);
    transition: transform 0.35s var(--kd-prod-ease);
    z-index: 5;
    cursor: pointer;
    box-shadow: 0 18px 45px rgba(var(--base-color-rgb), 0.25);
}

@media (hover: hover) and (pointer: fine) {
    .kd-product-style-03:hover .kd-add-to-cart-bar { transform: translateY(0); }
}

/* Touch friendly fallback: keep visible if you want */
.kd-product-style-03.kd-cart-bar-always .kd-add-to-cart-bar {
    transform: translateY(0);
}


/* --- Style 04: Content Overlay (Fashion / Editorial) --- */
.kd-product-style-04 .kd-product-img-wrapper { margin-bottom: 0; }

.kd-product-style-04 .kd-product-img-wrapper::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.80) 0%, rgba(0,0,0,0.10) 60%, rgba(0,0,0,0.00) 100%);
    opacity: 0.85;
    z-index: 2;
    pointer-events: none;
}

.kd-product-style-04 .kd-product-content {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    padding: 22px;
    z-index: 3;
    transform: translateY(12px);
    transition: transform 0.45s var(--kd-prod-ease);
}

.kd-product-style-04 :where(.kd-product-title, .kd-product-price) { color: var(--white); }
.kd-product-style-04 .kd-product-cat { color: rgba(255,255,255,0.85); }
.kd-product-style-04 .kd-product-price del { color: rgba(255,255,255,0.65); }

@media (hover: hover) and (pointer: fine) {
    .kd-product-style-04:hover .kd-product-content { transform: translateY(0); }
    .kd-product-style-04:hover .kd-product-img-wrapper img { filter: contrast(1.05) saturate(1.05); }
}


/* --- Style 05: Premium Gradient Border (New) --- */
.kd-product-style-05 {
    --kd-prod-card-bg: var(--white);
    --kd-prod-card-padding: 15px;
    --kd-prod-card-border: 1px solid transparent;
    --kd-prod-card-shadow: 0 12px 45px rgba(0,0,0,0.06);

    background:
        linear-gradient(var(--white), var(--white)) padding-box,
        linear-gradient(135deg, rgba(var(--base-color-rgb), 1), var(--slate-blue)) border-box;
}

@media (hover: hover) and (pointer: fine) {
    .kd-product-style-05:hover {
        transform: translateY(-8px);
        box-shadow: 0 28px 90px rgba(var(--base-color-rgb), 0.16);
    }
}


/* --- Style 06: Glassmorphism (New) --- */
.kd-product-style-06 {
    --kd-prod-card-bg: rgba(255,255,255,0.65);
    --kd-prod-card-border: 1px solid rgba(255,255,255,0.55);
    --kd-prod-card-shadow: 0 18px 70px rgba(0,0,0,0.12);
    --kd-prod-card-padding: 15px;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

@media (hover: hover) and (pointer: fine) {
    .kd-product-style-06:hover {
        transform: translateY(-8px);
        box-shadow: 0 30px 95px rgba(0,0,0,0.16);
    }
}

/* --- Style 07: Horizontal / List Card (New) --- */
.kd-product-style-07 {
    --kd-prod-card-bg: var(--white);
    --kd-prod-card-border: 1px solid rgba(0,0,0,0.08);
    --kd-prod-card-shadow: 0 10px 35px rgba(0,0,0,0.06);
    --kd-prod-card-padding: 14px;

    flex-direction: row;
    gap: 14px;
    align-items: stretch;
}

.kd-product-style-07 .kd-product-img-wrapper {
    width: min(160px, 42%);
    margin-bottom: 0;
    aspect-ratio: 1 / 1;
    flex-shrink: 0;
}

.kd-product-style-07 .kd-product-content { padding: 6px 2px; }

@media (max-width: 575px) {
    .kd-product-style-07 {
        flex-direction: column;
    }
    .kd-product-style-07 .kd-product-img-wrapper {
        width: 100%;
        aspect-ratio: 3 / 4;
    }
}


/* --- Swiper Nav (Product Specific, Improved) --- */
/* If you use Swiper default buttons, you can also add class="product-slider-nav swiper-button-prev" etc. */
.kd-product-slider-nav {
    --kd-prod-nav-size: 46px;

    position: absolute;
    top: 50%;
    transform: translateY(-50%) scale(0.98);
    z-index: 10;

    width: var(--kd-prod-nav-size);
    height: var(--kd-prod-nav-size);
    border-radius: 999px;

    background-color: rgba(255,255,255,0.92);
    border: 1px solid rgba(0,0,0,0.10);
    color: var(--dark-gray);

    display: flex;
    align-items: center;
    justify-content: center;

    cursor: pointer;
    transition: transform 0.35s var(--kd-prod-ease), opacity 0.35s ease, background-color 0.35s ease, color 0.35s ease, box-shadow 0.35s ease;

    box-shadow: 0 14px 40px rgba(0,0,0,0.10);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.kd-product-slider-prev { left: -22px; }
.kd-product-slider-next { right: -22px; }

@media (hover: hover) and (pointer: fine) {
    .kd-product-slider-nav:hover {
        background-color: var(--kd-prod-accent);
        color: var(--white);
        border-color: transparent;
        transform: translateY(-50%) scale(1.03);
        box-shadow: 0 22px 60px rgba(var(--base-color-rgb), 0.22);
    }
}

.kd-product-slider-nav.swiper-button-disabled {
    opacity: 0;
    pointer-events: none;
}

/* Optional: hide nav until hover (apply .product-nav-hover on slider wrapper) */
@media (hover: hover) and (pointer: fine) {
    .kd-product-nav-hover .kd-product-slider-nav { opacity: 0; }
    .kd-product-nav-hover:hover .kd-product-slider-nav { opacity: 1; }
}

@media (max-width: 991px) {
    .kd-product-slider-nav { display: none; }
}


/* ===================================
    33. Progress Bars & Skill Meters
====================================== */

.kd-progress-wrapper {
    --kd-prog-height: 8px;
    --kd-prog-bg: var(--very-light-gray);
    --kd-prog-radius: 999px;
    --kd-prog-fill: var(--base-color);
    --kd-prog-shadow: none;
    --kd-prog-ease: cubic-bezier(0.4, 0, 0.2, 1);

    position: relative;
    width: 100%;
    margin-bottom: 25px;
}

/* --- Labels & Meta --- */
.kd-progress-meta {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 8px;
    font-size: 0.88rem;
    font-weight: 800;
    color: var(--dark-gray);
}

.kd-progress-percent {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    font-variant-numeric: tabular-nums;
    opacity: 0.9;
}

/* --- Base Bar --- */
.kd-progress {
    position: relative;
    height: var(--kd-prog-height);
    background-color: var(--kd-prog-bg);
    border-radius: var(--kd-prog-radius);
    width: 100%;
    box-shadow: var(--kd-prog-shadow);
    overflow: visible; /* tooltip / indicator may spill */
}

.kd-progress-bar {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 0; /* JS handles width (fallback: set --kd-progress on wrapper and override below) */
    background-color: var(--kd-prog-fill);
    border-radius: var(--kd-prog-radius);
    transition: width 1s var(--kd-prog-ease);
    transform: translateZ(0);
}

/* Optional pure-CSS value: set --kd-progress: 72; on .progress-wrapper */
.kd-progress-wrapper.kd-use-css-value .kd-progress-bar {
    width: calc(var(--kd-progress, 0) * 1%);
}

/* Subtle highlight */
.kd-progress-bar::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(to bottom, rgba(255,255,255,0.30), rgba(255,255,255,0.00));
    opacity: 0.7;
    pointer-events: none;
}

/* Modern end-cap dot (nice detail) */
.kd-progress-bar::after {
    content: "";
    position: absolute;
    right: 0;
    top: 50%;
    width: 14px;
    height: 14px;
    transform: translate(50%, -50%);
    border-radius: 999px;
    background: var(--kd-prog-fill);
    box-shadow: 0 10px 22px rgba(var(--base-color-rgb), 0.22);
    opacity: 0;
    transition: opacity 0.35s ease;
}
.kd-progress-wrapper.kd-show-dot .kd-progress-bar::after { opacity: 1; }

/* --- Style 01: Tooltip Indicator (Improved Bubble) --- */
.kd-progress-style-01 .kd-progress {
    --kd-prog-height: 6px;
    --kd-prog-bg: rgba(0,0,0,0.06);
}

.kd-progress-style-01 .kd-progress-tooltip {
    position: absolute;
    right: 0;
    top: -36px;
    transform: translateX(50%);
    background-color: rgba(20,20,20,0.92);
    color: var(--white);
    font-size: 0.72rem;
    font-weight: 900;
    padding: 6px 10px;
    border-radius: 10px;
    letter-spacing: 0.04em;
    box-shadow: 0 14px 35px rgba(0,0,0,0.20);
    white-space: nowrap;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.kd-progress-style-01 .kd-progress-tooltip::after {
    content: "";
    position: absolute;
    bottom: -6px;
    left: 50%;
    transform: translateX(-50%);
    border-width: 6px 6px 0;
    border-style: solid;
    border-color: rgba(20,20,20,0.92) transparent transparent;
}

/* --- Style 02: Thick Bar with Inside Text --- */
.kd-progress-style-02 .kd-progress {
    --kd-prog-height: 22px;
    --kd-prog-bg: rgba(0,0,0,0.08);
}

.kd-progress-style-02 .kd-progress-bar {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding-right: 10px;
    color: var(--white);
    font-size: 0.72rem;
    font-weight: 900;
    background: linear-gradient(90deg, var(--base-color), var(--slate-blue));
}
.kd-progress-style-02 .kd-progress-bar::after { display: none; } /* dot not needed inside thick bar */

/* --- Style 03: Animated Stripes --- */
.kd-progress-striped .kd-progress-bar {
    background-image: linear-gradient(
        45deg,
        rgba(255,255,255,.16) 25%,
        transparent 25%,
        transparent 50%,
        rgba(255,255,255,.16) 50%,
        rgba(255,255,255,.16) 75%,
        transparent 75%,
        transparent
    );
    background-size: 1rem 1rem;
}

.kd-progress-animated .kd-progress-bar {
    animation: kd-progress-stripes 1s linear infinite;
}

@keyframes kd-progress-stripes {
    0% { background-position: 1rem 0; }
    100% { background-position: 0 0; }
}

/* --- Style 04: Multi-Segment (Stacked, Improved) --- */
.kd-progress.kd-progress-multi {
    display: flex;
    overflow: hidden;
    border-radius: var(--kd-prog-radius);
}

.kd-progress.kd-progress-multi .kd-progress-bar {
    position: relative;
    width: auto; /* each segment uses its own inline width or CSS var */
    flex: 0 0 auto;
    border-radius: 0;
    transition: width 0.8s var(--kd-prog-ease);
}
.kd-progress.kd-progress-multi .kd-progress-bar:first-child { border-radius: var(--kd-prog-radius) 0 0 var(--kd-prog-radius); }
.kd-progress.kd-progress-multi .kd-progress-bar:last-child { border-radius: 0 var(--kd-prog-radius) var(--kd-prog-radius) 0; }
.kd-progress.kd-progress-multi .kd-progress-bar::after { display: none; }
.kd-progress.kd-progress-multi .kd-progress-bar::before { opacity: 0.35; }

.kd-bg-success { background-color: var(--green) !important; }
.kd-bg-warning { background-color: var(--yellow) !important; }
.kd-bg-danger  { background-color: var(--red) !important; }
.kd-bg-info    { background-color: var(--blue) !important; }

/* --- Style 05: Circular Progress (SVG) --- */
.kd-progress-circle {
    --kd-circle-size: 120px;
    --kd-circle-stroke: 6;
    --kd-circle-track: rgba(0,0,0,0.06);
    --kd-circle-fill: var(--base-color);

    position: relative;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: var(--kd-circle-size);
    height: var(--kd-circle-size);
}

.kd-progress-circle svg {
    transform: rotate(-90deg);
    width: 100%;
    height: 100%;
}

.kd-progress-circle-bg {
    fill: none;
    stroke: var(--kd-circle-track);
    stroke-width: var(--kd-circle-stroke);
}

.kd-progress-circle-path {
    fill: none;
    stroke: var(--kd-circle-fill);
    stroke-width: var(--kd-circle-stroke);
    stroke-linecap: round;
    stroke-dasharray: 283;
    stroke-dashoffset: 283;
    transition: stroke-dashoffset 1.5s cubic-bezier(0.25, 0.8, 0.25, 1);
    filter: drop-shadow(0 10px 18px rgba(var(--base-color-rgb), 0.18));
}

.kd-progress-circle-value {
    position: absolute;
    font-size: 1.5rem;
    font-weight: 900;
    color: var(--dark-gray);
    font-variant-numeric: tabular-nums;
}

/* Small Circle Variant */
.kd-progress-circle-sm {
    --kd-circle-size: 60px;
    --kd-circle-stroke: 4;
}
.kd-progress-circle-sm .kd-progress-circle-value { font-size: 0.9rem; }

/* --- Style 06: Glass / Glow Bar (New) --- */
.kd-progress-style-06 .kd-progress {
    --kd-prog-height: 10px;
    --kd-prog-bg: rgba(255,255,255,0.55);
    --kd-prog-shadow: 0 10px 30px rgba(0,0,0,0.08);
    border: 1px solid rgba(0,0,0,0.06);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.kd-progress-style-06 .kd-progress-bar {
    background: linear-gradient(90deg, var(--base-color), var(--slate-blue));
}
.kd-progress-style-06 .kd-progress-bar::after {
    background: var(--white);
    box-shadow: 0 10px 25px rgba(0,0,0,0.18);
    border: 2px solid rgba(var(--base-color-rgb), 0.35);
}

/* --- Style 07: Segmented Track (New) --- */
.kd-progress-style-07 .kd-progress {
    --kd-prog-height: 10px;
    background:
        repeating-linear-gradient(
            to right,
            rgba(0,0,0,0.07),
            rgba(0,0,0,0.07) 10px,
            rgba(0,0,0,0.03) 10px,
            rgba(0,0,0,0.03) 16px
        );
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-progress-bar,
    .kd-progress-circle-path,
    .kd-product-img-wrapper img,
    .kd-product-actions,
    .kd-product-action-btn,
    .kd-product-img-hover,
    .kd-product-quick-add {
        transition: none !important;
        animation: none !important;
        transform: none !important;
    }

    .kd-product-actions { opacity: 1; }
    .kd-product-quick-add { opacity: 1; transform: none; position: static; margin-top: 10px; }
}

/* ===================================
    34. Promo Banners & Ads (Enhanced)
====================================== */

/* --- Base Wrapper --- */
.kd-promo-wrapper {
    --kd-promo-gap: 30px;
    --kd-promo-radius: var(--radius-6);
    --kd-promo-bg: var(--very-light-gray);
    --kd-promo-color: var(--dark-gray);
    --kd-promo-primary: var(--base-color);

    --kd-promo-border: 1px solid rgba(0,0,0,0.08);
    --kd-promo-shadow: 0 15px 45px rgba(0,0,0,0.07);
    --kd-promo-shadow-hover: 0 28px 85px rgba(0,0,0,0.14);

    --kd-promo-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    display: flex;
    flex-direction: column;
    gap: var(--kd-promo-gap);
    width: 100%;
}

/* --- Reusable Promo Surface (optional helper) --- */
.kd-promo-surface {
    position: relative;
    border-radius: var(--kd-promo-radius);
    background: var(--kd-promo-bg);
    color: var(--kd-promo-color);
    border: var(--kd-promo-border);
    box-shadow: var(--kd-promo-shadow);
    overflow: hidden;
    isolation: isolate;
    transform: translateZ(0);
}

/* Optional: hover lift utility */
@media (hover: hover) and (pointer: fine) {
    .kd-promo-hover-lift:hover {
        transform: translateY(-8px);
        box-shadow: var(--kd-promo-shadow-hover);
    }
}

/* Optional: subtle noise overlay utility */
.kd-promo-noise::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0.05;
    z-index: 2;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Optional: focus ring helper */
.kd-promo-focus-ring :where(a, button, [role="button"]) :focus-visible {
    outline: none;
}
.kd-promo-focus-ring :where(a, button, [role="button"]):focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
}


/* ===================================
    Style 01: Top Notification Strip (Upgraded)
====================================== */

.kd-promo-strip {
    --kd-strip-bg: #121212;
    --kd-strip-accent: var(--kd-promo-primary);
    --kd-strip-text: rgba(255,255,255,0.92);
    --kd-strip-border: rgba(255,255,255,0.10);

    position: relative;
    background: var(--kd-strip-bg);
    color: var(--kd-strip-text);
    padding: 14px 46px 14px 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 14px;
    text-align: center;
    font-size: 0.92rem;
    overflow: hidden;
    z-index: 100;

    border-bottom: 1px solid var(--kd-strip-border);
}

/* Optional: sticky variant */
.kd-promo-strip.kd-is-sticky {
    position: sticky;
    top: 0;
}

/* Modern gradient sheen (optional: add .has-sheen) */
.kd-promo-strip.kd-has-sheen::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(800px circle at 20% -20%, rgba(var(--base-color-rgb), 0.22), transparent 55%),
        radial-gradient(700px circle at 110% 40%, rgba(255,255,255,0.10), transparent 55%);
    opacity: 0.9;
    pointer-events: none;
}

/* Optional: glass strip variant */
.kd-promo-strip.kd-is-glass {
    background: rgba(20,20,20,0.72);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

/* Entry animation (optional: add .is-active) */
.kd-promo-strip.kd-is-active {
    animation: kd-strip-in 0.55s var(--kd-promo-ease) both;
}
@keyframes kd-strip-in {
    from { transform: translateY(-12px); opacity: 0; }
    to   { transform: translateY(0); opacity: 1; }
}

.kd-promo-strip strong {
    font-weight: 900;
    color: var(--kd-strip-accent);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.kd-promo-strip a {
    color: var(--white);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
    font-weight: 700;
    transition: color 0.2s ease, opacity 0.2s ease;
    opacity: 0.95;
}
.kd-promo-strip a:hover {
    color: var(--kd-strip-accent);
    opacity: 1;
}

.kd-promo-strip a:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
    border-radius: 8px;
}

.kd-promo-close {
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-50%);
    width: 34px;
    height: 34px;
    border-radius: 999px;
    border: 1px solid rgba(255,255,255,0.14);
    background: rgba(255,255,255,0.10);
    color: var(--white);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 1.05rem;
    transition: transform 0.25s var(--kd-promo-ease), background-color 0.25s ease, border-color 0.25s ease, opacity 0.25s ease;
    touch-action: manipulation;
}
.kd-promo-close:hover {
    background: rgba(255,255,255,0.18);
    border-color: rgba(255,255,255,0.24);
    transform: translateY(-50%) rotate(90deg);
}
.kd-promo-close:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
}


/* ===================================
    Style 02: Boxed Sale Card (Premium Upgrade)
====================================== */

.kd-promo-card {
    --kd-promo-card-bg: var(--kd-promo-bg);
    --kd-promo-card-border: 1px solid rgba(0,0,0,0.06);
    --kd-promo-card-shadow: var(--kd-promo-shadow);

    position: relative;
    background: var(--kd-promo-card-bg);
    border: var(--kd-promo-card-border);
    border-radius: var(--kd-promo-radius);
    padding: 52px 34px;
    text-align: center;
    overflow: hidden;
    isolation: isolate;
    box-shadow: var(--kd-promo-card-shadow);
    transform: translateZ(0);
}

/* Mesh / glow background */
.kd-promo-card::before {
    content: "";
    position: absolute;
    inset: -20%;
    background:
        radial-gradient(800px circle at 20% 10%, rgba(var(--base-color-rgb), 0.14), transparent 55%),
        radial-gradient(700px circle at 90% 30%, rgba(100, 200, 255, 0.10), transparent 55%),
        radial-gradient(700px circle at 30% 95%, rgba(255, 80, 160, 0.08), transparent 60%);
    pointer-events: none;
    z-index: -2;
}

/* Soft vignette to keep content readable */
.kd-promo-card::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.55), transparent 60%);
    opacity: 0.9;
    pointer-events: none;
    z-index: -1;
}

@media (hover: hover) and (pointer: fine) {
    .kd-promo-card:hover {
        transform: translateY(-8px);
        box-shadow: var(--kd-promo-shadow-hover);
        border-color: transparent;
    }
}

/* Glass variant */
.kd-promo-card.kd-is-glass {
    background: rgba(255,255,255,0.60);
    border: 1px solid rgba(255,255,255,0.50);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

/* Gradient border variant */
.kd-promo-card.kd-is-gradient-border {
    border: 1px solid transparent;
    background:
        linear-gradient(var(--kd-promo-card-bg), var(--kd-promo-card-bg)) padding-box,
        linear-gradient(135deg, rgba(var(--base-color-rgb), 1), var(--slate-blue)) border-box;
}

/* Optional: split layout inside promo-card */
.kd-promo-card.kd-promo-split {
    text-align: left;
    display: grid;
    grid-template-columns: 1.2fr 0.8fr;
    gap: 26px;
    align-items: center;
}
.kd-promo-split .kd-promo-split-media {
    border-radius: calc(var(--kd-promo-radius) - 6px);
    overflow: hidden;
    aspect-ratio: 4 / 3;
    background: rgba(0,0,0,0.04);
    box-shadow: 0 18px 55px rgba(0,0,0,0.10);
}
.kd-promo-split .kd-promo-split-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.8s var(--kd-promo-ease);
}
@media (hover: hover) and (pointer: fine) {
    .kd-promo-card.kd-promo-split:hover .kd-promo-split-media img { transform: scale(1.05); }
}

/* Tag */
.kd-promo-tag {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background-color: rgba(var(--base-color-rgb), 0.12);
    color: var(--kd-promo-primary);
    padding: 7px 14px;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    margin-bottom: 18px;
}

.kd-promo-title {
    font-size: clamp(1.5rem, 1.25rem + 1.2vw, 2.2rem);
    font-weight: 950;
    margin-bottom: 12px;
    line-height: 1.12;
    color: var(--dark-gray);
    letter-spacing: -0.02em;
}

.kd-promo-desc {
    margin-bottom: 32px;
    opacity: 0.85;
    font-size: 1.02rem;
    line-height: 1.7;
    max-width: 62ch;
    margin-left: auto;
    margin-right: auto;
    color: var(--medium-gray);
}

/* Helper to space out Countdown from Section 15 */
.kd-promo-card .kd-countdown-container {
    margin-bottom: 32px;
    justify-content: center;
}

/* Optional: CTA styling inside promos (use if you want consistent modern CTA) */
.kd-promo-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 12px 18px;
    border-radius: 999px;
    border: 1px solid rgba(0,0,0,0.10);
    background: var(--white);
    color: var(--dark-gray);
    font-weight: 900;
    font-size: 0.82rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    text-decoration: none;
    transition: transform 0.25s var(--kd-promo-ease), box-shadow 0.25s var(--kd-promo-ease), background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
    box-shadow: 0 14px 40px rgba(0,0,0,0.08);
}
.kd-promo-cta:hover {
    background: var(--kd-promo-primary);
    color: var(--white);
    border-color: transparent;
    transform: translateY(-2px);
    box-shadow: 0 22px 65px rgba(var(--base-color-rgb), 0.22);
}
.kd-promo-cta:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22), 0 14px 40px rgba(0,0,0,0.08);
}


/* ===================================
    Style 03: Coupon Code (Ticket + Copy States)
====================================== */

.kd-promo-coupon-card {
    position: relative;
    background-color: var(--white);
    border: 1px solid rgba(0,0,0,0.08);
    border-radius: var(--kd-promo-radius);
    padding: 42px;
    text-align: center;
    box-shadow: var(--kd-promo-shadow);
    overflow: hidden;
    isolation: isolate;
}

/* Ticket perforation cutouts */
.kd-promo-coupon-card::before,.kd-promo-coupon-card::after {
    content: "";
    position: absolute;
    top: 50%;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--white);
    transform: translateY(-50%);
    box-shadow: inset 0 0 0 1px rgba(0,0,0,0.08);
    z-index: 2;
}
.kd-promo-coupon-card::before { left: -13px; }
.kd-promo-coupon-card::after { right: -13px; }

/* Decorative dashed line */
.kd-promo-coupon-card .kd-coupon-divider {
    position: absolute;
    left: 40px;
    right: 40px;
    top: 50%;
    transform: translateY(-50%);
    border-top: 2px dashed rgba(0,0,0,0.12);
    opacity: 0.7;
    pointer-events: none;
}

/* Coupon box */
.kd-coupon-box {
    display: flex;
    align-items: stretch;
    background: var(--very-light-gray);
    border: 2px dashed rgba(0,0,0,0.16);
    border-radius: 999px;
    max-width: 440px;
    margin: 22px auto 0;
    overflow: hidden;
    transition: border-color 0.3s ease, background-color 0.3s ease, box-shadow 0.3s ease;
}

.kd-coupon-box:hover {
    border-color: rgba(var(--base-color-rgb), 0.65);
    background-color: #fff;
    box-shadow: 0 14px 45px rgba(0,0,0,0.08);
}
.kd-coupon-box:focus-within {
    border-color: rgba(var(--base-color-rgb), 0.85);
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.18), 0 14px 45px rgba(0,0,0,0.08);
}

.kd-coupon-code {
    flex: 1;
    padding: 14px 20px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    font-size: 1.15rem;
    font-weight: 900;
    color: var(--dark-gray);
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: 0.10em;
    user-select: all;
}

.kd-coupon-btn {
    border: none;
    background-color: var(--kd-promo-primary);
    color: var(--white);
    padding: 0 22px;
    font-weight: 900;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    cursor: pointer;
    transition: background-color 0.25s ease, transform 0.25s var(--kd-promo-ease);
    display: inline-flex;
    align-items: center;
    gap: 10px;
    touch-action: manipulation;
}
.kd-coupon-btn:hover {
    background-color: var(--dark-gray);
    transform: translateY(-1px);
}
.kd-coupon-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
}

/* Copy success state (toggle .is-copied via JS) */
.kd-promo-coupon-card.kd-is-copied .kd-coupon-btn {
    background-color: var(--green);
}
.kd-promo-coupon-card.kd-is-copied .kd-coupon-btn::after {
    content: "COPIED";
    font-weight: 900;
}

/* Optional: tiny success toast label inside coupon card */
.kd-promo-coupon-card .kd-coupon-status {
    margin-top: 14px;
    font-size: 0.85rem;
    color: var(--medium-gray);
}
.kd-promo-coupon-card.kd-is-copied .kd-coupon-status {
    color: #065f46;
    font-weight: 700;
}


/* ===================================
    Style 04: Hero / Video Background Promo (Cinematic)
====================================== */

.kd-promo-hero {
    --kd-hero-min-height: 420px;
    --kd-hero-overlay: rgba(0,0,0,0.55);
    --kd-hero-overlay-2: rgba(0,0,0,0.20);

    position: relative;
    padding: clamp(60px, 6vw, 110px) 30px;
    color: var(--white);
    text-align: center;
    border-radius: var(--kd-promo-radius);
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--kd-hero-min-height);
    isolation: isolate;
    box-shadow: 0 24px 75px rgba(0,0,0,0.18);
}

/* Media layer */
.kd-promo-hero-media {
    position: absolute;
    inset: 0;
    z-index: 0;
}
.kd-promo-hero-media :where(img, video) {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.02);
    transition: transform 0.9s var(--kd-promo-ease), filter 0.9s var(--kd-promo-ease);
    will-change: transform;
}

/* Overlay layer */
.kd-promo-hero-overlay {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(900px circle at 20% 0%, rgba(var(--base-color-rgb), 0.25), transparent 60%),
        linear-gradient(to top, var(--kd-hero-overlay) 0%, var(--kd-hero-overlay-2) 100%);
    z-index: 1;
}

/* Content */
.kd-promo-hero-content {
    position: relative;
    z-index: 2;
    max-width: 72ch;
    transform: translateY(18px);
    opacity: 0;
    transition: transform 0.7s var(--kd-promo-ease), opacity 0.7s ease;
}

/* Optional: left align variant */
.kd-promo-hero.kd-align-left {
    text-align: left;
    justify-content: flex-start;
}
.kd-promo-hero.kd-align-left .kd-promo-hero-content { margin-left: 0; }

/* Interaction: hover or viewport active (add .is-visible via JS) */
@media (hover: hover) and (pointer: fine) {
    .kd-promo-hero:hover .kd-promo-hero-media :where(img, video) {
        transform: scale(1.06);
        filter: contrast(1.05) saturate(1.05);
    }
}
.kd-promo-hero:hover .kd-promo-hero-content,.kd-promo-hero.kd-is-visible .kd-promo-hero-content {
    opacity: 1;
    transform: translateY(0);
}

/* Optional: play button overlay (if you use a video modal) */
.kd-promo-hero-play {
    margin-top: 22px;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--white);
    text-decoration: none;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-size: 0.78rem;
}
.kd-promo-hero-play .kd-play-dot {
    width: 46px;
    height: 46px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.16);
    border: 1px solid rgba(255,255,255,0.22);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    transition: transform 0.3s var(--kd-promo-ease), background-color 0.3s ease;
}
@media (hover: hover) and (pointer: fine) {
    .kd-promo-hero-play:hover .kd-play-dot {
        transform: scale(1.06);
        background: rgba(var(--base-color-rgb), 0.55);
        border-color: transparent;
    }
}


/* ===================================
    Style 05: Floating Toast (Polished + Timer)
====================================== */

.kd-promo-toast {
    --kd-toast-w: 340px;
    --kd-toast-accent: var(--kd-promo-primary);
    --kd-toast-radius: var(--radius-6);
    --kd-toast-shadow: 0 24px 80px rgba(0,0,0,0.22);
    --kd-toast-dur: 0.55s;
    --kd-toast-time: 6s; /* autohide timer (optional) */

    position: fixed;
    bottom: 30px;
    right: 30px;
    width: min(var(--kd-toast-w), calc(100% - 40px));
    background: rgba(255,255,255,0.95);
    padding: 20px;
    border-radius: var(--kd-toast-radius);
    box-shadow: var(--kd-toast-shadow);
    z-index: 990;
    display: flex;
    gap: 14px;
    align-items: flex-start;

    border: 1px solid rgba(0,0,0,0.08);
    border-left: 4px solid var(--kd-toast-accent);

    transform: translateY(140%);
    opacity: 0;
    transition: transform var(--kd-toast-dur) var(--kd-promo-ease), opacity var(--kd-toast-dur) ease;

    isolation: isolate;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.kd-promo-toast.kd-is-active {
    transform: translateY(0);
    opacity: 1;
}

/* Optional: appear from left */
.kd-promo-toast.kd-toast-left {
    left: 30px;
    right: auto;
}

/* Optional: dark toast */
.kd-promo-toast.kd-toast-dark {
    background: rgba(18,18,18,0.88);
    color: rgba(255,255,255,0.85);
    border-color: rgba(255,255,255,0.10);
}
.kd-promo-toast.kd-toast-dark .kd-promo-toast-content h5 { color: var(--white); }
.kd-promo-toast.kd-toast-dark .kd-promo-toast-content p { color: rgba(255,255,255,0.70); }
.kd-promo-toast.kd-toast-dark .kd-promo-toast-close { color: rgba(255,255,255,0.65); }

.kd-promo-toast:focus-within {
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.18), var(--kd-toast-shadow);
}

/* Icon */
.kd-promo-toast-icon {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: rgba(var(--base-color-rgb), 0.10);
    color: var(--kd-toast-accent);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 1.2rem;
}

/* Content */
.kd-promo-toast-content h5 {
    margin: 0 0 6px;
    font-size: 1rem;
    color: var(--dark-gray);
    font-weight: 900;
    letter-spacing: -0.01em;
}
.kd-promo-toast-content p {
    margin: 0 0 10px;
    font-size: 0.86rem;
    color: var(--medium-gray);
    line-height: 1.45;
}

/* Close */
.kd-promo-toast-close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 34px;
    height: 34px;
    border-radius: 999px;
    background: transparent;
    border: 1px solid rgba(0,0,0,0.08);
    color: var(--medium-gray);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.2s ease, transform 0.2s var(--kd-promo-ease);
}
.kd-promo-toast-close:hover {
    background: rgba(0,0,0,0.05);
    transform: rotate(90deg);
}
.kd-promo-toast-close:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
}

/* Optional: auto-hide progress line (add attribute data-timer="1" if you want) */
.kd-promo-toast[data-timer="1"]::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    height: 3px;
    width: 100%;
    background: linear-gradient(90deg, rgba(var(--base-color-rgb), 1), var(--slate-blue));
    transform-origin: left;
    transform: scaleX(0);
    opacity: 0.85;
}
.kd-promo-toast.kd-is-active[data-timer="1"]::after {
    animation: kd-toast-timer var(--kd-toast-time) linear forwards;
}
@keyframes kd-toast-timer {
    from { transform: scaleX(0); }
    to   { transform: scaleX(1); }
}


/* ===================================
    Style 06: Infinite Text Ticker (Modern Mask + Pause)
====================================== */

.kd-promo-ticker {
    --kd-ticker-bg: var(--base-color);
    --kd-ticker-color: var(--white);
    --kd-ticker-speed: 22s; /* set per instance */
    --kd-ticker-gap: 60px;

    background-color: var(--kd-ticker-bg);
    color: var(--kd-ticker-color);
    padding: 12px 0;
    overflow: hidden;
    white-space: nowrap;
    position: relative;
    user-select: none;

    /* Edge fade */
    mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
    -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
}

.kd-promo-ticker-inner {
    display: inline-flex;
    align-items: center;
    gap: var(--kd-ticker-gap);
    padding-left: 100%;
    animation: kd-promo-ticker var(--kd-ticker-speed) linear infinite;
    will-change: transform;
}

.kd-promo-ticker-item {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 0.98rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    opacity: 0.95;
}

/* Optional: dot separator */
.kd-promo-ticker-item::after {
    content: "•";
    opacity: 0.45;
    margin-left: 10px;
}
.kd-promo-ticker-item:last-child::after { display: none; }

@keyframes kd-promo-ticker {
    0%   { transform: translate3d(0, 0, 0); }
    100% { transform: translate3d(-100%, 0, 0); }
}

/* Pause on hover */
@media (hover: hover) and (pointer: fine) {
    .kd-promo-ticker:hover .kd-promo-ticker-inner { animation-play-state: paused; }
}


/* ===================================
    Responsive
====================================== */

@media (max-width: 767px) {
    .kd-promo-strip {
        flex-direction: column;
        gap: 8px;
        text-align: center;
        padding-right: 46px;
    }
    .kd-promo-close { top: 12px; transform: none; right: 12px; }

    .kd-promo-card { padding: 34px 20px; }
    .kd-promo-card.kd-promo-split {
        grid-template-columns: 1fr;
        text-align: center;
    }

    .kd-coupon-box {
        flex-direction: column;
        border-radius: var(--radius-6);
    }
    .kd-coupon-code {
        border-bottom: 1px dashed rgba(0,0,0,0.12);
        padding: 14px;
    }
    .kd-coupon-btn {
        width: 100%;
        justify-content: center;
        padding: 12px 14px;
    }

    .kd-promo-toast {
        left: 20px;
        right: 20px;
        bottom: 18px;
        width: auto;
    }
}


/* ===================================
    Reduced Motion
====================================== */

@media (prefers-reduced-motion: reduce) {
    .kd-promo-strip.kd-is-active { animation: none !important; }

    .kd-promo-hero-media :where(img, video) {
        transition: none !important;
        transform: none !important;
        filter: none !important;
    }
    .kd-promo-hero-content {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }

    .kd-promo-ticker-inner {
        animation: none !important;
        padding-left: 0;
        white-space: normal;
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 10px 18px;
    }
    .kd-promo-ticker-item::after { display: none; }

    .kd-promo-toast {
        transition: none !important;
        transform: none !important;
        opacity: 1 !important;
        position: static;
        width: 100%;
        margin-top: 15px;
    }

    .kd-promo-card,
    .kd-promo-coupon-card {
        transition: none !important;
        transform: none !important;
    }
}

/* ===================================
    36. Separators & Dividers (Enhanced)
====================================== */

/* --- Base HR (Low Specificity + Modern Defaults) --- */
:where(hr) {
    --kd-divider-color: rgba(0,0,0,0.14);
    --kd-divider-thickness: 1px;
    --kd-divider-margin-y: 2.5rem;
    --kd-divider-radius: 999px;

    margin: var(--kd-divider-margin-y) 0;
    border: 0;
    height: 0;
    border-top: var(--kd-divider-thickness) solid var(--kd-divider-color);
    opacity: 1; /* kontrolü var'a bırak */
}

/* Optional: compact / roomy spacing */
:where(hr).kd-divider-sm { --kd-divider-margin-y: 1.5rem; }
:where(hr).kd-divider-lg { --kd-divider-margin-y: 3.5rem; }

/* Optional: thickness helpers */
:where(hr).kd-divider-1 { --kd-divider-thickness: 1px; }
:where(hr).kd-divider-2 { --kd-divider-thickness: 2px; }
:where(hr).kd-divider-3 { --kd-divider-thickness: 3px; }

/* Optional: color helpers */
:where(hr).kd-divider-light { --kd-divider-color: rgba(255,255,255,0.22); }
:where(hr).kd-divider-muted { --kd-divider-color: rgba(0,0,0,0.10); }
:where(hr).kd-divider-strong { --kd-divider-color: rgba(0,0,0,0.22); }

/* Make hr look crisp on dark backgrounds (manual opt-in) */
.kd-divider-on-dark :where(hr) { --kd-divider-color: rgba(255,255,255,0.16); }


/* --- Style 01: Line Variations (applies to hr OR .divider-line) --- */
:where(hr, .kd-divider-line).kd-divider-solid  { border-top-style: solid; }
:where(hr, .kd-divider-line).kd-divider-dashed { border-top-style: dashed; }
:where(hr, .kd-divider-line).kd-divider-dotted { --kd-divider-thickness: 2px; border-top-style: dotted; }
:where(hr, .kd-divider-line).kd-divider-double { --kd-divider-thickness: 4px; border-top-style: double; }

/* Rounded line (nice for thick dividers) */
:where(hr, .kd-divider-line).kd-divider-rounded {
    border-top-left-radius: var(--kd-divider-radius);
    border-top-right-radius: var(--kd-divider-radius);
}

/* Short line helpers */
:where(hr, .kd-divider-line).kd-divider-short { max-width: 140px; margin-left: auto; margin-right: auto; }
:where(hr, .kd-divider-line).kd-divider-xs { max-width: 90px; }
:where(hr, .kd-divider-line).kd-divider-left { margin-left: 0; margin-right: auto; }
:where(hr, .kd-divider-line).kd-divider-right { margin-left: auto; margin-right: 0; }


/* --- Style 02: Gradient Fades (Modern + variable driven) --- */
:where(hr, .kd-divider-line).kd-divider-gradient-center,:where(hr, .kd-divider-line).kd-divider-gradient-left,:where(hr, .kd-divider-line).kd-divider-gradient-right {
    --kd-divider-fade: rgba(0,0,0,0.18);
    height: 1px;
    border: 0;
    background-repeat: no-repeat;
    background-size: 100% 1px;
    opacity: 1;
}

:where(hr, .kd-divider-line).kd-divider-gradient-center {
    background-image: linear-gradient(to right, transparent, var(--kd-divider-fade), transparent);
}

:where(hr, .kd-divider-line).kd-divider-gradient-left {
    background-image: linear-gradient(to right, var(--kd-divider-fade), transparent);
}

:where(hr, .kd-divider-line).kd-divider-gradient-right {
    background-image: linear-gradient(to left, var(--kd-divider-fade), transparent);
}

/* On dark background */
.kd-divider-on-dark :where(hr, .kd-divider-line).kd-divider-gradient-center,.kd-divider-on-dark :where(hr, .kd-divider-line).kd-divider-gradient-left,.kd-divider-on-dark :where(hr, .kd-divider-line).kd-divider-gradient-right {
    --kd-divider-fade: rgba(255,255,255,0.22);
}


/* --- NEW Style 03: Shimmer / Animated Gradient (premium look) --- */
/* Use: <hr class="divider-shimmer"> */
:where(hr, .kd-divider-line).kd-divider-shimmer {
    --kd-shimmer-a: rgba(var(--base-color-rgb), 0.55);
    --kd-shimmer-b: rgba(0,0,0,0.06);
    height: 2px;
    border: 0;
    background-image: linear-gradient(90deg, transparent, var(--kd-shimmer-a), transparent);
    background-size: 220% 100%;
    background-position: 0% 50%;
    animation: kd-divider-shimmer 2.2s linear infinite;
    opacity: 0.9;
    border-radius: 999px;
}

@keyframes kd-divider-shimmer {
    0%   { background-position: 0% 50%; }
    100% { background-position: 220% 50%; }
}

/* Optional: slow shimmer */
:where(hr, .kd-divider-line).kd-divider-shimmer.kd-slow { animation-duration: 3.2s; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    :where(hr, .kd-divider-line).kd-divider-shimmer { animation: none !important; }
}


/* --- Style 04: Icon / Text in Center (Upgraded) --- */
.kd-divider-with-icon,.kd-divider-with-text {
    --kd-divider-gap: 18px;
    --kd-divider-line: currentColor;
    --kd-divider-line-opacity: 0.22;

    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--kd-divider-gap);
    margin: 3.2rem 0;
    color: var(--medium-gray);
    opacity: 1;
}

.kd-divider-with-icon::before,.kd-divider-with-icon::after,.kd-divider-with-text::before,.kd-divider-with-text::after {
    content: "";
    flex: 1;
    height: 1px;
    background-color: var(--kd-divider-line);
    opacity: var(--kd-divider-line-opacity);
}

/* Icon box (default) */
.kd-divider-icon-box {
    --kd-icon-box-size: 44px;
    width: var(--kd-icon-box-size);
    height: var(--kd-icon-box-size);
    display: inline-flex;
    align-items: center;
    justify-content: center;

    border: 1px solid rgba(0,0,0,0.12);
    border-radius: 999px;
    font-size: 1.05rem;
    background-color: var(--white);
    color: var(--base-color);

    box-shadow: 0 10px 25px rgba(0,0,0,0.08);
}

/* Variants */
.kd-divider-icon-box.kd-icon-glass {
    background: rgba(255,255,255,0.65);
    border: 1px solid rgba(255,255,255,0.55);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.kd-divider-icon-box.kd-icon-outline {
    background: transparent;
    box-shadow: none;
}

.kd-divider-icon-box.kd-icon-square {
    border-radius: var(--radius-4);
}

/* Text pill */
.kd-divider-text-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 7px 14px;
    border-radius: 999px;
    font-weight: 800;
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--dark-gray);
    background: rgba(0,0,0,0.04);
    border: 1px solid rgba(0,0,0,0.08);
}

.kd-divider-with-text.kd-text-primary .kd-divider-text-pill {
    color: var(--base-color);
    background: rgba(var(--base-color-rgb), 0.10);
    border-color: rgba(var(--base-color-rgb), 0.22);
}

/* On dark */
.kd-divider-on-dark .kd-divider-with-icon,.kd-divider-on-dark .kd-divider-with-text { color: rgba(255,255,255,0.70); }

.kd-divider-on-dark .kd-divider-icon-box {
    background: rgba(255,255,255,0.08);
    border-color: rgba(255,255,255,0.16);
    box-shadow: 0 10px 25px rgba(0,0,0,0.25);
}

.kd-divider-on-dark .kd-divider-text-pill {
    color: rgba(255,255,255,0.85);
    background: rgba(255,255,255,0.10);
    border-color: rgba(255,255,255,0.16);
}


/* --- NEW Style 05: Ornament Divider (dots/diamond) --- */
/* Use: <div class="divider-ornament"></div> */
.kd-divider-ornament {
    --kd-ornament-color: rgba(0,0,0,0.18);
    --kd-ornament-size: 8px;
    --kd-ornament-gap: 12px;
    --kd-ornament-margin: 3rem 0;

    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--kd-ornament-gap);
    margin: var(--kd-ornament-margin);
    color: var(--kd-ornament-color);
    opacity: 1;
}

.kd-divider-ornament::before,.kd-divider-ornament::after {
    content: "";
    flex: 1;
    height: 1px;
    background: currentColor;
    opacity: 0.35;
}

.kd-divider-ornament .kd-ornament {
    width: calc(var(--kd-ornament-size) * 1.35);
    height: calc(var(--kd-ornament-size) * 1.35);
    background: currentColor;
    opacity: 0.65;
    transform: rotate(45deg);
    border-radius: 3px;
    box-shadow:
        calc(var(--kd-ornament-gap) * -1) 0 0 currentColor,
        calc(var(--kd-ornament-gap) * 1) 0 0 currentColor;
}

/* On dark */
.kd-divider-on-dark .kd-divider-ornament { --kd-ornament-color: rgba(255,255,255,0.22); }


/* --- Style 06: SVG Shape Dividers (Section Edges) (Improved) --- */
.kd-shape-divider {
    --kd-shape-height: 70px;
    --kd-shape-fill: var(--white);
    --kd-shape-opacity: 1;

    position: absolute;
    left: 0;
    width: 100%;
    overflow: hidden;
    line-height: 0;
    z-index: 1;
    pointer-events: none;
    opacity: var(--kd-shape-opacity);
}

.kd-shape-divider svg {
    display: block;
    width: calc(100% + 1.3px);
    height: var(--kd-shape-height);
}

.kd-shape-divider .kd-shape-fill { fill: var(--kd-shape-fill); }

/* Placement */
.kd-shape-divider.kd-top { top: 0; transform: rotate(180deg); }
.kd-shape-divider.kd-bottom { bottom: 0; }

/* Height presets (still compatible with your previous classes) */
.kd-shape-wave   { --kd-shape-height: 120px; }
.kd-shape-slant  { --kd-shape-height: 100px; }
.kd-shape-curve  { --kd-shape-height: 60px; }
.kd-shape-zigzag { --kd-shape-height: 40px; }

/* Fill utilities */
.kd-shape-fill-white { --kd-shape-fill: var(--white); }
.kd-shape-fill-light { --kd-shape-fill: var(--very-light-gray); }
.kd-shape-fill-dark  { --kd-shape-fill: var(--dark-gray); }
.kd-shape-fill-base  { --kd-shape-fill: var(--base-color); }

/* NEW: Animated wave drift (SVG should have wider viewBox or repeated wave) */
.kd-shape-divider.kd-shape-animate svg {
    width: 140%;
    animation: kd-shape-drift 8s linear infinite;
}

@keyframes kd-shape-drift {
    from { transform: translateX(0); }
    to   { transform: translateX(-10%); }
}

@media (prefers-reduced-motion: reduce) {
    .kd-shape-divider.kd-shape-animate svg { animation: none !important; }
}


/* --- Style 07: Vertical Divider (Upgraded + variants) --- */
.kd-divider-vertical {
    --kd-vdiv-w: 1px;
    --kd-vdiv-h: 100%;
    --kd-vdiv-min: 24px;
    --kd-vdiv-color: rgba(0,0,0,0.14);

    display: inline-block;
    width: var(--kd-vdiv-w);
    height: var(--kd-vdiv-h);
    min-height: var(--kd-vdiv-min);
    background-color: var(--kd-vdiv-color);
    margin: 0 15px;
    vertical-align: middle;
}

.kd-divider-vertical.kd-dashed {
    background: none;
    border-left: 1px dashed var(--kd-vdiv-color);
    width: 0;
}

.kd-divider-vertical.kd-glow {
    background: linear-gradient(to bottom, transparent, rgba(var(--base-color-rgb), 0.45), transparent);
    opacity: 0.9;
}

.kd-divider-on-dark .kd-divider-vertical { --kd-vdiv-color: rgba(255,255,255,0.18); }


/* ===================================
    37. Service Boxes & Info Cards (Enhanced)
====================================== */

.kd-service-wrapper {
    --kd-serv-gap: 30px;
    --kd-serv-radius: var(--radius-6);
    --kd-serv-bg: var(--white);
    --kd-serv-color: var(--medium-gray);
    --kd-serv-title: var(--dark-gray);
    --kd-serv-icon-color: var(--base-color);

    --kd-serv-border: 1px solid rgba(0,0,0,0.06);
    --kd-serv-shadow: 0 10px 40px rgba(0,0,0,0.05);
    --kd-serv-shadow-hover: 0 22px 70px rgba(0,0,0,0.14);

    --kd-serv-hover-lift: -8px;
    --kd-serv-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    --kd-serv-min: 280px;

    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(var(--kd-serv-min), 1fr));
    gap: var(--kd-serv-gap);
    width: 100%;
}

/* Optional: tighter / wider gaps */
.kd-service-gap-sm { --kd-serv-gap: 18px; }
.kd-service-gap-lg { --kd-serv-gap: 40px; }

/* Optional: dark wrapper */
.kd-service-dark {
    --kd-serv-bg: #141414;
    --kd-serv-title: rgba(255,255,255,0.92);
    --kd-serv-color: rgba(255,255,255,0.70);
    --kd-serv-border: 1px solid rgba(255,255,255,0.10);
    --kd-serv-shadow: 0 14px 55px rgba(0,0,0,0.35);
    --kd-serv-shadow-hover: 0 26px 90px rgba(0,0,0,0.55);
}

/* --- Common Elements inside Services (Polished) --- */
.kd-service-icon {
    --kd-serv-icon-size: 2.5rem;
    --kd-serv-icon-bg: rgba(var(--base-color-rgb), 0.08);

    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--kd-serv-icon-size);
    color: var(--kd-serv-icon-color);
    margin-bottom: 18px;
    transition: transform 0.45s var(--kd-serv-ease), color 0.35s ease, background-color 0.35s ease;
    will-change: transform;
}

.kd-service-title {
    font-size: 1.25rem;
    font-weight: 900;
    color: var(--kd-serv-title);
    margin-bottom: 10px;
    line-height: 1.25;
    letter-spacing: -0.01em;
}

.kd-service-text {
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--kd-serv-color);
    margin-bottom: 0;
}

.kd-service-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 18px;
    font-weight: 900;
    font-size: 0.82rem;
    color: var(--kd-serv-title);
    text-transform: uppercase;
    letter-spacing: 0.10em;
    text-decoration: none;
    transition: color 0.25s ease, transform 0.25s var(--kd-serv-ease);
}
.kd-service-link i { transition: transform 0.25s var(--kd-serv-ease); }
.kd-service-link:hover { color: var(--kd-serv-icon-color); transform: translateY(-1px); }
.kd-service-link:hover i { transform: translateX(6px); }
.kd-service-link:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
    border-radius: 10px;
    padding: 6px 8px;
    margin-left: -8px;
}

/* Optional: clickable overlay helper */
.kd-service-link-overlay {
    position: absolute;
    inset: 0;
    z-index: 5;
    cursor: pointer;
}

/* Optional: focus ring for whole card */
:where(.kd-service-box-01, .kd-service-box-02, .kd-service-box-03, .kd-service-box-04, .kd-service-box-05, .kd-service-box-06, .kd-service-box-07, .kd-service-box-09, .kd-service-box-10):focus-within {
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.18), var(--kd-serv-shadow);
}


/* --- Style 01: Classic Centered (Icon Top) (Refined) --- */
.kd-service-box-01 {
    position: relative;
    background-color: var(--kd-serv-bg);
    padding: 46px 36px;
    text-align: center;
    border-radius: var(--kd-serv-radius);
    border: var(--kd-serv-border);
    box-shadow: var(--kd-serv-shadow);
    transition: transform 0.45s var(--kd-serv-ease), box-shadow 0.45s var(--kd-serv-ease), border-color 0.35s ease;
    overflow: hidden;
    isolation: isolate;
}

/* Subtle spotlight */
.kd-service-box-01::before {
    content: "";
    position: absolute;
    inset: -40%;
    background: radial-gradient(circle at 20% 10%, rgba(var(--base-color-rgb), 0.12), transparent 60%);
    z-index: -1;
    opacity: 0.9;
    transition: opacity 0.45s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-01:hover {
        transform: translateY(var(--kd-serv-hover-lift));
        box-shadow: var(--kd-serv-shadow-hover);
        border-color: transparent;
    }
    .kd-service-box-01:hover::before { opacity: 1; }

    .kd-service-box-01:hover .kd-service-icon {
        transform: scale(1.12) rotate(-2deg);
    }
}

/* --- Style 02: Flex Layout (Icon Left) (Refined) --- */
.kd-service-box-02 {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 22px;
    padding: 36px;
    background-color: var(--kd-serv-bg);
    border-radius: var(--kd-serv-radius);
    border: var(--kd-serv-border);
    box-shadow: var(--kd-serv-shadow);
    transition: transform 0.45s var(--kd-serv-ease), box-shadow 0.45s var(--kd-serv-ease), border-color 0.35s ease;
    overflow: hidden;
    isolation: isolate;
}

.kd-service-box-02 .kd-service-icon {
    margin-bottom: 0;
    flex-shrink: 0;
    width: 68px;
    height: 68px;
    border-radius: 999px;
    background-color: rgba(var(--base-color-rgb), 0.10);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 2.1rem;
}

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-02:hover {
        transform: translateY(-6px);
        box-shadow: var(--kd-serv-shadow-hover);
        border-color: rgba(var(--base-color-rgb), 0.25);
    }

    .kd-service-box-02:hover .kd-service-icon {
        background-color: var(--kd-serv-icon-color);
        color: var(--white);
        transform: rotate(360deg);
    }
}

/* --- Style 03: Hover Reveal (Background Fill) (Better Contrast + Smooth) --- */
.kd-service-box-03 {
    position: relative;
    padding: 46px 36px;
    background-color: var(--kd-serv-bg);
    border: var(--kd-serv-border);
    border-radius: var(--kd-serv-radius);
    box-shadow: var(--kd-serv-shadow);
    overflow: hidden;
    isolation: isolate;
    transition: transform 0.45s var(--kd-serv-ease), box-shadow 0.45s var(--kd-serv-ease), border-color 0.35s ease;
}

/* Layered fill for premium depth */
.kd-service-box-03::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(var(--base-color-rgb), 1), var(--slate-blue));
    transform: scaleY(0);
    transform-origin: bottom;
    transition: transform 0.55s var(--kd-serv-ease);
    z-index: -2;
}
.kd-service-box-03::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(900px circle at 20% 10%, rgba(255,255,255,0.18), transparent 55%);
    opacity: 0;
    transition: opacity 0.55s ease;
    z-index: -1;
}

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-03:hover {
        transform: translateY(-8px);
        box-shadow: var(--kd-serv-shadow-hover);
        border-color: transparent;
    }
    .kd-service-box-03:hover::before { transform: scaleY(1); }
    .kd-service-box-03:hover::after { opacity: 1; }

    .kd-service-box-03:hover :where(.kd-service-title, .kd-service-text, .kd-service-icon, .kd-service-link) {
        color: var(--white);
    }
    .kd-service-box-03:hover .kd-service-text { color: rgba(255,255,255,0.88); }
}

/* --- Style 04: Organic Blob Icon (Refined) --- */
.kd-service-box-04 {
    position: relative;
    background-color: var(--kd-serv-bg);
    border: var(--kd-serv-border);
    border-radius: var(--kd-serv-radius);
    box-shadow: var(--kd-serv-shadow);
    padding: 40px 34px;
    transition: transform 0.45s var(--kd-serv-ease), box-shadow 0.45s var(--kd-serv-ease);
    overflow: hidden;
    isolation: isolate;
}

.kd-service-box-04 .kd-service-icon {
    width: 90px;
    height: 90px;
    background-color: rgba(var(--base-color-rgb), 0.10);
    color: var(--kd-serv-icon-color);
    border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
    margin-bottom: 22px;
    animation: kd-serv-blob 6s ease-in-out infinite alternate;
    display: inline-flex;
}

@keyframes kd-serv-blob {
    0% { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; }
    100% { border-radius: 70% 30% 30% 70% / 70% 70% 30% 30%; }
}

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-04:hover {
        transform: translateY(-8px);
        box-shadow: var(--kd-serv-shadow-hover);
    }
    .kd-service-box-04:hover .kd-service-icon {
        background-color: var(--kd-serv-icon-color);
        color: var(--white);
        transform: scale(1.08) rotate(6deg);
    }
}

/* --- Style 05: Image Overlay (Dark) (Refined) --- */
.kd-service-box-05 {
    position: relative;
    padding: 120px 34px 44px;
    border-radius: var(--kd-serv-radius);
    overflow: hidden;
    color: var(--white);
    z-index: 1;

    background-size: cover;
    background-position: center;
    box-shadow: var(--kd-serv-shadow);
    border: 1px solid rgba(255,255,255,0.10);
}

/* Overlay */
.kd-service-box-05::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(900px circle at 20% 10%, rgba(var(--base-color-rgb), 0.26), transparent 60%),
        linear-gradient(to top, rgba(0,0,0,0.92), rgba(0,0,0,0.18));
    z-index: -1;
    transition: opacity 0.45s ease, filter 0.45s ease;
    opacity: 0.92;
}

.kd-service-box-05 :where(.kd-service-title, .kd-service-icon) { color: var(--white); }
.kd-service-box-05 .kd-service-text { color: rgba(255,255,255,0.86); }

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-05:hover::after {
        opacity: 1;
        filter: saturate(1.05) contrast(1.02);
        background:
            radial-gradient(900px circle at 20% 10%, rgba(var(--base-color-rgb), 0.35), transparent 60%),
            linear-gradient(to top, rgba(var(--base-color-rgb), 0.65), rgba(0,0,0,0.35));
    }
}

/* --- Style 06: Neumorphism (Soft UI) (Safer Defaults) --- */
/* NOTE: This style needs a light gray background area to look good */
.kd-service-box-06 {
    position: relative;
    background-color: #f0f0f3;
    border-radius: 20px;
    padding: 42px 32px;
    box-shadow:
        10px 10px 22px rgba(174, 174, 192, 0.40),
        -10px -10px 22px rgba(255,255,255, 0.90);
    transition: transform 0.35s var(--kd-serv-ease);
}

.kd-service-box-06 .kd-service-icon {
    width: 74px;
    height: 74px;
    border-radius: 50%;
    background-color: #f0f0f3;
    box-shadow:
        6px 6px 12px rgba(174, 174, 192, 0.40),
        -6px -6px 12px rgba(255,255,255, 0.90);
    margin-bottom: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--kd-serv-icon-color);
}

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-06:hover { transform: translateY(-6px); }
}

/* --- Style 07: Gradient Border (Premium) (Refined + Hover) --- */
.kd-service-box-07 {
    position: relative;
    background: var(--kd-serv-bg);
    padding: 42px 32px;
    border-radius: var(--kd-serv-radius);
    box-shadow: var(--kd-serv-shadow);
    border: 1px solid rgba(0,0,0,0.06);
    transition: transform 0.45s var(--kd-serv-ease), box-shadow 0.45s var(--kd-serv-ease);
    overflow: hidden;
    isolation: isolate;
}

/* Pseudo-border */
.kd-service-box-07::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    padding: 2px;
    background: linear-gradient(135deg, var(--kd-serv-icon-color), #00d2ff);
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 0.35;
    transition: opacity 0.35s ease;
    pointer-events: none;
    z-index: 0;
}

.kd-service-box-07 > * { position: relative; z-index: 1; }

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-07:hover {
        transform: translateY(-8px);
        box-shadow: var(--kd-serv-shadow-hover);
    }
    .kd-service-box-07:hover::before { opacity: 1; }
}


/* --- Style 08: 3D Flip Card (keep your API) --- */
.kd-service-flip-wrapper {
    perspective: 1000px;
    min-height: 320px;
}

.kd-service-flip-inner {
    position: relative;
    width: 100%;
    height: 100%;
    text-align: center;
    transition: transform 0.85s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    transform-style: preserve-3d;
}

@media (hover: hover) and (pointer: fine) {
    .kd-service-flip-wrapper:hover .kd-service-flip-inner {
        transform: rotateY(180deg);
    }
}

.kd-service-flip-front,.kd-service-flip-back {
    position: absolute;
    inset: 0;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    border-radius: var(--kd-serv-radius);
    padding: 42px 32px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: var(--kd-serv-shadow);
}

.kd-service-flip-front {
    background-color: var(--kd-serv-bg);
    border: var(--kd-serv-border);
}

.kd-service-flip-back {
    background: linear-gradient(135deg, var(--kd-serv-icon-color), var(--slate-blue));
    color: var(--white);
    transform: rotateY(180deg);
}

.kd-service-flip-back .kd-service-text { color: rgba(255,255,255,0.88); }
.kd-service-flip-back .kd-service-title { color: var(--white); }


/* --- Style 09: Hover Slide-Up (Compact) (Refined) --- */
.kd-service-box-09 {
    --kd-serv-09-h: 320px;

    position: relative;
    overflow: hidden;
    border-radius: var(--kd-serv-radius);
    height: var(--kd-serv-09-h);
    background-color: var(--dark-gray);
    box-shadow: var(--kd-serv-shadow);
    isolation: isolate;
}

.kd-service-box-09 img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.8s var(--kd-serv-ease), opacity 0.45s ease, filter 0.45s ease;
    opacity: 0.72;
    transform: scale(1.02);
}

.kd-service-box-09::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(900px circle at 20% 10%, rgba(var(--base-color-rgb), 0.26), transparent 60%);
    opacity: 0.45;
    pointer-events: none;
}

.kd-service-box-09 .kd-service-content {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    padding: 34px;
    background: linear-gradient(to top, rgba(0,0,0,0.92), rgba(0,0,0,0));
    transform: translateY(62px);
    transition: transform 0.45s var(--kd-serv-ease);
}

.kd-service-box-09 .kd-service-icon {
    font-size: 2rem;
    color: var(--white);
    margin-bottom: 10px;
}

.kd-service-box-09 .kd-service-title { color: var(--white); }
.kd-service-box-09 .kd-service-text {
    color: rgba(255,255,255,0.84);
    opacity: 0;
    transition: opacity 0.35s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-09:hover img { transform: scale(1.08); opacity: 0.45; filter: contrast(1.05); }
    .kd-service-box-09:hover .kd-service-content { transform: translateY(0); }
    .kd-service-box-09:hover .kd-service-text { opacity: 1; transition-delay: 0.1s; }
}


/* --- Style 10: Minimal Top Border (Clean) (Refined) --- */
.kd-service-box-10 {
    position: relative;
    background-color: var(--kd-serv-bg);
    border-radius: var(--kd-serv-radius);
    padding: 42px 32px;
    border-top: 3px solid rgba(0,0,0,0.12);
    border-left: var(--kd-serv-border);
    border-right: var(--kd-serv-border);
    border-bottom: var(--kd-serv-border);
    box-shadow: 0 8px 28px rgba(0,0,0,0.04);
    transition: transform 0.45s var(--kd-serv-ease), box-shadow 0.45s var(--kd-serv-ease), border-top-color 0.25s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-10:hover {
        border-top-color: var(--kd-serv-icon-color);
        transform: translateY(-7px);
        box-shadow: var(--kd-serv-shadow-hover);
    }
}


/* --- NEW Style 11: Glass + Floating Badge (Ultra modern) --- */
.kd-service-box-11 {
    position: relative;
    padding: 44px 34px;
    border-radius: var(--kd-serv-radius);
    background: rgba(255,255,255,0.60);
    border: 1px solid rgba(255,255,255,0.55);
    box-shadow: 0 18px 70px rgba(0,0,0,0.10);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    overflow: hidden;
    isolation: isolate;
    transition: transform 0.45s var(--kd-serv-ease), box-shadow 0.45s var(--kd-serv-ease);
}

.kd-service-box-11::before {
    content: "";
    position: absolute;
    inset: -30%;
    background:
        radial-gradient(700px circle at 20% 10%, rgba(var(--base-color-rgb), 0.18), transparent 60%),
        radial-gradient(700px circle at 90% 70%, rgba(100,200,255, 0.12), transparent 60%);
    z-index: -1;
    opacity: 0.9;
}

.kd-service-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 12px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    color: var(--base-color);
    background: rgba(var(--base-color-rgb), 0.12);
    border: 1px solid rgba(var(--base-color-rgb), 0.18);
    margin-bottom: 14px;
}

@media (hover: hover) and (pointer: fine) {
    .kd-service-box-11:hover {
        transform: translateY(-8px);
        box-shadow: 0 28px 95px rgba(0,0,0,0.18);
    }
}


/* --- Responsive --- */
@media (max-width: 767px) {
    .kd-service-box-02 {
        flex-direction: column;
        text-align: center;
        align-items: center;
    }
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
    .kd-service-box-01,
    .kd-service-box-02,
    .kd-service-box-03,
    .kd-service-box-04,
    .kd-service-box-05,
    .kd-service-box-06,
    .kd-service-box-07,
    .kd-service-box-09,
    .kd-service-box-10,
    .kd-service-box-11,
    .kd-service-icon,
    .kd-service-flip-inner,
    .kd-service-box-04 .kd-service-icon {
        transition: none !important;
        animation: none !important;
        transform: none !important;
    }

    .kd-service-flip-wrapper:hover .kd-service-flip-inner { transform: none !important; }
}

/* ===================================
    38. Shape Dividers & Section Masks (Enhanced)
====================================== */

/* --- Base Wrapper (Upgrade: Variables + Shadow + Blur options) --- */
.kd-shape-divider-wrapper {
    --kd-shape-height: 70px;
    --kd-shape-fill: var(--white);
    --kd-shape-opacity: 1;

    /* Optional depth */
    --kd-shape-shadow: none; /* e.g. 0 -12px 40px rgba(0,0,0,0.15) */
    --kd-shape-blur: 0px;    /* e.g. 6px for softer edge */

    position: absolute;
    left: 0;
    width: 100%;
    overflow: hidden;
    line-height: 0;
    z-index: 1;
    pointer-events: none;
    opacity: var(--kd-shape-opacity);
    filter: blur(var(--kd-shape-blur));
}

/* Position Helpers */
.kd-shape-top { top: 0; }
.kd-shape-bottom { bottom: 0; }

/* Flip Helpers */
.kd-shape-flip-x { transform: scaleX(-1); }
.kd-shape-flip-y { transform: scaleY(-1); }
.kd-shape-flip-xy { transform: scale(-1); }

/* Safe stacking (if you also use transforms for flips) */
.kd-shape-divider-wrapper > * { transform: translateZ(0); }

/* --- SVG Container (more consistent sizing) --- */
.kd-shape-divider-svg svg {
    display: block;
    width: calc(100% + 1.3px);
    height: var(--kd-shape-height);
    position: relative;
    left: 50%;
    transform: translateX(-50%);
    filter: drop-shadow(var(--kd-shape-shadow));
}

.kd-shape-divider-svg .kd-shape-fill {
    fill: var(--kd-shape-fill);
}

/* Height Variants */
.kd-shape-h-sm { --kd-shape-height: 40px; }
.kd-shape-h-md { --kd-shape-height: 90px; }
.kd-shape-h-lg { --kd-shape-height: 150px; }
.kd-shape-h-xl { --kd-shape-height: 250px; }

/* Color Helpers */
.kd-fill-light { --kd-shape-fill: var(--very-light-gray); }
.kd-fill-dark  { --kd-shape-fill: var(--dark-gray); }
.kd-fill-base  { --kd-shape-fill: var(--base-color); }

/* Optional opacity helpers */
.kd-shape-opacity-60 { --kd-shape-opacity: 0.6; }
.kd-shape-opacity-80 { --kd-shape-opacity: 0.8; }

/* ===================================
    Style 01: CSS Clip-Path Masks (Expanded)
====================================== */
/* Apply directly to section or inner div */
/* NOTE: clip-path works great for modern browsers; consider fallback bg color if needed. */

.kd-mask-slant-right { clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%); }
.kd-mask-slant-left  { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 85%); }
.kd-mask-arrow-down  { clip-path: polygon(0 0, 100% 0, 100% 85%, 50% 100%, 0 85%); }
.kd-mask-circle-bottom { clip-path: ellipse(150% 100% at 50% 0%); }

/* NEW: Soft curve bottom (nice for modern sections) */
.kd-mask-soft-curve-bottom {
    clip-path: polygon(0 0, 100% 0, 100% 92%, 50% 100%, 0 92%);
}

/* NEW: Notch / ticket cut */
.kd-mask-notch-bottom {
    clip-path: polygon(0 0, 100% 0, 100% 90%, 60% 90%, 50% 100%, 40% 90%, 0 90%);
}

/* NEW: Diagonal split (strong modern look) */
.kd-mask-diagonal-split {
    clip-path: polygon(0 0, 100% 8%, 100% 100%, 0 92%);
}

/* NEW: Rounded corner “card mask” (subtle) */
.kd-mask-rounded-cut {
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 24px), calc(100% - 24px) 100%, 0 100%);
}

/* Progressive enhancement guard (optional) */
@supports not (clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%)) {
    :where(.kd-mask-slant-right, .kd-mask-slant-left, .kd-mask-arrow-down, .kd-mask-circle-bottom,
           .kd-mask-soft-curve-bottom, .kd-mask-notch-bottom, .kd-mask-diagonal-split, .kd-mask-rounded-cut) {
        clip-path: none;
    }
}

/* ===================================
    Style 02: Mask-Image Scallops (Super clean, no SVG)  ✅
====================================== */
/* Apply to section: class="mask-scallop-bottom" */
/* Works best in WebKit + modern browsers */
.kd-mask-scallop-bottom {
    --kd-scallop-size: 26px;
    -webkit-mask-image: radial-gradient(circle at 50% 0, transparent calc(var(--kd-scallop-size) - 1px), #000 var(--kd-scallop-size));
    -webkit-mask-size: calc(var(--kd-scallop-size) * 2) var(--kd-scallop-size);
    -webkit-mask-repeat: repeat-x;
    -webkit-mask-position: bottom left;

    mask-image: radial-gradient(circle at 50% 0, transparent calc(var(--kd-scallop-size) - 1px), #000 var(--kd-scallop-size));
    mask-size: calc(var(--kd-scallop-size) * 2) var(--kd-scallop-size);
    mask-repeat: repeat-x;
    mask-position: bottom left;
}

.kd-mask-scallop-top {
    --kd-scallop-size: 26px;
    -webkit-mask-image: radial-gradient(circle at 50% 100%, transparent calc(var(--kd-scallop-size) - 1px), #000 var(--kd-scallop-size));
    -webkit-mask-size: calc(var(--kd-scallop-size) * 2) var(--kd-scallop-size);
    -webkit-mask-repeat: repeat-x;
    -webkit-mask-position: top left;

    mask-image: radial-gradient(circle at 50% 100%, transparent calc(var(--kd-scallop-size) - 1px), #000 var(--kd-scallop-size));
    mask-size: calc(var(--kd-scallop-size) * 2) var(--kd-scallop-size);
    mask-repeat: repeat-x;
    mask-position: top left;
}

@supports not ((-webkit-mask-image: radial-gradient(circle, #000, transparent)) or (mask-image: radial-gradient(circle, #000, transparent))) {
    .kd-mask-scallop-bottom,
    .kd-mask-scallop-top { -webkit-mask-image: none; mask-image: none; }
}

/* ===================================
    Style 03: Animated Wave (Drift) (Improved + Layering)
====================================== */
/* SVG must be wider (200%+) or repeatable pattern */
.kd-shape-wave-anim svg {
    width: 200%;
    height: var(--kd-shape-height);
    animation: kd-wave-drift 12s linear infinite;
}

/* NEW: Two-layer wave (depth) - expects two svgs inside wrapper */
.kd-shape-wave-stack svg { position: relative; }
.kd-shape-wave-stack svg.kd-layer-1 { opacity: 0.55; animation-duration: 18s; }
.kd-shape-wave-stack svg.kd-layer-2 { opacity: 1;    animation-duration: 12s; margin-top: -1px; }

@keyframes kd-wave-drift {
    0%   { transform: translateX(-50%); }
    50%  { transform: translateX(0%); }
    100% { transform: translateX(-50%); }
}

/* ===================================
    Style 04: Jagged Edge (CSS Gradient) (Refined)
====================================== */
.kd-shape-jagged {
    --kd-jag-size: 20px;
    --kd-jag-fill: var(--white);

    height: var(--kd-jag-size);
    background-image:
        linear-gradient(45deg, transparent 50%, var(--kd-jag-fill) 50%),
        linear-gradient(-45deg, transparent 50%, var(--kd-jag-fill) 50%);
    background-position: bottom left;
    background-repeat: repeat-x;
    background-size: var(--kd-jag-size) var(--kd-jag-size);
    filter: drop-shadow(var(--kd-shape-shadow));
}
.kd-shape-jagged.kd-shape-top { transform: rotate(180deg); }
.kd-shape-jagged.kd-fill-light { --kd-jag-fill: var(--very-light-gray); }
.kd-shape-jagged.kd-fill-dark  { --kd-jag-fill: var(--dark-gray); }
.kd-shape-jagged.kd-fill-base  { --kd-jag-fill: var(--base-color); }

/* ===================================
    NEW Style 05: “Torn Paper” Divider (CSS Only)
====================================== */
/* Use as a standalone element: <div class="shape-torn shape-bottom"></div> */
.kd-shape-torn {
    --kd-torn-h: 34px;
    --kd-torn-fill: var(--white);
    height: var(--kd-torn-h);
    background:
      radial-gradient(18px 10px at 20px 0, transparent 60%, var(--kd-torn-fill) 61%) top left,
      radial-gradient(18px 10px at 60px 0, transparent 60%, var(--kd-torn-fill) 61%) top left,
      radial-gradient(18px 10px at 100px 0, transparent 60%, var(--kd-torn-fill) 61%) top left;
    background-size: 120px var(--kd-torn-h);
    background-repeat: repeat-x;
    filter: drop-shadow(var(--kd-shape-shadow));
}
.kd-shape-torn.kd-shape-top { transform: rotate(180deg); }
.kd-shape-torn.kd-fill-light { --kd-torn-fill: var(--very-light-gray); }
.kd-shape-torn.kd-fill-dark  { --kd-torn-fill: var(--dark-gray); }
.kd-shape-torn.kd-fill-base  { --kd-torn-fill: var(--base-color); }

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-shape-wave-anim svg { animation: none !important; }
    .kd-shape-wave-stack svg { animation: none !important; }
}


/* ===================================
    39. Sliders & Hero Areas (Add-ons) (Enhanced)
====================================== */

/* --- 0) Global Hero Visual Enhancers --- */

/* NEW: Noise overlay (subtle premium texture) */
.kd-hero-noise {
    position: relative;
    isolation: isolate;
}
.kd-hero-noise::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    opacity: 0.06;
    mix-blend-mode: overlay;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='1'/%3E%3C/svg%3E");
}

/* NEW: Spotlight overlay (great for text readability) */
.kd-hero-spotlight {
    position: relative;
}
.kd-hero-spotlight::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
      radial-gradient(900px circle at 30% 30%, rgba(0,0,0,0.20), transparent 55%),
      radial-gradient(900px circle at 70% 60%, rgba(0,0,0,0.35), transparent 60%);
}

/* NEW: Brand glow overlay */
.kd-hero-brand-glow {
    position: relative;
}
.kd-hero-brand-glow::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
      radial-gradient(900px circle at 20% 20%, rgba(var(--base-color-rgb), 0.28), transparent 55%),
      radial-gradient(900px circle at 80% 70%, rgba(100,200,255,0.18), transparent 60%);
}


/* --- 1. Video Background Wrapper (same API, small polish) --- */
.kd-hero-media-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
    transform: translateZ(0);
}

.kd-hero-media-bg :where(img, video) {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    backface-visibility: hidden;
    transform: translateZ(0);
}

/* NEW: optional blur/contrast for bg media */
.kd-hero-media-soft :where(img, video) { filter: saturate(1.05) contrast(1.05); }
.kd-hero-media-blur :where(img, video) { filter: blur(6px) brightness(0.9); transform: scale(1.05); }


/* --- 2. Ken Burns Effect (keep your selector, add easing + performance) --- */
.kd-hero-ken-burns .swiper-slide-active .kd-hero-bg img,.kd-hero-ken-burns .owl-item.active .kd-hero-bg img {
    animation: kd-ken-burns 22s cubic-bezier(0.2, 0.8, 0.2, 1) infinite alternate;
    will-change: transform;
}

@keyframes kd-ken-burns {
    from { transform: scale(1) translateZ(0); }
    to   { transform: scale(1.18) translateZ(0); }
}


/* --- 3. Scroll Down Indicator (Upgrade: bounce + chevrons variant) --- */
.kd-hero-scroll-down {
    --kd-scroll-color: rgba(255,255,255,0.75);

    position: absolute;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 5;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    color: var(--kd-scroll-color);
    text-decoration: none;
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 2px;
    text-transform: uppercase;
    transition: color 0.25s ease, transform 0.25s ease;
    cursor: pointer;
}

.kd-hero-scroll-down:hover {
    color: var(--white);
    transform: translateX(-50%) translateY(3px);
}

.kd-mouse-icon {
    width: 24px;
    height: 38px;
    border: 2px solid currentColor;
    border-radius: 20px;
    position: relative;
    box-shadow: 0 0 12px rgba(0,0,0,0.14);
}

.kd-mouse-wheel {
    position: absolute;
    top: 6px;
    left: 50%;
    width: 4px;
    height: 4px;
    margin-left: -2px;
    background-color: currentColor;
    border-radius: 50%;
    animation: kd-mouse-scroll 2s cubic-bezier(0.15, 0.41, 0.69, 0.94) infinite;
}

@keyframes kd-mouse-scroll {
    0%   { transform: translateY(0);  opacity: 1; }
    100% { transform: translateY(12px); opacity: 0; }
}

/* NEW: chevrons indicator */
.kd-hero-scroll-chevrons {
    display: flex;
    flex-direction: column;
    gap: 6px;
    align-items: center;
    justify-content: center;
}
.kd-hero-scroll-chevrons span {
    width: 10px; height: 10px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);
    opacity: 0.8;
    animation: kd-chevron 1.6s infinite;
}
.kd-hero-scroll-chevrons span:nth-child(2) { animation-delay: 0.15s; opacity: 0.6; }
.kd-hero-scroll-chevrons span:nth-child(3) { animation-delay: 0.3s;  opacity: 0.4; }

@keyframes kd-chevron {
    0%   { transform: rotate(45deg) translateY(0); opacity: 0.2; }
    50%  { opacity: 1; }
    100% { transform: rotate(45deg) translateY(6px); opacity: 0.2; }
}


/* --- 4. Hero Text Typewriter Effect (Better) --- */
/* Add .hero-typewriter to a span inside h1 */
.kd-hero-typewriter {
    --kd-type-cursor: var(--base-color);
    border-right: 0.12em solid var(--kd-type-cursor);
    padding-right: 4px;
    animation: kd-caret-blink 0.8s step-end infinite;
}

@keyframes kd-caret-blink { 50% { border-color: transparent; } }

/* NEW: Gradient typed word */
.kd-hero-typewriter.kd-text-gradient {
    background: linear-gradient(135deg, var(--white), rgba(var(--base-color-rgb), 0.85));
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}


/* --- 5. Gradient Overlays (More options) --- */
.kd-hero-overlay-gradient-v {
    background: linear-gradient(to bottom, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0.75) 100%) !important;
}
.kd-hero-overlay-gradient-h {
    background: linear-gradient(to right, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0) 100%) !important;
}

/* NEW: Brand tint overlay */
.kd-hero-overlay-brand {
    background: linear-gradient(135deg, rgba(var(--base-color-rgb), 0.55), rgba(0,0,0,0.35)) !important;
}

/* NEW: Soft “glass” overlay for modern look */
.kd-hero-overlay-glass {
    background: rgba(0,0,0,0.18) !important;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}


/* --- 6. Custom Navigation Arrows (Upgrade: reveal on hover + size vars) --- */
.kd-hero-nav-arrow {
    --kd-hero-nav-size: 56px;

    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: var(--kd-hero-nav-size);
    height: var(--kd-hero-nav-size);
    border: 1px solid rgba(255,255,255,0.25);
    border-radius: 50%;
    color: var(--white);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
    cursor: pointer;
    transition: all 0.3s ease;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    background: rgba(0,0,0,0.12);
    box-shadow: 0 12px 35px rgba(0,0,0,0.18);
}

.kd-hero-nav-arrow:hover {
    background-color: var(--white);
    color: var(--dark-gray);
    border-color: var(--white);
    transform: translateY(-50%) scale(1.04);
}

.kd-hero-prev { left: 30px; }
.kd-hero-next { right: 30px; }

/* NEW: only show arrows when user hovers hero (cleaner) */
.kd-hero-nav-reveal .kd-hero-nav-arrow {
    opacity: 0;
    transform: translateY(-50%) scale(0.92);
    pointer-events: none;
}
@media (hover: hover) and (pointer: fine) {
    .kd-hero-nav-reveal:hover .kd-hero-nav-arrow {
        opacity: 1;
        transform: translateY(-50%) scale(1);
        pointer-events: auto;
    }
}

/* Responsive Nav */
@media (max-width: 991px) {
    .kd-hero-nav-arrow { display: none; }
    .kd-hero-scroll-down { bottom: 20px; }
}


/* --- NEW: Swiper Pagination (Modern bullets + progress) --- */
.kd-hero-pagination-dots .swiper-pagination-bullet {
    width: 10px; height: 10px;
    opacity: 0.35;
    background: rgba(255,255,255,0.85);
    transition: transform 0.25s ease, opacity 0.25s ease, width 0.25s ease;
    border-radius: 999px;
}
.kd-hero-pagination-dots .swiper-pagination-bullet-active {
    opacity: 1;
    transform: scale(1.1);
    width: 28px; /* pill active */
}

/* NEW: progressbar style polish */
.kd-hero-pagination-progress .swiper-pagination-progressbar {
    background: rgba(255,255,255,0.18);
    height: 3px;
}
.kd-hero-pagination-progress .swiper-pagination-progressbar-fill {
    background: rgba(var(--base-color-rgb), 0.95);
}

/* --- NEW: Slide content entrance animation (CSS-only, works with swiper/owl active states) --- */
/* Put on text wrapper: .hero-anim */
.kd-hero-anim {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.25,0.8,0.25,1);
    will-change: transform, opacity;
}

/* Swiper / Owl triggers */
.swiper-slide-active .kd-hero-anim,.owl-item.active .kd-hero-anim,.kd-hero-anim.kd-is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Stagger helpers */
.kd-hero-anim.kd-delay-1 { transition-delay: 0.12s; }
.kd-hero-anim.kd-delay-2 { transition-delay: 0.24s; }
.kd-hero-anim.kd-delay-3 { transition-delay: 0.36s; }

/* NEW: Fade + scale variant */
.kd-hero-anim-scale {
    opacity: 0;
    transform: translateY(14px) scale(0.98);
    transition: opacity 0.75s ease, transform 0.75s cubic-bezier(0.25,0.8,0.25,1);
}
.swiper-slide-active .kd-hero-anim-scale,.owl-item.active .kd-hero-anim-scale,.kd-hero-anim-scale.kd-is-visible {
    opacity: 1;
    transform: translateY(0) scale(1);
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-mouse-wheel,
    .kd-shape-wave-anim svg,
    .kd-hero-ken-burns .swiper-slide-active .kd-hero-bg img,
    .kd-hero-scroll-chevrons span {
        animation: none !important;
    }

    .kd-hero-anim,
    .kd-hero-anim-scale {
        transition: none !important;
        transform: none !important;
        opacity: 1 !important;
    }
}

/* =========================================================
    40. Social Feeds & Streams (ADD-ONS / ENHANCED PACK)
   ========================================================= */

/* --- Utilities (Gap / Radius / Dense Layout) --- */
.kd-feed-gap-0  { --kd-feed-gap: 0px; }
.kd-feed-gap-sm { --kd-feed-gap: 8px; }
.kd-feed-gap-md { --kd-feed-gap: 14px; }
.kd-feed-gap-lg { --kd-feed-gap: 20px; }

.kd-feed-radius-0  { --kd-feed-radius: 0; }
.kd-feed-radius-sm { --kd-feed-radius: var(--radius-4); }
.kd-feed-radius-md { --kd-feed-radius: var(--radius-6); }
.kd-feed-radius-lg { --kd-feed-radius: 22px; }

/* Grid auto-dense: item span kullanınca boşlukları daha iyi doldurur */
.kd-social-feed-dense {
    grid-auto-flow: dense;
}

/* Span Helpers (Grid) */
.kd-feed-span-2-col { grid-column: span 2; }
.kd-feed-span-2-row { grid-row: span 2; }

/* Mobile safety: span reset */
@media (max-width: 767px) {
    .kd-feed-span-2-col { grid-column: span 1; }
    .kd-feed-span-2-row { grid-row: span 1; }
}

/* --- Base polish: radius + focus + pseudo gradient highlight --- */
.kd-social-feed-item {
    border-radius: var(--kd-feed-radius);
    transform: translateZ(0);
}

.kd-social-feed-item:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.28);
}

/* Subtle highlight layer (premium look) */
.kd-social-feed-item::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    opacity: 0;
    background:
        radial-gradient(600px circle at 20% 20%, rgba(255,255,255,0.18), transparent 55%),
        radial-gradient(700px circle at 80% 70%, rgba(var(--base-color-rgb), 0.18), transparent 60%);
    transition: opacity 0.35s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-social-feed-item:hover::before { opacity: 1; }
}

/* Overlay anim: fade + slight scale */
.kd-social-feed-overlay {
    transform: scale(1.02);
    transition: opacity 0.3s ease, transform 0.3s ease, backdrop-filter 0.3s ease;
}
.kd-social-feed-item:hover .kd-social-feed-overlay {
    transform: scale(1);
}

/* Touch devices: Hover yok -> overlay’i istersen “tap to toggle” için .is-active ile aç */
.kd-social-feed-item.kd-is-active .kd-social-feed-overlay,.kd-social-feed-item.kd-is-active .kd-social-feed-brand,.kd-social-feed-item.kd-is-active .kd-social-feed-meta {
    opacity: 1;
    transform: none;
}

/* --- Loading Skeleton (Shimmer) --- */
.kd-social-feed-item.kd-is-loading {
    background: linear-gradient(90deg, #f2f2f2 0%, #eaeaea 40%, #f2f2f2 80%);
    background-size: 200% 100%;
    animation: kd-feed-shimmer 1.2s ease-in-out infinite;
}
.kd-social-feed-item.kd-is-loading img { opacity: 0; }

@keyframes kd-feed-shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* --- Badge System (Reels / Video / Live / Multi) --- */
.kd-social-feed-badge {
    position: absolute;
    left: 10px;
    top: 10px;
    z-index: 3;
    font-size: 0.68rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--white);
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(0,0,0,0.55);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    box-shadow: 0 10px 25px rgba(0,0,0,0.18);
    pointer-events: none;
}

.kd-badge-reel  { background: rgba(var(--base-color-rgb), 0.90); }
.kd-badge-live  { background: rgba(220, 53, 69, 0.92); } /* red-ish */
.kd-badge-multi { background: rgba(0,0,0,0.55); }

/* Multi-post icon (top-left) */
.kd-social-feed-multi-icon {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 3;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: rgba(0,0,0,0.45);
    color: var(--white);
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    pointer-events: none;
}

/* --- Video Play Overlay (for reels/video thumbs) --- */
.kd-social-feed-play {
    position: absolute;
    inset: 0;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.kd-social-feed-play .kd-play-btn {
    width: 54px;
    height: 54px;
    border-radius: 50%;
    background: rgba(0,0,0,0.40);
    color: var(--white);
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    transform: scale(0.95);
    transition: transform 0.35s cubic-bezier(0.25,0.8,0.25,1), background 0.35s ease;
    box-shadow: 0 12px 30px rgba(0,0,0,0.22);
}
.kd-social-feed-play .kd-play-btn i { font-size: 1.1rem; margin-left: 2px; }

@media (hover: hover) and (pointer: fine) {
    .kd-social-feed-item:hover .kd-social-feed-play .kd-play-btn {
        transform: scale(1);
        background: rgba(var(--base-color-rgb), 0.85);
    }
}

/* --- Caption Reveal (Bottom) --- */
.kd-social-feed-caption {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    z-index: 3;
    padding: 16px 14px 12px;
    color: var(--white);
    background: linear-gradient(to top, rgba(0,0,0,0.78) 0%, rgba(0,0,0,0) 80%);
    transform: translateY(14px);
    opacity: 0;
    transition: transform 0.35s ease, opacity 0.35s ease;
    pointer-events: none;
}

.kd-social-feed-caption .kd-cap-title {
    font-weight: 800;
    font-size: 0.95rem;
    margin: 0 0 4px 0;
    line-height: 1.25;
}
.kd-social-feed-caption .kd-cap-sub {
    margin: 0;
    font-size: 0.8rem;
    opacity: 0.85;
}

@media (hover: hover) and (pointer: fine) {
    .kd-social-feed-item:hover .kd-social-feed-caption {
        transform: translateY(0);
        opacity: 1;
    }
}

/* --- Style 03: Card Grid (Rounded + Shadow Lift) --- */
.kd-social-feed-card {
    --kd-feed-gap: 14px;
    --kd-feed-radius: var(--radius-6);
}

.kd-social-feed-card .kd-social-feed-item {
    border-radius: var(--kd-feed-radius);
    box-shadow: 0 12px 30px rgba(0,0,0,0.06);
    transition: transform 0.35s cubic-bezier(0.25,0.8,0.25,1), box-shadow 0.35s ease;
}
@media (hover: hover) and (pointer: fine) {
    .kd-social-feed-card .kd-social-feed-item:hover {
        transform: translateY(-6px);
        box-shadow: 0 22px 55px rgba(0,0,0,0.12);
    }
}

/* --- Style 04: Duotone / Brand Tint (Modern editorial look) --- */
.kd-social-feed-duotone .kd-social-feed-item img {
    filter: grayscale(100%) contrast(1.05);
}
.kd-social-feed-duotone .kd-social-feed-item::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(135deg,
        rgba(var(--base-color-rgb), 0.55),
        rgba(0,0,0,0.20)
    );
    opacity: 0.75;
    transition: opacity 0.35s ease;
}
@media (hover: hover) and (pointer: fine) {
    .kd-social-feed-duotone .kd-social-feed-item:hover img { filter: grayscale(0%) contrast(1.05); }
    .kd-social-feed-duotone .kd-social-feed-item:hover::after { opacity: 0.45; }
}

/* --- Style 05: Stories Ring (Instagram story vibe) --- */
.kd-social-feed-stories {
    --kd-feed-gap: 12px;
    grid-template-columns: repeat(auto-fit, minmax(86px, 1fr));
}

.kd-social-feed-stories .kd-social-feed-item {
    border-radius: 50%;
    aspect-ratio: 1/1;
    overflow: hidden;
}

/* Gradient ring using pseudo border */
.kd-social-feed-stories .kd-social-feed-item::after {
    content: "";
    position: absolute;
    inset: -2px;
    border-radius: 50%;
    padding: 2px;
    background: linear-gradient(45deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888);
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    z-index: 3;
    pointer-events: none;
    opacity: 0.9;
}

.kd-social-feed-stories .kd-social-feed-item img {
    border-radius: 50%;
    transform: scale(1.02);
}

/* Optional: “seen” state */
.kd-social-feed-item.kd-is-seen::after {
    opacity: 0.35;
    filter: grayscale(100%);
}

/* --- Style 06: Reels / Vertical (9:16) --- */
.kd-social-feed-reels {
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    --kd-feed-radius: var(--radius-6);
    --kd-feed-gap: 16px;
}

.kd-social-feed-reels .kd-social-feed-item {
    aspect-ratio: 9 / 16;
    border-radius: var(--kd-feed-radius);
}

/* Metadata position variants (top or bottom) */
.kd-feed-meta-top .kd-social-feed-overlay { align-items: flex-start; padding-top: 16px; }
.kd-feed-meta-bottom .kd-social-feed-overlay { align-items: flex-end; padding-bottom: 16px; }

/* Masonry: nicer polish */
.kd-social-feed-masonry .kd-social-feed-item {
    box-shadow: 0 12px 30px rgba(0,0,0,0.06);
    transition: transform 0.35s ease, box-shadow 0.35s ease;
}
@media (hover: hover) and (pointer: fine) {
    .kd-social-feed-masonry .kd-social-feed-item:hover {
        transform: translateY(-5px);
        box-shadow: 0 22px 55px rgba(0,0,0,0.12);
    }
}

/* Touch: hover overlay yoksa brand ikonunu biraz daha görünür yap */
@media (hover: none) {
    .kd-social-feed-brand {
        opacity: 1;
        transform: none;
    }
}

/* Reduced Motion (extend) */
@media (prefers-reduced-motion: reduce) {
    .kd-social-feed-item::before,
    .kd-social-feed-item.kd-is-loading {
        animation: none !important;
        transition: none !important;
    }
    .kd-social-feed-overlay,
    .kd-social-feed-caption,
    .kd-social-feed-play .kd-play-btn {
        transition: none !important;
        transform: none !important;
        opacity: 1 !important;
    }
}


:root {
    --brand-facebook: #1877F2;
    --brand-twitter: #1DA1F2;
    --brand-instagram-grad: linear-gradient(135deg, #f58529, #dd2a7b 35%, #8134af 65%, #515bd4);
    --brand-linkedin: #0A66C2;
    --brand-youtube: #FF0000;
    --brand-pinterest: #E60023;
    --brand-tiktok: #010101;
    --brand-whatsapp: #25D366;
    --brand-vimeo: #1AB7EA;
    --brand-behance: #1769FF;
    --brand-dribbble: #EA4C89;
    --brand-github: #181717;
    --brand-discord: #5865F2;
    --brand-twitch: #9146FF;
    --brand-spotify: #1DB954;
    --brand-snapchat: #FFFC00;
    --brand-telegram: #26A5E4;
    --brand-reddit: #FF4500;
}

/* =========================================================
    41. Social Media Icons & Networks (ADD-ONS / ENHANCED)
   ========================================================= */

/* --- Accessibility: focus-visible ring + better tap target --- */
.kd-social-icon:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.25);
}

/* Optional: increase tap target on mobile without changing visual */
.kd-social-icon::after {
    content: "";
    position: absolute;
    inset: -6px; /* tap area */
}

/* --- Brand System Refactor (Less repetition) --- */
/* Set brand bg + optional text color via class */
.kd-social-icon.kd-brand-facebook { --kd-brand-bg: var(--brand-facebook); --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-twitter,.kd-social-icon.kd-brand-x        { --kd-brand-bg: var(--brand-twitter);  --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-instagram{ --kd-brand-bg: var(--brand-instagram-grad); --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-linkedin { --kd-brand-bg: var(--brand-linkedin); --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-youtube  { --kd-brand-bg: var(--brand-youtube);  --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-pinterest{ --kd-brand-bg: var(--brand-pinterest);--kd-brand-text: #fff; }
.kd-social-icon.kd-brand-tiktok   { --kd-brand-bg: var(--brand-tiktok);   --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-whatsapp { --kd-brand-bg: var(--brand-whatsapp); --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-vimeo    { --kd-brand-bg: var(--brand-vimeo);    --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-behance  { --kd-brand-bg: var(--brand-behance);  --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-dribbble { --kd-brand-bg: var(--brand-dribbble); --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-github   { --kd-brand-bg: var(--brand-github);   --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-discord  { --kd-brand-bg: var(--brand-discord);  --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-twitch   { --kd-brand-bg: var(--brand-twitch);   --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-spotify  { --kd-brand-bg: var(--brand-spotify);  --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-snapchat { --kd-brand-bg: var(--brand-snapchat); --kd-brand-text: #111; }
.kd-social-icon.kd-brand-telegram { --kd-brand-bg: var(--brand-telegram); --kd-brand-text: #fff; }
.kd-social-icon.kd-brand-reddit   { --kd-brand-bg: var(--brand-reddit);   --kd-brand-text: #fff; }

/* Generic hover apply for brand classes (works with social-style-02 and -03) */
.kd-social-style-02 .kd-social-icon[class*="kd-brand-"]:hover,.kd-social-style-03 .kd-social-icon[class*="kd-brand-"]:hover {
    background: var(--kd-brand-bg);
    border-color: transparent;
    color: var(--kd-brand-text, #fff);
}

/* Always-colored mode (covers all brands automatically) */
.kd-social-colored .kd-social-icon[class*="kd-brand-"] {
    background: var(--kd-brand-bg);
    color: var(--kd-brand-text, #fff);
    border-color: transparent;
}
.kd-social-colored .kd-social-icon:hover {
    filter: brightness(1.08);
    transform: translateY(-3px);
    box-shadow: 0 10px 25px rgba(0,0,0,0.15);
}

/* --- Micro Interaction: Shine (premium) --- */
.kd-social-icon.kd-social-shine::before {
    content: "";
    position: absolute;
    inset: -40%;
    background: linear-gradient(120deg, transparent, rgba(255,255,255,0.35), transparent);
    transform: translateX(-60%) rotate(25deg);
    transition: transform 0.6s ease;
    z-index: 0;
    pointer-events: none;
    opacity: 0.9;
}
.kd-social-icon.kd-social-shine > * { position: relative; z-index: 1; }

@media (hover: hover) and (pointer: fine) {
    .kd-social-icon.kd-social-shine:hover::before {
        transform: translateX(60%) rotate(25deg);
    }
}

/* --- Micro Interaction: Ripple (optional) --- */
.kd-social-icon.kd-social-ripple {
    overflow: hidden;
}
.kd-social-icon.kd-social-ripple::marker { content: ""; } /* noop: safeguard */
.kd-social-icon.kd-social-ripple span { position: relative; z-index: 2; } /* if label exists */

/* Trigger ripple via :active (mobile-friendly) */
.kd-social-icon.kd-social-ripple:active::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle, rgba(255,255,255,0.35) 0%, transparent 55%);
    animation: kd-ripple 0.55s ease-out forwards;
    z-index: 1;
    pointer-events: none;
}
@keyframes kd-ripple {
    from { transform: scale(0.6); opacity: 1; }
    to   { transform: scale(1.4); opacity: 0; }
}

/* --- Tooltip Labels (no extra markup)
   Usage: <a class="social-icon ..." data-tooltip="Instagram">...</a>
----------------------------------------------------------- */
.kd-social-icon[data-tooltip]::before,.kd-social-icon[data-tooltip]::after {
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.18s ease, transform 0.18s ease;
}

.kd-social-icon[data-tooltip]::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%) translateY(6px);
    background: rgba(0,0,0,0.85);
    color: #fff;
    padding: 6px 10px;
    border-radius: 10px;
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    white-space: nowrap;
    z-index: 20;
}

.kd-social-icon[data-tooltip]::before {
    content: "";
    position: absolute;
    bottom: calc(100% + 4px);
    left: 50%;
    transform: translateX(-50%) translateY(6px);
    width: 10px;
    height: 10px;
    background: rgba(0,0,0,0.85);
    rotate: 45deg;
    border-radius: 2px;
    z-index: 19;
}

@media (hover: hover) and (pointer: fine) {
    .kd-social-icon[data-tooltip]:hover::before,
    .kd-social-icon[data-tooltip]:hover::after {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
}
.kd-social-icon[data-tooltip]:focus-visible::before,.kd-social-icon[data-tooltip]:focus-visible::after {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* --- NEW Style 09: Glassmorphism --- */
.kd-social-style-09 .kd-social-icon {
    --kd-social-bg: rgba(255,255,255,0.16);
    --kd-social-color: rgba(255,255,255,0.92);
    --kd-social-border: rgba(255,255,255,0.22);
    background: var(--kd-social-bg);
    color: var(--kd-social-color);
    border-color: var(--kd-social-border);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}
.kd-social-style-09 .kd-social-icon:hover {
    background: rgba(255,255,255,0.25);
    transform: translateY(-3px);
    box-shadow: 0 14px 35px rgba(0,0,0,0.18);
}

/* --- NEW Style 10: Neon / Glow --- */
.kd-social-style-10 .kd-social-icon {
    background: rgba(0,0,0,0.04);
    border-color: rgba(0,0,0,0.08);
}
.kd-social-style-10 .kd-social-icon:hover {
    background: var(--base-color);
    color: var(--white);
    border-color: transparent;
    box-shadow:
        0 0 0 6px rgba(var(--base-color-rgb), 0.15),
        0 18px 45px rgba(var(--base-color-rgb), 0.25);
    transform: translateY(-3px);
}

/* --- NEW Style 11: Gradient Ring Border (premium outline) --- */
.kd-social-style-11 .kd-social-icon {
    background: var(--white);
    border: 2px solid transparent;
    border-radius: 50%;
    background-clip: padding-box;
    position: relative;
}
.kd-social-style-11 .kd-social-icon::before {
    content: "";
    position: absolute;
    inset: -2px;
    border-radius: inherit;
    padding: 2px;
    background: linear-gradient(135deg, rgba(var(--base-color-rgb), 1), #00d2ff);
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 0.35;
    transition: opacity 0.25s ease;
}
.kd-social-style-11 .kd-social-icon:hover::before { opacity: 1; }
.kd-social-style-11 .kd-social-icon:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 40px rgba(0,0,0,0.12);
}

/* --- Notification Badge (Optional) --- */
/* Usage: <a class="social-icon ..."><i ...></i><span class="social-badge">3</span></a> */
.kd-social-badge {
    position: absolute;
    top: -6px;
    right: -6px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--red);
    color: var(--white);
    font-size: 0.65rem;
    font-weight: 900;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 8px 18px rgba(0,0,0,0.18);
    border: 2px solid var(--white);
}

/* --- Sticky bar improvements (left variant + safe-area) --- */
.kd-social-sticky-bar.kd-left {
    right: auto;
    left: 0;
    border-radius: 0 var(--radius-4) var(--radius-4) 0;
    box-shadow: 5px 0 20px rgba(0,0,0,0.1);
}
.kd-social-sticky-bar {
    top: 50%;
    padding-top: env(safe-area-inset-top);
    padding-bottom: env(safe-area-inset-bottom);
}

/* Reduced Motion (extend) */
@media (prefers-reduced-motion: reduce) {
    .kd-social-icon,
    .kd-social-icon::before,
    .kd-social-icon::after {
        transition: none !important;
        animation: none !important;
        transform: none !important;
    }
}

/* ===================================
    42. Star Ratings & Feedback (KD - Namespaced)
====================================== */

/* -------------------------------------------------
   42.1 KD Stars (Static / CSS only / Decimal support)
   Usage:
   <span class="kd-stars" style="--kd-stars-value:4.6" aria-label="4.6 out of 5"></span>
-------------------------------------------------- */

:where(.kd-stars, .kd-rating-fluid) {
    --kd-stars-value: 0;           /* 0..5 (decimal allowed) */
    --kd-stars-size: 1.1rem;
    --kd-stars-gap: 2px;
    --kd-stars-active: #ffc107;
    --kd-stars-inactive: #e9ecef;

    display: inline-block;
    position: relative;
    font-size: var(--kd-stars-size);
    line-height: 1;
    letter-spacing: var(--kd-stars-gap);
    color: var(--kd-stars-inactive);
    vertical-align: middle;
    user-select: none;
    white-space: nowrap;
}

/* Base layer */
:where(.kd-stars, .kd-rating-fluid)::before {
    content: "★★★★★";
}

/* Filled layer (width = value * 20%) */
:where(.kd-stars, .kd-rating-fluid)::after {
    content: "★★★★★";
    position: absolute;
    left: 0;
    top: 0;
    width: calc(var(--kd-stars-value) * 20%);
    overflow: hidden;
    color: var(--kd-stars-active);
    white-space: nowrap;
}

/* Sizes */
.kd-stars-sm { --kd-stars-size: 0.9rem; }
.kd-stars-md { --kd-stars-size: 1.25rem; }
.kd-stars-lg { --kd-stars-size: 1.7rem; }

/* Style: Gradient fill */
.kd-stars.kd-stars-gradient::after,.kd-rating-fluid.kd-gradient::after {
    background: linear-gradient(90deg, var(--kd-stars-active), #ff4fd8, #00d2ff);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

/* Style: Neon (tech) */
.kd-stars.kd-stars-neon {
    --kd-stars-inactive: rgba(255,255,255,0.16);
    --kd-stars-active: #00fff0;
}

/* -------------------------------------------------
   42.2 Inline Rating Meta (Stars + Number + Count)
   Usage:
   <div class="kd-rating-inline">
     <span class="kd-stars" style="--kd-stars-value:4.8"></span>
     <span class="kd-rating-num">4.8</span>
     <span class="kd-rating-count">(1,248)</span>
   </div>
-------------------------------------------------- */
.kd-rating-inline {
    --kd-rating-color: var(--dark-gray);
    --kd-rating-muted: var(--medium-gray);

    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--kd-rating-color);
}

.kd-rating-num {
    font-weight: 900;
    font-variant-numeric: tabular-nums;
}

.kd-rating-count {
    color: var(--kd-rating-muted);
    font-weight: 700;
    font-size: 0.92em;
}

/* -------------------------------------------------
   42.3 Interactive Rating (Radio based / 5 stars)
   Usage:
   <fieldset class="kd-rating-input" aria-label="Rate">
     <input type="radio" id="r5" name="rate" value="5"><label for="r5" title="5"></label>
     ...
     <input type="radio" id="r1" name="rate" value="1"><label for="r1" title="1"></label>
   </fieldset>
-------------------------------------------------- */
.kd-rating-input {
    --kd-rate-size: 1.6rem;
    --kd-rate-gap: 2px;
    --kd-rate-active: #ffc107;
    --kd-rate-inactive: #e9ecef;
    --kd-rate-hover: #ffdb58;

    display: inline-flex;
    flex-direction: row-reverse;
    gap: var(--kd-rate-gap);
    border: 0;
    padding: 0;
    margin: 0;
    line-height: 1;
}

/* hide radio but keep accessible */
.kd-rating-input input {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
}

/* star label */
.kd-rating-input label {
    cursor: pointer;
    font-size: var(--kd-rate-size);
    color: var(--kd-rate-inactive);
    transition: color 0.2s ease, transform 0.2s ease;
    transform-origin: center bottom;
}

.kd-rating-input label::before {
    content: "★";
}

/* checked */
.kd-rating-input input:checked ~ label {
    color: var(--kd-rate-active);
}

/* hover preview */
@media (hover: hover) and (pointer: fine) {
    .kd-rating-input label:hover,
    .kd-rating-input label:hover ~ label {
        color: var(--kd-rate-hover);
        transform: scale(1.12) translateY(-2px);
    }
}

/* focus ring */
.kd-rating-input input:focus-visible + label {
    outline: none;
    filter: drop-shadow(0 0 0 rgba(0,0,0,0));
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
    border-radius: 6px;
}

/* Sizes */
.kd-rating-input.kd-rate-sm { --kd-rate-size: 1.2rem; }
.kd-rating-input.kd-rate-lg { --kd-rate-size: 2rem; }

/* Theme: Neon */
.kd-rating-input.kd-rate-neon {
    --kd-rate-inactive: rgba(255,255,255,0.16);
    --kd-rate-active: #00fff0;
    --kd-rate-hover: #7dfff7;
}

/* Optional: Half-star interactive (10 inputs)
   Markup needs alternating labels:
   <label class="kd-half kd-left" ...></label>
   <label class="kd-half kd-right" ...></label>
*/
.kd-rating-input.kd-rate-half label.kd-half {
    width: 0.5em;
    overflow: hidden;
    display: inline-block;
}
.kd-rating-input.kd-rate-half label.kd-half.kd-right {
    /* shift star to show right half */
    transform: translateX(-0.5em);
}
@media (hover: hover) and (pointer: fine) {
    .kd-rating-input.kd-rate-half label.kd-half:hover,
    .kd-rating-input.kd-rate-half label.kd-half:hover ~ label.kd-half {
        transform: none;
    }
}

/* -------------------------------------------------
   42.4 Emoji / Reaction Feedback
-------------------------------------------------- */
.kd-reaction {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: center;
}

.kd-reaction-item {
    font-size: 1.8rem;
    filter: grayscale(100%);
    opacity: 0.55;
    cursor: pointer;
    transition: transform 0.25s ease, filter 0.25s ease, opacity 0.25s ease;
    transform-origin: center bottom;
}

@media (hover: hover) and (pointer: fine) {
    .kd-reaction-item:hover,
    .kd-reaction-item.kd-is-active {
        filter: grayscale(0%);
        opacity: 1;
        transform: scale(1.15) translateY(-4px);
    }
}

/* Theme: Neon */
.kd-reaction.kd-reaction-neon .kd-reaction-item {
    filter: grayscale(0%);
    opacity: 0.85;
}

/* -------------------------------------------------
   42.5 Rating Distribution Bars (Standalone)
   Usage:
   <div class="kd-rating-bars kd-bars--glass">
     <div class="kd-bars-row" style="--kd-bar-fill:72%">
       <div class="kd-bars-label">5★</div>
       <div class="kd-bars-track"><i></i></div>
       <div class="kd-bars-count">901</div>
     </div>
   </div>
-------------------------------------------------- */
.kd-rating-bars {
    --kd-bars-gap: 10px;
    --kd-bars-track: rgba(0,0,0,0.06);
    --kd-bars-fill: rgba(var(--base-color-rgb), 0.7);
    --kd-bars-text: var(--dark-gray);
    --kd-bars-muted: var(--medium-gray);

    display: grid;
    gap: var(--kd-bars-gap);
    width: 100%;
}

.kd-bars-row {
    --kd-bar-fill: 0%;
    display: grid;
    grid-template-columns: 56px 1fr 56px;
    gap: 12px;
    align-items: center;
    font-size: 0.85rem;
}

.kd-bars-label {
    font-weight: 900;
    color: var(--kd-bars-text);
    white-space: nowrap;
}

.kd-bars-count {
    text-align: right;
    color: var(--kd-bars-muted);
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}

.kd-bars-track {
    height: 8px;
    background: var(--kd-bars-track);
    border-radius: 999px;
    overflow: hidden;
}

.kd-bars-track > i {
    display: block;
    width: var(--kd-bar-fill);
    height: 100%;
    border-radius: inherit;
    background: var(--kd-bars-fill);
}

/* Bars theme: Glass */
.kd-rating-bars.kd-bars--glass {
    --kd-bars-track: rgba(255,255,255,0.25);
}
@supports (backdrop-filter: blur(10px)) {
    .kd-rating-bars.kd-bars--glass {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

/* Bars theme: Neon */
.kd-rating-bars.kd-bars--neon {
    --kd-bars-track: rgba(255,255,255,0.10);
    --kd-bars-fill: linear-gradient(90deg, rgba(0,255,240,0.85), rgba(0,210,255,0.85));
    --kd-bars-text: rgba(255,255,255,0.92);
    --kd-bars-muted: rgba(255,255,255,0.65);
}

/* -------------------------------------------------
   42.6 REVIEW HEADER (Score + Stars + Reviews + % Bar + Breakdown)
   (Premium/Glass + Minimal + Tech/Neon)
   Usage sample (summary):
   <div class="kd-review kd-review--glass kd-review-animated">...</div>
-------------------------------------------------- */

.kd-review {
    --kd-review-radius: var(--radius-6);
    --kd-review-bg: var(--white);
    --kd-review-text: var(--dark-gray);
    --kd-review-muted: var(--medium-gray);
    --kd-review-border: 1px solid rgba(0,0,0,0.08);
    --kd-review-shadow: 0 18px 55px rgba(0,0,0,0.06);

    --kd-review-accent: var(--base-color);
    --kd-review-accent-rgb: var(--base-color-rgb);

    position: relative;
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 24px;
    padding: 28px;
    border-radius: var(--kd-review-radius);
    background: var(--kd-review-bg);
    border: var(--kd-review-border);
    box-shadow: var(--kd-review-shadow);
    color: var(--kd-review-text);
    overflow: hidden;
    isolation: isolate;
}

.kd-review > * { position: relative; z-index: 1; }

/* Left */
.kd-review-summary {
    display: flex;
    gap: 18px;
    align-items: center;
    min-width: 0;
}

.kd-review-score {
    --kd-score-size: 64px;
    width: var(--kd-score-size);
    height: var(--kd-score-size);
    border-radius: 18px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    line-height: 1;
    flex-shrink: 0;

    background: rgba(var(--kd-review-accent-rgb), 0.10);
    border: 1px solid rgba(var(--kd-review-accent-rgb), 0.20);
}

.kd-review-score strong {
    font-size: 1.65rem;
    font-weight: 900;
    letter-spacing: -0.02em;
    color: var(--kd-review-text);
    font-variant-numeric: tabular-nums;
}

.kd-review-score span {
    margin-top: 6px;
    font-size: 0.68rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--kd-review-muted);
}

.kd-review-stars {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 0;
}

.kd-review-title {
    margin: 0;
    font-size: 1rem;
    font-weight: 900;
    color: var(--kd-review-text);
    line-height: 1.25;
}

.kd-review-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 14px;
    align-items: center;
    color: var(--kd-review-muted);
    font-size: 0.9rem;
    font-weight: 600;
}

.kd-review-meta b {
    color: var(--kd-review-text);
    font-weight: 900;
    font-variant-numeric: tabular-nums;
}

.kd-review-meta .kd-dot {
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: currentColor;
    opacity: 0.35;
}

/* Right */
.kd-review-right {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 12px;
}

.kd-review-progress-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
}

.kd-review-progress-label {
    font-weight: 900;
    color: var(--kd-review-text);
    font-size: 0.9rem;
    letter-spacing: 0.02em;
}

.kd-review-progress-value {
    font-weight: 900;
    color: var(--kd-review-text);
    font-variant-numeric: tabular-nums;
    font-size: 0.9rem;
}

.kd-review-progress {
    --kd-fill: 0%;
    height: 10px;
    background: rgba(0,0,0,0.06);
    border-radius: 999px;
    overflow: hidden;
    position: relative;
}

.kd-review-progress > i {
    display: block;
    height: 100%;
    width: var(--kd-fill);
    border-radius: inherit;
    background: linear-gradient(90deg,
        rgba(var(--kd-review-accent-rgb), 0.85) 0%,
        rgba(var(--kd-review-accent-rgb), 1) 45%,
        rgba(0, 210, 255, 0.9) 100%
    );
    box-shadow: 0 10px 26px rgba(var(--kd-review-accent-rgb), 0.22);
    position: relative;
}

.kd-review-progress > i::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg, transparent, rgba(255,255,255,0.35), transparent);
    transform: translateX(-60%);
    opacity: 0;
}

.kd-review.kd-review-animated .kd-review-progress > i::after {
    animation: kd-review-shine 1.2s ease 0.2s both;
}

@keyframes kd-review-shine {
    0%   { transform: translateX(-60%); opacity: 0; }
    25%  { opacity: 0.9; }
    100% { transform: translateX(140%); opacity: 0; }
}

/* Actions */
.kd-review-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 6px;
}

.kd-review-btn {
    appearance: none;
    border: 1px solid rgba(0,0,0,0.10);
    background: rgba(0,0,0,0.02);
    color: var(--kd-review-text);
    border-radius: 999px;
    padding: 10px 14px;
    font-weight: 900;
    font-size: 0.85rem;
    cursor: pointer;
    transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease, border-color 0.25s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-review-btn:hover {
        transform: translateY(-2px);
        background: rgba(var(--kd-review-accent-rgb), 0.10);
        border-color: rgba(var(--kd-review-accent-rgb), 0.25);
        box-shadow: 0 16px 40px rgba(0,0,0,0.10);
    }
}

/* Breakdown (optional) */
.kd-review-breakdown {
    margin-top: 18px;
    display: grid;
    gap: 10px;
}

.kd-review-row {
    --kd-row-fill: 0%;
    display: grid;
    grid-template-columns: 52px 1fr 48px;
    gap: 12px;
    align-items: center;
    font-size: 0.85rem;
}

.kd-review-row-label {
    font-weight: 900;
    color: var(--kd-review-text);
    display: inline-flex;
    gap: 6px;
    align-items: center;
    white-space: nowrap;
}

.kd-review-row-label .kd-star { opacity: 0.65; font-size: 0.9em; }

.kd-review-row-count {
    text-align: right;
    color: var(--kd-review-muted);
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}

.kd-review-row-bar {
    height: 8px;
    background: rgba(0,0,0,0.06);
    border-radius: 999px;
    overflow: hidden;
}
.kd-review-row-bar > i {
    display: block;
    height: 100%;
    width: var(--kd-row-fill);
    border-radius: inherit;
    background: rgba(var(--kd-review-accent-rgb), 0.65);
}

/* THEMES */
.kd-review.kd-review--glass {
    --kd-review-bg: rgba(255,255,255,0.65);
    --kd-review-border: 1px solid rgba(255,255,255,0.55);
    --kd-review-shadow: 0 22px 70px rgba(0,0,0,0.12);
}
@supports (backdrop-filter: blur(12px)) {
    .kd-review.kd-review--glass {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}
.kd-review.kd-review--glass::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(600px circle at 20% 0%, rgba(255,255,255,0.65), transparent 55%),
        radial-gradient(700px circle at 80% 120%, rgba(var(--kd-review-accent-rgb), 0.14), transparent 55%);
    opacity: 0.9;
    pointer-events: none;
    z-index: 0;
}

.kd-review.kd-review--minimal {
    --kd-review-bg: transparent;
    --kd-review-border: 1px solid rgba(0,0,0,0.08);
    --kd-review-shadow: none;
    padding: 22px 0;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
}
.kd-review.kd-review--minimal .kd-review-score {
    background: transparent;
    border-color: rgba(var(--kd-review-accent-rgb), 0.20);
}
.kd-review.kd-review--minimal .kd-review-progress { height: 8px; }

.kd-review.kd-review--neon {
    --kd-review-bg: #0b0f19;
    --kd-review-border: 1px solid rgba(0,255,240,0.18);
    --kd-review-shadow: 0 30px 90px rgba(0,255,240,0.08);
    --kd-review-text: rgba(255,255,255,0.92);
    --kd-review-muted: rgba(255,255,255,0.70);

    --kd-review-accent: #00fff0;
    --kd-review-accent-rgb: 0, 255, 240;
}
.kd-review.kd-review--neon::before {
    content: "";
    position: absolute;
    inset: -2px;
    background:
        radial-gradient(600px circle at 20% 0%, rgba(0,255,240,0.18), transparent 55%),
        radial-gradient(700px circle at 90% 100%, rgba(0,210,255,0.16), transparent 55%),
        linear-gradient(180deg, rgba(255,255,255,0.04), transparent);
    pointer-events: none;
    z-index: 0;
}
.kd-review.kd-review--neon::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: var(--kd-review-radius);
    box-shadow:
        0 0 0 1px rgba(0,255,240,0.10),
        0 0 40px rgba(0,255,240,0.10);
    pointer-events: none;
    z-index: 0;
}
.kd-review.kd-review--neon .kd-review-score {
    background: rgba(0,255,240,0.08);
    border-color: rgba(0,255,240,0.20);
}
.kd-review.kd-review--neon .kd-review-progress,.kd-review.kd-review--neon .kd-review-row-bar {
    background: rgba(255,255,255,0.08);
}
.kd-review.kd-review--neon .kd-review-btn {
    border-color: rgba(255,255,255,0.14);
    background: rgba(255,255,255,0.06);
    color: rgba(255,255,255,0.92);
}
@media (hover: hover) and (pointer: fine) {
    .kd-review.kd-review--neon .kd-review-btn:hover {
        background: rgba(0,255,240,0.12);
        border-color: rgba(0,255,240,0.35);
        box-shadow: 0 18px 55px rgba(0,255,240,0.10);
    }
}

/* Responsive */
@media (max-width: 991px) {
    .kd-review { grid-template-columns: 1fr; gap: 18px; }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-rating-input label,
    .kd-reaction-item,
    .kd-review-btn {
        transition: none !important;
        transform: none !important;
    }
    .kd-review.kd-review-animated .kd-review-progress > i::after {
        animation: none !important;
        opacity: 0 !important;
    }
}


/* ===================================
    43. Styled Lists & Bullet Points (KD - Namespaced)
====================================== */

/* -------------------------------------------------
   43.1 KD Bullet List (Classic)
   Usage:
   <ul class="kd-list kd-list--check">...</ul>
-------------------------------------------------- */
.kd-list {
    --kd-list-gap: 10px;
    --kd-list-icon-size: 1.2em;
    --kd-list-icon-color: var(--base-color);
    --kd-list-text-color: var(--medium-gray);

    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--kd-list-gap);
}

.kd-list > li {
    position: relative;
    padding-left: calc(var(--kd-list-icon-size) + 12px);
    color: var(--kd-list-text-color);
    line-height: 1.6;
}

/* Icon */
.kd-list > li::before {
    content: "•";
    position: absolute;
    left: 0;
    top: 2px;
    width: var(--kd-list-icon-size);
    text-align: center;
    color: var(--kd-list-icon-color);
    font-weight: 900;
    line-height: 1;
}

/* Variants (no external icon font needed) */
.kd-list--check > li::before { content: "✓"; color: var(--green); }
.kd-list--check-simple > li::before { content: "✔"; }
.kd-list--arrow > li::before { content: "›"; top: 3px; }
.kd-list--dash > li::before { content: "–"; top: 3px; opacity: 0.8; }
.kd-list--cross > li::before { content: "✕"; color: var(--red); }

/* Arrow in circle */
.kd-list--arrow-circle > li::before {
    content: "›";
    width: 20px;
    height: 20px;
    background: rgba(var(--base-color-rgb), 0.10);
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.95em;
    top: 3px;
}

/* Square bullet */
.kd-list--square > li::before {
    content: "";
    width: 8px;
    height: 8px;
    background-color: var(--kd-list-icon-color);
    top: 10px;
    left: 4px;
    border-radius: 2px;
}

/* -------------------------------------------------
   43.2 Numbered List (Styled)
   Usage:
   <ol class="kd-list kd-list--numbered">...</ol>
-------------------------------------------------- */
.kd-list--numbered {
    counter-reset: kd-list-counter;
}
.kd-list--numbered > li {
    counter-increment: kd-list-counter;
    padding-left: 40px;
}
.kd-list--numbered > li::before {
    content: counter(kd-list-counter);
    width: 26px;
    height: 26px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.78rem;
    font-weight: 900;
    top: 1px;

    background: var(--kd-list-icon-color);
    color: var(--white);
}
.kd-list--numbered-outline > li::before {
    background: transparent;
    color: var(--kd-list-icon-color);
    border: 1px solid var(--kd-list-icon-color);
}

/* -------------------------------------------------
   43.3 Timeline List (Connected)
   Usage:
   <ul class="kd-list kd-list--timeline">...</ul>
-------------------------------------------------- */
.kd-list--timeline {
    --kd-timeline-line: rgba(0,0,0,0.10);
}
.kd-list--timeline > li {
    padding-left: 34px;
    padding-bottom: 18px;
    margin-left: 12px;
    border-left: 1px solid var(--kd-timeline-line);
}
.kd-list--timeline > li:last-child {
    border-left-color: transparent;
    padding-bottom: 0;
}
.kd-list--timeline > li::before {
    content: "";
    position: absolute;
    left: -6px;
    top: 6px;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--white);
    border: 2px solid var(--kd-list-icon-color);
}

/* -------------------------------------------------
   43.4 Inline Features List (Horizontal)
   Usage:
   <ul class="kd-list kd-list--inline kd-list--check">...</ul>
-------------------------------------------------- */
.kd-list--inline {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 12px 22px;
}
.kd-list--inline > li {
    width: auto;
    padding-left: 24px;
}
.kd-list--inline > li::before {
    top: 3px;
}

/* -------------------------------------------------
   43.5 Separated Rows (Border Bottom) — NO COLLISION
   Usage:
   <ul class="kd-list kd-list--separated">...</ul>
-------------------------------------------------- */
.kd-list--separated > li {
    padding-left: 0;
    padding-bottom: 12px;
    border-bottom: 1px solid rgba(0,0,0,0.06);
}
.kd-list--separated > li::before { display: none; }
.kd-list--separated > li:last-child { border-bottom: none; padding-bottom: 0; }

/* -------------------------------------------------
   43.6 Row Cards List (Icon + Title + 2-line Desc)
   Usage:
   <ul class="kd-rowlist kd-rowlist--glass">
     <li class="kd-rowitem">...</li>
   </ul>
-------------------------------------------------- */
.kd-rowlist {
    --kd-row-gap: 12px;
    --kd-row-radius: var(--radius-6);
    --kd-row-bg: var(--white);
    --kd-row-border: 1px solid rgba(0,0,0,0.06);
    --kd-row-shadow: 0 16px 50px rgba(0,0,0,0.06);

    --kd-row-title: var(--dark-gray);
    --kd-row-text: var(--medium-gray);

    --kd-row-accent: var(--base-color);
    --kd-row-accent-rgb: var(--base-color-rgb);

    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: var(--kd-row-gap);
}

.kd-rowitem {
    position: relative;
    display: flex;
    gap: 14px;
    align-items: flex-start;
    padding: 18px 18px;
    border-radius: var(--kd-row-radius);
    background: var(--kd-row-bg);
    border: var(--kd-row-border);
    box-shadow: var(--kd-row-shadow);
    overflow: hidden;
    isolation: isolate;

    transition: transform 0.28s ease, box-shadow 0.28s ease, border-color 0.28s ease;
}

.kd-rowicon {
    width: 46px;
    height: 46px;
    border-radius: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;

    background: rgba(var(--kd-row-accent-rgb), 0.10);
    border: 1px solid rgba(var(--kd-row-accent-rgb), 0.18);
    color: var(--kd-row-accent);
    transition: transform 0.28s ease, background 0.28s ease, border-color 0.28s ease;
}

.kd-rowicon :where(i, svg) {
    font-size: 1.25rem;
    width: 1.25em;
    height: 1.25em;
}

.kd-rowcontent {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.kd-rowtitle {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 900;
    color: var(--kd-row-title);
    line-height: 1.25;
    letter-spacing: -0.01em;
}

.kd-rowdesc {
    margin: 0;
    color: var(--kd-row-text);
    font-size: 0.92rem;
    line-height: 1.55;

    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.kd-rowcta {
    margin-top: 8px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 900;
    font-size: 0.85rem;
    text-decoration: none;
    color: var(--kd-row-title);
    transition: transform 0.25s ease, color 0.25s ease;
}
.kd-rowcta i { font-size: 0.85em; transition: transform 0.25s ease; }

@media (hover: hover) and (pointer: fine) {
    .kd-rowitem:hover {
        transform: translateY(-4px);
        box-shadow: 0 22px 70px rgba(0,0,0,0.10);
        border-color: rgba(var(--kd-row-accent-rgb), 0.22);
    }
    .kd-rowitem:hover .kd-rowicon {
        transform: translateY(-2px) scale(1.05);
        background: rgba(var(--kd-row-accent-rgb), 0.14);
        border-color: rgba(var(--kd-row-accent-rgb), 0.26);
    }
    .kd-rowitem:hover .kd-rowcta {
        color: var(--kd-row-accent);
        transform: translateX(2px);
    }
    .kd-rowitem:hover .kd-rowcta i { transform: translateX(3px); }
}

/* Rowlist THEMES */
.kd-rowlist--minimal .kd-rowitem {
    box-shadow: none;
    background: transparent;
    border: 1px solid rgba(0,0,0,0.08);
}

.kd-rowlist--glass .kd-rowitem {
    background: rgba(255,255,255,0.65);
    border: 1px solid rgba(255,255,255,0.55);
    box-shadow: 0 24px 80px rgba(0,0,0,0.12);
}
@supports (backdrop-filter: blur(12px)) {
    .kd-rowlist--glass .kd-rowitem {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}
.kd-rowlist--glass .kd-rowitem::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(520px circle at 20% 0%, rgba(255,255,255,0.70), transparent 55%),
        radial-gradient(620px circle at 95% 120%, rgba(var(--kd-row-accent-rgb), 0.12), transparent 55%);
    opacity: 0.9;
    pointer-events: none;
    z-index: 0;
}
.kd-rowlist--glass .kd-rowitem > * { position: relative; z-index: 1; }

.kd-rowlist--neon {
    --kd-row-bg: #0b0f19;
    --kd-row-border: 1px solid rgba(0,255,240,0.18);
    --kd-row-shadow: 0 30px 90px rgba(0,255,240,0.08);
    --kd-row-title: rgba(255,255,255,0.92);
    --kd-row-text: rgba(255,255,255,0.72);
    --kd-row-accent: #00fff0;
    --kd-row-accent-rgb: 0,255,240;
}
.kd-rowlist--neon .kd-rowitem::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: var(--kd-row-radius);
    box-shadow:
        0 0 0 1px rgba(0,255,240,0.10),
        0 0 40px rgba(0,255,240,0.10);
    pointer-events: none;
    z-index: 0;
}

/* -------------------------------------------------
   43.7 Feature Grid Cards (Icon + Title + 2-line Desc)
   - Grid versiyonu (kart kart)
   Usage:
   <ul class="kd-feature-grid kd-feature--glass">...</ul>
-------------------------------------------------- */
.kd-feature-grid {
    --kd-feature-gap: 18px;
    --kd-feature-min: 240px;

    --kd-feature-radius: var(--radius-6);
    --kd-feature-pad: 22px;
    --kd-feature-bg: var(--white);
    --kd-feature-border: 1px solid rgba(0,0,0,0.06);
    --kd-feature-shadow: 0 16px 50px rgba(0,0,0,0.06);

    --kd-feature-title: var(--dark-gray);
    --kd-feature-text: var(--medium-gray);

    --kd-feature-accent: var(--base-color);
    --kd-feature-accent-rgb: var(--base-color-rgb);

    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(var(--kd-feature-min), 1fr));
    gap: var(--kd-feature-gap);
    width: 100%;
    padding: 0;
    margin: 0;
    list-style: none;
}

.kd-feature-item {
    position: relative;
    background: var(--kd-feature-bg);
    border: var(--kd-feature-border);
    border-radius: var(--kd-feature-radius);
    padding: var(--kd-feature-pad);
    box-shadow: var(--kd-feature-shadow);
    overflow: hidden;
    isolation: isolate;

    display: flex;
    gap: 14px;
    align-items: flex-start;

    transition: transform 0.28s ease, box-shadow 0.28s ease, border-color 0.28s ease, background 0.28s ease;
}

.kd-feature-icon {
    width: 46px;
    height: 46px;
    border-radius: 14px;

    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;

    background: rgba(var(--kd-feature-accent-rgb), 0.10);
    border: 1px solid rgba(var(--kd-feature-accent-rgb), 0.18);
    color: var(--kd-feature-accent);

    transition: transform 0.28s ease, background 0.28s ease, border-color 0.28s ease;
}

.kd-feature-icon :where(i, svg) {
    font-size: 1.25rem;
    width: 1.25em;
    height: 1.25em;
}

.kd-feature-content {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.kd-feature-title {
    margin: 0;
    color: var(--kd-feature-title);
    font-size: 1.05rem;
    font-weight: 900;
    letter-spacing: -0.01em;
    line-height: 1.25;
}

.kd-feature-desc {
    margin: 0;
    color: var(--kd-feature-text);
    font-size: 0.92rem;
    line-height: 1.55;

    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.kd-feature-cta {
    margin-top: 10px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 900;
    font-size: 0.85rem;
    color: var(--kd-feature-title);
    text-decoration: none;
    width: fit-content;
    transition: transform 0.25s ease, color 0.25s ease;
}
.kd-feature-cta i { font-size: 0.85em; transition: transform 0.25s ease; }

.kd-feature-badge {
    position: absolute;
    top: 14px;
    right: 14px;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.10em;

    background: rgba(var(--kd-feature-accent-rgb), 0.12);
    color: var(--kd-feature-accent);
    border: 1px solid rgba(var(--kd-feature-accent-rgb), 0.18);
    z-index: 2;
}

@media (hover: hover) and (pointer: fine) {
    .kd-feature-item:hover {
        transform: translateY(-4px);
        box-shadow: 0 22px 70px rgba(0,0,0,0.10);
        border-color: rgba(var(--kd-feature-accent-rgb), 0.22);
    }
    .kd-feature-item:hover .kd-feature-icon {
        transform: translateY(-2px) scale(1.05);
        background: rgba(var(--kd-feature-accent-rgb), 0.14);
        border-color: rgba(var(--kd-feature-accent-rgb), 0.26);
    }
    .kd-feature-item:hover .kd-feature-cta {
        color: var(--kd-feature-accent);
        transform: translateX(2px);
    }
    .kd-feature-item:hover .kd-feature-cta i {
        transform: translateX(3px);
    }
}

/* Feature THEMES */
.kd-feature-grid.kd-feature--minimal {
    --kd-feature-bg: transparent;
    --kd-feature-border: 1px solid rgba(0,0,0,0.08);
    --kd-feature-shadow: none;
}
.kd-feature-grid.kd-feature--minimal .kd-feature-item { box-shadow: none; }
.kd-feature-grid.kd-feature--minimal .kd-feature-icon {
    background: transparent;
    border-color: rgba(var(--kd-feature-accent-rgb), 0.22);
}

.kd-feature-grid.kd-feature--glass {
    --kd-feature-bg: rgba(255,255,255,0.65);
    --kd-feature-border: 1px solid rgba(255,255,255,0.55);
    --kd-feature-shadow: 0 24px 80px rgba(0,0,0,0.12);
}
@supports (backdrop-filter: blur(12px)) {
    .kd-feature-grid.kd-feature--glass .kd-feature-item {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}
.kd-feature-grid.kd-feature--glass .kd-feature-item::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(520px circle at 20% 0%, rgba(255,255,255,0.70), transparent 55%),
        radial-gradient(620px circle at 95% 120%, rgba(var(--kd-feature-accent-rgb), 0.12), transparent 55%);
    opacity: 0.9;
    pointer-events: none;
    z-index: 0;
}
.kd-feature-grid.kd-feature--glass .kd-feature-item > * { position: relative; z-index: 1; }

.kd-feature-grid.kd-feature--neon {
    --kd-feature-bg: #0b0f19;
    --kd-feature-border: 1px solid rgba(0,255,240,0.18);
    --kd-feature-shadow: 0 30px 90px rgba(0,255,240,0.08);
    --kd-feature-title: rgba(255,255,255,0.92);
    --kd-feature-text: rgba(255,255,255,0.72);

    --kd-feature-accent: #00fff0;
    --kd-feature-accent-rgb: 0,255,240;
}
.kd-feature-grid.kd-feature--neon .kd-feature-item::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: var(--kd-feature-radius);
    box-shadow:
        0 0 0 1px rgba(0,255,240,0.10),
        0 0 40px rgba(0,255,240,0.10);
    pointer-events: none;
    z-index: 0;
}
.kd-feature-grid.kd-feature--neon .kd-feature-icon {
    background: rgba(0,255,240,0.08);
    border-color: rgba(0,255,240,0.22);
    color: rgba(255,255,255,0.92);
}
@media (hover: hover) and (pointer: fine) {
    .kd-feature-grid.kd-feature--neon .kd-feature-item:hover {
        box-shadow: 0 34px 110px rgba(0,255,240,0.12);
        border-color: rgba(0,255,240,0.32);
    }
}

/* Responsive */
@media (max-width: 767px) {
    .kd-list--inline { flex-direction: column; gap: 10px; }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-feature-item,
    .kd-feature-icon,
    .kd-feature-cta,
    .kd-feature-cta i,
    .kd-rowitem,
    .kd-rowicon,
    .kd-rowcta,
    .kd-rowcta i {
        transition: none !important;
        transform: none !important;
    }
}

/* ===================================
    44. Tabs & Tabbed Content (KD - Namespaced)
====================================== */

/* -------------------------------------------------
   Base
   Suggested Markup:
   <div class="kd-tabs kd-tabs--underline kd-tabs--indicator kd-tabs--scroll" data-kd-tabs>
     <div class="kd-tabs__nav" role="tablist">
       <button class="kd-tabs__btn" role="tab" aria-selected="true" aria-controls="tab-1" id="t1">
         <span class="kd-tabs__icon"><i class="bi bi-grid"></i></span>
         <span class="kd-tabs__label">Overview</span>
         <span class="kd-tabs__badge">3</span>
       </button>
       ...
       <span class="kd-tabs__indicator" aria-hidden="true"></span>
     </div>

     <div class="kd-tabs__panels">
       <section class="kd-tabs__panel is-active" id="tab-1" role="tabpanel" aria-labelledby="t1">...</section>
       <section class="kd-tabs__panel" id="tab-2" role="tabpanel" aria-labelledby="t2" hidden>...</section>
     </div>
   </div>
-------------------------------------------------- */

.kd-tabs {
    /* Core */
    --kd-tabs-gap: 14px;
    --kd-tabs-radius: var(--radius-4);
    --kd-tabs-border: rgba(0,0,0,0.10);

    --kd-tabs-text: var(--medium-gray);
    --kd-tabs-active-text: var(--dark-gray);

    --kd-tabs-accent: var(--base-color);
    --kd-tabs-accent-rgb: var(--base-color-rgb);

    --kd-tabs-nav-bg: transparent;
    --kd-tabs-panel-bg: transparent;
    --kd-tabs-shadow: none;

    --kd-tabs-btn-pad-y: 14px;
    --kd-tabs-btn-pad-x: 18px;
    --kd-tabs-btn-radius: var(--radius-4);

    --kd-tabs-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    width: 100%;
    position: relative;
}

/* --- Nav --- */
.kd-tabs__nav {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0;
    padding: 0;
    margin: 0 0 18px 0;
    list-style: none;

    background: var(--kd-tabs-nav-bg);
    border-bottom: 1px solid var(--kd-tabs-border);
}

/* Buttons */
.kd-tabs__btn {
    appearance: none;
    border: 1px solid transparent;
    background: transparent;
    color: var(--kd-tabs-text);

    display: inline-flex;
    align-items: center;
    gap: 10px;

    padding: var(--kd-tabs-btn-pad-y) var(--kd-tabs-btn-pad-x);
    border-radius: var(--kd-tabs-btn-radius) var(--kd-tabs-btn-radius) 0 0;

    font-weight: 900;
    font-size: 0.9rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;

    cursor: pointer;
    position: relative;
    transition: color 0.25s ease, background 0.25s ease, transform 0.25s ease, border-color 0.25s ease;
    user-select: none;
    white-space: nowrap;
}

.kd-tabs__btn .kd-tabs__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1em;
    line-height: 1;
    opacity: 0.9;
}

.kd-tabs__btn .kd-tabs__label {
    display: inline-flex;
    align-items: center;
}

/* Badge (Count) */
.kd-tabs__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-width: 20px;
    height: 20px;
    padding: 0 7px;

    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.02em;

    background: rgba(0,0,0,0.06);
    color: var(--kd-tabs-active-text);
}

/* Hover/Active */
@media (hover: hover) and (pointer: fine) {
    .kd-tabs__btn:hover {
        color: var(--kd-tabs-accent);
        transform: translateY(-1px);
    }
}

.kd-tabs__btn[aria-selected="true"],.kd-tabs__btn.kd-is-active {
    color: var(--kd-tabs-accent);
}

/* Focus */
.kd-tabs__btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--kd-tabs-accent-rgb), 0.22);
    border-color: rgba(var(--kd-tabs-accent-rgb), 0.25);
}

/* --- Panels --- */
.kd-tabs__panels {
    width: 100%;
}

.kd-tabs__panel {
    background: var(--kd-tabs-panel-bg);
    border-radius: var(--kd-tabs-radius);
    animation: kd-tab-enter 0.45s var(--kd-tabs-ease) both;
}

.kd-tabs__panel[hidden] { display: none; }

@keyframes kd-tab-enter {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* -------------------------------------------------
   Style 01: Underline (Animated per button)
-------------------------------------------------- */
.kd-tabs--underline .kd-tabs__nav {
    border-bottom: 2px solid var(--kd-tabs-border);
    gap: 28px;
}

.kd-tabs--underline .kd-tabs__btn {
    padding: 14px 0;
    border-radius: 0;
    border: none;
}

.kd-tabs--underline .kd-tabs__btn::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -2px;
    width: 0;
    height: 2px;
    background: var(--kd-tabs-accent);
    transition: width 0.35s var(--kd-tabs-ease);
}

.kd-tabs--underline .kd-tabs__btn[aria-selected="true"]::after,.kd-tabs--underline .kd-tabs__btn.kd-is-active::after {
    width: 100%;
}

@media (hover: hover) and (pointer: fine) {
    .kd-tabs--underline .kd-tabs__btn:hover::after {
        width: 60%;
        background: rgba(var(--kd-tabs-accent-rgb), 0.45);
    }
}

/* -------------------------------------------------
   Style 02: Pills (Filled Active)
-------------------------------------------------- */
.kd-tabs--pills .kd-tabs__nav {
    border: none;
    gap: 10px;
}

.kd-tabs--pills .kd-tabs__btn {
    border-radius: 999px;
    background: var(--very-light-gray);
    color: var(--kd-tabs-active-text);
    padding: 10px 18px;
}

.kd-tabs--pills .kd-tabs__btn[aria-selected="true"],.kd-tabs--pills .kd-tabs__btn.kd-is-active {
    background: var(--kd-tabs-accent);
    color: var(--white);
    box-shadow: 0 10px 25px rgba(var(--kd-tabs-accent-rgb), 0.22);
}

.kd-tabs--pills .kd-tabs__btn[aria-selected="true"] .kd-tabs__badge,.kd-tabs--pills .kd-tabs__btn.kd-is-active .kd-tabs__badge {
    background: rgba(255,255,255,0.22);
    color: var(--white);
}

/* -------------------------------------------------
   Style 03: Segmented Control (Premium)
-------------------------------------------------- */
.kd-tabs--segmented .kd-tabs__nav {
    border: 1px solid var(--kd-tabs-border);
    border-radius: 999px;
    padding: 6px;
    gap: 6px;
    background: rgba(0,0,0,0.02);
}

.kd-tabs--segmented .kd-tabs__btn {
    border-radius: 999px;
    padding: 10px 16px;
}

.kd-tabs--segmented .kd-tabs__btn[aria-selected="true"],.kd-tabs--segmented .kd-tabs__btn.kd-is-active {
    background: rgba(var(--kd-tabs-accent-rgb), 0.12);
    border-color: rgba(var(--kd-tabs-accent-rgb), 0.18);
}

/* -------------------------------------------------
   Style 04: Icons Only (Center)
-------------------------------------------------- */
.kd-tabs--icons .kd-tabs__nav {
    justify-content: center;
    border: none;
    gap: 16px;
}

.kd-tabs--icons .kd-tabs__btn {
    width: 58px;
    height: 58px;
    padding: 0;
    justify-content: center;
    border-radius: 50%;
    border: 1px solid var(--kd-tabs-border);
    background: rgba(0,0,0,0.01);
    font-size: 1.45rem;
    letter-spacing: 0;
    text-transform: none;
}

.kd-tabs--icons .kd-tabs__label,.kd-tabs--icons .kd-tabs__badge {
    display: none;
}

@media (hover: hover) and (pointer: fine) {
    .kd-tabs--icons .kd-tabs__btn:hover {
        border-color: rgba(var(--kd-tabs-accent-rgb), 0.35);
        box-shadow: 0 15px 35px rgba(0,0,0,0.08);
        transform: translateY(-3px);
    }
}

.kd-tabs--icons .kd-tabs__btn[aria-selected="true"],.kd-tabs--icons .kd-tabs__btn.kd-is-active {
    background: var(--kd-tabs-accent);
    border-color: var(--kd-tabs-accent);
    color: var(--white);
    box-shadow: 0 16px 40px rgba(var(--kd-tabs-accent-rgb), 0.22);
}

/* -------------------------------------------------
   Layout: Vertical Tabs
-------------------------------------------------- */
.kd-tabs--vertical {
    display: flex;
    gap: 28px;
}

.kd-tabs--vertical .kd-tabs__nav {
    flex-direction: column;
    align-items: stretch;
    border-bottom: none;
    border-right: 1px solid var(--kd-tabs-border);
    padding-right: 18px;
    margin-bottom: 0;
    min-width: 220px;
}

.kd-tabs--vertical .kd-tabs__btn {
    border-radius: var(--kd-tabs-btn-radius);
    justify-content: flex-start;
    text-align: left;
}

.kd-tabs--vertical .kd-tabs__btn[aria-selected="true"],.kd-tabs--vertical .kd-tabs__btn.kd-is-active {
    background: rgba(0,0,0,0.03);
    border-right: 3px solid var(--kd-tabs-accent);
    border-radius: var(--kd-tabs-btn-radius) 0 0 var(--kd-tabs-btn-radius);
}

.kd-tabs--vertical .kd-tabs__panels { flex: 1; }

/* -------------------------------------------------
   Add-on: Scrollable Nav + Edge Fade (Mobile friendly)
-------------------------------------------------- */
.kd-tabs--scroll .kd-tabs__nav {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    scroll-snap-type: x mandatory;
    gap: 0;
    padding-bottom: 2px;
}

.kd-tabs--scroll .kd-tabs__btn {
    scroll-snap-align: start;
}

.kd-tabs--scroll .kd-tabs__nav::-webkit-scrollbar { height: 0; }

.kd-tabs--scroll {
    position: relative;
}

/* Edge fade overlays */
.kd-tabs--scroll::before,.kd-tabs--scroll::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: calc(100% - 58px);
    width: 34px;
    pointer-events: none;
    z-index: 3;
    opacity: 0.9;
}

.kd-tabs--scroll::before {
    left: 0;
    background: linear-gradient(to right, var(--white), rgba(255,255,255,0));
}
.kd-tabs--scroll::after {
    right: 0;
    background: linear-gradient(to left, var(--white), rgba(255,255,255,0));
}

/* -------------------------------------------------
   Add-on: Sticky Nav (inside section)
-------------------------------------------------- */
.kd-tabs--sticky .kd-tabs__nav {
    position: sticky;
    top: 0;
    z-index: 5;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

/* -------------------------------------------------
   Add-on: Animated Indicator (needs JS to set x/width)
   - Put <span class="kd-tabs__indicator"></span> inside .kd-tabs__nav
-------------------------------------------------- */
.kd-tabs--indicator .kd-tabs__nav {
    --kd-tabs-ind-x: 0px;
    --kd-tabs-ind-w: 0px;
}

.kd-tabs__indicator {
    position: absolute;
    left: 0;
    bottom: -2px;
    height: 2px;
    width: var(--kd-tabs-ind-w);
    transform: translateX(var(--kd-tabs-ind-x));
    background: var(--kd-tabs-accent);
    transition: transform 0.35s var(--kd-tabs-ease), width 0.35s var(--kd-tabs-ease);
    border-radius: 999px;
    pointer-events: none;
}

/* -------------------------------------------------
   THEME: Premium / Glass
-------------------------------------------------- */
.kd-tabs--glass {
    --kd-tabs-nav-bg: rgba(255,255,255,0.65);
    --kd-tabs-panel-bg: rgba(255,255,255,0.55);
    --kd-tabs-border: rgba(255,255,255,0.55);
    --kd-tabs-shadow: 0 22px 70px rgba(0,0,0,0.12);
}

.kd-tabs--glass .kd-tabs__nav {
    border: 1px solid var(--kd-tabs-border);
    border-radius: var(--kd-tabs-radius);
    box-shadow: var(--kd-tabs-shadow);
    padding: 6px 10px;
    margin-bottom: 18px;
}

@supports (backdrop-filter: blur(12px)) {
    .kd-tabs--glass .kd-tabs__nav,
    .kd-tabs--glass .kd-tabs__panel {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

.kd-tabs--glass .kd-tabs__btn {
    border-radius: calc(var(--kd-tabs-radius) - 2px);
}
.kd-tabs--glass .kd-tabs__btn[aria-selected="true"] {
    background: rgba(var(--kd-tabs-accent-rgb), 0.10);
    border-color: rgba(var(--kd-tabs-accent-rgb), 0.18);
}

/* -------------------------------------------------
   THEME: Minimal
-------------------------------------------------- */
.kd-tabs--minimal .kd-tabs__nav {
    border-bottom: 1px solid rgba(0,0,0,0.08);
    padding: 0;
    border-radius: 0;
    background: transparent;
}
.kd-tabs--minimal .kd-tabs__btn {
    padding: 12px 0;
    border-radius: 0;
}

/* -------------------------------------------------
   THEME: Tech / Neon
-------------------------------------------------- */
.kd-tabs--neon {
    --kd-tabs-text: rgba(255,255,255,0.70);
    --kd-tabs-active-text: rgba(255,255,255,0.92);

    --kd-tabs-accent: #00fff0;
    --kd-tabs-accent-rgb: 0,255,240;

    --kd-tabs-nav-bg: rgba(10,14,26,0.85);
    --kd-tabs-panel-bg: rgba(10,14,26,0.65);
    --kd-tabs-border: rgba(0,255,240,0.18);
}

.kd-tabs--neon .kd-tabs__nav {
    border: 1px solid var(--kd-tabs-border);
    border-radius: var(--kd-tabs-radius);
    padding: 6px 10px;
    box-shadow: 0 30px 90px rgba(0,255,240,0.08);
}

.kd-tabs--neon .kd-tabs__btn[aria-selected="true"],.kd-tabs--neon .kd-tabs__btn.kd-is-active {
    background: rgba(0,255,240,0.08);
    border-color: rgba(0,255,240,0.22);
}

.kd-tabs--neon .kd-tabs__indicator {
    background: linear-gradient(90deg, rgba(0,255,240,0.95), rgba(0,210,255,0.95));
    box-shadow: 0 0 20px rgba(0,255,240,0.25);
}

/* Responsive */
@media (max-width: 767px) {
    .kd-tabs--vertical {
        flex-direction: column;
    }
    .kd-tabs--vertical .kd-tabs__nav {
        flex-direction: row;
        border-right: none;
        border-bottom: 1px solid var(--kd-tabs-border);
        overflow-x: auto;
        flex-wrap: nowrap;
        padding-right: 0;
        padding-bottom: 10px;
        min-width: 0;
    }
    .kd-tabs--vertical .kd-tabs__btn[aria-selected="true"] {
        border-right: none;
        border-bottom: 3px solid var(--kd-tabs-accent);
        border-radius: var(--kd-tabs-btn-radius);
    }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-tabs__btn,
    .kd-tabs__panel,
    .kd-tabs__indicator {
        transition: none !important;
        animation: none !important;
        transform: none !important;
    }
}


/* ===================================
    45. Team Members & Profiles (KD - Namespaced)
====================================== */

/* -------------------------------------------------
   Base Grid
   Suggested Markup:
   <div class="kd-team-grid">
     <article class="kd-team-card kd-team-card--classic kd-team-card--glass">
       <div class="kd-team__media">
         <img class="kd-team__img" src="..." alt="">
         <div class="kd-team__overlay">
           <div class="kd-team__social">
             <a class="kd-team__social-link" href="#"><i class="bi bi-linkedin"></i></a>
             ...
           </div>
         </div>
         <span class="kd-team__status is-online" title="Online"></span>
       </div>
       <div class="kd-team__body">
         <h4 class="kd-team__name">Name <span class="kd-team__verified">✔</span></h4>
         <div class="kd-team__role">Product Designer</div>
         <p class="kd-team__bio">Short bio max 3 lines…</p>
         <div class="kd-team__tags">
           <span class="kd-team__tag">UI</span><span class="kd-team__tag">UX</span>
         </div>
         <a class="kd-team__cta" href="#">View Profile <i class="bi bi-arrow-right"></i></a>
       </div>
       <a class="kd-team__link-overlay" href="#" aria-label="Open profile"></a>
     </article>
   </div>
-------------------------------------------------- */

.kd-team-grid {
    --kd-team-gap: 30px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: var(--kd-team-gap);
    width: 100%;
}

/* Card Base */
.kd-team-card {
    --kd-team-radius: var(--radius-6);
    --kd-team-bg: var(--white);
    --kd-team-border: 1px solid rgba(0,0,0,0.06);
    --kd-team-shadow: 0 16px 55px rgba(0,0,0,0.06);
    --kd-team-shadow-hover: 0 26px 80px rgba(0,0,0,0.12);

    --kd-team-title: var(--dark-gray);
    --kd-team-text: var(--medium-gray);

    --kd-team-accent: var(--base-color);
    --kd-team-accent-rgb: var(--base-color-rgb);

    --kd-team-media-ratio: 4 / 4; /* square by default */

    position: relative;
    background: var(--kd-team-bg);
    border: var(--kd-team-border);
    border-radius: var(--kd-team-radius);
    box-shadow: var(--kd-team-shadow);
    overflow: hidden;
    isolation: isolate;
    transition: transform 0.35s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.35s cubic-bezier(0.25, 0.8, 0.25, 1), border-color 0.35s ease;
    height: 100%;
}

/* Click overlay helper */
.kd-team__link-overlay {
    position: absolute;
    inset: 0;
    z-index: 5;
}

/* Media */
.kd-team__media {
    position: relative;
    overflow: hidden;
    background: var(--very-light-gray);
    aspect-ratio: var(--kd-team-media-ratio);
}

.kd-team__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s ease, filter 0.6s ease;
    will-change: transform;
}

/* Overlay Social */
.kd-team__overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transform: translateY(14px);
    transition: all 0.35s ease;
    z-index: 2;
    pointer-events: none;
}

.kd-team__social {
    display: inline-flex;
    gap: 10px;
    pointer-events: auto;
}

.kd-team__social-link {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: rgba(255,255,255,0.18);
    color: var(--white);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    transition: transform 0.25s ease, background 0.25s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-team__social-link:hover {
        background: var(--kd-team-accent);
        transform: translateY(-2px);
    }
}

/* Status Dot */
.kd-team__status {
    position: absolute;
    top: 14px;
    left: 14px;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: rgba(255,255,255,0.35);
    border: 2px solid rgba(0,0,0,0.15);
    z-index: 3;
}
.kd-team__status.kd-is-online { background: var(--green); border-color: rgba(255,255,255,0.75); }
.kd-team__status.kd-is-away   { background: var(--yellow); border-color: rgba(255,255,255,0.75); }
.kd-team__status.kd-is-busy   { background: var(--red); border-color: rgba(255,255,255,0.75); }

/* Body */
.kd-team__body {
    position: relative;
    z-index: 1;
    padding: 22px 20px;
    text-align: center;
}

.kd-team__name {
    margin: 0 0 6px 0;
    font-size: 1.15rem;
    font-weight: 900;
    color: var(--kd-team-title);
    line-height: 1.25;
}

.kd-team__verified {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-left: 6px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    font-size: 0.7rem;
    font-weight: 900;
    background: rgba(var(--kd-team-accent-rgb), 0.12);
    color: var(--kd-team-accent);
    vertical-align: middle;
}

.kd-team__role {
    font-size: 0.78rem;
    font-weight: 900;
    color: var(--kd-team-accent);
    text-transform: uppercase;
    letter-spacing: 0.10em;
    margin-bottom: 12px;
}

.kd-team__bio {
    margin: 0 auto 14px;
    max-width: 50ch;
    font-size: 0.92rem;
    line-height: 1.55;
    color: var(--kd-team-text);

    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Tags */
.kd-team__tags {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    margin-bottom: 14px;
}

.kd-team__tag {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.06em;
    text-transform: uppercase;

    background: rgba(0,0,0,0.04);
    color: var(--kd-team-title);
}

/* CTA */
.kd-team__cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 900;
    font-size: 0.85rem;
    color: var(--kd-team-title);
    text-decoration: none;
    transition: transform 0.25s ease, color 0.25s ease;
    position: relative;
    z-index: 6; /* above overlay link */
}
.kd-team__cta i { font-size: 0.85em; transition: transform 0.25s ease; }

@media (hover: hover) and (pointer: fine) {
    .kd-team__cta:hover {
        color: var(--kd-team-accent);
        transform: translateX(2px);
    }
    .kd-team__cta:hover i { transform: translateX(3px); }
}

/* Hover Base */
@media (hover: hover) and (pointer: fine) {
    .kd-team-card:hover {
        transform: translateY(-8px);
        box-shadow: var(--kd-team-shadow-hover);
        border-color: transparent;
    }
    .kd-team-card:hover .kd-team__img { transform: scale(1.06); }
}

/* -------------------------------------------------
   Style: Classic (Image top + overlay social) [default]
-------------------------------------------------- */
.kd-team-card--classic:hover .kd-team__overlay {
    opacity: 1;
    transform: translateY(0);
}

/* -------------------------------------------------
   Style: Hover Slide-Up (Minimal overlay)
-------------------------------------------------- */
.kd-team-card--slide .kd-team__body {
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    padding: 26px 20px;
    background: linear-gradient(to top, rgba(0,0,0,0.86), rgba(0,0,0,0.05));
    transform: translateY(12px);
    transition: transform 0.35s ease;
    text-align: left;
}

.kd-team-card--slide .kd-team__name { color: var(--white); }
.kd-team-card--slide .kd-team__role { color: rgba(255,255,255,0.75); }
.kd-team-card--slide .kd-team__bio { color: rgba(255,255,255,0.78); max-width: none; }
.kd-team-card--slide .kd-team__tag { background: rgba(255,255,255,0.16); color: rgba(255,255,255,0.92); }
.kd-team-card--slide .kd-team__cta { color: var(--white); }

.kd-team-card--slide .kd-team__social {
    opacity: 0;
    transform: translateY(14px);
    transition: all 0.35s ease 0.08s;
}

@media (hover: hover) and (pointer: fine) {
    .kd-team-card--slide:hover .kd-team__body { transform: translateY(0); }
    .kd-team-card--slide:hover .kd-team__social { opacity: 1; transform: translateY(0); }
}

/* -------------------------------------------------
   Style: Flip Card (Bio reveal)
-------------------------------------------------- */
.kd-team-card--flip {
    perspective: 1000px;
    box-shadow: none;
    border: none;
    background: transparent;
    overflow: visible;
}

.kd-team-flip {
    position: relative;
    width: 100%;
    min-height: 360px;
    transform-style: preserve-3d;
    transition: transform 0.85s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.kd-team-card--flip:hover .kd-team-flip {
    transform: rotateY(180deg);
}

.kd-team-face {
    position: absolute;
    inset: 0;
    backface-visibility: hidden;
    border-radius: var(--kd-team-radius);
    overflow: hidden;
    box-shadow: var(--kd-team-shadow);
    border: var(--kd-team-border);
    background: var(--kd-team-bg);
}

.kd-team-face--front .kd-team__media { aspect-ratio: 4/5; }

.kd-team-face--back {
    transform: rotateY(180deg);
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 28px;
    text-align: center;
    background: var(--dark-gray);
    border: none;
}

.kd-team-face--back .kd-team__name { color: var(--white); }
.kd-team-face--back .kd-team__role { color: rgba(255,255,255,0.7); }
.kd-team-face--back .kd-team__bio { color: rgba(255,255,255,0.82); }
.kd-team-face--back .kd-team__cta { color: var(--white); }

/* -------------------------------------------------
   THEME: Premium / Glass
-------------------------------------------------- */
.kd-team-card--glass {
    --kd-team-bg: rgba(255,255,255,0.65);
    --kd-team-border: 1px solid rgba(255,255,255,0.55);
    --kd-team-shadow: 0 24px 80px rgba(0,0,0,0.12);
    --kd-team-shadow-hover: 0 34px 110px rgba(0,0,0,0.18);
}

@supports (backdrop-filter: blur(12px)) {
    .kd-team-card--glass {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

.kd-team-card--glass::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(520px circle at 20% 0%, rgba(255,255,255,0.70), transparent 55%),
        radial-gradient(620px circle at 95% 120%, rgba(var(--kd-team-accent-rgb), 0.12), transparent 55%);
    opacity: 0.9;
    pointer-events: none;
    z-index: 0;
}
.kd-team-card--glass > * { position: relative; z-index: 1; }

/* -------------------------------------------------
   THEME: Minimal
-------------------------------------------------- */
.kd-team-card--minimal {
    --kd-team-bg: transparent;
    --kd-team-shadow: none;
    --kd-team-shadow-hover: none;
    --kd-team-border: 1px solid rgba(0,0,0,0.08);
}

@media (hover: hover) and (pointer: fine) {
    .kd-team-card--minimal:hover {
        transform: translateY(-4px);
        box-shadow: 0 18px 55px rgba(0,0,0,0.08);
        border-color: rgba(var(--kd-team-accent-rgb), 0.22);
    }
}

/* -------------------------------------------------
   THEME: Tech / Neon
-------------------------------------------------- */
.kd-team-card--neon {
    --kd-team-bg: #0b0f19;
    --kd-team-border: 1px solid rgba(0,255,240,0.18);
    --kd-team-shadow: 0 30px 90px rgba(0,255,240,0.08);
    --kd-team-shadow-hover: 0 38px 120px rgba(0,255,240,0.12);

    --kd-team-title: rgba(255,255,255,0.92);
    --kd-team-text: rgba(255,255,255,0.72);

    --kd-team-accent: #00fff0;
    --kd-team-accent-rgb: 0,255,240;
}

.kd-team-card--neon::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: var(--kd-team-radius);
    box-shadow:
        0 0 0 1px rgba(0,255,240,0.10),
        0 0 40px rgba(0,255,240,0.10);
    pointer-events: none;
    z-index: 0;
}

.kd-team-card--neon .kd-team__tag {
    background: rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.85);
}

.kd-team-card--neon .kd-team__overlay {
    background: rgba(0,0,0,0.55);
}

/* Responsive tweaks */
@media (max-width: 767px) {
    .kd-team__body { padding: 20px 18px; }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-team-card,
    .kd-team__img,
    .kd-team__overlay,
    .kd-team__social-link,
    .kd-team__cta,
    .kd-team-flip {
        transition: none !important;
        transform: none !important;
        animation: none !important;
    }
    .kd-team-card--flip:hover .kd-team-flip {
        transform: none !important;
    }
    .kd-team__overlay {
        opacity: 1 !important;
        transform: none !important;
        background: rgba(0,0,0,0.35);
    }
}

/* ===================================
    46. Testimonials & Quotes (Editorial) - KD (Namespaced)
====================================== */

/* -------------------------------------------------
   A) Editorial Quotes (blockquote-like)
   Suggested Markup:
   <blockquote class="kd-quote kd-quote-style-01 kd-quote--glass">
     <p>Quote text...</p>
     <cite>Jane Doe <span>CEO, Company</span></cite>
   </blockquote>
-------------------------------------------------- */

.kd-quote {
    --kd-quote-color: var(--dark-gray);
    --kd-quote-muted: var(--medium-gray);
    --kd-quote-font: Georgia, "Times New Roman", serif;
    --kd-quote-size: 1.25rem;
    --kd-quote-line-height: 1.65;
    --kd-quote-accent: var(--base-color);
    --kd-quote-accent-rgb: var(--base-color-rgb);

    --kd-quote-bg: transparent;
    --kd-quote-border: 0;
    --kd-quote-radius: var(--radius-6);
    --kd-quote-shadow: none;

    position: relative;
    margin: 3rem 0;
    padding: 0;

    font-family: var(--kd-quote-font);
    font-size: var(--kd-quote-size);
    line-height: var(--kd-quote-line-height);
    color: var(--kd-quote-color);

    background: var(--kd-quote-bg);
    border: var(--kd-quote-border);
    border-radius: var(--kd-quote-radius);
    box-shadow: var(--kd-quote-shadow);
}

/* Inner text reset */
.kd-quote > p { margin: 0; }

/* Footer/Cite */
.kd-quote footer,.kd-quote cite {
    display: block;
    margin-top: 1.4rem;
    font-family: var(--base-font, sans-serif);
    font-size: 0.875rem;
    font-weight: 900;
    font-style: normal;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--kd-quote-muted);
}

.kd-quote cite span {
    display: block;
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
    font-size: 0.85em;
    margin-top: 4px;
    opacity: 0.85;
}

/* Size utilities */
.kd-quote--sm { --kd-quote-size: 1.05rem; }
.kd-quote--lg { --kd-quote-size: 1.45rem; }

/* -------------------------------------------------
   Style 01: Modern Left Border (Clean)
   (kept from your version)
-------------------------------------------------- */
.kd-quote-style-01 {
    padding-left: 28px;
    border-left: 4px solid var(--kd-quote-accent);
}

.kd-quote-style-01 > p {
    font-weight: 600;
    font-style: italic;
}

/* Optional: gradient accent line */
.kd-quote-style-01.kd-quote--grad-line {
    border-left: none;
    padding-left: 28px;
}
.kd-quote-style-01.kd-quote--grad-line::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.2em;
    bottom: 0.2em;
    width: 4px;
    border-radius: 999px;
    background: linear-gradient(180deg, var(--kd-quote-accent), var(--slate-blue));
}

/* -------------------------------------------------
   Style 02: Giant Icon (Background Card)
   (kept + improved)
-------------------------------------------------- */
.kd-quote-style-02 {
    text-align: center;
    padding: 44px 26px;
    background-color: var(--very-light-gray);
    border-radius: var(--radius-6);
    overflow: hidden;
    isolation: isolate;
}

.kd-quote-style-02::before {
    content: "“";
    position: absolute;
    top: -34px;
    left: 50%;
    transform: translateX(-50%);
    font-family: Georgia, serif;
    font-size: 11rem;
    line-height: 1;
    color: rgba(0,0,0,0.045);
    z-index: -1;
    pointer-events: none;
}

.kd-quote-style-02 > p {
    font-weight: 650;
}

/* Extra: subtle top glow */
.kd-quote-style-02::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(500px circle at 50% 0%, rgba(var(--kd-quote-accent-rgb), 0.10), transparent 55%);
    pointer-events: none;
    z-index: -1;
    opacity: 0.85;
}

/* -------------------------------------------------
   Style 03: Pull Quotes (Float)
   (kept)
-------------------------------------------------- */
.kd-quote-pull-right {
    float: right;
    width: 40%;
    margin-left: 2rem;
    margin-bottom: 1.5rem;
    text-align: right;
    padding-right: 20px;
    border-right: 2px solid var(--kd-quote-accent);
}

.kd-quote-pull-left {
    float: left;
    width: 40%;
    margin-right: 2rem;
    margin-bottom: 1.5rem;
    text-align: left;
    padding-left: 20px;
    border-left: 2px solid var(--kd-quote-accent);
}

.kd-quote-pull-right > p,.kd-quote-pull-left > p {
    font-size: 1.55rem;
    font-weight: 900;
    line-height: 1.25;
    font-family: var(--base-font, sans-serif);
    font-style: normal;
}

@media (max-width: 767px) {
    .kd-quote-pull-right,
    .kd-quote-pull-left {
        float: none;
        width: 100%;
        margin: 2rem 0;
        text-align: center;
        border: none;
        padding: 0;
    }
}

/* -------------------------------------------------
   Style 04: Avatar Overlap (Card)
   (kept + improved)
-------------------------------------------------- */
.kd-quote-style-04 {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    margin-top: 50px;
}

.kd-quote-avatar {
    width: 82px;
    height: 82px;
    border-radius: 50%;
    border: 4px solid var(--white);
    box-shadow: 0 12px 30px rgba(0,0,0,0.12);
    object-fit: cover;
    margin-bottom: -42px;
    position: relative;
    z-index: 2;
}

.kd-quote-box {
    background-color: var(--white);
    border: 1px solid rgba(0,0,0,0.08);
    border-radius: var(--radius-6);
    padding: 64px 42px 40px;
    width: 100%;
    box-shadow: 0 18px 55px rgba(0,0,0,0.05);
    position: relative;
    isolation: isolate;
}

.kd-quote-style-04 .kd-quote-icon {
    font-size: 2rem;
    color: var(--kd-quote-accent);
    opacity: 0.25;
    display: block;
    margin-bottom: 16px;
}

/* Extra: little “speech pointer” option */
.kd-quote-style-04.kd-quote--speech .kd-quote-box::after {
    content: "";
    position: absolute;
    top: -10px;
    left: 50%;
    width: 18px;
    height: 18px;
    background: var(--white);
    border-left: 1px solid rgba(0,0,0,0.08);
    border-top: 1px solid rgba(0,0,0,0.08);
    transform: translateX(-50%) rotate(45deg);
    z-index: -1;
}

/* -------------------------------------------------
   Style 05: Speech Bubble (Modern)
-------------------------------------------------- */
.kd-quote-style-05 {
    --kd-quote-bg: var(--white);
    --kd-quote-border: 1px solid rgba(0,0,0,0.08);
    --kd-quote-shadow: 0 18px 55px rgba(0,0,0,0.06);

    padding: 34px 34px;
}

.kd-quote-style-05 > p {
    font-weight: 650;
    font-style: italic;
}

.kd-quote-style-05::after {
    content: "";
    position: absolute;
    bottom: -10px;
    left: 48px;
    width: 18px;
    height: 18px;
    background: var(--kd-quote-bg);
    border-left: 1px solid rgba(0,0,0,0.08);
    border-bottom: 1px solid rgba(0,0,0,0.08);
    transform: rotate(45deg);
}

/* -------------------------------------------------
   Style 06: Premium Gradient Border (Card)
-------------------------------------------------- */
.kd-quote-style-06 {
    --kd-quote-bg: var(--white);
    --kd-quote-border: 1px solid rgba(0,0,0,0.06);
    --kd-quote-shadow: 0 20px 70px rgba(0,0,0,0.08);

    padding: 38px 34px;
    overflow: hidden;
    isolation: isolate;
}

.kd-quote-style-06::before {
    content: "";
    position: absolute;
    inset: 0;
    padding: 2px;
    border-radius: var(--kd-quote-radius);
    background: linear-gradient(135deg, rgba(var(--kd-quote-accent-rgb), 0.9), rgba(0,210,255,0.8));
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 0.35;
    pointer-events: none;
}

.kd-quote-style-06:hover::before { opacity: 1; }

/* -------------------------------------------------
   THEME: Glass / Premium
   (works with any style class)
-------------------------------------------------- */
.kd-quote--glass {
    --kd-quote-bg: rgba(255,255,255,0.65);
    --kd-quote-border: 1px solid rgba(255,255,255,0.55);
    --kd-quote-shadow: 0 26px 90px rgba(0,0,0,0.12);
}

@supports (backdrop-filter: blur(12px)) {
    .kd-quote--glass {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

/* -------------------------------------------------
   THEME: Minimal
-------------------------------------------------- */
.kd-quote--minimal {
    --kd-quote-bg: transparent;
    --kd-quote-border: 0;
    --kd-quote-shadow: none;
}

/* -------------------------------------------------
   THEME: Tech / Neon
-------------------------------------------------- */
.kd-quote--neon {
    --kd-quote-bg: rgba(10,14,26,0.85);
    --kd-quote-border: 1px solid rgba(0,255,240,0.18);
    --kd-quote-shadow: 0 30px 100px rgba(0,255,240,0.10);

    --kd-quote-color: rgba(255,255,255,0.90);
    --kd-quote-muted: rgba(255,255,255,0.70);

    --kd-quote-accent: #00fff0;
    --kd-quote-accent-rgb: 0,255,240;
}

.kd-quote--neon.kd-quote-style-01 {
    border-left-color: rgba(0,255,240,0.85);
    box-shadow: 0 0 0 1px rgba(0,255,240,0.10), 0 0 45px rgba(0,255,240,0.10);
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-quote-style-06::before { transition: none !important; }
}


/* -------------------------------------------------
   B) Testimonials (Cards / Slider-ready)
   Suggested Markup:
   <div class="kd-testimonials kd-testimonials--grid kd-testimonials--glass">
     <article class="kd-testimonial kd-testimonial--classic">
       <span class="kd-testimonial__quote-mark" aria-hidden="true">“</span>
       <div class="kd-testimonial__rating" aria-label="5 out of 5">
         <i class="bi bi-star-fill"></i>...
       </div>
       <p class="kd-testimonial__text">...</p>
       <div class="kd-testimonial__author">
         <img class="kd-testimonial__avatar" src="..." alt="">
         <div class="kd-testimonial__meta">
           <div class="kd-testimonial__name">Jane Doe</div>
           <div class="kd-testimonial__role">CEO • Company</div>
         </div>
       </div>
     </article>
   </div>
-------------------------------------------------- */

.kd-testimonials {
    --kd-tst-gap: 30px;
    --kd-tst-radius: var(--radius-6);
    --kd-tst-bg: var(--white);
    --kd-tst-border: 1px solid rgba(0,0,0,0.06);
    --kd-tst-shadow: 0 18px 60px rgba(0,0,0,0.06);
    --kd-tst-shadow-hover: 0 26px 90px rgba(0,0,0,0.12);

    --kd-tst-title: var(--dark-gray);
    --kd-tst-text: var(--medium-gray);
    --kd-tst-accent: var(--base-color);
    --kd-tst-accent-rgb: var(--base-color-rgb);

    --kd-tst-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    width: 100%;
}

/* Layouts */
.kd-testimonials--grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: var(--kd-tst-gap);
}

.kd-testimonials--stack {
    display: flex;
    flex-direction: column;
    gap: var(--kd-tst-gap);
}

/* Card Base */
.kd-testimonial {
    position: relative;
    background: var(--kd-tst-bg);
    border: var(--kd-tst-border);
    border-radius: var(--kd-tst-radius);
    box-shadow: var(--kd-tst-shadow);
    padding: 34px 30px;
    overflow: hidden;
    isolation: isolate;
    transition: transform 0.35s var(--kd-tst-ease), box-shadow 0.35s var(--kd-tst-ease), border-color 0.35s ease;
    height: 100%;
}

/* Decorative quote mark */
.kd-testimonial__quote-mark {
    position: absolute;
    top: 14px;
    right: 18px;
    font-family: Georgia, serif;
    font-size: 5.5rem;
    line-height: 1;
    color: rgba(0,0,0,0.06);
    pointer-events: none;
}

/* Rating (optional) */
.kd-testimonial__rating {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 0.85rem;
    color: #ffc107;
    margin-bottom: 12px;
}
.kd-testimonial__rating .kd-is-empty { color: rgba(0,0,0,0.14); }

/* Text */
.kd-testimonial__text {
    margin: 0 0 18px 0;
    font-size: 1rem;
    line-height: 1.7;
    color: var(--kd-tst-text);
}

/* Author */
.kd-testimonial__author {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: auto;
}

.kd-testimonial__avatar {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid var(--white);
    box-shadow: 0 10px 25px rgba(0,0,0,0.10);
    flex-shrink: 0;
}

.kd-testimonial__meta { min-width: 0; }
.kd-testimonial__name {
    font-weight: 900;
    color: var(--kd-tst-title);
    line-height: 1.2;
}
.kd-testimonial__role {
    margin-top: 3px;
    font-size: 0.85rem;
    color: var(--kd-tst-text);
    opacity: 0.9;
}

/* Hover */
@media (hover: hover) and (pointer: fine) {
    .kd-testimonial:hover {
        transform: translateY(-8px);
        box-shadow: var(--kd-tst-shadow-hover);
        border-color: transparent;
    }
}

/* Variant: Classic Center */
.kd-testimonial--classic { text-align: left; }

/* Variant: Centered */
.kd-testimonial--center {
    text-align: center;
}
.kd-testimonial--center .kd-testimonial__author {
    justify-content: center;
}
.kd-testimonial--center .kd-testimonial__quote-mark {
    left: 50%;
    right: auto;
    transform: translateX(-50%);
    top: -10px;
}

/* Variant: Side (Avatar left, compact) */
.kd-testimonial--side {
    display: flex;
    flex-direction: column;
}
.kd-testimonial--side .kd-testimonial__author {
    padding-top: 16px;
    border-top: 1px solid rgba(0,0,0,0.06);
}

/* Variant: Premium gradient border */
.kd-testimonial--premium::before {
    content: "";
    position: absolute;
    inset: 0;
    padding: 2px;
    border-radius: inherit;
    background: linear-gradient(135deg, rgba(var(--kd-tst-accent-rgb), 0.95), rgba(0,210,255,0.85));
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 0.28;
    pointer-events: none;
}
.kd-testimonial--premium:hover::before { opacity: 1; }

/* Variant: Speech bubble pointer */
.kd-testimonial--bubble::after {
    content: "";
    position: absolute;
    bottom: -10px;
    left: 46px;
    width: 18px;
    height: 18px;
    background: var(--kd-tst-bg);
    border-left: 1px solid rgba(0,0,0,0.08);
    border-bottom: 1px solid rgba(0,0,0,0.08);
    transform: rotate(45deg);
}

/* THEME: Glass */
.kd-testimonials--glass,.kd-testimonial--glass {
    --kd-tst-bg: rgba(255,255,255,0.65);
    --kd-tst-border: 1px solid rgba(255,255,255,0.55);
    --kd-tst-shadow: 0 26px 90px rgba(0,0,0,0.12);
    --kd-tst-shadow-hover: 0 34px 120px rgba(0,0,0,0.18);
}

@supports (backdrop-filter: blur(12px)) {
    .kd-testimonial--glass {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

.kd-testimonial--glass::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(520px circle at 20% 0%, rgba(255,255,255,0.65), transparent 55%),
        radial-gradient(620px circle at 95% 120%, rgba(var(--kd-tst-accent-rgb), 0.12), transparent 55%);
    pointer-events: none;
    z-index: -1;
    opacity: 0.85;
}

/* THEME: Minimal */
.kd-testimonials--minimal,.kd-testimonial--minimal {
    --kd-tst-bg: transparent;
    --kd-tst-border: 1px solid rgba(0,0,0,0.10);
    --kd-tst-shadow: none;
    --kd-tst-shadow-hover: 0 18px 55px rgba(0,0,0,0.08);
}

/* THEME: Tech/Neon */
.kd-testimonials--neon,.kd-testimonial--neon {
    --kd-tst-bg: rgba(10,14,26,0.85);
    --kd-tst-border: 1px solid rgba(0,255,240,0.18);
    --kd-tst-shadow: 0 30px 100px rgba(0,255,240,0.10);
    --kd-tst-shadow-hover: 0 38px 130px rgba(0,255,240,0.14);

    --kd-tst-title: rgba(255,255,255,0.92);
    --kd-tst-text: rgba(255,255,255,0.74);

    --kd-tst-accent: #00fff0;
    --kd-tst-accent-rgb: 0,255,240;
}

.kd-testimonial--neon .kd-testimonial__quote-mark {
    color: rgba(0,255,240,0.10);
}
.kd-testimonial--neon {
    box-shadow: 0 0 0 1px rgba(0,255,240,0.10), var(--kd-tst-shadow);
}

/* Responsive small tweaks */
@media (max-width: 767px) {
    .kd-testimonial { padding: 28px 22px; }
    .kd-testimonial__quote-mark { font-size: 4.5rem; }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-testimonial { transition: none !important; transform: none !important; }
}


/* ===================================
    47. Text Highlighters & Markers - KD (Namespaced)
====================================== */

/* -------------------------------------------------
   Base: use <mark class="kd-mark kd-mark-underline"> or <span class="kd-mark ...">
-------------------------------------------------- */

.kd-mark {
    --kd-mark-color: rgba(255, 225, 0, 0.42);
    --kd-mark-height: 0.40em;
    --kd-mark-bottom: 0.10em;

    /* For fancy variants */
    --kd-mark-radius: 10px;
    --kd-mark-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    background: transparent;
    color: inherit;
    padding: 0;
    position: relative;
    z-index: 0;

    /* Default: keep together (your original intent) */
    white-space: nowrap;

    /* Multi-line support helper (see .kd-mark--wrap) */
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
}

/* Allow wrapping when needed */
.kd-mark--wrap {
    white-space: normal;
}

/* Optional: small padding */
.kd-mark--pad {
    padding: 0 0.08em;
}

/* -------------------------------------------------
   Style 01: Underline Highlight (Bottom)
   (kept)
-------------------------------------------------- */
.kd-mark-underline {
    background-image: linear-gradient(var(--kd-mark-color), var(--kd-mark-color));
    background-size: 100% var(--kd-mark-height);
    background-position: 0 calc(100% - var(--kd-mark-bottom));
    background-repeat: no-repeat;
}

/* -------------------------------------------------
   Style 02: Full Highlight (Background)
   (kept)
-------------------------------------------------- */
.kd-mark-full {
    --kd-mark-height: 100%;
    --kd-mark-bottom: 0;

    background-image: linear-gradient(var(--kd-mark-color), var(--kd-mark-color));
    background-size: 100% 100%;
    background-position: 0 0;
    background-repeat: no-repeat;
    border-radius: 6px;
}

/* -------------------------------------------------
   Style 03: Animated Grow (Scroll trigger / hover)
   (kept + improved)
-------------------------------------------------- */
.kd-mark-anim {
    background-image: linear-gradient(var(--kd-mark-color), var(--kd-mark-color));
    background-size: 0% var(--kd-mark-height);
    background-position: 0 calc(100% - var(--kd-mark-bottom));
    background-repeat: no-repeat;
    transition: background-size 0.95s var(--kd-mark-ease);
}

.kd-mark-anim.kd-is-in-view,.kd-mark-anim:hover {
    background-size: 100% var(--kd-mark-height);
}

/* -------------------------------------------------
   Style 04: Sketch/Scribble (SVG background)
   (kept)
-------------------------------------------------- */
.kd-mark-sketch {
    position: relative;
    z-index: 0;
}

.kd-mark-sketch::before {
    content: "";
    position: absolute;
    left: -6px;
    right: -6px;
    bottom: -2px;
    height: 100%;
    background-image: url("data:image/svg+xml,%3Csvg width='200' height='30' viewBox='0 0 200 30' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'%3E%3Cpath d='M2.00025 10.0001C30 18 60 25 198 12' stroke='%23FFD700' stroke-width='8' fill='none' stroke-linecap='round' stroke-opacity='0.5' /%3E%3C/svg%3E");
    background-size: 100% 100%;
    background-repeat: no-repeat;
    z-index: -1;
    pointer-events: none;
    opacity: 0.95;
}

/* -------------------------------------------------
   Style 05: Circle/Oval Emphasis (Organic)
   (kept + improved)
-------------------------------------------------- */
.kd-mark-circle {
    position: relative;
    display: inline-block;
    z-index: 0;
    padding: 0 4px;
}

.kd-mark-circle::after {
    content: "";
    position: absolute;
    inset: -2px -7px;
    border: 2px solid var(--base-color);
    border-radius: 50% 60% 40% 70% / 40% 50% 60% 50%;
    z-index: -1;
    transform: rotate(-2deg);
    opacity: 0.85;
}

/* -------------------------------------------------
   NEW Style 06: Gradient Marker (Premium)
-------------------------------------------------- */
.kd-mark-gradient {
    --kd-mark-grad-a: rgba(var(--base-color-rgb), 0.35);
    --kd-mark-grad-b: rgba(0, 210, 255, 0.28);

    background-image: linear-gradient(90deg, var(--kd-mark-grad-a), var(--kd-mark-grad-b));
    background-size: 100% var(--kd-mark-height);
    background-position: 0 calc(100% - var(--kd-mark-bottom));
    background-repeat: no-repeat;
}

/* -------------------------------------------------
   NEW Style 07: Wipe Highlight (Pseudo element)
   - add .is-in-view with JS if desired
-------------------------------------------------- */
.kd-mark-wipe {
    padding: 0 0.06em;
}

.kd-mark-wipe::before {
    content: "";
    position: absolute;
    left: -0.02em;
    right: -0.02em;
    bottom: calc(var(--kd-mark-bottom) * 0.4);
    height: var(--kd-mark-height);
    background: var(--kd-mark-color);
    border-radius: var(--kd-mark-radius);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.9s var(--kd-mark-ease);
    z-index: -1;
}

.kd-mark-wipe.kd-is-in-view::before,.kd-mark-wipe:hover::before {
    transform: scaleX(1);
}

/* -------------------------------------------------
   NEW Style 08: Neon Underline (Tech)
-------------------------------------------------- */
.kd-mark-neon {
    --kd-mark-color: rgba(0, 255, 240, 0.35);
    --kd-mark-height: 0.42em;
    --kd-mark-bottom: 0.08em;

    background-image: linear-gradient(var(--kd-mark-color), var(--kd-mark-color));
    background-size: 100% var(--kd-mark-height);
    background-position: 0 calc(100% - var(--kd-mark-bottom));
    background-repeat: no-repeat;

    text-shadow: 0 0 14px rgba(0,255,240,0.18);
}

.kd-mark-neon::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: calc(var(--kd-mark-bottom) * 0.8);
    height: 2px;
    background: rgba(0,255,240,0.75);
    box-shadow: 0 0 18px rgba(0,255,240,0.35);
    opacity: 0.9;
    border-radius: 999px;
    pointer-events: none;
}

/* -------------------------------------------------
   Color Variants (kept + expanded)
-------------------------------------------------- */
.kd-mark-yellow { --kd-mark-color: rgba(255, 225, 0, 0.50); }
.kd-mark-green  { --kd-mark-color: rgba(0, 255, 100, 0.40); }
.kd-mark-pink   { --kd-mark-color: rgba(255, 0, 100, 0.30); }
.kd-mark-blue   { --kd-mark-color: rgba(0, 200, 255, 0.40); }
.kd-mark-purple { --kd-mark-color: rgba(140, 80, 255, 0.32); }
.kd-mark-orange { --kd-mark-color: rgba(255, 140, 0, 0.35); }
.kd-mark-accent { --kd-mark-color: rgba(var(--base-color-rgb), 0.28); }

/* -------------------------------------------------
   Theme Helpers (Optional)
-------------------------------------------------- */
.kd-mark--glass {
    /* slightly “wet ink” look */
    --kd-mark-height: 0.52em;
    --kd-mark-bottom: 0.06em;
    filter: saturate(1.05);
}

.kd-mark--minimal {
    /* keep it subtle */
    --kd-mark-height: 0.28em;
    --kd-mark-bottom: 0.12em;
    opacity: 0.95;
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-mark-anim,
    .kd-mark-wipe::before {
        transition: none !important;
    }
    .kd-mark-anim {
        background-size: 100% var(--kd-mark-height) !important;
    }
    .kd-mark-wipe::before {
        transform: scaleX(1) !important;
    }
}

/* ===================================
   48. Tilt 3D Hover Effects - Add-ons (KD)
   Append AFTER your current 48
====================================== */

/* -----------------------------------
   48.1 Preset Intensities (SM/MD/LG/XL)
   Usage:
   <div class="kd-tilt-wrapper kd-tilt-sm"> ... </div>
----------------------------------- */
.kd-tilt-wrapper.kd-tilt-sm .kd-tilt-card {
    --kd-tilt-scale: 1.03;
    --kd-tilt-rot-x: 3deg;
    --kd-tilt-rot-y: -3deg;
}
.kd-tilt-wrapper.kd-tilt-md .kd-tilt-card {
    --kd-tilt-scale: 1.05;
    --kd-tilt-rot-x: 6deg;
    --kd-tilt-rot-y: -6deg;
}
.kd-tilt-wrapper.kd-tilt-lg .kd-tilt-card {
    --kd-tilt-scale: 1.07;
    --kd-tilt-rot-x: 9deg;
    --kd-tilt-rot-y: -9deg;
}
.kd-tilt-wrapper.kd-tilt-xl .kd-tilt-card {
    --kd-tilt-scale: 1.09;
    --kd-tilt-rot-x: 12deg;
    --kd-tilt-rot-y: -12deg;
}

.kd-tilt-wrapper.kd-tilt-no-scale .kd-tilt-card {
    --kd-tilt-scale: 1;
}

/* -----------------------------------
   48.2 Preset Directions
----------------------------------- */
.kd-tilt-wrapper.kd-tilt-dir-left  .kd-tilt-card { --kd-tilt-rot-x: 0deg; --kd-tilt-rot-y: -8deg; }
.kd-tilt-wrapper.kd-tilt-dir-right .kd-tilt-card { --kd-tilt-rot-x: 0deg; --kd-tilt-rot-y:  8deg; }
.kd-tilt-wrapper.kd-tilt-dir-up    .kd-tilt-card { --kd-tilt-rot-x:  8deg; --kd-tilt-rot-y: 0deg; }
.kd-tilt-wrapper.kd-tilt-dir-down  .kd-tilt-card { --kd-tilt-rot-x: -8deg; --kd-tilt-rot-y: 0deg; }

.kd-tilt-wrapper.kd-tilt-dir-tl .kd-tilt-card { --kd-tilt-rot-x:  7deg; --kd-tilt-rot-y: -7deg; }
.kd-tilt-wrapper.kd-tilt-dir-tr .kd-tilt-card { --kd-tilt-rot-x:  7deg; --kd-tilt-rot-y:  7deg; }
.kd-tilt-wrapper.kd-tilt-dir-bl .kd-tilt-card { --kd-tilt-rot-x: -7deg; --kd-tilt-rot-y: -7deg; }
.kd-tilt-wrapper.kd-tilt-dir-br .kd-tilt-card { --kd-tilt-rot-x: -7deg; --kd-tilt-rot-y:  7deg; }

/* -----------------------------------
   48.3 Keyboard Focus (A11y)
   <div class="kd-tilt-wrapper kd-tilt-focus">...
----------------------------------- */
.kd-tilt-wrapper.kd-tilt-focus:focus-within .kd-tilt-card {
    transform:
        perspective(1000px)
        scale3d(var(--kd-tilt-scale), var(--kd-tilt-scale), 1)
        rotateX(var(--kd-tilt-rot-x))
        rotateY(var(--kd-tilt-rot-y));
    z-index: 10;
}

/* Kart focus ring */
.kd-tilt-card:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.28);
}

/* -----------------------------------
   48.4 Premium / Glass / Neon Themes (opt-in)
----------------------------------- */

/* Premium: Gradient border */
.kd-tilt-card.kd-tilt-skin-premium {
    --kd-tilt-premium-bg: rgba(255,255,255,0.82);
    background:
        linear-gradient(var(--kd-tilt-premium-bg), var(--kd-tilt-premium-bg)) padding-box,
        linear-gradient(135deg, rgba(var(--base-color-rgb), 0.95), rgba(0,210,255,0.85)) border-box;
    border: 2px solid transparent;
    border-radius: inherit;
}

/* Glass */
.kd-tilt-card.kd-tilt-skin-glass {
    background: rgba(255,255,255,0.55);
    border: 1px solid rgba(255,255,255,0.55);
    box-shadow: 0 18px 70px rgba(0,0,0,0.12);
}
@supports (backdrop-filter: blur(12px)) {
    .kd-tilt-card.kd-tilt-skin-glass {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

/* Neon: tech look */
.kd-tilt-card.kd-tilt-skin-neon {
    background: rgba(10,14,26,0.86);
    border: 1px solid rgba(0,255,240,0.22);
    box-shadow:
        0 0 0 1px rgba(0,255,240,0.10),
        0 30px 90px rgba(0,255,240,0.12);
    color: rgba(255,255,255,0.92);
}

@media (hover: hover) and (pointer: fine) {
    .kd-tilt-wrapper:hover .kd-tilt-glare { opacity: 1; }
}

/* Holo layer */
.kd-tilt-holo {
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    opacity: 0;
    z-index: 9;
    background:
        radial-gradient(circle at 30% 20%, rgba(255,255,255,0.35), transparent 55%),
        linear-gradient(135deg, rgba(var(--base-color-rgb), 0.12), rgba(0,210,255,0.10));
    mix-blend-mode: overlay;
    transition: opacity 0.35s ease;
}

@media (hover: hover) and (pointer: fine) {
    .kd-tilt-wrapper:hover .kd-tilt-holo { opacity: 1; }
}

@media (hover: hover) and (pointer: fine) {
    .kd-tilt-wrapper.kd-tilt-mode-dynamic:hover .kd-tilt-card.kd-tilt-dynamic {
        transform: perspective(1000px) rotateX(var(--rX, 0deg)) rotateY(var(--rY, 0deg));
    }

    .kd-tilt-wrapper.kd-tilt-mode-dynamic:hover .kd-tilt-card {
    }
}

.kd-tilt-dynamic.kd-tilt-dyn-smooth {
    transition: transform 0.12s linear;
}
.kd-tilt-dynamic.kd-tilt-dyn-smooth:not(.kd-is-active) {
    transition: transform 0.45s cubic-bezier(0.23, 1, 0.32, 1);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    .kd-tilt-holo { transition: none !important; }
}

/* ===================================
   49. Toggles & Switches - Add-ons & Fixes (KD)
   Append AFTER your current 49
====================================== */

/* -----------------------------------
   49.1 Small UX polish
----------------------------------- */
.kd-toggle { cursor: pointer; }

/* Wrapper focus-within */
.kd-toggle-wrapper:focus-within .kd-toggle {
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.18);
}

@media (hover: hover) and (pointer: fine) {
    .kd-toggle-wrapper:hover .kd-toggle {
        filter: brightness(0.99);
    }
}

/* -----------------------------------
   49.2 FIX: Material selector

   <label class="kd-toggle-wrapper kd-toggle--material">
     <input class="kd-toggle-input" type="checkbox">
     <span class="kd-toggle"></span>
     <span class="kd-toggle-label">...</span>
   </label>
----------------------------------- */
.kd-toggle-wrapper.kd-toggle--material .kd-toggle {
    --kd-tog-w: 42px;
    --kd-tog-h: 14px;
    --kd-tog-bg: #b0b0b0;
    border: none;
    overflow: visible;
    background-color: var(--kd-tog-bg);
}

.kd-toggle-wrapper.kd-toggle--material .kd-toggle::after {
    --kd-thumb-size: 22px;
    width: var(--kd-thumb-size);
    height: var(--kd-thumb-size);
    top: 50%;
    left: 0;
    transform: translate(-2px, -50%);
    box-shadow: 0 2px 6px rgba(0,0,0,0.3);
    box-sizing: border-box;
}

.kd-toggle-wrapper.kd-toggle--material .kd-toggle-input:checked + .kd-toggle {
    background-color: rgba(var(--base-color-rgb), 0.5);
}

.kd-toggle-wrapper.kd-toggle--material .kd-toggle-input:checked + .kd-toggle::after {
    background-color: var(--kd-tog-active-bg);
    transform: translate(calc(var(--kd-tog-w) - var(--kd-thumb-size) + 2px), -50%);
}

/* -----------------------------------
   49.3 FIX: Icon selector (checked state)
----------------------------------- */
.kd-toggle-wrapper.kd-toggle--icon .kd-toggle {
    --kd-tog-w: 60px;
    --kd-tog-h: 32px;
    background-color: var(--dark-gray);
}

.kd-toggle-wrapper.kd-toggle--icon .kd-toggle::before {
    content: "";
    font-family: "bootstrap-icons";
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.85rem;
    color: rgba(255,255,255,0.4);
    transition: opacity 0.3s, left 0.3s, right 0.3s, color 0.3s;
}

.kd-toggle-wrapper.kd-toggle--icon .kd-toggle-input:checked + .kd-toggle::before {
    content: "";
    right: auto;
    left: 8px;
    color: var(--white);
}

/* Icon thumb (checked selector fix) */
.kd-toggle-wrapper.kd-toggle--icon-thumb .kd-toggle-input:checked + .kd-toggle::after {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230d6efd'%3E%3Cpath d='M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E");
}

/* -----------------------------------
   49.4 Themes: Glass / Minimal / Neon (opt-in)
   Usage:
   <label class="kd-toggle-wrapper kd-toggle-theme-glass">...</label>
----------------------------------- */

/* Glass */
.kd-toggle-wrapper.kd-toggle-theme-glass .kd-toggle {
    --kd-tog-bg: rgba(255,255,255,0.40);
    --kd-tog-thumb: rgba(255,255,255,0.95);
    border: 1px solid rgba(255,255,255,0.55);
    box-shadow: 0 12px 30px rgba(0,0,0,0.10);
    background-color: var(--kd-tog-bg);
}
@supports (backdrop-filter: blur(10px)) {
    .kd-toggle-wrapper.kd-toggle-theme-glass .kd-toggle {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

/* Minimal */
.kd-toggle-wrapper.kd-toggle-theme-minimal .kd-toggle {
    --kd-tog-bg: transparent;
    border: 1px solid rgba(0,0,0,0.18);
    background-color: var(--kd-tog-bg);
    box-shadow: none;
}
.kd-toggle-wrapper.kd-toggle-theme-minimal .kd-toggle-input:checked + .kd-toggle {
    border-color: rgba(var(--base-color-rgb), 0.55);
}

/* Neon */
.kd-toggle-wrapper.kd-toggle-theme-neon .kd-toggle {
    --kd-tog-bg: rgba(10,14,26,0.90);
    --kd-tog-active-bg: #00fff0;
    --kd-tog-thumb: rgba(255,255,255,0.92);

    background-color: var(--kd-tog-bg);
    border: 1px solid rgba(0,255,240,0.22);
    box-shadow:
        0 0 0 1px rgba(0,255,240,0.10),
        0 18px 50px rgba(0,255,240,0.10);
}
.kd-toggle-wrapper.kd-toggle-theme-neon .kd-toggle-input:checked + .kd-toggle {
    box-shadow:
        0 0 0 1px rgba(0,255,240,0.14),
        0 22px 60px rgba(0,255,240,0.14);
}
.kd-toggle-wrapper.kd-toggle-theme-neon .kd-toggle-input:focus-visible + .kd-toggle {
    box-shadow: 0 0 0 4px rgba(0,255,240,0.20);
}

/* -----------------------------------
   49.5 Color utilities
   Usage: <label class="kd-toggle-wrapper kd-toggle-success">...</label>
----------------------------------- */
.kd-toggle-wrapper.kd-toggle-success .kd-toggle { --kd-tog-active-bg: var(--green); }
.kd-toggle-wrapper.kd-toggle-warning .kd-toggle { --kd-tog-active-bg: var(--yellow); }
.kd-toggle-wrapper.kd-toggle-danger  .kd-toggle { --kd-tog-active-bg: var(--red); }
.kd-toggle-wrapper.kd-toggle-info    .kd-toggle { --kd-tog-active-bg: var(--blue); }

/* -----------------------------------
   49.6 ON/OFF text inside track (modern)
   Markup:
   <span class="kd-toggle" data-on="ON" data-off="OFF"></span>
   Wrapper'a: .kd-toggle--text
----------------------------------- */
.kd-toggle-wrapper.kd-toggle--text .kd-toggle {
    --kd-tog-text-size: 0.60rem;
    --kd-tog-text-weight: 900;
    --kd-tog-text-ls: 0.14em;
}

.kd-toggle-wrapper.kd-toggle--text .kd-toggle::before {
    content: attr(data-off);
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    font-size: var(--kd-tog-text-size);
    font-weight: var(--kd-tog-text-weight);
    letter-spacing: var(--kd-tog-text-ls);
    color: rgba(0,0,0,0.45);
    transition: opacity 0.25s ease, transform 0.25s ease;
    pointer-events: none;
}

.kd-toggle-wrapper.kd-toggle--text .kd-toggle-input:checked + .kd-toggle::before {
    content: attr(data-on);
    left: auto;
    right: 10px;
    color: rgba(255,255,255,0.92);
}

.kd-toggle-wrapper.kd-toggle-theme-minimal.kd-toggle--text .kd-toggle::before {
    color: rgba(0,0,0,0.55);
}
.kd-toggle-wrapper.kd-toggle-theme-neon.kd-toggle--text .kd-toggle::before {
    color: rgba(255,255,255,0.75);
}

/* -----------------------------------
   49.7 Loading state (CSS only)
   <label class="kd-toggle-wrapper is-loading">...</label>
----------------------------------- */
.kd-toggle-wrapper.kd-is-loading {
    pointer-events: none;
    opacity: 0.85;
}
.kd-toggle-wrapper.kd-is-loading .kd-toggle::after {
    box-sizing: border-box;
    background-color: transparent;
    border: 2px solid rgba(0,0,0,0.18);
    border-top-color: rgba(0,0,0,0.55);
    box-shadow: none;
    animation: kd-toggle-spin 0.8s linear infinite;
}
.kd-toggle-wrapper.kd-is-loading .kd-toggle-input:checked + .kd-toggle::after {
    border: 2px solid rgba(255,255,255,0.35);
    border-top-color: rgba(255,255,255,0.95);
}

@keyframes kd-toggle-spin {
    to { transform: translateX(calc(var(--kd-tog-w) - var(--kd-tog-h))) rotate(360deg); }
}

.kd-toggle-wrapper.kd-is-loading .kd-toggle-input:not(:checked) + .kd-toggle::after {
    animation: kd-toggle-spin-off 0.8s linear infinite;
}
@keyframes kd-toggle-spin-off {
    to { transform: rotate(360deg); }
}

/* -----------------------------------
   49.8 Disabled fallback (no :has needed)
----------------------------------- */
.kd-toggle-wrapper.kd-is-disabled { cursor: not-allowed; }
.kd-toggle-wrapper.kd-is-disabled .kd-toggle {
    opacity: 0.5;
    filter: grayscale(100%);
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-toggle-wrapper.kd-is-loading .kd-toggle::after {
        animation: none !important;
    }
}

/* ===================================
    50. Tooltips & Popovers (KD - Namespaced)
====================================== */

/* --- A) CSS-Only Tooltips (Attribute based) --- */
/* Usage: <button class="kd-tooltip" data-kd-tooltip="Hey there!" data-kd-dir="top">...</button> */

.kd-tooltip {
    --kd-tip-bg: rgba(15, 23, 42, 0.95);
    --kd-tip-text: #ffffff;
    --kd-tip-size: 0.8rem;
    --kd-tip-pad: 6px 12px;
    --kd-tip-radius: 6px;
    --kd-tip-dist: 10px;
    --kd-tip-arrow: 6px;
    --kd-tip-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-tip-delay: 0s;

    --kd-tip-max-w: 260px;
    --kd-tip-white-space: nowrap;

    --kd-tip-tx: -50%;
    --kd-tip-ty: 0px;
    --kd-tip-dx: 0px;
    --kd-tip-dy: -4px;

    position: relative;
}

.kd-tooltip::after {
    content: attr(data-kd-tooltip);
    position: absolute;
    background: var(--kd-tip-bg);
    color: var(--kd-tip-text);
    padding: var(--kd-tip-pad);
    border-radius: var(--kd-tip-radius);
    font-size: var(--kd-tip-size);
    font-weight: 600;
    line-height: 1.4;
    max-width: var(--kd-tip-max-w);
    white-space: var(--kd-tip-white-space);
    z-index: 1000;
    pointer-events: none;
    box-shadow: 0 8px 24px rgba(0,0,0,0.18);

    opacity: 0;
    visibility: hidden;
    transform: translate(var(--kd-tip-tx), var(--kd-tip-ty));
    transition:
        opacity 0.2s var(--kd-tip-ease),
        transform 0.2s var(--kd-tip-ease),
        visibility 0.2s;
    transition-delay: var(--kd-tip-delay);
}

.kd-tooltip::before {
    content: "";
    position: absolute;
    z-index: 1001;
    pointer-events: none;
    border: var(--kd-tip-arrow) solid transparent;

    opacity: 0;
    visibility: hidden;
    transform: translate(var(--kd-tip-tx), var(--kd-tip-ty));
    transition:
        opacity 0.2s var(--kd-tip-ease),
        transform 0.2s var(--kd-tip-ease),
        visibility 0.2s;
    transition-delay: var(--kd-tip-delay);
}

/* Default / Top */
.kd-tooltip:not([data-kd-dir]),.kd-tooltip[data-kd-dir="top"] {
    --kd-tip-tx: -50%;
    --kd-tip-ty: 0px;
    --kd-tip-dx: 0px;
    --kd-tip-dy: -4px;
}

.kd-tooltip:not([data-kd-dir])::after,.kd-tooltip[data-kd-dir="top"]::after {
    bottom: 100%;
    left: 50%;
    margin-bottom: var(--kd-tip-dist);
}

.kd-tooltip:not([data-kd-dir])::before,.kd-tooltip[data-kd-dir="top"]::before {
    bottom: 100%;
    left: 50%;
    margin-bottom: calc(var(--kd-tip-dist) - (var(--kd-tip-arrow) * 2) + 2px);
    border-top-color: var(--kd-tip-bg);
}

/* Bottom */
.kd-tooltip[data-kd-dir="bottom"] {
    --kd-tip-tx: -50%;
    --kd-tip-ty: 0px;
    --kd-tip-dx: 0px;
    --kd-tip-dy: 4px;
}

.kd-tooltip[data-kd-dir="bottom"]::after {
    top: 100%;
    left: 50%;
    margin-top: var(--kd-tip-dist);
}

.kd-tooltip[data-kd-dir="bottom"]::before {
    top: 100%;
    left: 50%;
    margin-top: calc(var(--kd-tip-dist) - (var(--kd-tip-arrow) * 2) + 2px);
    border-bottom-color: var(--kd-tip-bg);
}

/* Left */
.kd-tooltip[data-kd-dir="left"] {
    --kd-tip-tx: 0px;
    --kd-tip-ty: -50%;
    --kd-tip-dx: -4px;
    --kd-tip-dy: 0px;
}

.kd-tooltip[data-kd-dir="left"]::after {
    top: 50%;
    right: 100%;
    margin-right: var(--kd-tip-dist);
}

.kd-tooltip[data-kd-dir="left"]::before {
    top: 50%;
    right: 100%;
    margin-right: calc(var(--kd-tip-dist) - (var(--kd-tip-arrow) * 2) + 2px);
    border-left-color: var(--kd-tip-bg);
}

/* Right */
.kd-tooltip[data-kd-dir="right"] {
    --kd-tip-tx: 0px;
    --kd-tip-ty: -50%;
    --kd-tip-dx: 4px;
    --kd-tip-dy: 0px;
}

.kd-tooltip[data-kd-dir="right"]::after {
    top: 50%;
    left: 100%;
    margin-left: var(--kd-tip-dist);
}

.kd-tooltip[data-kd-dir="right"]::before {
    top: 50%;
    left: 100%;
    margin-left: calc(var(--kd-tip-dist) - (var(--kd-tip-arrow) * 2) + 2px);
    border-right-color: var(--kd-tip-bg);
}

/* Show states */
.kd-tooltip.kd-is-open::after,.kd-tooltip.kd-is-open::before,.kd-tooltip:focus-visible::after,.kd-tooltip:focus-visible::before,.kd-tooltip:focus-within::after,.kd-tooltip:focus-within::before {
    opacity: 1;
    visibility: visible;
    transform: translate(
        calc(var(--kd-tip-tx) + var(--kd-tip-dx)),
        calc(var(--kd-tip-ty) + var(--kd-tip-dy))
    );
}

@media (hover: hover) and (pointer: fine) {
    .kd-tooltip:hover::after,
    .kd-tooltip:hover::before {
        opacity: 1;
        visibility: visible;
        transform: translate(
            calc(var(--kd-tip-tx) + var(--kd-tip-dx)),
            calc(var(--kd-tip-ty) + var(--kd-tip-dy))
        );
    }
}

/* Variants */
.kd-tooltip--wrap {
    --kd-tip-white-space: normal;
}
.kd-tooltip--wrap::after {
    white-space: normal;
}

.kd-tooltip--delay {
    --kd-tip-delay: 0.12s;
}

.kd-tooltip--sm {
    --kd-tip-size: 0.75rem;
    --kd-tip-pad: 5px 10px;
    --kd-tip-radius: 6px;
}
.kd-tooltip--lg {
    --kd-tip-size: 0.9rem;
    --kd-tip-pad: 10px 14px;
    --kd-tip-radius: 10px;
    --kd-tip-max-w: 320px;
}

.kd-tooltip--no-arrow::before {
    display: none;
}

/* Alignment (top/bottom only) */
/* Usage: <span class="kd-tooltip kd-tooltip--start" data-kd-tooltip="..." data-kd-dir="top">...</span> */
.kd-tooltip--start:not([data-kd-dir]),.kd-tooltip--start[data-kd-dir="top"],.kd-tooltip--start[data-kd-dir="bottom"] {
    --kd-tip-tx: 0px;
}
.kd-tooltip--start:not([data-kd-dir])::after,.kd-tooltip--start[data-kd-dir="top"]::after,.kd-tooltip--start[data-kd-dir="bottom"]::after {
    left: 0;
}
.kd-tooltip--start:not([data-kd-dir])::before,.kd-tooltip--start[data-kd-dir="top"]::before,.kd-tooltip--start[data-kd-dir="bottom"]::before {
    left: 14px;
}

.kd-tooltip--end:not([data-kd-dir]),.kd-tooltip--end[data-kd-dir="top"],.kd-tooltip--end[data-kd-dir="bottom"] {
    --kd-tip-tx: 0px;
}
.kd-tooltip--end:not([data-kd-dir])::after,.kd-tooltip--end[data-kd-dir="top"]::after,.kd-tooltip--end[data-kd-dir="bottom"]::after {
    left: auto;
    right: 0;
}
.kd-tooltip--end:not([data-kd-dir])::before,.kd-tooltip--end[data-kd-dir="top"]::before,.kd-tooltip--end[data-kd-dir="bottom"]::before {
    left: auto;
    right: 14px;
}

/* Themes */
.kd-tooltip--minimal {
    --kd-tip-bg: rgba(255,255,255,0.98);
    --kd-tip-text: rgba(15,23,42,0.92);
}
.kd-tooltip--minimal::after {
    border: 1px solid rgba(0,0,0,0.10);
    box-shadow: 0 10px 30px rgba(0,0,0,0.10);
}
.kd-tooltip--minimal:not([data-kd-dir])::before,.kd-tooltip--minimal[data-kd-dir="top"]::before { border-top-color: rgba(255,255,255,0.98); }
.kd-tooltip--minimal[data-kd-dir="bottom"]::before { border-bottom-color: rgba(255,255,255,0.98); }
.kd-tooltip--minimal[data-kd-dir="left"]::before { border-left-color: rgba(255,255,255,0.98); }
.kd-tooltip--minimal[data-kd-dir="right"]::before { border-right-color: rgba(255,255,255,0.98); }

.kd-tooltip--glass {
    --kd-tip-bg: rgba(255, 255, 255, 0.75);
    --kd-tip-text: #111;
}
.kd-tooltip--glass::after {
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255,255,255,0.55);
    box-shadow: 0 14px 40px rgba(0,0,0,0.14);
}

.kd-tooltip--neon {
    --kd-tip-bg: rgba(0,0,0,0.92);
    --kd-tip-text: #fff;
}
.kd-tooltip--neon::after {
    border: 1px solid rgba(0,255,240,0.55);
    box-shadow: 0 0 18px rgba(0,255,240,0.22), 0 20px 60px rgba(0,0,0,0.35);
}
.kd-tooltip--neon::before {
    display: none;
}


/* --- B) Popovers (Rich HTML Content) --- */
/* Usage:
<div class="kd-popover-wrapper" data-kd-dir="top">
  <button class="kd-popover-trigger" aria-expanded="false">Click</button>
  <div class="kd-popover-content">
    <h5 class="kd-popover-title">Title</h5>
    <p class="kd-popover-text">...</p>
  </div>
</div>
*/

.kd-popover-wrapper {
    --kd-pop-bg: var(--white);
    --kd-pop-color: rgba(15,23,42,0.85);
    --kd-pop-border: rgba(0,0,0,0.06);
    --kd-pop-shadow: 0 18px 60px rgba(0,0,0,0.14);
    --kd-pop-radius: var(--radius-4);
    --kd-pop-pad: 18px;
    --kd-pop-dist: 14px;
    --kd-pop-max-w: 280px;
    --kd-pop-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    position: relative;
    display: inline-block;
}

.kd-popover-content {
    position: absolute;
    width: max-content;
    max-width: min(var(--kd-pop-max-w), calc(100vw - 20px));

    background: var(--kd-pop-bg);
    color: var(--kd-pop-color);
    padding: var(--kd-pop-pad);
    border-radius: var(--kd-pop-radius);
    box-shadow: var(--kd-pop-shadow);
    border: 1px solid var(--kd-pop-border);

    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 990;

    transition: opacity 0.25s ease, transform 0.25s var(--kd-pop-ease), visibility 0.25s ease;
}

/* Arrow */
.kd-popover-content::after {
    content: "";
    position: absolute;
    border: 8px solid transparent;
}

/* Default / Top */
.kd-popover-wrapper:not([data-kd-dir]) .kd-popover-content,.kd-popover-wrapper[data-kd-dir="top"] .kd-popover-content {
    bottom: 100%;
    left: 50%;
    margin-bottom: var(--kd-pop-dist);
    transform: translateX(-50%) translateY(10px) scale(0.96);
}

.kd-popover-wrapper:not([data-kd-dir]) .kd-popover-content::after,.kd-popover-wrapper[data-kd-dir="top"] .kd-popover-content::after {
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-top-color: var(--kd-pop-bg);
}

/* Bottom */
.kd-popover-wrapper[data-kd-dir="bottom"] .kd-popover-content {
    top: 100%;
    left: 50%;
    margin-top: var(--kd-pop-dist);
    transform: translateX(-50%) translateY(-10px) scale(0.96);
}

.kd-popover-wrapper[data-kd-dir="bottom"] .kd-popover-content::after {
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-bottom-color: var(--kd-pop-bg);
}

/* Left */
.kd-popover-wrapper[data-kd-dir="left"] .kd-popover-content {
    top: 50%;
    right: 100%;
    margin-right: var(--kd-pop-dist);
    transform: translateY(-50%) translateX(10px) scale(0.96);
}

.kd-popover-wrapper[data-kd-dir="left"] .kd-popover-content::after {
    left: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-left-color: var(--kd-pop-bg);
}

/* Right */
.kd-popover-wrapper[data-kd-dir="right"] .kd-popover-content {
    top: 50%;
    left: 100%;
    margin-left: var(--kd-pop-dist);
    transform: translateY(-50%) translateX(-10px) scale(0.96);
}

.kd-popover-wrapper[data-kd-dir="right"] .kd-popover-content::after {
    right: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-right-color: var(--kd-pop-bg);
}

/* Open state */
.kd-popover-wrapper:hover .kd-popover-content,.kd-popover-wrapper:focus-within .kd-popover-content,.kd-popover-wrapper.kd-is-open .kd-popover-content,.kd-popover-trigger[aria-expanded="true"] + .kd-popover-content {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.kd-popover-wrapper:hover:not([data-kd-dir]) .kd-popover-content,.kd-popover-wrapper:focus-within:not([data-kd-dir]) .kd-popover-content,.kd-popover-wrapper.kd-is-open:not([data-kd-dir]) .kd-popover-content,.kd-popover-wrapper[data-kd-dir="top"]:hover .kd-popover-content,.kd-popover-wrapper[data-kd-dir="top"]:focus-within .kd-popover-content,.kd-popover-wrapper[data-kd-dir="top"].kd-is-open .kd-popover-content,.kd-popover-wrapper[data-kd-dir="bottom"]:hover .kd-popover-content,.kd-popover-wrapper[data-kd-dir="bottom"]:focus-within .kd-popover-content,.kd-popover-wrapper[data-kd-dir="bottom"].kd-is-open .kd-popover-content,.kd-popover-trigger[aria-expanded="true"] + .kd-popover-content {
    transform: translateX(-50%) translateY(0) scale(1);
}

.kd-popover-wrapper[data-kd-dir="left"]:hover .kd-popover-content,.kd-popover-wrapper[data-kd-dir="left"]:focus-within .kd-popover-content,.kd-popover-wrapper[data-kd-dir="left"].kd-is-open .kd-popover-content {
    transform: translateY(-50%) translateX(0) scale(1);
}

.kd-popover-wrapper[data-kd-dir="right"]:hover .kd-popover-content,.kd-popover-wrapper[data-kd-dir="right"]:focus-within .kd-popover-content,.kd-popover-wrapper[data-kd-dir="right"].kd-is-open .kd-popover-content {
    transform: translateY(-50%) translateX(0) scale(1);
}

/* Popover content helpers */
.kd-popover-title {
    margin: 0 0 8px 0;
    font-size: 0.95rem;
    font-weight: 800;
    color: inherit;
}
.kd-popover-text {
    margin: 0;
    font-size: 0.85rem;
    line-height: 1.55;
    color: inherit;
    opacity: 0.9;
}

/* Sizes */
.kd-popover-sm { --kd-pop-pad: 14px; --kd-pop-max-w: 240px; }
.kd-popover-lg { --kd-pop-pad: 22px; --kd-pop-max-w: 360px; }

/* Themes */
.kd-popover--minimal {
    --kd-pop-bg: rgba(255,255,255,0.98);
    --kd-pop-color: rgba(15,23,42,0.86);
    --kd-pop-border: rgba(0,0,0,0.10);
    --kd-pop-shadow: 0 12px 40px rgba(0,0,0,0.10);
}

.kd-popover--glass {
    --kd-pop-bg: rgba(255,255,255,0.72);
    --kd-pop-color: rgba(15,23,42,0.86);
    --kd-pop-border: rgba(255,255,255,0.55);
    --kd-pop-shadow: 0 18px 60px rgba(0,0,0,0.16);
}
.kd-popover--glass .kd-popover-content {
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.kd-popover--neon {
    --kd-pop-bg: rgba(0,0,0,0.92);
    --kd-pop-color: rgba(255,255,255,0.92);
    --kd-pop-border: rgba(0,255,240,0.35);
    --kd-pop-shadow: 0 0 18px rgba(0,255,240,0.18), 0 22px 70px rgba(0,0,0,0.40);
}
.kd-popover--neon .kd-popover-content::after {
    display: none;
}


/* ===================================
    51. Video Wrappers & Media Players (KD)
====================================== */

/* --- A) Responsive Embeds (Ratios) --- */
/* Usage: <div class="kd-video-wrapper kd-ratio-16x9"> <iframe ...></iframe> </div> */

.kd-video-wrapper {
    --kd-video-aspect: 16 / 9;
    --kd-video-radius: var(--radius-4);
    --kd-video-bg: var(--dark-gray);
    --kd-video-border: transparent;

    position: relative;
    width: 100%;
    height: 0;
    padding-bottom: 56.25%;
    overflow: hidden;
    background-color: var(--kd-video-bg);
    border-radius: var(--kd-video-radius);
    border: 1px solid var(--kd-video-border);
    isolation: isolate;
}

@supports (aspect-ratio: 16/9) {
    .kd-video-wrapper {
        aspect-ratio: var(--kd-video-aspect);
        height: auto;
        padding-bottom: 0;
    }
}

.kd-video-wrapper :where(iframe, object, embed, video) {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

/* Ratios */
.kd-ratio-16x9 { --kd-video-aspect: 16 / 9; padding-bottom: 56.25%; }
.kd-ratio-4x3  { --kd-video-aspect: 4 / 3;  padding-bottom: 75%; }
.kd-ratio-1x1  { --kd-video-aspect: 1 / 1;  padding-bottom: 100%; }
.kd-ratio-21x9 { --kd-video-aspect: 21 / 9; padding-bottom: 42.85%; }

/* Lift */
.kd-video--lift {
    box-shadow: 0 15px 40px rgba(0,0,0,0.10);
    transition: transform 0.35s ease, box-shadow 0.35s ease;
}
@media (hover: hover) and (pointer: fine) {
    .kd-video--lift:hover {
        transform: translateY(-5px);
        box-shadow: 0 25px 60px rgba(0,0,0,0.18);
    }
}

/* Frame */
/* Usage: <div class="kd-video-wrapper kd-video--frame">...</div> */
.kd-video--frame {
    --kd-frame-pad: 10px;
    --kd-video-bg: #fff;
    --kd-video-border: rgba(0,0,0,0.10);
    border-radius: 12px;
}

.kd-video--frame::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    box-shadow: 0 10px 30px rgba(0,0,0,0.08);
    pointer-events: none;
    z-index: 0;
}

.kd-video--frame :where(iframe, object, embed, video) {
    inset: var(--kd-frame-pad);
    width: auto;
    height: auto;
    border-radius: 8px;
}

/* Themes */
.kd-video--minimal {
    --kd-video-bg: transparent;
    --kd-video-border: rgba(0,0,0,0.14);
    box-shadow: none;
}

.kd-video--glass {
    --kd-video-bg: rgba(255,255,255,0.20);
    --kd-video-border: rgba(255,255,255,0.35);
}
@supports (backdrop-filter: blur(10px)) {
    .kd-video--glass {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

.kd-video--neon {
    --kd-video-bg: rgba(0,0,0,0.86);
    --kd-video-border: rgba(0,255,240,0.28);
    box-shadow: 0 0 18px rgba(0,255,240,0.12), 0 22px 70px rgba(0,0,0,0.35);
}

/* Loading */
/* Usage: <div class="kd-video-wrapper is-loading">...</div> */
.kd-video-wrapper.kd-is-loading::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(255,255,255,0.06), rgba(255,255,255,0.14), rgba(255,255,255,0.06));
    background-size: 200% 100%;
    animation: kd-video-shimmer 1.2s linear infinite;
    z-index: 5;
}
.kd-video-wrapper.kd-is-loading :where(iframe, video, object, embed) {
    opacity: 0;
}
@keyframes kd-video-shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}


/* --- B) Posters & Play Buttons --- */
/* Usage:
<div class="kd-video-poster">
  <img src="..." alt="">
  <button class="kd-play-btn kd-play--brand"><i class="bi bi-play-fill"></i></button>
</div>
*/

.kd-video-poster {
    position: relative;
    display: block;
    width: 100%;
    border-radius: var(--radius-4);
    overflow: hidden;
    cursor: pointer;
    isolation: isolate;
}

.kd-video-poster img {
    width: 100%;
    height: auto;
    display: block;
    transition: transform 0.6s ease, filter 0.6s ease;
}

.kd-video-poster::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 50% 45%, rgba(0,0,0,0.15), rgba(0,0,0,0.55));
    opacity: 0;
    transition: opacity 0.4s ease;
    pointer-events: none;
    z-index: 2;
}

.kd-video-poster:hover img {
    transform: scale(1.05);
    filter: brightness(0.86);
}

.kd-video-poster:hover::after {
    opacity: 1;
}

.kd-play-btn {
    --kd-play-size: 70px;
    --kd-play-bg: var(--white);
    --kd-play-color: var(--base-color);

    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);

    width: var(--kd-play-size);
    height: var(--kd-play-size);
    border-radius: 50%;
    background-color: var(--kd-play-bg);
    color: var(--kd-play-color);

    border: none;
    display: flex;
    align-items: center;
    justify-content: center;

    font-size: 2rem;
    padding-left: 4px;

    box-shadow: 0 12px 34px rgba(0,0,0,0.22);
    transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275), box-shadow 0.3s ease;
    z-index: 3;
}

.kd-play-btn::before,.kd-play-btn::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background-color: var(--kd-play-bg);
    z-index: -1;
    opacity: 0.55;
    animation: kd-play-pulse 2s infinite;
}

.kd-play-btn::after {
    animation-delay: 0.5s;
}

@keyframes kd-play-pulse {
    0% { transform: scale(1); opacity: 0.55; }
    100% { transform: scale(1.8); opacity: 0; }
}

.kd-video-poster:hover .kd-play-btn {
    transform: translate(-50%, -50%) scale(1.1);
    box-shadow: 0 22px 55px rgba(0,0,0,0.32);
}

.kd-play-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.25), 0 22px 55px rgba(0,0,0,0.32);
}

/* Play sizes */
.kd-play-sm { --kd-play-size: 54px; font-size: 1.6rem; }
.kd-play-lg { --kd-play-size: 88px; font-size: 2.4rem; }

/* Play themes */
.kd-play-btn.kd-play--glass {
    --kd-play-bg: rgba(255,255,255,0.22);
    --kd-play-color: #fff;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255,255,255,0.42);
}

.kd-play-btn.kd-play--brand {
    --kd-play-bg: var(--base-color);
    --kd-play-color: #fff;
}
.kd-play-btn.kd-play--brand::before,.kd-play-btn.kd-play--brand::after {
    background-color: var(--base-color);
}

.kd-play-btn.kd-play--minimal {
    --kd-play-bg: rgba(255,255,255,0.92);
    --kd-play-color: rgba(15,23,42,0.9);
    border: 1px solid rgba(0,0,0,0.10);
}
.kd-play-btn.kd-play--minimal::before,.kd-play-btn.kd-play--minimal::after {
    background-color: rgba(255,255,255,0.92);
}

.kd-play-btn.kd-play--neon {
    --kd-play-bg: rgba(0,0,0,0.75);
    --kd-play-color: #00fff0;
    border: 1px solid rgba(0,255,240,0.55);
    box-shadow: 0 0 18px rgba(0,255,240,0.22), 0 22px 55px rgba(0,0,0,0.32);
}
.kd-play-btn.kd-play--neon::before,.kd-play-btn.kd-play--neon::after {
    background-color: rgba(0,0,0,0.75);
    opacity: 0.35;
}

.kd-play-btn.kd-play--no-pulse::before,.kd-play-btn.kd-play--no-pulse::after {
    animation: none;
    display: none;
}


/* --- C) Player Controls (Static UI hooks) --- */
/* Usage: <div class="kd-video-wrapper"> ... <div class="kd-player-controls">...</div></div> */

.kd-player-controls {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    padding: 18px 20px;
    background: linear-gradient(to top, rgba(0,0,0,0.82), transparent);
    display: flex;
    align-items: center;
    gap: 14px;

    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease;
    z-index: 10;
}

.kd-video-wrapper:hover .kd-player-controls,.kd-video-wrapper:focus-within .kd-player-controls,.kd-video-wrapper.kd-controls-always .kd-player-controls {
    opacity: 1;
    pointer-events: auto;
}

.kd-player-progress {
    flex-grow: 1;
    height: 6px;
    background: rgba(255,255,255,0.22);
    border-radius: 999px;
    cursor: pointer;
    position: relative;
}

.kd-player-progress-fill {
    height: 100%;
    width: 40%;
    background: var(--base-color);
    border-radius: 999px;
    position: relative;
}

.kd-player-progress-fill::after {
    content: "";
    position: absolute;
    right: -6px;
    top: 50%;
    transform: translateY(-50%) scale(0);
    width: 12px;
    height: 12px;
    background: #fff;
    border-radius: 50%;
    transition: transform 0.2s ease;
}

.kd-player-progress:hover .kd-player-progress-fill::after,.kd-player-progress:focus-within .kd-player-progress-fill::after {
    transform: translateY(-50%) scale(1);
}

.kd-player-btn {
    background: none;
    border: none;
    color: #fff;
    font-size: 1.2rem;
    cursor: pointer;
    opacity: 0.85;
    transition: opacity 0.2s ease, transform 0.2s ease;
}

.kd-player-btn:hover {
    opacity: 1;
    transform: translateY(-1px);
}

.kd-player-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22);
    border-radius: 8px;
}


/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-tooltip::after,
    .kd-tooltip::before,
    .kd-popover-content,
    .kd-video--lift,
    .kd-video-poster img,
    .kd-video-poster::after,
    .kd-play-btn,
    .kd-play-btn::before,
    .kd-play-btn::after,
    .kd-player-controls,
    .kd-player-btn,
    .kd-video-wrapper.kd-is-loading::after {
        transition: none !important;
        animation: none !important;
        transform: none !important;
    }

    .kd-video-wrapper.kd-is-loading::after {
        display: none;
    }

    .kd-video-poster:hover .kd-play-btn {
        transform: translate(-50%, -50%) !important;
    }
}

/* ===================================
    52. Audio Players & Podcasts (KD - Namespaced)
====================================== */

/* Usage:
<div class="kd-audio-player is-playing kd-audio--glass">
  <div class="kd-audio-cover is-spinning"><img src="..." alt=""></div>

  <div class="kd-audio-body">
    <div class="kd-audio-info">
      <div class="kd-audio-title">Episode Title <span class="kd-audio-artist">• Artist</span></div>
      <div class="kd-audio-time"><span class="kd-audio-time-current">01:12</span> / <span class="kd-audio-time-total">03:44</span></div>
    </div>

    <div class="kd-audio-track" role="slider" aria-label="Progress">
      <div class="kd-audio-buffer" style="width:55%"></div>
      <div class="kd-audio-fill" style="width:35%"></div>
      <span class="kd-audio-marker" style="left:25%"></span>
    </div>

    <div class="kd-audio-meta">
      <div class="kd-audio-visualizer" aria-hidden="true">
        <i style="height:20%"></i><i style="height:60%"></i><i style="height:40%"></i><i style="height:75%"></i><i style="height:30%"></i>
      </div>

      <div class="kd-audio-extra">
        <button class="kd-audio-speed" type="button">1x</button>
        <div class="kd-audio-volume">
          <button class="kd-audio-btn kd-audio-btn--icon" type="button"><i class="bi bi-volume-up"></i></button>
          <input class="kd-audio-range kd-audio-range--vol" type="range" min="0" max="100" value="80" aria-label="Volume">
        </div>
      </div>
    </div>
  </div>

  <div class="kd-audio-controls">
    <button class="kd-audio-btn" type="button"><i class="bi bi-skip-backward-fill"></i></button>
    <button class="kd-audio-btn btn-main kd-audio-btn--main" type="button"><i class="bi bi-play-fill"></i></button>
    <button class="kd-audio-btn" type="button"><i class="bi bi-skip-forward-fill"></i></button>
  </div>
</div>
*/

.kd-audio-player {
    --kd-audio-bg: var(--white);
    --kd-audio-color: var(--medium-gray);
    --kd-audio-title: var(--dark-gray);
    --kd-audio-accent: var(--base-color);
    --kd-audio-border: 1px solid rgba(0,0,0,0.08);
    --kd-audio-radius: var(--radius-4);
    --kd-audio-shadow: 0 10px 30px rgba(0,0,0,0.06);
    --kd-audio-shadow-hover: 0 20px 60px rgba(0,0,0,0.12);
    --kd-audio-pad: 20px;
    --kd-audio-gap: 20px;
    --kd-audio-ease: cubic-bezier(0.25, 0.8, 0.25, 1);
    --kd-audio-trans: transform 0.35s var(--kd-audio-ease), box-shadow 0.35s var(--kd-audio-ease), border-color 0.35s ease, background-color 0.35s ease;

    position: relative;
    display: flex;
    align-items: center;
    gap: var(--kd-audio-gap);
    padding: var(--kd-audio-pad);
    background-color: var(--kd-audio-bg);
    border: var(--kd-audio-border);
    border-radius: var(--kd-audio-radius);
    box-shadow: var(--kd-audio-shadow);
    width: 100%;
    isolation: isolate;
}

@media (hover: hover) and (pointer: fine) {
    .kd-audio-player:hover {
        transform: translateY(-4px);
        box-shadow: var(--kd-audio-shadow-hover);
        border-color: rgba(0,0,0,0.06);
    }
}

.kd-audio-player:focus-within {
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.18), var(--kd-audio-shadow);
}

/* --- Cover Art --- */
.kd-audio-cover {
    width: 64px;
    height: 64px;
    border-radius: 10px;
    overflow: hidden;
    flex-shrink: 0;
    position: relative;
    box-shadow: 0 6px 16px rgba(0,0,0,0.12);
    background: var(--very-light-gray);
}

.kd-audio-cover::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.25), transparent 55%);
    opacity: 0.8;
    pointer-events: none;
}

.kd-audio-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Optional: Vinyl spin */
.kd-audio-cover.kd-is-spinning {
    border-radius: 50%;
    animation: kd-audio-spin 6s linear infinite;
}
@keyframes kd-audio-spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* --- Controls --- */
.kd-audio-controls {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-shrink: 0;
}

.kd-audio-btn {
    width: 38px;
    height: 38px;
    border-radius: 999px;
    border: 1px solid rgba(0,0,0,0.10);
    background: transparent;
    color: var(--kd-audio-color);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 1rem;
    transition: transform 0.25s var(--kd-audio-ease), background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}

.kd-audio-btn:hover {
    background-color: var(--very-light-gray);
    color: var(--kd-audio-title);
    border-color: rgba(0,0,0,0.18);
    transform: translateY(-1px);
}

.kd-audio-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.20);
}

.kd-audio-btn.kd-is-active {
    background-color: rgba(var(--base-color-rgb), 0.12);
    color: var(--kd-audio-title);
    border-color: rgba(var(--base-color-rgb), 0.25);
}

.kd-audio-btn.kd-btn-main,.kd-audio-btn--main {
    width: 48px;
    height: 48px;
    background-color: var(--kd-audio-accent);
    color: var(--white);
    border: none;
    font-size: 1.4rem;
    padding-left: 3px;
    box-shadow: 0 10px 24px rgba(var(--base-color-rgb), 0.24);
}

.kd-audio-btn.kd-btn-main:hover,.kd-audio-btn--main:hover {
    transform: translateY(-2px) scale(1.06);
    background-color: var(--kd-audio-accent);
}

.kd-audio-btn.kd-btn-main:focus-visible,.kd-audio-btn--main:focus-visible {
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.22), 0 10px 24px rgba(var(--base-color-rgb), 0.24);
}

/* --- Body / Info --- */
.kd-audio-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 10px;
    min-width: 0;
}

.kd-audio-info {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-size: 0.92rem;
    line-height: 1.2;
    gap: 12px;
}

.kd-audio-title {
    font-weight: 800;
    color: var(--kd-audio-title);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}

.kd-audio-artist {
    font-size: 0.85em;
    color: var(--kd-audio-color);
    font-weight: 600;
    margin-left: 6px;
}

.kd-audio-time {
    font-size: 0.78rem;
    font-variant-numeric: tabular-nums;
    color: var(--kd-audio-color);
    flex-shrink: 0;
    white-space: nowrap;
}

/* --- Progress Track --- */
.kd-audio-track {
    --kd-audio-track-h: 6px;

    position: relative;
    width: 100%;
    height: var(--kd-audio-track-h);
    background-color: rgba(0,0,0,0.06);
    border-radius: 999px;
    cursor: pointer;
    overflow: hidden;
}

.kd-audio-buffer {
    position: absolute;
    inset: 0 auto 0 0;
    height: 100%;
    width: 0%;
    background-color: rgba(0,0,0,0.10);
    border-radius: 999px;
}

.kd-audio-fill {
    position: absolute;
    inset: 0 auto 0 0;
    height: 100%;
    background-color: var(--kd-audio-accent);
    border-radius: 999px;
    width: 35%;
}

.kd-audio-fill::after {
    content: "";
    position: absolute;
    right: -6px;
    top: 50%;
    transform: translateY(-50%) scale(0);
    width: 12px;
    height: 12px;
    background: var(--kd-audio-accent);
    border: 2px solid var(--white);
    border-radius: 50%;
    box-shadow: 0 4px 10px rgba(0,0,0,0.25);
    transition: transform 0.2s var(--kd-audio-ease);
}

.kd-audio-track:hover .kd-audio-fill::after,.kd-audio-player:focus-within .kd-audio-fill::after {
    transform: translateY(-50%) scale(1);
}

/* Chapter markers */
.kd-audio-marker {
    position: absolute;
    top: 50%;
    width: 4px;
    height: 14px;
    transform: translate(-50%, -50%);
    border-radius: 999px;
    background: rgba(255,255,255,0.9);
    mix-blend-mode: overlay;
    pointer-events: none;
}

/* --- Meta Row --- */
.kd-audio-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
}

.kd-audio-extra {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

/* --- Visualizer --- */
.kd-audio-visualizer {
    display: flex;
    align-items: flex-end;
    gap: 2px;
    height: 18px;
    opacity: 0.55;
    flex-shrink: 0;
}

.kd-audio-visualizer :where(i, span) {
    width: 3px;
    height: 40%;
    background-color: var(--kd-audio-accent);
    border-radius: 2px;
    animation: kd-audio-wave 1s ease-in-out infinite;
}

.kd-audio-visualizer :where(i, span):nth-child(odd) { animation-duration: 0.85s; }
.kd-audio-visualizer :where(i, span):nth-child(2n)  { animation-duration: 1.10s; }
.kd-audio-visualizer :where(i, span):nth-child(3n)  { animation-duration: 1.30s; }
.kd-audio-visualizer :where(i, span):nth-child(4n)  { animation-duration: 0.95s; }

.kd-audio-player:not(.kd-is-playing) .kd-audio-visualizer :where(i, span) {
    animation-play-state: paused;
    height: 20% !important;
}

@keyframes kd-audio-wave {
    0%, 100% { height: 18%; }
    50% { height: 100%; }
}

/* --- Range inputs (Volume / optional progress) --- */
.kd-audio-range {
    --kd-range-h: 6px;

    -webkit-appearance: none;
    appearance: none;
    height: var(--kd-range-h);
    width: 110px;
    border-radius: 999px;
    background: rgba(0,0,0,0.10);
    outline: none;
}

.kd-audio-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--kd-audio-accent);
    box-shadow: 0 4px 10px rgba(0,0,0,0.18);
    border: 2px solid rgba(255,255,255,0.9);
    cursor: pointer;
}

.kd-audio-range::-moz-range-thumb {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--kd-audio-accent);
    box-shadow: 0 4px 10px rgba(0,0,0,0.18);
    border: 2px solid rgba(255,255,255,0.9);
    cursor: pointer;
}

.kd-audio-range:focus-visible {
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.18);
}

/* Volume group */
.kd-audio-volume {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.kd-audio-range--vol {
    width: 90px;
}

/* Speed pill */
.kd-audio-speed {
    border: 1px solid rgba(0,0,0,0.10);
    background: rgba(0,0,0,0.03);
    color: var(--kd-audio-title);
    font-weight: 800;
    font-size: 0.75rem;
    padding: 6px 10px;
    border-radius: 999px;
    cursor: pointer;
    transition: transform 0.2s var(--kd-audio-ease), background-color 0.2s ease, border-color 0.2s ease;
}

.kd-audio-speed:hover {
    transform: translateY(-1px);
    background: rgba(var(--base-color-rgb), 0.10);
    border-color: rgba(var(--base-color-rgb), 0.22);
}

.kd-audio-speed:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.18);
}

/* --- State helpers --- */
.kd-audio-player.kd-is-loading::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(90deg, rgba(255,255,255,0.06), rgba(255,255,255,0.16), rgba(255,255,255,0.06));
    background-size: 220% 100%;
    animation: kd-audio-shimmer 1.1s linear infinite;
    z-index: 5;
    pointer-events: none;
}

@keyframes kd-audio-shimmer {
    0% { background-position: 220% 0; }
    100% { background-position: -220% 0; }
}

.kd-audio-player.kd-is-disabled {
    opacity: 0.6;
    filter: grayscale(60%);
    pointer-events: none;
}

.kd-audio-player.kd-is-error {
    border-color: rgba(255,0,0,0.18);
}

/* --- Style 01: Minimal Card (Vertical) --- */
.kd-audio-style-01 {
    flex-direction: column;
    text-align: center;
    padding: 30px;
}

.kd-audio-style-01 .kd-audio-cover {
    width: 140px;
    height: 140px;
    margin-bottom: 6px;
    border-radius: 50%;
    box-shadow: 0 18px 60px rgba(0,0,0,0.16);
}

.kd-audio-style-01 .kd-audio-info {
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

.kd-audio-style-01 .kd-audio-time {
    margin-left: 0;
}

/* --- Style 02: Sticky Bottom Bar --- */
.kd-audio-sticky {
    --kd-audio-bg: rgba(255,255,255,0.88);
    --kd-audio-border: 1px solid rgba(255,255,255,0.60);
    --kd-audio-shadow: 0 20px 70px rgba(0,0,0,0.20);

    position: fixed;
    left: 20px;
    right: 20px;
    bottom: calc(20px + env(safe-area-inset-bottom));
    width: auto;
    z-index: 1000;
    border-radius: 999px;
    padding: 10px 18px 10px 10px;
}

@supports (backdrop-filter: blur(10px)) {
    .kd-audio-sticky {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

.kd-audio-sticky .kd-audio-cover {
    width: 48px;
    height: 48px;
    border-radius: 50%;
}

.kd-audio-sticky .kd-audio-controls {
    order: -1;
    margin-right: 10px;
}

.kd-audio-sticky .kd-audio-range--vol {
    width: 70px;
}

/* --- Themes --- */
.kd-audio--minimal {
    --kd-audio-bg: transparent;
    --kd-audio-border: 1px solid rgba(0,0,0,0.10);
    --kd-audio-shadow: none;
    --kd-audio-shadow-hover: 0 14px 46px rgba(0,0,0,0.10);
}

.kd-audio--glass {
    --kd-audio-bg: rgba(255,255,255,0.62);
    --kd-audio-border: 1px solid rgba(255,255,255,0.55);
    --kd-audio-shadow: 0 18px 70px rgba(0,0,0,0.12);
}
@supports (backdrop-filter: blur(10px)) {
    .kd-audio--glass {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

.kd-audio--neon {
    --kd-audio-bg: rgba(0,0,0,0.86);
    --kd-audio-border: 1px solid rgba(0,255,240,0.25);
    --kd-audio-color: rgba(255,255,255,0.72);
    --kd-audio-title: rgba(255,255,255,0.92);
    --kd-audio-shadow: 0 0 18px rgba(0,255,240,0.10), 0 22px 80px rgba(0,0,0,0.45);
}

.kd-audio--neon .kd-audio-btn {
    border-color: rgba(255,255,255,0.12);
    color: rgba(255,255,255,0.85);
}
.kd-audio--neon .kd-audio-btn:hover {
    background-color: rgba(255,255,255,0.10);
    border-color: rgba(0,255,240,0.25);
}
.kd-audio--neon .kd-audio-track {
    background-color: rgba(255,255,255,0.10);
}
.kd-audio--neon .kd-audio-buffer {
    background-color: rgba(255,255,255,0.14);
}
.kd-audio--neon .kd-audio-speed {
    background: rgba(255,255,255,0.08);
    border-color: rgba(255,255,255,0.14);
    color: rgba(255,255,255,0.92);
}
.kd-audio--neon .kd-audio-range {
    background: rgba(255,255,255,0.14);
}

/* Responsive */
@media (max-width: 767px) {
    .kd-audio-player {
        gap: 14px;
        padding: 16px;
    }

    .kd-audio-controls {
        gap: 8px;
    }

    .kd-audio-range {
        width: 90px;
    }

    .kd-audio-sticky {
        left: 12px;
        right: 12px;
    }

    .kd-audio-sticky .kd-audio-title {
        max-width: 40vw;
    }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-audio-cover.kd-is-spinning,
    .kd-audio-visualizer :where(i, span),
    .kd-audio-player.kd-is-loading::after {
        animation: none !important;
    }

    .kd-audio-player,
    .kd-audio-btn,
    .kd-audio-fill::after,
    .kd-audio-speed {
        transition: none !important;
        transform: none !important;
    }

    .kd-audio-track:hover .kd-audio-fill::after {
        transform: translateY(-50%) scale(1) !important;
    }
}


/* ===================================
    53. Maps Custom Styles & Overlays (KD)
====================================== */

/* Usage:
<div class="kd-map-wrapper kd-map-dark kd-map--glass">
  <iframe src="..." loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>

  <div class="kd-map-pin kd-map-pin--pulse animate-bounce"></div>

  <div class="kd-map-card kd-map-card--glass">
    <h5>Office</h5>
    <p>Address line, city</p>
    <a class="btn-link" href="#">Directions</a>
  </div>

  <div class="kd-map-controls">
    <button class="kd-map-btn" type="button"><i class="bi bi-plus"></i></button>
    <button class="kd-map-btn" type="button"><i class="bi bi-dash"></i></button>
  </div>

  <div class="kd-map-shield"><span>Click to interact</span></div>
</div>
*/

.kd-map-wrapper {
    --kd-map-h: 450px;
    --kd-map-bg: var(--very-light-gray);
    --kd-map-radius: var(--radius-4);
    --kd-map-border: 1px solid rgba(0,0,0,0.06);
    --kd-map-shadow: 0 18px 60px rgba(0,0,0,0.10);
    --kd-map-ease: cubic-bezier(0.25, 0.8, 0.25, 1);

    position: relative;
    width: 100%;
    height: var(--kd-map-h);
    background-color: var(--kd-map-bg);
    overflow: hidden;
    border-radius: var(--kd-map-radius);
    border: var(--kd-map-border);
    box-shadow: var(--kd-map-shadow);
    isolation: isolate;
}

.kd-map-wrapper iframe {
    width: 100%;
    height: 100%;
    border: 0;
    transition: filter 0.3s ease;
}

/* Filters */
.kd-map-gray iframe { filter: grayscale(100%); }
.kd-map-dark iframe { filter: invert(90%) hue-rotate(180deg) contrast(90%) grayscale(20%); }
.kd-map-sepia iframe { filter: sepia(50%) contrast(1.1); }
.kd-map-muted iframe { filter: opacity(0.85) grayscale(40%); }

.kd-map-hover-color:hover iframe { filter: none; }

/* Loading */
.kd-map-wrapper.kd-is-loading::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(90deg, rgba(255,255,255,0.06), rgba(255,255,255,0.16), rgba(255,255,255,0.06));
    background-size: 220% 100%;
    animation: kd-map-shimmer 1.1s linear infinite;
    z-index: 4;
    pointer-events: none;
}
@keyframes kd-map-shimmer {
    0% { background-position: 220% 0; }
    100% { background-position: -220% 0; }
}

/* --- Custom Pin --- */
.kd-map-pin {
    --kd-pin-color: var(--base-color);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -100%);
    width: 40px;
    height: 40px;
    z-index: 10;
    pointer-events: none;
    filter: drop-shadow(0 6px 10px rgba(0,0,0,0.28));
}

.kd-map-pin::before {
    content: "";
    position: absolute;
    inset: 0;
    background-color: var(--kd-pin-color);
    border-radius: 50% 50% 50% 0;
    transform: rotate(-45deg);
    border: 3px solid rgba(255,255,255,0.95);
}

.kd-map-pin::after {
    content: "";
    position: absolute;
    width: 12px;
    height: 12px;
    background-color: rgba(255,255,255,0.95);
    border-radius: 50%;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -70%);
}

/* Pin pulse */
.kd-map-pin--pulse::marker { content: ""; }

.kd-map-pin--pulse .kd-map-pin-pulse { display: none; }

.kd-map-pin--pulse::selection { background: transparent; }

.kd-map-pin--pulse::before {
    box-shadow: 0 0 0 0 rgba(var(--base-color-rgb), 0.35);
    animation: kd-map-pin-pulse 1.9s infinite;
}

@keyframes kd-map-pin-pulse {
    0% { box-shadow: 0 0 0 0 rgba(var(--base-color-rgb), 0.35); }
    100% { box-shadow: 0 0 0 16px rgba(var(--base-color-rgb), 0); }
}

/* Pin bounce */
.kd-map-pin.kd-animate-bounce {
    animation: kd-map-pin-bounce 2s infinite ease-in-out;
}
@keyframes kd-map-pin-bounce {
    0%, 100% { transform: translate(-50%, -100%); }
    50% { transform: translate(-50%, -120%); }
}

/* --- Location Card Overlay --- */
.kd-map-card {
    --kd-map-card-bg: var(--white);
    --kd-map-card-color: var(--medium-gray);
    --kd-map-card-title: var(--dark-gray);
    --kd-map-card-border: 1px solid rgba(0,0,0,0.08);
    --kd-map-card-shadow: 0 18px 60px rgba(0,0,0,0.18);

    position: absolute;
    top: 20px;
    left: 20px;
    background: var(--kd-map-card-bg);
    color: var(--kd-map-card-color);
    padding: 22px;
    border-radius: var(--radius-4);
    box-shadow: var(--kd-map-card-shadow);
    border: var(--kd-map-card-border);
    max-width: 320px;
    z-index: 10;
}

.kd-map-card h5 {
    margin: 0 0 10px 0;
    font-weight: 900;
    color: var(--kd-map-card-title);
    font-size: 1rem;
}

.kd-map-card p {
    margin: 0;
    font-size: 0.9rem;
    line-height: 1.55;
    color: var(--kd-map-card-color);
}

.kd-map-card .kd-btn-link {
    margin-top: 12px;
    display: inline-block;
    font-size: 0.85rem;
    font-weight: 800;
    color: var(--base-color);
    text-decoration: none;
}
.kd-map-card .kd-btn-link:hover { text-decoration: underline; }

/* Card themes */
.kd-map-card--minimal {
    --kd-map-card-bg: rgba(255,255,255,0.98);
    --kd-map-card-border: 1px solid rgba(0,0,0,0.10);
    --kd-map-card-shadow: 0 14px 46px rgba(0,0,0,0.12);
}

.kd-map-card--glass {
    --kd-map-card-bg: rgba(255,255,255,0.68);
    --kd-map-card-border: 1px solid rgba(255,255,255,0.55);
    --kd-map-card-shadow: 0 20px 70px rgba(0,0,0,0.18);
}
@supports (backdrop-filter: blur(10px)) {
    .kd-map-card--glass {
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }
}

.kd-map-card--neon {
    --kd-map-card-bg: rgba(0,0,0,0.86);
    --kd-map-card-color: rgba(255,255,255,0.75);
    --kd-map-card-title: rgba(255,255,255,0.92);
    --kd-map-card-border: 1px solid rgba(0,255,240,0.25);
    --kd-map-card-shadow: 0 0 18px rgba(0,255,240,0.10), 0 22px 80px rgba(0,0,0,0.45);
}

.kd-map-card--neon .kd-btn-link {
    color: #00fff0;
}

/* --- Controls Overlay --- */
.kd-map-controls {
    position: absolute;
    right: 16px;
    top: 16px;
    z-index: 10;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.kd-map-btn {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    border: 1px solid rgba(0,0,0,0.10);
    background: rgba(255,255,255,0.92);
    color: rgba(15,23,42,0.85);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform 0.25s var(--kd-map-ease), box-shadow 0.25s var(--kd-map-ease), background-color 0.25s ease, border-color 0.25s ease;
    box-shadow: 0 10px 30px rgba(0,0,0,0.12);
}

.kd-map-btn:hover {
    transform: translateY(-2px);
    border-color: rgba(var(--base-color-rgb), 0.25);
    box-shadow: 0 18px 46px rgba(0,0,0,0.18);
}

.kd-map-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px rgba(var(--base-color-rgb), 0.18), 0 18px 46px rgba(0,0,0,0.18);
}

/* --- Click to Interact Shield --- */
.kd-map-shield {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.02);
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: opacity 0.3s ease;
}

.kd-map-shield span {
    background: rgba(0,0,0,0.78);
    color: #fff;
    padding: 10px 20px;
    border-radius: 30px;
    font-size: 0.85rem;
    font-weight: 800;
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.25s ease, transform 0.25s var(--kd-map-ease);
    pointer-events: none;
}

.kd-map-shield:hover span {
    opacity: 1;
    transform: translateY(0);
}

.kd-map-wrapper.kd-is-active .kd-map-shield {
    display: none;
}

/* --- Map wrapper themes --- */
.kd-map--minimal {
    --kd-map-border: 1px solid rgba(0,0,0,0.10);
    --kd-map-shadow: 0 14px 46px rgba(0,0,0,0.10);
}

.kd-map--glass {
    --kd-map-border: 1px solid rgba(255,255,255,0.45);
    box-shadow: 0 20px 70px rgba(0,0,0,0.16);
}
.kd-map--glass::before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,0.10);
    pointer-events: none;
    z-index: 1;
}
.kd-map--glass :where(.kd-map-pin, .kd-map-card, .kd-map-controls, .kd-map-shield) { z-index: 10; }

.kd-map--neon {
    --kd-map-bg: rgba(0,0,0,0.72);
    --kd-map-border: 1px solid rgba(0,255,240,0.18);
    --kd-map-shadow: 0 0 18px rgba(0,255,240,0.08), 0 22px 80px rgba(0,0,0,0.45);
}
.kd-map--neon .kd-map-btn {
    background: rgba(0,0,0,0.72);
    border-color: rgba(0,255,240,0.20);
    color: rgba(255,255,255,0.90);
    box-shadow: 0 0 14px rgba(0,255,240,0.10), 0 18px 46px rgba(0,0,0,0.35);
}
.kd-map--neon .kd-map-btn:hover {
    border-color: rgba(0,255,240,0.35);
}

/* Responsive */
@media (max-width: 767px) {
    .kd-map-wrapper {
        height: 380px;
    }

    .kd-map-card {
        top: auto;
        left: 10px;
        right: 10px;
        bottom: 10px;
        max-width: none;
    }

    .kd-map-controls {
        right: 10px;
        top: 10px;
    }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .kd-map-pin.kd-animate-bounce,
    .kd-map-pin--pulse::before,
    .kd-map-wrapper.kd-is-loading::after {
        animation: none !important;
    }

    .kd-map-btn,
    .kd-map-shield span,
    .kd-map-wrapper iframe {
        transition: none !important;
        transform: none !important;
    }
}