/* =========================================================
   DYSONET TECH EXPLORER
   CLEAN / OPTIMIZED FINAL VERSION
   Scope: .dysonet-dte
========================================================= */


/* =========================================================
   ROOT
========================================================= */

.dysonet-dte {
    --dte-accent: var(--dys-accent, #76543b);
    --dte-accent-dark: var(--dys-accent-dark, #3d2b20);
    --dte-accent-soft: var(--dys-accent-soft, rgba(118,84,59,.13));
    --dte-accent-glow: var(--dys-accent-glow, rgba(118,84,59,.25));

    position: relative !important;
    display: block !important;

    width: 100% !important;
    max-width: 1180px !important;

    margin: 48px auto !important;
    padding: 0 !important;

    box-sizing: border-box !important;

    direction: rtl !important;

    color: #181819 !important;

    font-family: inherit !important;

    isolation: isolate !important;
}


.dysonet-dte *,
.dysonet-dte *::before,
.dysonet-dte *::after {
    box-sizing: border-box !important;
}


/* =========================================================
   HEADER
========================================================= */

.dysonet-dte__header {
    width: 100% !important;

    margin: 0 0 22px !important;
    padding: 0 12px !important;

    text-align: center !important;
}


.dysonet-dte__badge {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    margin: 0 0 11px !important;
    padding: 7px 14px !important;

    border: 1px solid rgba(255,255,255,.92) !important;
    border-radius: 999px !important;

    background: rgba(255,255,255,.66) !important;

    box-shadow:
        0 8px 24px rgba(25,30,45,.06),
        inset 0 1px 0 rgba(255,255,255,.98) !important;

    backdrop-filter: blur(14px) !important;
    -webkit-backdrop-filter: blur(14px) !important;

    color: #242426 !important;

    font-family: inherit !important;
    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1.5 !important;
}


.dysonet-dte__header h2 {
    margin: 0 !important;
    padding: 0 !important;

    color: #181819 !important;

    font-family: inherit !important;
    font-size: 28px !important;
    font-weight: 800 !important;
    line-height: 1.55 !important;

    text-align: center !important;
}


.dysonet-dte__header p {
    width: 100% !important;
    max-width: 680px !important;

    margin: 7px auto 0 !important;
    padding: 0 !important;

    color: #76777c !important;

    font-family: inherit !important;
    font-size: 12px !important;
    line-height: 1.9 !important;

    text-align: center !important;
}


/* =========================================================
   MAIN SHELL
   Desktop = Info left / Product right
========================================================= */

.dysonet-dte__shell {
    --dte-shell-radius: 32px;

    position: relative !important;

    display: flex !important;
    flex-direction: row !important;
    align-items: stretch !important;

    width: 100% !important;
    min-height: 530px !important;

    gap: 22px !important;

    margin: 0 !important;
    padding: 22px !important;

    overflow: hidden !important;

    border: 1px solid rgba(255,255,255,.95) !important;
    border-radius: var(--dte-shell-radius) !important;

    background:
        radial-gradient(
            circle at 23% 42%,
            var(--dte-accent-soft) 0%,
            rgba(255,255,255,.08) 35%,
            transparent 62%
        ),
        linear-gradient(
            145deg,
            rgba(255,255,255,.89),
            rgba(238,239,244,.68)
        ) !important;

    box-shadow:
        0 28px 70px rgba(25,30,50,.11),
        inset 0 1px 0 rgba(255,255,255,.98) !important;

    backdrop-filter: blur(22px) saturate(140%) !important;
    -webkit-backdrop-filter: blur(22px) saturate(140%) !important;

    isolation: isolate !important;

    direction: ltr !important;
}


/* =========================================================
   INFO PANEL
========================================================= */

.dysonet-dte__panel {
    position: relative !important;
    z-index: 4 !important;

    display: flex !important;
    flex: 0 0 37% !important;

    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    direction: rtl !important;
}


.dysonet-dte__panel-inner {
    --dte-panel-radius: 25px;

    position: relative !important;

    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: flex-start !important;

    width: 100% !important;
    min-height: 100% !important;

    margin: 0 !important;
    padding: 32px !important;

    overflow: hidden !important;

    border: 1px solid rgba(255,255,255,.96) !important;
    border-radius: var(--dte-panel-radius) !important;

    background:
        linear-gradient(
            145deg,
            rgba(255,255,255,.76),
            rgba(255,255,255,.50)
        ) !important;

    box-shadow:
        0 18px 45px rgba(25,30,50,.08),
        inset 0 1px 0 rgba(255,255,255,.98) !important;

    backdrop-filter: blur(18px) saturate(135%) !important;
    -webkit-backdrop-filter: blur(18px) saturate(135%) !important;

    text-align: right !important;
}


/* =========================================================
   COUNTER
========================================================= */

.dysonet-dte__counter {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;

    width: 100% !important;

    gap: 4px !important;

    margin: 0 0 22px !important;

    direction: ltr !important;

    color: #929398 !important;

    font-family: inherit !important;
    font-size: 11px !important;
    font-weight: 700 !important;
}


/* =========================================================
   TECH ICON
   JS needs it, visually hidden
========================================================= */

.dysonet-dte__icon {
    position: absolute !important;

    width: 1px !important;
    height: 1px !important;

    overflow: hidden !important;

    opacity: 0 !important;

    pointer-events: none !important;
}


/* =========================================================
   PANEL TEXT
========================================================= */

.dysonet-dte__title {
    display: block !important;

    width: 100% !important;

    margin: 0 0 12px !important;
    padding: 0 !important;

    color: #181819 !important;

    font-family: inherit !important;
    font-size: 23px !important;
    font-weight: 800 !important;
    line-height: 1.7 !important;

    text-align: right !important;
}


.dysonet-dte__description {
    display: block !important;

    width: 100% !important;

    margin: 0 !important;
    padding: 0 !important;

    color: #6d6e73 !important;

    font-family: inherit !important;
    font-size: 13px !important;
    font-weight: 400 !important;
    line-height: 2.05 !important;

    text-align: right !important;
}


/* =========================================================
   NEXT BUTTON
========================================================= */

.dysonet-dte__next {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    gap: 8px !important;

    width: auto !important;

    margin: 25px 0 0 !important;
    padding: 11px 18px !important;

    border: 1px solid rgba(255,255,255,.96) !important;
    border-radius: 999px !important;

    outline: 0 !important;

    background: rgba(255,255,255,.78) !important;

    color: #181819 !important;

    box-shadow:
        0 9px 25px rgba(30,35,60,.08),
        inset 0 1px 0 rgba(255,255,255,.98) !important;

    backdrop-filter: blur(12px) !important;
    -webkit-backdrop-filter: blur(12px) !important;

    appearance: none !important;
    -webkit-appearance: none !important;

    font-family: inherit !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    line-height: 1.5 !important;

    cursor: pointer !important;

    transition:
        transform .2s ease,
        box-shadow .2s ease !important;
}


@media (hover: hover) and (pointer: fine) {
    .dysonet-dte__next:hover {
        transform: translateY(-2px) !important;

        box-shadow:
            0 13px 31px rgba(30,35,60,.12),
            inset 0 1px 0 rgba(255,255,255,.98) !important;
    }
}


/* =========================================================
   PRODUCT VISUAL
========================================================= */

.dysonet-dte__visual {
    position: relative !important;
    z-index: 2 !important;

    display: flex !important;
    flex: 1 1 63% !important;

    align-items: center !important;
    justify-content: center !important;

    min-width: 0 !important;
    min-height: 486px !important;

    margin: 0 !important;
    padding: 0 !important;

    overflow: hidden !important;

    border-radius: 25px !important;

    direction: ltr !important;
}


.dysonet-dte__visual::before {
    content: "" !important;

    position: absolute !important;
    z-index: 0 !important;

    top: 50% !important;
    left: 50% !important;

    width: 470px !important;
    height: 470px !important;

    transform: translate(-50%, -50%) !important;

    border-radius: 50% !important;

    background:
        radial-gradient(
            circle,
            var(--dte-accent-glow) 0%,
            var(--dte-accent-soft) 34%,
            rgba(255,255,255,.08) 52%,
            transparent 72%
        ) !important;

    filter: blur(12px) !important;

    opacity: .78 !important;

    pointer-events: none !important;
}


/* =========================================================
   PRODUCT STAGE
========================================================= */

.dysonet-dte__stage {
    position: relative !important;
    z-index: 2 !important;

    display: block !important;

    width: 100% !important;
    max-width: 590px !important;

    height: 480px !important;

    margin: 0 auto !important;
    padding: 0 !important;

    overflow: visible !important;
}


.dysonet-dte__image {
    position: absolute !important;
    z-index: 2 !important;

    inset: 0 !important;

    display: block !important;

    width: 100% !important;
    height: 100% !important;

    max-width: none !important;
    max-height: none !important;

    margin: 0 !important;
    padding: 0 !important;

    border: 0 !important;

    object-fit: contain !important;
    object-position: center !important;

    transform: scale(1.13) !important;
    transform-origin: center !important;

    pointer-events: none !important;

    user-select: none !important;
    -webkit-user-select: none !important;
}


/* =========================================================
   HOTSPOTS
========================================================= */

.dysonet-dte__point {
    position: absolute !important;
    z-index: 20 !important;

    left: var(--dte-x) !important;
    top: var(--dte-y) !important;

    display: flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: 24px !important;
    height: 24px !important;

    margin: 0 !important;
    padding: 0 !important;

    transform: translate(-50%, -50%) !important;

    border: 1px solid rgba(255,255,255,.95) !important;
    border-radius: 50% !important;

    outline: none !important;

    background: rgba(40,40,42,.88) !important;

    color: #fff !important;

    box-shadow:
        0 4px 12px rgba(0,0,0,.20),
        inset 0 1px 0 rgba(255,255,255,.22) !important;

    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;

    appearance: none !important;
    -webkit-appearance: none !important;

    overflow: visible !important;

    cursor: pointer !important;

    touch-action: manipulation !important;

    transition:
        transform .18s ease,
        box-shadow .18s ease,
        background .18s ease !important;
}


@media (hover: hover) and (pointer: fine) {
    .dysonet-dte__point:hover {
        transform:
            translate(-50%, -50%)
            scale(1.06) !important;
    }
}


/* =========================================================
   PERFECT PLUS
========================================================= */

.dysonet-dte__plus {
    position: absolute !important;

    inset: 0 !important;

    display: block !important;

    width: 100% !important;
    height: 100% !important;

    margin: 0 !important;
    padding: 0 !important;

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

    opacity: 1 !important;

    pointer-events: none !important;
}


.dysonet-dte__plus::before,
.dysonet-dte__plus::after {
    content: "" !important;

    position: absolute !important;

    top: 50% !important;
    left: 50% !important;

    border-radius: 3px !important;

    background: #fff !important;

    transform: translate(-50%, -50%) !important;

    opacity: 1 !important;

    transition: opacity .16s ease !important;
}


.dysonet-dte__plus::before {
    width: 10px !important;
    height: 1.5px !important;
}


.dysonet-dte__plus::after {
    width: 1.5px !important;
    height: 10px !important;
}


/* =========================================================
   ACTIVE HOTSPOT
   Dyson-style target
========================================================= */

.dysonet-dte__point.dte-active {
    background: rgba(32,32,34,.95) !important;

    transform: translate(-50%, -50%) !important;

    box-shadow:
        0 4px 13px rgba(0,0,0,.24) !important;
}


/* + disappears */

.dysonet-dte__point.dte-active .dysonet-dte__plus::before,
.dysonet-dte__point.dte-active .dysonet-dte__plus::after {
    opacity: 0 !important;
}


/* target outer ring */

.dysonet-dte__point.dte-active::before {
    content: "" !important;

    position: absolute !important;

    top: 50% !important;
    left: 50% !important;

    display: block !important;

    width: 16px !important;
    height: 16px !important;

    transform: translate(-50%, -50%) !important;

    border: 1.5px solid rgba(255,255,255,.98) !important;
    border-radius: 50% !important;

    background: transparent !important;

    opacity: 1 !important;

    animation: none !important;

    pointer-events: none !important;
}


/* target inner ring */

.dysonet-dte__point.dte-active::after {
    content: "" !important;

    position: absolute !important;

    top: 50% !important;
    left: 50% !important;

    display: block !important;

    width: 9px !important;
    height: 9px !important;

    transform: translate(-50%, -50%) !important;

    border: 1px solid rgba(255,255,255,.98) !important;
    border-radius: 50% !important;

    background: transparent !important;

    opacity: 1 !important;

    pointer-events: none !important;
}


/* =========================================================
   HOTSPOT LABELS
========================================================= */

.dysonet-dte__label {
    position: absolute !important;

    top: 50% !important;

    display: flex !important;
    align-items: center !important;

    min-width: max-content !important;

    transform: translateY(-50%) !important;

    color: #666 !important;

    font-family: inherit !important;
    font-size: 9px !important;
    font-weight: 500 !important;
    line-height: 1.45 !important;

    white-space: nowrap !important;

    opacity: .9 !important;

    pointer-events: none !important;
}


/* connecting line */

.dysonet-dte__label::before {
    content: "" !important;

    position: absolute !important;

    top: 50% !important;

    width: 42px !important;
    height: 1px !important;

    transform: translateY(-50%) !important;

    background: rgba(70,70,70,.52) !important;

    pointer-events: none !important;
}


/* LEFT */

.dysonet-dte__label--left {
    right: calc(100% + 57px) !important;
}


.dysonet-dte__label--left::before {
    left: calc(100% + 7px) !important;
}


/* RIGHT */

.dysonet-dte__label--right {
    left: calc(100% + 57px) !important;
}


.dysonet-dte__label--right::before {
    right: calc(100% + 7px) !important;
}


/* active label */

.dysonet-dte__point.dte-active .dysonet-dte__label {
    padding: 6px 10px !important;

    border-radius: 3px !important;

    background: rgba(36,36,38,.95) !important;

    color: #fff !important;

    box-shadow:
        0 5px 14px rgba(0,0,0,.12) !important;

    opacity: 1 !important;
}


/* =========================================================
   TOUCH ZONE
========================================================= */

.dysonet-dte__point > .dte-touch-zone {
    position: absolute !important;

    top: 50% !important;
    left: 50% !important;

    width: 34px !important;
    height: 34px !important;

    transform: translate(-50%, -50%) !important;

    border: 0 !important;

    background: transparent !important;

    pointer-events: auto !important;
}


/* =========================================================
   PANEL CHANGE ANIMATION
========================================================= */

.dysonet-dte__panel-inner.dte-changing {
    animation: dtePanelChange .26s ease !important;
}


@keyframes dtePanelChange {

    0% {
        opacity: .45;
        transform: translateY(7px);
    }

    100% {
        opacity: 1;
        transform: translateY(0);
    }
}


/* =========================================================
   OPTIONAL HINT
========================================================= */

.dysonet-dte__hint {
    display: none !important;
}


/* =========================================================
   TABLET
========================================================= */

@media (max-width: 900px) {

    .dysonet-dte__shell {
        flex-direction: column-reverse !important;

        min-height: 0 !important;

        direction: rtl !important;
    }


    .dysonet-dte__panel {
        flex: 0 0 auto !important;

        width: 100% !important;
    }


    .dysonet-dte__panel-inner {
        min-height: 245px !important;
    }


    .dysonet-dte__visual {
        width: 100% !important;

        min-height: 440px !important;
    }


    .dysonet-dte__stage {
        height: 440px !important;
    }

}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 600px) {

    .dysonet-dte {
        margin: 26px auto !important;
        padding: 0 8px !important;
    }


    /* ---------- HEADER ---------- */

    .dysonet-dte__header {
        margin-bottom: 10px !important;
        padding: 0 6px !important;
    }


    .dysonet-dte__badge {
        margin-bottom: 7px !important;
        padding: 5px 10px !important;

        font-size: 8px !important;
    }


    .dysonet-dte__header h2 {
        font-size: 18px !important;
        line-height: 1.45 !important;
    }


    .dysonet-dte__header p {
        margin-top: 3px !important;

        font-size: 9px !important;
        line-height: 1.65 !important;
    }


    /* ---------- SHELL ---------- */

    .dysonet-dte__shell {
        min-height: 0 !important;
        height: auto !important;

        gap: 7px !important;

        padding: 7px !important;

        --dte-shell-radius: 20px;
        border-radius: var(--dte-shell-radius) !important;
    }


    /* ---------- VISUAL ---------- */

    .dysonet-dte__visual {
        width: 100% !important;

        height: 325px !important;

        display: flex !important;
        align-items: center !important;
        justify-content: center !important;

        margin: 0 !important;
        padding: 0 !important;

        overflow: visible !important;

        --dte-panel-radius: 16px;
        border-radius: var(--dte-panel-radius) !important;
    }


    .dysonet-dte__visual::before {
        width: 300px !important;
        height: 300px !important;

        filter: blur(9px) !important;
    }


    .dysonet-dte__stage {
        width: 325px !important;
        height: 325px !important;

        margin: 0 auto !important;
        padding: 0 !important;
    }


    .dysonet-dte__image {
        width: 100% !important;
        height: 100% !important;

        object-fit: contain !important;
        object-position: center !important;

        transform: none !important;
    }


    /* ---------- HOTSPOTS ---------- */

    .dysonet-dte__point {
        left: var(--dte-mx, var(--dte-x)) !important;
        top: var(--dte-my, var(--dte-y)) !important;

        width: 20px !important;
        height: 20px !important;
    }


    .dysonet-dte__plus::before {
        width: 7px !important;
        height: 1.2px !important;
    }


    .dysonet-dte__plus::after {
        width: 1.2px !important;
        height: 7px !important;
    }


    .dysonet-dte__point.dte-active::before {
        width: 13px !important;
        height: 13px !important;
    }


    .dysonet-dte__point.dte-active::after {
        width: 7px !important;
        height: 7px !important;
    }


    /* large invisible mobile tap area */

    .dysonet-dte__point > .dte-touch-zone {
        width: 46px !important;
        height: 46px !important;
    }


    /* ---------- MOBILE LABELS ---------- */

    .dysonet-dte__label {
        display: flex !important;

        max-width: 92px !important;

        padding: 4px 5px !important;

        font-size: 7px !important;
        line-height: 1.35 !important;

        white-space: normal !important;

        user-select: none !important;
        -webkit-user-select: none !important;

        pointer-events: auto !important;

        cursor: pointer !important;

        touch-action: manipulation !important;
    }


    .dysonet-dte__label::before {
        width: 20px !important;
    }


    .dysonet-dte__label--left {
        right: calc(100% + 31px) !important;

        text-align: right !important;
    }


    .dysonet-dte__label--left::before {
        left: calc(100% + 5px) !important;
    }


    .dysonet-dte__label--right {
        left: calc(100% + 31px) !important;

        text-align: left !important;
    }


    .dysonet-dte__label--right::before {
        right: calc(100% + 5px) !important;
    }


    .dysonet-dte__point.dte-active .dysonet-dte__label {
        padding: 4px 6px !important;

        font-size: 7px !important;

        border-radius: 3px !important;
    }


    /* ---------- PANEL ---------- */

    .dysonet-dte__panel {
        min-height: 0 !important;
        height: auto !important;
    }


    .dysonet-dte__panel-inner {
        min-height: 0 !important;
        height: auto !important;

        padding: 15px !important;

        border-radius: 16px !important;
    }


    .dysonet-dte__counter {
        margin-bottom: 7px !important;

        font-size: 9px !important;
    }


    .dysonet-dte__title {
        margin-bottom: 6px !important;

        font-size: 16px !important;
        line-height: 1.55 !important;
    }


    .dysonet-dte__description {
        font-size: 10px !important;
        line-height: 1.8 !important;
    }


    .dysonet-dte__next {
        margin-top: 11px !important;
        padding: 8px 13px !important;

        font-size: 9px !important;
    }

}


/* =========================================================
   VERY SMALL MOBILE
========================================================= */

@media (max-width: 380px) {

    .dysonet-dte {
        padding: 0 5px !important;
    }


    .dysonet-dte__visual {
        height: 300px !important;
    }


    .dysonet-dte__stage {
        width: 300px !important;
        height: 300px !important;
    }


    .dysonet-dte__label {
        max-width: 76px !important;

        font-size: 6.5px !important;
    }

}


/* =========================================================
   KEYBOARD FOCUS
========================================================= */

.dysonet-dte__next:focus-visible,
.dysonet-dte__point:focus-visible {
    outline: 2px solid var(--dte-accent-dark) !important;
    outline-offset: 3px !important;
}


/* =========================================================
   REDUCED MOTION
========================================================= */

@media (prefers-reduced-motion: reduce) {

    .dysonet-dte__point,
    .dysonet-dte__next,
    .dysonet-dte__plus::before,
    .dysonet-dte__plus::after {
        transition: none !important;
    }


    .dysonet-dte__panel-inner.dte-changing {
        animation: none !important;
    }

}

