:root { --bg:#0b1020; --fg:#f5f7ff; --accent:#6ee7b7; --muted:#a5acc1; }
* { box-sizing:border-box; }
body { margin:0; font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu; background:var(--bg); color:var(--fg); }
.hero { min-height:auto; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:2rem; gap:1rem; }
h1 { font-size:clamp(2rem,6vw,3.5rem); margin:0; }
p { color:var(--muted); max-width:60ch; }
.signup { display:flex; flex-direction:column; gap:0; max-width:520px; margin:0 auto; }
.signup input, .signup textarea { padding:.9rem 1rem; border-radius:.6rem; border:1px solid #26304f; background:#0f1530; color:var(--fg); min-width:260px; font-family: inherit; font-size: 1rem; }
.signup button { padding:.9rem 1.0rem; border-radius:.6rem; border:0; background:var(--accent); color:#0a0f1f; font-weight:600; cursor:pointer; }
.signup button:hover { filter:brightness(1.05); }
.small { font-size:.9rem; }
.flash { margin:.25rem 0 0; }
.flash.success { color:#b7f9d0; }
.flash.error { color:#ffb4b4; }
.info { padding:2rem 1rem 3rem; display:grid; gap:1rem; max-width:900px; margin:0 auto; }
ul { padding-left:1.2rem; }
footer { border-top:1px solid #1b2340; padding:2rem 1rem; text-align:center; color:var(--muted); }

/* --- Navigation Bar --- */
.site-nav {
  background: var(--bg);
  border-bottom: 1px solid #1b2340;
  position: sticky;
  top: 0;
  z-index: 1000;
  width: 100%;
  position: relative;
  height: 60px;
}

/* Page title in nav */
.nav-title {
    color: var(--fg);
    font-weight: 600;
    font-size: 1.1rem;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
}

/* Hamburger Menu (now always visible) */
.hamburger-menu {
    display: block;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0.5rem;
    position: absolute;
    left: 1.5rem;
    top: 50%;
    transform: translateY(-50%);
    z-index: 1001;
}

.hamburger-menu span {
    display: block;
    width: 25px;
    height: 3px;
    background-color: var(--fg);
    margin: 5px 0;
    transition: all 0.3s ease-in-out;
}

/* Animate hamburger to an 'X' */
.hamburger-menu.is-active span:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
}
.hamburger-menu.is-active span:nth-child(2) {
    opacity: 0;
}
.hamburger-menu.is-active span:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
}


/* Navigation Links (now always hidden by default) */
.site-nav__list {
    display: none;
    flex-direction: column;
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    background-color: var(--bg);
    border-top: 1px solid #1b2340;
    padding: 1rem 0;
    height: auto;
    list-style: none;
    margin: 0;
}

.site-nav__list.is-active {
    display: flex;
}

.site-nav__item {
    text-align: center;
    margin: 0.5rem 0;
}

.site-nav__link {
  color: var(--fg) !important;
  text-decoration: none !important;
  padding: 0.25rem 0.2rem;
  font-weight: 600;
  letter-spacing: 0.15px;
}

.site-nav__link:hover,
.site-nav__link:focus-visible {
  color: var(--accent) !important;
}

.site-nav__link[aria-current="page"] {
    /* Optional: Style the active link in the dropdown */
    background: rgba(110,231,183,0.10);
    border-radius: 6px;
}


/* --- Page Specific Styles --- */

/* Schedule refinements */
.schedule {
  margin: .25rem auto 0.75rem;
  padding: .75rem 1rem;
  background: #0e142b;
  border: 1px solid #233055;
  border-radius: .6rem;
  max-width: 640px;
  text-align: left;
}
.schedule h2 {
  margin: 0 0 .35rem;
  font-size: 1.1rem;
  line-height: 1.2;
  letter-spacing: .2px;
  text-align: center;
}
.schedule .location {
  margin: 0 auto .35rem;
  color: var(--muted);
  font-size: .95rem;
  text-align: center;
}
.schedule .days {
  margin: .25rem 0 0;
  padding-left: 1.1rem;
  list-style: disc;
  text-align: center;;
}
.schedule .days li { margin: .15rem 0; color: var(--fg); }
.schedule .days strong { color: var(--fg); font-weight: 700; }


/* Partners Page */
.partners { max-width: 1100px; margin: 0 auto; padding: 1.25rem 1rem 2rem; }
.partners h2 { text-align: left; margin: 0 0 1rem; }
.partners__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1rem;
}
.partner-card {
  background: #0f1530;
  border: 1px solid #26304f;
  border-radius: .75rem;
  overflow: clip;
}
.partner-card__link {
  display: block;
  color: var(--fg);
  text-decoration: none;
  padding: .9rem;
  height: 100%;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
  outline: none;
}
.partner-card__link:focus-visible,
.partner-card__link:hover {
  border-color: #2a3659;
  box-shadow: 0 0 0 3px rgba(110,231,183,0.25);
  transform: translateY(-1px);
}
.partner-card__header {
  display: grid;
  grid-template-columns: 88px 1fr;
  gap: .75rem;
  align-items: center;
  margin-bottom: .5rem;
}
.partner-card__avatar {
  width: 88px; height: 88px;
  border-radius: 50%;
  object-fit: cover;
  background: #0b1020;
  border: 1px solid #26304f;
}
.partner-card__title { display: grid; gap: .35rem; }
.partner-card__name { margin: 0; font-size: 1.05rem; line-height: 1.2; }
.partner-card__affil { display: inline-flex; align-items: center; gap: .45rem; color: var(--muted); font-size: .95rem; }
.partner-card__logo {
  width: 22px; height: 22px;
  border-radius: 4px;
  background: #0e142b;
  border: 1px solid #233055;
  padding: 2px;
  object-fit: contain;
}
.partner-card__org { white-space: nowrap; }
.partner-card__desc { margin: .25rem 0 0; color: var(--fg); font-size: .95rem; }


/* Schedule Button */
.button-secondary {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    border-radius: 0.6rem;
    background: #0f1530;
    border: 1px solid #26304f;
    color: var(--fg);
    text-decoration: none;
    font-weight: 600;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}
.button-secondary:hover { background: #1c254c; border-color: #3b4d8c; }
.button-secondary svg { width: 1.2em; height: 1.2em; }


/* Form & Input Styles */
.form-group { margin-bottom: 1rem; text-align: left; }
.signup input[type="text"],
.signup input[type="email"],
.signup input[type="number"],
.signup textarea { width: 100%; }
.signup label { display: block; margin-bottom: 0.4rem; font-weight: 500; color: var(--muted); }
.signup button { margin-top: 1rem; }
.signup textarea { resize: vertical; min-height: 80px; }
#student_fields { padding-left: 1rem; border-left: 2px solid #26304f; margin-top: 1rem; }
#student_fields .form-group:last-child { margin-bottom: 0; }
.gdpr-consent a { color: var(--accent); }
.gdpr-consent a:hover { text-decoration: none; }


/* Custom Checkbox */
.checkbox-container {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    cursor: pointer;
    margin: 0;
    justify-content: flex-start;
}
.checkbox-container input[type="checkbox"] { display: none; }
.checkbox-container label {
    position: relative;
    padding-left: 2rem;
    user-select: none;
    line-height: 20px;
    margin-bottom: 0;
}
.checkbox-container label::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 20px;
    height: 20px;
    border: 2px solid #26304f;
    background: #0f1530;
    border-radius: 5px;
    transition: background-color 0.2s, border-color 0.2s;
}
.checkbox-container label::after {
    content: '';
    position: absolute;
    left: 7px;
    top: 4px;
    transform: rotate(45deg);
    width: 6px;
    height: 12px;
    border: solid var(--accent);
    border-width: 0 3px 3px 0;
    opacity: 0;
    transition: opacity 0.2s;
}
.checkbox-container input[type="checkbox"]:checked + label::after { opacity: 1; }
.checkbox-container input[type="checkbox"]:checked + label::before { background-color: var(--accent); border-color: var(--accent); }

/* New Styles for the Events Page Schedule */

.schedule-container {
    max-width: 800px;
    margin: 1rem auto 3rem; /* Add space above and below */
    padding: 0 1rem;
    color: var(--fg);
}

.schedule-day {
    margin-bottom: 2.5rem; /* This creates the space between Nov 8 and 9 */
}

.schedule-date {
    font-size: 1.5rem;
    color: var(--accent);
    border-bottom: 2px solid #26304f;
    padding-bottom: 0.5rem;
    margin-bottom: 1.5rem;
    text-align: left;
}

.schedule-timeline {
    position: relative;
    padding-left: 2rem;
}

.schedule-timeline::before {
    content: '';
    position: absolute;
    top: 10px;
    left: 10px;
    bottom: 10px;
    width: 2px;
    background-color: #26304f;
}

.schedule-item {
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 1rem;
    margin-bottom: 1rem;
    position: relative;
}

.schedule-item::before {
    content: '';
    position: absolute;
    top: 10px;
    left: -2rem;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background-color: var(--accent);
    border: 3px solid var(--bg);
    margin-left: 1px;
}

.schedule-time {
    font-weight: 600;
    color: var(--muted);
    text-align: right;
    padding-right: 1rem;
}

.schedule-event {
    background-color: #0f1530;
    border: 1px solid #26304f;
    padding: 1rem;
    border-radius: .6rem;
    transition: transform .2s ease, box-shadow .2s ease;
}

.schedule-event:hover {
    transform: translateY(-3px);
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}

.schedule-event h3 {
    margin: 0 0 .5rem 0;
    font-size: 1.1rem;
    color: var(--fg);
}

.sub-event {
    font-size: .95rem;
    color: var(--muted);
    padding-left: 1rem;
    border-left: 2px solid #26304f;
    margin-top: .5rem;
}

/* --- Footer Styles --- */
footer a {
    color: var(--muted);
    text-decoration: none;
    transition: color 0.2s ease;
}

footer a:hover,
footer a:focus-visible {
    color: var(--accent);
    text-decoration: underline;
}