/* ==========================================================================
   Winter · Design system v2
   --------------------------------------------------------------------------
   Carregado DEPOIS de styles.css. É a fonte de verdade para:
     1. tokens (cores, tipografia, espaços, cantos, sombras);
     2. componentes base (cartões, indicadores, tabelas, botões, cabeçalhos);
     3. barra de topo e layout em telemóvel;
     4. página de login.
   As regras usam #appView / #loginView para prevalecer sobre as camadas
   antigas de styles.css sem recorrer a !important. Ao limpar styles.css,
   é aqui que devem ficar as definições finais.
   ========================================================================== */

/* 1. Tokens ---------------------------------------------------------------- */
:root{
  --font-ui:"Segoe UI Variable Text","Segoe UI",-apple-system,BlinkMacSystemFont,Aptos,Inter,Roboto,"Helvetica Neue",Arial,sans-serif;

  /* Escala tipográfica (7 tamanhos) */
  --fs-xs:11px;   /* rótulos de tabela, notas */
  --fs-sm:12px;   /* legendas, texto secundário */
  --fs-md:13px;   /* texto de tabela e formulários */
  --fs-base:14px; /* texto corrido */
  --fs-lg:16px;   /* títulos de cartão */
  --fs-xl:24px;   /* título de página */
  --fs-kpi:24px;  /* valor de indicador */

  /* Cores base (claro) */
  --bg:#f4f6f8;
  --panel:#ffffff;
  --panel2:#f3f6f8;
  --text:#14212a;
  --text-2:#3b4a55;
  --muted:#6b7a86;
  --line:#e2e8ec;
  --line-strong:#cfd8de;

  /* Marca Winterplateau */
  --brand:#0a5264;        /* petróleo: navegação, botões primários */
  --brand2:#0089a8;       /* azul: ligações, foco, destaques */
  --brand-soft:#e6f3f7;   /* fundos suaves de destaque */
  --accent:#12a2dc;       /* azul do logótipo */

  /* Estados */
  --success:#1f7a55; --success-soft:#e5f4ec;
  --danger:#b4343f;  --danger-soft:#fbeaec;
  --warning:#9a650f; --warning-soft:#fbf1dc;
  --info:#0b6f8c;    --info-soft:#e4f2f7;

  /* Forma */
  --radius-sm:8px;
  --radius:12px;
  --radius-card:14px;
  --shadow-sm:0 1px 2px rgba(16,39,49,.05);
  --shadow:0 1px 2px rgba(16,39,49,.04),0 4px 14px rgba(16,39,49,.05);
  --shadow-lg:0 18px 48px rgba(10,34,46,.18);
  --focus:0 0 0 3px color-mix(in srgb,var(--brand2) 28%,transparent);

  --control-height:38px;
}
:root[data-theme="dark"]{
  --bg:#0d161b;
  --panel:#131f26;
  --panel2:#18262e;
  --text:#e9f1f4;
  --text-2:#c3d0d6;
  --muted:#93a4ad;
  --line:#243640;
  --line-strong:#2f4450;
  --brand:#2aa6c6;
  --brand2:#5cc6e3;
  --brand-soft:#16323c;
  --success:#4cc38e; --success-soft:#133328;
  --danger:#f07b84;  --danger-soft:#3a1c20;
  --warning:#e5b25a; --warning-soft:#3a2c12;
  --info:#6fcbe6;    --info-soft:#15313b;
  --shadow-sm:none;
  --shadow:0 1px 2px rgba(0,0,0,.25);
}

html{ -webkit-text-size-adjust:100% }
body{ font-family:var(--font-ui);font-size:var(--fs-base);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased }
:focus-visible{ outline:none;box-shadow:var(--focus) }

/* 2. Estrutura ------------------------------------------------------------- */
#appView .workspace{ background:var(--bg) }
#appView .page-head{ padding:24px 32px 16px;gap:12px }
#appView .page-head h1{ font-size:var(--fs-xl);font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:4px 0 4px }
#appView .page-head p{ font-size:var(--fs-md);color:var(--muted);margin:0 }
#appView .breadcrumbs{ font-size:var(--fs-sm);color:var(--muted) }
#appView .content{ padding:0 32px 40px }

/* Barra lateral */
#appView .nav-item{ font-size:var(--fs-md);font-weight:500;border-radius:10px }
#appView .nav-item.active{ font-weight:600 }

/* 3. Cartões --------------------------------------------------------------- */
#appView .card{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:var(--radius-card);
  box-shadow:var(--shadow);
  padding:20px;
}
#appView .card-head h3,#appView .card h3{ font-size:var(--fs-lg);font-weight:650;letter-spacing:-.01em }
#appView .card-head span,#appView .card-head small{ font-size:var(--fs-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0 }
#appView .empty{ color:var(--muted);font-size:var(--fs-md) }

/* Indicadores (KPI): neutros, a cor fica só onde há significado */
#appView .kpi-grid{ grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:14px }
#appView .kpi > div:first-child{ min-width:0;flex:1 }
/* Cinco indicadores cabem numa linha em ecrãs largos (sem cartão órfão) */
@media (min-width:1180px){
  #appView .kpi-grid:has(> .kpi:nth-child(5):last-child){ grid-template-columns:repeat(5,minmax(0,1fr)) }
  #appView .kpi-grid:has(> .kpi:nth-child(5):last-child) .kpi .value{ font-size:21px }
  #appView .kpi-grid:has(> .kpi:nth-child(5):last-child) .kpi .icon-tile{ display:none }
}
#appView .kpi,
#appView .kpi:has(#cockpitSales),#appView .kpi:has(#cockpitPurchases),#appView .kpi:has(#cockpitMargin),#appView .kpi:has(#cockpitLabor),#appView .kpi:has(#cockpitIndirect){
  background:var(--panel);
  border:1px solid var(--line);
  min-height:0;
  padding:18px 18px 16px;
  align-items:flex-start;
}
#appView .kpi::after{ display:none }
#appView .kpi .label{
  font-size:var(--fs-sm);font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted);line-height:1.35;
}
#appView .kpi .value{
  font-size:var(--fs-kpi);font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:8px 0 6px;
  font-variant-numeric:tabular-nums;color:var(--text);
}
#appView .kpi small.label,#appView .kpi .value + .label,#appView .kpi .value ~ small{
  font-size:var(--fs-sm);font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted);
}
#appView .kpi:has(#cockpitMargin) .value{ color:var(--success) }
#appView .kpi .icon-tile,
#appView .kpi:has(#cockpitSales) .icon-tile,#appView .kpi:has(#cockpitPurchases) .icon-tile,#appView .kpi:has(#cockpitMargin) .icon-tile,#appView .kpi:has(#cockpitLabor) .icon-tile{
  width:34px;height:34px;min-width:34px;border-radius:10px;background:var(--brand-soft);color:var(--brand2);
}
#appView .kpi .icon-tile svg{ width:17px;height:17px }

/* 4. Tabelas --------------------------------------------------------------- */
#appView .table-wrap{ border:1px solid var(--line);border-radius:var(--radius);overflow:auto }
#appView .data-table{ font-variant-numeric:tabular-nums }
#appView .data-table th{
  font-size:var(--fs-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);
  background:var(--panel2);padding:10px 14px;white-space:nowrap;
}
#appView .data-table td{ font-size:var(--fs-md);padding:11px 14px;color:var(--text-2);vertical-align:middle }
#appView .data-table td strong,#appView .data-table td b{ color:var(--text);font-weight:600 }
#appView .data-table tbody tr:hover td{ background:color-mix(in srgb,var(--brand-soft) 45%,transparent) }
#appView .data-table .num{ text-align:right;white-space:nowrap }
#appView .table-footer{ display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 2px 0;font-size:var(--fs-sm);color:var(--muted) }

/* Estados (badges) */
#appView .status{ font-size:var(--fs-xs);font-weight:600;letter-spacing:0;text-transform:none;border-radius:999px;padding:3px 9px }

/* 5. Botões e controlos ---------------------------------------------------- */
#appView .btn{ font-size:var(--fs-md);font-weight:600;border-radius:10px;min-height:var(--control-height) }
#appView .btn.primary{ background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:none }
#appView .btn.primary:hover{ background:color-mix(in srgb,var(--brand) 88%,#000) }
:root[data-theme="dark"] #appView .btn.primary{ color:#06222b }
#appView input,#appView select,#appView textarea{ font-size:var(--fs-md) }

/* 6. Listas de ranking e percentagens ------------------------------------- */
#appView .cockpit-rank b,#appView .sales-ranking-row b{ font-weight:600 }
#appView .cockpit-rank strong,#appView .sales-ranking-row strong{ font-variant-numeric:tabular-nums;font-weight:600 }

/* 7. Metas e Orçamentos ---------------------------------------------------- */
#appView .annual-budget-hero{ padding:0 0 16px;gap:12px }
#appView .annual-budget-hero .label{ font-size:var(--fs-sm);font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted) }
#appView .annual-budget-hero h2{ font-size:18px;font-weight:650;letter-spacing:-.01em;margin:2px 0 4px }
#appView .annual-budget-hero p{ font-size:var(--fs-md) }
#appView .annual-budget-card .modal-actions{
  position:static;margin:20px 0 0;padding:16px 0 0;background:none;backdrop-filter:none;
}

/* 8. Terminal de Produção: largura igual ao resto da página ---------------- */
#appView .terminal-choice-grid,#appView .terminal-actions{ max-width:none }

/* 9. Barra de topo --------------------------------------------------------- */
#appView .topbar{ height:60px;padding:0 20px;gap:12px }
#appView .user-chip .avatar{ font-weight:700;font-size:12px;letter-spacing:.02em }

/* 10. Telemóvel e tablet --------------------------------------------------- */
@media (max-width:900px){
  #appView .page-head{ padding:18px 16px 12px }
  #appView .content{ padding:0 16px 32px }
  #appView .card{ padding:16px }
}
@media (max-width:760px){
  #appView .topbar{ height:56px;padding:0 10px;gap:8px }
  #appView .topbar-start{ flex:1;min-width:0;gap:8px }
  #appView .topbar .search-wrap{ display:none }
  #appView .module-control{ flex:1;min-width:0 }
  #appView .module-selector{ width:100%;min-width:0;max-width:none;height:38px;padding:0 10px }
  #appView .module-selector #activeModuleName{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0 }
  #appView .top-actions{ gap:4px;flex:none }
  #appView .top-actions .icon-btn{ width:36px;height:36px;min-width:36px }
  #appView #costVisibilityBtn{ display:none }
  #appView .user-chip{ padding:0;background:none;border:0;gap:0 }
  #appView .user-chip > div:not(.avatar){ display:none }
  #appView .user-chip .avatar{ width:32px;height:32px }
  #appView #menuBtn{ width:38px;height:38px;min-width:38px }

  #appView .page-head h1{ font-size:21px }
  #appView .kpi-grid{ grid-template-columns:repeat(2,minmax(0,1fr));gap:10px }
  #appView .kpi{ padding:14px }
  #appView .kpi .value{ font-size:20px;margin:6px 0 4px }
  #appView .kpi .icon-tile{ display:none }
}
@media (max-width:380px){
  #appView .kpi-grid{ grid-template-columns:1fr }
}

/* 11. Login ---------------------------------------------------------------- */
#loginView.login-view{
  min-height:100vh;padding:24px;display:grid;place-items:center;
  background:radial-gradient(1200px 600px at 85% -10%,rgba(18,162,220,.16),transparent 60%),var(--bg);
}
#loginView .login-shell{
  width:min(960px,100%);min-height:560px;display:grid;grid-template-columns:1fr 1fr;
  background:var(--panel);border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow-lg);
}
#loginView .login-visual{
  display:flex;flex-direction:column;justify-content:space-between;gap:32px;padding:44px;
  background:linear-gradient(160deg,#062532 0%,#0a4a5e 60%,#0b6a86 100%);color:#e8f5fa;position:relative;overflow:hidden;
}
#loginView .login-visual::after{
  content:'';position:absolute;right:-120px;bottom:-120px;width:360px;height:360px;border-radius:50%;
  border:1px solid rgba(255,255,255,.08);box-shadow:0 0 0 60px rgba(255,255,255,.025);
}
#loginView .login-hero-mark{ position:static;width:56px;height:auto;opacity:1;filter:none;transform:none }
#loginView .login-visual-copy h2{ margin:0 0 10px;font-size:28px;font-weight:700;letter-spacing:-.02em;color:#fff }
#loginView .login-visual-copy p{ margin:0;max-width:340px;font-size:var(--fs-base);line-height:1.55;color:rgba(232,245,250,.78) }
#loginView .login-company{ width:132px;height:auto;opacity:.9 }
#loginView .login-card{
  padding:52px 48px;display:flex;flex-direction:column;justify-content:center;gap:14px;background:var(--panel);color:var(--text);
}
#loginView .login-winter-mark{ display:none }
#loginView .login-card-title{ margin:0 0 6px }
#loginView .login-card-title h1{ margin:0 0 6px;font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--text) }
#loginView .login-card-title p{ margin:0;font-size:var(--fs-md);color:var(--muted) }
#loginView .login-card label{ display:grid;gap:6px;font-size:var(--fs-md);font-weight:600;color:var(--text-2) }
#loginView .login-card input{
  height:44px;padding:0 14px;font-size:var(--fs-base);color:var(--text);
  background:var(--panel);border:1px solid var(--line-strong);border-radius:10px;box-shadow:none;
}
#loginView .login-card input::placeholder{ color:#98a6b0 }
#loginView .login-card input:focus{ border-color:var(--brand2);box-shadow:var(--focus);outline:none }
#loginView .login-card .btn.primary{
  height:44px;margin-top:6px;font-size:var(--fs-base);font-weight:600;border-radius:10px;
  background:var(--brand);border:1px solid var(--brand);color:#fff;box-shadow:none;
}
#loginView .login-card .btn.primary:hover{ background:color-mix(in srgb,var(--brand) 88%,#000) }
#loginView .login-access-note{ display:none }
#loginView .login-card small{ font-size:var(--fs-sm);color:var(--muted);text-align:center;margin-top:4px }
#loginView .form-error{ color:var(--danger);font-size:var(--fs-sm) }
#loginView .form-error:empty{ display:none }
:root[data-theme="dark"] #loginView .login-card .btn.primary{ color:#06222b }

@media (max-width:820px){
  #loginView.login-view{ padding:0;place-items:stretch }
  #loginView .login-shell{ grid-template-columns:1fr;grid-template-rows:auto 1fr;min-height:100vh;border-radius:0;border:0;box-shadow:none }
  #loginView .login-visual{ padding:28px 24px;gap:18px;justify-content:flex-start }
  #loginView .login-visual-copy h2{ font-size:22px }
  #loginView .login-visual-copy p,#loginView .login-company{ display:none }
  #loginView .login-hero-mark{ width:40px }
  #loginView .login-card{ padding:28px 24px 40px;justify-content:flex-start }
}

/* 12. Rentabilidade: referência alinhada à esquerda, valores à direita ------ */
#appView .profitability-reference{ text-align:left;justify-items:start;align-items:flex-start }
#appView .profitability-list-head span:first-child{ text-align:left }
#appView .profitability-value,#appView .profitability-margin,#appView .profitability-rate{ font-variant-numeric:tabular-nums }
