/* =====================================================================
   冰蓝影视 · 乐视门户风格主题（portal / letv.css 由 premium.css 承载）
   仿 www.le.com：顶部红白门户导航 + 浅色内容页 + 红色强调 + 白色卡片货架
   ===================================================================== */

/* ---------- 1. 设计令牌 ---------- */
:root {
    --primary: #e64545;
    --primary-dark: #c92f2b;
    --primary-light: #ff7d6e;
    --primary-glow: rgba(230, 69, 69, 0.16);
    --success: #22a06b;
    --danger: #e11d48;

    /* 乐视红 · 浅色语义灰阶 */
    --gray-100: #ffffff;
    --gray-200: #eceff3;
    --gray-300: #dfe3ea;
    --gray-400: #9aa3b2;
    --gray-500: #67707f;
    --gray-600: #1f2430;

    --shadow-sm: 0 2px 10px rgba(20, 24, 36, 0.06);
    --shadow-md: 0 10px 26px rgba(20, 24, 36, 0.09);
    --shadow-lg: 0 22px 50px rgba(20, 24, 36, 0.16);
    --radius: 12px;
    --radius-sm: 8px;

    --page-bg: #f3f5f8;
    --card-bg: #ffffff;
    --red-grad: linear-gradient(135deg, #e64545 0%, #ff6a50 100%);
    --red-deep: linear-gradient(135deg, #c92f2b 0%, #e64545 100%);
}

html,
body {
    color: var(--gray-600);
    font-family: "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", -apple-system, sans-serif;
}

body {
    background:
        radial-gradient(1200px 480px at 50% -180px, rgba(230, 69, 69, 0.06), transparent 60%),
        linear-gradient(180deg, #f8f9fb 0%, #f1f4f8 100%) !important;
    background-attachment: fixed;
}

::selection {
    background: rgba(230, 69, 69, 0.18);
    color: #b32620;
}

::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

::-webkit-scrollbar-thumb {
    background: rgba(31, 36, 48, 0.16);
    border-radius: 8px;
}

::-webkit-scrollbar-thumb:hover {
    background: rgba(230, 69, 69, 0.4);
}

/* =====================================================================
   门户头（JS 注入结构：logo / 导航 / 搜索 / 用户）
   ===================================================================== */
body.letv-portal {
    padding: 0 !important;
}

.letv-header {
    position: sticky;
    top: 0;
    z-index: 60;
    background: #fff;
    border-bottom: 1px solid rgba(31, 36, 48, 0.08);
    box-shadow: 0 1px 0 rgba(230, 69, 69, 0.06), 0 6px 22px rgba(20, 24, 36, 0.05);
}

.letv-header-inner {
    max-width: 1480px;
    margin: 0 auto;
    padding: 0 18px;
    height: 64px;
    display: flex;
    align-items: center;
    gap: 18px;
}

.letv-logo {
    display: flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    flex-shrink: 0;
}

.letv-logo .logo-mark {
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: var(--red-grad);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 19px;
    box-shadow: 0 6px 16px rgba(230, 69, 69, 0.32);
}

.letv-logo .logo-text {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}

.letv-logo .logo-title {
    font-size: 19px;
    font-weight: 800;
    color: #e64545;
    letter-spacing: 0.5px;
}

.letv-logo .logo-slogan {
    font-size: 10px;
    color: var(--gray-400);
    letter-spacing: 0.2px;
}

.letv-nav {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}

.letv-nav-item {
    padding: 7px 13px;
    border-radius: 18px;
    font-size: 14px;
    font-weight: 500;
    color: var(--gray-500);
    cursor: pointer;
    border: none;
    background: transparent;
    transition: var(--transition);
    white-space: nowrap;
}

.letv-nav-item:hover {
    color: var(--primary);
    background: rgba(230, 69, 69, 0.07);
}

.letv-nav-item.active {
    color: #fff;
    background: var(--red-grad);
    box-shadow: 0 5px 14px rgba(230, 69, 69, 0.28);
}

.letv-searchbar {
    flex: 1;
    min-width: 200px;
    display: flex;
    justify-content: center;
}

/* 门户搜索框：复用 .ai-search 结构，但改造成红色大搜索条 */
body.letv-portal .ai-search {
    max-width: 560px;
    width: 100%;
    background: #f3f5f8;
    border: 1.5px solid transparent;
    border-radius: 22px;
    padding: 2px 6px 2px 18px;
}

body.letv-portal .ai-search:focus-within {
    border-color: var(--primary);
    background: #fff;
    box-shadow: 0 0 0 3px var(--primary-glow);
}

body.letv-portal .ai-search input {
    font-size: 14px;
    color: var(--gray-600);
    padding: 7px 0;
}

body.letv-portal .ai-search #aiSearchBtn {
    background: var(--red-grad);
    color: #fff;
    border-radius: 18px;
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 12px rgba(230, 69, 69, 0.3);
}

body.letv-portal .ai-search button:hover {
    color: var(--primary);
}

.letv-user {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

/* 副工具条（返回 / 刷新 / 反馈 / 消息 / 管理 挪到顶栏右侧） */
.letv-tools {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
}

.letv-tools .act-btn {
    padding: 6px 12px;
    font-size: 12px;
    border-radius: 16px;
    background: #fff;
    border: 1px solid rgba(31, 36, 48, 0.12);
    color: var(--gray-500);
    display: inline-flex;
    align-items: center;
    gap: 5px;
    cursor: pointer;
    transition: var(--transition);
}

.letv-tools .act-btn:hover {
    border-color: rgba(230, 69, 69, 0.5);
    color: var(--primary);
    background: rgba(230, 69, 69, 0.05);
}

/* ---------- 2. 页面布局：整页容器 ---------- */
body.letv-portal .app-container {
    max-width: 1480px;
    padding: 16px;
    gap: 16px;
    margin: 0 auto;
    min-height: calc(100vh - 66px);
}

/* ---------- 3. 品牌在侧栏被移走后 → 本地片库栏 ---------- */
.rail-title {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 15px;
    font-weight: 700;
    color: var(--gray-600);
    padding: 2px 2px 10px;
}

.rail-title::before {
    content: '';
    width: 4px;
    height: 15px;
    border-radius: 3px;
    background: var(--red-grad);
}

.rail-title i {
    color: var(--primary);
    font-size: 13px;
    margin-left: auto;
    cursor: pointer;
    opacity: 0.75;
}

body.letv-portal .sidebar {
    background: var(--card-bg) !important;
    border: 1px solid rgba(31, 36, 48, 0.07) !important;
    border-radius: 12px;
    box-shadow: var(--shadow-sm);
    padding: 14px 12px;
    max-height: calc(100vh - 98px);
}

body.letv-portal .main-area {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    padding: 0;
    overflow: visible;
}

/* 内容货架外壳：推荐标题条 + 网格 */
body.letv-portal .recommend-section .section-header {
    background: var(--card-bg);
    border: 1px solid rgba(31, 36, 48, 0.07);
    border-radius: 12px;
    padding: 13px 16px;
    box-shadow: var(--shadow-sm);
}

body.letv-portal .recommend-section .section-header h2 {
    font-size: 18px;
    font-weight: 700;
    color: var(--gray-600);
}

body.letv-portal .recommend-section .section-header h2 i {
    color: var(--primary);
}

/* ---------- 4. 文件列表（本地片库） ---------- */
body.letv-portal .search-wrap input,
body.letv-portal .player-actions .barrage-input {
    background: #f4f6f9;
    border: 1px solid transparent;
    border-radius: 9px;
}

body.letv-portal .search-wrap input:focus {
    border-color: var(--primary);
    background: #fff;
    box-shadow: 0 0 0 3px var(--primary-glow);
}

body.letv-portal .search-wrap button {
    background: var(--red-grad);
    color: #fff;
    border-radius: 9px;
    box-shadow: 0 4px 12px rgba(230, 69, 69, 0.24);
}

body.letv-portal .search-wrap .reset-btn {
    background: #eceff3;
    color: var(--gray-500);
    box-shadow: none;
}

.file-item {
    background: transparent;
    border-radius: 8px;
    color: var(--gray-600);
    font-size: 13px;
}

.file-item:hover {
    background: rgba(230, 69, 69, 0.05);
    color: var(--primary);
}

.file-item.folder {
    color: var(--primary);
    border-left-color: var(--primary);
}

.file-item.active {
    background: rgba(230, 69, 69, 0.08);
    color: var(--primary);
}

/* ---------- 5. 视频货架卡片（乐视式海报格） ---------- */
body.letv-portal .recommend-grid {
    grid-template-columns: repeat(auto-fill, minmax(172px, 1fr));
    gap: 14px;
    background: transparent;
    padding: 2px;
}

@media (max-width: 480px) {
    body.letv-portal .recommend-grid {
        grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
        gap: 10px;
    }
}

.rec-card {
    background: var(--card-bg);
    border: 1px solid rgba(31, 36, 48, 0.07);
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(20, 24, 36, 0.05);
    transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s;
}

.rec-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 26px rgba(20, 24, 36, 0.12);
    border-color: rgba(230, 69, 69, 0.35);
}

.rec-card .thumb {
    background: linear-gradient(135deg, #fbe9e7 0%, #f3d9d5 60%, #ead4d3 100%);
}

.rec-card .thumb::after {
    background: rgba(230, 69, 69, 0.28);
    box-shadow: 0 2px 12px rgba(230, 69, 69, 0.4);
}

.rec-card .info .title {
    color: var(--gray-600);
    font-weight: 600;
}

.rec-card .info .meta {
    color: var(--gray-400);
}

.rec-card .thumb .play-overlay {
    background: rgba(230, 69, 69, 0.06);
}

.rec-card .thumb .play-overlay i {
    color: #e64545;
    text-shadow: 0 2px 14px rgba(255, 255, 255, 0.9);
}

.rec-card:hover .thumb img {
    transform: scale(1.05);
}

/* ---------- 6. 播放页（乐视红 · 深色播放舞台） ---------- */
body.letv-portal .player-wrap.active {
    animation: portalFadeUp 0.35s ease both;
}

@keyframes portalFadeUp {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: none;
    }
}

.video-wrapper {
    background: #0b0f16;
    border-radius: 12px;
    border: 1px solid rgba(31, 36, 48, 0.12);
    box-shadow: 0 14px 40px rgba(20, 24, 36, 0.24);
}

.video-wrapper video {
    background: #0b0f16;
}

.video-loading {
    background: rgba(11, 15, 22, 0.72);
}

.video-loading .spinner {
    border-color: rgba(255, 255, 255, 0.16);
    border-top-color: #ff6a50;
}

.video-controls .progress-bar .fill {
    background: var(--red-grad);
    box-shadow: 0 0 8px rgba(230, 69, 69, 0.6);
}

.video-controls button:hover {
    background: rgba(230, 69, 69, 0.25);
    color: #ffb3a7;
}

/* 播放器下操作条：白色卡片 */
body.letv-portal .player-actions {
    background: var(--card-bg);
    border: 1px solid rgba(31, 36, 48, 0.07);
    border-radius: 12px;
    padding: 10px 12px;
    box-shadow: var(--shadow-sm);
}

body.letv-portal .player-actions .source-select {
    background: #fff;
    border: 1px solid rgba(31, 36, 48, 0.14);
    color: var(--gray-600);
}

.player-actions .action-btn {
    background: #fff;
    border: 1px solid rgba(31, 36, 48, 0.12);
    color: var(--gray-500);
}

.player-actions .action-btn:hover {
    background: var(--red-grad);
    border-color: transparent;
    color: #fff;
    box-shadow: 0 6px 14px rgba(230, 69, 69, 0.28);
}

.player-actions .action-btn.primary,
.comment-input-wrap button {
    background: var(--red-grad);
    color: #fff;
    border: none;
    box-shadow: 0 5px 14px rgba(230, 69, 69, 0.26);
}

.player-actions .like-btn {
    border-color: rgba(31, 36, 48, 0.14);
    color: var(--gray-500);
}

.player-actions .like-btn.liked {
    color: var(--primary);
    border-color: var(--primary);
    background: rgba(230, 69, 69, 0.07);
}

body.letv-portal .comment-section {
    background: var(--card-bg);
    border: 1px solid rgba(31, 36, 48, 0.07);
    border-radius: 12px;
    padding: 12px 14px;
    box-shadow: var(--shadow-sm);
    border-top: none;
}

.comment-input-wrap textarea {
    background: #f4f6f9;
    border-color: transparent;
}

.comment-input-wrap textarea:focus {
    background: #fff;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px var(--primary-glow);
}

/* ---------- 7. 弹窗 / 面板 ---------- */
.modal-overlay {
    background: rgba(24, 28, 38, 0.45);
    backdrop-filter: blur(6px);
}

.modal-box {
    background: #fff !important;
    border-radius: 14px !important;
    box-shadow: var(--shadow-lg) !important;
    color: var(--gray-600);
    border: 1px solid rgba(31, 36, 48, 0.06);
}

.modal-box h2,
.modal-box h3 {
    color: var(--gray-600);
}

.modal-box h3 i,
.modal-box h2 i {
    color: var(--primary) !important;
}

.modal-box .form-group input,
.modal-box textarea {
    background: #f4f6f9;
    border: 1px solid transparent;
    color: var(--gray-600);
}

.modal-box .form-group input:focus,
.modal-box textarea:focus {
    border-color: var(--primary);
    background: #fff;
    box-shadow: 0 0 0 3px var(--primary-glow);
}

.btn-primary,
.modal-box .btn-primary,
.verify-submit {
    background: var(--red-grad) !important;
    border: none !important;
    color: #fff !important;
    box-shadow: 0 6px 16px rgba(230, 69, 69, 0.3);
    font-weight: 600;
}

.notice-actions .btn-donate {
    background: linear-gradient(135deg, #ff9a3c, #ff6a3c) !important;
    color: #fff !important;
}

.i-cant-btn {
    background: #f4f6f9;
    border: 1px solid rgba(31, 36, 48, 0.1);
    color: var(--gray-500);
}

.verify-submit {
    background: var(--red-grad) !important;
    border: none !important;
    color: #fff !important;
}

/* 用户区（搬到门户头） */
body.letv-portal .user-area .btn {
    background: var(--red-grad);
    color: #fff;
    border-radius: 18px;
}

body.letv-portal .user-area .btn-outline {
    background: #fff;
    color: var(--primary);
    border: 1px solid rgba(230, 69, 69, 0.6);
}

body.letv-portal .user-area .uname {
    color: var(--gray-500);
}

/* ---------- 8. 联网 / AI 结果面板（浅色化） ---------- */
.remote-results-panel {
    background: #fff;
    border: 1px solid rgba(31, 36, 48, 0.08);
    border-radius: 12px;
    box-shadow: var(--shadow-sm);
}

.remote-results-header {
    color: var(--gray-600);
    background: linear-gradient(90deg, rgba(230, 69, 69, 0.07), transparent 65%);
    border-bottom: 1px solid rgba(31, 36, 48, 0.07);
}

.remote-results-header i {
    color: var(--primary);
}

.remote-results-header span {
    background: var(--red-grad);
    color: #fff;
}

.ai-match-card {
    background: transparent;
}

.ai-match-card:hover {
    background: rgba(230, 69, 69, 0.04);
}

.ai-summary-bar {
    background: rgba(34, 160, 107, 0.07);
    color: var(--gray-600);
}

.ai-search-status .spinner-sm {
    border-color: var(--gray-300);
    border-top-color: var(--primary);
}

.match-play-btn,
.play-btn,
.net-play {
    background: var(--red-grad) !important;
    border: none !important;
    color: #fff !important;
    box-shadow: 0 5px 14px rgba(230, 69, 69, 0.26);
}

.download-btn {
    background: #fff !important;
    border: 1px solid rgba(31, 36, 48, 0.16) !important;
    color: var(--gray-500) !important;
}

.download-btn:hover {
    border-color: var(--primary) !important;
    color: var(--primary) !important;
    background: rgba(230, 69, 69, 0.05) !important;
}

.link-btn {
    color: var(--gray-400);
}

.link-btn:hover {
    color: var(--primary);
}

.chip {
    background: #f1f2f6;
    color: var(--gray-500);
}

.candidate-index {
    background: var(--red-grad) !important;
    color: #fff !important;
}

.confidence-badge.high {
    background: rgba(34, 160, 107, 0.1);
    color: #158a57;
}

.confidence-badge.medium {
    background: rgba(230, 69, 69, 0.1);
    color: var(--primary);
}

.confidence-badge.low {
    background: rgba(31, 36, 48, 0.06);
    color: var(--gray-500);
}

.net-card {
    border-bottom: 1px solid rgba(31, 36, 48, 0.07);
}

.net-card-body {
    display: flex;
    gap: 14px;
    padding: 12px 14px;
    align-items: stretch;
}

.net-poster {
    width: 132px;
    min-height: 76px;
    border-radius: 8px;
    overflow: hidden;
    flex-shrink: 0;
    background: linear-gradient(135deg, #fbe9e7, #f0dbd9);
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(31, 36, 48, 0.06);
}

.net-poster img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.net-poster-fallback {
    font-size: 26px;
    color: rgba(230, 69, 69, 0.5);
}

.net-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.net-title-row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.net-title {
    font-size: 15px;
    font-weight: 700;
    color: var(--gray-600);
}

.net-badge {
    font-size: 11px;
    padding: 3px 8px;
    border-radius: 10px;
    background: #f1f2f6;
    color: var(--gray-500);
}

.net-badge.year {
    background: rgba(230, 69, 69, 0.1);
    color: var(--primary);
}

.net-badge.remarks {
    background: rgba(251, 146, 60, 0.12);
    color: #c2570a;
}

.net-badge.free {
    background: rgba(34, 160, 107, 0.1);
    color: #158a57;
}

.net-badge.lines {
    background: rgba(230, 69, 69, 0.09);
    color: var(--primary);
}

.net-meta {
    color: var(--gray-400);
    font-size: 12px;
}

.net-desc {
    color: var(--gray-500);
    font-size: 12px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.net-lines {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
}

.net-chips {
    display: flex;
    gap: 6px;
}

.net-line-select {
    background: #fff !important;
    border: 1px solid rgba(31, 36, 48, 0.16) !important;
    color: var(--gray-600) !important;
    border-radius: 16px !important;
    font-size: 12px !important;
    padding: 4px 10px !important;
}

.net-note {
    color: var(--gray-400);
    font-size: 11px;
    border-top: 1px dashed rgba(31, 36, 48, 0.1);
    padding: 7px 14px 10px;
    margin: 0 14px 10px;
}

.net-note i {
    color: var(--primary);
}

.net-ai-btn {
    background: var(--red-grad);
    color: #fff;
    border: none;
    border-radius: 18px;
    padding: 9px 18px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 6px 16px rgba(230, 69, 69, 0.26);
}

.net-ai-btn.ghost {
    background: #fff;
    color: var(--gray-500);
    border: 1px solid rgba(31, 36, 48, 0.16);
    box-shadow: none;
}

.local-search-tip,
.refine-hint-box {
    background: rgba(230, 69, 69, 0.05);
    border: 1px solid rgba(230, 69, 69, 0.16);
    color: var(--gray-500);
}

.empty-tip {
    color: var(--gray-400);
}

.empty-tip a {
    color: var(--primary);
}

.toast-msg {
    background: rgba(31, 36, 48, 0.92);
    color: #fff;
    border-radius: 10px;
    box-shadow: 0 10px 30px rgba(20, 24, 36, 0.3);
}

/* ---------- 9. 移动端 ---------- */
@media (max-width: 900px) {
    .letv-header-inner {
        height: auto;
        flex-wrap: wrap;
        padding: 8px 10px;
        gap: 8px;
    }

    .letv-logo .logo-slogan {
        display: none;
    }

    .letv-nav {
        order: 3;
        width: 100%;
        overflow-x: auto;
    }

    .letv-searchbar {
        order: 2;
        flex: 1 1 100%;
    }

    .letv-user {
        order: 1;
        margin-left: auto;
    }

    body.letv-portal .app-container {
        padding: 10px;
    }

    body.letv-portal .sidebar {
        max-height: 300px;
    }

    .net-card-body {
        gap: 10px;
    }

    .net-poster {
        width: 104px;
    }
}

@media (max-width: 560px) {
    .net-card-body {
        flex-direction: column;
    }

    .net-poster {
        width: 100%;
        height: 108px;
    }

    .letv-tools .act-btn {
        padding: 5px 9px;
        font-size: 11px;
    }
}

/* ---------- 10. 门户头微调 ---------- */
body.letv-portal .letv-searchbar .ai-search {
    flex: 0 1 560px;
    width: 100%;
    max-width: 560px;
}

body.letv-portal .letv-user .user-area {
    gap: 6px;
}

body.letv-portal .rail-title i {
    color: var(--primary);
    font-size: 13px;
    margin-left: auto;
    cursor: pointer;
    opacity: 0.8;
    transition: opacity 0.2s;
}

body.letv-portal .rail-title i:hover {
    opacity: 1;
}

body.letv-portal .letv-header .letv-nav-item i {
    margin-right: 4px;
}

/* 播放页整块白色卡片化，与乐视内容页观感一致 */
body.letv-portal .video-wrapper {
    background: #000;
}

body.letv-portal .video-wrapper video {
    background: #000;
}

/* ---------- 11. 联网源状态诊断 ---------- */
.net-src-wrap {
    grid-column: 1 / -1;
    background: #fff;
    border: 1px solid rgba(31, 36, 48, 0.1);
    border-radius: 12px;
    box-shadow: var(--shadow-sm);
    margin-top: 6px;
    overflow: hidden;
}

.net-src-summary {
    padding: 11px 16px;
    font-size: 13px;
    color: var(--gray-600);
    cursor: pointer;
    list-style: none;
    display: flex;
    align-items: center;
    gap: 8px;
    user-select: none;
    background: linear-gradient(90deg, rgba(230, 69, 69, 0.05), transparent 70%);
}

.net-src-summary::-webkit-details-marker {
    display: none;
}

.net-src-summary i {
    color: var(--primary);
}

.net-src-wrap[open] .net-src-summary {
    border-bottom: 1px solid rgba(31, 36, 48, 0.07);
}

.net-src-row {
    display: flex;
    align-items: baseline;
    gap: 10px;
    padding: 9px 16px;
    font-size: 12.5px;
    border-bottom: 1px dashed rgba(31, 36, 48, 0.06);
    flex-wrap: wrap;
}

.net-src-row:last-of-type {
    border-bottom: none;
}

.ns-icon {
    flex-shrink: 0;
}

.net-src-row.ok .ns-icon {
    color: #22a06b;
}

.net-src-row.fail .ns-icon {
    color: #e64545;
}

.ns-name {
    font-weight: 700;
    color: var(--gray-600);
    min-width: 110px;
}

.ns-state {
    flex-shrink: 0;
    font-size: 11px;
    padding: 2px 9px;
    border-radius: 10px;
    font-weight: 600;
}

.ns-state.ok {
    background: rgba(34, 160, 107, 0.12);
    color: #158a57;
}

.ns-state.no {
    background: rgba(230, 69, 69, 0.1);
    color: #d92d2d;
}

.ns-note {
    flex: 1;
    min-width: 180px;
    color: var(--gray-400);
    line-height: 1.5;
}

.ns-meta {
    flex-shrink: 0;
    color: var(--gray-400);
    font-variant-numeric: tabular-nums;
}

.net-src-foot {
    padding: 8px 16px;
    font-size: 11.5px;
    color: var(--gray-400);
    background: #fafbfc;
    border-top: 1px solid rgba(31, 36, 48, 0.06);
    line-height: 1.6;
}

.net-src-foot i {
    color: #f59e0b;
}

.net-src-actions {
    padding: 0 16px 12px;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.net-src-actions .net-ai-btn.ghost {
    font-size: 12px;
    padding: 7px 14px;
}
