/* ===== Dashboard ORD Delivery — design system ===== */
:root{
  --raiz-green-900:#0A2918; --raiz-green-800:#0F3D24; --raiz-green-700:#14532D;
  --raiz-green-500:#22C55E; --raiz-green-100:#DCFCE7;

  --bg:#E7EBE2; --card:#FFFFFF; --card-hover:#F3F6EF;
  --text-strong:#0F172A; --text:#334155; --text-muted:#64748B; --text-light:#94A3B8;
  --border:#D7DDD0; --border-soft:#E0E5DA;
  --red:#DC2626; --amber:#D97706;
  --header-from:#0F3D24; --header-to:#0A2918;
  --chart-text:#334155; --chart-grid:#E0E5DA; --chart-border:#FFFFFF; --chart-tooltip-bg:#0F3D24;

  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:20px;
  --space-6:24px; --space-8:32px; --space-10:40px; --space-12:48px;

  --font-sans:'Geist', system-ui, sans-serif;
  --font-mono:'Geist Mono','SF Mono',Menlo,monospace;

  --radius-sm:6px; --radius:10px; --radius-lg:14px;

  --shadow-sm:0 1px 2px rgba(15,23,42,.04);
  --shadow:0 1px 3px rgba(15,23,42,.06),0 1px 2px rgba(15,23,42,.04);
  --shadow-lg:0 10px 25px rgba(15,23,42,.08);
}
:root[data-theme="dark"]{
  --raiz-green-500:#2DD46F; --raiz-green-100:#16382410;
  --bg:#070F0A; --card:#0F2117; --card-hover:#16301F;
  --text-strong:#ECF2EE; --text:#C5D2CB; --text-muted:#8A9A90; --text-light:#5E6E64;
  --border:#214031; --border-soft:#18301F;
  --header-from:#0B1C13; --header-to:#061009;
  --chart-text:#C5D2CB; --chart-grid:#214031; --chart-border:#0F2117; --chart-tooltip-bg:#214031;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{transition:background-color .3s;background:var(--bg)}
body{font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}

/* ===== Header ===== */
.header{position:sticky;top:0;z-index:50;background:linear-gradient(135deg,var(--header-from),var(--header-to));color:#fff;border-bottom:1px solid var(--header-to)}
.header-inner{max-width:1440px;margin:0 auto;padding:16px 24px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:32px}
.brand{display:flex;align-items:center;gap:16px;min-width:0}
.brand-ord-logo{width:36px;height:36px;object-fit:contain;border-radius:8px;display:block;transition:opacity .2s}
.brand-ord-logo:hover{opacity:.85}
.brand-divider{width:1px;height:28px;background:rgba(255,255,255,.2)}
.brand-client-wrap{display:flex;align-items:center;gap:12px;min-width:0}
.brand-client-logo{height:34px;max-width:120px;object-fit:contain;background:#fff;border-radius:6px;display:block}
.brand-text{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.brand-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.55);font-weight:500}
.brand-client{font-size:16px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.header-tabs{display:flex;justify-content:center;gap:4px}
.tab{padding:8px 16px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;color:rgba(255,255,255,.65);border:none;background:transparent;transition:background .2s,color .2s}
.tab:hover{color:#fff;background:rgba(255,255,255,.08)}
.tab-active{background:rgba(255,255,255,.14);color:#fff}

.header-period{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.period-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.55);font-weight:500}
.period-select,.period-custom input{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);color:#fff;border-radius:var(--radius-sm);padding:7px 10px;font-family:var(--font-sans);font-size:13px;outline:none;color-scheme:dark}
.period-select option{color:#0F172A;background:#fff}
.period-select:focus,.period-custom input:focus{border-color:var(--raiz-green-500)}
.period-custom{display:flex;align-items:center;gap:8px}
.period-arrow{color:rgba(255,255,255,.55)}
.theme-toggle{width:36px;height:36px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.08);color:#fff;display:flex;align-items:center;justify-content:center;transition:background .2s}
.theme-toggle:hover{background:rgba(255,255,255,.14)}
.theme-toggle .icon-moon{display:none}
:root[data-theme="dark"] .theme-toggle .icon-sun{display:none}
:root[data-theme="dark"] .theme-toggle .icon-moon{display:block}

/* ===== Overlays ===== */
.overlay{position:fixed;inset:0;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;z-index:40;color:var(--text-muted)}
.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--raiz-green-700);border-radius:50%;animation:spin .8s linear infinite}
.overlay-error h2{color:var(--red);font-size:18px;font-weight:600}
.btn-retry{margin-top:8px;padding:8px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card);color:var(--text-strong);font-weight:500}
.btn-retry:hover{border-color:var(--raiz-green-500)}

/* ===== Layout ===== */
.main{max-width:1440px;margin:0 auto;padding:32px 24px 48px}
.section{margin-bottom:40px}
.section-row{display:grid;grid-template-columns:2fr 1fr;gap:20px}
.charts-row{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:16px}
.section-title-muted{color:var(--text-light)}

/* ===== Filter banner ===== */
.filter-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 16px;margin-bottom:24px;background:var(--raiz-green-100);border:1px solid var(--raiz-green-500);border-radius:var(--radius);color:var(--text-strong);font-size:13px}
.filter-banner strong{font-weight:600}
.filter-clear{border:1px solid var(--raiz-green-500);background:transparent;color:var(--text-strong);padding:5px 10px;border-radius:var(--radius-sm);font-size:12px;font-weight:500}
.filter-clear:hover{background:var(--raiz-green-500);color:#fff}

/* ===== KPI ===== */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.kpi{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);transition:border-color .2s,box-shadow .2s;overflow:hidden}
.kpi:hover{border-color:var(--raiz-green-500);box-shadow:var(--shadow)}
.kpi-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:500;margin-bottom:8px}
.kpi-value{font-family:var(--font-mono);font-size:26px;font-weight:600;color:var(--text-strong);line-height:1.15;white-space:nowrap}
.kpi-secondary{padding:16px}
.kpi-secondary .kpi-value{font-size:20px}
.kpi-accent::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--raiz-green-500)}
.kpi-currency,.kpi-suffix{font-size:.65em;color:var(--text-muted);font-weight:500}
.kpi-currency{margin-right:3px}
.kpi-suffix{margin-left:2px}

/* ===== Card ===== */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);min-width:0}
.card-head{padding:20px 20px 12px;display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
.card-title{font-size:15px;font-weight:600;color:var(--text-strong)}
.card-meta{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:500}
.card-head-left{display:flex;align-items:center;gap:12px;min-width:0;flex-wrap:wrap}

/* ===== Tables ===== */
.table-wrap{overflow-x:auto}
.data-table{width:100%;border-collapse:collapse;font-size:13px}
.data-table thead th{text-align:right;padding:12px 16px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);border-bottom:1px solid var(--border-soft);background:var(--card-hover);white-space:nowrap;font-weight:600}
.data-table thead th.th-name{text-align:left}
.data-table tbody td{padding:12px 16px;text-align:right;border-bottom:1px solid var(--border-soft);font-family:var(--font-mono);font-weight:500;color:var(--text-strong);white-space:nowrap}
.data-table tbody td.td-name{text-align:left;font-family:var(--font-sans);max-width:320px;overflow:hidden;text-overflow:ellipsis}
.data-table tbody tr:hover{background:var(--card-hover)}
.data-table tfoot td{padding:12px 16px;text-align:right;font-family:var(--font-mono);font-weight:600;color:var(--text-strong);border-top:2px solid var(--border);background:var(--card-hover);white-space:nowrap}
.data-table tfoot td.td-name{text-align:left;font-family:var(--font-sans)}
.td-muted{color:var(--text-light)!important;font-weight:400!important}
.td-empty{text-align:center!important;color:var(--text-muted)!important;font-family:var(--font-sans)!important;padding:28px 16px!important}
.row-clickable{cursor:pointer}
.row-clickable:focus-visible{outline:2px solid var(--raiz-green-500);outline-offset:-2px}
.row-clickable.is-selected{background:var(--raiz-green-100)}
.row-clickable.is-selected td.td-name{box-shadow:inset 3px 0 0 var(--raiz-green-500)}
.data-table th.sortable{cursor:pointer;user-select:none}
.data-table th.sortable:hover{color:var(--text-strong)}
.sort-arrow{display:inline-block;margin-left:4px;color:var(--text-light);opacity:.6}
.sort-arrow.is-active{color:var(--raiz-green-500);opacity:1}
.th-thumb,.td-thumb{width:60px;padding-right:0!important}
.td-thumb{text-align:left!important}
.td-link a{font-family:var(--font-sans);font-size:12px;color:var(--raiz-green-700);font-weight:600}
:root[data-theme="dark"] .td-link a{color:var(--raiz-green-500)}
.td-link a:hover{text-decoration:underline}
.thumb{width:44px;height:44px;border-radius:6px;background:var(--card-hover);background-size:cover;background-position:center;object-fit:cover;display:block;border:1px solid var(--border-soft);color:transparent}
.thumb-empty{background-image:none!important;background:var(--card-hover)}
.creatives-filter{background:var(--card);border:1px solid var(--border);color:var(--text-strong);border-radius:var(--radius-sm);padding:6px 10px;font-family:var(--font-sans);font-size:12px;max-width:280px;outline:none}
.creatives-filter:focus{border-color:var(--raiz-green-500)}

/* ===== Funnel ===== */
.funnel{padding:8px 20px 20px;display:flex;flex-direction:column;gap:12px}
.funnel-step-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;font-size:12px}
.funnel-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:500;font-size:11px}
.funnel-num{font-family:var(--font-mono);color:var(--text-strong);font-weight:500}
.funnel-track{height:44px;background:var(--card-hover);border-radius:var(--radius-sm);overflow:hidden}
.funnel-bar{height:100%;background:linear-gradient(90deg,var(--raiz-green-800),var(--raiz-green-700));border-radius:var(--radius-sm);display:flex;align-items:center;padding:0 12px;color:#fff;font-family:var(--font-mono);font-weight:600;font-size:13px;white-space:nowrap;transition:width .6s cubic-bezier(.16,1,.3,1)}

/* ===== Charts ===== */
.chart-wrap{position:relative;height:260px;padding:0 20px 20px}
.chart-wrap-timeline{height:320px}
.chart-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:13px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--text-strong);font-size:12px;font-weight:500;transition:opacity .2s,border-color .2s}
.chip:hover{border-color:var(--raiz-green-500)}
.chip-dot{width:8px;height:8px;border-radius:50%}
.chip.is-off{opacity:.45;text-decoration:line-through}

/* ===== Footer ===== */
.footer{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:24px;border-top:1px solid var(--border);color:var(--text-muted);font-size:12px}
.footer-brand{font-weight:500}

/* ===== Animations ===== */
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.fade-in{animation:fadeIn .4s ease both}

/* ===== Responsive ===== */
@media (max-width:1100px){
  .section-row{grid-template-columns:1fr}
  .kpi-grid-primary,.kpi-grid-secondary{grid-template-columns:repeat(2,1fr)}
  .charts-row{grid-template-columns:1fr}
}
@media (max-width:720px){
  .header-inner{grid-template-columns:1fr;gap:12px}
  .header-tabs{justify-content:flex-start}
  .header-period{justify-self:start}
  .kpi-grid-primary,.kpi-grid-secondary{grid-template-columns:1fr 1fr}
  .main{padding:20px 12px}
  .kpi-value{font-size:20px}
  .kpi-secondary .kpi-value{font-size:17px}
}
#campaignsTable thead th,#campaignsTable tbody td,#campaignsTable tfoot td,#bCampaignsTable thead th,#bCampaignsTable tbody td,#bCampaignsTable tfoot td{padding-left:10px;padding-right:10px}
#campaignsTable tbody td.td-name,#bCampaignsTable tbody td.td-name{max-width:220px}
.funnel-sub{margin-top:4px;font-size:11px;color:var(--text-muted);font-family:var(--font-mono)}
/* ===== Branding: grade de 5 KPIs com comparativo ===== */
.kpi-grid-5{grid-template-columns:repeat(5,1fr)}
.charts-row-2{grid-template-columns:repeat(2,1fr)}
.kpi-b .kpi-value{font-size:26px}
.kpi-b .kpi-cur{margin-right:.28em}
.kpi-delta{margin-top:8px;font-family:var(--font-mono);font-size:11px;font-weight:500;display:flex;align-items:center;gap:4px;min-height:16px}
.kpi-delta.is-good{color:var(--raiz-green-500)}
.kpi-delta.is-bad{color:var(--red)}
.kpi-delta.is-flat{color:var(--text-muted)}
.kpi-delta .arrow{font-size:9px}
@media (max-width:1100px){.kpi-grid-5{grid-template-columns:repeat(3,1fr)}.charts-row-2{grid-template-columns:1fr}}
@media (max-width:720px){.kpi-grid-5{grid-template-columns:1fr 1fr}.kpi-b .kpi-value{font-size:20px}}
/* ===== Tag de campanha (Branding) ===== */
.campaign-tag-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:28px}
.campaign-tag{display:inline-flex;align-items:center;padding:5px 12px;border-radius:999px;background:#9333EA;color:#fff;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.2}
.campaign-tag-text{font-size:13px;color:var(--text-muted)}

/* ===== Filtro de período: fundo verde escuro ===== */
.period-select{background:#0F2A1B;border:1.5px solid var(--raiz-green-500);color:#fff;font-weight:500;padding:7px 12px;cursor:pointer}
.period-select:hover{background:#133A25}
.period-select:focus{outline:none;box-shadow:0 0 0 3px rgba(34,197,94,.25)}
.period-select option{background:#0F2A1B;color:#fff}
.period-custom input{background:#0F2A1B;border:1.5px solid var(--raiz-green-500)}

/* ===== Funil ilustrado (Branding) ===== */
.funnel-svg-wrap{padding:4px 20px 20px}
.funnel-svg{width:100%;height:auto;display:block;max-height:340px}
.funnel-svg .f-label{font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;fill:rgba(255,255,255,.78)}
.funnel-svg .f-value{font-family:var(--font-mono);font-size:24px;font-weight:600;fill:#fff}
.funnel-svg .f-stage{transition:opacity .2s}
.funnel-svg .f-stage:hover{opacity:.92}
/* funil: destaque suave no hover */
.funnel-svg .f-stage{cursor:default;transform-box:fill-box;transform-origin:center;transition:filter .25s ease,transform .25s ease,opacity .25s ease}
.funnel-svg .f-stage:hover{filter:brightness(1.18) drop-shadow(0 0 10px rgba(34,197,94,.45));transform:scale(1.02)}
.funnel-svg:hover .f-stage:not(:hover){opacity:.82}
.section-row-chart .chart-wrap-timeline{height:330px}
.delta-note{color:var(--text-light);margin-left:4px;font-weight:400}
.funnel-svg .f-value-sm{font-size:19px}
.funnel-svg .f-rate{font-family:var(--font-mono);font-size:10.5px;font-weight:500;fill:rgba(255,255,255,.72)}
