

/* ============================================================
   DOMENJÓ · Showroom Scanner CSS (extret de la vista)
   Patch: UI 01 · Objectiu: treure CSS inline de Blade
   Nota: NO tocar IDs de càmera (#arVideo, #qrCanvas, #resultOverlay)
   ============================================================ */

/* NO TOCAR (JS càmera): aquí només fem layout responsive */
  :root { --dmj-safe-top: env(safe-area-inset-top, 0px); --dmj-safe-bot: env(safe-area-inset-bottom, 0px); }

  html, body { height: 100%; }
  body { margin: 0; overflow-x: hidden; }

  /* Viewport modern (iOS Safari friendly) */
  .dmj-scanner-stage {
    position: relative;
    width: 100%;
    height: 72vh;              /* fallback */
    height: 72dvh;             /* modern */
    min-height: 320px;
    background: #000;
    border-radius: 16px;
    overflow: hidden;
  }

  /* En mòbil: quasi full-screen */
  @media (max-width: 768px) {
    .dmj-card { padding: 12px; }
    .dmj-scanner-stage {
      height: calc(100dvh - 190px - var(--dmj-safe-top) - var(--dmj-safe-bot));
      min-height: 360px;
      border-radius: 14px;
    }
  }

  /* Vídeo: sempre cobreix l'escena sense deformar */
  #arVideo {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    background: #000;
  }

  /* Overlay centrat i llegible */
  #resultOverlay {
    position: absolute;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 14px;
    pointer-events: none;
  }
  #resultOverlay .dmj-overlay-card {
    pointer-events: auto;
    width: min(520px, 100%);
    max-height: calc(100% - 24px);
    overflow: auto;
  }

  /* Grid d'opcions multi: que baixi bé a mòbil */
  #multiOptions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
  @media (max-width: 420px) {
    #multiOptions { grid-template-columns: 1fr; }
  }

/* ============================================================
     SHOWROOM SCANNER · FULLSCREEN MOBILE (NO SCROLL)
     IMPORTANT:
     - NO TOCAR JS de càmera
     - Aquí només control de layout / viewport
     ============================================================ */

  html, body {
    height: 100%;
    margin: 0;
    overflow: hidden; /* 🔒 bloqueja scroll */
    overscroll-behavior: none;
    touch-action: none;
  }

  body {
    position: fixed; /* evita scroll iOS */
    inset: 0;
    width: 100%;
  }

  /* Contenidor principal */
  .dmj-card {
    padding: 0;
    border-radius: 0;
  }

  .dmj-scanner-shell {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100dvh;  /* viewport real mòbil */
    background: #000;
    overflow: hidden;
  }

  .dmj-scanner-stage {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background: #000;
    overflow: hidden;
  }

  /* Vídeo ocupa TOT */
  #arVideo {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    background: #000;
  }

  /* Overlay sempre dins pantalla */
  #resultOverlay {
    position: absolute;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 16px;
    pointer-events: none;
  }

  #resultOverlay .dmj-overlay-card {
    pointer-events: auto;
    max-height: 100%;
    overflow-y: auto;
  }

/* === DMJ_OVERLAY_NO_CLIP_V1 ===
   Objectiu:
   - Evitar que l'overlay quedi TALLAT per dalt quan la card és alta (iframe / multi)
   - NO tocar JS ni càmera
   Causa:
   - showroom.css posa .dmj-overlay { align-items:flex-end } + stage overflow:hidden => clipping
*/
#resultOverlay.dmj-overlay{
  /* força centrat vertical (evita flex-end) */
  align-items: center !important;
  justify-content: center !important;

  /* padding amb safe-areas */
  padding-top: max(env(safe-area-inset-top, 0px), 14px) !important;
  padding-bottom: max(env(safe-area-inset-bottom, 0px), 14px) !important;
}

#resultOverlay.dmj-overlay .dmj-overlay-card{
  /* la card mai pot ser més alta que el contenidor; scroll intern */
  max-height: calc(100% - 28px) !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
}
/* === /DMJ_OVERLAY_NO_CLIP_V1 === */

/* === DMJ_OVERLAY_FIXED_NO_CLIP_V1 ===
   Objectiu: que l'overlay NO quedi tallat per l'overflow:hidden de .dmj-scanner-stage
   - NO toca JS ni càmera
   - Porta #resultOverlay a viewport (fixed)
*/
#resultOverlay{
  position: fixed !important;
  inset: 0 !important;
  z-index: 99990 !important;
}

/* Manté el “dim” i el layout dins viewport */
#resultOverlay.dmj-overlay{
  align-items: center !important;
  justify-content: center !important;
  padding-top: max(env(safe-area-inset-top, 0px), 14px) !important;
  padding-bottom: max(env(safe-area-inset-bottom, 0px), 14px) !important;
}

/* Card: mai més alta que la pantalla; scroll intern */
#resultOverlay .dmj-overlay-card{
  max-height: calc(100dvh - max(env(safe-area-inset-top, 0px), 14px) - max(env(safe-area-inset-bottom, 0px), 14px) - 28px) !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
}

/* IMPORTANT: clicks només dins la card */
#resultOverlay{ pointer-events: none; }
#resultOverlay .dmj-overlay-card{ pointer-events: auto; }
/* === /DMJ_OVERLAY_FIXED_NO_CLIP_V1 === */

/* ============================================================
   DMJ_OVERLAY_BOTTOM_SHEET_V1
   Objectiu:
   - MULTI amb moltes opcions (6+)
   - iframe usable
   - NO tallar
   - NO tocar JS ni càmera
   ============================================================ */

/* Overlay ocupa viewport però no bloqueja càmera */
#resultOverlay {
  position: fixed !important;
  inset: 0 !important;
  z-index: 99990 !important;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  background: rgba(0,0,0,0.35);
}

/* Card com a bottom sheet */
#resultOverlay .dmj-overlay-card {
  width: 100%;
  max-width: 720px;
  max-height: calc(100dvh - env(safe-area-inset-top) - 12px);
  background: rgba(38,30,14,0.92);
  border-radius: 16px 16px 0 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding-bottom: max(env(safe-area-inset-bottom), 16px);
}

/* MULTI grid escalable */
#multiOptions {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px;
}

/* Botó tancar sempre visible */
.dmj-multi-close {
  position: sticky;
  bottom: 0;
  background: linear-gradient(to top, rgba(38,30,14,0.95), rgba(38,30,14,0.7));
  padding-top: 10px;
}

/* IMPORTANT: interacció només dins la card */
#resultOverlay { pointer-events: none; }
#resultOverlay .dmj-overlay-card { pointer-events: auto; }

/* ============================================================ */
