@font-face{font-family:Inter;font-weight:400;font-style:normal;font-display:swap;src:url(/fontes/inter-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:500;font-style:normal;font-display:swap;src:url(/fontes/inter-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:600;font-style:normal;font-display:swap;src:url(/fontes/inter-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Space Grotesk";font-weight:500;font-style:normal;font-display:swap;src:url(/fontes/space-grotesk-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Space Grotesk";font-weight:700;font-style:normal;font-display:swap;src:url(/fontes/space-grotesk-latin-700-normal.woff2) format("woff2")}

/* Layout: faixa de resumo escura no topo, depois cards por área, cada área com sua cor. Largura total no computador. */
:root{
  --bg:#eef1f6; --card:#ffffff; --ink:#0f1b2d; --muted:#5b6b82; --line:#dde3ed;
  --hero:#0f1b2d; --hero-ink:#f3f6fb; --hero-mut:#93a3bb;
  --voo:#2563eb; --hora:#d97706; --rota:#0d9488; --modelo:#7c3aed; --hangar:#059669; --avulso:#db2777;
  --alt:#ea580c; --presente:#c026d3; --ocor:#0891b2; --bom:#15803d; --ruim:#dc2626;
  --track:#e6ebf3;
  --display:"Space Grotesk",system-ui,sans-serif; --body:Inter,system-ui,sans-serif;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0a1220; --card:#131e31; --ink:#e8eef8; --muted:#8fa0b8; --line:#243349; --hero:#060b15; --hero-ink:#f3f6fb; --hero-mut:#8fa0b8;
  --voo:#5b8dff; --hora:#f5a524; --rota:#2dd4bf; --modelo:#a78bfa; --hangar:#34d399; --avulso:#f472b6;
  --alt:#fb923c; --presente:#e879f9; --ocor:#22d3ee; --bom:#4ade80; --ruim:#f87171; --track:#22314a; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0a1220; --card:#131e31; --ink:#e8eef8; --muted:#8fa0b8; --line:#243349; --hero:#060b15; --hero-ink:#f3f6fb; --hero-mut:#8fa0b8;
  --voo:#5b8dff; --hora:#f5a524; --rota:#2dd4bf; --modelo:#a78bfa; --hangar:#34d399; --avulso:#f472b6;
  --alt:#fb923c; --presente:#e879f9; --ocor:#22d3ee; --bom:#4ade80; --ruim:#f87171; --track:#22314a; color-scheme:dark}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.45;
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:20px 48px}
.wrap{max-width:1760px;margin:0 auto;display:flex;flex-direction:column;gap:20px}
h1,h2,h3{font-family:var(--display);margin:0;text-wrap:balance}
.top{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between}
.top h1{font-size:26px}
.top p{margin:2px 0 0;color:var(--muted)}
.periodo{display:flex;gap:6px;background:var(--card);border:1px solid var(--line);padding:4px;border-radius:12px}
.periodo button{font:inherit;font-weight:600;border:0;background:transparent;color:var(--muted);padding:9px 16px;border-radius:9px;cursor:pointer;min-height:40px}
.periodo button[aria-pressed="true"]{background:var(--voo);color:#fff}
button:focus-visible{outline:3px solid var(--hora);outline-offset:2px}
.aviso{display:flex;gap:10px;align-items:flex-start;background:var(--card);border:1px dashed var(--line);border-radius:12px;padding:12px 14px;color:var(--muted);font-size:14px}
.tag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:999px;vertical-align:middle}
.tag.real{background:color-mix(in srgb,var(--bom) 18%,transparent);color:var(--bom)}
.tag.ex{background:color-mix(in srgb,var(--hora) 20%,transparent);color:var(--hora)}
/* resumo escuro */
.hero{background:var(--hero);color:var(--hero-ink);border-radius:18px;padding:22px;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:20px 24px}
.kpi .rot{display:flex;align-items:center;gap:8px;color:var(--hero-mut);font-size:13px;font-weight:500}
.kpi .num{font-family:var(--display);font-weight:700;font-size:40px;line-height:1.1;margin-top:6px;font-variant-numeric:tabular-nums}
.kpi .dif{font-size:13px;margin-top:2px;color:var(--hero-mut)}
.up{color:#4ade80}.down{color:#f87171}
.k1 .num{color:#7ba6ff}.k2 .num{color:#f9c25b}.k3 .num{color:#ff9d6b}.k4 .num{color:#5eead4}.k5 .num{color:#e9a8ff}.k6 .num{color:#7dd3fc}
/* grade de cards */
.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:20px}
.card{grid-column:span 6;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;min-width:0}
.card.w4{grid-column:span 4}.card.w8{grid-column:span 8}.card.w12{grid-column:span 12}
@media(max-width:1100px){.card,.card.w4,.card.w8{grid-column:span 12}}
.card .faixa{height:6px;background:var(--cor)}
.card .in{padding:18px 20px 20px;display:flex;flex-direction:column;gap:14px}
.cab{display:flex;align-items:center;gap:10px;justify-content:space-between}
.cab h2{font-size:18px;display:flex;align-items:center;gap:10px}
.ico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--cor) 16%,transparent);color:var(--cor);flex:none}
.ico svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hero svg.mini{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sub{color:var(--muted);font-size:13.5px;margin:0}
.big{font-family:var(--display);font-weight:700;font-size:30px;font-variant-numeric:tabular-nums;color:var(--cor)}
.linha{display:flex;gap:10px 18px;flex-wrap:wrap;align-items:baseline}
/* barras horizontais */
.bars{display:flex;flex-direction:column;gap:9px}
.b{display:grid;grid-template-columns:minmax(80px,150px) 1fr 48px;gap:10px;align-items:center;font-size:14px}
.b .n{overflow-wrap:anywhere}
.b .t{height:12px;border-radius:6px;background:var(--track);overflow:hidden}
.b .t i{display:block;height:100%;background:var(--cor);border-radius:6px}
.b .v{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.dois{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}
.dois h3{font-size:14px;color:var(--muted);font-weight:600;margin-bottom:8px}
/* períodos do dia */
.per{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.per div{border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.per div.pico{border-color:var(--cor);background:color-mix(in srgb,var(--cor) 10%,transparent)}
.per b{display:block;font-family:var(--display);font-size:24px;font-variant-numeric:tabular-nums}
.per span{font-size:12.5px;color:var(--muted)}
@media(max-width:520px){.per{grid-template-columns:repeat(2,1fr)}}
svg.graf{width:100%;height:auto;display:block}
svg.graf text{fill:var(--muted);font-family:var(--body);font-size:11px}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;padding:4px 10px;border-radius:999px;background:color-mix(in srgb,var(--cor) 14%,transparent);color:var(--cor)}
.pilhas{display:flex;flex-wrap:wrap;gap:8px}
.split{display:flex;height:22px;border-radius:11px;overflow:hidden;background:var(--track)}
.split i{display:block;height:100%}
.leg{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14px}
.leg span{display:inline-flex;gap:7px;align-items:center}
.leg em{width:10px;height:10px;border-radius:3px;display:inline-block}
.leg b{font-variant-numeric:tabular-nums}
.rodape{color:var(--muted);font-size:13px}
/* upload e filtros */
.btn{font:inherit;font-weight:600;border:0;border-radius:10px;padding:10px 18px;min-height:44px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;background:var(--voo);color:#fff}
.btn:disabled{opacity:.7;cursor:progress}
.btn.sec{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.spin{width:16px;height:16px;border:2.5px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:g .8s linear infinite}
@keyframes g{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.spin{animation-duration:2s}}
.fonte{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;justify-content:space-between;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.fonte .t{display:flex;flex-direction:column;gap:2px;min-width:0}
.fonte .t b{font-family:var(--display);font-size:16px}
.fonte .t span{color:var(--muted);font-size:13.5px}
.msg{font-size:14px;font-weight:500;min-height:20px}
.msg.ok{color:var(--bom)}.msg.err{color:var(--ruim)}
.filtros{display:flex;flex-wrap:wrap;gap:14px 20px;align-items:flex-end;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.filtros .campo{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);font-weight:600}
.filtros input[type=date]{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:9px 12px;min-height:44px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font:inherit;font-weight:600;font-size:14px;border:1px solid var(--line);background:transparent;color:var(--ink);padding:9px 14px;border-radius:999px;cursor:pointer;min-height:40px}
.chip[aria-pressed="true"]{background:var(--voo);border-color:var(--voo);color:#fff}
.chip:focus-visible,.btn:focus-visible,input:focus-visible{outline:3px solid var(--hora);outline-offset:2px}
.login{min-height:calc(100vh - 80px);display:grid;place-items:center}
.login .box{width:min(420px,100%);background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.login .topo{background:var(--hero);color:var(--hero-ink);padding:26px 26px 22px;display:flex;flex-direction:column;gap:6px}
.login .topo .ico{background:color-mix(in srgb,var(--voo) 30%,transparent);color:#9fc0ff}
.login .topo h1{font-size:24px}.login .topo p{margin:0;color:var(--hero-mut);font-size:14px}
.login form{padding:22px 26px 26px;display:flex;flex-direction:column;gap:14px}
.login label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:var(--muted)}
.login input{font:inherit;font-size:16px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:11px 13px;min-height:46px}
.login .dica{font-size:13px;color:var(--muted);background:color-mix(in srgb,var(--hora) 12%,transparent);border-radius:10px;padding:10px 12px}
.login .btn{justify-content:center;width:100%}
.barra{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:center;justify-content:space-between}
.acoes{display:flex;gap:10px;align-items:center;position:relative}
.menu{position:relative}
.menu .painel{position:absolute;right:0;top:calc(100% + 8px);z-index:30;min-width:270px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:0 12px 32px rgba(0,0,0,.18);display:flex;flex-direction:column;gap:2px}
.menu .painel .quem{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:4px}
.menu .painel .quem b{display:block;font-family:var(--display)}.menu .painel .quem span{font-size:12.5px;color:var(--muted)}
.item{font:inherit;text-align:left;border:0;background:transparent;color:var(--ink);padding:11px 10px;border-radius:9px;cursor:pointer;display:flex;gap:10px;align-items:center;min-height:44px;width:100%}
.item:hover{background:var(--bg)}.item svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.item small{display:block;color:var(--muted);font-size:12px}
.status{display:flex;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:14px}
.status .spin{border-color:color-mix(in srgb,var(--voo) 30%,transparent);border-top-color:var(--voo)}
.status.ok{border-color:var(--bom);color:var(--bom)}.status.err{border-color:var(--ruim);color:var(--ruim)}
/* apresentação */
#deck{position:fixed;inset:0;z-index:100;background:#05080f;color:#f3f6fb;display:flex;flex-direction:column;padding:12px max(16px,env(safe-area-inset-left,0px)) max(12px,env(safe-area-inset-bottom,0px))}
#deck[hidden]{display:none}
.dk-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding-block:4px 10px}
.dk-bar b{font-family:var(--display);font-size:16px}
.dk-bar .btn.sec{color:#f3f6fb;border-color:#33445f}
.dk-stage{flex:1;display:grid;place-items:center;min-height:0}
.slide{container-type:inline-size;aspect-ratio:16/9;width:min(100%,calc((100vh - 150px)*16/9));background:#0f1b2d;border-radius:12px;overflow:hidden;position:relative;display:flex;flex-direction:column;padding:4.2cqw 5cqw;gap:2.2cqw;font-family:var(--body)}
.slide h2{font-size:3.6cqw;line-height:1.1;color:#fff}
.slide .st{font-size:1.7cqw;color:#93a3bb;margin-top:.5cqw}
.slide .tagx{position:absolute;right:3cqw;top:2.6cqw;font-size:1.3cqw;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.3cqw 1.2cqw;border-radius:99px;background:rgba(245,165,36,.2);color:#f5a524}
.slide .ks{display:flex;gap:3cqw;flex-wrap:nowrap}
.slide .k{flex:1;min-width:0;border-left:.35cqw solid var(--c);padding-left:1.6cqw}
.slide .k b{display:block;font-family:var(--display);font-size:5cqw;line-height:1.05;color:var(--c);font-variant-numeric:tabular-nums}
.slide .k span{font-size:1.5cqw;color:#93a3bb}
.slide .gr{flex:1;display:grid;gap:3cqw;min-height:0}
.slide .gr.d2{grid-template-columns:1fr 1fr}
.slide .gr h3{font-size:1.6cqw;color:#93a3bb;font-weight:600;margin-bottom:1cqw}
.slide .br{display:grid;grid-template-columns:18cqw 1fr 5cqw;gap:1.2cqw;align-items:center;font-size:1.6cqw;margin-bottom:.9cqw}
.slide .d2 .br{grid-template-columns:13cqw 1fr 4.5cqw}
.slide .br i{display:block;height:1.5cqw;border-radius:.8cqw;background:var(--c)}
.slide .br .t{background:#1d2b44;border-radius:.8cqw;overflow:hidden}
.slide .br em{font-style:normal;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.slide .br u{text-decoration:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.slide .col{display:flex;align-items:flex-end;gap:.5cqw;height:100%;padding-top:2cqw}
.slide .col div{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;font-size:1.2cqw;color:#93a3bb;gap:.3cqw;min-width:0}
.slide .col i{display:block;width:100%;background:var(--c);border-radius:.4cqw .4cqw 0 0}
.slide .col b{color:#f3f6fb;font-weight:600;font-size:1.2cqw}
.slide.capa{justify-content:center;gap:2cqw}.slide.capa h2{font-size:6cqw}.slide.capa .st{font-size:2.2cqw}
.slide .foot{font-size:1.2cqw;color:#5f7089}
.dk-nav{display:flex;gap:14px;align-items:center;justify-content:center;padding-top:10px}
.dk-nav .btn{background:#1d2b44}.dk-nav span{min-width:70px;text-align:center;color:#93a3bb}
.mais{font:inherit;font-weight:600;font-size:14px;align-self:flex-start;border:1px solid color-mix(in srgb,var(--cor) 45%,var(--line));background:color-mix(in srgb,var(--cor) 10%,transparent);color:var(--cor);border-radius:10px;padding:9px 14px;min-height:42px;cursor:pointer;margin-top:auto}
.mais:hover{background:color-mix(in srgb,var(--cor) 20%,transparent)}
.mais:focus-visible,.b.click:focus-visible{outline:3px solid var(--hora);outline-offset:2px}
.card .in{height:calc(100% - 6px)}
/* tela de detalhes */
#det{position:fixed;inset:0;z-index:90;background:var(--bg);color:var(--ink);overflow-y:auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:16px 60px}
#det[hidden]{display:none}
.det-in{max-width:1500px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
.det-bar{display:flex;gap:16px;align-items:center;flex-wrap:wrap;border-bottom:4px solid var(--cor);padding-bottom:14px}
.det-bar h2{font-size:26px;color:var(--cor)}.det-bar p{margin:2px 0 0;color:var(--muted)}
.dg{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:18px}
.blk{background:var(--card);border:1px solid var(--line);border-top:5px solid var(--cor);border-radius:14px;padding:16px 18px 18px;display:flex;flex-direction:column;gap:12px;min-width:0}
.blk h3{font-size:16px;font-family:var(--display)}
.blk .cab{flex-wrap:wrap}
.dk{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}
.dk div{background:var(--card);border:1px solid var(--line);border-left:5px solid var(--cor);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.dk b{font-family:var(--display);font-size:24px;font-variant-numeric:tabular-nums;color:var(--cor);overflow-wrap:anywhere}.dk span{font-size:13px;color:var(--muted)}
.tw{overflow-x:auto;border-radius:8px}
.tw table{border-collapse:collapse;width:100%;font-size:14px}
.tw th,.tw td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
.tw td:first-child{white-space:normal}
.tw th{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--card)}
.tw .num{text-align:right;font-variant-numeric:tabular-nums}
.heat td{min-width:26px;padding:6px 4px;font-size:12px;border-bottom:0;text-align:center}.heat th{padding:6px 4px;text-align:center}
.b.click{font:inherit;color:inherit;background:transparent;border:0;border-radius:8px;width:100%;text-align:left;cursor:pointer;padding:5px 6px;margin:0 -6px}
.b.click:hover{background:var(--bg)}.b.click[aria-pressed="true"]{background:color-mix(in srgb,var(--cor) 14%,transparent);box-shadow:inset 0 0 0 2px var(--cor)}
.sit{font-size:12px;font-weight:700;padding:2px 9px;border-radius:99px}
.sit.s0{background:color-mix(in srgb,var(--bom) 18%,transparent);color:var(--bom)}.sit.s1{background:color-mix(in srgb,var(--ruim) 18%,transparent);color:var(--ruim)}.sit.s2{background:color-mix(in srgb,var(--hora) 20%,transparent);color:var(--hora)}
textarea{font:inherit;font-size:15px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%;resize:vertical}
.lanc{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;align-items:end}
.lanc label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:var(--muted)}
.lanc input,.lanc select{font:inherit;font-size:15px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:44px}
.vazio{background:var(--card);border:1px dashed var(--line);border-radius:14px;padding:22px;text-align:center;color:var(--muted)}

.mini-x{font:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:8px;padding:6px 10px;min-height:34px;cursor:pointer}
.mini-x:hover{background:var(--bg)}.mini-x:disabled{opacity:.6;cursor:progress}
.spin.dark{border-color:color-mix(in srgb,var(--voo) 30%,transparent);border-top-color:var(--voo);display:inline-block;vertical-align:middle}
dialog{border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);padding:0;width:min(680px,calc(100% - 32px));max-height:calc(100% - 48px)}
dialog::backdrop{background:rgba(5,8,15,.6)}
dialog .dl{padding:20px 22px 22px;display:flex;flex-direction:column;gap:14px}
dialog h2{font-size:20px}
dialog form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:end}
dialog label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:var(--muted)}
dialog input,dialog select{font:inherit;font-size:15px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:44px}
.semdados{background:var(--card);border:2px dashed var(--line);border-radius:18px;padding:36px 24px;text-align:center;display:flex;flex-direction:column;gap:12px;align-items:center}
.semdados h2{font-size:22px}.semdados p{margin:0;color:var(--muted);max-width:520px}
.slide .tagx{display:none}

.heat th{text-transform:none}
