/* ---------------------------------------------------------------
   Historias (David 2026-07-19) — riel de anillos, visor de pantalla
   completa, modal de subida, panel de "quién vio" y sección de Besties.
   --------------------------------------------------------------- */

.story-rail{ display:flex; gap:14px; overflow-x:auto; padding:14px 2px 18px; margin-bottom:8px; -webkit-overflow-scrolling:touch; }
.story-rail::-webkit-scrollbar{ display:none; }
.story-ring-item{ display:flex; flex-direction:column; align-items:center; gap:6px; flex-shrink:0; width:68px; cursor:pointer; background:none; border:none; padding:0; }
.story-ring{ width:60px; height:60px; border-radius:50%; padding:2.5px; display:flex; align-items:center; justify-content:center; background:var(--card-border); }
.story-ring.has-unseen{ background:linear-gradient(135deg, var(--accent), #ffc84a, var(--accent-soft)); }
.story-ring.seen{ background:var(--card-border); }
.story-ring img{ width:100%; height:100%; border-radius:50%; object-fit:cover; display:block; border:2.5px solid var(--bg-dark, #17181c); }
.story-ring-label{ font-size:11px; color:var(--text-muted); max-width:68px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.story-ring-add{ position:relative; }
.story-ring-add-badge{ position:absolute; bottom:2px; right:2px; width:19px; height:19px; border-radius:50%; background:var(--accent); color:#fff; display:flex; align-items:center; justify-content:center; border:2px solid var(--bg-dark, #17181c); font-size:14px; line-height:1; }

/* anillo alrededor del avatar del encabezado de perfil (/perfil/) */
.public-avatar.has-story{ cursor:pointer; }
.public-avatar.has-story img{ box-shadow:0 0 0 3px var(--accent), 0 0 0 6px var(--bg-dark,#17181c); border-radius:50%; }
.public-avatar.has-story.seen img{ box-shadow:0 0 0 3px var(--card-border), 0 0 0 6px var(--bg-dark,#17181c); }
/* Marco amarillo para historias de Besties (David 2026-07-21: "para las
   historias de besties... los demás deben ver el marco amarillo") — solo
   se aplica si el viewer puede ver al menos una historia de besties en el
   set ya filtrado por visible_to() del backend (si no eres bestie, esas
   historias ni siquiera llegan en la respuesta, así que nunca ves amarillo
   por algo que no puedes ver). */
.public-avatar.has-story.besties img{ box-shadow:0 0 0 3px #f7c531, 0 0 0 6px var(--bg-dark,#17181c); }
.public-avatar.has-story.besties.seen img{ box-shadow:0 0 0 3px var(--card-border), 0 0 0 6px var(--bg-dark,#17181c); }

/* Anillo de historia genérico, sin tamaño fijo (David 2026-07-21: "en
   cualquier parte de la página debe aparecer... el marco rojo") — a
   diferencia de .public-avatar.has-story (solo para el avatar grande del
   propio /perfil/), esta clase se le puede poner a CUALQUIER avatar chico
   del sitio (posts, comentarios, listas de personas, chat…) sin forzar
   border-radius, respeta la forma que ya tenga cada avatar. Ver
   DCStories.wireAvatarStoryRings() en dcc-stories.js. */
.dcc-story-ring{ cursor:pointer; }
.dcc-story-ring img{ box-shadow:0 0 0 2px var(--accent), 0 0 0 4px var(--bg-dark,#17181c); }
.dcc-story-ring.besties img{ box-shadow:0 0 0 2px #f7c531, 0 0 0 4px var(--bg-dark,#17181c); }
.dcc-story-ring.seen img{ box-shadow:0 0 0 2px var(--card-border), 0 0 0 4px var(--bg-dark,#17181c); }

/* destacadas en el perfil */
.story-highlights{ display:flex; gap:14px; overflow-x:auto; padding:4px 2px 16px; -webkit-overflow-scrolling:touch; }
.story-highlights::-webkit-scrollbar{ display:none; }
.story-highlight-item{ display:flex; flex-direction:column; align-items:center; gap:6px; flex-shrink:0; width:64px; cursor:pointer; background:none; border:none; padding:0; }
.story-highlight-thumb{ width:58px; height:58px; border-radius:50%; overflow:hidden; border:1.5px solid var(--card-border); }
.story-highlight-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.story-highlight-label{ font-size:11px; color:var(--text-muted); max-width:64px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* Categorías de destacadas con nombre (David 2026-07-21) — mismo círculo,
   el primer ítem "Nueva" solo aparece para el dueño del perfil. */
.story-highlight-thumb.new-category{ display:flex; align-items:center; justify-content:center; background:var(--card-bg); border:1.5px dashed var(--card-border); color:var(--text-muted); }
.story-category-name-overlay{ position:relative; }

.new-highlight-overlay{ position:fixed; inset:0; background:rgba(0,0,0,.75); z-index:9999; display:flex; align-items:center; justify-content:center; padding:24px; }
.new-highlight-card{ background:var(--bg-dark-1,#16161c); border-radius:16px; width:100%; max-width:340px; padding:22px; }
.new-highlight-card h3{ font-family:var(--font-heading); font-size:17px; margin:0 0 16px; text-align:center; }
.new-highlight-card-wide{ max-width:420px; max-height:82vh; display:flex; flex-direction:column; }

/* Picker de historias (archivo + activas) para elegir cuáles entran en la
   nueva categoría de destacadas (David 2026-07-21) — grilla 3 columnas,
   selección múltiple con check en la esquina, mismo lenguaje visual que el
   grid de perfil. */
.highlight-picker-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:4px; overflow-y:auto; flex:1; min-height:80px; }
.highlight-picker-tile{ position:relative; aspect-ratio:1/1; border-radius:8px; overflow:hidden; border:none; padding:0; cursor:pointer; background:var(--card-bg); }
.highlight-picker-tile img, .highlight-picker-tile video{ width:100%; height:100%; object-fit:cover; display:block; }
.highlight-picker-check{ position:absolute; top:5px; right:5px; width:20px; height:20px; border-radius:50%; background:rgba(0,0,0,.5); border:1.5px solid rgba(255,255,255,.7); display:flex; align-items:center; justify-content:center; color:transparent; }
.highlight-picker-tile.selected{ outline:2.5px solid var(--accent); outline-offset:-2.5px; }
.highlight-picker-tile.selected .highlight-picker-check{ background:var(--accent); border-color:var(--accent); color:#fff; }

/* visor de pantalla completa */
.story-viewer-overlay{ position:fixed; inset:0; background:#000; z-index:10000; display:flex; align-items:center; justify-content:center; }
/* David 2026-07-22: "las historias deben ser a huevo 9:16" — revierte la
   decisión anterior (object-fit:contain, "no recortar el contenido").
   BUG encontrado 2026-07-23 (David, capturas "BUG HISTORIAS PC"): la
   versión anterior fijaba `height` explícito (min(100vh, ...)) Y ADEMÁS
   recortaba `width` con max-width por separado — dos ejes independientes
   que en monitores de escritorio anchos (100vh cabe de sobra) dejaban al
   navegador estirar el alto a 100vh completo mientras el ancho seguía
   limitado a 420px, rompiendo la proporción 9:16 real (la tarjeta quedaba
   más alta de lo que le tocaba, así que por dentro se veía "a pantalla
   completa" en vez de una tarjeta 9:16 con barras negras a los lados).
   Fix: un solo eje (width) definido con min() de los 3 topes posibles
   (420px, 100vw, y el ancho que haría el alto = 100vh), height:auto deja
   que aspect-ratio derive el alto DE ESE ancho ya resuelto — matemáticamente
   nunca puede exceder 100vh, así que la proporción 9:16 se cumple siempre
   sin importar qué tan ancho sea el monitor. Ya no hace falta la media
   query aparte para mobile, el min() ya incluye 100vw. */
.story-viewer-card{
  position:relative; aspect-ratio:9/16;
  width:min(420px, 100vw, calc(100vh * 9 / 16)); height:auto;
  background:#000; display:flex; flex-direction:column;
}
.story-progress-row{ display:flex; gap:4px; padding:calc(10px + env(safe-area-inset-top)) calc(10px + env(safe-area-inset-right)) 0 calc(10px + env(safe-area-inset-left)); }
.story-progress-seg{ flex:1; height:2.5px; background:rgba(255,255,255,.3); border-radius:2px; overflow:hidden; }
.story-progress-fill{ height:100%; width:0%; background:#fff; }
.story-progress-seg.done .story-progress-fill{ width:100%; }
.story-viewer-header{ display:flex; align-items:center; gap:10px; padding:10px calc(14px + env(safe-area-inset-right)) 10px calc(14px + env(safe-area-inset-left)); color:#fff; }
/* Atribución de reposteo (David 2026-07-21) */
.story-reshare-badge{ display:flex; align-items:center; gap:5px; width:fit-content; margin:0 0 8px calc(14px + env(safe-area-inset-left)); padding:4px 10px; background:rgba(255,255,255,.15); border-radius:999px; color:#fff; font-size:11.5px; font-weight:600; text-decoration:none; }
.story-viewer-header img{ width:32px; height:32px; border-radius:50%; object-fit:cover; }
.story-viewer-header .sv-name{ font-weight:700; font-size:14px; flex:1; }
.story-viewer-header .sv-time{ font-size:12px; opacity:.7; }
.story-viewer-close{ background:none; border:none; color:#fff; cursor:pointer; padding:4px; opacity:.85; }
.story-mute-btn{ background:none; border:none; color:#fff; cursor:pointer; padding:4px; opacity:.85; flex-shrink:0; }
.story-viewer-media{ flex:1; position:relative; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.story-viewer-media img, .story-viewer-media video{ width:100%; height:100%; object-fit:cover; }
.story-tap-zone{ position:absolute; top:0; bottom:0; width:33%; z-index:2; }
.story-tap-zone.left{ left:0; padding-left:env(safe-area-inset-left); }
.story-tap-zone.right{ right:0; padding-right:env(safe-area-inset-right); }
.story-viewer-footer{ padding:12px calc(14px + env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left)); display:flex; align-items:center; justify-content:space-between; gap:10px; }
.story-viewer-badge{ font-size:11.5px; padding:3px 9px; border-radius:999px; color:#fff; }
.story-viewer-badge.public{ background:rgba(255,255,255,.15); }
.story-viewer-badge.besties{ background:rgba(247,2,6,.5); }
.story-viewers-btn{ display:flex; align-items:center; gap:6px; background:rgba(255,255,255,.12); color:#fff; border:none; border-radius:999px; padding:7px 14px; font-size:13px; cursor:pointer; }
.story-highlight-toggle{ background:rgba(255,255,255,.12); color:#fff; border:none; border-radius:999px; padding:7px 12px; font-size:13px; cursor:pointer; display:flex; align-items:center; gap:6px; }
.story-highlight-toggle.active{ background:linear-gradient(135deg,#fff3b0,#ffd76a); color:#1a1a1a; }
.story-delete-btn{ background:rgba(255,255,255,.12); color:#ffc9c9; border:none; border-radius:999px; padding:7px 10px; font-size:13px; cursor:pointer; }

/* panel de "quién vio" — y TODOS los demás sheets de historias (más
   opciones, comentarios, configuración, stickers, destinos): mismo
   componente .story-viewers-sheet/.story-viewers-panel en todos lados, así
   que la rayita de "tómame y desliza" (David: "como en instagram") y el
   swipe-down-to-close se resuelven una sola vez acá para todos, sin tocar
   cada función que crea un sheet. Ver wireSheetSwipeDismiss() en dcc-stories.js. */
.story-viewers-sheet{ position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:10001; display:flex; align-items:flex-end; justify-content:center; }
.story-viewers-panel{ background:var(--card-bg,#1c1d22); width:100%; max-width:420px; border-radius:16px 16px 0 0; padding:18px; padding-bottom:calc(18px + env(safe-area-inset-bottom)); max-height:60vh; overflow-y:auto; touch-action:none; }
.story-viewers-panel::before{ content:''; display:block; width:36px; height:4px; border-radius:2px; background:var(--card-border); margin:0 auto 14px; }
.story-viewers-panel h3{ margin:0 0 12px; font-size:15px; color:var(--text-light); }
/* Sheets con GUI real (David 2026-07-23: "todo debe de tener un gui") —
   reemplazan los prompt() nativos que había en preguntas/encuestas/
   ubicación/nombre de categoría destacada. touch-action:none heredado de
   .story-viewers-panel se anula acá para que SÍ se pueda escribir/seleccionar
   texto dentro del campo (el padre lo desactiva para su propio swipe-to-
   dismiss, pero el input necesita sus gestos normales). */
.story-text-input{ width:100%; padding:11px 14px; border-radius:10px; border:1px solid var(--card-border); background:var(--bg-dark-2); color:var(--text-light); font-family:var(--font-body); font-size:16px; touch-action:auto; resize:vertical; }
.story-text-input:focus{ outline:none; border-color:var(--accent); }
.flow-poll-option-row{ display:flex; align-items:center; gap:8px; margin-top:8px; }
.flow-poll-option-input{ flex:1; }
.flow-poll-option-remove{ background:none; border:none; color:var(--text-muted); cursor:pointer; font-size:13px; padding:4px; }
.flow-poll-add-btn{ background:none; border:none; color:var(--accent-soft); font-size:13px; font-weight:700; cursor:pointer; padding:10px 2px 0; }
.story-viewer-row{ display:flex; align-items:center; gap:10px; padding:7px 0; }
.story-viewer-row img{ width:32px; height:32px; border-radius:50%; object-fit:cover; }
.story-viewer-row span{ font-size:13.5px; color:var(--text-light); }

/* modal de subida */
.story-upload-overlay{ position:fixed; inset:0; background:rgba(0,0,0,.7); z-index:10001; display:flex; align-items:center; justify-content:center; padding:20px; }
.story-upload-card{ background:var(--card-bg,#1c1d22); border-radius:16px; padding:22px; width:100%; max-width:380px; }
.story-upload-card h3{ margin:0 0 14px; font-size:16px; color:var(--text-light); }
.story-upload-preview{ width:100%; max-width:200px; aspect-ratio:9/16; margin:0 auto 12px; border-radius:10px; overflow:hidden; background:var(--bg-dark-2); display:flex; align-items:center; justify-content:center; }
.story-upload-preview img, .story-upload-preview video{ width:100%; height:100%; object-fit:cover; }
.story-upload-error{ color:#ffc9c9; font-size:12.5px; margin-top:8px; }

/* caption + @menciones (David 2026-07-21) */
.story-caption{ position:absolute; left:14px; right:14px; bottom:16px; z-index:3; color:#fff; font-size:14.5px; line-height:1.4; text-shadow:0 1px 3px rgba(0,0,0,.6); pointer-events:none; }
.story-caption a{ color:#fff; font-weight:700; pointer-events:auto; text-decoration:underline; }
.story-more-btn{ background:none; border:none; color:#fff; cursor:pointer; padding:4px 8px; opacity:.85; font-size:20px; line-height:1; flex-shrink:0; }
.story-comment-btn{ display:flex; align-items:center; gap:6px; background:rgba(255,255,255,.12); color:#fff; border:none; border-radius:999px; padding:7px 14px; font-size:13px; cursor:pointer; }
/* Respuesta a historia por DM (David 2026-07-21): "muy sutil, sin fondos,
   solo bordes" — nada de la pastilla rellena que llevaba antes. */
.story-reply-form{ flex:1; display:flex; gap:8px; background:none; border:1px solid rgba(255,255,255,.5); border-radius:999px; padding:2px 4px 2px 14px; }
.story-reply-form input{ flex:1; background:none; border:none; color:#fff; font-size:13.5px; outline:none; }
.story-reply-form input::placeholder{ color:rgba(255,255,255,.75); }
.story-reply-form button{ background:none; border:none; color:#fff; cursor:pointer; padding:6px; display:flex; }

/* menú "Más" (David 2026-07-21) — dropdown anclado al botón ⋯, NO un
   lightbox de pantalla completa. Reusa el look de .post-menu-dropdown
   (dcc-posts.css) pero es su propio elemento porque vive fuera del header
   del visor, con position:fixed calculado a mano (ver openMoreMenu()). */
.story-more-dropdown{
  position:fixed; z-index:10003; background:var(--bg-dark-2,#131316); border:1px solid var(--card-border);
  border-radius:12px; min-width:220px; overflow:hidden; box-shadow:0 12px 28px -8px rgba(0,0,0,.6);
}
.story-more-item{ display:flex; align-items:center; gap:12px; width:100%; text-align:left; padding:11px 14px; background:none; border:none; color:var(--text-light); font-size:13.5px; cursor:pointer; }
.story-more-item:hover{ background:rgba(255,255,255,.06); }
.story-more-item.danger{ color:#f87171; }

/* pestañas Vistas/Estadísticas */
.story-insights-tabs{ display:flex; gap:6px; margin-bottom:14px; }
.story-insights-tabs button{ flex:1; display:flex; align-items:center; justify-content:center; gap:6px; padding:8px; border-radius:10px; border:1px solid var(--card-border); background:none; color:var(--text-muted); font-size:12.5px; font-weight:700; cursor:pointer; }
.story-insights-tabs button.active{ background:var(--accent); border-color:var(--accent); color:#fff; }
.story-stats-block{ margin-bottom:16px; }
.story-stats-block h4{ display:flex; align-items:center; gap:6px; font-size:12.5px; text-transform:uppercase; letter-spacing:.3px; color:var(--text-muted); margin-bottom:8px; }
.story-stats-row{ display:flex; justify-content:space-between; padding:6px 0; font-size:13.5px; color:var(--text-light); border-top:1px solid var(--card-border); }
.story-stats-row:first-of-type{ border-top:none; }

/* comentarios */
.story-comment-form{ display:flex; gap:8px; margin-top:12px; padding-top:12px; border-top:1px solid var(--card-border); }
.story-comment-form input{ flex:1; padding:9px 12px; border-radius:999px; border:1px solid var(--card-border); background:var(--bg-dark-2); color:var(--text-light); font-size:13.5px; }
.story-comment-form button{ background:var(--accent); border:none; border-radius:50%; width:36px; height:36px; display:flex; align-items:center; justify-content:center; color:#fff; cursor:pointer; flex-shrink:0; }

/* configuración de historia — auto-contenido, no depende del <style> de la página que abrió el visor */
.story-settings-panel{ max-height:80vh; }
.story-settings-panel .dcc-label{ display:block; font-size:12.5px; font-weight:700; color:var(--text-muted); text-transform:uppercase; letter-spacing:.4px; margin:14px 0 6px; }
.story-settings-panel .dcc-label:first-child{ margin-top:0; }
.story-settings-panel .dcc-input, .story-settings-panel select{ width:100%; padding:10px 12px; border-radius:10px; border:1px solid var(--card-border); background:var(--bg-dark-2); color:var(--text-light); font-size:13.5px; margin-bottom:8px; box-sizing:border-box; }
.story-settings-panel .dcc-btn{ padding:9px 16px; border-radius:10px; border:1px solid var(--card-border); background:var(--bg-dark-2); color:var(--text-light); font-size:13px; font-weight:700; cursor:pointer; white-space:nowrap; }
.story-settings-panel input[type="checkbox"]{ width:16px; height:16px; flex-shrink:0; }

/* ===================================================================
   Cámara de Historias/Dangs + vista previa (David 2026-07-21)
   =================================================================== */
.story-capture-overlay{
  position:fixed; inset:0; background:#000; z-index:10002;
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
.story-capture-overlay video, .story-capture-overlay > img{
  width:100%; height:100%; object-fit:cover;
}
#capture-camera-error{
  position:absolute; inset:0; z-index:1; display:flex; align-items:center; justify-content:center;
  text-align:center; color:#fff; padding:0 30px; font-size:14px; background:#111;
}
.capture-overlay-layer{ position:absolute; inset:0; z-index:3; }
.capture-overlay-layer > *{ pointer-events:auto; }

.capture-top-bar{
  position:absolute; top:0; left:0; right:0; z-index:5; display:flex; align-items:center; gap:10px;
  padding:calc(14px + env(safe-area-inset-top)) calc(14px + env(safe-area-inset-right)) 10px calc(14px + env(safe-area-inset-left));
}
.capture-top-bar > button{ background:rgba(0,0,0,.35); border:none; color:#fff; border-radius:50%; width:38px; height:38px; display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0; }
.capture-top-bar > button.active{ background:#ffd76a; color:#1a1a1a; }
.capture-top-bar > .preview-mode-label{ flex:1; text-align:center; color:#fff; font-weight:800; font-size:13px; text-transform:uppercase; letter-spacing:.4px; }
#capture-close, #capture-flash{ margin-right:auto; }
#capture-close:first-child + #capture-flash{ margin-right:0; }
#capture-settings{ margin-left:auto; }

.capture-side-tools{
  position:absolute; left:calc(10px + env(safe-area-inset-left)); top:50%; transform:translateY(-50%); z-index:5;
  display:flex; flex-direction:column; gap:16px;
}
.capture-side-tools button, .capture-vertical-menu button{
  background:rgba(0,0,0,.35); border:none; color:#fff; border-radius:50%; width:38px; height:38px;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
}
.capture-side-tools button.active{ background:var(--accent); }

.capture-vertical-menu{
  position:absolute; top:calc(60px + env(safe-area-inset-top)); right:calc(10px + env(safe-area-inset-right)); z-index:5;
  display:flex; flex-direction:column; gap:14px;
}
.capture-vertical-menu button.active{ background:var(--accent); }

.capture-bottom{
  position:absolute; left:0; right:0; bottom:0; z-index:5;
  padding:0 calc(14px + env(safe-area-inset-right)) calc(20px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left));
}
.capture-mode-tabs{ display:flex; justify-content:center; gap:20px; margin-bottom:16px; }
.capture-mode-tabs button{ background:none; border:none; color:rgba(255,255,255,.6); font-size:12.5px; font-weight:700; cursor:pointer; padding:4px 2px; }
.capture-mode-tabs button.active{ color:#fff; border-bottom:2px solid #fff; }
.capture-shutter-row{ display:flex; align-items:center; justify-content:space-between; }
.capture-side-btn{ background:rgba(255,255,255,.15); border:none; color:#fff; border-radius:10px; width:44px; height:44px; display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0; }
.capture-shutter{
  width:72px; height:72px; border-radius:50%; border:4px solid #fff; background:rgba(255,255,255,.25);
  display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0; touch-action:none;
}
.capture-shutter-ring{ width:56px; height:56px; border-radius:50%; background:#fff; transition:background .15s, border-radius .15s; }
.capture-shutter.recording .capture-shutter-ring{ background:var(--accent); border-radius:14px; width:40px; height:40px; }

.capture-text-overlay{
  position:absolute; transform:translate(-50%,-50%); color:#fff; font-size:22px; font-weight:800;
  text-shadow:0 1px 4px rgba(0,0,0,.6); padding:6px 10px; cursor:move; outline:none; max-width:80%;
  text-align:center; touch-action:none; font-family:var(--font-body); transition:opacity .15s;
}

/* Gestos unificados de texto/stickers (David 2026-07-21) — ver
   wireElementGestures() en dcc-stories.js. .over-trash es el feedback
   visual mientras un elemento está sobre la zona de basura (se encoge y
   atenúa, para que quede claro que soltar ahí lo borra). */
.capture-text-overlay.over-trash, .capture-mention-sticker.over-trash,
.capture-location-sticker.over-trash, .capture-poll-sticker.over-trash,
.capture-questions-sticker.over-trash{ opacity:.4; }
.capture-trash-zone{
  position:absolute; left:50%; bottom:calc(110px + env(safe-area-inset-bottom)); transform:translateX(-50%);
  width:52px; height:52px; border-radius:50%; background:rgba(0,0,0,.55); border:1.5px solid rgba(255,255,255,.3);
  color:#fff; display:flex; align-items:center; justify-content:center; z-index:6;
  opacity:0; pointer-events:none; transition:opacity .15s, transform .15s, background .15s;
}
.capture-trash-zone.visible{ opacity:1; }
.capture-trash-zone.armed{ background:var(--accent); transform:translateX(-50%) scale(1.25); border-color:var(--accent); }

/* Barra de color/tipografía de texto (David 2026-07-21: "cambiarlo de
   color al que sea... elegir tipografías... con una prueba en Aa") —
   flota abajo, arriba de la barra de modo/obturador. */
.capture-text-toolbar{
  position:absolute; left:0; right:0; bottom:calc(150px + env(safe-area-inset-bottom));
  z-index:7; padding:10px 14px; display:flex; flex-direction:column; gap:10px;
}
.text-toolbar-row{ display:flex; gap:8px; overflow-x:auto; padding-bottom:2px; }
.text-color-swatch{ flex-shrink:0; width:30px; height:30px; border-radius:50%; border:2px solid rgba(255,255,255,.5); cursor:pointer; padding:0; }
.text-color-native{ flex-shrink:0; width:30px; height:30px; border-radius:50%; border:2px solid rgba(255,255,255,.5); padding:0; background:conic-gradient(red,yellow,lime,cyan,blue,magenta,red); cursor:pointer; }
.text-font-row{ gap:10px; }
.text-font-btn{
  flex-shrink:0; display:flex; flex-direction:column; align-items:center; gap:2px;
  background:rgba(0,0,0,.5); border:1.5px solid rgba(255,255,255,.25); border-radius:10px;
  color:#fff; padding:6px 12px; font-size:17px; cursor:pointer; min-width:56px;
}
.text-font-btn span{ font-size:9.5px; font-family:var(--font-body); color:rgba(255,255,255,.75); }
.text-font-btn.active{ border-color:var(--accent); background:rgba(247,2,6,.25); }
.capture-mention-sticker{
  position:absolute; transform:translate(-50%,-50%); background:rgba(0,0,0,.55); color:#fff; font-weight:700;
  font-size:15px; padding:6px 14px; border-radius:999px; cursor:move; touch-action:none;
}
.capture-location-sticker{
  position:absolute; transform:translate(-50%,-50%); background:rgba(0,0,0,.55); color:#fff; font-weight:700;
  font-size:13.5px; padding:6px 14px; border-radius:999px; cursor:move; touch-action:none;
  display:flex; align-items:center; gap:5px;
}
.capture-poll-sticker{
  position:absolute; transform:translate(-50%,-50%); background:#fff; color:#1a1a1a; border-radius:16px;
  padding:12px 16px; cursor:move; touch-action:none; min-width:200px; text-align:center;
}
.capture-poll-sticker strong{ display:block; margin-bottom:8px; font-size:14px; }
.capture-poll-opt{ display:block; background:var(--bg-dark-2,#f1f1f1); border-radius:999px; padding:6px 10px; margin-top:6px; font-size:12.5px; }
.capture-questions-sticker{
  position:absolute; transform:translate(-50%,-50%); background:rgba(0,0,0,.55); color:#fff; font-weight:700;
  font-size:13.5px; padding:8px 16px; border-radius:14px; cursor:move; touch-action:none;
  display:flex; align-items:center; gap:6px;
}

/* Vistas en el visor real (no en captura) — ubicación + encuesta interactiva */
.story-location-badge{
  position:absolute; top:14px; left:14px; z-index:3; background:rgba(0,0,0,.5); color:#fff;
  display:flex; align-items:center; gap:5px; font-size:12px; font-weight:600; padding:5px 12px; border-radius:999px;
}
.story-poll-widget{
  position:absolute; left:50%; top:45%; transform:translate(-50%,-50%); z-index:3; background:#fff; color:#1a1a1a;
  border-radius:16px; padding:16px 18px; min-width:220px; max-width:80%; box-shadow:0 10px 30px -8px rgba(0,0,0,.5);
}
.story-poll-question{ font-weight:800; font-size:14.5px; margin-bottom:10px; text-align:center; }
.story-poll-option{
  /* Bug real (David 2026-07-21: "se ven ambas opciones en negro y texto en
     negro") — .story-poll-widget es un cuadro BLANCO a propósito (mismo
     look en Historias y Dangs), pero estos botones usaban
     var(--bg-dark-2)/var(--card-border) del tema oscuro del sitio en vez
     de un "," de respaldo real — esas variables SÍ existen globalmente, así
     que el respaldo nunca se activaba: fondo oscuro + color:inherit
     (heredado del widget, también oscuro) = texto invisible. Colores fijos
     acá, no variables del tema oscuro. */
  display:block; width:100%; background:#f1f1f1; border:1px solid #ddd; border-radius:999px;
  padding:9px 14px; margin-top:8px; font-size:13.5px; font-weight:700; cursor:pointer; color:#1a1a1a;
}
.story-poll-option:hover{ border-color:var(--accent); }
.story-poll-result{ display:flex; align-items:center; gap:8px; margin-top:8px; font-size:12.5px; font-weight:700; }
.story-poll-bar{ flex:1; height:8px; border-radius:999px; background:#eee; overflow:hidden; }
.story-poll-bar-fill{ height:100%; background:var(--accent); }
.story-poll-total{ text-align:center; font-size:11.5px; color:#888; margin-top:8px; }
.capture-draw-canvas{ position:absolute; inset:0; width:100%; height:100%; touch-action:none; cursor:crosshair; }
.draw-toolbar{
  position:absolute; left:0; right:0; bottom:0; z-index:6; display:flex; align-items:center; gap:10px;
  background:rgba(0,0,0,.6); padding:10px 14px calc(10px + env(safe-area-inset-bottom));
}
.draw-toolbar input[type="color"]{ width:30px; height:30px; border:none; background:none; padding:0; flex-shrink:0; }
.draw-toolbar input[type="range"]{ flex:1; }
.draw-toolbar #draw-eraser{ background:rgba(255,255,255,.15); border:none; color:#fff; border-radius:8px; width:32px; height:32px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.draw-toolbar #draw-eraser.active{ background:var(--accent); }

/* vista previa */
.story-preview-overlay .capture-top-bar{ z-index:6; }
.preview-bottom{
  position:absolute; left:0; right:0; bottom:0; z-index:5;
  padding:0 calc(14px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left));
}
.preview-caption-row{ margin-bottom:12px; }
.preview-caption-row input{ width:100%; padding:11px 14px; border-radius:999px; border:none; background:rgba(255,255,255,.15); color:#fff; font-size:14px; }
.preview-caption-row input::placeholder{ color:rgba(255,255,255,.65); }
.preview-publish-row{ display:flex; align-items:center; gap:14px; }
.preview-dest-btn{ background:none; border:none; color:#fff; display:flex; flex-direction:column; align-items:center; gap:4px; font-size:11px; cursor:pointer; }
.preview-dest-icon{ width:48px; height:48px; border-radius:50%; background:rgba(255,255,255,.15); display:flex; align-items:center; justify-content:center; overflow:hidden; }
.preview-dest-icon.besties{ background:var(--accent); }
.preview-dest-arrow{ margin-left:auto; width:44px; height:44px; border-radius:50%; background:var(--accent); border:none; color:#fff; display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0; }
.preview-more-row{ position:absolute; left:0; right:0; bottom:120px; z-index:5; display:flex; justify-content:center; gap:10px; padding:0 14px; flex-wrap:wrap; }
.preview-more-row button{ display:flex; align-items:center; gap:6px; background:rgba(0,0,0,.55); border:none; color:#fff; border-radius:999px; padding:8px 14px; font-size:12.5px; cursor:pointer; }
.preview-more-row button.active{ background:var(--accent); }

/* ===================================================================
   Publicación de Dang: recorte + pantalla de publicación (David 2026-07-21)
   =================================================================== */
.dang-trim-strip{ background:rgba(255,255,255,.08); border-radius:14px; padding:12px 14px; margin-bottom:14px; overflow-x:auto; }
.dang-trim-strip input[type="range"]{ width:100%; margin:4px 0; }
.dang-trim-label{ color:rgba(255,255,255,.8); font-size:12px; display:block; text-align:center; }

.dang-publish-overlay{ position:fixed; inset:0; background:var(--bg-dark,#0b0b0f); z-index:10003; overflow-y:auto; }
.dang-publish-scroll{ max-width:480px; margin:0 auto; padding-bottom:40px; }
.dang-thumb-picker{ padding:0 16px 10px; }
.dang-thumb-picker video{ width:100%; border-radius:14px; max-height:280px; object-fit:contain; background:#000; display:block; }
.dang-thumb-picker input[type="range"]{ width:100%; margin-top:8px; }
.dang-publish-form{ padding:6px 16px 20px; display:flex; flex-direction:column; gap:10px; }
.dang-publish-form textarea{ font-family:var(--font-body); resize:vertical; }
.dang-pub-actions{ display:flex; gap:8px; }
.dang-pub-action-btn{ flex:1; display:flex; flex-direction:column; align-items:center; gap:4px; background:var(--bg-dark-2); border:1px solid var(--card-border); border-radius:12px; padding:10px 6px; color:var(--text-light); font-size:11.5px; cursor:pointer; }
.dang-pub-action-btn:hover{ border-color:var(--accent); }
.dang-hashtag-suggest{ display:none; flex-wrap:wrap; gap:6px; }
.dang-hashtag-chip{ background:var(--bg-dark-2); border:1px solid var(--card-border); border-radius:999px; padding:5px 12px; font-size:12.5px; color:var(--text-light); cursor:pointer; }
.dang-hashtag-chip:hover{ border-color:var(--accent); color:var(--accent-soft); }
.dang-poll-chip, .dang-collab-preview .bestie-chip{ display:inline-flex; align-items:center; gap:6px; background:var(--bg-dark-2); border:1px solid var(--card-border); border-radius:999px; padding:6px 12px; font-size:12.5px; color:var(--text-light); margin-right:6px; }
.dang-poll-chip button{ background:none; border:none; color:var(--text-muted); cursor:pointer; padding:0; }

/* besties (editar-perfil) */
.besties-list{ display:flex; flex-wrap:wrap; gap:10px; margin:10px 0 16px; }
.bestie-chip{ display:flex; align-items:center; gap:8px; background:var(--bg-dark-2); border:1px solid var(--card-border); border-radius:999px; padding:5px 12px 5px 5px; }
.bestie-chip img{ width:26px; height:26px; border-radius:50%; object-fit:cover; }
.bestie-chip span{ font-size:13px; color:var(--text-light); }
.bestie-chip button{ background:none; border:none; color:var(--text-muted); cursor:pointer; padding:2px; display:flex; }
.bestie-chip.candidate{ cursor:pointer; }
.bestie-chip.candidate button{ color:var(--accent-soft); }
