sl-button,
sl-button[type],
sl-button[variant],
sl-button[size],
sl-button[href] {
  display: inline-block;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  line-height: inherit;
  box-shadow: none;
  vertical-align: middle;
}

sl-button sl-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: currentColor;
  font-size: 1em;
  line-height: 1;
}

sl-button::part(base) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-wrap: nowrap;
  box-sizing: border-box;
  width: auto;
  border-radius: 0;
  border-width: 1px;
  min-height: 2.55rem;
  padding-inline: 0.95rem;
  font-family: var(--font-body);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  white-space: nowrap;
  box-shadow: none;
}

sl-button::part(prefix),
sl-button::part(label),
sl-button::part(suffix),
sl-button::part(caret) {
  line-height: 1;
}

sl-button[size="small"]::part(base) {
  min-height: 2.2rem;
  padding-inline: 0.8rem;
}

sl-button[size="large"]::part(base) {
  min-height: 3rem;
  padding-inline: 1.25rem;
}

sl-button[variant="default"]::part(base),
sl-button[variant="neutral"]::part(base) {
  background: color-mix(in srgb, var(--paper-strong) 68%, transparent 32%);
  color: var(--ink);
  border-color: var(--rule-strong);
}

sl-button[variant="default"]:hover::part(base),
sl-button[variant="neutral"]:hover::part(base) {
  background: color-mix(in srgb, var(--paper-deep) 70%, transparent 30%);
  border-color: var(--ink);
}

sl-button[variant="primary"]::part(base) {
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--accent) 92%, white 8%),
    var(--accent));
  color: var(--pico-primary-inverse);
  border-color: var(--accent-deep);
}

sl-button[variant="primary"]:hover::part(base) {
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--accent) 88%, black 12%),
    color-mix(in srgb, var(--accent) 84%, black 16%));
  color: var(--pico-primary-inverse);
  border-color: var(--accent-deep);
}

sl-button[variant="success"]::part(base) {
  background: color-mix(in srgb, var(--success) 86%, var(--paper) 14%);
  border-color: var(--success);
  color: var(--panel-strong);
}

sl-button[variant="warning"]::part(base) {
  background: color-mix(in srgb, var(--warning) 86%, var(--paper) 14%);
  border-color: var(--warning);
  color: var(--ink);
}

sl-button[variant="danger"]::part(base) {
  background: color-mix(in srgb, var(--danger) 86%, var(--paper) 14%);
  border-color: var(--danger);
  color: var(--panel-strong);
}

sl-button[outline]::part(base) {
  background: transparent;
}

sl-button[outline][variant="default"]::part(base),
sl-button[outline][variant="neutral"]::part(base) {
  background: transparent;
  color: var(--ink);
  border-color: var(--rule-strong);
}

sl-button[outline][variant="primary"]::part(base) {
  background: transparent;
  color: var(--accent-deep);
  border-color: color-mix(in srgb, var(--accent-deep) 72%, var(--rule) 28%);
}

sl-button[outline][variant="success"]::part(base) {
  background: transparent;
  color: var(--success);
  border-color: color-mix(in srgb, var(--success) 74%, var(--rule) 26%);
}

sl-button[outline][variant="warning"]::part(base) {
  background: transparent;
  color: var(--warning);
  border-color: color-mix(in srgb, var(--warning) 74%, var(--rule) 26%);
}

sl-button[outline][variant="danger"]::part(base) {
  background: transparent;
  color: var(--danger);
  border-color: color-mix(in srgb, var(--danger) 74%, var(--rule) 26%);
}

sl-button[outline][variant="default"]:hover::part(base),
sl-button[outline][variant="neutral"]:hover::part(base) {
  background: color-mix(in srgb, var(--paper-deep) 44%, transparent 56%);
  color: var(--ink);
  border-color: var(--ink);
}

sl-button[outline][variant="primary"]:hover::part(base) {
  background: color-mix(in srgb, var(--accent) 16%, transparent 84%);
  color: var(--accent-deep);
  border-color: var(--accent-deep);
}

sl-button[outline][variant="success"]:hover::part(base) {
  background: color-mix(in srgb, var(--success) 14%, transparent 86%);
  color: var(--success);
  border-color: var(--success);
}

sl-button[outline][variant="warning"]:hover::part(base) {
  background: color-mix(in srgb, var(--warning) 16%, transparent 84%);
  color: var(--warning);
  border-color: var(--warning);
}

sl-button[outline][variant="danger"]:hover::part(base) {
  background: color-mix(in srgb, var(--danger) 14%, transparent 86%);
  color: var(--danger);
  border-color: var(--danger);
}

sl-button[variant="text"]::part(base) {
  background: transparent;
  border-color: transparent;
  color: var(--ink);
}

sl-button[disabled]::part(base) {
  opacity: 0.56;
}

sl-input::part(form-control-label),
sl-textarea::part(form-control-label),
sl-select::part(form-control-label) {
  margin-bottom: 0.45rem;
  color: var(--muted);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

sl-input::part(base),
sl-textarea::part(base),
sl-select::part(combobox) {
  border-radius: 0;
  border: 1px solid var(--rule-strong);
  background: var(--pico-form-element-background-color);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.06);
}

sl-input::part(base):hover,
sl-textarea::part(base):hover,
sl-select::part(combobox):hover {
  border-color: var(--ink);
}

sl-input::part(input),
sl-textarea::part(textarea),
sl-select::part(display-input) {
  color: var(--ink);
  font-family: var(--font-body);
}

sl-input[input-size="large"]::part(base),
sl-input[size="large"]::part(base) {
  min-height: 3.35rem;
}

sl-select[size="small"]::part(combobox) {
  min-height: 2.2rem;
}

sl-select[size="large"]::part(combobox) {
  min-height: 3rem;
}

sl-textarea::part(textarea) {
  min-height: 8rem;
}

sl-alert {
  display: block;
}

sl-alert::part(base) {
  border-radius: 0;
  border-width: 1px;
  background: var(--panel);
  box-shadow: var(--surface-shadow);
}

sl-alert[variant="primary"]::part(base) {
  border-color: rgba(var(--hiisi-accent-rgb), 0.45);
  background: color-mix(in srgb, var(--panel-accent) 74%, var(--panel-strong) 26%);
}

sl-alert[variant="success"]::part(base) {
  border-color: color-mix(in srgb, var(--success) 70%, var(--rule) 30%);
}

sl-alert[variant="warning"]::part(base) {
  border-color: color-mix(in srgb, var(--warning) 72%, var(--rule) 28%);
}

sl-alert[variant="danger"]::part(base) {
  border-color: color-mix(in srgb, var(--danger) 72%, var(--rule) 28%);
}

sl-dialog::part(panel) {
  border-radius: 0;
  border: 1px solid var(--rule-strong);
  background: var(--panel-strong);
  box-shadow: var(--surface-shadow-strong);
}

sl-dialog::part(header) {
  border-bottom: 1px solid var(--rule);
  padding: 1rem 1.15rem 0.95rem;
}

sl-dialog::part(title) {
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 0.84rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

sl-dialog::part(body) {
  padding: 1.15rem;
}

sl-dialog::part(footer) {
  border-top: 1px solid var(--rule);
  padding: 1rem 1.15rem;
}

sl-details::part(base) {
  border-radius: 0;
  border: 1px solid var(--rule);
  background: color-mix(in srgb, var(--panel) 84%, transparent 16%);
  box-shadow: none;
}

sl-details::part(summary) {
  padding: 0.85rem 1rem;
  font-weight: 700;
}

sl-details::part(content) {
  padding: 0 1rem 1rem;
}

sl-card::part(base) {
  border-radius: 0;
  border: 1px solid var(--rule);
  background: var(--panel);
  box-shadow: var(--surface-shadow);
}

sl-progress-bar::part(base) {
  border-radius: 0;
  background: var(--pico-progress-background-color);
}

sl-badge::part(base) {
  border-radius: 0;
  font-family: var(--font-body);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

sl-menu::part(base),
sl-dropdown::part(panel) {
  border-radius: 0;
  border: 1px solid var(--rule-strong);
  background: var(--panel-strong);
  box-shadow: var(--surface-shadow-strong);
}

sl-menu-item::part(base) {
  border-radius: 0;
}

sl-menu-item::part(label) {
  font-family: var(--font-body);
}

sl-radio-group.theme-toggle {
  display: inline-flex;
}

.theme-toggle sl-radio-button {
  color: var(--muted-strong);
}

.theme-toggle sl-radio-button::part(button) {
  min-height: 2.35rem;
  border-radius: 0;
  border: 1px solid var(--rule-strong);
  background: color-mix(in srgb, var(--paper-strong) 68%, transparent 32%);
  color: var(--muted-strong);
}

.theme-toggle sl-radio-button:not([checked]):hover::part(button),
.theme-toggle sl-radio-button:not([checked]):focus-visible::part(button) {
  background: color-mix(in srgb, var(--panel-accent) 54%, var(--paper-strong) 46%);
  border-color: var(--accent);
  color: var(--ink);
}

.theme-toggle sl-radio-button[checked],
.theme-toggle sl-radio-button[checked]:hover,
.theme-toggle sl-radio-button[checked]:focus-visible {
  color: var(--ink);
}

.theme-toggle sl-radio-button[checked]::part(button),
.theme-toggle sl-radio-button[checked]:hover::part(button),
.theme-toggle sl-radio-button[checked]:focus-visible::part(button) {
  background: rgba(var(--hiisi-accent-rgb), 0.12);
  border-color: var(--accent-deep);
  color: var(--ink);
}

.theme-toggle sl-radio-button::part(label) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: currentColor;
}

.theme-toggle sl-radio-button sl-icon {
  color: currentColor;
}
