/* ============================================================
   bConcepts · Backoffice CSS
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&family=Inter:wght@400;500;600&display=swap');

:root{
  --a-primary:#2B4FBF; --a-primary-h:#3A5FD6; --a-dark:#1E2A5E; --a-pale:#EEF1F9;
  --a-bg:#F4F6FB; --a-card:#fff; --a-border:#E1E6F2; --a-muted:#6B7A9E; --a-text:#1E2A5E;
  --a-green:#16A34A; --a-amber:#D97706; --a-red:#DC2626;
}
*{box-sizing:border-box;margin:0;padding:0}
body.admin{font-family:'Inter',sans-serif;background:var(--a-bg);color:var(--a-text);font-size:14px;line-height:1.55}
a{color:var(--a-primary);text-decoration:none}
h1,h2,h3{font-family:'Plus Jakarta Sans',sans-serif;color:var(--a-dark)}

/* layout */
.admin-shell{display:flex;min-height:100vh}
.admin-side{width:240px;background:var(--a-dark);color:#cdd8f0;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:10}
.admin-side-logo{display:flex;align-items:center;justify-content:center;padding:16px 20px;background:#fff;border-bottom:1px solid #2a3a70}
.admin-side-logo img{height:34px}
.admin-nav{padding:12px 10px;display:flex;flex-direction:column;gap:2px;flex:1;overflow:auto}
.admin-nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:9px;color:#aebbdc;font-weight:500;font-size:14px}
.admin-nav a i{font-size:18px}
.admin-nav a:hover{background:#26356b;color:#fff}
.admin-nav a.active{background:var(--a-primary);color:#fff}
/* Grupos colapsáveis */
.admin-nav-grp-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 12px;border:none;background:transparent;color:#c3cef0;font-weight:600;font-size:14px;cursor:pointer;border-radius:9px;font-family:inherit;text-align:left}
.admin-nav-grp-btn:hover{background:#26356b;color:#fff}
.admin-nav-grp-btn>span{display:flex;align-items:center;gap:11px}
.admin-nav-grp-btn i{font-size:18px}
.admin-nav-caret{font-size:15px!important;opacity:.65;transition:transform .18s}
.admin-nav-group.open .admin-nav-caret{transform:rotate(180deg)}
.admin-nav-grp-items{display:none;flex-direction:column;gap:2px;margin-top:2px}
.admin-nav-group.open .admin-nav-grp-items{display:flex}
.admin-nav-grp-items a{padding-left:38px;font-size:13.5px}
.admin-side-foot{padding:14px 18px;border-top:1px solid #2a3a70;font-size:12px;color:#8395bf}
.admin-main{margin-left:240px;flex:1;display:flex;flex-direction:column;min-width:0}
.admin-topbar{background:#fff;border-bottom:1px solid var(--a-border);padding:14px 28px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:5}
.admin-topbar h1{font-size:20px}
.admin-user{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--a-muted)}
.admin-user .av{width:34px;height:34px;border-radius:50%;background:var(--a-pale);color:var(--a-primary);display:flex;align-items:center;justify-content:center;font-weight:700;font-family:'Plus Jakarta Sans'}
.admin-content{padding:28px;width:100%}

/* cards / KPIs */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
.kpi{background:var(--a-card);border:1px solid var(--a-border);border-radius:14px;padding:18px 20px}
.kpi .lbl{font-size:12px;color:var(--a-muted);text-transform:uppercase;letter-spacing:.06em;display:flex;align-items:center;gap:8px}
.kpi .lbl i{color:var(--a-primary);font-size:16px}
.kpi .val{font-family:'Plus Jakarta Sans';font-size:30px;font-weight:700;margin-top:8px;color:var(--a-dark)}
.card{background:var(--a-card);border:1px solid var(--a-border);border-radius:14px;padding:22px;margin-bottom:20px;overflow-x:auto}
.card h2{font-size:16px;margin-bottom:14px}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}

/* table */
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{text-align:left;padding:11px 12px;color:var(--a-muted);font-weight:600;border-bottom:2px solid var(--a-border);font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.tbl td{padding:11px 12px;border-bottom:1px solid var(--a-border)}
.tbl tr:hover td{background:#fafbfe}
.muted{color:var(--a-muted)}

/* badges/status */
.tag{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px}
.tag-new,.tag-novo,.tag-nova,.tag-pendente{background:#FEF3C7;color:#92400E}
.tag-ok,.tag-fechado,.tag-confirmada,.tag-aceite,.tag-realizada{background:#DCFCE7;color:#166534}
.tag-info,.tag-contactado,.tag-reuniao,.tag-em_analise,.tag-entrevista{background:var(--a-pale);color:var(--a-primary)}
.tag-off,.tag-perdido,.tag-cancelada,.tag-rejeitada{background:#FEE2E2;color:#991B1B}

/* forms / buttons */
.btn{display:inline-flex;align-items:center;gap:7px;font-family:'Plus Jakarta Sans';font-weight:600;font-size:13.5px;padding:9px 16px;border-radius:9px;border:none;cursor:pointer;transition:.15s}
.btn-primary{background:var(--a-primary);color:#fff}.btn-primary:hover{background:var(--a-primary-h)}
.btn-ghost{background:#fff;border:1px solid var(--a-border);color:var(--a-text)}.btn-ghost:hover{border-color:var(--a-primary);color:var(--a-primary)}
.btn-sm{padding:6px 12px;font-size:12.5px}
.btn-danger{background:var(--a-red);color:#fff}
.fg{margin-bottom:15px}
.fg label{display:block;font-size:13px;font-weight:600;margin-bottom:5px}
.fc{width:100%;padding:9px 12px;border:1px solid var(--a-border);border-radius:9px;font-size:14px;font-family:'Inter';background:#fff;color:var(--a-text)}
.fc:focus{outline:none;border-color:var(--a-primary)}
textarea.fc{min-height:120px;resize:vertical}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* login */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(900px 400px at 70% -10%,rgba(43,79,191,.25),transparent),var(--a-dark);padding:20px}
.login-card{background:#fff;border-radius:18px;padding:36px 34px;width:100%;max-width:380px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.login-card .lg{display:flex;justify-content:center;margin-bottom:18px}
.login-card .lg img{height:40px}
.login-card h1{font-size:20px;text-align:center;margin-bottom:4px}
.login-card p.sub{text-align:center;color:var(--a-muted);font-size:13px;margin-bottom:22px}
.login-err{background:#FEE2E2;color:#991B1B;font-size:13px;padding:10px 12px;border-radius:9px;margin-bottom:16px;display:flex;gap:8px;align-items:center}
.empty{text-align:center;color:var(--a-muted);padding:40px 10px}
.empty i{font-size:40px;color:var(--a-border);display:block;margin-bottom:10px}

@media(max-width:860px){
  .admin-side{transform:translateX(-100%);transition:.2s}.admin-side.open{transform:none}
  .admin-main{margin-left:0}.kpi-grid{grid-template-columns:repeat(2,1fr)}.frow{grid-template-columns:1fr}
  .admin-menu-btn{display:inline-flex!important}
}
.admin-menu-btn{display:none;background:none;border:none;font-size:24px;color:var(--a-dark);cursor:pointer}
/* Título clicável na lista (abre em edição) */
.tbl-title-link{color:var(--a-dark,#22274E);text-decoration:none;display:inline-block}
.tbl-title-link:hover{color:var(--a-primary,#2B4295);text-decoration:underline}
.tbl-title-link strong{font-weight:700;cursor:pointer}

/* Interruptor (settings liga/desliga) */
.swt{position:relative;display:inline-block;width:46px;height:26px;vertical-align:middle}
.swt input{opacity:0;width:0;height:0;position:absolute}
.swt .swt-track{position:absolute;cursor:pointer;inset:0;background:#cbd5e1;border-radius:999px;transition:background .15s}
.swt .swt-track:before{content:"";position:absolute;height:20px;width:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .15s;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.swt input:checked+.swt-track{background:#2B4295}
.swt input:checked+.swt-track:before{transform:translateX(20px)}
.swt input:focus-visible+.swt-track{outline:2px solid #2B4295;outline-offset:2px}

/* Flash messages partilhadas (substitui o .login-err reciclado com cores inline) */
.flash{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:10px;margin-bottom:16px;font-size:14px}
.flash-ok{background:#DCFCE7;color:#166534}
.flash-err{background:#FEE2E2;color:#991B1B}
.flash-warn{background:#FEF3C7;color:#92400E}
.btn-success{background:#16a34a;color:#fff}
.btn-success:hover{background:#15803d}
.tag-staging{background:#e0e7ff;color:#3730a3}
/* Cabeçalho de secção dentro de formulários (arrumação dos forms longos) */
.form-sec{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#6b7280;margin:20px 0 10px;border-top:1px solid #eef0f6;padding-top:14px}
.form-sec.first{margin-top:0;border-top:none;padding-top:0}
/* Duas colunas de cartões em ecrãs largos (config pages compridas na vertical).
   min(460px,100%) garante que nunca transborda; em janelas estreitas colapsa a 1 coluna. */
.cards-2col{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(460px,100%),1fr));gap:0 20px;align-items:start}
/* Blocos de configuração colapsáveis (fechados por defeito; estado no título) */
.fold>summary{cursor:pointer;font-weight:700;font-size:16px;color:#1e2a5e;user-select:none}
.fold>summary .tag{margin-left:8px;vertical-align:middle;font-weight:600}
.fold>summary h2{display:inline;font-size:16px;margin:0}
.fold>.fold-body{margin-top:14px}
