/* -------------------- Root Variables -------------------- */
:root {
  --bg: #fafafa;
  --fg: #222;
  --muted: #444;
  --line: #e5e5e5;
  --soft: #f5f5f5;
  --panel: #fff;
  --brand: #2c6e49;
  --brand-strong: #1e4a32;
  --row-hover: #f9fdfb;
  --radius: 6px;
  --shadow: 0 1px 3px rgba(0,0,0,0.05);
}

/* --------------------  Self-hosted Open Sans -------------------- */
@font-face {
  font-family: 'Open Sans';
  src: url('fonts/OpenSans-Regular.woff2') format('woff2'),
       url('fonts/OpenSans-Regular.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Open Sans';
  src: url('fonts/OpenSans-Semibold.woff2') format('woff2'),
       url('fonts/OpenSans-Semibold.woff') format('woff');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Open Sans';
  src: url('fonts/OpenSans-Bold.woff2') format('woff2'),
       url('fonts/OpenSans-Bold.woff') format('woff');
  font-weight: 700; /* bold */
  font-style: normal;
  font-display: swap;
}

/* -------------------- Global -------------------- */
* { box-sizing: border-box; }

body, input, select, button, table {
/*  font-family: 'Open Sans', system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Arial, sans-serif; */
font-family: 'Open Sans';
}

body {
  margin: 0; color: var(--fg); background: var(--bg); line-height: 1.6;
}

html, body { min-height: 100%; height: auto; }

a {
  color: var(--brand);
  text-decoration: none;
  transition: color 0.2s;
}
a:hover { color: #14503b; text-decoration: underline; }

.brand a {
  color: inherit;
  font: inherit;
  font-weight: inherit;
  text-decoration: none;
}

.brand a:hover,
.brand a:focus {
  color: inherit;
  text-decoration: none;
}

/* -------------------- Header / Navigation -------------------- */
header {
  position: sticky; top:0; z-index:1000;
  border-bottom: 1px solid var(--line);
  width: 100%;
  background: linear-gradient(90deg, rgba(42,123,155,1) 0%, rgba(87,199,133,1) 50%, rgba(237,221,83,1) 100%);
}

nav {
  display:flex; justify-content: space-between; align-items:center;
  max-width: 1100px; margin:0 auto; padding:1.4rem; flex-wrap: nowrap;
}

.brand { font-size: 1.5rem; font-weight:700; color:white; }

.nav-links a {
  color:#333; text-decoration:none; margin-left:1rem; font-weight:300;
  transition: color .2s ease;
}
.nav-links a:hover { color: var(--brand); }

/* -------------------- Sections / Hero -------------------- */
main section { max-width: 1100px; margin:auto; padding:3rem 1rem; }
h1,h2 { color: var(--brand); font-weight:600; margin:0 0 .75rem; }
h3 { color: rgba(42, 123, 155, 1); font-weight:600; margin:0 0 .75rem; } /* color: var(--brand); */

.hero {
  text-align:center; padding:5rem 1rem;
  background: linear-gradient(135deg, #e6f4f1, #f4faf9);
  border-bottom:1px solid var(--line);
}
.hero p { color: var(--muted); font-size:1.1rem; }

.button {
  display:inline-block; background:var(--brand); color:#fff;
  padding:.7rem 1.4rem; margin-top:1.2rem; border-radius:var(--radius);
  text-decoration:none; font-weight:600;
  transition: background .2s ease, transform .02s ease;
}
.button:hover { background:#14503b; color:white; }
.button:active { transform: translateY(1px); }

/* -------------------- Lists -------------------- */
.conf-list { list-style:none; padding:0; margin:0; }
.conf-list li { padding:.6rem 0; border-bottom:1px solid #eee; }

/* -------------------- Filters & Table -------------------- */
.filter-container {
  display:flex; gap:0.5rem; flex-wrap: nowrap; align-items: center; margin-bottom: 1.5rem;
}
.filter-container > * { box-sizing: border-box; }

#searchInput { flex: 0 0 68%; min-width:150px; }
#yearFilter { flex: 0 0 20%; min-width:80px; }
#rowsPerPage { flex: 0 0 10%; min-width:50px; }

.filter-container input, .filter-container select {
  height:2.5rem; padding:0 0.5rem; font-size:1rem; line-height:1.2;
  border-radius: var(--radius); border:1px solid #ccc; background:#fff;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.filter-container input:focus, .filter-container select:focus {
  outline: none; border-color: var(--brand); box-shadow: 0 0 0 2px rgba(42,127,98,0.2);
}

.table-wrap { overflow:visible; }
table {
  width:100%; border-collapse: collapse; font-size:.95rem;
  background: var(--panel); border-radius: var(--radius);
  overflow:hidden; box-shadow: var(--shadow);
}
th, td { border-bottom:1px solid #eee; padding:.75rem; text-align:left; }
th { background: var(--soft); font-weight:600; }
tr:hover td { background: var(--row-hover); }

.empty-state {
  text-align:center; color:#666; margin:1rem 0 0;
}

/* -------------------- Ethics Card -------------------- */
.ethics-card {
  background: linear-gradient(135deg, #e6f4f1, #f4faf9);
  padding:1.5rem 2rem; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.08);
  margin-top:1rem; transition: transform 0.2s, box-shadow 0.2s;
}
.ethics-card p { margin-bottom:1rem; color:#333; font-size:1rem; line-height:1.5; }
.ethics-card:hover { transform:translateY(-3px); box-shadow:0 8px 20px rgba(0,0,0,0.12); }

.ethics-link {
  display:inline-block; font-weight:600; padding:.5rem 1rem;
  border-radius:6px; background: var(--brand); color:#fff;
  text-decoration:none; transition:background-color 0.2s;
}
.ethics-link:hover { background:#1e5d45; color:white; }

/* -------------------- Steering Committee -------------------- */
.committee-grid {
  display:grid; grid-template-columns: repeat(auto-fit,minmax(200px,1fr)); gap:1.5rem; margin-top:1rem;
}
.committee-card {
  background:#fff; padding:1rem 1.2rem; border-radius:10px;
  box-shadow:0 2px 6px rgba(0,0,0,0.08);
  transition: transform 0.2s, box-shadow 0.2s;
}
.committee-card:hover { transform: translateY(-3px); box-shadow:0 6px 12px rgba(0,0,0,0.12); }
.committee-card h3 { margin-bottom:.3rem; color:var(--brand); font-size:1.1rem; }
.committee-card p { font-size:.95rem; color:#555; }
.chair { font-weight:600; font-size:.9rem; color: var(--brand-strong); }

/* -------------------- Responsive Table -> Cards -------------------- */
@media (max-width:768px){
  table, thead, tbody, th, td, tr { display:block; }
  thead { display:none; }
  tr { margin-bottom:1rem; background:#fff; padding:.75rem; border-radius:var(--radius); box-shadow:var(--shadow); }
  td { border:none; padding:.4rem 0; }
  td::before { font-weight:600; display:block; color:var(--brand); }
  td:nth-of-type(1)::before{ content:"Title"; }
  td:nth-of-type(2)::before{ content:"Authors"; }
  td:nth-of-type(3)::before{ content:"Year"; }
  td:nth-of-type(4)::before{ content:"Link"; }
}

/* -------------------- Misc / Footer / Scroll -------------------- */
#about,#upcoming,#proceedings,#ethics,#publications,#contact { scroll-margin-top:50px; }

footer {
  background: var(--soft); text-align:center; padding:1.8rem;
  font-size:.9rem; color:#555; border-top:1px solid var(--line); margin-top:3rem;
}

/* -------------------- Pagination -------------------- */
.pagination {
  display:flex; justify-content:center; align-items:center; gap:1rem; margin-top:2rem;
}
.pagination button {
  background-color: var(--brand); color:#fff; border:none; padding:.4rem .8rem;
  border-radius:6px; font-size:.9rem; cursor:pointer; transition: background-color .2s;
}
.pagination button:hover { background-color: var(--brand-strong); }
.pagination span { font-size:.9rem; color:#333; }
.pagination .page-btn {
  background:transparent; color:#333; border:1px solid transparent; padding:.25rem .5rem; border-radius:6px; cursor:pointer;
}
.pagination .page-btn.active { background-color: var(--brand-strong); color:#fff; border-color: rgba(0,0,0,0.06); }
.pagination .ellipsis { padding:.3rem .5rem; color:#666; }

/* -------------------- Accessibility -------------------- */
.visually-hidden {
  position:absolute !important; height:1px; width:1px; overflow:hidden;
  clip:rect(1px,1px,1px,1px); white-space:nowrap;
}

/* -------------------- Sortable Table Headers -------------------- */
th.sortable { cursor:pointer; user-select:none; white-space:nowrap; }
th .sort-indicator { display:inline-block; width:1.1em; text-align:center; margin-left:.35rem; color:var(--brand); }

/* -------------------- Announcement Bar -------------------- */
.upcoming-banner {
  background: #000;
  color: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1rem;
  padding: 0.7rem 1rem;
  font-size: 0.95rem;
  font-weight: 500;
}
.upcoming-banner .cta {
  background: #fff;
  color: #000;
  padding: 0.2rem 0.8rem;
  border-radius: 0.4rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.2s, color 0.2s;
  font-size:0.8rem;
}
.upcoming-banner .cta:hover {
  background: rgb(80, 182, 223); /* #0073e6 */
  color: #fff;
}
/* Mobile Ansicht: Button unter Text, linksbündig */
@media (max-width: 600px) {
  .upcoming-banner {
    flex-direction: column;
    /* align-items: flex-start; /* linksbündig */
    gap: 0.4rem;
  }
  .upcoming-banner .cta {
    order: 2; /* Button nach unten */
  }
}
