/* panel skin */
 * Loaded after the pinned V2Board Dashmix/Bootstrap assets. Keep this file
 * presentational: it does not alter navigation, API, authentication or forms.
 */
:root {
  color-scheme: dark;
  --v2b-canvas: #070908;
  --v2b-surface-1: #10130f;
  --v2b-surface-2: #161a14;
  --v2b-surface-3: #1c2119;
  --v2b-ink: #f2f6ee;
  --v2b-ink-muted: #c4ccbc;
  --v2b-ink-subtle: #a8b29f;
  --v2b-ink-placeholder: #a1ac98;
  --v2b-primary: #2dff8c;
  --v2b-primary-hover: #5bffaa;
  --v2b-primary-soft: rgba(45, 255, 140, 0.12);
  --v2b-danger: #ff8981;
  --v2b-warning: #ffd080;
  --v2b-hairline: rgba(255, 255, 255, 0.09);
  --v2b-hairline-strong: rgba(255, 255, 255, 0.15);
  --v2b-radius-control: 10px;
  --v2b-radius-card: 14px;
  --v2b-shadow-card: 0 12px 32px rgba(0, 0, 0, 0.28);
  --v2b-shadow-dialog: 0 28px 72px rgba(0, 0, 0, 0.52);
  --v2b-sidebar-width: 216px;

  --bs-body-color: var(--v2b-ink);
  --bs-body-bg: var(--v2b-canvas);
  --bs-border-color: var(--v2b-hairline);
  --bs-primary: var(--v2b-primary);
}

html {
  min-height: 100%;
  color-scheme: dark;
  background: var(--v2b-canvas);
  scroll-behavior: smooth;
}

body {
  min-width: 320px;
  min-height: 100vh;
  color: var(--v2b-ink) !important;
  background:
    radial-gradient(ellipse 880px 500px at 8% -10%, rgba(45, 255, 140, 0.085), transparent 60%),
    radial-gradient(ellipse 640px 360px at 96% 0%, rgba(94, 224, 200, 0.045), transparent 54%),
    linear-gradient(180deg, #0a0d0a 0%, var(--v2b-canvas) 48%, #080a07 100%) !important;
  background-color: var(--v2b-canvas) !important;
  background-attachment: fixed;
  font-family: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

#app,
#page-container,
#main-container,
.ant-layout,
.ant-pro-layout {
  min-width: 0;
  color: var(--v2b-ink);
  background-color: transparent !important;
}

body,
button,
input,
select,
textarea {
  font-family: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
}

button,
a {
  -webkit-tap-highlight-color: transparent;
}

a,
.link-primary,
.text-primary {
  color: var(--v2b-primary) !important;
  text-decoration-color: rgba(45, 255, 140, 0.55);
  text-underline-offset: 3px;
  transition: color 160ms ease, text-decoration-color 160ms ease;
}

a:hover,
.link-primary:hover {
  color: var(--v2b-primary-hover) !important;
  text-decoration: underline;
}

:focus-visible {
  outline: 2px solid var(--v2b-primary) !important;
  outline-offset: 2px !important;
}

::selection {
  color: #04140b;
  background: var(--v2b-primary);
}

::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  border: 2px solid transparent;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.16);
  background-clip: padding-box;
}

::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.25);
  background-clip: padding-box;
}

/* Native Dashmix frame: keep its visibility, drawer and collapse behavior. */
#sidebar {
  width: var(--v2b-sidebar-width);
  color: var(--v2b-ink-muted);
  background:
    linear-gradient(180deg, rgba(45, 255, 140, 0.035), transparent 32%),
    var(--v2b-surface-1) !important;
  border-right: 1px solid var(--v2b-hairline) !important;
  box-shadow: 4px 0 24px rgba(0, 0, 0, 0.15);
}

#page-container.sidebar-mini #sidebar {
  width: 68px;
}

#sidebar-header,
#sidebar .content-header,
#page-header,
#page-footer,
.ant-layout-header {
  color: var(--v2b-ink);
  background: rgba(7, 9, 8, 0.9) !important;
  border-bottom: 1px solid var(--v2b-hairline) !important;
}

#page-header {
  min-height: 60px;
}

/* Keep header utilities visually quiet while preserving their touch targets. */
#page-header .btn,
#page-header .ant-btn {
  min-width: 44px;
  min-height: 44px;
  padding: 8px 12px;
  color: var(--v2b-ink-muted) !important;
  background: rgba(255, 255, 255, 0.035) !important;
  border: 1px solid var(--v2b-hairline) !important;
  border-radius: var(--v2b-radius-control) !important;
  box-shadow: none !important;
}

#page-header .btn-primary,
#page-header .ant-btn-primary,
#page-header .btn-success,
#page-header .ant-btn-success {
  color: var(--v2b-ink-muted) !important;
  background: rgba(255, 255, 255, 0.035) !important;
  border-color: var(--v2b-hairline) !important;
  box-shadow: none !important;
}

#page-header .btn:hover,
#page-header .btn:focus,
#page-header .ant-btn:hover,
#page-header .ant-btn:focus {
  color: var(--v2b-ink) !important;
  background: rgba(255, 255, 255, 0.075) !important;
  border-color: var(--v2b-hairline-strong) !important;
  box-shadow: none !important;
}

#page-header .btn:focus-visible,
#page-header .ant-btn:focus-visible {
  outline: 2px solid rgba(45, 255, 140, 0.55) !important;
  outline-offset: 2px;
}

#page-header .btn:disabled,
#page-header .btn.disabled,
#page-header .ant-btn[disabled],
#page-header .ant-btn-disabled {
  color: var(--v2b-ink-subtle) !important;
  background: rgba(255, 255, 255, 0.02) !important;
  border-color: var(--v2b-hairline) !important;
  opacity: 0.62;
  cursor: not-allowed;
}

#page-header .btn .fa,
#page-header .btn .fas,
#page-header .btn .far,
#page-header .btn .fab,
#page-header .btn .glyphicon,
#page-header .ant-btn .anticon,
#page-header .ant-btn svg {
  color: var(--v2b-ink-muted) !important;
  font-size: 18px;
  opacity: 1 !important;
}

#page-footer {
  color: var(--v2b-ink-muted);
  border-top: 1px solid var(--v2b-hairline) !important;
  border-bottom: 0 !important;
}

#sidebar .content-side,
#sidebar .sidebar-content,
#sidebar .sidebar-block {
  color: var(--v2b-ink-muted);
  background-color: transparent;
}

#sidebar .nav-main-link,
#sidebar .nav-main-submenu .nav-main-link {
  min-height: 42px;
  margin: 3px 8px;
  padding: 9px 12px;
  color: var(--v2b-ink-subtle) !important;
  border: 1px solid transparent;
  border-radius: var(--v2b-radius-control);
  transition: color 160ms ease, background-color 160ms ease, border-color 160ms ease;
}

#sidebar .nav-main-link:hover,
#sidebar .nav-main-item.open > .nav-main-link,
#sidebar .nav-main-link.active,
#sidebar .nav-main-item.active > .nav-main-link {
  color: var(--v2b-ink) !important;
  background: rgba(255, 255, 255, 0.045);
  border-color: var(--v2b-hairline);
}

#sidebar .nav-main-link.active,
#sidebar .nav-main-item.active > .nav-main-link {
  color: var(--v2b-primary) !important;
  background: var(--v2b-primary-soft);
  border-color: rgba(45, 255, 140, 0.22);
}

#sidebar .nav-main-link-icon,
#sidebar .nav-main-link:hover .nav-main-link-icon,
#sidebar .nav-main-link.active .nav-main-link-icon {
  color: currentColor;
}

#sidebar .nav-main-submenu {
  background: rgba(0, 0, 0, 0.12);
  border-radius: var(--v2b-radius-control);
}

body.sidebar-dark #sidebar .nav-main-link:hover,
body.sidebar-dark #sidebar .nav-main-item.open > .nav-main-link,
body .sidebar-dark #sidebar .nav-main-link:hover,
body .sidebar-dark #sidebar .nav-main-item.open > .nav-main-link,
#page-container.sidebar-dark #sidebar .nav-main-link:hover,
#page-container.sidebar-dark #sidebar .nav-main-item.open > .nav-main-link,
body.sidebar-dark #sidebar .nav-main-submenu .nav-main-link:hover,
body .sidebar-dark #sidebar .nav-main-submenu .nav-main-link:hover,
#page-container.sidebar-dark #sidebar .nav-main-submenu .nav-main-link:hover {
  color: var(--v2b-ink) !important;
  background: rgba(255, 255, 255, 0.055) !important;
  border-color: var(--v2b-hairline) !important;
}

body.sidebar-dark #sidebar .nav-main-link.active,
body.sidebar-dark #sidebar .nav-main-item.active > .nav-main-link,
body .sidebar-dark #sidebar .nav-main-link.active,
body .sidebar-dark #sidebar .nav-main-item.active > .nav-main-link,
#page-container.sidebar-dark #sidebar .nav-main-link.active,
#page-container.sidebar-dark #sidebar .nav-main-item.active > .nav-main-link,
body.sidebar-dark #sidebar .nav-main-submenu .nav-main-link.active,
body.sidebar-dark #sidebar .nav-main-submenu .nav-main-item.active > .nav-main-link,
body .sidebar-dark #sidebar .nav-main-submenu .nav-main-link.active,
body .sidebar-dark #sidebar .nav-main-submenu .nav-main-item.active > .nav-main-link,
#page-container.sidebar-dark #sidebar .nav-main-submenu .nav-main-link.active,
#page-container.sidebar-dark #sidebar .nav-main-submenu .nav-main-item.active > .nav-main-link {
  color: var(--v2b-primary) !important;
  background: var(--v2b-primary-soft) !important;
  border-color: rgba(45, 255, 140, 0.22) !important;
}

.content,
.content-side,
.content-header,
.content-header .content-header-section {
  color: var(--v2b-ink);
}

#page-container .content {
  color: var(--v2b-ink);
  background: transparent !important;
}

.content-header {
  background: transparent;
}

.content-heading {
  color: var(--v2b-ink);
  background: transparent;
}

h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  color: var(--v2b-ink);
  font-weight: 650;
  letter-spacing: -0.02em;
}

p,
label,
small,
.text-muted,
.text-black-50,
.text-body-secondary,
.ant-typography-secondary {
  color: var(--v2b-ink-muted) !important;
}

.text-dark,
.text-body,
.text-black,
.ant-typography {
  color: var(--v2b-ink) !important;
}

/* Keep Ant typography variants semantic after the broad native text rule. */
.ant-typography.ant-typography-secondary {
  color: var(--v2b-ink-muted) !important;
}

.ant-typography.ant-typography-warning {
  color: var(--v2b-warning) !important;
}

.ant-typography.ant-typography-danger {
  color: var(--v2b-danger) !important;
}

.ant-typography.ant-typography-disabled {
  color: var(--v2b-ink-subtle) !important;
}

.bg-white,
.bg-body-light,
.bg-gray-lighter {
  color: var(--v2b-ink-muted) !important;
  background-color: var(--v2b-surface-2) !important;
}

/* Dashmix cards and Ant Design/Umi cards. */
.block,
.card,
.ant-card,
.ant-pro-card {
  color: var(--v2b-ink);
  background:
    linear-gradient(160deg, rgba(45, 255, 140, 0.025), transparent 42%),
    var(--v2b-surface-1) !important;
  border: 1px solid var(--v2b-hairline) !important;
  border-radius: var(--v2b-radius-card) !important;
  box-shadow: none !important;
}

.block-title,
.card-title,
.ant-card-head-title {
  color: var(--v2b-ink) !important;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
}

#main-container .block-header-default .block-title {
  color: var(--v2b-ink) !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  line-height: 1.5 !important;
}

/* The native subscription summary uses utility classes, so keep its text
   readable without changing unrelated display metrics elsewhere. */
#main-container .block-content .text-black {
  color: var(--v2b-ink) !important;
}

#main-container .block-content h3.h4.mb-3 {
  color: var(--v2b-ink) !important;
  font-size: 20px !important;
  font-weight: 600 !important;
  line-height: 1.35 !important;
}

#main-container .block-content p.font-size-sm.font-w600.mb-3 {
  color: var(--v2b-ink-muted) !important;
  font-size: 14px !important;
  font-weight: 400 !important;
  line-height: 1.65 !important;
  overflow-wrap: normal;
}

#main-container .block-content p.font-size-sm.font-w600.mb-3 > span.font-w700 {
  display: inline-block;
  max-width: 100%;
  margin-inline-end: 0.5em;
  color: var(--v2b-ink) !important;
  font-weight: 500 !important;
  white-space: normal;
  word-break: normal;
  overflow-wrap: normal;
}

.block-header,
.card-header,
.card-footer,
.ant-card-head,
.ant-card-actions {
  color: var(--v2b-ink);
  background: rgba(255, 255, 255, 0.025) !important;
  border-color: var(--v2b-hairline) !important;
}

.block-content,
.card-body,
.ant-card-body,
.ant-pro-card-body {
  color: var(--v2b-ink-muted);
}

.block-content {
  color: var(--v2b-ink-muted) !important;
  background-color: var(--v2b-surface-1) !important;
  border-radius: 0 !important;
}

.block > .block-content:first-child {
  border-top-left-radius: calc(var(--v2b-radius-card) - 1px) !important;
  border-top-right-radius: calc(var(--v2b-radius-card) - 1px) !important;
}

.block > .block-content:last-child {
  border-bottom-right-radius: calc(var(--v2b-radius-card) - 1px) !important;
  border-bottom-left-radius: calc(var(--v2b-radius-card) - 1px) !important;
}

.block > .block-content:first-child:last-child {
  border-radius: calc(var(--v2b-radius-card) - 1px) !important;
}

/* Tables retain their native overflow and row sizing. */
.table-responsive,
.ant-table-wrapper {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

#main-container .border-bottom,
#main-container .ant-list-item,
#main-container .v2board-shortcuts-item {
  border-bottom-color: rgba(255, 255, 255, 0.075) !important;
}

#main-container .v2board-shortcuts-item {
  color: var(--v2b-ink-muted) !important;
}

#main-container .v2board-shortcuts-item:hover {
  background: rgba(255, 255, 255, 0.025) !important;
}

#main-container .v2board-shortcuts-item > .description {
  color: var(--v2b-ink-muted) !important;
  opacity: 1 !important;
}

#main-container .v2board-shortcuts-item i {
  color: var(--v2b-ink-subtle) !important;
  opacity: 1 !important;
}

/* 使用文档（知识库）：列表行是原生 Bootstrap list-group，没有跟随深色皮肤，
   在整页深色里会糊成一块纯白板；顺带修掉行内写死的浅色分隔线。
   这里必须用 !important：分隔线颜色来自组件内联样式，标题字色在部分客户端
   （微信/Android 深色模式）会被主题基础样式按加载顺序盖回深色。 */
#main-container .list-group,
#main-container .list-group-item,
#main-container .list-group-item-action {
  color: var(--v2b-ink-muted) !important;
  background-color: transparent !important;
  border-color: var(--v2b-hairline) !important;
}

#main-container .list-group-item h5,
#main-container .list-group-item .h5 {
  color: var(--v2b-ink) !important;
  font-weight: 650;
}

#main-container .list-group-item small {
  color: var(--v2b-ink-subtle) !important;
}

#main-container .list-group-item-action:hover,
#main-container .list-group-item-action:focus {
  color: var(--v2b-ink) !important;
  background-color: rgba(255, 255, 255, 0.04) !important;
  border-color: var(--v2b-hairline) !important;
}

/* 知识库正文（antd Drawer + .custom-html-style）：基础样式表按浅色页写的，
   放进深色抽屉就是深底深字，代码块还会亮成一块白。统一到皮肤的字色和表面。 */
.ant-drawer-body .custom-html-style {
  color: var(--v2b-ink-muted) !important;
}

.ant-drawer-body .custom-html-style h1,
.ant-drawer-body .custom-html-style h2,
.ant-drawer-body .custom-html-style h3,
.ant-drawer-body .custom-html-style h4,
.ant-drawer-body .custom-html-style h5,
.ant-drawer-body .custom-html-style h6,
.ant-drawer-body .custom-html-style strong {
  color: var(--v2b-ink) !important;
}

.ant-drawer-body .custom-html-style a {
  color: var(--v2b-primary) !important;
}

.ant-drawer-body .custom-html-style pre,
.ant-drawer-body .custom-html-style code {
  color: var(--v2b-ink-muted) !important;
  background-color: var(--v2b-surface-2) !important;
  border: 1px solid var(--v2b-hairline) !important;
}

.ant-drawer-body .custom-html-style pre code {
  border: 0 !important;
  background-color: transparent !important;
}

.ant-drawer-body .custom-html-style blockquote {
  color: var(--v2b-ink-muted) !important;
  background: rgba(255, 255, 255, 0.03) !important;
  border-left-color: var(--v2b-hairline-strong) !important;
}

.ant-drawer-body .custom-html-style hr {
  border-top-color: var(--v2b-hairline) !important;
}

.ant-drawer-body .custom-html-style table,
.ant-drawer-body .custom-html-style th,
.ant-drawer-body .custom-html-style td {
  color: var(--v2b-ink-muted) !important;
  border-color: var(--v2b-hairline) !important;
}

.ant-drawer-body .custom-html-style th {
  color: var(--v2b-ink) !important;
  background-color: rgba(255, 255, 255, 0.035) !important;
}

.table,
.ant-table,
.ant-table-container,
.ant-table-content {
  color: var(--v2b-ink-muted) !important;
  background: transparent !important;
  --bs-table-color: var(--v2b-ink-muted);
  --bs-table-bg: transparent;
  --bs-table-border-color: var(--v2b-hairline);
  --bs-table-striped-color: var(--v2b-ink-muted);
  --bs-table-striped-bg: rgba(255, 255, 255, 0.018);
  --bs-table-hover-color: var(--v2b-ink);
  --bs-table-hover-bg: rgba(45, 255, 140, 0.045);
  border-color: var(--v2b-hairline) !important;
}

/* The fixed tables in Ant 3 sit above the scrolling table. Give them an
   opaque surface so fixed cells cover the moving content without white gaps. */
.ant-table-fixed-left table.ant-table-fixed,
.ant-table-fixed-right table.ant-table-fixed {
  color: var(--v2b-ink-muted) !important;
  background-color: var(--v2b-surface-1) !important;
}

.ant-table-fixed-left .ant-table-fixed .ant-table-thead > tr > th,
.ant-table-fixed-right .ant-table-fixed .ant-table-thead > tr > th {
  color: var(--v2b-ink-subtle) !important;
  background: rgba(255, 255, 255, 0.035) !important;
  border-color: var(--v2b-hairline) !important;
}

.ant-table-fixed-left .ant-table-fixed .ant-table-tbody > tr > td,
.ant-table-fixed-right .ant-table-fixed .ant-table-tbody > tr > td {
  color: var(--v2b-ink-muted) !important;
  background-color: var(--v2b-surface-1) !important;
  border-color: var(--v2b-hairline) !important;
}

.ant-table-fixed-left .ant-table-fixed .ant-table-tbody > tr:hover > td,
.ant-table-fixed-right .ant-table-fixed .ant-table-tbody > tr:hover > td,
.ant-table-fixed-left .ant-table-fixed .ant-table-tbody > tr.ant-table-row-hover > td,
.ant-table-fixed-right .ant-table-fixed .ant-table-tbody > tr.ant-table-row-hover > td {
  color: var(--v2b-ink) !important;
  background-color: var(--v2b-surface-2) !important;
}

.ant-table-placeholder,
.ant-table-footer {
  color: var(--v2b-ink-muted) !important;
  background: var(--v2b-surface-1) !important;
  border-color: var(--v2b-hairline) !important;
}

.ant-table-wrapper .ant-spin-nested-loading > .ant-spin-container::after {
  background: rgba(7, 9, 8, 0.68) !important;
}

.ant-divider:not([class*="ant-divider-with-text"]) {
  color: var(--v2b-ink-muted) !important;
  background-color: var(--v2b-hairline) !important;
  border-color: var(--v2b-hairline) !important;
}

.ant-divider[class*="ant-divider-with-text"],
.ant-divider-inner-text {
  color: var(--v2b-ink-muted) !important;
  background: transparent !important;
}

.ant-divider[class*="ant-divider-with-text"]::before,
.ant-divider[class*="ant-divider-with-text"]::after {
  border-color: var(--v2b-hairline) !important;
}

.ant-input-group-addon {
  color: var(--v2b-ink-muted) !important;
  background-color: var(--v2b-surface-2) !important;
  border-color: var(--v2b-hairline) !important;
}

#main-container .v2board-table-action {
  color: var(--v2b-ink-muted) !important;
  background-color: var(--v2b-surface-2) !important;
  border-color: var(--v2b-hairline) !important;
}

.table thead th,
.table th,
.ant-table-thead > tr > th {
  color: var(--v2b-ink-subtle) !important;
  background: rgba(255, 255, 255, 0.035) !important;
  border-color: var(--v2b-hairline) !important;
  font-weight: 650;
}

.table td,
.table th,
.ant-table-tbody > tr > td {
  border-color: var(--v2b-hairline) !important;
}

.page-link {
  color: var(--v2b-ink-muted) !important;
  background: var(--v2b-surface-1) !important;
  border-color: var(--v2b-hairline) !important;
}

.page-link:hover {
  color: var(--v2b-primary) !important;
  background: var(--v2b-surface-2) !important;
  border-color: rgba(45, 255, 140, 0.26) !important;
}

.page-item.active .page-link {
  color: #04140b !important;
  background: var(--v2b-primary) !important;
  border-color: var(--v2b-primary) !important;
}

.page-item.disabled .page-link {
  color: var(--v2b-ink-subtle) !important;
  background: var(--v2b-surface-1) !important;
}

.table-hover tbody tr:hover,
.ant-table-tbody > tr:hover > td,
.ant-table-tbody > tr.ant-table-row-hover > td {
  color: var(--v2b-ink) !important;
  background: rgba(45, 255, 140, 0.045) !important;
}

.ant-table-tbody > tr > td,
.ant-table-thead > tr > th {
  transition: background-color 140ms ease;
}

/* Inputs preserve validation and disabled states supplied by V2Board. */
.form-control,
.form-select,
.custom-select,
select.form-control,
textarea.form-control,
.ant-input,
.ant-input-affix-wrapper,
.ant-select-selector,
.ant-select-selection,
.ant-picker,
.ant-input-number,
.ant-input-number-input {
  color: var(--v2b-ink) !important;
  background-color: rgba(0, 0, 0, 0.22) !important;
  border: 1px solid var(--v2b-hairline-strong) !important;
  border-radius: var(--v2b-radius-control) !important;
  box-shadow: none !important;
  transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.form-control,
.form-select,
.custom-select,
.ant-input,
.ant-input-affix-wrapper,
.ant-select-selector,
.ant-select-selection,
.ant-picker,
.ant-input-number {
  min-height: 40px;
}

.form-control:hover,
.form-select:hover,
.custom-select:hover,
.ant-input:hover,
.ant-input-affix-wrapper:hover,
.ant-select-selector:hover,
.ant-select-selection:hover,
.ant-picker:hover {
  border-color: rgba(45, 255, 140, 0.38) !important;
}

.form-control:focus,
.form-select:focus,
.custom-select:focus,
.ant-input:focus,
.ant-input-affix-wrapper-focused,
.ant-select-focused .ant-select-selector,
.ant-select-focused .ant-select-selection,
.ant-picker-focused {
  color: var(--v2b-ink) !important;
  background-color: rgba(0, 0, 0, 0.3) !important;
  border-color: var(--v2b-primary) !important;
  box-shadow: 0 0 0 3px rgba(45, 255, 140, 0.14) !important;
}

input::placeholder,
textarea::placeholder,
.ant-input::placeholder,
.ant-select-selection-placeholder {
  color: var(--v2b-ink-placeholder) !important;
  opacity: 1;
}

.form-control:disabled,
.form-control[readonly],
.ant-input[disabled],
.ant-select-disabled .ant-select-selector,
.ant-btn[disabled],
.btn:disabled,
.btn.disabled {
  color: var(--v2b-ink-subtle) !important;
  background-color: rgba(255, 255, 255, 0.045) !important;
  border-color: var(--v2b-hairline) !important;
  opacity: 0.64;
  cursor: not-allowed;
}

.form-group label,
.form-label,
.ant-form-item-label > label {
  color: var(--v2b-ink-muted) !important;
  font-weight: 600;
}

.form-control.is-invalid,
.was-validated .form-control:invalid,
.ant-form-item-has-error .ant-input,
.ant-form-item-has-error .ant-input-affix-wrapper,
.ant-form-item-has-error .ant-select-selector,
.ant-form-item-has-error .ant-select-selection,
.has-error .ant-input,
.has-error .ant-select-selection {
  border-color: var(--v2b-danger) !important;
}

.invalid-feedback,
.form-text.text-danger,
.ant-form-item-explain-error,
.ant-form-explain {
  color: var(--v2b-danger) !important;
}

/* Buttons keep their existing actions and loading indicators. */
.btn,
.ant-btn {
  min-height: 38px;
  border-radius: var(--v2b-radius-control) !important;
  font-weight: 650;
  transition: transform 150ms ease, color 150ms ease, background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease;
}

.btn:not(:disabled):active,
.ant-btn:not(:disabled):active {
  transform: translateY(1px);
}

.btn-primary,
.ant-btn-primary {
  color: #04140b !important;
  background: var(--v2b-primary) !important;
  border-color: var(--v2b-primary) !important;
  box-shadow: 0 7px 20px rgba(45, 255, 140, 0.14);
}

.btn-primary:hover,
.ant-btn-primary:hover,
.ant-btn-primary:focus {
  color: #04140b !important;
  background: var(--v2b-primary-hover) !important;
  border-color: var(--v2b-primary-hover) !important;
  box-shadow: 0 9px 24px rgba(45, 255, 140, 0.2);
}

.btn-secondary,
.btn-alt,
.btn-alt-secondary,
.btn-dual,
.btn-light,
.ant-btn-default,
.ant-btn:not(.ant-btn-primary):not(.ant-btn-link):not(.ant-btn-text):not(.ant-btn-danger):not(.ant-btn-dangerous) {
  color: var(--v2b-ink-muted) !important;
  background: rgba(255, 255, 255, 0.045) !important;
  border-color: var(--v2b-hairline-strong) !important;
}

.btn-secondary:hover,
.btn-alt:hover,
.btn-alt-secondary:hover,
.btn-dual:hover,
.btn-light:hover,
.ant-btn-default:hover,
.ant-btn:not(.ant-btn-primary):not(.ant-btn-link):not(.ant-btn-text):not(.ant-btn-danger):not(.ant-btn-dangerous):hover {
  color: var(--v2b-ink) !important;
  background: rgba(255, 255, 255, 0.085) !important;
  border-color: rgba(45, 255, 140, 0.28) !important;
}

.btn-success,
.ant-btn-success {
  color: #04140b !important;
  background: var(--v2b-primary) !important;
  border-color: var(--v2b-primary) !important;
}

.btn-danger,
.ant-btn-danger,
.ant-btn-dangerous {
  color: #fff !important;
  background: #c94b45 !important;
  border-color: #ed6e67 !important;
}

.btn:disabled,
.btn.disabled,
.ant-btn[disabled],
.ant-btn-disabled,
.ant-btn-danger[disabled],
.ant-btn-dangerous[disabled] {
  color: var(--v2b-ink-subtle) !important;
  background: #252a23 !important;
  border-color: #363d33 !important;
  box-shadow: none !important;
  opacity: 0.62;
  cursor: not-allowed;
}

/* Dropdowns, alerts and transient state indicators. */
.dropdown-menu,
.ant-dropdown-menu,
.ant-select-dropdown,
.ant-picker-dropdown,
.ant-tooltip-inner,
.ant-popover-inner {
  color: var(--v2b-ink-muted);
  background: var(--v2b-surface-1) !important;
  border: 1px solid var(--v2b-hairline-strong) !important;
  border-radius: var(--v2b-radius-card) !important;
  box-shadow: var(--v2b-shadow-card) !important;
}

.dropdown-item,
.ant-dropdown-menu-item,
.ant-select-dropdown-menu-item,
.ant-select-item,
.ant-picker-cell-inner {
  color: var(--v2b-ink-muted) !important;
}

.dropdown-item:hover,
.dropdown-item:focus,
.ant-dropdown-menu-item:hover,
.ant-select-dropdown-menu-item-active,
.ant-select-dropdown-menu-item-selected,
.ant-select-dropdown-menu-item:hover,
.ant-select-item-option-active,
.ant-select-item-option-selected {
  color: var(--v2b-ink) !important;
  background: var(--v2b-primary-soft) !important;
}

.ant-select-dropdown-menu-item-disabled,
.ant-select-dropdown-menu-item-disabled:hover {
  color: var(--v2b-ink-subtle) !important;
  background: transparent !important;
  cursor: not-allowed;
}

.ant-select-arrow,
.ant-select-arrow .anticon,
.ant-select-selection__clear,
.ant-calendar-picker-icon {
  color: var(--v2b-ink-subtle) !important;
}

.alert,
.ant-alert,
.badge,
.ant-tag {
  border-radius: var(--v2b-radius-control);
}

/* Plain Ant tags use dark neutral chrome; explicit protocol/status colors
   retain their native semantic palette. */
.ant-tag:not(.ant-tag-has-color):not(.ant-tag-blue):not(.ant-tag-green):not(.ant-tag-cyan):not(.ant-tag-purple):not(.ant-tag-red):not(.ant-tag-magenta):not(.ant-tag-pink):not(.ant-tag-orange):not(.ant-tag-yellow):not(.ant-tag-volcano):not(.ant-tag-geekblue):not(.ant-tag-lime):not(.ant-tag-gold) {
  color: var(--v2b-ink-muted) !important;
  background: var(--v2b-surface-2) !important;
  border-color: var(--v2b-hairline-strong) !important;
}

.alert-info,
.ant-alert-info {
  color: #bceee3 !important;
  background: rgba(94, 224, 200, 0.09) !important;
  border-color: rgba(94, 224, 200, 0.24) !important;
}

.alert-success,
.ant-alert-success {
  color: #a6ffd0 !important;
  background: rgba(45, 255, 140, 0.09) !important;
  border-color: rgba(45, 255, 140, 0.25) !important;
}

.alert-warning,
.ant-alert-warning {
  color: var(--v2b-warning) !important;
  background: rgba(255, 193, 77, 0.09) !important;
  border-color: rgba(255, 193, 77, 0.25) !important;
}

.alert-danger,
.ant-alert-error {
  color: #ffaaa3 !important;
  background: rgba(255, 107, 99, 0.1) !important;
  border-color: rgba(255, 107, 99, 0.3) !important;
}

.ant-spin-container::after,
.ant-spin-blur::after {
  background: rgba(7, 9, 8, 0.55) !important;
}

.spinner-border,
.spinner-grow,
.ant-spin-dot-item {
  color: var(--v2b-primary) !important;
}

.ant-pagination,
.ant-pagination-item,
.ant-pagination-prev .ant-pagination-item-link,
.ant-pagination-next .ant-pagination-item-link,
.ant-pagination-options-quick-jumper input {
  color: var(--v2b-ink-muted) !important;
  background: transparent !important;
  border-color: var(--v2b-hairline-strong) !important;
}

.ant-pagination-item a,
.ant-pagination-prev a,
.ant-pagination-next a {
  color: var(--v2b-ink-muted) !important;
}

.ant-pagination-item:hover,
.ant-pagination-prev:hover .ant-pagination-item-link,
.ant-pagination-next:hover .ant-pagination-item-link {
  border-color: rgba(45, 255, 140, 0.4) !important;
}

.ant-pagination-item-active {
  background: var(--v2b-primary) !important;
  border-color: var(--v2b-primary) !important;
}

.ant-pagination-item-active a {
  color: #04140b !important;
}

.ant-drawer-content,
.ant-drawer-header,
.ant-drawer-body,
.ant-drawer-footer {
  color: var(--v2b-ink-muted);
  background: var(--v2b-surface-1) !important;
  border-color: var(--v2b-hairline) !important;
}

.ant-drawer-title {
  color: var(--v2b-ink) !important;
}

.ant-drawer-mask {
  background: rgba(0, 0, 0, 0.72) !important;
}

.ant-checkbox-wrapper,
.ant-radio-wrapper {
  color: var(--v2b-ink-muted);
}

.ant-checkbox-inner,
.ant-radio-inner {
  background: var(--v2b-surface-2) !important;
  border-color: var(--v2b-hairline-strong) !important;
}

.ant-checkbox-checked .ant-checkbox-inner,
.ant-radio-checked .ant-radio-inner {
  background: var(--v2b-primary) !important;
  border-color: var(--v2b-primary) !important;
}

/* antd 3 的开关没跟着皮肤走：选中态是写死的 antd 蓝 #1890ff（和站内的绿色主色、
   已经改绿的 checkbox/radio/分页不一致），未选中态是 rgba(0,0,0,.25)，压在深色卡片上
   几乎等于隐形（非文本对比度 <1.2:1，人眼基本看不出这是个开关）。这里按皮肤主色统一。 */
.ant-switch {
  background-color: rgba(255, 255, 255, 0.36) !important;
}

.ant-switch-checked {
  background-color: var(--v2b-primary) !important;
}

.ant-switch:after {
  background-color: #f2f6ee !important;
}

.ant-switch-loading .ant-switch-loading-icon,
.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {
  color: #04140b !important;
}

.ant-switch-disabled,
.ant-switch-loading {
  opacity: 0.45 !important;
}

/* antd Tabs · 标签栏（后台「系统配置」等页用的 line 型标签）完全没跟皮肤：
   未激活是 rgba(0,0,0,.65)、禁用 rgba(0,0,0,.25)、左右滚动箭头 rgba(0,0,0,.45)，
   压在深色底上实测对比度 1.0–1.1:1（等于看不见）；激活态和 ink-bar 是写死的
   antd 蓝 #1890ff（和站内绿色主色、已改绿的 checkbox/radio/开关不一致）；
   标签栏底边还是浅色主题的 #e8e8e8，在深色页上是一条刺眼的白线（16:1）。
   这里按皮肤变量统一。 */
.ant-tabs-nav .ant-tabs-tab,
.ant-tabs-tab {
  color: var(--v2b-ink-muted) !important;
}

.ant-tabs-nav .ant-tabs-tab:hover,
.ant-tabs-tab:hover {
  color: var(--v2b-ink) !important;
}

.ant-tabs-nav .ant-tabs-tab:active {
  color: var(--v2b-primary) !important;
}

.ant-tabs-nav .ant-tabs-tab-active,
.ant-tabs-nav .ant-tabs-tab-active .ant-tabs-tab-btn,
.ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn,
.ant-tabs-tab-active {
  color: var(--v2b-primary) !important;
}

/* 排在 hover 之后：悬停激活标签时也要保持主色 */
.ant-tabs-nav .ant-tabs-tab-active:hover {
  color: var(--v2b-primary) !important;
}

.ant-tabs-nav .ant-tabs-tab-disabled,
.ant-tabs-nav .ant-tabs-tab-disabled:hover,
.ant-tabs-tab-disabled {
  color: var(--v2b-ink-subtle) !important;
  opacity: 0.7;
}

.ant-tabs-ink-bar {
  background-color: var(--v2b-primary) !important;
}

.ant-tabs-bar {
  border-bottom: 1px solid var(--v2b-hairline) !important;
}

.ant-tabs-tab-prev,
.ant-tabs-tab-next {
  color: var(--v2b-ink-subtle) !important;
}

.ant-tabs-tab-prev.ant-tabs-tab-arrow-show:hover,
.ant-tabs-tab-next.ant-tabs-tab-arrow-show:hover,
.ant-tabs-tab-prev:hover,
.ant-tabs-tab-next:hover {
  color: var(--v2b-ink) !important;
}

.ant-tabs-tab-btn-disabled,
.ant-tabs-tab-btn-disabled:hover {
  color: var(--v2b-ink-subtle) !important;
  opacity: 0.4;
}

.ant-tabs-tab .ant-tabs-close-x {
  color: var(--v2b-ink-subtle) !important;
}

.ant-tabs-tab .ant-tabs-close-x:hover {
  color: var(--v2b-ink) !important;
}

/* card 型标签（部分页面）底色/边框同样是浅色主题：#fafafa / #e8e8e8 / #fff */
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab,
.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab {
  background: var(--v2b-surface-2) !important;
  border-color: var(--v2b-hairline) !important;
  color: var(--v2b-ink-muted) !important;
}

.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active,
.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active {
  background: var(--v2b-surface-3) !important;
  border-color: var(--v2b-hairline) !important;
  border-bottom-color: var(--v2b-surface-3) !important;
  color: var(--v2b-primary) !important;
}
.ant-select-selection-selected-value,
.ant-select-selection__placeholder {
  color: var(--v2b-ink-muted) !important;
}

.ant-select-selection--single {
  height: 40px;
}

.ant-select-selection--single .ant-select-selection__rendered {
  line-height: 38px;
}

.ant-input-affix-wrapper > .ant-input {
  min-height: 0;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

.ant-checkbox-checked .ant-checkbox-inner::after {
  border-color: #04140b !important;
}

.ant-radio-inner::after {
  background: #04140b !important;
}

.progress {
  height: 8px;
  overflow: hidden;
  background-color: var(--v2b-surface-3) !important;
  border-radius: 999px;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.36);
}

.progress-bar {
  color: #04140b;
  background-color: var(--v2b-primary) !important;
  border-radius: 999px;
  box-shadow: 0 0 12px rgba(45, 255, 140, 0.24);
}

.ant-progress-inner {
  background-color: var(--v2b-surface-3) !important;
}

.ant-progress-bg {
  background-color: var(--v2b-primary) !important;
}

.ant-progress-text {
  color: var(--v2b-ink-muted) !important;
}

/* Dialogs remain inside the viewport and keep their native focus/close behavior. */
.modal-content,
.ant-modal-content,
.ant-popover-inner {
  color: var(--v2b-ink);
  background: var(--v2b-surface-1) !important;
  border: 1px solid var(--v2b-hairline-strong) !important;
  border-radius: 16px !important;
  box-shadow: var(--v2b-shadow-dialog) !important;
}

.modal-header,
.modal-footer,
.ant-modal-header,
.ant-modal-footer {
  color: var(--v2b-ink);
  background: transparent !important;
  border-color: var(--v2b-hairline) !important;
}

.modal-title,
.ant-modal-title {
  color: var(--v2b-ink) !important;
  font-weight: 700;
}

/* antd 3 的 Modal.confirm（个人中心「重置订阅信息」这类确认弹窗）正文用的是写死的
   深色字：标题 rgba(0,0,0,.85)、内容 rgba(0,0,0,.65)，放在深色对话框上几乎看不见
   （实测对比度 1.12:1）。标题和内容都接回皮肤字色；左侧确认图标保留 antd 的警示黄，
   作为危险操作的提示色不动。 */
.ant-modal-confirm-body .ant-modal-confirm-title {
  color: var(--v2b-ink) !important;
}

.ant-modal-confirm-body .ant-modal-confirm-content {
  color: var(--v2b-ink-muted) !important;
}

.modal-backdrop,
.ant-modal-mask {
  background: rgba(0, 0, 0, 0.72) !important;
}

.ant-modal-close,
.close {
  color: var(--v2b-ink-subtle) !important;
  text-shadow: none;
}

/* Auth pages: keep V2Board's form controls and validation, restyle its card. */
.v2board-auth-box {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px 20px;
  background:
    radial-gradient(ellipse 780px 480px at 10% 0%, rgba(45, 255, 140, 0.11), transparent 62%),
    radial-gradient(ellipse 580px 380px at 100% 100%, rgba(94, 224, 200, 0.055), transparent 58%);
}

.v2board-background {
  background-color: var(--v2b-canvas) !important;
  background-image:
    radial-gradient(ellipse 780px 480px at 10% 0%, rgba(45, 255, 140, 0.11), transparent 62%),
    radial-gradient(ellipse 580px 380px at 100% 100%, rgba(94, 224, 200, 0.055), transparent 58%) !important;
  background-attachment: fixed;
}

body.v2board-background {
  color: var(--v2b-ink) !important;
  background-color: var(--v2b-canvas) !important;
  background-image:
    radial-gradient(ellipse 780px 480px at 10% 0%, rgba(45, 255, 140, 0.11), transparent 62%),
    radial-gradient(ellipse 580px 380px at 100% 100%, rgba(94, 224, 200, 0.055), transparent 58%) !important;
  background-attachment: fixed;
}

.v2board-auth-box > div[style*="max-width"] {
  width: min(100%, 880px) !important;
  max-width: 880px !important;
  margin: auto !important;
}

.v2board-auth-box .block.block-rounded.block-transparent.block-fx-pop.w-100.mb-0.overflow-hidden.bg-image {
  display: grid;
  grid-template-columns: minmax(0, 0.88fr) minmax(0, 1.12fr);
  overflow: hidden;
  color: var(--v2b-ink);
  background: var(--v2b-surface-1) !important;
  border: 1px solid var(--v2b-hairline-strong) !important;
  border-radius: 22px !important;
  box-shadow: var(--v2b-shadow-dialog) !important;
}

.v2board-auth-box .block.block-rounded.block-transparent.block-fx-pop.w-100.mb-0.overflow-hidden.bg-image::before {
  content: "订阅控制台\A\A 登录后管理套餐、订阅与流量。";
  grid-column: 1;
  grid-row: 1 / span 2;
  display: flex;
  align-items: center;
  padding: 42px 34px;
  color: var(--v2b-ink);
  background:
    radial-gradient(ellipse 300px 260px at 16% 12%, rgba(45, 255, 140, 0.12), transparent 72%),
    linear-gradient(155deg, rgba(255, 255, 255, 0.025), transparent 56%),
    #0c100c;
  border-right: 1px solid var(--v2b-hairline);
  font-size: 22px;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: -0.025em;
  white-space: pre-line;
}

.v2board-auth-box .block.block-rounded.block-transparent.block-fx-pop.w-100.mb-0.overflow-hidden.bg-image > .row {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  margin: 0;
  background: transparent;
}

.v2board-auth-box .block.block-rounded.block-transparent.block-fx-pop.w-100.mb-0.overflow-hidden.bg-image > .bg-gray-lighter {
  grid-column: 2;
  grid-row: 2;
  color: var(--v2b-ink-muted) !important;
  background: var(--v2b-surface-2) !important;
  border-top: 1px solid var(--v2b-hairline);
}

.v2board-auth-box .block .bg-white,
.v2board-auth-box .block .bg-light,
.v2board-auth-box .block .bg-gray-lighter {
  color: var(--v2b-ink-muted) !important;
  background-color: var(--v2b-surface-1) !important;
}

.v2board-auth-box .block-content {
  padding: 38px 36px !important;
}

.v2board-auth-box .form-control {
  min-height: 46px;
}

.v2board-auth-box .btn {
  min-height: 44px;
}

@media (min-width: 992px) {
  #page-container.sidebar-o:not(.sidebar-mini):not(.sidebar-r) {
    padding-left: var(--v2b-sidebar-width);
  }

  #page-container.sidebar-mini:not(.sidebar-r) {
    padding-left: 68px;
  }

  #page-container.sidebar-o.sidebar-r:not(.sidebar-mini) {
    padding-right: var(--v2b-sidebar-width);
    padding-left: 0;
  }

  #page-container.sidebar-mini.sidebar-r {
    padding-right: 68px;
    padding-left: 0;
  }

  #page-container.page-header-fixed.sidebar-o:not(.sidebar-mini):not(.sidebar-r) #page-header,
  #page-container.overlay-header.sidebar-o:not(.sidebar-mini):not(.sidebar-r) #page-header,
  .page-header-fixed.sidebar-o:not(.sidebar-mini):not(.sidebar-r) #page-header,
  .overlay-header.sidebar-o:not(.sidebar-mini):not(.sidebar-r) #page-header,
  #page-container.page-header-fixed.overlay-header.sidebar-o:not(.sidebar-mini):not(.sidebar-r) #page-header,
  #page-container.page-footer-fixed.sidebar-o:not(.sidebar-mini):not(.sidebar-r) #page-footer,
  .page-footer-fixed.sidebar-o:not(.sidebar-mini):not(.sidebar-r) #page-footer {
    padding-left: var(--v2b-sidebar-width);
  }

  #page-container.page-header-fixed.sidebar-mini:not(.sidebar-r) #page-header,
  #page-container.overlay-header.sidebar-mini:not(.sidebar-r) #page-header,
  .page-header-fixed.sidebar-mini:not(.sidebar-r) #page-header,
  .overlay-header.sidebar-mini:not(.sidebar-r) #page-header,
  #page-container.page-footer-fixed.sidebar-mini:not(.sidebar-r) #page-footer,
  .page-footer-fixed.sidebar-mini:not(.sidebar-r) #page-footer {
    padding-left: 68px;
  }

  #page-container.page-header-fixed.sidebar-o.sidebar-r:not(.sidebar-mini) #page-header,
  #page-container.overlay-header.sidebar-o.sidebar-r:not(.sidebar-mini) #page-header,
  .page-header-fixed.sidebar-o.sidebar-r:not(.sidebar-mini) #page-header,
  .overlay-header.sidebar-o.sidebar-r:not(.sidebar-mini) #page-header,
  #page-container.page-footer-fixed.sidebar-o.sidebar-r:not(.sidebar-mini) #page-footer,
  .page-footer-fixed.sidebar-o.sidebar-r:not(.sidebar-mini) #page-footer {
    padding-right: var(--v2b-sidebar-width);
    padding-left: 0;
  }

  #page-container.page-header-fixed.sidebar-mini.sidebar-r #page-header,
  #page-container.overlay-header.sidebar-mini.sidebar-r #page-header,
  .page-header-fixed.sidebar-mini.sidebar-r #page-header,
  .overlay-header.sidebar-mini.sidebar-r #page-header,
  #page-container.page-footer-fixed.sidebar-mini.sidebar-r #page-footer,
  .page-footer-fixed.sidebar-mini.sidebar-r #page-footer {
    padding-right: 68px;
    padding-left: 0;
  }

  #page-container.sidebar-mini:not(.sidebar-o-xs) #sidebar {
    width: 68px;
  }
}

@media (max-width: 991.98px) {
  #page-container.sidebar-o,
  #page-container.sidebar-o-xs,
  #page-container.sidebar-mini {
    padding-left: 0;
    padding-right: 0;
  }

  #page-container.page-header-fixed #page-header,
  #page-container.overlay-header #page-header,
  #page-container.page-footer-fixed #page-footer,
  .page-header-fixed #page-header,
  .overlay-header #page-header,
  .page-footer-fixed #page-footer {
    padding-left: 0;
    padding-right: 0;
  }

  #page-container.sidebar-o #sidebar,
  #page-container.sidebar-o-xs #sidebar,
  #page-container.sidebar-mini #sidebar,
  #sidebar {
    width: min(268px, 84vw);
  }

  #page-container .content {
    padding: 16px !important;
  }

  #page-container .table-responsive,
  #page-container .ant-table-wrapper {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  #page-container .table-responsive > table {
    width: max-content;
    min-width: 640px;
    max-width: none;
    table-layout: auto;
  }

  #page-container .ant-table-wrapper .ant-table-content,
  #page-container .ant-table-wrapper .ant-table-body {
    width: 100%;
    max-width: 100%;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  #page-container .ant-table-wrapper .ant-table-content > table,
  #page-container .ant-table-wrapper .ant-table-body > table {
    width: max-content;
    min-width: 640px;
    max-width: none;
    table-layout: auto;
  }

  #page-container .table-responsive > table th,
  #page-container .table-responsive > table td,
  #page-container .ant-table-wrapper .ant-table-thead > tr > th,
  #page-container .ant-table-wrapper .ant-table-tbody > tr > td {
    white-space: nowrap !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
  }
}

@media (max-width: 767.98px) {
  .content-heading .btn {
    flex-shrink: 0;
    white-space: nowrap;
  }

  .v2board-auth-box {
    padding: 16px 12px;
  }

  .v2board-auth-box > div[style*="max-width"] {
    width: min(100%, 460px) !important;
    max-width: 460px !important;
  }

  .v2board-auth-box .block.block-rounded.block-transparent.block-fx-pop.w-100.mb-0.overflow-hidden.bg-image {
    display: block;
    border-radius: 18px !important;
  }

  .v2board-auth-box .block.block-rounded.block-transparent.block-fx-pop.w-100.mb-0.overflow-hidden.bg-image::before {
    display: none;
  }

  .v2board-auth-box .block-content {
    padding: 26px 22px !important;
  }
}

@media (max-width: 480px) {
  #page-container .content {
    padding: 12px !important;
  }

  .v2board-auth-box {
    padding: 12px 8px;
  }

  .v2board-auth-box .block-content {
    padding: 22px 16px !important;
  }

  .ant-modal {
    max-width: calc(100vw - 24px);
    margin: 12px auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}
