/* ==========================================================================
   星通云控制台外壳与统一组件
   --------------------------------------------------------------------------
   在 main.css 之后加载。main.css 里先后叠了五层主题，各页的按钮、面板、表格
   长得都不一样；这里只定一套，并把旧类名（.button / .panel / .flash …）
   统一收到这套样式上，所以旧页面不用逐个改模板。

   结构：1 变量  2 外壳（顶栏 / 侧栏 / 内容区）  3 旧组件归一
        4 控制台组件（xc-*）  5 未登录页  6 窄屏
   ========================================================================== */

/* ---------- 1. 变量 ---------- */
:root {
    --xc-brand: #006eff;
    --xc-brand-hover: #2b8aff;
    --xc-brand-active: #0052d9;
    --xc-brand-bg: #e8f2ff;
    --xc-success: #0abf5b;
    --xc-success-bg: #e3f7ec;
    --xc-warning: #ff7200;
    --xc-warning-bg: #fff3e5;
    --xc-danger: #e54545;
    --xc-danger-bg: #fdecec;
    --xc-text: rgba(0, 0, 0, 0.9);
    --xc-text-2: rgba(0, 0, 0, 0.6);
    --xc-text-3: rgba(0, 0, 0, 0.4);
    --xc-line: #dcdfe6;
    --xc-line-soft: #e7eaef;
    --xc-page: #f3f4f7;
    --xc-card: #ffffff;
    --xc-hover: #f5f7fa;
    --xc-topbar: #1f2329;
    --xc-topbar-h: 50px;
    --xc-sidebar-w: 208px;
    --xc-sidebar-mini: 56px;
    --xc-radius: 4px;
    --xc-shadow-card: 0 1px 2px rgba(54, 58, 80, 0.06);
    --xc-shadow-pop: 0 4px 16px rgba(54, 58, 80, 0.16);
    --xc-font: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
    --xc-mono: "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;

    /* 旧变量指到新值上，沿用旧变量的页面跟着变。 */
    --bg: var(--xc-page);
    --panel: var(--xc-card);
    --panel-alt: #fafbfc;
    --panel-soft: #fafbfc;
    --border: var(--xc-line-soft);
    --border-soft: var(--xc-line-soft);
    --text: #1a1a1a;
    --muted: #666666;
    --accent: var(--xc-brand);
    --accent-hover: var(--xc-brand-hover);
    --accent-press: var(--xc-brand-active);
    --selection: var(--xc-brand-bg);
    --selection-border: #b3d4ff;
    --ok: var(--xc-success);
    --warn: var(--xc-warning);
    --shadow: var(--xc-shadow-card);
    --radius: var(--xc-radius);
    --xt-color-bg: var(--xc-page);
    --xt-color-border: var(--xc-line-soft);
    --xt-color-border-strong: var(--xc-line);
    --xt-color-text: #1a1a1a;
    --xt-color-text-muted: #666666;
    --xt-color-text-subtle: #8a8a8a;
    --xt-color-primary-50: #f2f7ff;
    --xt-color-primary-100: var(--xc-brand-bg);
    --xt-color-primary-200: #b3d4ff;
    --xt-color-primary-500: var(--xc-brand-hover);
    --xt-color-primary-600: var(--xc-brand);
    --xt-color-primary-700: var(--xc-brand-active);
    --xt-color-primary-800: #003eb3;
    --xt-radius-sm: 2px;
    --xt-radius-md: 4px;
    --xt-radius-lg: 4px;
    --xt-radius-xl: 6px;
    --xt-shadow-xs: none;
    --xt-shadow-sm: var(--xc-shadow-card);
    --xt-shadow-md: var(--xc-shadow-card);
    --xt-font-sans: var(--xc-font);
}

/* ---------- 2. 外壳 ---------- */
body.xc {
    margin: 0;
    background: var(--xc-page);
    color: var(--xc-text);
    font-family: var(--xc-font);
    font-size: 14px;
    line-height: 1.5;
}

body.xc h1,
body.xc h2,
body.xc h3,
body.xc h4 {
    letter-spacing: 0;
}

.xc-topbar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 210;
    height: var(--xc-topbar-h);
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 0 16px 0 8px;
    background: var(--xc-topbar);
    color: #ffffff;
}

.xc--guest .xc-topbar {
    padding-left: 20px;
}

.xc-topbar__toggle {
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: var(--xc-radius);
    background: transparent;
    color: rgba(255, 255, 255, 0.8);
    cursor: pointer;
}

.xc-topbar__toggle:hover,
.xc-topbar__toggle:focus-visible {
    background: rgba(255, 255, 255, 0.12);
    color: #ffffff;
    outline: none;
}

.xc-topbar__toggle .svg-icon {
    width: 18px;
    height: 18px;
}

.xc-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    color: #ffffff;
    text-decoration: none;
}

.xc-brand__logo {
    display: inline-flex;
    align-items: center;
    height: 28px;
    padding: 0 8px;
    border-radius: 3px;
    background: #ffffff;
}

.xc-brand__logo img {
    display: block;
    height: 14px;
    width: auto;
}

.xc-brand__name {
    font-size: 16px;
    font-weight: 600;
    white-space: nowrap;
}

.xc-brand__tag {
    padding-left: 10px;
    border-left: 1px solid rgba(255, 255, 255, 0.24);
    color: rgba(255, 255, 255, 0.7);
    font-size: 13px;
    white-space: nowrap;
}

.xc-topbar__spacer {
    flex: 1 1 auto;
}

.xc-topbar__link {
    color: rgba(255, 255, 255, 0.8);
    font-size: 13px;
}

.xc-topbar__link:hover {
    color: #ffffff;
}

.xc-user {
    position: relative;
}

.xc-user__trigger {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 36px;
    max-width: 320px;
    padding: 0 8px;
    border: 0;
    border-radius: var(--xc-radius);
    background: transparent;
    color: #ffffff;
    font: inherit;
    font-size: 13px;
    cursor: pointer;
}

.xc-user__trigger:hover,
.xc-user__trigger:focus-visible,
.xc-user__trigger[aria-expanded="true"] {
    background: rgba(255, 255, 255, 0.12);
    outline: none;
}

.xc-user__name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xc-user__role {
    padding: 1px 6px;
    border-radius: 2px;
    background: rgba(255, 255, 255, 0.16);
    color: rgba(255, 255, 255, 0.85);
    font-size: 12px;
    white-space: nowrap;
}

.xc-caret {
    width: 0;
    height: 0;
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 5px solid currentColor;
    opacity: 0.7;
}

.xc-avatar {
    flex: 0 0 auto;
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--xc-brand);
    color: #ffffff;
    font-size: 13px;
    font-weight: 600;
    line-height: 1;
}

.xc-avatar--soft {
    width: 32px;
    height: 32px;
    background: var(--xc-brand-bg);
    color: var(--xc-brand);
    font-size: 14px;
}

.xc-avatar--muted {
    background: #eceef2;
    color: var(--xc-text-3);
}

.xc-dropdown {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 220;
    min-width: 200px;
    padding: 4px 0;
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
    background: #ffffff;
    box-shadow: var(--xc-shadow-pop);
    color: var(--xc-text);
}

.xc-dropdown[hidden] {
    display: none;
}

.xc-dropdown__head {
    display: grid;
    gap: 2px;
    padding: 10px 16px;
    border-bottom: 1px solid var(--xc-line-soft);
    margin-bottom: 4px;
}

.xc-dropdown__head span {
    color: var(--xc-text-2);
    font-size: 12px;
    word-break: break-all;
}

.xc-dropdown a,
.xc-dropdown button {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 16px;
    border: 0;
    background: transparent;
    color: var(--xc-text);
    font: inherit;
    font-size: 14px;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
}

.xc-dropdown a:hover,
.xc-dropdown button:hover:not(:disabled),
.xc-dropdown a:focus-visible,
.xc-dropdown button:focus-visible {
    background: var(--xc-hover);
    outline: none;
}

.xc-dropdown .is-danger {
    color: var(--xc-danger);
}

.xc-dropdown button:disabled {
    color: var(--xc-text-3);
    cursor: not-allowed;
}

.xc-dropdown .svg-icon {
    width: 16px;
    height: 16px;
}

/* 侧栏 */
.xc-sidebar {
    position: fixed;
    top: var(--xc-topbar-h);
    bottom: 0;
    left: 0;
    z-index: 205;
    width: var(--xc-sidebar-w);
    overflow-x: hidden;
    overflow-y: auto;
    border-right: 1px solid var(--xc-line-soft);
    background: #ffffff;
    transition: width 0.18s ease, transform 0.2s ease;
}

.xc-menu {
    padding: 8px 8px 24px;
}

.xc-menu__group + .xc-menu__group {
    margin-top: 4px;
    padding-top: 4px;
}

.xc-menu__title {
    padding: 10px 12px 4px;
    color: var(--xc-text-3);
    font-size: 12px;
    line-height: 20px;
    white-space: nowrap;
}

.xc-menu__item {
    display: flex;
    align-items: center;
    gap: 10px;
    height: 36px;
    padding: 0 12px;
    border-radius: var(--xc-radius);
    color: var(--xc-text);
    font-size: 14px;
    white-space: nowrap;
    text-decoration: none;
}

.xc-menu__item .svg-icon {
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
    color: var(--xc-text-2);
}

.xc-menu__item:hover,
.xc-menu__item:focus-visible {
    background: var(--xc-hover);
    outline: none;
}

.xc-menu__item.is-active {
    background: var(--xc-brand-bg);
    color: var(--xc-brand);
    font-weight: 600;
}

.xc-menu__item.is-active .svg-icon {
    color: var(--xc-brand);
}

.xc-sidebar-mask {
    position: fixed;
    inset: var(--xc-topbar-h) 0 0 0;
    z-index: 204;
    background: rgba(0, 0, 0, 0.45);
}

.xc-sidebar-mask[hidden] {
    display: none;
}

/* 桌面端收起：只留图标 */
@media (min-width: 993px) {
    .xc--mini .xc-sidebar {
        width: var(--xc-sidebar-mini);
    }

    .xc--mini .xc-menu__title {
        height: 1px;
        margin: 6px 8px;
        padding: 0;
        overflow: hidden;
        background: var(--xc-line-soft);
        color: transparent;
    }

    .xc--mini .xc-menu__item {
        justify-content: center;
        padding: 0;
    }

    .xc--mini .xc-menu__item span {
        display: none;
    }

    .xc--mini.xc--app .xc-main {
        margin-left: var(--xc-sidebar-mini);
    }
}

/* 内容区 */
.xc-main {
    min-height: 100vh;
    padding-top: var(--xc-topbar-h);
    display: flex;
    flex-direction: column;
    transition: margin-left 0.18s ease;
}

.xc--app .xc-main {
    margin-left: var(--xc-sidebar-w);
}

body.xc .shell {
    flex: 1 0 auto;
    width: 100%;
    max-width: 1680px;
    margin: 0 auto;
    padding: 20px;
}

body.xc .xc-footer {
    flex: 0 0 auto;
}

/* main.css 给它写了 display:flex，把 hidden 属性盖掉了，结果每页顶上常驻一条空黄条。 */
#outbox-user-banner[hidden],
#outbox-toast[hidden] {
    display: none !important;
}

/* ---------- 3. 旧组件归一 ---------- */
body.xc .panel,
body.xc .login-card.panel {
    border: 0;
    border-radius: var(--xc-radius);
    background: var(--xc-card);
    box-shadow: var(--xc-shadow-card);
}

body.xc .page-head,
body.xc .page-head--bare {
    border: 0;
    border-radius: var(--xc-radius);
    background: var(--xc-card);
    box-shadow: var(--xc-shadow-card);
}

body.xc .page-head h1,
body.xc .page-head--bare h1,
body.xc .page-head--compact h1,
body.xc .section-heading h1 {
    color: var(--xc-text);
    font-size: 18px;
    font-weight: 600;
    line-height: 28px;
    background: none;
    -webkit-text-fill-color: currentColor;
}

body.xc .button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: 32px;
    padding: 5px 16px;
    border: 1px solid var(--xc-line);
    border-radius: var(--xc-radius);
    background: #ffffff;
    box-shadow: none;
    color: var(--xc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 400;
    line-height: 20px;
    text-decoration: none;
    text-shadow: none;
    transform: none;
    transition: color 0.15s, border-color 0.15s, background-color 0.15s;
    cursor: pointer;
}

body.xc .button:hover,
body.xc .button:focus-visible {
    border-color: var(--xc-brand);
    background: #ffffff;
    box-shadow: none;
    color: var(--xc-brand);
    transform: none;
    outline: none;
}

body.xc .button:focus-visible {
    box-shadow: 0 0 0 2px rgba(0, 110, 255, 0.2);
}

body.xc .button--primary {
    border-color: var(--xc-brand);
    background: var(--xc-brand);
    color: #ffffff;
}

body.xc .button--primary:hover,
body.xc .button--primary:focus-visible {
    border-color: var(--xc-brand-hover);
    background: var(--xc-brand-hover);
    color: #ffffff;
}

body.xc .button--primary:active {
    border-color: var(--xc-brand-active);
    background: var(--xc-brand-active);
}

body.xc .button--ghost {
    background: #ffffff;
    color: var(--xc-text);
}

body.xc .button--danger {
    border-color: var(--xc-line);
    background: #ffffff;
    color: var(--xc-danger);
}

body.xc .button--danger:hover,
body.xc .button--danger:focus-visible {
    border-color: var(--xc-danger);
    background: var(--xc-danger);
    color: #ffffff;
}

body.xc .button--small {
    min-height: 28px;
    padding: 3px 12px;
    font-size: 13px;
}

body.xc .button:disabled,
body.xc .button[disabled],
body.xc .button.is-disabled {
    border-color: var(--xc-line-soft);
    background: #f5f6f8;
    color: var(--xc-text-3);
    cursor: not-allowed;
    opacity: 1;
}

body.xc .button .svg-icon {
    width: 14px;
    height: 14px;
}

body.xc input[type="text"],
body.xc input[type="password"],
body.xc input[type="number"],
body.xc input[type="email"],
body.xc input[type="tel"],
body.xc input[type="search"],
body.xc input[type="date"],
body.xc input:not([type]),
body.xc select,
body.xc textarea {
    border: 1px solid var(--xc-line);
    border-radius: var(--xc-radius);
    background-color: #ffffff;
    box-shadow: none;
    color: var(--xc-text);
    font-family: inherit;
    font-size: 14px;
}

body.xc input[type="text"],
body.xc input[type="password"],
body.xc input[type="number"],
body.xc input[type="email"],
body.xc input[type="tel"],
body.xc input[type="search"],
body.xc input[type="date"],
body.xc input:not([type]),
body.xc select {
    min-height: 32px;
    padding: 4px 10px;
}

body.xc input:hover:not(:disabled):not([type="checkbox"]):not([type="radio"]):not([type="file"]),
body.xc select:hover:not(:disabled),
body.xc textarea:hover:not(:disabled) {
    border-color: var(--xc-brand);
}

body.xc input:focus,
body.xc input:focus-visible,
body.xc select:focus,
body.xc select:focus-visible,
body.xc textarea:focus,
body.xc textarea:focus-visible {
    border-color: var(--xc-brand);
    box-shadow: 0 0 0 2px rgba(0, 110, 255, 0.16);
    outline: none;
}

body.xc input:disabled,
body.xc select:disabled,
body.xc textarea:disabled {
    background-color: #f5f6f8;
    color: var(--xc-text-3);
    cursor: not-allowed;
}

body.xc input::placeholder,
body.xc textarea::placeholder {
    color: var(--xc-text-3);
}

body.xc input[type="checkbox"],
body.xc input[type="radio"] {
    accent-color: var(--xc-brand);
}

body.xc .flash,
body.xc .notice-card {
    margin: 0 0 16px;
    padding: 9px 16px;
    border: 1px solid #b3d4ff;
    border-radius: var(--xc-radius);
    background: var(--xc-brand-bg);
    box-shadow: none;
    color: var(--xc-text);
    font-size: 14px;
    font-weight: 400;
}

body.xc .flash--ok {
    border-color: #a6e5c1;
    background: var(--xc-success-bg);
}

body.xc .flash--warn {
    border-color: #ffd3a8;
    background: var(--xc-warning-bg);
}

body.xc .flash--error {
    border-color: #f6b9b9;
    background: var(--xc-danger-bg);
}

body.xc .status-chip,
body.xc .status-pill {
    border-radius: 2px;
    font-weight: 400;
}

body.xc .table-wrap {
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
    box-shadow: none;
}

body.xc .data-table th,
body.xc .table-wrap table th {
    background: #f7f8fa;
    color: var(--xc-text-2);
    font-weight: 500;
}

body.xc .data-table tr:hover td {
    background: var(--xc-hover);
}

body.xc .empty,
body.xc .empty-state {
    padding: 32px 16px;
    border: 0;
    background: transparent;
    color: var(--xc-text-3);
    text-align: center;
}

/* 旧确认弹窗（app.js 生成）并入同一套弹窗样式 */
body.xc .confirm-modal {
    z-index: 400;
    background: rgba(0, 0, 0, 0.45);
    backdrop-filter: none;
}

body.xc .confirm-modal__dialog {
    width: min(480px, calc(100vw - 32px));
    padding: 24px;
    border: 0;
    border-radius: var(--xc-radius);
    background: #ffffff;
    box-shadow: var(--xc-shadow-pop);
}

body.xc .confirm-modal__title {
    margin: 0 0 12px;
    color: var(--xc-text);
    font-size: 16px;
    font-weight: 600;
}

body.xc .confirm-modal__message {
    margin: 0 0 12px;
    color: var(--xc-text-2);
    font-size: 14px;
    line-height: 22px;
}

body.xc .confirm-modal__token-display {
    display: inline-block;
    margin-left: 4px;
    padding: 0 6px;
    border-radius: 2px;
    background: #f3f4f7;
    color: var(--xc-text);
    font-family: var(--xc-mono);
    font-size: 13px;
}

body.xc .confirm-modal__input {
    width: 100%;
}

body.xc .confirm-modal__error {
    min-height: 20px;
    color: var(--xc-danger);
    font-size: 12px;
}

body.xc .confirm-modal__actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 12px;
}

body.xc .confirm-modal__actions .button--danger {
    border-color: var(--xc-danger);
    background: var(--xc-danger);
    color: #ffffff;
}

/* ---------- 4. 控制台组件 ---------- */
.xc-page {
    display: block;
}

.xc-page__head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 8px 16px;
    margin-bottom: 16px;
}

.xc-crumb {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0 0 4px;
    color: var(--xc-text-3);
    font-size: 12px;
    line-height: 20px;
}

.xc-crumb a {
    color: var(--xc-text-2);
}

.xc-crumb a:hover {
    color: var(--xc-brand);
}

.xc-page__title {
    margin: 0;
    color: var(--xc-text);
    font-size: 20px;
    font-weight: 600;
    line-height: 28px;
}

.xc-page__desc {
    margin: 4px 0 0;
    color: var(--xc-text-2);
    font-size: 13px;
    line-height: 20px;
}

.xc-page__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.xc-link {
    border: 0;
    padding: 0;
    background: none;
    color: var(--xc-brand);
    font: inherit;
    text-decoration: none;
    cursor: pointer;
}

.xc-link:hover,
.xc-link:focus-visible {
    color: var(--xc-brand-hover);
    text-decoration: none;
    outline: none;
}

.xc-link--danger {
    color: var(--xc-danger);
}

.xc-link--danger:hover {
    color: #c93030;
}

.xc-link:disabled,
.xc-link.is-disabled {
    color: var(--xc-text-3);
    cursor: not-allowed;
}

.xc-card {
    border-radius: var(--xc-radius);
    background: var(--xc-card);
    box-shadow: var(--xc-shadow-card);
}

.xc-card + .xc-card {
    margin-top: 16px;
}

.xc-card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 20px;
    border-bottom: 1px solid var(--xc-line-soft);
}

.xc-card__title {
    margin: 0;
    color: var(--xc-text);
    font-size: 15px;
    font-weight: 600;
    line-height: 22px;
}

.xc-card__body {
    padding: 20px;
}

.xc-card__body--flush {
    padding: 0;
}

/* 数据概览条 */
.xc-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    margin-bottom: 16px;
    border-radius: var(--xc-radius);
    background: var(--xc-card);
    box-shadow: var(--xc-shadow-card);
}

.xc-stat {
    position: relative;
    display: block;
    padding: 16px 20px;
    color: inherit;
    text-decoration: none;
}

.xc-stat + .xc-stat::before {
    content: "";
    position: absolute;
    top: 16px;
    bottom: 16px;
    left: 0;
    width: 1px;
    background: var(--xc-line-soft);
}

a.xc-stat:hover .xc-stat__value {
    color: var(--xc-brand);
}

.xc-stat__label {
    color: var(--xc-text-2);
    font-size: 13px;
    line-height: 20px;
}

.xc-stat__value {
    margin-top: 2px;
    color: var(--xc-text);
    font-size: 24px;
    font-weight: 600;
    line-height: 32px;
    font-variant-numeric: tabular-nums;
}

.xc-stat__value--warn {
    color: var(--xc-warning);
}

/* 页签 */
.xc-tabs {
    display: flex;
    gap: 28px;
    padding: 0 20px;
    border-bottom: 1px solid var(--xc-line-soft);
    overflow-x: auto;
}

.xc-tabs__item {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 12px 0;
    color: var(--xc-text-2);
    font-size: 14px;
    line-height: 22px;
    white-space: nowrap;
    text-decoration: none;
}

.xc-tabs__item:hover {
    color: var(--xc-brand);
}

.xc-tabs__item.is-active {
    color: var(--xc-brand);
    font-weight: 600;
}

.xc-tabs__item.is-active::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    height: 2px;
    background: var(--xc-brand);
}

.xc-badge {
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 9px;
    background: var(--xc-danger);
    color: #ffffff;
    font-size: 12px;
    font-weight: 600;
    line-height: 1;
}

.xc-badge--muted {
    background: #eceef2;
    color: var(--xc-text-2);
}

/* 分段筛选 */
.xc-segment {
    display: inline-flex;
    border: 1px solid var(--xc-line);
    border-radius: var(--xc-radius);
    overflow: hidden;
    background: #ffffff;
}

.xc-segment a {
    padding: 5px 14px;
    color: var(--xc-text);
    font-size: 14px;
    line-height: 20px;
    white-space: nowrap;
    text-decoration: none;
}

.xc-segment a + a {
    border-left: 1px solid var(--xc-line);
}

.xc-segment a:hover {
    color: var(--xc-brand);
}

.xc-segment a.is-active {
    background: var(--xc-brand-bg);
    color: var(--xc-brand);
    font-weight: 600;
}

/* 提示条 */
.xc-alert {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: 16px;
    padding: 9px 16px;
    border: 1px solid #b3d4ff;
    border-radius: var(--xc-radius);
    background: var(--xc-brand-bg);
    color: var(--xc-text);
    font-size: 13px;
    line-height: 20px;
}

.xc-alert .svg-icon {
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
    margin-top: 2px;
    color: var(--xc-brand);
}

.xc-alert--success {
    border-color: #a6e5c1;
    background: var(--xc-success-bg);
}

.xc-alert--success .svg-icon {
    color: var(--xc-success);
}

.xc-alert--error {
    border-color: #f6b9b9;
    background: var(--xc-danger-bg);
}

.xc-alert--error .svg-icon {
    color: var(--xc-danger);
}

.xc-alert--warning {
    border-color: #ffd3a8;
    background: var(--xc-warning-bg);
}

.xc-alert--warning .svg-icon {
    color: var(--xc-warning);
}

.xc-alert__close {
    margin-left: auto;
    border: 0;
    padding: 0 2px;
    background: none;
    color: var(--xc-text-3);
    font-size: 16px;
    line-height: 20px;
    cursor: pointer;
}

.xc-alert__close:hover {
    color: var(--xc-text);
}

/* 表格工具栏 */
.xc-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 20px;
}

.xc-toolbar__left,
.xc-toolbar__right {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.xc-toolbar__right {
    margin: 0;
}

body.xc .xc-toolbar select {
    width: auto;
    min-width: 120px;
}

.xc-search {
    position: relative;
    display: inline-flex;
}

body.xc .xc-search input {
    width: 240px;
    padding-right: 34px;
}

.xc-search button {
    position: absolute;
    top: 1px;
    right: 1px;
    bottom: 1px;
    width: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    background: transparent;
    color: var(--xc-text-2);
    cursor: pointer;
}

.xc-search button:hover {
    color: var(--xc-brand);
}

.xc-search .svg-icon {
    width: 15px;
    height: 15px;
}

/* 表格 */
.xc-table-wrap {
    overflow-x: auto;
}

table.xc-table {
    width: 100%;
    min-width: 0;
    border: 0;
    border-collapse: collapse;
    background: #ffffff;
    font-size: 13px;
}

table.xc-table th,
table.xc-table td {
    padding: 11px 12px;
    border: 0;
    border-bottom: 1px solid var(--xc-line-soft);
    background: transparent;
    color: var(--xc-text);
    line-height: 20px;
    text-align: left;
    vertical-align: middle;
}

table.xc-table th:first-child,
table.xc-table td:first-child {
    padding-left: 20px;
}

table.xc-table th:last-child,
table.xc-table td:last-child {
    padding-right: 20px;
}

table.xc-table thead th {
    border-top: 1px solid var(--xc-line-soft);
    background: #f7f8fa;
    color: var(--xc-text-2);
    font-size: 13px;
    font-weight: 500;
    white-space: nowrap;
}

table.xc-table tbody tr:hover td {
    background: var(--xc-hover);
}

table.xc-table tbody tr.is-muted td {
    color: var(--xc-text-3);
}

table.xc-table .xc-nowrap {
    white-space: nowrap;
}

table.xc-table code,
.xc-mono {
    padding: 0;
    background: none;
    color: inherit;
    font-family: var(--xc-mono);
    font-size: 12px;
}

.xc-sub {
    color: var(--xc-text-2);
    font-size: 12px;
    line-height: 18px;
    word-break: break-all;
}

.xc-user-cell {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 180px;
}

.xc-user-cell__name {
    color: var(--xc-text);
    font-size: 14px;
    font-weight: 500;
}

.xc-self {
    margin-left: 6px;
    color: var(--xc-text-3);
    font-size: 12px;
    font-weight: 400;
}

.xc-tag {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 8px;
    border: 1px solid var(--xc-line);
    border-radius: 2px;
    background: #f7f8fa;
    color: var(--xc-text-2);
    font-size: 12px;
    line-height: 20px;
    white-space: nowrap;
}

.xc-tag--blue {
    border-color: #b3d4ff;
    background: var(--xc-brand-bg);
    color: var(--xc-brand);
}

.xc-tag--gold {
    border-color: #f5d28a;
    background: #fff7e0;
    color: #a86400;
}

.xc-tag--green {
    border-color: #a6e5c1;
    background: var(--xc-success-bg);
    color: #078a41;
}

.xc-tag--red {
    border-color: #f6b9b9;
    background: var(--xc-danger-bg);
    color: #c9302c;
}

.xc-tag--cyan {
    border-color: #a5dfe6;
    background: #e6f7f9;
    color: #0a7c8a;
}

.xc-tag--purple {
    border-color: #d3c4f7;
    background: #f3eeff;
    color: #6b3fd4;
}

.xc-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.xc-status::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--xc-text-3);
}

.xc-status--ok::before {
    background: var(--xc-success);
}

.xc-status--warn::before {
    background: var(--xc-warning);
}

.xc-status--bad::before {
    background: var(--xc-danger);
}

.xc-ops {
    display: flex;
    align-items: center;
    gap: 14px;
    white-space: nowrap;
}

.xc-ops form {
    display: inline;
    margin: 0;
}

.xc-more {
    position: relative;
}

.xc-more .xc-dropdown {
    min-width: 132px;
}

.xc-more--up .xc-dropdown {
    top: auto;
    bottom: calc(100% + 6px);
}

.xc-empty {
    padding: 48px 16px;
    color: var(--xc-text-3);
    font-size: 14px;
    text-align: center;
}

.xc-empty a {
    color: var(--xc-brand);
}

/* 分页 */
.xc-pager {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 20px;
    color: var(--xc-text-2);
    font-size: 13px;
}

.xc-pager__right {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
}

.xc-pager__size {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
}

body.xc .xc-pager__size select {
    width: auto;
    min-height: 28px;
    padding: 2px 8px;
    font-size: 13px;
}

.xc-pager__nav {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.xc-pager__nav a,
.xc-pager__nav span {
    min-width: 28px;
    height: 28px;
    padding: 0 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--xc-line);
    border-radius: var(--xc-radius);
    background: #ffffff;
    color: var(--xc-text);
    font-size: 13px;
    text-decoration: none;
}

.xc-pager__nav a:hover {
    border-color: var(--xc-brand);
    color: var(--xc-brand);
}

.xc-pager__nav .is-current {
    border-color: var(--xc-brand);
    background: var(--xc-brand);
    color: #ffffff;
}

.xc-pager__nav .is-disabled {
    background: #f5f6f8;
    color: var(--xc-text-3);
}

.xc-pager__nav .is-gap {
    border-color: transparent;
    background: transparent;
}

/* 弹窗 */
.xc-modal {
    position: fixed;
    inset: 0;
    z-index: 300;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 8vh 16px 24px;
    overflow-y: auto;
    background: rgba(0, 0, 0, 0.45);
}

.xc-modal[hidden] {
    display: none;
}

.xc-modal__dialog {
    width: min(560px, 100%);
    border-radius: var(--xc-radius);
    background: #ffffff;
    box-shadow: var(--xc-shadow-pop);
}

.xc-modal__dialog--sm {
    width: min(460px, 100%);
}

.xc-modal__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 24px 0;
}

.xc-modal__title {
    margin: 0;
    color: var(--xc-text);
    font-size: 16px;
    font-weight: 600;
    line-height: 24px;
}

.xc-modal__close {
    width: 28px;
    height: 28px;
    border: 0;
    border-radius: var(--xc-radius);
    background: transparent;
    color: var(--xc-text-2);
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

.xc-modal__close:hover {
    background: var(--xc-hover);
    color: var(--xc-text);
}

.xc-modal__body {
    padding: 16px 24px 4px;
}

.xc-modal__foot {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 16px 24px 20px;
}

body.xc-modal-open {
    overflow: hidden;
}

/* 表单项 */
.xc-field {
    display: grid;
    gap: 6px;
    margin: 0 0 16px;
}

.xc-field > span:not(.xc-field__hint),
.xc-field__label {
    color: var(--xc-text);
    font-size: 14px;
    line-height: 22px;
}

.xc-field__label em,
.xc-field > span em {
    margin-left: 2px;
    color: var(--xc-danger);
    font-style: normal;
}

body.xc .xc-field input:not([type="checkbox"]):not([type="radio"]),
body.xc .xc-field select,
body.xc .xc-field textarea {
    width: 100%;
}

/* 旧样式会把表单里的单选、复选框也拉成整行宽，这里按原生尺寸还原 */
body.xc .xc-page input[type="checkbox"],
body.xc .xc-page input[type="radio"],
body.xc .xc-modal input[type="checkbox"],
body.xc .xc-modal input[type="radio"] {
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
    min-height: 0;
    margin: 0;
    padding: 0;
    box-shadow: none;
}

body.xc .xc-role input[type="radio"] {
    margin-top: 2px;
}

/* 组件自己写了 display，会把 hidden 属性盖掉；统一让 hidden 说了算 */
.xc-page [hidden],
.xc-modal [hidden],
.xc-modal[hidden] {
    display: none !important;
}

body.xc .xc-field textarea {
    min-height: 72px;
    padding: 6px 10px;
    resize: vertical;
}

.xc-field__hint {
    color: var(--xc-text-3);
    font-size: 12px;
    line-height: 18px;
}

.xc-field-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 16px;
}

.xc-readonly {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 32px;
    padding: 4px 10px;
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
    background: #f7f8fa;
    color: var(--xc-text-2);
    font-size: 14px;
}

.xc-roles {
    display: grid;
    gap: 8px;
}

.xc-role {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid var(--xc-line);
    border-radius: var(--xc-radius);
    cursor: pointer;
}

.xc-role:hover {
    border-color: var(--xc-brand);
}

.xc-role:has(input:checked) {
    border-color: var(--xc-brand);
    background: #f2f7ff;
}

.xc-role strong {
    display: block;
    color: var(--xc-text);
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
}

.xc-role small {
    display: block;
    color: var(--xc-text-2);
    font-size: 12px;
    line-height: 18px;
}

.xc-switch {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    cursor: pointer;
}

.xc-summary {
    margin: 0 0 16px;
    padding: 12px 14px;
    border-radius: var(--xc-radius);
    background: #f7f8fa;
    color: var(--xc-text-2);
    font-size: 13px;
    line-height: 22px;
}

.xc-summary strong {
    color: var(--xc-text);
    font-weight: 500;
}

/* 详情描述列表 */
.xc-desc {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 14px 24px;
    margin: 0;
}

.xc-desc__item {
    min-width: 0;
}

.xc-desc dt {
    color: var(--xc-text-2);
    font-size: 13px;
    line-height: 20px;
}

.xc-desc dd {
    margin: 2px 0 0;
    color: var(--xc-text);
    font-size: 14px;
    line-height: 22px;
    word-break: break-all;
}

.xc-form-narrow {
    max-width: 440px;
}

/* 仅在窄屏卡片化表格时显示的列名 */
.xc-th-inline {
    display: none;
}

/* ---------- 5. 未登录页（登录 / 注册 / 找回密码 / 微信注册） ---------- */
body.xc--guest .shell {
    max-width: 1200px;
}

body.xc--guest .login-shell {
    min-height: 0;
    padding: 24px 0;
    background: none;
}

body.xc--guest .login-card.panel {
    padding: 32px;
}

body.xc--guest .login-head__mark {
    background: var(--xc-brand-bg);
    color: var(--xc-brand);
}

body.xc .button--full {
    width: 100%;
}

/* ---------- 6. 窄屏 ---------- */
@media (max-width: 992px) {
    .xc--app .xc-main {
        margin-left: 0;
    }

    .xc-sidebar {
        width: min(260px, 82vw);
        transform: translateX(-100%);
        box-shadow: none;
    }

    .xc--drawer .xc-sidebar {
        transform: translateX(0);
        box-shadow: var(--xc-shadow-pop);
    }

    body.xc .shell {
        padding: 16px 12px;
    }

    .xc-user__role {
        display: none;
    }
}

@media (max-width: 720px) {
    .xc-brand__tag,
    .xc-user__name {
        display: none;
    }

    .xc-page__title {
        font-size: 18px;
    }

    .xc-toolbar {
        padding: 12px;
    }

    .xc-toolbar__left,
    .xc-toolbar__right,
    .xc-toolbar__right form {
        width: 100%;
    }

    .xc-toolbar__right select,
    .xc-search {
        flex: 1 1 140px;
    }

    body.xc .xc-search input {
        width: 100%;
    }

    .xc-tabs {
        padding: 0 12px;
        gap: 20px;
    }

    .xc-stats {
        grid-template-columns: repeat(2, 1fr);
    }

    .xc-stat {
        padding: 12px 14px;
    }

    .xc-stat + .xc-stat::before {
        display: none;
    }

    .xc-stat__value {
        font-size: 20px;
        line-height: 28px;
    }

    .xc-field-row {
        grid-template-columns: 1fr;
    }

    .xc-modal {
        padding: 16px 12px;
    }

    .xc-modal__head {
        padding: 16px 16px 0;
    }

    .xc-modal__body {
        padding: 12px 16px 4px;
    }

    .xc-modal__foot {
        padding: 12px 16px 16px;
    }

    .xc-pager {
        padding: 12px;
    }

    /* 表格卡片化：每行一张卡，列名写在单元格前面 */
    table.xc-table--stack thead {
        display: none;
    }

    table.xc-table--stack,
    table.xc-table--stack tbody,
    table.xc-table--stack tr,
    table.xc-table--stack td {
        display: block;
        width: 100%;
    }

    table.xc-table--stack tr {
        padding: 10px 12px;
        border-top: 1px solid var(--xc-line-soft);
    }

    table.xc-table--stack td,
    table.xc-table--stack td:first-child,
    table.xc-table--stack td:last-child {
        display: flex;
        gap: 12px;
        padding: 4px 0;
        border: 0;
    }

    table.xc-table--stack td[data-label]::before {
        content: attr(data-label);
        flex: 0 0 72px;
        color: var(--xc-text-3);
        font-size: 12px;
    }

    table.xc-table--stack td:empty {
        display: none;
    }

    table.xc-table--stack tbody tr:hover td {
        background: transparent;
    }

    .xc-ops {
        flex-wrap: wrap;
        gap: 8px 16px;
    }
}

/* ---------- 页面专用的少量补充 ---------- */
/* 操作日志：详情折叠块 */
.xc-log-detail summary {
    display: inline-block;
    margin-top: 2px;
    font-size: 12px;
    list-style: none;
    cursor: pointer;
}

.xc-log-detail summary::-webkit-details-marker {
    display: none;
}

.xc-log-detail pre {
    max-width: 640px;
    max-height: 240px;
    margin: 6px 0 0;
    padding: 8px 10px;
    overflow: auto;
    border-radius: var(--xc-radius);
    background: #f7f8fa;
    color: var(--xc-text-2);
    font-family: var(--xc-mono);
    font-size: 12px;
    line-height: 18px;
    white-space: pre-wrap;
    word-break: break-all;
}

/* 客户端授权 */
.xc-issued {
    margin-bottom: 16px;
    border: 1px solid #b3d4ff;
    background: #f2f7ff;
    box-shadow: none;
}

.xc-issued__code {
    display: block;
    margin: 10px 0;
    color: var(--xc-brand-active);
    font-family: var(--xc-mono);
    font-size: 22px;
    letter-spacing: 1px;
    word-break: break-all;
}

.xc-license__head {
    align-items: flex-start;
    flex-wrap: wrap;
    border-bottom: 0;
}

.xc-license__head .xc-tag {
    margin-left: 6px;
    vertical-align: 2px;
}

.xc-fold {
    border-top: 1px solid var(--xc-line-soft);
}

.xc-fold > summary {
    padding: 10px 20px;
    color: var(--xc-text-2);
    font-size: 13px;
    cursor: pointer;
}

.xc-fold > summary:hover {
    color: var(--xc-brand);
}

.xc-empty--compact {
    padding: 16px;
    font-size: 13px;
}

/* 登录卡片：按钮之间留出间距，图标居中 */
body.xc--guest .login-head__mark {
    margin-left: auto;
    margin-right: auto;
}

body.xc--guest .login-card .login-secondary-actions {
    margin-top: 12px;
}

body.xc--guest .login-card .stack-form {
    margin-top: 12px;
}

@media (max-width: 720px) {
    /* 用户、申请列表在手机上：标签类单元格并排，次要列收起 */
    table.xc-table--stack td.xc-sm-inline {
        display: inline-flex;
        width: auto;
        margin-right: 6px;
    }

    table.xc-table--stack td.xc-sm-inline::before {
        display: none;
    }

    table.xc-table--stack td.xc-sm-hide {
        display: none;
    }
}

/* 微信绑定提醒（登录后弹一次）：沿用它自己的结构，外观并入控制台弹窗 */
body.xc .wechat-binding-reminder {
    padding: 24px;
    border: 0;
    border-radius: var(--xc-radius);
    box-shadow: var(--xc-shadow-pop);
    color: var(--xc-text);
}

body.xc .wechat-binding-reminder::backdrop {
    background: rgba(0, 0, 0, 0.45);
}

body.xc .wechat-binding-reminder h2 {
    font-size: 16px;
    line-height: 24px;
}

body.xc .wechat-binding-reminder p {
    color: var(--xc-text-2);
    font-size: 14px;
    line-height: 22px;
}

body.xc .wechat-binding-reminder__actions {
    justify-content: flex-end;
}

body.xc .wechat-binding-reminder__actions .button {
    flex: 0 0 auto;
    min-height: 32px;
}

/* ---------- 登录页：默认只有微信扫码和「首次登录」 ---------- */
body.xc--guest .xc-login {
    width: min(400px, 100%);
    margin: 0 auto;
}

body.xc--guest .xc-login .login-head h1 {
    font-size: 22px;
}

body.xc--guest .xc-login .xc-login__main {
    min-height: 44px;
    font-size: 16px;
}

body.xc--guest .xc-login .button--full {
    min-height: 40px;
}

body.xc--guest .xc-login .compact-note {
    margin: 8px 0 0;
    color: rgba(0, 0, 0, 0.6);
    font-size: 13px;
    line-height: 20px;
}

.xc-login__divider {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 24px 0 12px;
    color: rgba(0, 0, 0, 0.4);
    font-size: 12px;
}

.xc-login__divider::before,
.xc-login__divider::after {
    content: "";
    flex: 1 1 auto;
    height: 1px;
    background: var(--xc-line-soft);
}

body.xc--guest .xc-login .xc-login__foot {
    margin-top: 20px;
    padding-top: 12px;
    border-top: 1px solid var(--xc-line-soft);
}

.xc-login__links {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 18px;
    margin-top: 16px;
    font-size: 13px;
}

.xc-login__links a {
    color: var(--xc-brand);
}

/* ---------- 日报归档 / 钻头使用 / 管理总览 ---------- */
.xc-tabs--page {
    padding-top: 2px;
}

.xc-split {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
    gap: 16px;
    align-items: start;
}

.xc-split--even {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    margin-top: 16px;
}

.xc-split > div > .xc-card + .xc-card,
.xc-page > .xc-card + .xc-split,
.xc-page > .xc-stats + .xc-card {
    margin-top: 16px;
}

.xc-page > .xc-card + .xc-stats {
    margin-top: 16px;
}

.xc-subtitle {
    margin: 0 0 8px;
    color: var(--xc-text);
    font-size: 14px;
    font-weight: 600;
    line-height: 22px;
}

.xc-desc--dense {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 8px 16px;
    margin-bottom: 16px;
}

.xc-checks {
    display: grid;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.xc-checks__item {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 13px;
    line-height: 20px;
}

.xc-checks__item .svg-icon {
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
    margin-top: 2px;
    color: var(--xc-brand);
}

.xc-checks__item--ok .svg-icon {
    color: var(--xc-success);
}

.xc-checks__item--warn {
    color: #a84a00;
}

.xc-checks__item--warn .svg-icon {
    color: var(--xc-warning);
}

.xc-raw {
    max-height: 560px;
    margin: 0;
    overflow: auto;
    color: var(--xc-text);
    font-family: var(--xc-font);
    font-size: 13px;
    line-height: 22px;
    white-space: pre-wrap;
    word-break: break-word;
}

.xc-table-wrap--scroll {
    max-height: 420px;
    overflow-y: auto;
}

table.xc-table--dense th,
table.xc-table--dense td {
    padding: 8px 10px;
}

table.xc-table tr.is-picked td {
    background: #f2f7ff;
}

.xc-notes {
    min-width: 180px;
    max-width: 320px;
    white-space: normal;
}

.xc-notes .xc-status {
    white-space: normal;
    align-items: flex-start;
}

.xc-notes .xc-status::before {
    flex: 0 0 auto;
    margin-top: 7px;
}

.xc-field-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 0 16px;
}

.xc-modal__dialog--lg {
    width: min(860px, 100%);
}

.xc-question {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 16px;
    padding: 10px 0;
    border-bottom: 1px solid var(--xc-line-soft);
    font-size: 13px;
    line-height: 20px;
}

.xc-question:last-child {
    border-bottom: 0;
}

.xc-stat__value small {
    color: var(--xc-text-2);
    font-size: 13px;
    font-weight: 400;
}

.xc-inline-form {
    display: inline-flex;
    margin: 0;
}

.xc-visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    border: 0;
}

.xc-brief__cols {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 8px 32px;
}

.xc-brief p {
    margin: 0 0 8px;
    color: var(--xc-text);
    font-size: 14px;
    line-height: 24px;
}

.xc-brief__empty {
    color: var(--xc-text-2) !important;
}

/* 首页概览 */
.xc-entries {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
}

.xc-entry {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 16px;
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
    background: #ffffff;
    color: var(--xc-text);
    text-decoration: none;
}

.xc-entry:hover,
.xc-entry:focus-visible {
    border-color: var(--xc-brand);
    outline: none;
}

.xc-entry .svg-icon {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    margin-top: 2px;
    color: var(--xc-brand);
}

.xc-entry strong {
    display: block;
    font-size: 14px;
    font-weight: 600;
    line-height: 22px;
}

.xc-entry span {
    display: block;
    color: var(--xc-text-2);
    font-size: 12px;
    line-height: 18px;
}

.xc-cta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 24px;
}

.xc-cta p {
    margin: 4px 0 0;
    color: var(--xc-text-2);
    font-size: 13px;
    line-height: 20px;
}

.xc-cta h2 {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    line-height: 24px;
}

/* 平台介绍等公开页的正文卡片并入同一套留白 */
body.xc .public-info {
    border-radius: var(--xc-radius);
    box-shadow: var(--xc-shadow-card);
}

@media (max-width: 992px) {
    .xc-split,
    .xc-split--even {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 720px) {
    .xc-page__actions {
        width: 100%;
    }

    /* 旧页面里按固定宽度排的网格在手机上会把页面撑出横向滚动条，统一收成单列 */
    body.xc .shell [class*="grid"] {
        min-width: 0;
    }

    body.xc .shell img,
    body.xc .shell svg:not(.svg-icon),
    body.xc .shell pre,
    body.xc .shell table {
        max-width: 100%;
    }
}

/* 工具栏里的输入框按内容宽，不撑满一行（旧样式给 input 写了 width:100%） */
body.xc .xc-toolbar input[type="date"],
body.xc .xc-toolbar input[type="text"],
body.xc .xc-page__actions input[type="date"] {
    width: auto;
}

body.xc .xc-toolbar .xc-switch {
    white-space: nowrap;
}

@media (max-width: 720px) {
    /* 设计套件页的接口表比手机屏宽：表格自己横向滚动，不把整页撑宽 */
    body.xc .studio-api-table {
        display: block;
        max-width: 100%;
        overflow-x: auto;
    }
}

.xc-secret {
    display: inline-block;
    margin-right: 8px;
    padding: 2px 10px;
    border: 1px dashed var(--xc-line);
    border-radius: var(--xc-radius);
    background: #f7f8fa;
    font-size: 18px;
    letter-spacing: 1px;
    user-select: all;
}

@media (max-width: 720px) {
    /* 这张表在旧样式里写了 min-width: 820px，要一并放开才滚得起来 */
    body.xc .studio-api-table {
        min-width: 0;
    }
}

/* 平台介绍页“关于星通”：名称较长，名称与说明上下排 */
body.xc .public-info h2 + .public-info__facts dt {
    font-weight: 600;
}

/* ---------- 管理看板（S级 / 管理员首页） ---------- */
.xc-exec-hero {
    margin-bottom: 16px;
    padding: 24px 28px 22px;
    border-radius: 6px;
    background: linear-gradient(120deg, #0a1f44 0%, #0d3a8a 58%, #1257c9 100%);
    color: #ffffff;
    box-shadow: 0 6px 20px rgba(10, 31, 68, 0.18);
}

.xc-exec-hero__top {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px 24px;
}

.xc-exec-hero__eyebrow {
    margin: 0 0 6px;
    color: rgba(255, 255, 255, 0.62);
    font-size: 12px;
    letter-spacing: 2px;
}

body.xc .xc-exec-hero__title {
    margin: 0;
    color: #ffffff;
    font-size: 24px;
    font-weight: 600;
    line-height: 34px;
}

.xc-exec-hero__meta {
    margin: 6px 0 0;
    color: rgba(255, 255, 255, 0.72);
    font-size: 13px;
    line-height: 20px;
}

.xc-exec-hero__nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.xc-exec-hero__nav form {
    margin: 0;
}

.xc-exec-chip,
body.xc .xc-exec-date {
    height: 32px;
    min-height: 32px;
    padding: 0 12px;
    display: inline-flex;
    align-items: center;
    border: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: var(--xc-radius);
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff;
    font-size: 13px;
    text-decoration: none;
    color-scheme: dark;
}

body.xc .xc-exec-date {
    width: auto;
}

.xc-exec-chip:hover,
body.xc .xc-exec-date:hover {
    border-color: rgba(255, 255, 255, 0.6);
    background: rgba(255, 255, 255, 0.16);
}

.xc-exec-chip--solid {
    border-color: #ffffff;
    background: #ffffff;
    color: #0d3a8a;
}

.xc-exec-kpis {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-top: 20px;
}

.xc-exec-kpi {
    padding: 14px 16px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.08);
}

.xc-exec-kpi__label {
    color: rgba(255, 255, 255, 0.7);
    font-size: 13px;
    line-height: 20px;
}

.xc-exec-kpi__value {
    margin-top: 4px;
    font-size: 30px;
    font-weight: 600;
    line-height: 38px;
    font-variant-numeric: tabular-nums;
}

.xc-exec-kpi__value small {
    margin-left: 4px;
    color: rgba(255, 255, 255, 0.7);
    font-size: 13px;
    font-weight: 400;
}

.xc-exec-kpi__value .xc-sub {
    color: rgba(255, 255, 255, 0.7);
}

.xc-exec-kpi__sep {
    margin: 0 8px;
    color: rgba(255, 255, 255, 0.4);
    font-weight: 300;
}

.xc-exec-kpi__none {
    color: rgba(255, 255, 255, 0.7);
    font-size: 18px;
    font-weight: 400;
}

.xc-exec-kpi__foot {
    margin-top: 4px;
    color: rgba(255, 255, 255, 0.62);
    font-size: 12px;
    line-height: 18px;
}

.xc-exec-kpi__foot a {
    color: #ffffff;
    text-decoration: underline;
}

.xc-exec-kpi__foot .is-up {
    color: #6ee7a8;
}

.xc-exec-kpi__foot .is-down {
    color: #ffb38a;
}

.xc-exec-row {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 3fr);
    gap: 16px;
    align-items: stretch;
    margin-bottom: 16px;
}

.xc-exec-row > .xc-card + .xc-card {
    margin-top: 0;
}

.xc-exec > .xc-card,
.xc-exec > .xc-split {
    margin-top: 16px;
}

.xc-exec-brief__cols {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 16px 28px;
}

.xc-exec-brief__col {
    padding-left: 14px;
    border-left: 3px solid #c9d3e6;
}

.xc-exec-brief__col--today {
    border-left-color: var(--xc-brand);
}

.xc-exec-brief__col h3 {
    margin: 0 0 8px;
    color: var(--xc-text);
    font-size: 15px;
    font-weight: 600;
    line-height: 22px;
}

.xc-exec-chart {
    height: 250px;
}

.xc-exec-empty {
    padding: 28px 16px;
    border: 1px dashed var(--xc-line);
    border-radius: 6px;
    background: #fafbfc;
    text-align: center;
}

.xc-exec-empty strong {
    display: block;
    color: var(--xc-text);
    font-size: 15px;
    font-weight: 600;
    line-height: 24px;
}

.xc-exec-empty p {
    max-width: 520px;
    margin: 6px auto 0;
    color: var(--xc-text-2) !important;
    font-size: 13px !important;
    line-height: 20px !important;
}

.xc-exec-empty--chart {
    min-height: 250px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.xc-exec-empty--table {
    margin: 12px 0;
    border: 0;
    background: transparent;
}

.xc-exec-projects {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 12px;
}

.xc-exec-project {
    display: block;
    padding: 16px;
    border: 1px solid var(--xc-line-soft);
    border-radius: 6px;
    background: #ffffff;
    color: var(--xc-text);
    text-decoration: none;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.xc-exec-project:hover,
.xc-exec-project:focus-visible {
    border-color: var(--xc-brand);
    box-shadow: 0 4px 14px rgba(0, 110, 255, 0.1);
    outline: none;
}

.xc-exec-project__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.xc-exec-project__head strong {
    overflow: hidden;
    font-size: 15px;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xc-exec-project__num {
    margin-top: 10px;
    font-size: 28px;
    font-weight: 600;
    line-height: 36px;
    font-variant-numeric: tabular-nums;
}

.xc-exec-project__num small {
    margin-left: 4px;
    color: var(--xc-text-2);
    font-size: 13px;
    font-weight: 400;
}

.xc-exec-project__none {
    color: var(--xc-text-3);
}

.xc-exec-bar {
    height: 4px;
    margin: 8px 0 12px;
    border-radius: 2px;
    background: #eef0f4;
}

.xc-exec-bar span {
    display: block;
    height: 100%;
    border-radius: 2px;
    background: linear-gradient(90deg, #2b8aff, #006eff);
}

.xc-exec-project__meta {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px 12px;
    margin: 0;
}

.xc-exec-project__meta div {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 12px;
    line-height: 20px;
}

.xc-exec-project__meta dt {
    color: var(--xc-text-2);
}

.xc-exec-project__meta dd {
    margin: 0;
    color: var(--xc-text);
}

.xc-exec-project__people {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 12px;
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid var(--xc-line-soft);
    font-size: 12px;
    line-height: 20px;
}

.xc-exec-project__people .svg-icon {
    width: 12px;
    height: 12px;
    vertical-align: -1px;
    color: var(--xc-text-2);
}

.xc-exec-project__people em {
    padding: 0 4px;
    border-radius: 2px;
    background: var(--xc-warning-bg);
    color: #a84a00;
    font-style: normal;
}

.xc-exec-facts {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--xc-line-soft);
}

.xc-exec-facts strong {
    display: block;
    color: var(--xc-text);
    font-size: 22px;
    font-weight: 600;
    line-height: 30px;
    font-variant-numeric: tabular-nums;
}

.xc-exec-facts span {
    color: var(--xc-text-2);
    font-size: 12px;
}

@media (max-width: 1100px) {
    .xc-exec-row {
        grid-template-columns: minmax(0, 1fr);
    }

    .xc-exec-kpis {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 720px) {
    .xc-exec-hero {
        padding: 18px 16px;
    }

    body.xc .xc-exec-hero__title {
        font-size: 20px;
        line-height: 28px;
    }

    .xc-exec-kpi__value {
        font-size: 24px;
        line-height: 32px;
    }

    .xc-exec-hero__nav {
        width: 100%;
    }
}

body.xc .xc-exec-hero input.xc-exec-date,
body.xc .xc-exec-hero input.xc-exec-date:hover,
body.xc .xc-exec-hero input.xc-exec-date:focus {
    border-color: rgba(255, 255, 255, 0.28);
    background-color: rgba(255, 255, 255, 0.08);
    box-shadow: none;
    color: #ffffff;
}


/* ---------------------------------------------------------------- 现场资料：列表、照片墙、上传 */
.xc-count {
    margin-left: 2px;
    color: var(--xc-text-3);
    font-size: 12px;
    font-variant-numeric: tabular-nums;
}

.xc-tabs__item.is-active .xc-count {
    color: var(--xc-brand);
}

.xc-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 14px;
    padding: 16px 20px 20px;
}

.xc-gallery--compact {
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
}

.xc-shot {
    display: flex;
    flex-direction: column;
    min-width: 0;
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
    background: var(--xc-card);
    color: inherit;
    text-decoration: none;
    overflow: hidden;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.xc-shot:hover,
.xc-shot:focus-visible {
    border-color: var(--xc-brand);
    box-shadow: var(--xc-shadow-pop);
}

.xc-shot.is-muted {
    opacity: 0.55;
}

.xc-shot__img {
    display: block;
    aspect-ratio: 4 / 3;
    background: #eef0f4;
}

.xc-shot__img img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.xc-shot__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 9px 12px 11px;
    min-width: 0;
}

.xc-shot__title {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
    font-weight: 600;
    line-height: 22px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.xc-shot__body .xc-sub {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.xc-filecell {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    color: inherit;
    text-decoration: none;
}

.xc-filecell > span:last-child {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.xc-filecell__name {
    max-width: 280px;
    color: var(--xc-brand);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.xc-filecell:hover .xc-filecell__name {
    text-decoration: underline;
}

.xc-filecell__thumb {
    flex: none;
    width: 56px;
    height: 42px;
    border-radius: 3px;
    object-fit: cover;
    background: #eef0f4;
}

.xc-filecell__icon {
    position: relative;
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 42px;
    border-radius: 3px;
    background: var(--xc-brand-bg);
    color: var(--xc-brand);
}

.xc-filecell__icon em {
    position: absolute;
    right: 3px;
    bottom: 2px;
    font-style: normal;
    font-size: 10px;
    font-weight: 600;
    line-height: 12px;
    text-transform: uppercase;
}

.xc-filecell__icon--lg {
    width: 84px;
    height: 64px;
}

.xc-filecell__icon--lg .svg-icon {
    width: 26px;
    height: 26px;
}

.xc-filecard {
    display: flex;
    align-items: flex-start;
    gap: 16px;
}

.xc-filecard__name {
    font-size: 16px;
    font-weight: 600;
    line-height: 24px;
    word-break: break-all;
}

.xc-filecard__note {
    margin: 10px 0 0;
    color: var(--xc-text-2);
}

.xc-photo {
    display: block;
    background: #14171c;
    text-align: center;
}

.xc-photo img {
    display: inline-block;
    max-width: 100%;
    max-height: 70vh;
    vertical-align: top;
}

.xc-card__foot {
    padding: 10px 20px;
    border-top: 1px solid var(--xc-line-soft);
}

.xc-desc--single {
    grid-template-columns: 1fr;
    gap: 12px;
}

.xc-break {
    word-break: break-all;
}

.xc-filelist,
.xc-tips,
.xc-uplist {
    margin: 0;
    padding: 0;
    list-style: none;
}

.xc-filelist li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 0;
    border-bottom: 1px solid var(--xc-line-soft);
}

.xc-filelist li:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}

.xc-filelist li:first-child {
    padding-top: 0;
}

.xc-filelist a {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
    text-decoration: none;
}

.xc-filelist__name {
    color: var(--xc-brand);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.xc-filelist .xc-sub {
    flex: none;
}

.xc-tips li {
    position: relative;
    padding: 0 0 8px 14px;
    color: var(--xc-text-2);
    line-height: 22px;
}

.xc-tips li::before {
    content: "";
    position: absolute;
    left: 2px;
    top: 9px;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--xc-brand);
}

.xc-tips li:last-child {
    padding-bottom: 0;
}

.xc-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 16px;
}

.xc-form-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 16px;
}

.xc-kindpick {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.xc-kindpick__item {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 11px 12px;
    border: 1px solid var(--xc-line);
    border-radius: var(--xc-radius);
    background: var(--xc-card);
    cursor: pointer;
    transition: border-color 0.15s, background-color 0.15s;
}

.xc-kindpick__item:hover {
    border-color: var(--xc-brand-hover);
}

body.xc .xc-kindpick__item input[type="radio"] {
    flex: none;
    width: 16px;
    height: 16px;
    margin: 3px 0 0;
}

.xc-kindpick__item:has(input:checked) {
    border-color: var(--xc-brand);
    background: var(--xc-brand-bg);
}

.xc-kindpick__item span {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.xc-kindpick__item strong {
    font-weight: 600;
    line-height: 22px;
}

.xc-kindpick__item small {
    color: var(--xc-text-3);
    font-size: 12px;
    line-height: 18px;
}

.xc-drop {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 22px 16px;
    border: 1px dashed var(--xc-line);
    border-radius: var(--xc-radius);
    background: #fafbfc;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.15s, background-color 0.15s;
}

.xc-drop:hover,
.xc-drop.is-over,
.xc-drop:focus-within {
    border-color: var(--xc-brand);
    background: var(--xc-brand-bg);
}

.xc-drop input[type="file"] {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.xc-drop__icon {
    color: var(--xc-brand);
}

.xc-drop__icon .svg-icon {
    width: 26px;
    height: 26px;
}

.xc-drop__text strong {
    color: var(--xc-brand);
    font-weight: 600;
}

.xc-uplist {
    margin-top: 10px;
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
}

.xc-uplist li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 7px 12px;
    border-bottom: 1px solid var(--xc-line-soft);
    font-size: 13px;
}

.xc-uplist li:last-child {
    border-bottom: 0;
}

.xc-uplist li span:first-child {
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.xc-uplist li span:last-child {
    flex: none;
    color: var(--xc-text-3);
}

.xc-uplist li.is-bad span:last-child {
    color: var(--xc-danger);
}

.xc-uplist li.is-total {
    background: #fafbfc;
    font-weight: 600;
}

.xc-progress {
    position: relative;
    height: 22px;
    margin-top: 14px;
    border-radius: 11px;
    background: #eef0f4;
    overflow: hidden;
}

.xc-progress__bar {
    width: 0;
    height: 100%;
    background: var(--xc-brand);
    transition: width 0.2s;
}

.xc-progress__text {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    color: var(--xc-text);
    mix-blend-mode: multiply;
}

.xc-shot__img {
    position: relative;
}

.xc-shot__n {
    position: absolute;
    right: 6px;
    bottom: 6px;
    padding: 1px 7px;
    border-radius: 9px;
    background: rgba(0, 0, 0, 0.62);
    color: #ffffff;
    font-style: normal;
    font-size: 12px;
    line-height: 18px;
}

.xc-recsum {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.xc-recsum > span {
    display: flex;
    flex-wrap: wrap;
    gap: 2px 10px;
    min-width: 0;
}

.xc-recsum__note {
    flex-basis: 100%;
    max-width: 320px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.xc-kindfields {
    margin: 6px 0 14px;
    padding: 12px 14px 2px;
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
    background: #fafbfc;
    min-width: 0;
}

.xc-kindfields[hidden] {
    display: none;
}

.xc-kindfields legend {
    padding: 0 6px;
    color: var(--xc-text-2);
    font-size: 13px;
    font-weight: 600;
}

.xc-form-grid__wide {
    grid-column: 1 / -1;
}

body.xc textarea.xc-mono {
    font-family: var(--xc-mono);
    font-size: 12px;
    line-height: 18px;
    white-space: pre;
    overflow: auto;
    tab-size: 12;
}

.xc-photos {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 8px;
    padding: 12px;
    background: #14171c;
}

.xc-photos__item {
    margin: 0;
}

.xc-photos__item:only-child {
    grid-column: 1 / -1;
    text-align: center;
}

.xc-photos__item img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: 2px;
}

.xc-photos__item:only-child img {
    display: inline-block;
    width: auto;
    max-width: 100%;
    max-height: 68vh;
    aspect-ratio: auto;
    object-fit: contain;
}

.xc-longtext {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--xc-line-soft);
}

.xc-longtext__label {
    margin-bottom: 4px;
    color: var(--xc-text-3);
    font-size: 12px;
}

.xc-longtext p {
    margin: 0;
    white-space: pre-wrap;
    word-break: break-word;
}

.xc-datatable {
    max-height: 420px;
}

.xc-datatable--tall {
    max-height: 72vh;
}

.xc-datatable .xc-table th {
    position: sticky;
    top: 0;
    z-index: 1;
    white-space: nowrap;
}

.xc-datatable .xc-table td {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.xc-inline-form {
    display: inline;
}

button.xc-link {
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    cursor: pointer;
}

.xc-link--danger {
    color: var(--xc-danger);
}

.xc-filecell__name--plain {
    color: inherit;
}

.xc-filelist--boxed {
    padding: 4px 12px;
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
}

.xc-filelist--boxed li {
    padding: 8px 0;
}

.xc-filelist a .xc-filecell__thumb {
    width: 40px;
    height: 30px;
}

@media (max-width: 720px) {
    .xc-gallery {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
        padding: 12px;
    }

    .xc-form-grid,
    .xc-kindpick {
        grid-template-columns: 1fr;
    }

    .xc-filecell__name {
        max-width: 190px;
    }

    .xc-filecard {
        flex-direction: column;
    }
}


/* ---------------------------------------------------------------- 使用引导（右下角，不挡操作）与“更多工具”折叠组 */
.xc-guide {
    position: fixed;
    right: 20px;
    bottom: 20px;
    z-index: 60;
    width: 360px;
    max-width: calc(100vw - 24px);
    border: 1px solid var(--xc-line);
    border-top: 3px solid var(--xc-brand);
    border-radius: 6px;
    background: var(--xc-card);
    box-shadow: 0 8px 28px rgba(31, 35, 41, 0.22);
    color: var(--xc-text);
}

.xc-guide--news {
    border-top-color: var(--xc-warning);
}

.xc-guide__head {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 12px 0 16px;
}

.xc-guide__badge {
    flex: none;
    padding: 0 6px;
    border-radius: 2px;
    background: var(--xc-brand-bg);
    color: var(--xc-brand-active);
    font-size: 12px;
    line-height: 20px;
}

.xc-guide--news .xc-guide__badge {
    background: var(--xc-warning-bg);
    color: #b34d00;
}

.xc-guide__title {
    flex: 1;
    min-width: 0;
    font-size: 14px;
    font-weight: 600;
    line-height: 22px;
}

.xc-guide__close {
    flex: none;
    width: 28px;
    height: 28px;
    border: 0;
    border-radius: 4px;
    background: none;
    color: var(--xc-text-3);
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

.xc-guide__close:hover {
    background: var(--xc-hover);
    color: var(--xc-text);
}

.xc-guide__body {
    padding: 10px 16px 4px;
    max-height: 46vh;
    overflow: auto;
}

.xc-guide__count {
    color: var(--xc-text-3);
    font-size: 12px;
    line-height: 18px;
}

body.xc .xc-guide__step {
    margin: 2px 0 6px;
    font-size: 15px;
    font-weight: 600;
    line-height: 24px;
}

.xc-guide__text {
    margin: 0;
    color: var(--xc-text-2);
    font-size: 13px;
    line-height: 22px;
}

.xc-guide__foot {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 16px 14px;
}

.xc-guide__skip {
    padding: 0;
    border: 0;
    background: none;
    color: var(--xc-text-3);
    font: inherit;
    font-size: 13px;
    cursor: pointer;
}

.xc-guide__skip:hover {
    color: var(--xc-brand);
}

.xc-guide__dots {
    flex: 1;
    display: flex;
    justify-content: center;
    gap: 5px;
}

.xc-guide__dots i {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--xc-line);
}

.xc-guide__dots i.is-on {
    background: var(--xc-brand);
}

.xc-topbar__help {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-right: 6px;
}

.xc-topbar__help .svg-icon {
    width: 16px;
    height: 16px;
}

.xc-guidesteps {
    margin: 0;
    padding: 14px 20px 6px 40px;
}

.xc-guidesteps li {
    padding: 0 0 10px 4px;
    line-height: 22px;
}

.xc-guidesteps li::marker {
    color: var(--xc-brand);
    font-weight: 600;
}

.xc-guidesteps p {
    margin: 2px 0 0;
    color: var(--xc-text-2);
}

.xc-guidecard .xc-card__title {
    display: flex;
    align-items: center;
    gap: 8px;
}

.xc-menu__more > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    list-style: none;
    user-select: none;
}

.xc-menu__more > summary::-webkit-details-marker {
    display: none;
}

.xc-menu__more > summary:hover {
    color: var(--xc-text);
}

.xc-menu__more > summary .xc-caret {
    margin-right: 12px;
    transition: transform 0.15s;
    opacity: 0.7;
}

.xc-menu__more[open] > summary .xc-caret {
    transform: rotate(180deg);
}

@media (max-width: 720px) {
    .xc-guide {
        right: 8px;
        left: 8px;
        bottom: 8px;
        width: auto;
        max-width: none;
    }

    .xc-topbar__help span {
        display: none;
    }
}

@media (min-width: 993px) {
    /* 收起成图标栏时，“更多工具”的标题留一个可点的小箭头，不然折叠着的入口就点不开了 */
    .xc--mini .xc-menu__more > summary.xc-menu__title {
        height: 26px;
        margin: 4px 0 0;
        padding: 0;
        justify-content: center;
        background: none;
        color: transparent;
        font-size: 0;
        border-top: 1px solid var(--xc-line-soft);
    }

    .xc--mini .xc-menu__more > summary .xc-caret {
        margin: 0;
        color: var(--xc-text-3);
    }
}

.xc-guide [hidden] {
    display: none !important;
}


/* ---------------------------------------------------------------- 设计任务 */
.xc-loadgrid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
}

.xc-loadcard {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 12px 14px;
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
    color: inherit;
    text-decoration: none;
}

.xc-loadcard:hover,
.xc-loadcard.is-active {
    border-color: var(--xc-brand);
    background: var(--xc-brand-bg);
}

.xc-loadcard__nums {
    margin-top: 4px;
    color: var(--xc-text-2);
    font-size: 13px;
}

.xc-loadcard__nums b {
    color: var(--xc-text);
    font-weight: 600;
}

.xc-checkgrid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 6px 12px;
}

.xc-hints {
    margin-top: 10px;
    padding: 10px 14px;
    border: 1px solid #ffdfb8;
    border-radius: var(--xc-radius);
    background: var(--xc-warning-bg);
}

.xc-hints summary {
    cursor: pointer;
    font-weight: 600;
}

.xc-hints ul {
    margin: 8px 0 0;
    padding-left: 18px;
    line-height: 22px;
}


/* ---------------------------------------------------------------- 井档案与数值曲线 */
.xc-wellfacts {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 12px;
}

.xc-wellfacts > div {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.xc-wellfacts strong {
    font-size: 22px;
    font-weight: 600;
    line-height: 30px;
    font-variant-numeric: tabular-nums;
}

.xc-wellfacts span {
    color: var(--xc-text-3);
    font-size: 12px;
}

.xc-depthchart {
    width: 100%;
    min-height: 120px;
}

.xc-depthchart.is-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 120px;
    padding: 18px;
    border: 1px dashed var(--xc-line);
    border-radius: var(--xc-radius);
    background: #fafbfc;
    color: var(--xc-text-3);
    line-height: 22px;
    text-align: center;
}

.xc-shotrow {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.xc-shot--mini {
    width: 96px;
}

.xc-shot--mini .xc-shot__body {
    padding: 4px 6px 5px;
}

.xc-shot--mini .xc-shot__body .xc-sub {
    font-size: 11px;
}

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

.xc-plots img {
    display: block;
    width: 100%;
    border: 1px solid var(--xc-line-soft);
    border-radius: var(--xc-radius);
    background: #ffffff;
}

.xc-joblist {
    margin: 0;
    padding: 0;
    list-style: none;
}

.xc-joblist > li {
    padding: 10px 0;
    border-bottom: 1px solid var(--xc-line-soft);
}

.xc-joblist > li:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}

.xc-joblist > li:first-child {
    padding-top: 0;
}

.xc-joblist__head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 8px;
}

.xc-joblist__sets {
    margin: 6px 0 0;
    padding-left: 18px;
    line-height: 24px;
}

.xc-joblist details {
    margin-top: 8px;
}

.xc-joblist summary {
    cursor: pointer;
    color: var(--xc-brand);
}


.xc-calib {
    position: relative;
    display: inline-block;
    max-width: 100%;
    border: 1px solid var(--xc-line-soft);
    line-height: 0;
}

.xc-calib img {
    display: block;
    max-width: 100%;
    height: auto;
}

.xc-calib__row {
    position: absolute;
    left: 0;
    right: 0;
    height: 0;
    border-top: 1.5px solid var(--xc-danger);
}

.xc-calib__row em {
    position: absolute;
    left: 2px;
    top: -18px;
    padding: 0 4px;
    background: var(--xc-danger);
    color: #ffffff;
    font-style: normal;
    font-size: 12px;
    line-height: 16px;
}

.xc-calib__track {
    position: absolute;
    top: 0;
    bottom: 0;
    border-left: 1.5px dashed var(--xc-brand);
    border-right: 1.5px dashed var(--xc-brand);
    pointer-events: none;
}

.xc-calib__track em {
    position: absolute;
    right: 2px;
    bottom: 2px;
    padding: 0 4px;
    background: var(--xc-brand);
    color: #ffffff;
    font-style: normal;
    font-size: 11px;
    line-height: 15px;
}

/* ------------------------------------------------------------------ 工作台（/workbench）
   原页面是多轮旧主题叠出来的：页签用 sticky + inline-flex 压住正文，井选择排在井内容下面，账号安全夹在中间。
   这里整页重排后给一套自洽的样式，全部限定在 .xc-wb 内，不影响别的旧页面。 */
body.xc .xc-wb { display: block; max-width: 1320px; }
body.xc .xc-wb .workspace__main { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; min-width: 0; }
body.xc .xc-wb .panel { margin: 0; border: 0; border-radius: var(--xc-radius); background: var(--xc-card); box-shadow: var(--xc-shadow-card); }
body.xc .xc-wb .flash { margin: 0; }

.xc-wb__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.xc-wb__title h1 { margin: 0; font-size: 20px; line-height: 28px; font-weight: 600; color: var(--xc-text); }
.xc-wb__title p { margin: 4px 0 0; font-size: 13px; line-height: 20px; color: var(--xc-text-2); }
.xc-wb__picker { flex: 0 1 460px; min-width: 280px; margin: 0; }
.xc-wb__picker-row { display: flex; gap: 8px; }
.xc-wb__picker-field { position: relative; flex: 1; min-width: 0; display: block; margin: 0; }
.xc-wb__picker-icon { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); display: flex; color: var(--xc-text-3); pointer-events: none; }
.xc-wb__picker-icon .svg-icon { width: 16px; height: 16px; }
body.xc .xc-wb__picker-field input[type="text"] { width: 100%; height: 36px; padding: 0 12px 0 34px !important; border: 1px solid var(--xc-line); border-radius: var(--xc-radius); background: #fff; font-size: 14px; box-shadow: none; }
body.xc .xc-wb__picker-field input:focus { border-color: var(--xc-brand); outline: 0; box-shadow: 0 0 0 2px var(--xc-brand-bg); }
body.xc .xc-wb__picker .button { flex: 0 0 auto; height: 36px; min-height: 36px; padding: 0 20px; white-space: nowrap; }
body.xc .xc-wb__recent { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: -6px 0 0; padding: 0; background: none; box-shadow: none; font-size: 12px; color: var(--xc-text-3); }
body.xc .xc-wb__recent .well-recent-bar__label { color: var(--xc-text-3); font-weight: 400; }
body.xc .xc-wb__recent .well-recent-bar__chips { display: flex; gap: 6px; flex-wrap: wrap; }
body.xc .xc-wb .well-recent-chip { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border: 1px solid var(--xc-line); border-radius: 12px; background: #fff; color: var(--xc-text-2); font-size: 12px; text-decoration: none; }
body.xc .xc-wb .well-recent-chip:hover { border-color: var(--xc-brand); color: var(--xc-brand); }

.xc-wb__well { padding: 0; border-radius: var(--xc-radius); background: var(--xc-card); box-shadow: var(--xc-shadow-card); }
.xc-wb__well-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 16px 24px; border-bottom: 1px solid var(--xc-line-soft); }
/* 基本信息：标签—值成对的描述列表（TDesign 详情页模板第一块的做法），四列，窄屏两列 */
.xc-wb__desc { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px 24px; margin: 0; padding: 20px 24px; }
.xc-wb__desc > div { min-width: 0; }
.xc-wb__desc dt { margin: 0 0 4px; font-size: 12px; line-height: 20px; color: var(--xc-text-3); }
.xc-wb__desc dd { margin: 0; font-size: 14px; line-height: 22px; color: var(--xc-text); overflow-wrap: anywhere; }
.xc-wb__desc dd code { font-family: var(--xc-mono); font-size: 13px; background: var(--xc-hover); padding: 1px 6px; border-radius: 2px; }
.xc-wb__todo { color: var(--xc-warning); }
/* 闭环阶段：步骤条 */
.xc-wb__steps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; margin: 0; padding: 0; list-style: none; counter-reset: none; }
.xc-wb__step { position: relative; display: grid; grid-template-columns: 24px minmax(0, 1fr); grid-template-areas: "dot label" "dot pct"; column-gap: 8px; align-items: center; padding-right: 16px; }
.xc-wb__step::after { content: ""; position: absolute; top: 11px; left: 32px; right: 4px; height: 1px; background: var(--xc-line); z-index: 0; }
.xc-wb__step:last-child::after { display: none; }
.xc-wb__step-dot { grid-area: dot; position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; border: 1px solid var(--xc-line); border-radius: 50%; background: #fff; color: var(--xc-text-3); font-size: 12px; align-self: start; }
.xc-wb__step-dot .svg-icon { width: 14px; height: 14px; }
.xc-wb__step-label { grid-area: label; position: relative; z-index: 1; justify-self: start; padding-right: 8px; background: var(--xc-card); font-size: 14px; line-height: 22px; color: var(--xc-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.xc-wb__step-pct { grid-area: pct; font-size: 12px; line-height: 20px; color: var(--xc-text-3); }
.xc-wb__step.is-partial .xc-wb__step-dot { border-color: var(--xc-brand); color: var(--xc-brand); }
.xc-wb__step.is-partial .xc-wb__step-label { color: var(--xc-text); }
.xc-wb__step.is-partial .xc-wb__step-pct { color: var(--xc-brand); }
.xc-wb__step.is-done .xc-wb__step-dot { border-color: var(--xc-brand); background: var(--xc-brand); color: #fff; }
.xc-wb__step.is-done .xc-wb__step-label { color: var(--xc-text); }
.xc-wb__count { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 18px; margin-left: 2px; padding: 0 6px; border-radius: 9px; background: var(--xc-hover); color: var(--xc-text-2); font-size: 12px; font-weight: 400; font-variant-numeric: tabular-nums; }
body.xc .xc-wb__notebook .notebook__tab.is-active .xc-wb__count { background: var(--xc-brand-bg); color: var(--xc-brand); }
.xc-wb__well-main { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; min-width: 0; }
.xc-wb__eyebrow { font-size: 12px; color: var(--xc-text-3); }
.xc-wb__well-main h2 { margin: 0; font-size: 18px; line-height: 26px; font-weight: 600; color: var(--xc-text); overflow-wrap: anywhere; }
.xc-wb__chips { display: flex; gap: 6px; flex-wrap: wrap; }
.xc-wb__well-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.xc-wb__well-actions form { margin: 0; }
body.xc .button.button--danger-quiet { border-color: transparent; background: transparent; color: var(--xc-text-3); box-shadow: none; }
body.xc .button.button--danger-quiet:hover { color: var(--xc-danger); background: var(--xc-danger-bg); }

/* 闭环摘要：分数、钻头情况、下一步、常用入口排成一行 */
body.xc .xc-wb .wb-hero { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; padding: 0; overflow: hidden; }
body.xc .xc-wb .wb-hero__main { display: flex; align-items: stretch; gap: 0; padding: 0; border: 0; }
body.xc .xc-wb .wb-hero__score { flex: 0 0 168px; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 2px; margin: 0; padding: 18px 20px; border: 0; border-right: 1px solid var(--xc-line-soft); border-radius: 0; background: none; text-align: left; }
body.xc .xc-wb .wb-hero__score-label { font-size: 12px; color: var(--xc-text-3); letter-spacing: 0; }
body.xc .xc-wb .wb-hero__score-num { font-size: 32px; line-height: 40px; font-weight: 600; color: var(--xc-text); font-variant-numeric: tabular-nums; }
body.xc .xc-wb .wb-hero__score-num span { font-size: 13px; font-weight: 400; color: var(--xc-text-3); margin-left: 2px; }
body.xc .xc-wb .wb-hero__score-health { display: inline-flex; padding: 0 8px; height: 20px; align-items: center; border-radius: 2px; background: var(--xc-hover); color: var(--xc-text-2); font-size: 12px; }
body.xc .xc-wb .wb-hero__info { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 16px; padding: 20px 24px; }
body.xc .xc-wb .wb-hero__info-row { display: flex; gap: 8px 20px; flex-wrap: wrap; }
body.xc .xc-wb .wb-hero__chip { padding: 0; border: 0; background: none; font-size: 13px; color: var(--xc-text-2); }
body.xc .xc-wb .wb-hero__chip b { color: var(--xc-text); font-weight: 500; }
body.xc .xc-wb .wb-hero__chip code { font-family: var(--xc-mono); font-size: 12px; background: var(--xc-hover); padding: 1px 6px; border-radius: 2px; }
body.xc .xc-wb .wb-hero__next { display: flex; align-items: baseline; gap: 12px; margin: 0; padding: 0; border: 0; border-radius: 0; background: none; color: var(--xc-text-2); font-size: 14px; line-height: 22px; }
body.xc .xc-wb .wb-hero__next strong { flex: none; font-size: 12px; font-weight: 400; color: var(--xc-text-3); }
body.xc .xc-wb .wb-hero__quick-actions { display: flex; gap: 8px; flex-wrap: wrap; margin: 0; padding: 12px 20px; border-top: 1px solid var(--xc-line-soft); background: #fafbfc; }
body.xc .xc-wb .wb-quick-btn { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; border: 1px solid var(--xc-line); border-radius: var(--xc-radius); background: #fff; color: var(--xc-text); font-size: 13px; font-weight: 400; text-decoration: none; box-shadow: none; transform: none; }
body.xc .xc-wb .wb-quick-btn:hover { border-color: var(--xc-brand); color: var(--xc-brand); }
body.xc .xc-wb .wb-quick-btn--primary { border-color: var(--xc-brand); background: var(--xc-brand); color: #fff; }
body.xc .xc-wb .wb-quick-btn--primary:hover { background: var(--xc-brand-hover); color: #fff; }

/* 已有的资料：一行七格 */
body.xc .xc-wb .well-completeness { padding: 0; }
body.xc .xc-wb .well-completeness__head { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-bottom: 1px solid var(--xc-line-soft); margin: 0; }
body.xc .xc-wb .well-completeness__title { margin: 0; font-size: 14px; font-weight: 600; color: var(--xc-text); }
body.xc .xc-wb .well-completeness__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0; padding: 0; }
body.xc .xc-wb .well-dim-cell { display: grid; grid-template-columns: auto 1fr; grid-template-areas: "icon count" "label label"; align-items: center; gap: 4px 8px; padding: 14px 20px; border: 0; border-right: 1px solid var(--xc-line-soft); border-radius: 0; background: none; text-align: left; text-decoration: none; box-shadow: none; transform: none; }
body.xc .xc-wb .well-dim-cell:last-child { border-right: 0; }
body.xc .xc-wb .well-dim-cell:hover { background: var(--xc-hover); }
body.xc .xc-wb .well-dim-cell__icon { grid-area: icon; display: flex; color: var(--xc-text-3); }
body.xc .xc-wb .well-dim-cell__icon .svg-icon { width: 18px; height: 18px; }
body.xc .xc-wb .well-dim-cell__count { grid-area: count; justify-self: end; font-size: 20px; line-height: 28px; font-weight: 600; color: var(--xc-text-3); font-variant-numeric: tabular-nums; }
body.xc .xc-wb .well-dim-cell__label { grid-area: label; font-size: 12px; color: var(--xc-text-2); }
body.xc .xc-wb .well-dim-cell--has .well-dim-cell__icon { color: var(--xc-brand); }
body.xc .xc-wb .well-dim-cell--has .well-dim-cell__count { color: var(--xc-text); }

/* 页签：一条下划线式的页签，不再悬浮盖住正文 */
body.xc .xc-wb__notebook { padding: 0; overflow: visible; }
body.xc .xc-wb__notebook .notebook__tabs { position: static; display: flex; gap: 0; margin: 0; padding: 0 20px; border: 0; border-bottom: 1px solid var(--xc-line-soft); border-radius: 0; background: none; backdrop-filter: none; z-index: auto; }
body.xc .xc-wb__notebook .notebook__tab { position: relative; display: inline-flex; align-items: center; gap: 6px; min-height: 0; height: 46px; margin: 0 24px 0 0; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; color: var(--xc-text-2); font-size: 14px; font-weight: 400; transform: none; }
body.xc .xc-wb__notebook .notebook__tab:hover { background: none; color: var(--xc-brand); transform: none; }
body.xc .xc-wb__notebook .notebook__tab.is-active, body.xc .xc-wb__notebook .notebook__tab[aria-selected="true"] { background: none; border: 0; box-shadow: none; color: var(--xc-brand); font-weight: 500; }
body.xc .xc-wb__notebook .notebook__tab.is-active::after, body.xc .xc-wb__notebook .notebook__tab[aria-selected="true"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--xc-brand); }
body.xc .xc-wb__notebook .notebook__tab .svg-icon { width: 16px; height: 16px; }
body.xc .xc-wb__notebook .notebook__body { padding: 20px; }
body.xc .xc-wb__notebook .section-stack { display: grid; gap: 28px; }
body.xc .xc-wb__notebook .simple-panel { padding: 0; border: 0; background: none; box-shadow: none; }
body.xc .xc-wb__notebook .section-block + .section-block { padding-top: 24px; border-top: 1px solid var(--xc-line-soft); }
body.xc .xc-wb__notebook .panel__title { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; padding: 0; border: 0; font-size: 15px; line-height: 22px; font-weight: 600; color: var(--xc-text); }
body.xc .xc-wb__notebook .compact-note { margin: 0 0 14px; padding: 0; border: 0; background: none; font-size: 13px; line-height: 20px; color: var(--xc-text-2); }
body.xc .xc-wb__notebook .stack-form { display: grid; gap: 14px; margin: 0; }
body.xc .xc-wb__notebook .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 20px; }
body.xc .xc-wb__notebook .form-grid .form-span-2 { grid-column: 1 / -1; }
body.xc .xc-wb__notebook label > span:first-child { display: block; margin-bottom: 6px; font-size: 13px; color: var(--xc-text-2); font-weight: 400; }
body.xc .xc-wb__notebook input[type="text"], body.xc .xc-wb__notebook input[type="number"], body.xc .xc-wb__notebook select, body.xc .xc-wb__notebook textarea { border: 1px solid var(--xc-line); border-radius: var(--xc-radius); background: #fff; box-shadow: none; font-size: 14px; }
body.xc .xc-wb__notebook input[type="text"], body.xc .xc-wb__notebook input[type="number"], body.xc .xc-wb__notebook select { height: 34px; padding: 0 12px; }
body.xc .xc-wb__notebook input:focus, body.xc .xc-wb__notebook select:focus, body.xc .xc-wb__notebook textarea:focus { border-color: var(--xc-brand); outline: 0; box-shadow: 0 0 0 2px var(--xc-brand-bg); }
/* 文件选择：虚线投放区，按钮是站内样式而不是浏览器默认的灰按钮 */
body.xc .xc-wb .file-field { display: block; margin: 0; padding: 0; border: 0; background: none; }
body.xc .xc-wb input[type="file"] { display: block; width: 100%; padding: 14px 16px; border: 1px dashed var(--xc-line); border-radius: var(--xc-radius); background: #fafbfc; color: var(--xc-text-2); font-size: 13px; cursor: pointer; }
body.xc .xc-wb input[type="file"]:hover { border-color: var(--xc-brand); background: var(--xc-brand-bg); }
body.xc .xc-wb input[type="file"]::file-selector-button { margin-right: 12px; height: 30px; padding: 0 14px; border: 1px solid var(--xc-line); border-radius: var(--xc-radius); background: #fff; color: var(--xc-text); font-size: 13px; cursor: pointer; }
body.xc .xc-wb .location-helper { margin: 0; padding: 14px 16px; border: 1px solid var(--xc-line-soft); border-radius: var(--xc-radius); background: #fafbfc; }
body.xc .xc-wb .location-helper__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 0; }
body.xc .xc-wb .location-helper__head strong { font-size: 13px; font-weight: 500; }
body.xc .xc-wb .location-helper__status { margin: 6px 0 0; }
body.xc .xc-wb .location-helper__map { width: 100%; height: 240px; margin-top: 12px; border: 1px solid var(--xc-line-soft); border-radius: var(--xc-radius); }

/* 邻井与最近操作：放在页尾，两栏 */
body.xc .xc-wb .wb-side-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 0; }
body.xc .xc-wb .wb-side-grid > .panel { padding: 0; }
body.xc .xc-wb .wb-side-grid .panel__title { display: flex; align-items: center; gap: 8px; margin: 0; padding: 14px 20px; border-bottom: 1px solid var(--xc-line-soft); font-size: 14px; font-weight: 600; color: var(--xc-text); }
body.xc .xc-wb .wb-side-grid .panel__title .svg-icon { width: 16px; height: 16px; color: var(--xc-text-3); }
body.xc .xc-wb .wb-neighbors__list, body.xc .xc-wb .wb-activity__list { list-style: none; margin: 0; padding: 4px 0; }
body.xc .xc-wb .wb-neighbor-row, body.xc .xc-wb .wb-activity-row { display: flex; align-items: center; gap: 12px; margin: 0; padding: 9px 20px; border: 0; border-radius: 0; background: none; font-size: 13px; }
body.xc .xc-wb .wb-neighbor-row + .wb-neighbor-row, body.xc .xc-wb .wb-activity-row + .wb-activity-row { border-top: 1px solid var(--xc-line-soft); }
body.xc .xc-wb .wb-neighbor-row__score { flex: none; color: var(--xc-text-2); font-size: 12px; font-weight: 400; }
body.xc .xc-wb .wb-neighbor-row__name { flex: 1; min-width: 0; color: var(--xc-brand); font-weight: 400; text-decoration: none; }
body.xc .xc-wb .wb-activity-row__time { flex: 0 0 84px; color: var(--xc-text-3); font-variant-numeric: tabular-nums; }
body.xc .xc-wb .wb-activity-row__user { flex: 0 0 88px; color: var(--xc-text); font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.xc .xc-wb .wb-activity-row__action { flex: 1; min-width: 0; color: var(--xc-text-2); font-family: inherit; }

/* 账号安全：页尾一行，默认收起 */
body.xc .xc-wb__account { margin: 8px 0 0; padding: 0; border: 0; border-top: 1px solid var(--xc-line-soft); border-radius: 0; background: none; box-shadow: none; }
body.xc .xc-wb__account > summary { display: flex; align-items: center; gap: 10px; padding: 12px 0; cursor: pointer; font-size: 12px; color: var(--xc-text-3); list-style: none; }
body.xc .xc-wb__account > summary::-webkit-details-marker { display: none; }
body.xc .xc-wb__account > summary strong { font-weight: 400; color: var(--xc-text-2); }
body.xc .xc-wb__account[open] { padding: 0 20px 20px; border: 0; border-radius: var(--xc-radius); background: var(--xc-card); box-shadow: var(--xc-shadow-card); }

@media (max-width: 900px) {
    .xc-wb__head { align-items: stretch; }
    .xc-wb__picker { flex: 1 1 100%; }
    body.xc .xc-wb .wb-hero__main { flex-direction: column; }
    body.xc .xc-wb .wb-hero__score { flex: none; flex-direction: row; align-items: baseline; gap: 10px; border-right: 0; border-bottom: 1px solid var(--xc-line-soft); padding: 14px 16px; }
    body.xc .xc-wb .wb-hero__info { padding: 14px 16px; }
    body.xc .xc-wb .wb-hero__quick-actions { padding: 12px 16px; }
    body.xc .xc-wb .well-completeness__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    body.xc .xc-wb .well-dim-cell { border-bottom: 1px solid var(--xc-line-soft); }
    body.xc .xc-wb .wb-side-grid { grid-template-columns: minmax(0, 1fr); }
    body.xc .xc-wb__notebook .form-grid { grid-template-columns: minmax(0, 1fr); }
    body.xc .xc-wb__notebook .notebook__tabs { padding: 0 16px; overflow-x: auto; }
    body.xc .xc-wb__notebook .notebook__body { padding: 16px; }
    .xc-wb__well-head { padding: 14px 16px; }
    .xc-wb__desc { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 16px; gap: 12px 16px; }
    .xc-wb__steps { grid-template-columns: minmax(0, 1fr); gap: 10px; }
    .xc-wb__step::after { display: none; }
}

body.xc .xc-wb .bit-info-panel__title { justify-content: space-between; }
body.xc .xc-wb .bit-info-panel__lifecycle-hint { margin: 0 0 14px; padding: 8px 12px; border: 0; border-radius: var(--xc-radius); background: var(--xc-brand-bg); color: var(--xc-brand-active); font-size: 13px; line-height: 20px; }
body.xc .xc-wb .wb-hero__next { overflow-wrap: anywhere; }
body.xc .xc-wb [hidden] { display: none !important; }

/* 历史资料：一份一行卡片，删除是右下角一个安静的文字按钮，不再是整行的红条 */
body.xc .xc-wb .history-list { display: grid; gap: 12px; margin: 0; padding: 0; }
body.xc .xc-wb .history-item { position: relative; display: grid; gap: 8px; margin: 0; padding: 14px 16px; border: 1px solid var(--xc-line-soft); border-radius: var(--xc-radius); background: #fff; box-shadow: none; }
body.xc .xc-wb .history-item__meta { display: flex; gap: 6px 12px; flex-wrap: wrap; font-size: 12px; color: var(--xc-text-3); }
body.xc .xc-wb .history-item__name { font-size: 14px; font-weight: 500; color: var(--xc-text); overflow-wrap: anywhere; }
body.xc .xc-wb .history-item__form { display: grid; gap: 10px; margin: 0; }
body.xc .xc-wb .history-item .inline-actions { display: flex; gap: 8px; flex-wrap: wrap; }
body.xc .xc-wb .history-item__delete { justify-self: end; margin: -40px 0 0; }
body.xc .xc-wb .history-item__delete .button, body.xc .xc-wb .history-item__delete button { width: auto; min-width: 0; height: 32px; padding: 0 12px; border: 1px solid transparent; background: transparent; color: var(--xc-text-3); box-shadow: none; }
body.xc .xc-wb .history-item__delete .button:hover, body.xc .xc-wb .history-item__delete button:hover { color: var(--xc-danger); background: var(--xc-danger-bg); }
@media (max-width: 900px) { body.xc .xc-wb .history-item__delete { margin: 0; justify-self: start; } }

/* ------------------------------------------------------------------ 数据清单（井档案：做钻头设计需要的数据） */
.xc-req__stages { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0; border-bottom: 1px solid var(--xc-line-soft); }
.xc-req__stage { display: grid; grid-template-columns: 24px minmax(0, 1fr); grid-template-areas: "no title" "no count"; column-gap: 8px; align-items: center; padding: 14px 16px; border-right: 1px solid var(--xc-line-soft); text-decoration: none; }
.xc-req__stage:last-child { border-right: 0; }
.xc-req__stage:hover { background: var(--xc-hover); }
.xc-req__stage-no { grid-area: no; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; border: 1px solid var(--xc-line); border-radius: 50%; color: var(--xc-text-3); font-size: 12px; }
.xc-req__stage-title { grid-area: title; font-size: 14px; line-height: 22px; color: var(--xc-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.xc-req__stage-count { grid-area: count; font-size: 12px; line-height: 20px; color: var(--xc-text-3); }
.xc-req__stage.is-ok .xc-req__stage-no { border-color: var(--xc-success); background: var(--xc-success); color: #fff; }
.xc-req__stage.is-partial .xc-req__stage-no { border-color: var(--xc-warning); color: var(--xc-warning); }
.xc-req__stage.is-missing .xc-req__stage-no { border-color: var(--xc-danger); color: var(--xc-danger); }
.xc-req__gaps { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 12px 20px; border-bottom: 1px solid var(--xc-line-soft); background: var(--xc-warning-bg); font-size: 13px; color: var(--xc-text); }
.xc-req__gaps strong { font-weight: 500; }
.xc-req__gaps span { padding: 0 8px; height: 22px; display: inline-flex; align-items: center; border-radius: 2px; background: #fff; color: var(--xc-text-2); }
.xc-req__group { border-bottom: 1px solid var(--xc-line-soft); }
.xc-req__group > summary { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; padding: 12px 20px; cursor: pointer; list-style: none; }
.xc-req__group > summary::-webkit-details-marker { display: none; }
.xc-req__group-title { font-size: 14px; font-weight: 600; color: var(--xc-text); }
.xc-req__list { list-style: none; margin: 0; padding: 0 20px 8px; }
.xc-req__item { display: grid; grid-template-columns: 64px minmax(0, 1fr) minmax(140px, 220px); gap: 12px 16px; align-items: start; padding: 12px 0; border-top: 1px solid var(--xc-line-soft); }
.xc-req__label { font-size: 14px; line-height: 22px; color: var(--xc-text); }
.xc-req__need { margin-left: 8px; font-size: 12px; color: var(--xc-text-3); }
.xc-req__need--must { color: var(--xc-danger); }
.xc-req__detail { margin-top: 2px; font-size: 13px; line-height: 20px; color: var(--xc-text-2); overflow-wrap: anywhere; }
.xc-req__item.is-missing .xc-req__detail { color: var(--xc-text-3); }
.xc-req__why { margin-top: 4px; font-size: 12px; line-height: 20px; color: var(--xc-text-3); }
.xc-req__who { display: grid; gap: 6px; justify-items: start; }
@media (max-width: 900px) {
    .xc-req__stages { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .xc-req__stage { border-bottom: 1px solid var(--xc-line-soft); }
    .xc-req__item { grid-template-columns: 56px minmax(0, 1fr); }
    .xc-req__who { grid-column: 2; }
}

/* ------------------------------------------------------------------ 手机 App：入口页与“我的手机” */
.xc-app { max-width: 760px; }
.xc-app__digits { font-family: var(--xc-mono); font-size: 34px; line-height: 44px; letter-spacing: 4px; font-weight: 600; color: var(--xc-text); }
.xc-app__ways { display: grid; gap: 16px; margin: 0; }
.xc-app__ways dt { margin: 0 0 6px; font-size: 14px; font-weight: 600; color: var(--xc-text); }
.xc-app__ways dd { margin: 0; }
