/* =============================================================
   Voxel / 沃盒 — 控制台 & 登录注册 深色玻璃拟态主题
   作用域：
     .gh-dash  → 用户中心 / 开发者中心（不影响后台白底面板）
     .gh-auth  → 登录 / 注册 分屏页面
   设计语言与 nebula.css 保持一致：深空背景 + 玻璃拟态 + 霓虹光晕
   ============================================================= */

/* 分类多选控件（后台沿用白底，控制台转深色） */
.cat-picker { background: #fff; border-color: #dee2e6; }
.gh-dash .cat-picker {
    background: var(--gh-surface) !important;
    border: 1px solid var(--gh-border) !important;
    border-radius: 12px;
}
.gh-dash .cat-picker .form-check { min-width: 7.5rem; }
.gh-dash .cat-picker .form-check-label { color: var(--gh-text); font-size: .92rem; cursor: pointer; }
.gh-dash .cat-picker .form-check-input { margin-top: .28em; }

/* 通用：让容器内的内容位于星空前层 */
.gh-dash { position: relative; z-index: 1; color: var(--gh-text); }
.gh-dash .text-muted { color: var(--gh-muted) !important; }
.gh-dash h2, .gh-dash h3, .gh-dash h4, .gh-dash h5, .gh-dash h6 { color: var(--gh-text); }
.gh-dash a { text-decoration: none; }
.gh-dash hr { border-color: var(--gh-border); opacity: 1; }

/* ---------- 侧边栏 ---------- */
.gh-dash .user-sidebar,
.gh-dash .developer-sidebar {
    background: linear-gradient(165deg, rgba(168, 85, 247, .16), rgba(34, 211, 238, .08) 55%, rgba(12, 16, 32, .6));
    border: 1px solid var(--gh-border);
    border-radius: var(--gh-radius);
    box-shadow: var(--gh-shadow);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    overflow: hidden;
    padding: 1.25rem 1rem;
}
@media (min-width: 768px) {
    .gh-dash .user-sidebar,
    .gh-dash .developer-sidebar { position: sticky; top: 96px; }
}
/* 侧栏顶部身份区 */
.gh-dash .side-head {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: 0 .35rem 1rem;
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--gh-border);
}
.gh-dash .side-ava {
    width: 42px;
    height: 42px;
    flex: 0 0 auto;
    border-radius: 13px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 800;
    font-size: 1.05rem;
    color: #fff;
    background: var(--gh-gradient);
    box-shadow: 0 8px 20px -10px rgba(168, 85, 247, .9);
}
.gh-dash .side-meta { min-width: 0; line-height: 1.25; }
.gh-dash .side-meta strong {
    display: block;
    font-size: .98rem;
    font-weight: 800;
    color: var(--gh-text);
}
.gh-dash .side-meta small {
    display: block;
    font-size: .76rem;
    color: var(--gh-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.gh-dash .side-nav { list-style: none; margin: 0; padding: 0; }
.gh-dash .user-sidebar .nav-link,
.gh-dash .developer-sidebar .nav-link {
    color: var(--gh-muted);
    padding: .72rem .9rem;
    border-radius: 12px;
    margin-bottom: .3rem;
    font-weight: 600;
    font-size: .93rem;
    display: flex;
    align-items: center;
    gap: .7rem;
    transition: all .22s ease;
    position: relative;
    text-align: left;
    border: 1px solid transparent;
}
.gh-dash .user-sidebar .nav-link i,
.gh-dash .developer-sidebar .nav-link i {
    width: 18px;
    flex: 0 0 18px;
    text-align: center;
    font-size: .95rem;
    color: var(--gh-violet);
    transition: .22s;
}
.gh-dash .user-sidebar .nav-link:hover,
.gh-dash .developer-sidebar .nav-link:hover {
    background: var(--gh-surface-2);
    color: var(--gh-text);
    transform: translateX(3px);
}
.gh-dash .user-sidebar .nav-link:hover i,
.gh-dash .developer-sidebar .nav-link:hover i { color: var(--gh-cyan); }
.gh-dash .user-sidebar .nav-link.active,
.gh-dash .developer-sidebar .nav-link.active {
    background: var(--gh-gradient-soft);
    color: #fff;
    font-weight: 700;
    border-color: rgba(168, 85, 247, .45);
    box-shadow: 0 10px 26px -14px rgba(168, 85, 247, .9);
}
.gh-dash .user-sidebar .nav-link.active i,
.gh-dash .developer-sidebar .nav-link.active i { color: #fff; }
.gh-dash .user-sidebar .nav-link.active::after,
.gh-dash .developer-sidebar .nav-link.active::after {
    content: "";
    position: absolute;
    right: .55rem;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--gh-cyan);
    box-shadow: 0 0 10px var(--gh-cyan);
}

/* ---------- 主卡片（profile-card） ---------- */.gh-dash .profile-card {
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    border-radius: var(--gh-radius);
    box-shadow: var(--gh-shadow);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    /* 不能用 overflow:hidden，否则下拉列表会被裁切；圆角交给首尾子元素 */
    overflow: visible;
    position: relative;
    z-index: 1;
    margin-bottom: 2rem;
}
.gh-dash .profile-card:has(.ghsel.is-open) { z-index: 30; }
.gh-dash .profile-card > .card-header:first-child,
.gh-dash .profile-card > .profile-header:first-child {
    border-radius: var(--gh-radius) var(--gh-radius) 0 0;
}
.gh-dash .profile-card > .card-body:last-child,
.gh-dash .profile-card > .user-info:last-child {
    border-radius: 0 0 var(--gh-radius) var(--gh-radius);
}
.gh-dash .profile-card > .card-header,
.gh-dash .card-header {
    background: linear-gradient(135deg, rgba(34, 211, 238, .10), rgba(168, 85, 247, .12));
    border-bottom: 1px solid var(--gh-border);
    padding: 1.5rem 1.75rem;
}
.gh-dash .card-header h2,
.gh-dash .card-header h4,
.gh-dash .card-header h5 {
    margin: 0;
    font-weight: 800;
    color: var(--gh-text);
    background: var(--gh-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.gh-dash .card-body {
    padding: 1.75rem;
    background: transparent;
}

/* ---------- 通用 Bootstrap 卡片（语言卡 / API 选择器等） ---------- */
.gh-dash .card {
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    border-radius: var(--gh-radius-sm);
    color: var(--gh-text);
    box-shadow: none;
}
.gh-dash .card > .card-header {
    background: var(--gh-surface-2);
    border-bottom: 1px solid var(--gh-border);
    padding: .9rem 1.1rem;
}
.gh-dash .card > .card-header h5,
.gh-dash .card > .card-header h6 {
    color: var(--gh-text);
    margin: 0;
}
.gh-dash .card > .card-body {
    background: transparent;
    padding: 1.1rem;
}

/* ---------- 个人资料头部 / 头像 / 信息 ---------- */
.gh-dash .profile-header {
    background: linear-gradient(135deg, rgba(168, 85, 247, .16), rgba(34, 211, 238, .12));
    padding: 2.25rem 2rem;
    border-bottom: 1px solid var(--gh-border);
}
.gh-dash .user-avatar {
    width: 96px;
    height: 96px;
    border-radius: 24px;
    background: var(--gh-gradient);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2.4rem;
    font-weight: 800;
    color: #fff;
    box-shadow: var(--gh-glow);
}
.gh-dash .user-info {
    padding: 2rem;
    background: transparent;
}
.gh-dash .info-card {
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    border-radius: var(--gh-radius-sm);
    padding: 1.25rem 1.4rem;
    transition: .25s;
}
.gh-dash .info-card:hover {
    transform: translateY(-3px);
    border-color: var(--gh-border-strong);
    box-shadow: var(--gh-shadow);
}
.gh-dash .info-label {
    font-weight: 600;
    color: var(--gh-muted);
    display: block;
    margin-bottom: .4rem;
    font-size: .82rem;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.gh-dash .info-value {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--gh-text);
}
.gh-dash .info-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: .75rem;
    margin-bottom: .75rem;
    border-bottom: 1px solid var(--gh-border);
}
.gh-dash .info-item:last-child {
    border: 0;
    margin: 0;
    padding: 0;
}
.gh-dash .balance-amount {
    font-size: 2.6rem;
    font-weight: 800;
    color: var(--gh-cyan);
    margin-bottom: 1rem;
}
/* 身份徽章 */
.gh-dash .role-badge {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: .35rem .9rem;
    border-radius: 999px;
    font-size: .82rem;
    font-weight: 700;
    letter-spacing: .02em;
    color: var(--gh-cyan);
    background: rgba(34, 211, 238, .12);
    border: 1px solid rgba(34, 211, 238, .35);
}
.gh-dash .role-badge i { font-size: .85rem; }
.gh-dash .balance-text { color: #7ef0a8; }

/* ---------- 表单控件 ---------- */
.gh-dash .form-label {
    font-weight: 600;
    color: var(--gh-text);
    margin-bottom: .5rem;
}
.gh-dash .form-control,
.gh-dash .form-select {
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    border-radius: 12px;
    color: var(--gh-text);
    padding: .7rem .9rem;
    transition: .2s;
}
.gh-dash .form-control::placeholder { color: var(--gh-muted); opacity: .7; }
.gh-dash .form-control:focus,
.gh-dash .form-select:focus {
    background: var(--gh-surface-2);
    border-color: var(--gh-violet);
    box-shadow: 0 0 0 .2rem rgba(168, 85, 247, .25);
    color: var(--gh-text);
}
/* 深色下拉箭头（Bootstrap 默认箭头是黑色，深底上不可见） */
.gh-dash .form-select {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239fb0c8' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right .9rem center;
    background-size: 13px 10px;
    padding-right: 2.3rem;
    -webkit-appearance: none;
    appearance: none;
}
/* 原生下拉列表：靠 color-scheme 让浏览器用深色渲染，option 再补一层兜底 */
.gh-dash select,
.gh-dash .form-select,
.gh-dash .form-control,
.gh-dash input[type="date"],
.gh-dash input[type="datetime-local"],
.gh-dash input[type="time"] { color-scheme: dark; }
.gh-dash select { accent-color: #a855f7; }
.gh-dash select option,
.gh-dash select optgroup {
    background-color: #0d1424;
    color: #e9edf7;
}
.gh-dash select option:checked,
.gh-dash select option:hover {
    background-color: #1d2742;
    color: #ffffff;
}
.gh-dash .form-control[type="file"]::file-selector-button {
    background: var(--gh-surface-2);
    border: 1px solid var(--gh-border);
    color: var(--gh-text);
    border-radius: 8px;
    padding: .35rem .8rem;
    margin-right: .75rem;
    transition: .2s;
}
/* 覆盖 Bootstrap 默认 hover 的浅灰白底（深色主题下看不清） */
.gh-dash .form-control[type="file"]:hover:not(:disabled):not([readonly])::file-selector-button,
.gh-dash .form-control[type="file"]:focus:not(:disabled):not([readonly])::file-selector-button,
.gh-dash .form-control[type="file"]::file-selector-button:hover,
.gh-dash .form-control[type="file"]::file-selector-button:focus {
    background: rgba(168, 85, 247, .18);
    border-color: var(--gh-violet);
    color: var(--gh-text);
}

/* ---------- 自定义下拉（原生 select 被透明覆盖，仅作数据源） ---------- */
.gh-dash .ghsel { position: relative; }
.gh-dash .ghsel > select.form-select {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    pointer-events: none;
    z-index: 1;
}
.gh-dash .ghsel__btn {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .7rem .9rem;
    min-height: calc(1.5em + 1.4rem + 2px);
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    border-radius: 12px;
    color: var(--gh-text);
    font-size: 1rem;
    line-height: 1.5;
    text-align: left;
    transition: .2s;
    cursor: pointer;
}
.gh-dash .ghsel__btn.is-empty { color: var(--gh-muted); }
.gh-dash .ghsel__btn::after {
    content: "";
    width: 12px;
    height: 8px;
    flex: 0 0 auto;
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239fb0c8' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") no-repeat center / contain;
    transition: transform .2s;
    opacity: .9;
}
.gh-dash .ghsel__btn:hover { border-color: var(--gh-border-strong); }
.gh-dash .ghsel.is-open .ghsel__btn {
    border-color: var(--gh-violet);
    background: var(--gh-surface-2);
    box-shadow: 0 0 0 .2rem rgba(168, 85, 247, .25);
}
.gh-dash .ghsel.is-open .ghsel__btn::after { transform: rotate(180deg); }
.gh-dash .ghsel__list {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + .4rem);
    z-index: 40;
    display: none;
    padding: .35rem;
    background: #0b1020;
    border: 1px solid var(--gh-border-strong);
    border-radius: 12px;
    box-shadow: 0 28px 64px -24px rgba(0, 0, 0, .95);
    max-height: 260px;
    overflow-y: auto;
}
.gh-dash .ghsel.is-open .ghsel__list { display: block; }
.gh-dash .ghsel__opt {
    padding: .55rem .7rem;
    border-radius: 9px;
    color: var(--gh-text);
    font-size: .95rem;
    cursor: pointer;
    transition: .15s;
}
.gh-dash .ghsel__opt:hover { background: rgba(168, 85, 247, .18); }
.gh-dash .ghsel__opt.is-sel {
    background: var(--gh-gradient-soft);
    border: 1px solid rgba(168, 85, 247, .45);
    color: #fff;
    font-weight: 700;
}
.gh-dash .form-text { color: var(--gh-muted); }
.gh-dash .form-check-input {
    background: var(--gh-surface);
    border-color: var(--gh-border-strong);
}
.gh-dash .form-check-input:checked {
    background: var(--gh-gradient);
    border: 0;
}
.gh-dash .form-check-label { color: var(--gh-text); }
.gh-dash .form-group label {
    color: var(--gh-text);
    font-weight: 600;
    display: block;
    margin-bottom: .4rem;
}

/* ---------- 按钮 ---------- */
.gh-dash .btn { border-radius: 12px; font-weight: 600; transition: .25s; }
.gh-dash .btn-primary {
    background: var(--gh-gradient);
    border: 0;
    color: #fff;
    box-shadow: 0 10px 30px -12px rgba(168, 85, 247, .8);
}
.gh-dash .btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 36px -10px rgba(236, 72, 153, .9);
    color: #fff;
}
.gh-dash .btn-danger { background: linear-gradient(135deg, #ff4d6d, #e83e8c); border: 0; color: #fff; }
.gh-dash .btn-danger:hover { transform: translateY(-2px); color: #fff; }
.gh-dash .btn-success { background: linear-gradient(135deg, #11998e, #38ef7d); border: 0; color: #062; }
.gh-dash .btn-success:hover { transform: translateY(-2px); color: #062; }
.gh-dash .btn-light { background: rgba(255, 255, 255, .1); border: 1px solid var(--gh-border); color: var(--gh-text); }
.gh-dash .btn-light:hover { background: rgba(255, 255, 255, .18); color: #fff; }
.gh-dash .btn-outline-primary { border-color: var(--gh-violet); color: var(--gh-violet); background: transparent; }
.gh-dash .btn-outline-primary:hover { background: var(--gh-violet); color: #fff; }
.gh-dash .btn-outline-secondary { border-color: var(--gh-border-strong); color: var(--gh-muted); background: transparent; }
.gh-dash .btn-outline-secondary:hover { background: var(--gh-surface-2); color: var(--gh-text); }
.gh-dash .btn-secondary { background: var(--gh-surface-2); border: 1px solid var(--gh-border); color: var(--gh-text); }
.gh-dash .btn-sm { border-radius: 10px; padding: .4rem .9rem; }

/* ---------- 提示框 ---------- */
.gh-dash .alert {
    border-radius: 12px;
    border: 1px solid var(--gh-border);
    background: var(--gh-surface);
    color: var(--gh-text);
}
.gh-dash .alert-danger { border-color: rgba(255, 77, 109, .4); background: rgba(255, 77, 109, .12); color: #ffb3c1; }
.gh-dash .alert-success { border-color: rgba(56, 239, 125, .4); background: rgba(56, 239, 125, .12); color: #9bf6c0; }
.gh-dash .alert-warning { border-color: rgba(255, 193, 7, .4); background: rgba(255, 193, 7, .12); color: #ffe08a; }
.gh-dash .alert-info { border-color: rgba(34, 211, 238, .4); background: rgba(34, 211, 238, .12); color: #9beaf7; }
.gh-dash .alert-light { background: var(--gh-surface); border-color: var(--gh-border); color: var(--gh-text); }
.gh-dash .alert-secondary { background: var(--gh-surface); border-color: var(--gh-border); color: var(--gh-muted); }
.gh-dash .alert .close, .gh-dash .alert .btn-close { color: inherit; opacity: .8; }

/* ---------- 徽章 ---------- */
.gh-dash .badge { font-weight: 700; padding: .38em .72em; border-radius: 999px; letter-spacing: .01em; }
.gh-dash .bg-primary { background: var(--gh-blue) !important; color: #fff; }
.gh-dash .bg-secondary { background: rgba(255, 255, 255, .10) !important; color: var(--gh-muted) !important; border: 1px solid var(--gh-border-strong); }
.gh-dash .bg-success { background: linear-gradient(135deg, #11998e, #38ef7d) !important; color: #062; }
.gh-dash .bg-warning { background: linear-gradient(135deg, #ffc107, #ff8a00) !important; color: #3a2a00; }
.gh-dash .bg-danger { background: linear-gradient(135deg, #ff4d6d, #e83e8c) !important; color: #fff; }
.gh-dash .bg-info { background: linear-gradient(135deg, #22d3ee, #3b82f6) !important; color: #04222b; }
.gh-dash .bg-light { background: var(--gh-surface-2) !important; color: var(--gh-text); }
.gh-dash .status-badge {
    display: inline-block;
    font-size: .8rem;
    padding: .3rem .7rem;
    border-radius: 20px;
    font-weight: 600;
}
.gh-dash .status-pending { background: rgba(255, 193, 7, .16); color: #ffd166; border: 1px solid rgba(255, 193, 7, .4); }
.gh-dash .status-approved,
.gh-dash .status-available,
.gh-dash .status-paid { background: rgba(56, 239, 125, .16); color: #7ef0a8; border: 1px solid rgba(56, 239, 125, .4); }
.gh-dash .status-rejected,
.gh-dash .status-cleared { background: rgba(255, 77, 109, .16); color: #ff9aae; border: 1px solid rgba(255, 77, 109, .4); }
.gh-dash .status-frozen { background: rgba(34, 211, 238, .16); color: #8fe9f7; border: 1px solid rgba(34, 211, 238, .4); }
.gh-dash .status-pending-payment { background: rgba(59, 130, 246, .16); color: #9db8ff; border: 1px solid rgba(59, 130, 246, .4); }

/* ---------- 表格 ---------- */
.gh-dash .table-container {
    border-radius: var(--gh-radius-sm);
    overflow: hidden;
    border: 1px solid var(--gh-border);
    box-shadow: var(--gh-shadow);
}
.gh-dash .table { color: var(--gh-text); margin: 0; background: transparent; --bs-table-bg: transparent; --bs-table-color: var(--gh-text); --bs-table-accent-bg: transparent; }
/* Bootstrap 5 会给单元格铺 --bs-table-bg 白底，这里统一打平 */
.gh-dash .table > :not(caption) > * > * {
    background-color: transparent;
    box-shadow: none;
    color: var(--gh-text);
    border-color: var(--gh-border);
}
.gh-dash .table th {
    background: var(--gh-surface-2) !important;
    color: var(--gh-muted) !important;
    font-weight: 700;
    border-color: var(--gh-border);
    letter-spacing: .03em;
    white-space: nowrap;
}
.gh-dash .table td { border-color: var(--gh-border); vertical-align: middle; }
.gh-dash .table tbody tr { background: transparent; }
.gh-dash .table-hover > tbody > tr:hover > * { background-color: var(--gh-surface-2) !important; color: var(--gh-text); }
.gh-dash .table-light thead th { background: var(--gh-surface-2) !important; color: var(--gh-muted) !important; border-color: var(--gh-border); }
.gh-dash .table-responsive { border-radius: var(--gh-radius-sm); }
.gh-dash .table td .text-center { color: var(--gh-muted); }

/* ---------- 游戏卡片（收藏 / 已玩） ---------- */
.gh-dash .game-card {
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    border-radius: var(--gh-radius-sm);
    overflow: hidden;
    transition: .25s;
}
.gh-dash .game-card:hover {
    transform: translateY(-4px);
    border-color: var(--gh-border-strong);
    box-shadow: var(--gh-shadow);
}
.gh-dash .game-image { width: 100%; height: 160px; object-fit: cover; }
.gh-dash .game-info { padding: 1rem; }
.gh-dash .game-title { font-weight: 700; color: var(--gh-text); margin-bottom: .4rem; }
.gh-dash .game-price { color: var(--gh-pink); font-weight: 800; margin-bottom: 1rem; }
.gh-dash .game-meta { color: var(--gh-muted); font-size: .85rem; }
.gh-dash .game-meta p { margin-bottom: .3rem; }

/* ---------- 空状态 ---------- */
.gh-dash .no-games,
.gh-dash .no-collections,
.gh-dash .no-items { text-align: center; padding: 3.5rem 1rem; color: var(--gh-muted); }
.gh-dash .no-games i,
.gh-dash .no-collections i,
.gh-dash .no-items i {
    font-size: 3rem;
    margin-bottom: 1rem;
    background: var(--gh-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

/* ---------- 开发者：API 密钥 / 信息 ---------- */
.gh-dash .info-alert {
    background: rgba(34, 211, 238, .10);
    border: 1px solid rgba(34, 211, 238, .35);
    color: #9beaf7;
    border-radius: 12px;
    padding: 1rem 1.2rem;
    margin-bottom: 1.5rem;
}
.gh-dash .api-key-card {
    background: var(--gh-gradient-soft);
    border: 1px solid var(--gh-border-strong);
    color: var(--gh-text);
    border-radius: var(--gh-radius);
    padding: 1.5rem;
    margin-bottom: 2rem;
}
.gh-dash .api-key {
    font-family: 'Courier New', monospace;
    font-size: 1.05rem;
    background: rgba(0, 0, 0, .25);
    border: 1px solid var(--gh-border);
    padding: .8rem;
    border-radius: 10px;
    word-break: break-all;
    color: var(--gh-cyan);
}
.gh-dash .developer-info {
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    border-radius: var(--gh-radius-sm);
    padding: 1.5rem;
    margin-bottom: 2rem;
}
.gh-dash .developer-info h4 { color: var(--gh-cyan); margin-bottom: 1rem; }
.gh-dash .developer-info .info-label { color: var(--gh-muted); font-weight: 600; font-family: inherit; }
.gh-dash .developer-info .info-value { color: var(--gh-text); font-family: inherit; font-weight: 600; text-align: right; word-break: break-word; }
.gh-dash .developer-info .info-item {
    display: grid;
    grid-template-columns: minmax(7.5rem, 34%) 1fr;
    align-items: center;
    gap: 1rem;
    padding: .65rem 0;
    margin: 0;
    border-bottom: 1px dashed var(--gh-border);
}
.gh-dash .developer-info .info-item:last-child { border-bottom: 0; }
.gh-dash .developer-info .info-value { text-align: left; }
.gh-dash .api-section {
    margin-bottom: 2rem;
    padding: 1.5rem;
    border: 1px solid var(--gh-border);
    border-radius: var(--gh-radius);
    background: var(--gh-surface);
}
.gh-dash .api-section h4,
.gh-dash .api-section h5 { color: var(--gh-violet); margin-bottom: 1rem; }
.gh-dash .api-endpoint {
    font-family: 'Courier New', monospace;
    background: rgba(0, 0, 0, .3);
    border: 1px solid var(--gh-border);
    padding: .7rem .9rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    color: #9beaf7;
}
.gh-dash .api-params { margin-bottom: 1rem; }
.gh-dash .api-params table { width: 100%; border-collapse: collapse; }
.gh-dash .api-params th,
.gh-dash .api-params td { padding: .7rem .9rem; border: 1px solid var(--gh-border); }
.gh-dash .api-params th { background: var(--gh-violet); color: #fff; text-align: left; }
.gh-dash .api-params tr:nth-child(even) { background: var(--gh-surface); }
.gh-dash .api-example {
    background: rgba(0, 0, 0, .3);
    border: 1px solid var(--gh-border);
    border-radius: 10px;
    padding: 1rem;
    margin-top: 1rem;
}
.gh-dash .api-example pre { font-family: 'Courier New', monospace; white-space: pre-wrap; margin: 0; color: #cfe9ff; }

/* ---------- 开发者：收益卡片 ---------- */
.gh-dash .earnings-card {
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    border-radius: var(--gh-radius-sm);
    transition: .25s;
}
.gh-dash .earnings-card:hover { transform: translateY(-5px); box-shadow: var(--gh-shadow); }
.gh-dash .earnings-card .card-body { padding: 1.5rem; }
.gh-dash .earnings-card .card-title { font-weight: 700; }
.gh-dash .frozen-card { border-left: 4px solid var(--gh-cyan); }
.gh-dash .available-card { border-left: 4px solid #38ef7d; }
.gh-dash .settled-card { border-left: 4px solid var(--gh-blue); }

/* ---------- 开发者：道具管理 ---------- */
.gh-dash .game-selector { margin-bottom: 2rem; }
.gh-dash .item-icon {
    width: 80px;
    height: 80px;
    object-fit: cover;
    border-radius: 12px;
    flex-shrink: 0;
    border: 1px solid var(--gh-border);
}
.gh-dash .list-group-item {
    background: var(--gh-surface);
    border: 1px solid var(--gh-border) !important;
    border-radius: 12px !important;
    margin-bottom: 1rem;
    color: var(--gh-text);
    transition: .25s;
}
.gh-dash .list-group-item:hover {
    transform: translateY(-2px);
    border-color: var(--gh-border-strong) !important;
    box-shadow: var(--gh-shadow);
}
.gh-dash .item-price { font-size: 1.2rem; font-weight: 800; color: var(--gh-pink); }
.gh-dash .text-xs { font-size: .75rem; }
.gh-dash .bg-gray-100 { background: var(--gh-surface-2) !important; color: var(--gh-muted); }
.gh-dash .bg-gray-200 { background: var(--gh-surface-2) !important; }

/* ---------- 合规 / 税务 / KYC ---------- */
.gh-dash .compliance-step {
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    border-radius: var(--gh-radius);
    transition: .25s;
}
.gh-dash .compliance-step:hover {
    transform: translateY(-3px);
    box-shadow: var(--gh-shadow);
    border-color: var(--gh-border-strong);
}
.gh-dash .step-icon {
    width: 64px;
    height: 64px;
    border-radius: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.6rem;
    color: #fff;
    margin: 0 auto 1rem;
    box-shadow: var(--gh-glow);
}
.gh-dash .tax-type-card {
    border: 2px solid var(--gh-border);
    border-radius: var(--gh-radius);
    padding: 1.5rem;
    cursor: pointer;
    transition: .2s;
    background: var(--gh-surface);
    color: var(--gh-text);
}
.gh-dash .tax-type-card:hover { border-color: var(--gh-violet); }
.gh-dash .tax-type-card.selected {
    border-color: var(--gh-violet);
    background: var(--gh-gradient-soft);
    box-shadow: var(--gh-glow);
}
.gh-dash .required { color: #ff7a90; }
.gh-dash .preview-img {
    max-width: 100%;
    max-height: 140px;
    border-radius: 12px;
    border: 1px solid var(--gh-border);
    margin-top: 8px;
}

/* ---------- 控制台内嵌弹窗（深色） ---------- */
.modal .modal-dialog:has(> .gh-modal) { max-width: 560px; margin: 9vh auto 2rem; }
.gh-modal {
    background: #0b1020 !important;
    background-image: radial-gradient(700px 360px at 12% 0%, rgba(168, 85, 247, .16), transparent 60%),
                      radial-gradient(600px 320px at 92% 100%, rgba(34, 211, 238, .12), transparent 60%) !important;
    border: 1px solid var(--gh-border-strong) !important;
    border-radius: 18px !important;
    color: var(--gh-text) !important;
    box-shadow: 0 30px 80px -30px rgba(0, 0, 0, .9) !important;
    overflow: hidden;
}
.gh-modal .modal-header { border-bottom: 1px solid var(--gh-border); color: var(--gh-text); padding: 1.1rem 1.4rem; }
.gh-modal .modal-title { font-weight: 800; font-size: 1.05rem; color: var(--gh-text); }
.gh-modal .modal-body { color: var(--gh-text); padding: 1.3rem 1.4rem; }
.gh-modal .modal-footer { border-top: 1px solid var(--gh-border); padding: 1rem 1.4rem; gap: .5rem; }
.gh-modal .modal-footer .btn { margin: 0; }
.gh-modal .list-group-item {
    background: rgba(255, 255, 255, .04) !important;
    border: 1px solid var(--gh-border) !important;
    color: var(--gh-text);
}

/* =============================================================
   登录 / 注册 — 分屏式
   ============================================================= */
.gh-auth {
    position: relative;
    z-index: 1;
    min-height: calc(100vh - 70px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem 1rem;
}
.gh-auth__card {
    display: grid;
    grid-template-columns: 1.05fr 1fr;
    width: min(960px, 100%);
    border-radius: 24px;
    overflow: hidden;
    border: 1px solid var(--gh-border);
    box-shadow: var(--gh-shadow);
    background: var(--gh-surface);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}
.gh-auth__brand {
    position: relative;
    padding: 3rem 2.5rem;
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 1.25rem;
    overflow: hidden;
    background:
        radial-gradient(600px 400px at 20% 10%, rgba(168, 85, 247, .45), transparent 60%),
        radial-gradient(500px 400px at 90% 90%, rgba(34, 211, 238, .40), transparent 60%),
        linear-gradient(150deg, rgba(168, 85, 247, .35), rgba(34, 211, 238, .22));
}
.gh-auth__brand::after {
    content: "";
    position: absolute;
    width: 320px;
    height: 320px;
    right: -90px;
    top: -90px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(236, 72, 153, .55), transparent 65%);
    filter: blur(10px);
    pointer-events: none;
}
.gh-auth__logo {
    display: flex;
    align-items: center;
    gap: .7rem;
    font-weight: 900;
    font-size: 1.5rem;
}
.gh-auth__logo i {
    width: 46px;
    height: 46px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    background: rgba(255, 255, 255, .15);
    box-shadow: 0 8px 24px -8px rgba(0, 0, 0, .4);
}
.gh-auth__title {
    font-size: 2.1rem;
    font-weight: 900;
    line-height: 1.2;
    position: relative;
    z-index: 1;
}
.gh-auth__title span {
    background: var(--gh-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.gh-auth__desc {
    color: rgba(255, 255, 255, .82);
    position: relative;
    z-index: 1;
}
.gh-auth__features {
    list-style: none;
    padding: 0;
    margin: .5rem 0 0;
    display: flex;
    flex-direction: column;
    gap: .85rem;
    position: relative;
    z-index: 1;
}
.gh-auth__features li {
    display: flex;
    align-items: center;
    gap: .75rem;
    color: rgba(255, 255, 255, .94);
}
.gh-auth__features i {
    width: 32px;
    height: 32px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, .14);
    flex: 0 0 auto;
}
.gh-auth__form {
    padding: 3rem 2.75rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.gh-auth__form h2 {
    font-weight: 900;
    font-size: 1.9rem;
    margin-bottom: .25rem;
    background: var(--gh-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.gh-auth__sub { color: var(--gh-muted); margin-bottom: 1.75rem; }
.gh-auth__field { position: relative; margin-bottom: 1.1rem; }
.gh-auth__field > i.fa {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--gh-muted);
}
.gh-auth__field .form-control {
    padding-left: 2.7rem;
    border-radius: 12px;
    background: var(--gh-surface);
    border: 1px solid var(--gh-border);
    color: var(--gh-text);
    height: calc(1.5em + 1.1rem + 2px);
}
.gh-auth__field .form-control::placeholder { color: var(--gh-muted); opacity: .7; }
.gh-auth__field .form-control:focus {
    border-color: var(--gh-violet);
    box-shadow: 0 0 0 .2rem rgba(168, 85, 247, .25);
    background: var(--gh-surface-2);
    color: var(--gh-text);
}
.gh-auth__row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1.25rem;
}
.gh-auth__check {
    display: flex;
    align-items: center;
    gap: .5rem;
    color: var(--gh-muted);
    font-size: .9rem;
    cursor: pointer;
}
.gh-auth__check input { accent-color: var(--gh-violet); width: 16px; height: 16px; }
.gh-auth__link { color: var(--gh-cyan); text-decoration: none; font-size: .9rem; }
.gh-auth__link:hover { color: var(--gh-pink); }
.gh-auth__submit {
    width: 100%;
    padding: .9rem;
    border-radius: 12px;
    border: 0;
    font-weight: 700;
    font-size: 1.02rem;
    background: var(--gh-gradient);
    color: #fff;
    box-shadow: 0 12px 30px -12px rgba(168, 85, 247, .9);
    margin-top: .5rem;
    transition: .25s;
}
.gh-auth__submit:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 38px -10px rgba(236, 72, 153, .95);
}
.gh-auth__switch { text-align: center; margin-top: 1.5rem; color: var(--gh-muted); }

@media (max-width: 820px) {
    .gh-auth__card { grid-template-columns: 1fr; }
    .gh-auth__brand { display: none; }
    .gh-auth__form { padding: 2.25rem 1.5rem; }
}

/* =============================================================
   移动端：侧栏改为双列菜单，避免占据首屏
   ============================================================= */
@media (max-width: 767.98px) {
    .gh-dash .user-sidebar,
    .gh-dash .developer-sidebar { padding: .95rem; }
    .gh-dash .side-head { padding: 0 0 .75rem; margin-bottom: .75rem; }
    .gh-dash .side-nav { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; }
    .gh-dash .side-nav .nav-item { width: 100%; }
    .gh-dash .user-sidebar .nav-link,
    .gh-dash .developer-sidebar .nav-link {
        margin-bottom: 0;
        padding: .62rem .7rem;
        font-size: .85rem;
        gap: .5rem;
    }
    .gh-dash .user-sidebar .nav-link.active::after,
    .gh-dash .developer-sidebar .nav-link.active::after { display: none; }
    .gh-dash .profile-header { padding: 1.75rem 1.25rem; }
    .gh-dash .user-info { padding: 1.35rem; }
    .gh-dash .card-body { padding: 1.25rem; }
    .gh-dash .profile-card > .card-header { padding: 1.15rem 1.25rem; }
    .gh-dash .card-header h2 { font-size: 1.3rem; }
    .gh-dash .developer-info .info-item { grid-template-columns: 1fr; gap: .25rem; }
}

/* ---------- 结算账户（payoutAccount） ---------- */
.gh-dash .payout-summary {
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    flex-wrap: wrap;
    padding: .9rem 1rem;
    border: 1px solid var(--gh-border);
    border-radius: 14px;
    background: var(--gh-surface);
}
.gh-dash .payout-summary__main { display: flex; align-items: center; gap: .8rem; }
.gh-dash .payout-summary__ico {
    display: inline-flex; align-items: center; justify-content: center;
    width: 40px; height: 40px; border-radius: 12px;
    background: linear-gradient(135deg, rgba(168,85,247,.28), rgba(34,211,238,.22));
    color: #e9d5ff; font-size: 1.05rem;
}
.gh-dash .payout-summary__main strong { color: var(--gh-text); display: block; font-size: .98rem; }
.gh-dash .payout-summary__sub { display: block; color: var(--gh-muted); font-size: .82rem; margin-top: .15rem; }
.gh-dash .payout-summary__meta { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.gh-dash .payout-summary__fee { color: var(--gh-muted); font-size: .85rem; }
.gh-dash .payout-summary__fee b { color: var(--gh-text); }
.gh-dash .payout-fee-box {
    display: flex; flex-direction: column; gap: .15rem;
    padding: .55rem .8rem; border-radius: 10px;
    border: 1px dashed var(--gh-border);
    background: rgba(255,255,255,.02);
}
.gh-dash .payout-fee-box b { color: var(--gh-text); font-size: 1rem; }
.gh-dash .payout-fields { display: block; }
.gh-dash .payout-summary__label {
    display: block; font-size: .7rem; letter-spacing: .06em; text-transform: uppercase;
    color: var(--gh-muted); margin-bottom: .1rem;
}
