:root{
  --bg:#0d1016;
  --bg-2:#20252d;
  --surface:#171b22;
  --surface-2:#20252e;
  --surface-soft:#282e38;
  --text:#ffffff;
  --muted:#adb5c1;
  --line:rgba(255,255,255,.10);
  --red:#ed1c24;
  --red-dark:#bd1017;
  --black:#080a0e;
  --shadow:0 20px 55px rgba(0,0,0,.34);
  --radius:20px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:radial-gradient(circle at 78% 2%,rgba(237,28,36,.09),transparent 30%),linear-gradient(145deg,var(--bg) 0%,#171b22 46%,var(--bg-2) 100%);background-attachment:fixed;color:var(--text);font-family:Inter,Arial,sans-serif;min-height:100vh}
button,input,select{font:inherit}.container{width:min(1480px,calc(100% - 42px));margin:auto}
.app-header{position:sticky;top:0;z-index:50;background:rgba(10,12,17,.88);backdrop-filter:blur(18px);border-bottom:1px solid var(--line);box-shadow:0 10px 32px rgba(0,0,0,.22)}
.header-main{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:14px;color:inherit;text-decoration:none}.brand img{width:46px;height:46px;object-fit:contain;filter:drop-shadow(0 8px 12px rgba(237,28,36,.18))}.brand span{display:flex;flex-direction:column}.brand strong{font-size:18px}.brand small{font-size:10px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase}.header-meta{display:flex;align-items:center;gap:18px}.header-meta>div{display:flex;flex-direction:column;text-align:right}.header-meta span{font-size:10px;color:var(--muted)}.header-meta strong{font-size:14px}.top-nav{display:flex;gap:6px;overflow:auto;padding-bottom:10px;scrollbar-width:none}.top-nav::-webkit-scrollbar{display:none}.top-nav a{white-space:nowrap;text-decoration:none;color:#c7ccd5;font-size:12px;font-weight:700;padding:9px 14px;border-radius:999px;transition:.2s}.top-nav a:hover,.top-nav a.active{background:var(--red);color:#fff;box-shadow:0 8px 22px rgba(237,28,36,.22)}
.btn{border:0;border-radius:12px;padding:11px 16px;font:700 12px Inter;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:.2s}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--red);color:#fff;box-shadow:0 10px 24px rgba(237,28,36,.28)}.btn-primary:hover{background:var(--red-dark)}.btn-secondary{background:#11151d;color:#fff;border:1px solid var(--line)}.btn-ghost{background:rgba(255,255,255,.10);color:#fff;border:1px solid rgba(255,255,255,.16)}
main{padding-top:28px}.alert,.data-mode{padding:13px 16px;border-radius:12px;margin-bottom:15px}.alert{background:#5f151a;color:#fff}.data-mode{background:#4f410d;color:#fff3bd}.hidden{display:none!important}
.hero-shell{margin-bottom:18px}.hero-card,.panel,.kpi{background:linear-gradient(155deg,rgba(35,40,49,.96),rgba(20,24,31,.96));border:1px solid var(--line);box-shadow:var(--shadow);border-radius:var(--radius)}.hero-premium{position:relative;min-height:430px;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.48fr);align-items:stretch}.hero-image{position:absolute;inset:0}.hero-image img{width:100%;height:100%;object-fit:cover;object-position:center 43%;filter:saturate(.9) contrast(1.08) brightness(.72)}.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,7,11,.96) 0%,rgba(8,11,16,.82) 32%,rgba(9,12,18,.28) 63%,rgba(9,12,18,.62) 100%),linear-gradient(0deg,rgba(8,10,14,.78),transparent 56%)}.hero-brand-mark{position:absolute;left:44px;top:42px;width:170px;height:230px;opacity:.86;display:flex;align-items:center;justify-content:center}.hero-brand-mark:after{content:"";position:absolute;left:51%;top:0;bottom:0;width:9px;background:var(--red)}.hero-brand-mark img{max-width:100%;max-height:100%;object-fit:contain;filter:brightness(0) invert(1);opacity:.36}.hero-copy{position:relative;z-index:2;padding:170px 44px 38px;max-width:740px;display:flex;flex-direction:column;justify-content:flex-end}.eyebrow,.panel-heading span{color:var(--red);font-size:10px;font-weight:800;letter-spacing:.15em}.hero-copy h1{font-size:48px;line-height:1;margin:10px 0 10px;text-transform:uppercase;letter-spacing:-.03em}.hero-copy p,.section-heading p,.modal-header p{color:var(--muted);line-height:1.6}.hero-copy>p{font-size:14px;max-width:620px}.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.hero-meta{display:flex;gap:12px;margin-top:22px}.hero-meta div{min-width:150px;padding:12px 14px;border:1px solid rgba(255,255,255,.13);background:rgba(0,0,0,.28);backdrop-filter:blur(8px);border-radius:12px}.hero-meta span{display:block;font-size:9px;color:#aeb5c1;text-transform:uppercase;letter-spacing:.08em}.hero-meta strong{display:block;font-size:12px;margin-top:5px}.partners-card{position:relative;z-index:3;align-self:center;margin:30px 28px 30px 0;padding:24px;background:rgba(9,12,17,.78);backdrop-filter:blur(13px);border:1px solid rgba(255,255,255,.14);border-radius:18px;box-shadow:0 18px 45px rgba(0,0,0,.34)}.partners-card h2{font-size:17px;line-height:1.35;margin:8px 0 16px}.partners-grid{display:grid;gap:10px}.partner-logo{height:76px;background:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;padding:10px 16px;overflow:hidden}.partner-logo img{width:100%;height:100%;object-fit:contain}.partner-logo-3{height:82px}
.kpi-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:13px;margin:18px 0 38px}.kpi{appearance:none;text-align:left;padding:17px;display:flex;gap:12px;align-items:flex-start;cursor:pointer;transition:.22s;color:var(--text)}.kpi:hover{transform:translateY(-4px);border-color:rgba(237,28,36,.55);box-shadow:0 24px 50px rgba(0,0,0,.42)}.kpi-icon{min-width:39px;height:39px;border-radius:12px;background:linear-gradient(145deg,#8d171c,#431014);color:#fff;display:grid;place-items:center;font-weight:900;border:1px solid rgba(237,28,36,.28)}.kpi>span:last-child{display:flex;flex-direction:column;min-width:0}.kpi span span{font-size:10px;color:var(--muted)}.kpi strong{font-size:21px;margin:4px 0;color:#fff}.kpi small{font-size:9px;color:#8f98a8;line-height:1.35}
.section{scroll-margin-top:126px;margin:0 0 48px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:16px}.section-heading h2{font-size:29px;margin:5px 0;color:#fff}.section-heading p{margin:0}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.align-start{align-items:start}.panel{padding:20px;min-width:0}.panel.wide{margin-top:18px}.panel-heading{display:flex;justify-content:space-between;margin-bottom:14px}.panel-heading h3{font-size:17px;margin:5px 0;color:#fff}.chart-wrap{height:320px}.chart-wrap.tall{height:390px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:13px;background:rgba(0,0,0,.13)}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th{position:sticky;top:0;background:#222731;color:#d9dde5;text-align:left;padding:12px;font-size:9px;text-transform:uppercase;letter-spacing:.06em}.data-table td{padding:12px;border-top:1px solid var(--line);vertical-align:top;color:#f1f3f5}.data-table tbody tr:hover{background:rgba(237,28,36,.08)}.status{display:inline-flex;padding:5px 9px;border-radius:999px;background:#343b46;color:#d8dde5;font-size:10px;font-weight:700}.status.ok,.status.fechado,.status.concluido{background:#143d27;color:#7fe2a6}.status.critico,.status.atrasado,.status.pendente{background:#541d22;color:#ff9da2}
.grid-curve{display:grid;grid-template-columns:1.35fr 1fr;gap:18px;margin-top:18px}
.table-wrap.tall{height:390px}
.periodo-table th.sub{font-size:8px;color:#aeb5c1;text-transform:uppercase;letter-spacing:.04em;padding:8px 12px}
.periodo-table td.divider,.periodo-table th.divider{border-left:1px solid var(--line)}
.periodo-table td{white-space:nowrap}
.desvio-pos{color:#7fe2a6;font-weight:700}
.desvio-neg{color:#ff9da2;font-weight:700}
@media(max-width:1160px){.grid-curve{grid-template-columns:1fr}}
.gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.photo{position:relative;min-height:180px;border:0;border-radius:14px;overflow:hidden;background:#222831;cursor:zoom-in;padding:0}.photo img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;transition:.35s}.photo:hover img{transform:scale(1.055)}.photo span{position:absolute;left:0;right:0;bottom:0;padding:28px 13px 12px;background:linear-gradient(transparent,rgba(0,0,0,.82));color:#fff;font-size:12px;font-weight:700;text-align:left}.layout-card{height:335px;background:#222831 center/cover no-repeat;border-radius:14px;display:flex;align-items:end;overflow:hidden}.layout-card a{width:100%;padding:18px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.86));text-decoration:none;font-weight:700}.layout-card>span{padding:20px;color:var(--muted)}
footer{padding:22px 0 38px;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:11px}
.admin-trigger-btn{appearance:none;border:0;background:transparent;color:var(--muted);font:inherit;font-size:11px;cursor:pointer;padding:4px 2px;opacity:.7;text-decoration:underline;text-decoration-color:transparent;transition:.2s}
.admin-trigger-btn:hover{opacity:1;color:#fff;text-decoration-color:currentColor}
@media print{.admin-trigger-btn{display:none!important}}.loading{position:fixed;inset:0;z-index:100;background:rgba(9,11,16,.94);display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;color:#fff}.spinner{width:34px;height:34px;border:3px solid #343a44;border-top-color:var(--red);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.icon-btn{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:#272d37;color:#fff;font-size:25px;cursor:pointer}.lightbox{position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.94);display:none;align-items:center;justify-content:center;flex-direction:column;padding:30px}.lightbox.open{display:flex}.lightbox img{max-width:92vw;max-height:82vh;object-fit:contain}.lightbox p{color:#fff}.lightbox .icon-btn{position:absolute;right:24px;top:20px}.muted,.empty{color:var(--muted)}
@media(max-width:1160px){.hero-premium{grid-template-columns:1fr}.partners-card{align-self:auto;margin:0 28px 28px;max-width:none}.partners-grid{grid-template-columns:repeat(3,1fr)}.kpi-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.container{width:min(100% - 24px,1480px)}.header-main{min-height:68px}.header-meta>div{display:none}.top-nav{padding-bottom:8px}.hero-premium{min-height:0}.hero-image{height:100%}.hero-copy{padding:210px 24px 24px}.hero-copy h1{font-size:34px}.hero-brand-mark{left:24px;top:28px;width:105px;height:150px}.partners-card{margin:0 16px 16px;padding:18px}.partners-grid{grid-template-columns:1fr}.partner-logo{height:68px}.hero-meta{flex-direction:column}.hero-meta div{min-width:0}.kpi-grid{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.gallery{grid-template-columns:1fr}.chart-wrap{height:280px}footer{flex-direction:column;gap:6px}}
@media(max-width:430px){.brand span{display:none}.kpi-grid{grid-template-columns:1fr}.hero-actions .btn{width:100%}.hero-copy{padding-top:185px}.hero-copy h1{font-size:29px}.section-heading h2{font-size:25px}}

/* Carrossel automático da imagem de capa — não altera o layout */
.hero-image .hero-slide{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 43%;
  filter:saturate(.9) contrast(1.08) brightness(.72);
  opacity:0;
  transition:opacity 1s ease-in-out;
}
.hero-image .hero-slide.active{opacity:1}

/* Botão de relatório ao final do dashboard */
.pdf-export-section{margin:8px 0 26px}
.pdf-export-card{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 26px;background:linear-gradient(145deg,rgba(35,40,49,.96),rgba(20,24,31,.96));border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.pdf-export-card h2{margin:5px 0 5px;font-size:21px;color:#fff}
.pdf-export-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}
.pdf-export-btn{min-width:190px;white-space:nowrap}
.pdf-export-btn:disabled{opacity:.65;cursor:wait;transform:none}
@media(max-width:760px){.pdf-export-card{align-items:flex-start;flex-direction:column}.pdf-export-btn{width:100%}}

/* Versão de impressão usada pelo botão "Gerar PDF do dia" */
@media print{
  @page{size:A4 landscape;margin:8mm}
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  html,body{background:#11151d!important}
  body{margin:0!important}
  .app-header{position:static!important;box-shadow:none!important}
  .top-nav,.header-meta #refresh-btn,.hero-actions,.pdf-export-section,.loading,.lightbox{display:none!important}
  .container{width:100%!important;max-width:none!important;margin:0!important}
  main{padding-top:12px!important}
  .hero-premium{min-height:310px!important}
  .hero-copy{padding-top:120px!important}
  .partners-card{margin-top:18px!important;margin-bottom:18px!important}
  .section{scroll-margin-top:0!important;margin-bottom:16px!important}

  /* Layouts em grade (2 colunas) viram coluna única só na impressão: grades de altura
     desigual (ex.: tabela longa ao lado de um gráfico curto) fragmentam mal entre páginas
     e cortavam conteúdo. Em coluna única, cada bloco flui e pagina de forma previsível. */
  .grid-2,.grid-curve{display:block!important}
  .grid-2>*,.grid-curve>*{margin-bottom:14px!important}
  .grid-2>*:last-child,.grid-curve>*:last-child{margin-bottom:0!important}

  /* Só o que realmente não pode ser cortado ao meio (gráfico, card de KPI, foto, preview
     de PDF) fica travado. Painéis com tabela longa (Período, Pontos de atenção,
     Contratações, Concessionárias) podem fluir entre páginas — isso evita empurrar o
     bloco inteiro para a página seguinte e deixar a anterior quase em branco. */
  .kpi,.hero-card,.partners-card,.photo,.layout-card,.chart-wrap,.project-pdf-panel,.project-pdf-preview{break-inside:avoid;page-break-inside:avoid}
  .kpi-grid{break-inside:avoid;page-break-inside:avoid}
  .section-heading,.panel-heading{break-after:avoid;page-break-after:avoid}
  .chart-wrap{height:270px!important}
  .chart-wrap.tall{height:310px!important}
  .table-wrap.tall{height:auto!important;max-height:none!important}

  /* Tabelas longas fluem entre páginas: cabeçalho repetido e nunca cortando uma linha ao meio. */
  .data-table thead{display:table-header-group}
  .data-table tr{break-inside:avoid;page-break-inside:avoid}

  .gallery{grid-template-columns:repeat(2,1fr)!important}
  .photo{min-height:150px!important}
  .table-wrap{overflow:visible!important;max-height:none!important}
  .data-table th{position:static!important}
  footer{padding-bottom:0!important}
  #hero-image .hero-slide{opacity:0!important;transition:none!important}
  #hero-image .hero-slide.print-active{opacity:1!important}
}



/* Projeto Perfis Revisado - visualização em PDF */
.project-pdf-panel{margin-top:18px}
.project-pdf-preview{position:relative;width:100%;height:320px;padding:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#0b0f15;cursor:pointer;text-align:left}
.project-pdf-preview img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}
.project-pdf-preview:hover img{transform:scale(1.015)}
.project-pdf-overlay{position:absolute;left:0;right:0;bottom:0;padding:42px 18px 16px;background:linear-gradient(transparent,rgba(0,0,0,.88));color:#fff;display:flex;flex-direction:column;gap:4px}
.project-pdf-overlay strong{font-size:15px}
.project-pdf-overlay small{font-size:11px;color:#d7dce5}
.pdf-viewer-modal{position:fixed;inset:0;z-index:130;display:none}
.pdf-viewer-modal.open{display:block}
.pdf-viewer-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.82);backdrop-filter:blur(5px)}
.pdf-viewer-card{position:absolute;inset:3vh 3vw;background:#151a22;border:1px solid rgba(255,255,255,.12);border-radius:20px;box-shadow:0 32px 100px rgba(0,0,0,.48);padding:18px;display:flex;flex-direction:column;gap:14px}
.pdf-viewer-header{display:flex;align-items:center;justify-content:space-between;gap:20px}
.pdf-viewer-header h2{margin:4px 0 0;font-size:21px;color:#fff}
.pdf-viewer-actions{display:flex;align-items:center;gap:10px}
.pdf-viewer-card iframe{width:100%;flex:1;min-height:0;border:0;border-radius:12px;background:#fff}
@media(max-width:760px){.project-pdf-preview{height:230px}.pdf-viewer-card{inset:12px;padding:12px}.pdf-viewer-header{align-items:flex-start}.pdf-viewer-actions .btn{display:none}}
@media print{.pdf-viewer-modal{display:none!important}}
