/* ============================================================
 * yjly 后台 - 可爱风主题 Cute Theme (2026-04-20)
 *
 * 覆盖 FastAdmin 默认 AdminLTE + Bootstrap 3 样式
 * 保留所有结构和交互，仅重写视觉
 *
 * 配色：糖果粉 + 奶油白 + 薄荷绿/淡蓝/淡紫点缀
 * 设计：大圆角 / 柔粉阴影 / 圆润字形 / 微动效果
 * 注：文件名沿用 tech-theme.css（方案历史），回滚见 git 历史
 * ============================================================ */

:root {
    /* Primary 糖果粉 */
    --cute-primary: #FF9EAA;
    --cute-primary-hover: #FF7B95;
    --cute-primary-active: #F75C7C;
    --cute-primary-light: #FFE5E8;
    --cute-primary-lighter: #FFF1F3;

    /* 马卡龙辅助色 */
    --cute-mint: #A8E6CF;
    --cute-mint-light: #D8F3DC;
    --cute-sky: #C6DEF1;
    --cute-sky-light: #E7F0FD;
    --cute-lavender: #DBC5F0;
    --cute-lavender-light: #F0E6FA;
    --cute-cream: #FFE5B4;
    --cute-cream-light: #FFF5DD;
    --cute-peach: #FEC5BB;

    /* Semantic（保持柔和）*/
    --cute-success: #7DD8A6;
    --cute-warning: #FFD166;
    --cute-danger: #FF8787;
    --cute-info: #8ED1D6;

    /* 背景与中性 */
    --cute-bg: #FFFAF7;
    --cute-bg-pink: #FFF5F6;
    --cute-white: #FFFFFF;

    /* 奶茶色系文字（比纯黑柔和）*/
    --cute-text: #5B4D5F;
    --cute-text-secondary: #7A6F81;
    --cute-text-muted: #A0969C;
    --cute-text-on-dark: #FFFFFF;

    /* 边框（淡粉）+ 柔阴影 */
    --cute-border: #F5DFE3;
    --cute-border-hover: #FADCE3;
    --cute-shadow-sm: 0 2px 6px rgba(255, 158, 170, 0.08), 0 1px 2px rgba(91, 77, 95, 0.04);
    --cute-shadow-md: 0 4px 12px rgba(255, 158, 170, 0.12), 0 2px 4px rgba(91, 77, 95, 0.05);
    --cute-shadow-lg: 0 10px 30px rgba(255, 158, 170, 0.15), 0 4px 10px rgba(91, 77, 95, 0.06);
    --cute-shadow-ring: 0 0 0 4px rgba(255, 158, 170, 0.2);

    /* 圆角（比科技风更大）*/
    --cute-radius-sm: 8px;
    --cute-radius-md: 12px;
    --cute-radius-lg: 16px;
    --cute-radius-xl: 20px;
    --cute-radius-pill: 9999px;

    /* 字体（圆体优先）*/
    --cute-font: "Quicksand", "Nunito", "PingFang SC", "Hiragino Sans GB",
        "Microsoft YaHei", "方正准圆简体", -apple-system, BlinkMacSystemFont,
        "Segoe UI", Roboto, sans-serif;

    /* 过渡 */
    --cute-trans: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1); /* 弹性 */
    --cute-trans-fast: all 0.18s ease-out;
}

/* ========================= 全局 ========================= */

html, body {
    font-family: var(--cute-font);
    font-size: 13px;
    color: var(--cute-text);
    background: var(--cute-bg);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    letter-spacing: 0.02em;
    line-height: 1.6;
}

body.skin-blue,
body.skin-blue-light {
    background: var(--cute-bg) !important;
    color: var(--cute-text) !important;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--cute-font);
    color: var(--cute-text);
    font-weight: 600;
    letter-spacing: 0.01em;
}
h1 { font-size: 20px; }
h2 { font-size: 18px; }
h3 { font-size: 16px; }
h4 { font-size: 14px; }

a {
    color: var(--cute-primary);
    text-decoration: none;
    transition: var(--cute-trans-fast);
}
a:hover, a:focus {
    color: var(--cute-primary-hover);
    text-decoration: none;
}

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--cute-primary-lighter); border-radius: var(--cute-radius-pill); }
::-webkit-scrollbar-thumb { background: var(--cute-primary-light); border-radius: var(--cute-radius-pill); border: 2px solid var(--cute-primary-lighter); }
::-webkit-scrollbar-thumb:hover { background: var(--cute-primary); }

/* 选中高亮柔粉 */
::selection { background: var(--cute-primary-light); color: var(--cute-text); }

/* ========================= 顶栏 ========================= */

.main-header { border: none; box-shadow: var(--cute-shadow-sm); }

.main-header .navbar,
.main-header .logo {
    background: linear-gradient(135deg, #FFB5C5 0%, #FF9EAA 50%, #FEC5BB 100%) !important;
    transition: var(--cute-trans);
    border: none !important;
}
.main-header .logo {
    font-weight: 700;
    letter-spacing: 0.5px;
    font-size: 17px;
    color: #fff !important;
    text-shadow: 0 1px 2px rgba(247, 92, 124, 0.2);
}
.main-header .logo:hover {
    background: linear-gradient(135deg, #FF9EAA 0%, #FFB5C5 50%, #DBC5F0 100%) !important;
}

.main-header .navbar-custom-menu > .nav > li > a {
    color: #fff !important;
    transition: var(--cute-trans-fast);
}
.main-header .navbar-custom-menu > .nav > li > a:hover {
    background: rgba(255, 255, 255, 0.2) !important;
    color: #fff !important;
}

.sidebar-toggle {
    background: transparent !important;
    color: #fff !important;
    transition: var(--cute-trans);
    border-radius: var(--cute-radius-md) !important;
    margin: 5px !important;
    padding: 10px 14px !important;
}
.sidebar-toggle:hover {
    background: rgba(255, 255, 255, 0.25) !important;
    transform: scale(1.05);
}

/* 顶栏下拉 */
.main-header .dropdown-menu {
    background: #fff;
    border: 1px solid var(--cute-border);
    border-radius: var(--cute-radius-lg);
    box-shadow: var(--cute-shadow-lg);
    padding: 6px;
    margin-top: 8px;
}
.main-header .dropdown-menu .user-header {
    background: linear-gradient(135deg, #FFB5C5 0%, #FF9EAA 100%) !important;
    color: #fff !important;
    border-radius: var(--cute-radius-md) var(--cute-radius-md) 0 0;
}
.main-header .dropdown-menu .user-header p {
    color: #fff !important;
    font-weight: 700;
}
.main-header .dropdown-menu .user-header small {
    color: rgba(255, 255, 255, 0.85) !important;
}
.main-header .dropdown-menu .user-body a,
.main-header .dropdown-menu .user-footer a,
.main-header .dropdown-menu li > a {
    color: var(--cute-text) !important;
    border-radius: var(--cute-radius-sm);
    transition: var(--cute-trans-fast);
}
.main-header .dropdown-menu li > a:hover {
    background: var(--cute-primary-lighter) !important;
    color: var(--cute-primary-hover) !important;
}

/* ========================= 侧栏 ========================= */

.main-sidebar, .left-side {
    background: linear-gradient(180deg, #FFF5F6 0%, #FFF8F5 100%) !important;
    box-shadow: 2px 0 12px rgba(255, 158, 170, 0.08);
    border-right: 1px solid var(--cute-border);
}
.sidebar { background: transparent; }

/* 用户面板 */
.sidebar .user-panel {
    border-bottom: 1px dashed var(--cute-border);
    padding: 16px 12px;
    background: transparent;
}
.sidebar .user-panel .image img {
    border: 3px solid #fff;
    box-shadow: 0 0 0 3px var(--cute-primary-light);
    transition: var(--cute-trans);
}
.sidebar .user-panel .image img:hover {
    transform: rotate(-5deg) scale(1.05);
    box-shadow: 0 0 0 3px var(--cute-primary);
}
.sidebar .user-panel .info p {
    color: var(--cute-text) !important;
    font-weight: 700;
}
.sidebar .user-panel .info > a,
.sidebar .user-panel .info a {
    color: var(--cute-text-secondary) !important;
    font-size: 12px;
}
.sidebar .user-panel .info .fa-circle.text-success {
    color: var(--cute-success) !important;
    filter: drop-shadow(0 0 3px var(--cute-success));
}
/* 在线字样加个♥ */
.sidebar .user-panel .info .fa-circle.text-success::after {
    content: " ♡";
    color: var(--cute-primary);
    font-size: 13px;
    margin-left: 2px;
}

/* 菜单项 */
.sidebar-menu {
    padding: 8px;
}
.sidebar-menu > li {
    margin-bottom: 4px;
}
.sidebar-menu > li > a {
    color: var(--cute-text) !important;
    padding: 10px 14px;
    border-radius: var(--cute-radius-md);
    transition: var(--cute-trans-fast);
    font-size: 13px;
    font-weight: 500;
}
.sidebar-menu > li > a > .fa,
.sidebar-menu > li > a > .glyphicon,
.sidebar-menu > li > a > .ion {
    width: 20px;
    text-align: center;
    margin-right: 8px;
    color: var(--cute-primary) !important;
    transition: var(--cute-trans);
}
.sidebar-menu > li:hover > a {
    background: var(--cute-primary-lighter) !important;
    color: var(--cute-primary-hover) !important;
    transform: translateX(2px);
}
.sidebar-menu > li:hover > a > .fa {
    transform: scale(1.15) rotate(-5deg);
}
.sidebar-menu > li.active > a,
.sidebar-menu > li.menu-open > a {
    background: linear-gradient(135deg, var(--cute-primary) 0%, #FFB5C5 100%) !important;
    color: #fff !important;
    box-shadow: 0 4px 10px rgba(255, 158, 170, 0.35);
    font-weight: 600;
}
.sidebar-menu > li.active > a > .fa,
.sidebar-menu > li.menu-open > a > .fa {
    color: #fff !important;
}

/* 子菜单 */
.sidebar-menu .treeview-menu {
    background: rgba(255, 245, 246, 0.7);
    padding: 4px 6px;
    border-radius: 0 0 var(--cute-radius-md) var(--cute-radius-md);
    margin: -4px 0 8px;
}
.sidebar-menu .treeview-menu > li > a {
    color: var(--cute-text-secondary) !important;
    padding: 7px 8px 7px 36px;
    font-size: 12.5px;
    border-radius: var(--cute-radius-sm);
    transition: var(--cute-trans-fast);
}
.sidebar-menu .treeview-menu > li > a:hover {
    background: #fff !important;
    color: var(--cute-primary) !important;
}
.sidebar-menu .treeview-menu > li.active > a {
    background: #fff !important;
    color: var(--cute-primary-hover) !important;
    font-weight: 600;
}
.sidebar-menu .treeview-menu > li > a > .fa {
    color: var(--cute-lavender);
}

/* 折叠 */
.sidebar-mini.sidebar-collapse .sidebar-menu > li > a {
    border-radius: var(--cute-radius-md);
}
.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu {
    background: #fff;
    border-radius: var(--cute-radius-md);
    box-shadow: var(--cute-shadow-lg);
    border: 1px solid var(--cute-border);
}

/* ========================= 内容区 ========================= */

.content-wrapper, .right-side {
    background: var(--cute-bg);
    min-height: calc(100vh - 50px);
}

.content-header {
    padding: 18px 22px 10px;
    background: transparent;
}
.content-header > h1 {
    font-size: 17px;
    font-weight: 700;
    color: var(--cute-text);
    margin: 0;
}
.content-header > h1::before {
    content: "✿ ";
    color: var(--cute-primary);
    font-size: 16px;
}
.content-header > h1 > small {
    color: var(--cute-text-muted);
    font-size: 12px;
    margin-left: 8px;
    font-weight: 400;
}
.content-header .breadcrumb {
    background: transparent;
    padding: 0;
    font-size: 12px;
    color: var(--cute-text-secondary);
}
.content-header .breadcrumb > li + li:before { color: var(--cute-primary); content: "›"; }
.content-header .breadcrumb > .active { color: var(--cute-text-muted); }
.content-header .breadcrumb > li > a { color: var(--cute-text-secondary); }

.content { padding: 8px 22px 22px; }

/* ========================= 面板 / 卡片 ========================= */

.panel, .nav-tabs-custom, .box {
    background: #fff;
    border: 1px solid var(--cute-border);
    border-radius: var(--cute-radius-lg);
    box-shadow: var(--cute-shadow-sm);
    transition: var(--cute-trans);
}
.panel:hover, .box:hover {
    box-shadow: var(--cute-shadow-md);
    transform: translateY(-1px);
}

.panel-heading, .box-header {
    background: linear-gradient(to right, var(--cute-primary-lighter) 0%, #fff 80%) !important;
    border-bottom: 1px dashed var(--cute-border);
    color: var(--cute-text) !important;
    padding: 12px 18px;
    border-radius: var(--cute-radius-lg) var(--cute-radius-lg) 0 0 !important;
}
.panel-title, .box-title {
    font-weight: 700;
    font-size: 14px;
    color: var(--cute-text) !important;
}

.panel-body, .box-body { padding: 18px; }

.panel-intro {
    padding: 0; background: transparent; box-shadow: none; border: none;
}
.panel-intro:hover { transform: none; box-shadow: none; }
.panel-intro .panel-body { padding: 0; }

.panel-footer, .box-footer {
    background: var(--cute-primary-lighter) !important;
    border-top: 1px dashed var(--cute-border);
    border-radius: 0 0 var(--cute-radius-lg) var(--cute-radius-lg);
}

/* Dashboard .sm-st 小卡片 */
.sm-st {
    background: #fff !important;
    border: 1px solid var(--cute-border);
    border-radius: var(--cute-radius-lg);
    box-shadow: var(--cute-shadow-sm);
    transition: var(--cute-trans);
    color: var(--cute-text) !important;
    position: relative;
    overflow: hidden;
}
.sm-st::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(to right, var(--cute-primary), var(--cute-lavender));
    opacity: 0.7;
}
.sm-st:hover {
    box-shadow: var(--cute-shadow-lg);
    transform: translateY(-3px) rotate(-0.5deg);
}
.sm-st .sm-st-icon {
    width: 56px; height: 56px;
    line-height: 56px;
    border-radius: var(--cute-radius-lg) !important;
    color: #fff !important;
    font-size: 26px;
    box-shadow: var(--cute-shadow-sm);
    transition: var(--cute-trans);
}
.sm-st:hover .sm-st-icon {
    transform: scale(1.08) rotate(-8deg);
}
.sm-st .sm-st-info {
    color: var(--cute-text-secondary) !important;
    font-size: 13px;
    font-weight: 500;
}
.sm-st .sm-st-info span {
    color: var(--cute-text) !important;
    font-size: 28px !important;
    font-weight: 700 !important;
    letter-spacing: -0.02em;
}

/* 彩色 icon 块改为柔和色 */
.sm-st-icon.orange, .st-red,
.sm-st-icon.st-red { background: linear-gradient(135deg, #FF9EAA, #FF7B95) !important; }
.sm-st-icon.tar, .st-green,
.sm-st-icon.st-green { background: linear-gradient(135deg, #A8E6CF, #7DD8A6) !important; }
.sm-st-icon.st-violet { background: linear-gradient(135deg, #DBC5F0, #B39DD8) !important; }
.sm-st-icon.st-blue { background: linear-gradient(135deg, #C6DEF1, #8ED1D6) !important; }
.sm-st-icon.yellow-b { background: linear-gradient(135deg, #FFE5B4, #FFD166) !important; }
.sm-st-icon.pink { background: linear-gradient(135deg, #FEC5BB, #FF9EAA) !important; }
.sm-st-icon.green { background: linear-gradient(135deg, #A8E6CF, #7DD8A6) !important; }

/* AdminLTE 的 small-box */
.small-box, .info-box {
    border-radius: var(--cute-radius-lg);
    box-shadow: var(--cute-shadow-sm);
    transition: var(--cute-trans);
    overflow: hidden;
    background: #fff;
    color: var(--cute-text);
}
.small-box:hover, .info-box:hover {
    box-shadow: var(--cute-shadow-lg);
    transform: translateY(-2px);
}
.small-box > .inner { padding: 18px 20px; }
.small-box > .inner > h3 {
    font-size: 28px; font-weight: 700;
    color: var(--cute-text); letter-spacing: -0.02em;
}
.small-box > .inner > p { color: var(--cute-text-secondary); font-size: 13px; }
.small-box > .icon {
    color: var(--cute-primary-light);
    top: 12px; right: 16px; font-size: 72px;
    transition: var(--cute-trans);
}
.small-box:hover > .icon {
    color: var(--cute-primary);
    transform: scale(1.1) rotate(-8deg);
}
.small-box > .small-box-footer {
    background: var(--cute-primary-lighter);
    color: var(--cute-text-secondary) !important;
    border-top: 1px dashed var(--cute-border);
    padding: 7px 16px;
}
.small-box > .small-box-footer:hover {
    background: var(--cute-primary-light);
    color: var(--cute-primary-hover) !important;
}

.small-box.bg-aqua, .small-box.bg-aqua-active {
    background: linear-gradient(135deg, #fff 0%, var(--cute-sky-light) 100%) !important;
    border-left: 4px solid var(--cute-info);
}
.small-box.bg-green, .small-box.bg-green-active {
    background: linear-gradient(135deg, #fff 0%, var(--cute-mint-light) 100%) !important;
    border-left: 4px solid var(--cute-success);
}
.small-box.bg-yellow, .small-box.bg-yellow-active {
    background: linear-gradient(135deg, #fff 0%, var(--cute-cream-light) 100%) !important;
    border-left: 4px solid var(--cute-warning);
}
.small-box.bg-red, .small-box.bg-red-active {
    background: linear-gradient(135deg, #fff 0%, var(--cute-primary-light) 100%) !important;
    border-left: 4px solid var(--cute-primary);
}
.small-box.bg-blue, .small-box.bg-light-blue,
.small-box.bg-blue-active, .small-box.bg-light-blue-active {
    background: linear-gradient(135deg, #fff 0%, var(--cute-sky-light) 100%) !important;
    border-left: 4px solid var(--cute-sky);
}
.small-box.bg-purple, .small-box.bg-purple-active {
    background: linear-gradient(135deg, #fff 0%, var(--cute-lavender-light) 100%) !important;
    border-left: 4px solid var(--cute-lavender);
}
.small-box[class*="bg-"] h3, .small-box[class*="bg-"] p {
    color: var(--cute-text) !important;
}

/* ========================= Tab 页 ========================= */

.nav-tabs-custom > .nav-tabs {
    background: #fff;
    border-bottom: 1px dashed var(--cute-border);
    padding: 0 12px;
    margin: 0;
}
.nav-tabs-custom > .nav-tabs > li > a,
.nav-tabs > li > a {
    color: var(--cute-text-secondary) !important;
    padding: 12px 18px;
    border: none;
    border-bottom: 3px solid transparent;
    background: transparent;
    transition: var(--cute-trans);
    font-weight: 500;
    border-radius: var(--cute-radius-sm) var(--cute-radius-sm) 0 0;
}
.nav-tabs-custom > .nav-tabs > li > a:hover,
.nav-tabs > li > a:hover {
    color: var(--cute-primary) !important;
    background: var(--cute-primary-lighter) !important;
    border-bottom-color: transparent;
}
.nav-tabs-custom > .nav-tabs > li.active > a,
.nav-tabs > li.active > a,
.nav-tabs-custom > .nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:hover {
    color: var(--cute-primary-hover) !important;
    border-bottom: 3px solid var(--cute-primary) !important;
    background: transparent !important;
    font-weight: 700;
}

/* FastAdmin addtabs */
#nav > li > a {
    padding: 9px 18px !important;
    border-bottom: 3px solid transparent !important;
    transition: var(--cute-trans-fast);
    color: var(--cute-text-secondary) !important;
    background: transparent !important;
    border-radius: var(--cute-radius-sm) var(--cute-radius-sm) 0 0 !important;
}
#nav > li.active > a {
    color: var(--cute-primary-hover) !important;
    border-bottom-color: var(--cute-primary) !important;
    font-weight: 700;
}
#nav > li:hover > a {
    color: var(--cute-primary) !important;
    background: var(--cute-primary-lighter) !important;
}

/* ========================= 按钮 ========================= */

.btn {
    border-radius: var(--cute-radius-md);
    border: 1px solid transparent;
    padding: 7px 16px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.02em;
    transition: var(--cute-trans);
    box-shadow: var(--cute-shadow-sm);
    line-height: 1.5;
}
.btn:focus, .btn:active:focus { outline: none; box-shadow: var(--cute-shadow-ring); }
.btn:hover { transform: translateY(-1px); }

.btn-primary {
    background: linear-gradient(135deg, var(--cute-primary) 0%, #FFB5C5 100%);
    border-color: var(--cute-primary);
    color: #fff !important;
}
.btn-primary:hover, .btn-primary:focus {
    background: linear-gradient(135deg, var(--cute-primary-hover) 0%, var(--cute-primary) 100%);
    border-color: var(--cute-primary-hover);
    color: #fff !important;
    box-shadow: 0 4px 12px rgba(255, 158, 170, 0.4), var(--cute-shadow-ring);
}
.btn-primary:active {
    background: var(--cute-primary-active) !important;
    border-color: var(--cute-primary-active) !important;
}

.btn-default, .btn.btn-default {
    background: #fff;
    border-color: var(--cute-border);
    color: var(--cute-text-secondary) !important;
}
.btn-default:hover {
    background: var(--cute-primary-lighter);
    border-color: var(--cute-primary-light);
    color: var(--cute-primary-hover) !important;
}

.btn-success {
    background: linear-gradient(135deg, var(--cute-success) 0%, #A8E6CF 100%);
    border-color: var(--cute-success);
    color: #fff !important;
}
.btn-success:hover {
    background: #5FC78D;
    border-color: #5FC78D;
    box-shadow: 0 4px 12px rgba(125, 216, 166, 0.4);
}

.btn-danger {
    background: linear-gradient(135deg, var(--cute-danger) 0%, #FFB5B5 100%);
    border-color: var(--cute-danger);
    color: #fff !important;
}
.btn-danger:hover {
    background: #FF5C5C;
    border-color: #FF5C5C;
    box-shadow: 0 4px 12px rgba(255, 135, 135, 0.4);
}

.btn-warning {
    background: linear-gradient(135deg, var(--cute-warning) 0%, #FFE5B4 100%);
    border-color: var(--cute-warning);
    color: #6B4D0F !important;
}
.btn-warning:hover {
    background: #F5B82F;
    border-color: #F5B82F;
    color: #6B4D0F !important;
    box-shadow: 0 4px 12px rgba(255, 209, 102, 0.4);
}

.btn-info {
    background: linear-gradient(135deg, var(--cute-info) 0%, #C6DEF1 100%);
    border-color: var(--cute-info);
    color: #fff !important;
}
.btn-info:hover {
    background: #6EBEC3;
    border-color: #6EBEC3;
    box-shadow: 0 4px 12px rgba(142, 209, 214, 0.4);
}

.btn-sm, .btn-xs { padding: 5px 11px; font-size: 12px; }
.btn-group > .btn { box-shadow: none; }

/* ========================= 表单 ========================= */

.form-control {
    border: 1.5px solid var(--cute-border);
    border-radius: var(--cute-radius-md);
    background: #fff !important;
    color: var(--cute-text) !important;
    padding: 7px 12px;
    font-size: 13px;
    box-shadow: none;
    transition: var(--cute-trans);
    height: 36px;
}
.form-control:focus {
    border-color: var(--cute-primary);
    box-shadow: var(--cute-shadow-ring);
    outline: none;
}
.form-control::placeholder { color: var(--cute-text-muted); opacity: 1; }

textarea.form-control { height: auto; min-height: 84px; border-radius: var(--cute-radius-md); }

.input-group-addon {
    background: var(--cute-primary-lighter);
    border: 1.5px solid var(--cute-border);
    color: var(--cute-primary-hover);
    border-radius: var(--cute-radius-md);
}

.control-label, label {
    font-weight: 600;
    color: var(--cute-text) !important;
}
.help-block { color: var(--cute-text-muted) !important; font-size: 12px; }

.has-error .form-control {
    border-color: var(--cute-danger);
    box-shadow: none;
}
.has-error .form-control:focus {
    box-shadow: 0 0 0 4px rgba(255, 135, 135, 0.2);
}
.has-error .control-label, .has-error .help-block {
    color: var(--cute-danger);
}

/* 表单里所有 input 强制 */
input[type="text"], input[type="password"], input[type="email"],
input[type="tel"], input[type="number"], input[type="search"],
input[type="date"], input[type="datetime"], input[type="time"],
input[type="url"], textarea, select {
    color: var(--cute-text) !important;
    background: #fff !important;
}
select option { color: var(--cute-text) !important; background: #fff !important; }

/* bootstrap-select */
.bootstrap-select > .dropdown-toggle {
    background: #fff !important;
    border: 1.5px solid var(--cute-border) !important;
    border-radius: var(--cute-radius-md) !important;
    color: var(--cute-text) !important;
    box-shadow: none !important;
    transition: var(--cute-trans-fast);
}
.bootstrap-select > .dropdown-toggle:focus,
.bootstrap-select.open > .dropdown-toggle {
    border-color: var(--cute-primary) !important;
    box-shadow: var(--cute-shadow-ring) !important;
    outline: none !important;
}
.bootstrap-select .dropdown-menu {
    border: 1px solid var(--cute-border);
    border-radius: var(--cute-radius-md);
    box-shadow: var(--cute-shadow-lg);
    padding: 6px;
    background: #fff !important;
}
.bootstrap-select .dropdown-menu > li > a {
    padding: 7px 12px;
    border-radius: var(--cute-radius-sm);
    transition: var(--cute-trans-fast);
    color: var(--cute-text) !important;
}
.bootstrap-select .dropdown-menu > li > a:hover,
.bootstrap-select .dropdown-menu > .active > a {
    background: var(--cute-primary-lighter) !important;
    color: var(--cute-primary-hover) !important;
}
.bootstrap-select .filter-option { color: var(--cute-text) !important; }

/* select2 */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    border: 1.5px solid var(--cute-border) !important;
    border-radius: var(--cute-radius-md) !important;
    min-height: 36px !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered,
.select2-container--default .select2-selection--multiple .select2-selection__rendered {
    color: var(--cute-text) !important;
}
.select2-container--default .select2-results__option {
    color: var(--cute-text) !important;
    padding: 7px 12px;
    border-radius: var(--cute-radius-sm);
}
.select2-container--default .select2-results__option--highlighted[aria-selected] {
    background: var(--cute-primary-lighter) !important;
    color: var(--cute-primary-hover) !important;
}

/* checkbox/radio */
.checkbox label, .radio label, .checkbox-inline, .radio-inline {
    color: var(--cute-text) !important;
    font-weight: 500;
}

/* ========================= 表格 ========================= */

.table {
    background: transparent;
    margin-bottom: 0;
    color: var(--cute-text) !important;
}
.table > thead > tr > th {
    background: var(--cute-primary-lighter) !important;
    color: var(--cute-text) !important;
    font-weight: 700;
    font-size: 12.5px;
    letter-spacing: 0.02em;
    border-bottom: 2px solid var(--cute-primary-light);
    padding: 12px;
    vertical-align: middle;
}
.table > tbody > tr > td {
    padding: 11px 12px;
    border-top: 1px dashed var(--cute-border);
    vertical-align: middle;
    color: var(--cute-text) !important;
}
.table a { color: var(--cute-primary) !important; }
.table a:hover { color: var(--cute-primary-hover) !important; text-decoration: underline; }
.table-hover > tbody > tr:hover {
    background: var(--cute-primary-lighter) !important;
}
.table-striped > tbody > tr:nth-of-type(odd) {
    background: rgba(255, 245, 246, 0.5);
}
.table-striped > tbody > tr:nth-of-type(odd):hover {
    background: var(--cute-primary-lighter) !important;
}
.table > tbody > tr.selected {
    background: var(--cute-primary-light) !important;
}

/* bootstrap-table 容器 */
.bootstrap-table .fixed-table-container {
    border: 1px solid var(--cute-border);
    border-radius: var(--cute-radius-lg);
    overflow: hidden;
}
.bootstrap-table .fixed-table-toolbar { padding: 10px 4px; border-bottom: 0; }
.bootstrap-table .fixed-table-pagination { padding: 12px 8px 6px; }

/* 分页 */
.pagination { margin: 0; }
.pagination > li > a, .pagination > li > span {
    border: 1.5px solid var(--cute-border);
    color: var(--cute-text-secondary) !important;
    padding: 5px 12px;
    font-size: 12.5px;
    border-radius: var(--cute-radius-md);
    margin: 0 2px;
    transition: var(--cute-trans-fast);
}
.pagination > li:first-child > a,
.pagination > li:last-child > a,
.pagination > li:first-child > span,
.pagination > li:last-child > span { border-radius: var(--cute-radius-md); }
.pagination > li > a:hover {
    background: var(--cute-primary-lighter);
    color: var(--cute-primary-hover) !important;
    border-color: var(--cute-primary-light);
    transform: translateY(-1px);
}
.pagination > .active > a,
.pagination > .active > a:hover,
.pagination > .active > span {
    background: linear-gradient(135deg, var(--cute-primary), #FFB5C5) !important;
    border-color: var(--cute-primary) !important;
    color: #fff !important;
    box-shadow: 0 2px 6px rgba(255, 158, 170, 0.35);
}

/* 分页"跳转"按钮条 (bootstrap-table-jumpto 扩展)
 * 默认 .jumpto input { height:31px } + .btn-xs 按钮 + .pagination > li > a
 * 三个元素 padding/line-height/vertical-align 都不一样，baseline 错位。
 * 这里统一 31px 等高 + 居中对齐。 */
.pagination > li.jumpto {
    display: inline-flex;
    align-items: center;
    margin-left: 4px;
    vertical-align: middle;
}
.pagination > li.jumpto input {
    height: 31px;
    width: 50px;
    padding: 0 8px;
    margin: 0 4px 0 0;
    border: 1.5px solid var(--cute-border);
    border-radius: var(--cute-radius-md);
    color: var(--cute-text-secondary);
    background: #fff;
    font-size: 12.5px;
    line-height: 1;
    text-align: center;
    box-shadow: none;
    box-sizing: border-box;
}
.pagination > li.jumpto input:focus {
    border-color: var(--cute-primary-light);
    outline: none;
}
.pagination > li.jumpto .btn,
.pagination > li.jumpto .btn.btn-xs {
    height: 31px;
    padding: 0 12px;
    margin: 0;
    font-size: 12.5px;
    line-height: 28px;
    font-weight: 500;
    border: 1.5px solid var(--cute-border);
    border-radius: var(--cute-radius-md);
    background: #fff;
    color: var(--cute-text-secondary) !important;
    box-shadow: none;
    box-sizing: border-box;
    vertical-align: middle;
}
.pagination > li.jumpto .btn:hover {
    background: var(--cute-primary-lighter);
    border-color: var(--cute-primary-light);
    color: var(--cute-primary-hover) !important;
    transform: none;
}

/* ========================= 标签 / 徽章 ========================= */

.label {
    padding: 3px 10px;
    border-radius: var(--cute-radius-pill);
    font-weight: 600;
    font-size: 11.5px;
    letter-spacing: 0.02em;
    display: inline-block;
    line-height: 1.6;
}
.label-primary { background: var(--cute-primary-light); color: var(--cute-primary-hover); }
.label-success { background: var(--cute-mint-light); color: #2E8B57; }
.label-info    { background: var(--cute-sky-light); color: #3D7B8F; }
.label-warning { background: var(--cute-cream-light); color: #996515; }
.label-danger  { background: #FFE0E0; color: #C24D4D; }
.label-default { background: var(--cute-lavender-light); color: #7B6B94; }

.badge {
    background: linear-gradient(135deg, var(--cute-primary), #FFB5C5);
    color: #fff;
    border-radius: var(--cute-radius-pill);
    padding: 2px 9px;
    font-weight: 600;
    font-size: 11.5px;
}

/* ========================= Modal ========================= */

.modal-content {
    border: 1px solid var(--cute-border);
    border-radius: var(--cute-radius-xl);
    box-shadow: 0 25px 60px rgba(91, 77, 95, 0.2);
    overflow: hidden;
}
.modal-header {
    border-bottom: 1px dashed var(--cute-border);
    padding: 16px 22px;
    background: linear-gradient(to right, var(--cute-primary-lighter) 0%, #fff 80%);
    border-radius: var(--cute-radius-xl) var(--cute-radius-xl) 0 0;
}
.modal-title {
    font-size: 15px; font-weight: 700;
    color: var(--cute-text) !important;
}
.modal-title::before {
    content: "♡ ";
    color: var(--cute-primary);
}
.modal-body { padding: 22px; color: var(--cute-text) !important; }
.modal-body label, .modal-body p, .modal-body span, .modal-body .control-label {
    color: var(--cute-text) !important;
}
.modal-footer {
    border-top: 1px dashed var(--cute-border);
    padding: 14px 22px;
    background: var(--cute-primary-lighter);
    border-radius: 0 0 var(--cute-radius-xl) var(--cute-radius-xl);
}
.modal-backdrop { background: rgba(91, 77, 95, 0.35); }

.close {
    color: var(--cute-text-muted);
    opacity: 0.7;
    transition: var(--cute-trans-fast);
    text-shadow: none;
    font-weight: 400;
    font-size: 22px;
}
.close:hover {
    color: var(--cute-primary);
    opacity: 1;
    transform: rotate(90deg);
}

/* ========================= 进度条 ========================= */

.progress {
    background: var(--cute-primary-lighter);
    border-radius: var(--cute-radius-pill);
    box-shadow: none;
    height: 8px;
    overflow: hidden;
}
.progress-bar {
    background: linear-gradient(90deg, var(--cute-primary), #FFB5C5);
    box-shadow: none;
    border-radius: var(--cute-radius-pill);
}
.progress-bar-success { background: linear-gradient(90deg, var(--cute-success), var(--cute-mint)); }
.progress-bar-warning { background: linear-gradient(90deg, var(--cute-warning), var(--cute-cream)); }
.progress-bar-danger  { background: linear-gradient(90deg, var(--cute-danger), #FFB5B5); }
.progress-bar-info    { background: linear-gradient(90deg, var(--cute-info), var(--cute-sky)); }

/* ========================= 辅助 ========================= */

hr { border-top: 1px dashed var(--cute-border); margin: 18px 0; }

.text-primary { color: var(--cute-primary) !important; }
.text-success { color: var(--cute-success) !important; }
.text-info    { color: var(--cute-info) !important; }
.text-warning { color: #B8860B !important; }
.text-danger  { color: var(--cute-danger) !important; }
.text-muted   { color: var(--cute-text-muted) !important; }

.bg-primary     { background: var(--cute-primary) !important; color: #fff; }
.bg-light-blue  { background: var(--cute-sky-light) !important; color: var(--cute-text) !important; }

/* 顶栏的 .bg-red 等颜色让它们柔化 */
.bg-red    { background: linear-gradient(135deg, var(--cute-primary), #FFB5C5) !important; color: #fff; }
.bg-green  { background: linear-gradient(135deg, var(--cute-success), var(--cute-mint)) !important; color: #fff; }
.bg-blue   { background: linear-gradient(135deg, var(--cute-info), var(--cute-sky)) !important; color: #fff; }
.bg-yellow { background: linear-gradient(135deg, var(--cute-warning), var(--cute-cream)) !important; color: #6B4D0F; }
.bg-purple { background: linear-gradient(135deg, var(--cute-lavender), #B39DD8) !important; color: #fff; }
.bg-aqua   { background: linear-gradient(135deg, var(--cute-info), var(--cute-sky)) !important; color: #fff; }

/* Alerts */
.alert {
    border: 1px solid transparent;
    border-radius: var(--cute-radius-md);
    padding: 12px 16px;
    font-size: 13px;
}
.alert-success { background: var(--cute-mint-light); border-color: var(--cute-mint); color: #2E8B57 !important; }
.alert-danger  { background: #FFE0E0; border-color: #FFB5B5; color: #C24D4D !important; }
.alert-warning { background: var(--cute-cream-light); border-color: var(--cute-cream); color: #996515 !important; }
.alert-info    { background: var(--cute-sky-light); border-color: var(--cute-sky); color: #3D7B8F !important; }

/* tooltip / popover */
.tooltip-inner {
    background: var(--cute-text) !important;
    color: #fff !important;
    border-radius: var(--cute-radius-md);
    font-size: 12px;
    padding: 5px 10px;
}
.tooltip.top .tooltip-arrow { border-top-color: var(--cute-text) !important; }
.popover {
    border: 1px solid var(--cute-border);
    border-radius: var(--cute-radius-md);
    box-shadow: var(--cute-shadow-lg);
}
.popover-content { color: var(--cute-text); padding: 10px 14px; }

/* 工具条 */
.toolbar { padding: 4px 0; }
.toolbar .btn { margin-right: 6px; }

.fixed-table-toolbar .btn-group .btn { color: var(--cute-text-secondary) !important; }
.fixed-table-toolbar .btn-group .btn:hover { color: var(--cute-primary-hover) !important; }

/* 日期选择器 */
.datetimepicker, .datepicker {
    border-radius: var(--cute-radius-lg) !important;
    border: 1px solid var(--cute-border) !important;
    box-shadow: var(--cute-shadow-lg) !important;
}
.datetimepicker table tr td, .datetimepicker table tr th {
    color: var(--cute-text) !important;
    border-radius: var(--cute-radius-sm);
}
.datetimepicker table tr td:hover {
    background: var(--cute-primary-lighter) !important;
    color: var(--cute-primary-hover) !important;
}
.datetimepicker table tr td.active,
.datetimepicker table tr td.active:hover {
    background: linear-gradient(135deg, var(--cute-primary), #FFB5C5) !important;
    color: #fff !important;
}

/* ========================= 响应式 ========================= */

@media (max-width: 767px) {
    .content-header, .content { padding-left: 14px; padding-right: 14px; }
    .panel-body, .box-body { padding: 14px; }
    .table > thead > tr > th, .table > tbody > tr > td { padding: 8px 10px; font-size: 12.5px; }
    .small-box > .inner > h3 { font-size: 22px; }
    .modal-body { padding: 16px; }
    .btn { padding: 6px 14px; font-size: 12.5px; }
}

@media (min-width: 768px) and (max-width: 991px) {
    .content { padding: 8px 16px 20px; }
}

@media print {
    .main-sidebar, .main-header, .content-header { display: none !important; }
    .content-wrapper { margin-left: 0 !important; }
}

/* ========================= 微动效 ========================= */

/* 内容浮入 */
.content > .row,
.content > .panel,
.content > .nav-tabs-custom {
    animation: cuteBounceIn 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
@keyframes cuteBounceIn {
    from { opacity: 0; transform: translateY(14px) scale(0.97); }
    60%  { transform: translateY(-3px) scale(1.01); opacity: 1; }
    to   { transform: translateY(0) scale(1); opacity: 1; }
}

/* 按钮图标转动（刷新、新增等）*/
.btn .fa, .btn .glyphicon { transition: transform var(--cute-trans-fast); }
.btn:hover .fa-plus, .btn:hover .fa-sync, .btn:hover .fa-refresh { transform: rotate(90deg) scale(1.1); }
.btn:hover .fa-trash { transform: scale(1.15); }
.btn:hover .fa-edit, .btn:hover .fa-pencil { transform: rotate(-10deg); }

/* 侧栏折叠 */
.sidebar-toggle .fa-bars { transition: transform var(--cute-trans); }
.sidebar-collapse .sidebar-toggle .fa-bars { transform: rotate(90deg); }

/* 全局链接下划线渐出 */
.panel-body a:not(.btn), .box-body a:not(.btn), .modal-body a:not(.btn) {
    color: var(--cute-primary);
    position: relative;
}
.panel-body a:not(.btn):hover, .box-body a:not(.btn):hover, .modal-body a:not(.btn):hover {
    color: var(--cute-primary-hover);
}

/* 登录页（如有）*/
body.login-page, body.register-page {
    background: linear-gradient(135deg, #FFE5E8 0%, #FFF5DD 50%, #E7F0FD 100%) !important;
    color: var(--cute-text) !important;
}
.login-box-body, .register-box-body {
    background: #fff;
    border-radius: var(--cute-radius-xl);
    box-shadow: 0 20px 60px rgba(255, 158, 170, 0.25);
    color: var(--cute-text);
    padding: 28px;
}
.login-box-msg, .register-box-msg {
    color: var(--cute-text);
    font-weight: 700;
}
.login-box-msg::before, .register-box-msg::before {
    content: "✿ ";
    color: var(--cute-primary);
}

/* 空状态 no data 可爱一点 */
.no-records-found,
.fixed-table-body .no-records-found td {
    color: var(--cute-text-muted) !important;
    padding: 40px !important;
    text-align: center;
    font-size: 13px;
}

/* ============================================================
 * cute v2 补丁 (2026-04-20)
 * 修三处对比度问题：
 *   1) 顶部 addtabs 选中 tab 粉字粉底糊成一团
 *   2) 侧栏 treeview-menu 被 AdminLTE 默认深色 (#2c3b41) 覆盖
 *   3) 删除按钮 btn-danger 渐变终点色太淡图标看不清
 * ============================================================ */

/* --- 1) 顶部 addtabs 选中态改白色高对比 ---
 * FastAdmin 实际 class 是 .nav-addtabs（之前用 #nav 没对上），
 * 同时多写几个选择器覆盖不同 FastAdmin 版本 */
.main-header .nav-addtabs,
.main-header .nav-addtabs > li > a,
.main-header ul.nav.nav-tabs > li > a,
#nav > li > a {
    color: rgba(255, 255, 255, 0.9) !important;
}
.main-header .nav-addtabs > li > a,
.main-header ul.nav.nav-tabs > li > a,
#nav > li > a {
    border: none !important;
    border-bottom: 3px solid transparent !important;
    border-radius: var(--cute-radius-md) var(--cute-radius-md) 0 0 !important;
    background: transparent !important;
    padding: 10px 18px !important;
    font-weight: 500;
    transition: var(--cute-trans-fast);
}
.main-header .nav-addtabs > li > a:hover,
.main-header ul.nav.nav-tabs > li > a:hover,
#nav > li:hover > a {
    color: #fff !important;
    background: rgba(255, 255, 255, 0.2) !important;
    border-bottom-color: transparent !important;
}
.main-header .nav-addtabs > li.active > a,
.main-header .nav-addtabs > li.active > a:hover,
.main-header .nav-addtabs > li.active > a:focus,
.main-header ul.nav.nav-tabs > li.active > a,
.main-header ul.nav.nav-tabs > li.active > a:hover,
#nav > li.active > a,
#nav > li.active > a:hover,
#nav > li.active > a:focus {
    color: var(--cute-primary-hover) !important;
    background: #fff !important;
    border: none !important;
    border-bottom: 3px solid #fff !important;
    font-weight: 700 !important;
    box-shadow: 0 -3px 10px rgba(91, 77, 95, 0.12);
}
/* 关闭按钮 ×（tab 右侧）*/
.main-header .nav-addtabs > li > a > i.fa-remove,
.main-header .nav-addtabs > li > a > i.fa-times,
.main-header .nav-addtabs > li > a > .close-tab {
    color: rgba(255, 255, 255, 0.7) !important;
    margin-left: 6px;
    font-size: 11px;
}
.main-header .nav-addtabs > li.active > a > i.fa-remove,
.main-header .nav-addtabs > li.active > a > i.fa-times,
.main-header .nav-addtabs > li.active > a > .close-tab {
    color: var(--cute-primary) !important;
}

/* --- 2) 侧栏子菜单背景强制浅粉 --- */
.main-sidebar .sidebar-menu .treeview-menu,
.sidebar-menu .treeview-menu,
.skin-blue .sidebar-menu .treeview-menu,
.skin-blue-light .sidebar-menu .treeview-menu {
    background: #FFF0F3 !important;
    padding: 4px 6px !important;
    border-radius: 0 0 var(--cute-radius-md) var(--cute-radius-md) !important;
    margin-top: -2px;
}
.main-sidebar .sidebar-menu .treeview-menu > li > a,
.sidebar-menu .treeview-menu > li > a,
.skin-blue .sidebar-menu .treeview-menu > li > a,
.skin-blue-light .sidebar-menu .treeview-menu > li > a {
    background: transparent !important;
    color: var(--cute-text-secondary) !important;
    padding: 8px 8px 8px 38px !important;
    border-radius: var(--cute-radius-sm) !important;
    font-size: 12.5px !important;
    font-weight: 500;
    transition: var(--cute-trans-fast);
}
.main-sidebar .sidebar-menu .treeview-menu > li > a:hover,
.sidebar-menu .treeview-menu > li > a:hover {
    background: #fff !important;
    color: var(--cute-primary) !important;
    transform: translateX(2px);
}
.main-sidebar .sidebar-menu .treeview-menu > li.active > a,
.sidebar-menu .treeview-menu > li.active > a {
    background: #fff !important;
    color: var(--cute-primary-hover) !important;
    font-weight: 700;
    box-shadow: 0 1px 3px rgba(255, 158, 170, 0.2);
}
.main-sidebar .sidebar-menu .treeview-menu > li > a > .fa,
.sidebar-menu .treeview-menu > li > a > .fa {
    color: var(--cute-lavender) !important;
    margin-right: 6px;
}
.main-sidebar .sidebar-menu .treeview-menu > li.active > a > .fa,
.sidebar-menu .treeview-menu > li > a:hover > .fa {
    color: var(--cute-primary) !important;
}

/* --- 3) danger/success 按钮渐变调深，图标加阴影增强可读 --- */
.btn-danger {
    background: linear-gradient(135deg, #FF6B7D 0%, #FF8FA3 100%) !important;
    border-color: #FF6B7D !important;
    color: #fff !important;
}
.btn-danger:hover,
.btn-danger:focus {
    background: linear-gradient(135deg, #F05262 0%, #FF7085 100%) !important;
    border-color: #F05262 !important;
    color: #fff !important;
    box-shadow: 0 4px 12px rgba(255, 107, 125, 0.45);
}
.btn-success {
    background: linear-gradient(135deg, #5FC78D 0%, #7DD8A6 100%) !important;
    border-color: #5FC78D !important;
    color: #fff !important;
}
.btn-success:hover,
.btn-success:focus {
    background: linear-gradient(135deg, #4BB17A 0%, #6CC899 100%) !important;
    border-color: #4BB17A !important;
    color: #fff !important;
    box-shadow: 0 4px 12px rgba(95, 199, 141, 0.45);
}
/* 圆形小图标按钮（FastAdmin 约定 btn-xs + 单图标），给图标加淡阴影提升可见 */
.btn .fa,
.btn-xs .fa,
.btn-sm .fa {
    color: inherit !important;
}
.btn-danger .fa,
.btn-success .fa,
.btn-primary .fa,
.btn-warning .fa,
.btn-info .fa {
    text-shadow: 0 1px 1.5px rgba(0, 0, 0, 0.18);
}

/* 表格操作列按钮间距 */
.btn-dellone,
.btn-dellall,
.btn-editone,
.btn-multi,
.btn-change {
    margin: 0 2px;
}

/* ============================================================
 * cute v3 补丁 (2026-04-20)
 * 顶栏下拉菜单 active / open 状态统一
 * （语言切换、控件栏、用户栏等所有 .main-header 下拉）
 * ============================================================ */

/* 顶栏下拉容器整体 */
.main-header .dropdown-menu,
.main-header .navbar-nav > .open > .dropdown-menu,
.main-header li.open .dropdown-menu {
    background: #fff !important;
    border: 1px solid var(--cute-border) !important;
    border-radius: var(--cute-radius-lg) !important;
    box-shadow: var(--cute-shadow-lg) !important;
    padding: 6px !important;
    margin-top: 6px !important;
    min-width: 140px;
}

/* 下拉里每一项 */
.main-header .dropdown-menu > li > a,
.main-header .navbar-nav > .open > .dropdown-menu > li > a,
.main-header .dropdown-menu > .dropdown-item,
.main-header li.open .dropdown-menu > li > a {
    color: var(--cute-text) !important;
    background: transparent !important;
    padding: 8px 14px !important;
    border-radius: var(--cute-radius-sm) !important;
    transition: var(--cute-trans-fast);
    display: block;
    font-size: 13px;
}
.main-header .dropdown-menu > li > a:hover,
.main-header .dropdown-menu > li > a:focus,
.main-header .navbar-nav > .open > .dropdown-menu > li > a:hover,
.main-header li.open .dropdown-menu > li > a:hover {
    background: var(--cute-primary-lighter) !important;
    color: var(--cute-primary-hover) !important;
}

/* 当前选中项 — 重点修复 */
.main-header .dropdown-menu > .active > a,
.main-header .dropdown-menu > .active > a:hover,
.main-header .dropdown-menu > .active > a:focus,
.main-header .dropdown-menu > li.active > a,
.main-header .navbar-nav > .open > .dropdown-menu > .active > a,
.main-header .navbar-nav > .open > .dropdown-menu > li.active > a,
.main-header li.open .dropdown-menu > .active > a,
.main-header li.open .dropdown-menu > li.active > a {
    background: var(--cute-primary-light) !important;
    color: var(--cute-primary-hover) !important;
    font-weight: 700 !important;
    box-shadow: inset 3px 0 0 var(--cute-primary);
}

/* 顶栏下拉打开时的触发按钮背景（language/头像等）*/
.main-header .navbar-nav > .open > a,
.main-header .navbar-nav > .open > a:hover,
.main-header .navbar-nav > .open > a:focus,
.main-header .navbar .nav > li.open > a {
    background: rgba(255, 255, 255, 0.2) !important;
    color: #fff !important;
    border-radius: var(--cute-radius-md);
}

/* Bootstrap 通用 .dropdown-menu 保底（有些不在 main-header 里的弹出）*/
.dropdown-menu {
    background: #fff;
    border: 1px solid var(--cute-border);
    border-radius: var(--cute-radius-md);
    box-shadow: var(--cute-shadow-lg);
    padding: 4px;
}
.dropdown-menu > li > a {
    color: var(--cute-text) !important;
    padding: 7px 14px;
    border-radius: var(--cute-radius-sm);
    transition: var(--cute-trans-fast);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
    background: var(--cute-primary-lighter) !important;
    color: var(--cute-primary-hover) !important;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus,
.dropdown-menu > li.active > a {
    background: var(--cute-primary-light) !important;
    color: var(--cute-primary-hover) !important;
}

/* 分隔线 */
.dropdown-menu .divider,
.main-header .dropdown-menu .divider {
    background: var(--cute-border);
    margin: 4px 0;
}

/* ============================================================
 * cute v4 补丁 (2026-04-20)
 * Dashboard 下半部分 4 个大统计卡片（短信/数据库/附件/图片统计）
 * 从鲜艳实色改为和整体可爱风一致的白底 + 左侧彩条 + 柔色渐变
 * ============================================================ */

/* 4 个带渐变色的 panel（Dashboard 特有后缀）*/
.panel.bg-blue-gradient,
.panel.bg-teal-gradient,
.panel.bg-purple-gradient,
.panel.bg-green-gradient,
.panel.bg-aqua-gradient,
.panel.bg-light-blue-gradient,
.panel.bg-red-gradient,
.panel.bg-yellow-gradient {
    background: #fff !important;
    border: 1px solid var(--cute-border) !important;
    border-radius: var(--cute-radius-lg) !important;
    box-shadow: var(--cute-shadow-sm) !important;
    color: var(--cute-text) !important;
    position: relative;
    overflow: hidden;
    transition: var(--cute-trans);
}

.panel.bg-blue-gradient:hover,
.panel.bg-teal-gradient:hover,
.panel.bg-purple-gradient:hover,
.panel.bg-green-gradient:hover,
.panel.bg-aqua-gradient:hover,
.panel.bg-light-blue-gradient:hover,
.panel.bg-red-gradient:hover,
.panel.bg-yellow-gradient:hover {
    box-shadow: var(--cute-shadow-lg) !important;
    transform: translateY(-2px);
}

/* 左侧彩条 + 上部渐变高光 */
.panel.bg-blue-gradient::before {
    content: "";
    position: absolute;
    top: 0; left: 0; bottom: 0;
    width: 4px;
    background: linear-gradient(180deg, var(--cute-sky) 0%, var(--cute-info) 100%);
}
.panel.bg-teal-gradient::before {
    content: "";
    position: absolute;
    top: 0; left: 0; bottom: 0;
    width: 4px;
    background: linear-gradient(180deg, var(--cute-mint) 0%, var(--cute-success) 100%);
}
.panel.bg-purple-gradient::before {
    content: "";
    position: absolute;
    top: 0; left: 0; bottom: 0;
    width: 4px;
    background: linear-gradient(180deg, var(--cute-lavender) 0%, #B39DD8 100%);
}
.panel.bg-green-gradient::before {
    content: "";
    position: absolute;
    top: 0; left: 0; bottom: 0;
    width: 4px;
    background: linear-gradient(180deg, var(--cute-mint) 0%, var(--cute-success) 100%);
}

/* 淡色渐变底色（只在右上角一点）*/
.panel.bg-blue-gradient {
    background: linear-gradient(135deg, #fff 0%, #fff 60%, var(--cute-sky-light) 100%) !important;
}
.panel.bg-teal-gradient {
    background: linear-gradient(135deg, #fff 0%, #fff 60%, var(--cute-mint-light) 100%) !important;
}
.panel.bg-purple-gradient {
    background: linear-gradient(135deg, #fff 0%, #fff 60%, var(--cute-lavender-light) 100%) !important;
}
.panel.bg-green-gradient {
    background: linear-gradient(135deg, #fff 0%, #fff 60%, var(--cute-mint-light) 100%) !important;
}

/* panel-body / panel-title 内文字强制深色 */
.panel.bg-blue-gradient .panel-body,
.panel.bg-teal-gradient .panel-body,
.panel.bg-purple-gradient .panel-body,
.panel.bg-green-gradient .panel-body,
.panel[class*="-gradient"] .panel-body,
.panel[class*="-gradient"] .panel-title,
.panel[class*="-gradient"] .ibox-title,
.panel[class*="-gradient"] .ibox-content,
.panel[class*="-gradient"] h1,
.panel[class*="-gradient"] h5,
.panel[class*="-gradient"] small {
    color: var(--cute-text) !important;
    background: transparent !important;
}

/* 大数字 */
.panel[class*="-gradient"] h1.no-margins,
.panel[class*="-gradient"] h1 {
    color: var(--cute-text) !important;
    font-weight: 700 !important;
    font-size: 30px !important;
    letter-spacing: -0.02em;
    margin: 6px 0 4px !important;
}

/* 小标题 */
.panel[class*="-gradient"] h5 {
    color: var(--cute-text-secondary) !important;
    font-weight: 600 !important;
    font-size: 13.5px !important;
    margin: 0 0 10px !important;
}

/* 底部说明文字 + 图标 */
.panel[class*="-gradient"] .font-bold,
.panel[class*="-gradient"] small {
    color: var(--cute-text-muted) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
}
.panel[class*="-gradient"] .font-bold .fa {
    color: var(--cute-primary) !important;
    margin-right: 3px;
}

/* 右上角"实时"标签改成粉色 pill */
.panel[class*="-gradient"] .label.label-primary.pull-right,
.panel[class*="-gradient"] .pull-right.label {
    background: var(--cute-primary-light) !important;
    color: var(--cute-primary-hover) !important;
    border-radius: var(--cute-radius-pill) !important;
    padding: 3px 10px !important;
    font-weight: 600 !important;
    font-size: 11px !important;
}

/* ==== 图表右侧小卡片列表（今日/前一天/三日/七日/半月/月 新增）==== */
.card.stats,
.card.sameheight-item {
    background: #fff !important;
    border: 1px solid var(--cute-border) !important;
    border-radius: var(--cute-radius-lg) !important;
    box-shadow: var(--cute-shadow-sm) !important;
}
.card.stats .card-block,
.card.sameheight-item .card-block {
    padding: 14px !important;
}
.stats .stat-col {
    padding: 8px 6px !important;
    border-right: 1px dashed var(--cute-border);
}
.stats .stat-col:nth-child(2n),
.stats .stat-col:last-child {
    border-right: none;
}
.stats .stat-icon {
    color: var(--cute-primary) !important;
    font-size: 22px !important;
    width: 42px !important;
    text-align: center;
    float: left;
    margin-right: 6px;
}
.stats .stat .value {
    color: var(--cute-text) !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    line-height: 24px !important;
}
.stats .stat .name {
    color: var(--cute-text-secondary) !important;
    font-size: 12px !important;
    margin: 3px 0 0 !important;
}
.stat-col .progress {
    height: 3px !important;
    background: var(--cute-primary-lighter) !important;
    border-radius: var(--cute-radius-pill) !important;
    margin-top: 6px !important;
}
.stat-col .progress-bar {
    background: linear-gradient(90deg, var(--cute-primary), #FFB5C5) !important;
    height: 3px !important;
    line-height: 3px !important;
    box-shadow: 0 0 6px rgba(255, 158, 170, 0.35);
}
.stat-col .progress-bar-success {
    background: linear-gradient(90deg, var(--cute-success), var(--cute-mint)) !important;
}

/* 图表容器（原 .btn-refresh 也被 dashboard 的 echart div 误共用，此处只处理 #echart
 * 避免影响列表页 toolbar 的刷新按钮 .btn.btn-primary.btn-refresh）*/
#echart {
    background: #fff;
    border: 1px solid var(--cute-border);
    border-radius: var(--cute-radius-lg);
    padding: 10px;
}

/* ============================================================
 * cute v5 补丁 (2026-04-20)
 * 1. 折线图 #echart 与右侧 6 格统计 等高对齐（都 320px）
 * 2. 下排 4 个统计卡片重构：白底 + 顶部彩条 + 左侧圆角图标徽章 + 大数字
 * ============================================================ */

/* === 折线图所在 row 改 flex 等高 ===
 * 6 格统计需要 3 行 × 2 列，每行 ≥ 135px，至少 430px 才能完整显示
 * 折线图高度拉到同值（460px），echart JS 初始化时会按容器高度渲染
 * 注：已在 HTML inline style="height:300px" 上用 !important 压过
 */
.content .row:has(#echart) {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    min-height: 460px;
}
.content .row:has(#echart) > [class*="col-"] {
    display: flex;
    flex-direction: column;
}
#echart {
    height: 460px !important;
    min-height: 460px !important;
    width: 100%;
    flex: 1;
    margin: 0 !important;
}
.content .row:has(#echart) .card.sameheight-item,
.content .row:has(#echart) .card {
    height: 460px !important;
    min-height: 460px !important;
    width: 100%;
    display: flex;
    flex-direction: column;
    margin-bottom: 0 !important;
    overflow: visible !important;
}
.content .row:has(#echart) .card .card-block {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    padding: 12px 10px !important;
    overflow: visible !important;
}
.content .row:has(#echart) .stats-container {
    flex: 1;
    display: flex;
    flex-wrap: wrap;
    align-content: space-around;
    margin: 0;
    overflow: visible !important;
}
.content .row:has(#echart) .stats-container .stat-col {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 10px 10px !important;
    min-height: 135px;
    flex: 0 0 50%;
    max-width: 50%;
}

/* :has 浏览器兜底（Chrome 105+ / Safari 15.4+ / Firefox 121+）
 * 旧浏览器同样给 echart 和 card 固定 460 保底 */
#echart { height: 460px !important; min-height: 460px !important; }
.card.sameheight-item { min-height: 460px !important; }

/* === 下排 4 个大统计卡片重构 === */
#statistics .panel[class*="-gradient"] {
    background: #fff !important;
    border: 1px solid var(--cute-border) !important;
    border-radius: var(--cute-radius-lg) !important;
    box-shadow: var(--cute-shadow-sm) !important;
    padding: 0 !important;
    overflow: hidden;
    position: relative;
    min-height: 140px;
    transition: var(--cute-trans);
}
#statistics .panel[class*="-gradient"]:hover {
    box-shadow: var(--cute-shadow-lg) !important;
    transform: translateY(-3px);
}

/* 顶部 4px 彩色条 — 覆盖之前的左侧条 */
#statistics .panel[class*="-gradient"]::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    width: 100%;
    background: linear-gradient(90deg, var(--cute-primary) 0%, var(--cute-lavender) 100%);
    z-index: 2;
}
#statistics .panel.bg-blue-gradient::before {
    background: linear-gradient(90deg, var(--cute-sky) 0%, var(--cute-info) 100%);
}
#statistics .panel.bg-teal-gradient::before {
    background: linear-gradient(90deg, var(--cute-mint) 0%, var(--cute-success) 100%);
}
#statistics .panel.bg-purple-gradient::before {
    background: linear-gradient(90deg, var(--cute-lavender) 0%, #B39DD8 100%);
}
#statistics .panel.bg-green-gradient::before {
    background: linear-gradient(90deg, var(--cute-mint) 0%, var(--cute-success) 100%);
}

/* 右下角装饰性圆形（柔色，增加可爱感）*/
#statistics .panel[class*="-gradient"]::after {
    content: "";
    position: absolute;
    right: -40px;
    bottom: -40px;
    width: 120px;
    height: 120px;
    border-radius: 50%;
    opacity: 0.35;
    z-index: 0;
}
#statistics .panel.bg-blue-gradient::after  { background: radial-gradient(var(--cute-sky-light), transparent); }
#statistics .panel.bg-teal-gradient::after  { background: radial-gradient(var(--cute-mint-light), transparent); }
#statistics .panel.bg-purple-gradient::after{ background: radial-gradient(var(--cute-lavender-light), transparent); }
#statistics .panel.bg-green-gradient::after { background: radial-gradient(var(--cute-mint-light), transparent); }

/* panel-body padding 加足避免贴边 */
#statistics .panel[class*="-gradient"] > .panel-body {
    padding: 22px 20px 18px !important;
    background: transparent !important;
    position: relative;
    z-index: 1;
}

/* panel-title / ibox-title 顶部一行：标题 + "实时"标签 */
#statistics .panel[class*="-gradient"] .panel-title,
#statistics .panel[class*="-gradient"] .ibox-title {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px;
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
}
#statistics .panel[class*="-gradient"] h5 {
    color: var(--cute-text) !important;
    font-weight: 700 !important;
    font-size: 14px !important;
    margin: 0 !important;
    order: 1;
}
#statistics .panel[class*="-gradient"] h5::before {
    content: "♡ ";
    color: var(--cute-primary);
}

/* "实时"标签 */
#statistics .panel[class*="-gradient"] .label.pull-right,
#statistics .panel[class*="-gradient"] .label.label-primary {
    float: none !important;
    order: 2;
    background: var(--cute-primary-light) !important;
    color: var(--cute-primary-hover) !important;
    border-radius: var(--cute-radius-pill) !important;
    padding: 3px 10px !important;
    font-weight: 600 !important;
    font-size: 11px !important;
    letter-spacing: 0.5px;
}

/* 内容区 */
#statistics .panel[class*="-gradient"] .panel-content,
#statistics .panel[class*="-gradient"] .ibox-content {
    padding: 0 !important;
    background: transparent !important;
    position: relative;
    z-index: 1;
}

/* 大数字 */
#statistics .panel[class*="-gradient"] h1.no-margins,
#statistics .panel[class*="-gradient"] h1 {
    color: var(--cute-text) !important;
    font-weight: 700 !important;
    font-size: 30px !important;
    letter-spacing: -0.02em;
    margin: 4px 0 6px !important;
    line-height: 1.1 !important;
}

/* 底部说明行：图标 + 小字 */
#statistics .panel[class*="-gradient"] .font-bold {
    color: var(--cute-text-muted) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    display: flex;
    align-items: center;
    gap: 4px;
}
#statistics .panel[class*="-gradient"] .font-bold small {
    color: var(--cute-text-muted) !important;
    font-size: 12px !important;
}
#statistics .panel[class*="-gradient"] .font-bold .fa {
    color: var(--cute-primary) !important;
    font-size: 13px;
    margin-right: 2px;
}
#statistics .panel.bg-blue-gradient   .font-bold .fa { color: var(--cute-info) !important; }
#statistics .panel.bg-teal-gradient   .font-bold .fa { color: var(--cute-success) !important; }
#statistics .panel.bg-purple-gradient .font-bold .fa { color: var(--cute-lavender) !important; }
#statistics .panel.bg-green-gradient  .font-bold .fa { color: var(--cute-success) !important; }

/* 双数字（数据库/附件/图片统计 内部有两个 col-md-6）两列间距 */
#statistics .panel[class*="-gradient"] .ibox-content .row .col-md-6 {
    padding: 0 8px;
}
#statistics .panel[class*="-gradient"] .ibox-content .row .col-md-6:first-child {
    border-right: 1px dashed var(--cute-border);
}

/* ============================================================
 * cute v4 补丁 (2026-04-24)
 * 列表页"操作"列按钮整体超出行高 / fixedColumns 错位
 * 根因：
 *   1) 操作列有 3 个"图标 + 文本"按钮 + 2 个圆形图标按钮，
 *      默认 .btn { padding:7px 16px; line-height:1.5 } → 单颗 ~32px 高
 *      配合 td 上下 padding 11px → 操作单元格 ~54px
 *      文本列字号 13/1.6 + td padding 11 → 文本单元格 ~42px
 *      row height 取最大，fixedColumns 固定列按 44px sync，操作列
 *      主体被裁 / 末行多一条"空白带"
 *   2) .btn:hover 有 translateY(-1px)，会在 hover 后触发固定列重新
 *      同步失败
 * 方案：
 *   - 操作列按钮压成 ~24px：padding 3/9、font 12、line-height 1.4
 *   - td 自身 padding 与其他列对齐（11px），只调内部 .btn
 *   - 关掉 hover translateY，避免 fixedColumns 滚动同步抖动
 *   - .btn-group / fixedColumns 容器去掉额外 min-height
 * ============================================================ */
/* 注：bootstrap-table 不在 <td> 上加 data-field，只在 <th> 上加。
 * 但 FastAdmin buttonlink() 生成的操作按钮都带 data-button-index 属性
 * （行级），直接针对按钮本身做紧凑化 + 白字即可。 */
.bootstrap-table a.btn[data-button-index],
.bootstrap-table a.btn[data-button-index]:hover,
.bootstrap-table a.btn[data-button-index]:focus,
.bootstrap-table a.btn[data-button-index]:active {
    padding: 3px 9px !important;
    font-size: 12px !important;
    line-height: 1.4 !important;
    margin: 0 2px !important;
    box-shadow: none !important;
    vertical-align: middle;
    color: #fff !important;
    text-decoration: none !important;
}
.bootstrap-table a.btn[data-button-index]:hover {
    transform: none !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12) !important;
}
.bootstrap-table a.btn[data-button-index] .fa {
    color: #fff !important;
    font-size: 12px;
}
/* btn-warning 默认棕字；在 FastAdmin 操作列里用白字更清晰 */
.bootstrap-table a.btn.btn-warning[data-button-index],
.bootstrap-table a.btn.btn-warning[data-button-index]:hover {
    color: #fff !important;
}
/* fixedColumns 右侧覆盖层高度修正：
 * 插件 initFixedBody 里按 $tableContainer.outerHeight(true) - scroll - pagination + 1
 * 算出一个内联 height（实测 531px），大于实际 tbody，结果覆盖层底部出现一大块白。
 * 用 !important 强制回到 content-fit，并把 min-height 清 0，避免插件计算的
 * min-height:calc(100% - Xpx) 又把空白顶出来。 */
.bootstrap-table .fixed-columns,
.bootstrap-table .fixed-columns-right {
    height: auto !important;
    min-height: 0 !important;
}
.bootstrap-table .fixed-columns .fixed-table-body,
.bootstrap-table .fixed-columns-right .fixed-table-body {
    height: auto !important;
    min-height: 0 !important;
}
