/* ===== Auraya Brand Colours ===== */
html {
  --lumo-primary-text-color: rgb(235, 89, 5);
  --lumo-primary-color-50pct: rgba(235, 89, 5, 0.5);
  --lumo-primary-color-10pct: rgba(235, 89, 5, 0.1);
  --lumo-primary-color: hsl(22, 96%, 47%);
  --lumo-primary-contrast-color: rgb(255 255 255);

  --lumo-error-text-color: rgb(231, 24, 24);
  --lumo-error-color-50pct: rgba(231, 24, 24, 0.5);
  --lumo-error-color-10pct: rgba(231, 24, 24, 0.1);
  --lumo-error-color: hsl(0, 81%, 50%);

  --lumo-success-text-color: rgb(46, 139, 87);
  --lumo-success-color-50pct: rgba(46, 139, 87, 0.5);
  --lumo-success-color-10pct: rgba(46, 139, 87, 0.1);
  --lumo-success-color: rgb(46, 139, 87);
  --lumo-success-contrast-color: hsl(159, 29%, 10%);

  --lumo-shade-5pct: rgba(26, 26, 26, 0.05);
  --lumo-shade-10pct: rgba(26, 26, 26, 0.1);
  --lumo-shade-20pct: rgba(26, 26, 26, 0.2);
  --lumo-shade-30pct: rgba(26, 26, 26, 0.3);
  --lumo-shade-40pct: rgba(26, 26, 26, 0.4);
  --lumo-shade-50pct: rgba(26, 26, 26, 0.5);
  --lumo-shade-60pct: rgba(26, 26, 26, 0.6);
  --lumo-shade-70pct: rgba(26, 26, 26, 0.7);
  --lumo-shade-80pct: rgba(26, 26, 26, 0.8);
  --lumo-shade-90pct: rgba(26, 26, 26, 0.9);
  --lumo-shade: hsl(0, 0%, 10%);
}

[theme~="dark"] {
  --lumo-primary-text-color: rgb(233, 141, 88);
  --lumo-primary-color-50pct: rgba(235, 89, 5, 0.5);
  --lumo-primary-color-10pct: rgba(235, 89, 5, 0.1);
  --lumo-primary-color: rgb(235, 89, 5);
  --lumo-base-color: rgb(45, 45, 45);
}

/* ===== Component Font Sizing ===== */
html {
  font-size: var(--lumo-font-size-s);
}

vaadin-button,
vaadin-grid,
vaadin-text-field,
vaadin-password-field,
vaadin-text-area,
vaadin-select,
vaadin-combo-box,
vaadin-checkbox,
vaadin-radio-button,
vaadin-date-picker,
vaadin-time-picker,
vaadin-upload,
vaadin-tabs,
vaadin-tab,
vaadin-details,
vaadin-notification-card,
vaadin-dialog-overlay,
vaadin-confirm-dialog-overlay,
vaadin-context-menu-overlay,
vaadin-side-nav,
vaadin-side-nav-item {
  font-size: var(--lumo-font-size-s);
}

/* ===== Button Polish ===== */
vaadin-button:not([theme~="tertiary"]) {
  background-image: linear-gradient(
    to bottom,
    rgba(255, 255, 255, 0.12),
    rgba(0, 0, 0, 0.08)
  );
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15),
              inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

vaadin-button[theme~="primary"] {
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3);
}

/* ===== Toggle Checkbox ===== */
vaadin-checkbox[theme~="toggle-button"] {
  --vaadin-checkbox-size: 2em;
}

vaadin-checkbox[theme~="toggle-button"]::part(checkbox) {
  border-radius: 1em;
  width: 2.5em;
  height: 1.4em;
  background: var(--lumo-contrast-30pct);
  border: none;
  transition: background-color 0.2s;
}

vaadin-checkbox[theme~="toggle-button"]::part(checkbox)::after {
  content: "";
  position: absolute;
  top: 0.15em;
  left: 0.15em;
  width: 1.1em;
  height: 1.1em;
  border-radius: 50%;
  background: white;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
  transition: transform 0.2s;
}

vaadin-checkbox[theme~="toggle-button"][checked]::part(checkbox) {
  background: var(--lumo-primary-color);
}

vaadin-checkbox[theme~="toggle-button"][checked]::part(checkbox)::after {
  transform: translateX(1.1em);
}

/* ===== AppLayout Parts ===== */
vaadin-app-layout::part(navbar) {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}

vaadin-app-layout::part(drawer) {
  border-right: 1px solid var(--lumo-contrast-10pct);
}

/* ===== Login View ===== */
.login-view {
  background: linear-gradient(135deg, var(--lumo-shade-5pct) 0%, var(--lumo-shade-10pct) 100%);
}

.login-card {
  background: var(--lumo-base-color);
  border-radius: var(--lumo-border-radius-l);
  box-shadow: var(--lumo-box-shadow-m);
  padding: var(--lumo-space-xl);
  max-width: 400px;
  width: 100%;
}

.login-logo {
  height: 64px;
  margin-bottom: var(--lumo-space-m);
}

.login-title {
  margin-top: 0;
  margin-bottom: var(--lumo-space-l);
  color: var(--lumo-header-text-color);
}

.login-separator {
  color: var(--lumo-secondary-text-color);
  font-size: var(--lumo-font-size-s);
  margin: var(--lumo-space-m) 0;
  text-align: center;
}

/* ===== Dashboard Cards ===== */
.stat-card {
  background: var(--lumo-base-color);
  border-radius: var(--lumo-border-radius-l);
  box-shadow: var(--lumo-box-shadow-s);
  padding: var(--lumo-space-l);
  transition: box-shadow 0.2s, transform 0.2s;
  min-width: 150px;
}

.stat-card:hover {
  box-shadow: var(--lumo-box-shadow-m);
  transform: translateY(-2px);
}

.tenant-card {
  background: var(--lumo-base-color);
  border-radius: var(--lumo-border-radius-l);
  box-shadow: var(--lumo-box-shadow-s);
  padding: var(--lumo-space-m);
  cursor: pointer;
  transition: box-shadow 0.2s, transform 0.2s;
  width: 300px;
}

.tenant-card:hover {
  box-shadow: var(--lumo-box-shadow-m);
  transform: translateY(-2px);
}

/* ===== Loading Spinner ===== */
.v-loading-indicator {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: auto;
  animation: fadein 0.3s ease-out 0.2s normal 1 both;
  z-index: 2147483647;
}

.v-loading-indicator::before {
  width: 100px;
  height: 100px;
  display: block;
  top: calc(50vh - 61px);
  left: calc(50vw - 61px);
  border-radius: 50%;
  border: 0.7em solid var(--lumo-primary-contrast-color);
  border-color: var(--lumo-primary-contrast-color) transparent var(--lumo-primary-contrast-color) transparent;
  animation: spinner 1.5s linear infinite;
  content: "";
  position: fixed;
}

@keyframes spinner {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes fadein {
  0% { background: rgba(0, 0, 0, 0); }
  100% { background: rgba(0, 0, 0, 0.5); }
}

/* ===== Confirm Dialog Header ===== */
vaadin-confirm-dialog-overlay::part(header) {
  background-color: var(--lumo-shade);
  color: var(--lumo-primary-contrast-color);
}

/* ===== System Error ===== */
.v-system-error {
  color: var(--lumo-error-text-color);
  pointer-events: auto;
  border-radius: var(--lumo-border-radius-l);
  font-family: var(--lumo-font-family);
  box-shadow: var(--lumo-box-shadow-s);
}

.v-status-message {
  display: none;
}
