@charset "UTF-8";/* Overlay shown on an image node while its upload is in-flight (spinner) or has
   failed (retry / remove). Tokens only; flat (in-flow, no shadow). */
._overlay_i61ry_3 {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 8px;
  text-align: center;
  border-radius: var(--r-sm);
}

._uploading_i61ry_17 {
  background: var(--glass-fill-strong);
  -webkit-backdrop-filter: blur(2px);
          backdrop-filter: blur(2px);
}

._errored_i61ry_22 {
  background: var(--glass-fill-strong);
  border: 1px solid var(--danger);
}

._spinner_i61ry_27 {
  width: 26px;
  height: 26px;
  border-radius: var(--r-full);
  border: 3px solid var(--glass-fill-strong);
  border-top-color: var(--brand);
  animation: _ri-spin_i61ry_1 0.8s linear infinite;
}

._label_i61ry_36 {
  font-size: 12.5px;
  color: var(--ink-soft);
}

._errorLabel_i61ry_41 {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--danger);
}

._actions_i61ry_47 {
  display: flex;
  gap: 6px;
}

@keyframes _ri-spin_i61ry_1 {
  to {
    transform: rotate(360deg);
  }
}
@media (prefers-reduced-motion: reduce) {
  ._spinner_i61ry_27 {
    animation: none;
  }
}
/* Contextual bubble toolbars — the `.popover` global class supplies the glass
   material + --shadow-pop (a true floating overlay), so this only lays out the
   compact icon row. Tokens only; dark mode rides on .lg-root.theme-dark. */
._bar_xlxut_5 {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 4px;
}

._btn_xlxut_12 {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 28px;
  min-width: 28px;
  padding: 0 5px;
  border: 0;
  border-radius: var(--r-sm);
  background: transparent;
  color: var(--ink-soft);
  cursor: pointer;
  font-family: inherit;
  transition: background var(--t-base) ease, color var(--t-base) ease;
}

._btn_xlxut_12:hover {
  background: var(--glass-fill);
  color: var(--ink);
}

._active_xlxut_34 {
  background: var(--brand-tint);
  color: var(--brand-text);
}

._active_xlxut_34:hover {
  background: var(--brand-tint);
  color: var(--brand-text);
}

._danger_xlxut_44:hover {
  background: color-mix(in srgb, var(--danger) 14%, transparent);
  color: var(--danger);
}

._sep_xlxut_49 {
  width: 1px;
  height: 18px;
  margin: 0 3px;
  flex-shrink: 0;
  background: var(--glass-border);
}

._plus_xlxut_57,
._minus_xlxut_58 {
  margin-left: 1px;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
}

._wlabel_xlxut_65 {
  font-size: 12px;
  font-weight: 650;
}

/* #entity-mention navigate bubble — a compact deep-link chip inside the popover.
   The link uses --brand-text (NOT the raw --brand hue): brand-as-text is lightened
   for the dark canvas to meet AA, so the label + icons stay readable in .theme-dark.
   A mention with no v2 page falls back to a muted, inert pill. */
._entityLink_xlxut_74,
._entityMuted_xlxut_75 {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 280px;
  height: 28px;
  padding: 0 8px;
  font-size: 12.5px;
  font-weight: 550;
}

._entityLink_xlxut_74 {
  color: var(--brand-text);
  text-decoration: none;
  border-radius: var(--r-sm);
  transition: opacity var(--t-base) ease;
}

._entityLink_xlxut_74:hover {
  opacity: 0.75;
  text-decoration: none;
}

._entityMuted_xlxut_75 {
  color: var(--ink-faint);
  cursor: default;
}

._entityIcon_xlxut_103 {
  flex-shrink: 0;
}

._entityLabel_xlxut_107 {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

._entityGo_xlxut_113 {
  flex-shrink: 0;
  opacity: 0.7;
}
/* ============================================================================
   V2TextEditor.module.scss — NATIVE Liquid-Glass styling for the v2 Tiptap
   rich-text editor (V2TextEditor.jsx).

   This is a from-scratch, glass-native replacement for the legacy
   TextEditorTheme.css. It is NOT a reskin/override of legacy classes — the v2
   editor renders its OWN clean DOM (a scoped `.shell` wrapper around a single
   ProseMirror content area), so every rule here targets v2-owned class hooks.

   Design rules honoured (from docs/design-system):
     • All colour / material / radius / motion comes from `.lg-root` tokens
       (--ink / --ink-soft / --ink-faint / --brand / --glass-* / --field-fill /
       --r-* / --t-* / --ease). NO hardcoded light colours — DARK MODE works for
       free because every value resolves from the active .lg-root theme.
     • Glass, not cards. 1px hairline borders carry hierarchy, not shadows.
     • The toolbar is a frosted glass strip; the editing surface is a
       `.field`-style inset.

   PADDING-BUG FIX (the v1 "excess padding when opened" defect):
     v1 stacked TWO paddings — `.editor-input` (15px 10px) AND `.ProseMirror`
     (20px) — so the body gained ~35px/30px of combined padding the moment it
     opened. Here the EditorContent wrapper carries ZERO padding and a single,
     consistent padding lives on `.body .ProseMirror` only. One source of truth.
   ========================================================================== */
._shell_1dpk1_8 {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: 100%;
  position: relative;
  background: transparent;
  color: var(--ink);
  font-family: var(--font), "Inter", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif;
  /* ── Perimeter border — demarcates the editing area wherever it is used ── */
  /* A single 1px hairline + radius around the whole editor (toolbar + body),
     so the surface reads as one clearly-bounded glass field. We do NOT clip
     with `overflow: hidden` here: the toolbar's dropdowns/popovers are
     absolutely positioned and must be able to FLOAT over content below the
     editor (a short editor would otherwise clip a dropped-down popover, making
     it look like the surface has to grow to fit it). The toolbar carries its
     own matching top radius below, so its corners still read as part of the
     rounded shell. The error state's inline
     `style={{ borderColor: 'var(--danger)' }}` in the JSX still overrides this
     default border-color with no JSX change needed. */
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md);
  overflow: visible;
  transition: border-color var(--t-base) ease, box-shadow var(--t-base) ease;
}

/* Focus highlight — subtly lift the perimeter border while the editor is active,
   matching the .field focus language without a heavy ring on the large surface. */
._shell_1dpk1_8[focus-within] {
  border-color: var(--brand);
  box-shadow: var(--focus-ring);
}
._shell_1dpk1_8:focus-within {
  border-color: var(--brand);
  box-shadow: var(--focus-ring);
}

/* ── Toolbar — frosted glass strip ──────────────────────────────────────── */
._toolbar_1dpk1_60 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 2px;
  padding: 6px 8px;
  /* OPAQUE — the toolbar is sticky and floats over scrolled content once the
     editor grows, so a translucent --glass-fill let content show through. Mirror
     the popover material so it stays solid (and hides content) when stuck, at any
     height when the tools wrap to multiple rows. */
  background: var(--popover-fill);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border-bottom: 1px solid var(--glass-hair);
  /* Match the shell's rounded top corners (the shell no longer clips). */
  border-top-left-radius: var(--r-md);
  border-top-right-radius: var(--r-md);
  position: sticky;
  top: 0;
  z-index: 5;
}

._group_1dpk1_82 {
  display: inline-flex;
  align-items: center;
  gap: 2px;
}

/* Overflow (⋯) toggle — sits at the far right of the toolbar; margin-left:auto
   pushes it to the trailing edge of its flex row (Google-Docs style). */
._overflowToggle_1dpk1_90 {
  display: inline-flex;
  align-items: center;
  margin-left: auto;
}

._divider_1dpk1_96 {
  width: 1px;
  height: 20px;
  margin: 0 4px;
  background: var(--glass-border);
  flex-shrink: 0;
}

/* ── Toolbar buttons — quiet glass icon buttons ─────────────────────────── */
._btn_1dpk1_105 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  height: 30px;
  min-width: 30px;
  padding: 0 6px;
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  background: transparent;
  color: var(--ink-soft);
  cursor: pointer;
  font-family: inherit;
  font-size: 12.5px;
  line-height: 1;
  transition: color var(--t-base) ease, background var(--t-base) ease, border-color var(--t-base) ease, transform 0.1s var(--ease-spring);
}

._btn_1dpk1_105 svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

._btn_1dpk1_105:hover:not(:disabled) {
  color: var(--ink);
  background: var(--glass-fill-strong);
  border-color: var(--glass-border);
}

._btn_1dpk1_105:active:not(:disabled) {
  transform: scale(0.94);
}

._btn_1dpk1_105:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* active formatting state → restrained brand tint + brand ink */
._active_1dpk1_146 {
  color: var(--brand-text) !important;
  background: var(--brand-tint) !important;
  border-color: color-mix(in srgb, var(--brand) 24%, transparent) !important;
}

/* block-type dropdown trigger has a label + caret */
._blockTrigger_1dpk1_153 {
  min-width: 0;
  padding: 0 8px;
}

._blockLabel_1dpk1_158 {
  font-size: 12.5px;
  white-space: nowrap;
}

._caret_1dpk1_163 {
  width: 13px !important;
  height: 13px !important;
}

._caret_1dpk1_163 {
  opacity: 0.7;
}

/* ── Dropdown menu (block type / table actions) ─────────────────────────── */
._menuWrap_1dpk1_170 {
  position: relative;
  display: inline-flex;
}

._menu_1dpk1_170 {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 188px;
  padding: 6px;
  background: var(--glass-fill-strong);
  backdrop-filter: blur(28px) saturate(170%);
  -webkit-backdrop-filter: blur(28px) saturate(170%);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-pop);
  z-index: 1250;
  z-index: var(--z-popover, 1250);
  animation: _lg-popIn_1dpk1_1 var(--t-move) var(--ease-spring) both;
}

._menuItem_1dpk1_191 {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  padding: 7px 10px;
  border: 0;
  border-radius: var(--r-sm);
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  font-family: inherit;
  font-size: 13px;
  text-align: left;
  transition: background var(--t-fast) ease, color var(--t-fast) ease;
}

._menuItem_1dpk1_191 svg {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
  color: var(--ink-soft);
}

._menuItem_1dpk1_191:hover {
  background: var(--glass-fill);
  color: var(--ink);
}

._menuItemActive_1dpk1_220 {
  color: var(--brand-text);
  background: var(--brand-tint);
}

._menuItemActive_1dpk1_220 svg {
  color: var(--brand-text);
}

._menuItemDanger_1dpk1_229 {
  color: var(--danger);
}

._menuItemDanger_1dpk1_229 svg {
  color: var(--danger);
}

._menuSep_1dpk1_237 {
  height: 1px;
  margin: 5px 4px;
  background: var(--glass-hair);
  border: 0;
}

@keyframes _lg-popIn_1dpk1_1 {
  from {
    opacity: 0;
    transform: translateY(4px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
/* ── Inline link popover ────────────────────────────────────────────────── */
._popover_1dpk1_255 {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px;
  min-width: 280px;
  background: var(--glass-fill-strong);
  backdrop-filter: blur(28px) saturate(170%);
  -webkit-backdrop-filter: blur(28px) saturate(170%);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-pop);
  z-index: 1250;
  z-index: var(--z-popover, 1250);
  animation: _lg-popIn_1dpk1_1 var(--t-move) var(--ease-spring) both;
}

._popInput_1dpk1_274 {
  flex: 1;
  min-width: 0;
  font-family: inherit;
  font-size: 13px;
  color: var(--ink);
  background: var(--field-fill);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md);
  padding: 7px 10px;
  outline: none;
  transition: border-color var(--t-base) ease, box-shadow var(--t-base) ease;
}

._popInput_1dpk1_274::placeholder {
  color: var(--ink-faint);
}

._popInput_1dpk1_274:focus {
  border-color: var(--brand);
  box-shadow: var(--focus-ring);
}

/* ── Editing surface — a single, consistently-padded ProseMirror body ───── */
._body_1dpk1_24 {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  background: transparent;
}

/* The EditorContent wrapper carries ZERO padding (this is the v1 fix). */
._editorContent_1dpk1_306 {
  height: 100%;
  padding: 0;
}

/* Document mode: the editing surface GROWS with its content instead of scrolling
   internally — the page scrolls, the editor never gets its own scrollbar. The value
   below is the INITIAL/minimum height (a short doc still fills the viewport); the
   sticky toolbar stays pinned to the top of the page as you scroll (the page box
   wrapper drops overflow:hidden so this sticks). Other editors keep the default
   scrolling body. */
._shell_1dpk1_8[data-document-mode=true] ._body_1dpk1_24 {
  flex: 0 0 auto;
  min-height: calc(100dvh - 220px);
  overflow-y: visible;
}

._shell_1dpk1_8[data-document-mode=true] ._editorContent_1dpk1_306 {
  height: auto;
}

._body_1dpk1_24 .ProseMirror {
  /* SINGLE source of padding — no double-stacking (v1 bug fixed). */
  padding: 14px 16px;
  min-height: 140px;
  outline: none;
  color: var(--ink);
  font-family: var(--font), "Inter", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  word-break: break-word;
  -webkit-font-smoothing: antialiased;
}

._body_1dpk1_24 .ProseMirror:focus {
  outline: none;
}

/* Placeholder — Tiptap Placeholder extension renders `data-placeholder` on the
   first empty node; show it as faint ink. */
._body_1dpk1_24 .ProseMirror p.is-editor-empty:first-child::before {
  content: attr(data-placeholder);
  float: left;
  height: 0;
  pointer-events: none;
  color: var(--ink-faint);
}

/* ── Content typography (all token-driven, so dark mode is automatic) ───── */
._body_1dpk1_24 .ProseMirror > * + * {
  margin-top: 0.7em;
}

._body_1dpk1_24 .ProseMirror h1 {
  font-size: 1.55em;
  font-weight: 650;
  line-height: 1.25;
  letter-spacing: -0.015em;
  color: var(--ink);
}

._body_1dpk1_24 .ProseMirror h2 {
  font-size: 1.28em;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.01em;
  color: var(--ink);
}

._body_1dpk1_24 .ProseMirror h3 {
  font-size: 1.12em;
  font-weight: 600;
  color: var(--ink);
}

._body_1dpk1_24 .ProseMirror h4 {
  font-size: 1.02em;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--ink);
}

._body_1dpk1_24 .ProseMirror p {
  color: var(--ink);
}

._body_1dpk1_24 .ProseMirror a {
  color: var(--brand-text);
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

._body_1dpk1_24 .ProseMirror ul,
._body_1dpk1_24 .ProseMirror ol {
  padding-left: 1.4em;
}

._body_1dpk1_24 .ProseMirror ul {
  list-style: disc;
}

._body_1dpk1_24 .ProseMirror ol {
  list-style: decimal;
}

._body_1dpk1_24 .ProseMirror li {
  margin: 0.2em 0;
}

._body_1dpk1_24 .ProseMirror li p {
  margin: 0;
}

._body_1dpk1_24 .ProseMirror blockquote {
  border-left: 3px solid var(--brand);
  padding-left: 14px;
  margin-left: 0;
  color: var(--ink-soft);
  font-style: italic;
}

._body_1dpk1_24 .ProseMirror code {
  font-family: var(--font-mono);
  font-size: 0.88em;
  background: var(--glass-hair);
  color: var(--ink);
  padding: 0.12em 0.4em;
  border-radius: var(--r-sm);
}

._body_1dpk1_24 .ProseMirror pre {
  font-family: var(--font-mono);
  font-size: 0.88em;
  background: var(--glass-hair);
  color: var(--ink);
  padding: 12px 14px;
  border-radius: var(--r-md);
  overflow-x: auto;
}

._body_1dpk1_24 .ProseMirror pre code {
  background: none;
  padding: 0;
  font-size: inherit;
}

._body_1dpk1_24 .ProseMirror hr {
  border: 0;
  border-top: 1px solid var(--glass-border);
  margin: 1em 0;
}

/* images uploaded via the media service */
._body_1dpk1_24 .ProseMirror img,
._body_1dpk1_24 .ProseMirror .editor-image {
  max-width: 100%;
  height: auto;
  border-radius: var(--r-md);
  display: inline-block;
}

/* ── Tables ─────────────────────────────────────────────────────────────── */
._body_1dpk1_24 .ProseMirror table {
  border-collapse: collapse;
  width: 100%;
  margin: 0.6em 0;
  overflow: hidden;
  table-layout: fixed;
}

._body_1dpk1_24 .ProseMirror td,
._body_1dpk1_24 .ProseMirror th {
  /* A clearly-visible grid line (the structural glass hairline is too faint for
     a data table). */
  border: 1px solid color-mix(in srgb, var(--ink) 18%, transparent);
  padding: 7px 10px;
  vertical-align: top;
  position: relative;
}

._body_1dpk1_24 .ProseMirror th {
  background: var(--glass-hair);
  font-weight: 600;
  text-align: left;
  color: var(--ink);
}

._body_1dpk1_24 .ProseMirror .selectedCell::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: var(--brand-tint);
  pointer-events: none;
}

._body_1dpk1_24 .ProseMirror .column-resize-handle {
  position: absolute;
  right: -2px;
  top: 0;
  bottom: 0;
  width: 4px;
  background: var(--brand);
  pointer-events: none;
}

/* ── Custom nodes: 2-column layout, video, merge fields ─────────────────── */
._body_1dpk1_24 .ProseMirror .tiptap-column-group {
  display: flex;
  gap: 16px;
  margin: 0.6em 0;
}

._body_1dpk1_24 .ProseMirror .tiptap-column {
  flex: 1;
  min-width: 0;
  border: 1px dashed var(--glass-border);
  border-radius: var(--r-md);
  padding: 8px 10px;
}

._body_1dpk1_24 .ProseMirror .video-wrapper {
  position: relative;
  margin: 0.6em 0;
  border-radius: var(--r-md);
  overflow: hidden;
}

._body_1dpk1_24 .ProseMirror .video-wrapper video,
._body_1dpk1_24 .ProseMirror .video-wrapper iframe {
  display: block;
  width: 100%;
  border: 0;
  border-radius: var(--r-md);
}

._body_1dpk1_24 .ProseMirror iframe {
  max-width: 100%;
  border: 0;
  border-radius: var(--r-md);
}

._body_1dpk1_24 .ProseMirror .merge-field {
  display: inline-block;
  background: var(--brand-tint);
  color: var(--brand-text);
  border: 1px solid color-mix(in srgb, var(--brand) 24%, transparent);
  border-radius: var(--r-full);
  padding: 1px 8px;
  font-size: 0.88em;
  font-weight: 550;
  white-space: nowrap;
}

/* ── Merge-field palette ────────────────────────────────────────────────── */
._palette_1dpk1_561 {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  width: 260px;
  max-height: 280px;
  display: flex;
  flex-direction: column;
  background: var(--glass-fill-strong);
  backdrop-filter: blur(28px) saturate(170%);
  -webkit-backdrop-filter: blur(28px) saturate(170%);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-pop);
  z-index: 1250;
  z-index: var(--z-popover, 1250);
  overflow: hidden;
  animation: _lg-popIn_1dpk1_1 var(--t-move) var(--ease-spring) both;
}

._paletteHeader_1dpk1_580 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 9px 12px;
  border-bottom: 1px solid var(--glass-hair);
  font-size: 12px;
  font-weight: 600;
  color: var(--ink);
}

._paletteClose_1dpk1_591 {
  display: inline-flex;
  border: 0;
  background: transparent;
  color: var(--ink-faint);
  cursor: pointer;
  padding: 2px;
  border-radius: var(--r-sm);
}

._paletteClose_1dpk1_591:hover {
  color: var(--ink);
  background: var(--glass-fill);
}

._paletteBody_1dpk1_606 {
  overflow-y: auto;
  padding: 6px;
}

._paletteOption_1dpk1_611 {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  width: 100%;
  padding: 7px 10px;
  border: 0;
  border-radius: var(--r-sm);
  background: transparent;
  cursor: pointer;
  text-align: left;
  transition: background var(--t-fast) ease;
}

._paletteOption_1dpk1_611:hover {
  background: var(--glass-fill);
}

._paletteOptionLabel_1dpk1_630 {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--ink);
}

._paletteOptionTag_1dpk1_636 {
  font-size: 11px;
  color: var(--ink-faint);
  font-family: var(--font-mono);
}

/* ── Inline error message (below the editor frame) ──────────────────────── */
._error_1dpk1_643 {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
  font-size: 12px;
  color: var(--danger);
}

/* ── Disabled overlay (read-only mode) ──────────────────────────────────── */
._disabledOverlay_1dpk1_653 {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 8;
  cursor: not-allowed;
  background: transparent;
}

/* The body hosts the floating block drag-handle, positioned by the tiptap plugin. */
._body_1dpk1_24 {
  position: relative;
}

/* ── Mentions (@person / #entity) — inline brand-tinted chips ────────────────── */
._body_1dpk1_24 .ProseMirror .lg-mention {
  display: inline;
  padding: 1px 5px;
  border-radius: var(--r-sm);
  background: var(--brand-tint);
  color: var(--brand-text);
  font-weight: 550;
  white-space: nowrap;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

/* `#` entity mentions are clickable (select → navigate bubble); signal it. */
._body_1dpk1_24 .ProseMirror .lg-mention-entity {
  cursor: pointer;
}

/* ── Anchored-comment highlight mark (Google-Docs-style) ─────────────────────── */
._body_1dpk1_24 .ProseMirror .lg-comment-mark {
  background: color-mix(in srgb, var(--warn) 22%, transparent);
  border-bottom: 2px solid color-mix(in srgb, var(--warn) 80%, transparent);
  border-radius: 2px;
  cursor: pointer;
  transition: background var(--t-base) ease;
}

._body_1dpk1_24 .ProseMirror .lg-comment-mark:hover {
  background: color-mix(in srgb, var(--warn) 36%, transparent);
}

._body_1dpk1_24 .ProseMirror .lg-comment-mark[data-comment-resolved='true'] {
  background: transparent;
  border-bottom: 1px dotted var(--ink-faint);
  opacity: 0.65;
}

/* ── Highlight mark (multicolor — inline style carries the colour) ───────────── */
._body_1dpk1_24 .ProseMirror mark {
  background: transparent;
  border-radius: 3px;
  padding: 0 1px;
  color: inherit;
}

/* ── Task / checklist list ──────────────────────────────────────────────────── */
._body_1dpk1_24 .ProseMirror ul[data-type='taskList'] {
  list-style: none;
  padding-left: 0.15em;
}

._body_1dpk1_24 .ProseMirror ul[data-type='taskList'] li {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 0.2em 0;
}

._body_1dpk1_24 .ProseMirror ul[data-type='taskList'] li > label {
  margin-top: 2px;
  -webkit-user-select: none;
          user-select: none;
  flex-shrink: 0;
}

._body_1dpk1_24 .ProseMirror ul[data-type='taskList'] li > div {
  flex: 1;
  min-width: 0;
}

._body_1dpk1_24 .ProseMirror ul[data-type='taskList'] li > div > p {
  margin: 0;
}

._body_1dpk1_24 .ProseMirror ul[data-type='taskList'] input[type='checkbox'] {
  width: 15px;
  height: 15px;
  margin-top: 1px;
  accent-color: var(--brand);
  cursor: pointer;
}

._body_1dpk1_24 .ProseMirror ul[data-type='taskList'] li[data-checked='true'] > div {
  color: var(--ink-faint);
  text-decoration: line-through;
}

/* ── Collapsible details ────────────────────────────────────────────────────── */
._body_1dpk1_24 .ProseMirror .editor-details,
._body_1dpk1_24 .ProseMirror [data-type='details'] {
  position: relative;
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md);
  padding: 8px 12px 8px 32px;
  margin: 0.6em 0;
  background: var(--glass-fill);
}

/* Toggle is a sibling rendered BEFORE the summary/content wrapper, so anchor it
   at the top-left to sit beside the title line instead of stacking above it. */
._body_1dpk1_24 .ProseMirror [data-type='details'] > button {
  position: absolute;
  left: 9px;
  top: 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border: 0;
  background: transparent;
  color: var(--ink-soft);
  cursor: pointer;
  padding: 0;
  transition: transform var(--t-base) var(--ease);
}

._body_1dpk1_24 .ProseMirror [data-type='details'] > button[data-open='true'] {
  transform: rotate(90deg);
}

._body_1dpk1_24 .ProseMirror [data-type='detailsSummary'] {
  font-weight: 600;
  color: var(--ink);
  list-style: none;
  cursor: pointer;
}

/* Title hint for an empty section summary. The Placeholder extension tags the
   empty nested node with `.is-empty` + `data-placeholder` (the top-level
   `.is-editor-empty` rule above only covers the first doc paragraph). */
._body_1dpk1_24 .ProseMirror [data-type='detailsSummary'].is-empty::before {
  content: attr(data-placeholder);
  float: left;
  height: 0;
  pointer-events: none;
  color: var(--ink-faint);
}

._body_1dpk1_24 .ProseMirror [data-type='detailsContent'] {
  margin-top: 6px;
}

/* ── Emoji node ─────────────────────────────────────────────────────────────── */
._body_1dpk1_24 .ProseMirror [data-type='emoji'] img,
._body_1dpk1_24 .ProseMirror img.emoji {
  display: inline-block;
  height: 1.15em;
  width: 1.15em;
  vertical-align: -0.15em;
  margin: 0 0.05em;
}

/* ── Block drag handle (tiptap plugin floats this near the hovered block) ────── */
.editor-drag-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity var(--t-base) ease;
}

._body_1dpk1_24:hover .editor-drag-handle,
.editor-drag-handle:hover,
.editor-drag-handle.dragging {
  opacity: 1;
}

/* Read-only editor: keep the plugin mounted but suppress the grip entirely. */
.editor-drag-handle--hidden {
  display: none !important;
}

/* ── Toolbar swatch popovers (text colour / highlight) ──────────────────────── */
._swatchPop_1dpk1_839 {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  padding: 8px;
  background: var(--glass-fill-strong);
  backdrop-filter: blur(28px) saturate(170%);
  -webkit-backdrop-filter: blur(28px) saturate(170%);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-pop);
  z-index: 1250;
  z-index: var(--z-popover, 1250);
  animation: _lg-popIn_1dpk1_1 var(--t-move) var(--ease-spring) both;
}

._swatchGrid_1dpk1_854 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: 6px;
  gap: 6px;
}

._swatch_1dpk1_839 {
  width: 24px;
  height: 24px;
  border-radius: var(--r-sm);
  border: 1px solid var(--glass-border);
  cursor: pointer;
  padding: 0;
  transition: transform var(--t-fast) var(--ease-spring);
}

._swatch_1dpk1_839:hover {
  transform: scale(1.1);
}

._swatchClear_1dpk1_874 {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  margin-top: 8px;
  padding: 6px;
  border: 0;
  border-radius: var(--r-sm);
  background: var(--glass-fill);
  color: var(--ink-soft);
  cursor: pointer;
  font-family: inherit;
  font-size: 12px;
}

._swatchClear_1dpk1_874:hover {
  background: var(--glass-hair);
  color: var(--ink);
}

/* ── Insert-table popover (rows / columns / header) ─────────────────────────── */
._tablePop_1dpk1_897 {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  width: 210px;
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: var(--glass-fill-strong);
  backdrop-filter: blur(28px) saturate(170%);
  -webkit-backdrop-filter: blur(28px) saturate(170%);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-pop);
  z-index: 1250;
  z-index: var(--z-popover, 1250);
  animation: _lg-popIn_1dpk1_1 var(--t-move) var(--ease-spring) both;
}

._tableField_1dpk1_916 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

._tableLabel_1dpk1_923 {
  font-size: 12.5px;
  color: var(--ink-soft);
}

._tableNum_1dpk1_928 {
  width: 66px;
  font-family: inherit;
  font-size: 13px;
  color: var(--ink);
  background: var(--field-fill);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-sm);
  padding: 5px 8px;
  outline: none;
  transition: border-color var(--t-base) ease, box-shadow var(--t-base) ease;
}

._tableNum_1dpk1_928:focus {
  border-color: var(--brand);
  box-shadow: var(--focus-ring);
}

._tableCheck_1dpk1_946 {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12.5px;
  color: var(--ink-soft);
  cursor: pointer;
}

._tableCheck_1dpk1_946 input {
  accent-color: var(--brand);
}

/* ── Dark-mode opacity fix (BUG A) ───────────────────────────────────────────
   In .theme-dark the --glass-fill-strong material resolves to only ~10% white
   over the dark canvas — too sheer for a floating overlay, so document content
   behind these popovers bleeds through and the menus read poorly. Lift every
   toolbar overlay (block-type / table-actions / column / font menus, link
   popover, colour + highlight swatch grids, insert-table dialog, merge-field
   palette) onto a near-opaque, canvas-derived surface. Still token-driven
   (--bg-2), still separated by --shadow-pop, and light mode is untouched. */
.lg-root.theme-dark ._menu_1dpk1_170,
.lg-root.theme-dark ._popover_1dpk1_255,
.lg-root.theme-dark ._palette_1dpk1_561,
.lg-root.theme-dark ._swatchPop_1dpk1_839,
.lg-root.theme-dark ._tablePop_1dpk1_897 {
  background: color-mix(in srgb, var(--bg-2) 86%, #fff);
}

/* ── Video modal (native glass) ─────────────────────────────────────────── */
._modalScrim_1dpk1_976 {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: var(--scrim);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  animation: _lg-fadeIn_1dpk1_1 var(--t-base) var(--ease) both;
}

._modal_1dpk1_976 {
  width: 100%;
  max-width: 460px;
  background: var(--glass-fill-strong);
  backdrop-filter: blur(28px) saturate(170%);
  -webkit-backdrop-filter: blur(28px) saturate(170%);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-pop);
  color: var(--ink);
  overflow: hidden;
  animation: _lg-scaleIn_1dpk1_1 var(--t-move) var(--ease-spring) both;
}

@keyframes _lg-fadeIn_1dpk1_1 {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes _lg-scaleIn_1dpk1_1 {
  from {
    opacity: 0;
    transform: scale(0.96);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
._modalHeader_1dpk1_1022 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px;
  border-bottom: 1px solid var(--glass-hair);
}

._modalTitle_1dpk1_1030 {
  font-size: 15px;
  font-weight: 650;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
}

._modalBody_1dpk1_1038 {
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

._modeTabs_1dpk1_1045 {
  display: flex;
  gap: 6px;
  padding: 4px;
  background: var(--glass-hair);
  border-radius: var(--r-md);
}

._modeTab_1dpk1_1045 {
  flex: 1;
  padding: 7px 10px;
  border: 0;
  border-radius: var(--r-sm);
  background: transparent;
  color: var(--ink-soft);
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 500;
  cursor: pointer;
  transition: background var(--t-base) ease, color var(--t-base) ease;
}

._modeTabActive_1dpk1_1067 {
  background: var(--glass-fill-strong);
  color: var(--ink);
  box-shadow: var(--shadow);
}

._modalLabel_1dpk1_1073 {
  font-size: 12px;
  font-weight: 600;
  color: var(--ink-soft);
}

._modalInput_1dpk1_1079 {
  width: 100%;
  font-family: inherit;
  font-size: 13.5px;
  color: var(--ink);
  background: var(--field-fill);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md);
  padding: 9px 12px;
  outline: none;
  transition: border-color var(--t-base) ease, box-shadow var(--t-base) ease;
}

._modalInput_1dpk1_1079::placeholder {
  color: var(--ink-faint);
}

._modalInput_1dpk1_1079:focus {
  border-color: var(--brand);
  box-shadow: var(--focus-ring);
  background: var(--glass-fill-strong);
}

._modalInputError_1dpk1_1102 {
  border-color: var(--danger);
}

._dropZone_1dpk1_1106 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 26px 18px;
  border: 2px dashed var(--glass-border);
  border-radius: var(--r-md);
  text-align: center;
  color: var(--ink-soft);
  font-size: 13px;
}

._modalError_1dpk1_1119 {
  font-size: 12px;
  color: var(--danger);
}

._modalFooter_1dpk1_1124 {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding-top: 4px;
}

._spin_1dpk1_1131 {
  animation: _lg-spin_1dpk1_1 0.9s linear infinite;
}

@keyframes _lg-spin_1dpk1_1 {
  to {
    transform: rotate(360deg);
  }
}
/* ── Mobile responsive ──────────────────────────────────────────────────── */
@media (max-width: 640px) {
  ._toolbar_1dpk1_60 {
    padding: 5px 6px;
    gap: 1px;
  }
  ._btn_1dpk1_105 {
    height: 32px;
    min-width: 32px;
  }
  /* hide the block-type text label on narrow screens (icon stays) */
  ._blockLabel_1dpk1_158 {
    display: none;
  }
  ._divider_1dpk1_96 {
    margin: 0 2px;
  }
  ._body_1dpk1_24 .ProseMirror {
    padding: 12px 13px;
    font-size: 13.5px;
  }
  ._body_1dpk1_24 .ProseMirror .tiptap-column-group {
    flex-direction: column;
    gap: 10px;
  }
  ._menu_1dpk1_170,
  ._palette_1dpk1_561 {
    min-width: 180px;
  }
  ._popover_1dpk1_255 {
    min-width: 220px;
  }
}
/* ============================================================================
   mediaPicker.module.scss — shared Liquid-Glass styling for the v2 editor media
   pickers (V2ImagePickerModal + V2VideoPickerModal).

   These are NEW class hooks (not a reskin of V2TextEditor.module.scss), but they
   deliberately match the established modal / dropzone / segmented-tab language so
   the pickers feel native to the editor. Every colour / material / radius /
   motion value resolves from `.lg-root` tokens, so `.theme-dark` works for free.

   Layout rules honoured (docs/design-system):
     • Glass, not cards — 1px hairlines carry hierarchy; `--shadow-pop` only on
       the floating dialog (it is portaled into #lg-overlay-root).
     • Radius from --r-* tokens; never a literal px radius.
   ========================================================================== */
._scrim_1wa3c_16 {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: var(--scrim);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  animation: _mp-fadeIn_1wa3c_1 var(--t-base) var(--ease) both;
}

._dialog_1wa3c_30 {
  width: 100%;
  max-width: 480px;
  max-height: calc(100vh - 40px);
  display: flex;
  flex-direction: column;
  /* Opaque overlay material — NOT the translucent --glass-fill-strong (10% in
     dark). Mirrors .popover / V2Modal so the modal is readable in both themes. */
  background: var(--popover-fill);
  backdrop-filter: blur(28px) saturate(170%);
  -webkit-backdrop-filter: blur(28px) saturate(170%);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-pop);
  color: var(--ink);
  overflow: hidden;
  outline: none;
  animation: _mp-scaleIn_1wa3c_1 var(--t-move) var(--ease-spring) both;
}

@keyframes _mp-fadeIn_1wa3c_1 {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes _mp-scaleIn_1wa3c_1 {
  from {
    opacity: 0;
    transform: scale(0.96);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
/* ── Header ──────────────────────────────────────────────────────────────── */
._header_1wa3c_69 {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px 18px;
  border-bottom: 1px solid var(--glass-hair);
}

._headerIcon_1wa3c_77 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  flex-shrink: 0;
  border-radius: var(--r-md);
  background: var(--brand-tint);
  color: var(--brand-text);
}

._headerText_1wa3c_89 {
  flex: 1;
  min-width: 0;
}

._title_1wa3c_94 {
  font-size: 15px;
  font-weight: 650;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
}

._subtitle_1wa3c_102 {
  margin: 1px 0 0;
  font-size: 12px;
  color: var(--ink-faint);
}

/* ── Body ────────────────────────────────────────────────────────────────── */
._body_1wa3c_109 {
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  overflow-y: auto;
}

/* ── Segmented tabs ──────────────────────────────────────────────────────── */
._tabs_1wa3c_118 {
  display: flex;
  gap: 6px;
  padding: 4px;
  background: var(--glass-hair);
  border-radius: var(--r-md);
}

._tab_1wa3c_118 {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 7px 10px;
  border: 0;
  border-radius: var(--r-sm);
  background: transparent;
  color: var(--ink-soft);
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 500;
  cursor: pointer;
  transition: background var(--t-base) ease, color var(--t-base) ease;
}

._tab_1wa3c_118 svg {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
}

._tab_1wa3c_118:hover:not(._tabActive_1wa3c_150):not(:disabled) {
  color: var(--ink);
}

._tab_1wa3c_118:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

._tabActive_1wa3c_150 {
  background: var(--glass-fill-strong);
  color: var(--ink);
  box-shadow: var(--shadow);
}

/* ── Fields ──────────────────────────────────────────────────────────────── */
._field_1wa3c_166 {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

._label_1wa3c_172 {
  font-size: 12px;
  font-weight: 600;
  color: var(--ink-soft);
}

._optional_1wa3c_178 {
  font-weight: 500;
  color: var(--ink-faint);
}

._input_1wa3c_183 {
  width: 100%;
  font-family: inherit;
  font-size: 13.5px;
  color: var(--ink);
  background: var(--field-fill);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md);
  padding: 9px 12px;
  outline: none;
  transition: border-color var(--t-base) ease, box-shadow var(--t-base) ease, background var(--t-base) ease;
}

._input_1wa3c_183::placeholder {
  color: var(--ink-faint);
}

._input_1wa3c_183:focus {
  border-color: var(--brand);
  box-shadow: var(--focus-ring);
  background: var(--glass-fill-strong);
}

._inputError_1wa3c_206 {
  border-color: var(--danger);
}

/* ── Drop zone ───────────────────────────────────────────────────────────── */
._dropzone_1wa3c_211 {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 28px 18px;
  border: 2px dashed var(--glass-border);
  border-radius: var(--r-md);
  text-align: center;
  color: var(--ink-soft);
  background: transparent;
  cursor: pointer;
  transition: border-color var(--t-base) ease, background var(--t-base) ease, color var(--t-base) ease;
}

._dropzone_1wa3c_211:hover:not(._dropzoneDisabled_1wa3c_227) {
  border-color: color-mix(in srgb, var(--brand) 40%, var(--glass-border));
  color: var(--ink);
}

._dropzoneActive_1wa3c_232 {
  border-color: var(--brand);
  background: var(--brand-tint);
  color: var(--brand-text);
}

._dropzoneDisabled_1wa3c_227 {
  cursor: default;
  opacity: 0.85;
}

._dropIcon_1wa3c_243 {
  display: inline-flex;
  color: var(--ink-faint);
}

._dropzoneActive_1wa3c_232 ._dropIcon_1wa3c_243 {
  color: var(--brand-text);
}

._dropTitle_1wa3c_252 {
  font-size: 13px;
  font-weight: 600;
  color: inherit;
}

._dropHint_1wa3c_258 {
  font-size: 11.5px;
  color: var(--ink-faint);
}

._dropzoneActive_1wa3c_232 ._dropHint_1wa3c_258 {
  color: var(--brand-text);
}

._browse_1wa3c_267 {
  color: var(--brand-text);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ── Upload progress ─────────────────────────────────────────────────────── */
._uploading_1wa3c_275 {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 20px 18px;
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md);
  background: var(--field-fill);
}

._uploadingRow_1wa3c_285 {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--ink);
}

._uploadingName_1wa3c_293 {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 550;
}

._progressTrack_1wa3c_302 {
  position: relative;
  width: 100%;
  height: 6px;
  border-radius: var(--r-full);
  background: var(--glass-hair);
  overflow: hidden;
}

._progressFill_1wa3c_311 {
  position: absolute;
  top: 0;
  right: auto;
  bottom: 0;
  left: 0;
  height: 100%;
  border-radius: var(--r-full);
  background: var(--brand);
  transition: width var(--t-base) ease;
}

/* indeterminate sweep — the media services emit no granular progress, so a
   moving band honestly signals "in flight" without faking a percentage. */
._progressIndeterminate_1wa3c_322 {
  width: 40%;
  animation: _mp-indeterminate_1wa3c_1 1.1s var(--ease) infinite;
}

@keyframes _mp-indeterminate_1wa3c_1 {
  0% {
    left: -40%;
  }
  100% {
    left: 100%;
  }
}
/* ── Image / video preview ───────────────────────────────────────────────── */
._preview_1wa3c_336 {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 10px;
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md);
  background: var(--glass-hair);
  min-height: 96px;
}

._previewImg_1wa3c_348 {
  max-width: 100%;
  max-height: 180px;
  border-radius: var(--r-sm);
  object-fit: contain;
  display: block;
}

._previewRemove_1wa3c_356 {
  position: absolute;
  top: 8px;
  right: 8px;
}

/* ── Provider note (video URL recognition) ───────────────────────────────── */
._providerNote_1wa3c_363 {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  align-self: flex-start;
  padding: 5px 10px;
  border-radius: var(--r-full);
  background: var(--brand-tint);
  color: var(--brand-text);
  font-size: 12px;
  font-weight: 550;
}

._providerNote_1wa3c_363 svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}

._providerNoteMuted_1wa3c_382 {
  background: var(--glass-hair);
  color: var(--ink-soft);
}

/* ── Error / hint ────────────────────────────────────────────────────────── */
._error_1wa3c_388 {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  font-size: 12px;
  color: var(--danger);
}

._error_1wa3c_388 svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  margin-top: 1px;
}

._hint_1wa3c_403 {
  font-size: 11.5px;
  color: var(--ink-faint);
}

/* ── Footer ──────────────────────────────────────────────────────────────── */
._footer_1wa3c_409 {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  padding: 14px 18px;
  border-top: 1px solid var(--glass-hair);
}

._spin_1wa3c_418 {
  animation: _mp-spin_1wa3c_1 0.9s linear infinite;
}

@keyframes _mp-spin_1wa3c_1 {
  to {
    transform: rotate(360deg);
  }
}
/* ── Mobile ──────────────────────────────────────────────────────────────── */
@media (max-width: 640px) {
  ._dialog_1wa3c_30 {
    max-width: 100%;
  }
  ._dropzone_1wa3c_211 {
    padding: 22px 14px;
  }
  ._footer_1wa3c_409 {
    flex-direction: column-reverse;
    align-items: stretch;
  }
}