* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

body {
    font-family: 'Segoe UI', Roboto, sans-serif;
    background: #f0f2f5;
    padding: 20px;
}

.app-container {
    max-width: 1400px;
    margin: 0 auto;
}

.app-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.btn-logout {
    padding: 8px 18px;
    background: #ff4d4f;
    color: white;
    border: none;
    border-radius: 6px;
    cursor: pointer;
}

.gateway-bar {
    display: flex;
    align-items: center;
    gap: 15px;
    background: white;
    padding: 15px 20px;
    border-radius: 12px;
    margin-bottom: 20px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}

.gateway-bar select {
    padding: 8px 12px;
    font-size: 16px;
    min-width: 280px;
    border: 1px solid #d9d9d9;
    border-radius: 6px;
}

.btn-secondary {
    padding: 8px 16px;
    background: white;
    margin: 10px;
    border: 1px solid #d9d9d9;
    font-size: 18px;
    border-radius: 20px;
    cursor: pointer;
}

.btn-primary {
    padding: 8px 20px;
    background: #1890ff;
    color: white;
    border: none;
    border-radius: 20px;
    cursor: pointer;
}

.btn-warning {
    padding: 8px 16px;
    background: #fff1f0;
    border: 1px solid #ffccc7;
    color: #ff4d4f;
    border-radius: 20px;
    cursor: pointer;
}

.update-time {
    margin-left: auto;
    color: #666;
    font-size: 14px;
}

.main-view {
    background: white;
    border-radius: 16px;
    padding: 20px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.04);
    min-height: 400px;
}

.modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,0.5);
    justify-content: center;
    align-items: center;
    z-index: 1000;
}

.modal-content {
    background: white;
    padding: 30px;
    border-radius: 16px;
    width: 420px;
}

.form-group {
    margin-bottom: 18px;
}

.form-group label {
    display: block;
    margin-bottom: 6px;
    font-weight: 500;
}

.form-group input {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
}

.modal-actions {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    margin-top: 20px;
}

/* 图标通用样式 */
.icon-voltage, .icon-current, .icon-power, .icon-inputv {
    display: inline-block;
    width: 25px;
    height: 25px;
    vertical-align: middle;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}

/* 电压图标 */
.icon-voltage {
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M836.266667 102.4H187.733333c-46.933333 0-85.333333 38.4-85.333333 85.333333v648.533334c0 46.933333 38.4 85.333333 85.333333 85.333333h648.533334c46.933333 0 85.333333-38.4 85.333333-85.333333V187.733333c0-46.933333-38.4-85.333333-85.333333-85.333333zM645.973333 471.893333L539.306667 723.626667l-0.853334 1.706666c-5.973333 9.386667-16.213333 15.36-27.306666 15.36-11.093333 0-21.333333-5.973333-27.306667-15.36l-0.853333-1.706666-105.813334-251.733334c-5.973333-13.653333 0.853333-29.013333 14.506667-34.986666 13.653333-5.973333 29.013333 0.853333 34.986667 14.506666l85.333333 202.24 85.333333-202.24c5.973333-13.653333 21.333333-19.626667 34.986667-13.653333 13.653333 5.12 19.626667 20.48 13.653333 34.133333z m99.84-67.413333c-7.68 5.12-18.773333 2.56-23.893333-5.973333-43.52-70.826667-122.026667-117.76-210.773333-117.76-88.746667 0-166.4 46.933333-209.92 116.906666-5.12 8.533333-16.213333 10.24-23.893334 5.12-7.68-5.12-10.24-15.36-5.12-23.04 49.493333-79.36 138.24-133.12 238.933334-133.12 101.546667 0 190.293333 53.76 239.786666 133.973334 5.12 8.533333 3.413333 18.773333-5.12 23.893333z' fill='%2309a012'/%3E%3C/svg%3E");
}

/* 电流图标 */
.icon-current {
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M836.266667 102.4H187.733333c-46.933333 0-85.333333 38.4-85.333333 85.333333v648.533334c0 46.933333 38.4 85.333333 85.333333 85.333333h648.533334c46.933333 0 85.333333-38.4 85.333333-85.333333V187.733333c0-46.933333-38.4-85.333333-85.333333-85.333333zM347.306667 722.773333l135.68-320 0.853333-1.706666c5.973333-10.24 16.213333-16.213333 27.306667-16.213334 11.093333 0 22.186667 5.973333 27.306666 16.213334l0.853334 1.706666 0.853333 1.706667 135.68 319.146667c5.12 12.8-0.853333 28.16-13.653333 34.133333-3.413333 1.706667-6.826667 1.706667-10.24 1.706667-10.24 0-19.626667-5.973333-23.893334-15.36l-42.666666-100.693334H436.906667l-42.666667 100.693334c-5.12 12.8-20.48 18.773333-33.28 13.653333-12.8-6.826667-18.773333-22.186667-13.653333-34.986667z m399.36-301.226666c-7.68 5.12-18.773333 2.56-23.893334-5.973334C679.253333 345.6 600.746667 298.666667 512 298.666667c-88.746667 0-166.4 46.933333-209.92 116.906666-5.12 8.533333-16.213333 10.24-23.893333 5.12-1.706667-0.853333-3.413333-2.56-4.266667-4.266666v-20.48c47.786667-75.946667 130.56-127.146667 225.28-131.413334h25.6c95.573333 4.266667 178.346667 55.466667 226.133333 132.266667V418.133333c-1.706667 0.853333-2.56 2.56-4.266666 3.413334z' fill='%238EC453'/%3E%3Cpath d='M511.146667 467.626667l-52.053334 122.88h104.96z' fill='%238EC453'/%3E%3C/svg%3E");
}

/* 功率图标 */
.icon-power {
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M557.176471 26.081882l353.054117 203.836236a90.352941 90.352941 0 0 1 45.176471 78.245647v407.67247a90.352941 90.352941 0 0 1-45.176471 78.245647L557.176471 997.918118a90.352941 90.352941 0 0 1-90.352942 0L113.769412 794.081882a90.352941 90.352941 0 0 1-45.176471-78.245647V308.163765a90.352941 90.352941 0 0 1 45.176471-78.245647L466.823529 26.081882a90.352941 90.352941 0 0 1 90.352942 0z' fill='%23D2F6FF'/%3E%3Cpath d='M444.385882 668.912941V545.129412h79.962353c78.607059 0 117.910588-33.430588 117.910589-99.84 0-65.957647-39.303529-98.936471-117.007059-98.936471H391.529412v322.56h52.85647z m76.8-168.96h-76.8V391.529412h76.8c23.04 0 40.207059 4.065882 51.049412 12.649412 10.842353 8.131765 16.715294 21.684706 16.715294 41.110588s-5.421176 33.430588-16.263529 42.014117c-10.842353 8.131765-28.009412 12.649412-51.501177 12.649412z' fill='%232DC3EB'/%3E%3C/svg%3E");
}

/* 输入电压图标 */
.icon-inputv {
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M452.2 158.7V67.6c-38.5 5.3-76 15.6-112.1 30.8-52.9 22.4-100.4 54.4-141.2 95.2-40.8 40.8-72.8 88.3-95.2 141.2-16 38.2-26.7 78.1-31.6 119.1H163c22.9-150 140.2-269.3 289.2-295.2z m411 295.2H954c-4.9-41-15.5-80.9-31.7-119.2-22.4-52.9-54.4-100.4-95.2-141.2-40.8-40.8-88.3-72.8-141.2-95.2-38.3-16.2-78.1-26.8-119.2-31.7v90.9c152.5 23.3 273.2 144.1 296.5 296.4zM164.1 568.5H73c5.3 38.5 15.6 76 30.8 112.1 22.4 52.9 54.4 100.4 95.2 141.2 40.8 40.8 88.3 72.8 141.2 95.2 36.1 15.3 73.6 25.5 112.1 30.8v-91.1c-146.7-25.6-262.7-141.6-288.2-288.2z m402.7 289.2v90.9c41-4.9 80.9-15.5 119.2-31.7 52.9-22.4 100.4-54.4 141.2-95.2 40.8-40.8 72.8-88.3 95.2-141.2 15.3-36 25.5-73.6 30.8-112.1H862c-25.9 149.1-145.2 266.4-295.2 289.3z' fill='%231296db'/%3E%3Cpath d='M344.6 519.5h140.2L324.5 773.1l336.9-273.6H521.2l160.3-253.6z' fill='%231296db'/%3E%3C/svg%3E");
}

/* 仪表盘卡片 */
.dashboard-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 20px;
}

.sensor-card {
    background: #fafafa;
    border-radius: 12px;
    padding: 20px;
    border: 1px solid #e8e8e8;
    cursor: pointer;
    transition: all 0.2s;
}

.sensor-card:hover {
    box-shadow: 0 6px 16px rgba(0,0,0,0.08);
    border-color: #1890ff;
}

.sensor-card h3 {
    margin-bottom: 10px;
}

.sensor-card .metric {
    font-size: 28px;
    font-weight: 600;
    margin: 10px 0;
}

.sensor-card .metric small {
    font-size: 14px;
    font-weight: normal;
    color: #666;
}

.status-badge {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 20px;
    font-size: 12px;
}

.online {
    background: #f6ffed;
    color: #52c41a;
    border: 1px solid #b7eb8f;
}

.offline {
    background: #fff2f0;
    color: #ff4d4f;
    border: 1px solid #ffccc7;
}

/* 电源卡片专用 */
.power-card .metric-row {
    display: flex;
    justify-content: space-between;
    margin: 5px 0;
}

.battery-card .metric-row {
    display: flex;
    justify-content: space-between;
    margin: 2px 0;
}

.power-card .temp-row {
    font-size: 20px;
    color: #555;
    border-top: 1px dashed #ddd;
    padding-top: 8px;
    margin-top: 5px;
}

.power-card .set-info {
    font-size: 15px;
    color: #2c3e50;
    background: #f0f7ff;
    padding: 5px 8px;
    border-radius: 6px;
    margin-top: 8px;
}

.power-panel .panel-row {
    display: flex;
    gap: 30px;
    margin-bottom: 15px;
    font-size: 18px;
}

.status-badge.online {
    background: #f6ffed;
    color: #52c41a;
    border: 1px solid #b7eb8f;
}

.status-badge.offline {
    background: #fff2f0;
    color: #ff4d4f;
    border: 1px solid #ffccc7;
}

.status-badge.alarm {
    background: #fff7e6;
    color: #fa8c16;
    border: 1px solid #ffd591;
}

.status-badge.normal {
    background: #f6ffed;
    color: #52c41a;
    border: 1px solid #b7eb8f;
}

.btn-small {
    padding: 2px 8px;
    font-size: 13px;
    margin-left: 5px;
    cursor: pointer;
}

.params-panel {
    margin-top: 15px;
    padding: 16px;
    background: #f9f9f9;
    border-radius: 13px;
    border: 1px solid #ddd;
    font-size: 18px;
}

.params-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: 10px;
}

.param-item {
    display: flex;
    align-items: center;
    gap: 8px;
}

.status-badge.cv {
    background: #e6f7ff;
    color: #1890ff;
    border: 1px solid #91d5ff;
}

.status-badge.cc {
    background: #fff7e6;
    color: #fa8c16;
    border: 1px solid #ffd591;
}

.btn-small {
    margin: 0 4px;
}

.power-toggle-btn {
    font-weight: bold;
    transition: background-color 0.2s;
}

#protectActionRow {
    justify-content: flex-end;
    margin-top: 8px;
}

.power-toggle-btn {
    font-weight: bold;
    transition: all 0.2s;
    box-shadow: 0 2px 6px rgba(0,0,0,0.15);
}

.power-toggle-btn:hover {
    opacity: 0.9;
    transform: scale(1.02);
}

.power-action-btn {
    color: white;
    border: none;
    padding: 8px 20px;
    border-radius: 24px;
    font-size: 16px;
    font-weight: bold;
    cursor: pointer;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    transition: opacity 0.2s;
    min-width: 80px;
}

.power-action-btn:hover {
    opacity: 0.85;
}

#output-status.status-badge.online {
    background: #f6ffed;
    color: #52c41a;
    border-color: #b7eb8f;
}

#output-status.status-badge.offline {
    background: #fff2f0;
    color: #ff4d4f;
    border-color: #ffccc7;
}

.onoffswitch {
    position: relative;
    width: 80px;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
}

.onoffswitch-checkbox {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.onoffswitch-label {
    display: block;
    overflow: hidden;
    cursor: pointer;
    border: 2px solid #999999;
    border-radius: 20px;
}

.onoffswitch-inner {
    display: block;
    width: 200%;
    margin-left: -100%;
    transition: margin 0.3s ease-in 0s;
}

.onoffswitch-inner:before, .onoffswitch-inner:after {
    display: block;
    float: left;
    width: 50%;
    height: 30px;
    padding: 0;
    line-height: 30px;
    font-size: 14px;
    color: white;
    font-family: Trebuchet, Arial, sans-serif;
    font-weight: bold;
    box-sizing: border-box;
}

.onoffswitch-inner:before {
    content: "ON";
    padding-left: 10px;
    background-color: #52c41a;
    color: #FFFFFF;
}

.onoffswitch-inner:after {
    content: "OFF";
    padding-right: 10px;
    background-color: #EEEEEE;
    color: #999999;
    text-align: right;
}

.onoffswitch-switch {
    display: block;
    width: 18px;
    margin: 6px;
    background: #FFFFFF;
    position: absolute;
    top: 0;
    bottom: 0;
    right: 46px;
    border: 2px solid #999999;
    border-radius: 20px;
    transition: all 0.3s ease-in 0s;
}

.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
    margin-left: 0;
}

.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
    right: 0px;
}

.battery-icon.charging .battery-level {
    background: linear-gradient(90deg, #1e40af, #2563eb, #1e40af);
    background-size: 200% 100%;
    animation: charging-marquee 1.2s linear infinite;
}

@keyframes charging-marquee {
    0% { background-position: 100% 0; }
    100% { background-position: -100% 0; }
}

/* 信息卡片 */
.info-card {
    background: white;
    border: 1px solid #e8e8e8;
    border-radius: 12px;
    padding: 18px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
    transition: all 0.3s ease;
}

.info-card:hover {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

.info-card-title {
    font-size: 16px;
    font-weight: 600;
    color: #1890ff;
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 2px solid #f0f0f0;
}

.info-card-content {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.info-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 6px 0;
    font-size: 18px;
}

.info-row .label {
    color: #666;
    font-weight: 500;
    min-width: 100px;
}

.info-row .value {
    color: #333;
    font-weight: 600;
    text-align: right;
    flex: 1;
}

/* 进度条 */
.progress-bar {
    height: 24px;
    background: #f0f0f0;
    border-radius: 12px;
    overflow: hidden;
    position: relative;
}

.progress-bar > div {
    height: 100%;
    background: linear-gradient(90deg, #52c41a, #95de64);
    transition: width 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-weight: bold;
    font-size: 12px;
    min-width: 30px;
}

/* 警报面板 */
.alarm-panel {
    background: #fff7e6;
    border-left: 4px solid #ff9800;
    padding: 15px 18px;
    border-radius: 8px;
    margin-bottom: 20px;
    color: #333;
    font-size: 14px;
}

.alarm-item {
    margin: 6px 0;
}

/* 中断面板 */
.interrupt-panel {
    background: #fff1f0;
    border-left: 4px solid #ff4d4f;
    padding: 15px 18px;
    border-radius: 8px;
    margin-bottom: 20px;
    color: #333;
    font-size: 14px;
}

/* 链接自颜色 */
.versionInfo a:link { color: #059669; } /* 绿色 */
.versionInfo a:visited { color: #4d7c0f; }
.versionInfo a:hover { color: #eab308; }

/* ==================== 曲线加载遮罩 - 高级UI效果 ==================== */

/* 1. 遮罩层：毛玻璃效果 + 平滑过渡 */
.chart-loading-overlay {
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, 0.75);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 20;
    border-radius: 8px;
    
    /* 默认隐藏，通过 opacity 过渡实现平滑显隐 */
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 激活可见状态 */
.chart-loading-overlay.visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

/* 2. 加载容器布局 */
.chart-loading-spinner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 24px;
}

/* 3. 旋转环组合容器 */
.spinner-ring {
    position: relative;
    width: 64px;
    height: 64px;
}

/* 外环：渐变旋转 */
.spinner-ring::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 3px solid transparent;
    border-top-color: #3498db;
    border-right-color: #3498db;
    animation: spin-clockwise 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
}

/* 核心脉冲：模拟电源能量心跳 */
.spinner-core {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #2ecc71;
    box-shadow: 0 0 12px rgba(46, 204, 113, 0.6);
    animation: core-pulse 1.5s ease-in-out infinite;
}

/* 4. 文字提示：呼吸渐显 */
.spinner-text {
    font-size: 14px;
    color: #555;
    font-weight: 500;
    letter-spacing: 1px;
    animation: text-breathe 2s ease-in-out infinite;
}

/* ===== 按钮加载动画 ===== */
.range-btn.loading {
    position: relative;
    color: transparent !important;
    pointer-events: none;
}

.range-btn.loading::after {
    content: '';
    position: absolute;
    width: 14px;
    height: 14px;
    border: 2px solid #999;
    border-top-color: #3498db;
    border-radius: 50%;
    animation: spin-clockwise 0.6s linear infinite;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/* ===== 动画关键帧 ===== */
@keyframes spin-clockwise {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes core-pulse {
    0%, 100% { 
        transform: translate(-50%, -50%) scale(0.8); 
        opacity: 0.4; 
        box-shadow: 0 0 8px rgba(46, 204, 113, 0.3);
    }
    50% { 
        transform: translate(-50%, -50%) scale(1.3); 
        opacity: 1; 
        box-shadow: 0 0 20px rgba(46, 204, 113, 0.8);
    }
}

@keyframes text-breathe {
    0%, 100% { opacity: 0.6; }
    50% { opacity: 1; }
}

/* ==================== 全局交互与UI增强 ==================== */

/* 1. CSS变量定义，便于后续主题扩展 */
:root {
    --card-hover-shadow: 0 8px 24px rgba(24, 144, 255, 0.12);
    --transition-base: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 2. 卡片悬停质感增强 */
.sensor-card {
    transition: var(--transition-base);
}

.sensor-card:hover {
    box-shadow: var(--card-hover-shadow);
    transform: translateY(-2px);
}

/* 3. 状态徽章增加过渡动画 */
.status-badge {
    transition: var(--transition-base);
}

/* 4. 按钮交互反馈优化 */
.btn-primary, .btn-secondary, .btn-warning, .power-action-btn {
    transition: var(--transition-base);
}

.btn-primary:hover, .btn-secondary:hover, .btn-warning:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

/* 5. 进度条圆角与阴影细化 */
.progress-bar > div {
    border-radius: 12px;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.08);
}

/* 6. 迷你曲线容器增加边框与背景过渡 */
.sensor-card canvas {
    border-radius: 6px;
    transition: opacity 0.3s ease;
}

/* 7. 表单输入框聚焦态美化 */
.form-group input:focus {
    outline: none;
    border-color: #1890ff;
    box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.15);
    transition: var(--transition-base);
}

/* 8. 模态框弹出动画 */
.modal-content {
    animation: modal-fade-in 0.25s ease-out;
}

@keyframes modal-fade-in {
    from {
        opacity: 0;
        transform: scale(0.95) translateY(10px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

/* 9. 加载中文本居中与脉冲动画 */
#dashboardGrid:empty::before,
#dashboardGrid:not(:has(.sensor-card)) {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
    color: #999;
    font-size: 16px;
    animation: pulse-text 1.5s ease-in-out infinite;
}

@keyframes pulse-text {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

/* 10. 滚动条美化（Webkit内核） */
::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

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

::-webkit-scrollbar-thumb {
    background: #d9d9d9;
    border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
    background: #bfbfbf;
}

/* ==================== 手机缩放模式：放大字号 ==================== */
.mobile-view .gateway-bar select {
    font-size: 28px;
}

.mobile-view .btn-secondary {
    font-size: 26px;
    padding: 10px 18px;
}

.mobile-view .btn-primary {
    font-size: 26px;
    padding: 10px 22px;
}

.mobile-view .btn-logout {
    font-size: 26px;
    padding: 10px 22px;
}

.mobile-view .btn-warning {
    font-size: 26px;
    padding: 10px 18px;
}

.mobile-view .update-time {
    font-size: 22px;
}

.mobile-view .sensor-card h3 {
    font-size: 20px;
}

.mobile-view .sensor-card .metric {
    font-size: 40px;
}

.mobile-view .sensor-card .metric small {
    font-size: 22px;
}

.mobile-view .status-badge {
    font-size: 18px;
    padding: 4px 14px;
}

.mobile-view .info-card-title {
    font-size: 20px;
}

.mobile-view .info-row {
    font-size: 20px;
}

.mobile-view .info-row .value {
    font-size: 32px;
}

.mobile-view .params-panel {
    font-size: 28px;
}

.mobile-view .params-grid {
    font-size: 26px;
}

.mobile-view .power-panel .panel-row {
    font-size: 20px;
}

.mobile-view .power-action-btn {
    font-size: 20px;
    padding: 10px 24px;
}

.mobile-view .btn-small {
    font-size: 18px;
    padding: 4px 12px;
}

/* 强制包含info-card的容器变成2列 */
.mobile-view div:has(> .info-card) {
    grid-template-columns: 1fr 1fr !important;
    gap: 10px !important;
}

.mobile-view .info-card {
    min-width: 0 !important;
}
