/**
 * AKSRT Buttons — 1:1 Zibll Alignment
 *
 * 对齐 zibll .but 系统：
 * - 正常字重 (normal)
 * - 4px 圆角
 * - 灰色默认背景
 * - opacity hover
 */

.btn,
.btn-primary,
.btn-outline,
.btn-ghost,
.btn-danger {
  --btn-h: 34px;
  --btn-px: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: var(--btn-h);
  padding: 0 var(--btn-px);
  font-size: var(--text-sm);
  font-weight: normal; /* zibll .but: normal — was 500 */
  line-height: 1.44;
  border: 1px solid transparent;
  border-radius: var(--radius-btn);
  cursor: pointer;
  white-space: nowrap;
  user-select: none;
  text-decoration: none;
  box-shadow: none;
  transition: opacity 0.15s ease,
              background 0.15s ease,
              border-color 0.15s ease,
              color 0.15s ease,
              box-shadow 0.15s ease;
}

/* 尺寸变体 */
.btn-sm { --btn-h: 28px; --btn-px: 8px; font-size: var(--text-xs); }
.btn-lg { --btn-h: 44px; --btn-px: 18px; font-size: var(--text-base); }

/* === Default (gray background, like zibll .but default) === */
.btn {
  background: rgba(136, 136, 136, 0.1);
  color: #888;
  border-color: transparent;
}

.btn:hover {
  opacity: 0.8;
  color: #888;
}

/* === Primary — solid theme, opacity hover (no translateY / heavy glow) === */
.btn-primary {
  background: var(--color-primary);
  color: var(--color-on-primary);
  border-color: var(--color-primary);
  box-shadow: none;
}

.btn-primary:hover {
  opacity: 0.8;
  color: var(--color-on-primary);
  background: var(--color-primary);
  border-color: var(--color-primary);
  transform: none;
  box-shadow: none;
}

.btn-primary:active {
  opacity: 1;
  box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.08);
}

/* === Outline === */
.btn-outline {
  background: transparent;
  color: var(--color-ink-2);
  border-color: var(--color-ink-2);
}

.btn-outline:hover {
  opacity: 0.8;
  background: transparent;
  border-color: var(--color-ink-2);
  color: var(--color-ink-2);
}

/* === Ghost === */
.btn-ghost {
  background: transparent;
  color: var(--color-ink-2);
  border-color: transparent;
}

.btn-ghost:hover {
  background: rgba(136, 136, 136, 0.1);
  opacity: 0.8;
}

/* === Danger === */
.btn-danger {
  background: var(--color-error);
  color: #fff;
  border-color: var(--color-error);
}

.btn-danger:hover {
  opacity: 0.8;
  color: #fff;
}

/* === Disabled === */
.btn:disabled,
.btn-primary:disabled,
.btn-outline:disabled,
.btn-ghost:disabled,
.btn-danger:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* === Icon button === */
.btn-icon {
  width: var(--btn-h);
  padding: 0;
  justify-content: center;
}

.btn-icon.btn-sm { width: 28px; }
.btn-icon.btn-lg { width: 44px; }

/* === Full width === */
.btn-block {
  width: 100%;
}

/* ============================================================
 * Zibll .but / .badg compat layer — 1:1 zibll main.css (.but system)
 * ------------------------------------------------------------
 * Additive: does NOT alter the AKSRT .btn system above. Lets reused
 * zibll-style markup (.but / .badg / .b-* / .jb-* / .c-* / .but-group /
 * .but-average / .toggle-radius) render via the --this-* context-coloring vars.
 * The --this-* DEFAULTS are set on the base rule here (BEFORE the .b-*/.jb-*
 * modifiers) so the cascade resolves colored variants correctly; scoped to
 * .but/.badg (never :root) so .float-btn's own var(--this-*, fallback) stays intact.
 * Consumes --focus-color-opacity* from zibll-compat-vars.css.
 * ============================================================ */

/* Base (zibll .but / .badg) */
.but,
.badg {
  display: inline-block;
  vertical-align: middle;
  padding: 0.3em 0.6em;
  text-align: center;
  font-weight: normal;
  line-height: 1.44;
  border-radius: 4px;
  border: 1px solid var(--this-border);
  box-shadow: var(--this-shadow);
  background: var(--this-bg);
  color: var(--this-color);
  --main-color: var(--this-color);
  --this-bg: rgba(136, 136, 136, 0.1);
  --this-border: transparent;
  --this-shadow: none;
  --this-color: #888;
  text-shadow: 0 0 0;
  transition: 0.15s;
  cursor: pointer;
}

.but a { color: inherit; }

.but .icon,
.but > .fa:not(.fa-angle-right),
.but > .fas:not(.fa-angle-right),
.but > .far:not(.fa-angle-right),
.but > .fab:not(.fa-angle-right),
.but > i[class*="fa-"]:not(.fa-angle-right) { margin-right: 0.25em; }

/* hover / active */
.but:focus,
.but:hover { opacity: 0.8; color: var(--this-color); }
.but:active { --this-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.08); }

/* radius variants */
.but.radius,
.badg.radius,
.radius > .but { border-radius: 50px; padding: 0.3em 1em; }
.but.main-radius,
.badg.main-radius { border-radius: var(--main-radius); }
.but.mini-radius,
.badg.mini-radius { border-radius: var(--mini-radius); }

/* hollow (outline) */
.but.hollow,
.badg.hollow { background: transparent; --this-border: var(--this-color); }
.but.hollow:hover { background: var(--this-bg); }
.badg.hollow[class*='b-'],
.but.hollow[class*='b-'] { background: 0 0; --this-border: var(--this-bg); --this-color: var(--this-bg); }
.but.hollow[class*='b-']:hover { color: #fff; }
.but.hollow.c-white:hover { background: 0 0; --this-color: var(--focus-color); color: var(--focus-color); }

/* circular icon button */
.circular,
.badg.cir,
.but.cir {
  padding: 0;
  border-radius: 5em;
  --this-size: 1.8em;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  height: var(--this-size);
  min-width: var(--this-size);
}
.circular.radius4,
.badg.cir.radius4,
.but.cir.radius4 { border-radius: 4px; }
.but.cir svg.icon,
.but.cir > .fa { margin: 0; }

/* button group (joined) */
.but-group { display: inline-flex; }
.but-group > .but { border-radius: 0; margin: 0; }
.but-group > .but:first-of-type { border-radius: 4px 0 0 4px; }
.but-group > .but:last-of-type { border-radius: 0 4px 4px 0; }

/* segmented control (equal-width) */
.but-average { display: flex; border-radius: 4px; overflow: hidden; }
.but-average.inline { display: inline-flex; }
.but-average.radius { border-radius: 100px; }
.but-average.main-radius { border-radius: var(--main-radius); }
.but-average.mini-radius { border-radius: var(--mini-radius); }
.but-average > .but { margin: 0 !important; border-radius: 0; flex: auto; }
.but-average > .but.active { --this-bg: var(--focus-color-opacity1); --this-color: var(--focus-color); }

/* size variants */
.but.but-sm { font-size: 0.9em; padding: 0.1em 0.4em; vertical-align: 0.05em; }
.but.badg-sm,
.badg.badg-sm { font-size: 0.8em; padding: 0 0.2em; vertical-align: 0.1em; min-width: 1.6em; }
.badg.badg-sm.cir { --this-size: 1.6em; }
.padding-lg,
.badg.badg-lg,
.but.padding-lg { padding: 0.5em 2em; }

/* active badge state */
.active.badg,
.active > .badg:not(.vip-tag) { --this-bg: var(--focus-color); --this-color: #fff; }
.active.badg.hollow,
.active > .hollow:not(.vip-tag) { --this-color: var(--focus-color); }

/* toggle-radius (round 29px toggle) — zibll 1:1 */
.toggle-radius {
  background: var(--this-bg);
  width: 29px;
  height: 29px;
  display: inline-block;
  text-align: center;
  border-radius: 100%;
  position: relative;
  vertical-align: text-top;
  --this-bg: var(--main-border-color);
}
/* zibll groups these with abs-* : absolute + vertical center; then pin left/right 0 */
.toggle-radius .fa,
.toggle-radius .icon,
.toggle-radius > i {
  position: absolute;
  top: 50%;
  right: 0 !important;
  left: 0 !important;
  margin: auto;
  transform: translateY(-50%);
  line-height: 1;
  width: 1em;
  height: 1em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

/* solid color modifiers — set --this-bg; default --this-color white */
.b-gray, .b-theme, .b-red, .b-yellow, .b-blue, .b-blue-2, .b-black,
.b-cyan, .b-green, .b-purple,
.jb-red, .jb-pink, .jb-yellow, .jb-blue, .jb-green, .jb-purple,
.jb-vip1, .jb-vip2 {
  color: var(--this-color);
  background: var(--this-bg);
  --this-color: #fff;
}
.jb-red, .jb-pink, .jb-yellow, .jb-blue, .jb-green, .jb-purple,
.jb-vip1, .jb-vip2 { border: none; }

.b-theme  { --this-bg: var(--focus-color); }
.b-gray   { --this-bg: #818b95; }
.b-red    { --this-bg: #ff5473; }
.b-yellow { --this-bg: #ff6f06; }
.b-cyan   { --this-bg: #08c4c1; }
.b-blue   { --this-bg: #2997f7; }
.b-blue-2 { --this-bg: #5c7cff; }
.b-green  { --this-bg: #12b928; }
.b-purple { --this-bg: #d448f5; }
.b-black  { --this-bg: #121517; }

/* gradient modifiers (zibll .jb-*) */
.jb-red    { --this-bg: linear-gradient(135deg, #fd7a64 10%, #fb2d2d 100%); }
.jb-yellow { --this-bg: linear-gradient(135deg, #f99d4d 10%, #f7631d 100%); }
.jb-blue   { --this-bg: linear-gradient(135deg, #59c3fb 10%, #268df7 100%); }
.jb-green  { --this-bg: linear-gradient(135deg, #60e464 10%, #5cb85b 100%); }
.jb-purple { --this-bg: linear-gradient(135deg, #f98dfb 10%, #ea00f9 100%); }
.jb-pink   { --this-bg: linear-gradient(135deg, #ff5e7f 30%, #ff967e 100%); }
.jb-vip1   { --this-bg: linear-gradient(25deg, #eabe7b 10%, #f5e3c7 70%, #edc788 100%); --this-color: #866127; }
.jb-vip2   { --this-bg: linear-gradient(317deg, #4d4c4c 30%, #7b7b7b 70%, #5f5c5c 100%); --this-color: #ddd; }

/* text-color modifiers (zibll .c-*) — set --this-color + light --this-bg */
.c-theme, .c-gray, .c-white, .c-red, .c-red-2, .c-yellow, .c-blue, .c-blue-2,
.c-green, .c-cyan, .c-purple { color: var(--this-color); }
.c-theme  { --this-color: var(--focus-color); --this-bg: var(--focus-color-opacity1); }
.c-gray   { --this-color: #888;     --this-bg: rgba(136, 136, 136, 0.1); }
.c-white  { --this-color: #fff;     --this-bg: rgba(255, 255, 255, 0.1); }
.c-red    { --this-color: #ff5473;  --this-bg: rgba(255, 84, 115, 0.1); }
.c-red-2  { --this-color: #d6064c;  --this-bg: rgba(194, 41, 46, 0.1); }
.c-yellow { --this-color: #ff6f06;  --this-bg: rgba(255, 111, 6, 0.1); }
.c-blue   { --this-color: #2997f7;  --this-bg: rgba(41, 151, 247, 0.1); }
