:root {
  font-family:
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;
  color: #20372d;
  background: #f5f8f6;
  font-size: 16px;
  --green: #116b45;
  --border: #dce6df;
}
* {
  box-sizing: border-box;
}
body {
  margin: 0;
}
a {
  color: var(--green);
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}
button,
input,
select,
textarea {
  font: inherit;
}
button,
.button {
  background: var(--green);
  color: white;
  border: 1px solid var(--green);
  border-radius: 8px;
  padding: 11px 17px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font-weight: 600;
  text-decoration: none;
}
button:hover,
.button:hover {
  background: #095333;
  text-decoration: none;
}
button:disabled {
  opacity: 0.55;
  cursor: wait;
}
.secondary {
  background: white;
  color: var(--green);
  border-color: var(--border);
}
.secondary:hover {
  background: #edf5ef;
}
.danger {
  background: #b52b36;
  border-color: #b52b36;
  color: white;
}
.small {
  padding: 7px 11px;
  font-size: 0.875rem;
}
.link {
  background: transparent;
  border: 0;
  color: var(--green);
  padding: 5px;
}
.close {
  position: absolute;
  right: 12px;
  top: 12px;
  background: white;
  color: #234;
  border: 0;
  font-size: 24px;
  padding: 4px 10px;
}
input,
select,
textarea {
  width: 100%;
  padding: 11px 12px;
  border: 1px solid #bacbc0;
  border-radius: 7px;
  background: white;
  color: #20372d;
}
input[type="checkbox"] {
  width: auto;
  margin-right: 8px;
}
textarea {
  min-height: 95px;
  resize: vertical;
}
label {
  display: block;
  font-size: 0.9rem;
  font-weight: 600;
  margin: 0 0 7px;
}
.field {
  margin-bottom: 16px;
}
.hint,
.muted {
  color: #64796e;
  font-size: 0.9rem;
}
.hint {
  margin: 6px 0 0;
}
.form-grid,
.grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.grid.three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.full {
  grid-column: 1/-1;
}
h1 {
  font-size: clamp(1.65rem, 3vw, 2.4rem);
  line-height: 1.2;
  letter-spacing: -0.035em;
  margin: 0 0 14px;
}
h2 {
  font-size: 1.25rem;
  margin: 0 0 16px;
}
h3 {
  font-size: 1.1rem;
  margin: 0 0 9px;
}
p {
  line-height: 1.6;
  margin: 0 0 14px;
}
header {
  background: white;
  border-bottom: 1px solid var(--border);
  padding: 17px max(22px, calc((100vw - 1200px) / 2));
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 15px;
  min-height: 80px;
}
.brand {
  display: flex;
  gap: 12px;
  align-items: center;
  color: #183a29;
  font-weight: 750;
}
.logo {
  width: 40px;
  height: 40px;
  border-radius: 9px;
  background: var(--green);
  color: white;
  display: grid;
  place-items: center;
  font-size: 22px;
}
.brand small {
  display: block;
  font-weight: 400;
  color: #6c7d71;
  margin-top: 3px;
}
.header-actions {
  display: flex;
  gap: 10px;
  align-items: center;
}
#layout {
  max-width: 1240px;
  margin: auto;
  display: flex;
  min-height: calc(100vh - 150px);
}
main {
  padding: 36px 26px;
  width: 100%;
  min-width: 0;
}
aside {
  width: 220px;
  flex: none;
  padding: 28px 12px;
  border-right: 1px solid var(--border);
  background: #f9fbf9;
}
aside a {
  display: block;
  padding: 11px 14px;
  border-radius: 8px;
  margin-bottom: 4px;
  color: #52695b;
}
aside a.active {
  background: #e3f0e6;
  color: var(--green);
  font-weight: 700;
}
.user {
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 16px;
  font-size: 0.875rem;
  overflow-wrap: anywhere;
}
.hero {
  background: #e4f1e7;
  border-radius: 18px;
  padding: 40px;
  margin-bottom: 30px;
  position: relative;
}
.eyebrow {
  font-size: 0.78rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--green);
  margin-bottom: 13px;
}
.hero p {
  max-width: 650px;
}
.card {
  background: white;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 23px;
  min-width: 0;
}
.card.agenda {
  display: flex;
  flex-direction: column;
}
.card.agenda .button {
  margin-top: auto;
  align-self: flex-start;
}
.card p {
  color: #607568;
}
.meta {
  font-size: 0.88rem;
  color: #61766a;
  margin: 9px 0 18px;
}
.toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  margin: 0 0 23px;
}
.filters {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 12px;
}
.filters .field {
  margin: 0;
  flex: 1;
  min-width: 140px;
}
.filters input,
.filters select {
  min-width: 130px;
}
.filters button {
  white-space: nowrap;
}
.stack {
  display: grid;
  gap: 18px;
}
.badge {
  display: inline-block;
  background: #eaf1ec;
  color: #466050;
  border-radius: 30px;
  padding: 5px 10px;
  font-size: 0.75rem;
  font-weight: 650;
}
.badge.CONFIRMADA,
.badge.ATENDIDA {
  background: #e2f3e8;
  color: #14683e;
}
.badge.CANCELADA,
.badge.FALTOU {
  background: #fce7e8;
  color: #9a2932;
}
.badge.PENDENTE {
  background: #fff3d6;
  color: #875800;
}
.empty {
  padding: 35px 20px;
  text-align: center;
  color: #607568;
  background: white;
  border: 1px dashed #cadace;
  border-radius: 12px;
}
.notice {
  background: #edf5f0;
  border-left: 4px solid var(--green);
  padding: 14px 18px;
  border-radius: 6px;
  margin-bottom: 20px;
}
.notice.warning {
  background: #fff5df;
  border-color: #c28b24;
}
.notice.error {
  background: #ffebed;
  border-color: #b52b36;
}
.auth {
  max-width: 570px;
  margin: 10px auto;
}
.tabs {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
  margin-bottom: 22px;
}
.tabs a,
.tabs button {
  padding: 9px 12px;
  background: white;
  border: 1px solid var(--border);
  color: #536a5c;
  border-radius: 7px;
  font-weight: 500;
}
.tabs .active {
  background: var(--green);
  color: white;
  border-color: var(--green);
}
.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 5px;
}
.calendar-grid .day-name {
  text-align: center;
  font-size: 0.75rem;
  padding: 8px 0;
  color: #708476;
}
.calendar-grid .day {
  min-height: 46px;
  padding: 7px;
  border: 1px solid var(--border);
  color: #43604d;
  background: white;
  border-radius: 7px;
}
.calendar-grid .day:disabled {
  opacity: 0.35;
  cursor: default;
}
.calendar-grid .day.selected {
  background: var(--green);
  color: white;
}
.slots {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 9px;
}
.slots button {
  background: white;
  color: var(--green);
  border-color: #b9d0c0;
  padding: 12px;
}
.slots button.selected {
  background: var(--green);
  color: white;
}
.step {
  display: inline-flex;
  border-radius: 50%;
  width: 25px;
  height: 25px;
  background: #e8f3eb;
  color: var(--green);
  align-items: center;
  justify-content: center;
  margin-right: 8px;
  font-size: 0.85rem;
}
.metric strong {
  font-size: 2rem;
  display: block;
  margin: 7px 0;
}
.metric span {
  color: #657d6c;
  font-size: 0.85rem;
}
.metrics {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 15px;
}
.bar-row {
  display: grid;
  grid-template-columns: 110px 1fr 30px;
  gap: 10px;
  align-items: center;
  font-size: 0.8rem;
  margin-bottom: 12px;
}
.bar {
  background: #edf2ee;
  height: 12px;
  border-radius: 6px;
  overflow: hidden;
}
.bar i {
  display: block;
  background: #198557;
  height: 100%;
  width: var(--size);
}
.table-wrap {
  overflow-x: auto;
}
table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
}
th {
  text-align: left;
  padding: 12px 10px;
  background: #f4f8f5;
  color: #5c7465;
  font-size: 0.78rem;
  white-space: nowrap;
}
td {
  padding: 13px 10px;
  border-bottom: 1px solid var(--border);
  vertical-align: top;
}
td p {
  margin: 0;
  line-height: 1.4;
}
td small {
  color: #768779;
}
table button {
  white-space: nowrap;
}
.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 12px;
  margin-top: 20px;
}
.actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.list-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 15px 0;
  border-bottom: 1px solid var(--border);
  align-items: center;
}
.list-row:last-child {
  border: 0;
}
.list-row p {
  margin: 0;
}
.definition {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 10px;
  font-size: 0.9rem;
}
.definition dt {
  color: #6a7c71;
}
.definition dd {
  margin: 0;
  overflow-wrap: anywhere;
}
.protocol {
  font-family: monospace;
  font-size: 1.4rem;
  padding: 15px;
  background: #eaf4ed;
  border-radius: 8px;
  word-break: break-all;
}
dialog {
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 32px;
  width: min(760px, 94vw);
  max-height: 88vh;
  overflow: auto;
  color: #20372d;
}
dialog::backdrop {
  background: #102a1a88;
}
#feedback {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  padding: 14px 22px;
  background: #173c28;
  color: white;
  border-radius: 10px;
  box-shadow: 0 5px 22px #102a1a33;
  max-width: 90vw;
  z-index: 99;
  display: none;
}
#feedback.show {
  display: block;
}
footer {
  text-align: center;
  color: #768579;
  font-size: 0.75rem;
  padding: 20px;
  border-top: 1px solid var(--border);
}
.skip {
  position: absolute;
  left: 10px;
  top: -50px;
  z-index: 200;
  background: white;
  padding: 10px;
}
.skip:focus {
  top: 10px;
}
:focus-visible {
  outline: 3px solid #d6a231;
  outline-offset: 3px;
}
.mobile-nav {
  display: none;
}
.loading {
  text-align: center;
  padding: 60px;
  color: #688171;
}
.calendar-events {
  display: grid;
  gap: 12px;
}
.calendar-events h3 {
  margin-top: 12px;
}
.break {
  overflow-wrap: anywhere;
}
.check {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.check input {
  margin-top: 4px;
}
.check label {
  font-weight: 400;
}
.read {
  opacity: 0.65;
}
.print-title {
  display: none;
}
@media (max-width: 900px) {
  .grid.three {
    grid-template-columns: repeat(2, 1fr);
  }
  .metrics {
    grid-template-columns: repeat(2, 1fr);
  }
  aside {
    width: 190px;
  }
  main {
    padding: 26px 18px;
  }
  .hero {
    padding: 28px;
  }
  .slots {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 650px) {
  header {
    padding: 14px 16px;
  }
  .brand {
    font-size: 0.9rem;
  }
  .brand small {
    font-size: 0.72rem;
  }
  .header-actions .button {
    font-size: 0.8rem;
    padding: 8px 10px;
  }
  .mobile-nav {
    display: inline-flex;
    padding: 8px 10px;
  }
  .grid,
  .form-grid,
  .grid.three {
    grid-template-columns: 1fr;
  }
  .full {
    grid-column: auto;
  }
  main {
    padding: 23px 15px;
  }
  .hero {
    padding: 26px 22px;
  }
  .card {
    padding: 19px;
  }
  #layout {
    display: block;
  }
  aside {
    width: 100%;
    border-right: 0;
    border-bottom: 1px solid var(--border);
    padding: 12px;
    display: none;
  }
  aside.open {
    display: block;
  }
  aside[hidden] {
    display: none;
  }
  .user {
    display: none;
  }
  .toolbar h1 {
    margin: 0;
  }
  .filters {
    align-items: stretch;
  }
  .filters .field {
    min-width: calc(50% - 12px);
  }
  .slots {
    grid-template-columns: repeat(3, 1fr);
  }
  .definition {
    grid-template-columns: 100px 1fr;
  }
  .metrics {
    gap: 10px;
  }
  .metric {
    padding: 16px;
  }
  .tabs {
    gap: 5px;
  }
  .tabs a,
  .tabs button {
    font-size: 0.8rem;
  }
  .list-row {
    align-items: flex-start;
  }
  .header-actions .username {
    display: none;
  }
}
@media print {
  header,
  aside,
  footer,
  .toolbar,
  .tabs,
  .actions,
  #feedback,
  .no-print {
    display: none !important;
  }
  main {
    padding: 0;
  }
  .card {
    border: 0;
    padding: 5px;
  }
  .print-title {
    display: block;
  }
  body {
    background: white;
  }
  .table-wrap {
    overflow: visible;
  }
}
#config-content {
  display: grid;
  gap: 18px;
}
#privacy {
  margin-top: 25px;
}
.slots-heading {
  margin-top: 28px;
}
.weekly-row,
.sector-hour {
  margin-bottom: 16px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border);
}
progress {
  width: 100%;
  height: 13px;
  accent-color: #198557;
}
hr {
  border: 0;
  border-top: 1px solid var(--border);
  margin: 24px 0;
}
@media print {
  form,
  .filters,
  .close,
  .link {
    display: none !important;
  }
  dialog {
    position: static;
    width: 100%;
    max-height: none;
    overflow: visible;
  }
  dialog::backdrop {
    background: white;
  }
}
@media print {
  .toolbar {
    display: block !important;
  }
  button,
  .button {
    display: none !important;
  }
  h1 {
    font-size: 24pt;
  }
  .calendar-events {
    display: block;
  }
  .card {
    break-inside: avoid;
  }
  th,
  td {
    padding: 8px 6px;
  }
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.calendar-legend {
  display: flex;
  gap: 12px 18px;
  flex-wrap: wrap;
  font-size: 0.77rem;
  color: #5b6e61;
  margin: 15px 0 19px;
}
.calendar-legend > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.legend-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex: none;
}
.legend-dot.available {
  background: #278b57;
}
.legend-dot.unavailable {
  background: #9ca9a0;
}
.legend-dot.reserved {
  background: #357cad;
}
.legend-dot.blocked {
  background: #bd7730;
}
.public-calendar .day {
  min-height: 58px;
  display: flex;
  flex-direction: column;
  gap: 3px;
  justify-content: center;
  align-items: center;
}
.public-calendar .day.available {
  background: #e9f7ed;
  border-color: #a6ccaf;
  color: #17643b;
}
.public-calendar .day.unavailable {
  background: #f2f4f2;
  color: #7f8d82;
  opacity: 0.7;
}
.public-calendar .day.selected {
  background: #116b45;
  color: white;
  border-color: #116b45;
}
.public-calendar .day.today {
  box-shadow: inset 0 0 0 2px #d2aa38;
}
.day-state {
  font-size: 0.65rem;
  font-weight: 500;
}
.month-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  border-top: 1px solid #dbe4dd;
  border-left: 1px solid #dbe4dd;
  border-radius: 8px;
  overflow: hidden;
}
.month-weekday {
  font-size: 0.72rem;
  text-align: center;
  padding: 11px 3px;
  background: #f0f5f1;
  border-right: 1px solid #dbe4dd;
  border-bottom: 1px solid #dbe4dd;
  color: #536c5c;
  font-weight: 650;
}
.weekday-short {
  display: none;
}
.month-cell {
  min-height: 148px;
  min-width: 0;
  padding: 7px;
  border-right: 1px solid #dbe4dd;
  border-bottom: 1px solid #dbe4dd;
  background: white;
}
.month-cell.outside {
  background: #f7f9f7;
}
.month-cell.today {
  box-shadow: inset 0 0 0 2px #be972c;
}
.month-cell.has-availability {
  background: #f6fbf7;
}
.month-cell.has-block {
  background: #fffaf1;
}
.month-day {
  background: transparent;
  color: #344f3c;
  border: 0;
  border-radius: 50%;
  padding: 0;
  width: 30px;
  min-height: 30px;
  display: grid;
  place-items: center;
  font-size: 0.9rem;
}
.month-day:hover {
  background: #e1eddf;
  color: #244b30;
}
.month-signals {
  display: flex;
  gap: 3px;
  flex-wrap: wrap;
  margin: 5px 0;
}
.calendar-mark {
  display: inline-block;
  font-size: 0.61rem;
  border-radius: 3px;
  padding: 2px 4px;
  font-weight: 600;
}
.calendar-mark.available {
  background: #dff1e3;
  color: #25653a;
}
.calendar-mark.blocked {
  background: #fae8c8;
  color: #8d551b;
}
.month-reservations {
  display: grid;
  gap: 4px;
}
.calendar-booking {
  background: #e7f0f8;
  color: #276284;
  border: 0;
  border-left: 3px solid #357cad;
  display: flex;
  gap: 5px;
  justify-content: flex-start;
  padding: 6px 5px;
  border-radius: 4px;
  width: 100%;
  min-width: 0;
  text-align: left;
  font-size: 0.68rem;
  font-weight: 400;
}
.calendar-booking span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.calendar-booking:hover {
  background: #d7e8f6;
  color: #194d6c;
}
.calendar-booking.PENDENTE {
  background: #fff2d3;
  border-left-color: #bc8d27;
  color: #865e17;
}
.calendar-booking.CANCELADA,
.calendar-booking.FALTOU {
  background: #f3e8e9;
  border-left-color: #ac5960;
  color: #8e4751;
}
.calendar-booking.ATENDIDA {
  background: #e5f3e9;
  border-left-color: #418157;
  color: #2c6840;
}
.month-more {
  padding: 3px;
  background: transparent;
  border: 0;
  color: #41674b;
  font-size: 0.64rem;
  font-weight: 600;
  justify-content: flex-start;
  min-height: 24px;
}
.month-more:hover {
  background: #edf4eb;
  color: #2b5536;
}
.qr-card {
  text-align: center;
}
.qr-image {
  display: block;
  max-width: 260px;
  width: 100%;
  height: auto;
  margin: 20px auto;
  padding: 12px;
  background: white;
}
.qr-image svg {
  display: block;
  width: 100%;
  height: auto;
}
.qr-url {
  overflow-wrap: anywhere;
  word-break: break-word;
  font-size: 0.875rem;
  color: #466452;
  padding: 12px;
  background: #edf5ef;
  border-radius: 7px;
}
.qr-card .actions {
  justify-content: center;
}
@media (max-width: 900px) {
  .weekday-full {
    display: none;
  }
  .weekday-short {
    display: inline;
  }
  .month-cell {
    min-height: 130px;
    padding: 5px;
  }
  .calendar-booking {
    flex-direction: column;
    gap: 2px;
  }
  .calendar-mark {
    font-size: 0.58rem;
  }
  .monthly-calendar {
    padding: 16px;
  }
}
@media (max-width: 650px) {
  .monthly-calendar {
    padding: 12px;
  }
  .month-cell {
    min-height: 108px;
    padding: 3px;
  }
  .month-day {
    width: 28px;
    min-height: 34px;
    font-size: 0.82rem;
  }
  .month-weekday {
    font-size: 0.64rem;
    padding: 9px 0;
  }
  .calendar-booking {
    padding: 6px 3px;
    font-size: 0.65rem;
    min-height: 34px;
    align-items: flex-start;
  }
  .calendar-booking span {
    display: none;
  }
  .calendar-booking strong {
    font-size: 0.66rem;
  }
  .calendar-mark {
    padding: 2px 3px;
    font-size: 0.52rem;
    line-height: 1.35;
  }
  .month-signals {
    gap: 2px;
    margin: 2px 0 5px;
  }
  .month-more {
    font-size: 0.52rem;
    min-height: 30px;
    line-height: 1.2;
  }
  .calendar-legend {
    font-size: 0.72rem;
    gap: 9px 12px;
  }
  .public-calendar .day {
    min-height: 57px;
  }
  .calendar-events .card .table-wrap {
    margin: 0 -4px;
  }
  .header-actions {
    gap: 6px;
  }
  #booking-form > button[type="submit"] {
    width: 100%;
    min-height: 48px;
  }
  .slots button {
    min-height: 46px;
  }
  .month-grid {
    border-radius: 5px;
  }
  .toolbar > .actions {
    width: 100%;
  }
  .toolbar > .actions .button,
  .toolbar > .actions button {
    flex: 1;
    min-height: 42px;
  }
  .qr-image {
    max-width: 240px;
  }
  .qr-card .actions .button,
  .qr-card .actions button {
    width: 100%;
  }
}
@media print {
  .month-grid {
    display: grid !important;
  }
  .month-cell {
    min-height: 105px;
    break-inside: avoid;
  }
  .month-day {
    display: grid !important;
    color: #20372d !important;
  }
  .calendar-booking {
    display: flex !important;
    border: 1px solid #a9bdb0;
    background: white !important;
    color: #20372d !important;
  }
  .month-more {
    display: block !important;
  }
  .calendar-booking span {
    display: inline;
  }
  .qr-image {
    max-width: 300px;
  }
  .qr-url {
    background: white;
  }
  .qr-card .actions {
    display: none !important;
  }
}
@media print {
  body:has(dialog[open] .qr-card) #layout,
  body:has(dialog[open] .qr-card) .skip {
    display: none !important;
  }
  body:has(dialog[open] .qr-card) dialog {
    position: static;
    width: 100%;
    max-width: none;
    height: auto;
    max-height: none;
    padding: 0;
    border: 0;
    box-shadow: none;
  }
  body:has(dialog[open] .qr-card) .qr-image {
    width: 280px;
    max-width: 100%;
    margin: 24px auto;
  }
}
.notification-bell {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 44px;
  width: 44px;
  min-height: 44px;
  border: 1px solid var(--border);
  border-radius: 12px;
  text-decoration: none;
}
.notification-count {
  position: absolute;
  right: -5px;
  top: -5px;
  padding: 2px 5px;
  min-width: 20px;
  border-radius: 20px;
  background: #b42332;
  color: white;
  font-size: 0.7rem;
  font-weight: 700;
  text-align: center;
  border: 2px solid white;
}
.notification-count[hidden] {
  display: none;
}
.notification-bell:focus-visible {
  outline: 3px solid #d2aa38;
  outline-offset: 3px;
}
@media (max-width: 650px) {
  header {
    flex-wrap: wrap;
    gap: 12px;
  }
  header .brand {
    flex: 1 1 100%;
  }
  header .header-actions {
    width: 100%;
    justify-content: flex-end;
  }
}
.weekly-bookable {
  flex: 1.2 !important;
  min-width: 190px !important;
  align-self: center;
  padding: 9px 12px;
  background: #edf5ef;
  border-radius: 7px;
}
.weekly-bookable input {
  flex: none;
  accent-color: #116b45;
}
.weekly-bookable label {
  font-size: 0.85rem;
  line-height: 1.35;
  margin: 0;
}

/* Warm, welcoming refresh selected for the public booking experience. */
:root {
  color: #20382d;
  background: #faf7f0;
  --green: #176344;
  --border: #e5dfd3;
  --sage: #eaf0e6;
  --cream: #faf7f0;
  --gold: #c79a3b;
}
body {
  color: #20382d;
  background:
    radial-gradient(ellipse at 94% 8%, rgb(225 235 216 / 42%), transparent 27rem),
    #faf7f0;
}
header {
  background: rgb(255 254 250 / 92%);
  border-bottom-color: #e9e2d6;
  box-shadow: 0 4px 18px rgb(54 69 49 / 4%);
  position: relative;
  z-index: 2;
}
.brand {
  color: #173e2c;
}
.brand small {
  color: #718174;
}
.logo {
  border-radius: 13px;
  background: linear-gradient(145deg, #247750, #174f37);
  box-shadow: 0 5px 12px rgb(23 99 68 / 18%);
}
main {
  padding-top: 42px;
  padding-bottom: 48px;
}
button,
.button {
  border-radius: 12px;
  box-shadow: 0 3px 8px rgb(25 62 42 / 8%);
  transition: background-color 150ms ease, border-color 150ms ease, transform 150ms ease, box-shadow 150ms ease;
}
button:hover:not(:disabled),
.button:hover {
  box-shadow: 0 6px 14px rgb(25 62 42 / 13%);
  transform: translateY(-1px);
}
.secondary {
  background: #fffefa;
  color: #1c6546;
  border-color: #ded9cc;
  box-shadow: none;
}
.secondary:hover:not(:disabled) {
  background: #f1f4eb;
  border-color: #bfd0bd;
}
input,
select,
textarea {
  border-color: #d9d5c9;
  border-radius: 12px;
  background: #fffefa;
  padding: 13px 14px;
  transition: border-color 150ms ease, box-shadow 150ms ease, background-color 150ms ease;
}
input:focus,
select:focus,
textarea:focus {
  outline: 0;
  border-color: #4c9470;
  background: #fff;
  box-shadow: 0 0 0 4px rgb(76 148 112 / 14%);
}
label {
  color: #294638;
  font-size: 0.94rem;
  margin-bottom: 8px;
}
.field {
  margin-bottom: 19px;
}
.hero {
  overflow: hidden;
  color: #fffdf7;
  background:
    radial-gradient(circle at 90% 12%, rgb(218 186 105 / 22%), transparent 11rem),
    linear-gradient(130deg, #1c6948 0%, #174f37 68%, #123f2e 100%);
  border: 1px solid rgb(255 255 255 / 22%);
  border-radius: 26px;
  box-shadow: 0 16px 38px rgb(38 65 46 / 15%);
  padding: clamp(28px, 5vw, 52px);
}
.hero::after {
  content: "";
  position: absolute;
  width: 260px;
  height: 260px;
  right: -78px;
  bottom: -156px;
  border: 1px solid rgb(244 226 180 / 28%);
  border-radius: 48% 52% 60% 40%;
  transform: rotate(-28deg);
  pointer-events: none;
}
.hero .eyebrow {
  color: #e9d29a;
}
.hero h1 {
  max-width: 720px;
  font-size: clamp(2rem, 5vw, 3.25rem);
  letter-spacing: -0.045em;
}
.hero p {
  max-width: 620px;
  color: rgb(255 253 247 / 86%);
  font-size: 1.04rem;
}
.hero .button {
  background: #fffaf0;
  border-color: #fffaf0;
  color: #1c5b3e;
  box-shadow: 0 5px 15px rgb(8 40 24 / 18%);
}
.hero .button:hover {
  background: #f0e5c8;
  border-color: #f0e5c8;
}
.eyebrow {
  color: #9a7224;
}
.card {
  background: rgb(255 254 250 / 96%);
  border-color: #e7e0d4;
  border-radius: 19px;
  box-shadow: 0 8px 24px rgb(50 60 43 / 5%);
  padding: 25px;
}
.card p {
  color: #65776b;
}
.card.agenda {
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
}
.card.agenda:hover {
  transform: translateY(-3px);
  border-color: #c7d8c6;
  box-shadow: 0 13px 30px rgb(50 60 43 / 10%);
}
.badge {
  background: #f0f0e8;
  color: #526657;
}
.badge.CONFIRMADA,
.badge.ATENDIDA {
  background: #e5f0e4;
  color: #1f6945;
}
.notice {
  background: #edf2e9;
  border-left-color: #43835e;
  border-radius: 11px;
}
.notice.warning {
  background: #fbf3df;
  border-color: var(--gold);
}
.empty {
  color: #65776b;
  background: #fffefa;
  border-color: #d8dfd2;
  border-radius: 16px;
}
aside {
  background: #f4f1e8;
  border-right-color: #e7e0d4;
}
aside a {
  color: #596d5e;
  border-radius: 11px;
}
aside a.active {
  background: #e5ecde;
  color: #175c3e;
  box-shadow: inset 3px 0 #c79a3b;
}
.user {
  border-bottom-color: #e3ddcf;
}
.tabs a,
.tabs button {
  border-radius: 11px;
  background: #fffefa;
}
.tabs .active {
  background: var(--green);
  border-color: var(--green);
}
.step {
  background: #f1ead7;
  color: #67521e;
}
.calendar-grid .day {
  border-color: #e3ded3;
  background: #fffefa;
  border-radius: 11px;
}
.public-calendar .day.available {
  background: #edf3e8;
  border-color: #c6d8c1;
  color: #1e6543;
}
.public-calendar .day.selected,
.calendar-grid .day.selected {
  background: #176344;
  border-color: #176344;
  color: #fff;
  box-shadow: 0 4px 10px rgb(23 99 68 / 19%);
}
.public-calendar .day.today {
  box-shadow: inset 0 0 0 2px var(--gold);
}
.slots button {
  border-color: #d6dfd0;
  border-radius: 12px;
  background: #f5f5ec;
  color: #1b6042;
  min-height: 46px;
}
.slots button:hover:not(:disabled) {
  border-color: #8eae93;
  background: #eaf0e5;
}
.slots button.selected {
  background: #176344;
  border-color: #176344;
  color: white;
}
.slots-heading {
  margin-top: 30px;
}
.waitlist-invite {
  margin-top: 22px;
  padding: 19px;
  border-radius: 15px;
  background: #f3f0e5;
  border: 1px solid #e8e0cd;
}
.waitlist-invite p:first-child {
  color: #294638;
  font-weight: 650;
}
#booking-form > button[type="submit"],
#staff-booking-submit,
#public-waitlist-form > button[type="submit"] {
  border-radius: 14px;
  min-height: 52px;
  background: linear-gradient(115deg, #247a52, #15563b);
  border-color: #15563b;
  box-shadow: 0 7px 15px rgb(23 99 68 / 18%);
}
#booking-form > button[type="submit"]:disabled {
  background: #8caa95;
  border-color: #8caa95;
  box-shadow: none;
}
.notification-bell {
  border-radius: 13px;
  background: #fffefa;
}
.notification-count {
  border-color: #fffefa;
}
dialog {
  background: #fffefa;
  border-color: #e7e0d4;
  border-radius: 20px;
  box-shadow: 0 20px 60px rgb(27 42 31 / 18%);
}
footer {
  color: #778176;
  background: #f5f2e9;
  border-top-color: #e8e1d5;
  padding: 24px 18px;
}
.site-footer {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
}
.site-footer small {
  color: #7c867b;
  font-size: 0.78rem;
  letter-spacing: 0.025em;
}
.site-footer small strong {
  color: #176b49;
  font-weight: 650;
}
th {
  background: #f2f1e8;
  color: #566e5c;
}
hr,
td,
.weekly-row,
.sector-hour {
  border-color: #e7e0d4;
}
progress {
  accent-color: #247750;
}
:focus-visible {
  outline-color: #c79a3b;
}
@media (max-width: 650px) {
  main {
    padding: 20px 13px 32px;
  }
  .hero {
    border-radius: 21px;
    padding: 29px 23px;
    margin-bottom: 25px;
  }
  .hero p {
    font-size: 0.98rem;
  }
  .card {
    padding: 19px 17px;
    border-radius: 17px;
  }
  #booking-form > button[type="submit"] {
    width: 100%;
  }
  .slots {
    gap: 8px;
  }
  .slots button {
    padding: 10px 6px;
  }
}
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}
.weekly-row .field {
  min-width: 120px;
}
.weekly-row .field:first-child {
  min-width: 165px;
}
.weekly-row > button {
  align-self: center;
}
.weekly-row {
  align-items: center !important;
}
#sheet-target-location {
  margin-bottom: 18px;
}
#sheet-mapping-form {
  max-width: 760px;
}
@media (max-width: 650px) {
  .weekly-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    padding: 14px;
    background: #f8faf8;
    border: 1px solid #dce6df;
    border-radius: 9px;
  }
  .weekly-row .field {
    min-width: 0 !important;
    width: 100%;
  }
  .weekly-row .field:first-child,
  .weekly-bookable {
    grid-column: 1/-1;
  }
  .weekly-bookable {
    padding: 12px;
    min-height: 46px;
  }
  .weekly-row > button {
    grid-column: 1/-1;
  }
  .weekly-row input[type="checkbox"] {
    min-width: 20px;
    min-height: 20px;
  }
  .weekly-row .field:first-child select {
    min-width: 0;
  }
}
.waitlist-invite {
  margin-top: 25px;
  padding: 17px;
  border: 1px dashed #bdd0c2;
  border-radius: 9px;
  background: #f7faf7;
}
.waitlist-invite p {
  margin-bottom: 10px;
}
.slot-picker {
  padding: 17px;
  border: 1px solid #dce6df;
  border-radius: 9px;
  background: #f7faf7;
  margin: 15px 0 22px;
}
.picker-slots {
  margin: 12px 0;
}
.picker-selection {
  font-weight: 600;
  color: #1d7046;
}
.share-message {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  background: #f0f7f2;
  padding: 18px;
  border-radius: 8px;
}
.detail-share {
  margin: 18px 0;
}
.leave-shortcuts {
  margin: 10px 0 20px;
}
.day-attendance-list {
  display: grid;
  gap: 15px;
}
.attendance-time {
  display: block;
  font-size: 1.3rem;
  color: #116b45;
  margin-bottom: 8px;
}
.attendance-card h2 {
  margin-bottom: 6px;
}
.attendance-card p {
  margin-bottom: 0;
}
.attendance-badges {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.badge.AGUARDANDO {
  background: #edf1ed;
  color: #59705d;
}
.badge.CHEGOU {
  background: #fff0cc;
  color: #875e19;
}
.badge.EM_ATENDIMENTO {
  background: #e1edf9;
  color: #265e90;
}
.badge.CONTATADO {
  background: #e7eaf9;
  color: #5b4c92;
}
.badge.CONVERTIDO {
  background: #dff2e5;
  color: #28623d;
}
.badge.REMOVIDO {
  background: #f4e7e9;
  color: #87434c;
}
.attendance-card .toolbar {
  margin-bottom: 17px;
}
.attendance-card .actions {
  padding-top: 13px;
  border-top: 1px solid #dce6df;
}
.slot-picker .slots {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
#staff-booking-submit,
#public-waitlist-form > button[type="submit"] {
  min-height: 46px;
}
@media (max-width: 650px) {
  .slot-picker .slots {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .attendance-card .actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .attendance-card .actions button {
    min-height: 43px;
  }
  .attendance-card .toolbar {
    display: block;
  }
  .attendance-badges {
    margin-top: 12px;
  }
  .waitlist-invite {
    padding: 15px;
  }
  .waitlist-invite button {
    width: 100%;
    min-height: 44px;
  }
  #staff-booking-submit,
  #public-waitlist-form > button[type="submit"] {
    width: 100%;
  }
  .share-message {
    font-size: 0.9rem;
  }
  .day-metrics .metric {
    padding: 14px;
  }
  #reschedule-booking {
    width: 100%;
    margin-bottom: 15px;
  }
}

.whatsapp-button { background: #176344; color: #fff; border-color: #176344; }
.detail-share .whatsapp-button { width: 100%; margin: 12px 0; }
.share-message { white-space: pre-wrap; overflow-wrap: anywhere; padding: 18px; border-radius: 16px; background: #eaf0e6; }

/* Motivos de bloqueios gerais no calendário público. */
.public-calendar .day.public-blocked { background: #fff2d9; border-color: #d5ae66; color: #725116; opacity: 1; min-width: 0; }
.public-calendar .day.public-blocked .day-state { max-width: 100%; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.15; }
.public-calendar .day.public-blocked.selected { background: #79571e; color: #fff; }
.public-block-notice { background: #fff2d9; border-color: #d5ae66; color: #725116; overflow-wrap: anywhere; }
#other-global-reason[hidden], #global-agendas[hidden] { display: none; }

/* Eventos e tarefas pessoais */
.personal-calendar-item {display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;min-width:0;margin:6px 0;text-align:left;padding:9px 10px;border:1px solid #b6cfc2;border-left:4px solid #2c7454;border-radius:10px;background:#edf5ef;color:#244837;overflow-wrap:anywhere;}
.personal-calendar-item strong {font-size:.95rem;line-height:1.3;}
.personal-calendar-item small,.personal-type {font-size:.75rem;line-height:1.3;opacity:.85;}
.personal-blue {background:#edf3fc;border-color:#9ebbd8;border-left-color:#3777b2;color:#254d77;}
.personal-purple {background:#f4effb;border-color:#c0aad7;border-left-color:#8c58b4;color:#65427e;}
.personal-orange {background:#fff5e7;border-color:#debf94;border-left-color:#ad6f24;color:#82521a;}
.personal-red {background:#fbefee;border-color:#d6aca8;border-left-color:#b75e56;color:#823f38;}
.personal-calendar-item.completed strong {text-decoration:line-through;opacity:.7;}
.personal-reminder-row {display:flex;gap:12px;align-items:end;margin:10px 0;}
.personal-reminder-row label {flex:1;}
.personal-reminder-row button {margin-bottom:0;}
.personal-editor {max-width:660px;}
.personal-editor [hidden] {display:none!important;}
.month-personal-items .personal-calendar-item {padding:5px;}
.month-personal-items .personal-calendar-item strong {font-size:.78rem;}
.month-personal-items .personal-calendar-item small {display:none;}
@media(max-width:600px) {
  .month-personal-items .personal-calendar-item {padding:3px;gap:2px;border-left-width:3px;}
  .month-personal-items .personal-calendar-item strong {font-size:.68rem;}
  .month-personal-items .personal-type {font-size:.6rem;}
  .personal-reminder-row {gap:6px;}
}

.metric-link { display: block; color: inherit; text-decoration: none; cursor: pointer; }
.metric-link small { color: var(--green); font-size: .8rem; }
.metric-link:hover { border-color: var(--green); }
.metric-link:focus-visible { outline: 3px solid var(--green); outline-offset: 3px; }

.global-search {display:flex;align-items:center;gap:4px;margin:0;max-width:320px;}
.global-search input {min-width:0;width:220px;margin:0;}
.global-search button {padding:9px 13px;}
@media(max-width:700px){.header-actions{flex-wrap:wrap}.global-search{flex:1;max-width:none;min-width:180px}.global-search input{width:100%}}

.feedback-message {white-space:pre-wrap;overflow-wrap:anywhere;}

/* Desktop workspace and responsive daily overview */
#layout {max-width:1600px;}
#header {max-width:1600px;margin:auto;flex-wrap:wrap;gap:16px;}
.header-actions {flex-wrap:wrap;}
.nav-group {margin:18px 0;}
.nav-group h2 {font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:#6c7e73;margin:0 14px 8px;}
.nav-group a {font-size:.9rem;}
.quick-actions {display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;}
.quick-actions a {display:flex;flex-direction:column;gap:6px;padding:16px;border:1px solid var(--border);border-radius:12px;background:#fff;color:#20372d;}
.quick-actions a:hover {background:#edf5ef;text-decoration:none;border-color:var(--green);}
.quick-actions span {font-size:.8rem;color:#61796c;}
.today-card h2 {font-size:1.5rem;margin:0;}
.day-timeline {display:grid;gap:8px;}
.timeline-row {display:grid;grid-template-columns:90px minmax(0,1fr) auto;align-items:center;gap:16px;padding:16px 0;border-top:1px solid var(--border);}
.timeline-row time {font-weight:700;color:var(--green);font-size:.9rem;}
.timeline-row h3 {margin:4px 0;font-size:1rem;overflow-wrap:anywhere;}
.timeline-row p {margin:0;font-size:.85rem;color:#64796d;}
.timeline-kind {font-size:.75rem;border:1px solid var(--border);border-radius:20px;padding:2px 9px;color:#435e50;}
.day-empty {padding:18px;background:#f2f7f3;border-radius:12px;}
.dashboard-details {border-top:1px solid var(--border);padding-top:18px;}
.dashboard-details>summary {cursor:pointer;font-size:1.05rem;font-weight:650;padding:12px 0;margin-bottom:16px;}
.dashboard-details[open] {display:block;}
.dashboard-details .metrics,.dashboard-details .grid,.dashboard-details>section {margin-bottom:20px;}
:where(button,a,input,select,textarea):focus-visible {outline:3px solid #2a8462;outline-offset:3px;}
@media(min-width:1000px){aside{width:240px;} main{padding:32px;} .today-card{padding:26px;}}
@media(max-width:1100px){.quick-actions{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:700px){.quick-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.quick-actions a{padding:13px}.timeline-row{grid-template-columns:70px minmax(0,1fr);gap:10px}.timeline-row>.button,.timeline-row>button{grid-column:2;justify-self:start;min-height:44px}.header-actions{width:100%} .nav-group a{min-height:44px} .day-empty{padding:14px}}
@media print{.quick-actions,.dashboard-details>summary{display:none}.timeline-row{break-inside:avoid}}

@media(max-width:700px){.booking-table{overflow:visible}.booking-table table,.booking-table tbody,.booking-table tr,.booking-table td{display:block;width:100%;min-width:0}.booking-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.booking-table tr{border:1px solid var(--border);border-radius:12px;padding:12px;margin:12px 0;background:white}.booking-table td{border:0;padding:7px 0;overflow-wrap:anywhere}.booking-table td::before{content:attr(data-label);display:block;font-size:.75rem;color:#61796c;margin-bottom:3px}.booking-table button{min-height:44px}}

/* Dark palette preserves the institutional green and event categories. */
html[data-theme="dark"] {color-scheme:dark;--green:#70d4a7;--border:#375146;color:#e6f1ea;background:#101a16;}
html[data-theme="dark"] body {background:#101a16;color:#e6f1ea;}
html[data-theme="dark"] :is(#header,header,aside,footer,.card,dialog,.quick-actions a,.booking-table tr,.calendar-events,.calendar-day,.month-day,.day-empty) {background:#192b23;color:#e6f1ea;border-color:var(--border);box-shadow:none;}
html[data-theme="dark"] :is(h1,h2,h3,h4,strong,.brand,.metric-link,.quick-actions a) {color:inherit;}
html[data-theme="dark"] :is(p,small,.muted,.hint,.meta,.user,.metric span,.nav-group h2,.quick-actions span,.timeline-row p,.timeline-kind,.booking-table td::before) {color:#b6cbbf;}
html[data-theme="dark"] :is(input,select,textarea) {background:#102019;color:#e6f1ea;border-color:#5a7869;}
html[data-theme="dark"] input::placeholder,html[data-theme="dark"] textarea::placeholder {color:#a8bdb1;}
html[data-theme="dark"] :is(button,.button) {background:#1a7450;color:#fff;border-color:#338c66;}
html[data-theme="dark"] :is(button,.button):hover {background:#23875e;}
html[data-theme="dark"] :is(.secondary,.link,.close,.notification-bell) {background:#20392d;color:#b5f0d2;border-color:#4a6958;}
html[data-theme="dark"] .danger {background:#943a43;color:#fff;border-color:#b65760;}
html[data-theme="dark"] aside a {color:#c2d6ca;}
html[data-theme="dark"] :is(aside a.active,aside a:hover,.tabs a.active,.quick-actions a:hover) {background:#254837;color:#a7efca;}
html[data-theme="dark"] :is(.notice,.badge,.step) {background:#243c2f;color:#ceebda;border-color:#52735f;}
html[data-theme="dark"] :is(.warning,.public-block-notice) {background:#463b20;color:#ffe3a6;border-color:#907943;}
html[data-theme="dark"] :is(th,.calendar-grid,.calendar-header,.calendar-weekdays,.calendar-day-header) {background:#20352a;color:#d1e4d8;border-color:var(--border);}
html[data-theme="dark"] :is(td,tr,.calendar-cell) {border-color:var(--border);}
html[data-theme="dark"] .hero {background:linear-gradient(125deg,#1b6848,#173f2d);color:#fff;}
html[data-theme="dark"] .hero :is(h1,p,.eyebrow) {color:#f0fff5;}
html[data-theme="dark"] .eyebrow {color:#dfc587;}
html[data-theme="dark"] .personal-calendar-item {background:#204533;color:#d0f7df;border-color:#4a9269;border-left-color:#71d09a;}
html[data-theme="dark"] .personal-blue {background:#213e58;color:#d1e9ff;border-color:#4d8bbb;border-left-color:#74b9ef;}
html[data-theme="dark"] .personal-purple {background:#423254;color:#eddaff;border-color:#9272b1;border-left-color:#c49ae7;}
html[data-theme="dark"] .personal-orange {background:#503b23;color:#ffe5bd;border-color:#ae854b;border-left-color:#e6b16a;}
html[data-theme="dark"] .personal-red {background:#503031;color:#ffdcda;border-color:#b27270;border-left-color:#eb9993;}
html[data-theme="dark"] .personal-calendar-item :is(strong,small) {color:inherit;}
html[data-theme="dark"] dialog::backdrop {background:rgba(0,0,0,.7);}
@media print{html[data-theme="dark"],html[data-theme="dark"] body,html[data-theme="dark"] .card{background:white;color:#20372d}#theme-toggle{display:none}}

.teaching-row-controls{display:flex;flex-direction:column;gap:10px;min-width:220px;max-width:400px}
.teaching-row-actions{display:flex;flex-wrap:wrap;gap:6px}
.teaching-row-links{display:flex;flex-wrap:wrap;gap:8px}
.teaching-process-link{font-weight:600;overflow-wrap:anywhere}
@media(max-width:700px){.teaching-row-controls{min-width:0;max-width:100%}.teaching-row-actions button{flex:1 1 auto}.teaching-row-links{width:100%}}

.teaching-row-links{flex-direction:column;align-items:flex-start}.teaching-process-editor{margin-bottom:10px;padding:12px}

.weekly-day{display:grid;grid-template-columns:180px minmax(0,1fr);gap:18px;padding:18px 0;border-bottom:1px solid var(--border)}
.weekly-day:last-child{border-bottom:0}.weekly-day-heading h3{margin:0 0 10px}.weekly-day-intervals:empty::before{content:"Sem horários cadastrados.";color:var(--muted)}
.weekly-day .weekly-row{display:grid;grid-template-columns:minmax(100px,1fr) minmax(100px,1fr) minmax(190px,1.5fr) auto;align-items:end;gap:10px;margin-bottom:12px}
@media(max-width:1000px){.weekly-day .weekly-row{grid-template-columns:1fr 1fr}.weekly-day{grid-template-columns:150px minmax(0,1fr)}}
@media(max-width:650px){.weekly-day{grid-template-columns:1fr}.weekly-day-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.weekly-day-heading h3{margin:0}.weekly-day .weekly-row{grid-template-columns:1fr 1fr}.weekly-day .weekly-bookable{grid-column:1/-1}}

.teaching-status-options{border:0;padding:0;margin:0 0 16px;display:flex;flex-wrap:wrap;gap:8px}.teaching-status-options legend{font-weight:700;margin-bottom:10px}
.teaching-status-choice{display:flex;align-items:center;gap:8px;padding:10px 14px;border:2px solid transparent;border-radius:8px;cursor:pointer}.teaching-status-choice input{width:auto;accent-color:currentColor}.teaching-status-choice:has(input:checked){border-color:currentColor}.teaching-status-choice:focus-within{outline:2px solid currentColor;outline-offset:2px}
.teaching-status-amber{background:#fff2c7!important;color:#624800!important}.teaching-status-blue{background:#dfefff!important;color:#154a7d!important}.teaching-status-purple{background:#eee2ff!important;color:#5b2585!important}.teaching-status-orange{background:#ffe4cb!important;color:#7c390b!important}.teaching-status-green{background:#d9f2df!important;color:#14512a!important}.teaching-status-cyan{background:#d5f2f5!important;color:#07525c!important}
html[data-theme="dark"] .teaching-status-amber{background:#493c13!important;color:#ffe6a0!important}html[data-theme="dark"] .teaching-status-blue{background:#173958!important;color:#b9dcff!important}html[data-theme="dark"] .teaching-status-purple{background:#402a54!important;color:#e2c5ff!important}html[data-theme="dark"] .teaching-status-orange{background:#50301b!important;color:#ffd2ad!important}html[data-theme="dark"] .teaching-status-green{background:#1a4128!important;color:#b9efc9!important}html[data-theme="dark"] .teaching-status-cyan{background:#173d43!important;color:#b8edf2!important}

/* Institutional dark navigation, with a light workspace by default. */
html :is(#header,header,aside){background:#192b23;color:#e6f1ea;border-color:#375146;box-shadow:none}
html header :is(.brand,strong){color:#e6f1ea}
html header :is(.brand small,p,small),html aside :is(.user,p,small,.nav-group h2){color:#b6cbbf}
html aside a{color:#c2d6ca}
html aside :is(a.active,a:hover){background:#254837;color:#a7efca}
html :is(header,aside) :is(.secondary,.link,.notification-bell){background:#20392d;color:#b5f0d2;border-color:#4a6958}
html :is(header,aside) :is(.secondary,.link,.notification-bell):hover{background:#254837;color:#d4ffe7}
html header :is(button,.button):not(.secondary):not(.link){background:#1a7450;color:#fff;border-color:#338c66}
html aside .user{border-color:#375146}
@media print{html :is(#header,header,aside){background:white;color:#20372d}}

/* High-contrast controls against the dark header. */
html header :is(button,.button,.secondary,.link,.notification-bell),html header :is(button,.button):not(.secondary):not(.link){background:#fff;color:#174f37;border-color:#dce6df}
html header :is(button,.button,.secondary,.link,.notification-bell):hover{background:#edf5ef;color:#103b29;border-color:#b6cbbf}
html header :is(button,.button,.notification-bell) svg{color:inherit}
html header :is(button,.button,.notification-bell):focus-visible{outline:3px solid #e9c86f;outline-offset:3px}
.header-account-actions{display:inline-flex;align-items:center;gap:8px;flex-shrink:0}
html aside #theme-toggle{width:100%;margin-top:8px;justify-content:flex-start;background:#fff;color:#174f37;border-color:#dce6df}
html aside #theme-toggle:hover{background:#edf5ef;color:#103b29}
