@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');

/* ==========================================================================
Global styles
========================================================================== */

:root {
--ink: var(--bs-body-color);
--teal-deep: var(--bs-primary);
--teal-pale: #E6F2F0;
--uab-green: #1F7A4D;
--paper: #FBFAF7;
--line: #D8DEDC;
--meta: var(--bs-secondary-color);
--Dash-Fill-Interactive-Strong: var(--bs-primary, #3498db);
--dark-gray: #2c3e50;
--dark-gray-hover: #1a252f;
}

* {
  box-sizing: border-box;
  }

body {
margin: 0px;
background: #f3f5f7;
color: var(--ink);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
-webkit-font-smoothing: antialiased;
}

a {
color: var(--teal-deep);
}

a:focus-visible,
button:focus-visible {
outline: 2px solid var(--uab-green);
outline-offset: 2px;
}


.app-shell {
min-height: 100vh;
}

.narrow-margins {
  padding-left: 2rem !important;
  padding-right: 2rem !important;
}


/* ==========================================================================
Custom Components
========================================================================== */
.section-card {
  background: #fff;
  border: 1px solid #d8dee2;
  border-radius: 6px;
  padding: 1.5rem 1.75rem;
  margin-bottom: 1.5rem;
}

.section-info-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 2px;
    border: none;
    background: transparent;
    color: var(--bs-secondary-color);
    cursor: pointer;
    line-height: 1;
}

.section-info-button i {
    font-size: 1.3rem;
}

.section-header-title {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 1.5rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--bs-body-color);
    margin-bottom: 1rem;
}

.tooltip-inner {
    width: 350px;
    max-width: calc(100vw - 30px);
    text-align: center;
    white-space: normal;
}

.section-info-button:focus-visible {
    outline: 3px solid var(--bs-primary);
    outline-offset: 3px;
    border-radius: 4px;
}

.section-info-button:hover {
    color: var(--bs-primary);
}

/* Force dropdown option text to neutral gray, independent of global link
   color or any accent variable, so it stays consistent across themes. */
.Select-option,
.VirtualizedSelectOption,
.Select-menu-outer div[role="option"] {
  color: #495057 !important;
}

.Select-option:hover,
.Select-option.is-focused {
  color: #212529 !important;
  background-color: #f1f3f5 !important;
}


.btn-dark-gray {
  background-color: var(--dark-gray);
  border-color: var(--dark-gray);
  color: #fff;
}

.btn-dark-gray:hover {
  background-color: var(--dark-gray-hover);
  border-color: var(--dark-gray-hover);
  color: #fff;
}


/* ==========================================================================
Accessibility
========================================================================== */

/* Visually hidden but still readable by assistive technology. */
.visually-hidden {
clip: rect(0 0 0 0);
clip-path: inset(50%);
height: 1px;
overflow: hidden;
position: absolute;
user-select: none;
white-space: nowrap;
width: 1px;
}

/* Skip navigation link — visually hidden until focused (WCAG 2.4.1). */
.skip-nav {
position: absolute;
left: -9999px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}

.skip-nav:focus {
position: static;
width: auto;
height: auto;
overflow: visible;
padding: 0.5rem 1rem;
}

/* ==========================================================================
TPM data table
========================================================================== */

/* Accessible data table */
#tpm-data-table {
border-collapse: collapse;
width: 100%;
}

#tpm-data-table caption {
caption-side: top;
text-align: left;
padding-bottom: 8px;
font-style: italic;
color: #333;
}

#tpm-data-table th,
#tpm-data-table td {
border: 1px solid #ccc;
padding: 6px 12px;
text-align: left;
}

#tpm-data-table th {
background-color: #f0f0f0;
font-weight: bold;
}

#tpm-data-table tbody tr:nth-child(even) {
background-color: #f8f8f8;
}

#tpm-data-table tbody tr:focus-within {
outline: 2px solid #0057b8;
outline-offset: -1px;
}

/* ==========================================================================
Dataset table scrollbar
========================================================================== */

/* Force scrollbar to always render on macOS
(overrides system "show when scrolling" preference). */
#dataset-table-wrapper::-webkit-scrollbar {
-webkit-appearance: none;
width: 8px;
}

#dataset-table-wrapper::-webkit-scrollbar-track {
background: #f0f0f0;
border-radius: 4px;
}

#dataset-table-wrapper::-webkit-scrollbar-thumb {
background: #aaa;
border-radius: 4px;
}

#dataset-table-wrapper::-webkit-scrollbar-thumb:hover {
background: #888;
}

/* ==========================================================================
Dataset selection table
========================================================================== */

#dataset-table {
border-collapse: collapse;
width: 100%;
}

#dataset-table th,
#dataset-table td {
border: 1px solid #ccc;
padding: 6px 10px;
text-align: left;
}

#dataset-table th {
background-color: #f0f0f0;
font-weight: bold;
position: sticky;
top: 0;
white-space: nowrap;
z-index: 1;
}

#dataset-table tbody tr:nth-child(even) {
background-color: #f8f8f8;
}

#dataset-table tbody tr.dataset-row-selected {
background-color: #cce5ff;
}

#dataset-table tbody tr:hover {
background-color: #f0f4ff;
}

/* Radio-button appearance for row select buttons */
#dataset-table td:first-child {
text-align: center;
padding: 4px;
width: 34px;
}

#dataset-table td:first-child button {
width: 18px;
height: 18px;
border-radius: 50%;
border: 2px solid #555;
background: white;
cursor: pointer;
padding: 0;
position: relative;
display: inline-block;
vertical-align: middle;
}

#dataset-table td:first-child button:focus-visible {
outline: 2px solid #0057b8;
outline-offset: 2px;
}

#dataset-table td:first-child button[aria-pressed="true"]::before {
content: "";
display: block;
width: 10px;
height: 10px;
border-radius: 50%;
background: #0057b8;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}


/* ==========================================================================
Final Graphic/Table
========================================================================== */
#plot-container {
  max-width: 1500px;  
  margin: 0 auto;
  aspect-ratio: 16 / 9;    
}

#plot-container .js-plotly-plot,
#plot-container .plotly,
#plot-container .main-svg {
  width: 100% !important;
  height: 100% !important;
}

/* ==========================================================================
Global brand bar
========================================================================== */

/* ---- Global brand bar (sits above nav on every page) ---- */

.site-title-bar {
padding: 20px 24px 12px;
display: flex;
align-items: baseline;
gap: 14px;
flex-wrap: wrap;
}

.brand-wordmark {
font-family: 'Space Grotesk', sans-serif;
font-weight: 700;
font-size: 1.25rem;
color: var(--teal-deep);
}

.brand-tagline {
font-size: 0.72rem;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--meta);
}

/* ==========================================================================
Navbar
========================================================================== */

.site-nav {
padding: 14px 24px;
border-bottom: 1px solid var(--line);
background: var(--bs-body-bg);
display: flex;
gap: 20px;
}

.site-nav .nav-link {
font-family:  -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-weight: 600;
font-size: 0.9rem;
letter-spacing: 0.02em;
color: var(--ink);
text-decoration: none;
padding: 4px 2px;
border-bottom: 2px solid transparent;
}

.site-nav .nav-link:hover {
color: var(--teal-deep);
border-bottom-color: var(--teal-deep);
}

/* ==========================================================================
Home page
========================================================================== */

.home-page {
  width: 100%;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box;
}

.section-card-full-width {
  width: 100%;
  box-sizing: border-box;
  background: #fff;
  border: 1px solid #d8dee2;
  padding: 1.5rem 1.75rem;
  margin-top: 1.5rem;
  margin-bottom: 1.5rem;
}

.hero-section {
  margin-top: 0;

  background: linear-gradient(
    to bottom,
    #E7F4F2 0%,
    #E7F4F2 50%,
    rgba(231, 244, 242, 0.75) 70%,
    rgba(231, 244, 242, 0) 100%
  );

  border: none;
}


/* ---- Hero ---- */

.hero {
position: relative;
padding: 64px 16px 48px;
text-align: center;
overflow: hidden;
}

.hero-motif {
  position: absolute;
  inset: 0;

  background-image: radial-gradient(
    var(--teal-deep) 1.5px,
    transparent 1.5px
  );

  background-size: 18px 18px;
  opacity: 0.10;

  mask-image: radial-gradient(
    ellipse 100% 90% at 50% 40%,
    black 0%,
    black 75%,
    transparent 100%
  );

  -webkit-mask-image: radial-gradient(
    ellipse 100% 90% at 50% 40%,
    black 0%,
    black 75%,
    transparent 100%
  );

  pointer-events: none;
}

.hero-title {
  font-size: 6rem;
  font-weight: 600;
  margin: 0 0 0.75rem;
  text-align: center;
}

.hero-tagline {
position: relative;
font-size: 1.25rem;
color: var(--meta);
margin: 0;
}

.search-input-wrapper {
  position: relative;
  width: 100%;
}

.search-icon {
  position: absolute;
  left: 13px;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  z-index: 2;
}

.gene-search-input {
  width: 100%;
  height: 40px;
  box-sizing: border-box;
  padding: 0 12px 0 40px;
  font-size: 18px;
}

/* ---- About ---- */



.about-section {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 24px 3rem 15px;
  text-align: center;
}

.about-section h2 {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
text-transform: uppercase;
letter-spacing: 0.04em;
color: #54434f;
font-size: 1.4rem;
margin-bottom: 12px;
}

.about-text {
color: var(--ink);
line-height: 1.65;
font-size: 0.98rem;
}

.about-card {
  width: 90%;
  max-width: 1400px;
  margin: 6rem auto;
  box-sizing: border-box;

  background: #fff;
  border: 1px solid #d8dee2;
  border-radius: 6px;
  padding: 1rem 1.5rem;
}

/* ---- Single contact/version panel ---- */

.info-panel {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;

  background: #e2edea;
  padding: 28px 28px;
}

.info-col p {
color: #000000;
margin: 3px 0;
font-size: 0.92rem;
}

.contact-name {
font-weight: 600;
color:#070707;
}

.meta-col {
text-align: right;
}

.meta-line {
color: var(--meta);
}

.mono {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
color:#000000;
}

/* ---- Partners & funding ---- */

.funding-section {
  width: 100%;
  box-sizing: border-box;

  margin-top: 0;
  margin-bottom: 0;

  padding: 1.5rem 3rem 2.5rem;

  background: linear-gradient(
    to bottom,
    #f3f5f7 0%,
    #ffffff 35%,
    #ffffff 100%
  );

  border: none;

  text-align: center;
}


.funding-section H2 {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-size: 1.25rem;
text-transform: uppercase;
letter-spacing: 0.04em;
color: #54434f;
margin-bottom: 24px;
}

.funding-logos {
display: flex;
justify-content: center;
align-items: center;
gap: 40px;
flex-wrap: wrap;
}

.funding-logos .logo {
height: 52px;
width: auto;
object-fit: contain;
}

/* The Lasseigne Lab file has significant built-in whitespace/caption padding
around the mark itself, so it needs a taller box to read at a comparable
visual weight to the other logos. Adjust this value to taste once the
final logo file is in place. */
.funding-logos .logo-lab {
height: 84px;
}

/* ==========================================================================
Responsive
========================================================================== */

@media (max-width: 640px) {
.info-panel {
flex-direction: column;
align-items: flex-start;
}

.about-card {
  width: 90%;
}

.meta-col {
text-align: left;
}

.tooltip-inner {
    width: 220px;
    max-width: calc(100vw - 30px);
  }
}

