/* CASPER — shared styling.
   Professional-college palette: deep navy + warm gold on a soft paper
   background. Mobile-first: most users open this on a phone, so base
   styles target a narrow viewport and a min-width query widens things
   for desktop, not the other way around. */

:root {
  --bg:         #F4F5F8;
  --surface:    #FFFFFF;
  --ink:        #16233F;
  --ink-soft:   #4A5268;
  --ink-faint:  #838B9E;
  --line:       #E1E4EB;
  --navy:       #16233F;
  --navy-soft:  #2C3B57;
  --gold:       #B8860B;
  --gold-soft:  #8C6A08;
  --danger:     #B3261E;
  --danger-bg:  #FBEAE9;
  --success-bg: #E7F1EC;
  --success-ink:#1F4B3F;
  --radius:     12px;
  --radius-sm:  8px;
  --shadow:     0 1px 3px rgba(22, 35, 63, 0.06), 0 8px 24px rgba(22, 35, 63, 0.05);
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  font-size: 16px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--gold-soft); }

/* ================= Auth page ================= */
.auth-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  background: linear-gradient(180deg, var(--navy) 0%, var(--navy) 220px, var(--bg) 220px);
}

.auth-card {
  width: 100%;
  max-width: 380px;
  background: var(--surface);
  border-radius: var(--radius);
  padding: 2.25rem 1.85rem;
  box-shadow: var(--shadow);
}

.brand-mark {
  font-weight: 800;
  font-size: 1.6rem;
  letter-spacing: 0.01em;
  color: var(--navy);
}

.brand-mark.small { font-size: 1.15rem; color: #fff; }

.brand-tag {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--ink-faint);
  margin: 0.15rem 0 1.75rem;
  font-weight: 600;
}

.auth-form {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
}

.auth-form label {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--ink-soft);
}

.auth-form input {
  font-size: 1rem;
  padding: 0.8rem 0.9rem;
  border: 1.5px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
  color: var(--ink);
}

.auth-form input:focus, input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--gold);
  box-shadow: 0 0 0 3px rgba(184, 134, 11, 0.15);
}

.auth-form button {
  margin-top: 0.35rem;
}

.error {
  background: var(--danger-bg);
  color: var(--danger);
  border-radius: var(--radius-sm);
  padding: 0.7rem 0.9rem;
  font-size: 0.85rem;
  margin: 0 0 1.1rem;
  font-weight: 500;
}

.hint {
  margin-top: 1.5rem;
  font-size: 0.75rem;
  color: var(--ink-faint);
  text-align: center;
}

/* ================= App shell / topbar ================= */
.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.9rem 1.1rem;
  background: var(--navy);
  position: sticky;
  top: 0;
  z-index: 10;
  box-shadow: 0 2px 8px rgba(22, 35, 63, 0.15);
}

.brand {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-width: 0;
  flex: 1 1 auto;
  overflow: hidden;
}

.brand-badge {
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  background-color: #fff;
  background-image: url("data:image/png;base64,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");
  background-size: 30px 30px;
  background-position: center;
  background-repeat: no-repeat;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
}

.brand-text {
  display: flex;
  flex-direction: column;
  gap: 0.05rem;
  min-width: 0;
}

.brand-text .brand-mark.small {
  line-height: 1.1;
}

.brand-tagline {
  font-size: 0.56rem;
  color: #9FB0CC;
  line-height: 1.25;
  letter-spacing: 0.01em;
  white-space: normal;
  display: block;
}

.who {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  font-size: 0.85rem;
  flex-shrink: 0;
}

.who .name {
  color: #fff;
  font-weight: 600;
  display: none;
}

.role-pill {
  background: var(--gold);
  color: var(--navy);
  font-size: 0.66rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 0.22rem 0.55rem;
  border-radius: 999px;
}

.role-pill-faculty { background: #7FB0C9; color: var(--navy); }
.role-pill-student { background: var(--gold); color: var(--navy); }

.logout {
  color: rgba(255, 255, 255, 0.75);
  text-decoration: none;
  font-size: 0.8rem;
  font-weight: 500;
}

/* ================= Page containers ================= */
.today-shell,
.roster-shell {
  padding: 1.5rem 1.1rem 3.5rem;
  max-width: 720px;
  margin: 0 auto;
}

.today-shell h1,
.roster-shell h1 {
  font-size: 1.4rem;
  font-weight: 800;
  margin: 0 0 0.3rem;
  color: var(--navy);
}

.back-link {
  display: inline-flex;
  align-items: center;
  color: var(--ink-faint);
  text-decoration: none;
  font-size: 0.85rem;
  font-weight: 600;
  margin-bottom: 0.9rem;
}

.page-head-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 1rem;
}

.page-head-row h1,
.page-head-row h2 { margin: 0; }

/* An open .course-edit-toggle inside a page-head-row (e.g. "Update
   roster"/"Update schedule") needs to drop to its own full-width row
   rather than squeezing into the row next to the heading. */
.page-head-row .course-edit-toggle[open] {
  flex: 1 0 100%;
}

.field-hint {
  margin: -0.6rem 0 0;
  font-size: 0.78rem;
  color: var(--ink-faint);
}

.small-note {
  margin-top: 0.5rem;
  text-align: center;
}

.subtle {
  color: var(--ink-faint);
  font-size: 0.85rem;
  margin: 0 0 1.25rem;
}

.empty-state {
  background: var(--surface);
  border: 1.5px dashed var(--line);
  border-radius: var(--radius);
  padding: 2rem 1.4rem;
  text-align: center;
  color: var(--ink-soft);
  font-size: 0.92rem;
}

.btn-link {
  display: inline-block;
  margin-top: 0.85rem;
  color: var(--gold-soft);
  font-weight: 700;
  text-decoration: none;
  font-size: 0.9rem;
}

/* ================= Cards ================= */
.card {
  background: var(--surface);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1.35rem;
  margin-bottom: 1.25rem;
}

.card h2 {
  font-size: 1rem;
  font-weight: 800;
  margin: 0 0 1rem;
  color: var(--navy);
}

/* ================= Buttons ================= */
button,
.stacked-form button,
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  margin-top: 0.25rem;
  padding: 0.75rem 1.1rem;
  border: none;
  border-radius: var(--radius-sm);
  background: var(--gold);
  color: var(--navy);
  font-size: 0.95rem;
  font-weight: 700;
  cursor: pointer;
  text-decoration: none;
  min-height: 44px; /* comfortable mobile tap target */
  font-family: inherit;
}

button:active, .btn:active { opacity: 0.85; }

.btn-secondary {
  background: var(--bg);
  color: var(--ink);
  border: 1.5px solid var(--line);
}

.btn-danger {
  background: var(--danger-bg);
  color: var(--danger);
}

.btn-sm {
  padding: 0.45rem 0.75rem;
  font-size: 0.82rem;
  min-height: 36px;
  margin-top: 0;
}

.link-button {
  background: none;
  border: none;
  padding: 0;
  min-height: 0;
  color: var(--gold-soft);
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: underline;
}

.link-button.danger {
  color: var(--danger);
}

/* ================= Forms ================= */
.stacked-form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.stacked-form label {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--ink-soft);
}

.stacked-form input,
.stacked-form select {
  font-size: 1rem;
  padding: 0.75rem 0.85rem;
  border: 1.5px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
  color: var(--ink);
  font-family: inherit;
  min-height: 44px;
}

.stacked-form input[type="file"] {
  font-size: 0.88rem;
  padding: 0.6rem;
  border: 1.5px dashed var(--line);
  background: var(--bg);
  min-height: 0;
}

.weekday-picker {
  border: 1.5px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 0.85rem 0.9rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
}

.weekday-picker legend {
  padding: 0 0.4rem;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ink-soft);
}

.checkbox-label {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.88rem;
  color: var(--ink-soft);
}

.checkbox-label input { width: 18px; height: 18px; }

.inline-add-form {
  margin-top: 1.35rem;
  padding-top: 1.35rem;
  border-top: 1px solid var(--line);
}

.inline-form { display: inline; }

/* ================= Banners ================= */
.banner {
  border-radius: var(--radius-sm);
  padding: 0.85rem 1rem;
  font-size: 0.88rem;
  margin: 0 0 1.25rem;
}

.banner p { margin: 0 0 0.4rem; }
.banner p:last-child { margin-bottom: 0; }
.banner ul { margin: 0.3rem 0 0.5rem; padding-left: 1.2rem; }

.banner-error { background: var(--danger-bg); color: var(--danger); }
.banner-success { background: var(--success-bg); color: var(--success-ink); }

.banner-success code {
  background: rgba(31, 75, 63, 0.12);
  padding: 0.1rem 0.4rem;
  border-radius: 4px;
  font-size: 0.95em;
}

/* ================= Responsive data tables =================
   Mobile-first: below 640px, each row becomes a stacked label:value
   card (no horizontal scrolling of a cramped table on a phone). At
   640px+, it renders as a normal table. Requires each <td> to carry a
   data-label attribute matching its column header. */

.roster-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.88rem;
}

.roster-table thead { display: none; }

.roster-table tr {
  display: block;
  background: var(--bg);
  border-radius: var(--radius-sm);
  padding: 0.75rem 0.9rem;
  margin-bottom: 0.6rem;
}

.roster-table td {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.75rem;
  padding: 0.3rem 0;
  text-align: right;
  border: none;
}

.roster-table td::before {
  content: attr(data-label);
  color: var(--ink-faint);
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  text-align: left;
}

.roster-table td[data-label=""]::before,
.roster-table td:not([data-label])::before { content: none; }

@media (min-width: 640px) {
  .roster-table thead { display: table-header-group; }

  .roster-table tr {
    display: table-row;
    background: none;
    border-radius: 0;
    padding: 0;
    margin: 0;
  }

  .roster-table td {
    display: table-cell;
    text-align: left;
    padding: 0.7rem 0.6rem;
    border-bottom: 1px solid var(--line);
  }

  .roster-table td::before { content: none; }

  .roster-table th {
    text-align: left;
    padding: 0.6rem;
    color: var(--ink-faint);
    font-weight: 700;
    font-size: 0.76rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-bottom: 2px solid var(--line);
  }
}

.table-scroll { overflow-x: auto; }

/* ================= Course list ================= */
.course-list {
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
}

.course-card {
  background: var(--bg);
  border-radius: var(--radius-sm);
  border-left: 4px solid var(--gold);
  padding: 0.9rem 1rem;
}

.course-card-link {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  text-decoration: none;
  color: var(--ink);
}

.course-card-link strong {
  color: var(--navy);
  font-size: 1.02rem;
}

.provenance-line {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: 0.35rem;
  font-size: 0.76rem;
  color: var(--ink-faint);
}

.provenance-line svg {
  flex-shrink: 0;
  color: var(--gold-soft);
}

.course-card-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 1rem;
  margin-top: 0.65rem;
  padding-top: 0.65rem;
  border-top: 1px solid var(--line);
}

.course-edit-toggle summary {
  cursor: pointer;
  color: var(--gold-soft);
  font-size: 0.85rem;
  font-weight: 600;
  text-decoration: underline;
  list-style: none;
}

/* A summary that also carries .btn (e.g. "Update roster" / "Update
   schedule" toggles) should look like a real pill button, not the plain
   underlined-text toggle above — this needs to out-specificity the rule
   above since both target the same element. */
.course-edit-toggle summary.btn {
  color: var(--ink);
  text-decoration: none;
  list-style: none;
}

.course-edit-toggle summary.btn::-webkit-details-marker,
.course-edit-toggle summary.btn::marker {
  display: none;
  content: "";
}

.course-edit-toggle summary::-webkit-details-marker,
.course-edit-toggle summary::marker {
  display: none;
  content: "";
}

/* When opened, take the full row so the rename form below it isn't
   squeezed into a narrow flex column next to the Delete button. */
.course-edit-toggle[open] {
  flex: 1 0 100%;
}

.rename-form {
  margin-top: 0.65rem;
  padding-top: 0.65rem;
  border-top: 1px solid var(--line);
  display: flex;
  gap: 0.5rem;
}

.rename-form input {
  flex: 1;
  font-size: 0.9rem;
  padding: 0.55rem 0.7rem;
  border: 1.5px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
}

/* ================= Session plan (course.php) ================= */
.session-list {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  margin-bottom: 1.35rem;
}

.session-card {
  background: var(--bg);
  border-radius: var(--radius-sm);
  border-left: 4px solid var(--navy-soft);
  padding: 0.9rem 1rem;
}

.session-card-main {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}

.session-seq {
  flex-shrink: 0;
  width: 1.9rem;
  height: 1.9rem;
  border-radius: 999px;
  background: var(--navy);
  color: #fff;
  font-size: 0.78rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}

.session-card-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.session-card-body strong {
  font-size: 0.95rem;
  line-height: 1.35;
}

.session-details {
  margin-top: 0.65rem;
}

.session-details summary {
  cursor: pointer;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--gold-soft);
}

.session-details dl {
  margin: 0.65rem 0 0;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.35rem 0.9rem;
  font-size: 0.85rem;
}

.session-details dt {
  color: var(--ink-faint);
  font-weight: 600;
  white-space: nowrap;
}

.session-details dd {
  margin: 0;
  white-space: pre-line;
}

/* Student "today" session cards — same visual language, own class so
   the student view (no edit/remove controls) stays simple. */
.today-session-card {
  background: var(--surface);
  border-radius: var(--radius-sm);
  border-left: 4px solid var(--gold);
  padding: 1rem 1.1rem;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  box-shadow: var(--shadow);
}

.today-session-card strong { font-size: 1.05rem; }

.row-actions {
  display: flex;
  gap: 0.9rem;
  white-space: nowrap;
  flex-shrink: 0;
}

/* ================= Manage-course (rename/delete) ================= */
.manage-course {
  margin-bottom: 1.25rem;
}

.manage-course summary {
  cursor: pointer;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--ink-soft);
  padding: 0.5rem 0;
}

.manage-course-body {
  background: var(--surface);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow);
  padding: 1rem;
  margin-top: 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.manage-course-body form {
  display: flex;
  gap: 0.5rem;
}

.manage-course-body input[type="text"] {
  flex: 1;
  font-size: 0.9rem;
  padding: 0.6rem 0.75rem;
  border: 1.5px solid var(--line);
  border-radius: var(--radius-sm);
}

.danger-zone {
  border-top: 1px dashed var(--line);
  padding-top: 1rem;
}

.danger-zone p {
  font-size: 0.8rem;
  color: var(--ink-faint);
  margin: 0 0 0.6rem;
}
