/* DarkTask — camada de acabamento.
 * Carregada DEPOIS de styles.css, entao vence empates de especificidade.
 * Mexer aqui e sempre reversivel: basta remover o <link> do index.html.
 *
 *  1. Areas seguras (notch / barra inferior) para o modo app
 *  2. Lista compartilhável: larguras padronizadas com o ambiente de tarefas
 *  3. Mobile: topo, cards, formularios e toque
 *  4. Configuracoes: ritmo, abas e leitura
 */

/* ==========================================================================
   1. AREAS SEGURAS — necessario porque o viewport usa viewport-fit=cover
   ========================================================================== */

.dt-app-root {
  padding-left: env(safe-area-inset-left);
  padding-right: env(safe-area-inset-right);
}

html.dt-standalone .dt-app-root {
  padding-top: env(safe-area-inset-top);
}

html.dt-standalone footer {
  padding-bottom: calc(104px + env(safe-area-inset-bottom)) !important;
}

/* A linha do tempo fica colada no rodape; no iPhone ela ficava sob o
   indicador de home. */
.dt-timeline-bar,
.dt-timeline-dock {
  padding-bottom: env(safe-area-inset-bottom);
}

/* ==========================================================================
   2. DARKLIST — mesma linguagem visual do ambiente de tarefas
   O grid de tarefas usa cards de 270px com gap de 14px; a Lista compartilhável agora
   segue exatamente a mesma medida, em vez de esticar os cards ate o fim.
   ========================================================================== */

.dl-wrapper {
  max-width: 1920px;
  margin: 0 auto;
}

.dl-grid {
  grid-template-columns: repeat(auto-fill, 270px);
  gap: 14px;
  justify-content: start;
  align-items: start;
}

.dl-card {
  width: 270px;
  max-width: 100%;
  padding: 14px;
  border-radius: 14px;
  gap: 8px;
}

.dl-card-title { font-size: 15.5px; }
.dl-card-desc  { font-size: 12px; height: 34px; }

/* Abas: nunca quebram o texto no meio; rolam de lado quando nao cabem. */
.dl-tabs {
  gap: 6px;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x proximity;
}
.dl-tabs::-webkit-scrollbar { display: none; }

.dl-tab-btn {
  white-space: nowrap;
  flex: 0 0 auto;
  scroll-snap-align: start;
  padding: 8px 14px;
  font-size: 13px;
}

/* Barra de filtros + busca: a busca ocupa o espaco que sobrar em vez de
   viver presa em 200px. */
.dl-wrapper .dl-input[placeholder^="Buscar"] {
  width: auto !important;
  flex: 1 1 180px;
  min-width: 0;
  max-width: 320px;
}

.dl-filter-btn { white-space: nowrap; }

/* Linha de item: os blocos podem quebrar em vez de espremer. */
.dl-item-row { flex-wrap: wrap; row-gap: 10px; }
.dl-item-row > div { min-width: 0; }

.dl-status-buttons { flex-wrap: wrap; }

/* Caixa de historico: 400px fixos deixavam um vazio enorme quando havia
   pouca coisa. */
.dl-sidebar-box { min-height: 0 !important; }

.dl-modal-dialog {
  max-height: calc(100dvh - 32px);
  overflow-y: auto;
}

/* O rodape agora aparece tambem com a Lista compartilhável aberta; sem esta folga ele
   encostava na barra da linha do tempo. */
.dt-page-tail {
  padding-bottom: calc(24px + env(safe-area-inset-bottom)) !important;
}

/* ==========================================================================
   3. MOBILE
   ========================================================================== */

@media (max-width: 900px) {
  /* O logo tinha largura minima de 280px — sozinho ele tomava a tela
     inteira num celular. */
  img[data-system-logo] {
    width: auto !important;
    height: 34px !important;
    max-width: 54vw !important;
  }
}

@media (max-width: 760px) {
  /* Topo do app em duas faixas: logo + avatar na primeira, indicadores na
     segunda. Antes o avatar caia sozinho numa terceira linha, com um vazio
     enorme no meio. */
  .dt-topbar {
    padding: 10px clamp(12px, 3vw, 26px) !important;
    gap: 10px !important;
    row-gap: 10px !important;
  }

  .dt-topbar > a { margin-right: auto !important; order: 1; }
  .dt-topbar > button:last-child { order: 2; margin-left: auto; }
  .dt-topbar > span { order: 4; width: 100%; }

  .dt-topbar > .dt-status-cluster {
    order: 3;
    width: 100%;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .dt-topbar > .dt-status-cluster::-webkit-scrollbar { display: none; }
  .dt-status-pill,
  .dt-weather-in-cluster { flex: 0 0 auto; }

  .dt-status-cluster {
    gap: 8px !important;
    width: 100%;
  }

  .dt-status-pill,
  .dt-weather-in-cluster {
    height: 42px !important;
    padding: 0 12px !important;
    font-size: 12.5px;
  }

  /* Evita o zoom automatico do Safari ao focar um campo: o iOS amplia
     sempre que a fonte do campo e menor que 16px. */
  input:not([type=checkbox]):not([type=radio]):not([type=range]),
  select,
  textarea {
    font-size: 16px !important;
  }

  /* Alvos de toque decentes. */
  .dl-tab-btn,
  .dl-filter-btn,
  .dl-btn-primary,
  .dl-btn-secondary,
  .dl-btn-danger,
  .dl-btn-back { min-height: 40px; }

  .dl-grid { grid-template-columns: 1fr; gap: 12px; }
  .dl-card { width: 100%; }

  .dl-modal-overlay { padding: 12px !important; align-items: flex-start !important; }
  .dl-modal-dialog { margin-top: 12px; max-height: calc(100dvh - 24px); }

  /* Formulario da agenda iCal: 120px + 210px nao cabem em tela estreita. */
  .dt-ical-grid { grid-template-columns: 1fr !important; }
}

@media (max-width: 560px) {
  /* Os cards do painel ficavam com 154px de altura minima e viravam torres
     de ~290px no celular. Dois por linha aproveitam melhor a tela. */
  .dt-dashboard-card {
    flex: 1 1 calc(50% - 8px) !important;
    min-width: 0 !important;
    min-height: 112px !important;
    padding: 13px !important;
    gap: 6px !important;
  }

  /* Modo Foco e Lista compartilhável continuam grandes: sao o alvo principal de toque. */
  .dt-dashboard-action,
  .dt-darklist-card,
  .dt-media-card {
    flex: 1 1 100% !important;
    min-height: 104px !important;
  }
}

@media (max-width: 430px) {
  /* Os cards de tarefa estavam travados em 270px com !important e nenhuma
     media query sobrescrevia — em telas de 320px eles eram cortados. */
  .dt-task-grid,
  .dt-darktask-grid {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  .dt-task-card {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    height: auto !important;
    min-height: 150px !important;
  }

  .dl-tab-btn { padding: 8px 12px; font-size: 12.5px; }
  .dl-card { padding: 12px; }

  img[data-system-logo] { height: 34px !important; max-width: 52vw !important; }
}

/* ==========================================================================
   4. CONFIGURACOES
   ========================================================================== */

.dt-settings-modal .dt-settings-tabs {
  gap: 4px;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  position: sticky;
  top: 0;
  z-index: 2;
  background: inherit;
}
.dt-settings-modal .dt-settings-tabs::-webkit-scrollbar { display: none; }

.dt-settings-modal .dt-settings-tabs button {
  white-space: nowrap;
  flex: 0 0 auto;
}

/* Ritmo de leitura: rotulo colado no campo, respiro entre blocos. */
.dt-settings-modal label { line-height: 1.35; }

@media (max-width: 760px) {
  /* As 7 abas eram espremidas em 46px cada e os rotulos se sobrepunham.
     Agora mantem o tamanho natural e rola de lado.
     Especificidade alta de proposito: styles.css usa !important aqui. */
  /* Seis abas não cabem em 375px, e a rolagem lateral sem sinal escondia
     três delas. Até virarem lista → página, elas quebram em duas linhas. */
  .dt-settings-overlay.dt-settings-overlay .dt-settings-modal.dt-settings-modal .dt-settings-tabs.dt-settings-tabs {
    overflow-x: visible !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    justify-content: flex-start !important;
  }

  .dt-settings-overlay.dt-settings-overlay .dt-settings-modal.dt-settings-modal .dt-settings-tabs.dt-settings-tabs > button {
    flex: 1 1 30% !important;
    width: auto !important;
    min-width: 0 !important;
    padding: 0 10px !important;
    height: 44px !important;
    min-height: 44px !important;
    font-size: 12.5px !important;
    white-space: nowrap !important;
    text-overflow: clip !important;
    overflow: visible !important;
  }

  /* O conteudo do modal precisa rolar sozinho, senao o teclado do celular
     empurra o rodape para fora da tela. */
  .dt-settings-modal > div:last-child {
    max-height: calc(100dvh - 132px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: calc(24px + env(safe-area-inset-bottom)) !important;
  }
}

/* ==========================================================================
   5. MOBILE — segunda rodada
   Tudo abaixo vive dentro de @media, entao o desktop nao ve nada disso.
   ========================================================================== */

@media (max-width: 760px) {

  /* --- topo enxuto -------------------------------------------------------
     Data, hora e clima saem: sao os tres blocos que empurravam o topo para
     tres linhas. Sobra logo pequeno na esquerda e avatar grande na direita. */

  .dt-topbar > .dt-status-cluster { display: none !important; }

  .dt-topbar {
    flex-wrap: nowrap !important;
    padding: 8px clamp(12px, 3vw, 26px) !important;
  }

  img[data-system-logo] {
    height: 34px !important;
    max-width: 52vw !important;
  }

  /* O espacador vem antes do avatar para empurra-lo ate a borda direita. */
  .dt-topbar > span {
    order: 2 !important;
    width: auto !important;
    flex: 1 1 auto !important;
  }

  .dt-topbar > button:last-child {
    order: 3 !important;
    width: 46px !important;
    height: 46px !important;
    min-width: 46px !important;
    font-size: 17px !important;
    margin-left: auto !important;
  }

  /* --- painel ------------------------------------------------------------ */

  /* "Tasks" sai do celular: o mesmo numero ja aparece dentro dos projetos. */
  .dt-card-tasks { display: none !important; }

  /* Caixas retraidas: viram barras de 56px com o nome e um chevron. Mantendo
     o mesmo tratamento nas quatro, o painel fica com um ritmo unico. */
  .dt-mobile[data-acc-notas="fechado"] .dt-card-notas,
  .dt-mobile[data-acc-midia="fechado"] .dt-media-card,
  .dt-mobile[data-acc-foco="fechado"] .dt-focus-card,
  .dt-mobile[data-acc-darklist="fechado"] .dt-darklist-card {
    position: relative !important;
    min-height: 0 !important;
    height: 56px !important;
    padding: 0 !important;
    overflow: hidden !important;
  }

  /* Mantem a altura compacta com superfícies geradas pelo tema. */
  .dt-mobile[data-acc-foco="fechado"] .dt-focus-card {
    background: radial-gradient(circle at 82% 20%, color-mix(in srgb,var(--accent) 24%,transparent), transparent 42%),
      linear-gradient(115deg,var(--panel-2),var(--panel)) !important;
  }

  .dt-mobile[data-acc-darklist="fechado"] .dt-darklist-card {
    background: radial-gradient(circle at 18% 80%, color-mix(in srgb,var(--accent) 20%,transparent), transparent 44%),
      linear-gradient(115deg,var(--panel),var(--panel-2)) !important;
  }

  .dt-mobile[data-acc-notas="fechado"] .dt-card-notas > *,
  .dt-mobile[data-acc-midia="fechado"] .dt-media-card > *,
  .dt-mobile[data-acc-foco="fechado"] .dt-focus-card > *,
  .dt-mobile[data-acc-darklist="fechado"] .dt-darklist-card > * {
    visibility: hidden !important;
  }

  .dt-mobile[data-acc-notas="fechado"] .dt-card-notas::before,
  .dt-mobile[data-acc-midia="fechado"] .dt-media-card::before,
  .dt-mobile[data-acc-foco="fechado"] .dt-focus-card::before,
  .dt-mobile[data-acc-darklist="fechado"] .dt-darklist-card::before {
    position: absolute;
    left: 16px;
    right: auto;
    top: 50%;
    bottom: auto;
    transform: translateY(-50%);
    z-index: 2;
    opacity: 1;
    background: none;
    mask-image: none;
    font-family: 'Space Grotesk', Manrope, sans-serif;
    font-size: 14.5px;
    font-weight: 650;
    color: var(--text);
    letter-spacing: -.01em;
  }

  .dt-mobile[data-acc-notas="fechado"] .dt-card-notas::before { content: 'Insights'; }
  .dt-mobile[data-acc-midia="fechado"] .dt-media-card::before { content: 'Mídia'; }
  .dt-mobile[data-acc-foco="fechado"] .dt-focus-card::before { content: 'Modo Foco'; }
  .dt-mobile[data-acc-darklist="fechado"] .dt-darklist-card::before { content: 'Listas'; }

  /* Chevron a direita — para cima nas que abrem, para a direita nos atalhos. */
  .dt-mobile[data-acc-notas="fechado"] .dt-card-notas::after,
  .dt-mobile[data-acc-midia="fechado"] .dt-media-card::after,
  .dt-mobile[data-acc-foco="fechado"] .dt-focus-card::after,
  .dt-mobile[data-acc-darklist="fechado"] .dt-darklist-card::after {
    content: '';
    position: absolute;
    right: 20px;
    top: 50%;
    width: 8px;
    height: 8px;
    z-index: 2;
    opacity: 1;
    border: 0;
    border-right: 2px solid var(--muted);
    border-bottom: 2px solid var(--muted);
    border-radius: 0;
    background: none;
    box-shadow: none;
    transform: translateY(-70%) rotate(45deg);
    pointer-events: none;
  }

  .dt-mobile[data-acc-foco="fechado"] .dt-focus-card::after,
  .dt-mobile[data-acc-darklist="fechado"] .dt-darklist-card::after {
    transform: translateY(-50%) rotate(-45deg);
  }

  .dt-mobile[data-acc-foco="fechado"] .dt-focus-card video,
  .dt-mobile[data-acc-darklist="fechado"] .dt-darklist-card video { display: none !important; }

  /* --- tarefas ocupam a largura do container ----------------------------- */

  .dt-task-grid,
  .dt-darktask-grid {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  .dt-task-card {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    height: auto !important;
    min-height: 140px !important;
  }

  /* --- projeto ----------------------------------------------------------- */

  /* O chevron sai: o cabecalho inteiro passa a abrir e fechar (mobile-ui.js). */
  .dt-project-action[data-tooltip="Expandir ou recolher"] { display: none !important; }

  /* Linha 1: alca de arrastar + nome do projeto, lado a lado.
     Linha 2: o menu de acoes, com a largura do proprio conteudo. */
  .dt-project-header {
    flex-wrap: wrap !important;
    row-gap: 10px !important;
    cursor: pointer;
  }

  .dt-project-title {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    order: 1;
  }

  .dt-project-actions {
    order: 3;
    flex: 0 0 auto !important;
    width: auto !important;
    display: inline-flex !important;
    flex-wrap: nowrap !important;
    height: auto !important;
    max-width: 100%;
    margin-right: auto !important;   /* alinhado a esquerda, sob o titulo */
  }

  /* A mesma régua de toque do resto da tela: 40px de lado. Estes botões vivem
     dentro do menu-pílula desenhado no floating-shell.css, mas a medida tem de
     ser declarada aqui — o seletor de lá é menos específico e não alcança. */
  .dt-project-actions .dt-project-action,
  .dt-project-actions .dt-ai-batch {
    width: 40px !important;
    min-width: 40px !important;
    height: 40px !important;
    border-radius: 10px !important;
    flex: 0 0 auto !important;
  }

  /* --- tarefa ------------------------------------------------------------ */

  /* O rodape do card pode quebrar em duas linhas; o grupo de acoes mantem a
     largura natural. Antes ele era esticado a 100% e vazava para fora do card,
     cortando o botao de excluir. */
  .dt-task-footer {
    flex-wrap: wrap !important;
    row-gap: 8px !important;
  }

  .dt-task-actions {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: 100%;
    flex-wrap: nowrap !important;
  }

  /* --- configuracoes ----------------------------------------------------- */

  /* Alertas sonoros: personalizacao de MP3 por evento nao faz sentido no
     celular (o navegador bloqueia audio sem gesto e nao ha onde guardar). */
  .dt-audio-accordion { display: none !important; }

  /* Campo do iCal desce para a linha de baixo em vez de sair quebrado. */
  .dt-ical-grid {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }

  /* Linhas de formulario das configuracoes param de se atropelar. */
  .dt-settings-modal form > div,
  .dt-settings-modal [style*="display:flex"][style*="gap"] {
    flex-wrap: wrap !important;
    row-gap: 8px !important;
  }

  .dt-settings-modal button[type="submit"] { flex: 0 0 auto !important; }
}

/* Alternancia discreta entre projetos para separar blocos sem competir com
   as cores e estados das tarefas. */
.dt-project-list > .dt-project-shell:nth-child(even) {
  background: color-mix(in srgb, var(--glass) 82%, var(--panel-2)) !important;
  border-color: var(--line-2) !important;
}

.dt-media-play-toggle {
  min-width: 36px;
  min-height: 36px;
  padding: 0;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}

.dt-media-play-toggle:focus-visible {
  box-shadow: 0 0 0 2px var(--accent-weak), 0 0 0 3px var(--accent) !important;
}

@media (max-width: 760px) {
  .dt-project-shell,
  .dt-project-header {
    -webkit-user-drag: none;
  }

  .dt-project-header {
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }

  .dt-project-title {
    min-height: 36px;
    display: flex !important;
    align-items: center;
  }
}

/* ========================================================================== 
   6. CONSISTENCIA DE TEMA
   O app pinta as variaveis em .dt-app-root, mas varios pontos ficaram com
   cor fixa escura — invisiveis ou feios nos temas claros. Aqui tudo volta a
   depender das variaveis.
   ========================================================================== */

/* ========================================================================== 
   5.1 MENUS DE ABAS — padrao unico em toda a aplicacao
   ========================================================================== */

:is(.dt-tab-menu, .dl-tabs) {
  display: flex !important;
  align-items: center !important;
  gap: 4px !important;
  padding: 4px !important;
  border: 1px solid var(--line-2) !important;
  border-radius: 12px !important;
  background: color-mix(in srgb, var(--bg-elev) 92%, transparent) !important;
  box-shadow: none !important;
}

:is(.dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn) {
  min-height: 36px !important;
  padding: 0 14px !important;
  border: 1px solid transparent !important;
  border-radius: 9px !important;
  background: transparent !important;
  color: var(--muted) !important;
  box-shadow: none !important;
  font-family: 'Manrope', sans-serif !important;
  font-size: 12.5px !important;
  font-weight: 400 !important;
  line-height: 1.2 !important;
  white-space: nowrap !important;
  cursor: pointer !important;
  transition: color .16s ease, background .16s ease, border-color .16s ease, box-shadow .16s ease !important;
}

:is(.dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn):hover {
  color: var(--text) !important;
  background: color-mix(in srgb, var(--panel-2) 68%, transparent) !important;
}

:is(.dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn):focus-visible {
  outline: 2px solid var(--accent) !important;
  outline-offset: 2px !important;
}

:is(.dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn).is-active,
:is(.dl-tab-btn, .dl-filter-btn).active {
  color: var(--text) !important;
  border-color: transparent !important;
  background: color-mix(in srgb, var(--accent) 17%, var(--panel-2)) !important;
  box-shadow: none !important;
}

/* peso 300 forçado saiu em 12/09/2026 */

.dt-settings-tabs.dt-tab-menu {
  width: max-content !important;
  max-width: calc(100% - 20px) !important;
  margin: 10px auto !important;
  justify-content: flex-start !important;
}

.dt-media-station-tab {
  min-width: 0 !important;
  width: 100% !important;
  padding: 4px 6px !important;
}

.dt-media-card {
  grid-template-rows: auto 40px !important;
}

.dt-media-tabs {
  grid-column: 1 / -1;
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  width: 100%;
}

.dt-focus-preset-tabs { padding: 5px !important; }
.dt-preset-tab {
  height: 58px !important;
  padding: 7px 6px !important;
  white-space: normal !important;
}

.dl-tabs { margin-bottom: 24px !important; }
.dl-filter-tabs {
  margin: 0 !important;
  max-width: 100%;
}

.dt-focus-silence-tabs > button {
  flex: 1 1 0 !important;
  min-width: 0 !important;
}

@media (max-width: 760px) {
  :is(.dt-tab-menu, .dl-tabs) {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    flex-wrap: nowrap !important;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
  }

  :is(.dt-tab-menu, .dl-tabs)::-webkit-scrollbar { display: none; }

  :is(.dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn) {
    flex: 0 0 auto !important;
    min-height: 40px !important;
    scroll-snap-align: start;
  }

  .dt-auth-tabs > .dt-site-tab,
  .dt-focus-mode-tabs > .dt-site-tab,
  .dt-focus-preset-tabs > .dt-site-tab,
  .dt-focus-silence-tabs > .dt-site-tab {
    flex: 1 1 0 !important;
  }

  .dt-audit-tabs { margin-left: 0 !important; }

  .dt-audit-modal {
    height: calc(100dvh - 20px) !important;
    max-height: calc(100dvh - 20px) !important;
    border-radius: 18px !important;
  }

  .dt-audit-header {
    flex-wrap: wrap !important;
    gap: 10px !important;
    padding: 14px !important;
  }

  .dt-audit-header > h3 {
    flex: 1 1 0;
    min-width: 0;
    font-size: 16px !important;
  }

  .dt-audit-header > .dt-tab-menu {
    order: 3;
    flex: 1 1 100%;
    width: 100%;
  }

  .dt-media-card {
    grid-template-rows: auto 42px !important;
  }

  .dt-media-tabs {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .dt-media-station-tab { min-height: 36px !important; }
}

/* --- Lista compartilhável: paleta propria fora do sistema --------------- */

/* Os status usavam a paleta Flat UI (#2ecc71, #f1c40f, #e74c3c), que nao
   conversa com nenhum tema. Agora usam as cores do proprio tema. */

.dl-status-dot.confirmado { border-color: var(--ok) !important; }
.dl-status-dot.confirmado.active { background: var(--ok) !important; border-color: var(--ok) !important; }

.dl-status-dot.desistencia { border-color: var(--cancel, #8A93A6) !important; }
.dl-status-dot.desistencia.active { background: var(--cancel, #8A93A6) !important; border-color: var(--cancel, #8A93A6) !important; }

.dl-status-dot.ausente { border-color: var(--danger) !important; }
.dl-status-dot.ausente.active { background: var(--danger) !important; border-color: var(--danger) !important; }

.dl-status-label {
  font-size: 10.5px !important;
  font-weight: 600 !important;
  letter-spacing: .01em;
  padding: 3px 9px !important;
  border-radius: 999px !important;
  border: 1px solid transparent;
  text-transform: none !important;
}

.dl-status-label.pendente {
  background: color-mix(in srgb, var(--muted) 10%, transparent) !important;
  border-color: color-mix(in srgb, var(--muted) 26%, transparent);
  color: var(--muted) !important;
}
.dl-status-label.confirmado {
  background: color-mix(in srgb, var(--ok) 13%, transparent) !important;
  border-color: color-mix(in srgb, var(--ok) 32%, transparent);
  color: var(--ok) !important;
}
.dl-status-label.desistencia {
  background: color-mix(in srgb, var(--cancel, #8A93A6) 13%, transparent) !important;
  border-color: color-mix(in srgb, var(--cancel, #8A93A6) 30%, transparent);
  color: var(--cancel, #8A93A6) !important;
}
.dl-status-label.ausente {
  background: color-mix(in srgb, var(--danger) 12%, transparent) !important;
  border-color: color-mix(in srgb, var(--danger) 30%, transparent);
  color: var(--danger) !important;
}

/* Botoes de status do detalhe: mesma familia, sem cor gritante. */
.dl-btn-status {
  border-radius: 999px !important;
  font-weight: 600 !important;
  letter-spacing: .01em;
}

/* O titulo do card era branco fixo: sumia no tema claro. */
.dl-card-title { color: var(--text) !important; }

/* O dialogo tinha background-color fixo com !important sobrepondo a variavel. */
.dl-modal-dialog {
  background: var(--panel) !important;
  background-color: var(--panel) !important;
  color: var(--text) !important;
  border: 1px solid var(--line-2) !important;
  box-shadow: var(--shadow, 0 24px 60px -20px rgba(0,0,0,.6)) !important;
}

.dl-modal-overlay { background: color-mix(in srgb, var(--bg) 72%, transparent) !important; }

.dl-sidebar-box,
.dl-item-row,
.dl-card { background: var(--bg-elev) !important; }

.dl-input {
  background: var(--panel-2) !important;
  color: var(--text) !important;
  border-color: var(--line-2) !important;
}

/* Controles sobre imagem (lightbox e anexos) em vidro escuro fixo. */
:is([data-dt-theme="superlight"],[data-dt-theme="lightrose"],[data-dt-theme="lightlime"]) [style*="background:rgba(6,7,9,0.72)"],
:is([data-dt-theme="superlight"],[data-dt-theme="lightrose"],[data-dt-theme="lightlime"]) [style*="background:rgba(10,11,13,0.72)"] {
  background: color-mix(in srgb, var(--bg) 78%, transparent) !important;
  color: var(--text) !important;
}

/* --- seletor de temas: seis opcoes responsivas -------------------------- */

.dt-settings-modal div:has(> button[data-theme]) {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 8px !important;
}

.dt-settings-modal button[data-theme] {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  min-height: 44px !important;
  padding: 0 12px !important;
  font-size: 13px !important;
}

@media (max-width: 760px) {
  .dt-settings-modal div:has(> button[data-theme]) {
    grid-template-columns: 1fr !important;
  }
}

/* --- menu do projeto sempre a esquerda ---------------------------------- */
/* O titulo crescia e empurrava o menu para a borda direita. Agora o titulo
   ocupa so o proprio texto e o menu fica logo ao lado, colado a esquerda. */

.dt-project-header { justify-content: flex-start !important; }

.dt-project-title {
  flex: 0 1 auto !important;
  min-width: 0 !important;
}

.dt-project-actions { margin-right: auto !important; }

/* --- sino de notificacoes ------------------------------------------------ */
/* No celular o topo usa ordem explicita; o sino acompanha o avatar. */
@media (max-width: 760px) {
  #dt-sino {
    order: 3 !important;
    width: 40px !important;
    height: 40px !important;
    margin-left: auto;
  }
  .dt-topbar > button:last-child { margin-left: 8px !important; }
}

/* ==========================================================================
   7. REFINAMENTO VISUAL RESPONSIVO 2026
   Camada final e autoritativa para desktop, tablet e celular.
   ========================================================================== */

html { scroll-behavior: smooth; }
body {
  min-width: 280px;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
::selection { background: var(--accent); color: var(--on-accent); }
* { scrollbar-color: var(--line-2) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { background: var(--line-2); border: 3px solid transparent; border-radius: 999px; background-clip: padding-box; }
*::-webkit-scrollbar-thumb:hover { background-color: var(--faint); }

.dt-app-root {
  isolation: isolate;
  background:
    radial-gradient(900px 520px at 8% -8%, var(--accent-weak), transparent 66%),
    radial-gradient(720px 440px at 96% 12%, color-mix(in srgb, var(--accent-2) 8%, transparent), transparent 70%);
}

.dt-topbar {
  min-height: 72px;
  box-shadow: 0 10px 38px -28px rgba(0,0,0,.9);
}

.dt-main-content,
.dt-general-section,
.dt-page-tail {
  width: min(100%, 1920px) !important;
  margin-inline: auto !important;
}

.dt-dashboard-grid { gap: 14px !important; }
.dt-dashboard-card {
  min-width: 0 !important;
  border-radius: 18px !important;
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--text) 4%, transparent), 0 12px 34px -30px rgba(0,0,0,.9);
}

/* Os atalhos usam a mesma âncora, tipografia e escala do contador de Tasks. */
.dt-feature-card {
  --dt-feature-origin-x: 82%;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 120px;
  align-items: stretch !important;
  justify-content: flex-start !important;
  text-align: left !important;
  border-color: color-mix(in srgb,var(--accent) 18%,var(--line-2)) !important;
  background:
    radial-gradient(circle at var(--dt-feature-origin-x) 18%, color-mix(in srgb,var(--accent) 25%,transparent) 0, transparent 38%),
    linear-gradient(145deg,color-mix(in srgb,var(--panel-2) 94%,var(--accent) 6%),var(--panel)) !important;
  box-shadow: inset 0 1px 0 color-mix(in srgb,var(--text) 7%,transparent), 0 14px 34px -28px color-mix(in srgb,var(--accent) 38%,transparent) !important;
}

.dt-darklist-card.dt-feature-card { --dt-feature-origin-x: 18%; }
.dt-feature-card::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  opacity: .34;
  pointer-events: none;
  background: repeating-linear-gradient(112deg,transparent 0 16px,color-mix(in srgb,var(--accent) 7%,transparent) 17px 18px);
  mask-image: linear-gradient(90deg,transparent,black 35%,black 72%,transparent);
}
.dt-feature-card::after {
  content: '';
  position: absolute;
  width: 70px;
  height: 70px;
  right: 16px;
  top: 14px;
  z-index: 1;
  border: 1px solid color-mix(in srgb,var(--accent) 28%,transparent);
  border-radius: 50%;
  opacity: .48;
  pointer-events: none;
  box-shadow: inset 0 0 22px color-mix(in srgb,var(--accent) 8%,transparent), 0 0 24px color-mix(in srgb,var(--accent) 7%,transparent);
  transition: transform .35s ease, opacity .35s ease;
}
.dt-darklist-card.dt-feature-card::after { right: auto; left: 18px; border-radius: 24% 76% 62% 38%; transform: rotate(18deg); }
@media (hover:hover) and (pointer:fine) {
  .dt-feature-card:hover::after { transform: scale(1.08); opacity: .72; }
  .dt-darklist-card.dt-feature-card:hover::after { transform: rotate(25deg) scale(1.08); }
}

.dt-feature-title {
  position: relative;
  z-index: 2;
  width: 100%;
  margin-top: auto !important;
  margin-bottom: calc(10px + 11.5px * 1.35);
  font-size: 20px !important;
  line-height: 1 !important;
  text-align: left;
}

/* Visualizador leve, com profundidade e movimento orgânico. */
.dt-audio-spectrum {
  position: relative;
  width: min(92%, 96px);
  height: 30px;
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 2px !important;
  /* O brilho era um drop-shadow aqui no pai. Um filtro no pai é refeito a
   * cada quadro em que um filho muda de escala — e as barras mudam o tempo
   * todo. O brilho desceu para cada barra, como box-shadow, que viaja com a
   * camada composta e não custa repintura. */
}
.dt-audio-spectrum::before {
  content: '';
  position: absolute;
  inset: 45% 2px auto;
  height: 1px;
  background: linear-gradient(90deg,transparent,var(--line-2),transparent);
}
/* Cada barra troca de altura trinta vezes por segundo, em degraus, e todas
 * no mesmo instante (o compasso em assets/js/repouso.js): velocidades e
 * atrasos são múltiplos de 1/30 s, e a contagem de passos é velocidade × 30.
 * Um degrau de 1/30 s em barras de 3px é invisível; o que se ganha é o
 * navegador compor trinta quadros por segundo em vez de um a cada vsync. */
.dt-audio-spectrum span {
  --dt-spectrum-height: 14px;
  --dt-spectrum-speed: .9s;
  --dt-spectrum-passos: 27;
  --dt-spectrum-passos-lento: 81;
  --dt-spectrum-passos-manso: 9;
  --dt-spectrum-manso-idle: 27;
  width: 3px !important;
  height: var(--dt-spectrum-height) !important;
  min-height: 3px;
  border-radius: 999px !important;
  background: linear-gradient(180deg,var(--accent-2),var(--accent)) !important;
  transform-origin: center;
  box-shadow: 0 0 7px color-mix(in srgb,var(--accent) 32%,transparent);
  will-change: transform;
  animation: dt-spectrum-rich var(--dt-spectrum-speed, .9s) steps(var(--dt-spectrum-passos, 27)) infinite alternate !important;
  animation-delay: var(--dt-spectrum-delay, 0s) !important;
}
.dt-audio-spectrum span:nth-child(3n+1) { --dt-spectrum-height: 8px; --dt-spectrum-speed: 1s; --dt-spectrum-passos: 30; --dt-spectrum-passos-lento: 90; --dt-spectrum-passos-manso: 10; --dt-spectrum-manso-idle: 30; --dt-spectrum-delay: -.7s; }
.dt-audio-spectrum span:nth-child(3n+2) { --dt-spectrum-height: 21px; --dt-spectrum-speed: .7s; --dt-spectrum-passos: 21; --dt-spectrum-passos-lento: 63; --dt-spectrum-passos-manso: 7; --dt-spectrum-manso-idle: 21; --dt-spectrum-delay: -.3s; }
.dt-audio-spectrum span:nth-child(3n) { --dt-spectrum-height: 14px; --dt-spectrum-speed: .9s; --dt-spectrum-passos: 27; --dt-spectrum-passos-lento: 81; --dt-spectrum-passos-manso: 9; --dt-spectrum-manso-idle: 27; --dt-spectrum-delay: -.6s; }
.dt-audio-spectrum span:nth-child(5n) { --dt-spectrum-height: 26px; --dt-spectrum-speed: .6s; --dt-spectrum-passos: 18; --dt-spectrum-passos-lento: 54; --dt-spectrum-passos-manso: 6; --dt-spectrum-manso-idle: 18; }
.dt-audio-spectrum span:nth-child(7n) { --dt-spectrum-height: 18px; --dt-spectrum-delay: -.9s; }
/* Sem som no ar as barras respiram três vezes mais devagar: a duração é a
 * velocidade × 3, e a contagem de passos acompanha (× 3). */
.dt-audio-spectrum.is-idle span {
  opacity: .48;
  animation-name: dt-spectrum-idle !important;
  animation-duration: calc(var(--dt-spectrum-speed, .9s) * 3) !important;
  animation-timing-function: steps(var(--dt-spectrum-passos-lento, 81)) !important;
}
@keyframes dt-spectrum-rich {
  0% { transform: scaleY(.22); opacity: .48; }
  45% { opacity: 1; }
  100% { transform: scaleY(1); opacity: .88; }
}
@keyframes dt-spectrum-idle {
  0% { transform: scaleY(.16); }
  100% { transform: scaleY(.38); }
}

.dt-project-shell,
.dt-task-card,
.dt-darktask-card,
.dt-general-empty {
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--text) 3%, transparent), 0 16px 40px -34px rgba(0,0,0,.88);
}

.dt-project-shell { border-radius: 18px !important; }
.dt-project-header { min-height: 64px; }
.dt-project-title h3 { line-height: 1.25; }

.dt-task-grid,
.dt-darktask-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)) !important;
  gap: 14px !important;
  width: 100%;
}
.dt-task-card {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  height: auto !important;
  min-height: 172px !important;
  border-radius: 16px !important;
}
.dt-darktask-card {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
textarea,
select {
  border-radius: 12px !important;
  caret-color: var(--accent);
}
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):focus,
textarea:focus,
select:focus {
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 3px var(--accent-weak) !important;
  outline: none !important;
}

.dt-task-editor,
.dt-view-modal,
.dt-settings-modal,
.dt-audit-modal,
.dl-modal-dialog {
  box-shadow: 0 34px 90px -30px rgba(0,0,0,.92), inset 0 1px 0 color-mix(in srgb, var(--text) 5%, transparent) !important;
}

/* Os paineis de custo precisam permanecer opacos em todos os temas. */
#dl-value-overlay .dl-modal-dialog,
#dl-split-overlay .dl-modal-dialog {
  background: var(--bg-elev, #181c24) !important;
  background-color: var(--bg-elev, #181c24) !important;
  isolation: isolate;
}

#dl-value-overlay .dl-modal-dialog > div:first-child,
#dl-split-overlay .dl-modal-dialog > div:first-child {
  background: var(--panel-2, #1f2733) !important;
}

.dl-close-list-footer {
  margin-top: 8px;
  padding: 18px;
  border: 1px solid color-mix(in srgb, var(--danger) 35%, var(--line-2));
  border-radius: 16px;
  background: color-mix(in srgb, var(--danger) 7%, var(--bg-elev));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.dl-close-list-footer > div,
.dl-close-list-footer.is-closed { display: flex; flex-direction: column; gap: 4px; }
.dl-close-list-footer strong { color: var(--text); font-size: 14px; }
.dl-close-list-footer span { color: var(--muted); font-size: 12px; line-height: 1.45; }
.dl-close-list-footer.is-closed { border-color: var(--line-2); background: var(--panel); }

.dl-closed-badge {
  padding: 8px 12px;
  border: 1px solid var(--line-2);
  border-radius: 999px;
  background: var(--panel);
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.dl-card-closed { opacity: .88; }
.dl-card-closed .dl-card-progress { display: none; }

.dl-history-empty {
  padding: 64px 20px;
  text-align: center;
  color: var(--muted);
}
.dl-history-empty svg { margin-bottom: 16px; }
.dl-history-empty h3 { margin: 0 0 8px; color: var(--text); font: 600 18px 'Space Grotesk', sans-serif; }
.dl-history-empty p { margin: 0; font-size: 13px; }

@media (max-width: 620px) {
  .dl-close-list-footer { align-items: stretch; flex-direction: column; }
  .dl-close-list-footer .dl-btn-danger { width: 100%; }
}

@media (hover: hover) and (pointer: fine) {
  .dt-dashboard-card:hover,
  .dt-project-shell:hover,
  .dt-task-card:hover {
    border-color: var(--line-2) !important;
    box-shadow: 0 22px 46px -34px rgba(0,0,0,.92), inset 0 1px 0 color-mix(in srgb, var(--text) 5%, transparent) !important;
  }
}

/* FABs: círculos perfeitos retraídos, rótulo somente em hover/foco. */
.dt-quick-actions {
  right: max(16px, env(safe-area-inset-right)) !important;
  bottom: calc(92px + env(safe-area-inset-bottom)) !important;
  gap: 10px !important;
}
.dt-quick-action {
  box-sizing: border-box !important;
  width: 48px !important;
  min-width: 48px !important;
  max-width: 48px !important;
  height: 48px !important;
  min-height: 48px !important;
  padding: 0 !important;
  gap: 0 !important;
  flex: 0 0 48px !important;
  aspect-ratio: 1 / 1;
  border-radius: 50% !important;
  overflow: hidden !important;
  justify-content: center !important;
  transition: width .24s cubic-bezier(.2,.75,.25,1), max-width .24s cubic-bezier(.2,.75,.25,1), padding .24s ease, gap .24s ease, transform .16s ease, box-shadow .2s ease !important;
}
.dt-quick-action svg { flex: 0 0 auto; }
.dt-quick-action span {
  display: block;
  max-width: 0 !important;
  opacity: 0 !important;
  overflow: hidden;
  transition: max-width .24s cubic-bezier(.2,.75,.25,1), opacity .16s ease !important;
}
@media (hover: hover) and (pointer: fine) {
  .dt-quick-action:hover,
  .dt-quick-action:focus-visible {
    width: var(--dt-fab-open, 190px) !important;
    max-width: var(--dt-fab-open, 190px) !important;
    padding: 0 17px 0 14px !important;
    gap: 9px !important;
    border-radius: 24px !important;
    justify-content: flex-start !important;
  }
  .dt-quick-action[data-dt-quick-action="general-task"] { --dt-fab-open: 174px; }
  .dt-quick-action[data-dt-quick-action="general-audio"] { --dt-fab-open: 232px; }
  .dt-quick-action:hover span,
  .dt-quick-action:focus-visible span { max-width: 190px !important; opacity: 1 !important; }
}

/* Novo seletor de captura em áudio. */
.dt-task-kind-switch {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px;
  margin: -4px 0 22px;
  padding: 5px;
  border: 1px solid var(--line-2);
  border-radius: 14px;
  background: color-mix(in srgb, var(--bg-elev) 86%, transparent);
}
.dt-task-kind-switch[hidden] { display: none !important; }
.dt-task-kind-switch button {
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid transparent !important;
  border-radius: 10px !important;
  background: transparent !important;
  color: var(--muted) !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: 13px !important;
  font-weight: 650 !important;
}
.dt-task-kind-switch button.is-active {
  color: var(--text) !important;
  border-color: color-mix(in srgb, var(--accent) 34%, transparent) !important;
  background: var(--accent-weak) !important;
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--text) 5%, transparent) !important;
}
.dt-task-kind-switch button.is-active svg { color: var(--accent-text); }
.dt-audio-only-intro {
  display: none;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
  padding: 13px 14px;
  border: 1px solid color-mix(in srgb, var(--accent) 32%, var(--line));
  border-radius: 14px;
  background: linear-gradient(135deg, var(--accent-weak), transparent);
}
.dt-audio-only-intro > span {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--accent);
  color: var(--on-accent);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  box-shadow: 0 8px 20px -10px var(--accent);
}
.dt-audio-only-intro strong,
.dt-audio-only-intro small { display: block; }
.dt-audio-only-intro strong { font: 650 14px 'Space Grotesk', sans-serif; }
.dt-audio-only-intro small { margin-top: 3px; color: var(--muted); font-size: 11.5px; line-height: 1.45; }
.dt-task-editor[data-task-kind="audio"] .dt-task-normal-only { display: none !important; }
.dt-task-editor[data-task-kind="audio"] .dt-audio-only-intro { display: flex; }
.dt-task-editor[data-task-kind="audio"] .dt-audio-note-panel {
  border-color: color-mix(in srgb, var(--accent) 36%, var(--line)) !important;
  background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 8%, var(--panel)), var(--panel)) !important;
}
.dt-task-editor[data-task-kind="audio"] .dt-task-editor-actions { padding-top: 2px; }
[data-dt-theme="neon"] :is(.dt-project-shell,.dt-task-card,.dt-dashboard-card) {
  border-color: color-mix(in srgb, #5CF0E6 18%, var(--line)) !important;
}

/* Tablet: densidade confortável e controles que não se comprimem. */
@media (min-width: 761px) and (max-width: 1180px) {
  .dt-topbar { padding-inline: 22px !important; }
  .dt-main-content { padding-inline: 22px !important; }
  .dt-dashboard-card { flex: 1 1 calc(50% - 14px) !important; min-height: 136px !important; }
  .dt-task-grid,
  .dt-darktask-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .dt-project-header { align-items: flex-start !important; flex-wrap: wrap !important; }
  .dt-project-title { flex: 1 1 calc(100% - 32px) !important; }
  .dt-project-actions { margin-left: 25px !important; }
  .dt-settings-modal { width: calc(100vw - 32px) !important; height: calc(100dvh - 32px) !important; }
  .dt-view-modal { width: min(760px, calc(100vw - 32px)) !important; }
}

/* Celular: uma coluna, gestos seguros e ações sempre alcançáveis. */
@media (max-width: 760px) {
  body { padding-bottom: calc(82px + env(safe-area-inset-bottom)) !important; }
  .dt-main-content,
  .dt-general-section { padding-inline: 12px !important; }
  .dt-dashboard-grid { gap: 10px !important; }
  .dt-project-shell { border-radius: 16px !important; }
  .dt-project-header { padding: 13px !important; }
  .dt-task-grid,
  .dt-darktask-grid { grid-template-columns: minmax(0, 1fr) !important; }
  .dt-task-card { min-height: 154px !important; padding: 14px !important; }
  .dt-task-editor {
    width: calc(100vw - 16px) !important;
    max-width: none !important;
    max-height: calc(100dvh - 16px) !important;
    padding: 18px 16px calc(18px + env(safe-area-inset-bottom)) !important;
    border-radius: 18px !important;
  }
  [data-dt-task-overlay] { align-items: flex-start !important; padding: 8px !important; }
  .dt-task-kind-switch { margin-bottom: 18px; }
  .dt-task-kind-switch button { min-height: 46px; padding-inline: 9px; font-size: 12.5px !important; }
  .dt-audio-only-intro { align-items: flex-start; }
  .dt-audio-note-panel { padding: 12px !important; }
  .dt-task-editor-actions {
    position: sticky;
    bottom: calc(-18px - env(safe-area-inset-bottom));
    z-index: 3;
    margin: 4px -16px calc(-18px - env(safe-area-inset-bottom));
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
    background: color-mix(in srgb, var(--bg-elev) 94%, transparent);
    border-top: 1px solid var(--line);
    backdrop-filter: blur(18px);
  }
  .dt-task-editor-actions > button { flex: 1 1 0; min-height: 46px; padding-inline: 10px !important; }
  .dt-quick-actions { right: max(12px, env(safe-area-inset-right)) !important; bottom: calc(78px + env(safe-area-inset-bottom)) !important; }
  .dt-quick-action { width: 48px !important; min-width: 48px !important; max-width: 48px !important; border-radius: 50% !important; }
  .dt-quick-action span { display: none !important; }
  .dt-view-layout { flex-direction: column; overflow-y: auto; }
  .dt-view-main { overflow: visible; padding: 18px !important; }
  .dt-view-attachments { width: 100% !important; min-width: 0 !important; border-left: 0 !important; border-top: 1px solid var(--line); }
}

@media (max-width: 390px) {
  .dt-task-kind-switch button span { font-size: 11.5px; }
  .dt-task-kind-switch button { gap: 6px; padding-inline: 6px; }
  .dt-project-actions { max-width: calc(100vw - 52px) !important; overflow-x: auto !important; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .dt-quick-action,
  .dt-quick-action span { transition-duration: .01ms !important; }
}

/* Salvamento persistente e estado inequívoco do destaque DarkTask. */
.dt-save-button {
  min-width: 92px;
  height: 38px;
  padding: 0 12px;
  border: 1px solid var(--line-2);
  border-radius: 11px;
  background: color-mix(in srgb,var(--panel-2) 82%,transparent);
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  flex: none;
  font: 650 11.5px 'Manrope',sans-serif;
  cursor: pointer;
  transition: border-color .18s ease, background-color .18s ease, color .18s ease, box-shadow .18s ease;
}
.dt-save-button:hover { border-color: var(--accent); color: var(--text); background: var(--accent-weak); }
.dt-save-button:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--accent-weak); border-color: var(--accent); }
.dt-save-button[data-save-state="saving"] { border-color: var(--accent); color: var(--accent-text); cursor: progress; }
.dt-save-button[data-save-state="saving"] svg { animation: dt-cloud-pulse .8s steps(24) infinite; }
.dt-save-button[data-save-state="saved"] { border-color: color-mix(in srgb,var(--ok) 58%,var(--line-2)); color: var(--ok); background: color-mix(in srgb,var(--ok) 10%,var(--panel-2)); }
.dt-save-button[data-save-state="error"] { border-color: var(--danger); color: var(--danger); background: color-mix(in srgb,var(--danger) 9%,var(--panel-2)); }

.dt-supertask-toggle[aria-pressed="true"] {
  border-color: var(--accent) !important;
  background: var(--accent) !important;
  color: var(--on-accent) !important;
  box-shadow: 0 0 0 3px var(--accent-weak), 0 8px 20px -14px var(--accent) !important;
}
.dt-supertask-toggle[aria-pressed="true"] svg { fill: currentColor; stroke: currentColor; }
.dt-supertask-toggle[aria-pressed="false"] svg { fill: transparent; }
.dt-supertask-form-toggle[aria-pressed="true"] { box-shadow: 0 0 0 3px var(--accent-weak); }

@media (max-width: 760px) {
  .dt-save-button { width: 38px; min-width: 38px; padding: 0; border-radius: 999px; }
  .dt-save-button [data-dt-save-label] { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
}

@media (max-width: 420px) {
  .dt-topbar .dt-save-button { width: 36px; min-width: 36px; height: 36px; }
}

@media (prefers-reduced-motion: reduce) {
  .dt-save-button,
  .dt-save-button svg,
  .dt-supertask-toggle { animation: none !important; transition-duration: .01ms !important; }
}

@media print {
  .dt-quick-actions { display: none !important; }
}

/* ==========================================================================
   8. INSIGHTS EM ÁUDIO — gravação livre e tratada
   ========================================================================== */

.dt-audio-note-overlay {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: grid;
  place-items: center;
  padding: 18px;
  background: color-mix(in srgb, var(--bg) 72%, transparent);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  animation: dt-fade .18s ease;
}
.dt-audio-note-dialog {
  width: min(520px, 100%);
  overflow: hidden;
  border: 1px solid var(--line-2);
  border-radius: 22px;
  background: var(--bg-elev);
  box-shadow: 0 34px 100px -30px rgba(0,0,0,.92), inset 0 1px 0 color-mix(in srgb, var(--text) 5%, transparent);
  animation: dt-scaleIn .22s ease;
}
.dt-audio-note-dialog header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 18px 20px;
  border-bottom: 1px solid var(--line);
  background: var(--glass-2);
}
.dt-audio-note-icon {
  width: 40px;
  height: 40px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--accent);
  color: var(--on-accent);
}
.dt-audio-note-dialog header > div { min-width: 0; flex: 1; }
.dt-audio-note-dialog h2 { margin: 0; font: 700 18px 'Space Grotesk',sans-serif; }
.dt-audio-note-dialog header p { margin: 3px 0 0; color: var(--muted); font-size: 12px; }
.dt-audio-note-dialog [data-audio-note-close] {
  width: 34px;
  height: 34px;
  border: 1px solid var(--line-2);
  border-radius: 10px;
  background: transparent;
  color: var(--muted);
  font-size: 21px;
}
.dt-audio-note-body { padding: 22px; }
.dt-audio-note-recording { text-align: center; }
.dt-audio-rec-dot {
  width: 14px;
  height: 14px;
  display: inline-block;
  margin-right: 8px;
  border-radius: 50%;
  background: var(--danger);
  box-shadow: 0 0 0 7px color-mix(in srgb,var(--danger) 13%,transparent);
  animation: dt-pulse 1.2s steps(36) infinite;
}
.dt-audio-note-recording strong { font-size: 14px; }
.dt-audio-note-recording time { display: block; margin: 18px 0 12px; font: 700 34px 'JetBrains Mono',monospace; letter-spacing: -.04em; }
.dt-audio-level { height: 5px; margin: 0 auto 16px; overflow: hidden; border-radius: 99px; background: var(--line); }
.dt-audio-level i { display: block; width: 30%; height: 100%; border-radius: inherit; background: var(--accent); transition: width .14s linear; }
.dt-audio-note-recording p { margin: 0 0 18px; color: var(--muted); font-size: 12.5px; }
.dt-audio-note-stop,
.dt-audio-note-save {
  min-height: 44px;
  padding: 0 18px;
  border: 1px solid var(--accent) !important;
  border-radius: 11px !important;
  background: var(--accent) !important;
  color: var(--on-accent) !important;
  font-weight: 700 !important;
}
.dt-audio-note-title-step[hidden],.dt-audio-note-footer[hidden],.dt-audio-note-recording[hidden] { display: none !important; }
.dt-audio-note-title-step label { display: block; margin-bottom: 8px; color: var(--text); font-size: 13px; font-weight: 650; }
.dt-audio-note-title-step input { width: 100%; min-height: 48px; padding: 0 13px; background: var(--panel-2); border: 1px solid var(--line-2); color: var(--text); font-size: 15px; }
.dt-audio-note-title-step small { display: block; margin: 7px 0 16px; color: var(--faint); font-size: 11.5px; }
.dt-audio-note-title-step audio { width: 100%; height: 42px; }
.dt-audio-note-error { min-height: 18px; margin-top: 9px; color: var(--danger); font-size: 12px; }
.dt-audio-note-footer { display: flex; justify-content: flex-end; gap: 9px; padding: 14px 20px; border-top: 1px solid var(--line); background: var(--panel); }
.dt-audio-note-footer [data-audio-note-discard] { min-height: 44px; padding: 0 16px; border: 1px solid var(--line-2); border-radius: 11px; background: transparent; color: var(--text); }
.dt-insight-audio-player { min-height: 74px; padding: 10px; display: flex; flex-direction: column; justify-content: center; gap: 8px; }
.dt-insight-audio-player > span { color: var(--accent-text); }
.dt-insight-audio-player audio { width: 100%; height: 34px; }

/* ==========================================================================
   9. DARKLIST — workspace editorial monocromático
   ========================================================================== */

.dt-darktasks-container:has(#darklist-container) {
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
#darklist-container .dl-wrapper { padding: 0 !important; }
.dl-hero {
  position: relative;
  overflow: hidden;
  min-height: 210px;
  padding: clamp(24px,4vw,48px);
  border: 1px solid var(--line-2);
  border-radius: 24px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 30px;
  background:
    linear-gradient(135deg,color-mix(in srgb,var(--panel) 92%,transparent),color-mix(in srgb,var(--bg-elev) 96%,transparent)),
    var(--bg-elev);
  box-shadow: inset 0 1px 0 color-mix(in srgb,var(--text) 5%,transparent),0 28px 64px -54px rgba(0,0,0,.9);
}
.dl-hero::after {
  content: 'LISTAS';
  position: absolute;
  right: 30px;
  top: -28px;
  color: color-mix(in srgb,var(--text) 3%,transparent);
  font: 800 clamp(74px,10vw,150px) 'Space Grotesk',sans-serif;
  letter-spacing: -.08em;
  pointer-events: none;
}
/* Nove letras contra as cinco de LISTA: no corpo herdado a palavra passaria
   por trás do título. O corpo menor a mantém como marca de canto. */
#darklist-container .dl-hero::after { font-size: clamp(56px, 7.6vw, 116px); }

.dl-hero-copy,.dl-hero-side { position: relative; z-index: 1; }
.dl-eyebrow,.dl-section-heading > div > span {
  display: block;
  color: var(--faint);
  font: 650 10px 'JetBrains Mono',monospace;
  letter-spacing: .16em;
}
.dl-hero-copy h2 { margin: 10px 0 8px; font: 750 clamp(36px,5vw,64px) 'Space Grotesk',sans-serif; letter-spacing: -.055em; }
.dl-hero-copy p { max-width: 560px; margin: 0; color: var(--muted); font-size: clamp(13px,1.3vw,16px); line-height: 1.55; }
.dl-hero-side { display: flex; align-items: flex-end; gap: 20px; }
.dl-hero-metric { min-width: 116px; padding-right: 20px; border-right: 1px solid var(--line-2); }
.dl-hero-metric strong { display: block; font: 700 34px 'JetBrains Mono',monospace; }
.dl-hero-metric span { display: block; margin-top: 2px; color: var(--faint); font-size: 10.5px; }
.dl-quiet-action { min-height: 42px; padding: 0 14px; border: 1px solid var(--line-2); border-radius: 12px; background: transparent; color: var(--text); display: inline-flex; align-items: center; gap: 8px; }

.dl-workspace-nav.dl-tabs {
  width: 100% !important;
  max-width: none !important;
  margin: 18px 0 42px !important;
  padding: 0 !important;
  gap: 0 !important;
  border: 0 !important;
  border-bottom: 1px solid var(--line-2) !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
.dl-workspace-nav .dl-tab-btn {
  position: relative;
  min-height: 58px !important;
  padding: 0 24px !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: var(--muted) !important;
  gap: 9px !important;
}
.dl-workspace-nav .dl-tab-btn::after { content:''; position:absolute; left:24px; right:24px; bottom:-1px; height:2px; background:transparent; }
.dl-workspace-nav .dl-tab-btn.active { color: var(--text) !important; }
.dl-workspace-nav .dl-tab-btn.active::after { background: var(--text); }
.dl-nav-index { color: var(--faint); font: 600 9px 'JetBrains Mono',monospace; }

.dl-section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:18px; }
.dl-section-heading h3 { margin:6px 0 0; font:700 clamp(20px,2vw,28px) 'Space Grotesk',sans-serif; letter-spacing:-.025em; }
.dl-create-shortcut { min-height:42px; padding:0 8px 0 14px; border:1px solid var(--line-2); border-radius:12px; background:transparent; color:var(--text); display:inline-flex; align-items:center; gap:12px; font-weight:650; }
.dl-create-shortcut > span { width:28px; height:28px; border-radius:8px; display:grid; place-items:center; background:var(--text); color:var(--bg); font-size:16px; }

.dl-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fill,minmax(min(100%,340px),420px)) !important;
  gap: 16px !important;
  align-items: stretch !important;
}
.dl-card {
  box-sizing: border-box;
  width: 100% !important;
  max-width: none !important;
  min-height: 272px;
  padding: 22px !important;
  border: 1px solid var(--line-2) !important;
  border-radius: 18px !important;
  background: color-mix(in srgb,var(--bg-elev) 88%,var(--panel)) !important;
  color: var(--text) !important;
  text-align: left;
  display: flex !important;
  flex-direction: column;
  gap: 0 !important;
  box-shadow: inset 0 1px 0 color-mix(in srgb,var(--text) 4%,transparent) !important;
}
.dl-card:hover { transform: translateY(-3px); border-color: color-mix(in srgb,var(--text) 25%,var(--line-2)) !important; box-shadow:0 24px 50px -42px rgba(0,0,0,.9),inset 0 1px 0 color-mix(in srgb,var(--text) 6%,transparent) !important; }
.dl-card-kicker { display:flex; align-items:center; justify-content:space-between; gap:12px; color:var(--faint); font:650 9px 'JetBrains Mono',monospace; letter-spacing:.12em; }
.dl-card-header { margin-top:28px; align-items:flex-start !important; }
.dl-card-title { color:var(--text) !important; font-size:22px !important; line-height:1.15; letter-spacing:-.025em; white-space:normal !important; }
.dl-card-arrow { width:30px; height:30px; flex:none; border:1px solid var(--line-2); border-radius:50%; display:grid; place-items:center; color:var(--muted); font-size:14px; }
.dl-card-desc { height:auto !important; min-height:38px; margin-top:8px !important; color:var(--muted) !important; font-size:12.5px !important; }
/* O trilho inteiro fica à vista, bem claro: é ele que diz o tamanho do que
   ainda falta. Com 2px na cor da linha ele sumia, e a lista pela metade tinha
   o mesmo desenho da lista quase pronta. O preenchimento é a cor de contraste
   escolhida na conta — a mesma que marca a aba ativa e o botão principal. */
/* O `!important` com a raiz por inteiro não é capricho: a receita de vidro do
   floating-shell.css zera o fundo de toda família `[class*="-card"]` com
   `background: transparent !important`, e o nome desta barra cai no filtro.
   Sem repetir a força, o trilho nasce invisível — foi o que aconteceu. */
html body .dt-app-root .dl-card-progress {
  height:7px; margin:22px 0 12px; overflow:hidden; border-radius:999px;
  background: color-mix(in srgb, var(--text) 10%, transparent) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
.dl-card-progress > span {
  display:block; height:100%; border-radius:999px;
  background: var(--accent);
  transition: width .38s cubic-bezier(.22,.61,.36,1);
}
@media (prefers-reduced-motion: reduce) { .dl-card-progress > span { transition: none; } }
.dl-card-status { display:flex; flex-direction:column; gap:3px; }
.dl-card-status strong { font-size:12px; color:var(--text); }
.dl-card-status > span { color:var(--faint); font-size:10.5px; line-height:1.4; }
.dl-card-footer { margin-top:auto !important; padding-top:16px !important; color:var(--faint) !important; }
.dl-card-members { display:inline-flex; align-items:center; gap:6px; }
.dl-card-total { color:var(--text) !important; font-family:'JetBrains Mono',monospace; }

.dl-editor-header { padding:24px !important; border:1px solid var(--line-2) !important; border-radius:20px; background:var(--bg-elev); }
.dl-editor-header h2 { font-size:clamp(24px,3vw,36px) !important; letter-spacing:-.035em; }
/* Uma célula por status do tipo, mais o total e, quando existe, o progresso:
   seis no checklist, oito num tipo Filmes. Como o número varia, a grade se
   ajusta sozinha em vez de fixar quatro colunas — o que sobra de uma linha
   ganha a largura inteira em vez de deixar um buraco no fim. As divisórias
   viram um traço em volta de cada célula, que é o único desenho que funciona
   quando não se sabe onde a linha quebra. */
.dl-editor-overview { display:grid; grid-template-columns:repeat(auto-fit,minmax(146px,1fr)); border:1px solid var(--line-2); border-radius:16px; overflow:hidden; gap:1px; background:var(--line-2); }
.dl-editor-overview > div { background:var(--bg-elev); }
.dl-editor-overview > div+div { border-left:0; }
@media (max-width: 640px) {
  .dl-editor-overview { grid-template-columns:repeat(auto-fit,minmax(118px,1fr)); }
  .dl-editor-overview > div { min-height:88px; padding:12px 13px; }
}

/* --- Listas: o tipo escolhido na criação ------------------------------------
   Treze opções em cartões de ícone e nome. Traço é dado, preenchimento é
   botão: a opção escolhida ganha a cor de acento na borda e no texto, não um
   bloco cheio, porque ela continua sendo uma escolha entre iguais. */
.dl-tipo-grade {
  display:grid; grid-template-columns:repeat(auto-fill,minmax(148px,1fr)); gap:8px; margin-bottom:10px;
}
.dl-tipo-opcao {
  display:flex; align-items:center; gap:9px; padding:11px 12px; min-height:44px;
  border:1px solid var(--line-2); border-radius:12px; background:transparent;
  color:var(--muted); font:500 12.5px 'Manrope',sans-serif; text-align:left; cursor:pointer;
  transition:border-color .16s, color .16s, background .16s;
}
.dl-tipo-opcao svg { flex:none; color:var(--faint); }
.dl-tipo-opcao span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dl-tipo-opcao:hover { border-color:var(--accent); color:var(--text); }
.dl-tipo-opcao.ativo { border-color:var(--accent); color: var(--accent-text); background:var(--accent-weak); }
.dl-tipo-opcao.ativo svg { color: var(--accent-text); }
.dl-tipo-dica { margin:0; color:var(--faint); font-size:11.5px; line-height:1.5; }

.dl-tipo-selo {
  display:inline-flex; align-items:center; gap:5px; padding:3px 9px;
  border:1px solid var(--line-2); border-radius:999px;
  color:var(--muted); font:500 11px 'Manrope',sans-serif; white-space:nowrap;
}
.dl-tipo-selo svg { color:var(--faint); }
.dl-card-tipo { display:inline-flex; align-items:center; gap:4px; }

/* A cor de um status vem do catálogo (api/list_types.php), como var() do
   design system, e chega a cada botão por --dl-cor. Nenhuma regra nomeia um
   status: o mesmo par de regras serve aos treze tipos.

   Traço é dado, preenchimento é botão — e aqui vale o que o Checklist já
   fazia: em repouso o botão é neutro, e só quem está aceso ganha a cor do
   próprio status. Estas regras vivem no fim do arquivo (procure por
   "Listas: a cor do status") porque precisam vir depois das antigas. */

/* A foto do item: miniatura quadrada de 44px, a mesma altura da faixa. */
.dl-item-foto {
  flex:none; width:44px; height:44px; padding:0; overflow:hidden;
  border:1px solid var(--line-2); border-radius:10px; background:var(--panel-2); cursor:pointer;
}
.dl-item-foto img { display:block; width:100%; height:100%; object-fit:cover; }
.dl-item-foto:hover { border-color:var(--accent); }
.dl-btn-foto.tem-foto { color: var(--accent-text) !important; }
.dl-foto-overlay { display:flex; align-items:center; justify-content:center; padding:24px; z-index:2147483200; }
.dl-foto-caixa { max-width:min(880px,92vw); max-height:88vh; display:flex; flex-direction:column; gap:12px; }
.dl-foto-caixa img { max-width:100%; max-height:72vh; object-fit:contain; border-radius:16px; border:1px solid var(--line-2); background:var(--panel); }
.dl-foto-acoes { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.dl-foto-acoes > span { color:var(--text); font:500 13px 'Manrope',sans-serif; min-width:0; overflow:hidden; text-overflow:ellipsis; }
.dl-foto-acoes > div { display:flex; gap:8px; flex:none; }
.dl-editor-overview > div { min-height:104px; padding:16px 18px; display:flex; flex-direction:column; justify-content:center; }
.dl-editor-overview > div+div { border-left:1px solid var(--line-2); }
.dl-editor-overview span { color:var(--faint); font:650 9px 'JetBrains Mono',monospace; letter-spacing:.12em; }
.dl-editor-overview strong { margin-top:6px; font:700 25px 'JetBrains Mono',monospace; }
.dl-editor-overview small { margin-top:2px; color:var(--muted); font-size:10.5px; }

.dl-item-row { padding:13px 14px !important; border-color:var(--line) !important; background:var(--panel) !important; }
.dl-item-row:hover { border-color:var(--line-2) !important; }
.dl-btn-status,
.dl-btn-status.active.pendente,
.dl-btn-status.active.confirmado,
.dl-btn-status.active.desistencia,
.dl-btn-status.active.ausente {
  border-color:var(--line-2) !important;
  background:transparent !important;
  color:var(--muted) !important;
  box-shadow:none !important;
}
.dl-btn-status.active { background:var(--text) !important; color:var(--bg) !important; border-color:var(--text) !important; }
.dl-status-label,
.dl-status-label.pendente,
.dl-status-label.confirmado,
.dl-status-label.desistencia,
.dl-status-label.ausente { background:var(--panel-2) !important; color:var(--muted) !important; border-color:var(--line) !important; }
.dl-filter-btn.active { color:var(--text) !important; background:var(--panel-2) !important; }

@media(max-width:900px){
  .dl-hero { min-height:190px; align-items:flex-start; }
  .dl-hero-side { flex-direction:column; align-items:flex-end; }
  .dl-editor-overview { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .dl-editor-overview > div:nth-child(3) { border-left:0; border-top:1px solid var(--line-2); }
  .dl-editor-overview > div:nth-child(4) { border-top:1px solid var(--line-2); }
}
@media(max-width:760px){
  .dt-audio-note-overlay { padding:8px; align-items:end; }
  .dt-audio-note-dialog { border-radius:20px 20px 10px 10px; }
  .dt-audio-note-dialog header,.dt-audio-note-body { padding:16px; }
  .dt-audio-note-footer { padding:12px 16px calc(12px + env(safe-area-inset-bottom)); }
  .dt-audio-note-footer > button { flex:1 1 0; }
  .dl-hero { min-height:0; padding:24px 20px; border-radius:18px; flex-direction:column; align-items:stretch; }
  .dl-hero::after { right:-10px; top:20px; font-size:68px; }
  .dl-hero-copy h2 { font-size:42px; }
  .dl-hero-side { flex-direction:row; align-items:center; justify-content:space-between; }
  .dl-hero-metric { display:none; }
  .dl-workspace-nav.dl-tabs { margin:12px 0 28px !important; }
  .dl-workspace-nav .dl-tab-btn { min-height:50px !important; padding:0 16px !important; }
  .dl-workspace-nav .dl-tab-btn::after { left:16px; right:16px; }
  .dl-nav-index { display:none; }
  .dl-section-heading { align-items:center; }
  .dl-section-heading h3 { font-size:21px; }
  .dl-create-shortcut { width:42px; padding:0 6px; font-size:0; gap:0; }
  .dl-create-shortcut > span { width:28px; }
  .dl-grid { grid-template-columns:1fr !important; }
  .dl-card { min-height:250px; padding:19px !important; }
  .dl-editor-header { padding:18px !important; }
  .dl-editor-overview { grid-template-columns:1fr 1fr; }
  .dl-editor-overview > div { min-height:88px; padding:13px; }
  .dl-editor-overview small { display:none; }
  .dl-status-buttons { width:100%; display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .dl-btn-status { min-height:38px; }
}

.dl-btn-status.active.pendente,
.dl-btn-status.active.confirmado,
.dl-btn-status.active.desistencia,
.dl-btn-status.active.ausente {
  background:var(--text) !important;
  color:var(--bg) !important;
  border-color:var(--text) !important;
}

/* ==========================================================================
   10. DESPERTADOR, CARDS FIXOS E RESPONSIVO FINAL
   ========================================================================== */

/* Um card isolado preserva a mesma largura dos demais dentro do projeto.

   A grade das Prioritárias entra na mesma regra. Ela vive fora do
   `.dt-project-shell`, então caía na regra geral de `auto-fit` com colunas
   elásticas: com três cartões a linha se dividia em três fatias de 340px, e a
   mesma tarefa tinha um tamanho em cima e outro embaixo. O cartão é o mesmo
   objeto nos dois lugares; a medida também precisa ser. */
.dt-project-shell .dt-task-grid,
.dt-darktasks-container .dt-task-grid {
  grid-template-columns: repeat(auto-fill, 286px) !important;
  justify-content: start !important;
  align-items: stretch !important;
}
.dt-project-shell .dt-task-card,
.dt-darktasks-container .dt-task-card {
  width: 286px !important;
  min-width: 286px !important;
  max-width: 286px !important;
}

/* O FAB nunca muda de forma. O rotulo e uma camada independente ao lado. */
.dt-quick-action,
.dt-quick-action:hover,
.dt-quick-action:focus-visible {
  position: relative !important;
  width: 48px !important;
  min-width: 48px !important;
  max-width: 48px !important;
  height: 48px !important;
  padding: 0 !important;
  gap: 0 !important;
  flex: 0 0 48px !important;
  overflow: visible !important;
  border-radius: 50% !important;
  justify-content: center !important;
  transition: transform .2s cubic-bezier(.2,.7,.2,1), filter .2s ease,
    box-shadow .24s ease, border-color .2s ease, background-color .2s ease !important;
}
.dt-quick-action:hover,
.dt-quick-action:focus-visible { transform: translateY(-2px) !important; }
.dt-quick-action:active { transform: translateY(0) scale(.96) !important; }
.dt-quick-action > span {
  position: absolute !important;
  right: calc(100% + 10px);
  top: 50%;
  display: block !important;
  width: max-content;
  max-width: min(230px, calc(100vw - 86px)) !important;
  padding: 8px 11px;
  overflow: hidden !important;
  border: 1px solid var(--line-2);
  border-radius: 10px;
  background: color-mix(in srgb, var(--bg-elev) 94%, transparent);
  color: var(--text);
  box-shadow: 0 12px 30px -18px rgba(0,0,0,.9);
  opacity: 0 !important;
  transform: translate(6px,-50%) scale(.98);
  transform-origin: right center;
  pointer-events: none;
  transition: opacity .16s ease, transform .2s cubic-bezier(.2,.7,.2,1) !important;
}
.dt-quick-action:hover > span,
.dt-quick-action:focus-visible > span {
  max-width: min(230px, calc(100vw - 86px)) !important;
  opacity: 1 !important;
  transform: translate(0,-50%) scale(1);
}
.dt-quick-action-alarm {
  border-color: var(--line-2) !important;
  background: var(--bg-elev) !important;
  color: var(--accent-text) !important;
}
.dt-quick-actions {
  bottom: calc(var(--dt-timeline-space, 96px) + 14px) !important;
}

/* A estacao de midia precisa de mais largura que um card de metrica. */
@media (min-width: 1221px) {
  .dt-media-card { flex: 1.45 1 340px !important; min-width: 320px !important; }
  .dt-dashboard-card:not(.dt-media-card) { min-width: 190px !important; }
}
.dt-media-station-tab {
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.dt-timeline-action {
  /* 32px é o piso de alvo do app; a linha do tempo é estreita, então o botão
     cresce por dentro, com o padding, e não por fora. */
  min-height: 32px;
  padding: 6px 10px;
  border: 1px solid var(--line-2);
  border-radius: 9px;
  background: transparent;
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font: 600 11.5px 'Manrope',sans-serif;
  white-space: nowrap;
  cursor: pointer;
  transition: color .16s ease, border-color .16s ease, background-color .16s ease;
}
.dt-timeline-action:hover,
.dt-timeline-action:focus-visible {
  color: var(--accent-text);
  border-color: var(--accent);
  background: var(--accent-weak);
}
.dt-alarm-timeline-marker { transition: transform .16s ease, filter .16s ease, box-shadow .16s ease; }
.dt-alarm-timeline-marker:hover,
.dt-alarm-timeline-marker:focus-visible {
  z-index: 12 !important;
  transform: translateX(-50%) translateY(-2px) !important;
  filter: brightness(1.08);
  box-shadow: 0 8px 18px -9px rgba(0,0,0,.9) !important;
}
.dt-page-tail footer {
  padding-bottom: calc(var(--dt-timeline-space, 96px) + 24px + env(safe-area-inset-bottom)) !important;
}

/* Editor de despertadores. */
.dt-alarm-overlay {
  position: fixed;
  inset: 0;
  z-index: 150;
  display: grid;
  place-items: center;
  padding: 18px;
  background: color-mix(in srgb, var(--bg) 70%, transparent);
  color: var(--text);
  font-family: 'Manrope',sans-serif;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  animation: dt-fade .18s ease;
}
.dt-alarm-dialog {
  width: min(930px, 100%);
  max-height: min(760px, calc(100dvh - 36px));
  overflow: hidden;
  border: 1px solid var(--line-2);
  border-radius: 22px;
  background: var(--bg-elev);
  box-shadow: 0 36px 110px -34px rgba(0,0,0,.95),
    inset 0 1px 0 color-mix(in srgb,var(--text) 5%,transparent);
  animation: dt-scaleIn .22s ease;
}
.dt-alarm-dialog > header {
  min-height: 74px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--line);
  background: var(--glass-2);
  display: flex;
  align-items: center;
  gap: 12px;
}
.dt-alarm-head-icon,
.dt-alarm-ring-icon {
  width: 42px;
  height: 42px;
  flex: none;
  border-radius: 50%;
  background: var(--accent);
  color: var(--on-accent);
  display: grid;
  place-items: center;
}
.dt-alarm-dialog > header > div { min-width: 0; flex: 1; }
.dt-alarm-dialog h2 { margin: 0; font: 700 19px 'Space Grotesk',sans-serif; }
.dt-alarm-dialog > header p { margin: 3px 0 0; color: var(--muted); font-size: 12px; }
.dt-alarm-dialog [data-alarm-close] {
  width: 36px;
  height: 36px;
  flex: none;
  border: 1px solid var(--line-2);
  border-radius: 10px;
  background: transparent;
  color: var(--muted);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.dt-alarm-layout {
  max-height: calc(min(760px, 100dvh - 36px) - 74px);
  overflow: auto;
  display: grid;
  grid-template-columns: minmax(280px, 330px) minmax(0, 1fr);
  align-items: start;
}
.dt-alarm-form,
.dt-alarm-scheduled { padding: 22px; }
.dt-alarm-form {
  position: sticky;
  top: 0;
  border-right: 1px solid var(--line);
  background: var(--bg-elev);
}
.dt-alarm-section-head {
  min-height: 42px;
  margin-bottom: 18px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 14px;
}
.dt-alarm-section-head span {
  display: block;
  margin-bottom: 4px;
  color: var(--faint);
  font: 650 9px 'JetBrains Mono',monospace;
  letter-spacing: .14em;
}
.dt-alarm-section-head h3 { margin: 0; font: 700 18px 'Space Grotesk',sans-serif; }
.dt-alarm-section-head small { color: var(--faint); font-size: 11px; }
.dt-alarm-form > label {
  display: block;
  margin-bottom: 14px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 650;
}
.dt-alarm-form input {
  width: 100%;
  min-height: 46px;
  margin-top: 7px;
  padding: 0 13px;
  border: 1px solid var(--line-2);
  border-radius: 12px;
  background: var(--panel-2);
  color: var(--text);
  font: 500 15px 'Manrope',sans-serif;
}
.dt-alarm-form input[type="time"] { font-family: 'JetBrains Mono',monospace; }
.dt-alarm-form fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.dt-alarm-form legend { margin-bottom: 8px; color: var(--muted); font-size: 12px; font-weight: 650; }
.dt-alarm-days { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 4px; }
.dt-alarm-days button {
  min-width: 0;
  height: 36px;
  padding: 0;
  border: 1px solid var(--line-2);
  border-radius: 9px;
  background: transparent;
  color: var(--muted);
  font: 650 10px 'Manrope',sans-serif;
  cursor: pointer;
}
.dt-alarm-days button.is-active {
  border-color: var(--accent);
  background: var(--accent-weak);
  color: var(--accent-text);
}
.dt-alarm-error { min-height: 18px; margin-top: 9px; color: var(--danger); font-size: 12px; }
.dt-alarm-form-actions { margin-top: 8px; display: flex; justify-content: flex-end; gap: 8px; }
.dt-alarm-form-actions button {
  min-height: 43px;
  padding: 0 14px;
  border: 1px solid var(--line-2);
  border-radius: 11px;
  background: transparent;
  color: var(--text);
  font: 650 12px 'Manrope',sans-serif;
  cursor: pointer;
}
.dt-alarm-form-actions [data-alarm-save] {
  border-color: var(--accent);
  background: var(--accent);
  color: var(--on-accent);
}
.dt-alarm-form-actions button[hidden] { display: none !important; }
.dt-alarm-list { display: flex; flex-direction: column; gap: 9px; }
.dt-alarm-row {
  min-height: 78px;
  padding: 12px 13px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: color-mix(in srgb,var(--panel) 78%,transparent);
  display: flex;
  align-items: center;
  gap: 13px;
  transition: border-color .16s ease, opacity .16s ease, transform .16s ease;
}
.dt-alarm-row:hover { border-color: var(--line-2); transform: translateY(-1px); }
.dt-alarm-row.is-disabled { opacity: .58; }
.dt-alarm-row > time {
  min-width: 58px;
  color: var(--text);
  font: 750 20px 'JetBrains Mono',monospace;
  letter-spacing: -.05em;
}
.dt-alarm-row-copy { min-width: 0; flex: 1; }
.dt-alarm-row-copy strong { display: block; overflow: hidden; color: var(--text); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.dt-alarm-row-copy span { display: block; margin-top: 4px; color: var(--faint); font-size: 10.5px; line-height: 1.35; }
.dt-alarm-row-actions { flex: none; display: flex; align-items: center; gap: 6px; }
.dt-alarm-row-actions > button:not(.dt-alarm-switch) {
  width: 34px;
  height: 34px;
  padding: 0;
  border: 1px solid var(--line-2);
  border-radius: 10px;
  background: transparent;
  color: var(--muted);
  display: grid;
  place-items: center;
  cursor: pointer;
}
.dt-alarm-row-actions > button.is-danger:hover { color: var(--danger); border-color: var(--danger); }
.dt-alarm-switch {
  position: relative;
  width: 40px;
  height: 24px;
  padding: 0;
  border: 0;
  border-radius: 99px;
  background: var(--line-2);
  cursor: pointer;
  transition: background-color .16s ease;
}
.dt-alarm-switch i {
  position: absolute;
  left: 3px;
  top: 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--text);
  transition: transform .18s cubic-bezier(.2,.7,.2,1), background-color .16s ease;
}
.dt-alarm-switch.is-on { background: var(--accent); }
.dt-alarm-switch.is-on i { transform: translateX(16px); background: var(--on-accent); }
.dt-alarm-empty {
  min-height: 230px;
  padding: 30px;
  border: 1px dashed var(--line-2);
  border-radius: 14px;
  color: var(--faint);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.dt-alarm-empty strong { color: var(--muted); font-size: 13px; }
.dt-alarm-empty span { max-width: 270px; font-size: 11.5px; line-height: 1.5; }

/* Estado de toque: propositalmente calmo, sem animacao de escala repetitiva. */
.dt-alarm-ringing {
  position: fixed;
  inset: 0;
  z-index: 180;
  padding: 18px;
  background: color-mix(in srgb,var(--bg) 76%,transparent);
  color: var(--text);
  display: grid;
  place-items: center;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  animation: dt-fade .18s ease;
}
.dt-alarm-ringing > section {
  width: min(420px,100%);
  padding: 32px;
  border: 1px solid var(--line-2);
  border-radius: 24px;
  background: var(--bg-elev);
  text-align: center;
  box-shadow: 0 36px 100px -32px rgba(0,0,0,.95);
}
.dt-alarm-ring-icon { width: 64px; height: 64px; margin: 0 auto 20px; }
.dt-alarm-ringing small { display: block; color: var(--accent-text); font: 650 10px 'JetBrains Mono',monospace; letter-spacing: .14em; }
.dt-alarm-ringing h2 { margin: 12px 0 8px; font: 750 30px 'Space Grotesk',sans-serif; }
.dt-alarm-ringing p { margin: 0 0 24px; color: var(--muted); font-size: 12.5px; }
.dt-alarm-ringing button {
  width: 100%;
  min-height: 48px;
  border: 0;
  border-radius: 13px;
  background: var(--accent);
  color: var(--on-accent);
  font: 700 14px 'Manrope',sans-serif;
  cursor: pointer;
}

@media (min-width: 761px) and (max-width: 1180px) {
  .dt-project-shell .dt-task-grid,
  .dt-darktasks-container .dt-task-grid { grid-template-columns: repeat(auto-fill, 274px) !important; }
  .dt-project-shell .dt-task-card,
  .dt-darktasks-container .dt-task-card { width: 274px !important; min-width: 274px !important; max-width: 274px !important; }
  .dt-alarm-dialog { width: min(860px,100%); }
}

@media (max-width: 900px) {
  .dt-timeline-head { flex-wrap: wrap; row-gap: 6px !important; }
  .dt-alarm-layout { grid-template-columns: minmax(270px,310px) minmax(0,1fr); }
  .dt-alarm-form,.dt-alarm-scheduled { padding: 18px; }
}

@media (min-width: 761px) and (max-width: 900px) {
  .dt-topbar { flex-wrap: nowrap !important; padding-inline: 14px !important; gap: 10px !important; }
  .dt-topbar > a { flex: 0 0 auto; margin-right: 0 !important; }
  .dt-topbar > .dt-status-cluster {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
  }
  .dt-topbar > .dt-status-cluster::-webkit-scrollbar { display: none; }
  .dt-topbar .dt-status-pill,
  .dt-topbar .dt-weather-button { padding-inline: 10px !important; }
  .dt-topbar > span[style*="flex:1"] { display: none !important; }
  .dt-topbar > button,
  .dt-topbar > #dt-sino { flex: 0 0 auto; }
}

@media (max-width: 760px) {
  .dt-project-shell .dt-task-grid,
  .dt-darktasks-container .dt-task-grid { grid-template-columns: minmax(0,1fr) !important; }
  .dt-project-shell .dt-task-card,
  .dt-darktasks-container .dt-task-card { width: 100% !important; min-width: 0 !important; max-width: none !important; }
  .dt-quick-action > span { display: none !important; }
  .dt-quick-actions { bottom: calc(var(--dt-timeline-space, 96px) + 10px) !important; }
  .dt-timeline-inner { padding: 7px 10px calc(8px + env(safe-area-inset-bottom)) !important; }
  .dt-timeline-head { gap: 6px !important; margin-bottom: 6px !important; }
  .dt-timeline-head > span[style*="flex:1"] { display: none !important; }
  /* No celular ele vira só o ícone: 34px de desenho, 44px de alvo. */
  .dt-timeline-action { position: relative; width: 34px; min-width: 34px; height: 34px; min-height: 34px; padding: 0 !important; }
  .dt-timeline-action::after { content: ''; position: absolute; inset: -5px; }
  .dt-timeline-action > span { display: none; }
  .dt-timeline-action[data-dt-open-alarms] { display: none; }
  .dt-alarm-timeline-marker > span { display: none; }
  .dt-alarm-timeline-marker { width: 20px !important; min-width: 20px !important; padding: 0 !important; }
  .dt-alarm-overlay { padding: 8px; align-items: end; }
  .dt-alarm-dialog { width: 100%; max-height: calc(100dvh - 8px); border-radius: 20px 20px 10px 10px; }
  .dt-alarm-dialog > header { min-height: 68px; padding: 13px 15px; }
  .dt-alarm-dialog > header p { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .dt-alarm-layout { max-height: calc(100dvh - 76px); grid-template-columns: 1fr; }
  .dt-alarm-form { position: static; border-right: 0; border-bottom: 1px solid var(--line); }
  .dt-alarm-form,.dt-alarm-scheduled { padding: 16px; }
  .dt-alarm-form-actions button { flex: 1 1 0; padding-inline: 9px; }
  .dt-alarm-days button { height: 40px; }
  .dt-alarm-ringing { padding: 8px; align-items: end; }
  .dt-alarm-ringing > section { padding: 28px 20px calc(20px + env(safe-area-inset-bottom)); border-radius: 22px 22px 10px 10px; }
}

@media (max-width: 480px) {
  .dt-timeline-head > :nth-child(2) { display: none; }
  .dt-timeline-now { margin-right: auto; font-size: 10px !important; }
  .dt-timeline-head [data-tooltip*="visíveis hoje"] { display: none; }
  .dt-alarm-count { display: inline-flex !important; }
  .dt-alarm-row { flex-wrap: wrap; gap: 9px 11px; }
  .dt-alarm-row-copy { flex-basis: calc(100% - 72px); }
  .dt-alarm-row-actions { width: 100%; justify-content: flex-end; padding-top: 9px; border-top: 1px solid var(--line); }
  .dt-alarm-switch { margin-right: auto; }
  .dt-alarm-days { gap: 3px; }
  .dt-alarm-days button { font-size: 9.5px; }
}

@media (max-width: 360px) {
  .dt-alarm-count { display: none !important; }
  .dt-timeline-head > :first-child { font-size: 9px !important; letter-spacing: .1em !important; }
  .dt-timeline-head > :nth-child(3) { font-size: 11px !important; }
  .dt-alarm-dialog > header p { display: none; }
  .dt-alarm-form,.dt-alarm-scheduled { padding: 14px 12px; }
  .dt-alarm-row { padding: 11px; }
}

@media (prefers-reduced-motion: reduce) {
  .dt-alarm-overlay,
  .dt-alarm-dialog,
  .dt-alarm-ringing,
  .dt-alarm-row,
  .dt-alarm-switch i,
  .dt-quick-action,
  .dt-quick-action > span { animation: none !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* Lista compartilhável: estados suaves em todos os temas. */
.dl-status-buttons {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(86px, 1fr));
  gap: 5px !important;
}

.dl-btn-status {
  min-height: 34px;
  padding: 7px 11px !important;
  border: 1px solid var(--line-2) !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: var(--muted) !important;
  box-shadow: none !important;
  white-space: nowrap;
  transition: background-color .18s ease, border-color .18s ease, color .18s ease, transform .18s ease !important;
}

.dl-btn-status:hover { transform: translateY(-1px); }
.dl-btn-status.active.confirmado {
  background: color-mix(in srgb, #70d6a0 17%, var(--panel)) !important;
  border-color: color-mix(in srgb, #70d6a0 48%, var(--line)) !important;
  color: color-mix(in srgb, #70d6a0 78%, var(--text)) !important;
}
.dl-btn-status.active.desistencia {
  background: color-mix(in srgb, #e7c869 18%, var(--panel)) !important;
  border-color: color-mix(in srgb, #e7c869 50%, var(--line)) !important;
  color: color-mix(in srgb, #e7c869 78%, var(--text)) !important;
}
.dl-btn-status.active.ausente {
  background: color-mix(in srgb, #eda05f 18%, var(--panel)) !important;
  border-color: color-mix(in srgb, #eda05f 50%, var(--line)) !important;
  color: color-mix(in srgb, #eda05f 80%, var(--text)) !important;
}

.dl-status-label.confirmado {
  background: color-mix(in srgb, #70d6a0 15%, var(--panel)) !important;
  border-color: color-mix(in srgb, #70d6a0 40%, var(--line)) !important;
  color: color-mix(in srgb, #70d6a0 78%, var(--text)) !important;
}
.dl-status-label.desistencia {
  background: color-mix(in srgb, #e7c869 16%, var(--panel)) !important;
  border-color: color-mix(in srgb, #e7c869 42%, var(--line)) !important;
  color: color-mix(in srgb, #e7c869 78%, var(--text)) !important;
}
.dl-status-label.ausente {
  background: color-mix(in srgb, #eda05f 16%, var(--panel)) !important;
  border-color: color-mix(in srgb, #eda05f 42%, var(--line)) !important;
  color: color-mix(in srgb, #eda05f 80%, var(--text)) !important;
}

.dl-btn-icon-danger {
  width: 36px !important;
  min-width: 36px !important;
  height: 36px !important;
  min-height: 36px !important;
  padding: 0 !important;
  border: 1px solid color-mix(in srgb, var(--danger) 34%, var(--line)) !important;
  border-radius: 999px !important;
  background: color-mix(in srgb, var(--danger) 8%, transparent) !important;
  color: color-mix(in srgb, var(--danger) 74%, var(--text)) !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  flex: 0 0 36px;
}
.dl-btn-icon-danger:hover { background: color-mix(in srgb, var(--danger) 16%, transparent) !important; }

@media (max-width: 620px) {
  .dl-item-row > div:first-child { align-items: stretch !important; }
  .dl-item-row > div:first-child > div:last-child { width: 100%; align-items: center !important; }
  .dl-status-buttons { flex: 1 1 auto; grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
  .dl-btn-status { min-width: 0; padding-inline: 7px !important; font-size: 10.5px !important; }
  .dl-add-item-form { flex-wrap: wrap; }
  .dl-add-item-form .dl-input { flex: 1 1 100% !important; }
  .dl-add-item-form .dl-btn-primary { width: 100%; }
}

/* ========================================================================== 
   Ajustes finais de navegacao, projetos e midia
   ========================================================================== */

/* Mesma folga nas quatro bordas e entre os tres seletores de estacao. */
.dt-media-tabs {
  box-sizing: border-box !important;
  gap: 6px !important;
  padding: 6px !important;
}
.dt-media-station-tab { margin: 0 !important; }

/* Todos os cards superiores ocupam exatamente a mesma cota no desktop. */
@media (min-width: 761px) {
  .dt-dashboard-grid > .dt-dashboard-card,
  .dt-dashboard-grid > sc-if > .dt-dashboard-card {
    flex: 1 1 190px !important;
    width: auto !important;
    min-width: 190px !important;
    height: 140px !important;
    min-height: 140px !important;
    max-height: 140px !important;
  }
  .dt-media-card { flex: 1 1 190px !important; min-width: 190px !important; padding: 12px !important; }

  .dt-project-title { flex: 1 1 auto !important; }
  .dt-project-actions { margin-left: auto !important; margin-right: 0 !important; }
}

.dt-project-header { cursor: pointer; }
.dt-project-touch-icon { flex: none; color: var(--accent-text); opacity: .82; }
.dt-project-title:hover .dt-project-touch-icon { animation: dt-touch-hint .7s ease; }
@keyframes dt-touch-hint {
  0%,100% { transform: translateY(0) scale(1); }
  45% { transform: translateY(1px) scale(.88); }
}

.dt-quick-action-media {
  border-color: color-mix(in srgb, var(--accent) 55%, var(--line-2)) !important;
  background: var(--accent) !important;
  color: var(--on-accent) !important;
}
.dt-quick-music-note { animation: dt-floating-note 1.2s steps(36) infinite; transform-origin: 50% 70%; }
@keyframes dt-floating-note {
  0%,100% { transform: translateY(1px) rotate(-6deg) scale(.94); }
  50% { transform: translateY(-2px) rotate(7deg) scale(1.08); }
}
@media (prefers-reduced-motion: reduce) { .dt-quick-music-note { animation: none; } }

/* A navegacao inicial usa o mesmo componente visual das abas internas. */
.dl-workspace-nav.dl-tabs {
  width: max-content !important;
  max-width: 100% !important;
  margin: 18px 0 32px !important;
  padding: 4px !important;
  gap: 4px !important;
  border: 1px solid var(--line-2) !important;
  border-radius: 12px !important;
  background: color-mix(in srgb, var(--bg-elev) 92%, transparent) !important;
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--text) 3%, transparent) !important;
  overflow-x: auto;
}
.dl-workspace-nav .dl-tab-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 36px !important;
  padding: 0 14px !important;
  border: 1px solid transparent !important;
  border-radius: 9px !important;
  column-gap: 9px !important;
  line-height: 1 !important;
}
.dl-workspace-nav .dl-tab-btn::after { display: none !important; }
.dl-workspace-nav .dl-tab-btn.active {
  color: var(--text) !important;
  background: color-mix(in srgb, var(--accent) 17%, var(--panel-2)) !important;
}
.dl-workspace-nav .dl-tab-btn svg { display:block; flex:0 0 16px; margin:0 1px 0 0; color:currentColor; }

/* Abas e busca dividem a mesma linha: a margem que era da nav passa a ser da
   barra, senão as duas se empurram e o campo desce sozinho. */
.dl-workspace-bar {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin: 18px 0 32px;
}
.dl-workspace-bar .dl-workspace-nav.dl-tabs { margin: 0 !important; }
.dl-busca-listas {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  flex: 1 1 220px;
  max-width: 320px;
  min-height: 46px;
  margin-left: auto;
  padding: 0 14px;
  border: 1px solid var(--line-2);
  border-radius: 12px;
  background: color-mix(in srgb, var(--bg-elev) 92%, transparent);
  color: var(--faint);
  transition: border-color .18s ease, color .18s ease;
}
.dl-busca-listas:focus-within { border-color: color-mix(in srgb, var(--accent) 55%, var(--line-2)); color: var(--muted); }
.dl-busca-listas svg { flex: 0 0 15px; }
.dl-busca-campo {
  width: 100%;
  min-width: 0;
  /* O campo ocupa a altura inteira da caixa: assim o cursor de texto aparece
     em qualquer ponto dela, e não só na faixa de 18px do meio. */
  align-self: stretch;
  border: 0;
  outline: none;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 13px;
}
.dl-busca-campo::placeholder { color: var(--faint); }
/* O X do campo de busca nasce escuro sobre fundo escuro no WebKit. */
.dl-busca-campo::-webkit-search-cancel-button {
  -webkit-appearance: none;
  width: 13px; height: 13px; cursor: pointer;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12' stroke='%23000' stroke-width='2.4' stroke-linecap='round' fill='none'/%3E%3C/svg%3E") center/contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12' stroke='%23000' stroke-width='2.4' stroke-linecap='round' fill='none'/%3E%3C/svg%3E") center/contain no-repeat;
  color: var(--muted);
}
.dl-busca-vazia {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 64px 20px;
  text-align: center;
  color: var(--muted);
}
.dl-busca-vazia h3 { margin: 4px 0 0; font-family: 'Space Grotesk'; font-size: 18px; color: var(--text); }
.dl-busca-vazia p { margin: 0; font-size: 13px; max-width: 42ch; }

@media (max-width: 760px) {
  .dl-busca-listas { max-width: none; margin-left: 0; }
}

.dl-create-primary,
.dl-quiet-action {
  min-height: 42px;
  padding: 0 15px;
  border-radius: 12px;
  font: 650 13px 'Manrope',sans-serif;
  cursor: pointer;
}
.dl-create-primary {
  border: 1px solid var(--accent);
  background: var(--accent);
  color: var(--on-accent);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  box-shadow: 0 12px 24px -18px var(--accent);
}

@media (max-width: 760px) {
  .dl-workspace-nav.dl-tabs { width: 100% !important; margin: 12px 0 24px !important; }
  .dl-workspace-nav .dl-tab-btn { min-height: 44px !important; }
  .dl-hero-side { flex-wrap: wrap; gap: 8px; }
  .dl-create-primary,.dl-quiet-action { flex: 1 1 auto; justify-content: center; }
}

/* Hora do topo: atalho visível e coerente para o despertador. */
.dt-time-status { transition: border-color .16s ease, background .16s ease, transform .16s ease; }
.dt-time-status:hover { border-color: var(--accent) !important; background: var(--glass-2) !important; transform: translateY(-1px); }
.dt-time-status:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* Planejador de hidratação. */
/* ==========================================================================
   Hidratação: uma caixa só, e nada dentro dela sem o lembrete ligado.

   Antes eram três blocos soltos — interruptor, intervalo e "plano pessoal" —
   e os dois últimos continuavam editáveis com os avisos desligados. Configurar
   o que não vai tocar é trabalho sem consequência: agora o interruptor abre e
   fecha tudo, e o que sobra na tela é o dia de hoje.
   ========================================================================== */
.dt-hydration-card {
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: transparent;
  overflow: hidden;
}
.dt-hydration-switch {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 14px 16px;
}
.dt-hydration-drop { color: var(--accent-text); flex: none; display: inline-flex; }
.dt-hydration-switch > div { flex: 1; min-width: 0; }
.dt-hydration-switch strong { display: block; color: var(--text); font-size: 14px; }
.dt-hydration-switch small { display: block; margin-top: 2px; color: var(--muted); font-size: 12px; }

.dt-hydration-body {
  padding: 16px;
  border-top: 1px solid var(--line);
  animation: dt-fade .22s ease;
}

/* O quanto já foi bebido é o número grande; a meta fica ao lado, em corpo
   pequeno. Trocar essa ordem transformaria a caixa em painel de meta, que é o
   que ela era antes e o que fazia a aba parecer um formulário. */
.dt-hydration-today {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 12px;
}
.dt-hydration-today-copy { min-width: 0; }
.dt-hydration-today-copy strong {
  display: block;
  color: var(--text);
  font: 400 30px/1 'JetBrains Mono', monospace;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
}
.dt-hydration-today-copy span { display: block; margin-top: 5px; color: var(--muted); font-size: 11.5px; }
/* Era o botão de registrar um copo. Virou rótulo, porque a barra passou a
   andar sozinha com o aviso: o que sobra é dizer quanto cada aviso vale. Sem
   preenchimento e sem cursor — não se clica nele. */
.dt-hydration-passo {
  flex: none;
  align-self: center;
  padding: 0 4px;
  color: var(--faint);
  font-size: 11.5px;
  letter-spacing: .02em;
  white-space: nowrap;
}

.dt-hydration-bar {
  height: 8px;
  border-radius: 999px;
  background: var(--line-2);
  overflow: hidden;
}
.dt-hydration-bar > i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, color-mix(in srgb, var(--accent) 62%, transparent), var(--accent));
  transition: width .35s cubic-bezier(.22,.61,.36,1);
}
.dt-hydration-barfoot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 8px 0 18px;
  color: var(--faint);
  font-size: 11px;
}
.dt-hydration-barfoot button {
  flex: none;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--faint);
  font-size: 11px;
  text-decoration: underline;
  cursor: pointer;
}
.dt-hydration-barfoot button:hover { color: var(--text); }

/* Peso, altura, intervalo e a janela do dia, todos do mesmo tamanho e na
   mesma grade: são cinco ajustes do mesmo assunto, e separar o intervalo em
   uma linha própria fazia parecer que ele mandava nos outros quatro. */
.dt-hydration-fields { display:grid; grid-template-columns:repeat(auto-fit,minmax(132px,1fr)); gap:10px; }
.dt-hydration-fields label { min-width:0; color:var(--muted); font-size:11.5px; }
.dt-hydration-fields input {
  width:100%;
  margin-top:6px;
  min-height:40px;
  padding:8px 10px;
  border:1px solid var(--line-2);
  border-radius:10px;
  outline:none;
  background:var(--bg-elev);
  color:var(--text);
  font:600 13px 'JetBrains Mono',monospace;
}
.dt-hydration-fields input:focus { border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-weak); }
.dt-hydration-note { margin:14px 2px 0; color:var(--faint); font-size:10px; line-height:1.5; }

/* Gravador de sons de alerta. */
.dt-alert-recorder-overlay {
  position:fixed;
  inset:0;
  z-index:2147483500;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
  background:rgba(0,0,0,.68);
  backdrop-filter:blur(10px);
}
.dt-alert-recorder-dialog {
  width:min(480px,100%);
  overflow:hidden;
  border:1px solid var(--line-2);
  border-radius:22px;
  background:var(--bg-elev);
  color:var(--text);
  box-shadow:var(--shadow),0 34px 90px rgba(0,0,0,.58);
  font-family:'Manrope',sans-serif;
  animation:dt-scaleIn .2s ease;
}
.dt-alert-recorder-dialog header { display:flex; align-items:center; gap:11px; padding:17px 18px; border-bottom:1px solid var(--line); background:var(--panel); }
.dt-alert-recorder-dialog header > span { width:38px; height:38px; flex:none; display:grid; place-items:center; border:1px solid var(--line-2); border-radius:12px; background:var(--accent-weak); color: var(--accent-text); }
.dt-alert-recorder-dialog header > div { min-width:0; flex:1; }
.dt-alert-recorder-dialog h2 { margin:0; font:700 17px 'Space Grotesk',sans-serif; }
.dt-alert-recorder-dialog header p { margin:2px 0 0; overflow:hidden; color:var(--muted); font-size:11.5px; text-overflow:ellipsis; white-space:nowrap; }
.dt-alert-recorder-dialog header > button { width:32px; height:32px; flex:none; border:1px solid var(--line); border-radius:10px; background:transparent; color:var(--muted); font-size:20px; cursor:pointer; }
.dt-alert-recorder-body { padding:20px; }
.dt-alert-recorder-live { display:flex; align-items:center; gap:11px; min-height:70px; padding:13px 14px; border:1px solid var(--line-2); border-radius:13px; background:var(--panel); }
.dt-alert-recorder-live > i { width:11px; height:11px; flex:none; border-radius:50%; background:var(--danger); box-shadow:0 0 0 7px color-mix(in srgb,var(--danger) 13%,transparent); animation:dt-audio-pulse 1.1s ease-in-out infinite; }
@keyframes dt-audio-pulse { 0%,100%{ transform:scale(.86); opacity:.58; } 50%{ transform:scale(1.08); opacity:1; } }
.dt-alert-recorder-live > div { min-width:0; flex:1; }
.dt-alert-recorder-live strong,.dt-alert-recorder-preview strong { display:block; font-size:13px; }
.dt-alert-recorder-live small,.dt-alert-recorder-preview small { display:block; margin-top:3px; color:var(--muted); font-size:10.5px; }
.dt-alert-recorder-live time { color: var(--accent-text); font:700 14px 'JetBrains Mono',monospace; }
.dt-alert-recorder-stop { width:100%; min-height:42px; margin-top:12px; border:1px solid color-mix(in srgb,var(--danger) 55%,var(--line-2)); border-radius:11px; background:color-mix(in srgb,var(--danger) 12%,var(--panel)); color:var(--text); font:650 12px 'Manrope',sans-serif; cursor:pointer; }
.dt-alert-recorder-stop > span { display:inline-block; width:8px; height:8px; margin-right:7px; border-radius:2px; background:var(--danger); }
.dt-alert-recorder-stop:disabled { opacity:.5; cursor:wait; }
.dt-alert-recorder-preview { padding:14px; border:1px solid var(--line-2); border-radius:13px; background:var(--panel); }
.dt-alert-recorder-preview audio { width:100%; height:38px; margin-top:12px; }
.dt-alert-recorder-error { min-height:16px; margin-top:10px; color:var(--danger); font-size:11px; line-height:1.4; }
.dt-alert-recorder-dialog footer { display:flex; justify-content:flex-end; gap:8px; padding:13px 18px; border-top:1px solid var(--line); background:var(--panel); }
.dt-alert-recorder-dialog footer button { min-height:38px; padding:0 14px; border:1px solid var(--line-2); border-radius:10px; background:transparent; color:var(--text); font:650 12px 'Manrope',sans-serif; cursor:pointer; }
.dt-alert-recorder-dialog footer button:last-child { border-color:var(--accent); background:var(--accent); color:var(--on-accent); }
.dt-alert-recorder-dialog footer button:disabled { opacity:.45; cursor:not-allowed; }

@media(max-width:620px) {
  .dt-hydration-today { flex-direction:column; align-items:stretch; }
  .dt-hydration-log { width:100%; }
  .dt-alert-recorder-overlay { align-items:flex-end; padding:8px; }
  .dt-alert-recorder-dialog { border-radius:20px 20px 10px 10px; }
}

@media(prefers-reduced-motion:reduce) {
  .dt-alert-recorder-live > i { animation:none; }
}

/* ========================================================================== 
   Painel superior responsivo — Tasks, Insights, Mídia e atalhos
   ========================================================================== */

/* Uma única grade elimina a disputa entre larguras flexíveis e garante que
   nenhum card empurre ou encavale o seguinte. O wrapper do sc-if participa da
   grade sem criar uma coluna própria. */
.dt-dashboard-grid {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px !important;
  align-items: stretch !important;
}
.dt-dashboard-grid > sc-if { display: contents !important; }
.dt-dashboard-grid > .dt-dashboard-card,
.dt-dashboard-grid > sc-if > .dt-dashboard-card {
  box-sizing: border-box !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  height: 164px !important;
  min-height: 164px !important;
  max-height: 164px !important;
  margin: 0 !important;
  overflow: hidden;
}

.dt-card-tasks,
.dt-card-notas,
.dt-media-card {
  position: relative;
  isolation: isolate;
  border-color: color-mix(in srgb, var(--accent) 14%, var(--line-2)) !important;
  background:
    radial-gradient(circle at 88% 8%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 43%),
    linear-gradient(145deg, color-mix(in srgb, var(--panel-2) 94%, var(--accent) 6%), var(--panel)) !important;
}
.dt-card-notas {
  background:
    radial-gradient(circle at 12% 92%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 45%),
    linear-gradient(145deg, var(--panel), color-mix(in srgb, var(--panel-2) 95%, var(--accent) 5%)) !important;
}
.dt-dashboard-card {
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease !important;
}
@media (hover:hover) and (pointer:fine) {
  .dt-dashboard-card:hover {
    transform: translateY(-2px);
    border-color: color-mix(in srgb, var(--accent) 44%, var(--line-2)) !important;
    box-shadow: inset 0 1px 0 color-mix(in srgb, var(--text) 6%, transparent), 0 18px 38px -30px color-mix(in srgb, var(--accent) 44%, rgba(0,0,0,.85)) !important;
  }
}

/* A mídia agora tem um cabeçalho real e sempre acessível. */
.dt-media-card {
  display: flex !important;
  flex-direction: column !important;
  gap: 9px !important;
  padding: 12px !important;
}
.dt-media-card-head {
  width: 100%;
  min-width: 0;
  min-height: 24px;
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--muted);
  font: 650 12.5px 'Manrope', sans-serif;
  text-align: left;
  cursor: default;
}
.dt-media-head-status {
  min-width: 0;
  margin-left: auto;
  overflow: hidden;
  color: var(--faint);
  font: 550 9px 'JetBrains Mono', monospace;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dt-media-collapse-icon {
  display: none !important;
  width: 27px !important;
  height: 27px !important;
}
.dt-media-body {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr);
  grid-template-rows: 50px 44px;
  gap: 8px;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  align-items: stretch;
}
.dt-media-body > .dt-media-tabs {
  grid-column: 1 / -1;
  grid-row: 1;
  box-sizing: border-box !important;
  width: 100%;
  height: 50px;
  min-width: 0;
  min-height: 50px;
  margin: 0 !important;
}
.dt-media-body > .dt-media-spectrum-shell {
  grid-column: 1;
  grid-row: 2;
  min-width: 0;
  height: 44px;
  min-height: 44px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: color-mix(in srgb, var(--panel-2) 46%, transparent);
}
.dt-media-body > .dt-media-play-toggle {
  grid-column: 2;
  grid-row: 2;
  width: 44px !important;
  min-width: 44px !important;
  height: 44px !important;
  min-height: 44px !important;
  padding: 0 !important;
}
.dt-media-body > .dt-media-volume {
  grid-column: 3;
  grid-row: 2;
  min-width: 0;
  height: 44px;
  min-height: 44px;
  padding-inline: 9px !important;
}
.dt-media-body > .dt-media-volume .dt-vol-steps { width: 100% !important; min-width: 0 !important; }
.dt-media-body .dt-audio-spectrum { width: min(96%, 110px); }

/* Tablets: métricas compactas, player largo e atalhos equilibrados. */
@media (min-width: 761px) and (max-width: 1279px) {
  .dt-dashboard-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .dt-media-card { grid-column: span 2; }
  .dt-focus-card,
  .dt-darklist-card { grid-column: span 2; }
}

/* Celulares: duas colunas estáveis. A mídia ocupa toda a largura e somente ela
   pode retrair, mantendo o título visível para que seja possível reabri-la. */
@media (max-width: 760px) {
  .dt-dashboard-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px !important;
    margin-bottom: 26px !important;
  }
  .dt-dashboard-grid > .dt-dashboard-card,
  .dt-dashboard-grid > sc-if > .dt-dashboard-card {
    display: flex !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    height: 116px !important;
    min-height: 116px !important;
    max-height: 116px !important;
    padding: 13px !important;
  }
  .dt-card-tasks { display: flex !important; }
  .dt-card-tasks,
  .dt-card-notas { grid-column: span 1; }
  .dt-dashboard-grid > .dt-media-card,
  .dt-dashboard-grid > sc-if > .dt-media-card {
    grid-column: 1 / -1;
    height: auto !important;
    min-height: 184px !important;
    max-height: none !important;
    padding: 14px !important;
    overflow: hidden !important;
  }
  .dt-focus-card,
  .dt-darklist-card { grid-column: span 1; }

  .dt-dashboard-card-head { gap: 7px; font-size: 11.5px; }
  .dt-dashboard-icon { width: 29px; height: 29px; }
  .dt-dashboard-metric { font-size: 25px; }
  .dt-dashboard-caption { font-size: 10px; }
  .dt-feature-title {
    margin-bottom: 2px !important;
    font-size: clamp(15px, 4.8vw, 18px) !important;
    line-height: 1.02 !important;
    overflow-wrap: anywhere;
  }
  .dt-feature-card::after { width: 55px; height: 55px; top: 11px; }

  .dt-media-card-head { min-height: 34px; cursor: pointer; }
  .dt-media-head-status { max-width: 44%; font-size: 8px; }
  .dt-media-collapse-icon { display: inline-flex !important; }
  .dt-media-collapse-icon svg { transition: transform .2s ease; }
  .dt-mobile[data-acc-midia="aberto"] .dt-media-collapse-icon svg { transform: rotate(90deg); }

  /* Neutraliza o acordeão antigo que escondia inclusive o próprio título. */
  .dt-mobile[data-acc-midia="fechado"] .dt-media-card {
    position: relative !important;
    height: 62px !important;
    min-height: 62px !important;
    max-height: 62px !important;
    padding: 13px !important;
  }
  .dt-mobile[data-acc-midia="fechado"] .dt-media-card > * { visibility: visible !important; }
  .dt-mobile[data-acc-midia="fechado"] .dt-media-card::before,
  .dt-mobile[data-acc-midia="fechado"] .dt-media-card::after { display: none !important; content: none !important; }
  .dt-mobile[data-acc-midia="fechado"] .dt-media-body { display: none !important; }

  .dt-media-body {
    grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr);
    grid-template-rows: 50px 44px;
    gap: 9px;
    width: 100%;
    margin: 0;
    align-items: stretch;
  }
  .dt-media-body > .dt-media-tabs { height: 50px; min-height: 50px; }
  .dt-media-body .dt-media-station-tab {
    min-height: 36px !important;
    height: 36px !important;
    padding-inline: 4px !important;
    font-size: 9.5px !important;
  }
}

@media (max-width: 370px) {
  .dt-dashboard-grid { gap: 8px !important; }
  .dt-dashboard-grid > .dt-dashboard-card,
  .dt-dashboard-grid > sc-if > .dt-dashboard-card { padding: 11px !important; }
  .dt-dashboard-grid > .dt-media-card,
  .dt-dashboard-grid > sc-if > .dt-media-card { padding: 12px !important; }
  .dt-media-head-status { display: none; }
  .dt-media-body { grid-template-columns: minmax(0, 1fr) 40px minmax(0, 1fr); gap: 7px; }
  .dt-media-body > .dt-media-play-toggle { width: 40px !important; min-width: 40px !important; }
  .dt-media-body > .dt-media-volume { padding-inline: 5px !important; }
}
[data-dt-theme="lightrose"] :is(.dt-dashboard-card,.dt-project-shell,.dt-task-card,.dt-modal,.dt-settings-modal) {
  border-color: color-mix(in srgb,var(--accent) 18%,var(--line-2)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.9),0 18px 42px -34px rgba(146,48,91,.34) !important;
}
.dt-lightrose-theme-swatch { background: linear-gradient(135deg,#FFFDFE 0%,#FCEAF1 42%,#F37DB1 72%,#E94B91 100%) !important; }

@media (min-width: 901px) {
}

/* ========================================================================== 
   Seções dos projetos — cabeçalho enxuto e resistente a títulos longos
   ========================================================================== */

.dt-section-header {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  min-height: 54px;
  margin-top: 6px;
  padding: 5px;
  overflow: hidden;
  display: flex;
  align-items: stretch;
  gap: 8px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: color-mix(in srgb, var(--panel-2) 48%, transparent);
}

.dt-section-toggle {
  appearance: none;
  flex: 1 1 auto;
  min-width: 0;
  max-width: 100%;
  margin: 0;
  padding: 6px 8px;
  overflow: hidden;
  display: flex;
  align-items: center;
  gap: 9px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: var(--text);
  font-family: 'Manrope', sans-serif;
  text-align: left;
  cursor: pointer;
  transition: background .16s ease, color .16s ease;
}
.dt-section-toggle:hover { background: var(--accent-weak); }
.dt-section-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }

.dt-section-icon {
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--panel);
  color: var(--accent-text);
}

.dt-section-title-stack {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  text-align: left;
}
.dt-section-title {
  width: 100%;
  min-width: 0;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  color: var(--text);
  font: 650 13px/1.25 'Space Grotesk', sans-serif;
  letter-spacing: .01em;
  overflow-wrap: anywhere;
  word-break: break-word;
  text-align: left;
}
.dt-section-count {
  display: block;
  max-width: 100%;
  margin-top: 3px;
  overflow: hidden;
  color: var(--faint);
  font: 550 9px/1.2 'JetBrains Mono', monospace;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left;
}

.dt-section-actions {
  height: 36px;
  flex: 0 0 auto;
  align-self: center;
  overflow: hidden;
  display: inline-flex;
  align-items: stretch;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
}
.dt-section-actions > button {
  width: 35px;
  min-width: 35px;
  height: 34px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: color .16s ease, background .16s ease;
}
.dt-section-actions > button + button { border-left: 1px solid var(--line); }
.dt-section-actions > button:hover { color: var(--accent-text); background: var(--accent-weak); }
.dt-section-actions > button:last-child:hover { color: var(--danger); background: color-mix(in srgb, var(--danger) 10%, transparent); }
.dt-section-actions > button:focus-visible { position: relative; outline: 2px solid var(--accent); outline-offset: -2px; }

.dt-section-empty {
  width: 100%;
  padding: 11px 14px;
  border: 1px dashed var(--line);
  border-radius: 11px;
  color: var(--faint);
  font: 550 10.5px 'Manrope', sans-serif;
  text-align: left;
}

@media (max-width: 430px) {
  .dt-section-header { gap: 5px; padding: 4px; }
  .dt-section-toggle { gap: 7px; padding-inline: 6px; }
  .dt-section-icon { width: 28px; height: 28px; flex-basis: 28px; }
  .dt-section-actions > button { width: 32px; min-width: 32px; }
}
[data-dt-theme="lightlime"] :is(.dt-dashboard-card,.dt-project-shell,.dt-task-card,.dt-settings-modal,.dt-modal,.dt-view-modal) {
  border-color: rgba(91,130,45,.15) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.94), 0 18px 44px -34px rgba(75,108,38,.30) !important;
}
[data-dt-theme="lightlime"] :is(input,textarea,select) {
  color: var(--text);
  background-color: rgba(255,255,255,.88);
}

/* Mobile final: nuvem ao lado do logo e FABs sempre dentro da área visível. */
@media (max-width: 760px) {
  .dt-topbar > a {
    order: 1 !important;
    flex: 0 1 auto !important;
    min-width: 0 !important;
    margin-right: 0 !important;
  }
  .dt-topbar > a img[data-system-logo] {
    max-width: min(52vw, calc(100vw - 132px)) !important;
  }
  .dt-topbar > .dt-save-button {
    order: 2 !important;
    margin: 0 !important;
  }
  .dt-topbar > span[style*="flex:1"] {
    order: 3 !important;
    display: block !important;
    width: auto !important;
    min-width: 0 !important;
    flex: 1 1 auto !important;
  }
  .dt-topbar > button:last-child { order: 4 !important; margin-left: 0 !important; }

  .dt-quick-actions {
    right: max(12px, env(safe-area-inset-right)) !important;
    bottom: var(--dt-mobile-fab-bottom, calc(var(--dt-timeline-space, 96px) + 12px)) !important;
    z-index: 120 !important;
    visibility: visible !important;
    opacity: 1 !important;
    isolation: isolate;
  }

  .dt-weather-popover {
    position: fixed !important;
    top: calc(108px + env(safe-area-inset-top)) !important;
    left: 14px !important;
    right: 14px !important;
    width: auto !important;
    max-height: calc(100dvh - 124px - env(safe-area-inset-top)) !important;
    overflow-y: auto !important;
  }
}

/* ==========================================================================
   ATUALIZAÇÕES V2: TOP BOXES, MENU FERRAMENTAS, BARRA DE MÍDIA E TEMA DARK
   ========================================================================== */

/* 1. Caixas do Topo Reduzidas e Limpas (MINHAS IDEIAS e MODO FOCO) */
.dt-dashboard-grid {
  display: flex !important;
  gap: 14px !important;
  margin-bottom: 18px !important;
}

.dt-dashboard-grid .dt-dashboard-card {
  flex: 1 1 0 !important;
  min-width: 140px !important;
  height: 68px !important;
  min-height: 68px !important;
  max-height: 68px !important;
  padding: 12px 20px !important;
  border-radius: 14px !important;
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 16px !important;
  background: var(--panel) !important;
  border: 1px solid var(--line) !important;
  box-shadow: none !important;
  box-sizing: border-box !important;
  cursor: pointer !important;
  transition: border-color .15s ease, background .15s ease, transform .12s ease !important;
}

.dt-dashboard-grid .dt-dashboard-card:hover {
  border-color: var(--line-2) !important;
  background: var(--panel-2) !important;
  transform: translateY(-1px) !important;
}

.dt-dashboard-grid .dt-dashboard-card::before,
.dt-dashboard-grid .dt-dashboard-card::after {
  display: none !important;
}

/* Ícones sem moldura/caixa envolvente */
.dt-dashboard-icon.dt-bare-icon,
.dt-dashboard-grid .dt-dashboard-icon {
  width: auto !important;
  height: auto !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  color: var(--accent-text) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: none !important;
}

.dt-dashboard-icon.dt-bare-icon svg,
.dt-dashboard-grid .dt-dashboard-icon svg {
  width: 22px !important;
  height: 22px !important;
  display: block !important;
}

/* Título em duas linhas com tipografia limpa */
.dt-box-title {
  font-family: 'Space Grotesk', sans-serif !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
  line-height: 1.15 !important;
  letter-spacing: .06em !important;
  text-transform: uppercase !important;
  color: var(--text) !important;
  text-align: left !important;
}

/* 2. Menu Ferramentas Compacto */
.dt-tools-section {
  margin-bottom: 20px;
}

.dt-tools-tabs {
  background: var(--panel) !important;
  border: 1px solid var(--line) !important;
  border-radius: 12px !important;
  padding: 3px !important;
  display: inline-flex !important;
  gap: 3px !important;
}

.dt-tools-tabs .dt-site-tab {
  font-family: 'Manrope', sans-serif !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  padding: 6px 14px !important;
  transition: all .16s ease !important;
}

.dt-tool-card {
  transition: border-color .18s ease, transform .16s ease;
}

/* 3. Barra de mídia, abaixo da linha do tempo.
 *
 * Era 35px com botões de 24px e um seletor de estação de 20px sem line-height:
 * tudo encostado nas bordas e a caixa apertando os controles. A altura passou a
 * 40px e cada controle ganhou tamanho declarado, então nada mais depende de
 * como o navegador resolve a altura de linha. */
.dt-media-bar {
  position: relative;
  z-index: 36;
  /* 71px: a faixa de mídia do template (09/2026), alinhada com a linha de conta
     de 72px da sidebar. Quem decide a altura final é a mesma regra em
     floating-shell.css, que carrega depois; os dois valores andam juntos. */
  height: 71px !important;
  min-height: 71px !important;
  background: #000000 !important;
  border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
  display: flex !important;
  align-items: center !important;
  padding: 0 clamp(14px, 3vw, 26px) !important;
  gap: 12px !important;
  color: #ECECEE !important;
  box-sizing: border-box !important;
  overflow: hidden;
  isolation: isolate;
}

.dt-media-bar > * { position: relative; z-index: 1; }

.dt-media-side {
  display: flex;
  align-items: center;
  gap: 7px;
  flex: none;
  min-width: 0;
}
.dt-media-side-end { gap: 10px; }

.dt-media-eyebrow {
  font: 400 9.5px/1 'JetBrains Mono', monospace;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--faint);
  white-space: nowrap;
}
.dt-media-sep {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--faint);
  flex: none;
}

/* As estações agora saem de um seletor: cinco pílulas lado a lado não
   caberiam na barra, e a escolha ficava disputando espaço com o que toca. */
.dt-media-station-select {
  /* A cápsula inteira é o alvo, e o <select> dentro dela ocupa a altura toda:
     um pseudo-elemento por cima roubaria o clique do próprio seletor, então
     aqui a caixa cresce de verdade — 28px viraram 32px, o piso do app, e a
     barra de 40px continua comportando. */
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 32px;
  padding: 0 6px 0 10px;
  border: 1px solid var(--line) !important;
  border-radius: 999px;
  background: transparent !important;
  color: var(--muted);
  box-sizing: border-box;
  cursor: pointer;
  transition: border-color .16s ease, color .16s ease, background .16s ease;
}
.dt-media-station-select:hover,
.dt-media-station-select:focus-within {
  border-color: color-mix(in srgb, var(--accent) 50%, var(--line)) !important;
  color: var(--text);
}
.dt-media-station-select > svg { flex: none; color: var(--accent-text); }
.dt-media-station-select select { align-self: stretch; }
.dt-media-station-select select {
  min-width: 0;
  max-width: 132px;
  height: 100%;
  padding: 0 2px;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--text);
  font: 400 11.5px/1 Manrope, sans-serif;
  cursor: pointer;
}
.dt-media-station-select select option {
  background: var(--bg-elev);
  color: var(--text);
}
.dt-media-station-select:focus-within {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
}

.dt-media-center {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 0;
}
.dt-media-spectrum-shell {
  height: 16px;
  display: flex;
  align-items: center;
  flex: none;
}
.dt-media-bar .dt-audio-spectrum { height: 16px; width: 74px; }

/* Tocando agora: a faixa quando a rádio informa, o estado quando não informa. */
.dt-media-now {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  max-width: min(46vw, 420px);
  font: 400 11px/1 Manrope, sans-serif;
  color: var(--muted);
}
.dt-media-now-icon { flex: none; color: var(--accent-text); }
.dt-media-now-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dt-media-now:has(.dt-media-now-icon) .dt-media-now-text { color: var(--text); }

/* O `min-height:36px` genérico de .dt-media-play-toggle existe por causa do
 * card de mídia, onde o botão é o alvo grande de toque. Numa barra de 40px ele
 * estourava a caixa — daí o botão parecer grande demais para a faixa. Aqui a
 * regra é escrita com o escopo da barra, que vence sem mexer no card. */
.dt-media-bar .dt-media-play-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  min-height: 28px !important;
  flex: none;
  padding: 0;
  border: 1px solid transparent !important;
  border-radius: 9px;
  background: transparent;
  color: var(--text);
  cursor: pointer;
  box-sizing: border-box;
  transition: background .16s ease, border-color .16s ease, color .16s ease;
}
.dt-media-bar .dt-media-play-toggle:hover {
  background: var(--accent-weak) !important;
  border-color: color-mix(in srgb, var(--accent) 45%, transparent) !important;
  color: var(--accent-text);
}
.dt-media-bar .dt-media-play-toggle:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
  box-shadow: none !important;
}

.dt-media-bar .dt-media-volume {
  display: flex;
  align-items: center;
  /* !important porque styles.css declara gap:10px no mesmo seletor; com 10px
     cada degrau ficava com 10px de largura. */
  gap: 6px !important;
  /* As barrinhas têm metade da largura de antes, e o vão entre elas continua o
     mesmo. Quem define isso é a largura total, não o degrau: os cinco dividem
     o que sobra depois do botão de mudo (26px) e do vão dele (6px), com os
     quatro vãos de 3px por dentro. Em 146px cada degrau ficava com 20,4px; em
     95px fica com 10,2px, e os 3px entre eles não se mexem. */
  width: 95px;
  height: auto;
  min-height: 0;
  padding: 0;
  flex: none;
}

/* Volume em cinco degraus: alvos de toque de verdade no lugar do trilho fino,
   que exigia mira de um pixel numa barra de 40px. Os degraus acesos usam a cor
   de contraste; o botão do ícone alterna o mudo. */
.dt-media-volume .dt-vol-mute {
  flex: none;
  width: 26px;
  height: 26px;
  padding: 0;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--faint);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: color .16s ease, background .16s ease;
}
.dt-media-volume .dt-vol-mute:hover,
.dt-media-volume .dt-vol-mute:focus-visible { color: var(--text); background: var(--accent-weak); }
.dt-media-volume .dt-vol-mute[aria-pressed="true"] { color: var(--accent-text); }

/* A barra de mídia tem 40px de altura, e os botões dela são desenhados
   pequenos de propósito para caber na faixa. O que não pode ser pequeno é o
   que RESPONDE ao toque: o retângulo invisível abaixo leva os dois a 32px sem
   mudar um pixel do desenho — a mesma solução que os degraus de volume já
   usam logo abaixo. Sem isso, silenciar e dar play eram alvos de 26 e 28px. */
.dt-media-bar .dt-media-play-toggle,
.dt-media-volume .dt-vol-mute { position: relative; }
.dt-media-bar .dt-media-play-toggle::after,
.dt-media-volume .dt-vol-mute::after {
  content: '';
  position: absolute;
  inset: -3px;
}
.dt-media-volume .dt-vol-mute::after { inset: -4px; }

.dt-vol-steps {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  min-width: 0;
  flex: 1;
  height: 20px;
}
.dt-vol-step {
  position: relative;
  flex: 1 1 0;
  min-width: 0;
  height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  display: flex;
  align-items: flex-end;
}
/* A barrinha desenhada é fina, mas a área que responde ao toque passa dos
   24px que a diretriz de acessibilidade pede: o retângulo invisível abaixo
   cobre a altura inteira da barra e metade do vão até o degrau vizinho. */
.dt-vol-step::after {
  content: '';
  position: absolute;
  inset: -10px -2px;
}
/* As barrinhas crescem em escada, para o nível ser legível de relance. */
.dt-vol-step > i {
  display: block;
  width: 100%;
  border-radius: 2px;
  background: var(--line-2);
  transition: background .16s ease, height .16s ease;
}
.dt-vol-step:nth-child(1) > i { height: 36%; }
.dt-vol-step:nth-child(2) > i { height: 52%; }
.dt-vol-step:nth-child(3) > i { height: 68%; }
.dt-vol-step:nth-child(4) > i { height: 84%; }
.dt-vol-step:nth-child(5) > i { height: 100%; }
.dt-vol-step[data-on="true"] > i { background: var(--accent); }
.dt-vol-step:hover > i { background: color-mix(in srgb, var(--accent) 55%, var(--line-2)); }
.dt-vol-step:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }

/* O conteúdo da barra fica acima do rastro: os pixels passam por trás do
 * texto e dos controles, nunca por cima. */
.dt-media-bar > .dt-media-side,
.dt-media-bar > .dt-media-center {
  position: relative;
  z-index: 1;
}

/* O rastro enquanto há som no ar: toda a poeira de pixels caminha para a
 * direita em quatro camadas, cada uma com velocidade e opacidade próprias
 * (e cada ponto com um alfa diferente dentro da camada), por baixo de um
 * degradê largo e lento varrendo a barra. Tudo na cor de contraste ativa.
 * O laço de cada camada é o próprio tamanho do ladrilho (--dt-poeira-loop):
 * ao fim do ciclo o padrão coincide com o início e o movimento não salta.
 *
 * Como o rastro anda importa tanto quanto como ele parece. A primeira versão
 * movia `background-position`, e isso obriga o navegador a repintar cada
 * camada a cada quadro; com o degradê ainda passando por `filter: blur`, só
 * a barra de avisos custava perto de um núcleo inteiro de CPU e um sétimo da
 * GPU, o tempo todo, num monitor de 165 Hz (medido em 04/09/2026). Agora cada
 * camada é pintada uma vez, mais larga que a barra, e só se desloca por
 * `transform`: o compositor a move sem repintar nada. O passo é discreto,
 * trinta posições por segundo — nesses pontos o olho não distingue mais que
 * isso, e cada quadro a menos é um quadro que o resto da página não compõe.
 * As contagens (--dt-poeira-passos) são sempre duração × 30, para todas as
 * camadas trocarem de posição no mesmo instante. */
.dt-media-glow {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  /* As bordas nascem e morrem em fade, para os pixels não estalarem ao
   * entrar nem ao sair da barra. */
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 5%, #000 95%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 5%, #000 95%, transparent 100%);
}
.dt-media-glow::before,
.dt-media-glow::after {
  content: '';
}
/* A varredura é um degradê com 320% da largura da barra, que atravessa da
 * esquerda para a direita. Ele é largo e suave o bastante para dispensar o
 * desfoque por filtro que existia aqui. */
.dt-media-glow::before {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 320%;
  background: linear-gradient(
    100deg,
    transparent 22%,
    color-mix(in srgb, var(--accent) 7%, transparent) 34%,
    color-mix(in srgb, var(--accent) 16%, transparent) 44%,
    color-mix(in srgb, var(--accent) 26%, transparent) 50%,
    color-mix(in srgb, var(--accent) 16%, transparent) 56%,
    color-mix(in srgb, var(--accent) 7%, transparent) 66%,
    transparent 78%);
  will-change: transform;
  animation: dt-media-varredura 11s steps(330) infinite;
}
/* Cada camada de poeira é um ladrilho mais larga que a barra e começa um
 * ladrilho à esquerda: andar exatamente um ladrilho por ciclo devolve o
 * padrão ao ponto de partida, e o laço não salta. */
.dt-media-glow::after,
.dt-media-glow > i {
  position: absolute;
  top: 0;
  bottom: 0;
  left: calc(-1 * var(--dt-poeira-loop, 240px));
  width: calc(100% + var(--dt-poeira-loop, 240px));
  background-repeat: repeat-x;
  background-size: var(--dt-poeira-loop, 240px) 100%;
  opacity: var(--dt-poeira-opacidade, .8);
  will-change: transform;
  animation: dt-media-poeira var(--dt-poeira-dur, 12s) steps(var(--dt-poeira-passos, 360)) infinite;
}
/* Camada próxima: pontos maiores, mais acesos, andando rápido. */
.dt-media-glow::after {
  --dt-poeira-loop: 240px;
  --dt-poeira-dur: 7.5s;
  --dt-poeira-opacidade: .95;
  --dt-poeira-passos: 225;
  background-image:
    radial-gradient(1.6px 1.6px at 4% 30%, color-mix(in srgb, var(--accent) 92%, transparent) 45%, transparent 60%),
    radial-gradient(1.4px 1.4px at 13% 68%, color-mix(in srgb, var(--accent-2, var(--accent)) 70%, transparent) 45%, transparent 60%),
    radial-gradient(2px 2px at 22% 22%, color-mix(in srgb, var(--accent) 55%, transparent) 45%, transparent 60%),
    radial-gradient(1.4px 1.4px at 34% 76%, color-mix(in srgb, var(--accent) 85%, transparent) 45%, transparent 60%),
    radial-gradient(1.7px 1.7px at 46% 40%, color-mix(in srgb, var(--accent-2, var(--accent)) 62%, transparent) 45%, transparent 60%),
    radial-gradient(1.3px 1.3px at 58% 14%, color-mix(in srgb, var(--accent) 78%, transparent) 45%, transparent 60%),
    radial-gradient(1.9px 1.9px at 67% 62%, color-mix(in srgb, var(--accent) 48%, transparent) 45%, transparent 60%),
    radial-gradient(1.4px 1.4px at 78% 34%, color-mix(in srgb, var(--accent-2, var(--accent)) 88%, transparent) 45%, transparent 60%),
    radial-gradient(1.6px 1.6px at 88% 72%, color-mix(in srgb, var(--accent) 66%, transparent) 45%, transparent 60%),
    radial-gradient(1.2px 1.2px at 96% 48%, color-mix(in srgb, var(--accent) 80%, transparent) 45%, transparent 60%);
}
/* Camada média: mais discreta e mais lenta, dá profundidade. */
.dt-media-glow > i:nth-child(1) {
  --dt-poeira-loop: 280px;
  --dt-poeira-dur: 13s;
  --dt-poeira-opacidade: .55;
  --dt-poeira-passos: 390;
  background-image:
    radial-gradient(1.3px 1.3px at 7% 52%, color-mix(in srgb, var(--accent) 80%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 18% 24%, color-mix(in srgb, var(--accent-2, var(--accent)) 58%, transparent) 45%, transparent 60%),
    radial-gradient(1.4px 1.4px at 29% 70%, color-mix(in srgb, var(--accent) 44%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 41% 38%, color-mix(in srgb, var(--accent) 72%, transparent) 45%, transparent 60%),
    radial-gradient(1.2px 1.2px at 55% 60%, color-mix(in srgb, var(--accent-2, var(--accent)) 66%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 66% 18%, color-mix(in srgb, var(--accent) 52%, transparent) 45%, transparent 60%),
    radial-gradient(1.3px 1.3px at 79% 46%, color-mix(in srgb, var(--accent) 84%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 91% 66%, color-mix(in srgb, var(--accent-2, var(--accent)) 40%, transparent) 45%, transparent 60%);
}
/* Camada distante: pó quase parado, bem apagado. */
.dt-media-glow > i:nth-child(2) {
  --dt-poeira-loop: 320px;
  --dt-poeira-dur: 21s;
  --dt-poeira-opacidade: .3;
  --dt-poeira-passos: 630;
  background-image:
    radial-gradient(1px 1px at 5% 40%, color-mix(in srgb, var(--accent) 70%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 17% 74%, color-mix(in srgb, var(--accent-2, var(--accent)) 46%, transparent) 45%, transparent 60%),
    radial-gradient(1.1px 1.1px at 30% 26%, color-mix(in srgb, var(--accent) 60%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 44% 58%, color-mix(in srgb, var(--accent) 38%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 60% 32%, color-mix(in srgb, var(--accent-2, var(--accent)) 64%, transparent) 45%, transparent 60%),
    radial-gradient(1.1px 1.1px at 74% 68%, color-mix(in srgb, var(--accent) 50%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 90% 44%, color-mix(in srgb, var(--accent) 56%, transparent) 45%, transparent 60%);
}
/* Faíscas: poucos pontos maiores e vivos cruzando mais depressa que tudo. */
.dt-media-glow > i:nth-child(3) {
  --dt-poeira-loop: 380px;
  --dt-poeira-dur: 5.5s;
  --dt-poeira-opacidade: .9;
  --dt-poeira-passos: 165;
  background-image:
    radial-gradient(2.2px 2.2px at 9% 36%, color-mix(in srgb, var(--accent) 95%, transparent) 45%, transparent 60%),
    radial-gradient(1.8px 1.8px at 38% 64%, color-mix(in srgb, var(--accent-2, var(--accent)) 78%, transparent) 45%, transparent 60%),
    radial-gradient(2px 2px at 63% 26%, color-mix(in srgb, var(--accent) 60%, transparent) 45%, transparent 60%),
    radial-gradient(1.7px 1.7px at 86% 56%, color-mix(in srgb, var(--accent) 88%, transparent) 45%, transparent 60%);
}
/* A imagem tem 320% da barra. Em `background-position`, 210% → -110% levava
 * o degradê de 4,62 larguras à esquerda a 2,42 à direita; em `transform`,
 * o percentual é da própria camada (3,2 larguras), daí -144.4% → 75.6%.
 * O sentido é o mesmo da poeira: da esquerda para a direita. */
@keyframes dt-media-varredura {
  from { transform: translateX(-144.4%); }
  to   { transform: translateX(75.6%); }
}
/* Andar um ladrilho inteiro por ciclo mantém o laço invisível; deslocamento
 * positivo move os pontos para a direita. */
@keyframes dt-media-poeira {
  from { transform: translateX(0); }
  to   { transform: translateX(var(--dt-poeira-loop, 240px)); }
}
/* O mesmo rastro na barra de avisos, em outro compasso: ali o texto mudando
 * já ocupa a atenção, então a poeira anda em ciclos mais longos, os pontos são
 * mais raros e bem mais apagados, e o degradê é mais largo (420% contra 320%)
 * e mais lento (19s contra 11s). As duas barras nunca ficam em fase. */
.dt-alert-glow {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%);
}
.dt-alert-glow::before,
.dt-alert-glow::after { content: ''; }
.dt-alert-glow::before {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 420%;
  background: linear-gradient(
    100deg,
    transparent 26%,
    color-mix(in srgb, var(--accent) 8.8%, transparent) 38%,
    color-mix(in srgb, var(--accent) 19.9%, transparent) 46%,
    color-mix(in srgb, var(--accent) 30.9%, transparent) 50%,
    color-mix(in srgb, var(--accent) 19.9%, transparent) 54%,
    color-mix(in srgb, var(--accent) 8.8%, transparent) 62%,
    transparent 74%);
  will-change: transform;
  animation: dt-alerta-varredura 19s steps(570) infinite;
}
.dt-alert-glow::after,
.dt-alert-glow > i {
  position: absolute;
  top: 0;
  bottom: 0;
  left: calc(-1 * var(--dt-poeira-loop, 300px));
  width: calc(100% + var(--dt-poeira-loop, 300px));
  background-repeat: repeat-x;
  background-size: var(--dt-poeira-loop, 300px) 100%;
  opacity: var(--dt-poeira-opacidade, .66);
  will-change: transform;
  animation: dt-media-poeira var(--dt-poeira-dur, 16s) steps(var(--dt-poeira-passos, 480)) infinite;
}
.dt-alert-glow::after {
  --dt-poeira-loop: 300px;
  --dt-poeira-dur: 12s;
  --dt-poeira-opacidade: .75;
  --dt-poeira-passos: 360;
  background-image:
    radial-gradient(1.4px 1.4px at 8% 32%, color-mix(in srgb, var(--accent) 70%, transparent) 45%, transparent 60%),
    radial-gradient(1.1px 1.1px at 26% 66%, color-mix(in srgb, var(--accent-2, var(--accent)) 52%, transparent) 45%, transparent 60%),
    radial-gradient(1.6px 1.6px at 44% 24%, color-mix(in srgb, var(--accent) 40%, transparent) 45%, transparent 60%),
    radial-gradient(1.2px 1.2px at 61% 70%, color-mix(in srgb, var(--accent) 64%, transparent) 45%, transparent 60%),
    radial-gradient(1.3px 1.3px at 82% 42%, color-mix(in srgb, var(--accent-2, var(--accent)) 58%, transparent) 45%, transparent 60%);
}
.dt-alert-glow > i:nth-child(1) {
  --dt-poeira-loop: 360px;
  --dt-poeira-dur: 24s;
  --dt-poeira-opacidade: .44;
  --dt-poeira-passos: 720;
  background-image:
    radial-gradient(1.1px 1.1px at 12% 58%, color-mix(in srgb, var(--accent) 58%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 33% 28%, color-mix(in srgb, var(--accent-2, var(--accent)) 44%, transparent) 45%, transparent 60%),
    radial-gradient(1.2px 1.2px at 55% 64%, color-mix(in srgb, var(--accent) 36%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 76% 34%, color-mix(in srgb, var(--accent) 50%, transparent) 45%, transparent 60%),
    radial-gradient(1.1px 1.1px at 94% 60%, color-mix(in srgb, var(--accent-2, var(--accent)) 40%, transparent) 45%, transparent 60%);
}
.dt-alert-glow > i:nth-child(2) {
  --dt-poeira-loop: 440px;
  --dt-poeira-dur: 33s;
  --dt-poeira-opacidade: .26;
  --dt-poeira-passos: 990;
  background-image:
    radial-gradient(1px 1px at 18% 44%, color-mix(in srgb, var(--accent) 48%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 47% 72%, color-mix(in srgb, var(--accent) 32%, transparent) 45%, transparent 60%),
    radial-gradient(1.1px 1.1px at 70% 26%, color-mix(in srgb, var(--accent-2, var(--accent)) 44%, transparent) 45%, transparent 60%),
    radial-gradient(1px 1px at 89% 52%, color-mix(in srgb, var(--accent) 38%, transparent) 45%, transparent 60%);
}
/* Faísca ocasional, ainda assim discreta. */
.dt-alert-glow > i:nth-child(3) {
  --dt-poeira-loop: 520px;
  --dt-poeira-dur: 9s;
  --dt-poeira-opacidade: .57;
  --dt-poeira-passos: 270;
  background-image:
    radial-gradient(1.8px 1.8px at 21% 38%, color-mix(in srgb, var(--accent) 74%, transparent) 45%, transparent 60%),
    radial-gradient(1.5px 1.5px at 68% 62%, color-mix(in srgb, var(--accent-2, var(--accent)) 60%, transparent) 45%, transparent 60%);
}
/* 420% de largura: 260% → -160% em `background-position` são 8,32 larguras
 * à esquerda até 5,12 à direita; em percentual da camada (4,2 larguras),
 * -198.1% → 121.9%. */
@keyframes dt-alerta-varredura {
  from { transform: translateX(-198.1%); }
  to   { transform: translateX(121.9%); }
}

@media (prefers-reduced-motion: reduce) {
  .dt-media-glow,
  .dt-alert-glow { display: none; }
}

/* No mobile, mídia completamente desativada/oculta.
 *
 * A medida subiu de 768px para 900px: é a mesma em que a barra lateral vira
 * menu compacto, e era entre as duas que a barra reaparecia — celular deitado
 * e tablet caíam nessa faixa e ganhavam a barra de volta. Um único número
 * decide o que é "celular" para a mídia, aqui e em app-fixes.js. */
@media (max-width: 900px) {
  .dt-media-bar {
    display: none !important;
  }
}
/* Telas médias: o "tocando agora" some antes de espremer os controles. */
@media (max-width: 1080px) {
  .dt-media-now { max-width: 30vw; }
  .dt-media-eyebrow { display: none; }
  .dt-media-sep { display: none; }
}

/* 4. Indicador de Salvamento (Apenas Animação durante 'Salvando') */
.dt-save-indicator {
  display: none;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border-radius: 999px;
  background: var(--panel-2);
  border: 1px solid var(--line-2);
  color: var(--accent-text);
  font-family: 'Manrope', sans-serif;
  font-size: 11.5px;
  font-weight: 600;
}

.dt-save-indicator[data-save-state="saving"] {
  display: inline-flex !important;
}

.dt-save-indicator[data-save-state="saving"] svg {
  animation: dt-cloud-pulse .8s steps(24) infinite;
}

.dt-save-indicator[data-save-state="idle"],
.dt-save-indicator[data-save-state="saved"] {
  display: none !important;
}

/* 6. Correções no CSS Expandido do Clima */
.dt-weather-popover {
  width: min(420px, calc(100vw - 28px)) !important;
  box-sizing: border-box !important;
  backdrop-filter: blur(24px) !important;
  -webkit-backdrop-filter: blur(24px) !important;
}

.dt-weather-popover-heading {
  display: flex;
  min-width: 0;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 5px;
}

.dt-weather-popover-location {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  color: var(--muted);
  font-size: 11.5px;
  line-height: 1.25;
}

.dt-weather-popover-location svg {
  flex: none;
  color: var(--accent-text);
}

.dt-weather-popover-location > span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 480px) {
  .dt-weather-popover-head { align-items: flex-start !important; }
  .dt-weather-popover-location { max-width: calc(100vw - 120px); }
}

/* 7. Régua da linha do tempo com 24 horas */
.dt-timeline-tick-label {
  font-size: 8px !important;
  letter-spacing: -.02em !important;
}

/* 8. MÓDULO SOCIAL MEDIA - ESPAÇO COLABORATIVO (PADRÃO DARKLIST / DARKTASK) */

#socialmedia-container .dl-wrapper { padding: 0 !important; }

/* Social Media — papéis, fluxo de aprovação e históricos */
#socialmedia-container button:disabled {
  opacity: .38 !important;
  cursor: not-allowed !important;
  filter: saturate(.55);
}
.sm-item-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
/* Card Accordion do Social Media - preenchimento integral e zebrado */
.sm-accordion-card {
  padding: 0 !important;
  margin: 0 !important;
  width: 100% !important;
  min-height: auto !important;
  border-radius: 16px !important;
  overflow: hidden !important;
  box-shadow: none !important;
  transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease !important;
}
.sm-accordion-card:hover {
  transform: none !important;
}

.sm-accordion-header {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 14px 18px !important;
  cursor: pointer !important;
  user-select: none !important;
  background: transparent !important;
  min-width: 0 !important;
}

.sm-accordion-header-left {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  min-width: 0 !important;
  flex: 1 1 auto !important;
  overflow: hidden !important;
}

.sm-accordion-header-right {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  flex: 0 0 auto !important;
}

.sm-accordion-title {
  display: block !important;
  min-width: 0 !important;
  flex: 1 1 auto !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  line-height: 1.35 !important;
  color: var(--text) !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Responsividade Mobile para Accordion do Social Media */
@media (max-width: 640px) {
  .sm-accordion-header {
    padding: 12px 14px !important;
    gap: 8px !important;
  }
  .sm-accordion-header-left {
    gap: 7px !important;
    min-width: 0 !important;
    flex: 1 1 auto !important;
    overflow: hidden !important;
  }
  .sm-accordion-card .dl-card-kicker {
    padding: 3px 6px !important;
    font-size: 10.5px !important;
    gap: 4px !important;
  }
  .sm-accordion-card .dl-card-kicker svg {
    width: 11px !important;
    height: 11px !important;
  }
  .sm-accordion-title {
    font-size: 11.5px !important;
  }
  .sm-accordion-header-right {
    gap: 6px !important;
    flex: 0 0 auto !important;
  }
  .sm-status-pill {
    padding: 3px 7px !important;
    font-size: 10px !important;
    gap: 3px !important;
  }
  .sm-status-pill svg {
    width: 10px !important;
    height: 10px !important;
  }
}

/* Zebrado Modo Escuro (Padrão) */
.sm-accordion-card.sm-zebra-even {
  background: var(--panel-2) !important;
  border: 1px solid var(--line-2) !important;
}
.sm-accordion-card.sm-zebra-odd {
  background: color-mix(in srgb, var(--accent) 3.5%, #10141A) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 10%, var(--line-2)) !important;
}

/* Zebrado Modo Claro */
html[data-dt-theme="light"] .sm-accordion-card.sm-zebra-even {
  background: #FFFFFF !important;
  border: 1px solid #E2E8F0 !important;
}
html[data-dt-theme="light"] .sm-accordion-card.sm-zebra-odd {
  background: color-mix(in srgb, var(--accent) 4.5%, #FFFFFF) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 14%, #E2E8F0) !important;
}

.sm-accordion-card .dl-card-kicker {
  margin: 0 !important;
  flex: none !important;
  padding: 4px 9px !important;
  border-radius: 8px !important;
  font-family: 'JetBrains Mono', monospace !important;
  font-weight: 700 !important;
  font-size: 12px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  /* O tipo do conteúdo ("Card 12") se lê de relance: texto clareado a partir
     do acento, sobre um fundo tingido pelo próprio acento, e não sobre preto. */
  color: color-mix(in srgb, var(--accent) 58%, #FFFFFF) !important;
  background: color-mix(in srgb, var(--accent) 18%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 38%, transparent) !important;
}
html[data-dt-theme="light"] .sm-accordion-card .dl-card-kicker {
  color: var(--accent-text) !important;
  background: color-mix(in srgb, var(--accent) 10%, #FFFFFF) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent) !important;
}

/* Títulos em destaque com cor de contraste no Social Media */
.sm-detail-eyebrow,
.sm-accordion-card .dl-eyebrow {
  color: var(--accent-text) !important;
  font-weight: 700 !important;
  font-size: 10px !important;
  letter-spacing: .08em !important;
  text-transform: uppercase !important;
}

/* Botão discreto para copiar descrição e hashtags */
.sm-btn-discreet-copy {
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  padding: 3px 9px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  font-family: 'JetBrains Mono', monospace !important;
  color: var(--muted) !important;
  background: var(--panel-2) !important;
  border: 1px solid var(--line-2) !important;
  border-radius: 8px !important;
  cursor: pointer !important;
  transition: all .16s ease !important;
  user-select: none !important;
  text-decoration: none !important;
  line-height: 1.3 !important;
  height: auto !important;
}

.sm-btn-discreet-copy svg {
  width: 12px !important;
  height: 12px !important;
  color: var(--accent-text) !important;
  flex: none !important;
}

.sm-btn-discreet-copy:hover,
.sm-btn-discreet-copy:focus-visible {
  color: var(--text) !important;
  border-color: var(--accent) !important;
  background: var(--accent-weak) !important;
  outline: none !important;
}

/* Pílulas de status do Social Media no cabeçalho */
.sm-status-pill {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 4px 11px !important;
  border-radius: 999px !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  white-space: nowrap !important;
  flex: none !important;
}
.sm-status-pill svg {
  flex: none;
  width: 12px;
  height: 12px;
}

.sm-status-pill.status-approved,
.sm-status-pill.status-finalized,
.sm-selo-estado.status-approved,
.sm-selo-estado.status-finalized {
  background: rgba(72, 187, 120, 0.20) !important;
  border: 1px solid rgba(72, 187, 120, 0.45) !important;
  color: #68D391 !important;
}
.sm-status-pill.status-ready,
.sm-status-pill.status-review,
.sm-selo-estado.status-ready,
.sm-selo-estado.status-review {
  background: rgba(246, 224, 94, 0.20) !important;
  border: 1px solid rgba(246, 224, 94, 0.45) !important;
  color: #FAF089 !important;
}
.sm-status-pill.status-revision,
.sm-selo-estado.status-revision {
  background: rgba(254, 129, 129, 0.20) !important;
  border: 1px solid rgba(254, 129, 129, 0.45) !important;
  color: #FEB2B2 !important;
}
.sm-status-pill.status-draft,
.sm-status-pill.status-production,
.sm-selo-estado.status-draft,
.sm-selo-estado.status-production {
  background: rgba(226, 232, 240, 0.12) !important;
  border: 1px solid rgba(226, 232, 240, 0.25) !important;
  color: #CBD5E0 !important;
}

/* Modo Claro para Pílulas do Cabeçalho */
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-status-pill.status-approved,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-status-pill.status-finalized,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-selo-estado.status-approved,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-selo-estado.status-finalized {
  background: #DEF7EC !important;
  border: 1px solid #84E1BC !important;
  color: #03543F !important;
}
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-status-pill.status-ready,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-status-pill.status-review,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-selo-estado.status-ready,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-selo-estado.status-review {
  background: #FEF08A !important;
  border: 1px solid #FACC15 !important;
  color: #713F12 !important;
}
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-status-pill.status-revision,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-selo-estado.status-revision {
  background: #FEE2E2 !important;
  border: 1px solid #FCA5A5 !important;
  color: #991B1B !important;
}
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-status-pill.status-draft,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-status-pill.status-production,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-selo-estado.status-draft,
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) .sm-selo-estado.status-production {
  background: #F1F5F9 !important;
  border: 1px solid #CBD5E1 !important;
  color: #334155 !important;
}

/* Pílula de Data Sugerida */
.sm-scheduled-pill {
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  padding: 3px 9px !important;
  border-radius: 999px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  font-family: 'JetBrains Mono', monospace !important;
  background: var(--panel-2) !important;
  border: 1px solid var(--line-2) !important;
  color: var(--muted) !important;
  flex: none !important;
}
.sm-scheduled-pill svg {
  color: var(--accent-text);
  width: 12px;
  height: 12px;
}

/* Histórico de Ações Recolhível */
.sm-history-details {
  border: 1px solid var(--line-2) !important;
  border-radius: 12px !important;
  background: var(--panel) !important;
  overflow: hidden !important;
  transition: border-color .15s ease !important;
}
.sm-history-details summary {
  list-style: none !important;
}
.sm-history-details summary::-webkit-details-marker,
.sm-history-details summary::marker {
  display: none !important;
}
.sm-history-arrow-btn {
  width: 28px !important;
  height: 28px !important;
  border-radius: 50% !important;
  border: 1px solid var(--line-2) !important;
  background: var(--panel-2) !important;
  display: grid !important;
  place-items: center !important;
  color: var(--muted) !important;
  transition: transform .22s cubic-bezier(0.4, 0, 0.2, 1), border-color .15s ease, background .15s ease !important;
}
.sm-history-details[open] .sm-history-arrow-btn svg {
  transform: rotate(180deg) !important;
}
.sm-history-details summary:hover .sm-history-arrow-btn {
  border-color: var(--accent) !important;
  color: var(--text) !important;
  background: var(--panel) !important;
}

/* Datepicker Styling */
input[type="date"].dl-input {
  color-scheme: dark;
}
html[data-dt-theme="light"] input[type="date"].dl-input {
  color-scheme: light;
}

/* Pílula de responsabilidade/status nas ações internas do accordion */
.sm-responsibility {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 6px 14px !important;
  border-radius: 999px !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  width: fit-content !important;
  max-width: 100% !important;
  letter-spacing: -0.01em !important;
  transition: all .16s ease !important;
}
.sm-responsibility svg {
  flex: none;
  width: 14px;
  height: 14px;
}

/* O pedido de ajuste do revisor, repetido dentro do modal da arte final: quem
   vai trocar o arquivo precisa ler o que foi pedido sem fechar a janela. */
.sm-artwork-note {
  display: flex !important;
  align-items: flex-start !important;
  gap: 10px !important;
  margin-bottom: 16px !important;
  padding: 12px 14px !important;
  border: 1px solid rgba(254, 129, 129, 0.45) !important;
  border-radius: 12px !important;
  background: rgba(254, 129, 129, 0.12) !important;
}
.sm-artwork-note svg {
  flex: none;
  width: 16px;
  height: 16px;
  margin-top: 1px;
  color: #FEB2B2;
}
.sm-artwork-note strong {
  display: block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: #FEB2B2;
}
.sm-artwork-note p {
  margin: 4px 0 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--text);
  white-space: pre-wrap;
}
html[data-dt-theme="light"] .sm-artwork-note {
  border-color: #F8B4B4 !important;
  background: #FDE8E8 !important;
}
html[data-dt-theme="light"] .sm-artwork-note svg,
html[data-dt-theme="light"] .sm-artwork-note strong { color: #9B1C1C; }

/* Modo Escuro (Padrão) */
.sm-responsibility-approved {
  background: rgba(72, 187, 120, 0.18) !important;
  border: 1px solid rgba(72, 187, 120, 0.45) !important;
  color: #68D391 !important;
}
.sm-responsibility-ready,
.sm-responsibility-review {
  background: rgba(246, 224, 94, 0.18) !important;
  border: 1px solid rgba(246, 224, 94, 0.45) !important;
  color: #FAF089 !important;
}
.sm-responsibility-revision {
  background: rgba(254, 129, 129, 0.18) !important;
  border: 1px solid rgba(254, 129, 129, 0.45) !important;
  color: #FEB2B2 !important;
}
.sm-responsibility-production {
  background: rgba(226, 232, 240, 0.12) !important;
  border: 1px solid rgba(226, 232, 240, 0.25) !important;
  color: #CBD5E0 !important;
}

/* Modo Claro */
html[data-dt-theme="light"] .sm-responsibility-approved {
  background: #DEF7EC !important;
  border: 1px solid #84E1BC !important;
  color: #03543F !important;
}
html[data-dt-theme="light"] .sm-responsibility-ready,
html[data-dt-theme="light"] .sm-responsibility-review {
  background: #FEF08A !important;
  border: 1px solid #FACC15 !important;
  color: #713F12 !important;
}
html[data-dt-theme="light"] .sm-responsibility-revision {
  background: #FEE2E2 !important;
  border: 1px solid #FCA5A5 !important;
  color: #991B1B !important;
}
html[data-dt-theme="light"] .sm-responsibility-production {
  background: #F1F5F9 !important;
  border: 1px solid #CBD5E1 !important;
  color: #334155 !important;
}
.sm-project-access {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
  color: var(--muted);
  font-size: 12px;
}
.sm-project-access > span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--text);
}
.sm-project-access > div { display: flex; flex-wrap: wrap; gap: 6px; }
.sm-project-access small { color: var(--faint); font-size: 11.5px; }

/* Quem tem acesso: o nome com um "x" que encerra, e ao lado os encerrados,
   apagados, com o caminho de volta. */
.sm-reviewer-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding-right: 4px;
}
.sm-reviewer-chip-nome { line-height: 1; }
.sm-reviewer-chip.is-revogado {
  opacity: .55;
  text-decoration: line-through;
  text-decoration-thickness: 1px;
}
.sm-reviewer-chip .sm-reviewer-revoke,
.sm-reviewer-chip .sm-reviewer-restore {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 19px;
  height: 19px;
  padding: 0;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--faint);
  cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.sm-reviewer-chip .sm-reviewer-revoke svg,
.sm-reviewer-chip .sm-reviewer-restore svg { width: 12px; height: 12px; }
.sm-reviewer-chip .sm-reviewer-revoke:hover,
.sm-reviewer-chip .sm-reviewer-revoke:focus-visible {
  background: rgba(224, 118, 140, .16);
  color: var(--danger);
}
.sm-reviewer-chip .sm-reviewer-restore:hover,
.sm-reviewer-chip .sm-reviewer-restore:focus-visible {
  background: var(--accent-weak);
  color: var(--accent-text);
}
.sm-reviewer-chip.is-revogado .sm-reviewer-restore { text-decoration: none; }

/* Linha de botões dos diálogos do Social Media. */
.sm-modal-actions {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 9px;
  margin-top: 8px;
}
@media (max-width: 460px) {
  .sm-modal-actions { flex-direction: column-reverse; }
  .sm-modal-actions > button { width: 100%; }
}
.sm-content-type-menu {
  position: fixed;
  z-index: 2147482500;
  padding: 8px;
  border: 1px solid var(--line-2);
  border-radius: 16px;
  background: transparent;
  color: var(--text);
  box-shadow: none;
  backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%);
  -webkit-backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%);
  animation: sm-menu-in .16s ease;
}
@keyframes sm-menu-in {
  from { opacity: 0; transform: translateY(-5px); }
  to { opacity: 1; transform: none; }
}
.sm-content-type-label {
  display: block;
  padding: 7px 10px 8px;
  color: var(--faint);
  font: 400 9px/1.2 Inter, sans-serif;
  letter-spacing: .12em;
}
.sm-content-type-menu > button {
  width: 100%;
  min-height: 44px;
  display: grid;
  grid-template-columns: 20px 1fr 16px;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border: 1px solid transparent;
  border-radius: 11px;
  background: transparent;
  color: var(--muted);
  font-family: Inter, sans-serif;
  text-align: left;
  cursor: pointer;
}
.sm-content-type-menu > button:hover,
.sm-content-type-menu > button:focus-visible {
  border-color: var(--line);
  background: var(--accent-weak);
  color: var(--text);
  outline: none;
}
.sm-content-type-menu > button > span {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 0;
}
.sm-content-type-menu strong {
  color: inherit;
  font-size: 13px;
  font-weight: 400;
}
.sm-content-type-menu small {
  overflow: hidden;
  color: var(--faint);
  font-size: 10.5px;
  font-weight: 400;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* --- Importação em lote -------------------------------------------------
   O que é dado (o bloco lido, o valor de cada campo) vem em traço; o que é
   ação (escolher o tipo, confirmar) vem preenchido. */
.sm-import-dialog {
  width: min(100%, 720px) !important;
  max-width: 720px !important;
  max-height: 88vh;
}
.sm-import-body {
  display: flex;
  max-height: calc(88vh - 78px);
  flex-direction: column;
  gap: 18px;
  overflow-y: auto;
}
.sm-import-destino {
  margin: 0;
  color: var(--muted);
  font-size: 12.5px;
  line-height: 1.5;
}
.sm-import-destino strong { color: var(--text); }
.sm-import-step { display: flex; flex-direction: column; gap: 8px; }
.sm-import-tipos { display: flex; flex-wrap: wrap; gap: 8px; }
.sm-import-tipo {
  min-height: 36px;
  padding: 8px 16px;
  border: 1px solid var(--line-2);
  border-radius: 999px;
  background: transparent;
  color: var(--muted);
  font: 600 12.5px/1 Inter, sans-serif;
  cursor: pointer;
}
.sm-import-tipo:hover { border-color: var(--line); color: var(--text); }
.sm-import-tipo:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
/* O escolhido usa a mesma linguagem do resto do app para opção selecionada:
   banho fraco do acento e texto cheio. O preenchimento inteiro fica para o
   botão que age — aqui só se escolhe um valor. */
.sm-import-tipo.active {
  border-color: var(--accent);
  background: var(--accent-weak);
  color: var(--text);
}
.sm-import-gabarito-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.sm-import-gabarito-head .dl-label { margin: 0; }
.sm-import-gabarito {
  margin: 0;
  padding: 12px 14px;
  border: 1px dashed var(--line-2);
  border-radius: 12px;
  color: var(--muted);
  font: 400 12px/1.7 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  overflow-x: auto;
  white-space: pre;
}
.sm-import-texto {
  min-height: 200px;
  font: 400 12.5px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace !important;
  resize: vertical;
}
.sm-import-resumo {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 12px 14px;
  border: 1px solid var(--accent);
  border-radius: 12px;
  color: var(--muted);
  font-size: 12.5px;
  flex-wrap: wrap;
}
.sm-import-resumo > strong { color: var(--text); font-size: 15px; }
.sm-import-resumo.tem-erro { border-color: var(--danger); }
.sm-import-bloqueio {
  margin: 0;
  color: var(--danger);
  font-size: 12.5px;
  font-weight: 600;
}
.sm-import-lista { display: flex; flex-direction: column; gap: 10px; }
.sm-import-card {
  padding: 12px 14px;
  border: 1px solid var(--line-2);
  border-radius: 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sm-import-card.tem-erro { border-color: var(--danger); }
.sm-import-card.vai-pular { opacity: .55; }
.sm-import-card > header {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.sm-import-card > header > strong {
  flex: 1;
  min-width: 0;
  color: var(--text);
  font-size: 13.5px;
  font-weight: 600;
}
.sm-import-codigo {
  padding: 3px 8px;
  border: 1px solid var(--line-2);
  border-radius: 999px;
  color: var(--accent-text);
  font: 700 10px/1.4 Inter, sans-serif;
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
}
.sm-import-data { color: var(--muted); font-size: 11.5px; white-space: nowrap; }
.sm-import-data-ausente { color: var(--faint); font-style: italic; }
.sm-import-erros,
.sm-import-avisos {
  margin: 0;
  padding-left: 18px;
  font-size: 11.5px;
  line-height: 1.6;
}
.sm-import-erros { color: var(--danger); }
.sm-import-avisos { color: #F5B432; }
.sm-import-erros-topo { padding: 10px 14px 10px 32px; border: 1px solid var(--danger); border-radius: 12px; }
.sm-import-repetido {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  color: #F5B432;
  font-size: 11.5px;
  line-height: 1.5;
  cursor: pointer;
}
.sm-import-repetido input { margin-top: 2px; flex: none; }
.sm-import-campos { display: flex; flex-direction: column; gap: 8px; }
.sm-import-campo > span {
  display: block;
  margin-bottom: 3px;
  color: var(--faint);
  font: 700 9.5px/1.2 Inter, sans-serif;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.sm-import-campo > pre {
  margin: 0;
  max-height: 170px;
  overflow: auto;
  color: var(--muted);
  font: 400 12px/1.55 Inter, sans-serif;
  white-space: pre-wrap;
  word-break: break-word;
}
.sm-import-undo {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 14px 0 0;
  padding: 10px 12px;
  border: 1px solid var(--ok);
  border-radius: 14px;
  color: var(--muted);
  font-size: 12.5px;
  flex-wrap: wrap;
}
.sm-import-undo > svg { color: var(--ok); flex: none; }
.sm-import-undo > span { flex: 1; min-width: 160px; }
.sm-import-undo strong { color: var(--text); }
@media (max-width: 520px) {
  .sm-import-body { max-height: none; }
  .sm-import-tipos > button { flex: 1 1 30%; }
  .sm-import-undo > button { flex: 1 1 auto; }
}
.sm-content-dialog {
  width: min(100%, 620px) !important;
  max-height: min(760px, calc(100dvh - 32px)) !important;
  display: flex;
  flex-direction: column;
  background: transparent !important;
  box-shadow: none !important;
}
.sm-content-modal-header { flex: 0 0 auto; }
.sm-content-modal-heading {
  display: flex;
  align-items: center;
  gap: 11px;
}
.sm-content-modal-heading h3 {
  margin: 2px 0 0;
  color: var(--text);
  font: 400 17px/1.3 Inter, sans-serif;
}
.sm-content-modal-icon {
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 11px;
  color: var(--accent-text);
}
.sm-content-form {
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 20px 22px !important;
  background: transparent !important;
}
.sm-form-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.sm-form-field .dl-label {
  margin: 0;
  color: var(--muted);
  font: 400 11.5px/1.35 Inter, sans-serif;
}
.sm-form-field .dl-label span { color: var(--accent-text); }
.sm-content-form :is(input.dl-input, textarea.dl-input) {
  width: 100%;
  box-sizing: border-box;
  padding: 11px 13px !important;
  border: 1px solid var(--line-2) !important;
  border-radius: 12px !important;
  background: transparent !important;
  color: var(--text) !important;
  font: 400 13.5px/1.55 Inter, sans-serif !important;
  resize: vertical;
  box-shadow: none !important;
}
.sm-content-form textarea.dl-input { min-height: 104px; }
.sm-content-form textarea.sm-article-editor { min-height: 250px; }
.sm-content-form :is(input.dl-input, textarea.dl-input):focus {
  border-color: color-mix(in srgb, var(--accent) 54%, var(--line-2)) !important;
  outline: 1px solid color-mix(in srgb, var(--accent) 28%, transparent) !important;
  outline-offset: 1px;
}
.sm-file-picker {
  min-height: 58px;
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 10px 13px;
  border: 1px dashed var(--line-2);
  border-radius: 12px;
  color: var(--accent-text);
  cursor: pointer;
}
.sm-file-picker:hover { border-color: color-mix(in srgb, var(--accent) 48%, var(--line-2)); }
.sm-file-picker > span {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.sm-file-picker strong {
  color: var(--text);
  font-size: 12.5px;
  font-weight: 400;
}
.sm-file-picker small {
  overflow: hidden;
  color: var(--faint);
  font-size: 10.5px;
  font-weight: 400;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sm-file-picker input { display: none; }
.sm-remove-media {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: 6px;
  color: var(--muted);
  font-size: 11.5px;
  cursor: pointer;
}
.sm-content-modal-actions {
  position: sticky;
  bottom: -20px;
  z-index: 2;
  display: flex;
  justify-content: flex-end;
  gap: 9px;
  margin: 2px -22px -20px;
  padding: 14px 22px 20px;
  border-top: 1px solid var(--line);
  background: transparent;
  backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%);
  -webkit-backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%);
}
.sm-content-modal-actions button {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font-weight: 400 !important;
}
.sm-content-item.sm-notification-target,
.sm-content-card.sm-notification-target,
.sm-accordion-item.sm-notification-target,
#socialmedia-container .dl-card.sm-notification-target {
  border-color: color-mix(in srgb, var(--accent) 48%, transparent) !important;
  outline: 1px solid color-mix(in srgb, var(--accent) 24%, transparent);
  outline-offset: 3px;
  transition: border-color .2s ease, outline-color .2s ease;
}
.sm-delete-content {
  margin-left: auto;
  width: 36px;
  min-width: 36px;
  padding: 0 !important;
}
.sm-system-dialog {
  width: min(100%, 520px);
  max-height: min(680px, calc(100dvh - 32px));
  overflow: auto;
  background: transparent !important;
  border: 1px solid var(--line-2) !important;
  border-radius: 20px !important;
  color: var(--text);
  backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%) !important;
  -webkit-backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%) !important;
}
.sm-system-dialog .dl-system-modal-header {
  background: transparent !important;
}
.sm-system-dialog .dl-system-modal-header h3 {
  margin: 2px 0 0;
  font: 400 17px/1.3 Inter, sans-serif;
}
.sm-modal-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sm-modal-form p {
  margin: 0 0 6px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.55;
}
.sm-modal-form strong { color: var(--text); font-weight: 400; }
.sm-modal-form > .dl-btn-primary { margin-top: 8px; justify-content: center; }
.sm-copy-row {
  display: flex;
  gap: 8px;
  align-items: stretch;
}
.sm-copy-row .dl-input { min-width: 0; flex: 1; }
.sm-copy-row .dl-btn-primary { flex: 0 0 auto; }
.sm-modal-form small { color: var(--faint); font-size: 11.5px; line-height: 1.5; }
.sm-history-details {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px 14px;
  background: transparent;
}
.sm-history-details summary {
  cursor: pointer;
  color: var(--muted);
  font-size: 12px;
  list-style-position: inside;
}
.sm-history-list {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}
.sm-history-list > div {
  display: grid;
  grid-template-columns: minmax(90px, .35fr) 1fr auto;
  gap: 12px;
  align-items: start;
  padding-top: 10px;
  border-top: 1px solid var(--line);
}
.sm-history-list span { color: var(--text); font-size: 12px; }
.sm-history-list p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
.sm-history-list time { color: var(--faint); font-size: 10.5px; }
@media (max-width: 640px) {
  .sm-copy-row { flex-direction: column; }
  .sm-copy-row .dl-btn-primary { min-height: 42px; justify-content: center; }
  .sm-history-list > div { grid-template-columns: 1fr; gap: 4px; }
  .sm-responsibility { flex-basis: 100%; }
  .sm-content-form { padding: 17px !important; }
  .sm-content-modal-actions {
    margin: 2px -17px -17px;
    padding: 13px 17px 17px;
  }
  .sm-content-modal-actions button { flex: 1; }
}

#socialmedia-container .dl-hero::after {
  content: 'SOCIAL' !important;
}

/* A Produtividade usa o mesmo .dl-hero e, por isso, herdaria o 'LISTA' do
   padrão. Aqui a palavra é a do assunto da tela.

   Nas outras telas a marca d'água repete o título: FEED em "Meu Feed", SOCIAL
   em "Social Media", PESQUISA em "Pesquisas e Questionários". Aqui ela dizia
   PROJETOS, que é o nome de uma seção lá embaixo, e não o da tela.

   O que faz as outras se parecerem não é o corpo da letra: é a fatia do topo
   que a palavra ocupa — uma marca no canto, não uma faixa atravessando tudo.
   PRODUTIVIDADE tem 13 letras contra as 6 de SOCIAL; no mesmo corpo ela iria
   de ponta a ponta e passaria por trás do título. O corpo daqui a deixa na
   mesma fatia da PESQUISA, que é a mais longa das outras. */
.dt-prod-hero.dl-hero::after {
  content: 'PRODUTIVIDADE' !important;
  font-size: clamp(44px, 6.1vw, 92px);
  top: -16px;
}
/* No celular a conta muda: lá o corpo é fixo em 68px e só a largura encolhe.
   Em 68px a palavra tem quase 470px e o topo de um telefone tem uns 350px —
   ela sairia pela esquerda e a pessoa leria "ODUTIVIDADE", porque a caixa tem
   overflow hidden. A medida daqui é a maior que cabe até numa tela de 320px.

   A regra do celular para .dl-hero::after mora lá em cima, na @media de 760px,
   e tem a mesma força que o seletor daqui. Como o arquivo é lido de cima para
   baixo, esta precisa vir depois dela para valer. */
@media(max-width:760px){
  .dt-prod-hero.dl-hero::after { font-size:40px; top:30px; }
}

/* No Social media quem separa o topo do conteúdo é o menu de abas, que tem
   18px de folga em cima. A Produtividade não tem esse menu, então o topo
   encostava direto na caixa das Prioritárias. A folga vem para cá, e é a
   mesma medida, para as duas telas manterem o mesmo respiro. */
.dt-prod-hero.dl-hero { margin-bottom: 18px; }

/* Modais com opacidade 100% sólida, contraste nítido e bordas destacadas. */
.dl-modal-overlay,
#sm-content-overlay,
#sm-share-overlay,
#sm-settings-overlay,
#sm-review-overlay,
#sm-lightbox-overlay {
  position: fixed !important;
  inset: 0 !important;
  z-index: 99999 !important;
  background: transparent !important;
  backdrop-filter: blur(var(--dt-backdrop-blur, 16px)) saturate(115%) !important;
  -webkit-backdrop-filter: blur(var(--dt-backdrop-blur, 16px)) saturate(115%) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 16px !important;
}

.dl-modal-overlay .dl-modal-dialog,
#sm-content-overlay .dl-modal-dialog,
#sm-share-overlay .dl-modal-dialog,
#sm-settings-overlay .dl-modal-dialog,
#sm-review-overlay .dl-modal-dialog {
  background: transparent !important;
  background-color: transparent !important;
  color: var(--text, #E9F5F0) !important;
  border: 1px solid var(--line-2, rgba(255, 255, 255, 0.22)) !important;
  border-radius: 22px !important;
  box-shadow: none !important;
  backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%) !important;
  -webkit-backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%) !important;
  overflow: hidden !important;
  opacity: 1 !important;
}

.dl-modal-overlay .dl-modal-dialog > div:first-child,
#sm-content-overlay .dl-modal-dialog > div:first-child,
#sm-share-overlay .dl-modal-dialog > div:first-child,
#sm-settings-overlay .dl-modal-dialog > div:first-child,
#sm-review-overlay .dl-modal-dialog > div:first-child {
  background: transparent !important;
  background-color: transparent !important;
  border-bottom: 1px solid var(--line-2, rgba(255, 255, 255, 0.18)) !important;
}

.dl-modal-overlay .dl-modal-dialog form,
#sm-content-overlay form,
#sm-share-overlay form,
#sm-settings-overlay form,
#sm-review-overlay form {
  background: transparent !important;
  background-color: transparent !important;
  opacity: 1 !important;
}

.dl-modal-overlay input.dl-input,
.dl-modal-overlay textarea.dl-input,
.dl-modal-overlay select.dl-input,
#sm-content-overlay input.dl-input,
#sm-content-overlay textarea.dl-input,
#sm-content-overlay select.dl-input,
#sm-share-overlay input.dl-input,
#sm-settings-overlay input.dl-input,
#sm-review-overlay textarea.dl-input {
  background: transparent !important;
  background-color: transparent !important;
  border: 1px solid var(--line-2, rgba(255, 255, 255, 0.22)) !important;
  color: var(--text, #E9F5F0) !important;
  border-radius: 12px !important;
  outline: none !important;
  box-shadow: none !important;
  backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%) !important;
  -webkit-backdrop-filter: blur(var(--dt-blur, 28px)) saturate(135%) !important;
  opacity: 1 !important;
}

#sm-content-overlay input.dl-input:focus,
#sm-content-overlay textarea.dl-input:focus,
#sm-content-overlay select.dl-input:focus,
#sm-share-overlay input.dl-input:focus,
#sm-settings-overlay input.dl-input:focus,
#sm-review-overlay textarea.dl-input:focus {
  border-color: var(--accent) !important;
  box-shadow: none !important;
  outline: 2px solid var(--accent) !important;
  outline-offset: 1px !important;
}

.sm-type-btn {
  cursor: pointer !important;
  transition: all .16s ease !important;
  font-family: 'Manrope', sans-serif !important;
  background: transparent !important;
  background-color: transparent !important;
  border: 1px solid var(--line-2, rgba(255, 255, 255, 0.22)) !important;
  color: var(--text, #E9F5F0) !important;
  opacity: 1 !important;
}

#sm-content-overlay textarea.dl-input {
  resize: vertical !important;
  min-height: 80px;
  max-height: 42vh;
}

#sm-content-overlay .sm-remove-media {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 9px;
  color: var(--muted);
  font-size: 12px;
  cursor: pointer;
}

#sm-content-overlay .sm-remove-media input { accent-color: var(--danger); }

#socialmedia-container .sm-toolbar {
  display: flex !important;
  align-items: flex-end !important;
  justify-content: space-between !important;
  gap: 12px 16px !important;
  flex-wrap: wrap !important;
  margin-bottom: 20px !important;
  width: 100% !important;
  padding: 0 !important;
}

/* Título pequeno acima de um menu que ficaria solto sem legenda, no mesmo
   vocabulário dos rótulos-marcador (.dl-eyebrow) do restante do app. */
.sm-filter-block {
  min-width: 0;
  max-width: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 7px;
}

.sm-filter-block > .dl-tabs,
.sm-filter-block > .sm-filter-group { max-width: 100%; margin: 0 !important; }

.sm-group-title {
  display: block;
  padding-left: 2px;
  color: var(--faint);
  font: 650 9.5px 'JetBrains Mono', monospace;
  letter-spacing: .14em;
  text-transform: uppercase;
}

#socialmedia-container .sm-toolbar-end {
  margin-left: auto !important;
  margin-right: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  gap: 10px !important;
  flex: 0 0 auto !important;
}

#socialmedia-container .sm-filter-sets {
  min-width: 0;
  display: flex;
  flex: 1 1 auto;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 10px 14px;
}

#socialmedia-container .sm-filter-group {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--line) !important;
  border-radius: 12px;
  background: transparent !important;
}

#socialmedia-container .sm-filter-group .dl-filter-btn {
  min-height: 36px !important;
  border: 1px solid transparent !important;
  background: transparent !important;
  font-weight: 400 !important;
}

#socialmedia-container .sm-filter-group .dl-filter-btn.active,
#socialmedia-container .sm-filter-group .dl-filter-btn[aria-selected="true"] {
  border-color: var(--line) !important;
  background: var(--accent-weak) !important;
  color: var(--text) !important;
}

/* ---------------------------------------------------------------------------
   Calendário e Repositório do Social Media.

   Duas formas de achar o que já existe: o calendário mostra quando cada peça
   sai, o repositório mostra as peças em si. As classes não são presas ao
   #socialmedia-container porque o painel também é montado no acesso por link.
   --------------------------------------------------------------------------- */

.sm-calendar-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(212px, 1fr));
  gap: 12px;
}

/* Todas as caixas têm exatamente a mesma altura: o cabeçalho ocupa duas linhas
   fixas (data / dia da semana) e o corpo absorve o resto. Sem isso, o selo
   "Hoje" e títulos de tamanhos diferentes deixariam a grade desalinhada. */
.sm-cal-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
  height: 180px;
  padding: 14px 15px;
  border: 1px solid var(--line-2);
  border-radius: 16px;
  background: var(--panel);
  overflow: hidden;
}

.sm-cal-card.e-hoje {
  border-color: color-mix(in srgb, var(--accent) 58%, var(--line-2));
  background: var(--accent-weak);
}

.sm-cal-topo {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: none;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
}

.sm-cal-data {
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
}

.sm-cal-data strong {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 30px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

.sm-cal-data span {
  font-size: 12.5px;
  color: var(--muted);
  white-space: nowrap;
}

.sm-cal-semana {
  display: flex;
  align-items: center;
  gap: 7px;
  min-height: 17px;
}

.sm-cal-semana small {
  font-size: 12px;
  color: var(--faint);
  white-space: nowrap;
}

.sm-cal-hoje {
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--accent);
  color: var(--on-accent);
  font-size: 10px;
  font-style: normal;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.sm-cal-corpo {
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1;
  min-height: 0;
}

/* Mais de um conteúdo na mesma data: arrastar de lado passa para o próximo.
   O encaixe é do próprio navegador (scroll-snap), sem script de arraste. */
.sm-cal-itens {
  display: flex;
  flex: 1;
  min-height: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}

.sm-cal-itens::-webkit-scrollbar { display: none; }

/* Só o slider (o que tem mais de um conteúdo) convida ao arraste. */
.sm-cal-itens[onpointerdown] { cursor: grab; }

.sm-cal-itens.e-arrastando {
  cursor: grabbing;
  scroll-snap-type: none;
  scroll-behavior: auto;
  user-select: none;
  -webkit-user-select: none;
}

.sm-cal-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 0 0 100%;
  min-width: 0;
  scroll-snap-align: start;
  scroll-snap-stop: always;
}

/* Selo de identificação usado pelo calendário e pelo repositório: o código do
   conteúdo (Card 01) e, ao lado, o estado em que ele está. É o que permite
   achar a peça sem abrir a lista. As cores do estado vêm das mesmas regras
   .status-* das pílulas do accordion. */
/* Uma linha só: o calendário tem caixas de altura fixa e, com quebra, o selo
   roubaria a segunda linha do título. Estado comprido encurta com reticências
   (o texto inteiro fica no title). */
.sm-selo-linha {
  display: flex;
  align-items: center;
  gap: 5px;
  flex: none;
  flex-wrap: nowrap;
  min-width: 0;
  max-width: 100%;
}

.sm-selo-codigo {
  flex: none;
  padding: 1px 7px;
  border: 1px solid var(--line-2);
  border-radius: 6px;
  color: var(--muted);
  font-size: 9.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
}

.sm-selo-estado {
  min-width: 0;
  padding: 1px 8px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 9.5px;
  letter-spacing: 0.02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* O título nunca passa de duas linhas — é o que mantém as caixas iguais. O
   flex:none impede que a caixa de altura fixa o esprema e corte a segunda
   linha ao meio, sem reticências. */
.sm-cal-nome {
  flex: none;
  font-size: 13px;
  line-height: 1.4;
  color: var(--text);
  overflow-wrap: anywhere;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.sm-cal-pontos {
  display: flex;
  justify-content: center;
  gap: 5px;
  flex: none;
}

.sm-cal-ponto {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--line-2);
  transition: background .15s ease, transform .15s ease;
}

.sm-cal-ponto.e-atual {
  background: var(--accent);
  transform: scale(1.25);
}

.sm-repo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(198px, 1fr));
  gap: 14px;
}

.sm-repo-card {
  display: flex;
  flex-direction: column;
  margin: 0;
  border: 1px solid var(--line-2);
  border-radius: 16px;
  background: var(--panel);
  overflow: hidden;
}

.sm-repo-moldura {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1;
  background: var(--panel-2);
  overflow: hidden;
}

.sm-repo-moldura.e-video { background: #000; }

.sm-repo-midia {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.sm-repo-moldura:not(.e-video) .sm-repo-midia { cursor: zoom-in; }
.sm-repo-moldura.e-video .sm-repo-midia { object-fit: contain; }

.sm-repo-card figcaption {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 11px 13px 0;
}

.sm-repo-card figcaption strong {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--text);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  overflow-wrap: anywhere;
}

.sm-repo-acoes {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
  padding: 11px 13px 13px;
  margin-top: auto;
}

.sm-repo-acao {
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
  padding: 6px 11px !important;
  border-radius: 10px !important;
  font-size: 12px !important;
  text-decoration: none !important;
  background: var(--panel-2) !important;
  color: var(--text) !important;
  border: 1px solid var(--line-2) !important;
}

.sm-repo-acao:hover {
  border-color: color-mix(in srgb, var(--accent) 48%, var(--line-2)) !important;
  color: var(--accent-text) !important;
}

@media (max-width: 560px) {
  .sm-calendar-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }
  .sm-repo-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
  .sm-cal-data strong { font-size: 25px; }
  .sm-cal-card { height: 170px; }
}

/* No celular o cabeçalho do conteúdo já disputa espaço com o selo de status:
   ali fica só a data, e o rótulo volta assim que há largura. */
@media (max-width: 480px) {
  .sm-scheduled-rotulo { display: none; }
}

#socialmedia-container .sm-search-field {
  position: relative !important;
  width: 260px !important;
  max-width: 100% !important;
  margin: 0 !important;
}

#socialmedia-container .sm-search-field > svg {
  position: absolute;
  z-index: 1;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--muted);
  pointer-events: none;
}

#socialmedia-container .sm-search-field .dl-input {
  width: 100%;
  height: 40px;
  padding-left: 36px !important;
  background: var(--panel-2) !important;
  border-color: var(--line-2) !important;
}

#socialmedia-container .dl-icon-button {
  width: 42px;
  min-width: 42px;
  padding-inline: 0 !important;
}

#socialmedia-container :is(.dl-input, .dl-btn-primary, .dl-btn-secondary, .dl-btn-danger, .dl-filter-btn):focus-visible,
:is(#sm-content-overlay, #sm-share-overlay, #sm-settings-overlay, #sm-review-overlay) :is(input, textarea, select, button):focus-visible {
  outline: 2px solid var(--accent) !important;
  outline-offset: 2px;
}

@media (max-width: 900px) {
  #socialmedia-container .sm-search-field {
    flex: 1 1 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-top: 4px !important;
  }
}

@media (max-width: 560px) {
  #socialmedia-container .sm-filter-group {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 3px;
    scrollbar-width: none;
  }
  #socialmedia-container .sm-filter-group::-webkit-scrollbar { display: none; }
  #socialmedia-container .sm-filter-group .dl-filter-btn { flex: none; }
  #sm-content-overlay .dl-modal-dialog,
  #sm-share-overlay .dl-modal-dialog,
  #sm-settings-overlay .dl-modal-dialog,
  #sm-review-overlay .dl-modal-dialog { border-radius: 16px !important; }
}

/* A barra de instalação perdeu a receita de vidro daqui: ela deixou de ser
   pílula flutuante no rodapé e virou faixa de 56px entre o topo e o conteúdo
   (o desenho mora no próprio pwa.js). O !important desta regra vencia a faixa
   nova e devolvia o blur. */

/* Feedback visual consistente para navegacao, filtros e seletores. O tema
   Pulse usa superficies transparentes, por isso o realce precisa vir do
   accent-weak e nao de --panel-2. */
html body .dt-app-root .dt-sidebar-nav-item:hover,
html body .dt-app-root .dt-sidebar-nav-item:focus-visible,
html body .dt-app-root .dt-sidebar-nav-item[aria-pressed="true"],
html body .dt-app-root .dt-sidebar-nav-item[aria-current="true"] {
  color: var(--text) !important;
  border-color: color-mix(in srgb, var(--accent) 55%, var(--line-2)) !important;
  background: var(--accent-weak) !important;
  box-shadow: inset 3px 0 0 var(--accent) !important;
}

html body .dt-app-root :is(.dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn):hover {
  color: var(--text) !important;
  border-color: color-mix(in srgb, var(--accent) 42%, var(--line-2)) !important;
  background: var(--accent-weak) !important;
}

html body .dt-app-root :is(.dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn).is-active,
html body .dt-app-root :is(.dl-tab-btn, .dl-filter-btn).active,
html body .dt-app-root :is(.dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn)[aria-selected="true"],
html body .dt-app-root :is(.dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn)[aria-pressed="true"] {
  color: var(--text) !important;
  border-color: color-mix(in srgb, var(--accent) 62%, var(--line-2)) !important;
  background: var(--accent-weak) !important;
  box-shadow: inset 0 -2px 0 var(--accent) !important;
}

html body .dt-app-root .dt-media-station-btn:hover,
html body .dt-app-root .dt-media-station-btn:focus-visible,
html body .dt-app-root .dt-media-station-btn[aria-pressed="true"] {
  color: var(--text) !important;
  border-color: var(--accent) !important;
  background: var(--accent-weak) !important;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 28%, transparent) !important;
}

html body .dt-app-root :is(.dt-sidebar-nav-item, .dt-site-tab, .dt-settings-tabs > button, .dl-tab-btn, .dl-filter-btn, .dt-media-station-btn):active {
  transform: scale(.975);
}

/* ==========================================================================
   PADRÃO DOS BOTÕES DOS MÓDULOS (Lista, Social Media, Pesquisas)
   ==========================================================================
   Três definições concorrentes conviviam: styles.css dava `padding:11px 22px`
   sem altura mínima ao primário e ao perigo (≈38px), surveys.css dava
   `min-height:42px` ao secundário, e dezenas de chamadas mandavam padding
   inline (≈30px). Lado a lado, na mesma linha de ações, os três tinham altura
   diferente — e um deles ainda cortava o texto quando a altura de linha vinha
   apertada do pai.
   
   Daqui em diante a régua é uma só: 42px de altura, 12px de raio, altura de
   linha 1 e centralização em flex. `.surv-btn-sm` e `.dl-btn-sm` continuam
   sendo as variantes compactas, agora declaradas. */
:is(#darklist-container, #socialmedia-container, #surveys-container,
    #surveys-standalone-root, .dl-modal-overlay)
:is(.dl-btn-primary, .dl-btn-secondary, .dl-btn-danger, .dl-quiet-action, .dl-create-primary) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 42px;
  border-radius: 12px;
  font-family: 'Manrope', sans-serif;
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  box-sizing: border-box;
  cursor: pointer;
}

:is(#darklist-container, #socialmedia-container, #surveys-container,
    #surveys-standalone-root, .dl-modal-overlay)
:is(.dl-btn-primary, .dl-btn-danger) {
  padding: 0 18px;
}

/* Variante compacta declarada, para as linhas de ação densas. */
:is(#darklist-container, #socialmedia-container, #surveys-container,
    #surveys-standalone-root, .dl-modal-overlay)
:is(.dl-btn-sm, .surv-btn-sm) {
  min-height: 34px;
  padding: 0 12px;
  font-size: 12px;
  border-radius: 10px;
}

/* Botões só de ícone: alvo quadrado de verdade, em vez de um <svg> solto. */
:is(#darklist-container, #socialmedia-container, #surveys-container,
    #surveys-standalone-root, .dl-modal-overlay)
:is(.dl-btn-close-modal, .dl-btn-back) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  min-width: 34px;
  flex: none;
  padding: 0;
  border-radius: 10px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  transition: background .16s ease, color .16s ease, border-color .16s ease;
}
:is(#darklist-container, #socialmedia-container, #surveys-container,
    #surveys-standalone-root, .dl-modal-overlay)
:is(.dl-btn-close-modal, .dl-btn-back):hover {
  background: var(--accent-weak);
  border-color: color-mix(in srgb, var(--accent) 40%, transparent);
  color: var(--text);
}

/* Foco visível e igual em toda parte: era o que faltava para o teclado. */
:is(#darklist-container, #socialmedia-container, #surveys-container,
    #surveys-standalone-root, .dl-modal-overlay)
:is(button, [role="button"], a[href], input, select, textarea):focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: 10px;
}

/* Linhas de ação: nada de estourar a caixa, e nada de espremer texto. */
.sm-item-actions,
.dl-card-actions,
.surv-card-footer-end,
.dl-editor-header > div {
  min-width: 0;
}
.sm-item-actions > *,
.dl-card-actions > * { flex: 0 0 auto; }

/* ==========================================================================
   CABEÇALHO DOS MÓDULOS: O PAR DE BOTÕES TEM UMA LARGURA SÓ
   ==========================================================================
   Na Lista, no Social Media e nas Pesquisas o cabeçalho traz sempre a mesma
   dupla: a ação principal do espaço e o Voltar. Altura, raio, fonte e padding
   já eram os mesmos; a largura não, porque cada rótulo tem um tamanho
   ("Criar lista" ~114px, "Novo projeto" ~135px, "Nova pesquisa" ~147px) e o
   Voltar ficava com a sua. O resultado eram três cabeçalhos parecidos e
   nenhum igual.

   A régua passa a ser 148px: a medida do rótulo mais largo que já existe, e
   não um número escolhido no olho. Rótulo curto sobra espaço, rótulo longo
   cresce a partir dela. Vale só para essa dupla do cabeçalho, marcada por
   `.dl-hero-side` e `.dl-back-action` — os `.dl-quiet-action` das linhas de
   ação densas continuam do tamanho do próprio texto. */
.dl-hero-side .dl-create-primary,
:is(#darklist-container, #socialmedia-container, #surveys-container,
    #surveys-standalone-root) .dl-back-action {
  min-width: 148px;
}

/* No celular a dupla divide a linha em duas metades exatas (`flex-basis: 0`),
   que é a mesma ideia de largura única num espaço que não comporta 148px. */
@media (max-width: 760px) {
  .dl-hero-side .dl-create-primary,
  .dl-hero-side .dl-back-action {
    min-width: 0;
    flex: 1 1 0;
  }
}

/* ==========================================================================
   Ambientes da Produtividade

   O ambiente é a camada de cima do quadro: ambiente → projeto → prioritárias
   → seção → tarefas. Ele não é um filtro em cima da mesma tela; é um espaço
   próprio. A Produtividade tem duas telas — a lista de ambientes (caixas) e o
   interior de um ambiente — e nunca as duas ao mesmo tempo.
   ========================================================================== */

/* --- Os três botões do topo -------------------------------------------- */
/* O de tarefa é o único preenchido: criar ambiente e projeto é preparação,
   registrar tarefa é o que a pessoa vem fazer todo dia. */

.dt-prod-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.dt-prod-ghost {
  min-height: 42px;
  padding: 0 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-sizing: border-box;
  border: 1px solid var(--line-2);
  border-radius: 12px;
  background: transparent;
  color: var(--text);
  font: 600 14px 'Manrope', sans-serif;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
  transition: color .16s ease, border-color .16s ease, background .16s ease;
}
.dt-prod-ghost:hover { color: var(--accent-text); border-color: var(--accent); background: var(--accent-weak); }
.dt-prod-ghost:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.dt-prod-ghost svg { flex: none; }

/* --- A lista de ambientes ---------------------------------------------- */

.dt-env-space { margin: 26px 0 8px; }

/* --- O card do ambiente é um dl-card ------------------------------------ */
/* O desenho vem inteiro do padrão do Social Media; aqui só o que o padrão
   não tem: cursor (é um article, não um button) e as ações no rodapé. */

.dt-env-card { cursor: pointer; }
.dt-env-card:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.dt-env-card-tools { display: inline-flex; align-items: center; gap: 8px; }

.dt-env-card-action {
  width: 34px;
  height: 34px;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease;
}
.dt-env-card-action:hover { color: var(--accent-text); border-color: var(--accent); }
.dt-env-card-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.dt-env-card-action-danger:hover { color: var(--danger); border-color: var(--danger); }

/* O rodapé do dl-card alinha pelo centro; com botões de 34px de um lado e o
   carimbo do outro, o carimbo precisa poder quebrar sem estourar. */
.dt-env-card .dl-card-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }

/* --- Nenhum ambiente ainda --------------------------------------------- */

/* O desenho é o mesmo do vazio do Social Media: o ícone solto na cor de
   destaque, sem moldura, e o bloco inteiro centrado na área. */
.dt-env-empty { text-align: center; padding: 64px 20px; color: var(--muted); }
.dt-env-empty .dt-empty-mark {
  margin-bottom: 16px;
  display: flex;
  justify-content: center;
  color: var(--accent-text);
}
.dt-env-empty h3 { margin: 0 0 8px; font: 600 18px 'Space Grotesk', sans-serif; color: var(--text); }
.dt-env-empty p { margin: 0 0 20px; font-size: 13px; }
.dt-env-empty strong { color: var(--text); font-weight: 600; }

/* --- Cabeçalho do ambiente aberto -------------------------------------- */

.dt-env-open {
  margin: 22px 0 24px;
  padding-bottom: 18px;
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  border-bottom: 1px solid var(--line);
}

.dt-env-back {
  min-height: 38px;
  flex: none;
  padding: 0 14px 0 10px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  box-sizing: border-box;
  border: 1px solid var(--line-2);
  border-radius: 12px;
  background: transparent;
  color: var(--muted);
  font: 500 13px 'Manrope', sans-serif;
  line-height: 1;
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease;
}
.dt-env-back:hover { color: var(--text); border-color: var(--line); }
.dt-env-back:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.dt-env-open-title { flex: 1 1 240px; min-width: 0; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.dt-env-open-title h2 {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font: 600 clamp(20px, 2.6vw, 27px) 'Space Grotesk', sans-serif;
  letter-spacing: -.02em;
}
.dt-env-open-meta { flex: none; color: var(--faint); font: 500 12px 'JetBrains Mono', monospace; }
.dt-env-open-actions { flex: none; display: flex; align-items: center; gap: 8px; }

.dt-env-dot { width: 10px; height: 10px; flex: none; border-radius: 50%; }

/* --- O topo em telas largas -------------------------------------------- */
/* A métrica e os três botões dividem a mesma linha; sem isto o terceiro botão
   cai sozinho para a linha de baixo e o topo fica torto. */
.dt-prod-hero .dl-hero-side { align-items: center; gap: 18px; }
.dt-prod-hero .dt-prod-actions { flex-wrap: nowrap; }
@media (max-width: 1180px) {
  .dt-prod-hero .dl-hero-side { flex-wrap: wrap; justify-content: flex-end; }
  .dt-prod-hero .dt-prod-actions { flex-wrap: wrap; justify-content: flex-end; }
}

/* --- Celular ------------------------------------------------------------ */

@media (max-width: 760px) {
  .dt-prod-actions { width: 100%; gap: 8px; }
  .dt-prod-ghost { flex: 1 1 0; min-width: 0; padding: 0 10px; font-size: 13.5px; }
  .dt-prod-ghost span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  /* O botão de tarefa ganha a linha inteira: é a ação do dia a dia. */
  .dl-hero-side .dl-create-primary { flex: 1 1 100%; order: 2; }
  .dt-prod-actions .dl-create-primary { flex: 1 1 100%; }

  .dt-env-space { margin: 18px 0 4px; }
  /* A grade e o card vêm do padrão dl-card, que já vira coluna única aqui.
     Só o rodapé precisa de ajuste: com os três botões de 40px, o carimbo de
     atualização desce para a linha de baixo. */
  .dt-env-grid { margin-bottom: 20px; }
  .dt-env-card .dl-card-footer { row-gap: 8px; }
  .dt-env-card .dl-card-total { flex: 1 1 100%; }

  .dt-env-open { margin: 16px 0 18px; padding-bottom: 14px; gap: 10px; }
  .dt-env-back { width: 100%; justify-content: flex-start; }
  .dt-env-open-title { flex: 1 1 100%; }
  .dt-env-open-title h2 { flex: 1 1 100%; }
  .dt-env-open-meta { flex: 1 1 100%; }
  .dt-env-open-actions { margin-left: auto; }
}

/* Rodapé do cartão de ideia: "Ver detalhes", "Renomear" e "Excluir".

   Com dois botões a linha cabia em qualquer largura. Com o terceiro, o
   "Excluir" passava da borda do cartão num aparelho de 375px — a linha não
   quebrava porque o espaçador `flex:1` segurava tudo junto. Aqui a linha passa
   a quebrar, o espaçador sai de cena e o "Excluir" continua à direita, agora na
   segunda linha. */
.dt-insight-actions { flex-wrap: wrap; row-gap: 8px; }

@media (max-width: 560px) {
  .dt-insight-actions > span { display: none; }
  .dt-insight-actions .dt-insight-delete { margin-left: auto; }
}

/* ==========================================================================
   Voltar à apresentação e ao tour, pelo perfil
   ========================================================================== */

.dt-guia-box {
  margin: 4px 0 20px;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--panel);
}
.dt-guia-topo { display: flex; align-items: flex-start; gap: 12px; }
.dt-guia-icone {
  width: 36px;
  height: 36px;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line-2);
  border-radius: 11px;
  background: var(--panel-2);
  color: var(--accent-text);
}
.dt-guia-texto { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.dt-guia-texto strong { font-size: 14px; font-weight: 600; }
.dt-guia-texto small { color: var(--muted); font-size: 12px; line-height: 1.5; }

.dt-guia-acoes { margin-top: 13px; display: flex; gap: 9px; flex-wrap: wrap; }
.dt-guia-botao {
  min-height: 40px;
  flex: 1 1 190px;
  min-width: 0;
  padding: 0 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-sizing: border-box;
  border: 1px solid var(--line-2);
  border-radius: 12px;
  background: transparent;
  color: var(--text);
  font: 600 13px 'Manrope', sans-serif;
  line-height: 1;
  cursor: pointer;
  transition: color .16s ease, border-color .16s ease, background .16s ease;
}
.dt-guia-botao:hover { color: var(--accent-text); border-color: var(--accent); background: var(--accent-weak); }
.dt-guia-botao:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.dt-guia-botao svg { flex: none; }
.dt-guia-botao span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

@media (max-width: 560px) {
  .dt-guia-acoes { flex-direction: column; }
  .dt-guia-botao { flex: 1 1 auto; width: 100%; }
}

/* ==========================================================================
   Uma régua só para os botões da Produtividade no celular

   Medindo a tela num aparelho de 375px, os botões de ação da mesma família
   apareciam em cinco tamanhos diferentes — 32×34, 34×34, 36×34, 32×32 — e um
   deles sem canto arredondado nenhum, porque o estilo vinha inline do template.
   Nenhum chegava aos 40px que o dedo precisa.

   Aqui os ícones de ação viram 40×40 com o mesmo canto, e os botões de barra
   ficam todos com 42px de altura. É `!important` porque o valor concorrente é
   inline: sem isso a regra não alcança.
   ========================================================================== */

@media (max-width: 760px) {
  /* Os botões soltos. Os que vivem dentro de um menu-pílula
     (.dt-project-actions e companhia) são dimensionados no floating-shell.css,
     que é quem desenha a pílula e carrega depois deste arquivo. */
  .dt-env-card-action {
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    flex: none !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 11px !important;
    box-sizing: border-box !important;
  }

  /* A pastilha de prioritária é um interruptor, não um ícone: ela mantém a
     forma de cápsula e só cresce até a mesma altura dos vizinhos. */
  .dt-supertask-form-toggle { height: 30px !important; }

  .dt-env-back { min-height: 42px; }

  /* Barras de ação: mesma altura para tudo o que é botão de linha. */
  .dt-prod-ghost,
  .dt-guia-botao,
  .dl-hero-side .dl-create-primary { min-height: 42px; }

  /* Os grupos de ação respiram igual, em vez de cada um com a sua folga. */
  .dt-env-open-actions,
  .dt-env-card-tools { gap: 8px !important; }

  /* O rodapé da tarefa tinha os dois botões fora da régua: 'Feito' com 31px de
     altura e 'Arquivar' com 32px de lado, ao lado de um menu de 40px. */
  .dt-task-footer > button {
    min-height: 40px !important;
    padding: 0 14px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 11px !important;
    box-sizing: border-box !important;
  }
  .dt-task-footer > button[title='Arquivar'] {
    width: 40px !important;
    min-width: 40px !important;
    padding: 0 !important;
  }

  /* A régua 'Sem seção' é clicável e tinha 14px de altura: a faixa de toque
     agora acompanha o resto, sem mudar o desenho da linha. */
  .dt-task-grid + button,
  [data-drop-section] > button[data-section] { min-height: 38px !important; }
}

/* ==========================================================================
   Modal da rotina

   Dias e áudio não são abas: são escolhas de formulário. Cada linha tem o
   próprio desenho — sete colunas iguais para os dias, fichas que quebram
   linha para as estações — em vez de herdar o menu-pílula, que espremia as
   cinco estações numa linha só e cortava os rótulos no meio.
   ========================================================================== */

.dt-range-days {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 6px;
  margin-bottom: 18px;
}

.dt-range-day {
  min-height: 40px;
  min-width: 0;
  padding: 0 2px;
  overflow: hidden;
  border: 1px solid var(--line-2);
  border-radius: 10px;
  background: transparent;
  color: var(--muted);
  font: 600 11.5px 'Manrope', sans-serif;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease, background .15s ease;
}
.dt-range-day:hover { color: var(--text); border-color: var(--line); }
.dt-range-day[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent);
  color: var(--on-accent);
}
.dt-range-day:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.dt-range-ambients {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
}

.dt-range-ambient {
  min-height: 40px;
  padding: 0 14px;
  border: 1px solid var(--line-2);
  border-radius: 11px;
  background: transparent;
  color: var(--muted);
  font: 500 12.5px 'Manrope', sans-serif;
  white-space: nowrap;
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease, background .15s ease;
}
.dt-range-ambient:hover { color: var(--text); border-color: var(--line); }
.dt-range-ambient[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent-weak);
  color: var(--text);
  font-weight: 600;
}
.dt-range-ambient:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.dt-range-foot {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.dt-range-gap { flex: 1 1 auto; }

.dt-range-foot > button {
  min-height: 42px;
  padding: 0 18px;
  box-sizing: border-box;
  border-radius: 12px;
  font: 600 13.5px 'Manrope', sans-serif;
  line-height: 1;
  cursor: pointer;
  transition: filter .16s ease, color .16s ease, border-color .16s ease, background .16s ease;
}
.dt-range-cancel { border: 1px solid var(--line-2); background: transparent; color: var(--text); }
.dt-range-cancel:hover { background: var(--panel-2); }
.dt-range-save { border: none; background: var(--accent); color: var(--on-accent); font-weight: 700; }
.dt-range-save:hover { filter: brightness(1.06); }
.dt-range-delete { border: 1px solid rgba(255, 107, 107, .3); background: transparent; color: var(--danger); }
.dt-range-delete:hover { border-color: var(--danger); }

@media (max-width: 560px) {
  .dt-range-days { gap: 4px; }
  .dt-range-day { font-size: 10.5px; }
  /* No celular a pilha segue a dos outros modais: ação principal no topo,
     a destrutiva por último. */
  .dt-range-foot > button { flex: 1 1 100%; }
  .dt-range-gap { display: none; }
  .dt-range-save { order: 1; }
  .dt-range-cancel { order: 2; }
  .dt-range-delete { order: 3; }
}

/* --- A assinatura de autoria -------------------------------------------- */

/* Quem criou cada projeto e cada tarefa, discreto de propósito. Ela responde
   "quem fez isto" para quem quiser saber e desaparece na leitura de quem não
   quer: autoria em destaque, repetida em cada cartão, vira ruído. Por isso tem
   o tamanho de um rodapé e a cor de um. */
.dt-assinatura {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 3px 9px 3px 3px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--panel-2);
  color: var(--faint);
  font-size: 11px;
  line-height: 1;
}
.dt-assinatura-foto,
.dt-assinatura-inicial {
  flex: none;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  object-fit: cover;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.dt-assinatura-inicial {
  background: var(--accent-weak);
  color: var(--accent-text);
  font-size: 10px;
  font-weight: 600;
}
.dt-assinatura-nome {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* No cabeçalho do projeto a assinatura divide a linha com o nome, que pode ser
   longo: ela não pode empurrar o resto para fora. */
.dt-project-header .dt-assinatura { flex: none; margin-left: 2px; }
/* A caixa de "Solicitar Revisão" é a única que o cliente abre para escrever.
   Como vidro translúcido, o card que ele está revisando continuava passando
   por trás e disputava a leitura com o que ele digitava. Aqui ela é opaca:
   preta nos temas escuros, clara nos claros — o valor vem de --bg-elev, que
   todos os temas definem. A regra genérica acima zera a sombra; esta vem
   depois para devolvê-la, porque sem vidro a caixa precisa de relevo. */
#sm-review-overlay .dl-modal-dialog {
  background: var(--bg-elev, #0A0A0A) !important;
  background-color: var(--bg-elev, #0A0A0A) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  box-shadow: 0 28px 70px -28px rgba(0, 0, 0, 0.86) !important;
}

#sm-review-overlay .dl-modal-dialog > div:first-child {
  background: var(--bg-elev, #0A0A0A) !important;
  background-color: var(--bg-elev, #0A0A0A) !important;
}

/* Cinza neutro: clareia sobre fundo preto e escurece sobre fundo branco, então
   o campo aparece nos dois lados sem uma cor por tema. */
#sm-review-overlay textarea.dl-input {
  background: rgba(127, 127, 127, 0.12) !important;
  background-color: rgba(127, 127, 127, 0.12) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* O modal força color:var(--on-accent) em todo .dl-btn-primary, e isso vencia
   o âmbar inline do "Enviar para Revisão": o rótulo ficava escuro sobre um
   fundo escuro e o botão parecia vazio. Âmbar preenchido resolve os dois. */
#sm-review-overlay .dl-btn-primary,
html body .dt-app-root .dl-modal-overlay#sm-review-overlay .dl-btn-primary {
  background: #F5B432 !important;
  background-color: #F5B432 !important;
  border: 1px solid #F5B432 !important;
  color: #1A1206 !important;
}

/* ---------------------------------------------------------------------------
   Barra de Conteúdo · Calendário · Repositório, e o destaque da revisão.

   "Acesso fácil" era lido como filtro porque estava desenhado igual ao filtro
   ao lado: dois grupos de botões-cápsula, um do lado do outro, e o de cima
   mudava o que o de baixo mostrava. Agora escolher a tela continua sendo
   botão — é navegação — e recortar o que se vê virou menu suspenso: formas
   diferentes para trabalhos diferentes, e cada tela só mostra os menus que
   de fato aplica.
   --------------------------------------------------------------------------- */
/* !important em bloco: dentro do #socialmedia-container há regras que zeram o
   fundo de todo campo ("background: none transparent !important") e repintam a
   borda. Sem escapar delas a seta do menu suspenso some, e ele deixa de
   parecer um menu — vira uma caixa de texto em que não se consegue escrever. */
#socialmedia-container select.sm-drop {
  height: 40px;
  min-width: 200px;
  max-width: 100%;
  padding: 0 34px 0 12px;
  border: 1px solid var(--line-2) !important;
  border-radius: 12px !important;
  background-color: transparent !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23909090' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: right 12px center !important;
  color: var(--text) !important;
  font: 400 13px/1 'Inter', sans-serif !important;
  cursor: pointer;
  appearance: none !important;
  -webkit-appearance: none !important;
  /* O mesmo bloco do shell joga um blur atrás de todo campo; num controle de
     40px isso só borra a borda. */
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
#socialmedia-container select.sm-drop:hover { border-color: var(--accent) !important; }
#socialmedia-container select.sm-drop:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
}
/* O popup do select é janela do sistema: sem cor explícita ele herda o branco
   do sistema e some no tema escuro. */
#socialmedia-container select.sm-drop option {
  background: var(--bg-elev);
  color: var(--text);
}

@media (max-width: 760px) {
  #socialmedia-container .sm-filter-block { flex: 1 1 220px; }
  #socialmedia-container select.sm-drop { width: 100% !important; min-width: 0 !important; }
}

/* ---------------------------------------------------------------------------
   Revisão: o caminho que mais precisa ser visto era o mais apagado da tela.
   --------------------------------------------------------------------------- */

/* Marca lateral: acha o conteúdo com pedido em aberto sem abrir item por item.
   O tom é o mesmo da pílula "Revisão solicitada" e do aviso lá dentro — quem
   varre a lista, abre o item e depois abre o modal da arte tem de reconhecer o
   mesmo estado nos três lugares. O âmbar fica com a AÇÃO de pedir revisão. */
.sm-accordion-card.sm-em-revisao {
  border-left: 3px solid #FE8181 !important;
}
html[data-dt-theme="light"] .sm-accordion-card.sm-em-revisao {
  border-left: 3px solid #E02424 !important;
}

/* A caixa com o que o revisor pediu: é a instrução de trabalho de quem criou
   o conteúdo, não um aviso a mais na pilha. Mesmo texto e mesmas cores da
   .sm-artwork-note, que repete este pedido dentro do modal da arte final. */
.sm-revisao-aviso {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px;
  border: 1px solid rgba(254, 129, 129, 0.45);
  border-left: 3px solid #FE8181;
  border-radius: 12px;
  background: rgba(254, 129, 129, 0.12);
}
.sm-revisao-icone {
  flex: none;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: rgba(254, 129, 129, 0.20);
  color: #FEB2B2;
}
.sm-revisao-corpo { min-width: 0; flex: 1 1 auto; }
.sm-revisao-topo {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 10px;
}
.sm-revisao-topo strong {
  font: 700 12.5px/1.2 'Inter', sans-serif;
  letter-spacing: .01em;
  color: #FEB2B2;
}
.sm-revisao-topo small {
  font: 400 11.5px/1.2 'Inter', sans-serif;
  color: var(--muted);
}
.sm-revisao-nota {
  margin: 7px 0 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--text);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
html[data-dt-theme="light"] .sm-revisao-aviso {
  border-color: #F8B4B4;
  border-left-color: #E02424;
  background: #FDE8E8;
}
html[data-dt-theme="light"] .sm-revisao-icone {
  background: #FBD5D5;
  color: #9B1C1C;
}
html[data-dt-theme="light"] .sm-revisao-topo strong { color: #9B1C1C; }

/* As duas decisões do revisor. São o motivo de ele ter aberto o conteúdo:
   saem maiores que "copiar descrição" e cada uma na cor do seu caminho. */
:is(#socialmedia-container, .dl-modal-overlay) .sm-btn-decisao {
  min-height: 44px !important;
  padding: 0 20px !important;
  border-radius: 12px !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
}
/* Verde explícito, não var(--ok): em vários temas --ok é o próprio acento, e
   aprovar sairia da mesma cor de tudo o mais. */
:is(#socialmedia-container, .dl-modal-overlay) .dl-btn-primary.sm-btn-aprovar {
  background: #48BB78 !important;
  border: 1px solid #48BB78 !important;
  color: #05210F !important;
}
:is(#socialmedia-container, .dl-modal-overlay) .dl-btn-primary.sm-btn-aprovar:hover {
  background: #5CCB8B !important;
  border-color: #5CCB8B !important;
}

/* Solicitar revisão: a regra que uniformiza .dl-btn-secondary no container
   repinta tudo com color:var(--text) !important, e o botão desaparecia no meio
   dos outros, sem nada dizendo que ali se pede alteração. A cor volta por
   classe, que é o que o !important respeita. */
#socialmedia-container .dl-btn-secondary.sm-btn-review,
:is(#darklist-container, #socialmedia-container, #surveys-container, .dl-modal-overlay) .dl-btn-secondary.sm-btn-review {
  color: #F5B432 !important;
  border: 1px solid rgba(245, 180, 50, 0.55) !important;
  background: rgba(245, 180, 50, 0.12) !important;
}
#socialmedia-container .dl-btn-secondary.sm-btn-review:hover,
:is(#darklist-container, #socialmedia-container, #surveys-container, .dl-modal-overlay) .dl-btn-secondary.sm-btn-review:hover {
  border-color: rgba(245, 180, 50, 0.9) !important;
  background: rgba(245, 180, 50, 0.20) !important;
}
:is(html[data-dt-theme="light"],html[data-dt-theme="superlight"],html[data-dt-theme="lightrose"],html[data-dt-theme="lightlime"]) :is(#darklist-container, #socialmedia-container, #surveys-container, .dl-modal-overlay) .dl-btn-secondary.sm-btn-review {
  color: #92400E !important;
  border: 1px solid #F59E0B !important;
  background: #FEF3C7 !important;
}

/* A faixa "Agora: quem faz o quê" fica em bloco próprio quando o item está
   parado esperando alguém — é a primeira linha que se lê ao abrir. */
.sm-item-actions .sm-responsibility-revision {
  flex-basis: 100%;
  font-size: 12.5px !important;
  font-weight: 700 !important;
}

/* A pílula não quebra linha: com o rótulo longo ("Pronto · aguardando
   aprovação") ela empurrava a seta do accordion para fora do cartão no
   celular. As duas versões saem no HTML e aqui se escolhe qual aparece.

   As duas regras ficam no fim do arquivo de propósito: media query não soma
   especificidade, então a regra base declarada DEPOIS da consulta vencia a de
   dentro dela e a pílula ficava sem texto nenhum no celular. */
.sm-status-pill .sm-pill-curto { display: none; }
@media (max-width: 640px) {
  .sm-status-pill .sm-pill-longo { display: none; }
  .sm-status-pill .sm-pill-curto { display: inline; }
}

/* -------------------------------------------------------------------------
   Repouso: a janela que não está em uso não anima.

   O <html> ganha `dt-repouso` dois segundos depois de a janela perder o
   foco (assets/js/repouso.js). Aqui só as decorações infinitas param — e
   param pausadas, não removidas: nada some nem muda de lugar, só deixa de
   andar. Animações de entrada e indicadores de carga ficam de fora de
   propósito; pausar uma entrada deixaria o cartão invisível até o foco
   voltar. Sem nenhuma animação viva o navegador não compõe quadro nenhum,
   e é isso que devolve a GPU ao vídeo que está tocando na janela ao lado.
   ------------------------------------------------------------------------- */
html.dt-repouso .dt-media-glow::before,
html.dt-repouso .dt-media-glow::after,
html.dt-repouso .dt-media-glow > i,
html.dt-repouso .dt-alert-glow::before,
html.dt-repouso .dt-alert-glow::after,
html.dt-repouso .dt-alert-glow > i,
html.dt-repouso .dt-audio-spectrum span,
html.dt-repouso .dtf-ticker-rail,
html.dt-repouso .dtf-live i,
html.dt-repouso .dt-card-live-dot,
html.dt-repouso .dt-darktask-timer i,
html.dt-repouso .dt-quick-music-note,
html.dt-repouso .dt-alert-recorder-live > i,
/* Os dois últimos são animações declaradas no estilo inline do template; o
   navegador pode reserializar o atributo, então se procura só o nome. */
html.dt-repouso [style*="dt-pulse"],
html.dt-repouso [style*="dt-breathe"] {
  animation-play-state: paused !important;
}

/* -------------------------------------------------------------------------
   Compasso manso: a janela está à vista, mas não é a que está em uso.

   Parar tudo aqui foi um erro da primeira versão: a janela continua ao lado
   da outra, e um app congelado à vista parece defeito. Então nada para —
   tudo passa a andar em dez degraus por segundo em vez de trinta (a contagem
   de passos é a mesma divida por três, e 1/10 s é múltiplo de 1/30 s, então
   os degraus de todas as decorações continuam coincidindo). Um terço dos
   quadros compostos, e nada que se olhe de relance parece travado.

   A única exceção é o pó do rastro: são dez camadas de pontinhos que não
   informam nada e são o que mais repinta pixels por quadro. Esse espera.
   ------------------------------------------------------------------------- */
html.dt-lento .dt-media-glow::after,
html.dt-lento .dt-media-glow > i,
html.dt-lento .dt-alert-glow::after,
html.dt-lento .dt-alert-glow > i {
  animation-play-state: paused !important;
}

html.dt-lento .dt-media-glow::before { animation-timing-function: steps(110) !important; }   /* 11s  */
html.dt-lento .dt-alert-glow::before { animation-timing-function: steps(190) !important; }   /* 19s  */
html.dt-lento .dtf-ticker-rail { animation-timing-function: steps(360) !important; }         /* 36s  */
html.dt-lento .dtf-live i { animation-timing-function: steps(24) !important; }               /* 2,4s */
html.dt-lento .dt-card-live-dot { animation-timing-function: steps(14) !important; }         /* 1,4s */
html.dt-lento .dt-darktask-timer i { animation-timing-function: steps(12) !important; }      /* 1,2s */
html.dt-lento .dt-quick-music-note { animation-timing-function: steps(12) !important; }      /* 1,2s */
html.dt-lento .dt-alert-recorder-live > i { animation-timing-function: steps(10) !important; } /* 1s */
html.dt-lento .dt-audio-spectrum span {
  animation-timing-function: steps(var(--dt-spectrum-passos-manso, 9)) !important;
}
html.dt-lento .dt-audio-spectrum.is-idle span {
  animation-timing-function: steps(var(--dt-spectrum-manso-idle, 27)) !important;
}
/* Os pulsos declarados no estilo inline do template vêm com durações
 * diferentes (1s e 1,2s) e o navegador pode reserializar o atributo, então
 * não há como distingui-los por seletor: a duração é fixada junto com a
 * contagem, e todos andam no mesmo décimo de segundo. */
html.dt-lento [style*="dt-pulse"] {
  animation-duration: 1s !important;
  animation-timing-function: steps(10) !important;
}
html.dt-lento [style*="dt-breathe"] { animation-timing-function: steps(50) !important; }     /* 5s */

/* -------------------------------------------------------------------------
   Listas: a cor do status vem do catálogo, não do nome.

   Vem por último de propósito. As regras antigas nomeavam os quatro status
   do Checklist (.confirmado, .ausente...) e chegavam com !important; estas
   valem para os treze tipos e precisam ganhar delas por ordem de declaração.
   O valor de --dl-cor é escrito pelo JS a partir do que o servidor mandou —
   sempre uma variável do design system, nunca um hex solto.
   ------------------------------------------------------------------------- */
.dl-btn-status.dl-status-cor.active {
  background: color-mix(in srgb, var(--dl-cor, var(--muted)) 17%, var(--panel)) !important;
  border-color: color-mix(in srgb, var(--dl-cor, var(--muted)) 48%, var(--line)) !important;
  color: color-mix(in srgb, var(--dl-cor, var(--muted)) 78%, var(--text)) !important;
}
.dl-btn-status.dl-status-cor:hover:not(.active) {
  border-color: color-mix(in srgb, var(--dl-cor, var(--muted)) 45%, var(--line)) !important;
  color: color-mix(in srgb, var(--dl-cor, var(--muted)) 70%, var(--text)) !important;
}
.dl-status-label.dl-status-cor {
  background: color-mix(in srgb, var(--dl-cor, var(--muted)) 13%, transparent) !important;
  border-color: color-mix(in srgb, var(--dl-cor, var(--muted)) 30%, transparent) !important;
  color: color-mix(in srgb, var(--dl-cor, var(--muted)) 80%, var(--text)) !important;
}

/* -------------------------------------------------------------------------
   Efeitos visuais: o brilho é escolha, e nasce desligado.

   Duas famílias, e as duas com interruptor em Configurações › Aparência
   (assets/js/efeitos.js). O padrão é NÃO: um app que abre quieto devolve a
   máquina para o que a pessoa estava fazendo.

   Sem `data-dt-brilho` no <html>, as camadas móveis do rastro nem chegam a
   existir — `display:none` em vez de animação pausada, porque aqui não há
   nada a preservar de onde estava: o que se quer é que não custe nada.
   ------------------------------------------------------------------------- */
html:not([data-dt-brilho]) .dt-media-glow::before,
html:not([data-dt-brilho]) .dt-media-glow::after,
html:not([data-dt-brilho]) .dt-media-glow > i,
html:not([data-dt-brilho]) .dt-alert-glow::before,
html:not([data-dt-brilho]) .dt-alert-glow::after,
html:not([data-dt-brilho]) .dt-alert-glow > i {
  display: none !important;
}

/* Ligado, a velocidade escolhida encurta ou alonga cada varredura. O fator
   vem do JS e multiplica a duração original; a contagem de degraus acompanha,
   para o compasso de trinta por segundo continuar valendo. */
html[data-dt-brilho] .dt-media-glow::before { animation-duration: calc(11s * var(--dt-efeito-fator, 1.2)) !important; }
html[data-dt-brilho] .dt-alert-glow::before { animation-duration: calc(19s * var(--dt-efeito-fator, 1.2)) !important; }
html[data-dt-brilho] .dt-media-glow::after,
html[data-dt-brilho] .dt-media-glow > i,
html[data-dt-brilho] .dt-alert-glow::after,
html[data-dt-brilho] .dt-alert-glow > i {
  animation-duration: calc(var(--dt-poeira-dur, 12s) * var(--dt-efeito-fator, 1.2)) !important;
  opacity: calc(var(--dt-poeira-opacidade, .8) * var(--dt-efeito-opacidade, .68)) !important;
}

/* O céu. Uma camada só, atrás de tudo, sem capturar clique. Nada se move:
   cada ponto tem posição fixa e só a opacidade anda, em degraus de 1/30 s
   como o resto das decorações — é o que mantém a página compondo trinta
   quadros por segundo em vez de um por vsync. */
#dt-espaco {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  contain: strict;
}
#dt-espaco i {
  position: absolute;
  display: block;
  border-radius: 50%;
  background: var(--accent);
  opacity: 0;
  will-change: opacity;
  animation: dt-estrela var(--dt-efeito-duracao, 3.3s) steps(var(--dt-efeito-passos, 99)) infinite;
}
@keyframes dt-estrela {
  0%, 100% { opacity: 0; }
  50% { opacity: var(--dt-estrela-forca, .6); }
}
html.dt-repouso #dt-espaco i { animation-play-state: paused !important; }
html.dt-lento #dt-espaco i { animation-timing-function: steps(var(--dt-efeito-passos-manso, 33)) !important; }
@media (prefers-reduced-motion: reduce) {
  #dt-espaco i { animation: none !important; opacity: var(--dt-estrela-forca, .6); }
}

/* Os controles em Aparência. */
.dt-efeitos-caixa {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--panel);
}
.dt-efeito-linha { display: flex; align-items: center; gap: 13px; }
.dt-efeito-icone { color: var(--accent-text); flex: none; display: inline-flex; }
.dt-efeito-texto { flex: 1; min-width: 0; }
.dt-efeito-nome { font-size: 14px; font-weight: 600; }
.dt-efeito-desc { margin-top: 2px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.dt-efeito-faixa { display: flex; flex-direction: column; gap: 7px; }
.dt-efeito-faixa label {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  color: var(--muted); font-size: 12px;
}
.dt-efeito-faixa label b { color: var(--text); font-weight: 600; font-size: 12px; }
.dt-efeito-faixa input[type="range"] {
  width: 100%;
  height: 22px;
  margin: 0;
  background: transparent;
  accent-color: var(--accent);
  cursor: pointer;
}
.dt-efeito-faixa input[type="range"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 999px; }
/* O aviso só existe quando a escolha passa a pesar: fora disso, o JS o
   esconde. Ele é aviso, não decoração — por isso o traço de atenção. */
.dt-efeitos-aviso {
  margin: 0;
  padding: 11px 13px;
  border: 1px solid color-mix(in srgb, var(--dl-ausente, #eda05f) 42%, transparent);
  border-radius: 12px;
  background: color-mix(in srgb, var(--dl-ausente, #eda05f) 10%, transparent);
  color: var(--text);
  font-size: 12px;
  line-height: 1.55;
}
