@import url("https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap");

:root{
  --gp-red:#ff4b4b;
  --gp-bg:#ffffff;
  --gp-surface:#ffffff;
  --gp-surface-2:#f5f5f7;
  --gp-text:#31333f;
  --gp-muted:#808495;
  --gp-border:rgba(49,51,63,.20);
  --gp-control-border:rgba(49,51,63,.28);
  --gp-hover:rgba(49,51,63,.06);
  --lumo-primary-color:#ff4b4b;
  --lumo-primary-text-color:#ff4b4b;
  --lumo-base-color:var(--gp-bg);
  --lumo-body-text-color:var(--gp-text);
}

html[theme~="dark"]{
  --gp-bg:#0e1117;
  --gp-surface:#262730;
  --gp-surface-2:#1b1d24;
  --gp-text:#fafafa;
  --gp-muted:#b8bcc6;
  --gp-border:rgba(250,250,250,.18);
  --gp-control-border:rgba(250,250,250,.24);
  --gp-hover:rgba(250,250,250,.08);
  --lumo-base-color:#0e1117;
  --lumo-body-text-color:#fafafa;
  --lumo-secondary-text-color:#b8bcc6;
  --lumo-tertiary-text-color:#9ca1ad;
  --lumo-contrast-5pct:rgba(250,250,250,.05);
  --lumo-contrast-10pct:rgba(250,250,250,.10);
  --lumo-contrast-20pct:rgba(250,250,250,.20);
  --lumo-contrast-30pct:rgba(250,250,250,.30);
  --lumo-primary-color:#ff4b4b;
  --lumo-primary-text-color:#ff4b4b;
}

html[theme~="light"]{
  --gp-bg:#ffffff;
  --gp-surface:#ffffff;
  --gp-surface-2:#f5f5f7;
  --gp-text:#31333f;
  --gp-muted:#808495;
  --gp-border:rgba(49,51,63,.20);
  --gp-control-border:rgba(49,51,63,.28);
  --gp-hover:rgba(49,51,63,.06);
  --lumo-base-color:#ffffff;
  --lumo-body-text-color:#31333f;
}

@media (prefers-color-scheme:dark){
  html:not([theme~="light"]):not([theme~="dark"]){
    --gp-bg:#0e1117;
    --gp-surface:#262730;
    --gp-surface-2:#1b1d24;
    --gp-text:#fafafa;
    --gp-muted:#b8bcc6;
    --gp-border:rgba(250,250,250,.18);
    --gp-control-border:rgba(250,250,250,.24);
    --gp-hover:rgba(250,250,250,.08);
    --lumo-base-color:#0e1117;
    --lumo-body-text-color:#fafafa;
    --lumo-secondary-text-color:#b8bcc6;
    --lumo-tertiary-text-color:#9ca1ad;
    --lumo-contrast-5pct:rgba(250,250,250,.05);
    --lumo-contrast-10pct:rgba(250,250,250,.10);
    --lumo-contrast-20pct:rgba(250,250,250,.20);
    --lumo-contrast-30pct:rgba(250,250,250,.30);
  }
}

html,body{margin:0;min-height:100%;background:var(--gp-bg);color:var(--gp-text);font-family:"Source Sans 3","Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
body,.gp-root,.gp-shell{background:var(--gp-bg);color:var(--gp-text)}
.gp-root{min-height:100vh}
.gp-shell{display:flex;flex-direction:column;min-height:100vh;width:100%;max-width:none;padding:0 1rem .78rem;box-sizing:border-box}

/* Cabeçalho: 14 px do topo até o conteúdo do logo (v012: +7 px). */
.gp-main-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:.75rem;min-height:46px;margin:0;padding-top:14px;box-sizing:border-box;width:100%}
.gp-main-title{margin:0;font-size:2.75rem;font-weight:700;line-height:1.2;color:var(--gp-text)}
.gp-logo-pair{position:relative;display:flex;align-items:center;justify-content:flex-end}
.gp-logo{width:180px;height:auto;object-fit:contain;display:block}
.gp-logo-dark{display:none}
html[theme~="dark"] .gp-logo-light{display:none}
html[theme~="dark"] .gp-logo-dark{display:block}
html[theme~="light"] .gp-logo-light{display:block}
html[theme~="light"] .gp-logo-dark{display:none}
@media(prefers-color-scheme:dark){html:not([theme~="light"]):not([theme~="dark"]) .gp-logo-light{display:none}html:not([theme~="light"]):not([theme~="dark"]) .gp-logo-dark{display:block}}

/* Aproxima o cabeçalho das abas sem alterar a altura dos controles. */
.gp-navigation{position:relative;width:100%;min-width:0;margin-top:8px}
.gp-main-tabs{padding-right:0;border-bottom:1px solid var(--gp-border);width:100%;box-sizing:border-box}
.gp-main-tabs vaadin-tab{min-height:48px;padding:0 1rem;font-size:1rem;color:var(--gp-text)}

/* Menu: somente os três pontos, sem moldura, sombra ou fundo. */
.gp-menu-button{position:absolute;right:0;top:7px;width:40px;min-width:40px;max-width:40px;height:40px;min-height:40px;max-height:40px;padding:0!important;margin:0;border:0!important;outline:0!important;background:transparent!important;color:var(--gp-text)!important;font-size:18px;letter-spacing:1px;box-shadow:none!important;z-index:50}
.gp-menu-button::part(label){padding:0;border:0;background:transparent;box-shadow:none}
.gp-menu-button:hover,.gp-menu-button:focus,.gp-menu-button:focus-visible,.gp-menu-button[focused]{border:0!important;outline:0!important;background:transparent!important;box-shadow:none!important}

.gp-content{flex:1;width:100%;min-width:0;padding-top:.72rem;color:var(--gp-text)}
.gp-footer{text-align:center;color:var(--gp-muted);font-size:14px;padding:3rem 0 .4rem}
.gp-title-row{display:grid;grid-template-columns:minmax(0,8.9fr) minmax(128px,1.1fr);align-items:center;gap:.75rem;width:100%;min-height:46px;margin:0;padding:0;box-sizing:border-box}
.gp-title-row-static{grid-template-columns:minmax(0,8.9fr) minmax(128px,1.1fr)}
.gp-title-row-static>.gp-section-title{grid-column:1}
.gp-section-title{font-size:1.75rem;font-weight:600;margin:0;color:var(--gp-text)}
.gp-new-button{width:calc(100% - 10px);margin-left:auto;transform:translateY(5px)}
.gp-toolbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 40px;gap:1rem;align-items:end;width:100%}
.gp-toolbar>vaadin-text-field{grid-column:1}
.gp-toolbar>.gp-filter-button{grid-column:4;width:40px;height:40px;padding:0}
.gp-sync-status{display:block;text-align:right;font-size:.82rem;color:var(--gp-muted);margin:.15rem 0 .35rem}
.gp-sync-status[theme~="online"]{color:#16853f}

vaadin-grid{font-size:14px;background:var(--gp-bg);color:var(--gp-text);--vaadin-grid-cell-background:var(--gp-bg);--vaadin-grid-row-stripe-background:var(--gp-surface-2)}
vaadin-grid::part(header-cell){background:var(--gp-bg);color:var(--gp-text)}
vaadin-grid::part(body-cell){color:var(--gp-text)}
vaadin-text-field::part(input-field),vaadin-password-field::part(input-field),vaadin-date-picker::part(input-field),vaadin-select::part(input-field),vaadin-multi-select-combo-box::part(input-field),vaadin-integer-field::part(input-field){background:var(--gp-surface);color:var(--gp-text);border-color:var(--gp-control-border)}
vaadin-dialog-overlay::part(overlay),vaadin-popover-overlay::part(overlay),vaadin-context-menu-overlay::part(overlay){background:var(--gp-surface);color:var(--gp-text)}
vaadin-dialog-overlay::part(header),vaadin-dialog-overlay::part(content),vaadin-dialog-overlay::part(footer){background:var(--gp-surface);color:var(--gp-text)}

.gp-summary-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;align-items:end;width:100%}
.gp-summary-filters-month{grid-template-columns:repeat(2,minmax(0,1fr))}
.gp-tab-controls{margin:.28rem 0 .65rem!important;padding:0!important;box-sizing:border-box}
.gp-kpis{display:grid;grid-template-columns:1.05fr 1.05fr .9fr .95fr 1.55fr;margin:.5rem 0;width:100%}
.gp-kpi{padding:.2rem 1rem .4rem 0}.gp-kpi>span{color:var(--gp-muted);font-size:.875rem}.gp-kpi>h3{margin:.1rem 0;font-size:1.55rem;color:var(--gp-text)}
.gp-inner-tabs{border-bottom:1px solid var(--gp-border);margin-top:.2rem}.gp-inner-tabs vaadin-tab{color:var(--gp-text)}

.gp-login-page{display:flex;min-height:100vh;align-items:center;justify-content:center;background:var(--gp-bg)}
.gp-login-card{width:min(330px,calc(100vw - 32px));display:flex;flex-direction:column;gap:.55rem}
.gp-login-card .gp-logo-pair{align-self:center}
.gp-login-logo{width:180px;height:auto;align-self:center;margin-bottom:.35rem}
.gp-login-error{color:#d33;font-size:.85rem;min-height:1.1rem}

/* Filtros no padrão do app Python: dropdown compacto, campos em uma coluna. */
.gp-filter-button{position:relative;border-radius:.5rem}
.gp-filter-button.gp-filter-active::after{content:"";position:absolute;right:4px;top:4px;width:7px;height:7px;border-radius:50%;background:var(--gp-red);box-shadow:0 0 0 2px var(--gp-bg);pointer-events:none}
.gp-filter-popover::part(content){padding:0}
.gp-filter-popover::part(overlay){border:1px solid var(--gp-border);border-radius:.65rem;background:var(--gp-surface);box-shadow:0 8px 26px rgba(0,0,0,.18);overflow:hidden}
.gp-filter-dropdown{box-sizing:border-box;width:100%;max-height:min(72dvh,620px);min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding:.72rem;background:var(--gp-surface);color:var(--gp-text);scrollbar-width:thin;scrollbar-gutter:stable}
.gp-filter-dropdown-grid{display:grid;grid-template-columns:1fr;gap:.12rem;width:100%;box-sizing:border-box}
.gp-filter-dropdown-grid>*{width:100%;min-width:0;box-sizing:border-box}
.gp-filter-dropdown-actions{position:sticky;bottom:0;z-index:8;margin-top:.66rem;padding:.58rem 0 .08rem;border-top:1px solid var(--gp-border);background:var(--gp-surface);box-shadow:0 -8px 12px var(--gp-surface)}
.gp-filter-popover-refugo::part(overlay){max-height:min(74dvh,600px)}
.gp-filter-popover-refugo::part(content){max-height:min(74dvh,600px);overflow:hidden}
.gp-filter-dropdown-refugo{max-height:min(68dvh,560px);overflow-y:auto}
.gp-filter-clear{width:100%;background:var(--gp-modal-uniform-v058)!important;color:var(--gp-text)!important}
.gp-filter-multiselect{--vaadin-input-field-background:var(--gp-surface);--vaadin-input-field-border-color:var(--gp-control-border)}
.gp-filter-multiselect::part(input-field){min-height:40px;border:1px solid var(--gp-control-border);border-radius:.5rem;background:var(--gp-surface)}
vaadin-multi-select-combo-box-chip{--lumo-primary-color:var(--gp-red);font-size:.78rem}

/* Campo de período e calendário de intervalo inspirado no componente Python. */
.gp-period-picker{display:block;width:100%;min-width:0;color:var(--gp-text)}
.gp-period-label{display:block;margin:0 0 .35rem;font-size:.875rem;line-height:1.25rem;font-weight:400;color:var(--gp-text)}
.gp-period-field{width:100%;min-width:0;min-height:40px;margin:0;padding:.45rem .7rem!important;display:flex;align-items:center;justify-content:space-between!important;gap:.6rem;border:1px solid var(--gp-control-border)!important;border-radius:.5rem!important;background:var(--gp-surface)!important;color:var(--gp-text)!important;font-weight:400!important;box-shadow:none!important}
.gp-period-field::part(label){flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gp-period-field:hover{border-color:color-mix(in srgb,var(--gp-text) 42%,transparent)!important}
.gp-period-field:focus-visible{border-color:var(--gp-red)!important;box-shadow:0 0 0 1px var(--gp-red)!important}
.gp-period-field vaadin-icon{opacity:.72;width:18px;height:18px}
.gp-period-popover::part(content){padding:0}
.gp-period-popover::part(overlay){border:1px solid var(--gp-border);border-radius:.65rem;background:var(--gp-bg);box-shadow:0 8px 26px rgba(0,0,0,.18);overflow:hidden}
.gp-period-panel{width:100%;margin:0;padding:.75rem;box-sizing:border-box;border:0;border-radius:0;background:var(--gp-bg);color:var(--gp-text);box-shadow:none}
.gp-period-header{display:grid;grid-template-columns:32px minmax(0,1fr) 88px 32px;gap:.35rem;align-items:center;margin-bottom:.65rem}
.gp-period-nav{width:32px;min-width:32px;height:32px;min-height:32px;padding:0!important;color:var(--gp-text)!important}
.gp-period-month,.gp-period-year{width:100%;min-width:0;--vaadin-input-field-background:var(--gp-surface-2);--vaadin-input-field-border-color:transparent}
.gp-period-month::part(input-field),.gp-period-year::part(input-field){min-height:32px;border-radius:.45rem;background:var(--gp-surface-2);border:1px solid transparent}
.gp-period-weekdays,.gp-period-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;width:100%}
.gp-period-weekdays{margin-bottom:.2rem}
.gp-period-weekday{text-align:center;padding:.2rem 0;font-size:.76rem;opacity:.62;font-weight:600;color:var(--gp-text)}
.gp-period-day{position:relative;width:100%;min-width:0;aspect-ratio:1/1;min-height:30px;height:auto;padding:0!important;border:0!important;border-radius:50%!important;background:transparent!important;color:var(--gp-text)!important;font-weight:400!important;box-shadow:none!important}
.gp-period-day:hover:not([disabled]){background:var(--gp-hover)!important}
.gp-period-day[disabled]{opacity:.22}
.gp-period-day.gp-period-outside{opacity:.28}
.gp-period-day.gp-period-in-range{border-radius:0!important;background:color-mix(in srgb,var(--gp-red) 14%,transparent)!important}
.gp-period-day.gp-period-start,.gp-period-day.gp-period-end{border-radius:50%!important;background:var(--gp-red)!important;color:#fff!important;opacity:1}
.gp-period-footer{display:flex;justify-content:flex-end;margin-top:.55rem}
.gp-period-clear{min-height:32px;padding:.25rem .55rem!important;font-size:.82rem;color:var(--gp-text)!important}

/* Calendários de formulários usam o mesmo componente dos filtros. */
.gp-unified-date-picker-v081 .gp-period-field{
  height:40px;
  min-height:40px;
  max-height:40px;
  box-sizing:border-box;
}
.gp-period-picker.gp-period-readonly .gp-period-field[disabled]{
  opacity:1!important;
  cursor:default!important;
  background:var(--gp-modal-uniform-v058)!important;
  color:var(--gp-text)!important;
  border-color:var(--gp-control-border)!important;
}

/* DatePicker simples (Dia, formulários e resumos) no mesmo acabamento do calendário. */
.gp-date-picker::part(input-field){min-height:40px;border:1px solid var(--gp-control-border);border-radius:.5rem;background:var(--gp-surface);box-shadow:none}
vaadin-date-picker-overlay::part(overlay){background:var(--gp-bg);color:var(--gp-text);border:1px solid var(--gp-border);border-radius:.65rem;box-shadow:0 8px 26px rgba(0,0,0,.18)}
vaadin-date-picker-overlay-content{background:var(--gp-bg);color:var(--gp-text)}

/* Lançamento: mesma estrutura do renderizar_campos_edicao da v723. */
.gp-launch-form-python{display:flex;flex-direction:column;gap:.45rem;width:100%;box-sizing:border-box}
.gp-launch-row{display:grid;width:100%;box-sizing:border-box;gap:1rem;align-items:end}
.gp-launch-row-date{grid-template-columns:1fr}
.gp-launch-row-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.gp-launch-row-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.gp-launch-row-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.gp-launch-shift-column{display:flex;flex-direction:column;gap:.35rem;min-width:0}
.gp-launch-row-observations{grid-template-columns:1fr}
.gp-launch-row>*,.gp-launch-shift-column>*{width:100%;min-width:0}
.gp-launch-time{font-size:.83rem;color:var(--gp-muted);margin:-.1rem 0 .1rem}
.gp-launch-dialog-actions{gap:.75rem;width:100%}
.gp-launch-dialog-actions>vaadin-button{flex:1 1 0;min-width:0}

@media(max-width:767px),(hover:none) and (pointer:coarse) and (max-width:1024px){
  .gp-shell{padding:0 .65rem 1.5rem}
  .gp-main-header{min-height:45px;column-gap:.45rem;padding-top:14px}
  .gp-main-title{font-size:clamp(1rem,4.5vw,1.45rem);white-space:normal}
  .gp-logo{width:clamp(78px,24vw,112px);max-width:28vw}
  .gp-navigation{margin-top:8px}
  .gp-main-tabs{width:100%;padding-right:0;overflow-x:auto}.gp-main-tabs vaadin-tab{min-height:42px;padding:0 .55rem;font-size:.78rem}
  .gp-menu-button{top:6px}
  .gp-content{padding-top:.55rem}
  .gp-title-row{grid-template-columns:minmax(0,1fr) auto;gap:6px}.gp-section-title{font-size:1.05rem;white-space:nowrap}
  .gp-new-button{width:40px;min-width:40px;max-width:40px;height:40px;padding:0;font-size:0;transform:translateY(3.5px)}.gp-new-button vaadin-icon{margin:0}
  .gp-toolbar{grid-template-columns:minmax(0,1fr) 40px;gap:8px}.gp-toolbar>vaadin-text-field{grid-column:1}.gp-toolbar>.gp-filter-button{grid-column:2;width:40px;height:40px}
  .gp-summary-filters{grid-template-columns:1fr}.gp-kpis{grid-template-columns:1fr 1fr}.gp-kpi:last-child{grid-column:1/-1}.gp-kpi>h3{font-size:1.25rem}
  .gp-footer{padding-top:1.5rem}.gp-filter-dropdown-grid{grid-template-columns:1fr}vaadin-grid{font-size:12px}
  .gp-launch-row-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gp-launch-row-3{grid-template-columns:1fr}
  .gp-launch-row-2{grid-template-columns:1fr 1fr}
}

@media(max-width:460px){
  .gp-launch-row-4,.gp-launch-row-2{grid-template-columns:1fr}
}

/* v014 — tema explícito e contraste consistente em todos os componentes. */
html[data-gp-theme="dark"]{
  color-scheme:dark;
  --gp-bg:#0e1117;--gp-surface:#262730;--gp-surface-2:#1b1d24;--gp-text:#fafafa;--gp-muted:#b8bcc6;
  --gp-border:rgba(250,250,250,.18);--gp-control-border:rgba(250,250,250,.24);--gp-hover:rgba(250,250,250,.08);
  --lumo-base-color:#0e1117;--lumo-body-text-color:#fafafa;--lumo-secondary-text-color:#b8bcc6;--lumo-tertiary-text-color:#9ca1ad;
  --lumo-contrast-5pct:rgba(250,250,250,.05);--lumo-contrast-10pct:rgba(250,250,250,.10);--lumo-contrast-20pct:rgba(250,250,250,.20);
}
html[data-gp-theme="light"]{
  color-scheme:light;
  --gp-bg:#fff;--gp-surface:#fff;--gp-surface-2:#f5f5f7;--gp-text:#31333f;--gp-muted:#808495;
  --gp-border:rgba(49,51,63,.20);--gp-control-border:rgba(49,51,63,.28);--gp-hover:rgba(49,51,63,.06);
  --lumo-base-color:#fff;--lumo-body-text-color:#31333f;--lumo-secondary-text-color:#60636f;--lumo-tertiary-text-color:#808495;
}
html{scrollbar-gutter:stable}
html[data-gp-theme="dark"] .gp-logo-light{display:none}html[data-gp-theme="dark"] .gp-logo-dark{display:block}
html[data-gp-theme="light"] .gp-logo-light{display:block}html[data-gp-theme="light"] .gp-logo-dark{display:none}

/* Componentes Vaadin: texto nunca herda uma cor incompatível do navegador/Lumo. */
vaadin-text-field,vaadin-password-field,vaadin-integer-field,vaadin-date-picker,vaadin-select,vaadin-combo-box,vaadin-multi-select-combo-box,
vaadin-button,vaadin-tab,vaadin-grid,vaadin-context-menu-item,vaadin-dialog-overlay,vaadin-popover-overlay{color:var(--gp-text)}
vaadin-text-field::part(label),vaadin-password-field::part(label),vaadin-integer-field::part(label),vaadin-date-picker::part(label),vaadin-select::part(label),vaadin-combo-box::part(label),vaadin-multi-select-combo-box::part(label){color:var(--gp-text)!important}
vaadin-text-field::part(input-field),vaadin-password-field::part(input-field),vaadin-integer-field::part(input-field),vaadin-date-picker::part(input-field),vaadin-select::part(input-field),vaadin-combo-box::part(input-field),vaadin-multi-select-combo-box::part(input-field){background:var(--gp-surface)!important;color:var(--gp-text)!important;border-color:var(--gp-control-border)!important}
vaadin-text-field input,vaadin-password-field input,vaadin-integer-field input,vaadin-date-picker input,vaadin-combo-box input,vaadin-multi-select-combo-box input{color:var(--gp-text)!important;-webkit-text-fill-color:var(--gp-text)!important}
vaadin-select-value-button,vaadin-combo-box-item,vaadin-multi-select-combo-box-chip{color:var(--gp-text)!important}
vaadin-button:not([theme~="primary"]):not([theme~="error"]){color:var(--gp-text)}
vaadin-button[theme~="primary"]{color:#fff!important}
vaadin-context-menu-overlay::part(overlay),vaadin-combo-box-overlay::part(overlay),vaadin-select-overlay::part(overlay),vaadin-date-picker-overlay::part(overlay),vaadin-dialog-overlay::part(overlay),vaadin-popover-overlay::part(overlay){background:var(--gp-surface)!important;color:var(--gp-text)!important}
vaadin-context-menu-item,vaadin-combo-box-item,vaadin-select-item{background:var(--gp-surface);color:var(--gp-text)!important}
vaadin-grid::part(row),vaadin-grid::part(cell),vaadin-grid::part(header-cell){color:var(--gp-text)!important}
.gp-login-card,.gp-login-card span,.gp-login-card label{color:var(--gp-text)!important}
.gp-login-error{color:#ff4b4b!important}

/* Transição entre abas sem deslocamentos de layout. */
.gp-navigation{min-height:49px}
.gp-main-tabs{min-height:49px}
.gp-content{min-height:760px;contain:layout style;width:100%;box-sizing:border-box}
.gp-title-row,.gp-title-row-static{min-height:52px}
.gp-tab-controls{min-height:66px}

/* Mostrar mais = somente texto centralizado, como no original. */
.gp-show-more-holder{display:flex;justify-content:center;align-items:center;width:100%;padding:.55rem 0 .25rem}
.gp-show-more{display:block!important;margin:.55rem auto .25rem!important;padding:.15rem .35rem!important;min-height:auto!important;height:auto!important;border:0!important;background:transparent!important;box-shadow:none!important;color:var(--gp-text)!important;font-weight:400!important}
.gp-show-more::part(label){padding:0!important}
.gp-show-more:hover{color:var(--gp-red)!important;text-decoration:underline;background:transparent!important}

/* Refugo: barras verticais, paginação, contexto e detalhamento no padrão original. */
.gp-refugo-chart{width:100%;padding:.45rem 0 .2rem;overflow-x:auto;box-sizing:border-box}
.gp-refugo-chart-plot{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(64px,1fr);align-items:end;gap:12px;min-width:max(100%,720px);height:360px;padding:20px 8px 0;border-bottom:1px solid var(--gp-border);box-sizing:border-box}
.gp-refugo-bar-column{height:100%;display:grid;grid-template-rows:28px minmax(0,1fr) 58px;align-items:end;justify-items:center;min-width:0;border-radius:6px;transition:background .12s ease}
.gp-refugo-bar-column:hover{background:var(--gp-hover)}
.gp-refugo-bar-selected{background:color-mix(in srgb,var(--gp-red) 12%,transparent)}
.gp-refugo-bar-amount{font-size:.78rem;line-height:1;color:var(--gp-text);white-space:nowrap;align-self:center}
.gp-refugo-bar-area{height:100%;width:min(44px,68%);display:flex;align-items:flex-end;justify-content:center}
.gp-refugo-vbar{width:100%;min-height:2px;background:var(--gp-red);border-radius:3px 3px 0 0;opacity:.82;transition:opacity .12s ease,transform .12s ease}
.gp-refugo-bar-column:hover .gp-refugo-vbar,.gp-refugo-bar-selected .gp-refugo-vbar{opacity:1;transform:scaleX(1.05)}
.gp-refugo-bar-label{width:100%;font-size:.75rem;line-height:1.12;text-align:center;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;color:var(--gp-text);align-self:start;padding-top:7px}
.gp-refugo-context-row{display:flex;justify-content:flex-end;align-items:center;min-height:38px}
.gp-refugo-pagination{display:flex;justify-content:center;align-items:center;gap:.6rem;padding:.4rem 0;color:var(--gp-muted)}
.gp-refugo-pagination vaadin-button{min-width:34px;width:34px;height:34px;padding:0}
.gp-refugo-top5{display:flex;flex-direction:column;gap:.32rem;padding:.45rem 0 1rem}
.gp-refugo-top5-row{display:grid;grid-template-columns:34px minmax(0,1fr);gap:.5rem;align-items:center;padding:.32rem .2rem;border-bottom:1px solid var(--gp-border)}
.gp-refugo-detail-card,.gp-comparison-card{border:1px solid var(--gp-border);border-radius:.65rem;padding:.75rem 1rem;background:var(--gp-surface);color:var(--gp-text);margin:.55rem 0}
.gp-empty-state{width:100%;text-align:center;padding:2rem 0;color:var(--gp-muted)}

/* Resumos claros e comparáveis. */
.gp-summary-section{margin-top:.8rem;border-top:1px solid var(--gp-border);padding-top:.65rem}
.gp-summary-section-title{font-size:1.02rem;font-weight:600;color:var(--gp-text);margin:.35rem 0 .55rem}

/* Cadastro e usuários. */
.gp-admin-body{padding-top:.7rem;min-height:390px}.gp-admin-tabs{width:100%}
.gp-admin-toolbar{display:grid;gap:.7rem;align-items:end;margin-bottom:.75rem;width:100%}.gp-admin-toolbar-sector{grid-template-columns:minmax(0,1fr) auto}.gp-admin-toolbar-machine{grid-template-columns:2fr 1fr 1.5fr auto}
.gp-admin-grid{width:100%;border-top:1px solid var(--gp-border)}
.gp-admin-list-toolbar{display:flex;justify-content:flex-end;margin:0 0 .75rem}
.gp-admin-form{width:100%;box-sizing:border-box;padding:.2rem 0}.gp-admin-form-grid{display:grid;grid-template-columns:2fr 1fr 1.5fr;gap:.75rem}.gp-admin-user-form{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.gp-admin-user-form vaadin-password-field{grid-column:1/-1}
.gp-action-icon{width:34px;min-width:34px;height:34px;padding:0!important}

@media(max-width:767px){
  .gp-content{min-height:620px}
  .gp-refugo-chart-plot{height:320px;grid-auto-columns:minmax(58px,72px)}
  .gp-admin-toolbar-sector,.gp-admin-toolbar-machine,.gp-admin-form-grid,.gp-admin-user-form{grid-template-columns:1fr}
  .gp-admin-user-form vaadin-password-field{grid-column:auto}
}
.gp-ranking-table{display:flex;flex-direction:column;width:100%;margin:.35rem 0 1rem;border-top:1px solid var(--gp-border)}
.gp-ranking-row{display:grid;grid-template-columns:44px minmax(0,1fr);gap:.55rem;padding:.45rem .35rem;border-bottom:1px solid var(--gp-border);color:var(--gp-text);font-size:.86rem}
.gp-period-ranking{width:100%;overflow-x:auto;margin:.35rem 0 1rem}.gp-period-ranking-row{display:grid;grid-template-columns:70px repeat(var(--gp-period-count),minmax(180px,1fr));min-width:max(100%,720px);border-bottom:1px solid var(--gp-border)}.gp-period-ranking-row>span{padding:.5rem .45rem;color:var(--gp-text);font-size:.82rem}.gp-period-ranking-row:first-child>span{font-weight:600;background:var(--gp-surface-2)}
.gp-caption{display:block;color:var(--gp-muted);font-size:.82rem;margin:-.25rem 0 .45rem}.gp-subsection-title{color:var(--gp-text);font-size:1.05rem;margin:.85rem 0 .45rem}.gp-detail-main{display:block;font-size:1.05rem;font-weight:600;color:var(--gp-text)}.gp-detail-captions{display:flex;gap:1rem;flex-wrap:wrap;color:var(--gp-muted);font-size:.84rem;margin:.25rem 0 .55rem}.gp-refugo-chart-line{position:relative;width:100%}.gp-chart-menu-button{position:absolute;right:4px;top:0;z-index:3;width:36px;min-width:36px;height:36px;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important}.gp-refugo-analysis,.gp-refugo-details{width:100%}.gp-month-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:767px){.gp-month-kpis{grid-template-columns:1fr 1fr}.gp-period-ranking-row{grid-template-columns:62px repeat(var(--gp-period-count),minmax(155px,1fr))}}

/* Base visual consolidada do Globoplast. */
html[theme~="dark"],html[data-gp-theme="dark"]{
  color-scheme:dark;
  --gp-bg:#0e1117;
  --gp-surface:#262730;
  --gp-surface-2:#1b1d24;
  --gp-text:#fafafa;
  --gp-muted:#b8bcc6;
  --gp-border:rgba(250,250,250,.18);
  --gp-control-border:rgba(250,250,250,.24);
  --gp-hover:rgba(250,250,250,.08);
  --lumo-base-color:#0e1117;
  --lumo-body-text-color:#fafafa;
  --lumo-header-text-color:#fafafa;
  --lumo-secondary-text-color:#b8bcc6;
  --lumo-tertiary-text-color:#9ca1ad;
  --lumo-contrast:#fafafa;
  --lumo-contrast-5pct:rgba(250,250,250,.05);
  --lumo-contrast-10pct:rgba(250,250,250,.10);
  --lumo-contrast-20pct:rgba(250,250,250,.20);
  --lumo-contrast-30pct:rgba(250,250,250,.30);
}
html[theme~="light"],html[data-gp-theme="light"]{
  color-scheme:light;
  --gp-bg:#ffffff;
  --gp-surface:#ffffff;
  --gp-surface-2:#f5f5f7;
  --gp-text:#31333f;
  --gp-muted:#808495;
  --gp-border:rgba(49,51,63,.20);
  --gp-control-border:rgba(49,51,63,.28);
  --gp-hover:rgba(49,51,63,.06);
  --lumo-base-color:#ffffff;
  --lumo-body-text-color:#31333f;
  --lumo-header-text-color:#31333f;
  --lumo-secondary-text-color:#60636f;
  --lumo-tertiary-text-color:#808495;
  --lumo-contrast:#31333f;
}

/* Menu de três pontos: geometria e comportamento do original. */
.gp-menu-host{position:absolute;right:0;top:7px;width:40px;height:40px;z-index:60;overflow:visible}
.gp-menu-host>.gp-menu-button{position:relative!important;right:auto!important;top:auto!important;width:40px!important;min-width:40px!important;max-width:40px!important;height:36px!important;min-height:36px!important;max-height:36px!important;opacity:.72!important;border-radius:.5rem!important;background:transparent!important}
.gp-menu-host>.gp-menu-button:hover,.gp-menu-host>.gp-menu-button:focus-visible{opacity:1!important;background:color-mix(in srgb,var(--gp-text) 8%,transparent)!important}
.gp-system-menu-popover::part(content){padding:0!important}
.gp-system-menu-popover::part(overlay){width:195px!important;min-width:195px!important;max-width:195px!important;padding:0!important;border:1px solid var(--gp-border)!important;border-radius:.6rem!important;background:var(--gp-surface)!important;color:var(--gp-text)!important;box-shadow:0 8px 26px rgba(0,0,0,.18)!important;overflow:hidden!important}
.gp-system-menu{width:195px;box-sizing:border-box;padding:7px 2px 6px;background:var(--gp-surface);color:var(--gp-text)}
.gp-system-menu-user{display:block;width:100%;box-sizing:border-box;margin:0 0 11px;padding:4px 9px 5px;text-align:center;font-size:.80rem;line-height:1.25;font-weight:500;color:var(--gp-text);opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gp-system-menu-action{display:flex!important;width:calc(100% - 6px)!important;min-width:calc(100% - 6px)!important;height:32px!important;min-height:32px!important;margin:0 3px!important;padding:3px 7px!important;justify-content:flex-start!important;text-align:left!important;border:0!important;border-radius:7px!important;background:transparent!important;color:var(--gp-text)!important;font-weight:400!important;box-shadow:none!important}
.gp-system-menu-action::part(label){width:100%;text-align:left}
.gp-system-menu-action:hover,.gp-system-menu-action:focus-visible{background:color-mix(in srgb,var(--gp-text) 5%,transparent)!important}
.gp-system-menu-danger{color:var(--gp-red)!important}
.gp-system-menu-choice-row{display:grid;grid-template-columns:1fr 52px 52px;gap:4px;align-items:center;margin:3px 6px 0}
.gp-system-menu-choice-spacer{min-width:0}
.gp-system-menu-section-label{display:block;margin:8px 9px 3px;color:var(--gp-muted);font-size:.70rem;line-height:1.2;text-transform:uppercase;letter-spacing:.04em}
.gp-system-menu-theme-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin:0 6px 2px}
.gp-system-menu-choice{min-width:0!important;height:28px!important;min-height:28px!important;padding:0 4px!important;border:0!important;border-radius:6px!important;background:transparent!important;color:var(--gp-text)!important;font-size:.72rem!important;box-shadow:none!important}
.gp-system-menu-choice:hover{background:var(--gp-hover)!important}
.gp-system-menu-choice-selected{background:var(--gp-hover)!important;font-weight:600!important;color:var(--gp-red)!important}

/* Contraste consistente também em overlays, readonly e login. */
vaadin-dialog-overlay::part(overlay),vaadin-popover-overlay::part(overlay),vaadin-context-menu-overlay::part(overlay),vaadin-select-overlay::part(overlay),vaadin-combo-box-overlay::part(overlay),vaadin-date-picker-overlay::part(overlay){background:var(--gp-surface)!important;color:var(--gp-text)!important}
vaadin-dialog-overlay::part(header),vaadin-dialog-overlay::part(content),vaadin-dialog-overlay::part(footer){background:var(--gp-surface)!important;color:var(--gp-text)!important}
vaadin-text-field[readonly]::part(input-field),vaadin-date-picker[readonly]::part(input-field),vaadin-select[readonly]::part(input-field){background:var(--gp-surface-2)!important;color:var(--gp-muted)!important}
vaadin-text-field[readonly] input,vaadin-date-picker[readonly] input{-webkit-text-fill-color:var(--gp-muted)!important;color:var(--gp-muted)!important;opacity:1!important}
.gp-login-card{color:var(--gp-text)!important}
.gp-login-card vaadin-text-field,.gp-login-card vaadin-password-field{color:var(--gp-text)!important}

/* Novo/Editar/Visualizar: mesma grade estrutural da v723. */
.gp-launch-dialog::part(overlay){max-height:calc(100dvh - 48px)!important}
.gp-launch-dialog::part(content){overflow-y:auto;overscroll-behavior:contain}
.gp-launch-form-python{gap:.42rem!important}
.gp-launch-row{gap:.82rem!important}
.gp-launch-row vaadin-text-field::part(input-field),.gp-launch-row vaadin-date-picker::part(input-field),.gp-launch-row vaadin-select::part(input-field){min-height:40px}
.gp-launch-time{margin:-.12rem 0 .08rem!important;font-size:.82rem!important;color:var(--gp-muted)!important}
.gp-launch-row-observations{margin-top:.02rem}
.gp-launch-dialog-actions{padding-top:.15rem}

/* Refugo: aproxima o Plotly original (texto externo, eixo Y e rótulo -35°). */
.gp-refugo-chart{padding:.15rem 0 .25rem!important;overflow-x:auto!important}
.gp-refugo-chart-frame{position:relative;display:block;min-width:max(100%,760px);padding-left:54px;box-sizing:border-box}
.gp-refugo-y-title{position:absolute;left:4px;top:50%;transform:translate(-34%,-50%) rotate(-90deg);transform-origin:center;white-space:nowrap;font-size:.78rem;color:var(--gp-muted);z-index:2}
.gp-refugo-chart-plot{position:relative;display:grid!important;grid-auto-flow:column!important;grid-auto-columns:minmax(58px,1fr)!important;align-items:stretch!important;gap:12px!important;min-width:100%!important;height:390px!important;padding:24px 12px 82px!important;border-left:1px solid var(--gp-border)!important;border-bottom:1px solid var(--gp-border)!important;background:repeating-linear-gradient(to top,transparent 0,transparent calc(25% - 1px),var(--gp-border) 25%,transparent calc(25% + 1px))!important;box-sizing:border-box!important;overflow:visible!important}
.gp-refugo-bar-column{height:100%!important;display:grid!important;grid-template-rows:28px minmax(0,1fr) 72px!important;align-items:end!important;justify-items:center!important;background:transparent!important}
.gp-refugo-bar-column:hover{background:transparent!important}
.gp-refugo-bar-selected{background:color-mix(in srgb,var(--gp-red) 8%,transparent)!important}
.gp-refugo-bar-amount{font-size:.78rem!important;line-height:1!important;color:var(--gp-text)!important;white-space:nowrap!important;align-self:center!important}
.gp-refugo-bar-area{height:100%!important;width:min(44px,68%)!important;display:flex!important;align-items:flex-end!important;justify-content:center!important}
.gp-refugo-vbar{width:100%!important;min-height:2px!important;background:var(--gp-red)!important;border-radius:2px 2px 0 0!important;opacity:.86!important;transform:none!important}
.gp-refugo-bar-column:hover .gp-refugo-vbar,.gp-refugo-bar-selected .gp-refugo-vbar{opacity:1!important;transform:none!important}
.gp-refugo-bar-label{width:92px!important;max-width:92px!important;height:66px!important;padding-top:9px!important;overflow:visible!important;display:block!important;white-space:nowrap!important;text-overflow:ellipsis!important;text-align:right!important;font-size:.75rem!important;line-height:1!important;color:var(--gp-text)!important;transform:rotate(-35deg)!important;transform-origin:top right!important}
.gp-refugo-context-row{min-height:34px!important}
.gp-chart-menu-button{right:2px!important;top:-2px!important}
.gp-refugo-pagination{padding:.15rem 0 .65rem!important}

@media(max-width:767px){
  .gp-system-menu-popover::part(overlay),.gp-system-menu{width:195px!important;min-width:195px!important;max-width:195px!important}
  .gp-refugo-chart-frame{min-width:760px}
  .gp-refugo-chart-plot{height:355px!important}
}

/* v016 — ranking mensal no mesmo fluxo visual do Plotly/RdYlGn da v723. */
.gp-oee-ranking-chart{width:100%;padding:.15rem 0 0;overflow-x:auto;box-sizing:border-box}
.gp-oee-ranking-frame{min-width:max(100%,680px);box-sizing:border-box}
.gp-oee-ranking-y-title{display:none}
.gp-oee-ranking-plot{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(96px,1fr);align-items:stretch;gap:16px;height:330px;padding:20px 14px 20px;box-sizing:border-box}
.gp-oee-ranking-column{height:100%;display:grid;grid-template-rows:minmax(0,1fr) 40px;align-items:end;justify-items:center}
.gp-oee-ranking-area{height:100%;width:min(54px,74%);display:flex;align-items:flex-end;justify-content:center}
.gp-oee-ranking-bar{position:relative;width:100%;min-height:3px;border-radius:5px 5px 0 0;opacity:.92;box-shadow:0 3px 9px color-mix(in srgb,currentColor 16%,transparent)}
.gp-oee-ranking-value{position:absolute;left:50%;bottom:calc(100% + 7px);transform:translateX(-50%);font-size:.78rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--gp-text);white-space:nowrap}
.gp-oee-ranking-column:hover .gp-oee-ranking-bar{opacity:1}
.gp-oee-ranking-label{width:100%;height:36px;padding-top:8px;overflow:hidden;white-space:normal;text-align:center;font-size:.72rem;font-weight:600;line-height:1.1;color:var(--gp-text)}
.gp-summary-all-title{margin-top:.2rem!important}

/* v016 — contraste final dos controles nos três modos de tema. */
html[theme~="dark"],html[data-gp-theme="dark"]{--lumo-primary-contrast-color:#fff;--lumo-disabled-text-color:rgba(250,250,250,.48);--lumo-required-field-indicator-color:#ff4b4b}
html[theme~="light"],html[data-gp-theme="light"]{--lumo-primary-contrast-color:#fff;--lumo-disabled-text-color:rgba(49,51,63,.48);--lumo-required-field-indicator-color:#ff4b4b}
vaadin-text-field::part(input-field),vaadin-password-field::part(input-field),vaadin-integer-field::part(input-field),vaadin-date-picker::part(input-field),vaadin-select::part(input-field),vaadin-combo-box::part(input-field),vaadin-multi-select-combo-box::part(input-field){box-shadow:none!important}
vaadin-text-field::part(input-field)::placeholder,vaadin-password-field::part(input-field)::placeholder{color:var(--gp-muted)!important}
vaadin-context-menu-item[disabled]{color:var(--gp-muted)!important;opacity:.72!important}
vaadin-tab[disabled]{color:var(--gp-muted)!important}
vaadin-grid::part(header-cell){font-weight:600!important;background:var(--gp-bg)!important;color:var(--gp-text)!important}
vaadin-grid::part(body-cell){background:var(--gp-bg);color:var(--gp-text)!important}
.gp-empty-state,.gp-caption,.gp-sync-status{color:var(--gp-muted)!important}

/* v017 — refinamento visual: menu sem divisórias e Refugo com geometria do original. */
.gp-content{padding-bottom:1.5rem!important}
.gp-refugo-page{width:100%;min-width:0;box-sizing:border-box;padding-bottom:1.5rem;display:flex;flex-direction:column}
.gp-refugo-page>.gp-title-row{margin-bottom:0}
.gp-refugo-page>.gp-tab-controls{margin:.20rem 0 .62rem!important}
.gp-refugo-page>.gp-kpis{margin:.25rem 0 .72rem!important}
.gp-refugo-page>.gp-inner-tabs{margin:.12rem 0 .40rem!important}
.gp-refugo-analysis{width:100%;min-width:0;padding:.10rem 0 .55rem;box-sizing:border-box}
.gp-refugo-details{width:100%;min-width:0;padding:0 0 1.25rem;box-sizing:border-box}

/* ContextMenu do sistema: nenhuma régua/divisória no dark ou light. */
vaadin-context-menu-overlay hr,
vaadin-context-menu-overlay [role="separator"],
vaadin-context-menu-overlay vaadin-context-menu-item[role="separator"]{display:none!important;border:0!important;height:0!important;min-height:0!important;margin:0!important;padding:0!important}
vaadin-context-menu-overlay::part(overlay){border:0!important;box-shadow:0 8px 26px rgba(0,0,0,.20)!important}
vaadin-context-menu-item{border:0!important;box-shadow:none!important}

/* Gráfico + coluna fixa do menu, igual ao arranjo 100:1 do original. */
.gp-refugo-chart-line{position:relative!important;display:grid!important;grid-template-columns:minmax(0,1fr) 40px!important;column-gap:8px!important;align-items:start!important;width:100%!important;min-width:0!important;overflow:visible!important;margin:0 0 .08rem!important}
.gp-refugo-chart-line>.gp-refugo-chart{min-width:0!important;width:100%!important}
.gp-refugo-chart-line>.gp-chart-menu-button{position:relative!important;right:auto!important;top:0!important;width:40px!important;min-width:40px!important;max-width:40px!important;height:36px!important;min-height:36px!important;max-height:36px!important;margin:0!important;padding:0!important;align-self:start!important;opacity:.72!important;border:0!important;background:transparent!important;box-shadow:none!important}
.gp-refugo-chart-line>.gp-chart-menu-button:hover,.gp-refugo-chart-line>.gp-chart-menu-button:focus-visible{opacity:1!important;background:transparent!important;outline:0!important;box-shadow:none!important}

.gp-refugo-chart{width:100%!important;min-width:0!important;padding:0!important;overflow-x:auto!important;overflow-y:visible!important;box-sizing:border-box!important}
.gp-refugo-chart-frame{position:relative!important;display:block!important;min-width:max(100%,720px)!important;height:450px!important;padding:0 8px 0 62px!important;box-sizing:border-box!important;overflow:visible!important}
.gp-refugo-chart-title{position:absolute!important;left:72px!important;right:18px!important;top:13px!important;height:34px!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:1.05rem!important;font-weight:600!important;line-height:1.2!important;color:var(--gp-text)!important;text-align:center!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;z-index:3!important}
.gp-refugo-y-title{position:absolute!important;left:3px!important;top:233px!important;transform:translate(-35%,-50%) rotate(-90deg)!important;transform-origin:center!important;white-space:nowrap!important;font-size:.80rem!important;line-height:1!important;color:var(--gp-text)!important;z-index:3!important}
.gp-refugo-chart-canvas{position:absolute!important;left:62px!important;right:8px!important;top:60px!important;bottom:14px!important;display:grid!important;grid-template-columns:48px minmax(0,1fr)!important;min-width:0!important;overflow:visible!important}
.gp-refugo-y-axis{position:relative!important;height:300px!important;align-self:start!important;color:var(--gp-muted)!important;font-size:.72rem!important}
.gp-refugo-y-tick{position:absolute!important;right:7px!important;bottom:var(--gp-tick-pos)!important;transform:translateY(50%)!important;white-space:nowrap!important;line-height:1!important;color:var(--gp-muted)!important}
.gp-refugo-chart-plot{position:relative!important;display:grid!important;grid-auto-flow:column!important;grid-auto-columns:minmax(52px,1fr)!important;align-items:stretch!important;gap:10px!important;min-width:100%!important;height:370px!important;padding:0 10px 70px 4px!important;border-left:1px solid var(--gp-border)!important;border-bottom:1px solid var(--gp-border)!important;background:repeating-linear-gradient(to top,transparent 0,transparent calc(25% - .5px),color-mix(in srgb,var(--gp-text) 13%,transparent) 25%,transparent calc(25% + .5px))!important;box-sizing:border-box!important;overflow:visible!important}
.gp-refugo-bar-column{height:300px!important;display:grid!important;grid-template-rows:27px minmax(0,1fr) 70px!important;align-items:end!important;justify-items:center!important;min-width:0!important;background:transparent!important;border-radius:0!important;transition:none!important}
.gp-refugo-bar-column:hover{background:transparent!important}
.gp-refugo-bar-selected{background:transparent!important}
.gp-refugo-bar-selected .gp-refugo-vbar{outline:2px solid color-mix(in srgb,var(--gp-red) 40%,var(--gp-text))!important;outline-offset:1px!important}
.gp-refugo-bar-amount{font-size:.79rem!important;line-height:1!important;color:var(--gp-text)!important;white-space:nowrap!important;align-self:center!important;z-index:2!important}
.gp-refugo-bar-area{height:100%!important;width:min(42px,72%)!important;display:flex!important;align-items:flex-end!important;justify-content:center!important;overflow:visible!important}
.gp-refugo-vbar{width:100%!important;min-height:2px!important;background:var(--gp-red)!important;border-radius:0!important;opacity:.88!important;transform:none!important;transition:opacity .10s ease!important}
.gp-refugo-bar-column:hover .gp-refugo-vbar,.gp-refugo-bar-selected .gp-refugo-vbar{opacity:1!important;transform:none!important}
.gp-refugo-bar-label{width:100px!important;max-width:100px!important;height:64px!important;padding-top:8px!important;overflow:visible!important;display:block!important;white-space:nowrap!important;text-overflow:clip!important;text-align:right!important;font-size:.76rem!important;line-height:1!important;color:var(--gp-text)!important;transform:rotate(-35deg)!important;transform-origin:top right!important}
.gp-refugo-pagination{display:flex!important;justify-content:flex-end!important;align-items:center!important;gap:.45rem!important;min-height:38px!important;padding:.15rem 40px .80rem 0!important;color:var(--gp-muted)!important}
.gp-refugo-pagination vaadin-button{width:auto!important;min-width:auto!important;height:32px!important;min-height:32px!important;padding:0 .35rem!important}
.gp-refugo-pagination span{white-space:nowrap!important;font-size:.82rem!important}
.gp-refugo-top5{padding-bottom:1.25rem!important}
.gp-ranking-table,.gp-period-ranking{margin-bottom:1.35rem!important}

@media(max-width:767px){
  .gp-content{padding-bottom:1.5rem!important}
  .gp-refugo-page{padding-bottom:1.5rem!important}
  .gp-refugo-chart-line{grid-template-columns:minmax(0,1fr) 40px!important;column-gap:6px!important}
  .gp-refugo-chart-frame{min-width:700px!important;height:430px!important}
  .gp-refugo-chart-plot{height:350px!important}
  .gp-refugo-bar-column{height:280px!important}
  .gp-refugo-pagination{justify-content:center!important;padding-right:0!important}
}


/* ==========================================================
   v018 — fluxo estrutural de página e rodapé iguais ao original.
   Conteúdo curto: rodapé no final da viewport.
   Conteúdo longo: rodapé depois do conteúdo, sem fixed/sticky.
   ========================================================== */
html{scrollbar-gutter:stable}
html,body{height:auto!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto}
.gp-root{
  width:100%!important;
  height:auto!important;
  min-height:100vh!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
.gp-shell{
  display:flex!important;
  flex-direction:column!important;
  width:100%!important;
  height:auto!important;
  min-height:100vh!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
.gp-content{
  flex:1 0 auto!important;
  width:100%!important;
  min-width:0!important;
  min-height:0!important;
  height:auto!important;
  contain:none!important;
  overflow:visible!important;
  padding-bottom:0!important;
  box-sizing:border-box!important;
}
.gp-content>*{max-width:100%;box-sizing:border-box}
.gp-navigation,.gp-main-tabs{flex:0 0 auto!important}
.gp-footer{
  position:relative!important;
  inset:auto!important;
  flex:0 0 auto!important;
  width:100%!important;
  min-width:0!important;
  margin-top:auto!important;
  padding:2.45rem 0 .42rem!important;
  box-sizing:border-box!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:#888!important;
  font-size:14px!important;
  line-height:1!important;
  pointer-events:none!important;
}
.gp-footer-signature{
  position:absolute!important;
  right:0!important;
  bottom:.42rem!important;
  color:#888!important;
  font-size:14px!important;
  line-height:1!important;
  pointer-events:auto!important;
  cursor:pointer!important;
}

/* Todas as páginas devem contribuir naturalmente para a altura do documento. */
.gp-title-row,.gp-title-row-static,.gp-tab-controls,.gp-kpis,
.gp-summary-grid,.gp-month-entries-grid,.gp-refugo-page,.gp-refugo-analysis,
.gp-refugo-details,.gp-ranking-table,.gp-period-ranking,.gp-show-more-holder{
  position:relative;
  max-width:100%;
  box-sizing:border-box;
}
vaadin-grid{width:100%!important;max-width:100%!important;min-width:0!important}

/* Refugo: geometria natural. Nenhum bloco absoluto define a altura da página. */
.gp-refugo-page{
  display:flex!important;
  flex-direction:column!important;
  width:100%!important;
  min-width:0!important;
  min-height:0!important;
  height:auto!important;
  overflow:visible!important;
  padding:0!important;
}
.gp-refugo-analysis,.gp-refugo-details{
  width:100%!important;
  min-width:0!important;
  height:auto!important;
  overflow:visible!important;
}
.gp-refugo-chart-line{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 40px!important;
  column-gap:8px!important;
  align-items:start!important;
  width:100%!important;
  min-width:0!important;
  height:auto!important;
  overflow:visible!important;
  margin:0!important;
}
.gp-refugo-chart-line>.gp-chart-menu-button{
  position:relative!important;
  right:auto!important;
  top:0!important;
  width:40px!important;
  min-width:40px!important;
  max-width:40px!important;
  height:40px!important;
  min-height:40px!important;
  max-height:40px!important;
  margin:0!important;
  padding:0!important;
  align-self:start!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  opacity:.78!important;
}
.gp-refugo-chart-line>.gp-chart-menu-button:hover,
.gp-refugo-chart-line>.gp-chart-menu-button:focus-visible{
  opacity:1!important;
  background:transparent!important;
  outline:0!important;
  box-shadow:none!important;
}
.gp-refugo-chart{
  width:100%!important;
  min-width:0!important;
  height:auto!important;
  padding:0!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
.gp-refugo-chart-frame{
  position:relative!important;
  display:flex!important;
  flex-direction:column!important;
  width:100%!important;
  min-width:0!important;
  min-height:432px!important;
  padding:14px 12px 0 60px!important;
  box-sizing:border-box!important;
  overflow:visible!important;
  background:transparent!important;
}
.gp-refugo-chart-title{
  display:block!important;
  width:100%!important;
  min-height:30px!important;
  margin:0 0 12px!important;
  padding:0 0 0 4px!important;
  box-sizing:border-box!important;
  color:var(--gp-text)!important;
  font-size:1.05rem!important;
  font-weight:600!important;
  line-height:1.25!important;
  text-align:left!important;
  white-space:normal!important;
}
.gp-refugo-y-title{
  position:absolute!important;
  left:8px!important;
  top:218px!important;
  transform:rotate(-90deg) translateX(-50%)!important;
  transform-origin:left top!important;
  white-space:nowrap!important;
  font-size:.82rem!important;
  line-height:1!important;
  color:var(--gp-text)!important;
  z-index:2!important;
}
.gp-refugo-chart-canvas{
  display:grid!important;
  grid-template-columns:54px minmax(0,1fr)!important;
  width:100%!important;
  min-width:0!important;
  height:368px!important;
  min-height:368px!important;
  overflow:visible!important;
}
.gp-refugo-y-axis{
  position:relative!important;
  width:54px!important;
  height:292px!important;
  min-height:292px!important;
  color:var(--gp-muted)!important;
  font-size:.72rem!important;
  line-height:1!important;
}
.gp-refugo-y-tick{
  position:absolute!important;
  right:8px!important;
  width:46px!important;
  color:var(--gp-muted)!important;
  text-align:right!important;
  white-space:nowrap!important;
  font-variant-numeric:tabular-nums!important;
}
.gp-refugo-chart-plot{
  position:relative!important;
  display:grid!important;
  grid-auto-flow:column!important;
  grid-auto-columns:minmax(0,1fr)!important;
  column-gap:clamp(3px,.7vw,9px)!important;
  align-items:start!important;
  width:auto!important;
  min-width:100%!important;
  height:368px!important;
  min-height:368px!important;
  padding:0 10px 0 4px!important;
  border:0!important;
  background:transparent!important;
  box-sizing:border-box!important;
  overflow:visible!important;
}
.gp-refugo-grid-area{
  position:absolute!important;
  left:0!important;
  right:0!important;
  top:0!important;
  height:300px!important;
  min-height:300px!important;
  pointer-events:none!important;
  z-index:0!important;
}
.gp-refugo-grid-line{
  position:absolute!important;
  left:0!important;
  right:0!important;
  height:1px!important;
  background:color-mix(in srgb,var(--gp-text) 13%,transparent)!important;
  pointer-events:none!important;
  z-index:0!important;
}
.gp-refugo-grid-baseline{
  background:color-mix(in srgb,var(--gp-text) 27%,transparent)!important;
}
.gp-refugo-bar-column{
  position:relative!important;
  z-index:1!important;
  display:grid!important;
  grid-template-rows:292px 76px!important;
  width:100%!important;
  min-width:0!important;
  height:368px!important;
  min-height:368px!important;
  align-items:start!important;
  justify-items:stretch!important;
  background:transparent!important;
  border-radius:0!important;
  outline:0!important;
}
.gp-refugo-bar-column:hover{background:transparent!important}
.gp-refugo-bar-area{
  position:relative!important;
  width:100%!important;
  height:292px!important;
  min-height:292px!important;
  display:block!important;
  overflow:visible!important;
}
.gp-refugo-vbar{
  position:absolute!important;
  left:50%!important;
  bottom:0!important;
  transform:translateX(-50%)!important;
  width:min(42px,72%)!important;
  min-width:10px!important;
  min-height:2px!important;
  background:var(--gp-red)!important;
  border-radius:0!important;
  opacity:.86!important;
  transition:opacity .10s ease,filter .10s ease!important;
  transform-origin:bottom center!important;
}
.gp-refugo-bar-column:hover .gp-refugo-vbar{opacity:1!important;filter:brightness(1.05)!important}
.gp-refugo-bar-selected .gp-refugo-vbar{
  opacity:1!important;
  outline:2px solid color-mix(in srgb,var(--gp-red) 45%,var(--gp-text))!important;
  outline-offset:1px!important;
}
.gp-refugo-bar-amount{
  position:absolute!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  z-index:3!important;
  color:var(--gp-text)!important;
  font-size:.80rem!important;
  line-height:1!important;
  font-weight:400!important;
  white-space:nowrap!important;
  font-variant-numeric:tabular-nums!important;
  pointer-events:none!important;
}
.gp-refugo-bar-label{
  display:block!important;
  position:relative!important;
  justify-self:center!important;
  width:clamp(58px,7.2vw,96px)!important;
  max-width:96px!important;
  height:70px!important;
  margin-top:7px!important;
  overflow:visible!important;
  color:var(--gp-text)!important;
  font-size:clamp(.66rem,.85vw,.76rem)!important;
  line-height:1.05!important;
  font-weight:400!important;
  text-align:right!important;
  white-space:nowrap!important;
  text-overflow:clip!important;
  transform:rotate(-35deg)!important;
  transform-origin:top center!important;
}
.gp-refugo-pagination{
  display:flex!important;
  justify-content:flex-end!important;
  align-items:center!important;
  gap:.45rem!important;
  width:100%!important;
  min-height:38px!important;
  padding:.15rem 40px .85rem 0!important;
  box-sizing:border-box!important;
  color:var(--gp-muted)!important;
}
.gp-refugo-pagination vaadin-button{
  width:auto!important;
  min-width:auto!important;
  height:32px!important;
  min-height:32px!important;
  padding:0 .35rem!important;
}
.gp-refugo-pagination span{white-space:nowrap!important;font-size:.82rem!important}
.gp-refugo-top5{padding-bottom:1rem!important}
.gp-ranking-table,.gp-period-ranking{margin-bottom:1rem!important}

@media(max-width:767px){
  html{scrollbar-gutter:auto}
  .gp-shell{min-height:100svh!important;padding-bottom:.78rem!important}
  .gp-footer{padding:.75rem 0 .42rem!important}
  .gp-footer-signature{right:.75rem!important}
  .gp-refugo-chart-line{grid-template-columns:minmax(0,1fr) 40px!important;column-gap:6px!important}
  .gp-refugo-chart-frame{min-width:0!important;padding-left:50px!important;padding-right:6px!important}
  .gp-refugo-chart-canvas{grid-template-columns:46px minmax(0,1fr)!important}
  .gp-refugo-y-axis{width:46px!important}
  .gp-refugo-y-tick{right:6px!important;width:38px!important}
  .gp-refugo-vbar{min-width:5px!important;width:min(34px,78%)!important}
  .gp-refugo-bar-label{width:clamp(42px,11vw,70px)!important;font-size:.64rem!important}
  .gp-refugo-pagination{justify-content:center!important;padding-right:0!important}
}


/* ==========================================================
   0.0.20 — REFUGO: geometria dos ticks Plotly + recentes
   ========================================================== */
.gp-refugo-chart-frame{
  min-height:450px!important;
  padding:14px 10px 0 58px!important;
}
.gp-refugo-chart-title{
  min-height:32px!important;
  margin:0 0 14px!important;
  padding:0!important;
  font-size:17px!important;
  font-weight:600!important;
  line-height:1.25!important;
  text-align:left!important;
}
.gp-refugo-y-title{
  left:8px!important;
  top:224px!important;
  font-size:14px!important;
}
.gp-refugo-chart-canvas{
  grid-template-columns:52px minmax(0,1fr)!important;
  height:386px!important;
  min-height:386px!important;
}
.gp-refugo-y-axis{
  width:52px!important;
  height:300px!important;
  min-height:300px!important;
  font-size:12px!important;
}
.gp-refugo-y-tick{
  right:7px!important;
  width:43px!important;
  font-size:12px!important;
}
.gp-refugo-chart-plot{
  height:386px!important;
  min-height:386px!important;
  padding:0 8px 0 4px!important;
  column-gap:8px!important;
}
.gp-refugo-bar-column{
  display:block!important;
  position:relative!important;
  height:386px!important;
  min-height:386px!important;
  overflow:visible!important;
}
.gp-refugo-bar-area{
  position:absolute!important;
  left:0!important;
  right:0!important;
  top:0!important;
  height:300px!important;
  min-height:300px!important;
}
.gp-refugo-vbar{
  background:#636EFA!important;
  width:min(44px,72%)!important;
  opacity:1!important;
}
.gp-refugo-bar-column:hover .gp-refugo-vbar{
  filter:brightness(1.03)!important;
}
.gp-refugo-bar-selected .gp-refugo-vbar{
  outline:2px solid color-mix(in srgb,#636EFA 65%,var(--gp-text))!important;
  outline-offset:1px!important;
}
.gp-refugo-bar-amount{
  font-size:13px!important;
  font-weight:400!important;
}
/* Plotly tickangle=-35: o FIM do texto fica ancorado no centro da barra. */
.gp-refugo-bar-label{
  position:absolute!important;
  left:auto!important;
  right:50%!important;
  top:309px!important;
  display:block!important;
  width:max-content!important;
  max-width:none!important;
  height:auto!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  white-space:nowrap!important;
  text-overflow:clip!important;
  text-align:right!important;
  font-size:12px!important;
  line-height:1!important;
  font-weight:400!important;
  transform:rotate(-35deg)!important;
  transform-origin:100% 0!important;
  color:var(--gp-text)!important;
  pointer-events:none!important;
}
.gp-refugo-pagination{
  padding:.10rem 40px .65rem 0!important;
}

/* Mesmo posicionamento do original: 50 px após a análise, expander sem caixa. */
.gp-refugo-recent{
  width:100%!important;
  min-width:0!important;
  margin-top:50px!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
.gp-refugo-recent-expander{
  width:100%!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
.gp-refugo-recent-expander::part(content){
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding-left:0!important;
  padding-right:0!important;
}
.gp-refugo-recent-expander vaadin-details-summary{
  min-height:40px!important;
  padding-left:0!important;
  padding-right:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  font-weight:500!important;
}
.gp-refugo-recent-expander vaadin-details-summary::part(toggle),
.gp-refugo-recent-expander vaadin-details-summary::part(content){
  color:var(--gp-text)!important;
}
.gp-refugo-recent-grid{
  width:100%!important;
  margin-top:.15rem!important;
}

@media(max-width:767px){
  .gp-refugo-chart-frame{min-height:430px!important;padding-left:48px!important;padding-right:4px!important}
  .gp-refugo-chart-canvas{grid-template-columns:44px minmax(0,1fr)!important;height:366px!important;min-height:366px!important}
  .gp-refugo-y-axis{width:44px!important;height:286px!important;min-height:286px!important}
  .gp-refugo-grid-area{height:286px!important;min-height:286px!important}
  .gp-refugo-y-tick{right:5px!important;width:36px!important;font-size:10px!important}
  .gp-refugo-chart-plot{height:366px!important;min-height:366px!important;column-gap:4px!important;padding-right:3px!important}
  .gp-refugo-bar-column{height:366px!important;min-height:366px!important}
  .gp-refugo-bar-area{height:286px!important;min-height:286px!important}
  .gp-refugo-vbar{min-width:4px!important;width:min(30px,76%)!important}
  .gp-refugo-bar-amount{font-size:10px!important}
  .gp-refugo-bar-label{top:295px!important;font-size:10px!important}
  .gp-refugo-recent{margin-top:36px!important}
}

/* ==========================================================
   0.0.21 — REFUGO: rótulos contidos + barras adaptativas + hover estável
   ========================================================== */
/* Mais área inferior para os rótulos inclinados sem invadir detalhes/paginação. */
.gp-refugo-chart-frame{
  min-height:482px!important;
}
.gp-refugo-chart-canvas{
  height:418px!important;
  min-height:418px!important;
}
.gp-refugo-chart-plot{
  height:418px!important;
  min-height:418px!important;
  overflow:visible!important;
}
.gp-refugo-bar-column{
  height:418px!important;
  min-height:418px!important;
  overflow:visible!important;
  transform:none!important;
  transition:none!important;
}
/* A barra fica mais larga quando há poucos itens e afina automaticamente à medida que entram itens. */
.gp-refugo-vbar{
  width:min(var(--gp-refugo-bar-width,42px),76%)!important;
  min-width:8px!important;
  transition:none!important;
  transform:translateX(-50%)!important;
  filter:none!important;
}
/* Correção do bug de deslocamento: nenhuma regra de hover pode remover o translateX(-50%). */
.gp-refugo-bar-column:hover,
.gp-refugo-bar-column:focus,
.gp-refugo-bar-column:focus-visible{
  transform:none!important;
  background:transparent!important;
  outline:0!important;
}
.gp-refugo-bar-column:hover .gp-refugo-vbar,
.gp-refugo-bar-column:focus .gp-refugo-vbar,
.gp-refugo-bar-column:focus-visible .gp-refugo-vbar{
  transform:translateX(-50%)!important;
  filter:none!important;
  opacity:1!important;
}
/* O texto já chega truncado do Java; mantém só o início e ancora seu fim no centro da barra. */
.gp-refugo-bar-label{
  top:310px!important;
  right:50%!important;
  width:max-content!important;
  max-width:none!important;
  white-space:nowrap!important;
  overflow:visible!important;
  text-overflow:clip!important;
  text-align:right!important;
  font-size:12px!important;
  line-height:1!important;
  transform:rotate(-35deg)!important;
  transform-origin:100% 0!important;
  pointer-events:none!important;
}
/* Paginação fica sempre depois da altura reservada ao eixo X. */
.gp-refugo-pagination{
  margin-top:0!important;
  padding-top:.15rem!important;
}
@media(max-width:767px){
  .gp-refugo-chart-frame{min-height:452px!important}
  .gp-refugo-chart-canvas{height:388px!important;min-height:388px!important}
  .gp-refugo-chart-plot{height:388px!important;min-height:388px!important}
  .gp-refugo-bar-column{height:388px!important;min-height:388px!important}
  .gp-refugo-vbar{width:min(var(--gp-refugo-bar-width,34px),78%)!important;min-width:4px!important}
  .gp-refugo-bar-label{top:296px!important;font-size:10px!important}
}


/* ==========================================================
   0.0.22 — interação estável, seleção Plotly-like, tema e dialogs
   ========================================================== */

/* Refugo: hover NÃO muda geometria, cor, brilho ou opacidade. */
.gp-refugo-bar-column,
.gp-refugo-bar-column:hover,
.gp-refugo-bar-column:focus,
.gp-refugo-bar-column:focus-visible,
.gp-refugo-bar-column[focused]{
  transform:none!important;
  transition:none!important;
  background:transparent!important;
  outline:0!important;
  box-shadow:none!important;
}
.gp-refugo-vbar,
.gp-refugo-bar-column:hover .gp-refugo-vbar,
.gp-refugo-bar-column:focus .gp-refugo-vbar,
.gp-refugo-bar-column:focus-visible .gp-refugo-vbar,
.gp-refugo-bar-column[focused] .gp-refugo-vbar{
  transform:translateX(-50%)!important;
  transition:none!important;
  filter:none!important;
  outline:0!important;
  box-shadow:none!important;
  background:#636EFA!important;
  opacity:1!important;
}
/* Seleção semelhante ao Plotly: item selecionado permanece forte e os demais recuam. */
.gp-refugo-has-selection .gp-refugo-bar-column:not(.gp-refugo-bar-selected) .gp-refugo-vbar{
  background:#636EFA!important;
  opacity:.26!important;
}
.gp-refugo-has-selection .gp-refugo-bar-selected .gp-refugo-vbar,
.gp-refugo-bar-selected .gp-refugo-vbar{
  background:#7C86FF!important;
  opacity:1!important;
  outline:0!important;
  box-shadow:none!important;
  filter:none!important;
}

/* Dropdowns do menu do sistema e do menu dos gráficos: contorno claro e foco legível. */
vaadin-context-menu-overlay::part(overlay){
  border:1px solid var(--gp-control-border)!important;
  border-radius:.62rem!important;
  background:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  box-shadow:0 10px 30px rgba(0,0,0,.22),inset 0 0 0 1px color-mix(in srgb,var(--gp-text) 3%,transparent)!important;
  overflow:hidden!important;
}
vaadin-context-menu-item{
  color:var(--gp-text)!important;
  background:var(--gp-surface)!important;
  border:0!important;
  box-shadow:none!important;
}
vaadin-context-menu-item:hover,
vaadin-context-menu-item:focus,
vaadin-context-menu-item[focused]{
  background:var(--gp-hover)!important;
  color:var(--gp-text)!important;
}
.gp-chart-menu-button:hover,.gp-chart-menu-button:focus-visible,
.gp-menu-button:hover,.gp-menu-button:focus-visible{
  color:var(--gp-text)!important;
}

/* Popovers/filtros também recebem contorno real, sem desaparecer em nenhum tema. */
.gp-filter-popover::part(overlay),
vaadin-popover-overlay::part(overlay),
vaadin-select-overlay::part(overlay),
vaadin-combo-box-overlay::part(overlay),
vaadin-date-picker-overlay::part(overlay){
  border:1px solid var(--gp-control-border)!important;
  background:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  box-shadow:0 10px 30px rgba(0,0,0,.20)!important;
}

/* Controles: borda permanente + destaque de foco. Resolve campos que sumiam no claro. */
vaadin-text-field,vaadin-password-field,vaadin-integer-field,vaadin-date-picker,
vaadin-select,vaadin-combo-box,vaadin-multi-select-combo-box{
  color:var(--gp-text)!important;
  --vaadin-input-field-background:var(--gp-surface)!important;
  --vaadin-input-field-value-color:var(--gp-text)!important;
  --vaadin-input-field-label-color:var(--gp-muted)!important;
  --vaadin-input-field-border-color:var(--gp-control-border)!important;
}
vaadin-text-field::part(input-field),vaadin-password-field::part(input-field),
vaadin-integer-field::part(input-field),vaadin-date-picker::part(input-field),
vaadin-select::part(input-field),vaadin-combo-box::part(input-field),
vaadin-multi-select-combo-box::part(input-field){
  background:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  border:1px solid var(--gp-control-border)!important;
  box-shadow:none!important;
}
vaadin-text-field[focused]::part(input-field),vaadin-password-field[focused]::part(input-field),
vaadin-integer-field[focused]::part(input-field),vaadin-date-picker[focused]::part(input-field),
vaadin-select[focused]::part(input-field),vaadin-combo-box[focused]::part(input-field),
vaadin-multi-select-combo-box[focused]::part(input-field){
  border-color:color-mix(in srgb,var(--gp-red) 72%,var(--gp-control-border))!important;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--gp-red) 40%,transparent)!important;
}
vaadin-select-value-button,vaadin-combo-box-item,vaadin-multi-select-combo-box-chip{
  color:var(--gp-text)!important;
}
vaadin-password-field::part(reveal-button),vaadin-date-picker::part(toggle-button),vaadin-select::part(toggle-button){
  color:var(--gp-muted)!important;
}

/* Resumo dia/mês: os três/dois filtros sempre delimitados e visíveis. */
.gp-summary-filters vaadin-date-picker::part(input-field),
.gp-summary-filters vaadin-select::part(input-field){
  border:1px solid var(--gp-control-border)!important;
  background:var(--gp-surface)!important;
}
.gp-summary-filters vaadin-date-picker[focused]::part(input-field),
.gp-summary-filters vaadin-select[focused]::part(input-field){
  border-color:var(--gp-red)!important;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--gp-red) 38%,transparent)!important;
}

/* Login: contraste explícito, inclusive label/value/reveal no dark. */
.gp-login-card,
.gp-login-card vaadin-text-field,
.gp-login-card vaadin-password-field{
  color:var(--gp-text)!important;
  --lumo-body-text-color:var(--gp-text)!important;
  --lumo-header-text-color:var(--gp-text)!important;
  --lumo-secondary-text-color:var(--gp-muted)!important;
  --vaadin-input-field-value-color:var(--gp-text)!important;
  --vaadin-input-field-label-color:var(--gp-text)!important;
  --vaadin-input-field-background:var(--gp-surface)!important;
}
.gp-login-card vaadin-text-field::part(input-field),
.gp-login-card vaadin-password-field::part(input-field){
  color:var(--gp-text)!important;
  background:var(--gp-surface)!important;
  border:1px solid var(--gp-control-border)!important;
}
.gp-login-card vaadin-password-field::part(reveal-button){color:var(--gp-muted)!important}
html[theme~="dark"] .gp-login-card,
html[data-gp-theme="dark"] .gp-login-card{
  --lumo-body-text-color:#fafafa!important;
  --lumo-header-text-color:#fafafa!important;
  --lumo-secondary-text-color:#b8bcc6!important;
  --vaadin-input-field-value-color:#fafafa!important;
  --vaadin-input-field-label-color:#fafafa!important;
}
html[theme~="light"] .gp-login-card,
html[data-gp-theme="light"] .gp-login-card{
  --lumo-body-text-color:#31333f!important;
  --lumo-header-text-color:#31333f!important;
  --lumo-secondary-text-color:#60636f!important;
  --vaadin-input-field-value-color:#31333f!important;
  --vaadin-input-field-label-color:#31333f!important;
}

/* Dialogs minimalistas: X no header, sem emoji nos títulos e ações. */
vaadin-dialog-overlay::part(overlay){
  border:1px solid var(--gp-control-border)!important;
  border-radius:.72rem!important;
  background:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  box-shadow:0 18px 54px rgba(0,0,0,.28)!important;
}
vaadin-dialog-overlay::part(header){
  min-height:48px!important;
  border-bottom:1px solid color-mix(in srgb,var(--gp-control-border) 70%,transparent)!important;
}
.gp-dialog-close{
  width:32px!important;min-width:32px!important;max-width:32px!important;
  height:32px!important;min-height:32px!important;max-height:32px!important;
  margin-left:auto!important;padding:0!important;
  border:1px solid transparent!important;border-radius:8px!important;
  color:var(--gp-muted)!important;background:transparent!important;box-shadow:none!important;
}
.gp-dialog-close vaadin-icon{width:16px!important;height:16px!important}
.gp-dialog-close:hover,.gp-dialog-close:focus-visible{
  color:var(--gp-text)!important;
  background:var(--gp-hover)!important;
  border-color:var(--gp-control-border)!important;
}

/* Ícones de ações/filtros: menores, alinhados e consistentes. */
.gp-action-icon{
  width:34px!important;min-width:34px!important;max-width:34px!important;
  height:34px!important;min-height:34px!important;max-height:34px!important;
  margin:0 2px!important;padding:0!important;
  color:var(--gp-muted)!important;background:transparent!important;
  border:1px solid transparent!important;border-radius:8px!important;
  box-shadow:none!important;
}
.gp-action-icon vaadin-icon{width:24px!important;height:24px!important}
.gp-action-buttons{width:100%!important;align-items:center!important;justify-content:center!important}
.gp-action-icon:hover,.gp-action-icon:focus-visible{
  color:var(--gp-text)!important;background:var(--gp-hover)!important;
  border-color:var(--gp-control-border)!important;
}
.gp-action-icon-danger{color:color-mix(in srgb,var(--gp-red) 82%,var(--gp-text))!important}
.gp-action-icon-danger:hover,.gp-action-icon-danger:focus-visible{
  color:var(--gp-red)!important;background:color-mix(in srgb,var(--gp-red) 9%,transparent)!important;
  border-color:color-mix(in srgb,var(--gp-red) 35%,transparent)!important;
}
.gp-filter-button{
  width:38px!important;min-width:38px!important;max-width:38px!important;
  height:38px!important;min-height:38px!important;max-height:38px!important;
  padding:0!important;border:1px solid var(--gp-control-border)!important;
  border-radius:8px!important;color:var(--gp-muted)!important;
  background:var(--gp-surface)!important;box-shadow:none!important;
}
.gp-filter-button vaadin-icon{width:17px!important;height:17px!important}
.gp-filter-button:hover,.gp-filter-button:focus-visible{
  color:var(--gp-text)!important;background:var(--gp-hover)!important;
  border-color:color-mix(in srgb,var(--gp-text) 42%,var(--gp-control-border))!important;
}
.gp-filter-button.gp-filter-active{
  color:var(--gp-red)!important;
  border-color:color-mix(in srgb,var(--gp-red) 55%,var(--gp-control-border))!important;
}

/* ==========================================================
   0.0.23 — paridade original: ações, filtro, gráfico e dropdown
   ========================================================== */

/* Filtro: mesmo funil sólido 15x14 do original; sem VaadinIcon. */
.gp-filter-button{
  position:relative!important;
  width:40px!important;min-width:40px!important;max-width:40px!important;
  height:40px!important;min-height:40px!important;max-height:40px!important;
  margin:0!important;padding:0!important;
  color:var(--gp-text)!important;
}
.gp-filter-button::before{
  content:""!important;display:block!important;position:absolute!important;
  left:50%!important;top:50%!important;width:15px!important;height:14px!important;
  transform:translate(-50%,-50%)!important;background:currentColor!important;
  clip-path:polygon(0 0,100% 0,64% 45%,64% 100%,36% 100%,36% 45%)!important;
  pointer-events:none!important;
}
.gp-filter-button vaadin-icon{display:none!important}
.gp-filter-button.gp-filter-active::after{
  content:""!important;display:block!important;position:absolute!important;
  width:7px!important;height:7px!important;top:4px!important;right:4px!important;
  border-radius:50%!important;background:#ff3b30!important;pointer-events:none!important;
}

/* Refugo: elimina a causa física do deslocamento. A barra não usa mais translateX. */
.gp-refugo-bar-column,
.gp-refugo-bar-column:hover,
.gp-refugo-bar-column:focus,
.gp-refugo-bar-column:focus-visible,
.gp-refugo-bar-column:active,
.gp-refugo-bar-column[focused]{
  transform:none!important;transition:none!important;outline:0!important;
  box-shadow:none!important;background:transparent!important;
}
.gp-refugo-bar-area{
  display:flex!important;align-items:flex-end!important;justify-content:center!important;
}
.gp-refugo-vbar,
.gp-refugo-bar-column:hover .gp-refugo-vbar,
.gp-refugo-bar-column:focus .gp-refugo-vbar,
.gp-refugo-bar-column:focus-visible .gp-refugo-vbar,
.gp-refugo-bar-column:active .gp-refugo-vbar,
.gp-refugo-bar-column[focused] .gp-refugo-vbar{
  position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;
  margin:0 auto!important;transform:none!important;transition:none!important;
  filter:none!important;outline:0!important;box-shadow:none!important;
  background:#636EFA!important;
}
/* Seleção como Plotly: selecionado forte, demais apenas atenuados. Sem contorno. */
.gp-refugo-has-selection .gp-refugo-bar-column:not(.gp-refugo-bar-selected) .gp-refugo-vbar{
  background:#636EFA!important;opacity:.28!important;
}
.gp-refugo-has-selection .gp-refugo-bar-selected .gp-refugo-vbar,
.gp-refugo-bar-selected .gp-refugo-vbar{
  background:#636EFA!important;opacity:1!important;
  outline:0!important;box-shadow:none!important;filter:none!important;transform:none!important;
}
/* O valor pode continuar centralizado por texto; não participa da geometria da barra. */
.gp-refugo-bar-amount{pointer-events:none!important}

/* Dropdown do sistema/gráfico: sem contorno artificial e sem primeiro item pré-realçado. */
vaadin-context-menu-overlay::part(overlay){
  border:0!important;outline:0!important;
  border-radius:.55rem!important;
  background:var(--gp-surface)!important;color:var(--gp-text)!important;
  box-shadow:0 8px 24px rgba(0,0,0,.20)!important;
  overflow:hidden!important;
}
vaadin-context-menu-item,
vaadin-context-menu-item[focused],
vaadin-context-menu-item:focus,
vaadin-context-menu-item:focus-visible,
vaadin-context-menu-item:active{
  background:var(--gp-surface)!important;color:var(--gp-text)!important;
  border:0!important;outline:0!important;box-shadow:none!important;
}
vaadin-context-menu-item:hover{
  background:var(--gp-hover)!important;color:var(--gp-text)!important;
}
vaadin-context-menu-item[disabled],
vaadin-context-menu-item.gp-menu-caption,
vaadin-context-menu-item.gp-menu-caption[focused]{
  background:var(--gp-surface)!important;color:var(--gp-muted)!important;
  opacity:.72!important;outline:0!important;box-shadow:none!important;
}
/* O gatilho ••• permanece como no original: sem borda/fundo em qualquer estado. */
.gp-menu-button,.gp-chart-menu-button,
.gp-menu-button:hover,.gp-menu-button:focus,.gp-menu-button:focus-visible,.gp-menu-button:active,
.gp-chart-menu-button:hover,.gp-chart-menu-button:focus,.gp-chart-menu-button:focus-visible,.gp-chart-menu-button:active{
  border:0!important;outline:0!important;box-shadow:none!important;background:transparent!important;
}

/* ==========================================================
   0.0.24 — contraste, Refugo ciano, OEE e campos em maiúsculas
   ========================================================== */

/* Campos que são identificadores/cadastros ficam visual e logicamente em maiúsculas. */
.gp-uppercase-input,
.gp-uppercase-input::part(input-field){
  text-transform:uppercase!important;
}

/* Login: contraste explícito, inclusive dentro do input encapsulado do Vaadin. */
:root{
  --gp-login-value-color:#31333f;
}
html[theme~="dark"],html[data-gp-theme="dark"]{
  --gp-login-value-color:#ffffff;
}
html[theme~="light"],html[data-gp-theme="light"]{
  --gp-login-value-color:#31333f;
}
html[theme~="dark"] .gp-login-card,
html[data-gp-theme="dark"] .gp-login-card,
html[theme~="dark"] .gp-login-card *,
html[data-gp-theme="dark"] .gp-login-card *{
  --lumo-body-text-color:#ffffff!important;
  --lumo-header-text-color:#ffffff!important;
  --lumo-primary-text-color:#ffffff!important;
  --vaadin-input-field-value-color:#ffffff!important;
  --vaadin-input-field-label-color:#ffffff!important;
}
html[theme~="dark"] .gp-login-card vaadin-text-field,
html[theme~="dark"] .gp-login-card vaadin-password-field,
html[data-gp-theme="dark"] .gp-login-card vaadin-text-field,
html[data-gp-theme="dark"] .gp-login-card vaadin-password-field{
  color:#ffffff!important;
  --vaadin-input-field-value-color:#ffffff!important;
  --vaadin-input-field-label-color:#ffffff!important;
}
html[theme~="dark"] .gp-login-card vaadin-text-field::part(label),
html[theme~="dark"] .gp-login-card vaadin-password-field::part(label),
html[data-gp-theme="dark"] .gp-login-card vaadin-text-field::part(label),
html[data-gp-theme="dark"] .gp-login-card vaadin-password-field::part(label){
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
}
html[theme~="dark"] .gp-login-card vaadin-text-field::part(input-field),
html[theme~="dark"] .gp-login-card vaadin-password-field::part(input-field),
html[data-gp-theme="dark"] .gp-login-card vaadin-text-field::part(input-field),
html[data-gp-theme="dark"] .gp-login-card vaadin-password-field::part(input-field){
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  caret-color:#ffffff!important;
}

/* Funil sempre contrasta com o tema. */
html[theme~="dark"] .gp-filter-button::before,
html[data-gp-theme="dark"] .gp-filter-button::before{
  background:#f7f7f8!important;
  opacity:1!important;
}
html[theme~="light"] .gp-filter-button::before,
html[data-gp-theme="light"] .gp-filter-button::before{
  background:#31333f!important;
  opacity:1!important;
}

/* Refugo: uma única geometria final. Nada muda no hover/foco. */
.gp-refugo-chart-plot{
  grid-auto-columns:minmax(0,1fr)!important;
  column-gap:clamp(5px,.85vw,14px)!important;
  padding-left:12px!important;
  padding-right:12px!important;
  overflow:visible!important;
}
.gp-refugo-y-axis{
  overflow:hidden!important;
  z-index:4!important;
}
.gp-refugo-y-tick{
  overflow:hidden!important;
  text-overflow:clip!important;
  z-index:5!important;
}
.gp-refugo-bar-column,
.gp-refugo-bar-column:hover,
.gp-refugo-bar-column:focus,
.gp-refugo-bar-column:focus-visible,
.gp-refugo-bar-column:active,
.gp-refugo-bar-column[focused]{
  transform:none!important;
  transition:none!important;
  filter:none!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
}
.gp-refugo-bar-area{
  display:flex!important;
  align-items:flex-end!important;
  justify-content:center!important;
  position:absolute!important;
  left:0!important;right:0!important;top:0!important;
}
.gp-refugo-vbar,
.gp-refugo-bar-column:hover .gp-refugo-vbar,
.gp-refugo-bar-column:focus .gp-refugo-vbar,
.gp-refugo-bar-column:focus-visible .gp-refugo-vbar,
.gp-refugo-bar-column:active .gp-refugo-vbar,
.gp-refugo-bar-column[focused] .gp-refugo-vbar{
  position:relative!important;
  left:auto!important;right:auto!important;bottom:auto!important;
  margin:0 auto!important;
  width:min(var(--gp-refugo-bar-ratio,72%),var(--gp-refugo-bar-max,82px))!important;
  min-width:6px!important;
  max-width:var(--gp-refugo-bar-max,82px)!important;
  transform:none!important;
  transition:none!important;
  filter:none!important;
  outline:0!important;
  box-shadow:none!important;
  background:#008B8B!important; /* dark cyan */
  opacity:1!important;
}
.gp-refugo-has-selection .gp-refugo-bar-column:not(.gp-refugo-bar-selected) .gp-refugo-vbar{
  background:#008B8B!important;
  opacity:.30!important;
}
.gp-refugo-has-selection .gp-refugo-bar-selected .gp-refugo-vbar,
.gp-refugo-bar-selected .gp-refugo-vbar{
  background:#00B7C7!important;
  opacity:1!important;
  outline:0!important;
  box-shadow:none!important;
  filter:none!important;
  transform:none!important;
}
/* Cada número pertence somente à própria coluna; não invade eixo ou vizinho. */
.gp-refugo-bar-amount{
  left:2px!important;
  right:2px!important;
  width:auto!important;
  max-width:calc(100% - 4px)!important;
  transform:none!important;
  text-align:center!important;
  overflow:hidden!important;
  text-overflow:clip!important;
  white-space:nowrap!important;
  font-size:var(--gp-refugo-amount-size,11px)!important;
  line-height:1!important;
  font-variant-numeric:tabular-nums!important;
  pointer-events:none!important;
}

/* OEE: sempre em negrito; abaixo de 85%, vermelho. Observação ganha informativo. */
.gp-oee-cell{
  display:inline-flex!important;
  align-items:center!important;
  gap:4px!important;
  white-space:nowrap!important;
  line-height:1!important;
  overflow:visible!important;
}
.gp-oee-value{font-weight:700!important;color:var(--gp-text)!important}
.gp-oee-value.gp-oee-low{font-weight:700!important;color:#ff4b4b!important}
.gp-oee-info{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:1.15rem!important;height:1.15rem!important;
  margin:0!important;padding:0!important;
  border:0!important;background:transparent!important;
  color:inherit!important;font-size:.95rem!important;line-height:1!important;
  cursor:help!important;box-shadow:none!important;outline:0!important;
}

@media(max-width:767px){
  .gp-refugo-chart-plot{column-gap:4px!important;padding-left:4px!important;padding-right:4px!important}
  .gp-refugo-vbar{min-width:4px!important}
  .gp-refugo-bar-amount{font-size:min(var(--gp-refugo-amount-size,10px),10px)!important}
}
.gp-oee-info{position:relative!important}
.gp-oee-info::after{
  content:attr(data-tooltip)!important;
  position:absolute!important;
  z-index:99999!important;
  left:50%!important;
  bottom:calc(100% + 8px)!important;
  transform:translateX(-50%)!important;
  display:none!important;
  width:max-content!important;
  max-width:min(320px,78vw)!important;
  padding:.48rem .62rem!important;
  border-radius:.38rem!important;
  background:rgba(38,39,48,.98)!important;
  color:#fff!important;
  font-size:.78rem!important;
  font-weight:400!important;
  line-height:1.35!important;
  white-space:pre-wrap!important;
  text-align:left!important;
  box-shadow:0 4px 14px rgba(0,0,0,.28)!important;
  pointer-events:none!important;
}
.gp-oee-info:hover::after,.gp-oee-info:focus::after,.gp-oee-info:focus-visible::after{display:block!important}

/* ==========================================================
   Refugo: rótulos determinísticos e detalhamento consolidado
   ========================================================== */
/* O Java já entrega o texto abreviado; esta regra é igual em qualquer página,
   inclusive na última página com poucos itens. */
.gp-refugo-bar-label{
  top:310px!important;
  right:50%!important;
  width:max-content!important;
  max-width:none!important;
  white-space:nowrap!important;
  overflow:visible!important;
  text-align:right!important;
  font-size:11px!important;
  line-height:1!important;
  transform:rotate(-35deg)!important;
  transform-origin:100% 0!important;
  pointer-events:none!important;
}
.gp-refugo-pagination{
  position:relative!important;
  z-index:6!important;
  margin-top:.35rem!important;
  min-height:36px!important;
}
.gp-refugo-sector-detail-title{
  display:block!important;
  margin:.8rem 0 .38rem!important;
  color:var(--gp-text)!important;
  font-size:.95rem!important;
  font-weight:700!important;
  line-height:1.25!important;
}
@media(max-width:767px){
  .gp-refugo-bar-label{top:296px!important;font-size:10px!important}
}

/* ==========================================================
   0.0.26 — filtros de resumo + funil fiel ao original
   ========================================================== */
.gp-summary-filter-toolbar{
  display:flex!important;
  justify-content:flex-end!important;
  align-items:flex-end!important;
  width:100%!important;
  min-height:40px!important;
  margin:.15rem 0 .55rem!important;
  padding:0!important;
}

/* Geometria estável do ícone de funil. */
.gp-filter-button{
  position:relative!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:40px!important;min-width:40px!important;max-width:40px!important;
  height:40px!important;min-height:40px!important;max-height:40px!important;
  margin:0!important;padding:0!important;
  border:1px solid var(--gp-control-border)!important;
  border-radius:8px!important;
  background:transparent!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
  transform:none!important;
  transition:none!important;
}
.gp-filter-button::before{
  content:""!important;
  display:block!important;
  position:static!important;
  width:15px!important;
  height:14px!important;
  transform:none!important;
  background:currentColor!important;
  clip-path:polygon(0 0,100% 0,64% 45%,64% 100%,36% 100%,36% 45%)!important;
  pointer-events:none!important;
}
.gp-filter-button:hover,.gp-filter-button:focus,.gp-filter-button:focus-visible,.gp-filter-button:active{
  color:var(--gp-text)!important;
  background:var(--gp-hover)!important;
  border-color:var(--gp-control-border)!important;
  outline:0!important;
  box-shadow:none!important;
  transform:none!important;
}
html[theme~="dark"] .gp-filter-button,
html[data-gp-theme="dark"] .gp-filter-button{color:#f7f7f8!important}
html[theme~="light"] .gp-filter-button,
html[data-gp-theme="light"] .gp-filter-button{color:#31333f!important}
.gp-filter-button.gp-filter-active::after{
  content:""!important;
  position:absolute!important;
  display:block!important;
  top:4px!important;right:4px!important;
  width:7px!important;height:7px!important;
  border-radius:50%!important;
  background:#ff3b30!important;
  box-shadow:0 0 0 2px var(--gp-bg)!important;
  pointer-events:none!important;
}

/* Resumo Dia/Mês usa o mesmo popover dos filtros de Lançamentos/Refugo. */
.gp-summary-filter-toolbar + vaadin-popover-overlay,
.gp-summary-filter-toolbar ~ .gp-filter-popover{z-index:20}

@media (max-width:767px){
  .gp-summary-filter-toolbar{margin:.1rem 0 .45rem!important}
}

/* ==========================================================
   0.0.27 — Refugo azul + eixo Y estável + painel OEE industrial
   ========================================================== */
:root{
  --gp-refugo-blue:#223D72;
  --gp-refugo-blue-selected:#315A9A;
  --gp-oee-green:#8ADF00;
  --gp-oee-track:color-mix(in srgb,var(--gp-text) 11%,transparent);
}

/* Filtro: usa o ícone padrão do Vaadin; remove o funil CSS acumulado. */
.gp-filter-button::before{content:none!important;display:none!important}
.gp-filter-button vaadin-icon{
  display:block!important;
  width:18px!important;height:18px!important;
  color:currentColor!important;
  opacity:1!important;
}
.gp-filter-button{
  color:var(--gp-text)!important;
  background:transparent!important;
  border:1px solid var(--gp-control-border)!important;
  border-radius:8px!important;
}
.gp-filter-button:hover,.gp-filter-button:focus-visible{
  color:var(--gp-text)!important;
  background:var(--gp-hover)!important;
  border-color:color-mix(in srgb,var(--gp-text) 36%,var(--gp-control-border))!important;
}

/* Refugo: todos os ticks usam a propriedade calculada pelo Java. */
.gp-refugo-chart-canvas{
  grid-template-columns:66px minmax(0,1fr)!important;
}
.gp-refugo-y-axis{
  width:66px!important;
  height:300px!important;min-height:300px!important;
  overflow:visible!important;
}
.gp-refugo-y-tick{
  right:10px!important;
  bottom:var(--gp-tick-pos)!important;
  width:52px!important;
  transform:translateY(50%)!important;
  text-align:right!important;
  overflow:visible!important;
  font-size:11px!important;
  line-height:1!important;
}
.gp-refugo-grid-area,.gp-refugo-bar-area{
  height:300px!important;min-height:300px!important;
}
.gp-refugo-chart-plot{
  column-gap:clamp(6px,1vw,18px)!important;
  padding-left:8px!important;padding-right:12px!important;
}
.gp-refugo-vbar,
.gp-refugo-bar-column:hover .gp-refugo-vbar,
.gp-refugo-bar-column:focus .gp-refugo-vbar,
.gp-refugo-bar-column:focus-visible .gp-refugo-vbar,
.gp-refugo-bar-column:active .gp-refugo-vbar{
  width:min(var(--gp-refugo-bar-ratio,38%),var(--gp-refugo-bar-max,66px))!important;
  max-width:var(--gp-refugo-bar-max,66px)!important;
  background:var(--gp-refugo-blue)!important;
  opacity:1!important;
  filter:none!important;
  transform:none!important;
  transition:none!important;
}
.gp-refugo-has-selection .gp-refugo-bar-column:not(.gp-refugo-bar-selected) .gp-refugo-vbar{
  background:var(--gp-refugo-blue)!important;
  opacity:.34!important;
}
.gp-refugo-has-selection .gp-refugo-bar-selected .gp-refugo-vbar,
.gp-refugo-bar-selected .gp-refugo-vbar{
  background:var(--gp-refugo-blue-selected)!important;
  opacity:1!important;
  outline:0!important;box-shadow:none!important;
}

/* Mantém as tabelas/resumos visualmente conectados ao painel. */
.gp-summary-grid,.gp-month-entries-grid{
  width:100%!important;min-width:0!important;
}

@media(max-width:680px){
  .gp-refugo-chart-canvas{grid-template-columns:52px minmax(0,1fr)!important}
  .gp-refugo-y-axis{width:52px!important}
  .gp-refugo-y-tick{right:6px!important;width:42px!important;font-size:10px!important}
}

/* ==========================================================
   0.0.28 — OEE consolidado + Resumo Dia/Mês reestruturado
   ========================================================== */

/* Mais respiro lateral no desktop sem perder largura útil. */
.gp-shell{
  width:100%!important;
  max-width:1760px!important;
  margin:0 auto!important;
  padding-left:clamp(1.35rem,2.25vw,2.75rem)!important;
  padding-right:clamp(1.35rem,2.25vw,2.75rem)!important;
}
.gp-content{width:100%!important;min-width:0!important}

/* Novo ícone de filtro: sliders/tune, sem funil e sem contorno pesado. */
.gp-filter-button{
  width:38px!important;min-width:38px!important;max-width:38px!important;
  height:38px!important;min-height:38px!important;max-height:38px!important;
  padding:0!important;margin:0!important;
  border:0!important;border-radius:8px!important;
  background:transparent!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
}
.gp-filter-button::before{content:none!important;display:none!important}
.gp-filter-button vaadin-icon{display:none!important}
.gp-filter-tune-icon{
  display:block!important;
  position:relative!important;
  width:19px!important;
  height:16px!important;
  min-width:19px!important;
  color:currentColor!important;
  background:
    linear-gradient(currentColor,currentColor) left 2px top 2px/15px 1.6px no-repeat,
    linear-gradient(currentColor,currentColor) left 2px top 7px/15px 1.6px no-repeat,
    linear-gradient(currentColor,currentColor) left 2px top 12px/15px 1.6px no-repeat!important;
  opacity:.92!important;
  pointer-events:none!important;
}
.gp-filter-tune-icon::before{
  content:""!important;
  position:absolute!important;
  width:4px!important;height:4px!important;
  border:1.6px solid currentColor!important;
  border-radius:50%!important;
  background:var(--gp-bg)!important;
  left:5px!important;top:0!important;
  box-sizing:border-box!important;
  box-shadow:
    6px 5px 0 -1.2px var(--gp-bg),
    6px 5px 0 0 currentColor,
    -2px 10px 0 -1.2px var(--gp-bg),
    -2px 10px 0 0 currentColor!important;
}
.gp-filter-button:hover,
.gp-filter-button:focus-visible{
  border:0!important;
  background:var(--gp-hover)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;outline:0!important;
}
.gp-filter-button.gp-filter-active::after{
  top:3px!important;right:3px!important;
  width:6px!important;height:6px!important;
  background:#ff3b30!important;
  box-shadow:0 0 0 2px var(--gp-bg)!important;
}
html[theme~="dark"] .gp-filter-tune-icon,
html[data-gp-theme="dark"] .gp-filter-tune-icon{color:#f7f7f8!important}
html[theme~="light"] .gp-filter-tune-icon,
html[data-gp-theme="light"] .gp-filter-tune-icon{color:#31333f!important}

/* Estrutura única e previsível para Dia e Mês. */
.gp-summary-page{
  width:100%!important;
  min-width:0!important;
  display:flex!important;
  flex-direction:column!important;
  gap:.9rem!important;
  padding:0!important;
  box-sizing:border-box!important;
}
.gp-summary-title-row{
  width:100%!important;
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:1rem!important;
  margin:0!important;
}
.gp-summary-title-row .gp-filter-button{flex:0 0 auto!important}
@media(max-width:760px){
  .gp-shell{
    max-width:none!important;
    padding-left:.78rem!important;
    padding-right:.78rem!important;
  }
  .gp-summary-page{gap:.7rem!important}
}

/* ==========================================================
   Camada global consolidada (override final)
   Este bloco é intencionalmente o último: neutraliza experimentos visuais
   das v027/v028 e retorna a geometria funcional da referência Python.
   ========================================================== */

/* Área principal: mesma leitura larga do original, com respiro sem cards. */
.gp-shell{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:clamp(.85rem,2vw,2rem)!important;
  padding-right:clamp(.85rem,2vw,2rem)!important;
  box-sizing:border-box!important;
}
.gp-content{width:100%!important;min-width:0!important;padding-bottom:1.5rem!important}

/* Funil original: 15 x 14 px, sem contorno/caixa artificial. */
.gp-filter-button{
  width:40px!important;min-width:40px!important;max-width:40px!important;
  height:40px!important;min-height:40px!important;max-height:40px!important;
  padding:0!important;margin:0!important;
  border:0!important;border-radius:0!important;
  background:transparent!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;outline:0!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
}
.gp-filter-button::before,.gp-filter-button vaadin-icon,.gp-filter-tune-icon{display:none!important;content:none!important}
.gp-filter-funnel-icon{
  display:block!important;
  width:15px!important;height:14px!important;min-width:15px!important;
  background:currentColor!important;
  clip-path:polygon(0 0,100% 0,64% 45%,64% 100%,36% 100%,36% 45%)!important;
  opacity:1!important;pointer-events:none!important;
}
.gp-filter-button:hover,.gp-filter-button:focus,.gp-filter-button:focus-visible{
  border:0!important;background:transparent!important;box-shadow:none!important;outline:0!important;
  color:var(--gp-text)!important;
}
.gp-filter-button.gp-filter-active::after{
  content:""!important;display:block!important;position:absolute!important;
  width:6px!important;height:6px!important;border-radius:50%!important;
  right:4px!important;top:4px!important;background:#ff4b4b!important;
  box-shadow:0 0 0 2px var(--gp-bg)!important;
}
html[theme~="dark"] .gp-filter-funnel-icon,html[data-gp-theme="dark"] .gp-filter-funnel-icon{color:#fafafa!important}
html[theme~="light"] .gp-filter-funnel-icon,html[data-gp-theme="light"] .gp-filter-funnel-icon{color:#31333f!important}

/* Popovers/context menus: sem primeiro item visualmente pré-selecionado. */
vaadin-context-menu-overlay::part(overlay),
vaadin-popover-overlay::part(overlay){box-shadow:var(--lumo-box-shadow-m)!important}
vaadin-context-menu-item[focused]:not(:hover),
vaadin-context-menu-item[focus-ring]:not(:hover){background:transparent!important;color:inherit!important}
.gp-menu-caption{opacity:.68!important;background:transparent!important}

/* Resumo Dia/Mês: fluxo original aberto, sem cards/painéis industriais. */
.gp-original-summary{
  width:100%!important;min-width:0!important;
  display:flex!important;flex-direction:column!important;
  gap:0!important;padding:0!important;
}
.gp-summary-title-row{position:relative!important;display:flex!important;align-items:center!important;justify-content:flex-end!important}
.gp-summary-title-row>.gp-section-title{position:absolute!important;left:50%!important;top:50%!important;max-width:calc(100% - 64px)!important;text-align:center!important;transform:translate(-50%,-50%)!important;font-size:2rem!important;white-space:nowrap!important}
.gp-summary-inline-filters{display:grid!important;gap:1rem!important;align-items:end!important;width:100%!important;min-width:0!important}
.gp-summary-inline-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.gp-summary-inline-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.gp-summary-result{width:100%!important;min-width:0!important;display:flex!important;flex-direction:column!important;gap:.65rem!important}
.gp-summary-secondary-toolbar{display:flex!important;align-items:stretch!important;justify-content:space-between!important;gap:1rem!important;width:100%!important;min-height:58px!important;margin:0 0 .65rem!important;padding:0!important}
.gp-summary-filter-kpi{position:relative!important;flex:0 1 320px!important;width:320px!important;min-width:0!important;min-height:58px!important;padding:0!important;white-space:nowrap!important;box-sizing:border-box!important}
.gp-summary-sector-kpi{cursor:pointer!important;text-align:left!important}
.gp-summary-sector-kpi>span,.gp-summary-sector-kpi>h3{cursor:pointer!important}
.gp-summary-period-kpi{text-align:right!important}
.gp-summary-period-kpi-clickable>span,.gp-summary-period-kpi-clickable>h3{cursor:pointer!important}
.gp-summary-secondary-sector-picker,.gp-summary-secondary-period-picker{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;opacity:0!important;z-index:2!important;cursor:pointer!important;margin:0!important}
.gp-summary-secondary-sector-picker::part(input-field),
.gp-summary-secondary-sector-picker::part(toggle-button),
.gp-summary-secondary-period-picker::part(input-field),
.gp-summary-secondary-period-picker::part(toggle-button){cursor:pointer!important}
.gp-summary-sector-kpi:focus-within{outline:0!important;outline-offset:0!important;border-radius:var(--lumo-border-radius-m)!important}
.gp-summary-period-kpi-clickable{cursor:pointer!important;border-radius:var(--lumo-border-radius-m)!important}
.gp-summary-period-kpi-clickable:focus-visible{outline:2px solid var(--lumo-primary-color)!important;outline-offset:3px!important}
.gp-period-external-trigger{display:contents!important}
.gp-summary-filter-kpi>span{display:block!important;color:var(--gp-muted)!important;font-size:.875rem!important;line-height:18px!important;margin:0 0 1px!important}
.gp-summary-filter-kpi>h3{height:auto!important;min-height:0!important;display:flex!important;align-items:flex-start!important;line-height:1.12!important;margin:0!important;font-size:1.55rem!important;color:var(--gp-text)!important;overflow:hidden!important;text-overflow:ellipsis!important}
.gp-summary-sector-kpi>h3{justify-content:flex-start!important}
.gp-summary-period-kpi>h3{justify-content:flex-end!important}
@media(max-width:700px){
  .gp-summary-title-row>.gp-section-title{font-size:1.3rem!important;max-width:calc(100% - 52px)!important}
  .gp-summary-secondary-toolbar{gap:.65rem!important}
  .gp-summary-filter-kpi{flex:1 1 0!important;width:0!important;min-height:56px!important}
  .gp-summary-filter-kpi>h3{font-size:1.12rem!important}
}
.gp-original-metrics{display:grid!important;gap:1rem!important;width:100%!important;min-width:0!important;margin:.15rem 0 .35rem!important}
.gp-original-metrics-5{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.gp-original-metrics-6{grid-template-columns:repeat(6,minmax(0,1fr))!important}
.gp-original-metrics-8{grid-template-columns:repeat(8,minmax(0,1fr))!important}
.gp-original-metrics-9{grid-template-columns:repeat(9,minmax(0,1fr))!important}
.gp-original-metrics-10{grid-template-columns:repeat(5,minmax(0,1fr))!important;column-gap:clamp(1.5rem,3vw,4rem)!important;row-gap:1.2rem!important;justify-items:stretch!important;transform:translateX(60px)!important}
.gp-original-metrics-10>.gp-kpi{width:100%!important;box-sizing:border-box!important}
.gp-original-metrics .gp-kpi{
  border:0!important;border-radius:0!important;background:transparent!important;
  box-shadow:none!important;padding:.3rem 0!important;min-width:0!important;
}
.gp-original-metrics .gp-kpi-label{font-size:.86rem!important;color:var(--gp-muted)!important;white-space:normal!important}
.gp-original-metrics .gp-kpi-value{font-size:clamp(1.25rem,2vw,1.8rem)!important;font-weight:650!important;color:var(--gp-text)!important}
.gp-original-subtitle{font-size:1.1rem!important;font-weight:650!important;margin:.85rem 0 .25rem!important;color:var(--gp-text)!important}
/* Tabelas e "Mostrar mais" exatamente como conteúdo do fluxo, sem card. */
.gp-summary-grid,.gp-month-entries-grid{width:100%!important;min-width:0!important;margin:0!important}
.gp-show-more-holder{display:flex!important;justify-content:center!important;width:100%!important;padding:.5rem 0!important}
.gp-show-more{border:0!important;background:transparent!important;box-shadow:none!important;font-weight:400!important}

/* Login: contraste determinístico nos dois temas. */
html[theme~="dark"] .gp-login-card,
html[data-gp-theme="dark"] .gp-login-card,
html[theme~="dark"] .gp-login-card label,
html[data-gp-theme="dark"] .gp-login-card label,
html[theme~="dark"] .gp-login-card vaadin-text-field,
html[data-gp-theme="dark"] .gp-login-card vaadin-text-field,
html[theme~="dark"] .gp-login-card vaadin-password-field,
html[data-gp-theme="dark"] .gp-login-card vaadin-password-field{color:#fafafa!important}
html[theme~="light"] .gp-login-card,
html[data-gp-theme="light"] .gp-login-card,
html[theme~="light"] .gp-login-card label,
html[data-gp-theme="light"] .gp-login-card label{color:#31333f!important}

/* Refugo: hover não altera geometria; seleção só por cor/opacidade. */
.gp-refugo-bar,.gp-refugo-bar:hover,.gp-refugo-bar:focus,.gp-refugo-bar:focus-visible{
  transform:none!important;translate:none!important;scale:none!important;
  filter:none!important;outline:0!important;box-shadow:none!important;
  transition:none!important;
}

@media(max-width:900px){
  .gp-original-metrics-5,.gp-original-metrics-6,.gp-original-metrics-8,.gp-original-metrics-9,.gp-original-metrics-10{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:700px){
  .gp-shell{padding-left:.6rem!important;padding-right:.6rem!important}
  .gp-summary-inline-3,.gp-summary-inline-2{grid-template-columns:1fr!important}
  .gp-original-metrics-5,.gp-original-metrics-6,.gp-original-metrics-8,.gp-original-metrics-9,.gp-original-metrics-10{grid-template-columns:1fr 1fr!important;gap:.65rem!important}
}


/* ==========================================================
   0.0.30 — OEE / FILTRO / MARGENS LATERAIS
   ========================================================== */
.gp-shell{
  width:100%!important;
  max-width:none!important;
  margin-left:auto!important;
  margin-right:auto!important;
  padding-left:calc(clamp(1rem,1.8vw,2rem) - 6px)!important;
  padding-right:calc(clamp(1rem,1.8vw,2rem) - 6px)!important;
  box-sizing:border-box!important;
}
.gp-content,.gp-header,.gp-tabs,.gp-footer,.gp-title-row,.gp-toolbar{
  box-sizing:border-box!important;
}
.gp-filter-button{
  position:relative!important;
  width:40px!important;min-width:40px!important;max-width:40px!important;
  height:40px!important;min-height:40px!important;max-height:40px!important;
  border:1px solid var(--gp-control-border)!important;
  border-radius:.48rem!important;
  background:transparent!important;
  box-shadow:none!important;
  transition:border-color .12s ease,background-color .12s ease,box-shadow .12s ease!important;
}
.gp-filter-button:hover,.gp-filter-button:focus-visible{
  border-color:var(--gp-text)!important;
  background:color-mix(in srgb,var(--gp-text) 7%,transparent)!important;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--gp-text) 18%,transparent)!important;
  outline:0!important;
}
.gp-filter-button:active{
  background:color-mix(in srgb,var(--gp-text) 11%,transparent)!important;
}
.gp-filter-funnel-icon{width:15px!important;height:14px!important;display:block!important}
@media(max-width:700px){
  .gp-shell{max-width:none!important;padding-left:.75rem!important;padding-right:.75rem!important}
}


/* ==========================================================
   0.0.34 — REFUGO: BARRAS MAIS LARGAS E CANTOS SUAVES
   Base funcional mantida: v032. Sem alterações de backend/OEE.
   ========================================================== */
.gp-refugo-vbar,
.gp-refugo-bar-column:hover .gp-refugo-vbar,
.gp-refugo-bar-column:focus .gp-refugo-vbar,
.gp-refugo-bar-column:focus-visible .gp-refugo-vbar,
.gp-refugo-bar-column:active .gp-refugo-vbar,
.gp-refugo-bar-column[focused] .gp-refugo-vbar{
  width:min(var(--gp-refugo-bar-ratio,56%),var(--gp-refugo-bar-max,86px))!important;
  max-width:var(--gp-refugo-bar-max,86px)!important;
  min-width:8px!important;
  border-radius:4px 4px 2px 2px!important;
}
@media(max-width:767px){
  .gp-refugo-vbar,
  .gp-refugo-bar-column:hover .gp-refugo-vbar,
  .gp-refugo-bar-column:focus .gp-refugo-vbar,
  .gp-refugo-bar-column:focus-visible .gp-refugo-vbar,
  .gp-refugo-bar-column:active .gp-refugo-vbar{
    min-width:5px!important;
    border-radius:3px 3px 1px 1px!important;
  }
}

/* ==========================================================================
   0.0.57 — DECLARACOES-BASE (CONSOLIDADAS NO FINAL DO ARQUIVO)
   ========================================================================== */

/* A base cromática é exatamente a do dropdown do menu do sistema. */
html body vaadin-dialog.gp-modal-v053,
html body vaadin-dialog[theme~="gp-modal-v053"]{
  --gp-modal-bg-v053:var(--gp-surface)!important;
  --lumo-base-color:var(--gp-surface)!important;
}
html body vaadin-dialog.gp-modal-v053::part(overlay),
html body vaadin-dialog.gp-modal-v053::part(header),
html body vaadin-dialog.gp-modal-v053::part(content),
html body vaadin-dialog.gp-modal-v053::part(footer),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(overlay),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(header),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(content),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(footer),
html body .gp-filter-popover::part(overlay),
html body .gp-filter-popover::part(content),
html body vaadin-context-menu-overlay::part(overlay),
html body vaadin-context-menu-overlay::part(content),
html body vaadin-combo-box-overlay::part(overlay),
html body vaadin-combo-box-overlay::part(content),
html body vaadin-select-overlay::part(overlay),
html body vaadin-select-overlay::part(content),
html body vaadin-date-picker-overlay::part(overlay),
html body vaadin-date-picker-overlay::part(content){
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
}
html body .gp-filter-dropdown,
html body .gp-filter-dropdown-grid,
html body .gp-filter-dropdown-actions,
html body .gp-system-menu,
html body vaadin-context-menu-item,
html body vaadin-combo-box-item,
html body vaadin-select-item{
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
}

/* ==========================================================================
   0.0.82 — RESUMO DIA CONSOLIDADO / INFORMATIVOS ACIMA
   ========================================================================== */
.gp-summary-compact-value-v082{
  display:inline-block!important;
  max-width:100%!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.gp-summary-compact-value-v082[tabindex]{
  cursor:help!important;
}

/* Todos os campos usam o mesmo preenchimento do menu; readonly/disabled não
   criam uma segunda cor, apenas mudam a cor do texto. */
html body vaadin-text-field,
html body vaadin-password-field,
html body vaadin-integer-field,
html body vaadin-number-field,
html body vaadin-date-picker,
html body vaadin-select,
html body vaadin-combo-box,
html body vaadin-multi-select-combo-box{
  --vaadin-input-field-background:var(--gp-surface)!important;
  --lumo-base-color:var(--gp-surface)!important;
}
html body vaadin-text-field::part(input-field),
html body vaadin-password-field::part(input-field),
html body vaadin-integer-field::part(input-field),
html body vaadin-number-field::part(input-field),
html body vaadin-date-picker::part(input-field),
html body vaadin-select::part(input-field),
html body vaadin-combo-box::part(input-field),
html body vaadin-multi-select-combo-box::part(input-field),
html body vaadin-text-field[readonly]::part(input-field),
html body vaadin-password-field[readonly]::part(input-field),
html body vaadin-date-picker[readonly]::part(input-field),
html body vaadin-select[readonly]::part(input-field),
html body vaadin-combo-box[readonly]::part(input-field),
html body vaadin-combo-box[disabled]::part(input-field){
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  border-color:var(--gp-control-border)!important;
  border-style:solid!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}
html body .gp-period-month::part(input-field),
html body .gp-period-year::part(input-field),
html body .gp-period-field{
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
}

/* Máquina e Capacidade alinham pela base dos campos, independentemente da
   altura interna que ComboBox e readonly calculam para os rótulos. */
html body vaadin-dialog.gp-modal-v053 .gp-launch-row-2{
  align-items:end!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-launch-row-2>.gp-launch-standard-field-v054{
  align-self:end!important;
}

/* Perfil e Setor agora são ComboBox e compartilham a caixa dos demais campos. */
html body vaadin-dialog.gp-modal-v053 .gp-admin-standard-field-v057::part(input-field){
  width:100%!important;
  height:40px!important;
  min-height:40px!important;
  max-height:40px!important;
  box-sizing:border-box!important;
  border:1px solid var(--gp-control-border)!important;
  border-radius:.25rem!important;
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-admin-profile-field-v057::part(toggle-button),
html body vaadin-dialog.gp-modal-v053 .gp-admin-sector-field-v057::part(toggle-button){
  color:var(--gp-muted)!important;
  background:transparent!important;
  border:0!important;
}

/* Título alinhado à direita; o botão do menu ocupa a coluna imediatamente
   à direita do gráfico e fica na mesma linha visual do título selecionado. */
html body .gp-refugo-chart-line{
  grid-template-columns:minmax(0,1fr) 40px!important;
  column-gap:8px!important;
}
html body .gp-refugo-chart-line>.gp-refugo-chart .gp-refugo-chart-title{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  text-align:right!important;
  padding-left:0!important;
  padding-right:0!important;
}
html body .gp-refugo-chart-line>.gp-chart-menu-button{
  position:relative!important;
  order:2!important;
  justify-self:end!important;
  align-self:start!important;
  margin-top:14px!important;
  right:auto!important;
  top:auto!important;
}

/* O Grid de qualquer modal também segue o mesmo plano do menu. */
html body vaadin-dialog.gp-modal-v053 vaadin-grid,
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(header-cell),
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(body-cell),
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(footer-cell){
  --vaadin-grid-cell-background:var(--gp-surface)!important;
  --vaadin-grid-row-stripe-background:var(--gp-surface)!important;
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
}

/* 0.0.94 — DESCRIÇÃO DO ITEM EM LANÇAMENTOS */
html body .gp-launch-item-description-v094{
  display:block!important;
  height:1.3em!important;
  margin:-.1rem 0 .7rem!important;
  color:var(--gp-muted)!important;
  font-size:.92rem!important;
  line-height:1.3!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
html body .gp-launch-product-description-v094{
  display:block!important;
  max-width:100%!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  cursor:pointer!important;
}

/* ==========================================================================
   0.0.64 — REFUGO / MENU DIREITO / DROPDOWNS GLOBAIS / TROCA DE SETOR
   ========================================================================== */

/* Mantém os 15 px à esquerda sem estender a extremidade direita: o gráfico
   volta a terminar com o mesmo recuo lateral do restante da página. */
html body .gp-refugo-page .gp-refugo-chart-line{
  margin-left:-15px!important;
  width:100%!important;
}

/* Somente “Análise por Setor” avança 15 px e sobe 10 px. Os demais títulos
   permanecem exatamente nas posições já consolidadas. */
html body .gp-refugo-page .gp-refugo-sector-chart-v064 .gp-refugo-chart-title{
  left:15px!important;
  top:4px!important;
}

/* ComboBox, MultiSelect e Select de todo o sistema usam a mesma superfície,
   geometria e comportamento visual dos dropdowns dos filtros. */
html body vaadin-combo-box-overlay:not(.gp-v064-specificity)::part(overlay),
html body vaadin-multi-select-combo-box-overlay:not(.gp-v064-specificity)::part(overlay),
html body vaadin-select-overlay:not(.gp-v064-specificity)::part(overlay){
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  border:1px solid var(--gp-control-border)!important;
  border-radius:.55rem!important;
  box-shadow:0 8px 24px rgba(0,0,0,.20)!important;
  overflow:hidden!important;
}
html body vaadin-combo-box-overlay:not(.gp-v064-specificity)::part(content),
html body vaadin-multi-select-combo-box-overlay:not(.gp-v064-specificity)::part(content),
html body vaadin-select-overlay:not(.gp-v064-specificity)::part(content){
  background:transparent!important;
  background-color:transparent!important;
  color:var(--gp-text)!important;
  padding:.3rem 0!important;
}
html body vaadin-combo-box-item:not(.gp-v064-specificity),
html body vaadin-select-item:not(.gp-v064-specificity){
  min-height:38px!important;
  padding:0 .75rem!important;
  background:transparent!important;
  background-color:transparent!important;
  color:var(--gp-text)!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
html body vaadin-combo-box-item:not(.gp-v064-specificity)[focused]:not(:hover),
html body vaadin-select-item:not(.gp-v064-specificity)[focused]:not(:hover){
  background:transparent!important;
  background-color:transparent!important;
}
@media (hover:hover) and (pointer:fine){
  html body vaadin-combo-box-item:not(.gp-v064-specificity):hover,
  html body vaadin-select-item:not(.gp-v064-specificity):hover{
    background:var(--gp-hover)!important;
    background-color:var(--gp-hover)!important;
    color:var(--gp-text)!important;
  }
}

/* ==========================================================================
   0.0.65 — GEOMETRIA REFUGO / ABAS ESTAVEIS / MENU E URL LIMPOS
   ========================================================================== */

/* O conjunto avança mais 10 px à esquerda (de -15 para -25 px), enquanto a
   largura compensada faz a borda direita terminar no mesmo eixo do logo. */
html body .gp-refugo-page.gp-refugo-page-v065 .gp-refugo-chart-line{
  margin-left:-25px!important;
  width:calc(100% + 25px)!important;
}

/* Quantidade Refugada (Kg) avança exatamente 20 px sobre os 18 px anteriores. */
html body .gp-refugo-page.gp-refugo-page-v065 .gp-refugo-y-title{
  left:38px!important;
}

/* Desliga a ancoragem automática que reposicionava a janela quando o conteúdo
   do gráfico era substituído e mantém estável a largura útil da página. */
html{
  scrollbar-gutter:stable;
}
html body .gp-refugo-page.gp-refugo-page-v065,
html body .gp-refugo-page.gp-refugo-page-v065 .gp-refugo-analysis,
html body .gp-refugo-page.gp-refugo-page-v065 .gp-refugo-chart-line{
  overflow-anchor:none!important;
}

/* O botão do menu apenas ganha opacidade/cor no hover: nenhuma caixa, borda,
   contorno, halo ou preenchimento é criado ao redor dos três pontos. */
html body .gp-navigation .gp-system-menu-trigger-v065{
  opacity:.72!important;
  color:var(--gp-text)!important;
  background:transparent!important;
  background-color:transparent!important;
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  box-shadow:none!important;
  filter:none!important;
}
html body .gp-navigation .gp-system-menu-trigger-v065:hover,
html body .gp-navigation .gp-system-menu-trigger-v065:focus,
html body .gp-navigation .gp-system-menu-trigger-v065:focus-visible,
html body .gp-navigation .gp-system-menu-trigger-v065[focused]{
  opacity:1!important;
  color:var(--gp-text)!important;
  background:transparent!important;
  background-color:transparent!important;
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  box-shadow:none!important;
  filter:none!important;
}

/* ==========================================================================
   0.0.66 — RECUO DIREITO / TITULOS ALINHADOS / MENU SEM CAIXA
   ========================================================================== */

/* Mantém o conjunto em -25 px, mas termina 15 px antes do limite direito. */
html body .gp-refugo-page.gp-refugo-page-v066 .gp-refugo-chart-line{
  margin-left:-25px!important;
  width:calc(100% + 10px)!important;
}

/* Análise por Setor e Quantidade Refugada compartilham a mesma referência X. */
html body .gp-refugo-page.gp-refugo-page-v066 .gp-refugo-sector-chart-v064 .gp-refugo-chart-title,
html body .gp-refugo-page.gp-refugo-page-v066 .gp-refugo-y-title{
  left:38px!important;
}

/* Neutraliza também a camada interna/pseudo-elementos que o tema Lumo aplica
   ao Button no hover e no foco. Só a opacidade dos três pontos se altera. */
html body vaadin-button.gp-system-menu-trigger-v066{
  --vaadin-button-background:transparent!important;
  --vaadin-button-border-width:0!important;
  --lumo-primary-color-10pct:transparent!important;
  --lumo-contrast-5pct:transparent!important;
  opacity:.72!important;
  color:var(--gp-text)!important;
  background:transparent!important;
  background-color:transparent!important;
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  box-shadow:none!important;
}
html body vaadin-button.gp-system-menu-trigger-v066::before,
html body vaadin-button.gp-system-menu-trigger-v066::after{
  display:none!important;
  content:none!important;
  opacity:0!important;
  background:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
html body vaadin-button.gp-system-menu-trigger-v066::part(label){
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  box-shadow:none!important;
}
html body vaadin-button.gp-system-menu-trigger-v066:hover,
html body vaadin-button.gp-system-menu-trigger-v066:focus,
html body vaadin-button.gp-system-menu-trigger-v066:focus-visible,
html body vaadin-button.gp-system-menu-trigger-v066[focused],
html body vaadin-button.gp-system-menu-trigger-v066[focus-ring]{
  opacity:1!important;
  color:var(--gp-text)!important;
  background:transparent!important;
  background-color:transparent!important;
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  box-shadow:none!important;
}

/* ==========================================================================
   0.0.67 — RECUO DIREITO AMPLIADO / TITULO SETOR À DIREITA
   ========================================================================== */

/* Soma 30 px ao recuo anterior: 15 px + 30 px = 45 px à direita. */
html body .gp-refugo-page.gp-refugo-page-v067 .gp-refugo-chart-line{
  margin-left:-25px!important;
  width:calc(100% - 20px)!important;
}

/* Análise por Setor avança 30 px sobre os 38 px anteriores. */
html body .gp-refugo-page.gp-refugo-page-v067 .gp-refugo-sector-chart-v064 .gp-refugo-chart-title{
  left:68px!important;
}

/* ==========================================================================
   0.0.68 — RECUO DIREITO 62 PX / TITULO SETOR FORCADO
   ========================================================================== */

/* Acrescenta 17 px ao recuo de 45 px: total final de 62 px à direita. */
html body .gp-refugo-page.gp-refugo-page-v068 .gp-refugo-chart-line{
  margin-left:-25px!important;
  width:calc(100% - 37px)!important;
}

/* Reafirma os 68 px; o Java aplica o mesmo valor inline com prioridade máxima. */
html body .gp-refugo-page.gp-refugo-page-v068 .gp-refugo-sector-chart-v068 .gp-refugo-chart-title{
  left:68px!important;
}

/* ==========================================================================
   0.0.69 — POSICAO SETOR / RECUO 65 PX / TRANSFERENCIA FILTRADA
   ========================================================================== */

/* Acrescenta 3 px ao recuo anterior: total de 65 px à direita. */
html body .gp-refugo-page.gp-refugo-page-v069 .gp-refugo-chart-line{
  margin-left:-25px!important;
  width:calc(100% - 40px)!important;
}

/* Volta 15 px (68 → 53) e sobe 7 px (4 → -3). O Java reafirma os valores. */
html body .gp-refugo-page.gp-refugo-page-v069 .gp-refugo-sector-chart-v069 .gp-refugo-chart-title{
  left:53px!important;
  top:-3px!important;
}

/* ==========================================================================
   0.0.70 — SETORES UNIFICADOS / LIMPEZA ORIGINAL / TITULOS ALINHADOS
   ========================================================================== */

/* Todos os títulos do gráfico usam a mesma posição. Em relação à v069,
   Análise por Setor volta 5 px (53 → 48) e desce 3 px (-3 → 0). */
html body .gp-refugo-page.gp-refugo-page-v070 .gp-refugo-chart-title-aligned-v070 .gp-refugo-chart-title{
  left:48px!important;
  top:0!important;
}

/* ==========================================================================
   0.0.71 — BUSCA E FILTRO DE REFUGO 0,5 PX ACIMA
   ========================================================================== */

/* Move somente o conjunto Pesquisar refugo + funil, sem alterar seu espaço,
   tamanho, distância interna ou a toolbar equivalente de Lançamentos. */
html body .gp-refugo-page .gp-refugo-search-toolbar-v071{
  transform:translateY(-.5px)!important;
}

/* ==========================================================================
   0.0.72 — BUSCA E FILTRO DE REFUGO 0,25 PX ABAIXO
   ========================================================================== */

/* Desce 0,25 px em relação à v071; posição final 0,25 px acima da origem. */
html body .gp-refugo-page .gp-refugo-search-toolbar-v072{
  transform:translateY(-.25px)!important;
}

/* ==========================================================================
   0.0.73 — BUSCA E FILTRO DE REFUGO MAIS 0,2 PX ABAIXO
   ========================================================================== */

/* Desce mais 0,2 px; posição final 0,05 px acima da origem. */
html body .gp-refugo-page .gp-refugo-search-toolbar-v073{
  transform:translateY(-.05px)!important;
}

/* ==========================================================================
   0.0.74 — REFUGO ALINHADO EXATAMENTE A LANCAMENTOS
   ========================================================================== */

/* Substitui a margem exclusiva histórica do Refugo pela mesma geometria de
   .gp-tab-controls usada em Lançamentos. O rótulo, o campo e o funil passam a
   compartilhar a mesma linha-base, sem deslocamentos fracionários acumulados. */
html body .gp-refugo-page .gp-refugo-search-toolbar-v074{
  margin:.28rem 0 .65rem!important;
  transform:none!important;
  align-items:flex-end!important;
  flex-wrap:nowrap!important;
}
html body .gp-refugo-page .gp-refugo-search-toolbar-v074>.gp-scrap-share{
  margin-left:auto!important;
  flex:0 0 auto!important;
  height:44px;
}
@media (max-width:700px){
  html body .gp-refugo-page .gp-refugo-search-toolbar-v074>vaadin-text-field{
    flex:1 1 0!important;
    width:0!important;
  }
  html body .gp-refugo-page .gp-refugo-search-toolbar-v074>.gp-scrap-share{
    padding-inline:4px;
  }
}

/* ==========================================================================
   0.0.58 — MENU NO CLIQUE / TITULO A ESQUERDA / SUPERFICIES CORRIGIDAS
   Seletores específicos preservam estas correções sobre o histórico legado.
   ========================================================================== */

/* O gráfico ocupa toda a linha. O ContextMenu é ancorado diretamente à barra
   clicada pelo Java e o Vaadin posiciona o overlay ao lado direito do clique. */
html body .gp-refugo-page .gp-refugo-chart-line{
  grid-template-columns:minmax(0,1fr)!important;
  column-gap:0!important;
}
html body .gp-refugo-page .gp-refugo-chart-line>.gp-refugo-chart{
  grid-column:1!important;
  width:100%!important;
}
html body .gp-refugo-page .gp-refugo-chart-title,
html body .gp-refugo-page .gp-refugo-chart-line>.gp-refugo-chart .gp-refugo-chart-title{
  position:absolute!important;
  left:0!important;
  right:0!important;
  top:14px!important;
  width:auto!important;
  height:auto!important;
  min-height:30px!important;
  margin:0!important;
  padding:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  text-align:left!important;
}

/* Restaura o dropdown principal: uma única superfície no overlay, itens
   transparentes em repouso e destaque somente durante hover real. */
html body vaadin-context-menu-overlay:not(.gp-v058-specificity)::part(overlay){
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  border:0!important;
  border-radius:.55rem!important;
  box-shadow:0 8px 24px rgba(0,0,0,.20)!important;
  overflow:hidden!important;
}
html body vaadin-context-menu-overlay:not(.gp-v058-specificity)::part(content){
  background:transparent!important;
  background-color:transparent!important;
}
html body vaadin-context-menu-item:not(.gp-v058-specificity),
html body vaadin-context-menu-item:not(.gp-v058-specificity)[focused],
html body vaadin-context-menu-item:not(.gp-v058-specificity)[focus-ring],
html body vaadin-context-menu-item:not(.gp-v058-specificity)[highlighted],
html body vaadin-context-menu-item:not(.gp-v058-specificity)[selected],
html body vaadin-context-menu-item:not(.gp-v058-specificity):focus,
html body vaadin-context-menu-item:not(.gp-v058-specificity):focus-visible,
html body vaadin-context-menu-item:not(.gp-v058-specificity):active,
html body vaadin-context-menu-item:not(.gp-v058-specificity).gp-menu-caption,
html body vaadin-context-menu-item:not(.gp-v058-specificity)[disabled]{
  background:transparent!important;
  background-color:transparent!important;
  color:var(--gp-text)!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
html body vaadin-context-menu-item:not(.gp-v058-specificity).gp-menu-caption,
html body vaadin-context-menu-item:not(.gp-v058-specificity)[disabled]{
  color:var(--gp-muted)!important;
  opacity:.72!important;
}
@media (hover:hover) and (pointer:fine){
  html body vaadin-context-menu-item:not(.gp-v058-specificity):hover:not([disabled]){
    background:var(--gp-hover)!important;
    background-color:var(--gp-hover)!important;
    color:var(--gp-text)!important;
  }
}

/* Modais têm sua própria cor uniforme; ela não altera novamente o dropdown
   principal. Cabeçalho, conteúdo, rodapé, campos e grids compartilham o plano. */
:root{
  --gp-modal-uniform-v058:#f1f2f4;
}
html[theme~="light"],html[data-gp-theme="light"]{
  --gp-modal-uniform-v058:#f1f2f4;
}
html[theme~="dark"],html[data-gp-theme="dark"]{
  --gp-modal-uniform-v058:#30323a;
}
@media(prefers-color-scheme:dark){
  html:not([theme~="light"]):not([data-gp-theme="light"]){
    --gp-modal-uniform-v058:#30323a;
  }
}
html body vaadin-dialog.gp-modal-v053.gp-modal-v053,
html body vaadin-dialog.gp-modal-v053[theme~="gp-modal-v053"]{
  --gp-modal-bg-v053:var(--gp-modal-uniform-v058)!important;
  --vaadin-dialog-background:var(--gp-modal-uniform-v058)!important;
  --lumo-base-color:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  color:var(--gp-text)!important;
}
html body vaadin-dialog.gp-modal-v053.gp-modal-v053::part(overlay),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053::part(header),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053::part(content),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053::part(footer),
html body vaadin-dialog.gp-modal-v053[theme~="gp-modal-v053"]::part(overlay),
html body vaadin-dialog.gp-modal-v053[theme~="gp-modal-v053"]::part(header),
html body vaadin-dialog.gp-modal-v053[theme~="gp-modal-v053"]::part(content),
html body vaadin-dialog.gp-modal-v053[theme~="gp-modal-v053"]::part(footer),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053>[slot="footer"],
html body vaadin-dialog.gp-modal-v053[theme~="gp-modal-v053"]>[slot="footer"],
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 .gp-launch-dialog-actions,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 .gp-admin-body,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 .gp-admin-form,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 .gp-admin-list-toolbar,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 .gp-admin-toolbar{
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  color:var(--gp-text)!important;
  border-top-color:transparent!important;
  border-bottom-color:transparent!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-text-field,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-password-field,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-integer-field,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-number-field,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-date-picker,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-select,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-combo-box,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-multi-select-combo-box{
  --vaadin-input-field-background:var(--gp-modal-uniform-v058)!important;
  --lumo-base-color:var(--gp-modal-uniform-v058)!important;
}
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-text-field::part(input-field),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-password-field::part(input-field),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-integer-field::part(input-field),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-number-field::part(input-field),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-date-picker::part(input-field),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-select::part(input-field),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-combo-box::part(input-field),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-multi-select-combo-box::part(input-field){
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  border:1px solid var(--gp-control-border)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-grid,
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-grid::part(header-cell),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-grid::part(body-cell),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-grid::part(footer-cell),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-grid::part(cell),
html body vaadin-dialog.gp-modal-v053.gp-modal-v053 vaadin-grid::part(row){
  --lumo-base-color:var(--gp-modal-uniform-v058)!important;
  --vaadin-grid-cell-background:var(--gp-modal-uniform-v058)!important;
  --vaadin-grid-row-stripe-background:var(--gp-modal-uniform-v058)!important;
  --vaadin-grid-row-hover-background:var(--gp-modal-uniform-v058)!important;
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}

/* Reforço acima das classes específicas de Máquina/Perfil/Setor existentes
   nas versões anteriores: nenhuma delas volta a criar outra cor no campo. */
html body vaadin-dialog.gp-modal-v053.gp-modal-v053.gp-modal-v053
  :is(vaadin-text-field,vaadin-password-field,vaadin-integer-field,
      vaadin-number-field,vaadin-date-picker,vaadin-select,
      vaadin-combo-box,vaadin-multi-select-combo-box)::part(input-field){
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  border-color:var(--gp-control-border)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}

/* ==========================================================================
   0.0.59 — TABELA DE LANCAMENTOS / INFORMATIVO DE OBSERVACOES
   ========================================================================== */

/* A ampliação é exclusiva da tabela principal de Lançamentos. */
html body vaadin-grid.gp-launch-grid-v059.gp-launch-grid-v059::part(header-cell){
  line-height:1.3!important;
}
html body vaadin-grid.gp-launch-grid-v059.gp-launch-grid-v059::part(body-cell){
  font-size:16px!important;
  line-height:1.35!important;
}
html body vaadin-grid.gp-launch-grid-v059.gp-launch-grid-v059 .gp-oee-value{
  font-size:16px!important;
}
html body .gp-grid-compact-header-v210{
  font-size:15px!important;
  white-space:nowrap!important;
}

/* O tooltip agora é o overlay nativo do Vaadin. Desativa o balão CSS antigo
   somente no novo ícone para impedir sobreposição ou corte dentro do Grid. */
html body .gp-oee-info.gp-oee-observation-info-v059.gp-oee-observation-info-v059::after,
html body .gp-oee-info.gp-oee-observation-info-v059.gp-oee-observation-info-v059:hover::after,
html body .gp-oee-info.gp-oee-observation-info-v059.gp-oee-observation-info-v059:focus::after{
  content:none!important;
  display:none!important;
}

/* ==========================================================================
   0.0.60 — DUPLO CLIQUE / CURSOR / MAQUINA / PROTECOES
   ========================================================================== */

/* O próprio valor do OEE recebe o tooltip; nenhum caractere ou ícone extra é
   renderizado na célula. */
html body .gp-oee-cell .gp-oee-value.gp-oee-observation-target-v060{
  cursor:pointer!important;
}

/* ==========================================================================
   0.0.61 — OEE / ABAS IMEDIATAS / SCROLL MODAL / FILTROS REFUGO
   ========================================================================== */

/* O valor do OEE é o próprio alvo do informativo, sem acrescentar qualquer
   ícone ou caractere à célula. O balão flutua no body e não sofre o recorte
   interno do Grid. */
html body .gp-oee-cell .gp-oee-value.gp-oee-observation-target-v061{
  cursor:pointer!important;
}
html body .gp-oee-floating-tooltip-v061{
  position:fixed!important;
  z-index:2147483647!important;
  display:block!important;
  visibility:hidden!important;
  opacity:0!important;
  transform:translate(-50%,-100%)!important;
  width:max-content!important;
  max-width:min(360px,calc(100vw - 24px))!important;
  padding:.48rem .62rem!important;
  border:1px solid color-mix(in srgb,#fff 12%,transparent)!important;
  border-radius:.38rem!important;
  background:rgba(38,39,48,.98)!important;
  color:#fff!important;
  font-family:"Source Sans 3","Source Sans Pro",sans-serif!important;
  font-size:.82rem!important;
  font-weight:400!important;
  line-height:1.35!important;
  white-space:pre-wrap!important;
  text-align:left!important;
  box-shadow:0 5px 16px rgba(0,0,0,.30)!important;
  pointer-events:none!important;
  transition:opacity .08s ease!important;
}
html body .gp-oee-floating-tooltip-v061.gp-visible{
  visibility:visible!important;
  opacity:1!important;
}

/* ==========================================================================
   0.0.110 — PRODUCAO POR OP / TEXTOS COMPLETOS
   ========================================================================== */
html body .gp-full-text-cell-v110{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}

/* Enquanto houver um Dialog aberto, a página que está atrás permanece imóvel.
   O conteúdo do próprio modal continua rolando e contém o fim da rolagem. */
html.gp-modal-open-v061,
html.gp-modal-open-v061 body,
body.gp-modal-open-v061{
  overflow:hidden!important;
  overscroll-behavior:none!important;
}
html body vaadin-dialog-overlay::part(overlay),
html body vaadin-dialog-overlay::part(content){
  overscroll-behavior:contain!important;
}

/* Lançamentos recentes cresce com todas as linhas quando expandido; não cria
   uma segunda barra de rolagem dentro do Details. */
html body .gp-refugo-recent-expander::part(content),
html body .gp-refugo-recent-grid{
  max-height:none!important;
  overflow:visible!important;
  overscroll-behavior:auto!important;
}

/* Setor é um identificador do cadastro e permanece visualmente em maiúsculas
   em todos os filtros, inclusive durante a digitação da busca. */
html body .gp-uppercase-sector-filter-v061[has-value]::part(value-button),
html body .gp-uppercase-sector-filter-v061[has-value]::part(chips),
html body .gp-uppercase-sector-filter-v061[has-value] vaadin-multi-select-combo-box-chip{
  text-transform:uppercase!important;
}
html body .gp-uppercase-sector-filter-v061:not([has-value])::part(value-button),
html body .gp-uppercase-sector-filter-v061:not([has-value])::part(chips){
  text-transform:none!important;
}

/* ==========================================================================
   0.0.62 — DETALHES NO CLIQUE / GRAFICO À ESQUERDA / OEE CONFIAVEL
   ========================================================================== */

/* O atributo title nativo fica diretamente no número do OEE e não depende de
   overlay, shadow DOM ou recorte do Grid para apresentar Observações. */
html body .gp-oee-cell .gp-oee-value.gp-oee-observation-target-v062{
  cursor:pointer!important;
}

/* Desloca somente as linhas que contêm os gráficos, preservando abas, KPIs,
   paginação e detalhes. A v064 mantém o recuo padrão na lateral direita. */
html body .gp-refugo-page .gp-refugo-chart-line{
  margin-left:-15px!important;
  width:100%!important;
}

/* ==========================================================================
   0.0.63 — POSICAO REFUGO / PLACEHOLDER SETOR / ICONE OEE
   ========================================================================== */

/* O título vertical do eixo Y avança exatamente 10 px à direita da posição
   consolidada de 8 px. */
html body .gp-refugo-page .gp-refugo-y-title{
  left:18px!important;
}

/* Ícone real de informação, criado apenas quando Observações contém texto. */
html body .gp-oee-cell>.gp-oee-observation-icon-v063{
  display:inline-flex!important;
  visibility:visible!important;
  opacity:.88!important;
  flex:0 0 16px!important;
  width:16px!important;
  min-width:16px!important;
  max-width:16px!important;
  height:16px!important;
  min-height:16px!important;
  max-height:16px!important;
  margin:0!important;
  color:var(--gp-muted)!important;
  fill:currentColor!important;
  overflow:visible!important;
  pointer-events:auto!important;
  cursor:pointer!important;
}
html body .gp-oee-cell>.gp-oee-observation-icon-v063:hover,
html body .gp-oee-cell>.gp-oee-observation-icon-v063:focus-visible{
  opacity:1!important;
  color:var(--gp-text)!important;
}

/* Todo controle realmente acionável sinaliza interação com a mão. Campos de
   digitação preservam o cursor de texto. */
html body :is(
  a[href],button,[role="button"],[role="menuitem"],[role="tab"],
  vaadin-button,vaadin-tab,vaadin-context-menu-item,
  vaadin-combo-box-item,vaadin-select-item,
  .gp-action-icon,.gp-filter-button,.gp-show-more,
  .gp-menu-button,.gp-chart-menu-button,.gp-refugo-bar-column
){
  cursor:pointer!important;
}
html body :is(vaadin-button,vaadin-tab,vaadin-context-menu-item)[disabled],
html body [aria-disabled="true"]{
  cursor:not-allowed!important;
}
html body vaadin-combo-box::part(toggle-button),
html body vaadin-select::part(toggle-button),
html body vaadin-multi-select-combo-box::part(toggle-button),
html body vaadin-date-picker::part(toggle-button){
  cursor:pointer!important;
}

/* Editar Máquina: dois campos compactos na primeira linha e Setor ocupando
   toda a segunda linha. O ComboBox de Setor compartilha o padrão dos cadastros. */
html body vaadin-dialog.gp-modal-v053.gp-modal-v053.gp-modal-v053
  .gp-machine-edit-form-v060{
  display:grid!important;
  grid-template-columns:minmax(0,1.35fr) minmax(118px,.65fr)!important;
  gap:.48rem .62rem!important;
  width:100%!important;
  padding:0!important;
  box-sizing:border-box!important;
}
html body vaadin-dialog.gp-modal-v053.gp-modal-v053.gp-modal-v053
  .gp-machine-edit-form-v060>.gp-machine-sector-field-v060{
  grid-column:1/-1!important;
}
html body vaadin-dialog.gp-modal-v053.gp-modal-v053.gp-modal-v053
  .gp-machine-edit-form-v060
  :is(vaadin-text-field,vaadin-integer-field,vaadin-combo-box)::part(input-field){
  height:38px!important;
  min-height:38px!important;
  max-height:38px!important;
}
html body vaadin-dialog.gp-modal-v053.gp-modal-v053.gp-modal-v053
  .gp-machine-sector-field-v060::part(input-field){
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  border:1px solid var(--gp-control-border)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}
@media(max-width:520px){
  html body vaadin-dialog.gp-modal-v053.gp-modal-v053.gp-modal-v053
    .gp-machine-edit-form-v060{
    grid-template-columns:1fr!important;
  }
  html body vaadin-dialog.gp-modal-v053.gp-modal-v053.gp-modal-v053
    .gp-machine-edit-form-v060>.gp-machine-sector-field-v060{
    grid-column:1!important;
  }
}

/* ==========================================================
   0.0.35 — LOGIN DARK / MENU DROPDOWN
   Base funcional mantida: v034 (backend idêntico à v032).
   ========================================================== */
/* Login: texto/labels/valor digitado realmente brancos no tema escuro. */
html[theme~="dark"] .gp-login-card,
html[data-gp-theme="dark"] .gp-login-card,
html[theme~="dark"] .gp-login-field,
html[data-gp-theme="dark"] .gp-login-field{
  color:#ffffff!important;
  --gp-login-value-color:#ffffff!important;
  --lumo-body-text-color:#ffffff!important;
  --lumo-header-text-color:#ffffff!important;
  --vaadin-input-field-value-color:#ffffff!important;
  --vaadin-input-field-label-color:#ffffff!important;
}
html[theme~="dark"] .gp-login-field::part(label),
html[data-gp-theme="dark"] .gp-login-field::part(label),
html[theme~="dark"] .gp-login-field::part(input-field),
html[data-gp-theme="dark"] .gp-login-field::part(input-field){
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  caret-color:#ffffff!important;
}
html[theme~="dark"] .gp-login-card vaadin-password-field::part(reveal-button),
html[data-gp-theme="dark"] .gp-login-card vaadin-password-field::part(reveal-button){
  color:#ffffff!important;
}

/* Menu: abrir o dropdown não deve simular hover no primeiro item.
   O destaque visual só aparece quando o ponteiro realmente está sobre o item. */
vaadin-context-menu-item[focused]:not(:hover),
vaadin-context-menu-item[focus-ring]:not(:hover),
vaadin-context-menu-item[highlighted]:not(:hover),
vaadin-context-menu-item[selected]:not(:hover),
vaadin-context-menu-item:focus:not(:hover),
vaadin-context-menu-item:focus-visible:not(:hover){
  background:transparent!important;
  background-color:transparent!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
  outline:0!important;
}
vaadin-context-menu-item:hover{
  background:var(--gp-hover)!important;
  background-color:var(--gp-hover)!important;
  color:var(--gp-text)!important;
}
vaadin-context-menu-item.gp-menu-caption,
vaadin-context-menu-item.gp-menu-caption:hover,
vaadin-context-menu-item.gp-menu-caption[focused],
vaadin-context-menu-item.gp-menu-caption[focus-ring]{
  background:transparent!important;
  background-color:transparent!important;
  box-shadow:none!important;
}


/* ==========================================================
   0.0.36 — MENU HOVER REAL / MAIUSCULAS EM TEMPO REAL
   Base funcional mantida: v035.
   ========================================================== */
/* Nenhum estado interno do Vaadin pinta o item. Só mouseenter real,
   reforçado também pelo JS da MainView para overlays/submenus dinâmicos. */
vaadin-context-menu-item,
vaadin-context-menu-item[focused],
vaadin-context-menu-item[focus-ring],
vaadin-context-menu-item[highlighted],
vaadin-context-menu-item[selected],
vaadin-context-menu-item:focus,
vaadin-context-menu-item:focus-visible,
vaadin-context-menu-item:active{
  background:transparent!important;
  background-color:transparent!important;
  box-shadow:none!important;
  outline:0!important;
}
@media (hover:hover) and (pointer:fine){
  vaadin-context-menu-item:hover:not([disabled]){
    background:var(--gp-hover)!important;
    background-color:var(--gp-hover)!important;
  }
}
vaadin-context-menu-item.gp-menu-caption,
vaadin-context-menu-item.gp-menu-caption:hover,
vaadin-context-menu-item[disabled]{
  background:transparent!important;
  background-color:transparent!important;
}

/* O CSS mantém a apresentação; a conversão do valor é feita no input
   pela MainView durante cada evento de digitação. */
.gp-uppercase-input::part(input-field){text-transform:uppercase!important;}

/* ==========================================================
   0.0.37 — TIPOGRAFIA / NUMEROS PT-BR / REFUGO / FILTROS
   Base funcional mantida: v036.
   ========================================================== */

/* Tipografia do app original: Source Sans em todos os componentes Lumo/Vaadin,
   não apenas no body. A pilha mantém fallbacks nativos caso a família não esteja
   disponível no sistema do navegador. */
:root,html{
  --lumo-font-family:"Source Sans Pro","Source Sans 3",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
}
html,body,.gp-root,.gp-shell,
vaadin-button,vaadin-tab,vaadin-grid,vaadin-text-field,vaadin-password-field,
vaadin-date-picker,vaadin-select,vaadin-multi-select-combo-box,
vaadin-integer-field,vaadin-context-menu-item{
  font-family:var(--lumo-font-family)!important;
}

/* Status ERP: somente o estado, como solicitado. */
.gp-sync-status{
  font-size:.78rem!important;
  line-height:1.25rem!important;
  margin:0!important;
  padding:0!important;
  font-weight:600!important;
}
.gp-sync-status[theme~="online"]{color:#16853f!important}
.gp-sync-status[theme~="offline"]{color:#c62828!important}

/* KPIs do Refugo: legenda compacta imediatamente abaixo do valor principal,
   inclusive "100,0% do total" e a data sob "Hoje". */
.gp-kpi-caption{
  display:block!important;
  margin-top:-.08rem!important;
  color:var(--gp-muted)!important;
  font-size:.78rem!important;
  line-height:1.05rem!important;
  white-space:nowrap!important;
}

/* Calendário: data selecionada deve permanecer inequivocamente destacada. */
.gp-period-day.gp-period-start,
.gp-period-day.gp-period-end,
.gp-period-day[aria-selected="true"]{
  background:var(--gp-red)!important;
  background-color:var(--gp-red)!important;
  color:#fff!important;
  font-weight:600!important;
  opacity:1!important;
  border-radius:50%!important;
  box-shadow:none!important;
}
.gp-period-day.gp-period-start::part(label),
.gp-period-day.gp-period-end::part(label),
.gp-period-day[aria-selected="true"]::part(label){
  color:#fff!important;
}
.gp-period-day:hover:not([disabled]):not(.gp-period-start):not(.gp-period-end):not([aria-selected="true"]){
  background:color-mix(in srgb,var(--gp-text) 5%,transparent)!important;
}

/* Botão de filtros: contorno presente, hover discreto e sem halo/salto. */
.gp-filter-button{
  border:1px solid var(--gp-control-border)!important;
  border-radius:.48rem!important;
  background:transparent!important;
  box-shadow:none!important;
  transition:border-color .11s ease,background-color .11s ease!important;
}
.gp-filter-button:hover{
  border-color:color-mix(in srgb,var(--gp-text) 48%,transparent)!important;
  background:color-mix(in srgb,var(--gp-text) 3.5%,transparent)!important;
  box-shadow:none!important;
}
.gp-filter-button:focus-visible{
  border-color:color-mix(in srgb,var(--gp-text) 58%,transparent)!important;
  background:color-mix(in srgb,var(--gp-text) 3.5%,transparent)!important;
  box-shadow:none!important;
  outline:none!important;
}
.gp-filter-button:active{
  background:color-mix(in srgb,var(--gp-text) 6%,transparent)!important;
  box-shadow:none!important;
}

/* Opções dentro dos filtros: hover neutro, sem destaque pesado. */
vaadin-multi-select-combo-box-item:hover,
vaadin-select-item:hover{
  background:color-mix(in srgb,var(--gp-text) 5%,transparent)!important;
}

/* ==========================================================
   0.0.38 — FONTE ORIGINAL / CALENDARIO / HOVER DOS FILTROS
   Base funcional mantida: v037.
   ========================================================== */
:root,html{
  --gp-original-font:"Source Sans 3","Source Sans Pro","Source Sans",sans-serif;
  --lumo-font-family:var(--gp-original-font)!important;
}
html,body,.gp-root,.gp-shell,.gp-content,
button,input,textarea,select,
vaadin-button,vaadin-tab,vaadin-grid,vaadin-text-field,vaadin-password-field,
vaadin-integer-field,vaadin-date-picker,vaadin-select,vaadin-combo-box,
vaadin-multi-select-combo-box,vaadin-context-menu-item,vaadin-dialog-overlay,
vaadin-popover-overlay,vaadin-notification-card{
  font-family:var(--gp-original-font)!important;
}
vaadin-grid::part(header-cell){font-family:var(--gp-original-font)!important;font-size:15px!important;font-weight:700!important;line-height:1.3!important}
vaadin-grid::part(body-cell){font-family:var(--gp-original-font)!important;font-size:16px!important;font-weight:400!important;line-height:1.35!important}
vaadin-text-field::part(label),vaadin-password-field::part(label),vaadin-integer-field::part(label),
vaadin-date-picker::part(label),vaadin-select::part(label),vaadin-combo-box::part(label),
vaadin-multi-select-combo-box::part(label),
vaadin-text-field::part(input-field),vaadin-password-field::part(input-field),vaadin-integer-field::part(input-field),
vaadin-date-picker::part(input-field),vaadin-select::part(input-field),vaadin-combo-box::part(input-field),
vaadin-multi-select-combo-box::part(input-field){font-family:var(--gp-original-font)!important}

/* O dia efetivamente selecionado não depende de variante visual do Vaadin. */
.gp-period-day.gp-period-start,
.gp-period-day.gp-period-end,
.gp-period-day.gp-period-selected,
.gp-period-day[aria-selected="true"]{
  background:#ff4b4b!important;
  background-color:#ff4b4b!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  border-radius:50%!important;
  font-weight:600!important;
  opacity:1!important;
  box-shadow:none!important;
}
.gp-period-day.gp-period-start::part(label),
.gp-period-day.gp-period-end::part(label),
.gp-period-day.gp-period-selected::part(label),
.gp-period-day[aria-selected="true"]::part(label){color:#fff!important;-webkit-text-fill-color:#fff!important}
.gp-period-day.gp-period-in-range:not(.gp-period-start):not(.gp-period-end):not(.gp-period-selected){
  border-radius:0!important;
  background:color-mix(in srgb,#ff4b4b 14%,transparent)!important;
}

/* Filtro: sem preenchimento no hover. Só o contorno e o ícone respondem. */
.gp-filter-button{
  background:transparent!important;
  border:1px solid color-mix(in srgb,var(--gp-text) 25%,transparent)!important;
  box-shadow:none!important;
  transform:none!important;
  transition:border-color .09s ease!important;
}
.gp-filter-button:hover{
  background:transparent!important;
  border-color:color-mix(in srgb,var(--gp-text) 52%,transparent)!important;
  box-shadow:none!important;
  transform:none!important;
}
.gp-filter-button:active{
  background:transparent!important;
  border-color:color-mix(in srgb,var(--gp-text) 64%,transparent)!important;
  box-shadow:none!important;
  transform:none!important;
}
.gp-filter-button:focus:not(:focus-visible){outline:none!important;box-shadow:none!important;background:transparent!important}
.gp-filter-button:focus-visible{
  background:transparent!important;
  border-color:var(--gp-red)!important;
  outline:none!important;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--gp-red) 28%,transparent)!important;
}
.gp-filter-funnel-icon{opacity:.82!important;transition:opacity .09s ease!important}
.gp-filter-button:hover .gp-filter-funnel-icon{opacity:1!important}

/* ==========================================================
   0.0.40 — CARREGAMENTO / HOVER FILTRO / BUSCA INCREMENTAL
   Base funcional mantida: v039.
   ========================================================== */
/* O botão continua limpo em repouso e recebe um destaque neutro no hover.
   Nenhum estado de foco usa vermelho no contorno. */
.gp-filter-button{
  background:transparent!important;
  border:1px solid color-mix(in srgb,var(--gp-text) 22%,transparent)!important;
  border-radius:.48rem!important;
  box-shadow:none!important;
  transform:none!important;
  transition:background-color .10s ease,border-color .10s ease,box-shadow .10s ease!important;
}
.gp-filter-button:hover{
  background:color-mix(in srgb,var(--gp-text) 6%,transparent)!important;
  border-color:color-mix(in srgb,var(--gp-text) 46%,transparent)!important;
  box-shadow:0 1px 4px color-mix(in srgb,var(--gp-text) 11%,transparent)!important;
  transform:none!important;
}
.gp-filter-button:focus,
.gp-filter-button:focus-visible{
  background:color-mix(in srgb,var(--gp-text) 5%,transparent)!important;
  border-color:color-mix(in srgb,var(--gp-text) 42%,transparent)!important;
  box-shadow:0 0 0 2px color-mix(in srgb,var(--gp-text) 7%,transparent)!important;
  outline:none!important;
  transform:none!important;
}
.gp-filter-button:active{
  background:color-mix(in srgb,var(--gp-text) 9%,transparent)!important;
  border-color:color-mix(in srgb,var(--gp-text) 52%,transparent)!important;
  box-shadow:none!important;
  transform:none!important;
}
.gp-filter-funnel-icon{opacity:.84!important;transition:opacity .10s ease!important}
.gp-filter-button:hover .gp-filter-funnel-icon{opacity:1!important}


/* ==========================================================
   0.0.41 — CAMADA CANONICA FINAL
   Corrige conflitos acumulados de versões anteriores.
   ========================================================== */

/* Fonte efetivamente carregada. Streamlit usa Source Sans como base visual. */
@import url('https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;500;600;700&display=swap');
html body,
html body .gp-root,
html body .gp-shell,
html body .gp-content,
html body vaadin-button,
html body vaadin-tab,
html body vaadin-grid,
html body vaadin-text-field,
html body vaadin-password-field,
html body vaadin-integer-field,
html body vaadin-date-picker,
html body vaadin-select,
html body vaadin-combo-box,
html body vaadin-multi-select-combo-box,
html body vaadin-context-menu-item,
html body vaadin-dialog-overlay,
html body vaadin-popover-overlay {
  --lumo-font-family:"Source Sans 3","Source Sans Pro",sans-serif!important;
  font-family:"Source Sans 3","Source Sans Pro",sans-serif!important;
}

/* Filtro: SEM contorno vermelho. Repouso limpo; hover cinza discreto e claro. */
html body .gp-filter-button,
html body .gp-filter-button:focus,
html body .gp-filter-button:focus-visible,
html body .gp-filter-button:active {
  width:36px!important;
  min-width:36px!important;
  max-width:36px!important;
  height:36px!important;
  min-height:36px!important;
  max-height:36px!important;
  padding:0!important;
  border:0!important;
  border-radius:50%!important;
  background:transparent!important;
  box-shadow:none!important;
  outline:none!important;
  transform:none!important;
  color:var(--gp-text)!important;
  transition:background-color .10s ease,opacity .10s ease!important;
}
html body .gp-filter-button:hover {
  border:0!important;
  background:color-mix(in srgb,var(--gp-text) 9%,transparent)!important;
  box-shadow:none!important;
  outline:none!important;
  transform:none!important;
}
html body .gp-filter-funnel-icon {
  width:15px!important;
  height:14px!important;
  opacity:.48!important;
  transition:opacity .10s ease!important;
}
html body .gp-filter-button:hover .gp-filter-funnel-icon { opacity:.88!important; }
html body .gp-filter-button:focus-visible .gp-filter-funnel-icon { opacity:.72!important; }
/* bolinha de filtro ativo continua sendo apenas indicador; nunca vira contorno */
html body .gp-filter-button.gp-filter-active::after {
  width:6px!important;height:6px!important;right:3px!important;top:3px!important;
  background:#ff4b4b!important;border:0!important;box-shadow:none!important;
}

/* Datas selecionadas: o variant primary colore o host; estas regras garantem o label. */
html body .gp-period-day[theme~="primary"],
html body .gp-period-day.gp-period-selected,
html body .gp-period-day[aria-selected="true"] {
  --lumo-primary-color:#ff4b4b!important;
  --lumo-primary-text-color:#fff!important;
  background:#ff4b4b!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  border-radius:50%!important;
  opacity:1!important;
}
html body .gp-period-day[theme~="primary"]::part(label),
html body .gp-period-day.gp-period-selected::part(label),
html body .gp-period-day[aria-selected="true"]::part(label) {
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}

/* Evita animações/efeitos custosos desnecessários nos controles principais. */
html body .gp-filter-button,
html body .gp-action-icon,
html body .gp-show-more { will-change:auto!important; }


/* ========================================================================== 
   0.0.43 — FUNIL PADRÃO AO LADO DA BUSCA (LANÇAMENTOS / REFUGO)
   Usa o ícone Vaadin FILTER real, mantendo o botão compacto imediatamente ao
   lado do campo de busca. Este bloco é canônico para a renderização do glyph.
   ========================================================================== */
html body .gp-filter-button vaadin-icon.gp-filter-funnel-icon {
  display:block!important;
  width:18px!important;
  height:18px!important;
  min-width:18px!important;
  min-height:18px!important;
  clip-path:none!important;
  opacity:1!important;
  color:currentColor!important;
  transition:opacity .10s ease!important;
}
html body .gp-filter-button:hover vaadin-icon.gp-filter-funnel-icon {
  opacity:.80!important;
}
html body .gp-filter-button::before {
  content:none!important;
  display:none!important;
}


/* ========================================================================== 
   0.0.44 — FUNIL REAL IMEDIATAMENTE AO LADO DA BUSCA
   Lançamentos e Refugo usam uma toolbar própria. O campo não ocupa mais a
   grade inteira até a quarta coluna: o botão fica fisicamente colado à busca.
   ========================================================================== */
html body .gp-search-filter-toolbar-v044{
  display:flex!important;
  flex-direction:row!important;
  align-items:flex-end!important;
  justify-content:flex-start!important;
  gap:8px!important;
  width:100%!important;
}
html body .gp-search-filter-toolbar-v044>vaadin-text-field{
  flex:0 1 560px!important;
  width:min(560px,calc(100% - 44px))!important;
  min-width:0!important;
  max-width:560px!important;
  grid-column:auto!important;
}
html body .gp-search-filter-toolbar-v044>.gp-filter-button.gp-search-filter-button-v044{
  flex:0 0 36px!important;
  grid-column:auto!important;
  width:36px!important;
  min-width:36px!important;
  max-width:36px!important;
  height:36px!important;
  min-height:36px!important;
  max-height:36px!important;
  margin:0!important;
  padding:0!important;
}
html body .gp-search-filter-funnel-v044{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:18px!important;
  height:18px!important;
  color:currentColor!important;
  opacity:.78!important;
  line-height:0!important;
}
html body .gp-search-filter-funnel-v044 svg{
  display:block!important;
  width:18px!important;
  height:18px!important;
  overflow:visible!important;
}
html body .gp-search-filter-button-v044:hover .gp-search-filter-funnel-v044{
  opacity:1!important;
}
@media (max-width:700px){
  html body .gp-search-filter-toolbar-v044>vaadin-text-field{
    flex:1 1 auto!important;
    width:auto!important;
    max-width:none!important;
  }
}

/* ========================================================================== 
   0.0.45 — TOOLBAR LANÇAMENTOS / STATUS NO MENU / SCROLL REFUGO
   ========================================================================== */
/* Novo Lançamento desce para a mesma linha de busca + filtro. */
html body .gp-launch-toolbar-v045{
  display:flex!important;
  flex-direction:row!important;
  align-items:flex-end!important;
  justify-content:flex-start!important;
  gap:8px!important;
  width:100%!important;
}
html body .gp-launch-toolbar-v045>vaadin-text-field{
  flex:0 1 560px!important;
  width:min(560px,calc(100% - 190px))!important;
  min-width:0!important;
  max-width:560px!important;
  grid-column:auto!important;
}
html body .gp-launch-toolbar-v045>.gp-filter-button{
  flex:0 0 36px!important;
  grid-column:auto!important;
  margin:0!important;
}
html body .gp-launch-toolbar-v045>.gp-launch-new-inline-v045{
  flex:0 0 auto!important;
  grid-column:auto!important;
  width:auto!important;
  min-width:max-content!important;
  max-width:none!important;
  height:36px!important;
  min-height:36px!important;
  max-height:36px!important;
  margin:0!important;
  padding-inline:.85rem!important;
  transform:none!important;
  align-self:flex-end!important;
  font-size:var(--lumo-font-size-m)!important;
}

/* Status sai das páginas e passa para a última linha do menu, abaixo de Sair. */
html body vaadin-context-menu-item.gp-menu-sync-info-v045,
html body vaadin-context-menu-item.gp-menu-sync-info-v045[disabled],
html body vaadin-context-menu-item.gp-menu-sync-info-v045:hover,
html body vaadin-menu-bar-item.gp-menu-sync-info-v045,
html body vaadin-menu-bar-item.gp-menu-sync-info-v045[disabled],
html body vaadin-menu-bar-item.gp-menu-sync-info-v045:hover{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:1rem!important;
  min-width:238px!important;
  margin-top:4px!important;
  padding-top:8px!important;
  border-top:1px solid var(--gp-border)!important;
  background:transparent!important;
  background-color:transparent!important;
  color:var(--gp-muted)!important;
  opacity:1!important;
  cursor:default!important;
  pointer-events:none!important;
  font-size:.78rem!important;
  line-height:1.15rem!important;
  white-space:nowrap!important;
}
html body vaadin-context-menu-item.gp-menu-sync-info-v045::after,
html body vaadin-menu-bar-item.gp-menu-sync-info-v045::after{
  content:attr(data-gp-sync-label)!important;
  margin-left:auto!important;
  font-weight:600!important;
  color:var(--gp-muted)!important;
}
html body vaadin-context-menu-item.gp-menu-sync-info-v045[data-gp-sync-state="online"]::after,
html body vaadin-menu-bar-item.gp-menu-sync-info-v045[data-gp-sync-state="online"]::after{
  color:#16853f!important;
}
html body vaadin-context-menu-item.gp-menu-sync-info-v045[data-gp-sync-state="offline"]::after,
html body vaadin-menu-bar-item.gp-menu-sync-info-v045[data-gp-sync-state="offline"]::after{
  color:#c62828!important;
}

/* No filtro de Refugo somente os campos rolam. O botão Limpar filtros fica fora
   da área rolável; nenhum campo passa visualmente por baixo dele. */
html body .gp-filter-popover-refugo::part(content){
  overflow:hidden!important;
}
html body .gp-filter-dropdown-refugo{
  display:flex!important;
  flex-direction:column!important;
  max-height:min(68dvh,560px)!important;
  overflow:hidden!important;
}
html body .gp-filter-dropdown-refugo>.gp-filter-dropdown-grid{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto;
  overscroll-behavior:contain!important;
  padding-bottom:.5rem!important;
  scrollbar-gutter:stable!important;
}
html body .gp-filter-dropdown-refugo>.gp-filter-dropdown-actions{
  position:relative!important;
  inset:auto!important;
  flex:0 0 auto!important;
  margin-top:0!important;
  padding:.58rem 0 .08rem!important;
  border-top:0!important;
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  box-shadow:none!important;
  z-index:2!important;
}

@media (max-width:700px){
  html body .gp-launch-toolbar-v045>vaadin-text-field{
    flex:1 1 auto!important;
    width:auto!important;
    max-width:none!important;
  }
  html body .gp-launch-toolbar-v045>.gp-launch-new-inline-v045{
    flex:0 0 40px!important;
    width:40px!important;
    min-width:40px!important;
    max-width:40px!important;
    padding:0!important;
    font-size:0!important;
  }
}

/* ========================================================================== 
   0.0.47 — FILTROS / TOOLBAR LANÇAMENTOS / BARRAS REFUGO
   ========================================================================== */

/* Lançamentos: busca+funil à esquerda; Novo Lançamento volta para a lateral
   direita e acompanha exatamente a altura visual do campo de pesquisa. */
html body .gp-launch-toolbar-v045{
  align-items:flex-end!important;
  width:100%!important;
}
html body .gp-launch-toolbar-v045>.gp-filter-button.gp-search-filter-button-v044{
  flex:0 0 44px!important;
  width:44px!important;
  min-width:44px!important;
  max-width:44px!important;
  height:44px!important;
  min-height:44px!important;
  max-height:44px!important;
  align-self:flex-end!important;
}
html body .gp-launch-toolbar-v045>.gp-launch-new-inline-v045{
  margin-left:auto!important;
  height:44px!important;
  min-height:44px!important;
  max-height:44px!important;
  align-self:flex-end!important;
  padding-inline:1rem!important;
}

/* Resumo Dia/Mês: os campos deixam de ocupar a página. O único elemento
   visível no cabeçalho é o botão de filtro, alinhado à direita. */
html body .gp-summary-filter-fields-v047{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:.7rem!important;
  width:100%!important;
}
html body .gp-summary-filter-fields-v047>*{
  width:100%!important;
  min-width:0!important;
}
html body .gp-summary-filter-popover-v047::part(content){
  overflow:hidden!important;
}
html body .gp-summary-filter-dropdown-v047{
  width:100%!important;
  box-sizing:border-box!important;
}

/* MultiSelect: o texto usado para pesquisar é limpo via Java/JS após a
   seleção. Esta regra evita sobra visual do caret/texto durante o repaint. */
html body vaadin-multi-select-combo-box.gp-filter-multiselect::part(input-field){
  overflow:hidden!important;
}

/* Refugo: barras mais largas em todas as quantidades de categorias. */
html body .gp-refugo-vbar,
html body .gp-refugo-bar-column:hover .gp-refugo-vbar,
html body .gp-refugo-bar-column:focus .gp-refugo-vbar,
html body .gp-refugo-bar-column:focus-visible .gp-refugo-vbar,
html body .gp-refugo-bar-column:active .gp-refugo-vbar,
html body .gp-refugo-bar-column[focused] .gp-refugo-vbar{
  width:min(var(--gp-refugo-bar-ratio,68%),var(--gp-refugo-bar-max,110px))!important;
  max-width:var(--gp-refugo-bar-max,110px)!important;
  min-width:10px!important;
  border-radius:5px 5px 0 0!important;
  opacity:.92!important;
  box-shadow:0 3px 9px color-mix(in srgb,var(--gp-refugo-blue) 22%,transparent)!important;
}
html body .gp-refugo-bar-column:hover .gp-refugo-vbar{
  opacity:1!important;
}
html body .gp-refugo-has-selection .gp-refugo-bar-selected .gp-refugo-vbar,
html body .gp-refugo-bar-selected .gp-refugo-vbar{
  opacity:1!important;
  box-shadow:0 3px 9px color-mix(in srgb,var(--gp-refugo-blue-selected) 25%,transparent)!important;
}

@media(max-width:700px){
  html body .gp-launch-toolbar-v045>.gp-launch-new-inline-v045{
    margin-left:auto!important;
    height:40px!important;
    min-height:40px!important;
    max-height:40px!important;
    padding-inline:.72rem!important;
  }
  html body .gp-launch-toolbar-v045>.gp-filter-button.gp-search-filter-button-v044{
    width:40px!important;
    min-width:40px!important;
    max-width:40px!important;
    height:40px!important;
    min-height:40px!important;
    max-height:40px!important;
  }
  html body .gp-refugo-vbar,
  html body .gp-refugo-bar-column:hover .gp-refugo-vbar,
  html body .gp-refugo-bar-column:focus .gp-refugo-vbar,
  html body .gp-refugo-bar-column:focus-visible .gp-refugo-vbar,
  html body .gp-refugo-bar-column:active .gp-refugo-vbar{
    min-width:6px!important;
    border-radius:5px 5px 0 0!important;
  }
}

/* ==========================================================================
   0.0.48 — MULTISELECT / CALENDARIO RESUMO DIA / MODAIS
   Bloco reemitido em CSS real: a versão anterior continha escapes literais de quebra de linha.
   ========================================================================== */
html body .gp-summary-filter-fields-v047 .gp-period-picker{
  width:100%!important;
  min-width:0!important;
}

/* ==========================================================================
   0.0.49 — MULTISELECT SEM DUPLICACAO / MODAL UNIFORME
   ========================================================================== */

/* O chip é a representação persistente do valor selecionado. O input interno
   permanece disponível apenas para a pesquisa de um próximo item; o Java/JS
   elimina qualquer valor residual idêntico ao chip. */
html body vaadin-multi-select-combo-box.gp-filter-multiselect{
  --vaadin-multi-select-combo-box-input-min-width:1.2rem;
}
html body vaadin-multi-select-combo-box.gp-filter-multiselect::part(input-field){
  overflow:hidden!important;
}

/* Modal em um único plano de cinza, sem faixa diferente no header/footer. */
html body vaadin-dialog-overlay[theme~="gp-modal-v049"]::part(overlay){
  background:#3a3c44!important;
  color:#f7f7f8!important;
  border:1px solid rgba(255,255,255,.12)!important;
  box-shadow:0 18px 46px rgba(0,0,0,.34)!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v049"]::part(header),
html body vaadin-dialog-overlay[theme~="gp-modal-v049"]::part(content),
html body vaadin-dialog-overlay[theme~="gp-modal-v049"]::part(footer){
  background:transparent!important;
  background-color:transparent!important;
  color:#f7f7f8!important;
  border:0!important;
  border-top:0!important;
  border-bottom:0!important;
  box-shadow:none!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v049"]::part(header){
  border-bottom:0!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v049"]::part(footer){
  border-top:0!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] vaadin-text-field::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] vaadin-password-field::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] vaadin-integer-field::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] vaadin-date-picker::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] vaadin-select::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] vaadin-combo-box::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] vaadin-multi-select-combo-box::part(input-field){
  background:rgba(0,0,0,.14)!important;
  color:#f7f7f8!important;
  border-color:rgba(255,255,255,.16)!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] label,
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] [slot="label"],
html body vaadin-dialog-overlay[theme~="gp-modal-v049"] .gp-dialog-close{
  color:#f7f7f8!important;
}

/* ==========================================================================
   0.0.50 — BUSCA/FUNIL PADRONIZADOS / MODAL CINZA CLARO UNIFORME
   ========================================================================== */

/* Lançamentos e Refugo compartilham exatamente a mesma geometria: campo de
   busca de 44 px, intervalo de 8 px e botão quadrado de 44 px alinhado à base. */
html body .gp-search-filter-toolbar-v044{
  align-items:flex-end!important;
  gap:8px!important;
}
html body .gp-search-filter-toolbar-v044>vaadin-text-field::part(input-field){
  height:44px!important;
  min-height:44px!important;
  max-height:44px!important;
}
html body .gp-search-filter-toolbar-v044>.gp-filter-button.gp-search-filter-button-v044,
html body .gp-launch-toolbar-v045>.gp-filter-button.gp-search-filter-button-v044{
  flex:0 0 44px!important;
  width:44px!important;
  min-width:44px!important;
  max-width:44px!important;
  height:44px!important;
  min-height:44px!important;
  max-height:44px!important;
  margin:0!important;
  align-self:flex-end!important;
}

/* O overlay, o cabeçalho, o conteúdo e o rodapé usam o mesmo cinza. Assim a
   região dos botões não forma uma faixa separada. */
html body vaadin-dialog-overlay[theme~="gp-modal-v050"]{
  --lumo-base-color:#4a4d55!important;
  --lumo-body-text-color:#f7f7f8!important;
  --lumo-header-text-color:#f7f7f8!important;
  --lumo-secondary-text-color:#e1e2e5!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v050"]::part(overlay),
html body vaadin-dialog-overlay[theme~="gp-modal-v050"]::part(header),
html body vaadin-dialog-overlay[theme~="gp-modal-v050"]::part(content),
html body vaadin-dialog-overlay[theme~="gp-modal-v050"]::part(footer){
  background:#4a4d55!important;
  background-color:#4a4d55!important;
  color:#f7f7f8!important;
  border-color:transparent!important;
  border-top:0!important;
  border-bottom:0!important;
  box-shadow:none!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v050"]::part(overlay){
  border:1px solid rgba(255,255,255,.14)!important;
  box-shadow:0 18px 46px rgba(0,0,0,.30)!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] .gp-launch-dialog-actions,
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] [slot="footer"]{
  background:#4a4d55!important;
  background-color:#4a4d55!important;
  border:0!important;
  box-shadow:none!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] vaadin-text-field::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] vaadin-password-field::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] vaadin-integer-field::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] vaadin-date-picker::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] vaadin-select::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] vaadin-combo-box::part(input-field),
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] vaadin-multi-select-combo-box::part(input-field){
  background:rgba(0,0,0,.12)!important;
  color:#f7f7f8!important;
  border-color:rgba(255,255,255,.18)!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] label,
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] [slot="label"],
html body vaadin-dialog-overlay[theme~="gp-modal-v050"] .gp-dialog-close{
  color:#f7f7f8!important;
}

/* ==========================================================================
   0.0.51 — CORREÇÕES EFETIVAS: MULTISELECT / DIALOG / NOVO LANÇAMENTO
   ========================================================================== */

/* Ajuste fino solicitado: sobe somente o botão, sem deslocar a toolbar. */
html body .gp-launch-toolbar-v045>.gp-launch-new-inline-v045{
  position:relative!important;
  top:-3.5px!important;
}

/* No Vaadin 25 os parts do modal pertencem ao host vaadin-dialog. Aplicar o
   tema no antigo vaadin-dialog-overlay não alcançava o componente renderizado. */
html body vaadin-dialog.gp-modal-v051,
html body vaadin-dialog[theme~="gp-modal-v051"]{
  --lumo-base-color:#4a4d55!important;
  --lumo-body-text-color:#f7f7f8!important;
  --lumo-header-text-color:#f7f7f8!important;
  --lumo-secondary-text-color:#e1e2e5!important;
}
html body vaadin-dialog.gp-modal-v051::part(overlay),
html body vaadin-dialog.gp-modal-v051::part(header),
html body vaadin-dialog.gp-modal-v051::part(content),
html body vaadin-dialog.gp-modal-v051::part(footer),
html body vaadin-dialog[theme~="gp-modal-v051"]::part(overlay),
html body vaadin-dialog[theme~="gp-modal-v051"]::part(header),
html body vaadin-dialog[theme~="gp-modal-v051"]::part(content),
html body vaadin-dialog[theme~="gp-modal-v051"]::part(footer){
  background:#4a4d55!important;
  background-color:#4a4d55!important;
  color:#f7f7f8!important;
  border-top:0!important;
  border-bottom:0!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v051::part(overlay),
html body vaadin-dialog[theme~="gp-modal-v051"]::part(overlay){
  border:1px solid rgba(255,255,255,.14)!important;
  box-shadow:0 18px 46px rgba(0,0,0,.30)!important;
}
html body vaadin-dialog.gp-modal-v051>[slot="footer"],
html body vaadin-dialog[theme~="gp-modal-v051"]>[slot="footer"],
html body vaadin-dialog.gp-modal-v051 .gp-launch-dialog-actions,
html body vaadin-dialog[theme~="gp-modal-v051"] .gp-launch-dialog-actions{
  background:#4a4d55!important;
  background-color:#4a4d55!important;
  border:0!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v051 vaadin-text-field::part(input-field),
html body vaadin-dialog.gp-modal-v051 vaadin-password-field::part(input-field),
html body vaadin-dialog.gp-modal-v051 vaadin-integer-field::part(input-field),
html body vaadin-dialog.gp-modal-v051 vaadin-date-picker::part(input-field),
html body vaadin-dialog.gp-modal-v051 vaadin-select::part(input-field),
html body vaadin-dialog.gp-modal-v051 vaadin-combo-box::part(input-field),
html body vaadin-dialog.gp-modal-v051 vaadin-multi-select-combo-box::part(input-field){
  background:rgba(0,0,0,.12)!important;
  color:#f7f7f8!important;
  border-color:rgba(255,255,255,.18)!important;
}
html body vaadin-dialog.gp-modal-v051 label,
html body vaadin-dialog.gp-modal-v051 [slot="label"],
html body vaadin-dialog.gp-modal-v051 .gp-dialog-close{
  color:#f7f7f8!important;
}

/* ==========================================================================
   0.0.52 — FILTRO SEM TEXTO DUPLICADO / MODAL NEUTRO POR TEMA
   ========================================================================== */

/* O input nativo é o segundo texto visto ao lado do chip. Com o seletor
   fechado e um valor já escolhido, somente o chip permanece visível. Ao abrir
   novamente, o input volta normalmente para permitir outra pesquisa. */
html body vaadin-multi-select-combo-box.gp-filter-multiselect[has-value]:not([opened])>input{
  width:0!important;
  min-width:0!important;
  max-width:0!important;
  flex:0 0 0!important;
  margin:0!important;
  padding:0!important;
  opacity:0!important;
  color:transparent!important;
  -webkit-text-fill-color:transparent!important;
  caret-color:transparent!important;
  pointer-events:none!important;
}

/* Cinza discreto, coerente com cada tema. O modal inteiro é um único plano;
   apenas os controles mantêm a separação necessária para leitura. */
:root{
  --gp-modal-bg-v052:#f1f2f4;
  --gp-modal-control-v052:#ffffff;
}
html[theme~="light"],html[data-gp-theme="light"]{
  --gp-modal-bg-v052:#f1f2f4;
  --gp-modal-control-v052:#ffffff;
}
html[theme~="dark"],html[data-gp-theme="dark"]{
  --gp-modal-bg-v052:#30323a;
  --gp-modal-control-v052:#262730;
}
@media(prefers-color-scheme:dark){
  html:not([theme~="light"]):not([data-gp-theme="light"]){
    --gp-modal-bg-v052:#30323a;
    --gp-modal-control-v052:#262730;
  }
}
html body vaadin-dialog.gp-modal-v052,
html body vaadin-dialog[theme~="gp-modal-v052"]{
  --lumo-base-color:var(--gp-modal-bg-v052)!important;
  --lumo-body-text-color:var(--gp-text)!important;
  --lumo-header-text-color:var(--gp-text)!important;
  --lumo-secondary-text-color:var(--gp-muted)!important;
  color:var(--gp-text)!important;
}
html body vaadin-dialog.gp-modal-v052::part(overlay),
html body vaadin-dialog.gp-modal-v052::part(header),
html body vaadin-dialog.gp-modal-v052::part(content),
html body vaadin-dialog.gp-modal-v052::part(footer),
html body vaadin-dialog[theme~="gp-modal-v052"]::part(overlay),
html body vaadin-dialog[theme~="gp-modal-v052"]::part(header),
html body vaadin-dialog[theme~="gp-modal-v052"]::part(content),
html body vaadin-dialog[theme~="gp-modal-v052"]::part(footer){
  background:var(--gp-modal-bg-v052)!important;
  background-color:var(--gp-modal-bg-v052)!important;
  color:var(--gp-text)!important;
  border-top:0!important;
  border-bottom:0!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v052::part(overlay),
html body vaadin-dialog[theme~="gp-modal-v052"]::part(overlay){
  border:1px solid var(--gp-border)!important;
  box-shadow:0 14px 38px rgba(0,0,0,.24)!important;
}
html body vaadin-dialog.gp-modal-v052>[slot="footer"],
html body vaadin-dialog[theme~="gp-modal-v052"]>[slot="footer"],
html body vaadin-dialog.gp-modal-v052 .gp-launch-dialog-actions,
html body vaadin-dialog[theme~="gp-modal-v052"] .gp-launch-dialog-actions{
  background:var(--gp-modal-bg-v052)!important;
  background-color:var(--gp-modal-bg-v052)!important;
  color:var(--gp-text)!important;
  border:0!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v052 vaadin-text-field::part(input-field),
html body vaadin-dialog.gp-modal-v052 vaadin-password-field::part(input-field),
html body vaadin-dialog.gp-modal-v052 vaadin-integer-field::part(input-field),
html body vaadin-dialog.gp-modal-v052 vaadin-date-picker::part(input-field),
html body vaadin-dialog.gp-modal-v052 vaadin-select::part(input-field),
html body vaadin-dialog.gp-modal-v052 vaadin-combo-box::part(input-field),
html body vaadin-dialog.gp-modal-v052 vaadin-multi-select-combo-box::part(input-field){
  background:var(--gp-modal-control-v052)!important;
  color:var(--gp-text)!important;
  border-color:var(--gp-control-border)!important;
}
html body vaadin-dialog.gp-modal-v052 label,
html body vaadin-dialog.gp-modal-v052 [slot="label"],
html body vaadin-dialog.gp-modal-v052 .gp-dialog-close{
  color:var(--gp-text)!important;
}

/* ==========================================================================
   0.0.53 — MODAIS TOTALMENTE UNIFORMES
   ========================================================================== */

/* O modal e todos os seus elementos estruturais compartilham exatamente o
   mesmo plano de cor. A hierarquia visual vem somente de bordas discretas. */
:root{
  --gp-modal-bg-v053:#f1f2f4;
}
html[theme~="light"],html[data-gp-theme="light"]{
  --gp-modal-bg-v053:#f1f2f4;
}
html[theme~="dark"],html[data-gp-theme="dark"]{
  --gp-modal-bg-v053:#30323a;
}
@media(prefers-color-scheme:dark){
  html:not([theme~="light"]):not([data-gp-theme="light"]){
    --gp-modal-bg-v053:#30323a;
  }
}

html body vaadin-dialog.gp-modal-v053,
html body vaadin-dialog[theme~="gp-modal-v053"]{
  --lumo-base-color:var(--gp-modal-bg-v053)!important;
  --lumo-body-text-color:var(--gp-text)!important;
  --lumo-header-text-color:var(--gp-text)!important;
  --lumo-secondary-text-color:var(--gp-muted)!important;
  color:var(--gp-text)!important;
}

html body vaadin-dialog.gp-modal-v053::part(overlay),
html body vaadin-dialog.gp-modal-v053::part(header),
html body vaadin-dialog.gp-modal-v053::part(content),
html body vaadin-dialog.gp-modal-v053::part(footer),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(overlay),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(header),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(content),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(footer){
  background:var(--gp-modal-bg-v053)!important;
  background-color:var(--gp-modal-bg-v053)!important;
  color:var(--gp-text)!important;
  border-top:0!important;
  border-bottom:0!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v053::part(overlay),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(overlay){
  border:1px solid var(--gp-border)!important;
  box-shadow:0 18px 48px rgba(0,0,0,.28)!important;
}

html body vaadin-dialog.gp-modal-v053>[slot="footer"],
html body vaadin-dialog[theme~="gp-modal-v053"]>[slot="footer"],
html body vaadin-dialog.gp-modal-v053 .gp-launch-dialog-actions,
html body vaadin-dialog[theme~="gp-modal-v053"] .gp-launch-dialog-actions,
html body vaadin-dialog.gp-modal-v053 .gp-admin-body,
html body vaadin-dialog.gp-modal-v053 .gp-admin-form,
html body vaadin-dialog.gp-modal-v053 .gp-admin-list-toolbar,
html body vaadin-dialog[theme~="gp-modal-v053"] .gp-admin-body,
html body vaadin-dialog[theme~="gp-modal-v053"] .gp-admin-form,
html body vaadin-dialog[theme~="gp-modal-v053"] .gp-admin-list-toolbar{
  background:var(--gp-modal-bg-v053)!important;
  background-color:var(--gp-modal-bg-v053)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}

/* Campos deixam de criar uma segunda faixa de cor dentro do diálogo. */
html body vaadin-dialog.gp-modal-v053 vaadin-text-field,
html body vaadin-dialog.gp-modal-v053 vaadin-password-field,
html body vaadin-dialog.gp-modal-v053 vaadin-integer-field,
html body vaadin-dialog.gp-modal-v053 vaadin-number-field,
html body vaadin-dialog.gp-modal-v053 vaadin-date-picker,
html body vaadin-dialog.gp-modal-v053 vaadin-select,
html body vaadin-dialog.gp-modal-v053 vaadin-combo-box,
html body vaadin-dialog.gp-modal-v053 vaadin-multi-select-combo-box{
  --vaadin-input-field-background:var(--gp-modal-bg-v053)!important;
  --lumo-contrast-10pct:transparent!important;
}
html body vaadin-dialog.gp-modal-v053 vaadin-text-field::part(input-field),
html body vaadin-dialog.gp-modal-v053 vaadin-password-field::part(input-field),
html body vaadin-dialog.gp-modal-v053 vaadin-integer-field::part(input-field),
html body vaadin-dialog.gp-modal-v053 vaadin-number-field::part(input-field),
html body vaadin-dialog.gp-modal-v053 vaadin-date-picker::part(input-field),
html body vaadin-dialog.gp-modal-v053 vaadin-select::part(input-field),
html body vaadin-dialog.gp-modal-v053 vaadin-combo-box::part(input-field),
html body vaadin-dialog.gp-modal-v053 vaadin-multi-select-combo-box::part(input-field){
  background:var(--gp-modal-bg-v053)!important;
  background-color:var(--gp-modal-bg-v053)!important;
  color:var(--gp-text)!important;
  border:1px solid var(--gp-control-border)!important;
  box-shadow:none!important;
}

/* Neutraliza o fundo preto global do Grid somente quando ele está em modal. */
html body vaadin-dialog.gp-modal-v053 vaadin-grid,
html body vaadin-dialog[theme~="gp-modal-v053"] vaadin-grid{
  --lumo-base-color:var(--gp-modal-bg-v053)!important;
  --vaadin-grid-cell-background:var(--gp-modal-bg-v053)!important;
  --vaadin-grid-row-stripe-background:var(--gp-modal-bg-v053)!important;
  --vaadin-grid-row-hover-background:var(--gp-modal-bg-v053)!important;
  background:var(--gp-modal-bg-v053)!important;
  background-color:var(--gp-modal-bg-v053)!important;
  color:var(--gp-text)!important;
  border:1px solid var(--gp-border)!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(header-cell),
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(body-cell),
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(footer-cell),
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(cell),
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(row),
html body vaadin-dialog[theme~="gp-modal-v053"] vaadin-grid::part(header-cell),
html body vaadin-dialog[theme~="gp-modal-v053"] vaadin-grid::part(body-cell),
html body vaadin-dialog[theme~="gp-modal-v053"] vaadin-grid::part(footer-cell),
html body vaadin-dialog[theme~="gp-modal-v053"] vaadin-grid::part(cell),
html body vaadin-dialog[theme~="gp-modal-v053"] vaadin-grid::part(row){
  background:var(--gp-modal-bg-v053)!important;
  background-color:var(--gp-modal-bg-v053)!important;
  color:var(--gp-text)!important;
}
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(header-cell),
html body vaadin-dialog[theme~="gp-modal-v053"] vaadin-grid::part(header-cell){
  border-bottom:1px solid var(--gp-border)!important;
}

html body vaadin-dialog.gp-modal-v053 vaadin-tabs,
html body vaadin-dialog.gp-modal-v053 vaadin-tab,
html body vaadin-dialog[theme~="gp-modal-v053"] vaadin-tabs,
html body vaadin-dialog[theme~="gp-modal-v053"] vaadin-tab,
html body vaadin-dialog.gp-modal-v053 label,
html body vaadin-dialog.gp-modal-v053 [slot="label"],
html body vaadin-dialog.gp-modal-v053 .gp-dialog-close{
  background-color:transparent!important;
  color:var(--gp-text)!important;
}

/* ==========================================================================
   0.0.54 — CAMPO MAQUINA PADRONIZADO / INTERFACE MAIS FLUIDA
   ========================================================================== */

/* DatePicker, Select e TextField do lançamento recebem a mesma caixa visual.
   O Select de Máquina conserva apenas a seta funcional do seletor. */
html body vaadin-dialog.gp-modal-v053 .gp-launch-standard-field-v054{
  --vaadin-input-field-background:var(--gp-modal-uniform-v058)!important;
  --vaadin-input-field-border-color:var(--gp-control-border)!important;
  --vaadin-input-field-value-color:var(--gp-text)!important;
  --vaadin-input-field-label-color:var(--gp-text)!important;
  font-family:"Source Sans 3","Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  font-size:1rem!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-launch-standard-field-v054::part(label){
  font-family:"Source Sans 3","Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  font-size:1rem!important;
  line-height:20px!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-launch-standard-field-v054::part(input-field),
html body vaadin-dialog.gp-modal-v053 .gp-launch-standard-field-v054 input,
html body vaadin-dialog.gp-modal-v053 .gp-launch-standard-field-v054::part(value-button){
  font-family:"Source Sans 3","Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  font-size:1rem!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-launch-standard-field-v054::part(input-field){
  width:100%!important;
  height:36px!important;
  min-height:36px!important;
  max-height:36px!important;
  box-sizing:border-box!important;
  border:1px solid var(--gp-control-border)!important;
  border-radius:.25rem!important;
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-launch-machine-field-v054::part(value-button){
  min-height:0!important;
  padding:0!important;
  color:var(--gp-text)!important;
  font:inherit!important;
  font-weight:400!important;
  line-height:1.25!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-launch-machine-field-v054::part(toggle-button){
  color:var(--gp-muted)!important;
  background:transparent!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-launch-standard-field-v054[focused]::part(input-field){
  border-color:color-mix(in srgb,var(--gp-red) 72%,var(--gp-control-border))!important;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--gp-red) 40%,transparent)!important;
}

.gp-month-ranking-holder-v054{
  width:100%;
  min-width:0;
  contain:layout paint;
}

/* ==========================================================================
   0.0.55 — MAQUINA COM A MESMA ESTRUTURA DOS TEXTFIELDS
   ========================================================================== */

/* O ComboBox usa input real, como os demais campos do formulário. Não há
   mais o value-button exclusivo do Select que causava a diferença visual. */
html body vaadin-dialog.gp-modal-v053 vaadin-combo-box.gp-launch-machine-field-v055::part(input-field){
  width:100%!important;
  height:36px!important;
  min-height:36px!important;
  max-height:36px!important;
  box-sizing:border-box!important;
  padding-inline:var(--lumo-space-s)!important;
  border:1px solid var(--gp-control-border)!important;
  border-radius:.25rem!important;
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
  font-family:"Source Sans 3","Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  font-size:1rem!important;
}
html body vaadin-dialog.gp-modal-v053 vaadin-combo-box.gp-launch-machine-field-v055::part(toggle-button){
  width:var(--lumo-size-m)!important;
  min-width:var(--lumo-size-m)!important;
  padding:0!important;
  color:var(--gp-muted)!important;
  background:transparent!important;
  border:0!important;
}
html body vaadin-dialog.gp-modal-v053 vaadin-combo-box.gp-launch-machine-field-v055::part(label){
  color:var(--gp-text)!important;
  font-family:"Source Sans 3","Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  font-size:1rem!important;
  line-height:20px!important;
}

/* ==========================================================================
   0.0.56 — KPIS DE REFUGO MAIORES E DISTRIBUIDOS
   ========================================================================== */

/* Cinco áreas iguais ocupam toda a largura disponível. O aumento é aplicado
   somente aos KPIs principais de Refugo, sem afetar Resumos ou detalhes. */
html body .gp-refugo-page>.gp-refugo-kpis-v056{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:clamp(.9rem,1.8vw,2.25rem)!important;
  align-items:stretch!important;
  justify-content:space-between!important;
  width:100%!important;
  margin:.45rem 0 1rem!important;
  padding:0!important;
  box-sizing:border-box!important;
}
html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  min-width:0!important;
  min-height:96px!important;
  padding:.65rem .35rem .75rem!important;
  box-sizing:border-box!important;
  text-align:center!important;
}
html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi>span:not(.gp-kpi-caption){
  display:block!important;
  width:100%!important;
  color:var(--gp-muted)!important;
  font-size:1rem!important;
  font-weight:500!important;
  line-height:1.2!important;
  white-space:normal!important;
}
html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi>h3{
  width:100%!important;
  margin:.22rem 0 .08rem!important;
  color:var(--gp-text)!important;
  font-size:clamp(1.65rem,2.15vw,2.15rem)!important;
  font-weight:650!important;
  line-height:1.05!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
}
html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi>.gp-kpi-caption{
  display:block!important;
  width:100%!important;
  margin:.16rem 0 0!important;
  color:var(--gp-muted)!important;
  font-size:.88rem!important;
  line-height:1.1!important;
  white-space:normal!important;
}

@media(max-width:900px){
  html body .gp-refugo-page>.gp-refugo-kpis-v056{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:.65rem 1rem!important;
  }
  html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi:nth-child(4),
  html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi:nth-child(5){
    grid-column:span 1!important;
  }
}
@media(max-width:700px){
  html body .gp-refugo-page>.gp-refugo-kpis-v056{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:.5rem .65rem!important;
    margin:.3rem 0 .8rem!important;
  }
  html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi{
    min-height:82px!important;
    padding:.45rem .2rem .55rem!important;
  }
  html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi:last-child{
    grid-column:1/-1!important;
  }
  html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi>span:not(.gp-kpi-caption){
    font-size:.9rem!important;
  }
  html body .gp-refugo-page>.gp-refugo-kpis-v056>.gp-kpi>h3{
    font-size:clamp(1.35rem,6vw,1.65rem)!important;
  }
}

/* ==========================================================================
   0.0.57 — CAMPOS / GRAFICO / FILTROS CONTEXTUAIS / COR UNICA
   Este bloco fica por último para prevalecer sobre as versões anteriores.
   ========================================================================== */

/* ==========================================================================
   0.0.83 — CONSOLIDADO / REFUGO / RODAPE / MULTIPLAS OPS
   ========================================================================== */

/* O consolidado diário usa exatamente os tamanhos da tabela de Lançamentos. */
html body vaadin-grid.gp-summary-day-grid-v083::part(header-cell){
  line-height:1.3!important;
}
html body vaadin-grid.gp-summary-day-grid-v083::part(body-cell),
html body vaadin-grid.gp-summary-day-grid-v083 .gp-summary-compact-value-v082{
  font-size:16px!important;
  line-height:1.35!important;
}

/* Múltiplos valores usam somente a mão, sem o cursor de ajuda com “?”. */
html body .gp-summary-compact-value-v082[tabindex],
html body .gp-launch-order-compact-v083[tabindex]{
  cursor:pointer!important;
}

/* Os três indicadores do comparativo ocupam toda a largura sem quebrar valor/unidade. */
html body .gp-refugo-page .gp-comparison-kpis{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:clamp(.55rem,1.2vw,1.1rem)!important;
}
html body .gp-refugo-page .gp-comparison-kpis>.gp-kpi{
  min-width:0!important;
  padding-left:.25rem!important;
  padding-right:.25rem!important;
}
html body .gp-refugo-page .gp-comparison-kpis>.gp-kpi>h3{
  font-size:clamp(1rem,1.55vw,1.7rem)!important;
  line-height:1.12!important;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
}

/* Desloca apenas as informações do rodapé, preservando sua estrutura flexível. */
html body .gp-footer-signature{
  transform:translateY(13px)!important;
}

/* O botão final usa o mesmo espaçamento em Lançamentos, Dia e Mês.
   Botões entre a tabela consolidada e o gráfico conservam a margem normal. */
html body .gp-content>.gp-show-more:not([hidden]){
  margin-bottom:calc(.25rem - 38px)!important;
}

@media(max-width:700px){
  html body .gp-refugo-page .gp-comparison-kpis{
    grid-template-columns:1fr!important;
  }
}

/* A base cromática é exatamente a do dropdown do menu do sistema. */
html body vaadin-dialog.gp-modal-v053,
html body vaadin-dialog[theme~="gp-modal-v053"]{
  --gp-modal-bg-v053:var(--gp-surface)!important;
  --lumo-base-color:var(--gp-surface)!important;
}
html body vaadin-dialog.gp-modal-v053::part(overlay),
html body vaadin-dialog.gp-modal-v053::part(header),
html body vaadin-dialog.gp-modal-v053::part(content),
html body vaadin-dialog.gp-modal-v053::part(footer),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(overlay),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(header),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(content),
html body vaadin-dialog[theme~="gp-modal-v053"]::part(footer),
html body .gp-filter-popover::part(overlay),
html body .gp-filter-popover::part(content),
html body vaadin-context-menu-overlay::part(overlay),
html body vaadin-context-menu-overlay::part(content),
html body vaadin-combo-box-overlay::part(overlay),
html body vaadin-combo-box-overlay::part(content),
html body vaadin-select-overlay::part(overlay),
html body vaadin-select-overlay::part(content),
html body vaadin-date-picker-overlay::part(overlay),
html body vaadin-date-picker-overlay::part(content){
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
}
html body .gp-filter-dropdown,
html body .gp-filter-dropdown-grid,
html body .gp-filter-dropdown-actions,
html body .gp-system-menu,
html body vaadin-context-menu-item,
html body vaadin-combo-box-item,
html body vaadin-select-item{
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
}

/* Todos os campos usam o mesmo preenchimento do menu; readonly/disabled não
   criam uma segunda cor, apenas mudam a cor do texto. */
html body vaadin-text-field,
html body vaadin-password-field,
html body vaadin-integer-field,
html body vaadin-number-field,
html body vaadin-date-picker,
html body vaadin-select,
html body vaadin-combo-box,
html body vaadin-multi-select-combo-box{
  --vaadin-input-field-background:var(--gp-surface)!important;
  --lumo-base-color:var(--gp-surface)!important;
}
html body vaadin-text-field::part(input-field),
html body vaadin-password-field::part(input-field),
html body vaadin-integer-field::part(input-field),
html body vaadin-number-field::part(input-field),
html body vaadin-date-picker::part(input-field),
html body vaadin-select::part(input-field),
html body vaadin-combo-box::part(input-field),
html body vaadin-multi-select-combo-box::part(input-field),
html body vaadin-text-field[readonly]::part(input-field),
html body vaadin-password-field[readonly]::part(input-field),
html body vaadin-date-picker[readonly]::part(input-field),
html body vaadin-select[readonly]::part(input-field),
html body vaadin-combo-box[readonly]::part(input-field),
html body vaadin-combo-box[disabled]::part(input-field){
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  border-color:var(--gp-control-border)!important;
  border-style:solid!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}
html body .gp-period-month::part(input-field),
html body .gp-period-year::part(input-field),
html body .gp-period-field{
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
}

/* Máquina e Capacidade alinham pela base dos campos, independentemente da
   altura interna que ComboBox e readonly calculam para os rótulos. */
html body vaadin-dialog.gp-modal-v053 .gp-launch-row-2{
  align-items:end!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-launch-row-2>.gp-launch-standard-field-v054{
  align-self:end!important;
}

/* Perfil e Setor agora são ComboBox e compartilham a caixa dos demais campos. */
html body vaadin-dialog.gp-modal-v053 .gp-admin-standard-field-v057::part(input-field){
  width:100%!important;
  height:40px!important;
  min-height:40px!important;
  max-height:40px!important;
  box-sizing:border-box!important;
  border:1px solid var(--gp-control-border)!important;
  border-radius:.25rem!important;
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}
html body vaadin-dialog.gp-modal-v053 .gp-admin-profile-field-v057::part(toggle-button),
html body vaadin-dialog.gp-modal-v053 .gp-admin-sector-field-v057::part(toggle-button){
  color:var(--gp-muted)!important;
  background:transparent!important;
  border:0!important;
}

/* Título alinhado à direita; o botão do menu ocupa a coluna imediatamente
   à direita do gráfico e fica na mesma linha visual do título selecionado. */
html body .gp-refugo-chart-line{
  grid-template-columns:minmax(0,1fr) 40px!important;
  column-gap:8px!important;
}
html body .gp-refugo-chart-line>.gp-refugo-chart .gp-refugo-chart-title{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  text-align:right!important;
  padding-left:0!important;
  padding-right:0!important;
}
html body .gp-refugo-chart-line>.gp-chart-menu-button{
  position:relative!important;
  order:2!important;
  justify-self:end!important;
  align-self:start!important;
  margin-top:14px!important;
  right:auto!important;
  top:auto!important;
}

/* O Grid de qualquer modal também segue o mesmo plano do menu. */
html body vaadin-dialog.gp-modal-v053 vaadin-grid,
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(header-cell),
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(body-cell),
html body vaadin-dialog.gp-modal-v053 vaadin-grid::part(footer-cell){
  --vaadin-grid-cell-background:var(--gp-surface)!important;
  --vaadin-grid-row-stripe-background:var(--gp-surface)!important;
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
}

/* ==========================================================================
   0.0.115 — CABECALHO FIXO COM ROLAGEM NORMAL DA PAGINA
   ========================================================================== */

html body .gp-launch-grid-wrapper-v115{
  position:relative!important;
  width:100%!important;
  min-width:0!important;
  overflow:visible!important;
}
html body .gp-launch-sticky-header-v115{
  position:absolute!important;
  top:0!important;
  left:0;
  z-index:45!important;
  width:100%;
  height:var(--gp-launch-sticky-height-v115,0)!important;
  overflow:visible!important;
  visibility:hidden;
  pointer-events:none!important;
  box-sizing:border-box!important;
  background:var(--gp-bg)!important;
  box-shadow:0 2px 4px rgba(0,0,0,.10);
}
html body .gp-launch-sticky-header-v115::after{
  content:"";
  position:absolute;
  top:100%;
  left:0;
  width:100%;
  height:14px;
  pointer-events:none;
  background:linear-gradient(to bottom,
    color-mix(in srgb,var(--gp-bg) 68%,transparent) 0%,
    color-mix(in srgb,var(--gp-bg) 24%,transparent) 55%,
    transparent 100%);
  -webkit-backdrop-filter:blur(3px);
  backdrop-filter:blur(3px);
  -webkit-mask-image:linear-gradient(to bottom,#000 0%,transparent 100%);
  mask-image:linear-gradient(to bottom,#000 0%,transparent 100%);
}
html body .gp-launch-sticky-header-v115.gp-ready-v115{
  height:var(--gp-launch-sticky-height-v115)!important;
}
html body .gp-launch-sticky-header-v115.gp-fixed-v115{
  position:fixed!important;
  top:0!important;
  visibility:visible;
}
html body .gp-launch-sticky-header-v115.gp-bottom-v115{
  position:absolute!important;
  top:calc(100% - var(--gp-launch-sticky-height-v115))!important;
  visibility:visible;
}
html body .gp-launch-sticky-viewport-v115{
  width:100%!important;
  height:100%!important;
  overflow:hidden!important;
}
html body .gp-launch-sticky-track-v115{
  display:flex!important;
  min-width:100%!important;
  height:100%!important;
  will-change:transform;
}
html body .gp-launch-sticky-cell-v115{
  display:flex!important;
  align-items:center!important;
  height:100%!important;
  min-width:0!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
  background:var(--gp-bg)!important;
  border-bottom:1px solid var(--gp-border)!important;
}
html body .gp-launch-sticky-label-v115{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
  white-space:normal!important;
}

/* ==========================================================================
   0.0.116 — NAVEGACAO E RELATORIO DE REFUGO
   ========================================================================== */

html body .gp-main-tabs vaadin-tab{
  cursor:pointer;
}
html body .gp-scrap-report-page-v116{
  display:flex;
  flex-direction:column;
  width:100%;
  min-width:0;
  padding:0 0 1.5rem;
  box-sizing:border-box;
}
html body .gp-scrap-report-toolbar-v116{
  margin-bottom:.25rem;
}
html body .gp-scrap-report-kpis-v116{
  margin:.35rem 0 1rem;
}
html body .gp-scrap-report-sectors-v116,
html body .gp-scrap-report-reasons-v116{
  width:100%;
  min-width:0;
}
html body .gp-scrap-report-grid-v116{
  width:100%;
  min-width:0;
  margin-bottom:1.2rem;
}
html body .gp-scrap-report-grid-v116::part(odd-row-cell){
  background:var(--gp-surface)!important;
}
html body .gp-scrap-report-grid-v116::part(even-row-cell){
  background:color-mix(in srgb,var(--gp-text) 3%,var(--gp-surface))!important;
}
html body .gp-scrap-reason-cards-v116{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1rem;
  width:100%;
  min-width:0;
  margin:.65rem 0 1rem;
}
html body .gp-scrap-reason-card-v116{
  min-width:0;
  padding:.9rem 1rem .25rem;
  border:1px solid var(--gp-border);
  border-radius:.65rem;
  background:var(--gp-surface);
  box-sizing:border-box;
}
html body .gp-scrap-reason-title-v116{
  margin:0 0 .35rem;
  color:var(--gp-text);
  font-size:1rem;
}
html body .gp-scrap-reason-card-v116 .gp-ranking-table{
  margin-bottom:.5rem;
}

@media (max-width:760px){
  html body .gp-scrap-reason-cards-v116{
    grid-template-columns:1fr;
  }
}

/* ==========================================================================
   0.0.117 — MENUS AUTOFECHAVEIS E EXPORTACAO DO RELATORIO
   ========================================================================== */

html body .gp-scrap-report-toolbar-v116{
  flex-wrap:wrap!important;
}
html body .gp-scrap-report-toolbar-v116>vaadin-text-field{
  flex:1 1 420px!important;
}
html body .gp-scrap-report-export-v117{
  flex:0 0 auto!important;
  min-height:44px!important;
  margin-left:auto!important;
  align-self:flex-end!important;
}
html body .gp-scrap-report-print-header-v117{
  display:none!important;
}

@media (max-width:700px){
  html body .gp-scrap-report-export-v117{
    width:100%!important;
    margin-left:0!important;
  }
}

@media print{
  @page{size:A4 landscape;margin:10mm}
  html.gp-print-scrap-report-v117,
  html.gp-print-scrap-report-v117 body{
    --gp-bg:#fff!important;
    --gp-surface:#fff!important;
    --gp-text:#1f2430!important;
    --gp-muted:#5d6470!important;
    --gp-border:#cfd3da!important;
    --lumo-base-color:#fff!important;
    --lumo-body-text-color:#1f2430!important;
    --lumo-header-text-color:#1f2430!important;
    width:auto!important;
    min-width:0!important;
    height:auto!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    overflow:visible!important;
    background:#fff!important;
    color:#1f2430!important;
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
  }
  html.gp-print-scrap-report-v117 .gp-main-header,
  html.gp-print-scrap-report-v117 .gp-navigation,
  html.gp-print-scrap-report-v117 .gp-footer,
  html.gp-print-scrap-report-v117 .gp-scrap-report-toolbar-v116,
  html.gp-print-scrap-report-v117 .gp-scrap-report-page-v116>.gp-title-row,
  html.gp-print-scrap-report-v117 .gp-scrap-report-explanation-v117,
  html.gp-print-scrap-report-v117 vaadin-tooltip-overlay,
  html.gp-print-scrap-report-v117 vaadin-popover-overlay,
  html.gp-print-scrap-report-v117 vaadin-context-menu-overlay,
  /* O indicador de conexão do Vaadin é uma barra fixa no topo e pode ser
     capturado pelo navegador quando o relatório é impresso durante uma
     sincronização. Ele não deve fazer parte do PDF. */
  html.gp-print-scrap-report-v117 vaadin-connection-indicator,
  html.gp-print-scrap-report-v117 #vaadin-connection-indicator,
  html.gp-print-scrap-report-v117 vaadin-loading-indicator,
  html.gp-print-scrap-report-v117 #vaadin-loading-indicator{
    display:none!important;
  }
  html.gp-print-scrap-report-v117 .gp-root,
  html.gp-print-scrap-report-v117 .gp-shell,
  html.gp-print-scrap-report-v117 .gp-content,
  html.gp-print-scrap-report-v117 .gp-scrap-report-page-v116{
    display:block!important;
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    min-height:0!important;
    margin:0!important;
    padding:1.5mm!important;
    overflow:visible!important;
    background:#fff!important;
    color:#1f2430!important;
    break-inside:avoid-page!important;
    page-break-inside:avoid!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-header-v117{
    display:flex!important;
    align-items:flex-start!important;
    justify-content:space-between!important;
    width:100%!important;
    min-height:11mm!important;
    margin:0 0 2mm!important;
    break-inside:avoid;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-logo-v117{
    display:block!important;
    width:34mm!important;
    max-width:130px!important;
    height:auto!important;
    object-fit:contain!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-title-v139{
    display:block!important;
    margin:0!important;
    padding:0!important;
    max-width:75%!important;
    color:#1f2430!important;
    font-size:15pt!important;
    line-height:1.15!important;
    text-align:left!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116{
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    gap:2mm!important;
    margin:0 0 2mm!important;
    break-inside:avoid;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116>.gp-kpi{
    padding:1.5mm 2mm!important;
    border:1px solid #e2e6ec!important;
    border-radius:2mm!important;
    background:#f8fafc!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116>.gp-kpi>span{
    font-size:7pt!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116>.gp-kpi>h3{
    margin:.5mm 0 0!important;
    font-size:11pt!important;
  }
  html.gp-print-scrap-report-v117 .gp-subsection-title{
    margin:2mm 0 1mm!important;
    font-size:9pt!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-reasons-v116>.gp-caption{
    display:none!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-grid-v116{
    margin:0 0 2mm!important;
    font-size:7pt!important;
    --vaadin-grid-cell-padding:1mm 2mm!important;
    --vaadin-grid-row-height:5mm!important;
    --vaadin-grid-header-row-height:6mm!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-grid-v116::part(odd-row-cell){
    background:#fff!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-grid-v116::part(even-row-cell){
    background:#f5f7fa!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-cards-v116{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:2.5mm!important;
    margin:1mm 0 0!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-card-v116{
    padding:2mm 2mm .5mm!important;
    border:1px solid #e2e6ec!important;
    border-radius:2mm!important;
    break-inside:avoid;
    page-break-inside:avoid;
    background:#f8fafc!important;
    color:#1f2430!important;
    box-shadow:none!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-title-v116{
    margin:0 0 .5mm!important;
    font-size:8pt!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-card-v116 .gp-ranking-table{
    margin:0!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-card-v116 .gp-ranking-row{
    grid-template-columns:8mm minmax(0,1fr)!important;
    gap:1mm!important;
    padding:.6mm .8mm!important;
    font-size:6.7pt!important;
  }
}

/* 0.0.120 — hover nativo com a apresentação original da 0.0.114. */
html body .gp-hover-menu-v119::part(overlay){
  border:0!important;
  border-radius:.55rem!important;
  background:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  box-shadow:0 8px 24px rgba(0,0,0,.20)!important;
  overflow:visible!important;
}
html body .gp-hover-menu-v119::part(content){
  padding:4px 0!important;
  overflow:visible!important;
}
html body .gp-hover-menu-body-v119{
  display:flex!important;
  flex-direction:column!important;
  gap:0!important;
  min-width:205px!important;
  overflow:visible!important;
}
html body .gp-hover-menu-item-v119{
  width:100%!important;
  margin:0!important;
  box-sizing:border-box!important;
  cursor:pointer!important;
}
html body .gp-hover-menu-item-v119:hover{
  background:var(--gp-hover)!important;
  outline:0!important;
  box-shadow:none!important;
}
html body .gp-hover-menu-caption-v119{
  display:flex!important;
  align-items:center!important;
  min-height:36px!important;
  padding:0 1rem!important;
  color:var(--gp-muted)!important;
  background:transparent!important;
  font-size:var(--lumo-font-size-m)!important;
  font-weight:400!important;
  line-height:1.2!important;
  opacity:.72!important;
}
html body .gp-hover-menu-body-v119>.gp-menu-sync-info-v045{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:1rem!important;
  margin-top:4px!important;
  min-width:238px!important;
  padding:8px 1rem 4px!important;
  border-top:1px solid var(--gp-border)!important;
  color:var(--gp-muted)!important;
  font-size:.76rem!important;
  white-space:nowrap!important;
}
html body .gp-system-hover-menu-v120{
  min-width:238px!important;
}
html body .gp-hover-submenu-group-v120{
  position:relative!important;
  width:100%!important;
}
html body .gp-hover-submenu-trigger-v120{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  box-sizing:border-box!important;
  cursor:default!important;
}
html body .gp-hover-submenu-trigger-v120>span:last-child{
  margin-left:1rem!important;
  color:var(--gp-muted)!important;
  font-size:1.05rem!important;
}
html body .gp-hover-submenu-v120{
  position:absolute!important;
  top:-4px!important;
  right:calc(100% + 4px)!important;
  z-index:2!important;
  min-width:170px!important;
  padding:4px 0!important;
  border:0!important;
  border-radius:.55rem!important;
  background:var(--gp-surface)!important;
  box-shadow:0 8px 24px rgba(0,0,0,.20)!important;
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
  transform:translateX(3px)!important;
  transition:opacity 70ms ease,transform 70ms ease,visibility 0s linear 70ms!important;
}
html body .gp-hover-submenu-v120::after{
  content:"";
  position:absolute;
  top:0;
  left:100%;
  width:6px;
  height:100%;
}
html body .gp-hover-submenu-group-v120:hover>.gp-hover-submenu-v120,
html body .gp-hover-submenu-group-v120:focus-within>.gp-hover-submenu-v120{
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
  transform:translateX(0)!important;
  transition-delay:0s!important;
}
html body .gp-hover-menu-body-v119>.gp-menu-sync-info-v045::after{
  content:attr(data-gp-sync-label)!important;
  margin-left:auto!important;
  font-weight:650!important;
}
html body .gp-hover-menu-body-v119>.gp-menu-sync-info-v045[data-gp-sync-state="online"]::after{
  color:#16853f!important;
}
html body .gp-hover-menu-body-v119>.gp-menu-sync-info-v045[data-gp-sync-state="offline"]::after{
  color:#c62828!important;
}

/* ==========================================================================
   0.0.121 — PADRAO UNICO PARA MENUS, DROPDOWNS, TOOLTIPS E PDF EM UMA FOLHA
   ========================================================================== */

/* Todos os overlays informativos usam a mesma superfície do menu original. */
html body vaadin-context-menu-overlay::part(overlay),
html body vaadin-combo-box-overlay::part(overlay),
html body vaadin-multi-select-combo-box-overlay::part(overlay),
html body vaadin-select-overlay::part(overlay),
html body vaadin-date-picker-overlay::part(overlay),
html body vaadin-popover-overlay::part(overlay),
html body vaadin-tooltip-overlay::part(overlay){
  border:0!important;
  border-radius:.55rem!important;
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  box-shadow:0 8px 24px rgba(0,0,0,.20)!important;
}
html body vaadin-context-menu-overlay::part(content),
html body vaadin-combo-box-overlay::part(content),
html body vaadin-multi-select-combo-box-overlay::part(content),
html body vaadin-select-overlay::part(content),
html body vaadin-date-picker-overlay::part(content),
html body vaadin-popover-overlay::part(content),
html body vaadin-tooltip-overlay::part(content){
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
}

/* 0.0.134 — abertura instantânea dos menus de navegação.
   Remove somente o fade nativo do overlay, preservando posição, layout e hover. */
html body vaadin-context-menu-overlay,
html body vaadin-context-menu-overlay::part(overlay),
html body vaadin-context-menu-overlay::part(content){
  animation:none!important;
  transition:none!important;
}
/* Nenhum foco, seleção interna ou abertura pinta uma opção. */
html body vaadin-context-menu-item,
html body vaadin-context-menu-item[focused],
html body vaadin-context-menu-item[focus-ring],
html body vaadin-context-menu-item[highlighted],
html body vaadin-context-menu-item[selected],
html body vaadin-context-menu-item:focus,
html body vaadin-context-menu-item:focus-visible,
html body vaadin-context-menu-item:active,
html body vaadin-combo-box-item,
html body vaadin-combo-box-item[focused],
html body vaadin-combo-box-item[selected],
html body vaadin-combo-box-item:focus,
html body vaadin-combo-box-item:focus-visible,
html body vaadin-select-item,
html body vaadin-select-item[focused],
html body vaadin-select-item[selected],
html body vaadin-select-item:focus,
html body vaadin-select-item:focus-visible,
html body vaadin-multi-select-combo-box-item,
html body vaadin-multi-select-combo-box-item[focused],
html body vaadin-multi-select-combo-box-item[selected],
html body vaadin-multi-select-combo-box-item:focus,
html body vaadin-multi-select-combo-box-item:focus-visible,
html body .gp-hover-menu-item-v119,
html body .gp-hover-menu-item-v119:focus,
html body .gp-hover-menu-item-v119:focus-visible,
html body .gp-hover-menu-item-v119:active{
  background:transparent!important;
  background-color:transparent!important;
  color:var(--gp-text)!important;
  outline:0!important;
  box-shadow:none!important;
}

/* O destaque existe exclusivamente no item que está sob o ponteiro. */
html body vaadin-context-menu-item:hover:not([disabled]),
html body vaadin-combo-box-item:hover:not([disabled]),
html body vaadin-select-item:hover:not([disabled]),
html body vaadin-multi-select-combo-box-item:hover:not([disabled]),
html body .gp-hover-menu-item-v119:hover{
  background:var(--gp-hover)!important;
  background-color:var(--gp-hover)!important;
  color:var(--gp-text)!important;
}
html body .gp-hover-submenu-group-v120:focus-within>.gp-hover-submenu-v120{
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
}

/* 0.0.124 — os 14 setores permanecem em uma única tabela compacta no PDF. */
html body .gp-scrap-report-print-sector-table-wrapper-v124{
  display:none;
}

@media print{
  html.gp-print-scrap-report-v117 .gp-scrap-report-grid-v116{
    display:none!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-sector-table-wrapper-v124{
    display:block!important;
    margin:0 0 2mm!important;
    color:#1f2430!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-sector-table-v124{
    width:100%!important;
    min-width:0!important;
    border-top:1px solid #d8dde5!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-sector-row-v124{
    display:grid!important;
    grid-template-columns:minmax(0,1.7fr) minmax(0,.7fr) minmax(0,.8fr) minmax(0,.85fr)!important;
    align-items:center!important;
    min-height:3.8mm!important;
    border-bottom:1px solid #e2e6ec!important;
    background:#fff!important;
    font-size:6.8pt!important;
    line-height:1.1!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-sector-row-v124.gp-even{
    background:#f5f7fa!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-sector-row-v124.gp-header{
    min-height:5mm!important;
    background:#fff!important;
    font-weight:700!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-sector-row-v124>span{
    min-width:0!important;
    padding:.25mm 1.2mm!important;
    overflow-wrap:anywhere!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-sector-row-v124>span:not(:first-child){
    text-align:right!important;
  }
}
html body .gp-hover-submenu-group-v120:hover>.gp-hover-submenu-v120{
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
}

/* Balões informativos próprios seguem exatamente a mesma linguagem do menu. */
html body .gp-oee-info::after,
html body .gp-oee-floating-tooltip-v061{
  border:0!important;
  border-radius:.55rem!important;
  background:var(--gp-surface)!important;
  background-color:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  box-shadow:0 8px 24px rgba(0,0,0,.20)!important;
}

@media print{
  /* Mantido como na 0.0.121; na impressão a tabela compacta v124 substitui este grid. */
  html.gp-print-scrap-report-v117 .gp-scrap-report-grid-v116{
    height:64mm!important;
    min-height:64mm!important;
    max-height:64mm!important;
    margin-bottom:1mm!important;
    --vaadin-grid-row-height:4.2mm!important;
    --vaadin-grid-header-row-height:5.2mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-grid-v116::part(body-cell){
    height:4.2mm!important;
    min-height:4.2mm!important;
    padding:0 2mm!important;
    line-height:4.2mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-grid-v116::part(header-cell){
    height:5.2mm!important;
    min-height:5.2mm!important;
    padding:0 2mm!important;
    line-height:5.2mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-header-v117{
    min-height:9mm!important;
    margin-bottom:1mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-logo-v117{
    width:30mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116{
    margin-bottom:1mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-subsection-title{
    margin:1mm 0 .6mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-cards-v116{
    gap:1.5mm!important;
    margin-top:.5mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-card-v116{
    padding:1.2mm 1.5mm .4mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-title-v116{
    margin-bottom:.2mm!important;
    font-size:7.5pt!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-card-v116 .gp-ranking-row{
    padding:.25mm .6mm!important;
    font-size:6.4pt!important;
    line-height:1.05!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-page-v116,
  html.gp-print-scrap-report-v117 .gp-scrap-report-sectors-v116,
  html.gp-print-scrap-report-v117 .gp-scrap-report-reasons-v116{
    break-inside:avoid-page!important;
    page-break-inside:avoid!important;
  }
}

/* 0.0.125 — somente a moldura externa da folha é removida na impressão. */
@media print{
  html.gp-print-scrap-report-v117,
  html.gp-print-scrap-report-v117 body,
  html.gp-print-scrap-report-v117 .gp-root,
  html.gp-print-scrap-report-v117 .gp-shell,
  html.gp-print-scrap-report-v117 .gp-content,
  html.gp-print-scrap-report-v117 .gp-scrap-report-page-v116{
    border:0!important;
    outline:0!important;
    box-shadow:none!important;
  }
  html.gp-print-scrap-report-v117 body::before,
  html.gp-print-scrap-report-v117 body::after,
  html.gp-print-scrap-report-v117 .gp-scrap-report-page-v116::before,
  html.gp-print-scrap-report-v117 .gp-scrap-report-page-v116::after{
    border:0!important;
    outline:0!important;
    box-shadow:none!important;
  }
}

/* 0.0.128 — folha branca e os cinco KPIs alinhados no A4. */
@media print{
  @page{
    size:A4 landscape;
    margin:8mm;
    background:#fff;
  }
  html.gp-print-scrap-report-v117,
  html.gp-print-scrap-report-v117 body{
    color-scheme:only light!important;
    background-color:#fff!important;
    background-image:none!important;
  }
  html.gp-print-scrap-report-v117 .gp-root,
  html.gp-print-scrap-report-v117 .gp-shell,
  html.gp-print-scrap-report-v117 .gp-content,
  html.gp-print-scrap-report-v117 .gp-scrap-report-page-v116{
    background-color:#fff!important;
    background-image:none!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116{
    display:grid!important;
    grid-template-columns:minmax(0,1.05fr) minmax(0,1.05fr) minmax(0,.9fr) minmax(0,.95fr) minmax(0,1.55fr)!important;
    grid-auto-flow:row!important;
    align-items:stretch!important;
    width:100%!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116>.gp-kpi,
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116>.gp-kpi:last-child{
    grid-column:auto!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116>.gp-kpi>h3{
    overflow-wrap:anywhere!important;
  }
}

/* 0.0.129 — alinhamento integral e distribuição 4 + 3 no A4. */
@media print{
  html.gp-print-scrap-report-v117 .gp-root,
  html.gp-print-scrap-report-v117 .gp-shell,
  html.gp-print-scrap-report-v117 .gp-content,
  html.gp-print-scrap-report-v117 .gp-scrap-report-page-v116{
    width:100%!important;
    margin:0!important;
    padding:0!important;
    box-sizing:border-box!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-header-v117,
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116,
  html.gp-print-scrap-report-v117 .gp-scrap-report-sectors-v116,
  html.gp-print-scrap-report-v117 .gp-scrap-report-reasons-v116,
  html.gp-print-scrap-report-v117 .gp-scrap-report-print-sector-table-wrapper-v124,
  html.gp-print-scrap-report-v117 .gp-scrap-reason-cards-v116{
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    box-sizing:border-box!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-cards-v116{
    display:grid!important;
    grid-template-columns:repeat(12,minmax(0,1fr))!important;
    grid-auto-flow:row!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-card-v116{
    grid-column:span 3!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-reason-card-v116:nth-child(n+5){
    grid-column:span 4!important;
  }
}

/* 0.0.130 — comparativo mensal compacto e preservado em uma folha A4. */
html body .gp-scrap-report-five-month-comparison-v130{
  width:100%;
  min-width:0;
  margin:1.25rem 0 1rem;
  box-sizing:border-box;
}
html body .gp-scrap-report-five-month-comparison-v130>.gp-caption{
  display:block;
  margin:-.35rem 0 .65rem;
}
html body .gp-scrap-report-month-bars-v130{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:clamp(.4rem,1.2vw,.9rem);
  width:100%;
  min-width:0;
  padding:.8rem 1rem .7rem;
  border:1px solid var(--gp-border);
  border-radius:.65rem;
  background:var(--gp-surface);
  box-sizing:border-box;
}
html body .gp-scrap-report-month-column-v130{
  display:grid;
  grid-template-rows:auto 11.83rem auto auto;
  gap:.25rem;
  min-width:0;
  text-align:center;
}
html body .gp-scrap-report-month-value-v130{
  overflow:hidden;
  color:var(--gp-text);
  font-size:.82rem;
  font-weight:700;
  text-overflow:ellipsis;
  white-space:nowrap;
}
html body .gp-scrap-report-month-track-v130{
  display:flex;
  align-items:flex-end;
  justify-content:center;
  width:min(72%,5.5rem);
  height:11.83rem;
  margin:0 auto;
  overflow:hidden;
  border-radius:.35rem .35rem .15rem .15rem;
  background:color-mix(in srgb,var(--gp-text) 7%,var(--gp-surface));
}
html body .gp-scrap-report-month-fill-v130{
  width:100%;
  min-height:0;
  border-radius:.35rem .35rem .15rem .15rem;
  background:linear-gradient(180deg,#ff6b6b 0%,#e5484d 100%);
}
html body .gp-scrap-report-month-label-v130{
  color:var(--gp-text);
  font-size:.78rem;
  font-weight:700;
  text-transform:uppercase;
}
html body .gp-scrap-report-month-difference-v130{
  font-size:.75rem;
  font-weight:750;
  white-space:nowrap;
}
html body .gp-scrap-report-month-difference-v130.gp-up,
html body .gp-scrap-report-month-difference-v130.gp-new{
  color:#d43f45;
}
html body .gp-scrap-report-month-difference-v130.gp-down{
  color:#16853f;
}
html body .gp-scrap-report-month-difference-v130.gp-neutral{
  color:var(--gp-muted);
}

@media (max-width:700px){
  html body .gp-scrap-report-month-bars-v130{
    gap:.25rem;
    padding:.65rem .45rem;
  }
  html body .gp-scrap-report-month-column-v130{
    grid-template-rows:auto 9.295rem auto auto;
  }
  html body .gp-scrap-report-month-track-v130{
    width:82%;
    height:9.295rem;
  }
  html body .gp-scrap-report-month-value-v130,
  html body .gp-scrap-report-month-label-v130,
  html body .gp-scrap-report-month-difference-v130{
    font-size:.65rem;
  }
}

@media print{
  html.gp-print-scrap-report-v117 .gp-scrap-report-five-month-comparison-v130{
    width:100%!important;
    min-width:0!important;
    margin:2.5mm 0 1mm!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-five-month-comparison-v130>.gp-subsection-title{
    margin:.5mm 0 .6mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-five-month-comparison-v130>.gp-caption{
    display:none!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-bars-v130{
    display:grid!important;
    grid-template-columns:repeat(6,minmax(0,1fr))!important;
    gap:2mm!important;
    width:100%!important;
    height:32.11mm!important;
    min-height:32.11mm!important;
    padding:1.3mm 2mm!important;
    border:1px solid #e2e6ec!important;
    border-radius:2mm!important;
    background:#f8fafc!important;
    box-sizing:border-box!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-column-v130{
    display:grid!important;
    grid-template-rows:4.16mm 15.21mm 3.9mm 3.9mm!important;
    gap:0!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-track-v130{
    width:52%!important;
    height:15.21mm!important;
    border-radius:1mm 1mm .4mm .4mm!important;
    background:#e8ebef!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-fill-v130{
    border-radius:1mm 1mm .4mm .4mm!important;
    background:#e5484d!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-value-v130,
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-label-v130,
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-difference-v130{
    color:#1f2430!important;
    font-size:6.4pt!important;
    line-height:1!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-difference-v130.gp-up,
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-difference-v130.gp-new{
    color:#c62828!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-month-difference-v130.gp-down{
    color:#16853f!important;
  }
}

/* 0.0.131 — cinco KPIs com a mesma largura no relatório. */
html body .gp-scrap-report-kpis-v116{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  grid-auto-flow:row!important;
  align-items:stretch!important;
  gap:clamp(.5rem,1.2vw,1rem)!important;
  width:100%!important;
}
html body .gp-scrap-report-kpis-v116>.gp-kpi,
html body .gp-scrap-report-kpis-v116>.gp-kpi:last-child{
  grid-column:auto!important;
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
html body .gp-scrap-report-kpis-v116>.gp-kpi>h3{
  overflow-wrap:anywhere!important;
}

@media (max-width:900px){
  html body .gp-scrap-report-kpis-v116{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media (max-width:480px){
  html body .gp-scrap-report-kpis-v116{
    grid-template-columns:minmax(0,1fr)!important;
  }
}

@media print{
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116{
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    gap:2mm!important;
  }
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116>.gp-kpi,
  html.gp-print-scrap-report-v117 .gp-scrap-report-kpis-v116>.gp-kpi:last-child{
    grid-column:auto!important;
    width:100%!important;
    min-width:0!important;
  }
}

/* MenuBar das abas: o indicador pertence à página escolhida, não ao clique
   que apenas abre o menu. */
html body .gp-main-tabs{
  min-height:48px!important;
  background:transparent!important;
  border-bottom:1px solid var(--gp-border)!important;
  --vaadin-menu-bar-gap:0px!important;
}
html body .gp-main-tabs vaadin-menu-bar-button{
  min-height:48px!important;
  color:var(--gp-text)!important;
  cursor:pointer!important;
}
html body .gp-main-tabs>vaadin-menu-bar-button.gp-system-menu-root{
  width:40px!important;
  min-width:40px!important;
  max-width:40px!important;
  margin-left:auto!important;
  padding:0!important;
}
html body .gp-main-tabs vaadin-menu-bar-item.gp-system-menu-root{
  width:40px!important;
  min-width:40px!important;
  max-width:40px!important;
  padding:0!important;
  justify-content:center!important;
}
html body .gp-main-tabs .gp-system-menu-label{
  display:block!important;
  width:100%!important;
  margin:0 auto!important;
  color:var(--gp-text)!important;
  text-align:center!important;
  font-size:18px!important;
  letter-spacing:1px!important;
  line-height:1!important;
  white-space:nowrap!important;
  visibility:visible!important;
  overflow:visible!important;
}
html body .gp-main-tabs vaadin-menu-bar-button.gp-navigation-active::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:50%!important;
  bottom:0!important;
  width:28px!important;
  height:2px!important;
  border:0!important;
  border-radius:2px 2px 0 0!important;
  background:var(--gp-red)!important;
  transform:translateX(-50%)!important;
  box-shadow:none!important;
}

/* ContextMenu do gráfico e dropdowns principais compartilham a mesma base. */
html body vaadin-context-menu-overlay::part(overlay){
  border:0!important;
  border-radius:.55rem!important;
  background:var(--gp-surface)!important;
  color:var(--gp-text)!important;
  box-shadow:0 8px 24px rgba(0,0,0,.20)!important;
  overflow:hidden!important;
}
html body vaadin-context-menu-overlay::part(content){
  padding:4px 0!important;
  border:0!important;
  background:var(--gp-surface)!important;
  color:var(--gp-text)!important;
}
html body vaadin-context-menu-item{
  min-height:38px!important;
  margin:0!important;
  padding:0 1rem!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}
html body vaadin-context-menu-item:hover,
html body vaadin-context-menu-item:focus-visible,
html body vaadin-context-menu-item[focused]{
  border:0!important;
  outline:0!important;
  background:var(--gp-hover)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}

/* O contêiner externo dos filtros segue o mesmo acabamento sem borda. */
html body .gp-filter-popover::part(overlay){
  border:0!important;
  border-radius:.55rem!important;
  box-shadow:0 8px 24px rgba(0,0,0,.20)!important;
}

/* Modais, filtros e calendário usam uma única superfície. Os conteúdos
   internos são transparentes para não criarem faixas de cor ou rodapé. */
:root,
html[theme~="light"],html[data-gp-theme="light"]{
  --gp-modal-uniform-v058:#e9ebee;
}
html[theme~="dark"],html[data-gp-theme="dark"]{
  --gp-modal-uniform-v058:#2d2f37;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v053"],
html body vaadin-popover-overlay.gp-filter-popover,
html body vaadin-popover-overlay.gp-period-popover{
  --lumo-base-color:var(--gp-modal-uniform-v058)!important;
  --vaadin-dialog-background:var(--gp-modal-uniform-v058)!important;
  color:var(--gp-text)!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v053"]::part(overlay),
html body vaadin-dialog-overlay[theme~="gp-modal-v053"]::part(header),
html body vaadin-dialog-overlay[theme~="gp-modal-v053"]::part(content),
html body vaadin-dialog-overlay[theme~="gp-modal-v053"]::part(footer),
html body vaadin-popover-overlay.gp-filter-popover::part(overlay),
html body vaadin-popover-overlay.gp-filter-popover::part(content),
html body vaadin-popover-overlay.gp-period-popover::part(overlay),
html body vaadin-popover-overlay.gp-period-popover::part(content),
html body .gp-filter-dropdown,
html body .gp-period-panel{
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  color:var(--gp-text)!important;
}
html body :is(.gp-filter-dropdown-grid,.gp-filter-dropdown-actions,
              .gp-period-header,.gp-period-footer){
  background:transparent!important;
  background-color:transparent!important;
}
html body .gp-filter-dropdown-actions,
html body .gp-filter-dropdown-refugo>.gp-filter-dropdown-actions{
  border-top:0!important;
  box-shadow:none!important;
}

/* Campos, rótulos e distâncias seguem o mesmo padrão em todo o sistema. */
html body :is(vaadin-dialog-overlay[theme~="gp-modal-v053"],
              .gp-filter-dropdown,.gp-period-panel)
  :is(vaadin-text-field,vaadin-password-field,vaadin-integer-field,
      vaadin-number-field,vaadin-date-picker,vaadin-select,
      vaadin-combo-box,vaadin-multi-select-combo-box){
  --vaadin-input-field-background:var(--gp-modal-uniform-v058)!important;
  --lumo-base-color:var(--gp-modal-uniform-v058)!important;
}
html body :is(vaadin-dialog-overlay[theme~="gp-modal-v053"],
              .gp-filter-dropdown,.gp-period-panel)
  :is(vaadin-text-field,vaadin-password-field,vaadin-integer-field,
      vaadin-number-field,vaadin-date-picker,vaadin-select,
      vaadin-combo-box,vaadin-multi-select-combo-box)::part(input-field),
html body :is(.gp-launch-standard-field-v054,.gp-filter-dropdown) .gp-period-field,
html body .gp-period-month::part(input-field),
html body .gp-period-year::part(input-field){
  background:var(--gp-modal-uniform-v058)!important;
  background-color:var(--gp-modal-uniform-v058)!important;
  border-color:var(--gp-control-border)!important;
  color:var(--gp-text)!important;
  box-shadow:none!important;
}
html body :is(vaadin-text-field,vaadin-password-field,vaadin-integer-field,
              vaadin-number-field,vaadin-date-picker,vaadin-time-picker,
              vaadin-select,vaadin-combo-box,vaadin-multi-select-combo-box,
              vaadin-text-area)::part(label),
html body .gp-period-label{
  margin:0!important;
  padding:1.75px 0 7px .875px!important;
  text-transform:none!important;
  min-height:auto!important;
  font-family:"Source Sans 3","Source Sans Pro","Source Sans",sans-serif!important;
  font-size:16px!important;
  font-weight:500!important;
  line-height:20px!important;
  color:var(--gp-text)!important;
}

/* Novo Lançamento compacto, com espaçamento regular entre todos os campos. */
html body vaadin-dialog.gp-launch-dialog::part(content){
  padding-top:8px!important;
  padding-bottom:8px!important;
}
html body vaadin-dialog.gp-launch-dialog .gp-launch-form-python,
html body vaadin-dialog.gp-launch-dialog .gp-launch-shift-column{
  gap:.075rem!important;
}
html body vaadin-dialog.gp-launch-dialog .gp-launch-row{
  column-gap:.3rem!important;
  row-gap:.075rem!important;
}
html body vaadin-dialog.gp-launch-dialog .gp-launch-row
  :is(vaadin-text-field,vaadin-combo-box)::part(input-field),
html body vaadin-dialog.gp-launch-dialog .gp-period-field{
  min-height:36px!important;
  height:36px!important;
}
html body vaadin-dialog-overlay[theme~="gp-modal-v053"] .gp-launch-dialog-actions{
  padding-top:0!important;
  gap:.3rem!important;
}

html body .gp-dialog-close{
  width:40px!important;
  min-width:40px!important;
  max-width:40px!important;
  height:40px!important;
  min-height:40px!important;
  max-height:40px!important;
}
html body .gp-dialog-close :is(vaadin-icon,svg){width:20px!important;height:20px!important}

/* A alteração de senha cabe lado a lado no desktop e mantém leitura no celular. */
.gp-password-form{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.7rem!important;
  width:100%;
  box-sizing:border-box;
}
@media(max-width:520px){.gp-password-form{grid-template-columns:1fr!important}}

/* Lançamento Fábrica mantém formulário e tabela fora da MainView. */
.gp-email-report-slot,
.gp-email-report-slot > *,
.gp-email-report-actions{
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
}
.gp-email-report-actions{
  display:flex;
  flex-wrap:wrap;
  width:100%;
}
.gp-factory-launch-grid{margin-top:.65rem}
html body .gp-content .gp-filter-title-row{grid-template-columns:minmax(0,1fr) auto!important;align-items:center!important}
html body .gp-content .gp-filter-title-row>.gp-filter-button{justify-self:end!important;margin:0!important;transform:none!important;top:0!important}
.gp-factory-day-summary-date{text-align:left;font-weight:700;margin:0}
.gp-factory-day-summary-button{flex:0 0 auto!important;min-height:44px!important}
.gp-factory-day-summary-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin:.1rem 0 .8rem}
html body .gp-launch-toolbar-v045.gp-factory-launch-toolbar{justify-content:flex-end!important}
html body .gp-factory-launch-toolbar{gap:3px!important}
html body .gp-factory-launch-toolbar>.gp-factory-day-summary-button{margin-right:22px!important}
html body .gp-factory-launch-toolbar>.gp-factory-toolbar-share{margin-right:0!important;min-height:44px!important;height:44px!important}
html body .gp-launch-toolbar-v045.gp-factory-launch-toolbar>.gp-launch-new-inline-v045{margin-left:0!important}
.gp-factory-day-summary-totals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem;margin:.9rem 0 .15rem}
.gp-factory-day-summary-total{display:block;text-align:center;white-space:nowrap;font-size:14px!important;line-height:1.25;font-weight:700;padding:.6rem .2rem;border:1px solid var(--gp-border);border-radius:.45rem}
.gp-factory-day-summary-total>span{display:block}
.gp-factory-day-summary-total>span+span{font-size:.85em;font-weight:500;margin-top:.2rem}
.gp-factory-day-summary-grand-total{background:var(--gp-surface-2)}
.gp-factory-day-summary-footer{width:100%;display:flex;flex-direction:column;align-items:stretch}
.gp-factory-day-summary-footer>vaadin-button{align-self:flex-end}
.gp-factory-new-heading{margin:0;flex:1;font-size:var(--lumo-font-size-xl);line-height:1.3}
@media(max-width:620px){.gp-factory-day-summary-totals{grid-template-columns:repeat(2,minmax(0,1fr))}}

@media (hover:none) and (pointer:coarse) and (max-width:1024px){
  html body .gp-content .gp-launch-toolbar-v045.gp-factory-launch-toolbar{
    display:flex!important;
    flex-flow:row nowrap!important;
    align-items:center!important;
    justify-content:flex-end!important;
    width:100%!important;
    min-height:44px!important;
    height:auto!important;
    margin:0 0 12px!important;
    padding:0!important;
    gap:6px!important;
    position:relative!important;
    z-index:1!important;
    overflow:visible!important;
  }
  html body .gp-content .gp-launch-toolbar-v045.gp-factory-launch-toolbar>.gp-factory-day-summary-button,
  html body .gp-content .gp-launch-toolbar-v045.gp-factory-launch-toolbar>.gp-factory-toolbar-share,
  html body .gp-content .gp-launch-toolbar-v045.gp-factory-launch-toolbar>.gp-launch-new-inline-v045{
    position:relative!important;
    flex:0 0 44px!important;
    width:44px!important;
    min-width:44px!important;
    max-width:44px!important;
    height:44px!important;
    min-height:44px!important;
    max-height:44px!important;
    margin:0!important;
    top:auto!important;
    left:auto!important;
    right:auto!important;
    transform:none!important;
  }
  html body vaadin-grid.gp-factory-launch-grid{
    display:block!important;
    position:relative!important;
    clear:both!important;
    margin-top:0!important;
    z-index:0!important;
  }
  html body vaadin-dialog.gp-modal-v053 vaadin-combo-box.gp-launch-machine-field-v055::part(clear-button){
    display:none!important;
    visibility:hidden!important;
  }
}

/* Mesmo zebrado do relatório de Refugo em todas as tabelas, inclusive modais. */
html body vaadin-grid::part(odd-row-cell){
  background:var(--gp-surface)!important;
}
html body vaadin-grid::part(even-row-cell){
  background:color-mix(in srgb,var(--gp-text) 3%,var(--gp-surface))!important;
}

/* Geometria comum das buscas e ações de produção, refugo e estoque. */
@media (min-width:768px){
  html body .gp-content .gp-title-row{transform:translateY(-5px)}
  html body .gp-content .gp-title-row>.gp-section-title{transform:translateY(-2.5px)}
  html body .gp-content .gp-filter-title-row>.gp-filter-button{top:2.5px!important}
  html body .gp-content .gp-page-controls{
    display:flex!important;
    align-items:flex-end!important;
    flex-wrap:nowrap!important;
    width:100%!important;
    min-height:68px!important;
    margin:0 0 .65rem!important;
    padding:0!important;
    gap:8px!important;
    transform:none!important;
  }
  html body .gp-content .gp-page-controls>vaadin-text-field,
  html body .gp-content .gp-page-controls>vaadin-combo-box{
    flex:0 1 560px!important;
    width:560px!important;
    max-width:560px!important;
    min-width:0!important;
    padding:0!important;
    margin:0!important;
  }
  html body .gp-content .gp-page-controls>vaadin-text-field::part(label),
  html body .gp-content .gp-page-controls>vaadin-combo-box::part(label){
    font-size:16px!important;
    line-height:20px!important;
    padding:0 0 4px!important;
    margin:0!important;
  }
  html body .gp-content .gp-page-controls>vaadin-text-field::part(input-field),
  html body .gp-content .gp-page-controls>vaadin-combo-box::part(input-field),
  html body .gp-content .gp-page-controls>vaadin-button{
    height:44px!important;
    min-height:44px!important;
    max-height:44px!important;
    box-sizing:border-box!important;
  }
  html body .gp-content .gp-page-controls>vaadin-button{
    top:0!important;
    margin-block:0!important;
    align-self:flex-end!important;
    transform:none!important;
  }
  html body .gp-content .gp-page-controls>.gp-factory-day-summary-button{
    transform:translateY(2px)!important;
  }
  html body .gp-content .gp-page-controls>.gp-factory-toolbar-share{
    transform:translate(-3px,2px)!important;
  }
}

/* Remove padding e scroll do modal de whatsapp */
html body vaadin-dialog-overlay[theme~="wa-no-padding"]::part(content) {
  padding: 0 !important;
  overflow: hidden !important;
}

html body vaadin-dialog-overlay[theme~="wa-no-padding"]::part(overlay) { overflow: hidden !important; }

.gp-manual-order-summary{display:flex;flex-direction:column;gap:.15rem;width:100%;min-width:0}
html body vaadin-dialog.gp-manual-order-summary-dialog::part(content){padding-top:4px!important}
html body .gp-manual-order-summary-item{
  height:auto!important;
  min-height:1.2em!important;
  margin:0 0 .05rem!important;
  line-height:1.2!important
}
.gp-manual-order-summary-search{display:flex!important;align-items:flex-end!important;gap:8px!important;min-height:0!important;margin:0 0 .1rem!important}
.gp-manual-order-summary-search>vaadin-text-field{flex:0 1 560px!important;width:560px!important;max-width:calc(100% - 120px)!important;margin:0!important}
.gp-manual-order-summary-search>vaadin-text-field::part(input-field),
.gp-manual-order-summary-search>vaadin-button{height:44px!important;min-height:44px!important;max-height:44px!important;box-sizing:border-box!important}
.gp-manual-order-summary>vaadin-grid{width:100%;min-width:0}
html body .gp-content .gp-page-controls.gp-launch-toolbar-v045>.gp-order-summary-button{
  flex:0 0 auto!important;margin-left:auto!important;margin-right:-5px!important;
  height:44px!important;min-height:44px!important;max-height:44px!important;
  align-self:flex-end!important;transform:translate(-19px,2px)!important
}
html body .gp-launch-toolbar-v045>.gp-order-summary-button+.gp-launch-new-inline-v045{margin-left:0!important}
@media(max-width:700px){
  .gp-manual-order-summary-search>vaadin-text-field{flex:1 1 auto!important;width:auto!important;max-width:none!important;min-width:0!important}
  html body .gp-launch-toolbar-v045>.gp-order-summary-button{
    flex:0 0 var(--gp-mobile-control)!important;width:var(--gp-mobile-control)!important;
    min-width:var(--gp-mobile-control)!important;max-width:var(--gp-mobile-control)!important;
    padding:0!important;font-size:0!important
  }
}

/* 0.1.532 — balões informativos maiores e mais legíveis em todo o sistema. */
html body vaadin-tooltip-overlay::part(overlay){
  max-width:min(520px,calc(100vw - 24px))!important;
}
html body vaadin-tooltip-overlay::part(content){
  padding:.80rem 1rem!important;
  font-size:17px!important;
  font-weight:500!important;
  line-height:1.45!important;
  white-space:pre-wrap!important;
}
html body .gp-oee-info::after,
html body .gp-oee-floating-tooltip-v061{
  max-width:min(520px,calc(100vw - 24px))!important;
  padding:.80rem 1rem!important;
  font-size:17px!important;
  font-weight:500!important;
  line-height:1.45!important;
}
html body vaadin-grid.gp-summary-grid .gp-summary-compact-value-v082{
  font-size:16px!important;
  line-height:1.35!important;
}

/* Geofence mobile: mostra apenas a validação inicial. */
.gp-factory-geofence-gate {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 24px;
  box-sizing: border-box;
  text-align: center;
}
.gp-factory-geofence-title { font-size: 1.15rem; font-weight: 700; }
.gp-factory-geofence-hint { max-width: 440px; line-height: 1.45; opacity: .82; }

/* O maior valor fixa a posição dos ícones, inclusive nas linhas sem número. */
.gp-measured-value-slot{
  display:inline-grid!important;
  flex:0 0 auto!important;
  font-variant-numeric:tabular-nums!important;
}
.gp-measured-value-slot>*{grid-area:1 / 1!important}
html body .gp-summary-planned-downtime-cell > vaadin-button.gp-summary-downtime-edit-v001{
  margin:0!important;
}
html body .gp-summary-planned-downtime-cell{justify-content:flex-start!important;width:auto!important}

/* Colunas redimensionadas rolam dentro do Grid, sem ampliar a página. */
html body .gp-root,
html body .gp-shell{
  min-width:0!important;
  max-width:100%!important;
  overflow-x:clip!important;
  overflow-y:visible!important;
}
