/* Global Concept Manager — tema visual unificado (carregado por último).
   Só altera a aparência: nenhum comportamento dos módulos depende deste ficheiro. */
:root{
  --navy:#0e2638;--navy-2:#143349;--navy-3:#1d4560;
  --blue:#1670b0;--blue-600:#125d93;--blue-50:#eaf3fa;--sky:#eef6fb;
  --ink:#152a3a;--ink-2:#3c5262;--muted:#6b7f8c;--line:#dfe7ec;--line-2:#eef3f6;
  --bg:#f4f7f9;--surface:#fff;
  --green:#12806b;--amber:#b86e00;--red:#c03b3b;
  --radius:12px;--radius-sm:8px;
  --shadow-sm:0 1px 2px rgba(14,38,56,.06);
  --shadow:0 1px 2px rgba(14,38,56,.05),0 4px 16px rgba(14,38,56,.06);
  --shadow-lg:0 18px 50px rgba(14,38,56,.22);
  --focus:0 0 0 3px rgba(22,112,176,.2);
}
html{scroll-behavior:smooth}
body{background:var(--bg)!important;color:var(--ink);-webkit-font-smoothing:antialiased;font-size:14px}
::selection{background:#cfe5f5}

/* ---------- Barra lateral ---------- */
#app>aside{background:linear-gradient(180deg,var(--navy) 0%,#0b2030 100%)!important;width:248px!important;box-shadow:1px 0 0 rgba(255,255,255,.04)}
.brand{padding:18px 18px 14px!important;justify-content:center}
.brand-logo{width:150px!important;padding:8px 10px!important;border-radius:10px!important;box-shadow:0 6px 18px rgba(0,0,0,.25)}
#app>aside nav{flex:1 1 auto;overflow-y:auto;padding:4px 10px 12px;scrollbar-width:thin;scrollbar-color:#2c5168 transparent}
#app>aside nav::-webkit-scrollbar{width:6px}#app>aside nav::-webkit-scrollbar-thumb{background:#2c5168;border-radius:9px}
.gcm-nav-group{display:block;margin:14px 10px 5px;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#6f93a7}
.gcm-nav-group:first-child{margin-top:4px}
#app>aside nav button{display:flex!important;align-items:center;gap:11px;width:100%;margin:1px 0;padding:9px 12px!important;border-radius:8px!important;font:500 13.5px/1.25 'DM Sans','Segoe UI',system-ui,sans-serif!important;color:#b9cdd8!important;background:transparent!important;position:relative;transition:background .15s,color .15s}
#app>aside nav button:hover{background:rgba(255,255,255,.06)!important;color:#fff!important;transform:none!important;filter:none!important}
#app>aside nav button.active{background:rgba(255,255,255,.1)!important;color:#fff!important;font-weight:600!important}
#app>aside nav button.active:before{content:'';position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:#4fb3ea}
#app>aside nav button .gcm-ico{width:18px;height:18px;flex:none;stroke:currentColor;opacity:.9}
#app>aside nav button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-bottom{margin:0 14px 14px!important;padding:12px!important;border:1px solid rgba(255,255,255,.08)!important;border-radius:10px;background:rgba(255,255,255,.03);font-size:12px!important;color:#9fb9c6!important}
.sidebar-bottom #logout{color:#d6e4eb!important;font-weight:600}
.sidebar-bottom #logout:hover{color:#fff!important}

/* ---------- Área de trabalho ---------- */
.workspace{margin-left:248px!important;padding:0 32px 48px!important;max-width:none}
.workspace>header{position:sticky;top:0;z-index:40;margin:0 -32px 6px;padding:16px 32px 14px!important;background:rgba(244,247,249,.88);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)!important;align-items:center!important}
#crumb{margin:0 0 2px;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
#title{margin:0;font-size:24px;font-weight:700;color:var(--ink)}

/* ---------- Componentes ---------- */
button{border-radius:var(--radius-sm);transition:background .15s,box-shadow .15s,transform .05s,filter .15s}
button:active{transform:translateY(1px)}
button:focus-visible,a:focus-visible{outline:none;box-shadow:var(--focus)}
.workspace button:not(.edit):not(.gcm-link):not(.gcm-result):not(.gcm-row):not(.gcm-kpi):not(.gcm-dept):not(.card):not([class*="tab"]):hover{filter:brightness(1.06)}
button.edit,.edit{background:#fff!important;color:var(--blue-600)!important;border:1px solid #cfe0eb!important;box-shadow:var(--shadow-sm)}
button.edit:hover,.edit:hover{background:var(--blue-50)!important;border-color:#b3d0e3!important;filter:none!important}
.danger,button.danger,.delete,button.delete{background:#fff!important;color:var(--red)!important;border:1px solid #f0c9c9!important}
input,select,textarea{border:1px solid #cfdbe2!important;border-radius:var(--radius-sm)!important;background:#fff;color:var(--ink);transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue)!important;box-shadow:var(--focus)}
input::placeholder,textarea::placeholder{color:#93a4ae}
label{color:var(--ink-2)}
.panel,.card,.modal-card{border-radius:var(--radius)!important;border:1px solid var(--line)!important;box-shadow:var(--shadow)}
.panel{background:var(--surface)}
.panel-title h3,.panel h3{font-size:16px;font-weight:700;color:var(--ink)}
.card small{color:var(--muted);font-weight:600}
.card strong{color:var(--ink)}
.modal{background:rgba(8,24,36,.55)!important;backdrop-filter:blur(3px)}
.modal-card{box-shadow:var(--shadow-lg)!important}
.badge,.status,[class*="status-"]{border-radius:999px}
.empty,.muted{color:var(--muted)}
.empty{padding:18px;text-align:center}

/* Tabelas */
table{border-collapse:separate!important;border-spacing:0;width:100%}
thead th{position:sticky;top:0;z-index:1;background:#f8fafb!important;color:var(--muted)!important;font-size:11px!important;font-weight:700!important;letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--line)!important;padding:10px 12px!important;white-space:nowrap}
tbody td{border-bottom:1px solid var(--line-2)!important;padding:11px 12px!important;vertical-align:middle}
tbody tr{transition:background .12s}
tbody tr:hover td{background:#f7fbfd}
tbody tr:last-child td{border-bottom:0!important}

/* Separadores (tabs) dos departamentos */
.laser-tabs button,[class*="-tabs"] button,.tabs button,.cons-tabs button{border-radius:999px!important;padding:8px 14px!important;font-weight:600;font-size:13px}
.laser-tabs button.active,[class*="-tabs"] button.active,.tabs button.active,.cons-tabs button.active{box-shadow:0 4px 12px rgba(22,112,176,.25)}

/* Faixa de boas-vindas */
.dashboard-welcome{border-radius:14px!important;background:radial-gradient(120% 140% at 0% 0%,#1f5d7c 0%,#143a52 45%,#0f2b3e 100%)!important;box-shadow:var(--shadow);padding:22px 24px!important}
.dashboard-welcome h3{font-size:22px!important;margin:4px 0 4px!important}
.dashboard-welcome button{background:#fff!important;color:#124d6c!important;box-shadow:0 6px 16px rgba(0,0,0,.18)}

/* Toast */
#toast{border-radius:10px!important;box-shadow:var(--shadow-lg)!important;font-weight:600}

/* ---------- Ecrã de entrada ---------- */
.login{background:radial-gradient(1200px 600px at 15% 10%,#235f7e 0%,transparent 60%),radial-gradient(900px 500px at 90% 90%,#163b52 0%,transparent 55%),#0b2131!important}
.login-card{border-radius:20px!important;padding:40px 38px!important;box-shadow:0 30px 80px rgba(0,0,0,.45)!important}
.login-logo{display:block;width:170px;margin:0 auto 18px}
.login-card h1{text-align:center;margin:0 0 6px;font-size:26px}
.login-card>p{text-align:center;color:var(--muted);margin:0 0 22px}
.login-card form{display:grid;gap:14px}
.login-card label{display:grid;gap:6px;font-size:12.5px;font-weight:600}
.login-card input{padding:12px 13px!important;font-size:15px}
.login-card button{padding:13px!important;font-size:15px!important;border-radius:10px!important;background:linear-gradient(180deg,#1b7cc2,#14649d)!important;color:#fff!important;box-shadow:0 8px 20px rgba(22,112,176,.35)}
#access-error{min-height:18px;text-align:center;color:var(--red)}

/* ---------- Telemóvel ---------- */
@media(max-width:800px){
  #app>aside{width:100%!important;background:var(--navy)!important}
  .brand{padding:10px 12px!important}
  .brand-logo{width:118px!important;padding:5px 8px!important}
  #app>aside nav{display:flex!important;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:4px;padding:6px 10px 10px!important;scroll-snap-type:x proximity}
  .gcm-nav-group{display:none}
  #app>aside nav button{width:auto!important;flex:0 0 auto!important;padding:9px 12px!important;scroll-snap-align:start}
  #app>aside nav button.active:before{left:10px;right:10px;top:auto;bottom:2px;width:auto;height:3px;border-radius:3px}
  .workspace{margin-left:0!important;padding:0 14px 40px!important}
  .workspace>header{position:static;margin:0 -14px 6px;padding:14px!important;background:transparent;backdrop-filter:none}
  #title{font-size:21px}
}
@media print{#app>aside,.workspace>header,.gcm-live,#toast{display:none!important}.workspace{margin:0!important;padding:0!important}.panel,.card{box-shadow:none!important}}
#app>aside{display:flex!important;flex-direction:column}
#app>aside nav{min-height:0}
.brand{background:transparent!important}
@media(max-width:800px){.workspace>header>div:first-child{align-self:stretch;text-align:left}.gcm-search kbd{display:none}#app>aside nav{min-height:auto}}

html.gcm-embedded .cons-head{display:none!important}
html.gcm-embedded .cons-tabs{padding-top:4px!important}
td .badge,td [class*="status"],td [class*="pill"],td small[class]{white-space:nowrap}
#app>aside nav button[hidden]{display:none!important}

/* =====================================================================
   Padrão único dos ecrãs — todas as áreas com o mesmo aspeto e a mesma lógica
   ===================================================================== */
/* Barra de topo de cada área: descrição à esquerda, pesquisa e ações à direita */
.gcm-pagebar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 18px;margin:2px 0 16px;padding:12px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}
.gcm-pagebar-text{flex:1 1 280px;margin:0;color:var(--ink-2);font-size:13.5px;line-height:1.45}
.gcm-pagebar-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}
.gcm-pagebar-actions>*{margin:0!important}
.gcm-pagebar-search{order:-1;width:260px!important;max-width:100%;min-height:36px;padding:7px 12px!important}
.gcm-pagebar-main{order:3}
.gcm-pagebar .gcm-pagebar-stats{order:-2;display:flex!important;gap:6px;background:none!important;padding:0!important;margin:0!important}
.gcm-pagebar .laser-command-numbers>*{display:inline-flex!important;align-items:baseline;gap:5px;padding:5px 11px!important;border-radius:999px;background:var(--blue-50)!important;color:var(--ink-2)!important;font-size:12.5px!important;font-weight:600;white-space:nowrap;box-shadow:none!important;border:0!important;min-width:0!important;width:auto!important}
.gcm-pagebar .laser-command-numbers>* *{font-size:inherit!important;color:inherit!important;margin:0!important;display:inline!important}
.gcm-pagebar .laser-command-numbers>* b,.gcm-pagebar .laser-command-numbers>* strong{color:var(--ink)!important;font-weight:800}
.gcm-merged,.workspace>.page>.toolbar:empty,.workspace>.page>.toolbar.gcm-merged+p[data-search-status]:empty{display:none!important}
.gcm-pagebar-empty{display:none}
.gcm-pagebar>.gcm-back{flex:none;order:-1}
.gcm-pagebar-title{flex:none;font-size:15px;color:var(--ink);padding-right:14px;border-right:1px solid var(--line)}
.gcm-pagebar-title+.gcm-pagebar-text,.gcm-pagebar-title~.gcm-pagebar-text{flex-basis:200px}

/* Botões: o mesmo tamanho e hierarquia em todo o lado
   principal = azul cheio · secundário = contorno azul · perigo = contorno vermelho */
.workspace button,.gcm-modal button,.modal-card button{font-family:inherit;text-transform:none!important;letter-spacing:0!important}
.gcm-pagebar button,.panel button:not(.catalog-filter):not(.gcm-line):not(.gcm-stat):not(.eco-process):not([class*="tab"]),.toolbar button,.modal-card button,.panel-title button,td button{min-height:34px;padding:7px 14px!important;font-size:13px!important;font-weight:600!important;line-height:1.2;border-radius:var(--radius-sm)!important}
.gcm-pagebar-main:not(.edit):not(.danger),.gcm-primary{background:var(--blue)!important;color:#fff!important;border:1px solid var(--blue)!important;box-shadow:0 2px 6px rgba(22,112,176,.22)!important}
.gcm-pagebar-main:not(.edit):not(.danger):hover,.gcm-primary:hover{background:var(--blue-600)!important}
.gcm-pagebar .laser-primary-action{width:auto!important;display:inline-flex!important;gap:8px;align-items:center;justify-content:center}
.gcm-pagebar .laser-primary-action span{font-size:inherit!important}
button.laser-delete,.laser-delete{background:#fff!important;color:var(--red)!important;border:1px solid #f0c9c9!important;box-shadow:none!important}
button.danger:hover,button.laser-delete:hover,button.delete:hover{background:#fdf1f1!important;filter:none!important}
/* Ações nas tabelas: sempre numa só linha */
td:last-child:has(> button),td.laser-actions,td.planning-actions{white-space:nowrap;flex-wrap:nowrap!important}
td.laser-actions,td.planning-actions{display:table-cell!important;min-width:0!important}
td:last-child>button,td.laser-actions>button,td.planning-actions>button{display:inline-block!important;width:auto!important;margin:2px 0 2px 6px!important;vertical-align:middle}
td:last-child>button:first-child,td.laser-actions>button:first-child,td.planning-actions>button:first-child{margin-left:0!important}
td>div:has(> button){display:flex!important;flex-wrap:nowrap!important;gap:6px;align-items:center}
.gcm-pagebar .alu-summary{display:block!important;color:var(--muted)!important;font-size:13px!important;white-space:nowrap}
.gcm-pagebar .alu-summary b{color:var(--ink)!important;font-weight:700}
td.gcm-nowrap{white-space:nowrap}
.workspace td,#cons-app td{word-break:normal!important;overflow-wrap:break-word}
#cons-app .gcm-pagebar{margin:12px 0 14px}

/* Separadores: um único estilo (segmentado) em todas as áreas */
.analyzer-tabs,.alu-tabs,.laser-tabs,.cons-tabs,.tabs{display:inline-flex!important;flex-wrap:wrap;gap:4px!important;padding:4px!important;margin:0 0 16px!important;background:var(--surface)!important;border:1px solid var(--line)!important;border-radius:10px!important;box-shadow:var(--shadow-sm);width:auto!important;max-width:100%}
.analyzer-tabs button,.alu-tabs button,.laser-tabs button,.cons-tabs button,.tabs button{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:7px 14px!important;border:0!important;border-radius:7px!important;background:transparent!important;color:var(--ink-2)!important;font-size:13px!important;font-weight:600!important;box-shadow:none!important;white-space:nowrap}
.analyzer-tabs button:hover,.alu-tabs button:hover,.laser-tabs button:hover,.cons-tabs button:hover,.tabs button:hover{background:var(--line-2)!important;filter:none!important}
.analyzer-tabs button.active,.alu-tabs button.active,.laser-tabs button.active,.cons-tabs button.active,.tabs button.active{background:var(--navy)!important;color:#fff!important;box-shadow:none!important}
.analyzer-tabs button b,.alu-tabs button b,.cons-tabs button b{min-width:20px;padding:0 6px;border-radius:999px;background:var(--line-2);color:var(--muted);font-size:11.5px;line-height:18px;text-align:center}
.analyzer-tabs button.active b,.alu-tabs button.active b,.cons-tabs button.active b{background:#ffffff26;color:#fff}

/* Indicadores (números no topo de cada área): todos iguais */
.cards.alu-kpis,.cards{gap:12px!important}
.cards .card,.alu-kpis .card{padding:14px 16px!important;background:var(--surface)!important;min-height:0!important}
.cards .card small,.alu-kpis .card small,.cards .card span,.alu-kpis .card span{font-size:12.5px!important;font-weight:600;color:var(--muted)!important}
.cards .card strong,.alu-kpis .card strong{display:block;margin-top:6px;font-size:26px!important;line-height:1.1;font-weight:800;color:var(--ink)!important}
.cards .card.warning,.alu-kpis .card.warning{background:#fff9ef!important;border-color:#f1dfba!important}
.cards .card.warning strong,.alu-kpis .card.warning strong{color:var(--amber)!important}

/* Mensagens de "sem dados": sempre no mesmo formato */
.empty,.panel.empty,.gcm-empty-row,.gcm-none,.inbox-empty{padding:26px 16px!important;text-align:center;color:var(--muted)!important;font-size:13.5px!important}
.panel.empty{background:var(--surface)}

/* Formulários: etiquetas e campos com o mesmo tamanho */
.workspace label{font-size:12.5px;font-weight:600;color:var(--ink-2)}
.workspace .page input:not([type=checkbox]):not([type=radio]):not([type=file]),.workspace .page select,#cons-app input:not([type=checkbox]):not([type=radio]):not([type=file]),#cons-app select,.modal-card input:not([type=checkbox]):not([type=radio]):not([type=file]),.modal-card select{min-height:38px;padding:8px 11px!important;font-size:14px}
.workspace .page textarea,#cons-app textarea,.modal-card textarea{padding:9px 11px!important;font-size:14px}

/* Títulos dos painéis */
.panel-title{gap:12px}
.panel-title h3,.panel>h3{margin:0 0 2px!important}
.panel-title p,.panel-title .note,.panel-title .muted{font-size:12.5px!important}
@media(max-width:800px){.gcm-pagebar{padding:12px}.gcm-pagebar-actions{justify-content:flex-start;width:100%}.gcm-pagebar-search{width:100%!important}}
