.icon {
  width:var(--icon-size);
  height:var(--icon-size);
  stroke:currentColor;
  fill:none;
  stroke-width:2;
  stroke-linecap:round;
  stroke-linejoin:round;
  flex-shrink:0
}
.button,.icon-button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--space-2);
  min-height:var(--control-height);
  padding:var(--space-2) var(--space-3);
  border:1px solid transparent;
  border-radius:var(--radius);
  text-decoration:none;
  transition:background var(--transition);
  font-weight:500;
  font-size:var(--font-sm)
}
.button:hover {
  text-decoration:none
}
.button-primary {
  background:var(--primary);
  color:var(--on-primary)
}
.button-primary:hover {
  background:var(--primary-hover)
}
.button-secondary {
  border-color:var(--border);
  color:var(--text);
  background:var(--surface)
}
.button-secondary:hover,.icon-button:hover {
  background:var(--surface-alt)
}
.button:disabled {
  opacity:.5
}
.icon-button {
  padding:var(--space-2);
  background:transparent;
  color:var(--text);
  min-width:var(--control-height)
}
.badge {
  display:inline-flex;
  padding:var(--space-1) var(--space-2);
  font-size:var(--font-xs);
  line-height:1.2;
  border-radius:var(--radius-sm);
  white-space:nowrap;
  font-weight:500
}
.badge-neutral {
  background:var(--surface-alt);
  color:var(--text-muted)
}
.badge-success {
  background:var(--success-bg);
  color:var(--success)
}
.badge-warning {
  background:var(--warning-bg);
  color:var(--warning)
}
.badge-danger {
  background:var(--danger-bg);
  color:var(--danger)
}
.badge-info {
  background:var(--info-bg);
  color:var(--info)
}
.panel,.stat {
  border:1px solid var(--border);
  border-radius:var(--radius);
  background:var(--surface);
  box-shadow:var(--shadow-sm)
}
.panel-heading {
  padding:var(--space-3) var(--space-4);
  border-bottom:1px solid var(--border)
}
.panel-body {
  padding:var(--space-4)
}
.stat {
  padding:var(--space-4);
  display:flex;
  flex-direction:column;
  gap:var(--space-2)
}
.stat-label {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-2);
  color:var(--text-muted);
  font-size:var(--font-sm)
}
.stat strong {
  font-size:var(--font-stat);
  line-height:1.2;
  font-weight:650
}
.activity-list li,.agenda-list li {
  display:flex;
  gap:var(--space-3);
  align-items:center;
  padding:var(--space-3) 0;
  border-bottom:1px solid var(--border)
}
.activity-list li:last-child,.agenda-list li:last-child {
  border-bottom:0
}
.activity-list p,.agenda-list p {
  color:var(--text-muted);
  font-size:var(--font-xs);
  margin-top:var(--space-1)
}
.activity-list time {
  margin-left:auto;
  color:var(--text-muted);
  font-size:var(--font-xs);
  white-space:nowrap
}
.activity-mark {
  display:grid;
  place-items:center;
  width:var(--control-height);
  height:var(--control-height);
  border-radius:var(--radius);
  background:var(--surface-alt);
  color:var(--text-muted);
  flex-shrink:0
}
.date-block {
  display:flex;
  flex-direction:column;
  align-items:center;
  padding:var(--space-1) var(--space-3);
  background:var(--surface-alt);
  border-radius:var(--radius);
  font-size:var(--font-xs)
}
.date-block strong {
  font-size:var(--font-xl)
}
.agenda-list .badge {
  margin-left:auto
}
.quick-links {
  display:grid;
  gap:var(--space-2)
}
.quick-links a {
  display:flex;
  align-items:center;
  gap:var(--space-3);
  padding:var(--space-2);
  color:var(--text);
  border-radius:var(--radius)
}
.quick-links a:hover {
  background:var(--surface-alt);
  text-decoration:none
}
.quick-links .icon:last-child {
  margin-left:auto
}
.module-summary {
  display:flex;
  gap:var(--space-3);
  align-items:center;
  margin-bottom:var(--space-3)
}
.module-summary p {
  font-size:var(--font-sm)
}
.table-scroll {
  overflow-x:auto
}
table {
  width:100%;
  border-collapse:collapse;
  text-align:left
}
th,td {
  padding:var(--space-3) var(--space-4);
  border-bottom:1px solid var(--border);
  font-size:var(--font-sm)
}
thead th {
  background:var(--surface-alt);
  color:var(--text-muted);
  font-weight:550;
  white-space:nowrap
}
tbody th {
  font-weight:500
}
tbody th small {
  display:block;
  font-weight:400;
  margin-top:var(--space-1)
}
tbody tr:hover {
  background:var(--surface-alt)
}
.table-name {
  color:var(--text);
  font-weight:600
}
.field {
  display:flex;
  flex-direction:column;
  gap:var(--space-1);
  margin-bottom:var(--space-3)
}
.field label {
  font-size:var(--font-sm);
  font-weight:500
}
.field-help {
  font-size:var(--font-xs);
  color:var(--text-muted)
}
input:not([type="checkbox"]),select,textarea {
  min-height:var(--control-height);
  border:1px solid var(--border);
  border-radius:var(--radius);
  background:var(--surface);
  color:var(--text);
  padding:var(--space-2) var(--space-3);
  width:100%;
  min-width:0
}
input::placeholder,textarea::placeholder {
  color:var(--text-muted)
}
textarea {
  resize:vertical
}
.check-label {
  display:flex;
  gap:var(--space-2);
  align-items:center
}
input[type="checkbox"] {
  accent-color:var(--primary)
}
.filter-bar {
  display:flex;
  align-items:flex-end;
  gap:var(--space-3);
  padding:var(--space-4);
  flex-wrap:wrap
}
.filter-bar .field {
  margin-bottom:0;
  min-width:160px
}
.filter-bar .field:first-child {
  min-width:220px;
  flex:1
}
.filter-bar .text-link {
  align-self:center
}
.tabs {
  display:flex;
  gap:var(--space-4);
  border-bottom:1px solid var(--border);
  margin-bottom:var(--space-5);
  overflow-x:auto;
  white-space:nowrap
}
.tabs a,.tabs span {
  padding:var(--space-3) var(--space-1);
  color:var(--text-muted)
}
.tabs a[aria-current] {
  border-bottom:2px solid var(--primary);
  color:var(--primary);
  font-weight:600
}
.tabs span {
  opacity:.6
}
.alert {
  display:flex;
  gap:var(--space-3);
  padding:var(--space-3);
  border-radius:var(--radius);
  margin:var(--space-2) 0
}
.alert-info {
  background:var(--info-bg);
  color:var(--info)
}
.alert-warning {
  background:var(--warning-bg);
  color:var(--warning)
}
.alert-danger {
  background:var(--danger-bg);
  color:var(--danger)
}
.alert-success {
  background:var(--success-bg);
  color:var(--success)
}
.empty-state {
  padding:var(--space-8) var(--space-4);
  text-align:center
}
.empty-state>.icon {
  margin-bottom:var(--space-3);
  color:var(--text-muted);
  width:var(--space-8);
  height:var(--space-8)
}
.empty-state p {
  color:var(--text-muted);
  font-size:var(--font-sm);
  margin-top:var(--space-2)
}
.dropdown {
  position:relative;
  display:inline-block
}
.dropdown-panel {
  position:absolute;
  top:100%;
  right:0;
  min-width:200px;
  max-width:calc(100vw - var(--space-6));
  padding:var(--space-2);
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow-md);
  z-index:var(--z-dropdown)
}
.dropdown-panel a,.dropdown-panel button {
  display:block;
  width:100%;
  padding:var(--space-2);
  background:transparent;
  border:0;
  color:var(--text);
  text-align:left;
  font-size:var(--font-sm);
  border-radius:var(--radius-sm)
}
.dropdown-panel a:hover,.dropdown-panel button:hover {
  background:var(--surface-alt);
  text-decoration:none
}
.dropdown-panel button:disabled {
  color:var(--text-muted)
}
.dropdown-panel p,.dropdown-panel strong {
  display:block;
  padding:var(--space-2)
}
.pagination {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-3);
  padding:var(--space-3) var(--space-4);
  font-size:var(--font-xs);
  color:var(--text-muted);
  flex-wrap:wrap
}
.pagination>div {
  display:flex;
  gap:var(--space-2)
}
.dialog,.command-dialog {
  padding:var(--space-4);
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);
  width:min(560px,calc(100% - var(--space-6)));
  max-height:80vh
}
.dialog::backdrop,.command-dialog::backdrop {
  background:var(--overlay)
}
.dialog-heading,.command-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:var(--space-3)
}
.command-dialog {
  margin:15vh auto auto
}
.command-dialog ul {
  max-height:40vh;
  overflow:auto;
  margin-top:var(--space-3)
}
.command-dialog li {
  display:flex;
  align-items:center;
  gap:var(--space-3);
  padding:var(--space-3);
  border-radius:var(--radius);
  cursor:pointer
}
.command-dialog li.is-selected {
  background:var(--info-bg);
  color:var(--info)
}
.command-dialog li span:last-child {
  margin-left:auto
}
.command-help {
  border-top:1px solid var(--border);
  padding-top:var(--space-3);
  margin-top:var(--space-3);
  color:var(--text-muted);
  font-size:var(--font-xs)
}
.empty-command {
  padding:var(--space-5);
  color:var(--text-muted);
  text-align:center
}
.toast-region {
  position:fixed;
  bottom:var(--space-5);
  right:var(--space-5);
  z-index:var(--z-toast);
  max-width:calc(100vw - var(--space-8))
}
.toast {
  display:flex;
  gap:var(--space-3);
  align-items:center;
  padding:var(--space-3);
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow-md)
}
.skeleton {
  display:grid;
  gap:var(--space-2);
  padding:var(--space-3) 0
}
.skeleton>span:not(.sr-only) {
  display:block;
  height:var(--space-3);
  background:var(--surface-alt);
  border-radius:var(--radius-sm)
}
.skeleton>span:nth-child(2) {
  width:60%
}
.htmx-indicator {
  opacity:0;
  color:var(--text-muted);
  font-size:var(--font-xs)
}
.htmx-request .htmx-indicator,.htmx-request.htmx-indicator {
  opacity:1
}
.description-list {
  display:grid;
  grid-template-columns:minmax(100px,1fr) 2fr;
  gap:var(--space-3);
  margin:0
}
.description-list dt {
  color:var(--text-muted)
}
.description-list dd {
  margin:0;
  overflow-wrap:anywhere
}
.error-page {
  text-align:center;
  padding:var(--space-8)
}
.error-code {
  font-size:var(--font-stat);
  font-weight:700;
  color:var(--text-muted)
}
@media(max-width:640px) {
  .activity-list time {
    white-space:normal
  }
  .filter-bar .field,.filter-bar .field:first-child {
    min-width:0;
    width:100%
  }
  .module-summary {
    flex-wrap:wrap
  }
  .description-list {
    grid-template-columns:1fr
  }
  .description-list dd {
    margin-bottom:var(--space-2)
  }
}
