/**
 * Drobe site shell — header (promo + nav + mobile menu) and footer.
 * Designed to sit over any page background — primarily white text on
 * brand-tinted backdrops, with a `--solid` variant for white backgrounds.
 */

/* Prevent any third-party widget (chat, snippets, etc.) from causing
   horizontal scroll on mobile. clip on body avoids breaking sticky/GSAP.
   max-width pins the viewport box; position:relative makes the body a
   containing block so absolutely-positioned widgets are clipped too. */
html { overflow-x: hidden; max-width: 100%; }
body { overflow-x: clip; max-width: 100%; position: relative; }

/* Phones: hard-lock horizontal panning so nothing (incl. a rogue fixed chat
   widget) can be dragged sideways. `pan-y pinch-zoom` keeps vertical scroll
   AND pinch-to-zoom (accessibility) while blocking left/right drag. Interactive
   drag surfaces (3D viewer canvas, configurator dials) already set their own
   `touch-action: none`, so they keep working. The home carousels are GSAP /
   CSS-animation marquees, not touch-swiped, so this doesn't affect them.
   IMPORTANT: use `clip`, NOT `hidden`. `overflow-x: hidden` forces the
   computed `overflow-y` to `auto`, turning <body> into a scroll container —
   which breaks the home page's `position: sticky` parallax stage on mobile
   (you'd scroll straight past it). `clip` blocks the same sideways drag
   without creating a scroll container, so the sticky pin survives. */
@media (max-width: 768px) {
    html, body { overflow-x: clip; touch-action: pan-y pinch-zoom; }
}

/* =========================
   HEADER
   ========================= */
.drobe-site-header {
    position: fixed;
    top: 0; left: 0; right: 0;
    z-index: 110;
    color: #fff;
    font-family: Helvetica, Verdana, Arial, sans-serif;
    /* background + shadow animate on solid/scrolled state changes;
       transform + opacity animate the hide-on-scroll / reveal-on-scroll-up behaviour */
    transition: background 0.25s ease, box-shadow 0.25s ease,
                transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                opacity 0.35s ease;
}
/* Fully opaque navy — used on white-background interior pages */
.drobe-site-header.drobe-site-header--solid {
    background: rgba(2, 24, 50, 0.96);
    box-shadow: 0 1px 0 rgba(255,255,255,0.06);
}
/* Scrolled-up reveal state — intentionally no background: header stays fully transparent.
   Class kept in CSS so old markup or edge-case JS still has a known style. */
.drobe-site-header.drobe-site-header--scrolled {
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}
/* Hidden state — slides header off-screen upward when scrolling down */
.drobe-site-header.drobe-site-header--hidden {
    transform: translateY(-100%);
    opacity: 0;
    pointer-events: none;
}

/* ---- Promo banner ---- */
.dsh-promo {
    background: rgba(0,0,0,0.30);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    overflow: hidden;
    height: 30px;
    display: flex; align-items: center;
    border-bottom: 1px solid rgba(255,255,255,0.10);
}
.dsh-promo-marquee {
    display: flex; align-items: center; gap: 32px;
    white-space: nowrap;
    padding-left: 100%;
    animation: dsh-marquee 38s linear infinite;
    font-size: 10px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.85);
}
.dsh-promo-dot { opacity: 0.5; }
@keyframes dsh-marquee {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-100%); }
}

/* ---- Main nav ---- */
.dsh-nav {
    position: relative;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    padding: 14px 52px;
    min-height: 64px;
}
.dsh-nav-list {
    display: flex; list-style: none;
    margin: 0; padding: 0;
    gap: 28px;
    align-items: center;
}
.dsh-nav-list--left  { justify-self: start; }
.dsh-nav-list--right { justify-self: end; }
.dsh-nav-item > a,
.dsh-nav-label {
    color: #fff;
    text-decoration: none;
    font-size: 13px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    font-weight: 500;
    opacity: 0.92;
    transition: opacity 0.18s ease;
}
.dsh-nav-item > a:hover { opacity: 1; }
.dsh-nav-label { cursor: default; }

/* Submenu (Luggage dropdown) */
.dsh-has-sub {
    position: relative;
    /* Hover bridge: extends the hover zone down into the gap so the
       submenu doesn't disappear as the cursor moves toward it */
    padding-bottom: 16px;
    margin-bottom: -16px;
}
.dsh-submenu {
    position: absolute;
    top: calc(100% + 2px);
    left: -8px;
    min-width: 180px;
    list-style: none;
    margin: 0; padding: 12px 0;
    background: rgba(2, 24, 50, 0.96);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 6px;
    opacity: 0; pointer-events: none;
    transform: translateY(-6px);
    transition: opacity 0.18s ease, transform 0.18s ease;
    z-index: 120;
}
.dsh-has-sub:hover .dsh-submenu,
.dsh-has-sub:focus-within .dsh-submenu {
    opacity: 1; pointer-events: auto;
    transform: translateY(0);
}
.dsh-submenu li a {
    display: block;
    padding: 8px 18px;
    color: #fff;
    text-decoration: none;
    font-size: 13px;
    letter-spacing: 0.06em;
    opacity: 0.85;
}
.dsh-submenu li a:hover { opacity: 1; background: rgba(255,255,255,0.06); }
.dsh-submenu-unreleased-item {
    display: block; padding: 8px 18px;
    color: rgba(255,255,255,0.38);
    font-size: 13px; letter-spacing: 0.06em;
    cursor: default;
}
.dsh-not-released {
    display: inline-block; margin-left: 6px;
    font-size: 9px; font-weight: 700; letter-spacing: 0.12em;
    text-transform: uppercase; color: rgba(255,255,255,0.35);
    vertical-align: middle;
}
.dsh-mobile-unreleased {
    padding: 14px 0; color: rgba(255,255,255,0.38);
    font-size: 15px; letter-spacing: 0.04em;
    cursor: default;
}

/* Brand — locked, uniform size everywhere */
.dsh-brand {
    display: inline-flex; align-items: center; justify-content: center;
    color: #fff;
    text-decoration: none;
    line-height: 0;
}
.dsh-brand-mark {
    display: block;
    width: auto !important;
    height: 118px !important;
    max-height: 118px !important;
    transition: opacity 0.2s ease;
}
@media (max-width: 600px) {
    .dsh-brand-mark { height: 84px !important; max-height: 84px !important; }
}
.dsh-brand-mark--dark { display: none; }
.drobe-site-header--solid-light .dsh-brand-mark--light,
.drobe-site-header--light .dsh-brand-mark--light { display: none; }
.drobe-site-header--solid-light .dsh-brand-mark--dark,
.drobe-site-header--light .dsh-brand-mark--dark { display: block; }

/* Desktop-only nav items (hidden on small screens) */
.dsh-desktop-only { display: list-item; }
@media (max-width: 900px) {
    .dsh-desktop-only { display: none; }
}

/* Members link — gold bird icon + hover tooltip (matches live site) */
.dsh-members-li { position: relative; }
.dsh-members {
    display: inline-flex; align-items: center; justify-content: center;
    width: 40px; height: 40px;
    position: relative;
    text-decoration: none;
}
.dsh-members-bird {
    width: 40px; height: 40px;
    object-fit: contain;
    display: block;
    transition: transform 0.2s ease, filter 0.2s ease;
    filter: drop-shadow(0 1px 3px rgba(0,0,0,0.25));
}
.dsh-members:hover .dsh-members-bird,
.dsh-members:focus-visible .dsh-members-bird { transform: translateY(-1px) scale(1.04); }
.dsh-members-tip {
    position: absolute;
    top: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%) translateY(-4px);
    background: #fff;
    color: #060f26;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    white-space: nowrap;
    opacity: 0; pointer-events: none;
    transition: opacity 0.18s ease, transform 0.18s ease;
    box-shadow: 0 6px 18px rgba(0,0,0,0.25);
    z-index: 130;
}
.dsh-members-tip::before {
    content: '';
    position: absolute;
    top: -4px; left: 50%;
    width: 8px; height: 8px;
    background: #fff;
    transform: translateX(-50%) rotate(45deg);
}
.dsh-members:hover .dsh-members-tip,
.dsh-members:focus-visible .dsh-members-tip {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* Basket */
.dsh-basket {
    position: relative;
    display: inline-flex; align-items: center;
    color: #fff;
}
.dsh-basket svg { width: 25px; height: 25px; }
.dsh-basket-count {
    position: absolute;
    top: -6px; right: -10px;
    min-width: 18px; height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: #fff;
    color: #060f26;
    font-size: 10px;
    font-weight: 700;
    display: flex; align-items: center; justify-content: center;
    line-height: 1;
}

/* ---- Mobile burger + menu ---- */
.dsh-mobile-only { display: none; }
.dsh-burger {
    width: 32px; height: 32px;
    background: none; border: 0; padding: 0;
    cursor: pointer;
    display: flex; flex-direction: column; justify-content: center; gap: 5px;
}
.dsh-burger span {
    display: block; width: 22px; height: 1.5px; background: #fff; margin: 0 auto;
    transition: transform 0.2s ease;
}
.dsh-mobile-menu {
    position: fixed; inset: 0;
    background: rgba(2, 24, 50, 0.98);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    z-index: 200;
    display: none;
    padding: 80px 28px 32px;
}
.dsh-mobile-menu.open { display: block; }
.dsh-mobile-close {
    position: absolute;
    top: 18px; right: 22px;
    background: none; border: 0;
    color: #fff;
    font-size: 32px;
    cursor: pointer;
    line-height: 1;
}
.dsh-mobile-list {
    list-style: none; padding: 0; margin: 0;
}
.dsh-mobile-list li {
    border-bottom: 1px solid rgba(255,255,255,0.14);
}
.dsh-mobile-list li a {
    display: block;
    padding: 18px 0;
    color: #fff; text-decoration: none;
    font-size: 18px; font-weight: 500;
    letter-spacing: 0.06em;
}

@media (max-width: 900px) {
    .dsh-nav-list--left  > .dsh-nav-item:not(.dsh-mobile-only) { display: none; }
    .dsh-nav-list--left  > .dsh-nav-item.dsh-mobile-only { display: list-item; }
    .dsh-nav-list--right .dsh-mobile-only { display: list-item; }
    .dsh-nav { padding: 10px 16px; }
    /* Tighten gap so bird + cart sit closer together (bird moves right, away from logo) */
    .dsh-nav-list--right { gap: 14px; }
}

/* =========================
   FOOTER
   ========================= */
.drobe-site-footer {
    background: #0c1830;
    color: rgba(255,255,255,0.85);
    font-family: Helvetica, Verdana, Arial, sans-serif;
    padding: 56px 28px 28px;
    border-top: 1px solid rgba(255,255,255,0.08);
}
.dsf-inner {
    max-width: 1200px; margin: 0 auto;
}
.dsf-cols {
    display: grid; grid-template-columns: 160px 1fr 1fr 2fr; gap: 48px;
    margin-bottom: 40px;
    align-items: start;
}
.dsf-col--brand {
    display: flex;
    align-items: center;
    padding-top: 8px;
}
.dsf-brand-logo {
    width: auto;
    max-height: 110px;
    opacity: 0.9;
    display: block;
}
@media (max-width: 900px) {
    .dsf-cols {
        grid-template-columns: 1fr;
        gap: 32px;
        text-align: center;
    }
    .dsf-col--brand { justify-content: center; }
    .dsf-col ul { display: inline-flex; flex-direction: column; align-items: center; }
    .dsf-news-form { max-width: 100%; }
    .dsf-bottom {
        flex-direction: column;
        align-items: center;
        gap: 16px;
        text-align: center;
    }
}
.dsf-col h4 {
    font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
    color: #fff; margin-bottom: 16px; font-weight: 700;
}
.dsf-col ul { list-style: none; padding: 0; margin: 0; }
.dsf-col li { margin-bottom: 8px; }
.dsf-col li a {
    color: rgba(255,255,255,0.78);
    text-decoration: none;
    font-size: 13px;
    transition: color 0.18s ease;
}
.dsf-col li a:hover { color: #fff; }
.dsf-news-copy {
    font-size: 13px; line-height: 1.6;
    color: rgba(255,255,255,0.78);
    margin-bottom: 16px;
}
.dsf-news-form {
    display: flex; gap: 8px;
    max-width: 480px;
}
.dsf-news-form input {
    flex: 1;
    padding: 12px 16px;
    border: 1px solid rgba(255,255,255,0.4);
    background: transparent;
    color: #fff;
    border-radius: 999px;
    font-size: 13px;
    font-family: inherit;
}
.dsf-news-form input::placeholder { color: rgba(255,255,255,0.55); }
.dsf-news-form button {
    padding: 12px 22px;
    background: #fff;
    color: #060f26;
    border: 0;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.18s ease;
}
.dsf-news-form button:hover { background: rgba(255,255,255,0.85); }
.dsf-bottom {
    border-top: 1px solid rgba(255,255,255,0.12);
    padding-top: 22px;
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 12px;
}
.dsf-copy { font-size: 11px; letter-spacing: 0.06em; color: rgba(255,255,255,0.6); }
.dsf-social { list-style: none; padding: 0; margin: 0; display: flex; gap: 12px; }
.dsf-social li a {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px;
    border: 1px solid rgba(255,255,255,0.4);
    border-radius: 50%;
    color: #fff;
    text-decoration: none;
    font-size: 11px; font-weight: 700; letter-spacing: 0.05em;
    transition: background 0.18s ease;
}
.dsf-social li a:hover { background: rgba(255,255,255,0.12); }

/* ════════════════════════════════════════════════════════════════════════
   LUXURY LAYER (2026-06-11) — micro-interactions, scroll reveals, selection
   ════════════════════════════════════════════════════════════════════════ */

/* Brand text selection — warm gold on navy */
::selection { background: rgba(201, 169, 106, 0.85); color: #0c1830; }

/* CTA micro-interactions — gentle lift on hover, press on click.
   Applied to the brand's known button classes only (never layout-critical). */
.fp-cta, .fpoc-btn, .pp-add-to-cart, .dcu-btn,
.di-faq-cat, .di-support-cta-link, .dsh-basket {
    transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.45s cubic-bezier(0.16, 1, 0.3, 1),
                background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
    will-change: transform;
}
.fp-cta:hover, .fpoc-btn:hover, .pp-add-to-cart:hover, .dcu-btn:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
}
.fp-cta:active, .fpoc-btn:active, .pp-add-to-cart:active, .dcu-btn:active:not(:disabled) {
    transform: translateY(0) scale(0.975);
    transition-duration: 0.12s;
}

/* Sheen sweep across primary CTAs on hover — quiet, one pass */
.fp-cta, .fpoc-btn, .pp-add-to-cart { position: relative; overflow: hidden; }
.fp-cta::after, .fpoc-btn::after, .pp-add-to-cart::after {
    content: '';
    position: absolute; top: 0; bottom: 0; left: -80%;
    width: 50%;
    background: linear-gradient(105deg, transparent 0%, rgba(255,255,255,0.18) 50%, transparent 100%);
    transform: skewX(-18deg);
    transition: left 0.7s cubic-bezier(0.16, 1, 0.3, 1);
    pointer-events: none;
}
.fp-cta:hover::after, .fpoc-btn:hover::after, .pp-add-to-cart:hover::after { left: 130%; }

/* Scroll reveals — elements rise softly into place. JS only hides elements
   that start BELOW the viewport, so nothing visible can ever flash or hide. */
.lux-reveal {
    opacity: 0;
    transform: translateY(26px);
    filter: blur(5px);
}
.lux-reveal.lux-in {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
    transition: opacity 0.85s ease var(--lux-d, 0s),
                transform 1s cubic-bezier(0.16, 1, 0.3, 1) var(--lux-d, 0s),
                filter 0.85s ease var(--lux-d, 0s);
}
@media (prefers-reduced-motion: reduce) {
    .lux-reveal { opacity: 1; transform: none; filter: none; }
    .fp-cta::after, .fpoc-btn::after, .pp-add-to-cart::after { display: none; }
}

/* ════════════════════════════════════════════════════════════════════════
   LUXURY LAYER v2 (2026-06-11) — signature cursor, page veil, brand buttons
   ════════════════════════════════════════════════════════════════════════ */

/* Signature buttons — letterspacing breathes open on hover, soft blue ring */
.fp-cta, .fpoc-btn, .pp-add-to-cart, .dcu-btn {
    letter-spacing: 0.08em;
    transition: transform 0.45s cubic-bezier(0.16,1,0.3,1),
                box-shadow 0.45s cubic-bezier(0.16,1,0.3,1),
                letter-spacing 0.55s cubic-bezier(0.16,1,0.3,1),
                background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}
.fp-cta:hover, .fpoc-btn:hover, .pp-add-to-cart:hover, .dcu-btn:hover:not(:disabled) {
    letter-spacing: 0.16em;
    box-shadow: 0 10px 28px rgba(0,0,0,0.30), 0 0 0 1px rgba(120,170,255,0.35),
                0 0 24px rgba(80,130,220,0.18);
}

/* Custom cursor — desktop fine-pointers only, enabled by JS via .lux-cursor-on */
html.lux-cursor-on, html.lux-cursor-on body,
html.lux-cursor-on a, html.lux-cursor-on button,
html.lux-cursor-on [role="button"], html.lux-cursor-on input, html.lux-cursor-on label {
    cursor: none !important;
}
#lux-cursor-dot, #lux-cursor-ring {
    position: fixed; top: 0; left: 0; z-index: 2147483000;
    pointer-events: none;
    border-radius: 50%;
    will-change: transform;
}
#lux-cursor-dot {
    width: 5px; height: 5px; margin: -2.5px 0 0 -2.5px;
    background: #fff;
    box-shadow: 0 0 8px rgba(120,170,255,0.8);
}
#lux-cursor-ring {
    width: 30px; height: 30px; margin: -15px 0 0 -15px;
    border: 1px solid rgba(140,180,250,0.65);
    transition: width 0.25s ease, height 0.25s ease, margin 0.25s ease,
                border-color 0.25s ease, background 0.25s ease;
}
html.lux-cursor-hover #lux-cursor-ring {
    width: 52px; height: 52px; margin: -26px 0 0 -26px;
    border-color: rgba(201,169,106,0.85);
    background: rgba(120,170,255,0.06);
}
html.lux-cursor-down #lux-cursor-ring { width: 22px; height: 22px; margin: -11px 0 0 -11px; }

/* Page veil — covers navigation gaps in brand navy (bird loader handles product page) */
#lux-veil {
    position: fixed; inset: 0; z-index: 99990;
    background: radial-gradient(ellipse 80% 70% at 50% 45%, #16304f 0%, #0d2240 60%, #081c36 100%);
    opacity: 0; visibility: hidden; pointer-events: none;
    transition: opacity 0.28s ease, visibility 0s linear 0.28s;
}
#lux-veil.on { opacity: 1; visibility: visible; pointer-events: all; transition: opacity 0.22s ease; }

/* Arrive softly — every page breathes in from the navy */
@keyframes lux-arrive { from { opacity: 0; } to { opacity: 1; } }
body { animation: lux-arrive 0.45s ease both; }

/* Branded scrollbar */
::-webkit-scrollbar { width: 11px; }
::-webkit-scrollbar-track { background: #060d18; }
::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, #2a4a7c, #16304f);
    border-radius: 6px; border: 2px solid #060d18;
}
::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, #3a5e96, #1d3a63); }
html { scrollbar-width: thin; scrollbar-color: #2a4a7c #060d18; }

@media (prefers-reduced-motion: reduce) {
    body { animation: none; }
    #lux-veil { display: none; }
}
