/* ============================================================
   UC Davis School of Law — COWS Calendar
   Modern design system  ·  Blue #002855 / Gold #b3a369
   Drop-in replacement for the legacy cows.css
   ============================================================ */

:root {
  --ucd-blue: #002855;
  --ucd-blue-dark: #001a36;
  --ucd-blue-light: #003a6e;
  --ucd-gold: #b3a369;
  --ucd-gold-light: #d4c48a;
  --ucd-gold-dark: #8a7a45;
  --gray-50: #f8f9fa;
  --gray-100: #f1f3f5;
  --gray-200: #e9ecef;
  --gray-300: #dee2e6;
  --gray-500: #adb5bd;
  --gray-600: #6c757d;
  --gray-700: #495057;
  --gray-800: #343a40;
  --white: #ffffff;
  --shadow: 0 2px 8px rgba(0, 40, 85, 0.08);
  --shadow-md: 0 4px 16px rgba(0, 40, 85, 0.12);
  --radius: 8px;
  --transition: 0.15s ease;
  --font: 'Source Sans 3', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

/* ---------- Base scope ---------- */
#cowsControls,
#cowsViews,
.cowsEventClickDialog,
.ui-dialog.cowsEventClickDialog {
  font-family: var(--font);
  color: var(--gray-800);
  line-height: 1.45;
  box-sizing: border-box;
}

#cowsControls *,
#cowsViews *,
.cowsEventClickDialog * {
  box-sizing: border-box;
}

/* ============================================================
   CONTROLS BAR
   ============================================================ */
#cowsControls.ui-widget-header,
#cowsControls {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1rem;
  flex-wrap: wrap;
  background: var(--white) !important;
  border: none !important;
  border-radius: var(--radius) !important;
  box-shadow: var(--shadow);
  padding: 0.55rem 0.85rem !important;
  margin: 0 0 0.85rem !important;
  position: relative !important;
  min-height: 48px;
  color: var(--gray-800) !important;
  background-image: none !important;
}

/* Kill absolute positioning the legacy JS applies */
#cowsControlsLeft,
#cowsControlsMiddle,
#cowsControlsRight {
  position: static !important;
  left: auto !important;
  top: auto !important;
  display: flex !important;
  align-items: center;
  gap: 0.3rem;
  float: none !important;
  width: auto !important;
}

#cowsControlsMiddle {
  flex: 1 1 auto;
  justify-content: center;
  min-width: 120px;
}

#cowsControlsRight {
  justify-content: flex-end;
  flex-wrap: wrap;
}

/* Shared control buttons */
#cowsControls .ui-button,
#cowsControls a.ui-button,
#cowsControls a.cowsDayButton,
#cowsControls a.cowsWeekButton,
#cowsControls a.cowsMonthButton,
#cowsControls a.cowsAgendaButton,
#cowsControls a.cowsRoomButton,
#cowsControls a.cowsPrev,
#cowsControls a.cowsToday,
#cowsControls a.cowsNext,
#cowsControls a.cowsAgendaLess,
#cowsControls a.cowsAgendaMore {
  background: var(--gray-100) !important;
  background-image: none !important;
  color: var(--gray-700) !important;
  border: 1px solid transparent !important;
  border-radius: 6px !important;
  padding: 0.4rem 0.75rem !important;
  margin: 0 !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  font-family: inherit !important;
  line-height: 1.25 !important;
  min-width: 32px;
  height: auto !important;
  text-align: center;
  text-decoration: none !important;
  box-shadow: none !important;
  cursor: pointer;
  transition: background var(--transition), color var(--transition), border-color var(--transition), box-shadow var(--transition);
}

#cowsControls .ui-button .ui-button-text {
  padding: 0 !important;
  line-height: 1.25 !important;
  display: inline !important;
}

#cowsControls .ui-button:hover,
#cowsControls a.ui-button:hover {
  background: var(--gray-200) !important;
  color: var(--ucd-blue) !important;
  border-color: transparent !important;
}

#cowsControls .ui-button:focus-visible,
#cowsControls a.ui-button:focus-visible {
  outline: 2px solid var(--ucd-gold) !important;
  outline-offset: 2px;
}

/* Active view */
#cowsControls .ui-button.ui-state-highlight,
#cowsControls a.ui-state-highlight,
#cowsControls .ui-state-highlight {
  background: var(--ucd-blue) !important;
  color: #fff !important;
  border-color: var(--ucd-blue) !important;
  box-shadow: 0 1px 3px rgba(0, 40, 85, 0.25) !important;
}

#cowsControls .ui-button.ui-state-highlight:hover,
#cowsControls a.ui-state-highlight:hover {
  background: var(--ucd-blue-light) !important;
  color: #fff !important;
}

/* View switcher as segmented control */
#cowsControlsLeft {
  background: var(--gray-100);
  border-radius: 8px;
  padding: 3px;
  gap: 2px;
}

#cowsControlsLeft .ui-button,
#cowsControlsLeft a.ui-button {
  background: transparent !important;
  border-radius: 5px !important;
  min-width: 36px;
  padding: 0.4rem 0.7rem !important;
}

#cowsControlsLeft .ui-button:hover,
#cowsControlsLeft a.ui-button:hover {
  background: rgba(255, 255, 255, 0.75) !important;
  color: var(--ucd-blue) !important;
}

#cowsControlsLeft .ui-button.ui-state-highlight,
#cowsControlsLeft a.ui-state-highlight {
  background: var(--white) !important;
  color: var(--ucd-blue) !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;
  border-color: transparent !important;
}

#cowsControlsLeft .ui-button.ui-state-highlight:hover {
  background: var(--white) !important;
  color: var(--ucd-blue) !important;
}

/* Title */
#cowsCalendarTitle {
  font-size: 1.05rem !important;
  font-weight: 700 !important;
  color: var(--ucd-blue) !important;
  letter-spacing: 0.01em;
  white-space: nowrap;
}

/* Prev / Today / Next */
#cowsControlsRight .cowsPrev,
#cowsControlsRight .cowsNext {
  min-width: 34px;
  font-weight: 700 !important;
}

#cowsControlsRight .cowsToday {
  min-width: 52px;
  background: transparent !important;
  border: 1px solid var(--gray-300) !important;
  color: var(--ucd-blue) !important;
}

#cowsControlsRight .cowsToday:hover {
  background: var(--gray-50) !important;
  border-color: var(--ucd-blue) !important;
  color: var(--ucd-blue) !important;
}

#cowsAgendaControls {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-right: 0.35rem;
}

#cowsControls .ui-corner-all { border-radius: 6px; }
#cowsControls .ui-state-default { background-image: none !important; }

/* ============================================================
   VIEWS CONTAINER
   ============================================================ */
#cowsViews {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
  min-height: 320px;
}

#cowsViews > div {
  padding: 0;
}

/* ============================================================
   MONTH / WEEK TABLE
   ============================================================ */
#cowsViews table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  background: var(--white);
  border: none !important;
}

#cowsViews table.ui-widget-content {
  background: var(--white) !important;
  border: none !important;
  color: var(--gray-800) !important;
}

/* Day-of-week header */
#cowsViews tr.cowsDow,
#cowsViews tr.cowsDow.ui-state-default {
  background: var(--ucd-blue) !important;
  background-image: none !important;
  border: none !important;
  color: #fff !important;
}

#cowsViews tr.cowsDow th {
  padding: 0.55rem 0.35rem !important;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-align: center;
  border: none !important;
  color: #fff !important;
  background: transparent !important;
}

/* Day cells */
#cowsViews td.cowsDay,
#cowsViews td.cowsDay.ui-state-default {
  vertical-align: top;
  padding: 0 !important;
  border: 1px solid var(--gray-200) !important;
  background: var(--white) !important;
  background-image: none !important;
  color: var(--gray-800) !important;
  height: 100px;
  transition: background var(--transition);
}

#cowsViews td.cowsDay:hover {
  background: var(--gray-50) !important;
}

#cowsViews td.cowsDay.cowsOtherMonth {
  background: var(--gray-50) !important;
  color: var(--gray-500) !important;
}

#cowsViews td.cowsDay.ui-state-highlight,
#cowsViews td.cowsDay.ui-state-highlight.ui-state-default {
  background: #eef4fb !important;
  box-shadow: inset 0 0 0 2px var(--ucd-blue);
}

/* Day number header inside cell */
#cowsViews .cowsDayHead {
  display: block;
  padding: 0.35rem 0.5rem 0.2rem;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--ucd-blue);
  text-align: right;
}

#cowsViews td.cowsOtherMonth .cowsDayHead {
  color: var(--gray-500);
}

#cowsViews td.ui-state-highlight .cowsDayHead {
  color: var(--ucd-blue);
}

/* Events list inside a day cell */
#cowsViews .cowsEvents {
  padding: 0 0.25rem 0.25rem;
  margin: 0;
  list-style: none;
}

/* Individual event chip */
#cowsViews a.cowsEvent,
#cowsViews a.cowsEvent.ui-widget-content {
  display: block;
  padding: 0.2rem 0.4rem;
  margin: 0 0 2px;
  border-radius: 4px;
  border: none !important;
  background: var(--gray-100) !important;
  background-image: none !important;
  color: var(--gray-800) !important;
  font-size: 0.72rem;
  line-height: 1.3;
  text-decoration: none !important;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  cursor: pointer;
  transition: background var(--transition), transform var(--transition), box-shadow var(--transition);
  width: auto !important; /* override inline width from JS */
  max-width: 100%;
}

#cowsViews a.cowsEvent:hover {
  background: #e3edf7 !important;
  color: var(--ucd-blue) !important;
  transform: translateX(1px);
  box-shadow: 0 1px 3px rgba(0, 40, 85, 0.12);
}

#cowsViews a.cowsEvent:focus-visible {
  outline: 2px solid var(--ucd-gold);
  outline-offset: 1px;
}

#cowsViews .cowsEventTime {
  font-weight: 700;
  color: var(--ucd-blue);
  margin-right: 0.25rem;
}

#cowsViews .cowsEventTitle {
  font-weight: 500;
}

/* Category swatches in event chips */
#cowsViews .cowsSwatches {
  display: inline-flex;
  gap: 2px;
  vertical-align: middle;
  margin-right: 0.25rem;
}

.cowsSwatch {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 2px;
  vertical-align: middle;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08);
  flex-shrink: 0;
}

/* "N More" overflow */
#cowsViews .cowsMore,
#cowsViews .cowsMore.ui-state-active {
  display: block;
  padding: 0.15rem 0.4rem 0.3rem;
  background: transparent !important;
  border: none !important;
  color: var(--ucd-blue) !important;
  font-size: 0.72rem;
  font-weight: 600;
  text-align: center;
}

#cowsViews .cowsMore a {
  color: inherit !important;
  text-decoration: none !important;
}

#cowsViews .cowsMore a:hover {
  text-decoration: underline !important;
}

#cowsViews .cowsMoreNum {
  font-weight: 700;
}

/* ============================================================
   AGENDA VIEW
   ============================================================ */
#cowsViews .cowsAgendaView,
#cowsAgendaView {
  padding: 0.75rem 1rem 1.25rem;
}

#cowsViews .cowsAgendaView > ul,
#cowsAgendaView > ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

#cowsViews .cowsDayHead {
  /* also used as agenda day header */
}

#cowsViews .cowsAgendaView .cowsDayHead,
#cowsAgendaView .cowsDayHead {
  display: block;
  padding: 0.5rem 0.75rem;
  margin: 0 0 0.5rem;
  background: var(--ucd-blue);
  color: #fff !important;
  font-size: 0.85rem;
  font-weight: 600;
  border-radius: 6px;
  text-align: left;
}

#cowsViews ul.agendaDay,
#cowsViews .agendaDay {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

#cowsViews li.agendaTime {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--ucd-blue);
}

#cowsViews ul.agendaItems,
#cowsViews .agendaItems {
  list-style: none;
  margin: 0.25rem 0 0.5rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

#cowsViews .agendaItems a.cowsEvent,
#cowsViews .agendaItems a.cowsEvent.ui-widget-content {
  display: block;
  padding: 0.55rem 0.75rem;
  border-radius: 6px;
  border-left: 3px solid var(--ucd-blue) !important;
  background: var(--gray-50) !important;
  white-space: normal;
  font-size: 0.875rem;
  line-height: 1.4;
}

#cowsViews .agendaItems a.cowsEvent:hover {
  background: #e3edf7 !important;
  transform: translateX(2px);
}

/* ============================================================
   DAY VIEW
   ============================================================ */
#cowsViews .cowsDayView,
#cowsDayView {
  position: relative;
  padding: 0.5rem;
  min-height: 400px;
}

#cowsViews ul.cowsDayTimes {
  list-style: none;
  margin: 0;
  padding: 0;
  position: relative;
  width: 70px;
  float: left;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--gray-500);
}

#cowsViews ul.cowsDayTimes li {
  position: absolute;
  left: 0;
  width: 64px;
  text-align: right;
  padding-right: 0.5rem;
}

#cowsViews ul.cowsEvents {
  list-style: none;
  margin: 0 0 0 70px;
  padding: 0;
  position: relative;
  min-height: 400px;
}

#cowsViews .cowsDayView a.cowsEvent {
  position: absolute;
  left: 0;
  right: 8px;
  white-space: normal;
  padding: 0.35rem 0.5rem;
  border-radius: 4px;
  border-left: 3px solid var(--ucd-gold) !important;
  background: #e8f0fa !important;
  color: var(--ucd-blue) !important;
  font-size: 0.8rem;
  box-shadow: var(--shadow);
  overflow: hidden;
}

#cowsViews .cowsDayView a.cowsEvent:hover {
  background: #d4e4f5 !important;
  z-index: 2;
}

/* ============================================================
   ROOM VIEW
   ============================================================ */
#cowsViews .cowsRoomView,
#cowsRoomView {
  overflow: auto;
  padding: 0.5rem;
}

#cowsViews .cowsRoomView table {
  min-width: 900px;
}

#cowsViews .cowsRoomView th {
  background: var(--gray-100) !important;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--gray-600);
  padding: 0.4rem;
  border: 1px solid var(--gray-200) !important;
  text-align: center;
}

#cowsViews .cowsRoomView td {
  border: 1px solid var(--gray-200) !important;
  vertical-align: top;
  padding: 0.2rem;
  font-size: 0.75rem;
}

/* ============================================================
   EVENT DETAILS DIALOG (jQuery UI)
   ============================================================ */
.ui-dialog.cowsEventClickDialog,
.ui-dialog.ui-widget.cowsEventClickDialog {
  background: var(--white) !important;
  border: none !important;
  border-radius: 10px !important;
  box-shadow: 0 12px 40px rgba(0, 26, 54, 0.22) !important;
  padding: 0 !important;
  font-family: var(--font) !important;
  overflow: hidden;
  z-index: 1002 !important;
}

.ui-dialog.cowsEventClickDialog .ui-dialog-titlebar,
.cowsEventClickDialog .ui-dialog-titlebar,
.ui-dialog.cowsEventClickDialog .ui-widget-header {
  background: var(--ucd-blue) !important;
  background-image: none !important;
  color: #fff !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0.9rem 1.15rem !important;
  font-weight: 600;
}

.ui-dialog.cowsEventClickDialog .ui-dialog-title,
.cowsEventClickDialog .ui-dialog-title {
  color: #fff !important;
  font-size: 1rem !important;
  font-weight: 700 !important;
  margin: 0 !important;
  line-height: 1.3;
}

.ui-dialog.cowsEventClickDialog .ui-dialog-titlebar-close,
.cowsEventClickDialog .ui-dialog-titlebar-close {
  position: absolute !important;
  right: 0.65rem !important;
  top: 50% !important;
  transform: translateY(-50%);
  width: 28px !important;
  height: 28px !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
  border-radius: 4px !important;
  opacity: 0.9;
}

.ui-dialog.cowsEventClickDialog .ui-dialog-titlebar-close:hover {
  background: rgba(255, 255, 255, 0.15) !important;
  opacity: 1;
}

.ui-dialog.cowsEventClickDialog .ui-dialog-titlebar-close .ui-icon {
  background-image: none !important;
  text-indent: 0 !important;
  color: #fff !important;
  font-size: 1.25rem !important;
  line-height: 28px !important;
  width: 28px !important;
  height: 28px !important;
  text-align: center;
  display: block;
}

.ui-dialog.cowsEventClickDialog .ui-dialog-titlebar-close .ui-icon-closethick::before {
  content: "×";
  font-weight: 400;
  font-size: 1.35rem;
}

.ui-dialog.cowsEventClickDialog .ui-dialog-content,
.cowsEventClickDialog.ui-dialog-content,
.ui-dialog .cowsEventClickDialog.ui-dialog-content {
  background: var(--white) !important;
  color: var(--gray-800) !important;
  border: none !important;
  padding: 1.15rem 1.25rem 1.25rem !important;
  font-size: 0.9rem !important;
  line-height: 1.55 !important;
  overflow: visible !important;
}

/* Structured dialog body (from cows-enhancements.js) */
.cows-ev-title {
  margin: 0 0 0.9rem;
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--ucd-blue);
  line-height: 1.3;
}

.cows-ev-meta {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.cows-ev-row {
  display: grid;
  grid-template-columns: 92px 1fr;
  gap: 0.3rem 0.75rem;
  align-items: start;
}

.cows-ev-row dt {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--gray-600);
  padding-top: 0.15rem;
}

.cows-ev-row dd {
  margin: 0;
  color: var(--gray-800);
  font-size: 0.9rem;
}

.cows-ev-date {
  display: block;
  font-weight: 600;
}

.cows-ev-time {
  display: block;
  color: var(--gray-600);
  font-size: 0.85rem;
  margin-top: 0.1rem;
}

.cows-ev-location {
  font-weight: 500;
}

.cows-ev-type-pill {
  display: inline-block;
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  background: var(--gray-100);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--gray-700);
}

.cows-ev-categories {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.65rem;
  align-items: center;
}

.cows-ev-cat {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.85rem;
}

.cows-ev-description {
  margin-top: 1rem;
  padding-top: 0.9rem;
  border-top: 1px solid var(--gray-200);
}

.cows-ev-desc-label {
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--gray-600);
  margin-bottom: 0.35rem;
}

.cows-ev-desc-body {
  font-size: 0.9rem;
  color: var(--gray-800);
  line-height: 1.55;
  white-space: pre-wrap;
}

/* Dialog footer / button */
.ui-dialog.cowsEventClickDialog .ui-dialog-buttonpane {
  background: var(--gray-50) !important;
  border: none !important;
  border-top: 1px solid var(--gray-200) !important;
  margin: 0 !important;
  padding: 0.75rem 1.15rem !important;
  border-radius: 0 0 10px 10px;
}

.ui-dialog.cowsEventClickDialog .ui-dialog-buttonset {
  float: none !important;
  text-align: right;
}

.ui-dialog.cowsEventClickDialog .ui-dialog-buttonpane .ui-button {
  background: var(--ucd-blue) !important;
  background-image: none !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 0.45rem 1.2rem !important;
  font-size: 0.875rem !important;
  font-weight: 600 !important;
  font-family: inherit !important;
  box-shadow: none !important;
  cursor: pointer;
  transition: background var(--transition);
}

.ui-dialog.cowsEventClickDialog .ui-dialog-buttonpane .ui-button:hover {
  background: var(--ucd-blue-light) !important;
}

.ui-dialog.cowsEventClickDialog .ui-button .ui-button-text {
  padding: 0 !important;
}

.ui-widget-overlay {
  background: rgba(0, 26, 54, 0.42) !important;
  opacity: 1 !important;
}

/* Legacy flat-text dialog fallback */
.ui-dialog.cowsEventClickDialog .ui-dialog-content br {
  display: block;
  content: "";
  margin-top: 0.3rem;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 720px) {
  #cowsControls {
    flex-direction: column;
    align-items: stretch;
    gap: 0.6rem;
  }

  #cowsControlsLeft,
  #cowsControlsMiddle,
  #cowsControlsRight {
    justify-content: center;
    width: 100%;
  }

  #cowsControlsLeft {
    justify-content: stretch;
  }

  #cowsControlsLeft .ui-button,
  #cowsControlsLeft a.ui-button {
    flex: 1;
  }

  #cowsViews td.cowsDay {
    height: 72px;
  }

  #cowsViews a.cowsEvent {
    font-size: 0.65rem;
    padding: 0.15rem 0.3rem;
  }

  .cows-ev-row {
    grid-template-columns: 1fr;
    gap: 0.15rem;
  }
}

@media (max-width: 480px) {
  #cowsCalendarTitle {
    font-size: 0.95rem !important;
  }

  #cowsViews tr.cowsDow th {
    font-size: 0.65rem !important;
    padding: 0.4rem 0.15rem !important;
  }
}
