/* /assets/css/components/user/presence-hover-assets.css */
.presence-tip{position:absolute;bottom:calc(100% + 6px);right:0;min-width:max-content;max-width:220px;
  background:#1f2430;color:#fff;font-size:.72rem;line-height:1.3;padding:6px 10px;border-radius:8px;
  box-shadow:0 4px 14px rgba(0,0,0,.18);opacity:0;visibility:hidden;pointer-events:none;
  transform:translateX(var(--tip-shift,0px)) translateY(4px);transition:opacity .15s ease,transform .15s ease;z-index:60;white-space:nowrap;}
.presence-tip::after{content:'';position:absolute;top:100%;right:10px;border:5px solid transparent;
  border-top-color:#1f2430;}
.presence-tip.is-open{opacity:1;visibility:visible;transform:translateX(var(--tip-shift,0px)) translateY(0);pointer-events:none;}
.presence-tip.presence-tip--flip{right:auto;left:0;}
.presence-tip.presence-tip--flip::after{right:auto;left:10px;}
.presence-tip.presence-tip--flip-v{bottom:auto;top:calc(100% + 6px);transform:translateX(var(--tip-shift,0px)) translateY(-4px);}
.presence-tip.presence-tip--flip-v.is-open{transform:translateX(var(--tip-shift,0px)) translateY(0);}
.presence-tip.presence-tip--flip-v::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:#1f2430;}
.presence-badge--label{position:relative;}
.presence-badge--label .presence-tip{right:auto;left:0;}
.presence-badge--label .presence-tip::after{right:auto;left:10px;}
.presence-tip-dots{display:inline-flex;align-items:center;gap:3px;}
.presence-tip-dots span{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.35;
  animation:presenceWave 1s infinite ease-in-out;}
.presence-tip-dots span:nth-child(2){animation-delay:.15s;}
.presence-tip-dots span:nth-child(3){animation-delay:.3s;}
@keyframes presenceWave{0%,60%,100%{opacity:.35;transform:translateY(0);}30%{opacity:1;transform:translateY(-2px);}}
.presence-tip-text{opacity:0;animation:presenceFadeIn .18s ease forwards;}
@keyframes presenceFadeIn{to{opacity:1;}}

/* /assets/themes/bazaar/assets/css/components/layout/pwa-install.css */
  .pwa-modal{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-end;justify-content:center;
    background:rgba(36,16,22,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
    opacity:0;transition:opacity .22s ease;}
  .pwa-modal.is-open{opacity:1;}
  .pwa-modal.hidden{display:none!important;} /* beat this component's own display:flex when closed */
  @media (min-width:480px){.pwa-modal{align-items:center;padding:1rem;}}
  .pwa-sheet{position:relative;width:100%;max-width:440px;background:linear-gradient(180deg,var(--paper-2),var(--paper));
    color:var(--ink);border:1px solid var(--rule);border-bottom:0;border-radius:22px 22px 0 0;
    padding:1.6rem 1.35rem calc(1.35rem + env(safe-area-inset-bottom));
    box-shadow:0 -24px 60px -24px rgba(36,16,22,.55);
    transform:translateY(24px);opacity:.6;transition:transform .26s cubic-bezier(.2,.8,.2,1),opacity .26s ease;}
  .pwa-sheet::before{content:'';position:absolute;top:0;inset-inline:22px;height:2px;pointer-events:none;
    background:linear-gradient(90deg,transparent,var(--bz-gold),transparent);opacity:.8;}
  .pwa-modal.is-open .pwa-sheet{transform:translateY(0);opacity:1;}
  @media (min-width:480px){.pwa-sheet{border-bottom:1px solid var(--rule);border-radius:22px;transform:translateY(8px) scale(.97);}}
  .pwa-sheet__grip{display:block;width:40px;height:4px;border-radius:99px;background:var(--bz-gold);opacity:.55;margin:-.4rem auto 1rem;}
  @media (min-width:480px){.pwa-sheet__grip{display:none;}}
  .pwa-x{position:absolute;top:.75rem;inset-inline-end:.85rem;width:34px;height:34px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;font-size:1.35rem;line-height:1;
    color:var(--ink-soft);background:transparent;transition:background .15s ease,color .15s ease;}
  .pwa-x:hover{background:color-mix(in srgb,var(--bz-gold) 16%,transparent);color:var(--ink);}
  .pwa-brand{display:flex;align-items:center;gap:.9rem;margin-bottom:1rem;padding-inline-end:1.5rem;}
  .pwa-brand__icon{border-radius:14px;border:1px solid var(--bz-gold);flex:0 0 auto;object-fit:contain;background:var(--paper);}
  .pwa-brand__title{font-family:var(--font-display,'Marcellus',serif);font-size:1.25rem;font-weight:600;line-height:1.1;color:var(--ink);margin:0;}
  .pwa-brand__desc{font-size:.83rem;line-height:1.45;color:var(--ink-soft);margin:.25rem 0 0;}
  .pwa-benefits{list-style:none;margin:0 0 1.25rem;padding:0;display:flex;flex-direction:column;gap:.5rem;}
  .pwa-benefits li{position:relative;padding-inline-start:1.7rem;font-size:.85rem;color:var(--ink-2);}
  .pwa-benefits li::before{content:'\2726';position:absolute;inset-inline-start:0;top:0;color:var(--bz-gold);font-size:.9rem;}
  .pwa-cta{width:100%;justify-content:center;}
  .pwa-panel__title{font-family:var(--font-display,'Marcellus',serif);font-weight:600;font-size:1rem;margin:0 0 .4rem;color:var(--ink);}
  .pwa-panel__desc{font-size:.85rem;line-height:1.5;color:var(--ink-soft);margin:0;}
  .pwa-steps{list-style:none;counter-reset:s;margin:0;padding:0;display:flex;flex-direction:column;gap:.7rem;}
  .pwa-steps li{display:flex;align-items:center;gap:.75rem;font-size:.88rem;line-height:1.35;color:var(--ink-2);
    counter-increment:s;background:var(--paper);border:1px solid var(--rule);border-radius:14px;padding:.7rem .85rem;}
  .pwa-steps__ic{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;
    color:var(--ink);background:radial-gradient(130% 130% at 50% 0%,rgba(184,134,47,.14),rgba(184,134,47,.03) 70%);
    border:1px solid var(--bz-gold);position:relative;}
  .pwa-steps__ic::after{content:counter(s);position:absolute;top:-6px;inset-inline-start:-6px;width:18px;height:18px;
    border-radius:50%;font-size:.65rem;font-weight:800;display:flex;align-items:center;justify-content:center;
    color:var(--paper);background:var(--bz-gold);}
  .pwa-steps__txt strong{color:var(--ink);font-weight:700;}
  .pwa-note{font-size:.75rem;color:var(--ink-soft);margin:.75rem 0 0;text-align:center;}
  .pwa-later{display:block;width:100%;margin-top:1rem;padding:.6rem;font-size:.82rem;font-weight:600;
    color:var(--ink-soft);background:transparent;border-radius:12px;transition:color .15s ease;}
  .pwa-later:hover{color:var(--ink);}
  .pwa-toast{position:fixed;inset-inline:0;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:130;
    display:flex;justify-content:center;padding:0 1rem;opacity:0;transform:translateY(12px);
    transition:opacity .3s ease,transform .3s ease;pointer-events:none;}
  .pwa-toast.is-open{opacity:1;transform:translateY(0);}
  .pwa-toast__card{display:flex;align-items:center;gap:.7rem;max-width:360px;width:100%;
    background:var(--paper);color:var(--ink);border:1px solid var(--bz-gold);border-radius:16px;
    padding:.75rem .9rem;box-shadow:0 20px 45px -18px rgba(36,16,22,.5);}
  .pwa-toast__card img{border-radius:10px;flex:0 0 auto;}
  .pwa-toast__title{margin:0;font-weight:700;font-size:.88rem;}
  .pwa-toast__body{margin:.1rem 0 0;font-size:.78rem;color:var(--ink-soft);}

/* /assets/themes/bazaar/assets/css/components/layout/footer.css */
    /* Scalloped awning valance + gilt rule across the top edge of the foot */
    #desktopFooter::before {
      content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; z-index: 2;
      background: linear-gradient(90deg, transparent, var(--bz-gold), transparent);
      opacity: .75; pointer-events: none;
    }
    #desktopFooter::after {                 /* mashrabiya lattice wash */
      content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
      background-image: var(--pattern); opacity: .5;
    }
    #desktopFooter .bz-foot-valance {       /* hanging scallop under the rail */
      position: absolute; top: 0; left: 0; right: 0; height: 9px; z-index: 1; pointer-events: none;
      background: radial-gradient(circle at 9px 0, var(--paper) 8px, transparent 9px) repeat-x;
      background-size: 18px 9px; opacity: .9;
    }

    .ed-footer-heading {
      display: flex; align-items: center; gap: 0.5rem;
      font-family: 'Inter', sans-serif;
      font-size: 10px; font-weight: 700;
      text-transform: uppercase; letter-spacing: 0.16em;
      color: var(--bz-gold);
      padding-bottom: 1rem;
      border-bottom: 1px solid var(--rule);
      margin-bottom: 1rem;
    }
    .ed-footer-heading::before { content: '\25C6'; font-size: 6px; opacity: .85; }
    .ed-footer-link {
      display: inline-flex; align-items: center;
      font-family: 'Inter', sans-serif;
      font-size: 0.875rem; font-weight: 400;
      color: var(--ink-2);
      text-decoration: none;
      transition: color 0.18s ease;
      padding: 0.25rem 0;
      position: relative;
    }
    .ed-footer-link::before {
      content: '';
      width: 0; height: 1px; margin-inline-end: 0;
      background: var(--bz-gold);
      transition: width 0.18s ease, margin-inline-end 0.18s ease;
    }
    .ed-footer-link:hover { color: var(--bz-primary); }
    html.dark .ed-footer-link:hover { color: var(--bz-gold); }
    .ed-footer-link:hover::before { width: 12px; margin-inline-end: 0.45rem; }

    /* Newsletter card — garnet lantern panel, gilt frame + ◆ corner pips */
    .ed-newsletter {
      position: relative;
      background: linear-gradient(150deg, #2f131c 0%, var(--bz-garnet-deep, #7e2138) 65%, var(--bz-garnet, #9c2c46) 120%);
      color: #fbeede;
      border-radius: 1.75rem;
      box-shadow: inset 0 0 0 1px rgba(217,168,60,.28), var(--shadow-md);
      overflow: hidden;
    }
    /* The kernel's dark footer greys reach p/h4 here; the panel keeps its ivory. */
    .ed-newsletter :is(h4, p, label) { color: inherit; }
    html.dark .ed-newsletter .ed-newsletter-input { background: rgba(36,16,22,0.32) !important; color: #fbeede !important; border-color: rgba(217,168,60,0.45) !important; }
    html.dark .ed-newsletter .ed-newsletter-input::placeholder { color: rgba(251,238,222,0.72) !important; }
    .ed-newsletter::before {                /* inner gilt frame */
      content: ''; position: absolute; inset: 10px; border-radius: 1.35rem;
      border: 1px solid rgba(217,168,60,.35); pointer-events: none;
    }
    .ed-newsletter::after {                 /* lantern glow */
      content: ''; position: absolute; top: -40%; inset-inline-end: -10%; width: 60%; height: 160%;
      background: radial-gradient(circle, rgba(217,168,60,.18), transparent 65%); pointer-events: none;
    }
    .bz-news-pip {                          /* ◆ corner pips on the panel */
      position: absolute; z-index: 2; color: var(--bz-gold-strong); font-size: 9px; opacity: .8; pointer-events: none;
    }
    .bz-news-pip.tl { top: 16px; inset-inline-start: 18px; }
    .bz-news-pip.br { bottom: 16px; inset-inline-end: 18px; }
    .ed-newsletter-input {
      background: rgba(255,255,255,0.12);
      color: inherit;
      border: 1px solid rgba(217,168,60,0.4);
      padding: 0.85rem 1.25rem;
      border-radius: 999px;
      font-size: 0.9rem;
      width: 100%;
      transition: border-color 0.18s ease, background 0.18s ease;
    }
    .ed-newsletter-input::placeholder { color: rgba(251,238,222,0.6); }
    .ed-newsletter-input:focus { outline: none; border-color: var(--bz-gold); background: rgba(255,255,255,0.16); }

    .ed-newsletter-btn {
      display: inline-flex; align-items: center; gap: 0.5rem;
      padding: 0.85rem 1.6rem;
      border-radius: 999px;
      background: radial-gradient(120% 120% at 50% 0%, var(--bz-gold-strong), var(--bz-gold));
      color: #241016;
      font-family: 'Inter', sans-serif;
      font-weight: 700; font-size: 0.85rem;
      box-shadow: inset 0 1px 0 rgba(255,255,255,.3);
      transition: transform 0.18s ease, filter 0.18s ease;
    }
    .ed-newsletter-btn:hover { filter: brightness(1.06); transform: translateY(-1px); }

/* Age confirmation on the newsletter form (subscribe.php re-checks it
   server-side). Takes its own full-width row rather than sitting beside the
   button: the form is a flex row on sm+, and a third item there squeezes the
   input at exactly the widths where it is already tightest. */
#newsletter-form { flex-wrap: wrap; }

.ed-newsletter-age {
  flex: 1 0 100%;
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: 0.75rem;
  line-height: 1.45;
  opacity: 0.85;
  cursor: pointer;
}

/* Drawn rather than native: after dark the browser's own box, and the
   kernel's dark input fill, make a filled grey square that on a light
   footer reads as already ticked. */
.ed-newsletter-age input[type="checkbox"] {
  appearance: none; -webkit-appearance: none;
  width: 1rem; height: 1rem; margin: 0.15rem 0 0; flex-shrink: 0; color: inherit !important;
  display: inline-grid; place-content: center;
  border: 1.5px solid currentColor !important; border-radius: 3px; background: transparent !important;
  cursor: pointer;
}
.ed-newsletter-age input[type="checkbox"]:checked {
  background: var(--theme-600, currentColor) !important; border-color: var(--theme-600, currentColor) !important;
}
.ed-newsletter-age input[type="checkbox"]:checked::before {
  content: ''; width: 0.55rem; height: 0.3rem; transform: translateY(-1px) rotate(-45deg);
  border-left: 2px solid var(--paper, #fff); border-bottom: 2px solid var(--paper, #fff);
}
.ed-newsletter-age input[type="checkbox"]:focus-visible { outline: 2px solid var(--theme-600, currentColor); outline-offset: 2px; }

/* /assets/themes/bazaar/assets/css/components/layout/footer-columns.css */
  #desktopFooter .bz-foot-status {
    display: inline-flex; align-items: center; gap: 0.5rem;
    padding: 0.3rem 0.7rem; border-radius: 999px;
    border: 1px solid var(--rule);
    background: rgba(var(--bz-gold-rgb,184,134,47), .06);
    box-shadow: inset 0 1px 0 rgba(217,168,60,.22);
  }
  #desktopFooter .bz-foot-mark { color: var(--bz-gold); font-size: 8px; opacity: .8; }

/* /assets/themes/bazaar/assets/css/components/layout/footer-legal.css */
      .bz-colophon::before {                  /* gilt hairline over the base rule */
        content: ''; position: absolute; top: -1px; inset-inline: 0; height: 1px; pointer-events: none;
        background: linear-gradient(90deg, transparent, var(--bz-gold), transparent); opacity: .5;
      }
      .bz-colophon-dot { color: var(--bz-gold); font-size: 5px; opacity: .7; }
      .bz-colophon-link:hover { color: var(--bz-primary, #9c2c46); }

/* /assets/themes/bazaar/assets/css/components/layout/back-to-top.css */
  #backToTopBtn {
    --bz-arch: polygon(8% 100%, 0 44%, 12% 19%, 50% 0, 88% 19%, 100% 44%, 92% 100%);
    position: fixed;
    inset-inline-end: 1.25rem;
    bottom: calc(env(safe-area-inset-bottom, 0px) + 5.75rem);
    z-index: 40;
    width: 50px; height: 58px;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 0; border: 0; background: transparent; cursor: pointer;
    color: var(--bz-gold-strong);
    font-size: 15px;
    filter: drop-shadow(0 9px 15px rgba(74,30,20,.5));
    opacity: 0; visibility: hidden; transform: translateY(12px);
    transition: opacity .28s ease, transform .28s ease, visibility .28s ease, filter .2s ease;
  }
  #backToTopBtn.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
  #backToTopBtn::before {                 /* gold arch plate (the rim) */
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(180deg, var(--bz-gold-strong), var(--bz-gold));
    clip-path: var(--bz-arch);
  }
  #backToTopBtn::after {                   /* garnet inner arch */
    content: ''; position: absolute; inset: 2px;
    background:
      radial-gradient(120% 90% at 50% 14%, rgba(217,168,60,.32), transparent 55%),
      linear-gradient(160deg, var(--bz-primary-strong), var(--bz-primary));
    clip-path: var(--bz-arch);
  }
  #backToTopBtn .fas { position: relative; z-index: 1; margin-top: 8px; }
  #backToTopBtn:hover { transform: translateY(-3px); filter: drop-shadow(0 12px 18px rgba(74,30,20,.55)) brightness(1.07); }
  #backToTopBtn:active { transform: translateY(-1px); }
  @media (min-width: 1024px) {
    #backToTopBtn { bottom: 1.75rem; inset-inline-end: 1.75rem; }
  }

/* /assets/css/includes/footer/mobile-explore-nav.css */
.ed-mobile-nav {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: 999px;
  padding: 14px 8px 10px;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.22), 0 8px 16px -8px rgba(0,0,0,0.10);
}
html.dark .ed-mobile-nav {
  background: var(--paper-2);
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.5);
}
.ed-mobile-link {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 4px;
  padding: 8px 4px;
  border-radius: 14px;
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 500;
  color: var(--ink-soft);
  text-decoration: none;
  transition: color 0.15s ease, background 0.15s ease;
}
.ed-mobile-link:hover { color: var(--ink); }
.ed-mobile-link.active {
  color: var(--nav-accent, var(--theme-600));
  font-weight: 700;
  background: var(--paper-2);
}
html.dark .ed-mobile-link.active { background: rgba(255,255,255,0.05); }

@supports not (backdrop-filter: blur(1px)) {
  .mobile-glass-header { background: var(--paper) !important; }
}

/* /assets/css/components/layout/header-strip-fit.css */
/* Each theme keeps its desktop status strip on one line (white-space: nowrap
   on .hdr-strip .ed-status and everything in it), which its dropdowns would
   inherit: a long label, or a link assets/js/header-strip-fit.js folded into
   More, then ran past the menu or was cut off by it. A dropdown in the strip
   wraps its labels instead, as wide as its longest one up to a limit. */
.hdr-strip .ed-status .ed-dropdown { width: max-content; min-width: 14rem; max-width: min(22rem, calc(100vw - 2rem)); }
.hdr-strip .ed-status .ed-dropdown, .hdr-strip .ed-status .ed-dropdown * { white-space: normal; text-overflow: clip; }
.hdr-strip .ed-status .ed-dropdown .ed-dropdown-item { overflow-wrap: break-word; }

/* /assets/css/includes/footer/slide-up-animation.css */
@keyframes slide-up { from { transform: translateY(100%); } to { transform: translateY(0); } }
.animate-slide-up { animation: slide-up 0.32s cubic-bezier(0.22, 1, 0.36, 1); }
.safe-area-bottom { padding-bottom: env(safe-area-inset-bottom); }

/* /assets/css/includes/footer/language-suggest.css */
/* The one-time language suggestion (assets/js/includes/footer/language-suggest.js). */
.px-lang-suggest {
  position: fixed;
  z-index: 60;
  left: 16px;
  right: 16px;
  bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  max-width: 560px;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 16px;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--rule, rgba(0, 0, 0, .12));
  background: var(--paper, #fff);
  color: var(--ink, #111);
  box-shadow: 0 10px 30px rgba(0, 0, 0, .18);
  font-size: 15px;
  line-height: 1.4;
}
.px-lang-suggest__text { margin: 0; flex: 1 1 220px; min-width: 0; overflow-wrap: anywhere; }
.px-lang-suggest__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.px-lang-suggest button {
  font: inherit;
  cursor: pointer;
  border-radius: 999px;
  padding: 8px 14px;
  border: 1px solid var(--ink, #111);
}
.px-lang-suggest__accept { background: var(--ink, #111); color: var(--paper, #fff); }
.px-lang-suggest__dismiss { background: transparent; color: var(--ink, #111); }
@media (max-width: 480px) {
  .px-lang-suggest { bottom: calc(76px + env(safe-area-inset-bottom, 0px)); font-size: 14px; }
  .px-lang-suggest__actions { width: 100%; }
  .px-lang-suggest button { flex: 1 1 auto; }
}
@media (prefers-reduced-motion: no-preference) {
  .px-lang-suggest { animation: px-lang-suggest-in .25s ease-out; }
  @keyframes px-lang-suggest-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
}

