        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Microsoft YaHei', 'PingFang SC', sans-serif;
            background-color: #f0f4f8;
            min-height: 100vh;
            display: flex;
            flex-direction: column;
        }

        .header {
            background: linear-gradient(135deg, #1e4d8c 0%, #2c5aa0 100%);
            color: white;
            padding: 16px 24px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            box-shadow: 0 2px 8px rgba(0,0,0,0.15);
        }

        .header h1 {
            font-size: 20px;
            font-weight: 600;
        }

        .header-right {
            display: flex;
            align-items: center;
            gap: 20px;
        }

        .header-right span {
            font-size: 14px;
            opacity: 0.9;
        }

        .container {
            display: flex;
            flex: 1;
            overflow: hidden;
        }

        .sidebar {
            width: 220px;
            background-color: #1a365d;
            color: white;
            padding: 16px 0;
            overflow-y: auto;
        }

        .sidebar-title {
            font-size: 16px;
            font-weight: 600;
            padding: 12px 20px;
            color: #7eb8ea;
            border-bottom: 1px solid #2d4a6f;
            margin-bottom: 8px;
        }

        .nav-item {
            padding: 12px 24px;
            cursor: pointer;
            transition: all 0.3s ease;
            font-size: 14px;
            position: relative;
        }

        .nav-item:hover {
            background-color: #2c5282;
        }

        .nav-item.active {
            background-color: #2c5282;
            border-left: 4px solid #4facfe;
        }

        .nav-item.active::before {
            content: '';
            position: absolute;
            left: 0;
            top: 50%;
            transform: translateY(-50%);
            width: 4px;
            height: 24px;
            background-color: #4facfe;
        }

        .main-content {
            flex: 1;
            padding: 24px;
            overflow-y: auto;
            background-color: #f0f4f8;
        }

        .page {
            display: none;
            animation: fadeIn 0.3s ease;
        }

        .page.active {
            display: block;
        }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }

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

        .page-title {
            font-size: 20px;
            font-weight: 600;
            color: #1a365d;
        }

        .page-subtitle {
            font-size: 14px;
            color: #6b7280;
            margin-top: 4px;
        }

        .month-selector {
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .month-selector label {
            font-size: 14px;
            color: #4b5563;
        }

        .month-selector select {
            padding: 6px 12px;
            border: 1px solid #d1d5db;
            border-radius: 4px;
            font-size: 14px;
        }

        .stats-cards {
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            gap: 12px;
            margin-bottom: 24px;
        }

        #tab1 .stats-cards {
            grid-template-columns: repeat(5, minmax(0, 1fr));
        }

        #tab4 .stats-cards {
            grid-template-columns: repeat(3, minmax(0, 1fr));
        }

        #tab2 .stats-cards {
            grid-template-columns: repeat(6, minmax(0, 1fr));
        }

        #tab4 .deviation-card {
            min-width: 0;
        }

        .stat-card {
            background: white;
            padding: 16px 18px;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
            display: flex;
            flex-direction: column;
            justify-content: center;
            min-height: 90px;
        }

        .stat-card .label {
            font-size: 16px;
            color: #374151;
            margin-bottom: 8px;
            font-weight: 600;
        }

        .stat-card .value {
            font-size: 32px;
            font-weight: 700;
            color: #1e4d8c;
        }

        .stat-card .change {
            font-size: 14px;
            margin-top: 6px;
            font-weight: 500;
        }

        .stat-card .change.positive {
            color: #10b981;
        }

        .stat-card .change.negative {
            color: #ef4444;
        }

        .content-grid {
            display: grid;
            grid-template-columns: 60% 40%;
            gap: 20px;
            margin-bottom: 24px;
        }

        .panel {
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
            padding: 20px;
        }

        .panel-title {
            font-size: 16px;
            font-weight: 600;
            color: #1a365d;
            margin-bottom: 16px;
            padding-bottom: 12px;
            border-bottom: 2px solid #e5e7eb;
        }

        .gantt-container {
            display: flex;
            flex-direction: column;
            gap: 16px;
            max-height: 450px;
            overflow-y: auto;
        }

        .gantt-item {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .gantt-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .gantt-channel {
            font-size: 14px;
            font-weight: 500;
            color: #374151;
        }

        .gantt-percent {
            font-size: 14px;
            font-weight: 600;
            color: #1e4d8c;
        }

        .gantt-bar-container {
            position: relative;
            height: 28px;
            background-color: #f3f4f6;
            border-radius: 4px;
            overflow: hidden;
        }

        .gantt-bar {
            height: 100%;
            display: flex;
        }

        .gantt-segment {
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 11px;
            color: white;
            font-weight: 500;
            position: relative;
        }

        .segment-approved { background-color: #9ca3af; }
        .segment-construction { background-color: #4facfe; }
        .segment-installation { background-color: #ff9f43; }
        .segment-completed { background-color: #10b981; }

        .gantt-node {
            position: absolute;
            top: -6px;
            width: 14px;
            height: 14px;
            border-radius: 50%;
            background-color: white;
            border: 3px solid #374151;
            transform: translateX(-50%);
        }

        .gantt-lag {
            position: absolute;
            right: 8px;
            top: 50%;
            transform: translateY(-50%);
            font-size: 12px;
            font-weight: 600;
            color: #ef4444;
            animation: blink 1s infinite;
        }

        @keyframes blink {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.5; }
        }

        .status-tabs {
            display: flex;
            gap: 8px;
            margin-bottom: 16px;
        }

        .status-tab {
            padding: 6px 16px;
            border-radius: 4px;
            font-size: 13px;
            cursor: pointer;
            background-color: #f3f4f6;
            color: #6b7280;
            border: none;
            transition: all 0.3s ease;
        }

        .status-tab.active {
            background-color: #1e4d8c;
            color: white;
        }

        .progress-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }

        .progress-table th,
        .progress-table td {
            padding: 10px 12px;
            text-align: left;
            border-bottom: 1px solid #e5e7eb;
        }

        .progress-table th {
            background-color: #f9fafb;
            font-weight: 600;
            color: #374151;
        }

        .status-badge {
            display: inline-block;
            padding: 2px 8px;
            border-radius: 12px;
            font-size: 12px;
            font-weight: 500;
        }

        .status-normal { background-color: #d1fae5; color: #065f46; }
        .status-warning { background-color: #fef3c7; color: #92400e; }
        .status-lag { background-color: #fee2e2; color: #991b1b; }

        .timeline {
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
            padding: 20px;
        }

        .timeline-title {
            font-size: 16px;
            font-weight: 600;
            color: #1a365d;
            margin-bottom: 20px;
        }

        .timeline-container {
            position: relative;
            display: flex;
            justify-content: space-between;
            padding-top: 20px;
        }

        .timeline-line {
            position: absolute;
            top: 10px;
            left: 0;
            right: 0;
            height: 2px;
            background-color: #e5e7eb;
        }

        .timeline-event {
            display: flex;
            flex-direction: column;
            align-items: center;
            position: relative;
            flex: 1;
        }

        .timeline-dot {
            width: 16px;
            height: 16px;
            border-radius: 50%;
            background-color: #4facfe;
            border: 3px solid white;
            box-shadow: 0 0 0 2px #4facfe;
            z-index: 1;
        }

        .timeline-date {
            font-size: 12px;
            color: #6b7280;
            margin-top: 8px;
            text-align: center;
        }

        .timeline-desc {
            font-size: 12px;
            color: #374151;
            margin-top: 4px;
            text-align: center;
            max-width: 140px;
            line-height: 1.4;
        }

        .filter-bar {
            display: flex;
            gap: 16px;
            align-items: center;
            background: white;
            padding: 16px 20px;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
            margin-bottom: 24px;
        }

        .filter-bar label {
            font-size: 14px;
            color: #4b5563;
        }

        .filter-bar select {
            padding: 6px 12px;
            border: 1px solid #d1d5db;
            border-radius: 4px;
            font-size: 14px;
            min-width: 140px;
        }

        .filter-bar button {
            padding: 6px 20px;
            background-color: #1e4d8c;
            color: white;
            border: none;
            border-radius: 4px;
            font-size: 14px;
            cursor: pointer;
        }

        .filter-bar button:hover {
            background-color: #2c5aa0;
        }

        .chart-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 20px;
            margin-bottom: 20px;
        }

        .chart-grid-3 {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 20px;
            margin-bottom: 20px;
        }

        .chart-container {
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
            padding: 20px;
            height: 380px;
        }

        .chart-title {
            font-size: 15px;
            font-weight: 600;
            color: #1a365d;
            margin-bottom: 12px;
        }

        .chart {
            width: 100%;
            height: calc(100% - 40px);
        }

        .data-table-container {
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
            padding: 20px;
            margin-bottom: 20px;
        }

        .table-tabs {
            display: flex;
            gap: 8px;
            margin-bottom: 16px;
        }

        .table-tab {
            padding: 6px 16px;
            border-radius: 4px;
            font-size: 13px;
            cursor: pointer;
            background-color: #f3f4f6;
            color: #6b7280;
            border: none;
            transition: all 0.3s ease;
        }

        .table-tab.active {
            background-color: #1e4d8c;
            color: white;
        }

        .data-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }

        .data-table th,
        .data-table td {
            padding: 10px 12px;
            text-align: left;
            border-bottom: 1px solid #e5e7eb;
        }

        .data-table th {
            background-color: #f9fafb;
            font-weight: 600;
            color: #374151;
        }

        .data-table tfoot td {
            background-color: #f9fafb;
            font-weight: 600;
            color: #1a365d;
        }

        .export-buttons {
            display: flex;
            gap: 10px;
            margin-top: 16px;
            justify-content: flex-end;
        }

        .export-btn {
            padding: 6px 16px;
            border-radius: 4px;
            font-size: 13px;
            cursor: pointer;
            border: 1px solid #d1d5db;
            background-color: white;
            color: #4b5563;
            display: flex;
            align-items: center;
            gap: 6px;
        }

        .export-btn:hover {
            background-color: #f3f4f6;
        }

        .export-btn.primary {
            background-color: #1e4d8c;
            color: white;
            border-color: #1e4d8c;
        }

        .export-btn.primary:hover {
            background-color: #2c5aa0;
        }

        .export-btn.green {
            background-color: #10b981;
            color: white;
            border-color: #10b981;
        }

        .export-btn.green:hover {
            background-color: #059669;
        }

        .brief-layout {
            display: grid;
            grid-template-columns: 65% 35%;
            gap: 24px;
        }

        .a4-paper {
            background: white;
            border-radius: 4px;
            box-shadow: 0 4px 20px rgba(0,0,0,0.1);
            padding: 40px;
            min-height: 800px;
            position: relative;
        }

        .brief-header {
            text-align: center;
            margin-bottom: 32px;
            padding-bottom: 20px;
            border-bottom: 2px solid #1e4d8c;
        }

        .brief-title {
            background-color: #c92a2a;
            color: white;
            padding: 12px 40px;
            display: inline-block;
            font-size: 20px;
            font-weight: 700;
            margin-bottom: 12px;
        }

        .brief-subtitle {
            font-size: 16px;
            color: #374151;
            margin-bottom: 8px;
        }

        .brief-info {
            display: flex;
            justify-content: space-between;
            align-items: center;
            font-size: 13px;
            color: #6b7280;
        }

        .brief-section {
            margin-bottom: 28px;
        }

        .brief-section-title {
            font-size: 16px;
            font-weight: 600;
            color: #1a365d;
            margin-bottom: 16px;
            padding-left: 12px;
            border-left: 4px solid #4facfe;
        }

        .brief-text {
            font-size: 14px;
            line-height: 1.8;
            color: #374151;
            text-indent: 2em;
            margin-bottom: 16px;
        }

        .brief-stats {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 16px;
            margin-bottom: 20px;
        }

        .brief-stat-card {
            background-color: #f8fafc;
            padding: 18px 20px;
            border-radius: 6px;
            text-align: center;
        }

        .brief-stat-card .label {
            font-size: 16px;
            color: #374151;
            margin-bottom: 10px;
            font-weight: 600;
        }

        .brief-stat-card .value {
            font-size: 28px;
            font-weight: 700;
            color: #1e4d8c;
        }

        .brief-stat-card .target {
            font-size: 14px;
            color: #4b5563;
            margin-top: 6px;
            font-weight: 500;
        }

        .brief-chart {
            width: 100%;
            height: 220px;
            margin-bottom: 16px;
        }

        .brief-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }

        .brief-table th,
        .brief-table td {
            padding: 8px 10px;
            text-align: left;
            border: 1px solid #e5e7eb;
        }

        .brief-table th {
            background-color: #f9fafb;
            font-weight: 600;
            color: #374151;
        }

        .brief-investment {
            display: flex;
            gap: 24px;
        }

        .brief-investment .chart {
            width: 200px;
            height: 200px;
        }

        .brief-investment .bar-chart {
            flex: 1;
            height: 200px;
        }

        .brief-problems, .brief-suggestions {
            font-size: 14px;
            line-height: 1.8;
            color: #374151;
            margin-bottom: 16px;
        }

        .brief-problems li, .brief-suggestions li {
            margin-bottom: 8px;
        }

        .brief-footer {
            display: flex;
            justify-content: space-between;
            margin-top: 40px;
            padding-top: 20px;
            border-top: 1px solid #e5e7eb;
            font-size: 14px;
            color: #6b7280;
        }

        .brief-signature {
            text-align: center;
            flex: 1;
        }

        .brief-signature .name {
            margin-top: 8px;
        }

        .brief-signature .line {
            border-bottom: 1px solid #d1d5db;
            width: 120px;
            margin: 0 auto;
        }

        .panel-right {
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
            padding: 20px;
        }

        .panel-right-title {
            font-size: 15px;
            font-weight: 600;
            color: #1a365d;
            margin-bottom: 16px;
            padding-bottom: 12px;
            border-bottom: 2px solid #e5e7eb;
        }

        .param-group {
            margin-bottom: 20px;
        }

        .param-group label {
            display: block;
            font-size: 14px;
            color: #4b5563;
            margin-bottom: 8px;
        }

        .param-group select {
            width: 100%;
            padding: 8px 12px;
            border: 1px solid #d1d5db;
            border-radius: 4px;
            font-size: 14px;
        }

        .param-group .checkbox-list {
            display: flex;
            flex-wrap: wrap;
            gap: 12px;
        }

        .param-group .checkbox-item {
            display: flex;
            align-items: center;
            gap: 6px;
            font-size: 13px;
            color: #374151;
        }

        .operation-buttons {
            display: flex;
            flex-direction: column;
            gap: 10px;
            margin-bottom: 20px;
        }

        .operation-btn {
            padding: 10px 20px;
            border-radius: 4px;
            font-size: 14px;
            cursor: pointer;
            border: none;
            text-align: center;
            transition: all 0.3s ease;
        }

        .operation-btn.primary {
            background-color: #1e4d8c;
            color: white;
        }

        .operation-btn.primary:hover {
            background-color: #2c5aa0;
        }

        .operation-btn.secondary {
            background-color: white;
            color: #4b5563;
            border: 1px solid #d1d5db;
        }

        .operation-btn.secondary:hover {
            background-color: #f3f4f6;
        }

        .operation-btn.green {
            background-color: #10b981;
            color: white;
        }

        .operation-btn.green:hover {
            background-color: #059669;
        }

        .history-list {
            max-height: 300px;
            overflow-y: auto;
        }

        .history-item {
            padding: 12px;
            border-bottom: 1px solid #f3f4f6;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }

        .history-item:hover {
            background-color: #f9fafb;
        }

        .history-item:last-child {
            border-bottom: none;
        }

        .history-item-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 4px;
        }

        .history-item .period {
            font-size: 14px;
            font-weight: 500;
            color: #374151;
        }

        .history-item .status {
            font-size: 12px;
            padding: 2px 6px;
            border-radius: 10px;
        }

        .history-item .status.published {
            background-color: #d1fae5;
            color: #065f46;
        }

        .history-item .status.draft {
            background-color: #fef3c7;
            color: #92400e;
        }

        .history-item .status.reviewing {
            background-color: #dbeafe;
            color: #1e4d8c;
        }

        .history-item .date {
            font-size: 12px;
            color: #6b7280;
        }

        .deviation-card {
            background: white;
            padding: 20px 22px;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
            min-height: 95px;
        }

        .deviation-card .label {
            font-size: 16px;
            color: #374151;
            margin-bottom: 8px;
            font-weight: 600;
        }

        .deviation-card .value {
            font-size: 32px;
            font-weight: 700;
        }

        .deviation-card .value.negative {
            color: #ef4444;
        }

        .deviation-card .value.positive {
            color: #10b981;
        }

        .deviation-card .detail {
            font-size: 14px;
            color: #4b5563;
            margin-top: 4px;
            font-weight: 500;
        }

        .analysis-section {
            display: grid;
            grid-template-columns: 60% 40%;
            gap: 20px;
            margin-bottom: 20px;
        }

        .deviation-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }

        .deviation-table th,
        .deviation-table td {
            padding: 10px 12px;
            text-align: left;
            border-bottom: 1px solid #e5e7eb;
        }

        .deviation-table th {
            background-color: #f9fafb;
            font-weight: 600;
            color: #374151;
        }

        .deviation-table tfoot td {
            background-color: #f9fafb;
            font-weight: 600;
            color: #1a365d;
        }

        .deviation-level {
            display: inline-block;
            padding: 2px 8px;
            border-radius: 12px;
            font-size: 12px;
            font-weight: 500;
        }

        .level-normal { background-color: #d1fae5; color: #065f46; }
        .level-slight { background-color: #fef3c7; color: #92400e; }
        .level-severe { background-color: #fee2e2; color: #991b1b; }
        .level-ahead { background-color: #dbeafe; color: #1e4d8c; }

        .analysis-summary {
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
            padding: 24px;
        }

        .analysis-summary-title {
            font-size: 16px;
            font-weight: 600;
            color: #1a365d;
            margin-bottom: 20px;
        }

        .analysis-conclusions {
            display: flex;
            flex-wrap: wrap;
            gap: 16px;
            margin-bottom: 20px;
        }

        .conclusion-item {
            background-color: #f8fafc;
            padding: 16px;
            border-radius: 6px;
            flex: 1;
            min-width: 280px;
            display: flex;
            gap: 12px;
        }

        .conclusion-icon {
            width: 32px;
            height: 32px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 16px;
            flex-shrink: 0;
        }

        .conclusion-icon.info {
            background-color: #dbeafe;
            color: #1e4d8c;
        }

        .conclusion-icon.warning {
            background-color: #fef3c7;
            color: #92400e;
        }

        .conclusion-icon.success {
            background-color: #d1fae5;
            color: #065f46;
        }

        .conclusion-text {
            font-size: 13px;
            line-height: 1.6;
            color: #374151;
        }

        .summary-buttons {
            display: flex;
            justify-content: flex-end;
            gap: 12px;
        }

        .summary-btn {
            padding: 8px 20px;
            border-radius: 4px;
            font-size: 14px;
            cursor: pointer;
            border: none;
            transition: all 0.3s ease;
        }

        .summary-btn.primary {
            background-color: #1e4d8c;
            color: white;
        }

        .summary-btn.primary:hover {
            background-color: #2c5aa0;
        }

        .summary-btn.orange {
            background-color: #f97316;
            color: white;
        }

        .summary-btn.orange:hover {
            background-color: #ea580c;
        }

        .summary-btn.secondary {
            background-color: white;
            color: #4b5563;
            border: 1px solid #d1d5db;
        }

        .summary-btn.secondary:hover {
            background-color: #f3f4f6;
        }

        .tooltip {
            position: absolute;
            background-color: rgba(0,0,0,0.85);
            color: white;
            padding: 12px 16px;
            border-radius: 6px;
            font-size: 13px;
            z-index: 1000;
            pointer-events: none;
            opacity: 0;
            transition: opacity 0.3s ease;
            box-shadow: 0 4px 12px rgba(0,0,0,0.3);
        }

        .tooltip.visible {
            opacity: 1;
        }

        .tooltip-item {
            margin-bottom: 6px;
        }

        .tooltip-item:last-child {
            margin-bottom: 0;
        }

        .tooltip-label {
            color: #9ca3af;
            margin-right: 8px;
        }

        .tooltip-value {
            font-weight: 500;
        }
        /* ===== Tab1 新版样式 ===== */
        .t1-filter-bar { background: white; padding: 16px 20px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); margin-bottom: 20px; }
        .t1-filter-row { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }
        .t1-filter-row + .t1-filter-row { margin-top: 12px; }
        .t1-search-box { flex: 1; min-width: 240px; position: relative; }
        .t1-search-box input { width: 100%; padding: 8px 12px 8px 36px; border: 1px solid #d1d5db; border-radius: 4px; font-size: 14px; }
        .t1-search-box::before { content: '🔍'; position: absolute; left: 10px; top: 50%; transform: translateY(-50%); font-size: 14px; }
        .t1-filter-item { display: flex; align-items: center; gap: 6px; }
        .t1-filter-item label { font-size: 13px; color: #4b5563; white-space: nowrap; }
        .t1-filter-item select { padding: 6px 10px; border: 1px solid #d1d5db; border-radius: 4px; font-size: 13px; }
        .t1-btn { padding: 8px 18px; border-radius: 4px; font-size: 14px; cursor: pointer; border: none; transition: all 0.3s; }
        .t1-btn-primary { background-color: #1e4d8c; color: white; }
        .t1-btn-primary:hover { background-color: #2c5aa0; }
        .t1-btn-secondary { background-color: white; color: #4b5563; border: 1px solid #d1d5db; }
        .t1-btn-secondary:hover { background-color: #f3f4f6; }

        .t1-status-tabs { display: flex; gap: 8px; margin-bottom: 16px; border-bottom: 2px solid #e5e7eb; padding-bottom: 12px; }
        .t1-status-tab { padding: 6px 18px; border-radius: 4px; font-size: 14px; cursor: pointer; background-color: #f3f4f6; color: #6b7280; border: none; transition: all 0.3s; }
        .t1-status-tab.active { background-color: #1e4d8c; color: white; }

        .t1-table-wrapper { overflow-x: auto; max-height: 520px; overflow-y: auto; }
        .t1-table { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 1600px; }
        .t1-table th, .t1-table td { padding: 10px 12px; text-align: left; border-bottom: 1px solid #e5e7eb; white-space: nowrap; }
        .t1-table thead th { background-color: #1e4d8c; color: white; font-weight: 600; position: sticky; top: 0; cursor: pointer; user-select: none; z-index: 5; }
        .t1-table thead th:hover { background-color: #2c5aa0; }
        .t1-table tbody tr:hover { background-color: #f0f7ff; }
        .t1-table tbody tr:nth-child(even) { background-color: #f9fafb; }
        .t1-table tbody tr:nth-child(even):hover { background-color: #f0f7ff; }

        .t1-stage-badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 12px; font-weight: 500; }
        .t1-stage-备案审批 { background-color: #f3f4f6; color: #4b5563; }
        .t1-stage-开工建设 { background-color: #dbeafe; color: #1e4d8c; }
        .t1-stage-设备安装 { background-color: #ffedd5; color: #9a3412; }
        .t1-stage-竣工投运 { background-color: #d1fae5; color: #065f46; }

        .t1-status-badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 12px; font-weight: 500; }
        .t1-status-normal { background-color: #d1fae5; color: #065f46; }
        .t1-status-warning { background-color: #fef3c7; color: #92400e; }
        .t1-status-lag { background-color: #fee2e2; color: #991b1b; animation: t1blink 1.2s infinite; }
        @keyframes t1blink { 0%,100% { opacity: 1; } 50% { opacity: 0.55; } }

        .t1-progress-cell { display: flex; align-items: center; gap: 6px; min-width: 100px; }
        .t1-progress-bar { flex: 1; height: 6px; background-color: #e5e7eb; border-radius: 3px; overflow: hidden; min-width: 50px; }
        .t1-progress-fill { height: 100%; background-color: #4facfe; border-radius: 3px; }
        .t1-progress-val { font-size: 12px; font-weight: 600; color: #1e4d8c; min-width: 32px; }

        .t1-link { color: #2563eb; cursor: pointer; text-decoration: none; }
        .t1-link:hover { text-decoration: underline; }

        .t1-summary-row td { background-color: #eef4fb !important; font-weight: 700; color: #1a365d; }

        .t1-pagination { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; border-top: 1px solid #e5e7eb; }
        .t1-pagination-info { font-size: 13px; color: #6b7280; }
        .t1-pagination-btns { display: flex; gap: 6px; }
        .t1-pagination-btns button { padding: 6px 12px; border: 1px solid #d1d5db; border-radius: 4px; background: white; cursor: pointer; font-size: 13px; }
        .t1-pagination-btns button.active { background-color: #1e4d8c; color: white; border-color: #1e4d8c; }
        .t1-pagination-btns button:disabled { opacity: 0.5; cursor: not-allowed; }

        /* Embedded模式：嵌入到主框架时隐藏header和sidebar，约束内容在iframe内滚动 */
        html, body.embedded { height: 100%; min-height: 0; max-height: 100%; overflow: hidden; }
        body.embedded .header { display: none; }
        body.embedded .sidebar { display: none; }
        body.embedded .container { flex: 1; min-height: 0; height: 100%; overflow: hidden; }
        body.embedded .container > .main-content { flex: 1; min-height: 0; min-width: 0; height: 100%; overflow-y: auto; overflow-x: hidden; overflow-anchor: none; padding: 16px; }

        /* ===== Tab1 线路维度改版样式 ===== */
        .t1-stats-cards { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-bottom: 16px; }
        .t1-stats-cards .stat-card { padding: 10px 12px; min-height: 72px; min-width: 0; }
        .t1-stats-cards .stat-card .label { font-size: 16px; margin-bottom: 8px; font-weight: 600; color: #374151; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .t1-stats-cards .stat-card .value { font-size: 32px; font-weight: 700; color: #1e4d8c; }
        .t1-stats-cards .stat-card .change { font-size: 11px; color: #6b7280; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .t1-stats-cards .stat-card .change.positive { color: #16a34a; }

        /* 线路可视化面板 */
        .t1-viz-panel { margin-bottom: 20px; padding: 16px; background: #fff; border-radius: 8px; border: 1px solid #e5e7eb; }
        .t1-viz-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
        .t1-viz-title { font-size: 16px; font-weight: 600; color: #1F4E79; display: flex; align-items: center; }
        .t1-viz-bar { width: 4px; height: 18px; background: #2E75B6; border-radius: 2px; margin-right: 8px; }
        .t1-viz-controls { display: flex; align-items: center; gap: 12px; }
        .t1-viz-controls select { padding: 4px 12px; border: 1px solid #cbd5e1; border-radius: 4px; font-size: 13px; }
        .t1-viz-tabs { display: flex; gap: 2px; }
        .t1-viz-tab { padding: 4px 16px; border: 1px solid #cbd5e1; background: #fff; color: #64748b; border-radius: 4px; cursor: pointer; font-size: 13px; }
        .t1-viz-tab.active { background: #2E75B6; color: #fff; border-color: #2E75B6; }

        /* 线路图视图 */
        .t1-viz-map-container { position: relative; padding: 20px 0; }
        .t1-viz-cities { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; padding: 0 10px; }
        .t1-viz-city { font-size: 14px; font-weight: 600; color: #1F4E79; }
        .t1-viz-line-label { font-size: 12px; color: #94a3b8; }
        .t1-viz-track { position: relative; height: 40px; margin: 0 10px; }
        .t1-viz-line-bar { position: absolute; top: 50%; left: 0; right: 0; height: 8px; background: #1F4E79; border-radius: 4px; transform: translateY(-50%); }
        .t1-viz-nodes { position: relative; height: 100%; }
        .t1-viz-node { position: absolute; top: 50%; transform: translate(-50%, -50%); cursor: pointer; z-index: 2; display: flex; flex-direction: column; align-items: center; }
        .t1-node-dot { font-size: 16px; line-height: 1; }
        .t1-node-completed .t1-node-dot { color: #16a34a; }
        .t1-node-building .t1-node-dot { color: #ea580c; animation: t1-pulse 1.5s ease-in-out infinite; }
        .t1-node-lag .t1-node-dot { color: #dc2626; font-size: 18px; animation: t1-blink 0.8s ease-in-out infinite; }
        @keyframes t1-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
        @keyframes t1-blink { 0%,100% { opacity: 1; } 50% { opacity: 0.3; } }
        .t1-node-name { position: absolute; top: 18px; font-size: 11px; white-space: nowrap; color: #374151; }

        /* 里程标尺 */
        .t1-viz-scale { position: relative; height: 20px; margin: 24px 10px 0; border-top: 1px solid #e5e7eb; }
        .t1-scale-mark { position: absolute; top: 0; font-size: 10px; color: #94a3b8; transform: translateX(-50%); padding-top: 2px; }

        /* 省份分段色带 */
        .t1-viz-provinces { position: relative; height: 50px; margin: 8px 10px 0; }
        .t1-province-seg { position: absolute; top: 0; height: 100%; border-right: 1px solid #d1d5db; padding: 4px 6px; display: flex; flex-direction: column; justify-content: center; overflow: hidden; }
        .t1-province-name { font-size: 11px; font-weight: 600; color: #374151; white-space: nowrap; }
        .t1-province-bar { height: 4px; background: #e5e7eb; border-radius: 2px; margin-top: 2px; }
        .t1-province-fill { height: 100%; background: #2E75B6; border-radius: 2px; }
        .t1-province-pct { font-size: 10px; color: #6b7280; margin-top: 1px; }

        /* 汇总卡片 */
        .t1-viz-summary { position: absolute; right: 0; top: 60px; width: 220px; background: #fff; border: 1px solid #cbd5e1; border-radius: 8px; padding: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.08); z-index: 5; }
        .t1-viz-sum-row { display: flex; justify-content: space-between; padding: 3px 0; font-size: 12px; }
        .t1-viz-sum-label { color: #6b7280; }
        .t1-viz-sum-val { font-weight: 600; color: #1F4E79; }

        /* 列表视图 - 树形结构 */
        .t1-viz-list { padding: 8px 0; }
        .t1-tree-root { font-size: 13px; }
        .t1-tree-l1 { cursor: pointer; padding: 8px 12px; background: #E8F4F8; border-radius: 4px; margin-bottom: 4px; font-weight: 600; color: #1F4E79; }
        .t1-tree-l1:hover { background: #d1e7f3; }
        .t1-tree-l1-content { padding-left: 16px; }
        .t1-tree-l2 { cursor: pointer; padding: 6px 12px; background: #f9fafb; border-radius: 4px; margin: 4px 0; font-weight: 500; color: #374151; }
        .t1-tree-l2:hover { background: #f3f4f6; }
        .t1-tree-l2-content { padding-left: 20px; }
        .t1-tree-l3 { display: flex; align-items: center; gap: 12px; padding: 5px 8px; border-bottom: 1px solid #f3f4f6; font-size: 12px; color: #6b7280; }
        .t1-tree-l3:hover { background: #f9fafb; }
        .t1-tree-row-warn { background: #fffbeb; }
        .t1-tree-row-lag { background: #fef2f2; }
        .t1-tree-arrow { display: inline-block; width: 14px; color: #94a3b8; font-size: 10px; }
        .t1-tree-branch { color: #cbd5e1; font-family: monospace; }
        .t1-tree-station { font-weight: 500; color: #1F4E79; min-width: 180px; }
        .t1-tree-km { color: #6b7280; min-width: 60px; }
        .t1-tree-operator { color: #6b7280; min-width: 80px; }
        .t1-tree-scale { color: #6b7280; min-width: 120px; }
        .t1-tree-stage { min-width: 100px; }
        .t1-tree-percent { font-weight: 600; color: #2E75B6; }
        .t1-tree-l1-content.collapsed, .t1-tree-l2-content.hidden { display: none; }
        .t1-tree-root.collapsed .t1-tree-l1-content { display: none; }

        /* 评级标签 */
        .t1-rating-tag { display: inline-block; padding: 2px 12px; border-radius: 12px; font-size: 12px; font-weight: 600; }
        .t1-rating-pass { background: #dcfce7; color: #16a34a; }
        .t1-rating-near { background: #dbeafe; color: #2E75B6; }
        .t1-rating-lag { background: #fee2e2; color: #dc2626; }

        /* 通道图标 */
        .t1-channel-icon { display: inline-block; background: #1F4E79; color: #fff; font-size: 10px; padding: 1px 5px; border-radius: 3px; margin-right: 4px; }

        /* 甘特图省份分段 */
        .gantt-header { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }
        .gantt-channel { font-weight: 600; color: #1F4E79; min-width: 70px; }
        .gantt-meta { font-size: 12px; color: #6b7280; flex: 1; }
        .gantt-prov-segs { display: flex; margin-top: 6px; height: 44px; border-radius: 4px; overflow: hidden; }
        .gantt-prov-seg { padding: 4px 6px; display: flex; flex-direction: column; justify-content: center; border-right: 1px solid #d1d5db; overflow: hidden; }
        .gantt-prov-seg:last-child { border-right: none; }
        .gantt-prov-name { font-size: 11px; font-weight: 600; color: #374151; white-space: nowrap; }
        .gantt-prov-bar { height: 4px; background: #e5e7eb; border-radius: 2px; margin-top: 2px; }
        .gantt-prov-fill { height: 100%; border-radius: 2px; transition: width 0.3s; }
        .gantt-prov-pct { font-size: 10px; color: #6b7280; margin-top: 1px; }

        /* 详情抽屉 */
        .t1-drawer-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.3); z-index: 999; opacity: 0; visibility: hidden; transition: opacity 0.3s; }
        .t1-drawer-overlay.active { opacity: 1; visibility: visible; }
        .t1-drawer { position: fixed; top: 0; right: 0; width: 65%; min-width: 900px; height: 100%; background: #fff; z-index: 1000; transform: translateX(100%); transition: transform 0.3s ease; display: flex; flex-direction: column; box-shadow: -4px 0 16px rgba(0,0,0,0.1); }
        .t1-drawer.active { transform: translateX(0); }
        .t1-drawer-header { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; border-bottom: 2px solid #2E75B6; }
        .t1-drawer-title { font-size: 18px; font-weight: 700; color: #1F4E79; }
        .t1-drawer-close { font-size: 24px; color: #9ca3af; cursor: pointer; line-height: 1; }
        .t1-drawer-close:hover { color: #1F4E79; }
        .t1-drawer-summary { padding: 8px 24px; font-size: 13px; color: #6b7280; border-bottom: 1px solid #e5e7eb; }
        .t1-drawer-body { flex: 1; overflow: auto; padding: 16px 24px; }
        .t1-drawer-table-wrapper { overflow-x: auto; }
        .t1-drawer-table { width: 100%; min-width: 1400px; border-collapse: collapse; font-size: 13px; }
        .t1-drawer-table thead th { background: #1F4E79; color: #fff; padding: 10px 12px; text-align: left; font-weight: 600; white-space: nowrap; position: sticky; top: 0; z-index: 1; }
        .t1-drawer-table tbody tr { height: 44px; }
        .t1-drawer-table tbody tr:nth-child(even) { background: #F7FBFF; }
        .t1-drawer-table tbody tr:hover { background: #E8F4F8; }
        .t1-drawer-table td { padding: 8px 12px; vertical-align: middle; white-space: nowrap; }
        .t1-drawer-tag { display: inline-block; padding: 2px 10px; border-radius: 10px; font-size: 12px; font-weight: 600; }
        .t1-drawer-type-charge { background: #ebf8ff; color: #3182CE; }
        .t1-drawer-type-swap { background: #f0fff4; color: #38A169; }
        .t1-drawer-stage-approve { background: #f3f4f6; color: #6b7280; }
        .t1-drawer-stage-construct { background: #ebf8ff; color: #3182CE; }
        .t1-drawer-stage-install { background: #fffaf0; color: #DD6B20; }
        .t1-drawer-stage-complete { background: #f0fff4; color: #38A169; }
        .t1-drawer-status-normal { background: #f0fff4; color: #38A169; }
        .t1-drawer-status-warn { background: #fffaf0; color: #DD6B20; }
        .t1-drawer-status-lag { background: #fff5f5; color: #dc2626; }
        .t1-drawer-progress { width: 60px; height: 8px; background: #e5e7eb; border-radius: 4px; display: inline-block; vertical-align: middle; margin-right: 4px; }
        .t1-drawer-progress-bar { height: 100%; border-radius: 4px; transition: width 0.3s; }
        .t1-drawer-footer { padding: 12px 24px; border-top: 1px solid #e5e7eb; font-size: 13px; color: #374151; font-weight: 500; }
