:root{
  --font:'Inter',system-ui,-apple-system,sans-serif;
  --mono:'JetBrains Mono',monospace;
  --radius-sm:8px; --radius:12px; --radius-lg:16px;
  --shadow-sm:0 1px 2px rgba(15,20,30,.04);
  --shadow-md:0 4px 16px rgba(15,20,30,.06), 0 1px 3px rgba(15,20,30,.04);
  --shadow-lg:0 20px 40px rgba(15,20,30,.12), 0 2px 8px rgba(15,20,30,.06);
  /* ---- Design tokens: spacing (escala 4/8px) ---- */
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
  --space-5:20px; --space-6:24px; --space-7:28px; --space-8:32px;
  /* ---- Design tokens: tipografia ---- */
  --font-xs:11px; --font-sm:12.5px; --font-md:13px; --font-base:14px;
  --font-lg:15.5px; --font-xl:18px; --font-2xl:23px;
}
html[data-theme="light"]{
  --bg:#f7f7f9; --surface:#ffffff; --surface-2:#fbfbfd; --sidebar:#0c0d10; --sidebar-hover:#1a1b20; --sidebar-active:#25262e;
  --ink:#16171d; --ink-soft:#40414a; --muted:#6b6e7a; --line:#e2e3e9; --line-soft:#f1f1f5;
  --accent:#5b57ff; --accent-ink:#ffffff; --accent-soft:#eeedff;
  --green:#08783f; --green-soft:#e6f7ed; --red:#b4232a; --red-soft:#fdecec; --amber:#8a4f00; --amber-soft:#fdf1de; --purple:#6f36c9; --purple-soft:#f2ecfe; --blue:#2563eb; --blue-soft:#eaf0fe;
}
html[data-theme="dark"]{
  --bg:#0b0c0f; --surface:#131418; --surface-2:#17181d; --sidebar:#0a0a0d; --sidebar-hover:#1c1d24; --sidebar-active:#24252e;
  --ink:#eceef2; --ink-soft:#c2c4cf; --muted:#9a9dac; --line:#30313b; --line-soft:#1a1b21;
  --accent:#7b77ff; --accent-ink:#ffffff; --accent-soft:#211f3d;
  --green:#33c17a; --green-soft:#122a1e; --red:#f2555a; --red-soft:#2c1518; --amber:#e0a640; --amber-soft:#2b230f; --purple:#a688f2; --purple-soft:#221c38; --blue:#5b8def; --blue-soft:#141f33;
}
*{box-sizing:border-box;}
body{margin:0;font-family:var(--font);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;}
body.password-gated{overflow:hidden;}
::selection{background:var(--accent);color:#fff;}
:where(button,a[href],[role="button"],[tabindex],input,select,textarea):focus-visible{
  outline:2px solid var(--accent);outline-offset:2px;
}
.app{display:flex;min-height:100vh;min-height:100dvh;}

/* ---------- Sidebar ---------- */
.sidebar{width:248px;background:var(--sidebar);color:#9799a8;flex-shrink:0;padding:16px 12px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;transition:width .18s ease;}
.sidebar.collapsed{width:72px;}
.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 18px;}
.brand-badge{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#7b77ff,#5b57ff);display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;font-size:14px;flex-shrink:0;box-shadow:0 4px 10px rgba(91,87,255,.35);}
.brand-name{font-weight:700;color:#fff;font-size:14.5px;line-height:1.1;white-space:nowrap;}
.brand-sub{font-size:10px;color:#8b8da0;letter-spacing:.06em;white-space:nowrap;}
.sidebar.collapsed .brand-text{display:none;}
.search-trigger{display:flex;align-items:center;gap:8px;background:#17181f;border:1px solid #23242c;border-radius:8px;padding:8px 10px;font:inherit;font-size:12.5px;color:#9a9dac;cursor:pointer;margin-bottom:14px;width:100%;text-align:left;}
.search-trigger kbd{margin-left:auto;background:#23242c;border-radius:4px;padding:1px 6px;font-size:10.5px;font-family:var(--mono);color:#8b8da0;}
.sidebar.collapsed .search-trigger span,.sidebar.collapsed .search-trigger kbd{display:none;}
.nav-group{margin-bottom:4px;}
.nav-group-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:#7f8292;padding:10px 10px 6px;font-weight:700;}
.sidebar.collapsed .nav-group-label{display:none;}
nav.tabs{display:flex;flex-direction:column;gap:1px;}
nav.tabs button{all:unset;cursor:pointer;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-size:13px;color:#a7a9b8;font-weight:500;position:relative;white-space:nowrap;}
nav.tabs button .ico{width:17px;text-align:center;flex-shrink:0;font-size:14.5px;}
nav.tabs button .cnt{margin-left:auto;font-size:11px;background:#1e1f27;color:#8b8da0;padding:1px 6px;border-radius:20px;}
nav.tabs button:hover{background:var(--sidebar-hover);color:#fff;}
nav.tabs button.active{background:var(--sidebar-active);color:#fff;}
nav.tabs button.active::before{content:'';position:absolute;left:-12px;top:8px;bottom:8px;width:3px;background:var(--accent);border-radius:0 3px 3px 0;}
.sidebar-foot{margin-top:auto;padding-top:12px;border-top:1px solid #1c1d24;}
.foot-row{display:flex;align-items:center;gap:8px;padding:8px;border-radius:8px;color:#8b8da0;font-size:11.5px;cursor:pointer;}
.foot-row:hover{background:var(--sidebar-hover);}
.collapse-btn{background:transparent;border:none;color:#6c6e7d;cursor:pointer;padding:6px;border-radius:6px;}
.collapse-btn:hover{background:var(--sidebar-hover);color:#fff;}

/* ---------- Main ---------- */
.main{flex:1;min-width:0;}
/* Safe Area (topo): aplicada uma única vez, aqui no topbar — é o único elemento
   sticky/fixo que fica colado na borda superior da tela. Em Android/desktop
   env(safe-area-inset-top) resolve para 0px (nenhuma mudança visual); em iPhone
   com notch/Dynamic Island, soma-se ao padding normal para o conteúdo nunca
   ficar por baixo da status bar/ilha. Não duplicar essa regra em body/.app/.main. */
.topbar{position:sticky;top:0;z-index:5;background:var(--bg);/*backdrop-filter:blur(6px);*/border-bottom:1px solid var(--line);padding:16px 32px;padding-top:calc(16px + env(safe-area-inset-top));display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;}
.topbar-title h1{font-size:18px;margin:0 0 2px;letter-spacing:-.01em;}
.topbar-title p{margin:0;color:var(--muted);font-size:12.5px;}
.topbar-actions{display:flex;gap:8px;align-items:center;}
.page-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;}
.page-header-copy{min-width:0;}
.page-header-eyebrow{margin-bottom:3px;color:var(--accent);font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;}
.page-header-description{line-height:1.35;}
.page-header-actions{justify-self:end;}
.page-header-primary{display:flex;align-items:center;}
.page-header-context{grid-column:1/-1;display:flex;align-items:center;gap:10px;min-width:0;margin-top:-2px;}
.page-header-period,.page-header-controls{display:flex;align-items:center;gap:8px;min-width:0;}
.page-header-period{color:var(--ink-soft);font-size:12px;font-weight:700;}
.content{padding:24px 32px 64px;max-width:1240px;}

.pill{background:var(--surface);border:1px solid var(--line);padding:6px 12px;border-radius:20px;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;}
.theme-toggle{background:var(--surface);border:1px solid var(--line);width:32px;height:32px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;}

/* ---------- Sistema de ícones (SVG inline, estilo consistente) ---------- */
.ico-svg{width:1em;height:1em;display:inline-block;vertical-align:-0.15em;flex-shrink:0;}

/* ---------- Grid & Cards ---------- */
.grid{display:grid;gap:12px;}
.grid-4{grid-template-columns:repeat(4,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
@media(max-width:1050px){.grid-4{grid-template-columns:repeat(2,1fr);}.grid-3{grid-template-columns:repeat(2,1fr);}}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-sm);}
/* Correção responsiva — gráficos de Produtividade. Causa raiz do "página desliza inteira": tracks
   de CSS Grid (mesmo com 1fr) usam min-width:auto por padrão, ou seja, se o conteúdo do card
   (a linha de barras) precisar de mais espaço que a tela, o próprio grid crescia pra caber o
   conteúdo em vez de deixar só a barra de rolagem interna do gráfico agir — isso empurrava
   .card/.section/.content/o documento inteiro pra fora da viewport. minmax(0,1fr) + min-width:0
   no item do grid fecham essa brecha, sem alterar .grid-2 (compartilhada por outras telas) —
   escopado só à linha de gráficos desta tela via a classe .prod-grid-safe. */
.grid-2.prod-grid-safe{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
.prod-grid-safe>.card{min-width:0;}
/* Único trecho autorizado a rolar horizontalmente dentro dos gráficos de Produtividade — o card e
   a página em volta ficam parados; max-width:100% garante que essa faixa nunca ultrapasse a
   largura do próprio card, mesmo que as barras internas precisem de mais espaço. */
.prod-chart-scroll{overflow-x:auto;max-width:100%;width:100%;min-width:0;box-sizing:border-box;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;}
.prod-chart-track{display:flex;align-items:flex-end;gap:6px;width:max-content;min-width:100%;box-sizing:border-box;padding:4px 34px 10px;}
.prod-bars-simples .prod-chart-track{min-height:118px;--prod-bar-max:86px;}
.prod-bars-comp .prod-chart-track{min-height:126px;}
.prod-chart-col{flex:0 0 34px;min-width:34px;display:flex;flex-direction:column;align-items:center;gap:4px;}
.prod-chart-bar-simple{width:14px;border-radius:3px 3px 1px 1px;}
.prod-chart-pair{display:flex;align-items:flex-end;gap:2px;height:90px;}
.prod-chart-pair>div{width:8px;border-radius:2px 2px 0 0;}
.prod-chart-tick{display:flex;align-items:flex-start;justify-content:center;min-height:22px;font-size:9px;line-height:1.25;color:var(--muted);white-space:nowrap;}
.prod-chart-tick.prod-tick-secondary{visibility:hidden;}
.prod-chart-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-bottom:8px;}
.pat-chart-period{font-size:10px;color:var(--muted);white-space:nowrap;}
.card.hoverable{transition:box-shadow .15s, transform .15s;}
.card.hoverable:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);}

.kpi{display:flex;flex-direction:column;gap:8px;}
.kpi-top{display:flex;justify-content:space-between;align-items:flex-start;}
.kpi .label{font-size:11.5px;color:var(--muted);font-weight:600;}
.kpi .icon{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;}
.kpi .value{font-size:23px;font-weight:800;letter-spacing:-.02em;}
.kpi .trend{font-size:11.5px;font-weight:700;display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:20px;width:fit-content;}
.kpi .trend.up{color:var(--green);background:var(--green-soft);}
.kpi .trend.down{color:var(--red);background:var(--red-soft);}
.kpi .value.kpi-negative{color:var(--red);}
.kpi-compact-grid{grid-template-columns:repeat(2,1fr);}
.kpi-compact-grid .kpi{gap:5px;padding:12px 13px;}
.kpi-compact-grid .kpi .label{font-size:10.5px;}
.kpi-compact-grid .kpi .value{font-size:17.5px;}
.kpi-compact-grid .kpi .icon{width:24px;height:24px;font-size:12px;border-radius:7px;}
.kpi-compact-grid .kpi .sub{font-size:10.5px !important;}
@media(min-width:761px) and (max-width:900px){ .kpi-compact-grid{grid-template-columns:repeat(2,1fr);} }
@media(min-width:1051px){ .kpi-compact-grid{grid-template-columns:repeat(3,1fr);} }
/* Validação pré-deploy — Financeiro: a regra de 3 colunas acima (>=1051px) é global (kpi-compact-
   grid é usada só pelo Financeiro hoje, mas não deve ser alterada diretamente, por segurança caso
   volte a ser reaproveitada). Em 3 colunas ela desfazia a hierarquia pedida — "Gasto no mês" ia
   pro fim da 1ª linha e "Resumo por grupo" começava sozinho na 2ª, longe um do outro. Classe
   exclusiva do Financeiro (isolada via combinação de classes, sem tocar .kpi-compact-grid nem
   .grid-2 globalmente) força 2 colunas de volta só nessa tela, preservando Gasto ↔ Resumo lado a
   lado em qualquer largura de desktop. */
@media(min-width:1051px){ .kpi-compact-grid.finance-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));} }
/* Atualização — Financeiro: "Resumo por grupo" compacto, ao lado de "Gasto no mês". Correção desta
   rodada: nomes de grupo compridos ("Necessidades Básicas") estavam truncando com "..." numa linha
   só. Preferência do pedido, em ordem: (1) permitir quebra controlada em até 2 linhas — feito via
   -webkit-line-clamp, que corta com reticências só depois da 2ª linha, não da 1ª; (2) nome recebe
   mais espaço que o valor (flex:1 vs flex-shrink:0); fonte permanece 10.5-11.5px (não reduzida). */
.fin-group-compact{align-items:stretch;}
.fin-group-compact .label{font-size:10.5px;font-weight:700;color:var(--muted);}
.fin-group-compact-row{margin-bottom:8px;font-size:11.5px;}
.fin-group-compact-row:last-of-type{margin-bottom:0;}
.fin-group-compact-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;}
.fin-group-compact-nome{font-weight:600;flex:1;min-width:0;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.fin-group-compact-valor{color:var(--muted);flex-shrink:0;white-space:nowrap;}
.fin-expense-breakdown{gap:8px;}
.fin-summary-toggle{align-self:flex-start;max-width:100%;}
.fin-summary-toggle button{white-space:nowrap;}
.fin-category-list{display:flex;flex-direction:column;margin-top:1px;}
.fin-category-row{all:unset;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:9px 2px;border-top:1px solid var(--line-soft);cursor:pointer;color:var(--ink);}
.fin-category-row:first-child{border-top:0;}
.fin-category-row:hover{background:var(--surface-2);}
.fin-category-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:7px;}
.fin-category-copy{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left;}
.fin-category-copy strong{font-size:12px;line-height:1.3;overflow-wrap:anywhere;}
.fin-category-copy small{font-size:10.5px;color:var(--muted);}
.fin-category-value{font-size:12px;font-weight:800;white-space:nowrap;flex-shrink:0;}
.fin-category-empty{font-size:11.5px;margin-top:6px;}
.fin-breakdown-empty{font-size:11.5px;}
.fin-group-compact .fin-breakdown-empty{margin-top:8px;}
.fin-category-more{display:none;align-self:flex-start;}
.fin-category-detail-period{font-size:12px;color:var(--muted);margin-top:-4px;}
.fin-category-detail-total{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:14px 0;padding:12px;border-radius:10px;background:var(--accent-soft);}
.fin-category-detail-total span{font-size:12px;color:var(--ink-soft);font-weight:700;}
.fin-category-detail-total strong{font-size:18px;color:var(--accent);}
.fin-category-detail-list{display:flex;flex-direction:column;}
.fin-category-detail-row{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line-soft);font-size:12px;}
.fin-category-detail-row time{color:var(--muted);font-variant-numeric:tabular-nums;}
.fin-category-detail-row span{min-width:0;overflow-wrap:anywhere;}
.fin-category-detail-row strong{white-space:nowrap;}
@media(max-width:760px){
  .fin-expense-breakdown{grid-column:1/-1;padding:6px 11px;gap:5px;}
  .fin-expense-breakdown .fin-breakdown-empty{margin-top:0;padding:4px 0;text-align:left;}
  .fin-summary-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;min-width:0;box-sizing:border-box;}
  .fin-summary-toggle button{min-width:0;max-width:100%;white-space:normal;text-align:center;}
  .fin-category-row.is-mobile-extra{display:none;}
  .fin-category-more{display:inline-flex;}
  .fin-category-row{min-height:48px;padding:9px 4px;}
  .fin-category-detail-row{grid-template-columns:68px minmax(0,1fr);gap:4px 10px;}
  .fin-category-detail-row strong{grid-column:2;}
}
/* Atualização — card "Poupança e investimentos" ocupa a largura cheia da grade (nenhuma 2ª coluna
   vazia); dois indicadores empilhados, cada um só reaproveitando o valor já calculado. */
.fin-full-width{grid-column:1/-1;}
.fin-poupanca-rows{display:flex;gap:18px;flex-wrap:wrap;margin-top:2px;}
.fin-poupanca-row{display:flex;flex-direction:column;gap:2px;}
.fin-poupanca-rotulo{font-size:11px;color:var(--muted);font-weight:600;}
.fin-poupanca-valor{font-size:19px;font-weight:800;letter-spacing:-.01em;}
.fin-investimento-mobile{display:none;}
@media(max-width:760px){
  .fin-investimento-mobile{display:flex;min-width:0;}
  .fin-investimento-mobile .value{min-width:0;max-width:100%;overflow-wrap:anywhere;}
  .fin-investimento-mobile .sub{color:var(--muted);font-size:10.5px;}
  .fin-poupanca-desktop{display:none;}
}
/* Atualização — "Ler comprovante" ganha tratamento tonal roxo (--accent-soft, mesma identidade já
   usada em outros pontos do app), pra parecer claramente clicável sem competir com o botão
   principal "+ Adicionar Lançamento" (que continua sólido, no topbar). Especificidade
   .btn.sm.fin-receipt-btn garante que o padding/tamanho compactos de .btn.sm prevaleçam. */
.btn.sm.fin-receipt-btn{background:var(--accent-soft);color:var(--accent);font-weight:700;}
.icon.blue{background:var(--blue-soft);color:var(--blue);}
.icon.green{background:var(--green-soft);color:var(--green);}
.icon.red{background:var(--red-soft);color:var(--red);}
.icon.amber{background:var(--amber-soft);color:var(--amber);}
.icon.purple{background:var(--purple-soft);color:var(--purple);}

/* ---------- Minha Semana ---------- */
.wk-foco-list{display:flex;flex-direction:column;gap:6px;}
.wk-foco-chip{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:13px;}
.wk-foco-chip.is-main{border-color:var(--amber);background:var(--amber-soft);}
.wk-foco-star{all:unset;cursor:pointer;font-size:15px;line-height:1;flex-shrink:0;}
.wk-foco-texto{all:unset;box-sizing:border-box;cursor:pointer;flex:1;min-width:0;}
.wk-foco-obj{color:var(--muted);font-size:12px;}
.wk-focus-empty,.wk-derived-empty{font-size:12.5px;color:var(--muted);padding:10px 12px;border:1px dashed var(--line);border-radius:10px;background:var(--surface-2);}
.wk-derived-empty{margin-bottom:10px;}
.wk-period-label{font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;}
.wk-week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:12px;min-width:0;}
.wk-day-summary{position:relative;box-sizing:border-box;min-width:0;min-height:64px;padding:7px 3px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink-soft);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;}
.wk-day-summary.is-selected{border:2px solid var(--accent);background:var(--accent-soft);color:var(--ink);box-shadow:0 0 0 1px var(--surface) inset;}
.wk-day-summary.is-selected::after{content:'✓';position:absolute;right:3px;top:2px;font-size:9px;font-weight:900;color:var(--accent);}
.wk-day-short{font-size:11px;font-weight:800;line-height:1;}
.wk-day-number{font-size:15px;font-weight:800;line-height:1.1;}
.wk-day-count{font-size:10px;color:var(--muted);line-height:1;}
.wk-day-today{font-size:9px;font-weight:800;color:var(--accent);line-height:1;}
.wk-selected-detail{min-width:0;}
.wk-context-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:10px 0;}
.wk-adjust-options{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
.wk-adjust-options .btn{justify-content:flex-start;}
.wk-dias-list{display:flex;flex-direction:column;gap:10px;}
.wk-dia-card{padding:14px;}
.wk-dia-hoje{border-color:var(--accent);}
.wk-dia-minimo{background:var(--amber-soft);}
.wk-dia-head{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:8px;margin-bottom:6px;}
.wk-dia-nome{font-weight:700;font-size:13.5px;}
.wk-dia-nome+.badge{margin-left:6px;}
.wk-dia-nome~.row-sub{margin-left:6px;}
.wk-capacity-summary{font-size:11.5px;color:var(--muted);font-weight:700;}
.wk-dia-actions{display:flex;align-items:center;gap:4px;flex-wrap:wrap;}
.wk-dia-actions .icon-btn{width:30px;height:30px;font-size:14px;}
.wk-dia-minimo-tag{display:inline-block;font-size:11px;font-weight:700;color:var(--amber);background:var(--surface);border:1px solid var(--amber);border-radius:20px;padding:2px 9px;margin-bottom:8px;}
.wk-input-horas{display:flex;align-items:center;gap:6px;margin-bottom:8px;}
.wk-input-horas label{font-size:11.5px;color:var(--muted);}
.wk-input-horas input{width:64px;padding:4px 6px;font-size:12.5px;}
.wk-bloco-row{border-top:1px solid var(--line-soft);padding:8px 0;}
.wk-bloco-row:first-of-type{border-top:none;}
.wk-bloco-secundario{opacity:.55;}
.wk-bloco-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;}
.wk-bloco-hora{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px;min-width:44px;}
.wk-bloco-titulo{font-weight:600;flex:1;min-width:80px;}
.wk-bloco-spacer{flex:1;min-width:0;}
.wk-relacionadas{margin-top:6px;padding-left:20px;}
.wk-relacionada-item{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:3px 0;}
.wk-day-empty{font-size:12px;color:var(--muted);padding:12px 2px;}
.wk-desktop-board{display:grid;grid-template-columns:repeat(7,minmax(132px,1fr));gap:8px;overflow-x:auto;max-width:100%;padding:2px 2px 10px;scrollbar-width:thin;}
.wk-week-column{min-width:0;padding:10px;align-self:stretch;}
.wk-week-column.is-selected{border:2px solid var(--accent);box-shadow:0 0 0 2px var(--accent-soft);}
.wk-desktop-day-select{all:unset;box-sizing:border-box;display:flex;flex-direction:column;gap:3px;width:100%;min-height:58px;padding:6px;border-radius:8px;cursor:pointer;color:var(--ink);}
.wk-desktop-day-select:hover{background:var(--surface-2);}
.wk-desktop-count,.wk-desktop-capacity{font-size:10.5px;color:var(--muted);line-height:1.25;}
.wk-desktop-capacity{padding:6px;border-top:1px solid var(--line-soft);}
.wk-week-column .wk-bloco-main{display:grid;grid-template-columns:1fr;gap:3px;align-items:start;}
.wk-week-column .wk-bloco-hora{min-width:0;}
.wk-week-column .wk-bloco-spacer{display:none;}
.wk-week-column .wk-bloco-main>.icon-btn{justify-self:end;}
.wk-week-column .wk-relacionadas{padding-left:0;}
.wk-home-hoje{display:flex;flex-direction:column;gap:2px;}
.wk-home-item{display:flex;align-items:center;gap:8px;font-size:13px;padding:5px 0;cursor:pointer;}
.wk-home-item.is-done{color:var(--muted);text-decoration:line-through;}
.wk-home-foco{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;}

/* ---------- Cards/KPIs clicáveis ---------- */
.card.clickable,.kpi.clickable{cursor:pointer;}
.card.clickable:hover,.kpi.clickable:hover{border-color:var(--accent);}
.card.clickable:active,.kpi.clickable:active{transform:scale(.985);}
.card.clickable:focus-visible,.kpi.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.kpi-hint{font-size:11px;color:var(--accent);font-weight:700;margin-top:2px;}
.soft-clickable{cursor:pointer;}
.soft-clickable:hover{border-color:var(--accent);}
.card-hint{font-size:11px;color:var(--accent);font-weight:700;margin-top:10px;}
.quick-alerts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;}
.quick-alert-chip{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:10px;font-size:12.5px;font-weight:700;min-height:44px;}
.quick-alert-chip.red{background:var(--red-soft);color:var(--red);}
.quick-alert-chip.amber{background:var(--amber-soft);color:var(--amber);}
.quick-alert-chip.purple{background:var(--purple-soft);color:var(--purple);}
.backup-hint-line{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);cursor:pointer;margin-top:8px;padding:2px 0;}
.backup-hint-line:hover{color:var(--accent);}
.quick-alert-chip:hover{filter:brightness(.97);}
.quick-alert-chip:active{transform:scale(.97);}
.quick-alert-chip .qa-arrow{opacity:.7;}
.filter-banner{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--accent-soft);color:var(--accent);padding:10px 14px;border-radius:10px;margin-bottom:14px;font-size:13px;font-weight:600;flex-wrap:wrap;}
.filter-banner .btn{color:var(--accent);}
.quick-filter-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.actions-control-bar{display:flex;align-items:center;gap:8px;margin-bottom:10px;min-width:0;}
.actions-search{flex:1;min-width:180px;}
.actions-filter-toggle{display:none;}
.actions-view-toggle{margin-left:auto;flex-shrink:0;}
.actions-secondary-filters{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;margin-bottom:14px;}
.actions-secondary-filters>select{min-width:180px;}
.actions-secondary-filters .quick-filter-row{margin-bottom:0;}
.chip-filter{all:unset;box-sizing:border-box;cursor:pointer;padding:9px 14px;min-height:38px;border-radius:999px;font-size:12.5px;font-weight:700;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft);display:inline-flex;align-items:center;}
.chip-filter:hover{filter:brightness(.97);}
.chip-filter.active{background:var(--accent);border-color:var(--accent);color:#fff;}
.insights-block{margin-bottom:14px;}
.insight-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);border-left-width:3px;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin-bottom:8px;cursor:pointer;min-height:44px;box-sizing:border-box;}
.insight-row:hover{filter:brightness(.97);}
.insight-row.no-action{cursor:default;}
.insight-row .ir-arrow{opacity:.6;flex-shrink:0;}
.insight-row .ir-body{display:flex;align-items:center;gap:9px;min-width:0;}
.insight-row .ir-icon{width:22px;height:22px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.insight-row .ir-icon svg{width:12px;height:12px;}
.insight-row--red{border-left-color:var(--red);}
.insight-row--amber{border-left-color:var(--amber);}
.insight-row--green{border-left-color:var(--green);}
.fin-month-nav{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.fin-month-label{font-size:14.5px;font-weight:700;min-width:150px;text-align:center;}
.finance-mobile-head,.finance-mobile-meta{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;min-width:0;}
.finance-mobile-copy{min-width:0;flex:1;}
.finance-mobile-copy .row-title,.finance-mobile-copy .row-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.finance-mobile-value{flex-shrink:0;text-align:right;font-weight:800;white-space:nowrap;}
.finance-mobile-meta{align-items:center;margin-top:10px;}
.finance-mobile-badges{display:flex;min-width:0;gap:6px;flex-wrap:wrap;}

.section{margin-top:22px;}
.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;flex-wrap:wrap;gap:8px;}
.section-head h2{font-size:14.5px;margin:0;font-weight:700;}
.section-head .sub{font-size:12px;color:var(--muted);margin-top:2px;}
.section-head .toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}

.segmented{display:flex;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:2px;}
.segmented button{all:unset;cursor:pointer;padding:5px 12px;font-size:12px;font-weight:600;border-radius:6px;color:var(--muted);}
.segmented button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm);}

/* ---------- Form controls ---------- */
input[type=text],input[type=date],input[type=number],select,textarea{
  font-family:inherit;font-size:13px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);outline:none;
}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1;}
.btn{cursor:pointer;border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;background:var(--accent);color:var(--accent-ink);display:inline-flex;align-items:center;gap:6px;transition:filter .12s,transform .1s;}
.btn:hover{filter:brightness(1.08);}
.btn:active{transform:scale(.97);}
.btn.secondary{background:var(--surface);color:var(--ink);border:1px solid var(--line);}
.btn.secondary:hover{background:var(--surface-2);}
.btn.danger{background:var(--red);color:#fff;}
.btn.ghost{background:transparent;color:var(--muted);padding:4px 8px;}
.btn.ghost:hover{background:var(--surface-2);color:var(--ink);}
.btn.sm{padding:5px 10px;font-size:12px;}
.icon-btn{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:15px;}
.icon-btn:hover{color:var(--ink);background:var(--surface-2);}
/* Correção — item 12/15/24/26/28: hierarquia de ações em cards/linhas de lista — concluir vira a
   ação de destaque (verde), excluir sai do primeiro plano e vai para dentro do menu "⋮". */
.icon-btn.success{color:var(--green);border-color:var(--green-soft);}
.icon-btn.success:hover{background:var(--green-soft);}
.row-menu-btn{color:var(--muted);}
.status-chip{border:none;cursor:pointer;font:inherit;}
.status-chip:hover{filter:brightness(.96);}
/* Microcorreções — item 5: chevron pequeno e discreto, só para sinalizar "isto é clicável" sem
   virar um botão grande nem alargar demais o chip. */
.status-chip .ico-svg{width:9px;height:9px;stroke-width:3;opacity:.65;margin-left:-1px;}
/* Menu flutuante compacto reutilizado por Ações/Objetivos/Financeiro/Brain Dump — sem biblioteca
   nova (item 44), só um painel posicionado com JS simples. */
.row-menu{position:fixed;z-index:70;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);min-width:170px;padding:6px;}
.row-menu-item{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:9px;width:100%;padding:10px 12px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;min-height:40px;color:var(--ink);}
.row-menu-item:hover,.row-menu-item:focus-visible{background:var(--surface-2);}
.row-menu-item.danger{color:var(--red);}
.row-menu-item.is-current{background:var(--surface-2);font-weight:800;}
.row-menu-item .ico-svg{width:16px;height:16px;flex-shrink:0;}
.row-menu-spacer{width:16px;height:16px;flex-shrink:0;display:inline-block;}
/* item 20: Pausar (ação secundária/reversível) com peso visual reduzido perto de Editar. */
.habit-action-secondary{opacity:.7;}
/* item 22: linha "atual / meta" de Objetivos vira um botão discreto — mesmo texto de antes, com um
   ícone pequeno de lápis sinalizando que é tocável, sem virar um botão grande/chamativo. */
.goal-progress-trigger{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:12.5px;color:var(--muted);padding:4px 6px;margin:-4px 0 -4px -6px;border-radius:6px;min-height:32px;}
.goal-progress-trigger:hover,.goal-progress-trigger:focus-visible{background:var(--surface-2);color:var(--ink);}
.goal-progress-trigger .ico-svg{width:13px;height:13px;opacity:.7;}
/* Microcorreções — itens 36-38: Editar e o menu "⋮" ficavam com espaçamento solto na parte
   inferior do card de Objetivos. Escopo só a este rodapé (não mexe em .actions-col usada por
   Ações/Financeiro/Brain Dump): aproxima os dois botões, reduz a margem acima deles e usa um
   padding um pouco mais enxuto — sem tirar função, sem trazer Excluir de volta ao primeiro plano. */
.goal-card-actions{display:flex;gap:2px;justify-content:flex-start;align-items:center;margin-top:8px;}
.goal-card-actions .btn.ghost.sm{padding:4px 8px;min-height:32px;}
.goal-card-actions .row-menu-btn{padding:4px;min-width:32px;min-height:32px;}
/* Microcorreções — itens 39-40: "→ Ação"/"→ Objetivo" continuam com a cor de destaque (mantendo a
   hierarquia sobre Editar/Excluir), só com um pouco menos de padding horizontal e fonte levemente
   menor — reduz o peso visual sem virar link apagado nem sumir dentro de um menu. */
/* Atualização — causa raiz do peso visual grande demais dos botões "→ Ação"/"→ Objetivo": a regra
   abaixo já existia com a intenção de deixá-los compactos, mas .idea-transform-btn (1 classe,
   especificidade 10) nunca vencia .btn.sm (2 classes, especificidade 20) — ou seja, o padding
   compacto nunca era aplicado de fato, nem no desktop nem no mobile (onde .btn.sm ainda força
   min-height:44px para toque). A correção sobe a especificidade para .btn.sm.idea-transform-btn,
   sem reescrever a função dos botões. "→ Objetivo" ganha um tratamento tonal (--accent-soft, já
   usado em outros pontos do app) para ficar levemente secundário sem parecer desabilitado. */
.btn.sm.idea-transform-btn{padding:4px 9px;font-size:11.5px;}
.btn.sm.idea-transform-btn.idea-transform-btn--secundario{background:var(--accent-soft);color:var(--accent);}

/* ---------- Table ---------- */
.table-wrap{background:var(--surface);border-radius:var(--radius);border:1px solid var(--line);overflow:hidden;box-shadow:var(--shadow-sm);}
table{width:100%;border-collapse:collapse;}
th,td{padding:11px 14px;text-align:left;font-size:13px;border-bottom:1px solid var(--line-soft);}
th{background:var(--surface-2);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;}
tr:last-child td{border-bottom:none;}
tbody tr{transition:background .1s;}
tbody tr:hover td{background:var(--surface-2);}
.row-title{font-weight:600;}
.row-sub{color:var(--muted);font-size:11.5px;margin-top:2px;}

.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:700;}
.badge .dot{width:6px;height:6px;border-radius:50%;}
.badge.blue{background:var(--blue-soft);color:var(--blue);}
.badge.green{background:var(--green-soft);color:var(--green);}
.badge.red{background:var(--red-soft);color:var(--red);}
.badge.amber{background:var(--amber-soft);color:var(--amber);}
.badge.gray{background:var(--surface-2);color:var(--muted);border:1px solid var(--line);}
.badge.purple{background:var(--purple-soft);color:var(--purple);}

.bar-outer{background:var(--line-soft);border-radius:8px;height:7px;overflow:hidden;width:100%;}
.bar-inner{height:100%;border-radius:8px;transition:width .3s ease;}

/* ---------- Hábitos: visão semanal compacta (mobile-first, não é uma planilha) ---------- */
.habit-week-labels{display:flex;justify-content:flex-end;gap:4px;padding:0 2px 6px;}
.habit-week-labels span{width:22px;text-align:center;font-size:10px;font-weight:700;color:var(--muted);}
/* Polimento final — item 23/24/25: iniciais (S T Q Q S S D) mantidas — trocar para 3 letras
   (Seg/Ter/Qua...) arriscaria quebrar a linha ou exigir fonte menor em telas de 320-360px. Em vez
   disso, a coluna do dia de hoje ganha destaque de cor/peso (mesmo tratamento no cabeçalho e nos
   marcadores abaixo), o que já resolve a ambiguidade na prática sem nenhum risco de layout. */
.habit-week-labels span.is-today{color:var(--accent);font-weight:800;}
/* Correção da Home/Hábitos — item 19: reforço adicional de legibilidade sem redesenhar a grade de
   22px (3 letras quebraria o alinhamento com os marcadores de dia abaixo). Sábado/Domingo ganham
   uma cor levemente diferente da dos dias de semana — reduz a ambiguidade entre os "S" de Segunda/
   Sexta/Sábado combinando posição + cor + o title/aria-label completo já existentes, sem depender
   só da cor (nenhuma dessas letras é interativa/clicável). */
.habit-week-labels span.is-weekend{color:var(--purple);}
.habit-week-labels span.is-weekend.is-today{color:var(--accent);}
.habit-week-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 2px;border-top:1px solid var(--line);}
.habit-week-row:first-of-type{border-top:none;}
.habit-week-nome{font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;}
.habit-week-days{display:flex;gap:4px;flex-shrink:0;}
.habit-dot{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;border:none;padding:0;font-family:inherit;}
/* Atualização — registro retroativo de hábitos: dias já programados (hoje ou passado) viram um
   <button> de verdade (em vez de <span>), então precisam do reset acima (border/padding/fonte) pra
   continuar com a mesma aparência de sempre; only-programmed vira cursor de clique. */
.habit-dot[type="button"]{cursor:pointer;}
.habit-dot--feito{background:var(--green-soft);color:var(--green);}
.habit-dot--pendente{background:var(--amber-soft);color:var(--amber);}
.habit-dot--nao-previsto{background:transparent;color:var(--line);}
.habit-dot.is-today{box-shadow:0 0 0 2px var(--accent-soft);}
.habit-week-consist{font-size:11.5px;color:var(--muted);flex-shrink:0;width:34px;text-align:right;}

.empty{color:var(--muted);font-size:13px;padding:36px 20px;text-align:center;}
.empty .big{font-size:26px;margin-bottom:8px;}
/* item 59-60: empty state de "Prioridades de hoje" — mesma mensagem, card bem mais baixo, pra não
   ocupar o mesmo espaço de uma lista real de tarefas. */
.empty-compact{padding:16px 20px;}
.empty-compact .big{font-size:20px;margin-bottom:4px;}
/* Polimento final — item 9/10/11: variante horizontal (ícone + texto lado a lado), ainda mais
   compacta que a vertical acima — usada só no empty state de "Prioridades de hoje". Não reduz a
   fonte do texto, só reorganiza o layout e aperta o padding. */
.empty-compact--row{display:flex;align-items:center;gap:10px;text-align:left;padding:12px 14px;}
.empty-compact--row .ecr-icon{font-size:20px;line-height:1;flex-shrink:0;}
.empty-compact--row .ecr-text{font-size:12.5px;color:var(--ink-soft);display:flex;flex-direction:column;gap:1px;}
.empty-compact--row .ecr-text strong{font-size:13px;color:var(--ink);font-weight:700;}
.actions-col{display:flex;gap:4px;justify-content:flex-end;}

/* ---------- Atualização da Home: privacidade + hábitos em chips ---------- */
.privacy-toggle-btn.is-active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);}
/* Correção da Home (rodada de UX operacional) — item 4/5: a faixa de 3 KPIs (Objetivos | Hábitos |
   Produtividade) foi removida. Objetivos e Hábitos já têm representação própria e suficiente logo
   abaixo (card "Objetivos" e strip "Hábitos de hoje") — repeti-los aqui era redundância pura, sem
   informação nova. No lugar, ficou só um bloco único e compacto de execução (.home-exec-card),
   com função diferente: não é progresso de metas nem consistência de rotina, é a taxa de conclusão
   de ações da semana — a mesma métrica que já existia (produtividade/concluidasSemana/
   previstasSemana), sem nova fórmula. */
.home-exec-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:12px 14px;}
.home-exec-top{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.home-exec-title{font-size:13px;font-weight:700;color:var(--ink);}
.home-exec-sub{font-size:11.5px;color:var(--muted);margin-top:2px;}
.home-exec-value{font-size:19px;font-weight:800;letter-spacing:-.01em;flex-shrink:0;}
.home-exec-card .bar-outer{margin-top:9px;}
/* item 19: hábitos de hoje em chips horizontais compactos, em vez de só uma linha de texto. */
.home-habits-strip{margin-top:10px;padding-top:10px;border-top:1px solid var(--line-soft);}
.hhs-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;}
.hhs-head .hhs-title{font-size:13px;font-weight:700;color:var(--ink);}
.hhs-head .sub{color:var(--muted);font-weight:600;font-size:11.5px;}
.hhs-chips{display:flex;flex-wrap:wrap;gap:6px;}
.hhs-chip{display:inline-flex;align-items:center;gap:4px;max-width:150px;padding:5px 10px;border-radius:20px;background:var(--surface-2);border:1px solid var(--line);font-size:11.5px;font-weight:600;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hhs-chip.is-done{background:var(--green-soft);border-color:transparent;color:var(--green);}
.hhs-chip.hhs-more{background:transparent;border-style:dashed;color:var(--muted);}

/* ---------- Switch (toggle) — usado nas Notificações no lugar de checkboxes (polimento final,
   item 19/20/21): só troca a aparência, o <input type="checkbox"> por baixo continua exatamente
   igual, com o mesmo onchange/checked/lógica de sempre. ---------- */
.switch-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:6px 0;font-size:13px;font-weight:600;color:var(--ink);}
.switch{position:relative;display:inline-flex;align-items:center;flex-shrink:0;width:40px;height:24px;}
.switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1;}
.switch-track{position:absolute;inset:0;border-radius:14px;background:var(--surface-2);border:1px solid var(--line);transition:background .15s,border-color .15s;pointer-events:none;}
.switch-thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(15,20,30,.28);transition:transform .15s;pointer-events:none;}
.switch input:checked ~ .switch-track{background:var(--accent);border-color:var(--accent);}
.switch input:checked ~ .switch-track .switch-thumb{transform:translateX(16px);}
.switch input:focus-visible ~ .switch-track{outline:2px solid var(--accent);outline-offset:2px;}
/* Linha do horário do resumo diário — parece uma linha de configuração normal (rótulo + valor),
   não um <input> solto de formulário web; o <input type="time"> nativo continua sendo o mesmo
   elemento, só perde a borda e ganha alinhamento à direita (item 21). */
.nt-time-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:6px 0 6px 34px;font-size:12.5px;color:var(--ink-soft);}
.nt-time-row input[type="time"]{border:none;background:transparent;font-size:13px;font-weight:700;color:var(--ink);text-align:right;padding:2px 0;cursor:pointer;}
.nt-time-row input[type="time"]:focus{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px;}

/* ---------- Kanban ---------- */
.kanban{display:grid;grid-template-columns:repeat(5,minmax(220px,1fr));gap:12px;overflow-x:auto;padding-bottom:4px;}
.kanban-col{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px;min-height:120px;}
.kanban-col-head{display:flex;justify-content:space-between;align-items:center;padding:4px 6px 10px;font-size:12px;font-weight:700;color:var(--ink-soft);}
.kanban-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:8px;box-shadow:var(--shadow-sm);cursor:pointer;transition:box-shadow .12s,transform .12s;}
.kanban-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);}
.kanban-card .t{font-size:12.5px;font-weight:600;margin-bottom:6px;line-height:1.35;}
.kanban-card .meta{display:flex;justify-content:space-between;align-items:center;}

/* ---------- Modal ---------- */
.overlay{position:fixed;inset:0;background:rgba(10,10,14,.55);display:none;align-items:flex-start;justify-content:center;z-index:60;padding-top:8vh;backdrop-filter:blur(2px);}
.overlay.show{display:flex;}
.modal{background:var(--surface);border-radius:var(--radius-lg);padding:22px;width:440px;max-width:92vw;max-height:82vh;overflow:auto;box-shadow:var(--shadow-lg);animation:pop .15s ease;}
@keyframes pop{from{opacity:0;transform:translateY(6px) scale(.98);}to{opacity:1;transform:none;}}
@keyframes sheetUp{from{transform:translateY(100%);}to{transform:translateY(0);}}
.modal h3{margin:0 0 16px;font-size:15.5px;}
.field{margin-bottom:12px;display:flex;flex-direction:column;gap:5px;}
.field label{font-size:11.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.field input,.field select,.field textarea{width:100%;}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line);}

/* ---------- Command palette ---------- */
.cmdk{width:560px;max-width:92vw;padding:0;overflow:hidden;}
.cmdk-input{padding:14px 16px;border-bottom:1px solid var(--line);}
.cmdk-input input{width:100%;border:none;font-size:15px;background:transparent;padding:2px;}
.cmdk-input input:focus{box-shadow:none;}
.cmdk-results{max-height:360px;overflow:auto;padding:8px;}
.cmdk-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:13px;}
.cmdk-item:hover,.cmdk-item.sel{background:var(--surface-2);}
.cmdk-item .tag{margin-left:auto;font-size:10.5px;color:var(--muted);background:var(--surface-2);padding:2px 7px;border-radius:20px;}

.config-lists{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.config-lists textarea{width:100%;height:120px;resize:vertical;}

/* ---------- Configurações: grupos estilo app ---------- */
.cfg-group-list{display:flex;flex-direction:column;gap:8px;}
.cfg-group-row{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;cursor:pointer;min-height:60px;transition:box-shadow .15s,transform .15s;}
.cfg-group-row:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);}
.cfg-group-icon{width:42px;height:42px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0;}
.cfg-group-text{flex:1;min-width:0;}
.cfg-group-title{font-weight:700;font-size:14px;}
.cfg-group-desc{color:var(--muted);font-size:12px;margin-top:2px;}
.cfg-group-chevron{color:var(--muted);font-size:22px;flex-shrink:0;}

.cfg-subgroup{margin-bottom:18px;}
.cfg-subgroup:last-child{margin-bottom:0;}
.cfg-subgroup-title{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;margin-bottom:8px;}
.cfg-item-list{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:10px;}
.cfg-item-row{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;font-size:13.5px;border-bottom:1px solid var(--line-soft);background:var(--surface);}
.cfg-item-row:last-child{border-bottom:none;}
.cfg-add-row{display:flex;gap:8px;}
.cfg-add-row input{flex:1;min-width:0;}
.cfg-conta-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;}
.cfg-item-row{flex-wrap:wrap;row-gap:8px;}
.cfg-item-row .actions-col{flex-wrap:wrap;justify-content:flex-end;}
.cfg-item-primary{min-width:0;flex:1;font-weight:600;}
.cfg-actions-mobile,.cfg-category-mobile-badge{display:none;}
.cfg-protected-badge{flex-shrink:0;}
.cfg-toggle-row{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;padding:4px 0;}
.cfg-toggle-row input{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0;}
.search-box{min-width:220px;}
.toast{position:fixed;bottom:20px;right:20px;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:9px;font-size:13px;opacity:0;transform:translateY(10px);transition:.25s;pointer-events:none;z-index:80;box-shadow:var(--shadow-lg);font-weight:600;}
.toast.show{opacity:1;transform:translateY(0);pointer-events:auto;}
.toast-action{all:unset;cursor:pointer;font-weight:800;text-decoration:underline;margin-left:12px;color:var(--bg);}
.pwa-update{position:fixed;right:20px;bottom:20px;z-index:90;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 40px);padding:10px 12px 10px 16px;border-radius:10px;background:var(--ink);color:var(--bg);box-shadow:var(--shadow-lg);font-size:13px;font-weight:700;}
.pwa-update[hidden]{display:none;}
.pwa-update button{min-height:44px;padding:0 13px;border:0;border-radius:8px;background:var(--accent);color:#fff;font:inherit;cursor:pointer;white-space:nowrap;}
.pwa-update button:focus-visible{outline:2px solid #fff;outline-offset:2px;}
@media(max-width:760px){.pwa-update{left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));max-width:none;justify-content:space-between;}}
.hint{font-size:11.5px;color:var(--muted);margin-top:10px;}
.sparkline-wrap{display:flex;align-items:flex-end;gap:2px;height:34px;}
.avatar-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.frase-dia{font-style:italic;color:var(--muted);font-size:11px;margin:5px 0 0;max-width:520px;opacity:.85;}
.holiday-line{color:var(--purple);font-size:11.5px;font-weight:700;margin:3px 0 0;}

/* ---------- Moedas estrangeiras ---------- */
.fx-list{display:flex;flex-direction:column;margin-top:6px;}
.fx-row{display:flex;justify-content:space-between;align-items:center;padding:10px 2px;border-bottom:1px solid var(--line-soft);gap:10px;}
.fx-row:last-child{border-bottom:none;}
.fx-left{display:flex;align-items:center;gap:10px;min-width:0;}
.fx-icon{width:34px;height:34px;border-radius:10px;background:var(--purple-soft);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
.fx-label{font-weight:700;font-size:13px;}
.fx-right{font-weight:800;font-size:13.5px;flex-shrink:0;}

/* =========================================================
   RESPONSIVIDADE — breakpoints
   Desktop: >1050px · Tablet: 761–1050px · Mobile: ≤760px · Estreito: ≤420px
========================================================= */
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important;}
}

/* Helpers de visibilidade por breakpoint */
.mobile-only{display:none;}
.mobile-list{display:none;}
.bottom-nav,.fab{display:none;}

/* -------- Tablet (761–1050px): sidebar mais estreita, grids em 2 col -------- */
@media(max-width:1050px){
  .sidebar{width:208px;}
}

/* -------- Mobile (≤760px) -------- */
/* R3-B — Home 2.0: uma hierarquia operacional comum a mobile e desktop. */
.home-r3-grid{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(300px,.82fr);grid-template-areas:"attention knowledge" "today week";gap:14px;margin-bottom:22px;align-items:start;}
.home-r3-section{min-width:0;}
.home-heading-count{color:var(--muted);font-weight:700;}
.home-attention-section{grid-area:attention;}
.home-today-section{grid-area:today;}
.home-week-section{grid-area:week;}
.home-knowledge-section{grid-area:knowledge;}
.home-attention-list,.home-today-list,.home-knowledge-list{display:flex;flex-direction:column;gap:4px;}
.home-attention-item,.home-today-item{display:flex;align-items:center;gap:10px;min-width:0;min-height:48px;padding:7px 0;border-bottom:1px solid var(--line-soft);}
.home-attention-item:last-child,.home-today-item:last-child{border-bottom:0;}
.home-check-btn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:44px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--accent);cursor:pointer;}
.home-check-btn:hover{background:var(--accent-soft);border-color:var(--accent);}
.home-item-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px;text-align:left;}
.home-item-copy strong{overflow:hidden;color:var(--ink);font-size:13.5px;text-overflow:ellipsis;white-space:nowrap;}
.home-item-copy span{overflow:hidden;color:var(--muted);font-size:11.5px;text-overflow:ellipsis;white-space:nowrap;}
.home-attention-empty{display:flex;align-items:center;gap:10px;min-height:54px;color:var(--ink-soft);}
.home-attention-empty>span:first-child{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;background:var(--green-soft);color:var(--green);font-weight:800;}
.home-attention-empty>span:last-child{display:flex;flex-direction:column;gap:2px;}
.home-attention-empty strong{font-size:13px;}
.home-attention-empty small,.home-today-empty,.home-week-empty{color:var(--muted);font-size:11.5px;}
.home-today-time{flex:0 0 42px;color:var(--ink-soft);font-size:12px;font-weight:800;}
.home-today-habit{width:100%;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;text-align:left;}
.home-today-habit:hover{background:var(--surface-2);}
.home-today-habit.is-done .home-item-copy strong,.home-today-item.is-done .home-item-copy strong{text-decoration:line-through;color:var(--muted);}
.home-today-empty{min-height:36px;display:flex;align-items:center;}
.home-week-focus{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;}
.home-week-empty{margin-bottom:12px;}
.home-week-execution{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:9px 0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;}
.home-week-execution>span:first-child{display:flex;min-width:0;flex-direction:column;gap:2px;}
.home-week-execution strong{font-size:13px;}
.home-week-execution small{color:var(--muted);font-size:11.5px;}
.home-week-value{font-size:22px;font-weight:800;letter-spacing:-.02em;}
.home-week-section .bar-outer{margin-top:5px;}
.home-knowledge-item{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:9px;width:100%;min-height:48px;padding:7px 4px;border:0;border-bottom:1px solid var(--line-soft);background:transparent;color:var(--ink);font:inherit;font-size:12.5px;text-align:left;cursor:pointer;}
.home-knowledge-item:last-child{border-bottom:0;}
.home-knowledge-item .icon{width:30px;height:30px;border-radius:9px;}
.home-overview-section{margin-bottom:18px;}
.home-overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;}
.home-overview-card{display:flex;min-width:0;min-height:118px;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left;color:inherit;font:inherit;cursor:pointer;}
.home-overview-card:hover{border-color:var(--accent);}
.home-overview-label{margin-bottom:7px;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;}
.home-overview-card strong{max-width:100%;overflow:hidden;font-size:21px;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;}
.home-overview-card small{margin-top:4px;color:var(--muted);font-size:10.5px;line-height:1.35;}
.home-more-indicators{border:0;margin-top:4px;}
.home-more-indicators>summary{display:flex;align-items:center;gap:6px;min-height:44px;padding:6px 2px;list-style:none;color:var(--accent);font-size:13px;font-weight:700;cursor:pointer;}
.home-more-indicators>summary::-webkit-details-marker{display:none;}
.home-more-indicators>summary::after{content:'▾';transition:transform .15s;}
.home-more-indicators[open]>summary::after{transform:rotate(180deg);}
.home-more-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:6px;}
.home-menu-btn,.privacy-toggle-btn{width:44px;height:44px;min-width:44px;min-height:44px;}

@media(min-width:761px) and (max-width:1023px){
  .home-r3-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"attention" "today" "week" "knowledge";}
  .home-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .home-more-grid{grid-template-columns:minmax(0,1fr);}
  .page-header{grid-template-columns:minmax(0,1fr) auto;}
  .page-header-actions{min-width:0;}
  .page-header-context{overflow-x:auto;max-width:100%;}
}

@media(max-width:760px){
  .home-r3-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"attention" "today" "week" "knowledge";gap:12px;margin-bottom:18px;}
  .home-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;}
  .home-overview-card{min-height:108px;padding:13px;}
  .home-overview-card strong{font-size:18px;}
  .home-more-grid{grid-template-columns:minmax(0,1fr);}
  .home-r3-section .section-head{gap:8px;}
  .home-r3-section .section-head .btn{min-height:44px;}
  .home-attention-item>.badge{max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  html{-webkit-text-size-adjust:100%;}
  body{overflow-x:hidden;}
  .app{display:block;}
  .sidebar{display:none;}
  .main{width:100%;}
  /* Polimento final — item 12/16/17: mais respiro entre o fim do conteúdo (ex.: linha de hábitos
     da Home) e o FAB, resolvido só com padding — o FAB continua no tamanho aprovado, sem encolher. */
  .content{padding:16px 16px calc(156px + env(safe-area-inset-bottom));max-width:100%;}
  .topbar{padding:14px 16px;padding-top:calc(14px + env(safe-area-inset-top));gap:10px;}
  .page-header{grid-template-columns:minmax(0,1fr) auto;align-items:start;}
  .page-header-description{display:none;}
  .page-header-action-mobile-hidden{display:none;}
  .page-header-context{margin-top:0;overflow-x:auto;padding-bottom:2px;scrollbar-width:none;}
  .page-header-context::-webkit-scrollbar{display:none;}
  .page-header-period,.page-header-controls{flex-shrink:0;}
  .topbar-title h1{font-size:17px;}
  .topbar-title p{font-size:12px;}
  .topbar .pill{display:none;}
  .topbar-actions{gap:6px;}
  /* O botão flutuante (FAB) já cobre a ação de adicionar no mobile — evita CTA duplicado no cabeçalho */
  .topbar-actions .btn.keep-label{display:none;}
  input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea{
    font-size:16px;min-height:44px;
  }
  textarea{min-height:88px;}
  .icon-btn,.btn.sm,.status-chip,.goal-progress-trigger,.segmented button,.toast-action{
    min-width:44px;min-height:44px;justify-content:center;
  }
  .habit-dot[type="button"]{
    position:relative;box-sizing:content-box;padding:11px;margin:-11px;
    background-clip:content-box;
  }
  .habit-week-days{gap:4px;}
  .row-menu-item{min-height:44px;}

  /* grids sempre em 1 coluna, exceto KPIs compactos (2 por linha) */
  .grid-4,.grid-3,.grid-2{grid-template-columns:1fr;}
  .grid-2.prod-grid-safe{grid-template-columns:minmax(0,1fr);}

  /* No mobile, o gráfico simples mantém barras mais baixas; a trilha, os buckets e a seleção
     textual de ticks continuam os mesmos, apenas dentro do scroll horizontal do card. */
  .prod-bars-simples .prod-chart-track{min-height:96px;--prod-bar-max:64px;}
  .kpi-compact-grid{grid-template-columns:repeat(2,1fr) !important;gap:8px;}
  .kpi-compact-grid .kpi{padding:10px 11px;}
  /* Polimento final — item 26: os 4 KPIs de Patrimônio em 2x2 no mobile, em vez de empilhados
     4 linhas — mesma ideia do kpi-compact-grid do Financeiro, só que sem a variante de 3 colunas
     em telas largas (não faz sentido pra exatamente 4 itens). */
  .pat-kpi-grid{grid-template-columns:repeat(2,1fr) !important;gap:8px;}
  .pat-kpi-grid .kpi{padding:10px 11px;}
  .pat-kpi-grid .kpi .value{font-size:15.5px;}
  .kpi-compact-grid .kpi .value{font-size:15.5px;}
  .config-lists{grid-template-columns:1fr;}
  .field-row{grid-template-columns:1fr;}

  .card{padding:14px;border-radius:12px;}
  .search-box{width:100%;min-width:0;}
  .section-head .toolbar{width:100%;}
  .section-head .toolbar input,.section-head .toolbar select{flex:1;min-width:0;}
  .actions-control-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-bottom:12px;}
  .actions-search{grid-column:1/-1;width:100%;min-width:0;}
  .actions-filter-toggle{display:inline-flex;justify-self:start;min-width:0;}
  .actions-filter-toggle .badge{min-width:22px;justify-content:center;}
  .actions-view-toggle{grid-column:2;margin-left:0;justify-self:end;}
  .actions-secondary-filters{display:none;padding:12px;margin:-4px 0 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);}
  .actions-secondary-filters.is-open{display:flex;flex-direction:column;align-items:stretch;}
  .actions-secondary-filters>select{width:100%;min-width:0;}
  .actions-secondary-filters .quick-filter-row{gap:6px;}
  .actions-secondary-filters .chip-filter{min-height:44px;padding:9px 12px;}
  .finance-mobile-head{align-items:flex-start;}
  .finance-mobile-copy{max-width:calc(100% - 112px);}
  .finance-mobile-value{max-width:108px;overflow:hidden;text-overflow:ellipsis;font-size:13px;}
  .finance-mobile-meta{align-items:flex-end;}

  /* área de toque mínima 44px */
  .btn{min-height:44px;padding:10px 16px;}
  .btn.sm{min-height:44px;padding:10px 14px;}
  .icon-btn{width:44px;height:44px;}
  .theme-toggle{width:44px;height:44px;}
  .segmented button{min-height:44px;padding:8px 12px;}
  .wk-dia-actions .icon-btn{width:44px;height:44px;}
  .wk-foco-chip{min-height:44px;padding:0 10px 0 0;}
  .wk-foco-star{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;}
  .wk-foco-texto,.wk-bloco-main{min-height:44px;display:flex;align-items:center;}
  .wk-focus-section,.wk-planner-section{margin-bottom:14px;}
  .wk-week-strip{gap:4px;width:100%;overflow:visible;}
  .wk-day-summary{min-height:66px;border-radius:8px;padding:7px 1px;}
  .wk-day-short{font-size:10.5px;}
  .wk-day-number{font-size:14px;}
  .wk-day-count{font-size:9.5px;}
  .wk-context-actions .btn{min-height:44px;}
  .wk-dia-detail{padding:12px;}
  .wk-dia-detail .wk-bloco-main{flex-wrap:wrap;}
  .wk-adjust-options .btn{min-height:44px;}
  .more-indicators summary,.backup-hint-line,.cmdk-item,.cfg-toggle-row,.habit-week-row,.wk-home-item,.goal-related-habits-link{min-height:44px;box-sizing:border-box;}
  .backup-hint-line{padding:8px 4px;}
  .goal-related-habits-link{display:flex;align-items:center;}
  /* Ações de transformação do Brain Dump preservam alvo móvel de 44px. O padding e a fonte
     compactos mantêm a hierarquia visual sem reduzir a área segura de toque. */
  .btn.sm.idea-transform-btn{min-height:44px;padding:6px 10px;font-size:12px;}

  /* mostrar/esconder conforme o dispositivo */
  .mobile-only{display:block;}
  .semana-mobile-close{display:flex;justify-content:flex-end;margin:-4px 0 14px;}
  .desktop-only{display:none !important;}
  .mobile-list{display:flex;flex-direction:column;gap:10px;}
  .table-wrap{display:none;}

  /* Kanban vira lista agrupada por status, sem rolagem horizontal */
  .kanban{display:flex;flex-direction:column;gap:12px;overflow-x:visible;}
  .kanban-col{min-height:auto;}

  /* Modais viram bottom sheets */
  .overlay{
    align-items:flex-end;padding-top:0;bottom:auto;
    top:var(--lifeos-sheet-viewport-top,0px);
    height:100vh;height:100dvh;height:var(--lifeos-sheet-viewport-height,100dvh);
  }
  .overlay .modal{
    width:100%;max-width:100%;border-radius:20px 20px 0 0;
    max-height:88vh;max-height:88dvh;max-height:var(--lifeos-sheet-max-height,88dvh);
    animation:sheetUp .22s ease;padding:18px 16px calc(18px + env(safe-area-inset-bottom));
  }
  .modal::before{content:'';display:block;width:36px;height:4px;background:var(--line);border-radius:4px;margin:0 auto 14px;}
  .modal-actions{position:sticky;bottom:0;background:var(--surface);}

  /* Barra de navegação inferior */
  .bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--surface);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));justify-content:space-around;box-shadow:0 -4px 16px rgba(15,20,30,.05);}
  .bottom-nav button{all:unset;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex:1;min-height:52px;border-radius:10px;color:var(--muted);font-size:10.5px;font-weight:700;}
  .bottom-nav button .bn-ico{font-size:19px;line-height:1;}
  .bottom-nav button.active{color:var(--accent);}
  .bottom-nav button.active .bn-ico{transform:translateY(-1px);}

  /* Botão de ação rápida (FAB em formato de pílula) */
  .fab{display:flex;position:fixed;right:16px;bottom:calc(76px + env(safe-area-inset-bottom));z-index:45;height:48px;padding:0 18px 0 16px;border-radius:24px;background:var(--accent);color:#fff;align-items:center;justify-content:center;gap:6px;font-size:14px;font-weight:700;border:none;box-shadow:0 6px 16px rgba(91,87,255,.32);cursor:pointer;white-space:nowrap;transition:box-shadow .15s,transform .1s;}
  /* Microcorreções — item 26: em telas bem estreitas, os novos textos contextuais do FAB
     ("+ Adicionar lançamento" etc.) podem não caber. Em vez de reduzir a fonte, troca por uma
     versão mais curta e ainda clara (ex.: "+ Lançamento"), só abaixo de 340px. */
  .fab-label-short{display:none;}
  @media(max-width:340px){
    .fab-label-full{display:none;}
    .fab-label-short{display:inline;}
  }

  /* Microcorreções — itens 9/10: no mobile o toast (position:fixed;bottom:20px;right:20px) ficava
     em cima da bottom nav (que tem ~64px de altura: min-height 52px do botão + 6px+6px de padding,
     mais a safe-area) e podia colidir com o FAB (que fica a 76px do fundo + 48px de altura própria,
     ou seja, seu topo está a ~124px do fundo). Em vez de um valor fixo arbitrário, a posição é
     calculada a partir desses dois elementos reais do layout: 76px (mesma base do FAB) + 48px
     (altura do FAB) + uma margem de respiro — sempre acima de nav e FAB, em qualquer aparelho/PWA
     instalada, com ou sem FAB na tela. */
  #toast{left:16px;right:16px;bottom:calc(136px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:center;gap:10px;text-align:center;}
  .fab .fab-plus{font-size:16px;line-height:1;}
  .fab:active{transform:scale(.96);}

  /* Card com mensagem principal do dia */
  .today-card{display:flex;align-items:flex-start;gap:12px;background:linear-gradient(135deg,var(--accent-soft),var(--surface));border:1px solid var(--line);}
  .today-card .tc-icon{width:38px;height:38px;border-radius:11px;background:var(--surface);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}
  .today-card .tc-title{font-weight:700;font-size:14.5px;margin-bottom:2px;}
  .today-card .tc-sub{font-size:12.5px;color:var(--muted);}
  /* item 57-58: quando está tudo em dia, o card vira uma linha compacta — mesma altura de
     confiança baixa não precisa do mesmo peso visual de um alerta de atraso. */
  .today-card.tc-compact{padding:12px 14px;background:var(--surface);align-items:center;}
  .today-card.tc-compact .tc-icon{width:28px;height:28px;border-radius:9px;font-size:14px;}
  .today-card.tc-compact .tc-title{font-size:13px;margin-bottom:0;}
  .today-card.tc-compact .tc-sub{display:none;}

  .more-indicators{border:none;}
  .more-indicators summary{list-style:none;cursor:pointer;font-size:13px;font-weight:700;color:var(--accent);padding:10px 8px;display:flex;align-items:center;gap:6px;}
  .more-indicators summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px;}
  .more-indicators summary::-webkit-details-marker{display:none;}
  .more-indicators summary::after{content:'▾';transition:transform .15s;}
  .more-indicators[open] summary::after{transform:rotate(180deg);}

  .quick-sheet-item{display:flex;align-items:center;gap:12px;padding:14px 8px;border-radius:12px;font-size:14.5px;font-weight:600;min-height:44px;}
  .quick-sheet-item:is(button){width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;}
  .more-sheet-group{margin-top:14px;}
  .more-sheet-group:first-of-type{margin-top:0;}
  .more-sheet-group-label{padding:4px 8px 5px;color:var(--muted);font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;}
  .more-sheet-footer{margin-top:14px;padding-top:10px;border-top:1px solid var(--line);}
  .quick-sheet-item:active{background:var(--surface-2);}
  .quick-sheet-item .qs-ico{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0;}
}

/* Configurações usam o breakpoint de produto mobile (<768px), sem ampliar o breakpoint global
   das demais telas. Identidade e metadata ficam no primeiro plano; operações vão para um menu. */
@media(max-width:767px){
  .cfg-item-row{flex-wrap:nowrap;gap:8px;min-width:0;padding:8px 10px;overflow:hidden;}
  .cfg-item-row .cfg-conta-info,.cfg-item-primary{min-width:0;overflow:hidden;}
  .cfg-item-row .row-title,.cfg-item-row .row-sub,.cfg-item-primary{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .cfg-actions-desktop{display:none !important;}
  .cfg-actions-mobile{display:flex;align-items:center;justify-content:flex-end;flex:0 0 44px;}
  .cfg-actions-mobile .row-menu-btn{width:44px;height:44px;min-width:44px;min-height:44px;}
  .cfg-category-mobile-badge{display:inline-flex;flex-shrink:0;}
  .cfg-protected-badge{margin-left:auto;}
  .row-menu{max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px - env(safe-area-inset-bottom));overflow-y:auto;}
}

/* -------- Telas estreitas (≤420px) -------- */
@media(max-width:420px){
  .content{padding:14px 14px calc(156px + env(safe-area-inset-bottom));}
  .wk-week-strip{gap:3px;}
  .wk-day-summary{border-radius:7px;padding-left:0;padding-right:0;}
  .wk-day-today{font-size:8.5px;}
  .topbar{padding:12px 14px;padding-top:calc(12px + env(safe-area-inset-top));}
  .kpi .value{font-size:20px;}
  .topbar-actions .btn .btn-label{display:none;}
  .topbar-actions .btn{padding:10px 12px;}
  .topbar-actions .btn.keep-label .btn-label{display:inline;}
  .topbar-actions .btn.keep-label{padding:10px 16px;}
  .bottom-nav button{font-size:10px;}
  .today-card{padding:12px;}
}

/* A faixa de 3 KPIs (que exigia o ajuste especial de ≤340px acima) foi removida nesta rodada —
   o novo bloco único de execução (.home-exec-card) é full-width, então não tem o mesmo risco de
   compressão em telas estreitas; nenhuma regra equivalente é necessária. */

/* ============================================================
   PasswordGate — START
   Bloqueio simples de acesso por senha compartilhada, client-side.
   Para DESATIVAR esta proteção, remova os 3 blocos marcados
   "PasswordGate: START" ... "PasswordGate: END" (este aqui de CSS,
   o bloco de HTML logo após a tag body, e o bloco de JS no topo do arquivo.
============================================================ */
.pw-gate-overlay{position:fixed;inset:0;z-index:1000;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:24px;}
.pw-gate-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:32px 28px;width:340px;max-width:100%;box-shadow:var(--shadow-lg);text-align:center;}
.pw-gate-badge{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#7b77ff,#5b57ff);display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;font-size:19px;margin:0 auto 14px;box-shadow:0 4px 10px rgba(91,87,255,.35);}
.pw-gate-title{font-size:17px;font-weight:700;margin:0 0 4px;color:var(--ink);}
.pw-gate-sub{font-size:12.5px;color:var(--muted);margin:0 0 18px;}
.pw-gate-input{width:100%;box-sizing:border-box;text-align:center;letter-spacing:.15em;font-size:15px;padding:11px 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);outline:none;margin-bottom:10px;font-family:inherit;}
.pw-gate-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
.pw-gate-error{font-size:12px;color:var(--red);margin:-2px 0 12px;text-align:left;}
.pw-gate-btn{width:100%;cursor:pointer;border:none;border-radius:8px;padding:11px 14px;font-size:13.5px;font-weight:700;background:var(--accent);color:#fff;min-height:44px;font-family:inherit;transition:filter .12s,transform .1s;}
.pw-gate-btn:hover{filter:brightness(1.08);}
.pw-gate-btn:active{transform:scale(.98);}
/* PasswordGate — END (CSS) */
