/*
 * 2026 NUEM - Núcleo de Escoamento Multifásico
 * Autores: Joel Karp (Modelo) e Gabriel Torelli (Implementação Web)
 * Descrição: Define os estilos visuais e responsivos da interface web.
 */

:root { --ink:#102a43; --navy:#0b2742; --blue:#0b69a3; --blue-hover:#095985; --line:#d9e2ec; --canvas:#f5f8fb; --danger:#b42318; --danger-hover:#912018; }
body { background:var(--canvas); color:var(--ink); min-height:100vh; }
.auth-bar { background:#fff; border-bottom:1px solid var(--line); }
.auth-bar-inner { align-items:center; display:flex; justify-content:flex-end; gap:.75rem; min-height:3rem; }
.auth-bar span { color:#627d98; font-size:.8rem; font-weight:700; }
.app-footer { border-top:1px solid var(--line); color:#627d98; font-size:.82rem; font-weight:600; padding:1rem 0 1.25rem; text-align:center; }
.login-page { background:#162f45 url("/hydra/static/nuem-login-background.jpg") center/cover fixed no-repeat; }
.login-page::before { background:rgba(8,25,40,.42); content:""; inset:0; pointer-events:none; position:fixed; }
.login-page .auth-bar { display:none; }
.login-page main { align-items:center; display:flex; justify-content:center; min-height:calc(100vh - 3.8rem); padding-bottom:2rem !important; padding-top:2rem !important; position:relative; z-index:1; }
.login-page .app-footer { border-top:0; color:rgba(255,255,255,.84); position:relative; z-index:1; }
.login-shell { align-items:stretch; background:#fff; border:1px solid rgba(217,226,236,.72); border-radius:.8rem; box-shadow:0 22px 60px rgba(6,21,35,.28); display:grid; grid-template-columns:minmax(0,1fr) minmax(22rem,.82fr); max-width:58rem; min-height:32rem; overflow:hidden; width:100%; }
.login-brand-panel { align-items:center; background:linear-gradient(135deg,rgba(11,39,66,.96),rgba(11,105,163,.9)); color:#fff; display:flex; flex-direction:column; justify-content:center; gap:2.2rem; min-width:0; padding:2.1rem; position:relative; text-align:center; }
.login-brand-panel::after { border:1px solid rgba(255,255,255,.18); border-radius:.6rem; content:""; inset:1rem; pointer-events:none; position:absolute; }
.login-brand-logo { display:block; height:10.5rem; margin:0 auto; object-fit:contain; position:relative; width:9.7rem; z-index:1; }
.login-brand-copy { position:relative; z-index:1; }
.login-brand-copy h1 { color:#fff; font-size:2.35rem; font-weight:800; line-height:1; margin:0; }
.login-brand-copy p { color:rgba(255,255,255,.82); font-size:.95rem; font-weight:650; margin:.5rem 0 0; }
.login-panel { align-self:stretch; background:#fff; display:flex; flex-direction:column; gap:1rem; justify-content:center; min-width:0; padding:2.45rem; }
.login-heading { margin-bottom:.15rem; }
.login-heading h2 { color:var(--navy); font-size:1.45rem; font-weight:800; line-height:1.15; margin:.25rem 0 0; }
.login-heading p { color:#627d98; font-size:.88rem; font-weight:600; margin:.35rem 0 0; }
.login-field { display:grid; gap:.42rem; }
.login-panel .form-control { background:#fbfdff; border-color:#cad7e2; border-radius:.55rem; min-height:2.75rem; transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease; }
.login-panel .form-control:focus { background:#fff; border-color:var(--blue); box-shadow:0 0 0 .2rem rgba(11,105,163,.14); }
.login-submit { align-items:center; display:inline-flex; justify-content:center; margin-top:.25rem; min-height:2.8rem; width:100%; }
.login-panel .alert { border-radius:.55rem; font-size:.84rem; margin:0; }
.login-shell [data-motion] { animation:login-panel-in .56s cubic-bezier(.22,1,.36,1) both; }
.login-shell [data-motion-delay="120"] { animation-delay:.08s; }
@keyframes login-panel-in {
  from { opacity:0; transform:translateY(16px); }
  to { opacity:1; transform:translateY(0); }
}
@media (max-width:767.98px) {
  .login-page { background-attachment:scroll; }
  .login-page main { min-height:calc(100vh - 4.2rem); padding-left:1rem; padding-right:1rem; }
  .login-shell { grid-template-columns:1fr; max-width:25rem; min-height:0; }
  .login-brand-panel { align-items:center; gap:.9rem; justify-content:center; min-height:12.5rem; padding:1.6rem; text-align:center; }
  .login-brand-panel::after { inset:.75rem; }
  .login-brand-logo { height:6.2rem; width:6.2rem; }
  .login-brand-copy h1 { font-size:1.65rem; }
  .login-panel { padding:1.45rem; }
}
@media (prefers-reduced-motion:reduce) {
  .login-shell [data-motion] { animation:none; }
}
.eyebrow { color:var(--blue); font-size:.76rem; font-weight:800; letter-spacing:.12em; }
.panel,.metric { border:1px solid var(--line); border-radius:.8rem; box-shadow:0 4px 16px rgba(16,42,67,.05); }
.app-page { margin:0 auto; max-width:1320px; }
.page-hero { align-items:center; background:linear-gradient(120deg,#fff 0%,#f2f7fb 100%); border:1px solid var(--line); border-radius:1rem; display:flex; gap:1.25rem; justify-content:space-between; overflow:hidden; padding:1.35rem 1.5rem; position:relative; }
.page-hero::after { background:radial-gradient(circle,rgba(11,105,163,.1),transparent 68%); content:""; height:13rem; position:absolute; right:-4rem; top:-7rem; width:13rem; }
.page-hero > * { position:relative; z-index:1; }
.page-hero .btn { white-space:nowrap; }
.page-hero .method-badge { margin-left:.2rem; vertical-align:.08rem; }
.form-label { font-size:.87rem; font-weight:600; }
.input-group-text { min-width:4.2rem; justify-content:center; color:#52667a; }
.btn { border-radius:.6rem; font-weight:600; }
.btn-primary {
  --bs-btn-bg:var(--blue); --bs-btn-border-color:var(--blue); --bs-btn-color:#fff;
  --bs-btn-hover-bg:#c65d00; --bs-btn-hover-border-color:#c65d00; --bs-btn-hover-color:#fff;
  --bs-btn-active-bg:var(--navy); --bs-btn-active-border-color:var(--navy);
  --bs-btn-disabled-bg:var(--blue); --bs-btn-disabled-border-color:var(--blue);
  --bs-btn-focus-shadow-rgb:11,105,163;
}
.btn-outline-secondary {
  --bs-btn-bg:#fff; --bs-btn-border-color:#b8c7d4; --bs-btn-color:var(--navy);
  --bs-btn-hover-bg:var(--navy); --bs-btn-hover-border-color:var(--navy); --bs-btn-hover-color:#fff;
  --bs-btn-active-bg:var(--navy); --bs-btn-active-border-color:var(--navy); --bs-btn-active-color:#fff;
  --bs-btn-focus-shadow-rgb:11,39,66;
}
.btn-light {
  --bs-btn-bg:#f8fafc; --bs-btn-border-color:#d9e2ec; --bs-btn-color:#334e68;
  --bs-btn-hover-bg:#eaf1f6; --bs-btn-hover-border-color:#b8c7d4; --bs-btn-hover-color:var(--navy);
  --bs-btn-active-bg:#dfe9f0; --bs-btn-active-border-color:#aebfcd;
}
.btn-danger {
  --bs-btn-bg:var(--danger); --bs-btn-border-color:var(--danger); --bs-btn-color:#fff;
  --bs-btn-hover-bg:var(--danger-hover); --bs-btn-hover-border-color:var(--danger-hover); --bs-btn-hover-color:#fff;
  --bs-btn-active-bg:#761a14; --bs-btn-active-border-color:#761a14;
  --bs-btn-focus-shadow-rgb:180,35,24;
}
.btn-light.text-danger { --bs-btn-color:var(--danger); --bs-btn-hover-color:var(--danger-hover); }
.metric p { color:#627d98; font-size:.82rem; margin-bottom:.5rem; }
.metric strong { display:block; font-size:1.55rem; line-height:1.15; }
.metric span { color:#627d98; font-size:.8rem; }
.metric { transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease; }
.metric:hover { border-color:#c3d5e3; box-shadow:0 6px 18px rgba(16,42,67,.08); transform:translateY(-2px); }
.input-review { background:#f8fafc; border:1px solid #e5ebf1; border-radius:.5rem; padding:.65rem .8rem; }
.input-review span { color:#627d98; display:block; font-size:.72rem; }
.input-review strong { font-size:.9rem; overflow-wrap:anywhere; }
.curve-selector { background:#f8fafc; border:1px solid #e1e8ef; border-radius:.6rem; padding:.7rem .8rem; }
.curve-collection-list { display:grid; gap:.5rem; }
.curve-collection-item { align-items:center; background:#f8fafc; border:1px solid #e1e8ef; border-radius:.6rem; display:flex; gap:1rem; justify-content:space-between; padding:.7rem .8rem; }
.curve-collection-item strong,.curve-collection-item span { display:block; }
.curve-collection-item span { color:#627d98; font-size:.72rem; }
.curve-collection-item code { color:var(--blue); font-size:.72rem; }
.curve-collection-actions { align-items:center; display:flex; flex-wrap:wrap; gap:.65rem; justify-content:flex-end; }
.curve-used { background:#eef5fa; border-radius:2rem; color:#486581; font-size:.72rem; font-weight:700; padding:.35rem .7rem; }
.workspace-tabs { border-bottom-color:#ccd9e3; margin-top:.8rem; }
.workspace-tabs .nav-link { border-radius:.55rem .55rem 0 0; color:#627d98; font-size:.82rem; font-weight:700; padding:.55rem .85rem; }
.workspace-tabs .nav-link:hover { border-color:#e1e8ef #e1e8ef #ccd9e3; color:var(--blue); }
.workspace-tabs .nav-link.active { background:#fff; border-color:#ccd9e3 #ccd9e3 #fff; color:var(--navy); }
.workspace-tab-content { background:#fff; border:1px solid #ccd9e3; border-radius:0 0 .7rem .7rem; border-top:0; padding:.75rem; }
.constants-panel { background:#f8fafc; border:1px solid #dce6ee; border-radius:.65rem; padding:.8rem; }
.constants-heading { align-items:center; border-bottom:1px solid #e1e8ef; display:flex; gap:1rem; justify-content:space-between; margin-bottom:.65rem; padding-bottom:.6rem; }
.constants-heading > span { background:#eef5fa; border-radius:2rem; color:#486581; font-size:.68rem; font-weight:700; padding:.3rem .6rem; white-space:nowrap; }
.constants-grid { display:grid; gap:.4rem; grid-template-columns:repeat(4,minmax(0,1fr)); }
.constant-item { background:#fff; border:1px solid #e1e8ef; border-radius:.45rem; min-width:0; padding:.45rem .55rem; }
.constant-item code { color:#486581; display:block; font-size:.66rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.constant-item strong { color:var(--ink); display:block; font-size:.78rem; margin-top:.08rem; overflow-wrap:anywhere; }
@media (max-width:991.98px) { .constants-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:575.98px) { .constants-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.chart-heading { align-items:center; display:flex; gap:1rem; justify-content:space-between; margin-bottom:.75rem; }
.chart-canvas { height:22rem; position:relative; }
.chart-canvas-wide { height:32rem; }
.matplotlib-plot { display:block; height:auto; width:100%; }
@media (max-width:575.98px) { .chart-canvas { height:18rem; } .chart-canvas-wide { height:24rem; } }
.case-id { color:var(--blue); font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-weight:700; text-decoration:none; }
.home-hero { background:linear-gradient(120deg,#fff 0%,#f2f7fb 100%); border:1px solid var(--line); border-radius:1rem; padding:1.5rem 1.65rem; position:relative; overflow:hidden; }
.home-hero::after { background:radial-gradient(circle,rgba(11,105,163,.12),transparent 68%); content:""; height:15rem; position:absolute; right:-5rem; top:-8rem; width:15rem; }
.home-hero > div { position:relative; z-index:1; }
.brand-hydra { color:var(--navy); }
.brand-separator { color:#7b93a8; font-weight:400; }
.brand-subtitle { color:#3f5e75; font-size:.86rem; font-weight:600; letter-spacing:.01em; }
.new-case-button,
.result-header-button { align-items:center; border-radius:.6rem; display:inline-flex; font-weight:650; gap:.35rem; padding:.65rem 1rem; }
.new-case-button span { font-size:1.25rem; font-weight:400; line-height:1; }
.case-stats { display:grid; gap:.65rem; grid-template-columns:repeat(4,minmax(0,1fr)); }
.case-stat { align-items:center; background:#fff; border:1px solid var(--line); border-radius:.7rem; display:flex; justify-content:space-between; padding:.75rem .9rem; }
.case-stat span { color:#627d98; font-size:.72rem; font-weight:650; }
.case-stat strong { color:var(--navy); font-size:1.15rem; }
.cases-panel { overflow:hidden; }

.case-stat { transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease; }
.case-stat:hover { border-color:#c3d5e3; box-shadow:0 5px 14px rgba(16,42,67,.07); transform:translateY(-2px); }
@media (prefers-reduced-motion:reduce) {
  .case-stat { transition:none; }
  .case-stat:hover { transform:none; }
}
.cases-panel-header { align-items:center; background:#fff; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; padding:1rem 1.2rem; }
.case-count { background:#eef5fa; border-radius:2rem; color:#486581; font-size:.7rem; font-weight:700; padding:.3rem .65rem; }
.cases-panel table.dataTable { margin-top:.65rem !important; }
.cases-panel .table > :not(caption) > * > * { border-bottom-color:#e7edf2; padding:.75rem .7rem; }
.cases-panel thead th { color:#627d98; font-size:.68rem; font-weight:750; letter-spacing:.055em; text-transform:uppercase; }
.cases-panel tbody tr { transition:background-color .15s ease; }
.cases-panel tbody tr:hover { background:#f3f8fc; }
.case-row { cursor:pointer; }
.case-row:focus-visible { box-shadow:inset 0 0 0 2px rgba(11,105,163,.45); outline:0; }
.case-id { display:inline-block; }
.case-name { color:var(--ink); font-size:.86rem; font-weight:650; }
.case-date { color:#829ab1; font-size:.66rem; }
.method-badge { border-radius:2rem; display:inline-block; font-size:.68rem; font-weight:700; padding:.3rem .58rem; white-space:nowrap; }
.method-single { background:#e6f6ed; color:#216e45; }
.method-sensitivity { background:#e8f1fb; color:#1f5f99; }
.method-consolidation_risk { background:#fff1dd; color:#925c13; }
.case-actions { display:inline-flex; gap:.3rem; }
.case-actions .btn { font-size:.7rem; padding:.28rem .5rem; }
.cases-panel .dt-search input,.cases-panel .dt-length select { border-color:#d7e0e8; border-radius:.45rem; font-size:.78rem; padding:.32rem .5rem; }
.cases-panel .dt-info,.cases-panel .dt-length,.cases-panel .dt-search,.cases-panel .dt-paging { color:#627d98; font-size:.72rem; }
.cases-panel .dt-layout-row { align-items:center; display:flex; flex-wrap:wrap; gap:.65rem 1rem; justify-content:space-between; }
.cases-panel .dt-layout-cell { align-items:center; display:flex; min-width:0; }
.cases-panel .dt-length label { align-items:center; display:flex; gap:.45rem; margin:0; white-space:nowrap; }
.cases-panel .dt-length select { display:inline-block; flex:0 0 auto; margin:0; min-width:4.25rem; width:auto; }
.cases-panel .dt-search label { align-items:center; display:flex; gap:.45rem; margin:0; white-space:nowrap; }
.cases-panel .dt-search input { margin:0; min-width:10rem; }
@media (max-width:767.98px) { .home-hero,.page-hero { padding:1.15rem; } .page-hero { align-items:flex-start; flex-direction:column; } .case-stats { grid-template-columns:repeat(2,1fr); } .cases-panel-header { padding:.85rem 1rem; } }
.modal-xl { --bs-modal-width: 1140px; }
.modal-dialog-scrollable { height:min(90vh, 820px); }
.modal-dialog-scrollable .modal-content { max-height:100%; overflow:hidden; }
.modal-dialog-scrollable .modal-content > form { display:flex; flex:1 1 auto; flex-direction:column; max-height:100%; min-height:0; overflow:hidden; }
.modal-dialog-scrollable .modal-body { flex:1 1 auto; min-height:0; overflow-y:auto; padding:1rem 1.25rem; }
.modal-dialog-scrollable .modal-header,.modal-dialog-scrollable .modal-footer { flex:0 0 auto; padding:.75rem 1.25rem; }
.modal-dialog-scrollable .modal-footer { background:#fff; border-top:1px solid var(--line); box-shadow:0 -4px 12px rgba(16,42,67,.05); position:relative; z-index:2; }
.parameter-group { border-top:1px solid var(--line); padding-top:1rem; }
.risk-samples { align-items:center; display:grid; gap:0 .45rem; grid-template-columns:auto 5.5rem auto; }
.risk-samples .form-label { grid-column:1; }
.risk-samples input { grid-column:2; grid-row:1 / span 2; }
.risk-samples .form-text { grid-column:3; grid-row:1 / span 2; white-space:nowrap; }
.risk-item { align-items:center; background:#f8fafc; border:1px solid #e1e8ef; border-radius:.55rem; display:grid; gap:.65rem; grid-template-columns:minmax(9rem, 1fr) minmax(12rem, 1.35fr); padding:.45rem .6rem; }
.risk-item-name { align-items:center; display:flex; gap:.45rem; min-width:0; }
.risk-item-name label { line-height:1.1; min-width:0; }
.risk-item-name code { display:block; font-size:.74rem; font-weight:700; }
.risk-item-name span { color:#627d98; display:block; font-size:.68rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.risk-range { display:grid; gap:.4rem; grid-template-columns:1fr 1fr; }
.risk-range > div { align-items:center; display:grid; gap:.25rem; grid-template-columns:auto 1fr; }
.risk-range span { color:#627d98; font-size:.65rem; font-weight:700; text-transform:uppercase; }
.risk-range .form-control { font-size:.75rem; min-width:0; padding:.2rem .35rem; }
@media (max-width:575.98px) { .risk-item { grid-template-columns:1fr; } .risk-samples { width:100%; } }
#advanced-parameters.show { display:grid; gap:.55rem; grid-template-columns:repeat(12,minmax(0,1fr)); }
#advanced-parameters .parameter-group { background:#f8fafc; border:1px solid #e1e8ef; border-radius:.55rem; margin:0 !important; padding:.55rem .65rem; }
#advanced-parameters .parameter-group:nth-child(1) { grid-column:span 5; }
#advanced-parameters .parameter-group:nth-child(2) { grid-column:span 7; }
#advanced-parameters .parameter-group:nth-child(3) { grid-column:1 / -1; }
#advanced-parameters .parameter-group h3 { border-bottom:1px solid #e3eaf0; color:var(--navy); font-size:.7rem; letter-spacing:.055em; margin:0 0 .4rem; padding-bottom:.32rem; text-transform:uppercase; }
#advanced-parameters .parameter-group .row { --bs-gutter-x:.4rem; --bs-gutter-y:.4rem; }
#advanced-parameters .parameter-group .col-sm-6 { flex:1 1 7rem; max-width:none; width:auto; }
#advanced-parameters .form-label { font-size:.64rem; line-height:1.1; margin-bottom:.14rem; white-space:nowrap; }
#advanced-parameters .form-control { font-size:.72rem; padding:.2rem .32rem; }
#advanced-parameters .input-group-text { font-size:.62rem; min-width:2.8rem; padding:.18rem .28rem; }
@media (max-width:991.98px) { #advanced-parameters .parameter-group { grid-column:1 / -1 !important; } }
#newCaseModal #sensitivity-options { background:#f8fafc; border-color:#e1e8ef !important; border-radius:.55rem !important; padding:.55rem .65rem !important; }
#newCaseModal #sensitivity-options h3 { border-bottom:1px solid #e3eaf0; color:var(--navy); font-size:.7rem; letter-spacing:.055em; margin:0 0 .45rem; padding-bottom:.32rem; text-transform:uppercase; }
#newCaseModal #sensitivity-options .row { --bs-gutter-x:.45rem; --bs-gutter-y:.4rem; align-items:end; }
#newCaseModal #sensitivity-options .form-label { font-size:.64rem; line-height:1.1; margin-bottom:.14rem; white-space:nowrap; }
#newCaseModal #sensitivity-options .form-control,#newCaseModal #sensitivity-options .form-select { font-size:.72rem; min-height:1.75rem; padding:.2rem .35rem; }
#newCaseModal #sensitivity-options .col-md-4 { flex:1 1 14rem; }
#newCaseModal #sensitivity-options .col-md-2 { flex:0 1 8rem; }
.edit-page { margin:0 auto; max-width:1320px; }
.edit-overview .card-body { padding:1rem 1.15rem; }
.edit-overview .form-label { margin-bottom:.25rem; }
.edit-overview .form-control,.edit-overview .form-select { font-size:.88rem; padding:.4rem .65rem; }
.edit-parameters { display:grid; gap:.75rem; grid-template-columns:repeat(12, 1fr); }
.edit-parameters .parameter-group { background:#fff; border:1px solid var(--line); border-radius:.7rem; box-shadow:0 3px 12px rgba(16,42,67,.04); margin:0 !important; padding:.75rem .85rem; }
.edit-parameters .parameter-group:nth-child(1) { grid-column:span 5; }
.edit-parameters .parameter-group:nth-child(2) { grid-column:span 7; }
.edit-parameters .parameter-group:nth-child(3) { grid-column:1 / -1; }
.edit-parameters .parameter-group h3 { border-bottom:1px solid #e8edf2; color:var(--navy); font-size:.78rem; letter-spacing:.06em; margin:0 0 .55rem; padding-bottom:.4rem; text-transform:uppercase; }
.edit-parameters .parameter-group .row { --bs-gutter-x:.55rem; --bs-gutter-y:.5rem; }
.edit-parameters .parameter-group .col-sm-6 { flex:1 1 8rem; max-width:none; width:auto; }
.edit-parameters .form-label { font-size:.7rem; margin-bottom:.18rem; white-space:nowrap; }
.edit-parameters .form-control { font-size:.78rem; padding:.28rem .4rem; }
.edit-parameters .input-group-text { font-size:.68rem; min-width:3.2rem; padding:.25rem .35rem; }
.edit-actions { align-items:center; background:rgba(245,248,251,.96); bottom:0; display:flex; gap:.5rem; justify-content:flex-end; margin-top:.85rem; padding:.65rem 0; position:sticky; z-index:10; }
@media (max-width:991.98px) { .edit-parameters .parameter-group { grid-column:1 / -1 !important; } }
