/* ==========================================
   宠物门诊管理系统 - 2026 Modern UI
   设计理念：Glass Morphism + Medical Blue
   ========================================== */

:root {
    --primary: #1a73e8;
    --primary-dark: #1557b0;
    --primary-light: #e8f0fe;
    --accent: #00b894;
    --accent-dark: #00a381;
    --warning: #f39c12;
    --danger: #e74c3c;
    --dark: #1e293b;
    --gray: #64748b;
    --light: #f8fafc;
    --white: #ffffff;
    --border: #e2e8f0;
    --shadow: 0 4px 24px rgba(0,0,0,.08);
    --shadow-lg: 0 8px 40px rgba(0,0,0,.12);
    --radius: 16px;
    --radius-sm: 10px;
    --transition: all 0.3s cubic-bezier(0.4,0,0.2,1);
}

* { margin:0; padding:0; box-sizing:border-box; }
body { font-family: -apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif; background:var(--light); color:var(--dark); line-height:1.6; -webkit-font-smoothing:antialiased; }

/* ===== 首页 ===== */
.homepage { min-height:100vh; background:linear-gradient(135deg,#0f2027 0%,#203a43 40%,#2c5364 100%); position:relative; overflow-x:hidden; overflow-y:visible; display:flex; flex-direction:column; }
.homepage::before { content:''; position:absolute; top:-50%; left:-50%; width:200%; height:200%; background:radial-gradient(circle at 25% 25%, rgba(26,115,232,.15) 0%,transparent 50%),radial-gradient(circle at 75% 75%, rgba(0,184,148,.1) 0%,transparent 50%); animation:rotateBg 30s linear infinite; }
@keyframes rotateBg { 0%{transform:rotate(0deg)} 100%{transform:rotate(360deg)} }

.homepage-header { position:fixed; top:0; left:0; right:0; z-index:100; padding:20px 40px; display:flex; justify-content:space-between; align-items:center; background:rgba(255,255,255,.05); backdrop-filter:blur(10px); border-bottom:1px solid rgba(255,255,255,.08); }
.homepage-header .logo { display:flex; align-items:center; gap:12px; }
.homepage-header .logo-icon { width:42px; height:42px; background:linear-gradient(135deg,var(--primary),var(--accent)); border-radius:12px; display:flex; align-items:center; justify-content:center; font-size:22px; color:#fff; }
.homepage-header .logo-text { font-size:20px; font-weight:700; color:#fff; letter-spacing:-0.5px; }
.homepage-header .nav-links { display:flex; gap:24px; }
.homepage-header .nav-links a { color:rgba(255,255,255,.75); text-decoration:none; font-size:14px; transition:var(--transition); }
.homepage-header .nav-links a:hover { color:#fff; }

.homepage-main { flex:1; display:flex; align-items:center; justify-content:center; position:relative; z-index:10; padding:120px 40px 40px; gap:80px; }
.homepage-hero { max-width:520px; }
.homepage-hero h1 { font-size:44px; font-weight:800; color:#fff; line-height:1.2; margin-bottom:16px; letter-spacing:-1px; }
.homepage-hero h1 span { background:linear-gradient(135deg,#60a5fa,#34d399); -webkit-background-clip:text; -webkit-text-fill-color:transparent; }
.homepage-hero .subtitle { font-size:18px; color:rgba(255,255,255,.65); margin-bottom:32px; line-height:1.6; }
.homepage-hero .feature-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.homepage-hero .feature-item { display:flex; align-items:center; gap:10px; color:rgba(255,255,255,.8); font-size:14px; }
.homepage-hero .feature-item .dot { width:8px; height:8px; border-radius:50%; background:var(--accent); flex-shrink:0; }

/* 登录卡片 */
.login-card { width:400px; background:rgba(255,255,255,.05); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px); border:1px solid rgba(255,255,255,.1); border-radius:var(--radius); padding:36px 32px; box-shadow:0 20px 60px rgba(0,0,0,.3); }
.login-card h2 { font-size:24px; font-weight:700; color:#fff; margin-bottom:6px; text-align:center; }
.login-card .login-sub { color:rgba(255,255,255,.5); font-size:13px; text-align:center; margin-bottom:28px; }
.login-card .form-group { margin-bottom:20px; }
.login-card .form-group label { display:block; color:#ffffff !important; font-size:14px; margin-bottom:6px; font-weight:700; text-shadow:0 1px 3px rgba(0,0,0,.5); letter-spacing:.5px; }
.login-card input[type="text"],
.login-card input[type="password"] { width:100%; padding:12px 16px; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.15); border-radius:var(--radius-sm); color:#fff; font-size:15px; outline:none; transition:var(--transition); }
.login-card input:focus { border-color:var(--primary); background:rgba(255,255,255,.12); box-shadow:0 0 0 3px rgba(26,115,232,.2); }
.login-card .captcha-row { display:flex; gap:12px; }
.login-card .captcha-row input { flex:1; }
.login-card .captcha-row img { height:44px; border-radius:var(--radius-sm); cursor:pointer; border:1px solid rgba(255,255,255,.15); }
.login-card .btn-login { width:100%; padding:13px; background:linear-gradient(135deg,var(--primary),#4f8df0); color:#fff; border:none; border-radius:var(--radius-sm); font-size:16px; font-weight:600; cursor:pointer; transition:var(--transition); letter-spacing:1px; }
.login-card .btn-login:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(26,115,232,.4); }
.login-card .login-footer { text-align:center; margin-top:20px; color:rgba(255,255,255,.4); font-size:13px; }
.login-card .login-footer a { color:rgba(255,255,255,.6); text-decoration:none; }
.login-card .login-footer a:hover { color:#fff; }

/* 套餐区 */
.pricing-section { padding:100px 40px 60px; position:relative; z-index:10; background:linear-gradient(180deg,transparent,rgba(0,0,0,.3)); scroll-margin-top:80px; }
.pricing-section h3 { text-align:center; color:#fff; font-size:28px; margin-bottom:40px; }
.pricing-cards { display:flex; justify-content:center; gap:32px; max-width:900px; margin:0 auto; }
.pricing-card { flex:1; max-width:380px; background:rgba(255,255,255,.05); backdrop-filter:blur(10px); border:1px solid rgba(255,255,255,.1); border-radius:var(--radius); padding:32px; transition:var(--transition); }
.pricing-card:hover { transform:translateY(-4px); border-color:rgba(255,255,255,.2); }
.pricing-card.featured { border-color:var(--primary); background:rgba(26,115,232,.1); }
.pricing-card .plan-name { font-size:18px; font-weight:600; color:#fff; margin-bottom:8px; }
.pricing-card .plan-price { font-size:36px; font-weight:800; color:var(--accent); }
.pricing-card .plan-price span { font-size:14px; font-weight:400; color:rgba(255,255,255,.5); }
.pricing-card .plan-features { margin:20px 0; list-style:none; }
.pricing-card .plan-features li { color:rgba(255,255,255,.7); padding:6px 0; font-size:14px; }
.pricing-card .plan-features li::before { content:'✓ '; color:var(--accent); font-weight:bold; }
.pricing-card .contact-btn { display:block; width:100%; padding:12px; text-align:center; border-radius:var(--radius-sm); font-weight:600; font-size:14px; cursor:pointer; transition:var(--transition); text-decoration:none; }
.pricing-card .contact-btn { background:rgba(255,255,255,.1); color:#fff; border:1px solid rgba(255,255,255,.2); }
.pricing-card.featured .contact-btn { background:linear-gradient(135deg,var(--primary),#4f8df0); border:none; }
.pricing-card .contact-btn:hover { transform:translateY(-2px); }

.homepage-footer { text-align:center; padding:24px; color:rgba(255,255,255,.9); font-size:14px; font-weight:500; text-shadow:0 1px 3px rgba(0,0,0,.3); position:relative; z-index:10; }

/* ===== Admin Layout ===== */
.admin-layout { display:flex; min-height:100vh; }
.admin-sidebar { width:240px; background:linear-gradient(180deg,#1e293b,#0f172a); color:#fff; position:fixed; top:0; left:0; height:100vh; overflow-y:auto; z-index:100; }
.admin-sidebar .sidebar-logo { padding:20px; display:flex; align-items:center; gap:10px; border-bottom:1px solid rgba(255,255,255,.08); }
.admin-sidebar .sidebar-logo .logo-icon { width:36px; height:36px; background:linear-gradient(135deg,var(--primary),var(--accent)); border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:18px; }
.admin-sidebar .sidebar-logo span { font-weight:700; font-size:16px; }
.admin-sidebar .sidebar-menu { padding:12px 0; }
.admin-sidebar .menu-group { padding:14px 18px 6px; font-size:14px; color:#ffffff; font-weight:700; letter-spacing:1px; display:flex; align-items:center; justify-content:space-between; gap:10px; cursor:pointer; user-select:none; white-space:nowrap; overflow:hidden; transition:background .2s, color .2s, border-color .2s, opacity .2s; margin-top:18px; border-left:3px solid #1a73e8; border-radius:0 6px 6px 0; background:transparent; }
.admin-sidebar .menu-group:first-child { margin-top:10px; }
.admin-sidebar .menu-group:hover { background:rgba(255,255,255,.06); }
.admin-sidebar .menu-group .menu-label { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; text-align:left; }
.admin-sidebar .menu-group .caret { font-size:10px; color:rgba(255,255,255,.7); transition:transform .25s, color .2s; flex-shrink:0; line-height:1; }
.admin-sidebar .menu-group .caret::before { content:'\25BE'; display:inline-block; }  /* ▾ */
/* 折叠态：颜色变淡、蓝条变弱、字重变 normal、整体 opacity 0.85 */
.admin-sidebar .menu-group.collapsed { color:rgba(255,255,255,.45); font-weight:500; border-left-color:rgba(26,115,232,.3); letter-spacing:.5px; opacity:.85; }
.admin-sidebar .menu-group.collapsed:hover { color:rgba(255,255,255,.85); border-left-color:#1a73e8; background:rgba(255,255,255,.04); opacity:1; }
.admin-sidebar .menu-group.collapsed .caret { color:rgba(255,255,255,.45); }
.admin-sidebar .menu-group.collapsed .caret::before { content:'\25B8'; }  /* ▸ */
.admin-sidebar .menu-item { display:flex; align-items:center; gap:10px; padding:10px 20px; color:rgba(255,255,255,.85); text-decoration:none; font-size:14px; transition:var(--transition); border-left:3px solid transparent; }
.admin-sidebar .menu-item:hover { color:#fff; background:rgba(255,255,255,.05); }
.admin-sidebar .menu-item.active { color:#fff; background:rgba(26,115,232,.15); border-left-color:var(--primary); }
.admin-sidebar .menu-item i { width:20px; text-align:center; font-size:16px; }
.admin-sidebar .menu-item .ic { display:inline-block; width:20px; text-align:center; font-size:16px; flex-shrink:0; }
.admin-sidebar .menu-item span { white-space:nowrap; overflow:hidden; transition:opacity .2s; }
/* 折叠后隐藏该组下面的菜单项（用 JS 控制 display:none，本节为增强理解） */
.admin-sidebar .menu-group.collapsed + a { display:none; }

/* ===== 侧边栏折叠整体 ===== */
.admin-sidebar { position:fixed; top:0; left:0; height:100vh; width:240px; background:linear-gradient(180deg,#0f2027,#203a43); color:#fff; transition:width .3s cubic-bezier(.4,0,.2,1); z-index:100; box-shadow:2px 0 8px rgba(0,0,0,.1); overflow-y:auto; overflow-x:hidden; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.18) transparent; -webkit-overflow-scrolling:touch; }
.admin-sidebar::-webkit-scrollbar { width:6px; }
.admin-sidebar::-webkit-scrollbar-thumb { background:rgba(255,255,255,.18); border-radius:3px; }
.admin-sidebar::-webkit-scrollbar-thumb:hover { background:rgba(255,255,255,.32); }
.admin-sidebar::-webkit-scrollbar-track { background:transparent; }
.admin-sidebar .sidebar-header { display:flex; align-items:center; gap:10px; padding:16px 18px; border-bottom:1px solid rgba(255,255,255,.08); cursor:pointer; user-select:none; transition:background .2s; }
.admin-sidebar .sidebar-header:hover { background:rgba(255,255,255,.05); }
.admin-sidebar .sidebar-header .logo-mini { width:34px; height:34px; background:linear-gradient(135deg,var(--primary),var(--accent)); border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0; }
.admin-sidebar .sidebar-header .logo-text-full { font-weight:700; font-size:15px; flex:1; transition:opacity .2s; white-space:nowrap; color:#fff; }
.admin-sidebar .sidebar-toggle { display:none !important; } /* 旧按钮已删除 */
body.sidebar-collapsed .admin-sidebar { width:64px; overflow-x:hidden; overflow-y:auto; }
body.sidebar-collapsed .admin-sidebar .logo-text-full { opacity:0; pointer-events:none; width:0; }
body.sidebar-collapsed .admin-sidebar .menu-item span { display:none; }
body.sidebar-collapsed .admin-sidebar .menu-item { padding:10px 0; justify-content:center; gap:0; }
body.sidebar-collapsed .admin-sidebar .menu-item .ic { font-size:18px; }
body.sidebar-collapsed .admin-sidebar .menu-group { padding:6px 0; font-size:0; line-height:1; height:1px; border-bottom:1px solid rgba(255,255,255,.08); pointer-events:none; }
body.sidebar-collapsed .admin-sidebar .menu-group .caret,
body.sidebar-collapsed .admin-sidebar .menu-group span { display:none; }
body.sidebar-collapsed .admin-sidebar .sidebar-header { padding:16px 12px; justify-content:center; }
body.sidebar-collapsed .admin-main { margin-left:64px !important; }
body:not(.sidebar-collapsed) .admin-main { margin-left:240px; }

/* 移动端默认折叠 */
@media(max-width:768px) {
    .admin-sidebar { width:240px; transform:translateX(-240px); transition:transform .3s; }
    .admin-sidebar.show-mobile { transform:translateX(0); }
    body.sidebar-collapsed .admin-sidebar { transform:translateX(-240px); width:240px; }
    body { padding-left:0 !important; }
    .admin-main, .admin-layout { margin-left:0 !important; }
}

.admin-main { flex:1; margin-left:240px; padding:0; }
.admin-header { background:#fff; padding:14px 28px; display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid var(--border); position:sticky; top:0; z-index:50; box-shadow:0 1px 3px rgba(0,0,0,.03); }
.admin-header .header-left { font-size:16px; font-weight:600; color:var(--dark); }
.admin-header .header-right { display:flex; align-items:center; gap:16px; }
.admin-header .expire-banner { background:linear-gradient(135deg,#e74c3c,#c0392b); color:#fff; padding:6px 16px; border-radius:20px; font-size:13px; font-weight:500; animation:pulse 2s infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.7} }
.admin-content { padding:18px 28px 24px; }

/* 统计卡片 */
.stat-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:16px; margin-bottom:20px; }
.stat-card { background:#fff; border-radius:var(--radius); padding:18px 20px; box-shadow:var(--shadow); transition:var(--transition); position:relative; overflow:hidden; }
.stat-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-lg); }
.stat-card .stat-icon { width:48px; height:48px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-size:22px; margin-bottom:12px; }
.stat-card .stat-icon.blue { background:#e8f0fe; color:var(--primary); }
.stat-card .stat-icon.green { background:#e6f9f3; color:var(--accent); }
.stat-card .stat-icon.orange { background:#fef3e2; color:var(--warning); }
.stat-card .stat-icon.red { background:#fde8e8; color:var(--danger); }
.stat-card .stat-number { font-size:32px; font-weight:800; color:var(--dark); }
.stat-card .stat-label { font-size:13px; color:var(--gray); margin-top:4px; }

/* Card / Panel */
.panel { background:#fff; border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:24px; overflow:hidden; }
.panel-header, .panel-hd { padding:16px 24px; border-bottom:1px solid var(--border); display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
.panel-header h3, .panel-hd h3 { font-size:16px; font-weight:600; color:var(--dark); margin:0; }
.panel-header > div, .panel-hd > div { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.panel-tool-select { padding:7px 14px; border:1px solid var(--border); border-radius:8px; background:#fff; color:var(--dark); font-size:14px; outline:none; min-width:160px; transition:var(--transition); cursor:pointer; }
.panel-tool-select:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,115,232,.08); }
.panel-body { padding:24px; }

/* 按钮 */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:8px 20px; border-radius:8px; font-size:14px; font-weight:500; cursor:pointer; transition:var(--transition); border:none; text-decoration:none; line-height:1.2; }
.btn-primary { background:linear-gradient(135deg,var(--primary),#4f8df0); color:#fff; }
.btn-primary:hover { transform:translateY(-1px); box-shadow:0 4px 16px rgba(26,115,232,.3); }
.btn-success { background:var(--accent); color:#fff; }
.btn-success:hover { transform:translateY(-1px); box-shadow:0 4px 16px rgba(0,184,148,.3); }
.btn-danger { background:var(--danger); color:#fff; }
.btn-danger:hover { transform:translateY(-1px); box-shadow:0 4px 16px rgba(231,76,60,.3); }
/* 描边按钮：在白底表格中不再呈"白板"观感，采用蓝色描边 + 浅蓝填充 */
.btn-outline { background:#f1f5fb; border:1px solid #cfdcef; color:#1a73e8; }
.btn-outline:hover { background:#e8f0fe; border-color:var(--primary); color:var(--primary-dark); box-shadow:0 2px 8px rgba(26,115,232,.12); }
.btn-outline.btn-danger { background:#fdecec; border-color:#f3c2bd; color:var(--danger); }
.btn-outline.btn-danger:hover { background:#fbe0e0; border-color:var(--danger); color:#b53a2c; }
.btn-sm { padding:5px 12px; font-size:12px; border-radius:6px; }
.btn-link { background:transparent; border:none; color:var(--primary); padding:2px 6px; cursor:pointer; font-size:13px; }
.btn-link:hover { color:var(--primary-dark); text-decoration:underline; }

/* 搜索框 */
.search-box { display:flex; gap:10px; margin-bottom:20px; flex-wrap:wrap; align-items:center; }
.search-box input { flex:1; min-width:160px; padding:10px 16px; border:1px solid var(--border); border-radius:8px; font-size:14px; outline:none; transition:var(--transition); }
.search-box input:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,115,232,.1); }

/* 表格 */
.data-table { width:100%; border-collapse:separate; border-spacing:0; }
.data-table th { padding:14px 16px; text-align:left; font-size:12px; font-weight:600; color:var(--gray); text-transform:uppercase; letter-spacing:.5px; background:#f8fafc; border-bottom:2px solid var(--border); white-space:nowrap; }
.data-table td { padding:14px 16px; font-size:14px; border-bottom:1px solid var(--border); color:var(--dark); vertical-align:middle; }
.data-table tbody tr { transition:background .15s; }
.data-table tbody tr:hover { background:#f5f9ff; }
.data-table tbody tr:last-child td { border-bottom:none; }
/* 操作列默认居中：给表格行末列与表头末列自动居中 */
.data-table th:last-child, .data-table td:last-child { text-align:center; }
.data-table .actions { display:inline-flex; gap:6px; align-items:center; justify-content:center; flex-wrap:nowrap; }
.data-table .badge { display:inline-block; padding:3px 10px; border-radius:20px; font-size:12px; font-weight:500; }
.badge-success { background:#e6f9f3; color:var(--accent); }
.badge-warning { background:#fef3e2; color:var(--warning); }
.badge-danger { background:#fde8e8; color:var(--danger); }
.badge-info { background:#e8f0fe; color:var(--primary); }

/* 空值占位 */
.empty-cell { color:#94a3b8; }

/* 表单 */
.form-section { max-width:700px; }
.form-group { margin-bottom:18px; }
.form-group label { display:block; font-size:13px; font-weight:500; color:var(--dark); margin-bottom:6px; }
.form-group label .required { color:var(--danger); }
.form-group input, .form-group select, .form-group textarea { width:100%; padding:10px 14px; border:1px solid var(--border); border-radius:8px; font-size:14px; outline:none; transition:var(--transition); }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,115,232,.08); }
.form-group textarea { min-height:80px; resize:vertical; }
.form-actions { display:flex; gap:12px; padding-top:8px; }

/* 看板列 */
.kanban { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.kanban-col { background:#f8fafc; border-radius:var(--radius); padding:12px; min-height:200px; }
.kanban-col h4 { font-size:13px; font-weight:600; color:var(--gray); margin-bottom:12px; padding-bottom:8px; border-bottom:2px solid var(--border); }
.kanban-card { background:#fff; border-radius:8px; padding:12px; margin-bottom:10px; box-shadow:0 1px 3px rgba(0,0,0,.05); cursor:pointer; transition:var(--transition); }
.kanban-card:hover { transform:translateY(-1px); box-shadow:var(--shadow); }
.kanban-card .pet-name { font-weight:600; font-size:14px; }
.kanban-card .owner-name { font-size:12px; color:var(--gray); }
.kanban-card .reg-no { font-size:11px; color:var(--gray); margin-top:4px; }

/* 标签 */
.tag { display:inline-flex; align-items:center; padding:2px 8px; border-radius:4px; font-size:11px; margin-right:4px; }
.tag-vip { background:#fef3e2; color:#e67e22; }
.tag-regular { background:#e8f0fe; color:var(--primary); }
.tag-new { background:#e6f9f3; color:var(--accent); }
.tag-expired { background:#fde8e8; color:var(--danger); border:1px solid var(--danger); }

/* 图表容器 */
.chart-container { width:100%; height:350px; }

/* 网格 */
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }

/* Toast */
.toast { position:fixed; top:20px; right:20px; z-index:9999; padding:12px 24px; border-radius:8px; color:#fff; font-size:14px; animation:slideIn .3s ease; }
.toast-success { background:var(--accent); }
.toast-error { background:var(--danger); }
@keyframes slideIn { from{transform:translateX(100%);opacity:0} to{transform:translateX(0);opacity:1} }

/* 响应式 */
@media(max-width:768px) {
    .homepage-main { flex-direction:column; gap:40px; padding:20px; }
    .homepage-hero h1 { font-size:28px; }
    .login-card { width:100%; }
    .pricing-cards { flex-direction:column; }
    .admin-sidebar { width:200px; }
    .admin-main { margin-left:200px; }
    .grid-2,.grid-3 { grid-template-columns:1fr; }
    .kanban { grid-template-columns:1fr; }
    .stat-cards { grid-template-columns:1fr 1fr; }
}

/* ===== 登录卡片（修复 label 与 placeholder 颜色对比） ===== */
.login-card .form-group label,
.login-card label { color:rgba(255,255,255,.92) !important; opacity:1 !important; -webkit-text-fill-color:rgba(255,255,255,.92) !important; }
.login-card .form-group input::placeholder,
.login-card .form-group input::-webkit-input-placeholder,
.login-card .form-group input:-ms-input-placeholder { color:rgba(255,255,255,.6); opacity:1; font-weight:400; }
.login-card .form-group input:focus { border-color:#1a73e8; background:rgba(255,255,255,.14); box-shadow:0 0 0 3px rgba(26,115,232,.2); }

/* ===== 返回顶部浮动按钮 ===== */
.back-to-top { position:fixed; right:24px; bottom:32px; width:46px; height:46px; border-radius:50%; background:linear-gradient(135deg,var(--primary),#4f8df0); color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 8px 24px rgba(26,115,232,.45); z-index:9990; text-decoration:none; opacity:.5; visibility:visible; transform:translateY(0); transition:all .3s cubic-bezier(.4,0,.2,1); }
.back-to-top.show { opacity:1; transform:translateY(0); }
.back-to-top:hover { transform:translateY(-4px); box-shadow:0 12px 28px rgba(26,115,232,.6); color:#fff; opacity:1; }
.back-to-top svg { width:22px !important; height:22px !important; flex-shrink:0; display:block; }

/* ===== 弹窗（modal-overlay / modal-box / modal-close） ===== */
.modal-overlay { position:fixed; inset:0; background:rgba(8,18,32,.55); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); display:none; align-items:center; justify-content:center; z-index:9999; padding:20px; animation:fadeIn .25s ease both; }
.modal-overlay.active { display:flex; }
.modal-overlay.show { display:flex; }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
.modal-box { position:relative; width:100%; max-width:420px; padding:36px 32px 30px; border-radius:20px; background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(248,250,252,.94)); box-shadow:0 30px 60px rgba(0,0,0,.32); text-align:center; color:#1e293b; animation:scaleIn .35s cubic-bezier(.22,.61,.36,1) both; }
@keyframes scaleIn { from{transform:scale(.85); opacity:0;} to{transform:scale(1); opacity:1;} }
.modal-close { position:absolute; top:14px; right:16px; width:32px; height:32px; border:none; border-radius:8px; background:rgba(0,0,0,.05); color:#475569; font-size:18px; cursor:pointer; transition:all .3s cubic-bezier(.4,0,.2,1); display:flex; align-items:center; justify-content:center; line-height:1; }
.modal-close:hover { background:rgba(0,0,0,.12); color:#1e293b; }
.modal-icon { width:64px; height:64px; margin:0 auto 18px; border-radius:16px; background:linear-gradient(135deg,#1a73e8,#1557b0); color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 10px 24px rgba(26,115,232,.35); }
.modal-icon svg { width:28px; height:28px; }
.modal-title { font-size:18px; font-weight:600; color:#1e293b; margin-bottom:14px; letter-spacing:.5px; }
.modal-desc { font-size:13px; color:#64748b; margin-bottom:22px; line-height:1.6; }
.phone-card { padding:20px 16px; background:linear-gradient(135deg,#f0f7ff,#e8f0fe); border-radius:14px; margin-bottom:20px; }
.phone-label { font-size:13px; color:#64748b; margin-bottom:8px; letter-spacing:.5px; }
.phone-number { font-size:30px; font-weight:700; color:#1a73e8; letter-spacing:1px; }
.phone-number small { display:block; font-size:12px; font-weight:400; color:#64748b; margin-top:6px; letter-spacing:.5px; }
.btn-call { display:inline-flex; align-items:center; gap:8px; padding:12px 28px; border-radius:999px; background:linear-gradient(135deg,#1a73e8,#1557b0); color:#fff; font-size:15px; font-weight:500; text-decoration:none; transition:all .3s cubic-bezier(.4,0,.2,1); box-shadow:0 8px 18px rgba(26,115,232,.32); margin:6px 0; }
.btn-call:hover { transform:translateY(-2px); box-shadow:0 12px 24px rgba(26,115,232,.4); color:#fff; }
.modal-tip { font-size:12px; color:#94a3b8; margin-top:14px; }

/* ===== 首页 layout 微调（解决点击套餐后无法回到登录） ===== */
.login-card { scroll-margin-top:80px; }
.pricing-section { scroll-margin-top:80px; }

/* ==========================================
   LayUI 风格页面 桌面端基础样式
   (子账号管理 / 医生排班 使用 gc-* 和 layui-* 类)
   ========================================== */
.gc-main { padding: 20px; }
.gc-card { background:#fff; border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:20px; overflow:hidden; }
.gc-card-hd { display:flex; align-items:center; justify-content:space-between; padding:16px 20px; border-bottom:1px solid var(--border); }
.gc-card-hd h3 { font-size:16px; font-weight:600; color:var(--dark); margin:0; }
.gc-table { width:100%; border-collapse:collapse; font-size:14px; }
.gc-table th { background:var(--light); color:var(--gray); font-weight:600; text-align:left; padding:12px 16px; border-bottom:1px solid var(--border); white-space:nowrap; }
.gc-table td { padding:12px 16px; border-bottom:1px solid var(--border); color:var(--dark); }
.gc-table tbody tr:hover { background:var(--primary-light); }
.gc-ta-c { text-align:center; color:var(--gray); padding:24px !important; }
.gc-form { padding:20px; }
.gc-form-item { margin-bottom:16px; }
.gc-form-item label { display:block; font-size:13px; color:var(--gray); margin-bottom:6px; font-weight:500; }
.gc-badge { display:inline-block; padding:3px 10px; border-radius:999px; font-size:12px; font-weight:500; line-height:1.4; }
.gc-badge-success { background:#d1fae5; color:#047857; }
.gc-badge-danger { background:#fee2e2; color:#b91c1c; }
.gc-badge-sys { background:#e0e7ff; color:#4338ca; }
.gc-dialog { position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(15,32,39,.5); backdrop-filter:blur(4px); display:none; align-items:center; justify-content:center; z-index:9999; }
.gc-dialog-bd { background:#fff; border-radius:16px; padding:24px; box-shadow:var(--shadow-lg); }
.gc-dialog-bd h3 { font-size:17px; font-weight:600; color:var(--dark); margin-bottom:20px; }
.gc-dialog-ft { display:flex; gap:10px; justify-content:flex-end; margin-top:20px; }
/* LayUI 按钮 */
.layui-btn { display:inline-block; border:none; border-radius:8px; cursor:pointer; font-size:14px; padding:9px 18px; color:#fff; background:#1a73e8; transition:var(--transition); line-height:1.5; }
.layui-btn:hover { opacity:.9; }
.layui-btn-normal { background:#1a73e8; }
.layui-btn-primary { background:#fff; color:#1a73e8; border:1px solid var(--border); }
.layui-btn-primary:hover { border-color:#1a73e8; }
.layui-btn-danger { background:var(--danger); }
.layui-btn-sm { padding:6px 12px; font-size:13px; }
.layui-btn-xs { padding:4px 8px; font-size:12px; }
/* LayUI 输入框 */
.layui-input { width:100%; padding:9px 12px; border:1px solid var(--border); border-radius:8px; font-size:14px; color:var(--dark); background:#fff; transition:var(--transition); box-sizing:border-box; }
.layui-input:focus { outline:none; border-color:#1a73e8; box-shadow:0 0 0 3px rgba(26,115,232,.15); }

/* ===== 通用详情弹窗（用于替换原生 alert） ===== */
.detail-modal { position:fixed; inset:0; background:rgba(15,32,39,.5); backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); display:none; align-items:center; justify-content:center; z-index:9999; padding:20px; }
.detail-modal.show { display:flex; animation:detailFadeIn .2s ease; }
@keyframes detailFadeIn { from{opacity:0;transform:scale(.96);} to{opacity:1;transform:scale(1);} }
.detail-modal .dm-box { background:#fff; border-radius:16px; box-shadow:0 20px 60px rgba(0,0,0,.2); width:480px; max-width:100%; max-height:80vh; display:flex; flex-direction:column; overflow:hidden; animation:detailFadeIn .25s ease; }
.detail-modal .dm-head { display:flex; align-items:center; justify-content:space-between; padding:20px 24px; border-bottom:1px solid var(--border); background:linear-gradient(135deg,#f8fbff,#eef4ff); }
.detail-modal .dm-head h3 { font-size:17px; font-weight:700; color:var(--dark); display:flex; align-items:center; gap:8px; margin:0; }
.detail-modal .dm-head h3::before { content:''; width:4px; height:18px; border-radius:2px; background:linear-gradient(180deg,var(--primary),var(--accent)); }
.detail-modal .dm-close { background:transparent; border:none; font-size:22px; color:var(--gray); cursor:pointer; padding:0 6px; line-height:1; border-radius:6px; transition:background .15s, color .15s; }
.detail-modal .dm-close:hover { background:#eef2f7; color:var(--dark); }
.detail-modal .dm-body { padding:20px 24px; overflow-y:auto; }
.detail-modal .dm-row { display:flex; align-items:flex-start; padding:10px 0; border-bottom:1px dashed var(--border); gap:16px; }
.detail-modal .dm-row:last-child { border-bottom:none; }
.detail-modal .dm-label { flex:0 0 90px; font-size:13px; color:var(--gray); font-weight:500; }
.detail-modal .dm-value { flex:1; font-size:14px; color:var(--dark); word-break:break-all; line-height:1.6; }
.detail-modal .dm-value.muted { color:#94a3b8; }
.detail-modal .dm-foot { padding:16px 24px; border-top:1px solid var(--border); background:#fafbfd; display:flex; justify-content:flex-end; }
.detail-modal .dm-foot .btn { min-width:96px; }
