
/* v12 — temas de aparência. Tokens mantêm contraste próprio em cada modo. */
@media screen {
  body[data-palette="ocean"] {
    --bg:#112231; --bg2:#1e3548; --bg3:#294258; --bg4:#35526a; --bg5:#44637a;
    --border:#415c72; --border2:#607b8f; --text:#f3fafc; --text2:#c4d9e1; --text3:#abc5d0;
    --accent:#70d6dd; --accent2:#40afc0; --accent-dim:rgba(91,201,215,.17);
    --theme-shell-a:#17344b; --theme-shell-b:#102b39;
    --theme-sidebar-a:rgba(28,67,88,.73); --theme-sidebar-b:rgba(18,44,65,.64);
    --theme-hero-a:#244f65; --theme-hero-b:#365575;
    --theme-primary-a:#8cdee4; --theme-primary-b:#43afc1; --theme-action-text:#153447;
    --chart-profit:#57cfb4; --chart-material:#7fc1e1; --chart-labor:#b5a9dc;
    --chart-depreciation:#e1c486; --chart-energy:#f29479; --chart-consumables:#87bfc1; --chart-other:#8ea2b9;
  }
  body.light-mode[data-palette="ocean"] {
    --bg:#eef7f9; --bg2:#fbfeff; --bg3:#e7f2f6; --bg4:#d6e9ef; --bg5:#c9e1e9;
    --border:#d3e5eb; --border2:#b6d2dc; --text:#203b4b; --text2:#496778; --text3:#5c7888;
    --accent:#146d87; --accent2:#0e5974; --accent-dim:rgba(36,146,173,.12);
    --theme-shell-a:#d9ecf3; --theme-shell-b:#e8f4f7;
    --theme-sidebar-a:rgba(252,255,255,.7); --theme-sidebar-b:rgba(226,243,248,.66);
    --theme-hero-a:#d5eef4; --theme-hero-b:#e5f4f0;
    --theme-primary-a:#79d2da; --theme-primary-b:#36a7b9; --theme-action-text:#173847;
  }
  body[data-palette="forest"] {
    --bg:#182922; --bg2:#284238; --bg3:#345145; --bg4:#416051; --bg5:#4e705e;
    --border:#4d695b; --border2:#6e8875; --text:#f5fbf4; --text2:#d0e0d2; --text3:#aec7b5;
    --accent:#9cdab0; --accent2:#60ba86; --accent-dim:rgba(139,184,150,.17);
    --theme-shell-a:#1b3a2d; --theme-shell-b:#253d34;
    --theme-sidebar-a:rgba(41,78,58,.74); --theme-sidebar-b:rgba(27,58,44,.64);
    --theme-hero-a:#365a43; --theme-hero-b:#4d684e;
    --theme-primary-a:#b4dfaf; --theme-primary-b:#6eb98a; --theme-action-text:#1b3a2c;
    --chart-profit:#7ed9a3; --chart-material:#a9c9bd; --chart-labor:#cabbd4;
    --chart-depreciation:#e3ce8f; --chart-energy:#e6a171; --chart-consumables:#92b79a; --chart-other:#9aaf9b;
  }
  body.light-mode[data-palette="forest"] {
    --bg:#f0f6ed; --bg2:#fbfefa; --bg3:#ebf4e9; --bg4:#dcebd9; --bg5:#cfdfcb;
    --border:#d9e8d6; --border2:#bfd3c0; --text:#263d32; --text2:#50695a; --text3:#617b6d;
    --accent:#27694a; --accent2:#1d573c; --accent-dim:rgba(63,142,93,.12);
    --theme-shell-a:#e2efd9; --theme-shell-b:#edf4e9;
    --theme-sidebar-a:rgba(252,255,248,.72); --theme-sidebar-b:rgba(226,241,224,.66);
    --theme-hero-a:#dcf0d8; --theme-hero-b:#edf4dd;
    --theme-primary-a:#a8cf93; --theme-primary-b:#68af79; --theme-action-text:#1b3925;
  }
  body[data-palette="lavender"] {
    --bg:#211d32; --bg2:#36304e; --bg3:#433a5d; --bg4:#51466d; --bg5:#60557b;
    --border:#625575; --border2:#807392; --text:#faf7ff; --text2:#d9d0e8; --text3:#bcb0d1;
    --accent:#c6b8f0; --accent2:#9f8ad9; --accent-dim:rgba(180,160,228,.17);
    --theme-shell-a:#302747; --theme-shell-b:#251f3b;
    --theme-sidebar-a:rgba(66,52,91,.73); --theme-sidebar-b:rgba(44,34,71,.64);
    --theme-hero-a:#524072; --theme-hero-b:#66527b;
    --theme-primary-a:#d0bdf1; --theme-primary-b:#9a84d2; --theme-action-text:#2e2544;
    --chart-profit:#c3a7ef; --chart-material:#91b4d9; --chart-labor:#e5b4d2;
    --chart-depreciation:#ecd099; --chart-energy:#e9a5a5; --chart-consumables:#a3b7d6; --chart-other:#b6a7ca;
  }
  body.light-mode[data-palette="lavender"] {
    --bg:#f6f2fa; --bg2:#fefcff; --bg3:#f1ebf8; --bg4:#e7dcf2; --bg5:#dbcde8;
    --border:#e5daed; --border2:#d2c4e0; --text:#362d4e; --text2:#635975; --text3:#786c89;
    --accent:#674e9d; --accent2:#533c84; --accent-dim:rgba(128,102,184,.12);
    --theme-shell-a:#ebe1f3; --theme-shell-b:#f6eff8;
    --theme-sidebar-a:rgba(255,253,255,.73); --theme-sidebar-b:rgba(239,229,249,.66);
    --theme-hero-a:#eee1f8; --theme-hero-b:#f5eaf8;
    --theme-primary-a:#c3a8e8; --theme-primary-b:#9070c1; --theme-action-text:#2d2143;
  }
  body[data-palette="graphite"] {
    --bg:#171d27; --bg2:#263340; --bg3:#303f4e; --bg4:#3c4c5c; --bg5:#4b5d6d;
    --border:#465768; --border2:#657787; --text:#f5f8fa; --text2:#cad5dc; --text3:#aebdc7;
    --accent:#a7d5e1; --accent2:#7fabbf; --accent-dim:rgba(148,196,210,.16);
    --theme-shell-a:#233448; --theme-shell-b:#1b2837;
    --theme-sidebar-a:rgba(45,65,80,.75); --theme-sidebar-b:rgba(30,46,62,.66);
    --theme-hero-a:#354d61; --theme-hero-b:#425668;
    --theme-primary-a:#b8d9e4; --theme-primary-b:#85adbe; --theme-action-text:#20323e;
    --chart-profit:#92cdb9; --chart-material:#a2c5dd; --chart-labor:#b1b1d5;
    --chart-depreciation:#d6c292; --chart-energy:#dfa190; --chart-consumables:#9abfc1; --chart-other:#98a8b8;
  }
  body.light-mode[data-palette="graphite"] {
    --bg:#f2f5f7; --bg2:#fdfefe; --bg3:#ebf0f3; --bg4:#dee7eb; --bg5:#cddbe1;
    --border:#dbe4e9; --border2:#c4d3dc; --text:#293946; --text2:#536b7a; --text3:#657c8a;
    --accent:#365d74; --accent2:#2b4c61; --accent-dim:rgba(78,119,143,.13);
    --theme-shell-a:#e1e9ed; --theme-shell-b:#f0f4f6;
    --theme-sidebar-a:rgba(253,254,255,.75); --theme-sidebar-b:rgba(230,238,242,.68);
    --theme-hero-a:#e1edf2; --theme-hero-b:#eef2f5;
    --theme-primary-a:#a9c6d2; --theme-primary-b:#7299ac; --theme-action-text:#1d3544;
  }
  body[data-palette="custom"] {
    --theme-action-text:#202635;
    --chart-labor:#a59ac2; --chart-depreciation:#ddc184; --chart-consumables:#8fbabf; --chart-other:#8c9aab;
  }
  body[data-palette]:not([data-palette="galaem"]) .app-shell { background:linear-gradient(135deg,var(--theme-shell-a),var(--theme-shell-b)); }
  body[data-palette]:not([data-palette="galaem"]) .sidebar { background:linear-gradient(150deg,var(--theme-sidebar-a),var(--theme-sidebar-b)) !important; border-right:1px solid var(--border); backdrop-filter:blur(26px) saturate(150%); -webkit-backdrop-filter:blur(26px) saturate(150%); }
  body[data-palette]:not([data-palette="galaem"]) .topbar { background:linear-gradient(110deg,var(--theme-sidebar-a),var(--theme-sidebar-b)); border-color:var(--border); }
  body[data-palette]:not([data-palette="galaem"]) .content { background:radial-gradient(circle at 85% 8%,var(--accent-dim),transparent 37%),linear-gradient(130deg,var(--bg),var(--theme-shell-b)); }
  body[data-palette]:not([data-palette="galaem"]) .brand-icon,
  body[data-palette]:not([data-palette="galaem"]) .nav-item.active .nav-icon { background:linear-gradient(135deg,var(--theme-primary-a),var(--theme-primary-b)); color:var(--theme-action-text); }
  body[data-palette]:not([data-palette="galaem"]) .brand-icon span { color:var(--theme-action-text) !important; }
  body[data-palette]:not([data-palette="galaem"]) .brand-sub { color:var(--accent); }
  body[data-palette]:not([data-palette="galaem"]) .nav-item:hover,
  body[data-palette]:not([data-palette="galaem"]) .nav-item.active { background:linear-gradient(110deg,var(--accent-dim),var(--bg3)); border-color:var(--border2); }
  body[data-palette]:not([data-palette="galaem"]) .nav-icon { background:linear-gradient(145deg,var(--accent-dim),var(--bg4)); color:var(--accent); }
  body[data-palette]:not([data-palette="galaem"]) .card,
  body[data-palette]:not([data-palette="galaem"]) .kpi-card,
  body[data-palette]:not([data-palette="galaem"]) .modal,
  body[data-palette]:not([data-palette="galaem"]) .dashboard-filter-dialog { background:linear-gradient(145deg,var(--bg2),var(--bg3)); border-color:var(--border); }
  body[data-palette]:not([data-palette="galaem"]) .kpi-card::before { background:linear-gradient(90deg,var(--theme-primary-a),var(--theme-primary-b)); }
  body[data-palette]:not([data-palette="galaem"]) .btn-primary,
  body[data-palette]:not([data-palette="galaem"]) .tipo-btn.active { background:linear-gradient(110deg,var(--theme-primary-a),var(--theme-primary-b)); color:var(--theme-action-text); border-color:var(--border); }
  body[data-palette]:not([data-palette="galaem"]) .btn-primary:hover { background:linear-gradient(110deg,var(--theme-primary-b),var(--theme-primary-a)); color:var(--theme-action-text); }
  body[data-palette]:not([data-palette="galaem"]) .btn-secondary { background:linear-gradient(120deg,var(--bg2),var(--bg4)); border-color:var(--border2); color:var(--text); }
  body[data-palette]:not([data-palette="galaem"]) .btn-secondary:hover { background:linear-gradient(120deg,var(--bg3),var(--bg5)); border-color:var(--accent); color:var(--text); }
  body[data-palette]:not([data-palette="galaem"]) #tab-dashboard .dashboard-hero { background:linear-gradient(115deg,var(--theme-hero-a),var(--theme-hero-b)); border-color:var(--border); }
  body[data-palette]:not([data-palette="galaem"]) #tab-dashboard .dashboard-disclosure { background:linear-gradient(145deg,var(--bg2),var(--bg3)); border-color:var(--border); }
  body[data-palette]:not([data-palette="galaem"]) #tab-dashboard .dashboard-disclosure > summary::before { background:var(--accent-dim); color:var(--accent); }
  body[data-palette]:not([data-palette="galaem"]) #tab-dashboard .finance-donut-value:not(.is-loss) { color:var(--accent); }
  body[data-palette]:not([data-palette="galaem"]) #tab-dashboard .finance-donut-center { background:var(--bg2); }
  body[data-palette]:not([data-palette="galaem"]) #tab-dashboard .finance-slice { stroke:var(--bg2); }
  .appearance-card { margin-bottom:16px; }
  .appearance-description { font-size:12px; color:var(--text2); margin:-6px 0 16px; }
  .appearance-mode { display:inline-flex; padding:4px; gap:4px; border-radius:12px; background:linear-gradient(120deg,var(--bg3),var(--bg4)); border:1px solid var(--border); margin-bottom:18px; }
  .appearance-mode-button { border:0; border-radius:9px; background:transparent; color:var(--text2); font:600 12px var(--font); padding:9px 17px; cursor:pointer; }
  .appearance-mode-button.selected { background:linear-gradient(125deg,var(--bg2),var(--bg3)); color:var(--text); box-shadow:0 3px 10px rgba(15,20,35,.11); }
  .appearance-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
  .appearance-option { display:flex; flex-direction:column; text-align:left; min-width:0; padding:12px; border-radius:14px; border:1px solid var(--border2); background:linear-gradient(140deg,var(--bg2),var(--bg3)); color:var(--text); cursor:pointer; position:relative; font-family:var(--font); }
  .appearance-option.selected { border-color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent),0 7px 20px var(--accent-dim); }
  .appearance-option.selected::after { content:'✓'; position:absolute; top:19px; right:21px; width:23px; height:23px; display:grid; place-items:center; border-radius:50%; color:var(--theme-action-text,#fff); background:var(--accent); font-weight:800; }
  .appearance-option strong { font-size:13px; margin:11px 0 1px; }
  .appearance-option small { font-size:11px; color:var(--text2); }
  .appearance-preview { display:block; height:70px; border-radius:9px; background:linear-gradient(115deg,var(--sample-a) 0%,var(--sample-a) 20%,var(--sample-b) 20%,var(--sample-b) 42%,var(--sample-c) 42%,var(--sample-c) 61%,var(--sample-d) 61%,var(--sample-d) 80%,var(--sample-e) 80%); border:1px solid rgba(50,50,50,.1); }
  .appearance-custom { display:flex; gap:18px; flex-wrap:wrap; align-items:center; margin-top:16px; padding:15px; border-radius:12px; border:1px solid var(--border); background:linear-gradient(130deg,var(--bg3),var(--bg4)); }
  .appearance-custom[hidden] { display:none; }
  .appearance-custom label { display:flex; align-items:center; gap:9px; font-size:12px; }
  .appearance-custom input[type="color"] { width:52px; height:38px; min-height:38px; padding:3px; cursor:pointer; }
  @media(max-width:800px) { .appearance-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
  @media(max-width:480px) { .appearance-grid { grid-template-columns:1fr 1fr; gap:8px; } .appearance-option { padding:8px; } .appearance-preview { height:46px; } .appearance-mode { width:100%; } .appearance-mode-button { flex:1; } }
}

/* v15: tela de login moderna com abas animadas */
body:not(.auth-ready) .app-shell { visibility:hidden; }
body:not(.auth-ready) .auth-screen { visibility:hidden; }

.auth-screen {
  position: fixed; inset: 0; z-index: 1000;
  display: grid; place-items: center; padding: 20px;
  background: linear-gradient(145deg, #252437, #5b395b);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
body.auth-ready .auth-screen { display: none; }

.auth-card {
  width: min(100%, 420px);
  padding: 36px 32px 28px;
  border-radius: 22px;
  background: #fff;
  color: #172231;
  box-shadow: 0 24px 70px rgba(22, 13, 36, 0.45);
  animation: authCardIn 0.35s cubic-bezier(0.34, 1.4, 0.64, 1);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, sans-serif;
}

@keyframes authCardIn {
  from { opacity: 0; transform: translateY(20px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

.auth-brand { text-align: center; margin-bottom: 24px; }
.auth-logo { font-size: 44px; margin-bottom: 6px; line-height: 1; }
.auth-card h1 { font-size: 22px; margin: 0 0 6px; letter-spacing: -0.4px; color: #172231; }
.auth-subtitle { font-size: 13px; color: #6b7280; margin: 0; line-height: 1.5; }

.auth-tabs {
  display: flex; gap: 4px;
  background: #f3f4f6;
  border-radius: 12px;
  padding: 4px;
  margin-bottom: 22px;
}
.auth-tab {
  flex: 1;
  padding: 10px;
  border: none;
  background: transparent;
  border-radius: 9px;
  font-size: 13px;
  font-weight: 600;
  color: #6b7280;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s ease;
}
.auth-tab.active {
  background: #fff;
  color: #172231;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.auth-field {
  display: flex; flex-direction: column; gap: 6px;
  margin-bottom: 14px;
  overflow: hidden;
  transition: opacity 0.25s ease, max-height 0.3s ease, margin-bottom 0.25s ease;
  opacity: 1;
  max-height: 90px;
}

.auth-card.mode-login .auth-field-signup {
  opacity: 0;
  max-height: 0;
  margin-bottom: 0;
  pointer-events: none;
}

.auth-card label {
  font-size: 12px;
  font-weight: 600;
  color: #374151;
  letter-spacing: 0;
  text-transform: none;
  font-family: inherit;
  margin: 0;
}

.auth-card input {
  width: 100%;
  padding: 12px 14px;
  font-size: 14px;
  color: #172231;
  background: #f9fafb;
  border: 1.5px solid #e5e7eb;
  border-radius: 10px;
  outline: none;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
  font-family: inherit;
  min-height: 46px;
  box-sizing: border-box;
}
.auth-card input:focus {
  border-color: #f2a12a;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(242, 161, 42, 0.15);
}
.auth-card input::placeholder { color: #9ca3af; }

.auth-message {
  min-height: 20px;
  font-size: 13px;
  line-height: 1.45;
  margin: 6px 0 12px;
  padding: 0;
  transition: all 0.2s ease;
  font-weight: 500;
}
.auth-message.error   { color: #dc2626; }
.auth-message.success { color: #16a34a; }
.auth-message.info    { color: #2563eb; }
.auth-message:empty   { margin-bottom: 4px; min-height: 8px; }

.auth-submit {
  width: 100%;
  padding: 13px;
  font-size: 14px;
  font-weight: 700;
  margin-top: 4px;
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.auth-submit:disabled { opacity: 0.75; cursor: wait; }

.auth-submit .spinner {
  display: inline-block;
  width: 14px; height: 14px;
  border: 2px solid rgba(0, 0, 0, 0.2);
  border-top-color: #172231;
  border-radius: 50%;
  animation: authSpin 0.7s linear infinite;
}
@keyframes authSpin { to { transform: rotate(360deg); } }

.auth-footer {
  text-align: center;
  margin-top: 20px;
  font-size: 13px;
  color: #6b7280;
}
.auth-link {
  background: none;
  border: none;
  color: #f2a12a;
  cursor: pointer;
  font-weight: 700;
  font-size: 13px;
  padding: 4px 6px;
  font-family: inherit;
  margin-left: 4px;
}
.auth-link:hover { text-decoration: underline; }

@media (max-width: 480px) {
  .auth-card { padding: 28px 22px 22px; border-radius: 18px; }
  .auth-logo { font-size: 38px; }
  .auth-card h1 { font-size: 20px; }
}

#sync-account { max-width: 150px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.mobile-extra-button, .mobile-calculation { display: none; }
@media screen and (max-width:600px) {
  #tab-orcamento .mobile-extra-button { display:block; width:100%; margin:10px 0 2px; }
  #tab-orcamento:not(.mobile-expanded) .mobile-advanced-field { display:none !important; }
  #tab-orcamento .mobile-calculation { display:block; padding:18px; margin:12px 0; border:1px solid var(--border); border-radius:16px; background:linear-gradient(145deg,var(--bg2),var(--bg3)); }
  .mobile-calculation[hidden] { display:none !important; }
  .mobile-calculation strong { display:block; color:var(--accent); font-size:28px; margin:5px 0 15px; }
  .mobile-calculation .mobile-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
  .mobile-calculation .mobile-metrics span { font-size:11px; line-height:1.4; color:var(--text2); }
  .mobile-calculation .mobile-metrics b { display:block; color:var(--text); font-size:13px; overflow-wrap:anywhere; }
  #tab-orcamento:not(.mobile-result-open) #resumo-section { display:none !important; }
  #tab-orcamento .orcamento-itens-header { flex-direction:column; align-items:stretch; }
  #tab-orcamento .orcamento-itens-header .btn-group { display:grid; grid-template-columns:1fr 1fr; }
  #tab-orcamento .orcamento-itens-header .btn-group .btn { width:100%; min-height:42px; white-space:normal; }
  #tab-orcamento .orcamento-itens-header .btn-group button:nth-child(1), #tab-orcamento .orcamento-itens-header .btn-group button:nth-child(2) { display:none; }
  #sync-account { font-size:11px; max-width:58px; }
}
