/* Gabo Licitações 4.3 · identidade Brasil
   Tipografia Rawline (SIL OFL 1.1, auto-hospedada), cores da bandeira como acento,
   mapa e céu das 27 estrelas, tema noturno. Carregar depois das demais folhas. */

@font-face{font-family:Rawline;font-style:normal;font-weight:400;font-display:swap;src:url(fontes-web/rawline-400.woff2) format('woff2')}
@font-face{font-family:Rawline;font-style:italic;font-weight:400;font-display:swap;src:url(fontes-web/rawline-400-italic.woff2) format('woff2')}
@font-face{font-family:Rawline;font-style:normal;font-weight:500;font-display:swap;src:url(fontes-web/rawline-500.woff2) format('woff2')}
@font-face{font-family:Rawline;font-style:normal;font-weight:600;font-display:swap;src:url(fontes-web/rawline-600.woff2) format('woff2')}
@font-face{font-family:Rawline;font-style:normal;font-weight:700;font-display:swap;src:url(fontes-web/rawline-700.woff2) format('woff2')}
@font-face{font-family:Rawline;font-style:normal;font-weight:800;font-display:swap;src:url(fontes-web/rawline-800.woff2) format('woff2')}

:root{
  --gb-font:Rawline,Raleway,'Segoe UI',system-ui,-apple-system,sans-serif;
  --br-verde:#009c3b;--br-amarelo:#ffdf00;--br-azul:#002776;--br-azul-2:#0b3d91;
  --gb-bg:#fafbf8;--gb-surface:#fff;--gb-surface-2:#f4f7f0;--gb-line:#e0e8e0;--gb-ink:#142f39;--gb-muted:#5d6f66;
  --gb-accent:#087f5b;--gb-accent-ink:#fff;--gb-glow:#ffdf0033;
  --gb-r-n:#c7e5cf;--gb-r-ne:#e4edbf;--gb-r-co:#a9d6bf;--gb-r-se:#cadcf2;--gb-r-s:#a9c4e8;
  --gb-tricolor:linear-gradient(90deg,var(--br-verde) 0 42%,var(--br-amarelo) 42% 58%,var(--br-azul-2) 58% 100%);
}

/* ---------- Tipografia: família do Padrão Digital de Governo, sem a identidade gov.br ---------- */
body,body *:not(code):not(pre):not(kbd):not(samp){font-family:var(--gb-font)!important}
body{font-feature-settings:"lnum" 1,"pnum" 1;text-rendering:optimizeLegibility}
h1,h2,h3{letter-spacing:-.02em!important}
.hero-copy h1{font-weight:700!important;letter-spacing:-.035em!important;line-height:1.06!important}
.section-heading h2,.pagehero h1{font-weight:700!important}
/* Piso de legibilidade: a 4.2 usava 8–10 px em rótulos; Rawline pede corpo maior. */
.eyebrow,.hero-label,.journey-number,.badge{font-size:11px!important;letter-spacing:.12em!important}
.hero-assurances,.region-card small,.eco-scene-note,.search-dock-heading>span,.popular-searches,.bid-meta,.footer-bottom,.topline{font-size:12px!important}
.journey-card p,.service-card p,.section-heading p,.hero-copy>p,.gabo-final-cta p{font-size:14.5px!important;line-height:1.65!important}
.nav a{font-size:13.5px!important}
.btn{font-size:13.5px!important;font-weight:700!important;letter-spacing:.005em}
.price,.state-code,.gb-info-code{font-variant-numeric:lining-nums tabular-nums}

/* ---------- Faixa tricolor discreta ---------- */
.utility-bar{position:relative}
.utility-bar:before{content:'';position:absolute;left:0;right:0;top:0;height:3px;background:var(--gb-tricolor);z-index:2}
.footer{position:relative}
.footer:before{content:'';position:absolute;left:0;right:0;top:0;height:4px;background:var(--gb-tricolor)}
.hero-copy h1 em{background:linear-gradient(transparent 78%,var(--gb-glow) 78% 94%,transparent 94%);padding-inline:2px}

/* ---------- Herói: esfera celeste por trás da Eco ---------- */
.gabo-hero:after{content:'';position:absolute;right:-8%;top:-30%;width:62%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 50% 50%,#ffdf0024,transparent 60%);pointer-events:none}
.eco-scene .orbit-one{background:radial-gradient(circle at 38% 32%,#1d4f9a,#0b2d66 62%,#061a3d);border:0;box-shadow:0 30px 60px #0b2d6630,inset 0 0 0 1px #ffffff1f;overflow:hidden}
.eco-scene .orbit-two{border-color:#009c3b55;border-width:1.5px}
.gb-hero-sky{position:absolute;width:360px;height:360px;left:50%;top:50%;transform:translate(-50%,-50%);z-index:0;pointer-events:none;border-radius:50%;overflow:hidden}
.gb-hero-sky svg{width:100%;height:100%;display:block}
.gb-hero-sky .gb-band{fill:none;stroke:#fff;stroke-opacity:.9;stroke-width:15}
.gb-hero-sky .gb-twinkle{fill:#fff;animation:gb-twinkle 3.2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes gb-twinkle{0%,100%{opacity:.95}50%{opacity:.35}}
.eco-character{z-index:2}
.eco-character img{filter:drop-shadow(0 26px 22px #06204a40)!important}
@media(max-width:1200px){.gb-hero-sky{width:310px;height:310px}}
@media(max-width:980px){.gb-hero-sky{width:260px;height:260px}}
@media(max-width:760px){.gb-hero-sky{width:250px;height:250px}}

/* ---------- Mapa + céu ---------- */
.gb-brasil{--gb-stage-bg:linear-gradient(160deg,#f3f8ef,#eef4f9);position:relative}
.gb-brasil-head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:28px}
.gb-brasil-head h2{font-size:clamp(28px,3vw,40px);margin:0}
.gb-brasil-head p{max-width:420px;margin:0;color:var(--gb-muted);font-size:14.5px}
.gb-stage{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.9fr);gap:0;border:1px solid var(--gb-line);border-radius:24px;overflow:hidden;background:var(--gb-stage-bg);box-shadow:0 24px 60px #0b2d6612}
.gb-map{position:relative;padding:28px 28px 64px}
.gb-map-svg{width:100%;height:auto;max-height:560px;display:block;overflow:visible}
.gb-map-svg path{stroke:#fff;stroke-width:1.1;stroke-linejoin:round;cursor:pointer;transition:fill .25s,opacity .25s,transform .25s;outline:none;transform-box:fill-box;transform-origin:center}
.gb-map-svg .gb-r-n{fill:var(--gb-r-n)}.gb-map-svg .gb-r-ne{fill:var(--gb-r-ne)}.gb-map-svg .gb-r-co{fill:var(--gb-r-co)}.gb-map-svg .gb-r-se{fill:var(--gb-r-se)}.gb-map-svg .gb-r-s{fill:var(--gb-r-s)}
.gb-map-svg path:hover,.gb-map-svg path.is-on{fill:var(--br-amarelo);stroke:var(--br-azul);stroke-width:1.4}
.gb-map-svg path:focus-visible{stroke:var(--br-azul);stroke-width:3}
.gb-map-svg[data-region] path{opacity:.28}
.gb-map-svg[data-region=n] .gb-r-n,.gb-map-svg[data-region=ne] .gb-r-ne,.gb-map-svg[data-region=co] .gb-r-co,.gb-map-svg[data-region=se] .gb-r-se,.gb-map-svg[data-region=s] .gb-r-s{opacity:1}
.gb-brasil.is-visible .gb-map-svg path{animation:gb-rise .7s both}
.gb-brasil.is-visible .gb-map-svg path:nth-child(3n){animation-delay:.08s}.gb-brasil.is-visible .gb-map-svg path:nth-child(3n+1){animation-delay:.16s}
@keyframes gb-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.gb-legend{position:absolute;left:28px;bottom:20px;display:flex;flex-wrap:wrap;gap:6px}
.gb-legend-item{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--gb-line);background:var(--gb-surface);color:var(--gb-ink);border-radius:30px;padding:6px 12px;font-size:12px;font-weight:600}
.gb-legend-item i{width:11px;height:11px;border-radius:3px;display:block}
.gb-legend-item .gb-r-n{background:var(--gb-r-n)}.gb-legend-item .gb-r-ne{background:var(--gb-r-ne)}.gb-legend-item .gb-r-co{background:var(--gb-r-co)}.gb-legend-item .gb-r-se{background:var(--gb-r-se)}.gb-legend-item .gb-r-s{background:var(--gb-r-s)}
.gb-panel{background:linear-gradient(180deg,#071c40,#0b2d66 70%,#0d3a7c);color:#eaf1fb;padding:30px 28px;display:flex;flex-direction:column;gap:22px;position:relative}
.gb-panel:after{content:'';position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--gb-tricolor)}
.gb-sky{width:min(100%,300px);margin-inline:auto}
.gb-sky-svg{width:100%;height:auto;display:block;overflow:visible}
.gb-sky-svg .gb-band{fill:none;stroke:#fff;stroke-opacity:.13;stroke-width:13}
.gb-sky-rim{fill:none;stroke:#ffffff2e;stroke-width:.8}
.gb-star path{fill:#fff;transition:fill .25s,transform .3s;transform-box:fill-box;transform-origin:center}
.gb-star .gb-star-halo{fill:#ffdf00;opacity:0;transition:opacity .3s}
.gb-star[data-uf=PI] path{fill:#ffd2b8}
.gb-star{cursor:pointer}
.gb-star.is-on path{fill:var(--br-amarelo);transform:scale(1.9)}
.gb-star.is-on .gb-star-halo{opacity:.35}
.gb-brasil.has-selection .gb-star:not(.is-on) path{opacity:.5}
.gb-brasil.is-visible .gb-star path{animation:gb-twinkle 4s ease-in-out infinite}
.gb-brasil.is-visible .gb-star:nth-child(odd) path{animation-delay:1.3s}
.gb-brasil.is-visible .gb-star:nth-child(3n) path{animation-delay:2.1s}
.gb-star.is-on path{animation:none!important}
.gb-info{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start;min-height:150px}
.gb-info-flag img{width:64px;height:45px;object-fit:cover;border-radius:6px;box-shadow:0 0 0 1px #ffffff40,0 8px 18px #0006;display:block}
.gb-info-body{display:flex;flex-direction:column;gap:3px}
.gb-info-code{font-size:11px;font-weight:700;letter-spacing:.14em;color:#ffdf00;text-transform:uppercase}
.gb-info-body strong{font-size:24px;line-height:1.15;font-weight:700;color:#fff;letter-spacing:-.02em}
.gb-info-body small{color:#b8c8e0;font-size:13px}
.gb-info-star{margin:10px 0 14px!important;font-size:13px;color:#dbe6f6!important}
.gb-brasil .gb-info .btn,.gb-brasil .gb-info .btn.green{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;padding:11px 17px;border-radius:10px;text-decoration:none;font-weight:700;background:var(--br-amarelo)!important;color:#0b2346!important;border:0!important}
.gb-brasil .gb-info .btn.green:hover,.gb-brasil .gb-info .btn:hover{background:#fff!important;color:#0b2346!important}
.gb-brasil .gb-info .btn .ico{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.gb-chips{display:flex;gap:8px;overflow-x:auto;padding:16px 2px 6px;scrollbar-width:thin;scroll-snap-type:x proximity}
.gb-chip{flex:none;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--gb-line);background:var(--gb-surface);border-radius:10px;padding:7px 11px 7px 8px;font-size:12.5px;font-weight:700;color:var(--gb-ink);scroll-snap-align:start;transition:border-color .2s,transform .2s}
.gb-chip img{width:24px;height:17px;object-fit:cover;border-radius:3px;box-shadow:0 0 0 1px #0000001a}
.gb-chip:hover,.gb-chip.is-on{border-color:var(--br-verde);transform:translateY(-2px);color:var(--gb-ink)}
.gb-credit{font-size:11.5px;color:var(--gb-muted);margin:10px 0 0!important;line-height:1.5}
.gb-brasil-estados{margin-bottom:34px}
.state-item{display:flex!important;align-items:center;gap:14px}
.state-item>div{flex:1}
.gb-flag{width:44px;height:31px;object-fit:cover;border-radius:5px;box-shadow:0 0 0 1px #0000001a,0 3px 8px #0b2d6614;flex:none}
@media(max-width:980px){.gb-stage{grid-template-columns:1fr}.gb-brasil-head{flex-direction:column;align-items:flex-start;gap:12px}.gb-panel{display:grid;grid-template-columns:150px 1fr;align-items:center;gap:18px}.gb-sky{width:150px}}
@media(max-width:560px){.gb-map{padding:16px 12px 92px}.gb-legend{left:12px;right:12px;bottom:14px}.gb-panel{grid-template-columns:1fr;padding:24px 20px}.gb-sky{width:190px}.gb-info-body strong{font-size:21px}.gb-stage{border-radius:18px}}

/* ---------- Alternância de tema ---------- */
.gb-theme-toggle{display:inline-flex;align-items:center;gap:6px;border:1px solid #d4e0d8;background:transparent;color:inherit;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:600;min-height:32px}
.gb-theme-toggle svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.gb-theme-toggle .gb-sun{display:none}
[data-theme=dark] .gb-theme-toggle .gb-sun{display:block}[data-theme=dark] .gb-theme-toggle .gb-moon{display:none}
@media(max-width:620px){.gb-theme-toggle span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}}

/* ---------- Painel administrativo: segunda etapa ---------- */
.admin-auth{max-width:620px}
.admin-step{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#087f5b;background:#e8f4ec;border-radius:20px;padding:5px 11px;margin-bottom:10px}
.admin-auth h2{margin:6px 0 4px;font-size:22px}
.admin-auth-note{font-size:13px;color:#5d6f66}
.totp-enroll{display:grid;grid-template-columns:190px 1fr;gap:20px;align-items:center;margin:14px 0}
.totp-qr{background:#fff;border:1px solid #dce7e1;border-radius:14px;padding:8px}
.totp-qr svg{width:100%;height:auto;display:block}
.totp-secret{display:block;font-size:15px;letter-spacing:.08em;background:#f2f7f4;border-radius:8px;padding:10px 12px;word-break:break-all}
.admin-auth-cancel{margin-top:10px}
.link-button{background:none!important;color:#075d38!important;padding:0!important;text-decoration:underline;font-weight:600}
@media(max-width:560px){.totp-enroll{grid-template-columns:1fr}.totp-qr{max-width:220px}}

/* =====================================================================
   Tema noturno — o céu da bandeira como fundo. Contraste mínimo AA.
   ===================================================================== */
[data-theme=dark]{
  color-scheme:dark;
  --navy:#e9f0fa;--navy-2:#c9d7ea;--navy-dark:#f4f8fd;--ink:#dfe8f4;--muted:#a3b4c8;--line:#21406b;--light:#0e2448;--cream:#081a36;--surface:#0d2346;
  --green:#34d399;--green-dark:#2bbd88;--gold:#ffdf00;--shadow:0 18px 44px #0006;
  --gb-bg:#06142b;--gb-surface:#0c2145;--gb-surface-2:#0a1c3c;--gb-line:#21406b;--gb-ink:#e3ebf6;--gb-muted:#a3b4c8;--gb-glow:#ffdf0040;
  --gb-r-n:#17604a;--gb-r-ne:#4d6b2a;--gb-r-co:#1f7a69;--gb-r-se:#1d4c86;--gb-r-s:#2c5fa3;
}
[data-theme=dark] body{background:var(--gb-bg)!important;color:var(--gb-ink)!important;
  background-image:radial-gradient(1px 1px at 12% 18%,#ffffff55 50%,transparent 51%),radial-gradient(1px 1px at 72% 9%,#ffffff40 50%,transparent 51%),radial-gradient(1.5px 1.5px at 88% 34%,#ffffff35 50%,transparent 51%),radial-gradient(1px 1px at 33% 62%,#ffffff30 50%,transparent 51%)!important;background-attachment:fixed!important}
[data-theme=dark] :is(h1,h2,h3,h4,strong){color:#f2f6fc}
[data-theme=dark] :is(p,small,li,.muted,.crumb){color:var(--gb-muted)}
[data-theme=dark] a:hover{color:#6ee7b7}
[data-theme=dark] .utility-bar{background:#040f22!important;border-color:#16305a!important;color:#c9d6e8}
[data-theme=dark] .utility-bar a,[data-theme=dark] .utility-bar button,[data-theme=dark] .utility-bar select{color:#dbe5f2!important;background-color:transparent!important;border-color:#2a4a78!important}
[data-theme=dark] .utility-bar select option{background:#0c2145}
[data-theme=dark] .topline{background:#071a36!important;color:#b9c8dc!important}
[data-theme=dark] .header{background:#06142bf0!important;border-color:#16305a!important}
[data-theme=dark] .nav a{color:#d3deec}
[data-theme=dark] .nav a.active{color:#fff}
[data-theme=dark] .nav a.active:after{background:var(--br-amarelo)!important}
[data-theme=dark] .mobile-nav{background:#081a36!important;border-color:#16305a!important}
[data-theme=dark] .mobile-nav a{color:#e3ebf6!important;border-color:#16305a!important}
[data-theme=dark] .btn.green,[data-theme=dark] .btn.primary{background:#10a56e!important;border-color:#10a56e!important;color:#fff!important}
[data-theme=dark] .btn.green:hover{background:#13bd7f!important}
[data-theme=dark] :is(.btn.secondary,.btn.light,.btn.ghost,.btn.outline){background:#0f2850!important;border-color:#2a4a78!important;color:#e3ebf6!important}
[data-theme=dark] .gabo-hero{background:linear-gradient(180deg,#071833,#0a2148)!important}
[data-theme=dark] .gabo-hero:before{background:radial-gradient(ellipse at 82% 46%,#16a34a1f,transparent 55%)!important}
[data-theme=dark] .hero-label,[data-theme=dark] .hero-assurances,[data-theme=dark] .hero-copy>p,[data-theme=dark] .eco-scene-note{color:#b7c6da!important}
[data-theme=dark] .hero-copy h1 em{color:#4ade80!important}
[data-theme=dark] .eco-caption,[data-theme=dark] .eco-bubble{background:#0c2145ee!important;border-color:#2a4a78!important;color:#e3ebf6}
[data-theme=dark] .eco-scene .orbit-two{border-color:#ffdf0040}
[data-theme=dark] :is(.search-dock,.panel,.journey-card,.service-card,.region-card,.state-item,.bid-card,.region-feature,.gabo-final-cta,.modal,.card,.resource-card,.law-card,.manage-card,.a11y-panel){background:var(--gb-surface)!important;border-color:var(--gb-line)!important;color:var(--gb-ink)}
[data-theme=dark] :is(.journey-card,.service-card,.state-item,.bid-card,.region-card):hover{border-color:#3b6aa8!important;box-shadow:0 18px 40px #0007!important}
[data-theme=dark] .gabo-search{background:#081a36!important;border-color:var(--gb-line)!important}
[data-theme=dark] :is(input,select,textarea,.form-control,.field input,.field select,.field textarea){background:#081a36!important;color:#e9f0fa!important;border-color:#2a4a78!important}
[data-theme=dark] ::placeholder{color:#8396b0!important}
[data-theme=dark] .gabo-search label>.ico,[data-theme=dark] .search-field>span{color:#9fb3cc!important}
[data-theme=dark] .popular-searches button{background:#0c2145!important;border-color:#2a4a78!important;color:#d6e1ef!important}
[data-theme=dark] :is(.journey-icon,.service-icon){background:#123563!important;color:#6ee7b7!important}
[data-theme=dark] :is(.journey-link,.service-link,.text-link,.eyebrow){color:#4ade80!important}
[data-theme=dark] .journey-number{color:#8ea3be!important}
[data-theme=dark] .gabo-sources{border-color:var(--gb-line)!important}
[data-theme=dark] .gabo-sources a,[data-theme=dark] .gabo-sources span{color:#dfe8f4!important}
[data-theme=dark] .eco-section>.container>div,[data-theme=dark] .eco-feature,[data-theme=dark] .eco-band{background:linear-gradient(140deg,#0b2550,#0a1d3f)!important;border-color:var(--gb-line)!important}
[data-theme=dark] :is(.sec,.gabo-network,.journey-section,.regions-section,.opportunities-section){background:transparent!important}
[data-theme=dark] .pagehero{background:linear-gradient(180deg,#0a1f44,#081a36)!important;border-color:var(--gb-line)!important}
[data-theme=dark] .badge{background:#123563!important;color:#bfe9d4!important;border-color:#24508a!important}
[data-theme=dark] .source-marks{background:#081a36!important;border-color:var(--gb-line)!important}
[data-theme=dark] .source-mark{background:#f4f7fb!important;border-radius:12px;padding:10px 12px!important}
[data-theme=dark] .source-mark span{color:#0b2346!important}
[data-theme=dark] .footer{background:#030c1c!important}
[data-theme=dark] .gb-stage{--gb-stage-bg:linear-gradient(160deg,#0a1f44,#081a36);box-shadow:0 24px 60px #0008}
[data-theme=dark] .gb-map-svg path{stroke:#06142b}
[data-theme=dark] .gb-map-svg path:hover,[data-theme=dark] .gb-map-svg path.is-on{fill:var(--br-amarelo);stroke:#fff}
[data-theme=dark] .gb-panel{background:linear-gradient(180deg,#030c1c,#071c40 70%,#0b2d66)}
[data-theme=dark] .gb-chip img{box-shadow:0 0 0 1px #ffffff26}
[data-theme=dark] .gb-theme-toggle{border-color:#2a4a78}
[data-theme=dark] hr,[data-theme=dark] .footer-bottom{border-color:#ffffff1a!important}
[data-theme=dark] .demo-note,[data-theme=dark] .help-note{background:#0f2850!important;color:#d6e1ef!important;border-color:#2a4a78!important}
[data-theme=dark] table,[data-theme=dark] th,[data-theme=dark] td{border-color:var(--gb-line)!important;color:var(--gb-ink)}
[data-theme=dark] th{background:#0f2850!important}
@media (prefers-reduced-motion:reduce){.gb-hero-sky .gb-twinkle,.gb-star path,.gb-map-svg path{animation:none!important;transition:none!important}}
html[data-a11y-motion=true] :is(.gb-twinkle,.gb-star path,.gb-map-svg path){animation:none!important}
[data-theme=dark] .eco-feature-portrait,[data-theme=dark] .portrait-ring{background:radial-gradient(circle at 40% 35%,#174a8f,#0a2550 65%,#061a3d)!important;border-color:#2a4a78!important}
[data-theme=dark] .eco-nameplate{background:#0c2145!important;color:#dfe8f4!important;border-color:#2a4a78!important}
[data-theme=dark] .eco-capabilities span,[data-theme=dark] .eco-feature-copy small{color:#b7c6da!important}
[data-theme=dark] .eco-bubble span,[data-theme=dark] .eco-bubble [data-eco-greeting]{color:#c9d6e8!important}
[data-theme=dark] .utility-language span,[data-theme=dark] .popular-searches>span,[data-theme=dark] .search-dock-heading>span,[data-theme=dark] .gabo-sources>span{color:#b7c6da!important}
[data-theme=dark] :is(.eco-launcher,.eco-fab,[class*=eco-widget-button],[class*=gabo-im-launcher]){background:#0c2145!important;color:#e3ebf6!important;border-color:#2a4a78!important}
[data-theme=dark] :is(.law-official-hub,.law-models,.cta-strip){background:#0a1f44!important;border-color:var(--gb-line)!important;color:var(--gb-ink)}
[data-theme=dark] :is(.law-resource-card,.qa-input,.chip){background:var(--gb-surface)!important;border-color:var(--gb-line)!important;color:var(--gb-ink)!important}
[data-theme=dark] .law-models a{background:#123563!important;color:#e3ebf6!important}
[data-theme=dark] .gabo-im-dialog,[data-theme=dark] .gabo-im-inner{background:#0a1d3f!important;color:#e3ebf6;border-color:#2a4a78!important}
[data-theme=dark] .gabo-im-header{background:#071733!important;border-color:#2a4a78!important}
/* Catálogo PHP (/licitacoes, /licitacoes/uf, edital) */
.wrap>.gb-brasil-estados{margin:0 0 22px;grid-column:1/-1}
[data-theme=dark] body>header,[data-theme=dark] header{background:#06142bf0!important;border-color:#16305a!important}
[data-theme=dark] header nav a{color:#d3deec!important}
[data-theme=dark] .hero{background:linear-gradient(180deg,#0a1f44,#081a36)!important;border-color:var(--gb-line)!important}
[data-theme=dark] .hero h1{color:#f2f6fc!important}
[data-theme=dark] .hero .small,[data-theme=dark] .hero .crumb{color:#b7c6da!important}
[data-theme=dark] .hero .flag{opacity:.22}
[data-theme=dark] label{color:#c3d0e2!important}
[data-theme=dark] main a:not(.btn):not(.button):not(.gb-chip){color:#6ee7b7}
[data-theme=dark] .source-strip{background:#081a36!important;border-color:var(--gb-line)!important}
[data-theme=dark] .source-strip a{background:#f4f7fb;border-radius:10px;padding:8px 10px;color:#0b2346!important}
[data-theme=dark] footer{background:#030c1c!important}
.gb-chip,.gb-chip:hover{text-decoration:none!important}
@media(max-width:760px){.hero-copy h1{font-size:clamp(28px,7.9vw,40px)!important}}
[data-theme=dark] .preview-controls{background:#040f22!important;border-color:#16305a!important;color:#c9d6e8!important}
[data-theme=dark] .preview-controls :is(strong,span,small,p){color:#c9d6e8!important}
[data-theme=dark] .preview-controls :is(a,button){background:#0c2145!important;border-color:#2a4a78!important;color:#e3ebf6!important}
[data-theme=dark] .preview-controls :is(a,button)[aria-current],[data-theme=dark] .preview-controls :is(a,button).active{background:#10a56e!important;color:#fff!important}
.gb-theme-toggle:disabled{opacity:.55;cursor:not-allowed}

/* =====================================================================
   4.3.1 — versão sutil (menos cor, menos elementos, mesma ideia)
   ===================================================================== */
.hero-copy h1 em,[data-theme=dark] .hero-copy h1 em{background:none!important;padding:0}
:root:not([data-theme=dark]) .eco-scene .orbit-one{background:radial-gradient(circle at 38% 30%,#f7fafd,#e3ecf7 58%,#d3e0f0)!important;box-shadow:0 24px 50px #0b2d6612,inset 0 0 0 1px #fff!important}
:root:not([data-theme=dark]) .gb-hero-sky .gb-band{stroke:#fff;stroke-opacity:1;stroke-width:11}
:root:not([data-theme=dark]) .gb-hero-sky .gb-twinkle{fill:#0b3d91;opacity:.35}
:root:not([data-theme=dark]) .eco-scene .orbit-two{border-color:#9bb98040}
.gabo-hero:after{opacity:.5}
[data-theme=dark] .eco-scene .orbit-one{background:radial-gradient(circle at 38% 30%,#173f7a,#0c2a57 62%,#081d40)!important}
[data-theme=dark] .gb-hero-sky .gb-band{stroke-opacity:.35}
.gb-hero-sky .gb-twinkle{animation-duration:5s}
/* Seção Brasil: mapa monocromático e painel leve */
.gb-brasil{--gb-map:#e2ece2;--gb-map-on:#087f5b}
[data-theme=dark] .gb-brasil{--gb-map:#163559;--gb-map-on:#22a06b}
.gb-map-svg path,.gb-map-svg :is(.gb-r-n,.gb-r-ne,.gb-r-co,.gb-r-se,.gb-r-s){fill:var(--gb-map)!important}
.gb-map-svg path{stroke:var(--gb-surface,#fff)!important;stroke-width:1!important}
.gb-map-svg path:hover,.gb-map-svg path.is-on,[data-theme=dark] .gb-map-svg path:hover,[data-theme=dark] .gb-map-svg path.is-on{fill:var(--gb-map-on)!important;stroke:#fff!important}
.gb-brasil.is-visible .gb-map-svg path{animation:none}
.gb-stage{grid-template-columns:minmax(0,1.4fr) minmax(280px,.8fr);background:var(--gb-surface)!important;box-shadow:none!important;border-radius:20px}
.gb-map{padding:26px 30px}
.gb-map-svg{max-height:430px;margin-inline:auto;width:auto;max-width:100%}
.gb-panel,[data-theme=dark] .gb-panel{background:var(--gb-surface-2)!important;color:var(--gb-ink);border-left:1px solid var(--gb-line);gap:18px;justify-content:center}
.gb-panel:after{display:none}
.gb-sky{width:min(100%,190px)}
.gb-sky-svg .gb-band{stroke-opacity:.1}
.gb-brasil.is-visible .gb-star path{animation:none}
.gb-brasil.has-selection .gb-star:not(.is-on) path{opacity:.6}
.gb-info{min-height:132px;gap:14px}
.gb-info-flag img{width:52px;height:36px;box-shadow:0 0 0 1px #0000001a!important}
.gb-info-code{color:var(--gb-accent)!important;font-size:10.5px}
[data-theme=dark] .gb-info-code{color:#6ee7b7!important}
.gb-info-body strong{font-size:21px;color:var(--gb-ink)!important}
.gb-info-body small,.gb-info-star{color:var(--gb-muted)!important}
.gb-info-star{font-size:12.5px;margin:6px 0 12px!important}
.gb-brasil .gb-info .btn,.gb-brasil .gb-info .btn.green{background:transparent!important;color:var(--gb-accent)!important;border:1px solid currentColor!important;padding:8px 14px;font-size:13px!important}
[data-theme=dark] .gb-brasil .gb-info .btn{color:#6ee7b7!important}
.gb-brasil .gb-info .btn:hover,.gb-brasil .gb-info .btn.green:hover{background:var(--gb-accent)!important;color:#fff!important;border-color:var(--gb-accent)!important}
.gb-credit{font-size:11px;opacity:.85}
@media(max-width:980px){.gb-panel{border-left:0;border-top:1px solid var(--gb-line)}.gb-sky{width:130px}}
@media(max-width:560px){.gb-map{padding:16px 12px}.gb-panel{grid-template-columns:110px 1fr!important;padding:18px}.gb-sky{width:110px}}
/* Esboço da bandeira estadual (traço) */
.hero{position:relative;overflow:hidden}
.hero img.flag.gb-esboco{filter:url(#gb-esboco);opacity:.6!important;transform:translateY(-50%) rotate(-4deg);right:7%;top:50%;width:min(30vw,300px);height:auto;aspect-ratio:3/2;-webkit-mask-image:linear-gradient(100deg,transparent 0,#000 35%,#000 75%,transparent);mask-image:linear-gradient(100deg,transparent 0,#000 35%,#000 75%,transparent)}
.pagehero{position:relative;overflow:hidden}
.pagehero:has(.gb-esboco-spa) :is(.flag-sketch,.flag-watermark){display:none!important}
.gb-esboco-spa{position:absolute;right:7%;top:50%;width:min(30vw,300px);aspect-ratio:3/2;object-fit:contain;transform:translateY(-50%) rotate(-4deg);filter:url(#gb-esboco);opacity:.55;pointer-events:none;-webkit-mask-image:linear-gradient(100deg,transparent 0,#000 35%,#000 75%,transparent);mask-image:linear-gradient(100deg,transparent 0,#000 35%,#000 75%,transparent)}
[data-theme=dark] :is(.hero img.flag.gb-esboco,.gb-esboco-spa){filter:url(#gb-esboco-noite);opacity:.5!important}
@media(max-width:760px){.hero img.flag.gb-esboco,.gb-esboco-spa{opacity:.28!important;width:62vw;right:-10%}}
/* Idioma por bandeiras */
.gb-lang-host>span,.gb-lang-host>select{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap;border:0!important;padding:0!important}
.gb-lang{display:inline-flex;gap:4px;align-items:center}
.gb-lang button{display:inline-grid;place-items:center;width:34px;height:30px;padding:0;border:1px solid transparent;border-radius:8px;background:transparent;cursor:pointer;transition:border-color .2s,opacity .2s}
.gb-lang button svg{width:24px;height:17px;border-radius:3px;box-shadow:0 0 0 1px #0000001f;display:block}
.gb-lang button[aria-pressed=false]{opacity:.55}
.gb-lang button:hover{opacity:1}
.gb-lang button[aria-pressed=true]{border-color:#c9d8cc;background:#fff;opacity:1}
[data-theme=dark] .gb-lang button[aria-pressed=true]{background:#0c2145!important;border-color:#2a4a78!important}
[data-theme=dark] .gb-lang button{background:transparent!important;border-color:transparent}
/* Botão da Eco à direita */
.gabo-im[data-gabo-im],.gabo-im{left:auto!important;right:max(18px,env(safe-area-inset-right))!important;align-items:flex-end!important}
@media(max-width:760px){.gabo-im[data-gabo-im],.gabo-im{right:14px!important}}
/* Eco viva (assets/eco-vida.js) */
.eco-rig{position:relative;width:100%;aspect-ratio:660/603;filter:drop-shadow(0 24px 20px #0b2d6626);--eco-lx:0px;--eco-ly:0px;--eco-hr:0deg;--eco-hx:0px;--eco-hy:0px;user-select:none;-webkit-user-select:none}
.eco-rig img,.eco-rig svg{position:absolute;inset:0;width:100%;height:100%;display:block;transform:none;filter:none!important;pointer-events:none}
.eco-character .eco-rig img{transform:none!important}
.eco-rig-body{animation:eco-breathe 4.2s ease-in-out infinite}
.eco-rig-head{position:absolute;inset:0;transform-origin:46.2% 70.5%;transform:translate(var(--eco-hx),var(--eco-hy)) rotate(var(--eco-hr))}
.eco-rig-bob{position:absolute;inset:0;transform-origin:46.2% 70.5%;animation:eco-bob 6.5s ease-in-out infinite}
.eco-rig-leaf{transform-origin:53% 22%!important;animation:eco-leaf 3.6s ease-in-out infinite}
.eco-rig .eco-eye-look{transform:translate(var(--eco-lx),var(--eco-ly))}
.eco-rig .eco-eye{transform-box:fill-box;transform-origin:center;transition:transform .09s ease-in}
.eco-rig.is-blink .eco-eye{transform:scaleY(.08)}
.eco-rig .eco-eye-open{opacity:0;transform:scale(.6);transform-box:fill-box;transform-origin:center;transition:opacity .25s,transform .25s}
.eco-rig .eco-eye-happy{transition:opacity .25s}
.eco-rig[data-state=open] .eco-eye-open{opacity:1;transform:none}
.eco-rig[data-state=open] .eco-eye-happy{opacity:0}
.eco-rig .eco-mouth-talk{opacity:0;transform-box:fill-box;transform-origin:center}
.eco-rig.is-talking .eco-mouth-smile{opacity:0}
.eco-rig.is-talking .eco-mouth-talk{opacity:1;animation:eco-talk .32s ease-in-out infinite alternate}
.eco-rig.is-wiggle .eco-rig-bob{animation:eco-wiggle 1.05s cubic-bezier(.3,.6,.3,1)}
.eco-rig.is-wiggle .eco-rig-leaf{animation:eco-boing 1.1s cubic-bezier(.3,.6,.3,1)}
.eco-rig.is-nod .eco-rig-bob{animation:eco-nod .35s ease-out}
@keyframes eco-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-.6%)}}
@keyframes eco-bob{0%,100%{transform:rotate(-1.2deg) translateY(0)}50%{transform:rotate(1.4deg) translateY(-1%)}}
@keyframes eco-leaf{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(5deg)}}
@keyframes eco-talk{from{transform:scale(1,.25)}to{transform:scale(.9,1.05)}}
@keyframes eco-wiggle{0%{transform:rotate(0)}18%{transform:rotate(-8deg)}38%{transform:rotate(6deg)}58%{transform:rotate(-3.5deg)}78%{transform:rotate(1.5deg)}100%{transform:rotate(0)}}
@keyframes eco-boing{0%{transform:rotate(0)}20%{transform:rotate(16deg)}40%{transform:rotate(-12deg)}60%{transform:rotate(7deg)}80%{transform:rotate(-3deg)}100%{transform:rotate(0)}}
@keyframes eco-nod{0%{transform:rotate(0)}40%{transform:rotate(0) translateY(1.2%)}100%{transform:rotate(0)}}
.eco-feature-portrait .eco-rig{width:min(100%,320px);margin-inline:auto}
html[data-a11y-motion=true] .eco-rig *,html[data-motion-paused=true] .eco-rig *{animation:none!important;transition:none!important}
@media (prefers-reduced-motion:reduce){.eco-rig *{animation:none!important;transition:none!important}}

/* 4.3.2 — Eco do banner: sem flutuação/salto e apoiada na base do círculo.
   Arte 660×603; a base do corpo termina em y≈590 (0,894 da largura). Com largura = diâmetro D,
   o centro do círculo fica a 0,394·D do topo (43,1% da altura) e o deslocamento é 0,063·D.
   A máscara recorta só a metade inferior pelo contorno do círculo; cabeça e folha ficam livres. */
.gabo-hero .eco-scene{--gb-orb:360px}
@media(max-width:1200px){.gabo-hero .eco-scene{--gb-orb:310px}}
@media(max-width:1000px){.gabo-hero .eco-scene{--gb-orb:260px}}
@media(max-width:760px){.gabo-hero .eco-scene{--gb-orb:250px}}
.gabo-hero .gb-hero-sky{width:var(--gb-orb)!important;height:var(--gb-orb)!important}
.gabo-hero .eco-character,.gabo-hero .eco-character.is-greeting{animation:none!important;width:var(--gb-orb)!important;transform:translateY(calc(var(--gb-orb) * .063))!important;border-radius:0}
.gabo-hero .eco-character img{transform:none!important}
.gabo-hero .eco-rig-bob,.gabo-hero .eco-rig-body{animation:none!important}
.gabo-hero .eco-rig{filter:none;
  -webkit-mask:radial-gradient(50% 54.73% at 50% 43.1%,#000 99.4%,transparent 100%),linear-gradient(#000 43.1%,transparent 43.1%);
  mask:radial-gradient(50% 54.73% at 50% 43.1%,#000 99.4%,transparent 100%),linear-gradient(#000 43.1%,transparent 43.1%)}
.gabo-hero .eco-rig-head{filter:drop-shadow(0 10px 12px #0b2d6622)}
.gabo-hero .eco-rig.is-nod .eco-rig-bob{animation:eco-nod-giro .35s ease-out!important}
.gabo-hero .eco-rig.is-wiggle .eco-rig-bob{animation:eco-wiggle 1s ease-in-out!important}
@keyframes eco-nod-giro{0%,100%{transform:rotate(0)}40%{transform:rotate(2.5deg)}}
