/* OPC Studio 全局样式 - 深色科技风 */

:root {
    --bg-primary: #0a0e1a;
    --bg-secondary: #111827;
    --bg-card: rgba(30, 41, 59, 0.6);
    --bg-card-hover: rgba(30, 41, 59, 0.9);
    --border: rgba(99, 102, 241, 0.15);
    --border-hover: rgba(99, 102, 241, 0.4);
    --text-primary: #f1f5f9;
    --text-secondary: #94a3b8;
    --text-muted: #64748b;
    --accent: #6366f1;
    --accent-hover: #818cf8;
    --accent-glow: rgba(99, 102, 241, 0.3);
    --success: #10b981;
    --warning: #f59e0b;
    --danger: #ef4444;
    --radius: 12px;
    --radius-sm: 8px;
    --glass-blur: blur(12px);
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: -apple-system, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
    background: var(--bg-primary);
    color: var(--text-primary);
    min-height: 100vh;
    overflow-x: hidden;
}

/* 背景装饰 */
body::before {
    content: '';
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background:
        radial-gradient(ellipse at 20% 0%, rgba(99, 102, 241, 0.08), transparent 50%),
        radial-gradient(ellipse at 80% 100%, rgba(16, 185, 129, 0.05), transparent 50%);
    pointer-events: none;
    z-index: 0;
}

/* === 登录/注册页（左右两栏：动画小人舞台 + 表单） === */
.auth-page {
    display: grid;
    grid-template-columns: 1fr 1fr;
    min-height: 100vh;
    position: relative;
    z-index: 1;
}

/* 左侧：动画小人舞台 */
.auth-stage {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    padding: 40px 48px;
    overflow: hidden;
    background: linear-gradient(135deg, #d4d0dc 0%, #c8c4d0 50%, #bbb7c5 100%);
}

.auth-stage::after {
    content: '';
    position: absolute;
    top: 20%;
    right: 15%;
    width: 260px;
    height: 260px;
    background: rgba(180, 170, 200, 0.25);
    border-radius: 50%;
    filter: blur(80px);
}

.auth-stage::before {
    content: '';
    position: absolute;
    bottom: 15%;
    left: 10%;
    width: 350px;
    height: 350px;
    background: rgba(200, 195, 210, 0.2);
    border-radius: 50%;
    filter: blur(100px);
}

.auth-stage-logo {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 16px;
    font-weight: 600;
    color: #4a4058;
    z-index: 10;
    position: relative;
}

.auth-stage-logo-icon {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    background: rgba(255, 255, 255, 0.4);
    backdrop-filter: blur(8px);
    border-radius: 6px;
}

.auth-stage-slogan {
    font-size: 13px;
    color: rgba(80, 70, 90, 0.7);
    z-index: 10;
    position: relative;
    margin-bottom: 24px;
}

.characters-wrapper {
    position: relative;
    z-index: 10;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    height: 420px;
    width: 100%;
}

/* 右侧：表单面板 */
.auth-panel {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px;
}

.auth-card {
    background: var(--bg-card);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 40px;
    width: 400px;
    max-width: 90vw;
}

/* 密码框 + 显示/隐藏按钮 */
.password-wrap {
    position: relative;
}

.password-wrap input {
    padding-right: 44px;
}

.toggle-password {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    cursor: pointer;
    color: var(--text-muted);
    padding: 4px;
    display: flex;
    align-items: center;
    transition: color 0.2s;
}

.toggle-password:hover {
    color: var(--text-primary);
}

/* 小屏：隐藏舞台只留表单 */
@media (max-width: 900px) {
    .auth-page {
        grid-template-columns: 1fr;
    }
    .auth-stage {
        display: none;
    }
}

.auth-card h1 {
    font-size: 24px;
    font-weight: 700;
    text-align: center;
    margin-bottom: 8px;
    background: linear-gradient(135deg, var(--accent), var(--accent-hover));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.auth-card .subtitle {
    text-align: center;
    color: var(--text-secondary);
    font-size: 14px;
    margin-bottom: 32px;
}

/* === 表单 === */
.form-group {
    margin-bottom: 20px;
}

.form-group label {
    display: block;
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: 6px;
}

.form-group input,
.form-group textarea,
.form-group select {
    width: 100%;
    padding: 10px 14px;
    background: rgba(15, 23, 42, 0.6);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    transition: border-color 0.2s;
}

.form-group input:focus,
.form-group textarea:focus,
.form-group select:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-glow);
}

.form-group textarea {
    resize: vertical;
    min-height: 80px;
}

.form-group .form-hint {
    margin-top: 6px;
    font-size: 12px;
    color: var(--text-muted, #94a3b8);
    line-height: 1.5;
}

/* === 按钮 === */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 20px;
    border: none;
    border-radius: var(--radius-sm);
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
    text-decoration: none;
}

.btn-primary {
    background: var(--accent);
    color: white;
}

.btn-primary:hover {
    background: var(--accent-hover);
    box-shadow: 0 4px 12px var(--accent-glow);
}

.btn-secondary {
    background: rgba(99, 102, 241, 0.1);
    color: var(--accent-hover);
    border: 1px solid var(--border);
}

.btn-secondary:hover {
    background: rgba(99, 102, 241, 0.2);
    border-color: var(--border-hover);
}

.btn-danger {
    background: rgba(239, 68, 68, 0.15);
    color: var(--danger);
    border: 1px solid rgba(239, 68, 68, 0.3);
}

.btn-block {
    width: 100%;
}

.btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* === 主布局 === */
.app-layout {
    display: flex;
    min-height: 100vh;
    position: relative;
    z-index: 1;
}

/* === 侧边栏 === */
.sidebar {
    width: 240px;
    background: rgba(10, 14, 26, 0.8);
    backdrop-filter: var(--glass-blur);
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    position: fixed;
    top: 0; left: 0; bottom: 0;
    z-index: 100;
    transition: transform 0.3s;
}

.sidebar-brand {
    padding: 18px;
    display: flex;
    align-items: center;
    gap: 12px;
    border-bottom: 1px solid var(--border);
}

.sidebar-brand .logo {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    position: relative;
    filter: drop-shadow(0 3px 9px rgba(77, 167, 246, .17));
    transition: filter .25s ease, transform .25s ease;
}

.sidebar-brand .logo img {
    width: 100%;
    height: 100%;
    display: block;
}

.sidebar-brand:hover .logo {
    transform: translateY(-1px);
    filter: drop-shadow(0 3px 12px rgba(99, 201, 255, .32));
}

.sidebar-brand .brand-text {
    min-width: 0;
}

.sidebar-brand .brand-text b {
    font-size: 14px;
    display: block;
    letter-spacing: .045em;
}

.sidebar-brand .brand-text small {
    display: block;
    margin-top: 4px;
    font-size: 8px;
    color: #a7bddb;
    text-transform: uppercase;
    letter-spacing: .07em;
    white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
    .sidebar-brand .logo { transition: none; }
    .sidebar-brand:hover .logo { transform: none; }
}

.sidebar-nav {
    flex: 1;
    overflow-y: auto;
    padding: 12px;
}

.nav-section {
    margin-bottom: 16px;
}

.nav-section-title {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: 8px 12px 4px;
}

.nav-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    color: var(--text-secondary);
    font-size: 14px;
    transition: all 0.2s;
    border: none;
    background: none;
    width: 100%;
    text-align: left;
}

.nav-item:hover {
    background: rgba(99, 102, 241, 0.1);
    color: var(--text-primary);
}

.nav-item.active {
    background: rgba(99, 102, 241, 0.15);
    color: var(--accent-hover);
}

.nav-item .icon {
    width: 20px;
    text-align: center;
    font-size: 16px;
}

.sidebar-footer {
    padding: 12px;
    border-top: 1px solid var(--border);
}

/* === 主内容区 === */
.main-content {
    flex: 1;
    min-width: 0;
    margin-left: 240px;
    padding: 24px 32px;
    min-height: 100vh;
}

.page-header {
    margin-bottom: 24px;
}

.page-header h2 {
    font-size: 22px;
    font-weight: 700;
    margin-bottom: 4px;
}

.page-header p {
    color: var(--text-secondary);
    font-size: 14px;
}

/* === 卡片 === */
.card {
    background: var(--bg-card);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 20px;
    margin-bottom: 16px;
    transition: border-color 0.2s;
}

.card:hover {
    border-color: var(--border-hover);
}

.card-title {
    font-size: 16px;
    font-weight: 600;
    margin-bottom: 12px;
}

/* === 网格 === */
.grid {
    display: grid;
    gap: 16px;
}

.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }
.grid-5 { grid-template-columns: repeat(5, 1fr); }

@media (max-width: 1024px) {
    .grid-3, .grid-4, .grid-5 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
    .grid-2, .grid-3, .grid-4, .grid-5 { grid-template-columns: 1fr; }
    .sidebar { transform: translateX(-100%); }
    .sidebar.open { transform: translateX(0); }
    .main-content { margin-left: 0; padding: 64px 16px 16px; }
}

/* === 统计卡片 === */
.stat-card {
    text-align: center;
}

.stat-value {
    font-size: 32px;
    font-weight: 800;
    background: linear-gradient(135deg, var(--accent), var(--accent-hover));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.stat-label {
    font-size: 13px;
    color: var(--text-secondary);
    margin-top: 4px;
}

/* === 员工卡片 === */
.employee-card {
    display: flex;
    align-items: center;
    gap: 14px;
    cursor: pointer;
}

.employee-avatar {
    width: 48px; height: 48px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--accent), #8b5cf6);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    flex-shrink: 0;
}

.employee-info {
    flex: 1;
}

.employee-info .name {
    font-size: 15px;
    font-weight: 600;
}

.employee-info .role {
    font-size: 13px;
    color: var(--text-secondary);
}

.status-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 500;
}

.status-idle { background: rgba(100, 116, 139, 0.15); color: #94a3b8; }
.status-working { background: rgba(16, 185, 129, 0.15); color: var(--success); }
.status-offline { background: rgba(239, 68, 68, 0.15); color: var(--danger); }

/* 对外展示开关 */
.emp-public-toggle {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: rgba(100, 116, 139, 0.1);
    color: var(--text-secondary);
    font-size: 11px;
    cursor: pointer;
    transition: all 0.2s;
    flex-shrink: 0;
}
.emp-public-toggle:hover { border-color: var(--border-hover); }
.emp-public-toggle.on {
    background: rgba(16, 185, 129, 0.12);
    border-color: rgba(16, 185, 129, 0.4);
    color: var(--success);
}
.emp-public-dot {
    width: 7px; height: 7px;
    border-radius: 50%;
    background: #94a3b8;
}
.emp-public-toggle.on .emp-public-dot { background: var(--success); box-shadow: 0 0 6px var(--success); }
.emp-public-check {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    cursor: pointer;
    color: var(--text-primary);
}
.emp-public-check input { width: 15px; height: 15px; accent-color: var(--accent); }

/* === 聊天界面 === */
.chat-container {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 200px);
}

.chat-messages {
    flex: 1;
    overflow-y: auto;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.chat-message {
    display: flex;
    gap: 10px;
    max-width: 80%;
}

.chat-message.user {
    align-self: flex-end;
    flex-direction: row-reverse;
}

.chat-message .avatar {
    width: 32px; height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    flex-shrink: 0;
}

.chat-message.assistant .avatar {
    background: linear-gradient(135deg, var(--accent), #8b5cf6);
}

.chat-message.user .avatar {
    background: rgba(99, 102, 241, 0.2);
}

.chat-message .bubble {
    padding: 10px 14px;
    border-radius: var(--radius-sm);
    font-size: 14px;
    line-height: 1.6;
    white-space: pre-wrap;
    word-break: break-word;
}

.chat-message.assistant .bubble {
    background: rgba(99, 102, 241, 0.1);
    border: 1px solid var(--border);
}

.chat-message.user .bubble {
    background: var(--accent);
    color: white;
}

.chat-input {
    display: flex;
    gap: 8px;
    padding: 12px;
    border-top: 1px solid var(--border);
}

.chat-input input {
    flex: 1;
    padding: 10px 14px;
    background: rgba(15, 23, 42, 0.6);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
}

.chat-input input:focus {
    outline: none;
    border-color: var(--accent);
}

/* === 步骤指示器 === */
.steps {
    display: flex;
    gap: 0;
    margin-bottom: 24px;
}

.step {
    flex: 1;
    padding: 12px 16px;
    text-align: center;
    position: relative;
    color: var(--text-muted);
    font-size: 13px;
    border-bottom: 2px solid var(--border);
}

.step.active {
    color: var(--accent-hover);
    border-bottom-color: var(--accent);
}

.step.done {
    color: var(--success);
    border-bottom-color: var(--success);
}

/* === 空状态 === */
.empty-state {
    text-align: center;
    padding: 48px 20px;
    color: var(--text-muted);
}

.empty-state .icon {
    font-size: 48px;
    margin-bottom: 12px;
    opacity: 0.5;
}

.empty-state p {
    font-size: 14px;
    margin-bottom: 16px;
}

/* === 加载动画 === */
.loading-dots {
    display: inline-flex;
    gap: 4px;
}

.loading-dots span {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--accent);
    animation: bounce 1.4s infinite ease-in-out;
}

.loading-dots span:nth-child(2) { animation-delay: 0.2s; }
.loading-dots span:nth-child(3) { animation-delay: 0.4s; }

@keyframes bounce {
    0%, 80%, 100% { transform: scale(0); }
    40% { transform: scale(1); }
}

/* === Toast 提示 === */
.toast {
    position: fixed;
    top: 20px;
    right: 20px;
    padding: 12px 20px;
    border-radius: var(--radius-sm);
    font-size: 14px;
    z-index: 9999;
    animation: slideIn 0.3s ease-out;
}

.toast.success { background: var(--success); color: white; }
.toast.error { background: var(--danger); color: white; }

@keyframes slideIn {
    from { transform: translateX(100%); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}

/* === 标签 === */
.tag {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
    background: rgba(99, 102, 241, 0.15);
    color: var(--accent-hover);
    margin: 2px;
}

/* === 模态框 === */
.modal-overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
}

.modal {
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 24px;
    width: 500px;
    max-width: 90vw;
    max-height: 90vh;
    overflow-y: auto;
}

.modal-title {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 16px;
}

/* === 访问明细表格 === */
.stats-log-wrap { overflow: auto; max-height: 55vh; }
.stats-log-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.stats-log-table th,
.stats-log-table td { padding: 8px 10px; text-align: left; border-bottom: 1px solid var(--border); white-space: nowrap; }
.stats-log-table th { position: sticky; top: 0; background: var(--bg-secondary); color: var(--text-muted); font-weight: 600; }
.stats-log-table tbody tr:hover td { background: rgba(99, 102, 241, 0.06); }

/* === 工具类 === */
.text-center { text-align: center; }
.text-muted { color: var(--text-muted); }
.text-sm { font-size: 13px; }
.mt-8 { margin-top: 8px; }
.mt-16 { margin-top: 16px; }
.mt-24 { margin-top: 24px; }
.mb-16 { margin-bottom: 16px; }
.flex { display: flex; }
.flex-between { display: flex; justify-content: space-between; align-items: center; }
.gap-8 { gap: 8px; }
.gap-16 { gap: 16px; }
.cursor-pointer { cursor: pointer; }

/* === 移动端汉堡菜单 === */
.mobile-menu-btn {
    display: none;
    position: fixed;
    top: 12px; left: 12px;
    z-index: 200;
    background: var(--bg-card);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    width: 40px; height: 40px;
    color: var(--text-primary);
    font-size: 20px;
    cursor: pointer;
}

@media (max-width: 768px) {
    .mobile-menu-btn { display: flex; align-items: center; justify-content: center; }
    .mobile-navigation-open .mobile-menu-btn { left: 252px; }
    .mobile-navigation-open .opc-coach { visibility: hidden; }
}

/* === 公司详情页 === */
.company-card {
    position: relative;
}
.company-card::after {
    content: '→';
    position: absolute;
    right: 16px; top: 50%;
    transform: translateY(-50%);
    color: var(--text-muted);
    font-size: 18px;
    transition: all 0.2s;
}
.company-card:hover::after {
    color: var(--accent-hover);
    transform: translateY(-50%) translateX(4px);
}

.status-banner {
    display: flex;
    align-items: center;
}
.status-banner.draft {
    border-left: 3px solid var(--warning);
}
.status-banner.active {
    border-left: 3px solid var(--success);
}

.canvas-item {
    padding: 12px;
    background: rgba(15, 23, 42, 0.4);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
}
.canvas-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 4px;
}
.canvas-value {
    font-size: 14px;
    color: var(--text-primary);
    line-height: 1.6;
}

/* === Skill 装配中心 === */
.skill-card {
    position: relative;
}
.skill-filter-card { margin-bottom: 18px; }
.skill-filter-row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.skill-search { flex:1 1 320px; min-width:220px; }
.skill-category-select { min-width:150px; }
.skill-filter-hint { color:var(--text-muted); font-size:11px; margin-top:9px; line-height:1.5; }
.skill-capability { color:#c7d2fe; font-size:12px; line-height:1.55; margin-top:9px; }
.skill-inputs { color:var(--text-secondary); font-size:11px; line-height:1.5; margin-top:5px; }
.skill-source { color:#94a3b8; font-size:10px; line-height:1.4; margin-top:6px; min-height:14px; }
.team-preset-card { margin-bottom:16px; border-color:rgba(99,102,241,.34); }
.team-preset-grid { margin-top:12px; }
.team-preset { display:flex; flex-direction:column; gap:5px; padding:10px; border:1px solid var(--border); border-radius:10px; background:rgba(15,23,42,.38); min-width:0; }
.team-preset b { font-size:12px; color:var(--text-primary); }
.team-preset span { font-size:10px; color:var(--text-muted); line-height:1.45; }
.council-skill-trace { display:flex; flex-wrap:wrap; gap:5px; margin:6px 0; }
.council-skill-trace span { color:#c4b5fd; border:1px solid rgba(129,140,248,.28); background:rgba(99,102,241,.1); border-radius:999px; padding:3px 7px; font-size:10px; }
.skill-icon {
    width: 36px; height: 36px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--accent), #8b5cf6);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    color: white;
}
.skill-name {
    font-size: 15px;
    font-weight: 600;
    margin-top: 12px;
}
.assign-row {
    cursor: pointer;
    transition: all 0.2s;
}
.assign-row.selected {
    border-color: var(--success);
    background: rgba(16, 185, 129, 0.1);
}

/* === 财务模拟实验室 === */
.finance-tip {
    font-size: 14px;
    padding: 8px 12px;
    border-radius: var(--radius-sm);
    background: rgba(15, 23, 42, 0.4);
    margin-bottom: 8px;
}
.finance-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.finance-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    background: rgba(15, 23, 42, 0.4);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
}
.finance-type {
    width: 28px; height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    flex-shrink: 0;
}
.finance-type.income {
    background: rgba(16, 185, 129, 0.2);
    color: var(--success);
}
.finance-type.cost {
    background: rgba(239, 68, 68, 0.2);
    color: var(--danger);
}
.finance-info {
    flex: 1;
}
.finance-cat {
    font-size: 14px;
    font-weight: 500;
}
.finance-amount {
    font-size: 15px;
    font-weight: 700;
    font-family: 'Courier New', monospace;
}
.finance-amount.income { color: var(--success); }
.finance-amount.cost { color: var(--danger); }
.ai-analysis {
    font-size: 14px;
    line-height: 1.8;
    color: var(--text-secondary);
    padding: 12px;
    background: rgba(15, 23, 42, 0.4);
    border-radius: var(--radius-sm);
}

/* === 经营事件 === */
.event-card {
    border-left: 3px solid var(--border);
}
.event-customer_request { border-left-color: var(--accent); }
.event-problem { border-left-color: var(--danger); }
.event-opportunity { border-left-color: var(--success); }
.event-routine { border-left-color: var(--text-muted); }
.event-processing { border-left-color: var(--warning); opacity: 0.85; }
.event-resolved { border-left-color: var(--success); opacity: 0.7; }
.event-failed { border-left-color: var(--danger); opacity: 0.7; }
.event-type-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    margin-right: 8px;
    background: rgba(99, 102, 241, 0.15);
    color: var(--accent-hover);
}
.event-title {
    font-size: 15px;
    font-weight: 600;
}
.event-reward {
    font-size: 13px;
    white-space: nowrap;
}
.event-employee-select {
    padding: 4px 10px;
    background: rgba(15, 23, 42, 0.6);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 13px;
    min-width: 140px;
}
.event-employee-select:focus {
    outline: none;
    border-color: var(--accent);
}

/* ============ 登录页动画小人（lc- = login characters） ============ */
.characters-scene {
    position: relative;
    width: 480px;
    height: 360px;
}

/* 小人基础样式 */
.lc-character {
    position: absolute;
    bottom: 0;
    transition: all 0.7s ease-in-out;
    transform-origin: bottom center;
}

/* 紫色矩形小人 */
.lc-char-purple {
    left: 60px;
    width: 170px;
    height: 370px;
    background: #6c3ff5;
    border-radius: 10px 10px 0 0;
    z-index: 1;
}

/* 黑色矩形小人 */
.lc-char-black {
    left: 220px;
    width: 115px;
    height: 290px;
    background: #2d2d2d;
    border-radius: 8px 8px 0 0;
    z-index: 2;
}

/* 橙色半圆小人 */
.lc-char-orange {
    left: 0;
    width: 230px;
    height: 190px;
    background: #ff9b6b;
    border-radius: 115px 115px 0 0;
    z-index: 3;
}

/* 黄色圆角小人 */
.lc-char-yellow {
    left: 290px;
    width: 135px;
    height: 215px;
    background: #e8d754;
    border-radius: 68px 68px 0 0;
    z-index: 4;
}

/* 眼睛容器 */
.lc-eyes {
    position: absolute;
    display: flex;
    transition: all 0.7s ease-in-out;
}

/* 眼白（白色带瞳孔） */
.lc-eyeball {
    border-radius: 50%;
    background: white;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: height 0.15s ease;
    overflow: hidden;
}

/* 瞳孔 */
.lc-pupil {
    border-radius: 50%;
    background: #2d2d2d;
    transition: transform 0.1s ease-out;
}

/* 无眼白瞳孔 */
.lc-bare-pupil {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #2d2d2d;
    transition: transform 0.7s ease-in-out;
}

/* 黄色小人的嘴 */
.lc-yellow-mouth {
    position: absolute;
    width: 50px;
    height: 4px;
    background: #2d2d2d;
    border-radius: 2px;
    transition: all 0.7s ease-in-out;
}

/* 摇头动画 */
@keyframes lcShakeHead {
    0%, 100% { translate: 0 0; }
    10% { translate: -9px 0; }
    20% { translate: 7px 0; }
    30% { translate: -6px 0; }
    40% { translate: 5px 0; }
    50% { translate: -4px 0; }
    60% { translate: 3px 0; }
    70% { translate: -2px 0; }
    80% { translate: 1px 0; }
    90% { translate: -0.5px 0; }
}

.lc-eyes.lc-shake-head,
.lc-yellow-mouth.lc-shake-head,
.lc-orange-mouth.lc-shake-head {
    animation: lcShakeHead 0.8s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
}

/* 橙色小人的嘴（沮丧时向下弯） */
.lc-orange-mouth {
    position: absolute;
    width: 28px;
    height: 14px;
    border: 3px solid #2d2d2d;
    border-top: none;
    border-radius: 0 0 14px 14px;
    opacity: 0;
    transition: all 0.7s ease-in-out;
}

.lc-orange-mouth.visible {
    opacity: 1;
}

/* ===================== 登录页 4 色系换肤（底部切换，localStorage 记忆） ===================== */
/* 经典浅紫（浅色系，对应参考站原味） */
.auth-page[data-skin="violet"] {
    --accent: #7c3aed;
    --accent-hover: #8b5cf6;
    --accent-glow: rgba(124, 58, 237, 0.25);
    --bg-card: rgba(255, 255, 255, 0.62);
    --border: rgba(124, 58, 237, 0.16);
    --border-hover: rgba(124, 58, 237, 0.45);
    --text-primary: #312e81;
    --text-secondary: #6b7280;
    --text-muted: #8b8fa8;
}
.auth-page[data-skin="violet"] .auth-stage {
    background: linear-gradient(135deg, #d4d0dc 0%, #c8c4d0 50%, #bbb7c5 100%);
}
.auth-page[data-skin="violet"] .auth-stage::after { background: rgba(180, 170, 200, 0.25); }
.auth-page[data-skin="violet"] .auth-stage::before { background: rgba(160, 150, 190, 0.2); }
.auth-page[data-skin="violet"] .auth-stage-logo { color: #312e81; }
.auth-page[data-skin="violet"] .auth-stage-logo-icon { background: rgba(124, 58, 237, 0.12); }
.auth-page[data-skin="violet"] .auth-stage-slogan { color: rgba(49, 46, 129, 0.65); }
.auth-page[data-skin="violet"] .lc-char-black {
    box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.35), 0 0 16px rgba(124, 58, 237, 0.3);
}
.auth-page[data-skin="violet"] .form-group input,
.auth-page[data-skin="violet"] .form-group textarea,
.auth-page[data-skin="violet"] .form-group select {
    background: rgba(255, 255, 255, 0.7);
}

/* 暗夜霓虹（深蓝紫，⭐ 推荐） */
.auth-page[data-skin="neon"] {
    --accent: #6366f1;
    --accent-hover: #818cf8;
    --accent-glow: rgba(139, 92, 246, 0.3);
    --bg-card: rgba(15, 18, 40, 0.55);
    --border: rgba(129, 140, 248, 0.22);
    --border-hover: rgba(129, 140, 248, 0.5);
    --text-primary: #e2e8f0;
    --text-secondary: #94a3b8;
    --text-muted: #64748b;
}
.auth-page[data-skin="neon"] .auth-stage {
    background: linear-gradient(135deg, #12142e 0%, #1a1f45 50%, #232a5c 100%);
}
.auth-page[data-skin="neon"] .auth-stage::after { background: rgba(139, 92, 246, 0.28); }
.auth-page[data-skin="neon"] .auth-stage::before { background: rgba(99, 102, 241, 0.22); }
.auth-page[data-skin="neon"] .auth-stage-logo { color: #e2e8f0; }
.auth-page[data-skin="neon"] .auth-stage-logo-icon { background: rgba(99, 102, 241, 0.25); }
.auth-page[data-skin="neon"] .auth-stage-slogan { color: rgba(226, 232, 240, 0.65); }
.auth-page[data-skin="neon"] .lc-char-black {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.35), 0 0 20px rgba(139, 92, 246, 0.55);
}

/* 默认状态没 data-skin（如首次加载前闪烁）也走暗夜霓虹，与 localStorage 记忆匹配 */
.auth-page:not([data-skin]) {
    --accent: #6366f1;
    --accent-hover: #818cf8;
    --accent-glow: rgba(139, 92, 246, 0.3);
    --bg-card: rgba(15, 18, 40, 0.55);
    --border: rgba(129, 140, 248, 0.22);
    --border-hover: rgba(129, 140, 248, 0.5);
    --text-primary: #e2e8f0;
    --text-secondary: #94a3b8;
    --text-muted: #64748b;
}
.auth-page:not([data-skin]) .auth-stage {
    background: linear-gradient(135deg, #12142e 0%, #1a1f45 50%, #232a5c 100%);
}
.auth-page:not([data-skin]) .auth-stage::after { background: rgba(139, 92, 246, 0.28); }
.auth-page:not([data-skin]) .auth-stage::before { background: rgba(99, 102, 241, 0.22); }
.auth-page:not([data-skin]) .auth-stage-logo { color: #e2e8f0; }
.auth-page:not([data-skin]) .auth-stage-logo-icon { background: rgba(99, 102, 241, 0.25); }
.auth-page:not([data-skin]) .auth-stage-slogan { color: rgba(226, 232, 240, 0.65); }
.auth-page:not([data-skin]) .lc-char-black {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.35), 0 0 20px rgba(139, 92, 246, 0.55);
}

/* 极光青蓝（深青蓝） */
.auth-page[data-skin="aurora"] {
    --accent: #22d3ee;
    --accent-hover: #38bdf8;
    --accent-glow: rgba(34, 211, 238, 0.3);
    --bg-card: rgba(8, 28, 42, 0.55);
    --border: rgba(56, 189, 248, 0.22);
    --border-hover: rgba(56, 189, 248, 0.5);
    --text-primary: #e0f2fe;
    --text-secondary: #7fb6cc;
    --text-muted: #5e8ba3;
}
.auth-page[data-skin="aurora"] .auth-stage {
    background: linear-gradient(135deg, #0b1626 0%, #0d2b3f 50%, #11415a 100%);
}
.auth-page[data-skin="aurora"] .auth-stage::after { background: rgba(34, 211, 238, 0.2); }
.auth-page[data-skin="aurora"] .auth-stage::before { background: rgba(56, 189, 248, 0.16); }
.auth-page[data-skin="aurora"] .auth-stage-logo { color: #e0f2fe; }
.auth-page[data-skin="aurora"] .auth-stage-logo-icon { background: rgba(56, 189, 248, 0.22); }
.auth-page[data-skin="aurora"] .auth-stage-slogan { color: rgba(224, 242, 254, 0.6); }
.auth-page[data-skin="aurora"] .lc-char-black {
    box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.4), 0 0 18px rgba(34, 211, 238, 0.5);
}

/* 紫晶玻璃（深紫红） */
.auth-page[data-skin="amethyst"] {
    --accent: #c084fc;
    --accent-hover: #d8b4fe;
    --accent-glow: rgba(192, 132, 252, 0.3);
    --bg-card: rgba(40, 24, 66, 0.55);
    --border: rgba(192, 132, 252, 0.25);
    --border-hover: rgba(192, 132, 252, 0.5);
    --text-primary: #f5e9ff;
    --text-secondary: #bfa8e6;
    --text-muted: #9373c9;
}
.auth-page[data-skin="amethyst"] .auth-stage {
    background: linear-gradient(135deg, #1e1033 0%, #2b1850 50%, #3a1f6b 100%);
}
.auth-page[data-skin="amethyst"] .auth-stage::after { background: rgba(192, 132, 252, 0.22); }
.auth-page[data-skin="amethyst"] .auth-stage::before { background: rgba(168, 85, 247, 0.16); }
.auth-page[data-skin="amethyst"] .auth-stage-logo { color: #f5e9ff; }
.auth-page[data-skin="amethyst"] .auth-stage-logo-icon { background: rgba(192, 132, 252, 0.22); }
.auth-page[data-skin="amethyst"] .auth-stage-slogan { color: rgba(245, 233, 255, 0.6); }
.auth-page[data-skin="amethyst"] .lc-char-black {
    box-shadow: 0 0 0 2px rgba(192, 132, 252, 0.4), 0 0 18px rgba(192, 132, 252, 0.5);
}

/* 登录页换肤控件 */
.auth-skin-picker {
    position: fixed;
    bottom: 20px;
    right: 24px;
    display: flex;
    align-items: center;
    gap: 8px;
    z-index: 100;
}
.auth-skin-dot {
    width: 18px; height: 18px;
    border-radius: 50%;
    border: 2px solid transparent;
    cursor: pointer;
    transition: transform 0.2s, box-shadow 0.2s;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}
.auth-skin-dot:hover { transform: scale(1.18); }
.auth-skin-dot.active {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 45%, transparent), 0 2px 8px rgba(0, 0, 0, 0.3);
}


/* ===================== 网站装修 ===================== */
.emoji-picker { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.emoji-opt {
    width: 36px; height: 36px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 20px; cursor: pointer;
    border-radius: 10px;
    border: 1px solid var(--border);
    background: var(--bg-card);
    transition: all 0.15s;
    user-select: none;
}
.emoji-opt:hover { transform: scale(1.1); border-color: var(--accent); }
.emoji-opt.active { border-color: var(--accent); background: rgba(99, 102, 241, 0.15); box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.3); }

.theme-picker { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.theme-opt {
    display: flex; align-items: center; gap: 6px;
    padding: 6px 12px; cursor: pointer;
    border-radius: 999px; font-size: 13px;
    border: 1px solid var(--border);
    background: var(--bg-card);
    transition: all 0.15s;
    user-select: none;
}
.theme-opt:hover { border-color: var(--accent); }
.theme-opt.active { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.25); }
.theme-swatch { width: 16px; height: 16px; border-radius: 50%; display: inline-block; }

.switch-row {
    display: flex; align-items: center; gap: 8px;
    padding: 6px 0; font-size: 14px; cursor: pointer;
    color: var(--text-primary);
}
.switch-row input { width: 16px; height: 16px; accent-color: var(--accent); cursor: pointer; }

.msg-item {
    padding: 12px 0;
    border-bottom: 1px solid rgba(129, 140, 248, 0.12);
}
.msg-item:last-child { border-bottom: none; }

/* === 产品上架 + 模拟经营 === */
.btn-sm { padding: 4px 10px; font-size: 12px; }
.product-table { display: flex; flex-direction: column; gap: 10px; }
.product-row {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 14px;
    background: rgba(129, 140, 248, 0.05);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
}
.product-thumb {
    width: 44px; height: 44px;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 22px;
    background: rgba(99, 102, 241, 0.12);
    border: 1px solid var(--border);
    flex-shrink: 0;
}
.product-info { flex: 1; min-width: 0; }
.product-info .name { font-weight: 600; font-size: 14px; }
.product-info .meta { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.product-actions { display: flex; gap: 6px; flex-shrink: 0; }
.product-actions .btn-sm { white-space: nowrap; }
.tag {
    display: inline-block;
    font-size: 11px;
    padding: 1px 8px;
    border-radius: 999px;
    margin-left: 6px;
    vertical-align: middle;
}
.tag-digital { color: #34d399; background: rgba(52, 211, 153, 0.12); border: 1px solid rgba(52, 211, 153, 0.3); }
.tag-service { color: #fbbf24; background: rgba(251, 191, 36, 0.12); border: 1px solid rgba(251, 191, 36, 0.3); }
.tag-on { color: #a7f3d0; background: rgba(52, 211, 153, 0.08); border: 1px solid rgba(52, 211, 153, 0.25); }
.tag-off { color: var(--text-muted); background: rgba(148, 163, 184, 0.1); border: 1px solid rgba(148, 163, 184, 0.25); }
.order-list { display: flex; flex-direction: column; }
.order-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 0;
    border-bottom: 1px solid rgba(129, 140, 248, 0.1);
    font-size: 13.5px;
}
.order-item:last-child { border-bottom: none; }
.order-product { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.order-customer { color: var(--text-muted); flex-shrink: 0; }
.order-amount { color: var(--success); font-weight: 700; flex-shrink: 0; }
.order-time { flex-shrink: 0; }
.order-source { font-size: 11px; padding: 1px 8px; border-radius: 999px; flex-shrink: 0; }
.src-ai { color: #818cf8; background: rgba(99, 102, 241, 0.12); border: 1px solid rgba(99, 102, 241, 0.3); }
.src-manual { color: var(--text-muted); background: rgba(148, 163, 184, 0.1); border: 1px solid rgba(148, 163, 184, 0.25); }
.order-pager { display: flex; align-items: center; justify-content: flex-end; gap: 10px; padding-top: 10px; }
.order-company { flex-shrink: 0; max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #c7d2fe; font-weight: 600; }

/* === 经营模拟比赛（Arena） === */
.arena-status {
    padding: 18px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
    margin-bottom: 16px;
}
.arena-status.race-idle { background: rgba(148, 163, 184, 0.06); }
.arena-status.race-running {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.14), rgba(236, 72, 153, 0.08));
    border-color: rgba(99, 102, 241, 0.35);
}
.arena-status.race-ended { background: rgba(52, 211, 153, 0.07); border-color: rgba(52, 211, 153, 0.3); }
.arena-countdown { text-align: center; padding: 6px 4px; }
.countdown-num {
    font-size: 34px;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    background: linear-gradient(135deg, #818cf8, #f472b6);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    line-height: 1.1;
}
.btn-race-start { font-size: 14px; padding: 9px 20px; }
.leaderboard { display: flex; flex-direction: column; }
.lb-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 10px;
    border: 1px solid rgba(129, 140, 248, 0.12);
    margin-bottom: 8px;
    background: rgba(129, 140, 248, 0.04);
}
.lb-row.lb-rank-1 { border-color: rgba(251, 191, 36, 0.45); background: linear-gradient(135deg, rgba(251, 191, 36, 0.12), rgba(251, 191, 36, 0.04)); }
.lb-row.lb-rank-2 { border-color: rgba(148, 163, 184, 0.35); background: linear-gradient(135deg, rgba(148, 163, 184, 0.1), rgba(148, 163, 184, 0.03)); }
.lb-row.lb-rank-3 { border-color: rgba(217, 119, 83, 0.4); background: linear-gradient(135deg, rgba(217, 119, 83, 0.1), rgba(217, 119, 83, 0.03)); }
.lb-rank {
    width: 26px; height: 26px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 12.5px; font-weight: 700;
    background: rgba(129, 140, 248, 0.15);
    color: #c7d2fe;
    flex-shrink: 0;
}
.lb-rank-1 .lb-rank { background: #fbbf24; color: #1f2937; }
.lb-rank-2 .lb-rank { background: #cbd5e1; color: #1f2937; }
.lb-rank-3 .lb-rank { background: #d97743; color: #fff; }
.lb-emoji { font-size: 20px; flex-shrink: 0; }
.lb-info { flex: 1; min-width: 0; }
.lb-name { font-weight: 600; font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lb-owner { margin-top: 2px; }
.lb-nums { text-align: right; flex-shrink: 0; }
.lb-sales { font-size: 12.5px; color: var(--text-muted); }
.lb-profit { font-weight: 800; font-size: 15px; margin-top: 2px; }
.lb-profit.pos { color: var(--success); }
.lb-profit.neg { color: #f87171; }
.live-label { font-size: 12px; color: var(--text-muted); }
.live-label.live-on { color: #34d399; animation: lb-pulse 1.6s ease-in-out infinite; }
@keyframes lb-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }

/* === 智能体议事厅 === */
.required-mark { color: #fda4af; font-size: 11px; margin-left: 4px; }
.company-type-picker select { border-color: rgba(129, 140, 248, .45); }
.council-start-grid { align-items: stretch; }
.council-rule { display:flex; flex-direction:column; justify-content:center; gap:5px; padding:12px; border:1px solid var(--border); border-radius:10px; background:rgba(99,102,241,.06); color:var(--text-secondary); font-size:12px; line-height:1.6; }
.council-rule b { color:var(--text-primary); font-size:13px; }
.council-employee-list { display:flex; flex-direction:column; gap:8px; max-height:420px; overflow:auto; }
.council-employee-option { display:flex; align-items:center; gap:10px; padding:10px; border-radius:10px; border:1px solid var(--border); cursor:pointer; transition:.2s; }
.council-employee-option:hover, .council-employee-option.selected { border-color:rgba(129,140,248,.7); background:rgba(99,102,241,.12); }
.council-employee-option input { accent-color:var(--accent); }
.council-employee-option .employee-avatar { width:30px; height:30px; font-size:13px; flex-shrink:0; }
.council-employee-option .employee-info { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.council-employee-option .employee-info small { color:var(--text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.council-history { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.council-history-item { text-align:left; display:flex; flex-direction:column; gap:5px; padding:11px 13px; color:var(--text-primary); background:rgba(99,102,241,.05); border:1px solid var(--border); border-radius:10px; cursor:pointer; }
.council-history-item:hover { border-color:var(--border-hover); background:rgba(99,102,241,.12); }
.council-history-item span { color:var(--text-muted); font-size:12px; }
.council-live-head { background:linear-gradient(110deg,rgba(99,102,241,.18),rgba(236,72,153,.08)); border-color:rgba(129,140,248,.45); }
.council-kicker { color:#a5b4fc; font-size:12px; letter-spacing:.04em; margin-bottom:5px; }
.council-live-head h3 { margin:0 0 5px; font-size:20px; }
.council-phase { display:inline-flex; align-items:center; gap:7px; border-radius:999px; padding:7px 11px; color:#c7d2fe; background:rgba(99,102,241,.2); font-size:12px; white-space:nowrap; }
.council-live-dot { width:7px; height:7px; border-radius:50%; background:#34d399; box-shadow:0 0 0 5px rgba(52,211,153,.13); animation: council-pulse 1.4s infinite; }
.council-phase.decision { color:#fde68a; background:rgba(245,158,11,.16); }
.council-phase.decision .council-live-dot { background:#fbbf24; }
.council-progress { height:5px; border-radius:99px; overflow:hidden; margin-top:16px; background:rgba(15,23,42,.6); }
.council-progress span { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#6366f1,#ec4899); transition:width .45s ease; }
.council-live-grid { margin-top:16px; align-items:stretch; }
.council-network-card { min-height:440px; }
.council-network { width:100%; min-height:300px; overflow:visible; }
.council-link { stroke:rgba(129,140,248,.26); stroke-width:2; stroke-dasharray:5 7; transition:.3s; }
.council-link.active { stroke:#f0abfc; stroke-width:4; stroke-dasharray:3 5; animation:council-flow 1s linear infinite; }
.council-ceo-node { fill:rgba(99,102,241,.45); stroke:#c7d2fe; stroke-width:2; }
.council-agent-node { fill:#1e293b; stroke:rgba(165,180,252,.75); stroke-width:2; transition:.25s; }
.council-agent-node.active { fill:#7c3aed; stroke:#f0abfc; stroke-width:4; animation:council-node-pulse 1.2s ease-in-out infinite; }
.council-agent-node.offline { opacity:.35; }
.council-node-main { fill:#f8fafc; font-size:14px; font-weight:800; }
.council-node-sub { fill:#c7d2fe; font-size:11px; }
.council-node-label { fill:#f1f5f9; font-size:13px; font-weight:700; }
.council-speaker { display:flex; align-items:center; gap:8px; padding:9px 12px; border-radius:9px; background:rgba(236,72,153,.1); color:#fbcfe8; font-size:13px; }
.council-speaker-wave { color:#f0abfc; animation:lb-pulse 1s infinite; }
.council-message-card { min-height:440px; }
.council-message-stream { max-height:510px; overflow:auto; padding-right:3px; }
.council-message { display:flex; gap:9px; padding:11px 0; border-bottom:1px solid rgba(129,140,248,.12); animation:council-message-in .3s ease-out; }
.council-message-avatar { width:30px; height:30px; border-radius:9px; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:10px; font-weight:800; color:#e0e7ff; background:rgba(99,102,241,.27); }
.council-message.ceo .council-message-avatar, .council-message.decision .council-message-avatar { background:rgba(245,158,11,.24); color:#fde68a; }
.council-message-body { flex:1; min-width:0; font-size:13px; line-height:1.7; color:#dbeafe; white-space:pre-wrap; }
.council-message-meta { display:flex; align-items:center; gap:8px; margin-bottom:3px; }
.council-message-meta b { color:#f8fafc; }
.council-message-meta span { color:var(--text-muted); font-size:11px; }
.council-message.thinking { border:0; }
.council-thinking { display:flex; gap:5px; align-items:center; padding:10px 0; }
.council-thinking i { width:7px; height:7px; border-radius:50%; background:#a5b4fc; animation:council-bounce 1.1s infinite; }
.council-thinking i:nth-child(2) { animation-delay:.15s; }.council-thinking i:nth-child(3) { animation-delay:.3s; }
.council-decision-card { margin-top:16px; border-color:rgba(245,158,11,.45); background:linear-gradient(120deg,rgba(245,158,11,.12),rgba(16,185,129,.07)); }
.council-decision-main { font-size:18px; line-height:1.6; color:#fef3c7; font-weight:700; }
.council-action-list { margin:8px 0 0 18px; color:#d1fae5; line-height:1.8; font-size:13px; }
.council-risks { color:#fed7aa; font-size:12px; line-height:1.7; }
@keyframes council-pulse { 0%,100%{opacity:1}50%{opacity:.45} }
@keyframes council-flow { to { stroke-dashoffset:-16; } }
@keyframes council-node-pulse { 0%,100%{filter:drop-shadow(0 0 0 rgba(240,171,252,0))}50%{filter:drop-shadow(0 0 13px rgba(240,171,252,.85))} }
@keyframes council-message-in { from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none} }
@keyframes council-bounce { 0%,80%,100%{transform:translateY(0);opacity:.45}40%{transform:translateY(-5px);opacity:1} }

/* === 经营驾驶舱 === */
.sim-kpis { margin-bottom:16px; }
.sim-live-value { color:#34d399; text-shadow:0 0 18px rgba(52,211,153,.35); }
.sim-market-strip { display:flex; align-items:center; gap:18px; flex-wrap:wrap; margin-bottom:16px; background:linear-gradient(105deg,rgba(16,185,129,.11),rgba(99,102,241,.1)); }
.sim-market-strip > div:first-child { display:flex; align-items:center; gap:9px; flex:1; min-width:220px; }
.sim-market-orb { width:12px; height:12px; border-radius:50%; background:#94a3b8; box-shadow:0 0 0 7px rgba(148,163,184,.12); }
.sim-market-orb.hot { background:#fbbf24; box-shadow:0 0 0 7px rgba(251,191,36,.14),0 0 16px rgba(251,191,36,.7); }
.sim-market-orb.normal { background:#34d399; box-shadow:0 0 0 7px rgba(52,211,153,.14); }.sim-market-orb.cold { background:#60a5fa; box-shadow:0 0 0 7px rgba(96,165,250,.14); }
.sim-race-live { color:#34d399; font-size:12px; font-weight:700; animation:lb-pulse 1.5s infinite; }
.sim-line-chart { display:block; width:100%; height:auto; min-height:220px; background:radial-gradient(circle at 50% 100%,rgba(99,102,241,.09),transparent 60%); border-radius:10px; }
.sim-chart-dot { filter:drop-shadow(0 0 6px rgba(240,171,252,.75)); }
.sim-axis-label { fill:#64748b; font-size:11px; }
.sim-product-bars { display:flex; flex-direction:column; gap:15px; max-height:330px; overflow:auto; padding-right:4px; }
.sim-product-meta { display:flex; justify-content:space-between; gap:8px; font-size:13px; }.sim-product-meta b { color:#c4b5fd; }
.sim-bar-track { height:9px; background:rgba(148,163,184,.12); border-radius:99px; overflow:hidden; margin:6px 0 4px; }.sim-bar-track span { display:block; height:100%; border-radius:inherit; transition:width .6s; }.sim-bar-track span.high{background:linear-gradient(90deg,#34d399,#22d3ee)}.sim-bar-track span.mid{background:linear-gradient(90deg,#818cf8,#c084fc)}.sim-bar-track span.low{background:linear-gradient(90deg,#fb7185,#f59e0b)}
.sim-product-detail { color:var(--text-muted); font-size:11px; }.sim-product-detail em { font-style:normal; }.sim-product-detail em.pos { color:var(--success); }.sim-product-detail em.neg { color:#fb7185; }
.sim-timeline { display:flex; gap:0; overflow-x:auto; padding:15px 0 8px; }.sim-timeline-item { position:relative; min-width:160px; flex:1; padding:20px 14px 0 14px; border-top:2px solid rgba(129,140,248,.28); }.sim-timeline-item:before { content:''; position:absolute; top:-6px; left:16px; width:8px; height:8px; border-radius:50%; background:#a5b4fc; box-shadow:0 0 0 5px rgba(165,180,252,.12); }.sim-timeline-item b { display:block; color:#c7d2fe; font-size:12px; }.sim-timeline-item .text-sm { display:block; margin-top:3px; }.sim-timeline-item p { margin-top:7px; color:var(--text-secondary); font-size:12px; }
@media (max-width: 760px) { .council-history { grid-template-columns:1fr; }.council-network-card,.council-message-card{min-height:0}.council-network{min-height:260px}.sim-line-chart{min-height:180px}.sim-timeline-item{min-width:145px} }

/* === 经营榜单 Tab === */
.lb-tabs { display: flex; gap: 8px; margin-bottom: 16px; }
.lb-tab {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 18px;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: color-mix(in srgb, var(--text) 5%, transparent);
    color: var(--text-muted);
    font-size: 13.5px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}
.lb-tab:hover { color: var(--text); border-color: var(--border-hover); }
.lb-tab.active {
    color: #fff;
    border-color: transparent;
    background: linear-gradient(135deg, #6366f1, #a855f7);
    box-shadow: 0 4px 14px rgba(99, 102, 241, 0.35);
}
.lb-live {
    font-size: 11px;
    font-weight: 700;
    color: #34d399;
    animation: lb-pulse 1.6s ease-in-out infinite;
}

/* 榜单分页 */
.lb-pager {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 16px;
}
.lb-page-btn {
    min-width: 32px;
    height: 32px;
    padding: 0 10px;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: color-mix(in srgb, var(--text) 5%, transparent);
    color: var(--text-muted);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}
.lb-page-btn:hover:not(:disabled) { color: var(--text); border-color: var(--border-hover); }
.lb-page-btn.active {
    color: #fff;
    border-color: transparent;
    background: linear-gradient(135deg, #6366f1, #a855f7);
    box-shadow: 0 4px 14px rgba(99, 102, 241, 0.35);
}
.lb-page-btn:disabled { opacity: 0.4; cursor: not-allowed; }

/* === 客观市场引擎 === */
.tag-cat { color: #fbbf24; background: rgba(251, 191, 36, 0.1); border: 1px solid rgba(251, 191, 36, 0.28); margin-left: 6px; }

.market-strip {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 14px;
    padding: 12px 14px;
    margin-bottom: 4px;
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.12), rgba(139, 92, 246, 0.08));
    border: 1px solid rgba(99, 102, 241, 0.25);
    border-radius: var(--radius-sm);
    flex-wrap: wrap;
}
.market-strip-left { flex: 1; min-width: 200px; }
.market-label { font-size: 12px; font-weight: 600; color: #a5b4fc; margin-bottom: 4px; }
.market-hot { font-size: 13.5px; color: var(--text); line-height: 1.5; }
.market-strip-right { flex-shrink: 0; text-align: right; font-size: 12px; }

/* 项目作品选择器（产品弹窗，直通上架） */
.project-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px; }
.project-opt {
    display: flex; flex-direction: column; gap: 3px;
    padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px;
    cursor: pointer; background: var(--card-bg); transition: border-color .15s, background .15s;
}
.project-opt:hover { border-color: var(--accent); }
.project-opt.active { border-color: var(--accent); background: rgba(99, 102, 241, 0.12); box-shadow: 0 0 0 1px var(--accent) inset; }
.project-opt-title { font-size: 14px; font-weight: 600; }
.project-opt-meta { font-size: 12px; color: var(--text-muted, #8b93a7); }
.project-linked {
    display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap;
    margin-top: 8px; padding: 10px 12px; border: 1px dashed var(--accent); border-radius: 10px;
    background: rgba(99, 102, 241, 0.08); font-size: 13px;
}

/* 品类选择器（产品弹窗） */
.cat-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 8px; }
.cat-opt {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    padding: 10px 8px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all .15s;
    text-align: center;
}
.cat-opt:hover { border-color: var(--accent); }
.cat-opt.active { border-color: var(--accent); background: rgba(99, 102, 241, 0.12); box-shadow: 0 0 0 1px var(--accent) inset; }
.cat-emoji { font-size: 22px; }
.cat-name { font-size: 13px; font-weight: 600; }
.cat-cost { font-size: 11px; color: var(--text-muted); }

.cat-locked {
    padding: 10px 12px;
    background: rgba(148, 163, 184, 0.08);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    font-size: 13.5px;
}

/* 档位选择器（产品弹窗） */
.tier-picker { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.tier-opt {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    padding: 10px 8px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all .15s;
    text-align: center;
}
.tier-opt:hover { border-color: var(--accent); }
.tier-opt.active { border-color: var(--accent); background: rgba(99, 102, 241, 0.12); box-shadow: 0 0 0 1px var(--accent) inset; }
.tier-name { font-size: 13px; font-weight: 600; }
.tier-cost { font-size: 11px; color: var(--text-muted); }

/* 系统成本展示 */
.cost-box {
    display: flex; align-items: baseline; gap: 12px;
    padding: 10px 14px;
    background: rgba(52, 211, 153, 0.08);
    border: 1px solid rgba(52, 211, 153, 0.25);
    border-radius: var(--radius-sm);
    flex-wrap: wrap;
}
.cost-value { font-size: 18px; font-weight: 700; color: var(--success); }

/* 定价提示 */
.tip-good { color: #34d399; margin-top: 4px; }
.tip-info { color: #a5b4fc; margin-top: 4px; }
.tip-warn { color: #fbbf24; margin-top: 4px; }
.tip-bad { color: #f87171; margin-top: 4px; }

/* 产品行评分 */
.product-score { display: flex; align-items: center; gap: 8px; margin-top: 5px; flex-wrap: wrap; }
.score-badge {
    display: inline-block;
    font-size: 11px; font-weight: 700;
    padding: 1px 9px;
    border-radius: 999px;
    flex-shrink: 0;
}
.score-high { color: #34d399; background: rgba(52, 211, 153, 0.12); border: 1px solid rgba(52, 211, 153, 0.3); }
.score-mid { color: #fbbf24; background: rgba(251, 191, 36, 0.12); border: 1px solid rgba(251, 191, 36, 0.3); }
.score-low { color: #f87171; background: rgba(248, 113, 113, 0.12); border: 1px solid rgba(248, 113, 113, 0.3); }
.score-detail { font-size: 11px; color: var(--text-muted); }
.product-feedback {
    margin-top: 6px;
    font-size: 12px;
    color: var(--text-muted);
    background: rgba(148, 163, 184, 0.08);
    border-left: 2px solid var(--accent);
    padding: 4px 9px;
    border-radius: 0 6px 6px 0;
    line-height: 1.5;
}
.product-feedback .fb-label { color: var(--accent); font-weight: 600; margin-right: 5px; }
.feedback-box {
    background: rgba(148, 163, 184, 0.08);
    border-left: 2px solid var(--accent);
    padding: 9px 11px;
    border-radius: 0 6px 6px 0;
    font-size: 13px;
    color: var(--text);
    line-height: 1.6;
}

/* 结算报告弹窗 */
.modal-wide { width: min(760px, 94vw); }
.report-summary {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 10px;
    margin: 6px 0 4px;
}
.report-sum {
    padding: 10px;
    text-align: center;
    background: rgba(99, 102, 241, 0.06);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
}
.report-num { font-size: 17px; font-weight: 700; color: var(--text); }
.report-label { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
.report-item {
    padding: 12px 14px;
    margin-top: 10px;
    background: rgba(99, 102, 241, 0.05);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
}
.report-item-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; gap: 8px; }
.report-item-name { font-weight: 600; font-size: 14px; }
.report-text {
    font-family: inherit;
    font-size: 12.5px;
    line-height: 1.7;
    color: var(--text);
    white-space: pre-wrap;
    word-break: break-word;
    margin: 0;
    background: rgba(0, 0, 0, 0.18);
    padding: 10px 12px;
    border-radius: var(--radius-sm);
}

@media (max-width: 640px) {
    .tier-picker { grid-template-columns: 1fr; }
    .market-strip-right { text-align: left; }
}

/* ==================== 2026 Aurora daylight UI ====================
   Original CSS/SVG assets: no external copyrighted image dependency. */
:root {
    --bg-primary: #eef3ff;
    --bg-secondary: #f8faff;
    --bg-card: rgba(255, 255, 255, .84);
    --bg-card-hover: rgba(255, 255, 255, .98);
    --border: rgba(92, 109, 185, .17);
    --border-hover: rgba(99, 102, 241, .42);
    --text-primary: #17233b;
    --text-secondary: #52617b;
    --text-muted: #7a88a1;
    --text: #17233b;
    --accent: #5b5cf0;
    --accent-hover: #7c5cff;
    --accent-glow: rgba(91, 92, 240, .24);
    --success: #079669;
    --warning: #c57b09;
    --danger: #dc3f61;
    --glass-blur: blur(18px);
}
body { background: var(--bg-primary); color: var(--text-primary); }
body::before { background: radial-gradient(ellipse at 8% 0%, rgba(125, 140, 255, .24), transparent 46%), radial-gradient(ellipse at 94% 20%, rgba(236, 182, 255, .2), transparent 42%), radial-gradient(ellipse at 50% 100%, rgba(95, 214, 201, .13), transparent 50%); animation: aurora-drift 18s ease-in-out infinite alternate; }
@keyframes aurora-drift { from { transform: translate3d(-1%,0,0) scale(1); } to { transform: translate3d(1%,1%,0) scale(1.04); } }
.sidebar { background: rgba(250, 252, 255, .78); box-shadow: 18px 0 50px rgba(74, 88, 150, .1); border-right-color: rgba(104, 119, 189, .18); }
.sidebar-brand { border-bottom-color: rgba(104,119,189,.16); }
.sidebar-brand .brand-text b, .nav-item, .card-title, .page-header h2 { color: var(--text-primary); }
.nav-section-title { color: #8793ae; }
.nav-item { color: #60708f; }
.nav-item:hover { background: rgba(91,92,240,.1); color: #3437a9; }
.nav-item.active { background: linear-gradient(100deg, rgba(91,92,240,.16), rgba(178,116,255,.12)); color: #4338ca; box-shadow: inset 3px 0 0 #655cf2; }
.sidebar-footer { border-top-color: rgba(104,119,189,.16); }
.main-content { position: relative; }
.page-header h2 { letter-spacing: -.025em; }
.page-header p, .text-muted { color: var(--text-secondary); }
.card { background: linear-gradient(145deg, rgba(255,255,255,.9), rgba(247,249,255,.76)); border-color: rgba(104,119,189,.18); box-shadow: 0 12px 36px rgba(72, 86, 150, .08), inset 0 1px 0 rgba(255,255,255,.8); }
.card:hover { border-color: rgba(91,92,240,.38); box-shadow: 0 16px 42px rgba(72,86,150,.13), inset 0 1px 0 rgba(255,255,255,.95); transform: translateY(-1px); }
.btn-primary { background: linear-gradient(135deg, #5b5cf0, #9b55ed); box-shadow: 0 8px 20px rgba(91,92,240,.23); }
.btn-primary:hover { box-shadow: 0 12px 28px rgba(91,92,240,.32); transform: translateY(-1px); }
input, select, textarea { background: rgba(255,255,255,.8); color: var(--text-primary); border-color: rgba(104,119,189,.24); }
input:focus, select:focus, textarea:focus { border-color: #7272ef; box-shadow: 0 0 0 3px rgba(91,92,240,.12); }
.employee-card { position: relative; overflow: hidden; }
.employee-card::after { content:''; position:absolute; width:180px; height:180px; right:-80px; bottom:-100px; border-radius:50%; background: radial-gradient(circle, rgba(144,111,255,.18), transparent 68%); pointer-events:none; }
.employee-avatar { box-shadow: 0 8px 18px rgba(91,92,240,.2); }
.stat-card { border-top: 3px solid rgba(91,92,240,.45); }
.stat-value { filter: drop-shadow(0 5px 12px rgba(91,92,240,.12)); }
.tag { background: rgba(91,92,240,.09); color: #4d4dc0; border-color: rgba(91,92,240,.18); }
.status-badge { border: 1px solid rgba(104,119,189,.16); }
.council-live-head { background: linear-gradient(112deg, rgba(224,230,255,.92), rgba(255,236,252,.86)); }
.council-network-card { background: linear-gradient(155deg, rgba(239,244,255,.96), rgba(255,249,255,.9)); }
.council-link { stroke: rgba(91,92,240,.32); }
.council-agent-node { fill: #fff; stroke: rgba(91,92,240,.64); }
.council-node-main, .council-node-label { fill: #243252; }
.council-node-sub { fill: #64748b; }
.council-message-body { color: #33415f; }
.council-message-meta b { color: #1e2a45; }
.council-message-avatar { color: #3d3aa5; background: rgba(91,92,240,.14); }
.council-progress { background: rgba(127,141,184,.16); }
.sim-line-chart { background: radial-gradient(circle at 50% 100%, rgba(91,92,240,.12), transparent 64%); }

/* 数字员工 2D 形象：由 CSS/SVG 组合生成，按岗位保持稳定身份。 */
.agent-avatar-2d { position:relative; overflow:visible; background: linear-gradient(145deg,#edf0ff,#d9d8ff); border: 2px solid rgba(255,255,255,.92); }
.agent-avatar-2d .avatar-halo { position:absolute; inset:-5px; border-radius:50%; border:1px solid rgba(91,92,240,.24); animation: avatar-orbit 4s linear infinite; }
.agent-avatar-2d .avatar-glyph { position:relative; z-index:2; filter: drop-shadow(0 2px 2px rgba(53,54,120,.2)); }
.agent-avatar-2d::before { content:''; position:absolute; width:34%; height:22%; left:33%; bottom:8%; border-radius:60% 60% 45% 45%; background:rgba(91,92,240,.35); }
.agent-avatar-2d.avatar-1 { background:linear-gradient(145deg,#e2fbf7,#c6edf2); }.agent-avatar-2d.avatar-2 { background:linear-gradient(145deg,#fff2db,#ffd8bd); }.agent-avatar-2d.avatar-3 { background:linear-gradient(145deg,#f7e7ff,#e8d5ff); }.agent-avatar-2d.avatar-4 { background:linear-gradient(145deg,#e6f0ff,#c8ddff); }.agent-avatar-2d.avatar-5 { background:linear-gradient(145deg,#fff0f2,#ffd4e0); }
@keyframes avatar-orbit { to { transform: rotate(360deg); } }
.council-node-glyph { font-size:19px; }
.council-agent-halo { fill:none; stroke:rgba(91,92,240,.15); stroke-width:2; stroke-dasharray:3 8; animation: avatar-orbit 8s linear infinite; transform-origin:center; transform-box:fill-box; }
.council-agent-halo.active { stroke:#f07bd8; stroke-width:3; animation-duration:2.4s; }

/* 管理员全站实时监控 */
.admin-monitor-card { overflow:hidden; }
.admin-monitor-head { margin-bottom:14px; }
.admin-monitor-table-wrap { overflow:auto; }
.admin-monitor-table { width:100%; border-collapse:collapse; min-width:790px; font-size:12px; }
.admin-monitor-table th { text-align:left; color:#71809d; font-size:11px; letter-spacing:.04em; padding:9px 10px; border-bottom:1px solid rgba(104,119,189,.18); }
.admin-monitor-table td { padding:11px 10px; border-bottom:1px solid rgba(104,119,189,.11); color:#40506d; white-space:nowrap; }
.admin-monitor-table td:first-child { min-width:180px; }.admin-monitor-table td:first-child b,.admin-monitor-table td:first-child small { display:block; }.admin-monitor-table td:first-child small { color:#8490a8; margin-top:3px; }
.admin-monitor-table tr { transition:background .2s; }.admin-monitor-table tr:hover { background:rgba(91,92,240,.06); }.admin-row-hot { background:rgba(16,185,129,.06); }
.admin-live-dot { display:inline-block; width:7px; height:7px; margin-right:6px; border-radius:50%; background:#16b981; box-shadow:0 0 0 4px rgba(16,185,129,.12); animation: council-pulse 1.5s infinite; }
.positive { color:#07885f !important; }.negative { color:#d23d5d !important; }

/* 经营模拟比赛：轻量 2D 城市场景 */
.arena-live-scene { padding:14px; overflow:hidden; background:linear-gradient(145deg,rgba(255,255,255,.9),rgba(239,244,255,.8)); }
.arena-scene-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin:0 5px 10px; }.arena-scene-head b { color:#29365a; }.arena-scene-head span { margin-left:10px; color:#7c89a5; font-size:12px; }.arena-scene-stats { display:flex; gap:10px; color:#5f6f8f; font-size:12px; }.arena-scene-stats span { padding:5px 9px; border-radius:999px; background:rgba(91,92,240,.08); }
.arena-scene { display:block; width:100%; height:auto; border-radius:18px; box-shadow: inset 0 0 0 1px rgba(255,255,255,.65); }
.arena-label { fill:#4d5b7b; font-size:11px; font-weight:800; letter-spacing:.06em; }.arena-store { filter:drop-shadow(0 9px 9px rgba(91,92,240,.2)); }.arena-store-light { animation: arena-light 1.4s ease-in-out infinite; }.arena-customer { transform-box:fill-box; transform-origin:center; animation: customer-bob 2.1s ease-in-out infinite alternate; }.arena-customer-dot { fill:rgba(255,255,255,.72); stroke:rgba(91,92,240,.25); stroke-width:2; }.arena-customer-pulse { fill:none; stroke:#9b8af4; stroke-width:1.5; opacity:.3; animation: customer-pulse 1.8s ease-out infinite; }.arena-order-burst { animation: order-pop 1.6s ease-in-out infinite; transform-origin:665px 103px; }.arena-order-burst circle { fill:rgba(255,255,255,.9); stroke:#f09bd9; stroke-width:2; }.arena-order-burst text { fill:#8d427f; font-weight:800; }
@keyframes customer-bob { to { transform:translateY(-6px) translateX(5px); } } @keyframes customer-pulse { from { r:12px; opacity:.55; } to { r:28px; opacity:0; } } @keyframes order-pop { 0%,100% { transform:scale(.96); opacity:.7; } 50% { transform:scale(1.08); opacity:1; } } @keyframes arena-light { 50% { opacity:.4; } }
@media (max-width: 700px) { .arena-scene-head { align-items:flex-start; flex-direction:column; }.arena-scene-head span { display:block; margin:4px 0 0; } .admin-monitor-table { min-width:720px; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; } }

/* ==================== AI 海报工坊 ==================== */
.poster-grid {
    display: grid;
    grid-template-columns: minmax(300px, 400px) 1fr;
    gap: 16px;
    align-items: start;
    margin-bottom: 16px;
}
.poster-panel { padding: 20px; }
.poster-tabs {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
    background: rgba(15, 23, 42, 0.5);
    padding: 4px;
    border-radius: 12px;
    border: 1px solid var(--border);
}
.poster-tabs button {
    flex: 1;
    padding: 8px 10px;
    border-radius: 9px;
    border: none;
    background: transparent;
    color: var(--text-secondary);
    font-size: 14px;
    cursor: pointer;
    transition: all .18s;
}
.poster-tabs button.active {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.85), rgba(139, 92, 246, 0.85));
    color: #fff;
    font-weight: 600;
}
.poster-ref { margin-bottom: 16px; }
.ref-thumb {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 150px;
    background: rgba(15, 23, 42, 0.5);
    border: 1.5px dashed var(--border);
    border-radius: 12px;
    cursor: pointer;
    overflow: hidden;
    text-align: center;
    font-size: 13.5px;
    color: var(--text-secondary);
    transition: border-color .2s;
}
.ref-thumb:hover { border-color: var(--accent); }
.ref-thumb img { width: 100%; max-height: 220px; object-fit: contain; }
.ref-thumb small { font-size: 12px; color: var(--text-muted); }
.ref-actions { display: flex; gap: 8px; margin-top: 8px; }
.scale-row { margin-top: 12px; display: flex; flex-direction: column; gap: 6px; }
.scale-row input[type=range] { width: 100%; accent-color: var(--accent, #6366f1); }
.prompt-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
.chip {
    padding: 5px 12px;
    font-size: 12.5px;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: rgba(99, 102, 241, 0.08);
    color: #a5b4fc;
    cursor: pointer;
    transition: all .15s;
}
.chip:hover { border-color: var(--accent); background: rgba(99, 102, 241, 0.18); color: #c7d2fe; }
.poster-error { margin-top: 10px; font-size: 13px; color: #f87171; }
.poster-result { min-height: 420px; }
.poster-result img {
    width: 100%;
    max-height: 520px;
    object-fit: contain;
    border-radius: 12px;
    background: rgba(0, 0, 0, 0.35);
    margin-bottom: 12px;
}
.poster-actions { display: flex; gap: 10px; flex-wrap: wrap; }

/* 海报排版编辑器 */
.poster-editor-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}
.poster-editor-actions { display: flex; gap: 10px; }
.poster-editor-body {
    display: grid;
    grid-template-columns: minmax(260px, 420px) 1fr;
    gap: 20px;
    align-items: start;
}
.poster-preview {
    position: relative;
    width: 100%;
    aspect-ratio: 1 / 1;
    background: #000;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.45);
}
.poster-preview img { display: block; width: 100%; height: 100%; object-fit: cover; }
.poster-line {
    position: absolute;
    left: 50%;
    top: 10%;
    transform: translate(-50%, -50%);
    width: 90%;
    text-align: center;
    white-space: pre-wrap;
    text-shadow: 0 2px 14px rgba(0, 0, 0, 0.6);
    line-height: 1.35;
    word-break: break-word;
}
.poster-controls { display: flex; flex-direction: column; gap: 14px; }
.poster-line-ctl {
    padding: 12px 14px;
    background: rgba(15, 23, 42, 0.45);
    border: 1px solid var(--border);
    border-radius: 12px;
}
.ctl-head { font-size: 12.5px; font-weight: 600; color: #a5b4fc; margin-bottom: 8px; }
.ctl-text {
    width: 100%;
    padding: 8px 12px;
    background: rgba(15, 23, 42, 0.6);
    border: 1px solid var(--border);
    border-radius: 8px;
    color: var(--text-primary);
    font-size: 13.5px;
    margin-bottom: 8px;
}
.ctl-text:focus { outline: none; border-color: var(--accent); }
.ctl-row { display: flex; gap: 8px; align-items: center; }
.ctl-row input[type=color] {
    width: 42px; height: 34px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: transparent;
    padding: 2px;
    cursor: pointer;
}
.ctl-select {
    flex: 1;
    padding: 7px 10px;
    background: rgba(15, 23, 42, 0.6);
    border: 1px solid var(--border);
    border-radius: 8px;
    color: var(--text-primary);
    font-size: 13px;
}

/* 历史作品 */
.poster-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }
.gallery-item {
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--border);
    background: rgba(15, 23, 42, 0.5);
}
.gallery-item img {
    display: block;
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    cursor: pointer;
    transition: transform .2s;
}
.gallery-item:hover img { transform: scale(1.04); }
.gallery-actions { display: flex; gap: 4px; padding: 6px; }
.gallery-actions button, .gallery-actions a {
    flex: 1;
    padding: 4px 2px;
    font-size: 11.5px;
    text-align: center;
    border-radius: 7px;
    border: 1px solid var(--border);
    background: rgba(99, 102, 241, 0.08);
    color: #a5b4fc;
    cursor: pointer;
    text-decoration: none;
    transition: all .15s;
}
.gallery-actions button:hover, .gallery-actions a:hover {
    border-color: var(--accent);
    background: rgba(99, 102, 241, 0.2);
    color: #fff;
}

@media (max-width: 900px) {
    .poster-grid { grid-template-columns: 1fr; }
    .poster-editor-body { grid-template-columns: 1fr; }
}

/* ===================== AI 项目开发 ===================== */
.project-layout { display: grid; grid-template-columns: 380px 1fr; gap: 16px; align-items: start; }
.project-list { display: flex; flex-direction: column; gap: 10px; }
.project-item {
    padding: 14px 16px;
    background: rgba(15, 23, 42, 0.45);
    border: 1px solid var(--border);
    border-radius: 12px;
    cursor: pointer;
    transition: all .15s;
}
.project-item:hover { border-color: var(--accent); background: rgba(99, 102, 241, 0.08); }
.project-item.active { border-color: var(--accent); background: rgba(99, 102, 241, 0.12); box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.25); }
.project-item-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 6px; }
.project-item-head b { font-size: 14.5px; color: var(--text-primary); }
.project-item-idea {
    font-size: 12.5px;
    color: var(--text-secondary);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-bottom: 8px;
}
.project-item-meta { display: flex; justify-content: space-between; gap: 8px; font-size: 11.5px; color: var(--text-muted); }

/* 状态徽章 */
.status-badge {
    flex-shrink: 0;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}
.status-badge.st-planning { background: rgba(99, 102, 241, 0.15); color: #a5b4fc; }
.status-badge.st-developing { background: rgba(245, 158, 11, 0.15); color: var(--warning); }
.status-badge.st-done { background: rgba(16, 185, 129, 0.15); color: var(--success); }
.status-badge.st-other { background: rgba(139, 92, 246, 0.15); color: #c4b5fd; }
.status-badge.st-original { background: rgba(236, 72, 153, 0.15); color: #f9a8d4; }

/* 项目详情 */
.project-detail { margin-top: 16px; }
.project-detail-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 16px; }
.project-detail-head h3 { margin: 0 0 4px; }
.project-detail-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.project-edit {
    padding: 14px;
    background: rgba(15, 23, 42, 0.45);
    border: 1px solid var(--border);
    border-radius: 12px;
    margin-bottom: 16px;
}
.project-edit-actions { display: flex; gap: 8px; }

/* 方案文档 */
.plan-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
.plan-block { margin-bottom: 14px; }
.plan-label { font-size: 12.5px; font-weight: 600; color: #a5b4fc; margin-bottom: 8px; letter-spacing: .5px; }
.plan-text {
    padding: 12px 14px;
    background: rgba(15, 23, 42, 0.45);
    border: 1px solid var(--border);
    border-radius: 10px;
    font-size: 13.5px;
    line-height: 1.6;
    color: var(--text-primary);
}
.feature-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.feature-tag {
    padding: 6px 14px;
    background: rgba(99, 102, 241, 0.1);
    border: 1px solid rgba(99, 102, 241, 0.35);
    border-radius: 999px;
    font-size: 13px;
    color: #c7d2fe;
}

/* 开发步骤时间线 */
.step-timeline { display: flex; flex-direction: column; }
.step-item { display: flex; gap: 12px; position: relative; padding-bottom: 18px; }
.step-item:last-child { padding-bottom: 0; }
.step-item::before {
    content: '';
    position: absolute;
    left: 17px;
    top: 38px;
    bottom: 0;
    width: 2px;
    background: linear-gradient(180deg, rgba(99, 102, 241, 0.5), rgba(99, 102, 241, 0.08));
}
.step-item:last-child::before { display: none; }
.step-marker {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--accent), #8b5cf6);
    border-radius: 10px;
    font-size: 11px;
    font-weight: 700;
    color: #fff;
    box-shadow: 0 2px 10px var(--accent-glow);
}
.step-body { padding-top: 3px; }
.step-body b { font-size: 14px; color: var(--text-primary); }
.step-body .text-muted { margin-top: 2px; line-height: 1.55; }

/* 状态流转 */
.status-flow {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-top: 16px;
    margin-top: 6px;
    border-top: 1px dashed var(--border);
}

/* AI 一键生成作品 - 主操作大按钮 */
.artifact-gen-box {
    padding: 18px 14px;
    border: 1px dashed rgba(99, 102, 241, 0.45);
    border-radius: 14px;
    background: rgba(99, 102, 241, 0.07);
    text-align: center;
    margin-bottom: 12px;
}
.btn-artifact-gen {
    padding: 14px 36px;
    font-size: 17px;
    font-weight: 700;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--accent), #8b5cf6);
    color: #fff;
    cursor: pointer;
    box-shadow: 0 6px 18px var(--accent-glow);
    transition: transform .15s, box-shadow .15s, opacity .15s;
}
.btn-artifact-gen:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 10px 26px var(--accent-glow);
}
.btn-artifact-gen:disabled {
    opacity: .55;
    cursor: not-allowed;
}
.artifact-gen-hint {
    margin-top: 10px;
    font-size: 12px;
    color: var(--text-muted, #94a3b8);
}

/* 状态管理器：弱化按钮，突出"仅标记"语义 */
.status-manager {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
}
.status-manager-label {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    font-size: 14px;
}
.status-manager-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.status-auto-tip {
    font-size: 12px;
    color: var(--success, #10b981);
}

/* 作品墙 */
.works-card { margin-bottom: 16px; }
.works-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 12px;
}
.work-item {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 14px;
    background: rgba(15, 23, 42, 0.45);
    border: 1px solid var(--border);
    border-radius: 12px;
    cursor: pointer;
    transition: border-color .2s, transform .2s;
}
.work-item:hover { border-color: #6366f1; transform: translateY(-2px); }
.work-icon { font-size: 26px; }
.work-name { font-size: 14px; font-weight: 600; color: var(--text-primary); }
.work-meta { line-height: 1.4; }

/* 作品集 */
.nav-sub { padding-left: 30px; font-size: 13px; }
.portfolio-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 14px;
}
.portfolio-card {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 16px;
    background: rgba(15, 23, 42, 0.45);
    border: 1px solid var(--border);
    border-radius: 12px;
    cursor: pointer;
    transition: border-color .2s, transform .2s;
}
.portfolio-card:hover { border-color: #6366f1; transform: translateY(-2px); }
.portfolio-card-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.portfolio-icon { font-size: 26px; }
.portfolio-name { font-size: 15px; font-weight: 600; color: var(--text-primary); line-height: 1.35; }
.portfolio-owner { font-size: 12.5px; color: var(--text-secondary); display: flex; align-items: center; gap: 4px; }
.portfolio-desc {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 39px;
}
.portfolio-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12.5px; margin-top: auto; }

.portfolio-detail-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}
.portfolio-preview { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; background: #fff; }
.portfolio-preview-frame { width: 100%; height: 640px; border: 0; display: block; }
.portfolio-preview-url { padding: 24px; text-align: center; display: flex; flex-direction: column; gap: 12px; align-items: center; }

@media (max-width: 900px) {
    .portfolio-detail-grid { grid-template-columns: 1fr; }
    .portfolio-preview-frame { height: 480px; }
}

/* 成品挂载 */
.artifact-flag { margin-left: 4px; font-size: 13px; cursor: default; }
.artifact-box {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 12px 14px;
    background: rgba(16, 185, 129, 0.06);
    border: 1px solid rgba(16, 185, 129, 0.25);
    border-radius: 10px;
    margin-bottom: 10px;
}
.artifact-box-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.artifact-dot { font-size: 13.5px; font-weight: 600; color: var(--success); }
.artifact-actions { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.artifact-upload {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}
.artifact-upload input[type="text"], .artifact-upload input:not([type]) {
    flex: 1;
    min-width: 220px;
}
.file-btn { position: relative; overflow: hidden; cursor: pointer; }
.file-btn input[type="file"] {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
    font-size: 0;
}

/* 成品预览弹层 */
.artifact-overlay {
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(2, 6, 23, 0.82);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}
.artifact-overlay-box {
    width: min(980px, 100%);
    height: min(82vh, 100%);
    display: flex;
    flex-direction: column;
    background: #0f172a;
    border: 1px solid var(--border);
    border-radius: 14px;
    overflow: hidden;
}
.artifact-overlay-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-bottom: 1px solid var(--border);
}
.artifact-overlay-head b { font-size: 14px; }
.artifact-overlay-frame {
    flex: 1;
    width: 100%;
    border: 0;
    background: #fff;
}

@media (max-width: 900px) {
    .project-layout { grid-template-columns: 1fr; }
    .plan-grid { grid-template-columns: 1fr; }
    .project-detail-head { flex-direction: column; }
    .artifact-overlay { padding: 10px; }
    .artifact-overlay-box { height: 90vh; }
}

/* ===== 网站访问统计（管理端，老师/管理员可见） ===== */
.stats-week {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    height: 130px;
    padding: 10px 4px 0;
}
.stats-week-col {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    height: 100%;
    min-width: 0;
}
.stats-week-bar {
    width: 100%;
    max-width: 34px;
    border-radius: 6px 6px 0 0;
    background: linear-gradient(180deg, #8b5cf6, #6366f1);
    min-height: 2px;
    transition: height .3s;
}
.stats-week-num {
    font-size: 11px;
    color: #cbd5e1;
    margin-top: 6px;
}
.stats-week-label {
    font-size: 11px;
    color: #94a3b8;
    margin-top: 2px;
}

/* 战略成长中心：经营财务、成长树、实验和会议回放 */
.strategy-header { align-items:center; }
.strategy-page .grid > *, .council-page .grid > * { min-width:0; }
@media (max-width:640px) { .strategy-page .strategy-chart { min-height:0; } }
.strategy-tabs { display:flex; gap:7px; flex-wrap:wrap; margin:0 0 16px; padding:6px; border:1px solid var(--border); border-radius:14px; background:rgba(15,23,42,.55); }
.strategy-tab { border:0; color:var(--text-muted); background:transparent; border-radius:10px; padding:9px 13px; cursor:pointer; font-size:12px; transition:.2s; }
.strategy-tab:hover,.strategy-tab.active { color:#f8fafc; background:linear-gradient(110deg,rgba(99,102,241,.45),rgba(236,72,153,.22)); box-shadow:0 5px 20px rgba(79,70,229,.16); }
.strategy-kpis { margin-bottom:16px; }
.strategy-kpi { position:relative; overflow:hidden; display:flex; flex-direction:column; gap:6px; }
.strategy-kpi:after { content:''; position:absolute; width:90px; height:90px; right:-35px; bottom:-35px; border-radius:50%; background:rgba(129,140,248,.12); }
.strategy-kpi span,.strategy-kpi small { color:var(--text-muted); font-size:12px; }
.strategy-kpi strong { color:#e0e7ff; font-size:25px; letter-spacing:-.03em; }
.strategy-kpi strong.positive { color:#6ee7b7; }.strategy-kpi strong.negative { color:#fb7185; }
.strategy-main-grid { align-items:stretch; }.strategy-chart-card { min-height:330px; }
.strategy-chart { width:100%; height:auto; min-height:230px; margin-top:8px; border-radius:12px; background:radial-gradient(circle at 50% 100%,rgba(99,102,241,.15),transparent 65%); }
.strategy-chart-legend { display:flex; gap:20px; color:var(--text-muted); font-size:11px; }.strategy-chart-legend i { display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:5px; }.legend-cash{background:#a5b4fc}.legend-profit{background:#f0abfc}
.strategy-action-list { display:flex; flex-direction:column; gap:10px; }.strategy-action { display:flex; gap:10px; align-items:flex-start; color:var(--text-secondary); font-size:13px; line-height:1.6; }.strategy-action b { flex-shrink:0; width:22px; height:22px; border-radius:8px; display:flex; align-items:center; justify-content:center; color:#e0e7ff; background:rgba(99,102,241,.28); }
.strategy-causal { display:flex; align-items:center; justify-content:center; gap:8px; margin:28px 0 18px; overflow:auto; padding:5px; }.strategy-causal i { color:#a5b4fc; font-style:normal; animation:strategy-flow 1.8s linear infinite; }.causal-node { min-width:63px; padding:10px 6px; text-align:center; border:1px solid rgba(129,140,248,.4); border-radius:12px; color:#e0e7ff; background:linear-gradient(145deg,rgba(99,102,241,.25),rgba(236,72,153,.12)); box-shadow:0 0 20px rgba(99,102,241,.1); font-size:12px; }.causal-node small { color:#94a3b8; font-size:10px; }
.strategy-snapshot-list { display:flex; flex-direction:column; gap:8px; max-height:265px; overflow:auto; }.strategy-snapshot { display:grid; grid-template-columns:1.5fr 1fr 1.2fr; gap:8px; align-items:center; padding:8px 10px; border-radius:9px; background:rgba(99,102,241,.06); color:var(--text-muted); font-size:11px; }.strategy-snapshot b { text-align:right; }.strategy-snapshot small { text-align:right; }.strategy-snapshot .positive{color:#6ee7b7}.strategy-snapshot .negative{color:#fb7185}
.strategy-crisis-mini { display:flex; flex-direction:column; gap:10px; }.strategy-crisis-mini > div { display:grid; grid-template-columns:10px 1fr auto; align-items:center; gap:7px; font-size:12px; }.strategy-crisis-mini small { color:var(--text-muted); font-size:11px; }.severity-dot { display:inline-block; width:9px; height:9px; border-radius:50%; background:#94a3b8; box-shadow:0 0 0 4px rgba(148,163,184,.12); }.severity-dot.low{background:#34d399}.severity-dot.medium{background:#fbbf24}.severity-dot.high{background:#fb923c}.severity-dot.critical{background:#fb7185; box-shadow:0 0 0 4px rgba(251,113,133,.15),0 0 12px rgba(251,113,133,.5)}
.strategy-section { animation:strategy-enter .28s ease-out; }.section-intro { display:flex; justify-content:space-between; align-items:flex-start; gap:14px; margin-bottom:16px; }.section-intro h3 { margin:0 0 6px; }.section-intro p { margin:0; color:var(--text-muted); font-size:13px; }
.strategy-employee-grid,.strategy-experiment-grid,.strategy-crisis-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }.strategy-employee-card,.strategy-experiment-card,.strategy-crisis-card { min-width:0; }.strategy-employee-title { display:flex; align-items:center; gap:9px; min-width:0; }.strategy-employee-title > div { display:flex; flex-direction:column; gap:3px; min-width:0; }.strategy-employee-title small,.strategy-experiment-card small,.strategy-crisis-card small { color:var(--text-muted); font-size:11px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }.level-badge { color:#fde68a; background:rgba(245,158,11,.14); border:1px solid rgba(245,158,11,.35); padding:4px 8px; border-radius:999px; font-size:11px; }.strategy-xp { margin:16px 0 12px; color:var(--text-muted); font-size:11px; }.strategy-xp .flex-between { margin-bottom:5px; }.xp-track { height:8px; border-radius:99px; background:rgba(148,163,184,.14); overflow:hidden; }.xp-track i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#818cf8,#f0abfc); transition:width .5s; }.strategy-employee-stats { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:14px; }.strategy-employee-stats span { padding:4px 7px; color:#c7d2fe; background:rgba(99,102,241,.12); border-radius:6px; font-size:10px; }
.strategy-replay-grid { align-items:start; }.strategy-meeting-row { width:100%; display:flex; flex-direction:column; gap:4px; text-align:left; margin-bottom:8px; padding:10px 12px; border:1px solid var(--border); border-radius:9px; color:var(--text-primary); background:rgba(99,102,241,.04); cursor:pointer; }.strategy-meeting-row:hover,.strategy-meeting-row.active { border-color:#818cf8; background:rgba(99,102,241,.15); }.strategy-meeting-row span { color:var(--text-muted); font-size:11px; }.replay-progress { height:5px; border-radius:99px; background:rgba(148,163,184,.15); overflow:hidden; margin:15px 0; }.replay-progress i { display:block; height:100%; background:linear-gradient(90deg,#818cf8,#f0abfc); transition:width .25s; }.strategy-message-timeline { max-height:430px; overflow:auto; padding-right:4px; }.strategy-replay-message { display:flex; gap:9px; padding:10px 0; border-bottom:1px solid rgba(129,140,248,.12); animation:strategy-enter .2s ease-out; }.strategy-replay-message .replay-round { flex-shrink:0; width:24px; height:24px; border-radius:8px; display:flex; justify-content:center; align-items:center; color:#c7d2fe; background:rgba(99,102,241,.2); font-size:10px; }.strategy-replay-message > div { min-width:0; }.strategy-replay-message b { color:#f8fafc; font-size:12px; }.strategy-replay-message small { margin-left:8px; color:#94a3b8; font-size:10px; }.strategy-replay-message p { margin:4px 0 0; color:#cbd5e1; font-size:12px; line-height:1.65; white-space:pre-wrap; }.strategy-replay-message.ceo .replay-round { background:rgba(245,158,11,.25); color:#fde68a; }.strategy-branch-form { display:flex; flex-direction:column; gap:8px; margin-top:14px; padding-top:14px; border-top:1px solid var(--border); }.strategy-branch-list { display:flex; flex-direction:column; gap:8px; margin-top:12px; }.strategy-branch-list > div { display:flex; flex-direction:column; gap:3px; padding:9px 10px; border-left:3px solid #f0abfc; background:rgba(236,72,153,.07); border-radius:6px; }.strategy-branch-list span { color:var(--text-secondary); font-size:12px; }
.strategy-form-card { display:flex; flex-direction:column; gap:10px; margin-bottom:16px; }.strategy-form-card input,.strategy-form-card textarea,.strategy-form-card select,.strategy-branch-form input,.strategy-branch-form textarea,.strategy-invite input,.strategy-invite select,.crisis-actions select,.strategy-team-row select { width:100%; box-sizing:border-box; }.strategy-form-card textarea,.strategy-branch-form textarea { min-height:80px; }.ab-compare { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:15px 0; color:var(--text-muted); font-size:11px; }.ab-compare > div { min-width:0; }.ab-compare span { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.ab-bar { height:9px; margin:6px 0 4px; border-radius:99px; overflow:hidden; background:rgba(148,163,184,.14); }.ab-bar i { display:block; height:100%; background:linear-gradient(90deg,#34d399,#22d3ee); transition:width .5s; }.ab-bar.b i { background:linear-gradient(90deg,#818cf8,#f0abfc); }.ab-compare b { color:#c7d2fe; }.strategy-result { margin:10px 0 0; padding:8px 10px; color:#d1fae5; background:rgba(16,185,129,.08); border-radius:7px; font-size:11px; line-height:1.6; }
.strategy-crisis-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.strategy-crisis-card { border-color:rgba(251,146,60,.22); }.strategy-crisis-card > .flex-between > div { display:flex; align-items:flex-start; gap:8px; min-width:0; }.strategy-crisis-card > .flex-between > div > b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.strategy-crisis-card > .flex-between > div > small { position:absolute; margin-top:21px; margin-left:17px; }.strategy-crisis-card p { color:var(--text-secondary); font-size:12px; line-height:1.65; }.crisis-impact { display:flex; gap:12px; color:#fed7aa; font-size:11px; margin:10px 0; }.crisis-actions { display:grid; grid-template-columns:1fr auto auto; gap:7px; align-items:center; }.crisis-actions .btn { padding:7px 10px; font-size:11px; }
.strategy-owned-skill,.strategy-market-skill,.strategy-team-row { display:flex; align-items:center; justify-content:space-between; gap:9px; padding:10px 0; border-bottom:1px solid rgba(129,140,248,.12); }.strategy-owned-skill > div,.strategy-market-skill > div,.strategy-team-row > div { min-width:0; display:flex; flex-direction:column; gap:3px; }.strategy-owned-skill small,.strategy-market-skill small,.strategy-team-row small { color:var(--text-muted); font-size:11px; }.strategy-market-skill p { margin:2px 0 0; color:var(--text-muted); font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:300px; }.strategy-market-skill .btn,.strategy-owned-skill .btn { flex-shrink:0; padding:7px 10px; font-size:11px; }.strategy-invite { display:grid; grid-template-columns:1fr 100px auto; gap:7px; margin-top:14px; }.strategy-invite .btn { padding:7px 10px; font-size:11px; }
.strategy-memory-row { display:flex; justify-content:space-between; gap:10px; padding:10px 0; border-bottom:1px solid rgba(129,140,248,.12); }.strategy-memory-row > div { min-width:0; }.strategy-memory-row b { display:block; color:#e0e7ff; font-size:12px; }.strategy-memory-row small { color:var(--text-muted); font-size:10px; }.strategy-memory-row p { margin:5px 0 0; color:var(--text-secondary); font-size:12px; line-height:1.6; white-space:pre-wrap; }.strategy-memory-row .btn { flex-shrink:0; align-self:flex-start; padding:4px 7px; font-size:10px; }
.strategy-error { display:flex; gap:12px; align-items:center; color:#fecaca; }.strategy-error span { flex:1; color:#fca5a5; font-size:12px; }.strategy-error .btn { flex-shrink:0; }
@keyframes strategy-flow { 0%,100%{opacity:.35;transform:translateX(0)}50%{opacity:1;transform:translateX(3px)} }.strategy-enter { animation:strategy-enter .3s ease-out; } @keyframes strategy-enter { from{opacity:0;transform:translateY(5px)} to{opacity:1;transform:none} }
@media (max-width: 900px) { .strategy-employee-grid,.strategy-experiment-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.strategy-crisis-grid { grid-template-columns:1fr; } }
@media (max-width: 680px) { .strategy-tabs { overflow-x:auto; flex-wrap:nowrap; }.strategy-tab { white-space:nowrap; }.strategy-employee-grid,.strategy-experiment-grid { grid-template-columns:1fr; }.strategy-main-grid,.strategy-replay-grid { grid-template-columns:1fr; }.strategy-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }.section-intro { flex-direction:column; }.strategy-causal { justify-content:flex-start; }.strategy-invite { grid-template-columns:1fr; }.crisis-actions { grid-template-columns:1fr 1fr; }.crisis-actions select { grid-column:1/-1; } }







/* 2026.09 project studio, high contrast forms and turn-based game HUD */
.form-group input,.form-group textarea,.form-group select,
.modal input,.modal textarea,.modal select,
.project-studio input,.project-studio textarea,.project-studio select,
.strategy-page input,.strategy-page textarea,.strategy-page select,
.skill-filter-card input,.skill-filter-card select,
.event-employee-select,.chat-input input {
    background:#ffffff !important;
    color:#17233b !important;
    border:1px solid rgba(77,94,153,.34) !important;
    box-shadow:inset 0 1px 2px rgba(54,67,116,.06) !important;
}
.form-group input:hover,.form-group textarea:hover,.form-group select:hover,
.modal input:hover,.modal textarea:hover,.modal select:hover,
.project-studio input:hover,.project-studio textarea:hover,.project-studio select:hover,
.strategy-page input:hover,.strategy-page textarea:hover,.strategy-page select:hover { border-color:rgba(91,92,240,.55) !important; }
.form-group input:focus,.form-group textarea:focus,.form-group select:focus,
.modal input:focus,.modal textarea:focus,.modal select:focus,
.project-studio input:focus,.project-studio textarea:focus,.project-studio select:focus,
.strategy-page input:focus,.strategy-page textarea:focus,.strategy-page select:focus {
    background:#fff !important; color:#17233b !important; border-color:#5b5cf0 !important; box-shadow:0 0 0 4px rgba(91,92,240,.13) !important;
}
input::placeholder,textarea::placeholder { color:#7b89a5 !important; opacity:1 !important; }
.council-message-body,.council-message-meta b { color:#253452 !important; }
.council-message.rebuttal { border-left:3px solid #e56ab1; padding-left:10px; background:rgba(245,217,238,.32); border-radius:10px; }
.council-message.decision { border-left:3px solid #d28a20; padding-left:10px; background:rgba(255,239,197,.44); border-radius:10px; }
.project-brief-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:12px 0; }
.project-brief-grid .form-group { margin-bottom:0; }
.project-command-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:12px; }
.project-insight-list { margin:0; padding-left:18px; color:#40506d; line-height:1.7; font-size:13px; }
.project-insight-list.risk { color:#9b4b4b; }
.turn-hud { display:grid; grid-template-columns:minmax(220px,1.1fr) minmax(160px,1fr) auto; align-items:center; gap:18px; margin:0 0 16px; padding:14px 18px; background:linear-gradient(110deg,rgba(255,255,255,.95),rgba(238,239,255,.84)); border:1px solid rgba(91,92,240,.2); }
.turn-hud-main { display:flex; align-items:center; gap:10px; min-width:0; }
.turn-hud-main small,.turn-hud-main b { display:block; }
.turn-hud-main small { color:#73809a; font-size:10px; letter-spacing:.05em; }
.turn-hud-main b { color:#27355a; font-size:16px; margin-top:2px; }
.turn-orb { display:grid; place-items:center; width:34px; height:34px; border-radius:12px; color:#fff; background:linear-gradient(135deg,#5b5cf0,#d75ed9); box-shadow:0 6px 16px rgba(91,92,240,.3); animation:turn-orb-pulse 2.4s ease-in-out infinite; }
.turn-hud-track { height:9px; border-radius:999px; background:rgba(117,130,180,.16); overflow:hidden; }
.turn-hud-track i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#5b5cf0,#b657e9,#f0a05e); transition:width .6s ease; }
.turn-hud-stats { display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end; color:#6a7893; font-size:11px; }
.turn-hud-stats span { padding:6px 9px; background:rgba(91,92,240,.07); border-radius:999px; white-space:nowrap; }
.turn-hud-stats b { color:#3949b8; }
@keyframes turn-orb-pulse { 50% { transform:rotate(8deg) scale(1.08); box-shadow:0 8px 23px rgba(213,94,217,.34); } }
@media (max-width:760px) { .project-brief-grid,.project-command-grid { grid-template-columns:1fr; }.turn-hud { grid-template-columns:1fr; gap:10px; }.turn-hud-stats { justify-content:flex-start; } }

/* All editable controls use the same bright, readable surface. Checkboxes and file pickers retain native affordances. */
body input:not([type=checkbox]):not([type=radio]):not([type=file]), body select, body textarea {
    background:#fff !important; color:#17233b !important; border-color:rgba(77,94,153,.34) !important;
}
body input:not([type=checkbox]):not([type=radio]):not([type=file])::placeholder, body textarea::placeholder { color:#7b89a5 !important; }
body input:not([type=checkbox]):not([type=radio]):not([type=file]):focus, body select:focus, body textarea:focus {
    outline:none; border-color:#5b5cf0 !important; box-shadow:0 0 0 4px rgba(91,92,240,.13) !important;
}

.debate-meter { display:flex; flex-wrap:wrap; gap:7px; margin-top:10px; color:#61708d; font-size:11px; }
.debate-meter span { padding:5px 8px; border-radius:999px; background:rgba(91,92,240,.07); border:1px solid rgba(91,92,240,.11); }

/* 2026.09 OPC night contrast theme: unified dark surfaces with readable type and editable controls. */
:root {
    --bg-primary:#07111f; --bg-secondary:#0b1728; --bg-card:rgba(15,29,51,.94); --bg-card-hover:rgba(20,39,67,.98);
    --border:rgba(116,154,229,.25); --border-hover:rgba(111,168,255,.65); --text-primary:#f5f8ff; --text-secondary:#c5d2e8;
    --text-muted:#8ea3c4; --text:#f5f8ff; --accent:#6fa8ff; --accent-hover:#9c83ff; --accent-glow:rgba(111,168,255,.28);
    --success:#45e0ad; --warning:#ffd166; --danger:#ff718c;
}
html,body { background:#07111f!important; color:#f5f8ff!important; }
body::before { background:radial-gradient(circle at 10% 0%,rgba(70,116,214,.18),transparent 30%),radial-gradient(circle at 90% 10%,rgba(145,82,220,.14),transparent 28%),linear-gradient(180deg,#07111f,#0a1626 62%,#07111f)!important; }
.sidebar { background:rgba(8,21,38,.97)!important; border-right:1px solid rgba(116,154,229,.2)!important; box-shadow:12px 0 34px rgba(0,0,0,.26)!important; }
.sidebar-brand .brand-text b,.nav-item,.card-title,.page-header h2,.page-header h3 { color:#f5f8ff!important; }
.nav-section-title { color:#8ea3c4!important; }.nav-item { color:#c5d2e8!important; }.nav-item:hover { background:rgba(111,168,255,.14)!important; color:#fff!important; }.nav-item.active { background:linear-gradient(90deg,rgba(87,137,232,.27),rgba(129,93,224,.2))!important; color:#fff!important; box-shadow:inset 3px 0 0 #6fa8ff,0 8px 18px rgba(0,0,0,.18)!important; }
.main-content { background:transparent!important; }.page-header p,.text-muted { color:#aabbd4!important; }
.card { background:linear-gradient(145deg,rgba(17,34,59,.98),rgba(11,25,45,.96))!important; border:1px solid rgba(116,154,229,.28)!important; box-shadow:0 18px 40px rgba(0,0,0,.26),inset 0 1px 0 rgba(255,255,255,.05)!important; }
.card:hover { background:linear-gradient(145deg,rgba(20,41,70,.98),rgba(13,29,52,.98))!important; border-color:rgba(111,168,255,.6)!important; }
.tag,.status-badge,.badge { color:#d8e6ff!important; background:rgba(111,168,255,.14)!important; border-color:rgba(111,168,255,.3)!important; }
body input:not([type=checkbox]):not([type=radio]):not([type=file]),body select,body textarea { background:#0d1c32!important; color:#f5f8ff!important; border:1px solid rgba(116,154,229,.4)!important; box-shadow:inset 0 1px 2px rgba(0,0,0,.25)!important; }
body input:not([type=checkbox]):not([type=radio]):not([type=file]):focus,body select:focus,body textarea:focus { background:#10243e!important; color:#fff!important; border-color:#78b1ff!important; box-shadow:0 0 0 4px rgba(111,168,255,.2)!important; }
input::placeholder,textarea::placeholder { color:#8ea3c4!important; opacity:1!important; }
button.btn-secondary,.btn-secondary { background:rgba(111,168,255,.12)!important; color:#dbe8ff!important; border-color:rgba(111,168,255,.3)!important; }.btn-secondary:hover { background:rgba(111,168,255,.24)!important; color:#fff!important; }
.strategy-tabs { background:rgba(9,22,39,.96)!important; border-color:rgba(116,154,229,.24)!important; }.strategy-tab { color:#aabbd4!important; }.strategy-tab:hover,.strategy-tab.active { color:#fff!important; background:linear-gradient(135deg,rgba(91,143,241,.32),rgba(140,90,225,.24))!important; }
.strategy-kpi span,.strategy-kpi small,.strategy-chart-legend,.strategy-action,.strategy-snapshot,.strategy-crisis-mini small,.section-intro p { color:#aabbd4!important; }.strategy-kpi strong { color:#f5f8ff!important; }
.strategy-snapshot,.strategy-meeting-row,.strategy-form-card,.strategy-branch-form,.strategy-replay-message,.strategy-memory-row,.strategy-owned-skill,.strategy-market-skill,.strategy-team-row { color:#eaf2ff!important; }.strategy-snapshot,.strategy-meeting-row,.strategy-form-card { background:rgba(24,47,78,.6)!important; border-color:rgba(116,154,229,.24)!important; }.strategy-meeting-row:hover,.strategy-meeting-row.active { background:rgba(66,111,192,.28)!important; border-color:#78b1ff!important; }.strategy-meeting-row span,.strategy-snapshot small,.strategy-action { color:#aabbd4!important; }.strategy-error { background:rgba(127,29,29,.42)!important; color:#ffd7df!important; border-color:rgba(255,113,140,.35)!important; }.strategy-error span { color:#ffb8c5!important; }
.turn-hud { background:linear-gradient(110deg,rgba(16,36,62,.98),rgba(20,28,58,.96))!important; border-color:rgba(111,168,255,.3)!important; }.turn-hud-main small { color:#9fb3cf!important; }.turn-hud-main b { color:#fff!important; }.turn-hud-stats { color:#b7c9e2!important; }.turn-hud-stats span { background:rgba(111,168,255,.12)!important; }.turn-hud-stats b { color:#dce9ff!important; }
.project-studio .project-item,.project-studio .plan-block,.project-studio .artifact-box,.project-studio .works-card,.project-studio .project-detail { background:rgba(16,33,57,.92)!important; border-color:rgba(116,154,229,.28)!important; color:#eaf2ff!important; }.project-item-head b,.project-detail h3,.plan-label,.project-studio label { color:#f5f8ff!important; }.project-item-idea,.project-item-meta,.plan-text,.project-studio .form-hint { color:#aabbd4!important; }.project-insight-list { color:#c9d7eb!important; }.project-insight-list.risk { color:#ffb7bf!important; }
.arena-live-scene { background:linear-gradient(145deg,#102b46,#13213e)!important; border-color:rgba(111,168,255,.35)!important; }.arena-scene-head b,.arena-label { color:#eef6ff!important; }.arena-scene-head span,.arena-scene-stats { color:#b7c9e2!important; }.arena-empty-label { fill:#c5d2e8!important; font-size:13px; font-weight:700; }.arena-customer-dot { fill:rgba(255,255,255,.92)!important; stroke:#6fa8ff!important; }.arena-customer-pulse { stroke:#71d9ff!important; }.arena-order-burst circle { fill:#172f50!important; stroke:#ffd166!important; }.arena-order-burst text { fill:#fff!important; }
.debate-meter { color:#aabbd4!important; }.debate-meter span { background:rgba(111,168,255,.12)!important; border-color:rgba(111,168,255,.26)!important; }

/* Keep the two most frequently edited workspaces dark even when older component rules carry !important. */
#app .project-studio .form-group input,#app .project-studio .form-group textarea,#app .project-studio .form-group select,
#app .project-studio input,#app .project-studio textarea,#app .project-studio select,
#app .strategy-page input,#app .strategy-page textarea,#app .strategy-page select {
    background-color:#0d1c32!important; background-image:none!important; color:#f5f8ff!important; border-color:rgba(116,154,229,.42)!important;
}
#app .project-studio select,#app .strategy-page select { color-scheme:dark!important; }
#app .project-studio input:focus,#app .project-studio textarea:focus,#app .project-studio select:focus,
#app .strategy-page input:focus,#app .strategy-page textarea:focus,#app .strategy-page select:focus {
    background-color:#10243e!important; color:#fff!important; border-color:#78b1ff!important; box-shadow:0 0 0 4px rgba(111,168,255,.2)!important;
}

/* 议事厅消息流需要在深色卡片上保持正文、元数据和 Skill 标签的高对比度。 */
#app .council-message-body { color:#f0f5ff !important; text-shadow:0 1px 1px rgba(0,0,0,.24); }
#app .council-message-meta b { color:#ffffff !important; }
#app .council-message-meta span { color:#b9c9e2 !important; }
#app .council-skill-trace { color:#ffe39a !important; background:rgba(255,193,92,.12) !important; border-color:rgba(255,193,92,.32) !important; }
#app .council-message-body > div:last-child { color:#f0f5ff !important; }
#app .council-paused-notice { display:flex; align-items:center; gap:10px; margin-top:10px; padding:10px 12px; color:#ffe7b0; background:rgba(112,65,21,.24); border:1px solid rgba(255,193,92,.42); border-radius:10px; font-size:12px; }
#app .council-paused-notice .btn { margin-left:auto; padding:6px 12px; font-size:12px; }

/* The completed decision shares the dark card surface. Keep its substantive
   copy bright, including hover, and wrap long AI output within each column. */
#app .council-decision-card { color:#f5f8ff; overflow-wrap:anywhere; }
#app .council-decision-card > .flex-between { flex-wrap:wrap; gap:10px; align-items:flex-start; }
#app .council-decision-card > .grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
#app .council-decision-card > .grid > div { min-width:0; }
#app .council-decision-main { color:#fff0bc; font-size:18px; line-height:1.75; white-space:pre-wrap; }
#app .council-decision-card .text-muted { color:#d3dfef!important; line-height:1.8; white-space:pre-wrap; }
#app .council-action-list { color:#d5f4e8; line-height:1.9; }
#app .council-action-list li { padding-left:3px; margin-bottom:6px; white-space:pre-wrap; }
#app .council-risks { padding:12px 14px; color:#ffe3b6; background:rgba(154,96,20,.16); border:1px solid rgba(255,196,106,.3); border-radius:10px; font-size:13px; line-height:1.8; white-space:pre-wrap; }
@media (max-width:700px) {
    #app .council-decision-card > .grid { grid-template-columns:minmax(0,1fr); }
    .admin-monitor-head { flex-wrap:wrap; gap:12px; }
}

/* Native controls inherit the night theme too.  Without these rules Chromium
   can render option lists and disabled fields in low-contrast system grey. */
body select option, body select optgroup {
    background:#0d1c32;
    color:#f5f8ff;
}
body input:disabled, body select:disabled, body textarea:disabled {
    background:#16273f !important;
    color:#b7c9e2 !important;
    border-color:rgba(116,154,229,.28) !important;
    opacity:1 !important;
    cursor:not-allowed;
}
body input[type=file] {
    color:#dbe8ff !important;
    background:#0d1c32 !important;
}
body input[type=file]::file-selector-button {
    margin-right:10px;
    padding:7px 12px;
    border:1px solid rgba(116,154,229,.36);
    border-radius:7px;
    background:rgba(111,168,255,.16);
    color:#f5f8ff;
    cursor:pointer;
}
body input[type=file]::file-selector-button:hover {
    background:rgba(111,168,255,.28);
}
body input[type=checkbox], body input[type=radio] { accent-color:#78b1ff; }

/* Small metadata and chart labels also need enough luminance on the dark
   cards.  These selectors intentionally override older daylight defaults. */
#app .sim-axis-label,
#app .council-node-sub,
#app .skill-filter-hint,
#app .skill-inputs,
#app .skill-source,
#app .cat-cost,
#app .tier-cost,
#app .score-detail,
#app .report-label { color:#aabbd4 !important; fill:#aabbd4 !important; }
#app .admin-monitor-table th { color:#b9c9e2 !important; }
#app .admin-monitor-table td { color:#dce8ff !important; }
#app .admin-monitor-table td:first-child small { color:#aabbd4 !important; }

.arena-3d-stage { min-height:390px; margin:16px 0; }
.arena-3d-stage .opc-3d-badge { background:rgba(255,181,92,.2); border-color:rgba(255,199,102,.45); color:#ffe7ad; }

/* Medieval onboarding letter: the paper is readable immediately, then a
   procedural ember mask expands from the upper corner with flame particles. */
@property --burn-radius { syntax:'<percentage>'; inherits:false; initial-value:0%; }
@property --paper-radius { syntax:'<percentage>'; inherits:false; initial-value:100%; }
.welcome-letter-overlay { position:fixed; inset:0; z-index:3000; display:flex; align-items:center; justify-content:center; padding:24px; background:rgba(3,8,19,.78); backdrop-filter:blur(12px); animation:letter-overlay-in .35s ease-out; }
.welcome-letter { --burn-radius:0%; --paper-radius:100%; position:relative; width:min(930px,96vw); max-height:min(88vh,760px); overflow:auto; padding:38px 48px 32px; color:#3b241a; background:radial-gradient(circle at 76% 18%,rgba(255,248,202,.92),transparent 22%),linear-gradient(135deg,#f3dca8,#fff3c8 46%,#d9b77b); border:8px solid #9b6338; border-radius:8px 18px 11px 16px; box-shadow:0 28px 70px rgba(0,0,0,.65),inset 0 0 34px rgba(112,63,22,.2); transform:rotate(-.7deg); isolation:isolate; -webkit-mask-image:radial-gradient(circle at 100% 0,#000 calc(var(--paper-radius) - 1%),transparent var(--paper-radius)); mask-image:radial-gradient(circle at 100% 0,#000 calc(var(--paper-radius) - 1%),transparent var(--paper-radius)); }
.welcome-letter::before { content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; background:radial-gradient(ellipse at 100% 0,transparent var(--burn-radius),rgba(42,18,8,.12) calc(var(--burn-radius) + 1%),transparent calc(var(--burn-radius) + 9%)); mix-blend-mode:multiply; }
.welcome-letter.burning { animation:letter-paper-shake 1.8s ease-in-out infinite; }
.welcome-letter.burning::before { animation:letter-burn-away 19s linear forwards; }
.letter-ember { position:absolute; width:90px; height:90px; top:-18px; right:-12px; border-radius:50%; background:radial-gradient(circle,#fff7b2 0 9%,#ffb43b 18%,#e74c25 35%,rgba(87,28,10,.75) 52%,transparent 70%); filter:blur(1px); opacity:0; pointer-events:none; }
.welcome-letter.burning .letter-ember { opacity:1; animation:letter-ember-move 19s linear forwards,letter-ember-pulse .55s ease-in-out infinite alternate; }
.letter-flame { position:absolute; z-index:4; width:46px; height:92px; top:-38px; right:10px; opacity:0; pointer-events:none; background:radial-gradient(ellipse at 50% 83%,#fffce0 0 9%,#ffe778 19%,#ff9e2f 42%,#ed4721 66%,rgba(126,28,13,.15) 79%,transparent 81%); border-radius:58% 42% 54% 46%; filter:blur(.45px) drop-shadow(0 0 9px rgba(255,96,28,.8)); transform-origin:50% 100%; mix-blend-mode:screen; }
.letter-flame::before { content:""; position:absolute; width:72%; height:75%; left:14%; top:20%; background:radial-gradient(ellipse at 50% 82%,#fff 0 10%,#fff7ac 22%,#ffcc4a 47%,#ff6a20 73%,transparent 75%); border-radius:63% 37% 54% 46%; filter:blur(.35px); transform:rotate(-7deg); }
.letter-flame::after { content:""; position:absolute; width:32%; height:53%; left:34%; top:36%; background:radial-gradient(ellipse at 50% 83%,#fff 0 26%,#fff9c0 54%,#ffd84d 77%,transparent 80%); border-radius:62% 38% 48% 52%; filter:blur(.2px); }
.welcome-letter.burning .letter-flame { opacity:1; animation:letter-flame-travel 19s linear forwards,letter-flame-wobble .32s ease-in-out infinite alternate; }
.flame-b { right:56px; top:-22px; transform:scale(.7); animation-delay:.12s!important; }
.letter-seal { position:absolute; right:30px; top:28px; width:50px; height:50px; display:grid; place-items:center; color:#ffdca4; background:#7c2023; border:3px double #eeb86f; border-radius:50%; font:800 25px Georgia,serif; box-shadow:0 4px 8px rgba(80,32,12,.3); }
.letter-kicker { text-align:center; color:#8c3c29; font:700 12px Georgia,serif; letter-spacing:3px; }
.welcome-letter h1 { margin:12px 55px 10px; text-align:center; color:#48251c; font:700 clamp(24px,4vw,39px) Georgia,'Times New Roman',serif; text-shadow:1px 1px #f8e9b8; }
.letter-lead,.letter-foot { margin:0 auto 18px; max-width:760px; text-align:center; font:16px/1.75 Georgia,'Microsoft YaHei',serif; color:#523225; }
.letter-columns { display:grid; grid-template-columns:repeat(2,1fr); gap:13px 18px; margin:20px 0; }
.letter-columns section { padding:13px 15px; background:rgba(255,248,215,.46); border:1px solid rgba(128,77,35,.28); border-radius:8px; box-shadow:inset 0 1px rgba(255,255,255,.55); }
.letter-columns b { color:#8d3b27; font:700 15px Georgia,'Microsoft YaHei',serif; }.letter-columns p { margin:6px 0 0; color:#573728; font:13px/1.65 Georgia,'Microsoft YaHei',serif; }
.letter-path { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:8px; margin:18px 0; color:#7f3828; font-weight:800; }.letter-path span { padding:6px 10px; border-radius:99px; background:rgba(255,255,235,.48); border:1px solid rgba(137,70,31,.3); }.letter-path i { color:#b55b32; font-style:normal; }
.letter-close { display:block; margin:0 auto; background:linear-gradient(135deg,#a73b2f,#70243a)!important; border-color:#e3a35f!important; color:#fff7dc!important; box-shadow:0 7px 17px rgba(108,33,24,.35); }.letter-skip { display:block; margin:10px auto 0; border:0; background:transparent; color:#875746; cursor:pointer; font-size:12px; text-decoration:underline; }
@keyframes letter-overlay-in { from{opacity:0}to{opacity:1} } @keyframes letter-paper-shake { 0%,100%{transform:rotate(-.7deg)}50%{transform:rotate(.25deg)} } @keyframes letter-burn-away { 0%{--burn-radius:0%;--paper-radius:100%}56%{--burn-radius:46%;--paper-radius:100%}78%{--burn-radius:79%;--paper-radius:65%}94%{--burn-radius:106%;--paper-radius:21%}100%{--burn-radius:118%;--paper-radius:0%} } @keyframes letter-ember-move { 0%{top:-18px;right:-12px}38%{top:-10px;right:44%}72%{top:33%;right:-11px}100%{top:93%;right:10%} } @keyframes letter-ember-pulse { from{transform:scale(.8);filter:blur(1px)}to{transform:scale(1.3);filter:blur(2px)} } @keyframes letter-flame-travel { 0%{top:-38px;right:10px}38%{top:-34px;right:44%}72%{top:33%;right:-14px}100%{top:91%;right:8%} } @keyframes letter-flame-wobble { from{transform:rotate(-8deg) scale(.85)}to{transform:rotate(9deg) scale(1.08)} }
@media (max-width:700px) { .welcome-letter { padding:30px 22px 24px; max-height:90vh; }.letter-columns { grid-template-columns:1fr; gap:9px; }.letter-seal { right:16px; top:16px; transform:scale(.8); }.welcome-letter h1 { margin-left:20px; margin-right:20px; } }

/* 3D visual workspaces.  The canvas is a live rendering layer over the
   already accessible message streams and metric cards. */
.opc-3d-stage { position:relative; min-height:360px; overflow:hidden; border-radius:18px; background:radial-gradient(circle at 50% 30%,rgba(100,130,255,.24),transparent 48%),linear-gradient(145deg,#0b1430,#10162f 55%,#160f2b); border:1px solid rgba(126,151,255,.35); box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 16px 38px rgba(0,0,0,.22); }
.opc-3d-stage canvas { display:block; width:100%; height:100%; min-height:360px; cursor:grab; }
.opc-3d-stage canvas:active { cursor:grabbing; }
.opc-3d-stage:after { content:'拖动旋转视角 · 数据实时驱动'; position:absolute; right:13px; bottom:10px; padding:4px 8px; border-radius:999px; color:rgba(220,230,255,.72); background:rgba(6,12,32,.52); border:1px solid rgba(135,155,255,.23); font-size:10px; pointer-events:none; }
.opc-3d-stage .opc-3d-badge { position:absolute; left:13px; top:12px; z-index:1; display:flex; align-items:center; gap:6px; color:#dce5ff; font-size:11px; letter-spacing:.04em; text-transform:uppercase; pointer-events:none; }
.opc-3d-stage .opc-3d-badge:before { content:''; width:7px; height:7px; border-radius:50%; background:#45e0ad; box-shadow:0 0 0 5px rgba(69,224,173,.14),0 0 14px rgba(69,224,173,.8); animation:council-pulse 1.6s infinite; }
.opc-3d-fallback { display:flex; align-items:center; justify-content:center; min-height:230px; color:#aebdde; background:linear-gradient(145deg,#101b35,#151a34); }
.council-3d-stage { min-height:420px; }
.council-3d-stage canvas { min-height:420px; }
.council-2d-details { border:1px solid rgba(116,154,229,.2); border-radius:10px; background:rgba(9,20,42,.62); overflow:hidden; }
.council-2d-details summary { padding:9px 12px; color:#b7c9e2; cursor:pointer; font-size:11px; user-select:none; }
.council-2d-details .council-network { padding:4px 8px 12px; }
.game-3d-stage { height:430px; min-height:430px; margin:0 0 16px; background:radial-gradient(circle at 50% 28%,rgba(95,157,255,.24),transparent 38%),radial-gradient(circle at 18% 82%,rgba(224,121,200,.13),transparent 30%),linear-gradient(145deg,#07142d,#0c1c3d 56%,#160f36); border-color:rgba(111,168,255,.48); box-shadow:inset 0 1px 0 rgba(255,255,255,.11),inset 0 -30px 70px rgba(3,8,26,.28),0 18px 42px rgba(0,0,0,.28); }
.game-3d-stage:before { content:'STRATEGY CONSTELLATION  ·  LIVE COMPANY SIGNALS'; position:absolute; left:17px; bottom:12px; z-index:1; color:rgba(179,211,247,.55); font-size:9px; letter-spacing:.14em; pointer-events:none; }
.game-3d-stage .opc-3d-badge { color:#edf5ff; letter-spacing:.1em; }
.game-3d-stage canvas { min-height:430px; }
.game-visual-grid { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(360px,.7fr); align-items:start; gap:16px; margin-bottom:16px; }
.game-posture-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.game-posture-card { padding:12px; border:1px solid rgba(111,168,255,.23); border-radius:12px; background:rgba(13,29,52,.72); cursor:pointer; transition:.2s; color:#dce8ff; }
.game-posture-card:hover,.game-posture-card.active { transform:translateY(-2px); border-color:#8cbcff; background:linear-gradient(145deg,rgba(64,100,175,.36),rgba(128,79,188,.24)); box-shadow:0 9px 22px rgba(42,89,180,.22); }
.game-posture-card b,.game-posture-card span,.game-posture-card small { display:block; }
.game-posture-card b { font-size:13px; margin-bottom:5px; }.game-posture-card span { color:#b9c9e6; font-size:11px; line-height:1.45; }.game-posture-card small { margin-top:8px; color:#80e5c4; font-size:10px; }
.game-posture-card.active small { color:#ffd98c; }
.game-signal-strip { display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; }.game-signal-strip span { padding:5px 8px; border-radius:999px; color:#c8d8f3; background:rgba(111,168,255,.11); border:1px solid rgba(111,168,255,.18); font-size:10px; }
@media (max-width:900px) { .game-visual-grid { grid-template-columns:1fr; }.game-posture-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:620px) { .council-3d-stage,.council-3d-stage canvas { min-height:300px; }.game-3d-stage,.game-3d-stage canvas { height:300px; min-height:300px; }.game-posture-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (prefers-reduced-motion: reduce) { .opc-3d-stage canvas { cursor:default; } }

/* 登录入口沿用同一套夜间视觉，避免首次进入时出现孤立的灰白舞台。 */
.auth-page { background:#07111f!important; }.auth-stage { background:linear-gradient(145deg,#0d2038,#14203d 56%,#1b2347)!important; }.auth-stage::after { background:rgba(87,137,232,.2)!important; }.auth-stage::before { background:rgba(156,98,229,.18)!important; }.auth-stage-logo { color:#eef6ff!important; }.auth-stage-slogan { color:#aabbd4!important; }.auth-panel { background:linear-gradient(180deg,#07111f,#0b1728)!important; }.auth-card { background:rgba(15,29,51,.96)!important; border-color:rgba(116,154,229,.3)!important; box-shadow:0 24px 60px rgba(0,0,0,.3)!important; }.auth-card .subtitle,.auth-card .form-group label { color:#aabbd4!important; }

/* 2026.09 seasonal经营游戏界面 */
.game-season-page { animation:strategy-enter .28s ease-out; }.game-hero { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:20px 22px; margin-bottom:16px; background:linear-gradient(110deg,rgba(21,54,91,.98),rgba(33,35,79,.98))!important; border-color:rgba(111,168,255,.42)!important; }.game-hero-main { display:flex; align-items:center; gap:13px; min-width:0; }.game-hero-main h3 { margin:3px 0; color:#fff!important; }.game-hero-main p,.game-hero-main small { color:#b7c9e2!important; }.game-orb { display:grid; place-items:center; width:48px; height:48px; border-radius:16px; font-size:24px; background:linear-gradient(135deg,#5ea9ff,#9467ef); box-shadow:0 8px 26px rgba(88,135,255,.32); animation:turn-orb-pulse 2.4s ease-in-out infinite; }.game-tabs { display:flex; gap:7px; flex-wrap:wrap; padding:8px; margin-bottom:16px; background:rgba(9,22,39,.96); border:1px solid rgba(116,154,229,.24); border-radius:13px; }.game-section { animation:strategy-enter .25s ease-out; }.game-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:9px; margin:12px 0; }.game-form-grid .btn { grid-column:1/-1; }.game-callout { padding:12px 14px; color:#cbdaf0; background:rgba(65,112,184,.16); border:1px solid rgba(111,168,255,.26); border-radius:10px; line-height:1.65; font-size:12px; }.game-log { display:flex; flex-direction:column; gap:6px; max-height:240px; overflow:auto; margin-top:14px; }.game-log > div { display:grid; grid-template-columns:42px 1fr auto; gap:8px; align-items:center; padding:8px 10px; border-radius:8px; background:rgba(15,36,64,.62); color:#c9d8eb; font-size:11px; }.game-log span { color:#78b1ff; font-weight:700; }.game-log small { color:#8ea3c4; }.game-event-card { margin-top:10px; padding:13px; border-radius:11px; border:1px solid rgba(255,209,102,.32); background:linear-gradient(145deg,rgba(91,72,35,.38),rgba(38,40,57,.55)); }.game-event-card p { color:#cfdded; font-size:12px; line-height:1.6; margin:8px 0; }.game-choice-row { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }.game-choice-row .btn { padding:8px 11px; font-size:11px; }.customer-funnel { display:flex; flex-direction:column; gap:10px; margin:16px 0; }.customer-stage { display:grid; grid-template-columns:42px 72px 1fr; align-items:center; gap:9px; color:#cbd9ec; font-size:12px; }.customer-stage b { color:#fff; font-size:16px; text-align:right; }.customer-stage span { color:#aabbd4; }.customer-stage i { display:block; height:9px; border-radius:99px; background:linear-gradient(90deg,#5ea9ff,#9c83ff); box-shadow:0 0 16px rgba(111,168,255,.25); }.customer-table { display:flex; flex-direction:column; gap:8px; max-height:390px; overflow:auto; }.customer-table > div { display:grid; grid-template-columns:1fr auto auto; gap:10px; padding:10px; border-radius:9px; background:rgba(24,47,78,.6); color:#eaf2ff; font-size:12px; }.customer-table span { color:#aabbd4; }.customer-table strong { color:#6ee7b7; }.rival-card { position:relative; overflow:hidden; padding:12px; margin-top:10px; border-radius:10px; background:rgba(24,47,78,.6); color:#eaf2ff; }.rival-card.own { border:1px solid rgba(111,168,255,.5); }.rival-card span,.rival-card small,.rival-card em { color:#aabbd4; font-size:11px; font-style:normal; }.rival-card i { display:block; height:7px; margin-top:9px; border-radius:99px; background:linear-gradient(90deg,#6fa8ff,#a279ff); }.rival-card em { display:block; margin-top:4px; }.price-editor { display:grid; grid-template-columns:1fr 130px auto; gap:8px; margin-top:18px; }.offer-card { display:flex; flex-direction:column; gap:7px; padding:12px; margin-top:14px; border-radius:10px; color:#eaf2ff; background:rgba(35,69,107,.7); border:1px solid rgba(111,168,255,.3); }.offer-card span { color:#c2d2e7; font-size:12px; }.offer-card .btn { align-self:flex-start; }.ledger-row { display:grid; grid-template-columns:90px 100px 1fr; gap:8px; align-items:center; padding:9px 0; border-bottom:1px solid rgba(116,154,229,.16); color:#c9d8eb; font-size:11px; }.ledger-row b.positive { color:#6ee7b7; }.ledger-row b.negative { color:#ff9cae; }.ledger-row small { color:#8ea3c4; }.tech-tree { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }.tech-node { min-height:195px; display:flex; flex-direction:column; gap:8px; }.tech-node p { color:#c5d3e7; font-size:12px; line-height:1.55; min-height:43px; }.tech-node small { color:#9eb2ce; font-size:11px; }.tech-node.tech-complete { border-color:rgba(69,224,173,.55)!important; box-shadow:0 0 24px rgba(69,224,173,.1)!important; }.tech-node.tech-researching { border-color:rgba(255,209,102,.56)!important; }.tech-progress { padding:6px 8px; color:#ffd166; background:rgba(255,209,102,.11); border-radius:7px; font-size:11px; }.staff-game-row { display:grid; grid-template-columns:40px minmax(0,1fr) auto; gap:12px; align-items:center; padding:12px 0; border-bottom:1px solid rgba(116,154,229,.16); }.staff-game-row > .employee-avatar { width:40px; height:40px; font-size:18px; }.staff-game-row > div:nth-child(2) { min-width:0; overflow-wrap:anywhere; }.staff-game-row small { display:block; color:#9eb2ce; font-size:10px; margin-top:3px; }.staff-bars { display:flex; gap:5px; margin-top:7px; }.staff-bars i { display:block; height:7px; border-radius:99px; }.staff-bars .morale { background:#45e0ad; }.staff-bars .stress { background:#ff718c; }.game-choice-col { display:flex; flex-direction:column; gap:5px; }.game-choice-col .btn { padding:5px 7px; font-size:10px; }.achievement-row { display:grid; grid-template-columns:28px 1fr auto; align-items:center; gap:8px; padding:10px 0; border-bottom:1px solid rgba(116,154,229,.16); color:#9eb2ce; }.achievement-row.unlocked { color:#eef6ff; }.achievement-row.claimed { opacity:.6; }.achievement-row b,.achievement-row small { display:block; }.achievement-row small { color:#9eb2ce; font-size:10px; margin-top:3px; }.achievement-row .btn { padding:5px 8px; font-size:10px; }.history-row { display:flex; flex-direction:column; gap:3px; margin-top:14px; padding:10px; background:rgba(24,47,78,.6); border-radius:8px; color:#eaf2ff; font-size:11px; }.history-row span { color:#aabbd4; max-height:46px; overflow:hidden; }
@media (max-width:900px) { .tech-tree { grid-template-columns:repeat(2,minmax(0,1fr)); }.game-hero { align-items:flex-start; flex-direction:column; }.price-editor { grid-template-columns:1fr; } }
@media (max-width:620px) { .tech-tree,.game-form-grid { grid-template-columns:1fr; }.game-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }.customer-table > div { grid-template-columns:1fr auto; }.customer-table strong { grid-column:2; grid-row:1; }.staff-game-row { grid-template-columns:36px minmax(0,1fr); }.staff-game-row > .employee-avatar { width:36px; height:36px; font-size:16px; }.game-choice-col { grid-column:2; flex-direction:row; } }
.game-rank-row { display:grid; grid-template-columns:42px 1fr 90px 120px; gap:10px; align-items:center; padding:10px 0; border-bottom:1px solid rgba(116,154,229,.16); color:#eaf2ff; font-size:12px; }.game-rank-row b { color:#ffd166; }.game-rank-row strong { color:#6ee7b7; text-align:right; }.game-rank-row small { color:#aabbd4; text-align:right; }

/* TinyAGI local adapter workspace: queue, memory and event stream share the
   same high-contrast night surfaces as the rest of OPC. */
.tinyagi-page { animation:strategy-enter .25s ease-out; }
.tinyagi-kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:16px; }
.tinyagi-kpi { padding:15px 16px; }.tinyagi-kpi span,.tinyagi-kpi small { display:block; color:#aabbd4; font-size:11px; }.tinyagi-kpi b { display:block; margin:5px 0; color:#f5f8ff; font-size:27px; }.tinyagi-kpi small { color:#8ea3c4; }
.tinyagi-main-grid,.tinyagi-bottom-grid { align-items:start; gap:16px; margin-bottom:16px; }
.tinyagi-live { color:#72e2bb; font-size:10px; letter-spacing:.08em; }.tinyagi-hint { color:#aabbd4; font-size:12px; line-height:1.6; margin:0 0 12px; }
.tinyagi-form { display:flex; flex-direction:column; gap:10px; margin-top:12px; }.tinyagi-form label { color:#dce8ff; font-size:11px; }.tinyagi-form input,.tinyagi-form textarea,.tinyagi-form select { display:block; width:100%; margin-top:5px; box-sizing:border-box; }.tinyagi-form-row { display:grid; grid-template-columns:1fr 1fr; gap:9px; }.tinyagi-form .btn { align-self:flex-start; }
.tinyagi-task-list,.tinyagi-memory-list,.tinyagi-agent-list,.tinyagi-events { display:flex; flex-direction:column; gap:7px; margin-top:15px; max-height:420px; overflow:auto; }.tinyagi-task-row { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; padding:10px 11px; border:1px solid rgba(116,154,229,.2); border-radius:10px; background:rgba(24,47,78,.58); }.tinyagi-task-copy { min-width:0; }.tinyagi-task-copy b,.tinyagi-task-copy span,.tinyagi-task-copy small { display:block; }.tinyagi-task-copy b { color:#f5f8ff; font-size:12px; }.tinyagi-task-copy span { color:#8fdac3; font-size:10px; margin-top:4px; }.tinyagi-task-copy small { color:#b7c9e2; font-size:11px; line-height:1.5; margin-top:5px; }.tinyagi-task-actions { display:flex; gap:6px; flex-shrink:0; }.tinyagi-task-actions .btn { padding:6px 8px; font-size:10px; }
.tinyagi-task-result { margin-top:10px; padding-top:10px; border-top:1px solid rgba(116,154,229,.3); overflow-wrap:anywhere; }.tinyagi-task-result ol { margin:8px 0; padding-left:20px; color:#dce8ff; font-size:12px; line-height:1.65; }
.tinyagi-memory-row { padding:10px 11px; border-radius:10px; background:rgba(24,47,78,.58); border:1px solid rgba(116,154,229,.2); }.tinyagi-memory-row b,.tinyagi-memory-row span { display:block; }.tinyagi-memory-row b { color:#f5f8ff; font-size:12px; }.tinyagi-memory-row span { color:#aabbd4; font-size:10px; margin-top:4px; }.tinyagi-memory-row p { color:#c9d7eb; font-size:11px; line-height:1.5; margin:6px 0 0; white-space:pre-wrap; }
.tinyagi-agent-row { display:grid; grid-template-columns:34px 1fr auto; gap:9px; align-items:center; padding:9px 0; border-bottom:1px solid rgba(116,154,229,.16); }.tinyagi-agent-avatar { display:grid; place-items:center; width:30px; height:30px; color:#fff; background:linear-gradient(135deg,#5ea9ff,#9868eb); border-radius:10px; font-weight:800; }.tinyagi-agent-row b,.tinyagi-agent-row small,.tinyagi-agent-row p { display:block; }.tinyagi-agent-row b { color:#f5f8ff; font-size:12px; }.tinyagi-agent-row small { color:#aabbd4; font-size:10px; margin-top:3px; }.tinyagi-agent-row p { color:#c9d7eb; font-size:10px; margin:4px 0 0; }.tinyagi-agent-row .status-badge { white-space:nowrap; font-size:10px; }
.tinyagi-events > div { display:grid; grid-template-columns:74px 1fr auto; gap:8px; align-items:center; padding:8px 9px; border-radius:8px; background:rgba(24,47,78,.52); color:#c9d7eb; font-size:10px; }.tinyagi-events span { color:#78b1ff; font-weight:700; }.tinyagi-events b { color:#eaf2ff; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.tinyagi-events small { color:#8ea3c4; white-space:nowrap; }.tinyagi-empty { color:#8ea3c4; font-size:11px; padding:15px 4px; text-align:center; }

/* Organic flame and ash layers. The moving mask on .welcome-letter removes
   the paper itself; these layers add a less geometric edge and drifting sparks. */
.welcome-letter.burning { filter:drop-shadow(0 0 12px rgba(255,101,32,.22)); }
.letter-flame { clip-path:polygon(50% 0,67% 18%,63% 35%,82% 26%,76% 52%,100% 67%,78% 70%,74% 100%,51% 88%,31% 100%,28% 76%,0 72%,22% 53%,13% 32%,38% 39%,31% 16%); background:radial-gradient(ellipse at 50% 82%,#fffde6 0 8%,#fff2a0 18%,#ffc34f 38%,#f16825 62%,#9f2917 76%,transparent 82%); }
.letter-flame::before { clip-path:polygon(50% 0,72% 26%,68% 48%,92% 63%,65% 73%,52% 100%,35% 75%,8% 69%,31% 48%,26% 24%); background:radial-gradient(ellipse at 50% 82%,#fff 0 12%,#fff6ad 29%,#ffc33e 51%,#f15b21 75%,transparent 79%); }
.letter-flame::after { background:radial-gradient(ellipse at 50% 82%,#fff 0 22%,#fffde0 45%,#ffe04f 71%,transparent 78%); }
.letter-ember { filter:blur(1px) drop-shadow(0 0 13px rgba(255,91,24,.85)); }
.letter-ember::before,.letter-ember::after { content:""; position:absolute; width:5px; height:5px; border-radius:50%; background:#ffd56b; box-shadow:18px -18px 0 1px #ff7d30, -22px 8px 0 0 #ffae42, 30px 20px 0 -1px #e94a22, -9px -28px 0 -1px #ffe6a0; opacity:.85; animation:letter-sparks 1.05s ease-in-out infinite alternate; }
.letter-ember::after { width:3px; height:3px; animation-delay:.42s; transform:translate(15px,8px) scale(.8); }
.letter-ash { position:absolute; z-index:5; inset:0; pointer-events:none; opacity:0; background:radial-gradient(circle at 19% 31%,rgba(40,25,21,.55) 0 1px,transparent 2px),radial-gradient(circle at 68% 58%,rgba(40,25,21,.5) 0 1px,transparent 2px),radial-gradient(circle at 44% 80%,rgba(40,25,21,.45) 0 1px,transparent 2px); }
.welcome-letter.burning .letter-ash { opacity:.9; animation:letter-ash-drift 3s ease-in-out infinite alternate; }
@keyframes letter-sparks { from { transform:translateY(4px) scale(.65); opacity:.35; } to { transform:translateY(-18px) scale(1.25); opacity:1; } }
@keyframes letter-ash-drift { from { transform:translate(0,0) rotate(0deg); filter:blur(0); } to { transform:translate(-8px,5px) rotate(3deg); filter:blur(1px); } }

@media (max-width:900px) { .tinyagi-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:620px) { .tinyagi-form-row { grid-template-columns:1fr; }.tinyagi-kpis { grid-template-columns:1fr 1fr; }.tinyagi-task-row { flex-direction:column; }.tinyagi-task-actions { width:100%; }.tinyagi-task-actions .btn { flex:1; }.tinyagi-events > div { grid-template-columns:64px 1fr; }.tinyagi-events small { grid-column:2; } }
