@import url("./alchemy-tokens.css");

/* Everything is scoped. Import after a framework reset, before app overrides. */
.alchemy-ui, .alchemy-ui *, .alchemy-ui *::before, .alchemy-ui *::after { box-sizing: border-box; }
.alchemy-ui {
  margin: 0;
  background: var(--al-bg);
  color: var(--al-text);
  font: var(--al-text-base)/var(--al-leading) var(--al-font-body);
  -webkit-font-smoothing: antialiased;
  accent-color: var(--al-primary);
}
.alchemy-ui :where(h1,h2,h3,p,ul,ol,dl,figure) { margin: 0; }
.alchemy-ui :where(h1,h2,h3) { font-family: var(--al-font-display); font-weight: 400; line-height: 1.15; text-wrap: balance; }
.alchemy-ui h1 { font-size: clamp(2rem, 4vw, 3rem); letter-spacing: -.025em; }
.alchemy-ui h2 { font-size: var(--al-text-xl); }
.alchemy-ui h3 { font-size: var(--al-text-lg); }
.alchemy-ui :where(button,input,select,textarea) { font: inherit; }
.alchemy-ui :where(button,select) { cursor: pointer; }
.alchemy-ui :where(a) { color: var(--al-link); text-underline-offset: .2em; }
.alchemy-ui :where(a:hover) { text-decoration-thickness: 2px; }
.alchemy-ui :where(img,svg) { max-width: 100%; }
.alchemy-ui :where(code,kbd,pre) { font-family: var(--al-font-mono); font-size: var(--al-text-sm); }
.alchemy-ui :where(pre) { padding: var(--al-space-4); background: var(--al-surface-raised); overflow: auto; }
.alchemy-ui :where(:focus-visible) { outline: 3px solid var(--al-focus); outline-offset: 3px; }
.alchemy-ui :where([hidden]) { display: none !important; }
.alchemy-ui ::selection { background: var(--al-brand-yellow); color: var(--al-brand-charcoal); }

.alchemy-ui .al-container { width: min(100% - 3rem, var(--al-content-width)); margin-inline: auto; }
.alchemy-ui .al-stack { display: flex; flex-direction: column; gap: var(--al-space-5); }
.alchemy-ui .al-stack--tight { gap: var(--al-space-3); }
.alchemy-ui .al-row { display: flex; align-items: center; flex-wrap: wrap; gap: var(--al-space-3); }
.alchemy-ui .al-between { justify-content: space-between; }
.alchemy-ui .al-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,17rem),1fr)); gap: var(--al-space-5); }
.alchemy-ui .al-muted { color: var(--al-muted); }
.alchemy-ui .al-small { font-size: var(--al-text-sm); }
.alchemy-ui .al-eyebrow { font-size: var(--al-text-xs); letter-spacing: var(--al-tracking-label); text-transform: uppercase; font-weight: 600; color: var(--al-muted); }
.alchemy-ui .al-numeric { font-variant-numeric: tabular-nums; }
.alchemy-ui .al-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.alchemy-ui .al-skip { position: absolute; top: -5rem; left: 1rem; z-index: 100; padding: .75rem 1rem; background: var(--al-surface); }
.alchemy-ui .al-skip:focus { top: 1rem; }

/* Website green masthead and distinctive single curved navigation corner. */
.alchemy-ui .al-topbar { background: var(--al-brand-green); color: var(--al-brand-charcoal); }
.alchemy-ui .al-topbar__inner { min-height: 3.75rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding-block: .5rem; }
.alchemy-ui .al-topbar__label { font-weight: 600; font-size: var(--al-text-sm); }
.alchemy-ui .al-nav { display: flex; flex-wrap: wrap; gap: 0; }
.alchemy-ui .al-nav a { color: var(--al-brand-white); background: var(--al-brand-nav); border-radius: 0; text-decoration: none; padding: .5rem 1rem; font-family: var(--al-font-nav); }
.alchemy-ui .al-nav a:first-child { border-top-left-radius: var(--al-radius-nav); }
.alchemy-ui .al-nav a:last-child { border-bottom-right-radius: var(--al-radius-nav); }
.alchemy-ui .al-nav a:hover, .alchemy-ui .al-nav a[aria-current]:not([aria-current="false"]) { background: var(--al-brand-active); }
.alchemy-ui .al-topbar :focus-visible { outline-color: #20251e; }
.alchemy-ui .al-brand { display: inline-flex; align-items: center; gap: 1rem; }
.alchemy-ui .al-brand img { width: 3.5rem; height: auto; display: block; }
.alchemy-ui .al-brand__name { font: 400 1.75rem/1 var(--al-font-display); letter-spacing: .025em; }
.alchemy-ui .al-brand__sub { display: block; font-size: var(--al-text-xs); letter-spacing: .14em; margin-top: .5rem; color: var(--al-muted); }

.alchemy-ui .al-panel { padding: var(--al-panel-padding); background: var(--al-surface); border: 1px solid var(--al-border); border-radius: var(--al-radius); min-width: 0; }
.alchemy-ui .al-panel--accent { border-top: 3px solid var(--al-brand-green); }
.alchemy-ui .al-panel--flush { padding: 0; overflow: hidden; }
.alchemy-ui .al-panel__header { padding: var(--al-panel-padding); border-bottom: 1px solid var(--al-border); }
.alchemy-ui .al-metric { display: flex; flex-direction: column; gap: .5rem; }
.alchemy-ui .al-metric__value { font: 400 2.5rem/1.15 var(--al-font-display); font-variant-numeric: tabular-nums; }
.alchemy-ui .al-metric__unit { font-size: 1rem; color: var(--al-muted); }

.alchemy-ui .al-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  min-height: var(--al-control-height); padding: .5rem 1rem;
  background: var(--al-primary); color: var(--al-on-primary);
  border: 1px solid transparent; border-radius: var(--al-radius);
  font-weight: 600; line-height: 1.35; text-align: center; text-decoration: none;
  transition: background-color var(--al-motion), border-color var(--al-motion);
}
.alchemy-ui .al-btn:hover:not(:disabled) { background: var(--al-primary-hover); }
.alchemy-ui .al-btn--secondary { background: transparent; color: var(--al-text); border-color: var(--al-control-border); }
.alchemy-ui .al-btn--secondary:hover:not(:disabled), .alchemy-ui .al-btn--quiet:hover:not(:disabled) { background: var(--al-surface-hover); }
.alchemy-ui .al-btn--quiet { background: transparent; color: var(--al-link); }
.alchemy-ui .al-btn--danger { background: var(--al-brand-red); color: white; }
.alchemy-ui .al-btn--danger:hover:not(:disabled) { background: #8b0000; }
.alchemy-ui .al-btn:disabled, .alchemy-ui :where(input,select,textarea):disabled { opacity: .5; cursor: not-allowed; }
.alchemy-ui .al-btn[aria-busy="true"]::before { content: ""; width: .875rem; height: .875rem; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: al-spin .8s linear infinite; }
@keyframes al-spin { to { transform: rotate(360deg); } }

.alchemy-ui .al-field { display: flex; flex-direction: column; gap: .5rem; min-width: 0; }
.alchemy-ui .al-field label, .alchemy-ui .al-label { font-weight: 600; font-size: var(--al-text-sm); }
.alchemy-ui .al-input, .alchemy-ui .al-select, .alchemy-ui .al-textarea {
  width: 100%; min-height: var(--al-control-height); padding: .625rem .75rem;
  border: 1px solid var(--al-control-border); border-radius: var(--al-radius);
  background: var(--al-bg); color: var(--al-text); line-height: 1.4;
}
.alchemy-ui .al-textarea { min-height: 7rem; resize: vertical; }
.alchemy-ui :where(input,textarea)::placeholder { color: var(--al-muted); opacity: 1; }
.alchemy-ui :where(.al-input,.al-select,.al-textarea):hover:not(:disabled) { border-color: var(--al-text); }
.alchemy-ui :where(.al-input,.al-select,.al-textarea)[aria-invalid="true"] { border: 2px solid var(--al-danger); }
.alchemy-ui .al-help { font-size: var(--al-text-sm); color: var(--al-muted); }
.alchemy-ui .al-error { font-size: var(--al-text-sm); color: var(--al-danger); }
.alchemy-ui .al-check { display: inline-flex; align-items: center; gap: .625rem; min-height: 2.75rem; cursor: pointer; }
.alchemy-ui .al-check input { width: 1.125rem; height: 1.125rem; margin: 0; flex: 0 0 auto; }
.alchemy-ui fieldset { border: 1px solid var(--al-border); margin: 0; padding: 1rem; min-width: 0; }
.alchemy-ui legend { padding-inline: .5rem; font-weight: 600; }

/* Native tables: keep overflow within this focusable, labelled region. */
.alchemy-ui .al-table-wrap { overflow-x: auto; }
.alchemy-ui .al-table { width: 100%; border-collapse: collapse; text-align: left; }
.alchemy-ui .al-table caption { text-align: left; padding: 1rem; color: var(--al-muted); font-size: var(--al-text-sm); }
.alchemy-ui .al-table :where(th,td) { padding: var(--al-cell-y) 1.25rem; border-bottom: 1px solid var(--al-border); }
.alchemy-ui .al-table th { color: var(--al-muted); font-size: var(--al-text-sm); font-weight: 600; background: var(--al-surface-raised); white-space: nowrap; }
.alchemy-ui .al-table tbody tr:last-child td { border-bottom: 0; }
.alchemy-ui .al-table tbody tr:hover { background: var(--al-surface-hover); }
.alchemy-ui .al-table tr[aria-selected="true"] { background: var(--al-selected); }
.alchemy-ui .al-table .al-number { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.alchemy-ui .al-badge { display: inline-flex; align-items: center; gap: .5rem; padding: .25rem .625rem; font-size: var(--al-text-sm); line-height: 1.4; background: var(--al-surface-raised); color: var(--al-muted); white-space: nowrap; }
.alchemy-ui .al-badge::before { content: ""; width: .375rem; height: .375rem; background: currentColor; border-radius: 50%; flex: 0 0 auto; }
.alchemy-ui .al-badge--success, .alchemy-ui .al-alert--success { color: var(--al-success); background: var(--al-success-bg); }
.alchemy-ui .al-badge--warning, .alchemy-ui .al-alert--warning { color: var(--al-warning); background: var(--al-warning-bg); }
.alchemy-ui .al-badge--danger, .alchemy-ui .al-alert--danger { color: var(--al-danger); background: var(--al-danger-bg); }
.alchemy-ui .al-badge--info, .alchemy-ui .al-alert--info { color: var(--al-info); background: var(--al-info-bg); }
.alchemy-ui .al-alert { padding: 1rem 1.25rem; border-inline-start: 3px solid currentColor; }
.alchemy-ui .al-progress { width: 100%; height: .5rem; appearance: none; border: 0; background: var(--al-surface-hover); accent-color: var(--al-primary); }
.alchemy-ui .al-progress::-webkit-progress-bar { background: var(--al-surface-hover); }
.alchemy-ui .al-progress::-webkit-progress-value { background: var(--al-primary); }
.alchemy-ui .al-progress::-moz-progress-bar { background: var(--al-primary); }
.alchemy-ui .al-empty { text-align: center; padding: 2.5rem 1.5rem; border: 1px dashed var(--al-control-border); }
.alchemy-ui .al-empty p { max-width: 36rem; margin: .75rem auto 0; color: var(--al-muted); }
.alchemy-ui details { border-block: 1px solid var(--al-border); padding: 1rem 0; }
.alchemy-ui summary { cursor: pointer; font-weight: 600; }
.alchemy-ui details[open] > summary { margin-bottom: 1rem; }

@media (max-width: 40rem) {
  .alchemy-ui .al-container { width: calc(100% - 2rem); }
  .alchemy-ui .al-topbar__inner { align-items: flex-start; flex-direction: column; }
  .alchemy-ui .al-nav a { padding-inline: .75rem; }
  .alchemy-ui .al-panel { --al-panel-padding: 1rem; }
}
@media (prefers-reduced-motion: reduce) {
  .alchemy-ui *, .alchemy-ui *::before, .alchemy-ui *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) {
  .alchemy-ui .al-btn, .alchemy-ui .al-badge, .alchemy-ui .al-panel, .alchemy-ui .al-alert { border: 1px solid CanvasText; }
  .alchemy-ui .al-nav a[aria-current]:not([aria-current="false"]) { border-bottom: 3px solid Highlight; }
}
