/* ——— Base: general layout & typography ——— */
html,
body {
  overflow-x: hidden;
}

body {
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif;
}

.content {
  display: none;
}

.content.active {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

/* Wrapperul care conține sidebar + main trebuie să lase copilul să se întindă */
.flex.flex-grow { 
  min-height: 0; 
}

/* Main devine flex container pe coloană ca să poată împinge cardul */
main {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

/* Secțiunea activă umple vertical spațiul din main */
main > .content {
  flex: 1 1 auto;
  min-height: 0;
}

/* Cardul din secțiunea activă se întinde pe toată înălțimea disponibilă */
.content.active > .card {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
}

.section-title {
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.3;
  margin-bottom: 1.25rem;
}

.section-text {
  font-size: 0.875rem;
  line-height: 1.6;
  margin: 0;
  padding: 0;
}

footer {
  background-color: #1f2937;
  color: #fff;
  padding: 5px 10px;
  text-align: center;
  margin-top: auto;
  font-size: 12px;
}

/* ——— Top bar ——— */
.horizontal-bar {
  width: 100%;
  background-color: #1f2937;
  height: 48px;
  display: flex;
  align-items: center;
  padding-left: 16px;
}

.topbar-blur {
  backdrop-filter: blur(4px);
  background-color: rgba(31, 41, 55, 1);
}

.toggle-button {
  background: #4b5563;
  color: #fff;
  padding: 8px 12px;
  border-radius: 8px;
  cursor: pointer;
  transition: all .2s ease-in-out;
  margin-left: 1px;
}

/* ——— Buttons ——— */
.button-style {
  background: #4b5563;
  color: #fff;
  padding: 6px 12px;
  font-size: 14px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: fit-content;
  transition: all .3s ease;
}

.button-style:hover {
  background: #6b7280;
  cursor: pointer;
}

.button-style:active {
  background: #1f2937;
}

/* ——— Sidebar (desktop) ——— */
.sidebar {
  width: 250px;
  padding: 16px;
  background: #1f2937;
  color: #fff;
  overflow: hidden;
  position: relative;
  transition: width .25s ease, padding .25s ease;
  will-change: width, padding;
}

.sidebar.collapsed {
  width: 60px;
  padding: 16px 5px;
  overflow: hidden;
  align-items: center;
}

.sidebar > .menu-item > span {
  display: inline-block;
  overflow: hidden;
  white-space: nowrap;
  max-width: 200px;
  transition: opacity .22s ease, max-width .22s ease;
}

.sidebar.collapsed > .menu-item > span {
  opacity: 0;
  max-width: 0;
}

/* ——— Menu items ——— */
.menu-item {
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  justify-content: flex-start;
  background: #4b5563;
  border-radius: 8px;
  padding: 8px 16px;
  color: #fff;
  border: none;
  transition: all .3s ease;
}

.menu-item:hover {
  background: #6b7280;
  cursor: pointer;
}

.menu-item.active {
  background: inherit;
  color: inherit;
}

.menu-item:disabled {
  opacity: .5;
  cursor: not-allowed;
  pointer-events: none;
}

.menu-item > span {
  line-height: 1.2;
}

/* ——— Submenu ——— */
.menu-item.submenu-sm {
  font-size: 13px;
  padding: 6px 18px;
  margin-left: auto;
  margin-right: 0;
  width: 100%;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  white-space: nowrap;
  transition: all .3s ease;
}

.menu-item.submenu-sm:not(:last-child) {
  margin-bottom: 10px;
}

.submenu-sm .short-label {
  display: none;
}

.sidebar.collapsed .submenu-sm .long-label {
  display: none;
}

.sidebar.collapsed .submenu-sm .short-label {
  display: inline;
}

.submenu-container {
  display: none;
  overflow: hidden;
  contain: layout paint;
  height: 0;
  will-change: height;
  transition: height .3s ease;
  width: 70%;
  margin-left: auto;
  margin-right: 0;
  margin-bottom: 0;
}

.submenu-container.show {
  display: block;
}

/* collapsed view for submenu buttons */
.sidebar.collapsed .submenu-container {
  display: none;
}

.sidebar.collapsed .submenu-container.show {
  display: flex;
  flex-direction: column;
  align-items: center;
  height: auto !important;
  width: 100%;
  margin: 0;
  padding: 0;
  gap: 8px;
}

.sidebar.collapsed .submenu-container .submenu-sm {
  font-size: 11px;
  padding: 6px 0;
  width: 48px;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: center;
  display: block;
}

.sidebar.collapsed .submenu-container .submenu-sm:not(:last-child) {
  margin-bottom: 8px;
}

/* ——— Results sections ——— */
.result-section {
  display: none;
}

#predictions-section-gradius h3,
#predictions-section-sasa h3 {
  margin-bottom: .25rem;
}

/* ——— Plotly tweaks ——— */
.modebar {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  padding: 2px 4px !important;
}

.modebar-group {
  gap: 0 !important;
  margin-right: 6px !important;
  display: flex !important;
}

.modebar-btn {
  margin: 0 4px !important;
}

.modebar-btn[data-title="Produced with Plotly"] {
  display: none !important;
}

.plot-wrap {
  width: 100%;
  min-height: 280px;
}

.plot-wrap.pub {
  max-width: 560px;
  margin-left: 0;
  margin-right: 0;
  min-height: 420px;
}

/* ——— Utility ——— */
.body-no-scroll {
  overflow: hidden;
}

/* ——— Auth area / topbar buttons (desktop baseline) ——— */
#authArea {
  flex-wrap: nowrap;
}

#authButtonsContainer:not(.hidden) {
  display: flex;
  gap: 6px;
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
}

#authButtonsContainer.hidden {
  display: none !important;
}

#loginButton,
#signUpButton,
#logoutButton {
  padding: 6px 12px;
  font-size: 14px;
  border-radius: 8px;
  white-space: nowrap;
  min-width: 0;
  max-width: 100%;
  flex: 0 1 auto;
  width: auto !important;
}

#authArea .button-style {
  padding: 6px 12px;
  font-size: 14px;
  border-radius: 8px;
  flex-shrink: 0;
  width: auto !important;
}

#userInfo {
  display: inline-flex !important;
  max-width: 40vw;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 14px;
  line-height: 1;
  margin-right: 6px;
}

#authArea .button-style#logoutButton {
  width: auto !important;
  min-width: 0 !important;
  flex: 0 0 auto !important;
}

/* ——— Touch devices (≤599px) ——— */
@media (max-width: 599px) {
  .sidebar {
    position: fixed;
    top: 48px;
    left: 0;
    height: calc(100vh - 48px);
    height: calc(100dvh - 48px);
    width: 80vw;
    max-width: 320px;
    transform: translate3d(-100%, 0, 0);
    transition: transform .20s ease-out;
    will-change: transform;
    box-shadow: 0 6px 18px rgba(0, 0, 0, .24);
    z-index: 1000;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  .sidebar.open {
    transform: translate3d(0, 0, 0);
  }

  #submenu-container {
    width: 100% !important;
    margin: 8px 0 0 0;
  }

  #submenu-container .menu-item {
    width: 100%;
  }

  .mobile-overlay {
    display: none;
    position: fixed;
    top: 48px;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, .45);
    z-index: 900;
    opacity: 0;
    transition: opacity .15s linear;
  }

  .mobile-overlay.show {
    display: block;
    opacity: 1;
  }

  main {
    padding: 12px !important;
  }

  .menu-item {
    font-size: 15px;
    padding: 10px 14px;
    line-height: 1.2;
  }

  .submenu-container {
    width: 100% !important;
    margin: 8px 0 0 0 !important;
  }

  .menu-item.submenu-sm {
    width: 100% !important;
    margin: 0 0 8px 0 !important;
    padding: 10px 12px !important;
    font-size: 14px !important;
  }

  .sidebar.collapsed {
    width: 80vw;
    padding: 16px;
  }

  #graph-radius,
  #graph-sasa {
    width: 100% !important;
    max-width: 950px;
    margin-left: auto;
    margin-right: auto;
  }

  main .button-style {
    width: 100% !important;
  }

  .horizontal-bar {
    box-sizing: border-box;
    height: auto;
    min-height: 48px;
    padding-left: 8px;
    padding-right: 8px;
    gap: 6px;
  }

  #menuToggle {
    flex: 0 0 44px;
  }

  #authArea {
    flex: 1 1 auto;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    flex-wrap: wrap;
    overflow: visible;
    max-width: 100%;
  }

  .card {
    padding: 12px !important;
  }

  .section-title {
    font-size: 1.05rem;
    margin-bottom: 1rem !important;
  }
}

/* ——— Extra narrow touch (≤420px) ——— */
@media (max-width: 420px) and (hover: none) and (pointer: coarse) {
  #authArea {
    gap: 4px;
  }

  #loginButton,
  #signUpButton,
  #logoutButton {
    flex: 1 1 48%;
    max-width: 100%;
    justify-content: center;
  }
}

/* ——— Mobile landscape fixes (Safari) ——— */
@media (max-width: 599px) and (orientation: landscape) {
  .sidebar {
    height: calc(100lvh - 48px);
  }

  .submenu-container {
    height: auto !important;
    max-height: none !important;
    transition: none !important;
    overflow: visible !important;
    contain: none !important;
  }

  .submenu-anim {
    transition: opacity 220ms ease, transform 220ms ease;
    will-change: opacity, transform;
  }

  .submenu-anim:not(.enter) {
    opacity: 0;
    transform: translateY(-6px);
    pointer-events: none;
  }

  .submenu-anim.enter {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }
}

/* reduce motion preference */
@media (max-width: 599px) and (orientation: landscape) and (prefers-reduced-motion: reduce) {
  .submenu-anim {
    transition: none !important;
  }
}

/* ——— Very small portrait touch (iPhone SE etc.) ——— */
@media (max-width: 420px) and (max-height: 700px) and (hover: none) and (pointer: coarse) and (orientation: portrait) {
  .sidebar {
    height: calc(100svh - 48px);
  }

  .submenu-container {
    height: auto !important;
    max-height: none !important;
    transition: none !important;
    overflow: visible !important;
  }

  .submenu-anim {
    transition: opacity 220ms ease, transform 220ms ease;
    will-change: opacity, transform;
  }

  .submenu-anim:not(.enter) {
    opacity: 0;
    transform: translateY(-6px);
    pointer-events: none;
  }

  .submenu-anim.enter {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }
}

/* ——— iOS WebKit micro-fix (very small portrait) ——— */
@supports (-webkit-touch-callout: none) {
  @media (max-width: 380px) and (orientation: portrait) {
    :root.mobile-mode #sidebar {
      height: calc(100svh - 48px) !important;
      min-height: -webkit-fill-available !important;
    }

    :root.mobile-mode .submenu-container {
      transition: none !important;
      height: auto !important;
      max-height: none !important;
      overflow: visible !important;
      contain: none !important;
    }

    :root.mobile-mode .submenu-anim {
      transition: opacity .18s ease, transform .18s ease !important;
      transform: translateY(-4px) !important;
      opacity: 0 !important;
    }

    :root.mobile-mode .submenu-anim.enter {
      transform: translateY(0) !important;
      opacity: 1 !important;
    }
  }
}

/* ——— Forced mobile layout (device-classified) ——— */
:root.mobile-mode #sidebar {
  position: fixed !important;
  top: 48px !important;
  left: 0 !important;
  height: calc(100dvh - 48px) !important;
  height: calc(100svh - 48px) !important;
  min-height: -webkit-fill-available !important;
  width: 80vw !important;
  max-width: 320px !important;
  transform: translate3d(-100%, 0, 0) !important;
  transition: transform .20s ease-out !important;
  will-change: transform !important;
  box-shadow: 0 6px 18px rgba(0, 0, 0, .24) !important;
  z-index: 1001 !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  padding-bottom: env(safe-area-inset-bottom, 0px) !important;
}

:root.mobile-mode #sidebar.open {
  transform: translate3d(0, 0, 0) !important;
}

:root.mobile-mode #mobileOverlay {
  display: none;
  position: fixed;
  top: 48px;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, .45);
  z-index: 1000;
  opacity: 0;
  transition: opacity .15s linear;
}

:root.mobile-mode .mobile-overlay.show {
  display: block;
  opacity: 1;
}

:root.mobile-mode main .button-style {
  width: 100% !important;
}

:root.mobile-mode #submenu-container {
  width: 100% !important;
  margin: 8px 0 0 0 !important;
}

:root.mobile-mode .menu-item.submenu-sm {
  width: 100% !important;
  margin: 0 0 8px 0 !important;
  padding: 10px 12px !important;
  font-size: 14px !important;
}

:root.mobile-mode .submenu-container {
  position: relative !important;
  overflow: visible !important;
}

:root.mobile-mode .submenu-list {
  max-height: calc(100svh - 160px) !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
}

:root.mobile-mode #graph-radius,
:root.mobile-mode #graph-sasa {
  width: 100% !important;
  max-width: 950px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Mobile landscape very small height (<=480px): micșorăm uniform */
@media (hover: none) and (pointer: coarse) and (orientation: landscape) and (max-height: 480px) {
  #loginButton,
  #signUpButton,
  #logoutButton {
    padding: 6px 12px !important;
    font-size: 14px !important;
    border-radius: 8px !important;
    line-height: 1.3 !important;
  }

  #userInfo {
    font-size: 14px !important;
    max-width: 36vw !important;
  }
}