/**
 * Huytech Power Lab — page styles (extracted from huyin_power_lab.html)
 */
        :root {
            --bg-color: #0a0a0a;
            --panel-bg: #141414;
            --border-color: #2e2e2e;
            --text-color: #f5f5f5;
            --primary-color: #f0f0f0;
            --light-color: #f59e0b;
            --motor-color: #9ca3af;
            --producer-color: #facc15;
            --danger-color: #ef4444;
            --warning-color: #f97316;
            --success-color: #22c55e;
            --card-active: #242424;
            --font-mono: 'Fira Code', 'Courier New', monospace;
            --lab-pad-bottom: max(72px, calc(env(safe-area-inset-bottom, 0px) + 48px));
            --lab-content-max: 100%;
        }

        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
            font-family: system-ui, -apple-system, sans-serif;
        }

        html {
            height: 100%;
        }

        body {
            background:
                radial-gradient(ellipse at 20% 0%, rgba(255, 255, 255, 0.04), transparent 45%),
                radial-gradient(ellipse at 80% 100%, rgba(120, 120, 120, 0.06), transparent 40%),
                var(--bg-color);
            color: var(--text-color);
            padding: calc(70px + env(safe-area-inset-top, 0px) + 8px) 15px var(--lab-pad-bottom);
            display: flex;
            flex-direction: column;
            align-items: center;
            width: 100%;
            height: 100%;
            min-height: 100vh;
            min-height: 100dvh;
            overflow: hidden; /* 横屏双栏：由 .viz-main 吃满剩余高度 */
        }

        /* app-client.css 会把 padding-bottom 收成 0，四模式贴死视口底边 */
        html.app-client body,
        html.app-client body:not(.app-launcher-page),
        html.in-huytech-app body {
            padding-bottom: 72px !important;
            display: flex !important;
            flex-direction: column;
            align-items: center;
            width: 100%;
        }

        @media (min-width: 1100px) {
            :root {
                --lab-content-max: min(1680px, 100%);
            }
        }

        @media (min-width: 1600px) {
            :root {
                --lab-content-max: min(1840px, 100%);
            }

            .viz-main {
                grid-template-columns: minmax(0, 1fr) 400px;
                gap: 16px;
            }
        }

        /* 深色页顶栏：与其它工具页同结构，配色适配黑底 */
        .navbar {
            padding-top: env(safe-area-inset-top, 0px);
            background: linear-gradient(180deg, rgba(0,0,0,0.72) 0%, rgba(0,0,0,0.28) 70%, transparent 100%) !important;
        }

        .navbar .logo-text {
            color: #ffffff !important;
            text-shadow: 0 1px 4px rgba(0, 0, 0, 0.45);
            font-size: 1.15rem !important;
        }

        .navbar .nav-link {
            color: rgba(255, 255, 255, 0.88) !important;
        }

        .navbar .nav-link:hover,
        .navbar .nav-link.active,
        .navbar .nav-link.app-nav-active {
            color: #93c5fd !important;
        }

        .navbar .mobile-menu-toggle span {
            background-color: #ffffff !important;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
        }

        .navbar .mobile-menu-toggle.active span {
            background-color: #ff3b30 !important;
            box-shadow: none;
        }

        .navbar .mobile-menu:not(.ht-drawer-shell) {
            left: auto !important;
            right: max(1.25rem, env(safe-area-inset-right, 0px)) !important;
            width: auto !important;
            min-width: 10.5rem;
            max-width: min(16rem, calc(100vw - 2.5rem));
            margin-top: 0.35rem;
            padding: 0.35rem 0;
            background: rgba(10, 14, 24, 0.94) !important;
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
            border: 1px solid rgba(255, 255, 255, 0.08);
            box-shadow: 0 12px 32px rgba(0, 0, 0, 0.45);
            border-radius: 12px;
            overflow: hidden;
        }

        .navbar .mobile-menu.ht-drawer-shell {
            left: auto !important;
            right: max(0.75rem, env(safe-area-inset-right, 0px)) !important;
            width: auto !important;
            min-width: 0;
            max-width: none;
            margin-top: 0.45rem;
            padding: 0;
            background: transparent !important;
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
            border: none !important;
            box-shadow: none !important;
            border-radius: 0;
            overflow: visible;
        }

        .navbar .mobile-nav-link:not(.ht-drawer-item) {
            color: rgba(255, 255, 255, 0.9) !important;
            padding: 0.72rem 1.15rem !important;
            font-size: 15px;
        }

        .navbar .mobile-nav-link:not(.ht-drawer-item):hover,
        .navbar .mobile-nav-link:not(.ht-drawer-item).active,
        .navbar .mobile-nav-link:not(.ht-drawer-item).app-nav-active {
            color: #93c5fd !important;
            background: rgba(37, 99, 235, 0.14) !important;
        }

        @media (max-width: 1024px) {
            .navbar {
                padding-left: 16px;
                padding-right: 16px;
                justify-content: flex-end !important;
            }

            .navbar .nav-menu {
                display: none !important;
            }

            .navbar .mobile-menu-toggle {
                display: flex !important;
                z-index: 1001;
                margin-left: auto;
            }

            .navbar .mobile-menu.active {
                display: block !important;
            }
        }

        @media (min-width: 1025px) {
            html:not(.app-client):not(.in-huytech-app) .navbar .mobile-menu-toggle,
            html:not(.app-client):not(.in-huytech-app) .navbar .mobile-menu {
                display: none !important;
            }
        }

        header {
            position: relative;
            flex: 0 0 auto;
            margin-bottom: 22px;
            padding-bottom: 4px;
            text-align: center;
            width: 100%;
            max-width: var(--lab-content-max);
            margin-left: auto;
            margin-right: auto;
        }

        header h1 {
            font-size: 24px;
            color: #fff;
            letter-spacing: 0.04em;
            font-weight: 700;
            text-shadow: 0 0 10px rgba(200, 200, 200, 0.18);
        }

        header p {
            color: #a3a3a3;
            font-size: 12px;
            margin-top: 8px;
            letter-spacing: 0.02em;
        }

        html.in-huytech-app header h1,
        html.app-client header h1 {
            font-size: 22px;
            letter-spacing: 0.06em;
        }

        /* 模式切换：对齐电能分析 pq-action-btn 风格 */
        .mode-tabs {
            flex: 0 0 auto;
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            align-items: center;
            gap: 12px;
            margin-top: 4px;
            margin-bottom: 8px;
            width: 100%;
            max-width: var(--lab-content-max);
            margin-left: auto;
            margin-right: auto;
        }
        /* 四模式入口移入顶栏「功能」菜单，正文大按钮隐藏但保留 DOM 供 switchMode 复用 */
        .mode-tabs {
            display: none;
        }

        /* 项目存档：Logo … [项目▾] [汉堡] —— 汉堡永远在最右 */
        .navbar {
            gap: 8px;
            overflow: visible !important;
        }
        .navbar .lab-project-bar {
            position: relative;
            z-index: 1002;
            display: flex;
            flex: 0 0 auto;
            align-items: center;
            justify-content: flex-end;
            margin-left: auto; /* 把项目+汉堡整体推到右侧 */
            min-width: 0;
            overflow: visible;
        }
        .lab-project-menu {
            position: relative;
        }
        .lab-feature-menu {
            position: relative;
            margin-left: 8px;
        }
        .lab-project-trigger {
            appearance: none;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            height: 34px;
            padding: 0 12px;
            border: 1px solid rgba(255, 255, 255, 0.12);
            border-radius: 8px;
            background: rgba(255, 255, 255, 0.04);
            color: rgba(255, 255, 255, 0.92);
            font-size: 13px;
            font-weight: 600;
            letter-spacing: 0.04em;
            cursor: pointer;
            touch-action: manipulation;
            transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
        }
        .lab-project-trigger:hover,
        .lab-project-menu.is-open .lab-project-trigger {
            background: rgba(255, 255, 255, 0.09);
            border-color: rgba(212, 165, 116, 0.45);
            color: #fff;
        }
        .lab-project-chevron {
            width: 10px;
            height: 10px;
            opacity: 0.7;
            transition: transform 0.15s ease;
        }
        .lab-project-menu.is-open .lab-project-chevron {
            transform: rotate(180deg);
            opacity: 1;
        }
        .lab-feature-menu.is-open .lab-project-chevron {
            transform: rotate(180deg);
            opacity: 1;
        }
        .lab-project-dropdown {
            position: absolute;
            top: calc(100% + 8px);
            right: 0;
            min-width: 188px;
            padding: 6px;
            border-radius: 10px;
            border: 1px solid rgba(255, 255, 255, 0.1);
            background: rgba(14, 14, 16, 0.96);
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
            box-shadow: 0 16px 40px rgba(0, 0, 0, 0.55);
            z-index: 2000;
        }
        .lab-project-dropdown[hidden] {
            display: none !important;
        }
        .lab-project-item {
            appearance: none;
            display: flex;
            align-items: center;
            width: 100%;
            box-sizing: border-box;
            margin: 0;
            padding: 9px 12px;
            border: none;
            border-radius: 7px;
            background: transparent;
            color: rgba(245, 245, 245, 0.92);
            font-size: 13px;
            font-weight: 500;
            line-height: 1.2;
            text-align: left;
            text-decoration: none;
            cursor: pointer;
            touch-action: manipulation;
        }
        .lab-project-item:hover,
        .lab-project-item:focus-visible {
            background: rgba(255, 255, 255, 0.08);
            color: #fff;
            outline: none;
        }
        .lab-feature-item.is-active,
        .lab-feature-item[aria-current="true"] {
            background: rgba(212, 165, 116, 0.16);
            color: #fff;
            border: 1px solid rgba(212, 165, 116, 0.28);
        }
        .lab-project-sep {
            height: 1px;
            margin: 5px 8px;
            background: rgba(255, 255, 255, 0.08);
        }

        /* App 壳：Logo(+打印机) | 空白 | 项目 | 汉堡(最右) */
        html.app-client body:not(.app-launcher-page) .navbar,
        html.in-huytech-app .navbar {
            display: flex !important;
            align-items: center !important;
            justify-content: flex-start !important;
            gap: 8px !important;
            overflow: visible !important;
        }
        html.app-client:not(.lab-ide) body:not(.app-launcher-page) .navbar .logo-container,
        html.in-huytech-app body:not(.app-launcher-page) .navbar .logo-container {
            position: relative !important;
            left: auto !important;
            right: auto !important;
            top: auto !important;
            height: auto !important;
            flex: 0 0 auto !important;
            margin: 0 !important;
            z-index: 1003 !important;
            display: flex !important;
            align-items: center !important;
            gap: 16px !important;
        }
        html.app-client:not(.lab-ide) body:not(.app-launcher-page) .navbar .logo-link,
        html.in-huytech-app body:not(.app-launcher-page) .navbar .logo-link {
            position: relative;
            z-index: 2;
            flex: 0 0 auto;
        }
        html.app-client body:not(.app-launcher-page) .navbar .lab-project-bar,
        html.in-huytech-app .navbar .lab-project-bar {
            flex: 0 0 auto !important;
            margin-left: auto !important;
            order: 0 !important;
        }
        html.app-client body:not(.app-launcher-page) .navbar .mobile-menu-toggle,
        html.in-huytech-app .navbar .mobile-menu-toggle {
            display: flex !important;
            flex: 0 0 auto !important;
            margin-left: 0 !important; /* 紧挨项目右侧，不要再 auto 抢左边 */
            order: 0 !important;
        }

        @media (min-width: 1025px) {
            .navbar .nav-menu {
                flex: 0 0 auto;
                margin-left: 12px;
            }
            /* 宽屏网页用主导航；App 壳仍由 app-client 的 display:flex !important 显示汉堡 */
            html:not(.app-client):not(.in-huytech-app) .navbar .mobile-menu-toggle {
                display: none;
            }
            html:not(.app-client):not(.in-huytech-app) .navbar .mobile-menu {
                display: none !important;
            }
        }

        /* 窄屏：顶栏不溢出，汉堡始终在最右且不被裁切 */
        @media (max-width: 860px) {
            html.app-client body:not(.app-launcher-page) .navbar,
            html.in-huytech-app .navbar,
            .navbar {
                padding-left: max(8px, env(safe-area-inset-left, 0px)) !important;
                padding-right: max(14px, env(safe-area-inset-right, 0px)) !important;
                gap: 4px !important;
                box-sizing: border-box;
                width: 100%;
                max-width: 100vw;
            }
            html.app-client:not(.lab-ide) body:not(.app-launcher-page) .navbar .logo-container,
            html.in-huytech-app body:not(.app-launcher-page) .navbar .logo-container,
            .navbar .logo-container {
                gap: 6px !important;
                min-width: 0;
                flex: 0 1 auto !important;
            }
            html.app-client:not(.lab-ide) body:not(.app-launcher-page) .navbar .logo-text,
            html.in-huytech-app .navbar .logo-text,
            .navbar .logo-text {
                display: none !important;
            }
            html.app-client body:not(.app-launcher-page) .navbar .lab-project-bar,
            html.in-huytech-app .navbar .lab-project-bar,
            .navbar .lab-project-bar {
                flex: 1 1 auto !important;
                min-width: 0;
                gap: 4px;
                overflow: visible;
            }
            .lab-feature-menu {
                margin-left: 4px;
            }
            .lab-project-trigger {
                height: 30px;
                padding: 0 8px;
                font-size: 12px;
                gap: 4px;
            }
            .lab-feature-prefix {
                display: none;
            }
            html.app-client body:not(.app-launcher-page) .navbar .mobile-menu-toggle,
            html.in-huytech-app .navbar .mobile-menu-toggle,
            .navbar .mobile-menu-toggle {
                display: flex !important;
                flex: 0 0 auto !important;
                flex-shrink: 0 !important;
                width: 36px;
                min-width: 36px;
                margin-left: 2px !important;
                margin-right: 0 !important;
                padding: 6px 4px;
                box-sizing: border-box;
                z-index: 1005;
            }
        }

        @media (max-width: 480px) {
            .lab-project-trigger-label {
                max-width: 4.2em;
                overflow: hidden;
                text-overflow: ellipsis;
                white-space: nowrap;
            }
            html.app-client .lab-receipt-slot .lab-printer-wrap,
            html.in-huytech-app .lab-receipt-slot .lab-printer-wrap,
            .lab-receipt-slot .lab-printer-wrap {
                width: 64px;
            }
        }

        /* App / from=app：宽屏也必须能打开汉堡菜单（覆盖上面的 display:none !important） */
        html.app-client .navbar .mobile-menu,
        html.in-huytech-app .navbar .mobile-menu {
            display: none;
        }
        html.app-client .navbar .mobile-menu.active,
        html.in-huytech-app .navbar .mobile-menu.active {
            display: block !important;
        }

        /* 打印机跟在品牌右侧，不再占中间弹性带 */
        html.app-client .lab-receipt-slot,
        html.in-huytech-app .lab-receipt-slot {
            flex: 0 0 auto;
            width: auto;
            max-width: none;
            min-height: 36px;
            padding-top: 0;
            padding-bottom: 0;
            margin: 0;
            justify-content: flex-start;
        }
        html.app-client .lab-receipt-slot .lab-printer-wrap,
        html.in-huytech-app .lab-receipt-slot .lab-printer-wrap {
            width: min(108px, 26vw);
            height: 28px;
            margin-top: 0;
        }
        html.app-client .lab-printer-display .lab-printer-message,
        html.in-huytech-app .lab-printer-display .lab-printer-message {
            font-size: 10px;
        }
        html.app-client header,
        html.in-huytech-app header {
            margin-top: 6px;
            margin-bottom: 12px;
        }
        html.app-client header h1,
        html.in-huytech-app header h1 {
            font-size: 1.15rem;
            letter-spacing: 0.04em;
        }

        /* 四模式共用实时工况条：沙盒 / 计算器 / 设计 / 智能体同源 */
        .lab-sync-strip {
            flex: 0 0 auto;
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 8px 14px;
            width: 100%;
            max-width: var(--lab-content-max);
            margin: 0 auto 14px;
            padding: 10px 14px;
            border-radius: 10px;
            border: 1px solid rgba(200, 170, 120, 0.28);
            background: linear-gradient(180deg, rgba(36, 32, 26, 0.95) 0%, rgba(18, 16, 14, 0.98) 100%);
            font-size: 12px;
            line-height: 1.35;
            color: #c8c4bc;
        }

        .lab-sync-strip .lab-sync-badge {
            flex: 0 0 auto;
            padding: 2px 8px;
            border-radius: 4px;
            border: 1px solid rgba(200, 170, 120, 0.45);
            background: rgba(200, 170, 120, 0.12);
            color: #e8c49a;
            font-weight: 700;
            font-size: 11px;
            letter-spacing: 0.04em;
        }

        .lab-sync-strip .lab-sync-item {
            white-space: nowrap;
        }

        .lab-sync-strip .lab-sync-item b {
            color: #f0ebe3;
            font-weight: 650;
            font-family: var(--font-mono, ui-monospace, monospace);
        }

        .lab-sync-strip .lab-sync-item.is-warn b { color: #e8b86d; }
        .lab-sync-strip .lab-sync-item.is-ok b { color: #9cb89c; }
        .lab-sync-strip .lab-sync-item.is-bad b { color: #d4a09a; }
        .lab-sync-strip .lab-sync-grow { flex: 1 1 auto; min-width: 0; }

        .mode-tab {
            box-sizing: border-box;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            width: 100%;
            min-height: 44px;
            padding: 10px 12px;
            border-radius: 12px;
            border: 1px solid #3a3a3a;
            background: linear-gradient(180deg, #2a2a2a 0%, #151515 100%);
            color: #d4d4d4;
            font-family: "PingFang SC", "Hiragino Sans GB", "Segoe UI", system-ui, sans-serif;
            font-size: 14px;
            font-weight: 600;
            line-height: 1.25;
            letter-spacing: 0.02em;
            cursor: pointer;
            transform: scale(0.96);
            transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, font-size 0.2s ease, min-height 0.2s ease, color 0.2s ease;
        }

        .mode-tab .mode-tab-icon {
            width: 18px;
            height: 18px;
            flex: 0 0 auto;
            opacity: 0.92;
        }

        .mode-tab .mode-tab-icon svg {
            display: block;
            width: 100%;
            height: 100%;
            fill: none;
            stroke: currentColor;
            stroke-width: 1.75;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        .mode-tab:hover:not(.active) {
            transform: scale(0.98) translateY(-1px);
            border-color: #6b6b6b;
            color: #f5f5f5;
        }

        .mode-tab--sandbox {
            border-color: #4a90e2;
            box-shadow: 0 0 0 1px rgba(74, 144, 226, 0.18);
        }

        .mode-tab--sandbox:hover,
        .mode-tab--sandbox.active {
            border-color: #6aa8f0;
            background: linear-gradient(180deg, #333 0%, #1a1a1a 100%);
            box-shadow: 0 0 0 1px rgba(74, 144, 226, 0.35);
            color: #e8f1fc;
        }

        .mode-tab--calc {
            border-color: #e8a23a;
            box-shadow: 0 0 0 1px rgba(232, 162, 58, 0.18);
        }

        .mode-tab--calc:hover,
        .mode-tab--calc.active {
            border-color: #f0b85a;
            background: linear-gradient(180deg, #333 0%, #1a1a1a 100%);
            box-shadow: 0 0 0 1px rgba(232, 162, 58, 0.35);
            color: #fff6e8;
        }

        .mode-tab--design {
            border-color: #5a8f7b;
            box-shadow: 0 0 0 1px rgba(90, 143, 123, 0.18);
        }

        .mode-tab--design:hover,
        .mode-tab--design.active {
            border-color: #7ab89a;
            background: linear-gradient(180deg, #333 0%, #1a1a1a 100%);
            box-shadow: 0 0 0 1px rgba(90, 143, 123, 0.35);
            color: #e8f5ef;
        }

        .mode-tab--agent {
            border-color: #404040;
            background: #141414;
            box-shadow: none;
        }

        .mode-tab--agent:hover,
        .mode-tab--agent.active {
            border-color: #d4a574;
            background: linear-gradient(180deg, #2a2a2a 0%, #151515 100%);
            box-shadow: 0 0 0 1px rgba(212, 165, 116, 0.28);
            color: #f2f0eb;
        }

        /* 设计模式：全幅网格 + 画布内浮动 HUD（无右侧栏） */
        #modeDesign.active {
            overflow: hidden;
            min-height: 0;
            flex: 1 1 auto;
        }

        #modeDesign .viz-main {
            grid-template-columns: 1fr;
            gap: 0;
        }

        #modeDesign .canvas-area {
            height: 100%;
            min-height: 0;
        }

        #designCanvas {
            display: block;
            width: 100%;
            height: 100%;
            cursor: grab;
            outline: none;
            touch-action: none;
        }

        #designCanvas:active {
            cursor: grabbing;
        }

        /* 设计工具坞：左上角汉堡菜单，生成/工况/对话收在一起 */
        .design-tool-dock {
            position: absolute;
            top: 12px;
            left: 12px;
            z-index: 6;
            width: min(320px, calc(100% - 24px));
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            gap: 8px;
            pointer-events: none;
        }

        .design-tool-dock > * {
            pointer-events: auto;
        }

        .design-tool-burger {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            background: rgba(28, 28, 28, 0.94);
            border: 1px solid rgba(255, 255, 255, 0.18);
            color: #e8e8e8;
            font-size: 12px;
            font-weight: bold;
            padding: 8px 12px;
            border-radius: 8px;
            cursor: pointer;
            backdrop-filter: blur(10px);
            box-shadow: 0 4px 18px rgba(0, 0, 0, 0.4);
            font-family: var(--font-mono);
        }

        .design-tool-burger:hover,
        .design-tool-dock.is-open .design-tool-burger {
            border-color: rgba(255, 255, 255, 0.32);
            background: rgba(40, 40, 40, 0.96);
            color: #fff;
        }

        .design-tool-burger .burger-ico {
            width: 16px;
            height: 14px;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
        }

        .design-tool-burger .burger-ico span {
            display: block;
            height: 2px;
            border-radius: 1px;
            background: currentColor;
        }

        .design-tool-menu {
            display: none;
            width: 100%;
            grid-template-columns: repeat(3, 1fr);
            gap: 6px;
            padding: 6px;
            background: rgba(12, 12, 12, 0.92);
            border: 1px solid rgba(90, 143, 123, 0.35);
            border-radius: 10px;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
            backdrop-filter: blur(10px);
        }

        .design-tool-dock.is-open .design-tool-menu {
            display: grid;
        }

        .design-tool-tab {
            border: 1px solid #333;
            background: #161616;
            color: #c8c8c8;
            font-size: 12px;
            font-weight: bold;
            padding: 8px 6px;
            border-radius: 7px;
            cursor: pointer;
        }

        .design-tool-tab:hover {
            border-color: #555;
            color: #fff;
        }

        .design-tool-tab.active {
            border-color: rgba(90, 143, 123, 0.7);
            background: rgba(90, 143, 123, 0.18);
            color: #e8f5ef;
        }

        .design-tool-panels {
            display: none;
            width: 100%;
            max-height: min(52vh, 420px);
            overflow: auto;
            background: rgba(14, 14, 14, 0.92);
            border: 1px solid rgba(90, 143, 123, 0.35);
            border-radius: 10px;
            padding: 10px;
            box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45);
            backdrop-filter: blur(10px);
        }

        .design-tool-dock.is-open .design-tool-panels {
            display: block;
        }

        .design-tool-panels:has(.design-hud-panel[data-panel="gen"].is-active) {
            overflow: visible;
        }

        .design-hud-panel {
            display: none;
        }

        .design-hud-panel.is-active {
            display: block;
        }

        .design-hud-panel[data-panel="gen"].is-active {
            overflow: visible;
        }

        #modeDesign .design-prompt-box textarea,
        #modeDesign .design-fault-input {
            min-height: 56px;
            max-height: 120px;
            background: rgba(8, 8, 8, 0.92);
        }

        #modeDesign .design-main-actions {
            grid-template-columns: 1fr;
            gap: 6px;
            margin-top: 8px;
        }

        #modeDesign .panel-section {
            background: transparent;
            border: none;
            border-radius: 0;
            padding: 0;
        }

        #modeDesign .design-cost-box {
            background: rgba(10, 10, 10, 0.55);
        }

        #modeDesign .stats-grid {
            gap: 6px;
        }

        #modeDesign .stat-card {
            padding: 8px;
            background: rgba(18, 18, 18, 0.7);
        }

        .design-prompt-actions {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            margin-top: 8px;
        }

        .design-prompt-actions .btn-action {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            flex: 1 1 auto;
            min-width: 0;
            padding: 8px 10px;
            font-size: 12px;
            font-weight: bold;
            text-align: center;
        }

        .design-prompt-actions .btn-action .btn-ico {
            width: 14px;
            height: 14px;
            flex: 0 0 auto;
            display: block;
            opacity: 0.92;
        }

        .design-prompt-actions .btn-action .btn-ico svg {
            display: block;
            width: 100%;
            height: 100%;
            fill: none;
            stroke: currentColor;
            stroke-width: 2;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        .design-prompt-actions .btn-action:disabled {
            opacity: 0.45;
            cursor: not-allowed;
        }

        .design-prompt-box textarea,
        .design-fault-input {
            width: 100%;
            min-height: 88px;
            box-sizing: border-box;
            resize: vertical;
            background: #0c0c0c;
            border: 1px solid #3a3a3a;
            border-radius: 8px;
            color: #f0f0f0;
            padding: 10px;
            font-size: 13px;
            line-height: 1.45;
            font-family: inherit;
        }

        .design-prompt-box textarea:focus,
        .design-fault-input:focus {
            outline: none;
            border-color: var(--primary-color);
        }

        .design-fault-input {
            min-height: 72px;
            margin-top: 0;
        }

        .design-scene-hint {
            margin: 0 0 8px;
            font-size: 11px;
            line-height: 1.45;
            color: #8a8a8a;
        }

        .design-title-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            margin-bottom: 10px;
        }

        .design-title-row .section-title {
            margin: 0;
            flex: 1 1 auto;
            min-width: 0;
        }

        .design-title-row .design-burger-wrap {
            flex: 0 0 auto;
        }

        .design-action-split {
            display: flex;
            align-items: stretch;
            min-width: 0;
            border-radius: 6px;
            overflow: hidden;
            border: 1px solid #3a3a3a;
        }

        .design-action-split .btn-action {
            flex: 1 1 50%;
            min-width: 0;
            border: none;
            border-radius: 0;
            margin: 0;
        }

        .design-action-split .btn-action + .btn-action {
            border-left: 1px solid #3a3a3a;
        }

        .design-action-split .btn-action.design-gen-btn {
            background: rgba(90, 143, 123, 0.22);
            border-color: rgba(90, 143, 123, 0.45);
            color: #e8f5ef;
        }

        .design-action-split .btn-action.design-gen-btn:hover {
            background: rgba(90, 143, 123, 0.32);
        }

        #modeDesign .design-main-actions {
            grid-template-columns: 1fr;
            gap: 6px;
            margin-top: 8px;
        }

        .design-main-actions {
            display: grid;
            grid-template-columns: 1fr;
            gap: 8px;
            margin-top: 10px;
            align-items: stretch;
        }

        .design-main-actions .btn-action {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            min-height: 36px;
            font-size: 12px;
            font-weight: bold;
            padding: 8px 6px;
            white-space: nowrap;
        }

        .design-main-actions .btn-action .btn-ico {
            width: 14px;
            height: 14px;
            flex: 0 0 auto;
            display: block;
            opacity: 0.92;
        }

        .design-main-actions .btn-action .btn-ico svg {
            display: block;
            width: 100%;
            height: 100%;
            fill: none;
            stroke: currentColor;
            stroke-width: 2;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        .design-main-actions .btn-action:disabled {
            opacity: 0.45;
            cursor: not-allowed;
        }

        .design-gen-split {
            position: relative;
            display: flex;
            align-items: stretch;
            min-width: 0;
        }

        .design-gen-split > .btn-action.design-gen-main {
            flex: 1 1 auto;
            min-width: 0;
            border-top-right-radius: 0;
            border-bottom-right-radius: 0;
            border-right: none;
        }

        .design-gen-split .design-burger-btn {
            width: 32px;
            min-height: 36px;
            flex: 0 0 auto;
            border-top-left-radius: 0;
            border-bottom-left-radius: 0;
            border-radius: 0 6px 6px 0;
        }

        .design-burger-wrap {
            position: relative;
            flex: 0 0 auto;
            display: flex;
        }

        .design-burger-btn {
            width: 36px;
            height: 36px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            background: #0c0c0c;
            border: 1px solid var(--border-color);
            color: var(--primary-color);
            border-radius: 6px;
            cursor: pointer;
            padding: 0;
        }

        .design-burger-btn:hover {
            border-color: var(--primary-color);
            color: #fff;
        }

        .design-burger-btn .btn-ico {
            width: 14px;
            height: 14px;
            display: block;
        }

        .design-burger-btn .btn-ico svg {
            display: block;
            width: 100%;
            height: 100%;
            fill: none;
            stroke: currentColor;
            stroke-width: 2;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        .design-burger-menu {
            display: none;
            position: absolute;
            right: 0;
            top: calc(100% + 6px);
            min-width: 168px;
            background: #121212;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.55);
            padding: 6px;
            z-index: 30;
        }

        .design-burger-menu.open {
            display: block;
        }

        .design-burger-menu button {
            width: 100%;
            display: flex;
            align-items: center;
            gap: 8px;
            background: transparent;
            border: 1px solid transparent;
            color: #e8e8e8;
            border-radius: 6px;
            padding: 8px 10px;
            font-size: 12px;
            font-weight: bold;
            cursor: pointer;
            text-align: left;
            font-family: inherit;
        }

        .design-burger-menu button:hover:not(:disabled) {
            border-color: var(--primary-color);
            background: rgba(200, 200, 200, 0.06);
            color: #fff;
        }

        .design-burger-menu button.active {
            border-color: var(--primary-color);
            background: rgba(200, 200, 200, 0.08);
            color: var(--primary-color);
        }

        .design-burger-menu button:disabled {
            opacity: 0.4;
            cursor: not-allowed;
        }

        .design-burger-menu .btn-ico {
            width: 14px;
            height: 14px;
            flex: 0 0 auto;
        }

        .design-burger-menu .btn-ico svg {
            display: block;
            width: 100%;
            height: 100%;
            fill: none;
            stroke: currentColor;
            stroke-width: 2;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        .design-modal-mask {
            display: none;
            position: fixed;
            inset: 0;
            z-index: 1200;
            background: rgba(0, 0, 0, 0.62);
            align-items: center;
            justify-content: center;
            padding: 20px;
            box-sizing: border-box;
        }

        .design-modal-mask.open {
            display: flex;
        }

        .design-modal {
            width: min(440px, 100%);
            max-height: min(84vh, 640px);
            overflow: auto;
            background: #121212;
            border: 1px solid var(--border-color);
            border-radius: 12px;
            box-shadow: 0 16px 40px rgba(0, 0, 0, 0.55);
            padding: 16px 18px 14px;
        }

        .design-modal h3 {
            margin: 0 0 12px;
            font-size: 15px;
            color: #f5f5f5;
            font-weight: 700;
        }

        .design-modal .design-help-body {
            font-size: 13px;
            line-height: 1.65;
            color: #d4d4d4;
        }

        .design-modal .design-help-body ol {
            margin: 0;
            padding-left: 1.2em;
        }

        .design-modal .design-help-body li {
            margin-bottom: 10px;
        }

        .design-modal .design-help-body b {
            color: #f5f5f5;
            font-weight: 650;
        }

        .design-modal-field {
            margin-bottom: 12px;
        }

        .design-modal-field label {
            display: block;
            font-size: 11px;
            color: #a3a3a3;
            margin-bottom: 5px;
        }

        .design-modal-field input,
        .design-modal-field select {
            width: 100%;
            box-sizing: border-box;
            background: #0c0c0c;
            border: 1px solid #3a3a3a;
            border-radius: 6px;
            color: #eee;
            padding: 8px 10px;
            font-size: 13px;
            font-family: inherit;
        }

        .design-modal-field input:focus,
        .design-modal-field select:focus {
            outline: none;
            border-color: var(--primary-color);
        }

        .design-modal-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 10px;
        }

        .design-modal-actions {
            display: flex;
            gap: 8px;
            margin-top: 14px;
        }

        .design-modal-actions .btn-action {
            flex: 1;
        }

        .mode-tab.active {
            font-weight: 750;
            font-size: 17px;
            min-height: 56px;
            padding: 14px 16px;
            transform: scale(1.06);
            z-index: 1;
            color: #ffffff;
        }

        .mode-tab.active .mode-tab-icon {
            width: 20px;
            height: 20px;
            opacity: 1;
        }

        /* ========== 智能体：左仪表盘 + 右对话 ========== */
        #modeAgent.active {
            overflow: hidden;
            min-height: 0;
            flex: 1 1 auto;
            display: flex;
            flex-direction: column;
        }

        .agent-shell {
            display: grid;
            grid-template-columns: minmax(300px, 380px) minmax(0, 1fr);
            gap: 14px;
            width: 100%;
            height: 100%;
            min-height: 0;
            max-height: none;
            background: rgba(18, 18, 18, 0.92);
            border: 1px solid #2e2e2e;
            border-radius: 10px;
            padding: 14px;
            box-sizing: border-box;
        }

        .agent-data-panel {
            display: flex;
            flex-direction: column;
            gap: 10px;
            min-height: 0;
            background: #0f0f0f;
            border: 1px solid #262626;
            border-radius: 8px;
            padding: 12px;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
        }

        .panel-header-mini {
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: 8px;
            font-size: 11px;
            font-weight: 700;
            color: #a3a3a3;
            letter-spacing: 0.06em;
            text-transform: uppercase;
            border-bottom: 1px solid #262626;
            padding-bottom: 6px;
            margin-bottom: 2px;
        }

        .panel-header-mini span:last-child {
            text-transform: none;
            letter-spacing: 0.02em;
            font-weight: 600;
            color: #d4a574;
        }

        .agent-metrics-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }

        .agent-metric-tile {
            background: #141414;
            border: 1px solid #2e2e2e;
            border-radius: 6px;
            padding: 8px 10px;
            min-width: 0;
        }

        .agent-metric-tile.full-width {
            grid-column: 1 / -1;
        }

        .agent-metric-tile.tile-accent {
            background: rgba(212, 165, 116, 0.08);
            border-color: rgba(212, 165, 116, 0.32);
        }

        .agent-metric-tile .tile-label {
            font-size: 11px;
            color: #8a8a8a;
            margin-bottom: 3px;
            line-height: 1.3;
        }

        .agent-metric-tile .tile-value {
            font-family: var(--font-mono);
            font-size: 15px;
            font-weight: 700;
            color: #f5f5f5;
            line-height: 1.25;
            word-break: break-word;
        }

        .agent-metric-tile .tile-value.is-amber { color: #e8c49a; }
        .agent-metric-tile .tile-value.is-ok { color: #b7c9b7; }
        .agent-metric-tile .tile-value.is-warn { color: #d4a574; }
        .agent-metric-tile .tile-value.is-bad { color: #c4a09a; }
        .agent-metric-tile .tile-value.is-net { color: #dcc4a4; font-size: 17px; }

        .agent-device-status-list {
            display: flex;
            flex-direction: column;
            gap: 4px;
            font-family: var(--font-mono);
            font-size: 11px;
            color: #d4d4d4;
            max-height: 200px;
            overflow-y: auto;
            padding-right: 2px;
            -webkit-overflow-scrolling: touch;
        }

        .agent-device-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: 8px;
            background: rgba(255, 255, 255, 0.025);
            padding: 5px 7px;
            border-radius: 4px;
            border-left: 2px solid #525252;
        }

        .agent-device-item.on { border-left-color: #7a947a; }
        .agent-device-item.off { border-left-color: #a86a62; }

        .agent-device-item .dev-name {
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .agent-device-item .dev-pwr {
            flex: 0 0 auto;
            font-weight: 700;
            color: #f0f0f0;
        }

        .agent-device-empty {
            color: #737373;
            text-align: center;
            padding: 12px 0;
            font-size: 12px;
        }

        .agent-chat-panel {
            display: flex;
            flex-direction: column;
            gap: 10px;
            height: 100%;
            min-height: 0;
            min-width: 0;
        }

        .agent-messages,
        .agent-messages-container {
            flex: 1 1 auto;
            min-height: 0;
            overflow-y: auto;
            display: flex;
            flex-direction: column;
            gap: 10px;
            padding: 12px;
            background: #0c0c0c;
            border: 1px solid #262626;
            border-radius: 8px;
            -webkit-overflow-scrolling: touch;
        }

        .agent-msg {
            max-width: min(94%, 780px);
            padding: 10px 12px;
            border-radius: 10px;
            font-size: 14px;
            line-height: 1.55;
            white-space: pre-wrap;
            word-break: break-word;
        }

        .agent-msg.user {
            align-self: flex-end;
            background: rgba(212, 165, 116, 0.16);
            border: 1px solid rgba(212, 165, 116, 0.35);
            color: #fff;
        }

        .agent-msg.assistant {
            align-self: flex-start;
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.1);
            color: #f5f5f5;
        }

        .agent-msg.assistant.streaming::after {
            content: "|";
            animation: agent-blink 1s step-end infinite;
            color: var(--light-color);
        }

        @keyframes agent-blink {
            50% { opacity: 0; }
        }

        .agent-chips {
            flex: 0 0 auto;
            overflow: hidden;
            /* 预留悬停描边空间，避免盖住上方消息区底边灯光 */
            padding-top: 6px;
            padding-bottom: 2px;
            mask-image: linear-gradient(90deg, transparent 0%, #000 4%, #000 96%, transparent 100%);
            -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 4%, #000 96%, transparent 100%);
        }

        .agent-chips-track {
            display: flex;
            width: max-content;
            gap: 0;
            animation: agent-chips-marquee 42s linear infinite;
            will-change: transform;
        }

        .agent-chips:hover .agent-chips-track,
        .agent-chips:focus-within .agent-chips-track {
            animation-play-state: paused;
        }

        .agent-chips-group {
            display: flex;
            flex-wrap: nowrap;
            gap: 8px;
            flex-shrink: 0;
            padding-right: 8px;
        }

        @keyframes agent-chips-marquee {
            from { transform: translateX(0); }
            to { transform: translateX(-50%); }
        }

        .agent-chip {
            flex: 0 0 auto;
            white-space: nowrap;
            border: 1px solid #404040;
            background: #141414;
            color: #f5f5f5;
            border-radius: 10px;
            padding: 8px 12px;
            font-size: 12px;
            font-weight: 600;
            cursor: pointer;
            transform-origin: center bottom;
            transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.15s ease, transform 0.15s ease;
        }

        .agent-chip:hover {
            /* 向下微放大，不上移，避免遮挡上方灯光 */
            transform: scale(1.03);
            border-color: #d4a574;
            background: linear-gradient(180deg, #2a2a2a 0%, #151515 100%);
            color: #fff;
            box-shadow: 0 2px 8px rgba(212, 165, 116, 0.18);
        }

        @media (prefers-reduced-motion: reduce) {
            .agent-chips-track {
                animation: none;
            }
        }

        html.app-client body:has(#modeAgent.active) #huyin-chat-widget,
        html.app-client body:has(#modeAgent.active) #huyin-chat-fab,
        html.app-client body:has(#modeAgent.active) #huyin-chat-backdrop,
        html.app-client body:has(.canvas-area.is-fullscreen) #huyin-chat-widget,
        html.app-client body:has(.canvas-area.is-fullscreen) #huyin-chat-fab,
        html.app-client body:has(.canvas-area.is-fullscreen) #huyin-chat-backdrop,
        body.sandbox-fullscreen-active #huyin-chat-widget,
        body.sandbox-fullscreen-active #huyin-chat-fab,
        body.sandbox-fullscreen-active #huyin-chat-backdrop {
            display: none !important;
        }

        .agent-input-row {
            flex: 0 0 auto;
            display: flex;
            gap: 10px;
            align-items: stretch;
            z-index: 2;
        }

        .agent-input-row textarea {
            flex: 1 1 auto;
            min-height: 48px;
            max-height: 120px;
            resize: vertical;
            border-radius: 12px;
            border: 1px solid #3a3a3a;
            background: #141414;
            color: #fff;
            padding: 12px 14px;
            font-size: 14px;
            font-family: "PingFang SC", "Hiragino Sans GB", "Segoe UI", system-ui, sans-serif;
        }

        .agent-input-row textarea:focus {
            outline: none;
            border-color: #d4a574;
            box-shadow: 0 0 0 1px rgba(212, 165, 116, 0.22);
        }

        .agent-send-btn {
            flex: 0 0 auto;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            min-width: 108px;
            min-height: 48px;
            padding: 12px 18px;
            border-radius: 12px;
            border: 1px solid #e8a23a;
            background: linear-gradient(180deg, #2a2a2a 0%, #151515 100%);
            box-shadow: 0 0 0 1px rgba(232, 162, 58, 0.22);
            color: #f5f5f5;
            font-family: "PingFang SC", "Hiragino Sans GB", "Segoe UI", system-ui, sans-serif;
            font-weight: 650;
            font-size: 15px;
            letter-spacing: 0.02em;
            cursor: pointer;
            transition: background 0.2s ease, border-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
        }

        .agent-send-btn .send-icon {
            width: 16px;
            height: 16px;
            flex: 0 0 auto;
        }

        .agent-send-btn .send-icon svg {
            display: block;
            width: 100%;
            height: 100%;
            fill: none;
            stroke: currentColor;
            stroke-width: 1.85;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        .agent-send-btn:hover:not(:disabled) {
            transform: translateY(-1px);
            border-color: #f0b85a;
            background: linear-gradient(180deg, #333 0%, #1a1a1a 100%);
            box-shadow: 0 0 0 1px rgba(232, 162, 58, 0.35);
            color: #fff6e8;
        }

        .agent-send-btn:disabled {
            opacity: 0.55;
            cursor: not-allowed;
            transform: none;
        }

        @media (max-width: 900px), (orientation: portrait) {
            #modeAgent.active {
                overflow: hidden;
            }

            .agent-shell {
                display: flex;
                flex-direction: column;
                gap: 12px;
                min-height: 0;
                max-height: none;
                height: 100%;
                flex: 1 1 auto;
                background: transparent;
                border: none;
                padding: 0;
            }

            .agent-data-panel {
                flex: 0 1 auto;
                max-height: min(28vh, 200px);
            }

            .agent-chat-panel {
                flex: 1 1 auto;
            }

            .agent-messages,
            .agent-messages-container {
                min-height: 0;
                max-height: none;
            }
        }

        /* 仅窄屏手机取消走马灯（桌面竖屏仍保留） */
        @media (max-width: 767px) {
            .agent-chips {
                overflow-x: auto;
                overflow-y: hidden;
                -webkit-overflow-scrolling: touch;
                scrollbar-width: thin;
                mask-image: none;
                -webkit-mask-image: none;
                padding-bottom: 2px;
            }

            .agent-chips-track {
                animation: none !important;
                transform: none !important;
                will-change: auto;
            }

            .agent-chips-group[data-marquee-clone="1"] {
                display: none;
            }
        }

        .mode-panel {
            display: none;
            width: 100%;
            max-width: var(--lab-content-max);
            margin-left: auto;
            margin-right: auto;
            flex-direction: column;
            align-items: stretch;
            flex: 1 1 auto;
            min-height: 0;
        }

        .mode-panel.active {
            display: flex;
        }

        /* ========== 可视化沙盒 ========== */
        .viz-main {
            display: grid;
            grid-template-columns: 1fr 340px;
            grid-template-rows: 1fr;
            gap: 12px;
            width: 100%;
            flex: 1 1 auto;
            min-height: 0; /* 关键：允许在矮横屏里收缩，而不是被 560px 顶破 */
            height: 100%;
            user-select: none;
        }

        .canvas-area {
            background: #050505;
            border: 2px solid var(--border-color);
            border-radius: 12px;
            position: relative;
            overflow: hidden;
            box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.95);
            min-height: 0;
            height: 100%;
            touch-action: none;
        }

        #sandboxCanvas {
            display: block;
            width: 100%;
            height: 100%;
            cursor: grab;
            outline: none;
            touch-action: none;
        }

        #sandboxCanvas:focus-visible {
            box-shadow: inset 0 0 0 1px rgba(212, 165, 116, 0.35);
        }

        #sandboxCanvas:active {
            cursor: grabbing;
        }

        .canvas-floating-controls {
            position: absolute;
            top: 12px;
            right: 12px;
            z-index: 5;
            display: flex;
            gap: 8px;
        }

        .canvas-float-btn {
            background: rgba(28, 28, 28, 0.94);
            border: 1px solid rgba(255, 255, 255, 0.18);
            color: #e0e0e0;
            font-size: 11px;
            font-weight: bold;
            padding: 7px 10px;
            border-radius: 6px;
            cursor: pointer;
            backdrop-filter: blur(8px);
            box-shadow: 0 0 12px rgba(0, 0, 0, 0.28);
            transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
            font-family: var(--font-mono);
        }

        .canvas-float-btn:hover {
            background: rgba(40, 40, 40, 0.96);
            border-color: rgba(255, 255, 255, 0.32);
            box-shadow: 0 0 16px rgba(0, 0, 0, 0.35);
            color: #fff;
        }

        .canvas-float-btn.active {
            background: rgba(48, 48, 48, 0.96);
            border-color: rgba(255, 255, 255, 0.28);
            color: #fff;
        }

        .canvas-float-btn:disabled {
            opacity: 0.4;
            cursor: not-allowed;
            box-shadow: none;
        }

        .canvas-float-btn:disabled:hover {
            background: rgba(28, 28, 28, 0.94);
            border-color: rgba(255, 255, 255, 0.18);
            box-shadow: none;
        }

        .viz-control-panel {
            background: var(--panel-bg);
            border: 2px solid var(--border-color);
            border-radius: 12px;
            padding: 12px;
            display: flex;
            flex-direction: column;
            gap: 12px;
            overflow-x: hidden;
            overflow-y: auto;
            min-height: 0;
            height: 100%;
            box-shadow: 0 0 30px rgba(200, 200, 200, 0.04);
        }

        .viz-control-panel > * {
            flex: 0 0 auto;
            min-height: min-content;
        }

        .panel-section {
            background: #121212;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            padding: 12px;
            min-width: 0;
            max-width: 100%;
            overflow-x: hidden;
            overflow-y: visible;
            box-sizing: border-box;
        }

        .section-title {
            font-size: 13px;
            font-weight: bold;
            color: #fff;
            margin-bottom: 10px;
            letter-spacing: 0.3px;
        }

        .formula-container {
            margin-top: 12px;
            padding: 12px 10px;
            background: rgba(2, 4, 8, 0.9);
            border: 1px solid rgba(200, 200, 200, 0.18);
            border-radius: 8px;
            text-align: left;
            font-family: var(--font-mono);
            min-height: 72px;
            color: #e5e5e5;
            overflow-x: auto;
        }

        .formula-container .katex {
            font-size: 1.02em;
        }

        .formula-hint {
            font-size: 10px;
            color: #e8e8e8;
            margin-bottom: 8px;
            font-family: system-ui, sans-serif;
            text-align: center;
        }

        .formula-block {
            margin-bottom: 12px;
            padding-bottom: 10px;
            border-bottom: 1px solid rgba(50, 50, 50, 0.9);
        }

        .formula-block:last-child {
            margin-bottom: 0;
            padding-bottom: 0;
            border-bottom: none;
        }

        .formula-tag {
            display: inline-block;
            font-size: 10px;
            font-weight: bold;
            color: var(--primary-color);
            font-family: system-ui, sans-serif;
            margin-bottom: 4px;
            letter-spacing: 0.3px;
        }

        .formula-line {
            margin: 4px 0 6px;
            text-align: center;
            overflow-x: auto;
        }

        .formula-desc {
            font-size: 11px;
            line-height: 1.55;
            color: #f0f0f0;
            font-family: system-ui, sans-serif;
        }

        .alert-banner {
            border-radius: 6px;
            padding: 10px;
            font-size: 12px;
            display: none;
            flex-direction: column;
            gap: 4px;
            animation: pulse 1.5s infinite;
        }

        .alert-banner.trip {
            background: rgba(239, 68, 68, 0.15);
            border: 1px solid var(--danger-color);
            color: #fca5a5;
        }

        .alert-banner.manual {
            background: rgba(249, 115, 22, 0.12);
            border: 1px solid var(--warning-color);
            color: #fdba74;
            animation: none;
        }

        @keyframes pulse {
            0%, 100% { opacity: 0.8; }
            50% { opacity: 1; }
        }

        .stats-grid {
            display: grid;
            grid-template-columns: 1fr;
            gap: 8px;
        }

        .stat-card {
            background: linear-gradient(180deg, #101010 0%, #0c0c0c 100%);
            border: 1px solid #333333;
            border-radius: 6px;
            padding: 10px;
            text-align: center;
            box-shadow: inset 0 0 20px rgba(200, 200, 200, 0.03);
        }

        .stat-card.alert {
            border-color: var(--danger-color);
            background: rgba(239, 68, 68, 0.05);
        }

        .stat-lbl {
            font-size: 11px;
            color: #e8e8e8;
            margin-bottom: 3px;
        }

        .stat-val {
            font-size: 22px;
            font-weight: bold;
            color: var(--primary-color);
            font-family: var(--font-mono);
            text-shadow: 0 0 12px rgba(200, 200, 200, 0.2);
        }

        .stat-val.gold {
            color: var(--producer-color);
        }

        .design-cost-box {
            margin-top: 10px;
            padding: 10px;
            background: linear-gradient(180deg, #101010 0%, #0c0c0c 100%);
            border: 1px solid #333333;
            border-radius: 6px;
        }

        .design-cost-period {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 6px;
            margin-bottom: 10px;
        }

        .design-cost-period .btn-action {
            padding: 6px 4px;
            font-size: 11px;
            min-height: 0;
        }

        .design-cost-period .btn-action.active {
            border-color: var(--primary-color);
            color: var(--primary-color);
            background: rgba(200, 200, 200, 0.08);
        }

        .design-cost-metrics {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }

        .design-cost-metrics .stat-lbl {
            margin-bottom: 2px;
        }

        .design-cost-metrics .stat-val {
            font-size: 18px;
        }

        .design-cost-note {
            margin-top: 8px;
            font-size: 10px;
            line-height: 1.45;
            color: #737373;
            text-align: left;
        }

        /* ========== 企业数据看板（五维） ========== */
        .enterprise-panel {
            border: 1px solid var(--warning-color);
            background: linear-gradient(180deg, rgba(15, 23, 42, 0.98) 0%, rgba(7, 10, 19, 0.98) 100%);
            box-shadow: 0 0 20px rgba(249, 115, 22, 0.12);
            transition: border-color 0.25s ease, box-shadow 0.25s ease;
        }

        .enterprise-panel.success {
            border-color: var(--success-color);
            box-shadow: 0 0 22px rgba(34, 197, 94, 0.18);
        }

        .enterprise-panel.critical {
            border-color: var(--danger-color);
            box-shadow: 0 0 22px rgba(239, 68, 68, 0.2);
            animation: pulse 1.5s infinite;
        }

        .enterprise-dim {
            margin-bottom: 10px;
            padding-bottom: 8px;
            border-bottom: 1px solid rgba(30, 41, 59, 0.85);
        }

        .enterprise-dim:last-of-type {
            margin-bottom: 8px;
        }

        .enterprise-dim-label {
            font-size: 10px;
            font-weight: bold;
            color: var(--primary-color);
            letter-spacing: 0.4px;
            margin-bottom: 4px;
        }

        .enterprise-dim-body {
            font-size: 12px;
            color: #d4d4d4;
            line-height: 1.5;
        }

        .enterprise-dim-body strong {
            color: #fff;
            font-family: var(--font-mono);
        }

        .enterprise-plan-list {
            margin: 4px 0 0 16px;
            padding: 0;
            color: #f0f0f0;
            font-size: 11px;
            line-height: 1.55;
        }

        .enterprise-plan-list li {
            margin-bottom: 2px;
        }

        .enterprise-logs {
            max-height: 72px;
            overflow-y: auto;
            font-size: 10px;
            font-family: var(--font-mono);
            color: #e8e8e8;
            background: rgba(2, 4, 8, 0.6);
            border-radius: 4px;
            padding: 6px 8px;
        }

        .enterprise-logs .crit {
            color: #f87171;
        }

        .enterprise-logs .ok {
            color: #4ade80;
        }

        .enterprise-actions {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 6px;
            margin-top: 8px;
        }

        .enterprise-actions .btn-action {
            font-size: 11px;
            padding: 8px 6px;
        }

        .enterprise-goal-menu-wrap {
            position: relative;
        }

        .enterprise-goal-btn {
            width: 100%;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 4px;
        }

        .enterprise-goal-count {
            font-family: var(--font-mono);
            font-size: 10px;
            color: var(--primary-color);
            background: rgba(200, 200, 200, 0.12);
            border-radius: 3px;
            padding: 1px 5px;
        }

        .enterprise-goal-dropdown {
            position: absolute;
            left: 0;
            right: 0;
            bottom: calc(100% + 4px);
            z-index: 40;
            background: #121212;
            border: 1px solid rgba(200, 200, 200, 0.28);
            border-radius: 6px;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.55);
            overflow: hidden;
            display: none;
        }

        .enterprise-goal-dropdown.open {
            display: block;
        }

        .enterprise-goal-dropdown button {
            display: block;
            width: 100%;
            text-align: left;
            background: transparent;
            border: none;
            border-bottom: 1px solid rgba(40, 40, 40, 0.9);
            color: #e5e5e5;
            font-size: 11px;
            line-height: 1.4;
            padding: 8px 10px;
            cursor: pointer;
        }

        .enterprise-goal-dropdown button:last-child {
            border-bottom: none;
        }

        .enterprise-goal-dropdown button:hover {
            background: rgba(200, 200, 200, 0.08);
        }

        .enterprise-goal-dropdown button.active {
            background: rgba(249, 115, 22, 0.16);
            color: #fdba74;
        }

        .enterprise-goal-dropdown button .g-meta {
            display: block;
            font-size: 10px;
            color: #a3a3a3;
            margin-top: 2px;
            font-family: var(--font-mono);
        }

        /* ========== 月/年电费评估（日历背景） ========== */
        .forecast-panel {
            position: relative;
            overflow: hidden;
            border-color: rgba(200, 200, 200, 0.22);
            background: #0e0e0e;
        }

        .forecast-calendar-bg {
            position: absolute;
            inset: 0;
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            grid-template-rows: repeat(5, 1fr);
            gap: 2px;
            padding: 36px 8px 8px;
            opacity: 0.14;
            pointer-events: none;
            z-index: 0;
        }

        .forecast-calendar-bg span {
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 9px;
            font-family: var(--font-mono);
            color: #f0f0f0;
            border: 1px solid rgba(200, 200, 200, 0.12);
            border-radius: 3px;
            background: rgba(30, 30, 30, 0.35);
        }

        .forecast-calendar-bg span.today {
            opacity: 1;
            color: #facc15;
            border-color: rgba(250, 204, 21, 0.45);
            background: rgba(250, 204, 21, 0.12);
            box-shadow: 0 0 8px rgba(250, 204, 21, 0.2);
        }

        .forecast-calendar-bg span.weekend {
            color: #f0f0f0;
        }

        .forecast-content {
            position: relative;
            z-index: 1;
        }

        .forecast-summary {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
            margin-bottom: 10px;
        }

        .forecast-pill {
            background: rgba(2, 6, 14, 0.75);
            border: 1px solid rgba(200, 200, 200, 0.18);
            border-radius: 8px;
            padding: 10px 8px;
            text-align: center;
        }

        .forecast-pill .lbl {
            font-size: 10px;
            color: #f0f0f0;
            margin-bottom: 4px;
        }

        .forecast-pill .val {
            font-size: 18px;
            font-weight: 800;
            font-family: var(--font-mono);
            color: var(--primary-color);
            text-shadow: 0 0 10px rgba(200, 200, 200, 0.2);
        }

        .forecast-pill.year .val {
            color: var(--producer-color);
        }

        .forecast-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 11px;
            background: rgba(2, 6, 14, 0.72);
            border-radius: 6px;
            overflow: hidden;
        }

        .forecast-table th,
        .forecast-table td {
            padding: 6px 8px;
            text-align: left;
            border-bottom: 1px solid rgba(50, 50, 50, 0.9);
        }

        .forecast-table th {
            color: #e8e8e8;
            font-weight: 600;
            background: rgba(28, 28, 28, 0.8);
        }

        .forecast-table td {
            color: #d4d4d4;
            font-family: var(--font-mono);
        }

        .forecast-table tr:last-child td {
            border-bottom: none;
        }

        .forecast-table .num {
            text-align: right;
            color: #fff;
        }

        .forecast-note {
            margin-top: 8px;
            font-size: 10px;
            color: #e8e8e8;
            line-height: 1.45;
        }

        /* ========== 沙盒同步数据表 ========== */
        .sync-table-panel .section-title {
            margin-bottom: 8px;
        }

        .sync-table-wrap {
            width: 100%;
            overflow-x: auto;
            -webkit-overflow-scrolling: touch;
            border-radius: 8px;
            border: 1px solid rgba(80, 80, 80, 0.7);
            background: rgba(10, 10, 10, 0.72);
        }

        .sync-data-table {
            width: 100%;
            min-width: 640px;
            border-collapse: collapse;
            font-size: 11px;
        }

        .sync-data-table th,
        .sync-data-table td {
            padding: 7px 8px;
            text-align: left;
            border-bottom: 1px solid rgba(50, 50, 50, 0.9);
            white-space: nowrap;
        }

        .sync-data-table th {
            color: #a3a3a3;
            font-weight: 650;
            background: rgba(28, 28, 28, 0.95);
            position: sticky;
            top: 0;
            z-index: 1;
        }

        .sync-data-table td {
            color: #d4d4d4;
            font-family: var(--font-mono);
        }

        .sync-data-table .num {
            text-align: right;
            color: #f5f5f5;
        }

        .sync-data-table tbody tr {
            cursor: pointer;
            transition: background 0.15s;
        }

        .sync-data-table tbody tr:hover {
            background: rgba(212, 165, 116, 0.08);
        }

        .sync-data-table tbody tr.selected {
            background: rgba(212, 165, 116, 0.14);
            box-shadow: inset 2px 0 0 #d4a574;
        }

        .sync-data-table tbody tr.off td {
            opacity: 0.55;
        }

        .sync-data-table .dev-name {
            display: flex;
            align-items: center;
            gap: 6px;
            max-width: 160px;
            overflow: hidden;
            text-overflow: ellipsis;
            color: #fff;
            font-family: inherit;
        }

        .sync-data-table .dev-dot {
            width: 7px;
            height: 7px;
            border-radius: 50%;
            flex: 0 0 auto;
        }

        .sync-data-table .type-tag,
        .sync-data-table .role-tag,
        .sync-data-table .state-tag {
            display: inline-block;
            padding: 1px 6px;
            border-radius: 4px;
            font-size: 10px;
            font-family: inherit;
            border: 1px solid #404040;
            background: #161616;
            color: #d4d4d4;
        }

        .sync-data-table .role-tag.gen { color: #b7c9b7; border-color: rgba(183, 201, 183, 0.35); }
        .sync-data-table .role-tag.charge { color: #e8c49a; border-color: rgba(232, 196, 154, 0.35); }
        .sync-data-table .role-tag.load { color: #c4a09a; border-color: rgba(196, 160, 154, 0.35); }
        .sync-data-table .state-tag.on { color: #b7c9b7; }
        .sync-data-table .state-tag.off { color: #8a8a8a; }
        .sync-data-table .state-tag.cut { color: #c4a09a; }

        .sync-data-table .btn-mini-toggle {
            border: 1px solid #404040;
            background: #141414;
            color: #e8e8e8;
            border-radius: 6px;
            padding: 3px 8px;
            font-size: 10px;
            cursor: pointer;
        }

        .sync-data-table .btn-mini-toggle.on {
            border-color: rgba(183, 201, 183, 0.45);
            color: #b7c9b7;
        }

        .sync-data-table tfoot td {
            background: rgba(22, 22, 22, 0.95);
            color: #e8c49a;
            font-weight: 700;
            border-bottom: none;
        }

        .sync-table-note {
            margin-top: 8px;
            font-size: 10px;
            color: #8a8a8a;
            line-height: 1.45;
        }

        .btn-group {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }

        .btn-action {
            background: #0c0c0c;
            border: 1px solid var(--border-color);
            color: var(--text-color);
            padding: 8px;
            font-size: 12px;
            font-weight: bold;
            border-radius: 6px;
            cursor: pointer;
            transition: all 0.2s;
            text-align: center;
        }

        .btn-action:hover {
            border-color: var(--primary-color);
            color: #fff;
        }

        .btn-action.active {
            border-color: var(--primary-color);
            background: rgba(200, 200, 200, 0.08);
            color: var(--primary-color);
        }

        .btn-spawn {
            background: linear-gradient(135deg, #1a1a1a, #333333);
            border: 1px solid var(--border-color);
            color: #fff;
            padding: 12px;
            font-size: 13px;
            border-radius: 6px;
            cursor: pointer;
            font-weight: bold;
            transition: all 0.2s;
        }

        .btn-spawn:hover {
            border-color: var(--primary-color);
            transform: translateY(-1px);
        }

        .slider-row {
            display: flex;
            flex-direction: column;
            gap: 5px;
            font-size: 12px;
            margin-top: 10px;
        }

        .slider-lbl-row {
            display: flex;
            justify-content: space-between;
            color: #f0f0f0;
        }

        input[type="range"] {
            width: 100%;
            accent-color: var(--primary-color);
        }

        .tou-price-row {
            width: 100%;
            max-width: 100%;
            min-width: 0;
        }

        .tou-price-grid {
            display: grid;
            grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
            gap: 8px;
            margin-top: 6px;
            width: 100%;
            max-width: 100%;
            min-width: 0;
        }

        .tou-price-item {
            display: flex;
            align-items: center;
            gap: 8px;
            min-width: 0;
            max-width: 100%;
            font-size: 12px;
            color: #e8e8e8;
        }

        .tou-price-item span {
            flex: 0 0 auto;
            font-weight: 700;
        }

        .tou-price-item input[type="number"] {
            flex: 1 1 auto;
            width: 100%;
            max-width: 100%;
            min-width: 0;
            box-sizing: border-box;
            height: 34px;
            padding: 4px 8px;
            border: 1px solid #555;
            border-radius: 6px;
            background: #f4f4f4;
            color: #111;
            -webkit-text-fill-color: #111;
            font-family: var(--font-mono);
            font-size: 14px;
            font-weight: 600;
            appearance: auto;
            -webkit-appearance: auto;
            cursor: text;
        }

        .tou-price-item input[type="number"]:focus {
            outline: 2px solid var(--primary-color);
            border-color: var(--primary-color);
        }

        .lab-dispatch-narration {
            margin: 8px 0 0;
            padding: 8px 10px;
            font-size: 12px;
            line-height: 1.45;
            color: #f0f0f0;
            background: rgba(255, 255, 255, 0.06);
            border: 1px solid rgba(255, 255, 255, 0.12);
            border-radius: 8px;
        }

        .lab-sync-disclaimer {
            color: #fbbf24 !important;
            font-size: 11px;
            font-weight: 700;
            letter-spacing: 0.02em;
        }

        .toast {
            position: fixed;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%) translateY(100px);
            background: #333333;
            border: 1px solid var(--primary-color);
            padding: 10px 20px;
            border-radius: 30px;
            font-size: 13px;
            color: #fff;
            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
            transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
            z-index: 100;
            pointer-events: none;
        }

        .toast.show {
            transform: translateX(-50%) translateY(0);
        }

        .tip-box {
            font-size: 11px;
            color: #475569;
            text-align: center;
            line-height: 1.5;
        }

        /* ========== 积木计算器 ========== */
        .calc-page-head {
            width: 100%;
            margin-bottom: 14px;
        }

        .calc-page-head h2 {
            margin: 0 0 4px;
            font-size: 20px;
            font-weight: 750;
            color: #fff;
            letter-spacing: 0.02em;
        }

        .calc-page-head p {
            margin: 0;
            font-size: 13px;
            color: #a3a3a3;
        }

        .calc-top-row {
            display: grid;
            grid-template-columns: minmax(0, 1.45fr) minmax(280px, 1fr);
            gap: 18px;
            width: 100%;
            margin-bottom: 18px;
            align-items: stretch;
        }

        .calc-toolkit {
            width: 100%;
            background: rgba(18, 18, 18, 0.95);
            border: 1px solid #2e2e2e;
            border-radius: 12px;
            padding: 16px;
            margin-bottom: 0;
            box-sizing: border-box;
            min-width: 0;
        }

        .calc-toolkit-title {
            display: flex;
            justify-content: space-between;
            align-items: baseline;
            gap: 10px;
            margin-bottom: 12px;
        }

        .calc-toolkit-title strong {
            font-size: 15px;
            color: #f5f5f5;
        }

        .calc-toolkit-title span {
            font-size: 12px;
            color: #8a8a8a;
        }

        .calc-tool-chips {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            margin-bottom: 14px;
        }

        .calc-tool-chip {
            border: 1px solid #404040;
            background: #141414;
            color: #d4d4d4;
            border-radius: 10px;
            padding: 8px 12px;
            font-size: 12px;
            font-weight: 650;
            cursor: pointer;
            transition: border-color 0.2s, background 0.2s, color 0.2s, transform 0.15s;
        }

        .calc-tool-chip:hover {
            border-color: #6b6b6b;
            color: #fff;
            transform: translateY(-1px);
        }

        .calc-tool-chip.active {
            border-color: #d4a574;
            background: linear-gradient(180deg, #2a2a2a 0%, #151515 100%);
            box-shadow: 0 0 0 1px rgba(212, 165, 116, 0.22);
            color: #fff6e8;
        }

        /* 所有工具叠在同一格，高度取最高面板，切换时不跳动 */
        .calc-tool-stage {
            display: grid;
            grid-template-columns: minmax(0, 1fr);
        }

        .calc-tool-panel {
            grid-area: 1 / 1;
            display: grid;
            grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
            gap: 14px;
            align-items: start;
            visibility: hidden;
            pointer-events: none;
            z-index: 0;
        }

        .calc-tool-panel.active {
            visibility: visible;
            pointer-events: auto;
            z-index: 1;
        }

        .calc-tool-fields {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 10px;
            align-content: start;
        }

        .calc-tool-fields .calc-field.full {
            grid-column: 1 / -1;
        }

        .calc-field label {
            display: block;
            font-size: 11px;
            color: #8a8a8a;
            margin-bottom: 4px;
        }

        .calc-field input,
        .calc-field select {
            width: 100%;
            box-sizing: border-box;
            min-height: 40px;
            padding: 8px 10px;
            border-radius: 8px;
            border: 1px solid #3a3a3a;
            background: #141414;
            color: #fff;
            font-family: var(--font-mono);
            font-size: 14px;
        }

        .calc-field input:focus,
        .calc-field select:focus {
            outline: none;
            border-color: #d4a574;
            box-shadow: 0 0 0 1px rgba(212, 165, 116, 0.22);
        }

        .calc-tool-result {
            background: #0f0f0f;
            border: 1px solid #2e2e2e;
            border-radius: 10px;
            padding: 14px;
            min-height: 200px;
            align-self: stretch;
            box-sizing: border-box;
        }

        .calc-tool-result .res-label {
            font-size: 11px;
            color: #8a8a8a;
            margin-bottom: 6px;
            text-transform: uppercase;
            letter-spacing: 0.04em;
        }

        .calc-tool-result .res-main {
            font-family: var(--font-mono);
            font-size: 22px;
            font-weight: 750;
            color: #e8c49a;
            margin-bottom: 10px;
            line-height: 1.3;
        }

        .calc-tool-result .res-lines {
            display: flex;
            flex-direction: column;
            gap: 6px;
            font-size: 13px;
            color: #d4d4d4;
            font-family: var(--font-mono);
        }

        .calc-tool-result .res-hint {
            margin-top: 10px;
            font-size: 12px;
            color: #a3a3a3;
            line-height: 1.45;
        }

        .calc-tool-result .res-hint.warn {
            color: #c4a09a;
        }

        .calc-tool-result .res-hint.ok {
            color: #b7c9b7;
        }

        .calc-tool-actions {
            grid-column: 1 / -1;
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            margin-top: 2px;
        }

        .calc-tool-btn {
            border: 1px solid #404040;
            background: linear-gradient(180deg, #2a2a2a 0%, #151515 100%);
            color: #f5f5f5;
            border-radius: 10px;
            padding: 9px 14px;
            font-size: 12px;
            font-weight: 650;
            cursor: pointer;
            transition: border-color 0.2s, transform 0.15s, opacity 0.2s;
        }

        .calc-tool-btn:hover:not(:disabled) {
            border-color: #d4a574;
            transform: translateY(-1px);
            color: #fff6e8;
        }

        .calc-tool-btn:disabled {
            opacity: 0.45;
            cursor: not-allowed;
        }

        .calc-tool-btn.primary {
            border-color: #e8a23a;
            box-shadow: 0 0 0 1px rgba(232, 162, 58, 0.2);
        }

        .calc-container {
            display: grid;
            grid-template-columns: 1fr;
            gap: 18px;
            width: 100%;
            margin-bottom: 25px;
        }

        .calc-top-row .main-panel {
            margin: 0;
            min-width: 0;
        }

        .main-panel {
            background: var(--panel-bg);
            border: 2px solid var(--border-color);
            border-radius: 16px;
            padding: 24px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
        }

        .panel-title {
            font-size: 18px;
            font-weight: bold;
            margin-bottom: 20px;
            color: #ffffff;
        }

        .voltage-selector {
            display: flex;
            gap: 15px;
            margin-bottom: 30px;
        }

        .btn-radio {
            flex: 1;
            padding: 15px;
            background: #121212;
            border: 2px solid var(--border-color);
            border-radius: 8px;
            color: var(--text-color);
            font-size: 16px;
            font-weight: bold;
            cursor: pointer;
            transition: all 0.2s;
            text-align: center;
        }

        .btn-radio.active {
            border-color: var(--primary-color);
            background: rgba(200, 200, 200, 0.1);
            color: var(--primary-color);
        }

        .dashboard-metrics {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 20px;
        }

        .metric-card {
            background: #121212;
            border: 1px solid var(--border-color);
            border-radius: 12px;
            padding: 20px;
            text-align: center;
        }

        .metric-card.alert {
            border-color: var(--danger-color);
            background: rgba(239, 68, 68, 0.05);
        }

        .metric-label {
            font-size: 14px;
            color: #f0f0f0;
            margin-bottom: 10px;
        }

        .metric-value {
            font-size: 36px;
            font-weight: 800;
            color: var(--primary-color);
        }

        .metric-card.alert .metric-value {
            color: var(--danger-color);
        }

        .metric-unit {
            font-size: 16px;
            font-weight: normal;
            margin-left: 5px;
        }

        .calc-control-panel {
            background: var(--panel-bg);
            border: 2px solid var(--border-color);
            border-radius: 16px;
            padding: 24px;
            display: grid;
            grid-template-columns: 1.4fr 1fr;
            gap: 20px;
            align-items: stretch;
        }

        .btn-add-device {
            width: 100%;
            height: 100px;
            background: linear-gradient(135deg, #d4d4d4, #8a8a8a);
            border: none;
            border-radius: 12px;
            color: #0a0a0a;
            font-size: 22px;
            font-weight: 800;
            cursor: pointer;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 5px;
        }

        .btn-add-device span {
            font-size: 12px;
            font-weight: normal;
            opacity: 0.8;
        }

        .price-setting {
            background: #121212;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            padding: 15px;
            margin-top: 20px;
        }

        .devices-area {
            width: 100%;
            background: var(--panel-bg);
            border: 2px solid var(--border-color);
            border-radius: 16px;
            padding: 30px;
        }

        .devices-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
            gap: 20px;
            margin-top: 20px;
        }

        .device-card {
            background: #121212;
            border: 2px solid var(--border-color);
            border-radius: 12px;
            padding: 20px;
            cursor: pointer;
            transition: box-shadow 0.2s, border-color 0.2s;
        }

        .device-card.selected {
            box-shadow: 0 0 0 1px rgba(212, 165, 116, 0.55), 0 8px 22px rgba(0, 0, 0, 0.35);
        }

        .device-card.online {
            border-color: var(--primary-color);
            background: var(--card-active);
        }

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

        .device-name {
            font-weight: bold;
            font-size: 16px;
            background: transparent;
            border: none;
            color: white;
            border-bottom: 1px dashed #737373;
            width: 70%;
        }

        .btn-delete {
            background: transparent;
            border: none;
            color: #e8e8e8;
            cursor: pointer;
            font-size: 14px;
        }

        .btn-delete:hover {
            color: var(--danger-color);
        }

        .input-group {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 10px;
            font-size: 14px;
        }

        .input-group label {
            color: #f0f0f0;
        }

        .input-group input {
            width: 80px;
            background: #0c0c0c;
            border: 1px solid var(--border-color);
            border-radius: 4px;
            padding: 5px;
            color: white;
            text-align: center;
        }

        .card-result {
            margin-top: 15px;
            padding-top: 10px;
            border-top: 1px solid var(--border-color);
            font-size: 13px;
            color: #f0f0f0;
            display: flex;
            justify-content: space-between;
        }

        .btn-switch {
            width: 100%;
            padding: 12px;
            margin-top: 15px;
            border: none;
            border-radius: 8px;
            font-weight: bold;
            font-size: 14px;
            cursor: pointer;
        }

        .btn-switch.off {
            background: #404040;
            color: #f0f0f0;
        }

        .btn-switch.on {
            background: var(--primary-color);
            color: #0a0a0a;
        }

        .no-device-tip {
            color: #e8e8e8;
            text-align: center;
            padding: 40px 0;
            grid-column: 1 / -1;
        }

        /* 默认隐藏；仅窄屏/竖屏预览模式显示 */
        .sandbox-fs-open,
        .sandbox-fs-close {
            display: none;
        }

        /* 计算器：内容可滚动；智能体桌面双栏自管高度，竖屏见上方 media */
        #modeCalc.active {
            overflow-y: auto;
            overflow-x: hidden;
        }

        /*
         * 竖屏 / 窄屏：上下堆叠 + 页面可滚动
         * 不用 50vh 网格行，避免画布下方大块空白
         */
        @media (max-width: 900px), (orientation: portrait) {
            html,
            body {
                height: auto;
                min-height: 100%;
                min-height: 100dvh;
                overflow-x: hidden;
                overflow-y: auto;
            }

            body {
                padding: calc(70px + env(safe-area-inset-top, 0px) + 6px) 12px var(--lab-pad-bottom);
            }

            html.app-client body,
            html.app-client body:not(.app-launcher-page),
            html.in-huytech-app body {
                padding-bottom: 72px !important;
            }

            header h1 {
                font-size: 18px;
            }

            header {
                margin-bottom: 10px;
                padding-bottom: 0;
            }

            header p {
                display: none;
            }

            .mode-tabs {
                margin-bottom: 6px;
            }

            .lab-sync-strip {
                margin-bottom: 10px;
                padding: 8px 10px;
                gap: 6px 10px;
                font-size: 11px;
            }

            .mode-tab {
                padding: 10px 12px;
                font-size: 13px;
            }

            .mode-tab.active {
                font-size: 15px;
                min-height: 52px;
                padding: 12px 14px;
                transform: scale(1.05);
            }

            .mode-panel.active {
                flex: none;
                height: auto;
                min-height: 0;
                overflow: visible;
            }

            .viz-main {
                display: flex;
                flex-direction: column;
                grid-template-columns: none;
                grid-template-rows: none;
                gap: 12px;
                height: auto;
                min-height: 0;
                flex: none;
            }

            .canvas-area {
                flex: 0 0 auto;
                width: 100%;
                height: min(48vh, 380px);
                min-height: 260px;
                max-height: none;
                position: relative;
            }

            /* 桌面竖屏/窄窗：直接可拖设备，不强制横屏全屏 */
            .canvas-area:not(.is-fullscreen) #sandboxCanvas {
                pointer-events: auto !important;
            }

            .sandbox-fs-open,
            .sandbox-fs-fallback {
                display: none !important;
            }

            .sandbox-fs-close {
                display: none;
            }

            .viz-control-panel {
                flex: 0 0 auto;
                width: 100%;
                height: auto;
                max-height: none;
                overflow: visible;
            }

            /* 设计页窄屏：吃满剩余视口，底部包边可见，无需再滑一截 */
            #modeDesign.active {
                flex: 1 1 auto;
                min-height: 0;
                height: auto;
                overflow: hidden;
                display: flex;
                flex-direction: column;
            }

            #modeDesign .viz-main {
                display: flex;
                flex-direction: column;
                flex: 1 1 auto;
                min-height: 280px;
                /* navbar + title + tabs + sync + body pads ≈ 220px（项目栏已上移顶栏） */
                height: calc(100dvh - 70px - env(safe-area-inset-top, 0px) - 210px);
                max-height: none;
            }

            #modeDesign .canvas-area {
                flex: 1 1 auto;
                height: 100%;
                min-height: 280px;
                max-height: none;
            }

            #modeDesign .design-tool-dock {
                width: min(280px, calc(100% - 20px));
            }

            #modeDesign .design-tool-panels {
                max-height: min(40vh, 320px);
            }

            #modeDesign .design-main-actions {
                grid-template-columns: 1fr;
            }

            .mode-tabs {
                flex-direction: row;
            }

            /* 计算器：单列铺满，整页/面板可滚，避免裁切 */
            #modeCalc.mode-panel.active {
                width: 100%;
                max-width: 100%;
                overflow-x: hidden;
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                padding-bottom: 48px;
            }

            .calc-page-head h2 {
                font-size: 18px;
            }

            .calc-top-row {
                display: flex;
                flex-direction: column;
                gap: 14px;
                margin-bottom: 14px;
            }

            .calc-toolkit {
                padding: 12px;
                margin-bottom: 0;
            }

            .calc-tool-panel {
                grid-template-columns: 1fr;
                gap: 12px;
            }

            .calc-tool-fields {
                grid-template-columns: 1fr 1fr;
            }

            .calc-container {
                display: flex;
                flex-direction: column;
                gap: 14px;
                grid-template-columns: none;
                width: 100%;
                margin-bottom: 14px;
            }

            .main-panel,
            .calc-control-panel,
            .devices-area {
                width: 100%;
                max-width: 100%;
                padding: 16px;
                box-sizing: border-box;
            }

            .calc-control-panel {
                grid-template-columns: 1fr;
                gap: 14px;
            }

            .price-setting {
                margin-top: 0;
            }

            .voltage-selector {
                flex-direction: column;
                gap: 10px;
                margin-bottom: 18px;
            }

            .btn-radio {
                padding: 14px 12px;
                font-size: 14px;
            }

            .dashboard-metrics {
                grid-template-columns: 1fr;
                gap: 12px;
            }

            .metric-card {
                padding: 16px;
            }

            .metric-value {
                font-size: 28px;
                word-break: break-all;
            }

            .btn-add-device {
                height: auto;
                min-height: 72px;
                padding: 16px;
                font-size: 18px;
            }

            .devices-grid {
                grid-template-columns: 1fr;
                gap: 12px;
                margin-top: 14px;
            }

            .device-card {
                padding: 14px;
                width: 100%;
                max-width: 100%;
                overflow: hidden;
            }

            .device-name {
                width: min(70%, 100%);
                max-width: calc(100% - 72px);
                font-size: 15px;
            }

            .input-group {
                flex-wrap: wrap;
                gap: 8px;
                font-size: 13px;
            }

            .input-group input {
                width: 96px;
                min-height: 36px;
                font-size: 16px;
            }

            .card-result {
                font-size: 13px;
            }
        }

        /*
         * 全屏样式必须独立于 (max-width/portrait) 媒体查询：
         * Android 点按钮后若 orientation.lock 成功变成横屏且宽度 >900，
         * 旧写法会让 position:fixed / 旋转全部失效，表现为「点了没反应」。
         */
        .canvas-area.is-fullscreen {
            position: fixed !important;
            z-index: 100050;
            max-height: none !important;
            min-height: 0 !important;
            border-radius: 0;
            margin: 0;
            inset: 0 !important;
            width: 100vw !important;
            width: 100dvw !important;
            height: 100vh !important;
            height: 100dvh !important;
            transform: none;
        }

        .canvas-area.is-fullscreen .sandbox-fs-open {
            display: none !important;
        }

        .canvas-area.is-fullscreen .sandbox-fs-close {
            display: inline-flex !important;
            position: absolute;
            top: max(10px, env(safe-area-inset-top, 0px));
            right: max(10px, env(safe-area-inset-right, 0px));
            z-index: 40;
            align-items: center;
            gap: 6px;
            padding: 10px 14px;
            border-radius: 999px;
            border: 1px solid rgba(255,255,255,0.25);
            background: rgba(0,0,0,0.72);
            color: #fff;
            font-size: 13px;
            font-weight: 700;
            cursor: pointer;
            pointer-events: auto !important;
            touch-action: manipulation;
        }

        .canvas-area.is-fullscreen .canvas-floating-controls {
            display: flex !important;
            flex-wrap: wrap;
            top: max(10px, env(safe-area-inset-top, 0px));
            left: max(10px, env(safe-area-inset-left, 0px));
            right: auto;
            z-index: 40;
            max-width: calc(100% - 120px);
            pointer-events: auto;
            touch-action: manipulation;
        }

        .canvas-area.is-fullscreen .canvas-floating-controls .canvas-float-btn {
            pointer-events: auto !important;
            touch-action: manipulation;
            -webkit-tap-highlight-color: rgba(255, 255, 255, 0.2);
        }

        .canvas-area.is-fullscreen #sandboxCanvas {
            pointer-events: auto !important;
        }

        .canvas-area.is-fullscreen .canvas-zoom-btn,
        #designCanvasContainer .canvas-zoom-btn {
            display: inline-flex !important;
            min-width: 40px;
            justify-content: center;
            font-size: 18px;
            font-weight: 800;
            line-height: 1;
            touch-action: manipulation;
        }

        .canvas-zoom-btn {
            display: none;
        }

        @media (hover: hover) and (pointer: fine) {
            #designCanvasContainer .canvas-zoom-btn {
                display: none !important;
            }
        }

        .sandbox-fs-orient-hint {
            display: none;
            position: absolute;
            left: 50%;
            bottom: max(16px, env(safe-area-inset-bottom, 0px));
            transform: translateX(-50%);
            z-index: 35;
            pointer-events: none;
            padding: 8px 14px;
            border-radius: 999px;
            background: rgba(0, 0, 0, 0.72);
            color: rgba(255, 255, 255, 0.92);
            font-size: 12px;
            font-weight: 600;
            letter-spacing: 0.02em;
            white-space: nowrap;
        }

        .canvas-area.is-fullscreen .sandbox-fs-orient-hint:not([hidden]) {
            display: block;
        }

        body.sandbox-fullscreen-active,
        html.sandbox-fullscreen-active {
            overflow: hidden !important;
            overscroll-behavior: none;
            touch-action: none;
        }

        body.sandbox-fullscreen-active .sandbox-fs-fallback {
            display: none !important;
        }

        /* p0e：废弃 CSS 假横屏；残留 class 时仍按普通全屏铺满，避免反向坐标 */
        .canvas-area.is-fullscreen.is-landscape-rot {
            inset: 0 !important;
            top: 0 !important;
            left: 0 !important;
            width: 100vw !important;
            width: 100dvw !important;
            height: 100vh !important;
            height: 100dvh !important;
            transform: none !important;
        }

        /* 备用入口：画布外实体按钮（仅手机） */
        .sandbox-fs-fallback {
            display: none;
            width: 100%;
            margin: 0 0 10px;
            padding: 14px 12px;
            border-radius: 10px;
            border: 1px solid rgba(245, 158, 11, 0.55);
            background: rgba(245, 158, 11, 0.95);
            color: #111;
            font-size: 15px;
            font-weight: 800;
            cursor: pointer;
            touch-action: manipulation;
            -webkit-tap-highlight-color: rgba(245, 158, 11, 0.35);
        }

        /*
         * 仅手机：缩略预览 + 横屏全屏入口
         * 桌面竖屏/窄窗（有鼠标 hover）不显示，可直接操作画布
         */
        @media (max-width: 767px) and (hover: none) {
            .canvas-area:not(.is-fullscreen) {
                height: 200px;
                min-height: 180px;
                max-height: 220px;
            }

            .canvas-area:not(.is-fullscreen) #sandboxCanvas {
                pointer-events: none !important;
            }

            .canvas-area:not(.is-fullscreen) .canvas-floating-controls {
                display: none;
            }

            .sandbox-fs-open {
                display: flex !important;
                position: absolute;
                inset: 0;
                z-index: 30;
                align-items: center;
                justify-content: center;
                flex-direction: column;
                gap: 8px;
                background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.55) 100%);
                border: none;
                color: #fff;
                cursor: pointer;
                font-size: 15px;
                font-weight: 700;
                letter-spacing: 0.02em;
                pointer-events: auto !important;
                touch-action: manipulation;
                -webkit-tap-highlight-color: rgba(245, 158, 11, 0.35);
                user-select: none;
                -webkit-user-select: none;
            }

            .sandbox-fs-open span {
                display: inline-block;
                padding: 10px 16px;
                border-radius: 999px;
                background: rgba(245, 158, 11, 0.95);
                color: #111;
                box-shadow: 0 8px 24px rgba(0,0,0,0.35);
            }

            .sandbox-fs-open small {
                font-size: 12px;
                font-weight: 500;
                color: rgba(255,255,255,0.85);
            }

            .sandbox-fs-fallback {
                display: block !important;
            }
        }

        /* 极窄竖屏：三键上下堆叠（同电能分析操作条） */
        @media (max-width: 480px) {
            .tou-price-grid {
                gap: 6px;
            }

            .tou-price-item {
                gap: 4px;
            }

            .tou-price-item input[type="number"] {
                height: 32px;
                padding: 4px 6px;
                font-size: 16px;
            }

            .mode-tabs {
                grid-template-columns: 1fr;
                gap: 10px;
            }

            .mode-tab {
                min-height: 46px;
                font-size: 15px;
                transform: scale(1);
            }

            .mode-tab.active {
                min-height: 54px;
                font-size: 17px;
                transform: scale(1.03);
            }

            .canvas-area:not(.is-fullscreen) {
                height: 180px;
                min-height: 160px;
                max-height: 200px;
            }
        }

        /* 横屏矮视口：双栏铺满，禁止整页裁切 */
        @media (orientation: landscape) and (min-width: 901px),
               (orientation: landscape) and (max-height: 720px) and (min-width: 600px) {
            html,
            body {
                height: 100%;
                height: 100dvh;
                overflow: hidden;
            }

            body {
                padding: calc(70px + env(safe-area-inset-top, 0px) + 4px) 10px var(--lab-pad-bottom);
            }

            html.app-client body,
            html.app-client body:not(.app-launcher-page),
            html.in-huytech-app body {
                padding-bottom: 72px !important;
            }

            header {
                margin-bottom: 4px;
            }

            header h1 {
                font-size: 16px;
            }

            header p {
                display: none;
            }

            .mode-tabs {
                margin-bottom: 6px;
                grid-template-columns: repeat(4, minmax(0, 1fr));
            }

            .mode-tab {
                min-height: 40px;
                padding: 8px 10px;
                font-size: 13px;
                gap: 6px;
            }

            .mode-tab .mode-tab-icon {
                width: 16px;
                height: 16px;
            }

            .mode-panel.active {
                flex: 1 1 auto;
                min-height: 0;
                height: auto;
                overflow: hidden;
            }

            .viz-main {
                display: grid;
                grid-template-columns: 1fr minmax(260px, 340px);
                grid-template-rows: 1fr;
                flex: 1 1 auto;
                min-height: 0;
                height: 100%;
            }

            .canvas-area,
            .viz-control-panel {
                min-height: 0;
                height: 100%;
                max-height: none;
            }

            .viz-control-panel {
                overflow-y: auto;
            }

            /* 窄横屏仍走缩略预览：必须整页可滚（沙盒+计算器），勿 overflow:hidden 裁切 */
            @media (max-width: 900px) {
                html,
                body {
                    height: auto !important;
                    min-height: 100dvh;
                    overflow-x: hidden !important;
                    overflow-y: auto !important;
                }

                .mode-panel.active {
                    flex: none;
                    height: auto;
                    overflow: visible;
                }

                .viz-main {
                    display: flex;
                    flex-direction: column;
                    grid-template-columns: none;
                    height: auto;
                    min-height: 0;
                    flex: none;
                }

                /* 矮横屏桌面仍直接可编辑；手机高度由下方 phone-only 规则覆盖 */
                .canvas-area:not(.is-fullscreen) {
                    height: min(42vh, 320px);
                    min-height: 220px;
                    max-height: none;
                }

                .viz-control-panel {
                    height: auto;
                    max-height: none;
                    overflow: visible;
                }

                #modeCalc.mode-panel.active {
                    overflow-y: visible;
                    -webkit-overflow-scrolling: touch;
                }
            }
        }

        /*
         * 堆叠预览布局：保证整页滚轮可滑（压过上面矮横屏 overflow:hidden）
         * 宽屏双栏横屏仍由 .viz-control-panel 内部滚动
         */
        @media (max-width: 900px), (orientation: portrait) {
            html,
            html.app-client,
            html.in-huytech-app,
            body,
            html.app-client body,
            html.app-client body:not(.app-launcher-page),
            html.in-huytech-app body {
                height: auto !important;
                max-height: none !important;
                min-height: 100dvh;
                overflow-x: hidden !important;
                overflow-y: auto !important;
            }

            body:not(.sandbox-fullscreen-active) {
                overflow-y: auto !important;
            }

            #modeViz.mode-panel,
            #modeViz.mode-panel.active,
            #modeViz .viz-main,
            #modeViz .viz-control-panel {
                flex: 0 0 auto !important;
                height: auto !important;
                max-height: none !important;
                min-height: 0 !important;
                overflow: visible !important;
            }

            #modeViz .viz-control-panel {
                display: flex;
                flex-direction: column;
                gap: 12px;
            }

            #modeViz .viz-control-panel > * {
                flex: 0 0 auto !important;
                min-height: min-content !important;
                max-height: none !important;
                overflow: visible !important;
            }

            #modeViz .panel-section,
            #modeViz .forecast-panel,
            #modeViz .enterprise-panel,
            #modeViz .sync-table-panel {
                height: auto !important;
                max-height: none !important;
            }

            #modeViz .sync-table-wrap {
                max-height: none;
            }
        }

        /* App 模式：正文近白，黑底可读 */
        html.in-huytech-app {
            --text-color: #f5f5f5;
            --primary-color: #ffffff;
        }
        html.in-huytech-app header p,
        html.in-huytech-app .stat-lbl,
        html.in-huytech-app .formula-hint,
        html.in-huytech-app .formula-desc,
        html.in-huytech-app .forecast-note,
        html.in-huytech-app .forecast-pill .lbl,
        html.in-huytech-app .enterprise-dim-body,
        html.in-huytech-app .enterprise-plan-list,
        html.in-huytech-app .section-title {
            color: #f3f4f6 !important;
        }
        html.in-huytech-app header h1,
        html.in-huytech-app .panel-title {
            color: #ffffff !important;
        }

        /* ========== 顶栏工况小票打印机（紧挨品牌右侧） ========== */
        .navbar .logo-container {
            position: relative !important;
            left: auto !important;
            display: flex !important;
            align-items: center;
            gap: 16px;
            flex: 0 0 auto;
            z-index: 1003;
        }
        .navbar .logo-link {
            position: relative;
            z-index: 2;
            flex: 0 0 auto;
        }
        .lab-receipt-slot {
            position: relative;
            flex: 0 0 auto;
            width: auto;
            min-width: 0;
            display: flex;
            align-items: center;
            justify-content: flex-start;
            z-index: 1;
            pointer-events: none;
            overflow: visible;
            padding-top: 4px;
            padding-bottom: 2px;
            min-height: 40px;
            margin: 0;
        }
        /*
         * .lab-printer-wrap ≈ 原版 .wrapper
         * 色：枪灰（深灰机身 + 浅银边高光），贴合暗色顶栏
         */
        .lab-receipt-slot .lab-printer-wrap {
            --printer-color: #3e424a;
            --printer-color-2: #2a2e36;
            --printer-hilite: #6a707c;
            --printer-face: #484d57;
            pointer-events: auto;
            position: relative;
            display: block;
            width: min(168px, 38vw);
            height: 36px;
            margin: 4px 0 0;
            padding: 0;
            border: none;
            border-radius: 0;
            background: transparent;
            box-shadow: none;
            overflow: visible;
            user-select: none;
            font-size: 12px;
            cursor: pointer;
        }
        .lab-receipt-slot .lab-printer-wrap:focus-visible {
            outline: 2px solid rgba(253, 189, 74, 0.7);
            outline-offset: 3px;
        }
        /* 机身主体 ≈ 原版 .printer */
        .lab-printer {
            position: relative;
            width: 100%;
            height: 100%;
            border-radius: 0 0 6px 6px;
            background-color: var(--printer-color);
            background-image:
                linear-gradient(180deg, rgba(255, 255, 255, 0.08) 0%, transparent 42%, rgba(0, 0, 0, 0.22) 100%),
                url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAUVBMVEWFhYWDg4N3d3dtbW17e3t1dXWBgYGHh4d5eXlzc3OLi4ubm5uVlZWPj4+NjY19fX2JiYl/f39ra2uRkZGZmZlpaWmXl5dvb29xcXGTk5NnZ2c8TV1mAAAAG3RSTlNAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAvEOwtAAAFVklEQVR4XpWWB67c2BUFb3g557T/hRo9/WUMZHlgr4Bg8Z4qQgQJlHI4A8SzFVrapvmTF9O7dmYRFZ60YiBhJRCgh1FYhiLAmdvX0CzTOpNE77ME0Zty/nWWzchDtiqrmQDeuv3powQ5ta2eN0FY0InkqDD73lT9c9lEzwUNqgFHs9VQce3TVClFCQrSTfOiYkVJQBmpbq2L6iZavPnAPcoU0dSw0SUTqz/GtrGuXfbyyBniKykOWQWGqwwMA7QiYAxi+IlPdqo+hYHnUt5ZPfnsHJyNiDtnpJyayNBkF6cWoYGAMY92U2hXHF/C1M8uP/ZtYdiuj26UdAdQQSXQErwSOMzt/XWRWAz5GuSBIkwG1H3FabJ2OsUOUhGC6tK4EMtJO0ttC6IBD3kM0ve0tJwMdSfjZo+EEISaeTr9P3wYrGjXqyC1krcKdhMpxEnt5JetoulscpyzhXN5FRpuPHvbeQaKxFAEB6EN+cYN6xD7RYGpXpNndMmZgM5Dcs3YSNFDHUo2LGfZuukSWyUYirJAdYbF3MfqEKmjM+I2EfhA94iG3L7uKrR+GdWD73ydlIB+6hgref1QTlmgmbM3/LeX5GI1Ux1RWpgxpLuZ2+I+IjzZ8wqE4nilvQdkUdfhzI5QDWy+kw5Wgg2pGpeEVeCCA7b85BO3F9DzxB3cdqvBzWcmzbyMiqhzuYqtHRVG2y4x+KOlnyqla8AoWWpuBoYRxzXrfKuILl6SfiWCbjxoZJUaCBj1CjH7GIaDbc9kqBY3W/Rgjda1iqQcOJu2WW+76pZC9QG7M00dffe9hNnseupFL53r8F7YHSwJWUKP2q+k7RdsxyOB11n0xtOvnW4irMMFNV4H0uqwS5ExsmP9AxbDTc9JwgneAT5vTiUSm1E7BSflSt3bfa1tv8Di3R8n3Af7MNWzs49hmauE2wP+ttrq+AsWpFG2awvsuOqbipWHgtuvuaAE+A1Z/7gC9hesnr+7wqCwG8c5yAg3AL1fm8T9AZtp/bbJGwl1pNrE7RuOX7PeMRUERVaPpEs+yqeoSmuOlokqw49pgomjLeh7icHNlG19yjs6XXOMedYm5xH2YxpV2tc0Ro2jJfxC50ApuxGob7lMsxfTbeUv07TyYxpeLucEH1gNd4IKH2LAg5TdVhlCafZvpskfncCfx8pOhJzd76bJWeYFnFciwcYfubRc12Ip/ppIhA1/mSZ/RxjFDrJC5xifFjJpY2Xl5zXdguFqYyTR1zSp1Y9p+tktDYYSNflcxI0iyO4TPBdlRcpeqjK/piF5bklq77VSEaA+z8qmJTFzIWiitbnzR794USKBUaT0NTEsVjZqLaFVqJoPN9ODG70IPbfBHKK+/q/AWR0tJzYHRULOa4MP+W/HfGadZUbfw177G7j/OGbIs8TahLyynl4X4RinF793Oz+BU0saXtUHrVBFT/DnA3ctNPoGbs4hRIjTok8i+algT1lTHi4SxFvONKNrgQFAq2/gFnWMXgwffgYMJpiKYkmW3tTg3ZQ9Jq+f8XN+A5eeUKHWvJWJ2sgJ1Sop+wwhqFVijqWaJhwtD8MNlSBeWNNWTa5Z5kPZw5+LbVT99wqTdx29lMUH4OIG/D86ruKEauBjvH5xy6um/Sfj7ei6UUVk4AIl3MyD4MSSTOFgSwsH/QJWaQ5as7ZcmgBZkzjjU1UrQ74ci1gWBCSGHtuV1H2mhSnO3Wp/3fEV5a+4wz//6qy8JxjZsmxxy5+4w9CDNJY09T072iKG0EnOS0arEYgXqYnXcYHwjTtUNAcMelOd4xpkoqiTYICWFq0JSiPfPDQdnt+4/wuqcXY47QILbgAAAABJRU5ErkJggg==");
            border: 1.5px solid var(--printer-color-2);
            box-shadow:
                0 10px 18px 0 rgba(0, 0, 0, 0.45),
                0 -14px 10px 0 rgba(0, 0, 0, 0.2),
                inset 0 1px 0 rgba(255, 255, 255, 0.12);
            z-index: 0;
            flex: none;
        }
        /* 上盖：略亮一档的枪灰面板 */
        .lab-printer::before {
            content: "";
            position: absolute;
            top: -12px;
            left: -1.5px;
            right: -1.5px;
            height: 28px;
            border-radius: 7px 7px 0 0;
            border-bottom: 1px solid rgba(0, 0, 0, 0.35);
            box-sizing: border-box;
            background-color: var(--printer-face);
            background-image: inherit;
            filter: brightness(1.08);
            box-shadow:
                0 8px 10px -8px rgba(255, 255, 255, 0.18) inset,
                0 -4px 10px -4px rgba(0, 0, 0, 0.4) inset,
                0 3px 5px -3px rgba(0, 0, 0, 0.35);
            z-index: 2;
            pointer-events: none;
        }
        /* 出纸凹槽 */
        .lab-printer::after {
            content: "";
            position: absolute;
            top: 8px;
            left: 12px;
            width: calc(100% - 24px);
            height: 18px;
            border-radius: 0 0 3px 3px;
            border-bottom: 1px solid rgba(0, 0, 0, 0.4);
            background-color: var(--printer-color);
            background-image: linear-gradient(
                to top,
                #1c1e24,
                55%,
                var(--printer-color-2)
            );
            box-shadow:
                0 3px 3px -1px rgba(0, 0, 0, 0.45),
                inset 0 1px 2px rgba(0, 0, 0, 0.5);
            z-index: 1;
            pointer-events: none;
        }
        /* 嵌屏：黑底 + 扫描线 + 荧光绿（整机可点，不再单独放按键） */
        .lab-printer-display {
            position: absolute;
            z-index: 3;
            top: -4px;
            left: 12px;
            right: 12px;
            width: auto;
            height: 20px;
            min-width: 0;
            padding: 2px 8px;
            border-radius: 4px;
            box-sizing: border-box;
            background-color: #050607;
            background-image: linear-gradient(transparent 0, rgba(255, 255, 255, 0.08) 90%, transparent 100%);
            background-size: 100% 5px;
            background-repeat: no-repeat;
            border: 1.5px solid var(--printer-hilite);
            box-shadow:
                -1px -1px 1px 0 rgba(255, 255, 255, 0.12) inset,
                1px 1px 3px 1px #000 inset,
                0 0 0 1px rgba(0, 0, 0, 0.35);
            overflow: hidden;
            display: flex;
            align-items: center;
            filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.35));
            pointer-events: none;
        }
        .lab-printer-message {
            font-family: "Courier New", Courier, monospace;
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.02em;
            color: #5aff5a;
            white-space: nowrap;
            transition: opacity 0.15s ease;
            line-height: 1;
        }
        .lab-printer-letters {
            position: absolute;
            inset: 0;
            display: none;
            align-items: center;
            justify-content: center;
            gap: 0;
            padding: 0 3px;
            font-family: "Courier New", Courier, monospace;
        }
        .lab-printer-letter {
            display: inline-block;
            font-size: 9px;
            font-weight: 700;
            color: #5aff5a;
            opacity: 0;
        }
        .lab-receipt-slot .lab-printer-wrap:hover .lab-printer {
            filter: brightness(1.06);
        }
        .lab-receipt-slot .lab-printer-wrap:active .lab-printer {
            filter: brightness(0.96);
        }
        .lab-printer-wrap.is-printing .lab-printer-message {
            opacity: 0;
        }
        .lab-printer-wrap.is-printing .lab-printer-letters {
            display: flex;
        }
        .lab-printer-wrap.is-printing .lab-printer-letter {
            animation: labPrinterLetter 0.6s 1 forwards linear;
        }
        .lab-printer-wrap.is-printing .lab-printer-letter:nth-child(1) { animation-delay: 0.05s; }
        .lab-printer-wrap.is-printing .lab-printer-letter:nth-child(2) { animation-delay: 0.1s; }
        .lab-printer-wrap.is-printing .lab-printer-letter:nth-child(3) { animation-delay: 0.15s; }
        .lab-printer-wrap.is-printing .lab-printer-letter:nth-child(4) { animation-delay: 0.2s; }
        .lab-printer-wrap.is-printing .lab-printer-letter:nth-child(5) { animation-delay: 0.25s; }
        .lab-printer-wrap.is-printing .lab-printer-letter:nth-child(6) { animation-delay: 0.3s; }
        @keyframes labPrinterLetter {
            10%, 100% { opacity: 1; }
        }

        /*
         * 小票三阶段：
         * 1) is-printing：与机身同宽（略窄）从底缝吐出
         * 2) is-open：短暂悬停在机身下
         * 3) is-expanded + --hero：FLIP 放大铺满视口中央 + 遮罩
         */
        .lab-receipt-scrim {
            position: fixed;
            inset: 0;
            z-index: 10040;
            /* 轻遮罩即可；禁止 blur，避免把小票一起糊掉 */
            background: rgba(0, 0, 0, 0.28);
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.35s ease;
        }
        .lab-receipt-scrim.is-on {
            opacity: 1;
            pointer-events: auto;
        }

        .lab-receipt-wrapper {
            position: absolute;
            top: 100%;
            left: 50%;
            /* 对齐出纸凹槽宽度，略窄于机身 */
            width: calc(100% - 36px);
            max-width: none;
            max-height: min(52vh, 360px);
            overflow: visible;
            z-index: 1;
            filter: drop-shadow(0 0 10px rgba(0, 0, 0, 0.14));
            transform: translateX(-50%) translateY(-100%);
            clip-path: inset(100% -40px -40px -40px);
            pointer-events: none;
            box-sizing: border-box;
        }
        .lab-receipt-wrapper[hidden] {
            display: none !important;
        }
        .lab-printer-wrap.is-printing .lab-receipt-wrapper,
        .lab-printer-wrap.is-open .lab-receipt-wrapper {
            display: block !important;
            pointer-events: auto;
        }
        .lab-printer-wrap.is-printing .lab-receipt-wrapper {
            transform-origin: top center;
            animation:
                labPrintSlide 1.15s 1 forwards ease-in,
                labReceiptPop 0.38s 0.9s 1 forwards cubic-bezier(0, 0.63, 0.96, 1.1);
        }
        /* 吐出后短暂窄条悬停 */
        .lab-printer-wrap.is-open:not(.is-printing):not(.is-expanded) .lab-receipt-wrapper {
            z-index: 30;
            transform-origin: top center;
            transform: translateX(-50%) translateY(14px) scale(1.02);
            clip-path: inset(-16px -40px -40px -40px);
            filter: drop-shadow(0 12px 18px rgba(0, 0, 0, 0.35));
        }
        @keyframes labPrintSlide {
            0% {
                transform: translateX(-50%) translateY(-100%);
                clip-path: inset(100% -40px -40px -40px);
            }
            100% {
                transform: translateX(-50%) translateY(8px);
                clip-path: inset(-10% -40px -40px -40px);
            }
        }
        @keyframes labReceiptPop {
            0% {
                transform: translateX(-50%) translateY(8px) scale(1);
            }
            35% {
                transform: translateX(-50%) translateY(18px) rotate3d(1, 0, 1, -2.5deg) scale(1.02);
            }
            100% {
                z-index: 30;
                transform: translateX(-50%) translateY(14px) scale(1.02);
                clip-path: inset(-16px -40px -40px -40px);
                filter: drop-shadow(0 12px 18px rgba(0, 0, 0, 0.35));
            }
        }

        /* FLIP 展开中：几何由 JS 写 inline，这里只声明过渡曲线 */
        .lab-receipt-wrapper.lab-receipt-wrapper--morphing {
            z-index: 10050 !important;
            clip-path: none !important;
            animation: none !important;
            will-change: left, top, width, height, transform, filter;
            transition:
                left 0.62s cubic-bezier(0.22, 1, 0.36, 1),
                top 0.62s cubic-bezier(0.22, 1, 0.36, 1),
                width 0.62s cubic-bezier(0.22, 1, 0.36, 1),
                max-height 0.62s cubic-bezier(0.22, 1, 0.36, 1),
                transform 0.62s cubic-bezier(0.22, 1, 0.36, 1),
                filter 0.5s ease;
        }
        /* 展开完成：按内容高度收缩，最高不超过视口，底栏按钮始终可见 */
        .lab-receipt-wrapper.lab-receipt-wrapper--hero {
            position: fixed !important;
            left: 50% !important;
            top: 50% !important;
            width: min(480px, calc(100vw - 24px)) !important;
            height: auto !important;
            max-height: calc(100vh - 32px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)) !important;
            transform: translate(-50%, -50%) !important;
            z-index: 10050 !important;
            clip-path: none !important;
            animation: none !important;
            filter: drop-shadow(0 22px 40px rgba(0, 0, 0, 0.35));
            opacity: 1 !important;
            pointer-events: auto !important;
            display: flex !important;
            flex-direction: column;
            box-sizing: border-box;
            overflow: visible;
        }
        body > .lab-receipt-wrapper.lab-receipt-wrapper--morphing,
        body > .lab-receipt-wrapper.lab-receipt-wrapper--hero {
            /* 脱离 navbar 层叠上下文，确保压在 scrim 上面、画面清晰 */
            isolation: isolate;
        }
        .lab-receipt-wrapper.lab-receipt-wrapper--hero .lab-receipt {
            background: #f7f7f5;
            opacity: 1;
            filter: none;
            flex: 0 1 auto;
            min-height: 0;
            height: auto;
            max-height: inherit;
            display: flex;
            flex-direction: column;
            overflow: visible;
            box-sizing: border-box;
        }
        .lab-receipt-wrapper.lab-receipt-wrapper--hero.is-settling {
            animation: labReceiptSettle 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
        }
        @keyframes labReceiptSettle {
            0% { transform: translate(-50%, -50%) scale(0.94) rotate(-0.8deg); }
            55% { transform: translate(-50%, -50%) scale(1.02) rotate(0.4deg); }
            100% { transform: translate(-50%, -50%) scale(1) rotate(0deg); }
        }
        .lab-receipt-wrapper.is-closing {
            opacity: 0 !important;
            transform: translate(-50%, -46%) scale(0.88) !important;
            filter: blur(2px) !important;
            transition: opacity 0.28s ease, transform 0.28s ease, filter 0.28s ease !important;
        }

        .lab-receipt {
            position: relative;
            display: flex;
            flex-direction: column;
            gap: 0.55em;
            margin-top: 0;
            padding: 10px 8px 10px;
            background: #f5f5f5;
            color: #444;
            border: none;
            border-radius: 0;
            font-family: "Azeret Mono", "SF Mono", "Menlo", "Consolas", "Courier New", monospace;
            font-size: 10px;
            line-height: 1.4;
            box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
            overflow: visible;
            max-height: none;
            transition: padding 0.5s ease, font-size 0.5s ease, gap 0.5s ease;
        }
        .lab-receipt-body {
            display: flex;
            flex-direction: column;
            gap: inherit;
            max-height: min(48vh, 320px);
            overflow: auto;
            -webkit-overflow-scrolling: touch;
            transition: max-height 0.55s ease;
        }
        .lab-receipt-wrapper--hero .lab-receipt {
            padding: 16px 16px 12px;
            font-size: 13px;
            gap: 0.7em;
            line-height: 1.45;
        }
        .lab-receipt-wrapper--hero .lab-receipt-body {
            flex: 1 1 auto;
            min-height: 0;
            /* 内容短则随内容；过长才滚动，避免大片空白 */
            max-height: min(58vh, 520px);
            overflow: auto;
            gap: 0.75em;
            padding-bottom: 2px;
        }
        .lab-receipt-wrapper--hero .lab-receipt-actions {
            flex: 0 0 auto;
            position: relative;
            z-index: 2;
            margin-top: 2px;
            padding-top: 10px;
            border-top: 1px dashed #b9ae98;
            background: #f7f7f5;
        }
        .lab-receipt-wrapper--hero .lab-receipt-brand {
            font-size: 16px;
        }
        .lab-receipt-wrapper--hero .lab-receipt-scene,
        .lab-receipt-wrapper--hero .lab-receipt-time,
        .lab-receipt-wrapper--hero .lab-receipt-subheader,
        .lab-receipt-wrapper--hero .lab-receipt-table th {
            font-size: 12px;
        }
        .lab-receipt-wrapper--hero .lab-receipt-sysprint,
        .lab-receipt-wrapper--hero .lab-receipt-close {
            font-size: 12px;
            padding: 8px 16px;
        }
        /* 经典锯齿撕边 */
        .lab-receipt::before,
        .lab-receipt::after {
            --angle: 45deg;
            content: "";
            display: block;
            position: absolute;
            left: 0;
            width: 100%;
            height: 6px;
            background:
                linear-gradient(calc(var(--angle) * -1), #f5f5f5 3px, transparent 0),
                linear-gradient(var(--angle), #f5f5f5 3px, transparent 0);
            background-size: 6px 6px;
            background-repeat: repeat-x;
            pointer-events: none;
        }
        .lab-receipt::before {
            top: -6px;
            background-position: 3px 0;
        }
        .lab-receipt::after {
            bottom: -6px;
            background-position: 0 100%;
            --angle: 225deg;
        }
        .lab-receipt-header {
            position: relative;
            text-align: center;
            padding-bottom: 8px;
            border-bottom: 1px dashed #b9ae98;
            margin-bottom: 2px;
        }
        .lab-receipt-brand {
            font-size: 12px;
            font-weight: 800;
            letter-spacing: 0.02em;
        }
        .lab-receipt-scene,
        .lab-receipt-time {
            margin-top: 2px;
            color: #555;
            font-size: 10px;
        }
        .lab-receipt-logo {
            position: absolute;
            right: 0;
            top: 0;
            font-size: 14px;
            opacity: 0.7;
        }
        .lab-receipt-subheader {
            text-align: center;
            margin-bottom: 4px;
            color: #333;
            font-size: 10px;
        }
        .lab-receipt-table {
            width: 100%;
            border-collapse: collapse;
            margin-bottom: 4px;
        }
        .lab-receipt-table th,
        .lab-receipt-table td {
            border-bottom: 1px dotted #cfc5b0;
            padding: 3px 2px;
            text-align: left;
            vertical-align: top;
        }
        .lab-receipt-table th {
            font-size: 10px;
            color: #666;
            font-weight: 700;
        }
        .lab-receipt-table td:last-child {
            text-align: right;
            font-variant-numeric: tabular-nums;
        }
        .lab-receipt-table tr.lab-receipt-total td {
            border-bottom: none;
            border-top: 1px solid #1a1a1a;
            padding-top: 6px;
            font-weight: 800;
        }
        .lab-receipt-devices {
            margin: 4px 0 4px;
            padding-top: 6px;
            border-top: 1px dashed #b9ae98;
        }
        .lab-receipt-devices-title {
            font-size: 10px;
            font-weight: 700;
            margin-bottom: 4px;
            color: #444;
        }
        .lab-receipt-dev-row {
            display: grid;
            grid-template-columns: 1fr auto auto;
            gap: 6px;
            font-size: 10px;
            padding: 1px 0;
        }
        .lab-receipt-dev-row .name {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .lab-receipt-message {
            text-align: center;
            font-size: 10px;
            color: #555;
            margin: 4px 0 6px;
        }
        .lab-receipt-actions {
            display: flex;
            gap: 6px;
            justify-content: center;
        }
        .lab-receipt-sysprint,
        .lab-receipt-close {
            appearance: none;
            border: 1px solid #b9ae98;
            background: #fff;
            color: #222;
            border-radius: 4px;
            font-size: 10px;
            font-weight: 700;
            padding: 4px 8px;
            cursor: pointer;
        }
        .lab-receipt-sysprint:hover,
        .lab-receipt-close:hover {
            background: #efe8d8;
        }

        /* 窄屏：只保留打印键，不展示完整机身 */
        @media (max-width: 640px) {
            .lab-receipt-slot {
                padding-top: 0;
                padding-bottom: 0;
                min-height: 0;
                align-items: center;
                flex: 0 0 auto;
            }
            .lab-receipt-slot .lab-printer-wrap {
                width: min(92px, 34vw);
                height: 28px;
                margin: 0;
            }
            .lab-printer-display {
                left: 6px;
                right: 6px;
                top: -2px;
                height: 18px;
                padding: 1px 4px;
            }
            .lab-printer-display .lab-printer-message {
                font-size: 9px;
            }
            /* 吐纸仍从机身下方弹出，宽度按视口 */
            .lab-receipt-wrapper {
                width: min(220px, calc(100vw - 24px));
                left: 50%;
            }
            .lab-receipt-wrapper.lab-receipt-wrapper--hero {
                width: min(480px, calc(100vw - 16px)) !important;
                height: auto !important;
                max-height: calc(100vh - 24px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)) !important;
            }
            .lab-receipt-wrapper--hero .lab-receipt-body {
                max-height: min(52vh, 420px);
            }
        }

        /* 避免 body * { visibility:hidden } —— 在 Electron/复杂 SPA 里排版极易卡死 */
        @media print {
            html.lab-sys-printing body > *:not(.navbar),
            html.lab-sys-printing .navbar > *:not(.lab-receipt-slot),
            html.lab-sys-printing .lab-receipt-slot > *:not(.lab-printer-wrap),
            html.lab-sys-printing .lab-printer-wrap > *:not(.lab-receipt-wrapper),
            html.lab-sys-printing .lab-printer,
            html.lab-sys-printing .lab-printer-display {
                display: none !important;
            }
            html.lab-sys-printing .navbar,
            html.lab-sys-printing .lab-receipt-slot,
            html.lab-sys-printing .lab-printer-wrap {
                display: block !important;
                position: static !important;
                height: auto !important;
                min-height: 0 !important;
                overflow: visible !important;
                background: transparent !important;
                border: none !important;
                box-shadow: none !important;
            }
            #labReceiptWrapper {
                position: static !important;
                left: auto !important;
                top: auto !important;
                transform: none !important;
                clip-path: none !important;
                max-height: none !important;
                overflow: visible !important;
                filter: none !important;
                display: block !important;
                animation: none !important;
                width: 320px !important;
                margin: 0 auto !important;
            }
            .lab-receipt-actions {
                display: none !important;
            }
            .lab-receipt,
            .lab-receipt-body {
                animation: none !important;
                box-shadow: none !important;
                max-height: none !important;
                overflow: visible !important;
            }
        }

/* ─── Tool Diff 回显 ─── */

.agent-tool-result {
    padding: 10px 14px;
    margin: 6px 0;
    border-radius: 10px;
    background: rgba(255,255,255,0.04);
    border-left: 3px solid rgba(255,255,255,0.15);
    font-size: 13.5px;
    line-height: 1.5;
}
.agent-tool-result.is-ok {
    border-left-color: #7a947a;
}
.agent-tool-result.is-fail {
    border-left-color: #a86a62;
}
.agent-tool-header {
    font-weight: 500;
    margin-bottom: 4px;
}
.agent-diff-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 10px;
    margin-top: 6px;
}
.agent-diff-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    border-radius: 6px;
    background: rgba(255,255,255,0.06);
    font-size: 12.5px;
    line-height: 1.4;
    white-space: nowrap;
}
.diff-label {
    color: #94a3b8;
    font-weight: 500;
}
.diff-from {
    color: #a0a0a0;
    text-decoration: line-through;
}
.diff-arrow {
    color: #64748b;
    font-size: 11px;
}
.diff-to {
    color: #e8c49a;
    font-weight: 600;
}
