:root {
  --ink: #18233a;
  --muted: #64748b;
  --line: #dbe6f5;
  --canvas: #f5f8fd;
  --paper: #fff;
  --teal: #2563eb;
  --teal-deep: #1e3a8a;
  --teal-soft: #e8f0ff;
  --lime: #bfdbfe;
  --amber: #b9700b;
  --amber-soft: #fff2d7;
  --red: #bf5146;
  --red-soft: #fee9e7;
  --blue: #356caa;
  --blue-soft: #e8f1fb;
  --violet: #715aac;
  --violet-soft: #f0ebfb;
  --shadow: 0 12px 34px rgba(23, 51, 44, .08), 0 2px 6px rgba(23, 51, 44, .04);
  --radius: 14px;
}

* { box-sizing: border-box; }
html, body { margin: 0; min-width: 320px; min-height: 100%; }
body { color: var(--ink); background: var(--canvas); font: 14px/1.45 "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

.public { min-height: 100vh; background: #f5fbf8; }
.public-nav, .topbar { height: 74px; display: flex; align-items: center; justify-content: space-between; padding: 0 5.8%; background: rgba(255,255,255,.88); border-bottom: 1px solid var(--line); }
.brand { border: 0; background: transparent; display: flex; gap: 11px; align-items: center; color: var(--ink); font-weight: 800; text-align: left; }
.brand-mark { width: 36px; height: 36px; border-radius: 11px; display: grid; place-items: center; background: var(--lime); color: #17342d; }
.brand-mark svg { width: 21px; height: 21px; }
.brand-main { font-size: 16px; letter-spacing: -.03em; }
.brand-sub { display: block; margin-top: 2px; color: var(--muted); font-size: 9px; letter-spacing: .1em; font-weight: 700; }
.public-links, .top-actions { display: flex; gap: 18px; align-items: center; }
.plain-link { color: var(--muted); font-size: 12px; font-weight: 700; }
.public-hero { min-height: 620px; display: grid; grid-template-columns: 1.05fr .9fr; gap: 8%; align-items: center; padding: 60px 11% 80px; overflow: hidden; position: relative; }
.public-hero:after { content: ""; width: 650px; height: 650px; border: 1px solid #dcece4; border-radius: 50%; position: absolute; right: -270px; top: -300px; box-shadow: 0 0 0 34px rgba(226,243,234,.58), 0 0 0 70px rgba(226,243,234,.32); }
.hero-copy, .hero-dashboard { position: relative; z-index: 1; }
.eyebrow { color: var(--teal); font-size: 10px; font-weight: 900; letter-spacing: .15em; }
.eyebrow:before { content: ""; display: inline-block; width: 24px; height: 2px; margin: 0 8px 3px 0; background: var(--lime); }
.hero-title { margin: 19px 0 0; max-width: 620px; font-size: clamp(40px, 5vw, 66px); line-height: 1.1; letter-spacing: -.075em; }
.hero-title em { color: var(--teal); font-style: normal; }
.hero-text { max-width: 510px; margin: 22px 0 29px; color: #5a6b65; font-size: 15px; line-height: 1.9; }
.btn { min-height: 37px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 0 13px; border: 1px solid transparent; border-radius: 9px; font-size: 12px; font-weight: 800; transition: .16s ease; }
.btn:hover { transform: translateY(-1px); }
.btn svg { width: 15px; height: 15px; }
.primary { background: var(--teal); color: #fff; box-shadow: 0 5px 10px rgba(11,119,107,.17); }
.primary:hover { background: var(--teal-deep); }
.secondary { background: var(--paper); border-color: #cddcd5; color: #486058; }
.secondary:hover { color: var(--teal); border-color: var(--teal); }
.danger { background: var(--red-soft); color: var(--red); }
.disabled { background: #f0f3f1; border-color: var(--line); color: #98a5a0; cursor: not-allowed; }
.disabled:hover { transform: none; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 9px; }
.hero-dashboard { background: #113a34; border-radius: 24px; padding: 22px; color: white; box-shadow: 0 24px 54px rgba(16, 54, 47,.22); transform: rotate(1.2deg); }
.dash-top, .hero-kpis, .mini-row { display: flex; justify-content: space-between; align-items: center; }
.dash-overline { color: var(--lime); font-size: 10px; font-weight: 900; letter-spacing: .13em; }
.dash-sync { color: #a9c4be; font-size: 10px; }
.hero-rate { padding: 22px 0 18px; border-bottom: 1px solid rgba(255,255,255,.12); }
.hero-rate label { color: #b6cec8; font-size: 11px; }
.hero-rate strong { display: block; margin-top: 5px; font-size: 47px; line-height: 1; letter-spacing: -.08em; }
.hero-rate span { color: var(--lime); font-size: 10px; font-weight: 700; }
.mini-chart { height: 105px; display: flex; gap: 9px; align-items: flex-end; padding: 18px 0 0; }
.mini-chart i { flex: 1; min-width: 12px; background: #53a293; border-radius: 5px 5px 0 0; }
.mini-chart i:nth-child(even) { background: #b7da82; }
.mini-chart i:nth-child(1) { height: 45%; }.mini-chart i:nth-child(2) { height: 64%; }.mini-chart i:nth-child(3) { height: 56%; }.mini-chart i:nth-child(4) { height: 77%; }.mini-chart i:nth-child(5) { height: 70%; }.mini-chart i:nth-child(6) { height: 92%; }
.mini-row { color: #abc4be; font-size: 9px; }
.public-strip { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; padding: 0 11%; background: #dceae3; }
.strip-cell { padding: 22px 0; background: #f5fbf8; }
.strip-cell strong { display: block; font-size: 23px; letter-spacing: -.05em; }
.strip-cell span { color: var(--muted); font-size: 11px; }

.app-shell { min-height: 100vh; }
.topbar { position: sticky; z-index: 10; top: 0; height: 67px; padding: 0 30px; }
.role-select { height: 34px; border: 1px solid var(--line); border-radius: 8px; background: var(--canvas); color: var(--ink); padding: 0 9px; font-size: 11px; font-weight: 800; outline: none; }
.icon-button { position: relative; display: grid; place-items: center; width: 34px; height: 34px; padding: 0; border: 1px solid var(--line); border-radius: 9px; background: var(--paper); color: var(--muted); }
.dot { position: absolute; top: 6px; right: 6px; width: 6px; height: 6px; border-radius: 50%; background: var(--red); }
.profile { display: flex; align-items: center; gap: 8px; border-left: 1px solid var(--line); padding-left: 16px; }
.avatar { width: 30px; height: 30px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 50%; background: #dceee7; color: var(--teal-deep); font-size: 11px; font-weight: 900; }
.profile strong { display: block; font-size: 11px; }.profile span { display: block; margin-top: 2px; color: var(--muted); font-size: 9px; }
.workspace { display: flex; min-height: calc(100vh - 67px); }
.sidebar { width: 225px; flex: 0 0 225px; display: flex; flex-direction: column; padding: 22px 13px 18px; border-right: 1px solid var(--line); background: #eef6f2; }
.nav-caption { margin: 0 10px 8px; color: #96a39e; font-size: 9px; font-weight: 900; letter-spacing: .13em; }
.nav-block + .nav-block { margin-top: 16px; }
.nav-item { width: 100%; min-height: 37px; display: flex; gap: 10px; align-items: center; padding: 0 10px; border: 0; border-radius: 9px; color: #5d716a; background: transparent; text-align: left; font-size: 12px; font-weight: 700; }
.nav-item:hover { color: var(--teal); background: rgba(255,255,255,.72); }.nav-item.active { color: var(--teal-deep); background: var(--paper); box-shadow: 0 2px 8px rgba(31,67,57,.06); }
.nav-item svg { width: 16px; height: 16px; }.nav-count { margin-left: auto; padding: 2px 6px; border-radius: 10px; color: var(--red); background: var(--red-soft); font-size: 9px; }
.nav-security { margin-top: auto; padding: 14px 8px 0; border-top: 1px solid #d9e6df; color: var(--muted); font-size: 10px; line-height: 1.6; }.nav-security svg { float: left; margin: 1px 7px 0 0; color: var(--teal); width: 15px; }
.main { width: 100%; max-width: 1560px; padding: 30px 36px 48px; overflow: hidden; }
.page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 23px; }.page-head h1 { margin: 8px 0 0; font-size: 28px; letter-spacing: -.05em; }.page-head p { margin: 7px 0 0; color: #64736e; font-size: 12px; }.head-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.notice { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 19px 22px; margin-bottom: 18px; overflow: hidden; border-radius: 17px; background: #123e37; color: white; position: relative; }.notice:after { content: ""; position: absolute; right: -45px; top: -95px; width: 210px; height: 210px; border-radius: 50%; border: 1px solid rgba(199,238,120,.28); box-shadow: 0 0 0 25px rgba(199,238,120,.06), 0 0 0 50px rgba(199,238,120,.04); }.notice > * { position: relative; z-index: 1; }.notice b { display: block; margin-top: 5px; font-size: 19px; letter-spacing: -.04em; }.notice span { color: #bad0c9; font-size: 11px; }.notice .eyebrow { color: var(--lime); }.notice .eyebrow:before { display: none; }.lime { color: #173b31; background: var(--lime); }
.stat-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 13px; margin-bottom: 18px; }.card { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 2px 7px rgba(22,48,41,.03); }.stat { min-height: 114px; padding: 16px; }.stat-top { display: flex; align-items: flex-start; justify-content: space-between; color: #5a6c65; font-size: 11px; font-weight: 700; }.stat-icon { display: grid; place-items: center; width: 29px; height: 29px; border-radius: 8px; color: var(--teal); background: var(--teal-soft); }.stat-icon svg { width: 15px; }.stat strong { display: block; margin-top: 9px; font-size: 27px; letter-spacing: -.06em; }.stat small { display: block; margin-top: 8px; color: var(--muted); font-size: 10px; }.up { color: var(--teal); font-weight: 900; }.warn { color: var(--amber); font-weight: 900; }
.split { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(300px, .75fr); gap: 17px; align-items: start; }.card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 17px 18px 13px; }.card-head h2 { margin: 0; font-size: 13px; letter-spacing: -.02em; }.card-head p { margin: 4px 0 0; color: var(--muted); font-size: 10px; }.text-button { padding: 0; border: 0; color: var(--teal); background: transparent; font-size: 10px; font-weight: 900; }
.queue { border-top: 1px solid var(--line); }.queue-row { display: grid; grid-template-columns: 65px minmax(0,1fr) auto; gap: 12px; align-items: center; padding: 13px 18px; border-bottom: 1px solid var(--line); cursor: pointer; }.queue-row:hover, .data-row:hover td { background: #fbfdfc; }.queue-row:last-child { border-bottom: 0; }.issue-title { overflow: hidden; font-size: 11px; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }.issue-sub { margin-top: 4px; overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.queue-side { display: grid; justify-items: end; gap: 6px; color: var(--muted); font-size: 9px; }
.type, .badge { display: inline-flex; align-items: center; width: fit-content; border-radius: 999px; padding: 4px 7px; font-size: 9px; font-weight: 900; white-space: nowrap; }.type { border-radius: 5px; }.ncr { color: #ad443b; background: #fbe3e0; }.psr { color: #315f9b; background: #e5eef9; }.fa { color: #6d56a5; background: #eee8fa; }.site { color: #267267; background: #e1f1eb; }.blue { color: var(--blue); background: var(--blue-soft); }.amber { color: var(--amber); background: var(--amber-soft); }.red { color: var(--red); background: var(--red-soft); }.teal { color: var(--teal); background: var(--teal-soft); }.violet { color: var(--violet); background: var(--violet-soft); }.gray { color: #718078; background: #edf2ef; }
.side-stack { display: grid; gap: 17px; }.pad { padding: 18px; }.progress-line { height: 8px; overflow: hidden; border-radius: 9px; background: #e9f1ed; }.progress-line i { display: block; height: 100%; border-radius: inherit; background: var(--teal); }.metric-row { display: flex; justify-content: space-between; align-items: baseline; margin: 12px 0; }.metric-row strong { font-size: 29px; letter-spacing: -.07em; }.metric-row span, .legend { color: var(--muted); font-size: 10px; }.legend { display: flex; justify-content: space-between; margin-top: 9px; }.activity { padding: 0 18px 9px; }.activity-row { display: grid; grid-template-columns: 11px 1fr; gap: 8px; padding: 10px 0; border-top: 1px solid var(--line); color: #5c6c66; font-size: 10px; line-height: 1.55; }.activity-dot { width: 7px; height: 7px; margin-top: 4px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 0 4px #eff8dc; }.activity-time { display: block; color: var(--muted); font-size: 9px; }
.tabs { display: flex; gap: 2px; width: fit-content; max-width: 100%; overflow-x: auto; padding: 4px; margin-bottom: 14px; border-radius: 9px; background: #eaf2ee; }.tab { flex: 0 0 auto; border: 0; border-radius: 7px; padding: 7px 11px; color: var(--muted); background: transparent; font-size: 10px; font-weight: 900; }.tab.active { color: var(--teal-deep); background: var(--paper); box-shadow: 0 1px 5px rgba(23,50,42,.08); }
.filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 13px; }.search { position: relative; flex: 1; min-width: 210px; }.search svg { position: absolute; top: 9px; left: 10px; width: 15px; color: var(--muted); }.field, .filter { height: 35px; border: 1px solid #ceded7; border-radius: 8px; outline: none; background: var(--paper); color: #41554d; font-size: 11px; }.field { width: 100%; padding: 0 10px 0 31px; }.filter { padding: 0 8px; }.field:focus, .filter:focus, textarea:focus { border-color: var(--teal); box-shadow: 0 0 0 3px rgba(11,119,107,.1); }
.table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper); }.data-table { width: 100%; min-width: 840px; border-collapse: collapse; }.data-table th { padding: 11px 13px; color: var(--muted); background: #f7faf8; font-size: 9px; letter-spacing: .04em; text-align: left; white-space: nowrap; }.data-table td { padding: 13px; border-top: 1px solid var(--line); color: #31443d; font-size: 10px; vertical-align: middle; }.data-row { cursor: pointer; }.mono { font-family: Consolas, "SFMono-Regular", monospace; }.table-name { max-width: 255px; overflow: hidden; color: var(--ink); font-size: 11px; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }.table-sub { margin-top: 3px; color: var(--muted); font-size: 9px; }.empty { padding: 46px 20px; color: var(--muted); font-size: 11px; text-align: center; }
.detail-layout { display: grid; grid-template-columns: minmax(0, 1.32fr) minmax(285px, .68fr); gap: 17px; align-items: start; }.detail-head { padding: 20px 22px; border-bottom: 1px solid var(--line); }.back { display: inline-flex; gap: 4px; align-items: center; padding: 0; margin-bottom: 15px; border: 0; color: var(--teal); background: transparent; font-size: 10px; font-weight: 900; }.back svg { width: 14px; }.detail-top { display: flex; gap: 17px; justify-content: space-between; align-items: flex-start; }.detail-top h1 { max-width: 610px; margin: 7px 0 0; font-size: 21px; line-height: 1.35; letter-spacing: -.04em; }.detail-buttons { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }.detail-tabs { display: flex; gap: 17px; overflow-x: auto; padding: 0 22px; border-bottom: 1px solid var(--line); }.detail-tab { flex: 0 0 auto; padding: 12px 0 10px; border: 0; border-bottom: 2px solid transparent; color: var(--muted); background: transparent; font-size: 10px; font-weight: 900; }.detail-tab.active { border-color: var(--teal); color: var(--teal-deep); }.detail-body { padding: 21px 22px; }.info-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 17px; }.label { color: var(--muted); font-size: 9px; }.value { margin-top: 4px; color: #30423b; font-size: 11px; font-weight: 800; line-height: 1.55; }.section { margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--line); }.section-title { display: flex; justify-content: space-between; align-items: center; margin-bottom: 11px; }.section-title h3 { margin: 0; font-size: 12px; }.copy-box { padding: 12px 13px; border-radius: 9px; color: #52645d; background: #f6faf8; font-size: 11px; line-height: 1.7; }.fix-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }.fix-item { padding: 12px; border: 1px solid var(--line); border-radius: 9px; }.fix-item b { display: block; margin-top: 5px; color: #41564e; font-size: 10px; line-height: 1.6; }.file-list { display: grid; gap: 7px; }.file-row { display: flex; align-items: center; gap: 9px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; }.file-icon { width: 27px; height: 27px; display: grid; place-items: center; border-radius: 7px; color: var(--teal); background: var(--teal-soft); }.file-icon svg { width: 14px; }.file-name { font-size: 10px; font-weight: 800; }.file-meta { margin-top: 2px; color: var(--muted); font-size: 9px; }.file-link { margin-left: auto; padding: 0; border: 0; color: var(--teal); background: transparent; font-size: 9px; font-weight: 900; }.side-card { padding: 17px; }.side-card + .side-card { margin-top: 17px; }.side-card h2 { margin: 0; padding-bottom: 12px; border-bottom: 1px solid var(--line); font-size: 12px; }.side-list { display: grid; gap: 12px; padding-top: 13px; }.side-list > div { display: flex; justify-content: space-between; gap: 10px; }.side-list .value { margin: 0; text-align: right; font-size: 10px; }.visibility { display: flex; gap: 8px; padding-top: 13px; color: #5b6b65; font-size: 10px; line-height: 1.6; }.visibility svg { flex: 0 0 auto; width: 15px; color: var(--teal); }
.timeline { display: grid; }.timeline-row { position: relative; display: grid; grid-template-columns: 18px 1fr; gap: 10px; padding-bottom: 17px; }.timeline-row:not(:last-child):before { content: ""; position: absolute; left: 6px; top: 14px; bottom: 0; width: 1px; background: #dce8e2; }.timeline-dot { z-index: 1; width: 13px; height: 13px; margin-top: 2px; border: 3px solid var(--teal); border-radius: 50%; background: #fff; }.timeline-dot.wait { border-color: var(--amber); }.timeline-dot.done { background: var(--teal); }.timeline-row b { font-size: 11px; }.timeline-row p { margin: 3px 0; color: #596a63; font-size: 10px; line-height: 1.55; }.timeline-row small { color: var(--muted); font-size: 9px; }.comment { display: flex; gap: 9px; margin-bottom: 14px; }.comment-body { flex: 1; }.comment-meta { display: flex; align-items: baseline; gap: 6px; }.comment-meta b { font-size: 10px; }.comment-meta span { color: var(--muted); font-size: 9px; }.comment-meta time { margin-left: auto; color: var(--muted); font-size: 9px; }.comment-text { margin-top: 5px; padding: 9px 10px; border-radius: 3px 9px 9px; color: #51645c; background: #f5f9f7; font-size: 10px; line-height: 1.65; }.comment-form { margin-top: 18px; padding-top: 15px; border-top: 1px solid var(--line); }textarea { width: 100%; min-height: 72px; padding: 9px; border: 1px solid #ceded7; border-radius: 8px; outline: none; resize: vertical; color: var(--ink); font-size: 10px; }.form-actions { display: flex; justify-content: space-between; align-items: center; margin-top: 7px; }.attach-link { padding: 0; border: 0; color: var(--muted); background: transparent; font-size: 9px; font-weight: 800; }.attach-link svg { width: 13px; vertical-align: -3px; }
.knowledge-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 13px; }.knowledge { min-height: 174px; padding: 17px; display: flex; flex-direction: column; }.knowledge-icon { width: 33px; height: 33px; display: grid; place-items: center; border-radius: 9px; color: var(--teal); background: var(--teal-soft); }.knowledge-icon svg { width: 17px; }.knowledge h2 { margin: 14px 0 0; font-size: 12px; line-height: 1.5; }.knowledge p { margin: 5px 0 0; color: #5a6b64; font-size: 10px; line-height: 1.6; }.knowledge-foot { display: flex; gap: 6px; align-items: center; margin-top: auto; padding-top: 12px; color: var(--muted); font-size: 9px; }.knowledge-foot .badge { border-radius: 5px; }
.report-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(290px,.75fr); gap: 17px; }.report-hero { position: relative; overflow: hidden; padding: 21px; border-radius: 13px; color: #fff; background: #153e38; }.report-hero:after { content: "Q2"; position: absolute; right: -7px; bottom: -35px; color: rgba(199,238,120,.12); font-size: 120px; font-weight: 900; letter-spacing: -.13em; }.report-hero > * { position: relative; z-index: 1; }.report-hero .eyebrow { color: var(--lime); }.report-hero .eyebrow:before { display: none; }.report-hero h2 { margin: 7px 0 0; font-size: 19px; }.report-hero p { color: #bcd0ca; font-size: 10px; }.report-cells { display: grid; grid-template-columns: repeat(3,1fr); gap: 7px; margin: 17px 0; }.report-cell { padding: 10px; border-radius: 8px; background: rgba(255,255,255,.08); }.report-cell b { display: block; font-size: 19px; }.report-cell span { color: #bcd0ca; font-size: 9px; }.report-hero .secondary { color: #173a32; border-color: transparent; background: var(--lime); }.report-table { margin-top: 21px; }.simple-table { width: 100%; border-collapse: collapse; }.simple-table th,.simple-table td { padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 10px; text-align: left; }.simple-table th { color: var(--muted); font-size: 9px; }.simple-table td:last-child,.simple-table th:last-child { text-align: right; }
.modal-backdrop { position: fixed; z-index: 50; inset: 0; display: grid; place-items: center; padding: 18px; background: rgba(13,35,30,.46); }.modal { width: min(610px, 100%); max-height: calc(100vh - 36px); overflow: auto; border-radius: 15px; background: var(--paper); box-shadow: 0 25px 70px rgba(17,48,42,.23); }.modal-head { display: flex; justify-content: space-between; gap: 15px; padding: 18px 20px; border-bottom: 1px solid var(--line); }.modal-head h2 { margin: 0; font-size: 15px; }.modal-head p { margin: 4px 0 0; color: var(--muted); font-size: 10px; }.modal-close { width: 27px; height: 27px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 8px; color: var(--muted); background: #f0f5f2; }.modal-close svg { width: 15px; }.modal-body { padding: 20px; }.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 13px; }.form-field { display: grid; gap: 5px; }.form-field.full { grid-column: 1 / -1; }.form-field label { color: #596a63; font-size: 10px; font-weight: 800; }.form-input { width: 100%; height: 35px; padding: 0 9px; border: 1px solid #ceded7; border-radius: 7px; outline: none; font-size: 10px; }.form-input:focus { border-color: var(--teal); }.modal-foot { display: flex; justify-content: flex-end; gap: 7px; padding: 14px 20px; border-top: 1px solid var(--line); }.alert { padding: 10px 11px; border-radius: 8px; color: #765f35; background: #fff8e9; font-size: 10px; line-height: 1.6; }.toast-zone { position: fixed; right: 20px; bottom: 20px; z-index: 80; display: grid; gap: 8px; }.toast { max-width: 330px; padding: 10px 13px; border-radius: 9px; color: #fff; background: #173e38; box-shadow: var(--shadow); font-size: 10px; font-weight: 700; animation: in .2s ease-out; }.toast.error { background: #924b42; }@keyframes in { from { opacity:0; transform:translateY(7px) } to { opacity:1; transform:none } }

@media (max-width: 1050px) { .main { padding: 26px 23px 40px; }.sidebar { width: 198px; flex-basis: 198px; }.split,.detail-layout,.report-grid { grid-template-columns: 1fr; }.side-stack { grid-template-columns: 1fr 1fr; }.knowledge-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 720px) { .public-nav { padding: 0 18px; }.public-links .plain-link { display: none; }.public-hero { grid-template-columns: 1fr; padding: 50px 21px 60px; }.hero-title { font-size: 43px; }.public-strip { grid-template-columns: 1fr; padding: 0 21px; }.strip-cell { padding: 15px 0; }.topbar { padding: 0 14px; }.top-actions { gap: 7px; }.profile-copy,.top-actions label,.icon-button { display: none; }.profile { padding-left: 7px; border: 0; }.workspace { display: block; }.sidebar { width: 100%; min-height: 53px; display: block; padding: 7px 8px; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--line); }.nav-block { display: inline-flex; gap: 4px; }.nav-block + .nav-block { margin: 0; }.nav-caption,.nav-security { display: none; }.nav-item { width: auto; min-height: 34px; padding: 0 8px; font-size: 10px; }.nav-count { display: none; }.main { padding: 22px 14px 36px; }.page-head { display: block; }.head-actions { justify-content: flex-start; margin-top: 14px; }.notice { display: block; padding: 17px; }.notice .btn { margin-top: 13px; }.stat-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }.stat { min-height: 103px; padding: 13px; }.side-stack { grid-template-columns: 1fr; }.queue-row { grid-template-columns: 57px minmax(0,1fr); padding: 12px; }.queue-side { grid-column: 2; display: flex; justify-content: space-between; }.detail-head,.detail-body { padding: 17px; }.detail-top { display: block; }.detail-buttons { justify-content: flex-start; margin-top: 13px; }.detail-tabs { padding: 0 17px; }.info-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }.fix-grid { grid-template-columns: 1fr; }.knowledge-grid { grid-template-columns: 1fr; }.form-grid { grid-template-columns: 1fr; }.form-field.full { grid-column: auto; } }

.knowledge-access-note{display:flex;align-items:center;gap:9px;margin:0 0 14px;padding:11px 13px;border:1px solid #d7e6f7;border-radius:10px;background:#f5faff;color:#42556d;font-size:12px}.knowledge-access-note svg{width:17px;color:#1677ff}.knowledge-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.knowledge-visibility-pill{max-width:72%;padding:5px 8px;border-radius:999px;background:#f0f5ff;color:#314b6b;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.knowledge-card-actions{align-items:flex-end}.knowledge-card-actions>div{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.knowledge-card-actions .btn{min-height:32px;padding:0 10px}.knowledge-permission-button svg{width:14px}.knowledge-manage-modal{width:min(720px,calc(100vw - 28px))}.form-help{display:block;margin-top:6px;color:#6b7890;font-size:11px;line-height:1.5}.knowledge-supplier-scope{display:none}.knowledge-supplier-scope.is-visible{display:block}.knowledge-supplier-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:230px;overflow:auto;padding:2px}.knowledge-supplier-option{display:flex;align-items:center;gap:10px;padding:10px 11px;border:1px solid #dfe6ef;border-radius:9px;background:#fff;cursor:pointer}.knowledge-supplier-option:has(input:checked){border-color:#52c41a;background:#f6ffed}.knowledge-supplier-option input{width:17px;height:17px;accent-color:#52c41a}.knowledge-supplier-option span{min-width:0}.knowledge-supplier-option b,.knowledge-supplier-option small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.knowledge-supplier-option b{font-size:12px}.knowledge-supplier-option small{margin-top:2px;color:#7b8798;font-size:10px}.knowledge-file-picker{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px;border:1px dashed #91caff;border-radius:10px;background:#f7fbff;cursor:pointer}.knowledge-file-picker input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.knowledge-file-picker>span{flex:0 0 auto;padding:9px 13px;border-radius:8px;background:#1677ff;color:#fff;font-weight:700}.knowledge-file-picker>span svg{width:15px;vertical-align:-3px}.knowledge-file-picker small{min-width:0;color:#5f6f85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.knowledge-permission-summary{display:flex;gap:12px;margin-bottom:18px;padding:14px;border:1px solid #d7e6f7;border-radius:10px;background:#f5faff}.knowledge-permission-summary>i{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:#e6f4ff;color:#1677ff}.knowledge-permission-summary>i svg{width:18px}.knowledge-permission-summary b{font-size:13px}.knowledge-permission-summary p{margin:5px 0 0;color:#64748b;font-size:11px}.btn:disabled{cursor:not-allowed;opacity:.58}

.knowledge-delete-modal{width:min(560px,calc(100vw - 28px))}.knowledge-delete-warning{display:flex;align-items:center;gap:13px;margin-bottom:14px;padding:14px;border:1px solid #ffccc7;border-radius:10px;background:#fff2f0}.knowledge-delete-warning>i{display:grid;place-items:center;width:40px;height:40px;border-radius:9px;background:#ffccc7;color:#cf1322}.knowledge-delete-warning>i svg{width:19px}.knowledge-delete-warning b{font-size:14px}.knowledge-delete-warning p{margin:5px 0 0;color:#7b6064;font-size:11px}.knowledge-card-actions .btn.danger{color:#cf1322;background:#fff2f0;border-color:#ffccc7}.knowledge-card-actions .btn.danger:hover{background:#ffccc7}

@media (max-width:720px){.knowledge-supplier-list{grid-template-columns:1fr}.knowledge-card-actions{display:block}.knowledge-card-actions>div{justify-content:flex-start;margin-top:9px}.knowledge-visibility-pill{max-width:65%}}

/* 蓝色视觉体系与整改协同组件 */
.public { background: #f6f9ff; }.public-hero:after { border-color: #d9e7ff; box-shadow: 0 0 0 34px rgba(226,238,255,.62), 0 0 0 70px rgba(226,238,255,.35); }.brand-mark { background: #dbeafe; color: #1e40af; }.hero-dashboard { background: #102f63; box-shadow: 0 24px 54px rgba(30,64,175,.20); }.hero-rate span,.dash-overline { color: #bfdbfe; }.mini-chart i { background: #4f83e8; }.mini-chart i:nth-child(even) { background: #9fc4ff; }.public-strip { background: #dce8fb; }.strip-cell { background: #f6f9ff; }.sidebar { background: #eff5ff; }.avatar { background: #e0ebff; }.nav-security { border-color: #d7e5fb; }.notice { background: #173f82; }.notice:after { border-color: rgba(191,219,254,.36); box-shadow: 0 0 0 25px rgba(191,219,254,.07), 0 0 0 50px rgba(191,219,254,.04); }.notice span { color: #cdddfa; }.lime { color: #163a77; background: #bfdbfe; }.progress-line { background: #e5efff; }.activity-dot { background: #60a5fa; box-shadow: 0 0 0 4px #e8f0ff; }.tabs { background: #eaf1ff; }.field,.filter { border-color: #cbdcf5; color: #3a4d70; }.copy-box { background: #f6f9ff; color: #435570; }.value { color: #263a59; }.fix-item b { color: #334b70; }.timeline-row:not(:last-child):before { background: #d9e5f7; }.timeline-row p { color: #536682; }.comment-text { background: #f5f8ff; color: #4a5d79; }.report-hero { background: #14396f; }.report-hero:after { color: rgba(191,219,254,.14); }.report-hero .eyebrow { color: #bfdbfe; }.report-hero p,.report-cell span { color: #cbdcf5; }.report-hero .secondary { color: #173e7c; background: #bfdbfe; }.modal-backdrop { background: rgba(20,47,99,.48); }.modal-close { background: #edf3ff; }.toast { background: #173f82; }
.description-images { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 11px; }.description-image { width: 118px; height: 80px; overflow: hidden; border: 1px solid #ccdcf4; border-radius: 8px; background: #eef4ff; }.description-image img { width: 100%; height: 100%; object-fit: cover; }.image-hint { display: flex; align-items: center; gap: 7px; margin-top: 10px; color: var(--muted); font-size: 9px; }.image-hint svg { width: 14px; color: var(--teal); }.hidden-input { display: none; }
.remediation-flow { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px; margin-bottom: 14px; }.remediation-step { min-height: 116px; position: relative; padding: 12px; border: 1px solid #d9e5f6; border-radius: 10px; background: #fbfdff; }.remediation-step:not(:last-child):after { content: ""; position: absolute; top: 50%; left: calc(100% + 5px); width: 14px; height: 1px; background: #95b8f5; }.remediation-step:not(:last-child):before { content: ""; position: absolute; z-index: 1; top: calc(50% - 3px); right: -19px; width: 6px; height: 6px; border-top: 1px solid #4d80df; border-right: 1px solid #4d80df; transform: rotate(45deg); }.remediation-step-top { display: flex; justify-content: space-between; align-items: center; gap: 7px; }.remediation-step-icon { width: 27px; height: 27px; display: grid; place-items: center; border-radius: 8px; color: var(--teal); background: var(--teal-soft); font-size: 10px; font-weight: 900; }.remediation-step strong { display: block; margin-top: 10px; color: #29436e; font-size: 10px; }.remediation-step > span { display: block; margin-top: 3px; color: var(--muted); font-size: 9px; line-height: 1.45; }.remediation-step.overdue,.remediation-step.returned { border-color: #f0aaa3; background: #fff9f8; }.remediation-step.overdue .remediation-step-icon,.remediation-step.returned .remediation-step-icon { color: var(--red); background: var(--red-soft); }.fix-item-owner { display: flex; align-items: center; justify-content: space-between; gap: 7px; }.fix-item-owner .badge { padding: 3px 6px; }.fix-item.sqe { border-left: 3px solid var(--teal); }.fix-item.supplier { border-left: 3px solid #7aa2f7; }.fix-item.overdue { border-color: #f0aaa3; border-left-color: var(--red); background: #fffafa; }.fix-item.overdue b { color: #a6463f; }.fix-item .text-button { margin-top: 8px; font-size: 9px; }.email-reminder { display: inline-flex; margin-top: 7px; font-size: 9px; }
.meeting-layout { display: grid; grid-template-columns: minmax(0,1.25fr) minmax(280px,.75fr); gap: 17px; }.meeting-hero { padding: 21px; color: #fff; background: #14396f; }.meeting-hero .eyebrow { color: #bfdbfe; }.meeting-hero .eyebrow:before { display:none; }.meeting-hero h2 { margin: 7px 0 0; font-size: 20px; }.meeting-hero p { color: #cbdcf5; font-size: 11px; }.meeting-meta { display: flex; gap: 7px; flex-wrap: wrap; margin: 16px 0; }.meeting-meta span,.trip-tags span { padding: 4px 7px; border-radius: 5px; color: #d9e6fb; background: rgba(255,255,255,.1); font-size: 9px; }.meeting-hero .secondary { color:#173e7c; border-color:transparent; background:#bfdbfe; }.meeting-side { padding: 0 16px 13px; }.meeting-upload-row { width:100%; display:grid; grid-template-columns:24px 1fr 15px; align-items:center; gap:9px; padding:11px 0; border:0; border-top:1px solid var(--line); color:#3a5479; background:transparent; text-align:left; }.meeting-upload-row svg { width:16px; color:var(--teal); }.meeting-upload-row b,.meeting-upload-row small { display:block; }.meeting-upload-row b { font-size:10px; }.meeting-upload-row small { margin-top:3px; color:var(--muted); font-size:9px; }.trip-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }.trip-card { display:grid; grid-template-columns:48px 1fr auto; gap:12px; align-items:start; padding:18px; }.trip-date { display:grid; place-items:center; padding:6px 0; border-radius:9px; color:var(--teal-deep); background:var(--teal-soft); }.trip-date strong { font-size:18px; line-height:1; }.trip-date span { margin-top:3px; font-size:8px; font-weight:900; }.trip-card h2 { margin:8px 0 0; font-size:13px; }.trip-card p { margin:5px 0 0; color:#59708f; font-size:10px; line-height:1.6; }.trip-tags { display:flex; gap:5px; flex-wrap:wrap; margin-top:11px; }.trip-tags span { color:#557098; background:#edf4ff; }.trip-card > .text-button { align-self:center; }.trip-summary { display:flex; justify-content:space-between; align-items:center; gap:18px; margin-top:17px; padding:20px; }.trip-summary h2 { margin:7px 0 0; font-size:16px; }.trip-summary p { max-width:580px; margin:6px 0 0; color:#5a7190; font-size:10px; }.trip-summary-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.meeting-filters { display:flex; justify-content:space-between; align-items:end; gap:14px; margin:-6px 0 16px; }.meeting-filters > div { display:grid; gap:5px; }.meeting-filter { min-width:180px; }.meeting-date-label { padding:5px 9px; border-left:2px solid var(--teal); }.meeting-date-label strong { color:var(--teal-deep); font:700 12px Consolas, monospace; }.meeting-calendar-layout { display:grid; grid-template-columns:minmax(440px,1fr) minmax(360px,.82fr); gap:17px; }.calendar-card { padding:18px; }.calendar-head { display:flex; justify-content:space-between; align-items:start; gap:12px; margin-bottom:15px; }.calendar-head .eyebrow:before { display:none; }.calendar-head h2 { margin:5px 0 0; font-size:17px; }.calendar-weekdays,.calendar-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:5px; }.calendar-weekdays { margin-bottom:6px; color:var(--muted); font-size:9px; font-weight:800; text-align:center; }.calendar-day,.calendar-empty { min-height:48px; border:1px solid transparent; border-radius:8px; background:transparent; }.calendar-day { position:relative; color:#435979; font-size:11px; font-weight:800; }.calendar-day:hover { border-color:#a9c5f4; background:#f3f7ff; }.calendar-day.has-meeting { color:var(--teal-deep); background:#edf4ff; }.calendar-day.has-meeting:after { content:""; position:absolute; left:50%; bottom:6px; width:5px; height:5px; border-radius:50%; background:var(--teal); transform:translateX(-50%); }.calendar-day.selected { color:#fff; background:var(--teal); box-shadow:0 4px 10px rgba(37,99,235,.19); }.calendar-day.selected:after { background:#bfdbfe; }.calendar-day i { position:absolute; right:5px; top:4px; display:grid; place-items:center; min-width:13px; height:13px; padding:0 3px; border-radius:7px; color:#fff; background:#ef6460; font-size:8px; font-style:normal; }.calendar-legend { display:flex; gap:14px; margin-top:14px; color:var(--muted); font-size:9px; }.calendar-legend i,.calendar-legend b { display:inline-block; width:7px; height:7px; margin-right:4px; border-radius:50%; background:var(--teal); }.calendar-legend b { border-radius:2px; background:#bfdbfe; }.calendar-agenda { overflow:hidden; }.agenda-item { position:relative; display:grid; grid-template-columns:78px 1fr auto; gap:12px; padding:15px 17px; border-top:1px solid var(--line); }.agenda-time { color:var(--teal-deep); font:700 10px Consolas,monospace; }.agenda-item h3 { margin:7px 0 0; font-size:12px; }.agenda-item p { margin:5px 0 0; color:#566d8e; font-size:10px; line-height:1.6; }.agenda-meta { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }.agenda-meta span { padding:3px 5px; border-radius:4px; color:#557098; background:#edf4ff; font-size:9px; }.agenda-item .text-button { align-self:center; }.meeting-upload-panel { margin-top:17px; padding:0 18px 18px; }.meeting-upload-panel .card-head { padding-left:0; padding-right:0; }.meeting-upload-actions { display:flex; gap:6px; flex-wrap:wrap; }
.agenda-minutes { margin-top:10px; padding:9px 10px; border-left:2px solid var(--teal); border-radius:0 7px 7px 0; background:#f4f8ff; }.agenda-minutes strong { color:var(--teal-deep); font-size:9px; }.agenda-minutes p { margin:4px 0 0; color:#49617f; font-size:9px; line-height:1.6; }.agenda-minutes-button { margin-top:10px; }.minutes-editor,.remediation-editor { min-height:210px; height:auto; padding:10px; resize:vertical; line-height:1.7; }.remediation-editor { min-height:100px; }.attachment-input { height:auto; padding:7px 9px; background:#f8fbff; }.message-board { margin:0 0 18px; padding-top:2px; }.board-title { align-items:end; }.board-search { width:min(320px,48%); }.board-grid { display:grid; grid-template-columns:minmax(0,1.12fr) minmax(330px,.88fr); gap:17px; }.board-card { overflow:hidden; }.board-card .card-head { border-bottom:1px solid var(--line); }.board-feed { padding:0 17px; }.board-feed-item { width:100%; display:grid; grid-template-columns:76px 1fr 15px; gap:9px; align-items:start; padding:12px 0; border:0; border-bottom:1px solid var(--line); color:#3e5576; background:transparent; text-align:left; }.board-feed-item:last-child { border-bottom:0; }.board-feed-item:hover .board-content { color:var(--teal); }.board-feed-item svg { width:14px; margin-top:2px; color:var(--teal); }.board-time { color:#8193ad; font:9px Consolas,monospace; }.board-content { color:#4a5f7c; font-size:10px; line-height:1.55; }.board-content b { color:#233d64; }.board-content small { display:block; margin-top:3px; color:#8495af; font-size:9px; }.free-message { display:flex; gap:8px; padding:11px 0; border-bottom:1px solid var(--line); }.free-message:last-child { border-bottom:0; }.free-message .avatar { width:25px; height:25px; font-size:9px; }.free-message b { color:#284469; font-size:10px; }.free-message time { margin-left:6px; color:#8a9bb2; font-size:9px; }.free-message p { margin:4px 0 0; color:#506786; font-size:10px; line-height:1.55; }.board-compose { margin:0 17px 15px; padding-top:12px; border-top:1px solid var(--line); }.board-compose textarea { min-height:60px; }.board-compose > div { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:7px; }.board-empty { padding:18px 0; }
.quality-period { display:flex; justify-content:space-between; align-items:center; gap:18px; margin-bottom:17px; padding:15px 17px; border:1px solid #d7e5fb; border-radius:12px; background:#f7faff; }.quality-period b,.quality-period span { display:block; }.quality-period > div:first-child b { color:#183a75; font-size:13px; }.quality-period > div:first-child span { margin-top:5px; color:#657b9d; font-size:10px; }.quality-period-current { display:grid; grid-template-columns:repeat(6,auto); gap:5px 8px; align-items:baseline; }.quality-period-current b { color:#2563eb; font-size:17px; }.quality-period-current span { color:#7185a4; font-size:9px; }.quality-block { margin-top:18px; padding:19px; border:1px solid #d7e5fb; border-radius:13px; background:#fff; }.quality-block .section-title { margin-bottom:15px; }.quality-block h2 { margin:0; color:#18355f; font-size:15px; }.quality-block p { margin:4px 0 0; color:#7184a2; font-size:10px; }.quality-visual-grid { display:grid; grid-template-columns:minmax(360px,1.05fr) minmax(300px,.95fr); gap:13px; }.quality-carousel { width:100%; min-height:184px; padding:16px; border:1px solid #d7e5fb; border-radius:11px; color:#234775; background:linear-gradient(145deg,#f8fbff,#eaf2ff); text-align:left; }.quality-carousel:hover { border-color:#89b3f5; box-shadow:0 8px 22px rgba(37,99,235,.11); }.quality-carousel-head { display:flex; justify-content:space-between; gap:10px; align-items:start; }.quality-carousel-head .eyebrow { font-size:9px; }.quality-carousel-head h3 { margin:5px 0 0; color:#183a75; font-size:14px; }.quality-chart-switch { display:flex; justify-content:space-between; gap:8px; margin-top:10px; }.segmented { display:inline-flex; padding:3px; border-radius:8px; background:#e7effd; }.segmented button { padding:4px 7px; border:0; border-radius:5px; color:#587092; background:transparent; font-size:9px; font-weight:800; }.segmented button.active { color:#174dbe; background:#fff; box-shadow:0 1px 4px rgba(37,99,235,.15); }.quality-bars { height:100px; display:grid; grid-template-columns:repeat(6,1fr); gap:9px; align-items:end; margin-top:10px; padding:0 3px; border-bottom:1px solid #bfd3f4; }.quality-bars > div { height:100%; display:flex; flex-direction:column; align-items:center; justify-content:end; gap:3px; }.quality-bars i { width:65%; min-height:10px; border-radius:5px 5px 0 0; background:linear-gradient(#4f8af4,#2563eb); }.quality-bars b { color:#1f467d; font-size:9px; }.quality-bars span { color:#7387a5; font-size:8px; }.quality-line-wrap { margin-top:10px; }.quality-line { width:100%; height:100px; overflow:visible; }.quality-line line { stroke:#bfd3f4; stroke-width:1; }.quality-line polyline { fill:none; stroke:#2563eb; stroke-width:3; stroke-linecap:round; stroke-linejoin:round; }.quality-line circle { fill:#fff; stroke:#2563eb; stroke-width:3; }.quality-line text { fill:#1f467d; font-size:11px; font-weight:800; text-anchor:middle; }.quality-chart-labels { display:grid; grid-template-columns:repeat(6,1fr); margin-top:-1px; color:#7387a5; font-size:8px; text-align:center; }.quality-dots { display:flex; align-items:center; gap:5px; margin-top:10px; }.quality-dots small { margin-left:auto; color:#8193ad; font-size:8px; }.quality-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }.quality-summary .stat { min-height:0; padding:13px; }.quality-summary .stat strong { font-size:21px; }.quality-summary .stat small { min-height:0; }.quality-tables { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:11px; margin-top:13px; }.quality-metric-table { overflow:auto; padding:13px; }.quality-metric-table header { display:flex; justify-content:space-between; align-items:center; gap:6px; margin-bottom:10px; }.quality-metric-table h3 { margin:0; color:#294a78; font-size:11px; }.quality-metric-table table { width:100%; border-collapse:collapse; }.quality-metric-table th,.quality-metric-table td { padding:7px 6px; border-top:1px solid #e1ebfb; color:#496381; font-size:9px; text-align:center; white-space:nowrap; }.quality-metric-table th:first-child,.quality-metric-table tbody th { text-align:left; color:#294a78; }.quality-chart-modal { width:min(860px,100%); }.quality-chart-large .quality-carousel { min-height:245px; }.quality-chart-large .quality-bars { height:150px; }.quality-chart-large .quality-line { height:150px; }

@media (max-width: 900px) { .remediation-flow { grid-template-columns: 1fr; gap: 9px; }.remediation-step { min-height: auto; }.remediation-step:not(:last-child):after,.remediation-step:not(:last-child):before { display:none; }.meeting-layout,.meeting-calendar-layout,.trip-grid,.board-grid,.quality-visual-grid,.quality-tables { grid-template-columns:1fr; }.trip-summary { display:block; }.trip-summary-actions { justify-content:flex-start; margin-top:14px; } }
@media (max-width: 560px) { .meeting-filters,.board-title,.quality-period { align-items:start; flex-direction:column; }.meeting-calendar-layout { grid-template-columns:1fr; }.calendar-day,.calendar-empty { min-height:40px; }.agenda-item { grid-template-columns:1fr; gap:7px; }.agenda-item .text-button { justify-self:start; }.meeting-upload-panel { padding-left:14px; padding-right:14px; }.board-search { width:100%; }.quality-summary { grid-template-columns:1fr; }.quality-period-current { grid-template-columns:repeat(3,auto); } }

/* 提升协同门户的整体阅读尺寸，同时保持原有页面层级与布局。 */
body { font-size: 16px; }
.brand-main { font-size: 18px; }.brand-sub,.eyebrow { font-size: 11px; }
.nav-item,.btn,.field,.filter,.form-input,textarea { font-size: 12px; }
.btn { min-height: 38px; padding-inline: 14px; }.btn-small { min-height: 32px; }
.page-head h1 { font-size: 30px; }.page-head p,.card-head p,.label { font-size: 11px; }
.card-head h2,.section-title h3 { font-size: 16px; }.issue-title,.agenda-item h3 { font-size: 14px; }
.form-input { min-height: 40px; }.form-field label { font-size: 11px; }.form-field textarea { min-height: 88px; }
.data-table th,.data-table td,.queue-row,.board-content,.free-message p,.file-meta { font-size: 11px; }
.supplier-search { background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%232563eb' stroke-width='1.8' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='6'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat right 11px center; padding-right: 36px; }
.board-recipient { display: flex; align-items: center; gap: 8px; margin-bottom: 9px; }.board-recipient .supplier-search { flex: 1; }
.notice { display: none; }
.board-filter { display: flex; align-items: center; gap: 8px; padding: 11px 17px; border-bottom: 1px solid var(--line); }.board-filter label { color: var(--muted); font-size: 11px; font-weight: 800; white-space: nowrap; }.board-filter .form-input { flex: 1; }.reply-board { margin-top: 6px; font-size: 10px; }
.description-image { padding: 0; cursor: zoom-in; }.image-preview-modal { width: min(900px, 100%); }.image-preview-body { display: grid; place-items: center; max-height: calc(100vh - 160px); padding: 18px; background: #f5f8fd; }.image-preview-body img { display: block; max-width: 100%; max-height: calc(100vh - 220px); object-fit: contain; border-radius: 9px; box-shadow: var(--shadow); }
.remediation-vertical { display: grid; gap: 8px; margin-bottom: 16px; }.remediation-vertical .remediation-step { min-height: auto; display: grid; grid-template-columns: 34px minmax(0,1fr); column-gap: 10px; align-items: center; }.remediation-vertical .remediation-step-top { display: block; grid-row: 1 / span 2; }.remediation-vertical .remediation-step-top .badge { display: none; }.remediation-vertical .remediation-step strong { margin: 0; }.remediation-vertical .remediation-step > span { margin: 3px 0 0; }.remediation-vertical .remediation-step:not(:last-child):after { top: auto; bottom: -9px; left: 16px; width: 1px; height: 9px; }.remediation-vertical .remediation-step:not(:last-child):before { top: auto; right: auto; bottom: -10px; left: 13px; transform: rotate(135deg); }.process-records { display: grid; gap: 8px; }.process-record { position: relative; display: grid; grid-template-columns: 32px minmax(0,1fr) auto; gap: 10px; align-items: center; padding: 12px 13px; border: 1px solid #d7e5fb; border-radius: 10px; background: #fbfdff; }.process-record:not(:last-child):after { content: ""; position: absolute; left: 28px; bottom: -9px; width: 1px; height: 9px; background: #8fb5f2; }.process-record:not(:last-child):before { content: ""; position: absolute; z-index: 1; left: 25px; bottom: -10px; width: 6px; height: 6px; border-right: 1px solid #4d80df; border-bottom: 1px solid #4d80df; transform: rotate(45deg); }.process-record-index { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 8px; color: var(--teal-deep); background: var(--teal-soft); font-weight: 900; }.process-record-main b { display: block; margin-top: 4px; color: #29436e; font-size: 12px; line-height: 1.55; }.process-record-action { align-self: center; }
.process-timeline { display: grid; gap: 9px; }.process-timeline-row { display: grid; grid-template-columns: 34px 1fr; gap: 11px; padding: 12px; border: 1px solid #d7e5fb; border-radius: 10px; color: #677d9e; background: #fbfdff; }.process-timeline-row > span { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; color: #52719d; background: #eaf2ff; font-size: 11px; font-weight: 900; }.process-timeline-row b { color: inherit; font-size: 12px; }.process-timeline-row p { margin: 3px 0 0; font-size: 11px; }.process-timeline-row.done,.process-timeline-row.current { border-color: #a8c7fb; color: #174dbe; background: #f4f8ff; }.process-timeline-row.done > span { color: #fff; background: #2563eb; }.process-timeline-row.current > span { color: #174dbe; background: #bfdbfe; box-shadow: 0 0 0 4px #e6efff; }

/* 本轮细节交互：问题图片粘贴、仅 SQE 备注、头像与质量数据范围。 */
.image-paste-zone { width: 100%; min-height: 68px; margin-top: 11px; border: 1px dashed #8fb5f2; border-radius: 10px; color: #2563eb; background: #f7faff; font-size: 12px; font-weight: 800; text-align: center; }.image-paste-zone:hover,.image-paste-zone:focus { border-color: #2563eb; outline: 0; background: #edf4ff; box-shadow: 0 0 0 3px rgba(37,99,235,.10); }
.internal-note-editor { min-height: 112px; line-height: 1.65; background: #fbfdff; }.note-actions { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 9px; }
.quality-supplier-filter { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-bottom: 16px; padding: 14px 17px; border: 1px solid #d7e5fb; border-radius: 12px; background: #fff; }.quality-supplier-filter > div { display: grid; gap: 3px; min-width: 140px; }.quality-supplier-filter b { color: #183a75; font-size: 14px; }.quality-supplier-filter .supplier-search,.quality-supplier-filter .supplier-filter { width: min(440px, 100%); }
.avatar { overflow: hidden; }.profile-avatar img,.avatar-large img { width: 100%; height: 100%; display: block; object-fit: cover; }.avatar-setting { display: flex; align-items: center; gap: 13px; margin-bottom: 16px; padding: 13px; border: 1px solid #d7e5fb; border-radius: 11px; background: #f8fbff; }.avatar-large { width: 58px; height: 58px; flex: 0 0 58px; font-size: 20px; }.avatar-setting b { display: block; color: #1f3d70; font-size: 13px; }.avatar-setting p { margin: 4px 0 8px; color: #647995; font-size: 10px; }.avatar-upload-button { position: relative; overflow: hidden; }.avatar-upload-button input { position: absolute; inset: 0; width: 100%; opacity: 0; cursor: pointer; }
.close-issue-modal { width: min(650px, 100%); border: 1px solid #d7e5fb; }.close-issue-modal .modal-head { color: #fff; border-color: rgba(255,255,255,.18); background: linear-gradient(135deg,#123d7b,#2563d9); }.close-issue-modal .modal-head h2,.close-issue-modal .modal-head p { color: #fff; }.close-issue-modal .modal-close { color: #234b88; background: #eaf2ff; }.close-editor { min-height: 128px; line-height: 1.65; }
@media (max-width: 720px) { .quality-supplier-filter { align-items: stretch; flex-direction: column; }.quality-supplier-filter .supplier-search,.quality-supplier-filter .supplier-filter { width: 100%; }.note-actions { align-items: flex-start; flex-direction: column; } }

/* 质量指标为空或接口失败时，明确显示不可用状态，不以零值替代。 */
.quality-unavailable-period { border-color: #d7e5fb; background: #fbfdff; }.quality-unavailable-period .quality-period-current b { color: #7a8ca8; }.quality-state-message { margin-bottom: 16px; padding: 11px 14px; border: 1px solid #d7e5fb; border-radius: 10px; color: #587092; background: #f7faff; font-size: 12px; line-height: 1.6; }.quality-state-message.is-error { border-color: #f4b6b2; color: #b42318; background: #fff6f5; }.quality-empty-chart { display: grid; grid-template-rows: auto 1fr; }.quality-empty-chart-body { display: grid; place-items: center; min-height: 114px; color: #7e90ab; font-size: 32px; font-weight: 800; }.quality-empty-chart-body small { display: block; margin-top: -28px; color: #8293ad; font-size: 10px; font-weight: 500; }.quality-unavailable-note { margin: 10px 0 0; color: #8191aa; font-size: 10px; line-height: 1.55; }

/* 2026-07-14: 工业质量控制台 × 高管概览视觉层；不改变既有页面结构与交互。 */
:root {
  --ink: #142b50;
  --muted: #667995;
  --line: #dce5f2;
  --canvas: #f5f7fb;
  --paper: #ffffff;
  --teal: #2563eb;
  --teal-deep: #123b78;
  --teal-soft: #eaf1ff;
  --lime: #cfe0ff;
  --amber: #ad6811;
  --amber-soft: #fff3df;
  --red: #bf4c4c;
  --red-soft: #fceded;
  --blue: #295eac;
  --blue-soft: #eaf1fd;
  --violet: #6552a7;
  --violet-soft: #f1edfc;
  --shadow: 0 8px 24px rgba(18, 59, 120, .07), 0 1px 3px rgba(18, 59, 120, .05);
  --radius: 10px;
}

body { color: var(--ink); background: var(--canvas); font-family: "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif; }
.topbar { height: 60px; padding: 0 28px; border-color: #d9e2ef; background: #fff; box-shadow: 0 1px 0 rgba(16,42,86,.04); }
.brand { gap: 9px; color: #102a56; }.brand-mark { width: 33px; height: 33px; border-radius: 8px; color: #fff; background: #123b78; }.brand-main { font-size: 16px; }.brand-sub { color: #7890b1; }
.role-select,.icon-button { border-color: #dbe4f0; background: #f8faff; }.role-select { color: #193c70; }.icon-button { color: #49698f; }.profile { border-color: #dce5ef; }.avatar { color: #174dbe; background: #e4eeff; }
.workspace { min-height: calc(100vh - 60px); }.sidebar { width: 208px; flex-basis: 208px; padding: 18px 10px 16px; border-color: #173d75; color: #dce9ff; background: #082c62; }
.nav-caption { margin: 0 10px 9px; color: #87a3cf; }.nav-block + .nav-block { margin-top: 13px; }
.nav-item { min-height: 40px; margin: 2px 0; padding: 0 11px; border-radius: 7px; color: #c7d8f4; font-size: 12px; }.nav-item:hover { color: #fff; background: rgba(255,255,255,.09); }.nav-item.active { color: #fff; background: #2563eb; box-shadow: 0 6px 16px rgba(0,0,0,.16); }
.nav-count { color: #a62f2f; background: #ffe0df; }.nav-security { border-color: rgba(207,224,255,.18); color: #a9bfdf; }.nav-security svg { color: #8bb4ff; }
.main { max-width: none; padding: 28px 36px 46px; }.page-head { margin-bottom: 20px; }.page-head h1 { color: #102a56; font-size: 31px; letter-spacing: -.045em; }.page-head p { color: #6b7e9b; }.eyebrow { color: #2f6fed; }.eyebrow:before { background: #c4d9ff; }
.btn { min-height: 38px; border-radius: 8px; font-weight: 800; }.primary { background: #2563eb; box-shadow: 0 5px 12px rgba(37,99,235,.18); }.primary:hover { background: #174dbe; }.secondary { border-color: #d4dfec; color: #244977; background: #fff; }.secondary:hover { border-color: #7da6ec; color: #174dbe; }.danger { color: #b13d3d; background: #fdecEC; }.disabled { color: #8493a9; background: #f3f6fa; border-color: #e0e7f0; }
.notice { display: flex; margin-bottom: 18px; border: 1px solid #173d75; border-radius: 10px; background: #123b78; box-shadow: none; }.notice:after { border-color: rgba(207,224,255,.28); box-shadow: 0 0 0 25px rgba(207,224,255,.06), 0 0 0 50px rgba(207,224,255,.035); }.notice span { color: #cbdcf6; }.notice .eyebrow,.dash-overline { color: #cfe0ff; }.lime { color: #123b78; background: #cfe0ff; }
.card { border-color: #dce5f2; border-radius: 10px; box-shadow: 0 2px 5px rgba(18,59,120,.025); }.stat { min-height: 122px; padding: 17px; }.stat-top { color: #526a8c; }.stat-icon { color: #2563eb; background: #eaf1ff; }.stat strong { color: #102a56; }.stat small { color: #7184a2; }
.card-head { padding: 17px 18px 14px; }.card-head h2,.section-title h3 { color: #18355f; }.card-head p { color: #7184a2; }.text-button,.file-link { color: #2563eb; }.queue,.activity-row,.data-table td,.detail-head,.detail-tabs,.section,.side-card h2 { border-color: #e1e8f2; }.queue-row:hover,.data-row:hover td { background: #f8fbff; }.issue-title,.table-name,.value { color: #17345e; }.issue-sub,.table-sub,.label { color: #7184a2; }
.tabs { padding: 4px; border-radius: 8px; background: #e9f0fd; }.tab { color: #5d7598; }.tab.active { color: #174dbe; background: #fff; box-shadow: 0 1px 4px rgba(18,59,120,.12); }
.field,.filter,.form-input,textarea { border-color: #cedbea; color: #243f67; background: #fff; }.field:focus,.filter:focus,.form-input:focus,textarea:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.11); }.data-table th { color: #647b9c; background: #f7faff; }.data-table td { color: #365071; }.table-wrap { border-color: #dce5f2; border-radius: 10px; }.empty { color: #788ba7; }
.detail-top h1 { color: #102a56; }.detail-tab.active { border-color: #2563eb; color: #174dbe; }.copy-box,.comment-text { color: #4f6688; background: #f5f8fe; }.fix-item,.file-row,.process-record,.process-timeline-row { border-color: #dbe6f5; background: #fff; }.file-icon { color: #2563eb; background: #eaf1ff; }.timeline-row:not(:last-child):before { background: #d8e3f2; }.timeline-dot { border-color: #2563eb; }.timeline-dot.done { background: #2563eb; }
.quality-supplier-filter,.quality-period,.quality-block { border-color: #d9e5f6; background: #fff; }.quality-supplier-filter { padding: 15px 17px; border-radius: 10px; }.quality-supplier-filter b,.quality-period > div:first-child b,.quality-block h2 { color: #173e75; }.quality-period { background: #f7faff; }.quality-carousel { border-color: #d5e2f6; border-radius: 10px; background: #f8fbff; }.quality-carousel:hover { border-color: #86aef2; box-shadow: none; }.quality-metric-table { border: 1px solid #dce6f5; border-radius: 9px; }.quality-metric-table th,.quality-metric-table td { border-color: #e6edf7; }.quality-summary .stat { border-color: #dce6f5; }.quality-state-message { border-left: 3px solid #d38a2d; border-radius: 8px; background: #fffaf1; color: #65512f; }.quality-state-message.is-error { border-left-color: #c44b4b; }
.meeting-hero,.report-hero { border-radius: 10px; background: #123b78; }.calendar-card,.calendar-agenda { border-color: #dce5f2; }.calendar-day.selected { background: #2563eb; }.calendar-day.has-meeting { background: #edf4ff; }.agenda-minutes { border-color: #2563eb; background: #f5f8ff; }.board-card .card-head { border-color: #e1e8f2; }.board-feed-item { color: #405978; border-color: #e1e8f2; }.board-content b,.free-message b { color: #183d74; }
.modal-backdrop { background: rgba(8, 35, 78, .55); }.modal { border: 1px solid #dce5f2; border-radius: 14px; box-shadow: 0 22px 70px rgba(7,30,67,.28); }.modal-head { border-color: #dce5f2; }.modal-close { color: #42668e; background: #eef4ff; }
.public { background: #f5f7fb; }.public-nav { border-color: #dce5f2; }.public-hero:after { border-color: #d8e5fb; box-shadow: 0 0 0 34px rgba(221,234,255,.55), 0 0 0 70px rgba(221,234,255,.3); }.hero-dashboard { border-radius: 14px; background: #123b78; transform: none; box-shadow: 0 18px 38px rgba(18,59,120,.2); }.mini-chart i { background: #4f83e8; }.mini-chart i:nth-child(even) { background: #a9c8ff; }.public-strip { background: #dce6f4; }.strip-cell { background: #f5f7fb; }

@media (max-width: 1050px) { .sidebar { width: 188px; flex-basis: 188px; }.main { padding: 24px 24px 40px; } }
@media (max-width: 720px) {
  .topbar { height: 56px; padding: 0 14px; }.workspace { min-height: calc(100vh - 56px); }.sidebar { width: 100%; min-height: 54px; padding: 7px 8px; border-right: 0; border-bottom: 1px solid #dce5f2; background: #082c62; }.nav-item { min-height: 34px; margin: 0; }.main { padding: 22px 14px 36px; }.page-head h1 { font-size: 27px; }.notice { padding: 16px; }.stat { min-height: 108px; }.quality-supplier-filter { padding: 13px; }.quality-block { padding: 14px; }.quality-metric-table { overflow-x: auto; }
}

/* 预约协同：状态、参会人员和审核动作沿用现有日历/弹窗视觉语言。 */
.agenda-actions { display: grid; align-content: start; justify-items: end; gap: 8px; min-width: 102px; }
.agenda-item > div:nth-child(2) { min-width: 0; }
.reservation-status { margin-right: 5px; }
.attendee-meta { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px 12px; margin-top: 9px; }
.attendee-meta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #5a7396; }
.attendee-meta b { color: #244d80; }
.reservation-reason { margin: 8px 0 0; padding: 7px 9px; border-left: 3px solid #e1a342; border-radius: 0 6px 6px 0; color: #8a5c1d; background: #fff8ea; font-size: 11px; line-height: 1.55; }
.readonly-field { display: grid; gap: 4px; min-height: 42px; padding: 10px 12px; border: 1px solid #d5e4f3; border-radius: 8px; color: #214b7b; background: #f7fbff; font-weight: 800; }
.readonly-field small { color: #6d88a7; font-size: 10px; font-weight: 500; }
.attendee-editor { margin-top: 16px; padding-top: 16px; border-top: 1px solid #e1e8f2; }
.reservation-modal { width: min(560px,calc(100vw - 32px)); }
.reservation-modal .modal-body { display: grid; gap: 16px; }
.reservation-reschedule-fields { margin-top: 4px; }
.meeting-detail-grid .reservation-status { display: inline-flex; width: max-content; }
.reservation-detail { display: grid; gap: 10px; }.reservation-detail-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }.reservation-attendees { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }.reservation-attendees span { display: grid; gap: 4px; padding: 9px 10px; border-radius: 7px; color: #536f92; background: #f8fbff; font-size: 12px; }.reservation-attendees b { color: #214d81; font-size: 11px; }

/* 质量趋势横轴使用与 SVG 数据点完全一致的坐标，周期数不再固定为 6。 */
.quality-bars { grid-template-columns: repeat(var(--quality-points, 6), 1fr); }
.quality-chart-labels-absolute { position: relative; display: block; height: 16px; margin-top: -1px; }
.quality-chart-labels-absolute span { position: absolute; top: 0; transform: translateX(-50%); white-space: nowrap; }

/* 文字色统一：保留蓝色背景、选中态与图表线条，仅将蓝色文字收敛为深黑。 */
.brand,.brand-main,.brand-sub,.top-actions,.profile strong,.profile-copy span,
.sidebar,.nav-caption,.nav-item,.nav-item.active,.nav-item:hover,.nav-security,
.page-head h1,.page-head p,.eyebrow,.card-head h2,.card-head p,.section-title h2,.section-title h3,
.issue-title,.table-name,.table-sub,.issue-sub,.value,.label,.detail-top h1,.detail-body .value,
.detail-body .section-title h3,.detail-body .copy-box,.detail-body .issue-editor,.detail-tab.active,
.text-button,.file-link,.back,.copy-issue-no,.issue-detail-no,.issue-detail-meta,.issue-detail-meta b,
.queue-date b,.queue-main .issue-title,.queue-meta,.queue-meta .mono,.issue-no-line .table-sub,
.quality-period b,.quality-period span,.quality-block h2,.quality-supplier-filter b,
.quality-carousel,.quality-carousel-head h3,.quality-metric-table h3,.quality-metric-table th,.quality-metric-table td,
.quality-bars b,.quality-line text,.agenda-time,.agenda-item h3,.agenda-item p,.agenda-meta span,
.meeting-detail-grid b,.meeting-detail-section > p,.meeting-minutes-preview p,.meeting-edit-readonly b,
.meeting-edit-readonly p,.board-content,.board-content b,.free-message b,.free-message p,
.readonly-field,.readonly-field small,.attendee-meta b,.attendee-meta span,.reservation-attendees b,
.reservation-attendees span { color: #171717; }

.secondary,.secondary:hover,.role-select,.icon-button,.form-input,.field,.filter,
.meeting-link-button,.attachment-input::file-selector-button { color: #171717; }
.badge.blue { color: #171717; }

@media (max-width: 720px) {
  .agenda-item { grid-template-columns: 1fr; gap: 9px; }
  .agenda-actions { display: flex; flex-wrap: wrap; justify-items: start; min-width: 0; }
  .attendee-meta { grid-template-columns: 1fr; }
  .reservation-attendees { grid-template-columns: 1fr; }
}

/* 2026-07-14：工作台信息强调、问题编号与流程状态。 */
.tabs { gap: 4px; padding: 5px; }.tab { padding: 8px 14px; font-size: 12px; }.tab.active { font-weight: 900; }
.type.ncr,.type.psr,.type.fa,.type.site { color: #177245; background: #e4f5eb; }.type { padding: 5px 9px; border-radius: 6px; font-size: 10px; }
.queue-row-priority { grid-template-columns: 104px minmax(0,1fr) auto; gap: 15px; padding: 16px 18px; }.queue-date { display: grid; align-content: center; gap: 5px; min-height: 48px; padding-right: 12px; border-right: 1px solid #e0e8f3; }.queue-date b { color: #153e78; font: 800 14px/1.2 Consolas,"SFMono-Regular",monospace; }.queue-date span { color: #b34b32; font-size: 10px; font-weight: 800; }.queue-main { min-width: 0; }.queue-main .type { margin-bottom: 7px; }.queue-main .issue-title { color: #102a56; font-size: 16px; font-weight: 900; white-space: normal; }.queue-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 9px; margin-top: 7px; color: #5e7599; font-size: 11px; }.queue-meta .mono { color: #244f90; font-size: 12px; font-weight: 900; }.copy-issue-no { display: inline-flex; align-items: center; justify-content: center; min-height: 24px; padding: 0 7px; border: 1px solid #bfd1ed; border-radius: 5px; color: #1d5ec4; background: #f7faff; font-size: 10px; font-weight: 800; }.copy-issue-no:hover { border-color: #2563eb; background: #eaf1ff; }.queue-side { gap: 8px; font-size: 11px; }
.issue-no-line { display: flex; align-items: center; gap: 7px; margin-top: 6px; }.issue-no-line .table-sub { color: #174dbe; font-size: 12px; font-weight: 900; }.data-table td { padding-top: 15px; padding-bottom: 15px; }.data-table .table-name { color: #102a56; font-size: 14px; font-weight: 900; }.data-table .table-sub { font-size: 11px; }.issue-priority { color: #315576; font-size: 12px; font-weight: 800; }.issue-priority.is-overdue { color: #b43f3f; }.data-table .badge { font-size: 10px; padding: 5px 8px; }
.board-feed-item { grid-template-columns: 80px minmax(0,1fr) 18px; gap: 12px; padding: 15px 0; }.board-time { display: grid; gap: 4px; color: #60799f; font-family: Consolas,"SFMono-Regular",monospace; }.board-time b { color: #174dbe; font-size: 12px; }.board-time small { color: #7489a8; font: 700 10px/1.35 "Microsoft YaHei",sans-serif; }.board-content { color: #405878; font-size: 12px; line-height: 1.65; }.board-content b { color: #102a56; font-size: 13px; font-weight: 900; }.board-content strong { display: block; margin-top: 3px; color: #224d8c; font-size: 13px; font-weight: 800; }.board-content small { color: #7185a2; font-size: 10px; }.free-message { gap: 10px; padding: 14px 0; }.free-message .avatar { width: 31px; height: 31px; font-size: 11px; }.free-message b { color: #102a56; font-size: 13px; font-weight: 900; }.free-message time { color: #7489a8; font-size: 10px; }.free-message p { color: #245ea9; font-size: 13px; line-height: 1.65; }.message-avatar img { width: 100%; height: 100%; border-radius: inherit; object-fit: cover; }.board-filter { padding-block: 13px; }.board-compose textarea { min-height: 72px; }
.image-paste-zone { min-height: 44px; margin-top: 9px; padding: 0 12px; border-radius: 8px; font-size: 11px; }.image-paste-zone:before { content: "支持图片粘贴"; margin-right: 8px; color: #6781a5; font-size: 10px; font-weight: 700; }
.issue-identity { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }.issue-detail-no { color: #174dbe; font-size: 15px; font-weight: 900; }.detail-top h1 { margin-top: 10px; color: #102a56; font-size: 25px; line-height: 1.32; }.issue-detail-meta { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 10px; color: #587094; font-size: 12px; }.issue-detail-meta b { color: #183d74; font-weight: 900; }.detail-status-row { display: flex; gap: 7px; margin-top: 11px; }.detail-status-row .badge { padding: 5px 8px; font-size: 10px; }.detail-body .info-grid { gap: 20px; }.detail-body .label { font-size: 11px; }.detail-body .value { color: #183d74; font-size: 14px; line-height: 1.6; }.detail-body .section-title h3 { font-size: 17px; }.detail-body .copy-box,.detail-body .issue-editor { font-size: 14px; line-height: 1.8; }.detail-body .issue-editor { min-height: 86px; }.process-record { padding: 14px 15px; }.process-record-index { width: 30px; height: 30px; font-size: 14px; }.process-record-main .label { font-size: 11px; }.process-record-main b { color: #173e75; font-size: 14px; }.process-heading span:first-child { color: #173e75; font-size: 14px; font-weight: 900; }

/* 2026-07-14：全页阅读层级收口，突出编号、状态和会议关键内容。 */
.nav-caption { color: #9dc2f6; font-size: 11px; }.nav-item { min-height: 44px; color: #d3e4ff; font-size: 14px; font-weight: 800; }.nav-item svg { width: 17px; height: 17px; }.nav-count { font-size: 11px; }.nav-security { font-size: 12px; }
.btn,.field,.filter,.form-input,textarea { font-size: 13px; }.card-head h2,.section-title h3 { font-size: 18px; }.card-head p,.label,.file-meta { font-size: 12px; }.text-button,.file-link { font-size: 12px; }.data-table th { font-size: 12px; }.data-table td { font-size: 13px; }.data-table .table-name { font-size: 15px; }.data-table .table-sub { font-size: 12px; }
.issue-no-line .table-sub { min-height: 24px; display: inline-flex; align-items: center; color: #1d5ec4; font: 800 10px/1 "Microsoft YaHei","Noto Sans SC",sans-serif; }.copy-issue-no { font-family: "Microsoft YaHei","Noto Sans SC",sans-serif; }.queue-meta .mono { font: 800 10px/1 "Microsoft YaHei","Noto Sans SC",sans-serif; }
.detail-tab { padding: 16px 2px 13px; font-size: 16px; line-height: 1.2; }.detail-tabs { gap: 26px; }.detail-body .label { font-size: 12px; }.detail-body .value { font-size: 15px; }.detail-body .section-title h3 { font-size: 19px; }.detail-body .copy-box,.detail-body .issue-editor { font-size: 15px; }.process-record-main b { font-size: 15px; }.process-timeline-row b { font-size: 14px; }.process-timeline-row p { font-size: 12px; }
.agenda-time { font-size: 12px; }.agenda-item h3 { font-size: 16px; }.agenda-item p { font-size: 12px; }.agenda-meta span { font-size: 11px; }.meeting-date-label strong { font-size: 14px; }.calendar-head h2 { font-size: 19px; }.calendar-weekdays,.calendar-legend { font-size: 11px; }.calendar-day { font-size: 13px; }
.meeting-detail-modal { width: min(760px,calc(100vw - 32px)); }.meeting-detail-modal .modal-body { padding-top: 20px; }.meeting-detail-loading { padding: 34px 0; color: #617a9c; font-size: 14px; text-align: center; }.meeting-detail-content { display: grid; gap: 18px; }.meeting-detail-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }.meeting-detail-grid > div { display: grid; gap: 6px; padding: 13px; border: 1px solid #dce6f5; border-radius: 9px; background: #f8fbff; }.meeting-detail-grid b { color: #163d78; font-size: 14px; line-height: 1.45; }.meeting-detail-section { padding-top: 16px; border-top: 1px solid #e1e8f2; }.meeting-detail-section > p,.meeting-minutes-preview p { margin: 7px 0 0; color: #345474; font-size: 14px; line-height: 1.75; white-space: pre-wrap; }.meeting-minutes-preview { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; }.meeting-detail-file { padding: 11px 12px; }.meeting-link-button { margin-top: -2px; justify-self: start; }
.meeting-detail-actions { display: flex; justify-content: flex-end; padding: 0 22px 14px; }.meeting-edit-modal { width: min(780px,calc(100vw - 32px)); }.meeting-edit-modal .modal-body { display: grid; gap: 18px; }.meeting-edit-modal .form-grid { gap: 14px; }.meeting-edit-modal textarea { min-height: 104px; }.meeting-minutes-field { padding-top: 16px; border-top: 1px solid #e1e8f2; }.meeting-edit-readonly { display: grid; gap: 7px; padding: 14px; border: 1px solid #dce6f5; border-radius: 10px; background: #f8fbff; }.meeting-edit-readonly b { color: #183d74; font-size: 15px; }.meeting-edit-readonly p { margin: 0; color: #405d7f; font-size: 14px; line-height: 1.65; }

/* 日历与附件控件统一采用白色工作区和浅天蓝导航。 */
body,.app-shell,.main { background: #fff; }.sidebar { border-color: #cfe5fb; color: #24527c; background: #eaf6ff; }.nav-caption { color: #6f9cc5; }.nav-item { color: #2e608c; }.nav-item:hover { color: #174d7d; background: #dcefff; }.nav-item.active { color: #0d4d82; background: #fff; box-shadow: 0 5px 14px rgba(61,129,183,.16); }.nav-security { border-color: #c6e1f8; color: #628db4; }.nav-security svg { color: #3f89c8; }.workspace { background: #fff; }
input[type="file"].form-input { min-height: 44px; padding: 5px 8px; color: #5e7899; background: #f9fcff; cursor: pointer; }.attachment-input::file-selector-button { min-height: 32px; margin-right: 10px; padding: 0 12px; border: 1px solid #9dc2e8; border-radius: 7px; color: #155b9c; background: #eaf5ff; font: 800 12px "Microsoft YaHei","Noto Sans SC",sans-serif; cursor: pointer; }.attachment-input::file-selector-button:hover { border-color: #4b93d1; background: #d9efff; }
.calendar-head-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; }.calendar-month-controls { display: inline-flex; align-items: center; gap: 5px; padding: 3px; border: 1px solid #d6e6f6; border-radius: 8px; background: #f8fbff; }.calendar-month-controls strong { min-width: 92px; color: #174a7e; font-size: 13px; text-align: center; }.calendar-month-controls .icon-button { width: 28px; height: 28px; min-height: 28px; padding: 0; border: 0; color: #1d65a5; background: transparent; font-size: 20px; line-height: 1; }.calendar-month-controls .icon-button:hover { background: #e4f2ff; }.planning-modal { width: min(780px,calc(100vw - 32px)); }.planning-modal .modal-body { padding-top: 20px; }.planning-modal textarea { min-height: 102px; }

@media (max-width: 720px) {
  .queue-row-priority { grid-template-columns: 1fr; gap: 9px; }.queue-date { display: flex; align-items: center; gap: 9px; min-height: auto; padding: 0 0 8px; border-right: 0; border-bottom: 1px solid #e0e8f3; }.queue-side { grid-column: auto; justify-content: flex-start; }.queue-main .issue-title { font-size: 15px; }.board-feed-item { grid-template-columns: 1fr 16px; }.board-time { grid-column: 1; display: flex; gap: 7px; }.board-content { grid-column: 1; }.board-feed-item > svg { grid-column: 2; grid-row: 1 / span 2; }.issue-detail-meta { gap: 6px 12px; }.detail-top h1 { font-size: 22px; }.issue-detail-no { font-size: 13px; }.detail-body .info-grid { grid-template-columns: 1fr 1fr; gap: 14px; }.detail-body .value { font-size: 13px; }
  .nav-item { min-height: 38px; font-size: 12px; }.detail-tab { padding-block: 13px 11px; font-size: 14px; }.detail-tabs { gap: 20px; }.meeting-detail-grid { grid-template-columns: 1fr; }.meeting-minutes-preview { display: grid; }.meeting-detail-modal { width: min(100%,calc(100vw - 22px)); }
}

/* Ant Design Pro 风格收口：保留现有功能与控件，仅统一工作台密度、层级和标签语义。 */
:root { --ink: #161616; --muted: #6b7280; --line: #edf0f5; --canvas: #f5f6f8; --paper: #fff; --teal: #1677ff; --teal-deep: #0958d9; --teal-soft: #e6f4ff; --radius: 8px; --shadow: 0 1px 2px rgba(0,0,0,.03); }
body { color: var(--ink); background: var(--canvas); font-size: 14px; }
.app-shell,.workspace,.main { background: var(--canvas); }
.topbar { height: 60px; padding: 0 24px; border-color: #edf0f5; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.02); }
.brand { gap: 9px; }.brand-mark { width: 32px; height: 32px; border-radius: 8px; color: #fff; background: #1677ff; }.brand-main { font-size: 15px; }.brand-sub { color: #7b8492; letter-spacing: .07em; }
.workspace { min-height: calc(100vh - 60px); }.sidebar { width: 196px; flex-basis: 196px; padding: 18px 10px; border-color: #edf0f5; background: #fff; }.nav-caption { margin: 0 10px 7px; color: #9aa4b2; font-size: 10px; }.nav-block + .nav-block { margin-top: 14px; }.nav-item { min-height: 38px; border-radius: 6px; color: #4b5563; font-size: 13px; }.nav-item:hover { color: #161616; background: #f5f7fa; }.nav-item.active { color: #0958d9; background: #e6f4ff; box-shadow: none; }.nav-security { border-color: #edf0f5; color: #7b8492; }
.main { max-width: none; padding: 24px 28px 48px; }.page-head { margin-bottom: 18px; }.page-head h1 { color: #161616; font-size: 26px; letter-spacing: -.03em; }.page-head p { color: #6b7280; font-size: 13px; }.eyebrow { color: #1677ff; font-size: 10px; }.eyebrow:before { background: #91caff; }
.btn { min-height: 34px; border-radius: 6px; box-shadow: none; font-size: 13px; }.primary { background: #1677ff; box-shadow: none; }.primary:hover { background: #0958d9; }.secondary { border-color: #d9dfe8; color: #161616; }.secondary:hover { color: #0958d9; border-color: #91caff; }.disabled { color: #98a2b3; background: #f5f5f5; }
.stat-grid { gap: 16px; margin-bottom: 16px; }.card { border-color: #edf0f5; border-radius: 8px; box-shadow: var(--shadow); }.stat { min-height: 118px; padding: 17px 18px; }.stat-top { color: #596273; font-size: 13px; }.stat-icon { border-radius: 7px; color: #1677ff; background: #e6f4ff; }.stat strong { color: #161616; font-size: 28px; }.stat small { color: #7b8492; font-size: 11px; }
.split.dashboard-operation { grid-template-columns: minmax(0,1.48fr) minmax(300px,.8fr); gap: 16px; }.side-stack { gap: 16px; }.card-head { padding: 16px 18px 13px; border-bottom: 1px solid #f0f2f5; }.card-head h2,.section-title h3 { color: #161616; font-size: 16px; }.card-head p { color: #7b8492; font-size: 12px; }.text-button,.file-link { color: #0958d9; font-size: 12px; }
.queue { border-color: #edf0f5; }.queue-row-priority { grid-template-columns: 92px minmax(0,1fr) auto; min-height: 80px; padding: 13px 18px; }.queue-row:hover,.data-row:hover td { background: #fafcff; }.queue-date { border-color: #edf0f5; }.queue-date b { color: #161616; font-size: 13px; }.queue-date span { color: #d4380d; }.queue-main .issue-title,.data-table .table-name { color: #161616; font-size: 14px; }.queue-meta,.table-sub { color: #7b8492; }.queue-meta .mono,.issue-no-line .table-sub,.issue-detail-no { color: #161616; }.copy-issue-no { border-color: #d9dfe8; color: #161616; background: #fff; }.copy-issue-no:hover { color: #0958d9; border-color: #91caff; background: #f0f7ff; }
.type { border-radius: 4px; padding: 4px 8px; font-size: 11px; }.type.ncr { color: #237804; background: #f6ffed; }.type.psr { color: #0958d9; background: #e6f4ff; }.type.fa { color: #d46b08; background: #fff7e6; }.type.site { color: #531dab; background: #f9f0ff; }.badge { border-radius: 999px; }.badge.red { color: #cf1322; background: #fff1f0; }.badge.amber { color: #d46b08; background: #fff7e6; }.badge.teal { color: #237804; background: #f6ffed; }.badge.blue { color: #0958d9; background: #e6f4ff; }
.dashboard-activity .activity { padding: 0 18px 8px; }.activity-row { color: #4b5563; font-size: 12px; border-color: #edf0f5; }.activity-dot { background: #1677ff; box-shadow: 0 0 0 4px #e6f4ff; }.activity-time { color: #8c95a3; }
.dashboard-quality-wrap { margin-top: 16px; }.dashboard-quality .quality-carousel { margin: 0; border: 0; border-radius: 0; background: #fff; }.dashboard-quality .quality-carousel-head { padding: 0 18px; }.dashboard-quality .quality-chart-switch,.dashboard-quality .quality-bars,.dashboard-quality .quality-line-chart,.dashboard-quality .quality-dots { margin-left: 18px; margin-right: 18px; }
.tabs { padding: 3px; border-radius: 6px; background: #f5f5f5; }.tab { padding: 7px 12px; color: #596273; font-size: 12px; }.tab.active { color: #0958d9; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.table-wrap { border-color: #edf0f5; border-radius: 8px; }.data-table th { color: #596273; background: #fafafa; font-size: 12px; }.data-table td { color: #343a46; border-color: #edf0f5; }.data-table .table-sub { font-size: 11px; }
.quality-period,.quality-supplier-filter,.quality-block,.quality-carousel,.quality-metric-table { border-color: #edf0f5; border-radius: 8px; }.quality-period { background: #fafcff; }.quality-period b,.quality-supplier-filter b,.quality-block h2 { color: #161616; }.quality-period-current b { color: #161616; }.quality-carousel { background: #fafcff; }.quality-metric-table { box-shadow: none; }.quality-metric-table th,.quality-metric-table td { border-color: #edf0f5; }.quality-state-message { border-left-color: #faad14; background: #fffbe6; color: #614700; }.quality-state-message.is-error { border-left-color: #ff4d4f; background: #fff2f0; color: #a8071a; }
.detail-top h1,.detail-body .value,.detail-body .section-title h3 { color: #161616; }.detail-tab { color: #596273; }.detail-tab.active { color: #0958d9; border-color: #1677ff; }.copy-box,.comment-text { color: #343a46; background: #fafafa; }.fix-item,.file-row,.process-record,.process-timeline-row { border-color: #edf0f5; }.process-record-main b,.process-heading span:first-child { color: #161616; }
.modal-backdrop { background: rgba(0,0,0,.45); }.modal { border: 0; border-radius: 10px; box-shadow: 0 16px 48px rgba(0,0,0,.2); }.modal-head,.modal-foot { border-color: #edf0f5; }.modal-close { color: #596273; background: #f5f7fa; }.field,.filter,.form-input,textarea { border-color: #d9dfe8; color: #161616; }.field:focus,.filter:focus,.form-input:focus,textarea:focus { border-color: #1677ff; box-shadow: 0 0 0 2px rgba(22,119,255,.15); }
.calendar-card,.calendar-agenda,.meeting-detail-grid > div,.meeting-edit-readonly { border-color: #edf0f5; box-shadow: none; }.calendar-day.selected { background: #1677ff; }.calendar-day.has-meeting { background: #e6f4ff; }.board-card .card-head { border-color: #edf0f5; }.board-feed-item { color: #343a46; border-color: #edf0f5; }.board-content b,.free-message b { color: #161616; }.free-message p { color: #343a46; }
@media (max-width: 1050px) { .sidebar { width: 188px; flex-basis: 188px; }.main { padding: 22px 20px 40px; }.split.dashboard-operation { grid-template-columns: 1fr; }.dashboard-operation .side-stack { grid-template-columns: 1fr 1fr; } }
@media (max-width: 720px) { .topbar { height: 56px; padding: 0 14px; }.workspace { min-height: calc(100vh - 56px); }.sidebar { width: 100%; min-height: 52px; padding: 7px; background: #fff; }.nav-item { min-height: 36px; }.main { padding: 18px 14px 32px; }.page-head h1 { font-size: 24px; }.stat-grid,.dashboard-operation .side-stack { grid-template-columns: 1fr; }.queue-row-priority { grid-template-columns: 1fr; }.dashboard-quality .quality-chart-switch { flex-wrap: wrap; } }

/* 操作色按语义分层：查看/编辑、保存/提交、提醒、危险操作均可一眼区分。 */
.btn { border: 1px solid transparent; font-weight: 800; }
.btn.primary { color: #fff; background: #1677ff; }
.btn.secondary { color: #531dab; border-color: #d3adf7; background: #f9f0ff; }
.btn.danger { color: #cf1322; border-color: #ffccc7; background: #fff1f0; }
.btn.action-edit,.serial-generate { color: #08979c; border-color: #87e8de; background: #e6fffb; }
.shortcut-seven { color: #d46b08; border-color: #ffd591; background: #fff7e6; }
.shortcut-thirty { color: #531dab; border-color: #d3adf7; background: #f9f0ff; }
.btn.primary:hover { background: #0958d9; }.btn.secondary:hover { color: #391085; border-color: #9254de; background: #efdbff; }.btn.action-edit:hover,.serial-generate:hover { color: #006d75; border-color: #36cfc9; background: #d6fffb; }
.text-button { color: #0958d9; }.text-button:hover { color: #531dab; }.tabs .tab:nth-child(2).active { color: #237804; }.tabs .tab:nth-child(3).active { color: #0958d9; }.tabs .tab:nth-child(4).active { color: #d46b08; }.tabs .tab:nth-child(5).active { color: #531dab; }
.field-shortcuts { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 8px; color: #7b8492; font-size: 11px; }.field-shortcuts .btn { min-height: 26px; padding: 0 8px; font-size: 11px; }
.input-action { display: flex; gap: 8px; }.input-action .form-input { min-width: 0; }.input-action .btn { flex: 0 0 auto; min-height: 36px; padding-inline: 10px; }
.issue-form-modal { width: min(820px,calc(100vw - 32px)); }.issue-form-modal .modal-body { padding-top: 20px; }.issue-form-modal textarea { min-height: 92px; }
.required-mark { margin-left: 3px; color: #f5222d; font-weight: 900; }
.message-board { margin: 0 0 18px; }.board-grid { align-items: stretch; }.board-card { min-height: 320px; }.board-feed { min-height: 190px; }.board-feed-item { min-height: 72px; }
.board-toolbar { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:14px; padding:17px 19px; }.board-toolbar h3 { margin:0 0 4px; font-size:18px; }.board-toolbar .label { font-size:12px; }.project-message { width:100%; border:0; border-bottom:1px solid #edf0f5; color:inherit; background:transparent; text-align:left; cursor:pointer; box-shadow:none; appearance:none; }.project-message:last-child { border-bottom:0; }.project-message:hover { background:#fafcff; }.project-message:focus-visible { position:relative; z-index:1; outline:2px solid #91caff; outline-offset:-2px; }.project-message-body { min-width:0; flex:1; }.project-message-body small { display:block; margin-top:5px; color:#718096; font-size:11px; line-height:1.5; }.project-message .avatar { flex:0 0 auto; }
.project-board-search { padding:12px 17px; border-bottom:1px solid var(--line); }.project-board-search .search { width:100%; }.project-board-search .field { min-width:0; }
@media (max-width: 720px) { .board-toolbar { align-items:stretch; flex-direction:column; }.board-toolbar .board-search { width:100%; }.project-message-body small { overflow-wrap:anywhere; } }
.top-actions { gap: 12px; }.role-select.role-readonly { min-height: 36px; display: inline-flex; align-items: center; padding: 0 11px; color: #161616; background: #fafcff; }.notification-button { width: 36px; height: 36px; border-color: #ffd591; color: #d46b08; background: #fff7e6; }.notification-button .dot { top: -5px; right: -6px; display: grid; min-width: 17px; height: 17px; place-items: center; padding: 0 4px; color: #fff; background: #ff4d4f; font-size: 9px; font-style: normal; }
.reservation-notice-modal { width: min(620px,calc(100vw - 32px)); }.reservation-notice-list { display: grid; gap: 10px; }.reservation-notice-list article { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 12px; align-items: center; padding: 13px; border: 1px solid #edf0f5; border-radius: 8px; background: #fafcff; }.reservation-notice-list b { color: #161616; }.reservation-notice-list p,.reservation-notice-list small { display: block; margin: 4px 0 0; color: #6b7280; font-size: 12px; }.reservation-notice-list small { color: #d46b08; }.notice-open { color: #0958d9; border-color: #91caff; background: #e6f4ff; }
.supplier-manage-row .text-button,.supplier-row .text-button,.supplier-card .text-button { display: inline-flex; min-height: 28px; align-items: center; margin-left: 7px; padding: 0 8px; border: 1px solid #91caff; border-radius: 5px; color: #0958d9; background: #e6f4ff; }.supplier-manage-row .text-button:nth-of-type(2),.supplier-row .text-button:nth-of-type(2),.supplier-card .text-button:nth-of-type(2) { border-color: #d3adf7; color: #531dab; background: #f9f0ff; }.supplier-manage-row .text-button:nth-of-type(3),.supplier-row .text-button:nth-of-type(3),.supplier-card .text-button:nth-of-type(3) { border-color: #ffccc7; color: #cf1322; background: #fff1f0; }
.supplier-list .file-link { display: inline-flex; min-height: 29px; align-items: center; margin-left: 6px; padding: 0 8px; border: 1px solid #91caff; border-radius: 5px; color: #0958d9; background: #e6f4ff; }.supplier-list .file-link + .file-link { border-color: #d3adf7; color: #531dab; background: #f9f0ff; }.supplier-list .danger-link { border-color: #ffccc7!important; color: #cf1322!important; background: #fff1f0!important; }
@media (max-width: 720px) { .input-action { align-items: stretch; }.input-action .btn { padding-inline: 8px; }.reservation-notice-list article { grid-template-columns: 1fr auto; }.reservation-notice-list article > .badge { grid-column: 1; width: fit-content; }.reservation-notice-list article > div { grid-column: 1; }.reservation-notice-list article > button { grid-column: 2; grid-row: 1 / span 2; } }

/* 安卓桌面式可编辑工作台卡片。 */
.dashboard-card-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); grid-auto-rows:12px; grid-auto-flow:row dense; gap:16px; align-items:stretch; }
.dashboard-widget { position:relative; min-width:0; grid-column:span var(--widget-cols); grid-row:span var(--widget-rows); transition:transform .18s ease,opacity .18s ease,filter .18s ease; }
.dashboard-widget-content,.dashboard-widget-content > .card { height:100%; min-height:0; }
.dashboard-widget-content > .card { display:flex; overflow:hidden; flex-direction:column; }
.dashboard-widget-content > .card { border-radius:16px; box-shadow:0 4px 16px rgba(31,50,78,.07); }
.dashboard-widget-content .queue,.dashboard-widget-content .board-feed { min-height:0; overflow:auto; }
.dashboard-widget-content .board-feed { flex:1; }
.dashboard-widget-content .stat { justify-content:space-between; }
.dashboard-widget.is-editing { z-index:2; padding:5px; border:2px dashed #91caff; border-radius:14px; background:rgba(230,244,255,.72); box-shadow:0 8px 24px rgba(22,119,255,.1); }
.dashboard-widget.is-editing .dashboard-widget-content { padding-top:36px; pointer-events:none; user-select:none; }
.dashboard-widget.is-editing .card { border-radius:10px; }
.dashboard-widget.is-dragging { opacity:.42; transform:scale(.98); }
.dashboard-widget.is-drop-target { border-color:#1677ff; background:#e6f4ff; transform:translateY(-3px); }
.dashboard-widget.is-resizing { z-index:8; transition:none; }
.dashboard-widget-tools { position:absolute; z-index:5; top:10px; right:10px; left:10px; display:flex; justify-content:space-between; align-items:center; gap:8px; pointer-events:auto; }
.widget-drag-handle,.widget-size-presets button { min-height:28px; padding:0 9px; border:1px solid #91caff; border-radius:999px; color:#0958d9; background:rgba(255,255,255,.96); font:800 11px "Microsoft YaHei","Noto Sans SC",sans-serif; box-shadow:0 2px 8px rgba(22,119,255,.1); cursor:grab; }
.widget-drag-handle:active { cursor:grabbing; }
.widget-size-presets { display:flex; gap:4px; }
.widget-size-presets button { padding-inline:8px; border-color:#d9dfe8; color:#4b5563; cursor:pointer; }
.widget-size-presets button:hover,.widget-drag-handle:hover { color:#fff; border-color:#1677ff; background:#1677ff; }
.widget-resize-handle { position:absolute; z-index:6; right:5px; bottom:5px; width:24px; height:24px; border:0; border-radius:8px 0 8px 0; background:linear-gradient(135deg,transparent 42%,#69b1ff 43% 52%,transparent 53% 62%,#1677ff 63% 72%,transparent 73%); cursor:nwse-resize; pointer-events:auto; }
.dashboard-edit-hint { display:flex; align-items:center; gap:12px; margin:-2px 0 16px; padding:12px 15px; border:1px solid #91caff; border-radius:10px; color:#0958d9; background:#e6f4ff; }
.dashboard-edit-hint b { color:#161616; font-size:14px; }.dashboard-edit-hint span { color:#4b6b8f; font-size:12px; }
.dashboard-widget-project .board-card,.dashboard-widget-nonproject .board-card { min-height:0; }
.dashboard-widget-nonproject .board-compose { flex:0 0 auto; }
.nonproject-board-search { display:flex; align-items:center; gap:10px; padding:12px 17px; border-bottom:1px solid var(--line); }.nonproject-board-search .search { min-width:0; flex:1; }.nonproject-board-search .badge { flex:0 0 auto; }
.all-messages-modal { width:min(820px,calc(100vw - 32px)); }.all-messages-modal .modal-body { display:grid; gap:14px; min-height:360px; }.all-messages-toolbar { display:grid; grid-template-columns:minmax(0,1fr) minmax(220px,280px); gap:12px; align-items:end; }.all-messages-toolbar .search { width:100%; }.all-messages-filter,.all-messages-supplier-fixed { display:grid; gap:6px; }.all-messages-supplier-fixed { min-height:38px; align-content:center; padding:7px 11px; border:1px solid #d9dfe8; border-radius:7px; background:#fafcff; }.all-messages-supplier-fixed b { color:#161616; }.all-messages-list { max-height:min(58vh,620px); overflow:auto; border:1px solid #edf0f5; border-radius:10px; }.all-message-item { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:12px; align-items:start; padding:15px 16px; border-bottom:1px solid #edf0f5; }.all-message-item:last-child { border-bottom:0; }.all-message-item header { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }.all-message-item b { color:#161616; font-size:14px; }.all-message-item time,.all-message-item small { color:#7b8492; font-size:11px; }.all-message-item p { margin:6px 0; color:#343a46; font-size:13px; line-height:1.7; white-space:pre-wrap; }.all-message-item small { display:block; color:#0958d9; }
.dashboard-widget-todo .queue-row-priority { min-height:82px; }
@media (max-width: 1050px) {
  .dashboard-card-grid { grid-template-columns:1fr; grid-auto-rows:auto; }
  .dashboard-widget { grid-column:1 / -1!important; grid-row:auto!important; min-height:220px; }
  .dashboard-widget-stat-active,.dashboard-widget-stat-overdue,.dashboard-widget-stat-closed,.dashboard-widget-stat-rate { min-height:126px; }
  .dashboard-widget-tools { position:sticky; top:5px; }
}
@media (max-width: 720px) {
  .dashboard-edit-hint { align-items:flex-start; flex-direction:column; }.widget-size-presets { display:none; }.dashboard-widget { min-height:260px; }.dashboard-widget-stat-active,.dashboard-widget-stat-overdue,.dashboard-widget-stat-closed,.dashboard-widget-stat-rate { min-height:126px; }.all-messages-toolbar { grid-template-columns:1fr; }.all-message-item { grid-template-columns:auto minmax(0,1fr); }.all-message-item > .btn { grid-column:2; justify-self:start; }
}

/* 问题列表可交互表头：排序按钮与列内筛选。 */
.interactive-table-wrap { overflow:auto; }.interactive-table-head th { position:sticky; z-index:2; top:0; min-width:128px; padding:10px 12px!important; vertical-align:top; background:#fafcff!important; box-shadow:inset 0 -1px #e5eaf1; }.interactive-table-head th:nth-child(1),.interactive-table-head th:nth-child(2),.interactive-table-head th:nth-child(3) { min-width:210px; }
.table-head-control { display:grid; gap:7px; }.table-sort-button { display:flex; min-height:24px; align-items:center; justify-content:space-between; gap:8px; padding:0; border:0; color:#4b5563; background:transparent; font:800 12px "Microsoft YaHei","Noto Sans SC",sans-serif; cursor:pointer; }.table-sort-button span { display:grid; width:22px; height:22px; place-items:center; border-radius:6px; color:#8c95a3; background:#f0f2f5; font-size:12px; }.table-sort-button:hover,.table-sort-button.is-active { color:#0958d9; }.table-sort-button:hover span,.table-sort-button.is-active span { color:#0958d9; background:#e6f4ff; }
.table-head-input,.table-head-select { width:100%; min-width:0; height:30px; padding:0 8px; border:1px solid #d9dfe8; border-radius:6px; color:#343a46; background:#fff; font:500 11px "Microsoft YaHei","Noto Sans SC",sans-serif; outline:none; }.table-head-input:focus,.table-head-select:focus { border-color:#1677ff; box-shadow:0 0 0 2px rgba(22,119,255,.12); }.interactive-table-head + tbody td { border-top:0; }

/* 日历当前选择采用绿色，和普通有会议日期的浅蓝状态明确区分。 */
.calendar-day.selected,.calendar-day.selected.has-meeting { color:#fff; border-color:#52c41a; background:#52c41a; box-shadow:0 5px 14px rgba(82,196,26,.25); }.calendar-day.selected:hover,.calendar-day.selected.has-meeting:hover { color:#fff; border-color:#389e0d; background:#389e0d; }.calendar-day.selected:after,.calendar-day.selected.has-meeting:after { background:#fff; }

/* 个人会议存档详情：保留原弹窗结构，突出主题、结论和附件。 */
.meeting-archive-modal { width:min(820px,calc(100vw - 32px)); }.meeting-archive-modal .modal-body { padding-top:18px; }.meeting-archive-content { display:grid; gap:16px; }.meeting-archive-facts { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:9px; }.meeting-archive-facts > div { display:grid; align-content:start; gap:6px; min-height:76px; padding:12px; border:1px solid #edf0f5; border-radius:9px; background:#fafcff; }.meeting-archive-facts span,.meeting-attendee-panel span,.meeting-archive-label { color:#6b7280; font-size:12px; }.meeting-archive-facts b { overflow-wrap:anywhere; color:#161616; font-size:13px; line-height:1.5; }.meeting-confirmed-status { width:max-content; }
.meeting-attendee-panel { display:grid; grid-template-columns:1fr 1fr; gap:10px; }.meeting-attendee-panel > div { display:grid; gap:7px; padding:13px 14px; border:1px solid #edf0f5; border-radius:9px; background:#f7f9fc; }.meeting-attendee-panel b { color:#161616; font-size:14px; line-height:1.6; }
.meeting-archive-section { padding-top:15px; border-top:1px solid #edf0f5; }.meeting-archive-section > p { margin:8px 0 0; color:#343a46; font-size:14px; line-height:1.75; white-space:pre-wrap; }.meeting-archive-label { color:#343a46; font-weight:800; }.meeting-conclusion-card { padding:16px 17px; border:1px solid #b7eb8f; border-radius:10px; background:#f6ffed; }.meeting-conclusion-card > div { display:flex; align-items:center; justify-content:space-between; gap:10px; }.meeting-conclusion-card > p { color:#1f3a17; font-size:15px; font-weight:600; line-height:1.85; }
.meeting-archive-section-head { display:flex; justify-content:space-between; align-items:center; gap:12px; }.meeting-archive-section-head > div { display:flex; align-items:center; gap:8px; }.meeting-archive-section-head small { color:#8c95a3; }.meeting-archive-files { display:grid; gap:8px; margin-top:10px; }.meeting-archive-file { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:11px; align-items:center; padding:11px 12px; border:1px solid #edf0f5; border-radius:9px; background:#fff; }.meeting-archive-file-copy { min-width:0; }.meeting-archive-file-copy > div { display:flex; min-width:0; align-items:center; gap:8px; }.meeting-archive-file-copy b { overflow:hidden; color:#161616; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }.meeting-archive-file-copy small { display:block; margin-top:5px; color:#7b8492; font-size:11px; }.meeting-archive-modal .modal-foot { justify-content:space-between; }.meeting-archive-edit-actions { display:flex; gap:8px; }
@media (max-width: 720px) { .meeting-archive-facts { grid-template-columns:1fr 1fr; }.meeting-attendee-panel { grid-template-columns:1fr; }.meeting-archive-modal .modal-foot { align-items:stretch; flex-direction:column; }.meeting-archive-edit-actions { display:grid; grid-template-columns:1fr 1fr; }.meeting-archive-modal .modal-foot > .btn { width:100%; }.meeting-archive-file { grid-template-columns:auto minmax(0,1fr); }.meeting-archive-file > .file-link { grid-column:2; justify-self:start; } }

/* 会议、出差删除确认保持轻量且明确，不使用浏览器原生确认框。 */
.collaboration-delete-button { margin-right:auto; }
.collaboration-delete-modal { width:min(520px,calc(100vw - 32px)); }
.delete-warning { padding:16px 17px; border:1px solid #ffccc7; border-radius:9px; background:#fff2f0; }
.delete-warning b { color:#a8071a; font-size:15px; }
.delete-warning p { margin:7px 0 0; color:#5c3033; font-size:13px; line-height:1.7; }

/* 我的邮箱：入口完全由 capability 控制，沿用门户轻量卡片与三栏工作区。 */
.mail-security-note{display:flex;align-items:center;gap:10px;margin:-5px 0 16px;padding:11px 14px;border:1px solid #d9ead3;border-radius:9px;color:#35653a;background:#f6ffed;font-size:12px}.mail-security-note svg{width:18px;height:18px;flex:0 0 auto;stroke:#52c41a}
.mail-page-state{display:grid;min-height:430px;place-items:center;align-content:center;gap:12px;padding:40px;border:1px solid #e5eaf1;border-radius:12px;background:#fff;text-align:center}.mail-page-state h2,.mail-page-state p{margin:0}.mail-page-state p{max-width:560px;color:#6b7280;line-height:1.7}.mail-page-state.error{border-color:#ffccc7;background:#fffafa}.mail-empty-icon{display:grid;width:64px;height:64px;place-items:center;border-radius:18px;color:#1677ff;background:#e6f4ff;font-size:30px}.mail-spinner{width:24px;height:24px;border:3px solid #d9e8ff;border-top-color:#1677ff;border-radius:50%;animation:mail-spin .75s linear infinite}@keyframes mail-spin{to{transform:rotate(360deg)}}
.mail-workspace{display:grid;min-height:680px;grid-template-columns:230px minmax(360px,.9fr) minmax(430px,1.25fr);overflow:hidden;border:1px solid #e5eaf1;border-radius:12px;background:#fff;box-shadow:0 4px 18px rgba(31,50,78,.05)}.mail-sidebar,.mail-list-panel,.mail-detail-panel{min-width:0;min-height:0}.mail-sidebar{padding:17px 14px;border-right:1px solid #edf0f5;background:#fafcff}.mail-sidebar .form-field{display:grid;gap:7px}.mail-sidebar .form-field>span{color:#6b7280;font-size:12px;font-weight:700}.mail-account-actions{display:flex;gap:12px;margin:9px 0 17px}.mail-account-actions .text-button{font-size:11px}.mail-account-actions .danger-link{color:#cf1322}
.mail-folder-tree{display:grid;gap:4px;padding:8px 0 16px;border-top:1px solid #edf0f5}.mail-folder{display:flex;min-height:39px;align-items:center;justify-content:space-between;gap:8px;padding:0 10px;border:0;border-radius:7px;color:#4b5563;background:transparent;text-align:left;cursor:pointer}.mail-folder>span{display:flex;min-width:0;align-items:center;gap:9px;font-weight:700}.mail-folder svg{width:16px;height:16px}.mail-folder i{min-width:23px;padding:2px 6px;border-radius:999px;color:#6b7280;background:#edf1f7;font-size:10px;font-style:normal;text-align:center}.mail-folder:hover{color:#0958d9;background:#f0f7ff}.mail-folder.active{color:#0958d9;background:#e6f4ff}.mail-folder.active i{color:#fff;background:#1677ff}
.mail-sync-card{display:grid;gap:8px;margin-top:4px;padding:12px;border:1px solid #e5eaf1;border-radius:9px;background:#fff}.mail-sync-card>div{display:flex;align-items:center;gap:8px}.mail-sync-card b{color:#161616;font-size:12px}.mail-sync-card p,.mail-sync-card small{margin:0;color:#6b7280;font-size:11px;line-height:1.55}.mail-status-dot{width:8px;height:8px;border-radius:50%;background:#8c95a3}.mail-sync-card.blue .mail-status-dot{background:#1677ff;box-shadow:0 0 0 4px #e6f4ff}.mail-sync-card.red{border-color:#ffccc7;background:#fffafa}.mail-sync-card.red .mail-status-dot{background:#ff4d4f}.mail-sync-card.teal .mail-status-dot{background:#52c41a}
.mail-list-panel{display:flex;flex-direction:column;border-right:1px solid #edf0f5}.mail-list-toolbar{display:grid;grid-template-columns:minmax(170px,1fr) auto 132px 132px;gap:8px;align-items:center;padding:12px;border-bottom:1px solid #edf0f5}.mail-list-toolbar .search{min-width:0}.mail-list-toolbar .filter{min-width:0;height:36px}.mail-check{display:flex;align-items:center;gap:5px;color:#4b5563;font-size:11px;white-space:nowrap}.mail-list-head{display:flex;min-height:34px;align-items:center;justify-content:space-between;padding:0 14px;color:#7b8492;background:#fafafa;font-size:11px}.mail-list{min-height:0;flex:1;overflow:auto}.mail-row{display:grid;min-height:67px;grid-template-columns:23px minmax(100px,.72fr) minmax(170px,1.35fr) auto;gap:8px;align-items:center;width:100%;padding:10px 13px;border:0;border-bottom:1px solid #edf0f5;color:#4b5563;background:#fff;text-align:left;cursor:pointer}.mail-row:hover{background:#fafcff}.mail-row.selected{box-shadow:inset 3px 0 #1677ff;background:#eaf4ff}.mail-row.unread{color:#161616;background:#f7fbff}.mail-row.unread .mail-sender,.mail-row.unread .mail-subject b{font-weight:900}.mail-star{color:#faad14;font-size:16px}.mail-sender,.mail-subject{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-sender{font-size:12px}.mail-subject{display:flex;align-items:center;gap:6px}.mail-subject b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.mail-subject svg{width:14px;height:14px;flex:0 0 auto}.mail-row time{color:#7b8492;font-size:10px;white-space:nowrap}.mail-pagination{display:flex;min-height:52px;align-items:center;justify-content:center;gap:13px;padding:8px;border-top:1px solid #edf0f5;color:#6b7280;font-size:11px}
.mail-detail-panel{display:flex;overflow:auto;flex-direction:column;padding:21px}.mail-detail-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:13px;padding-bottom:16px;border-bottom:1px solid #edf0f5}.mail-detail-head h2{margin:9px 0 10px;color:#161616;font-size:21px;line-height:1.4}.mail-detail-head p,.mail-detail-head time{margin:4px 0 0;color:#6b7280;font-size:11px;line-height:1.5}.mail-detail-star{color:#faad14;font-size:23px}.mail-detail-actions{display:flex;flex-wrap:wrap;gap:8px;padding:14px 0}.mail-body{min-height:260px;padding:18px 0;border-top:1px solid #f5f5f5;color:#343a46}.mail-text-body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:400 13px/1.85 "Microsoft YaHei","Noto Sans SC",sans-serif}.mail-html-frame{width:100%;min-height:360px;border:0;background:#fff}.mail-body-unavailable{display:grid;min-height:210px;place-items:center;align-content:center;gap:7px;color:#6b7280;text-align:center}.mail-body-unavailable b{color:#343a46}.mail-body-unavailable p{margin:0;font-size:12px}.mail-attachments{padding-top:16px;border-top:1px solid #edf0f5}.mail-attachments h3{margin:0 0 10px;font-size:14px}.mail-attachment{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;margin-bottom:7px;padding:10px 12px;border:1px solid #edf0f5;border-radius:8px}.mail-attachment>span svg{width:18px}.mail-attachment b{display:block;overflow:hidden;color:#161616;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.mail-attachment small{display:block;margin-top:4px;color:#7b8492;font-size:10px}.mail-state{display:grid;min-height:260px;place-items:center;align-content:center;gap:8px;padding:25px;color:#6b7280;text-align:center}.mail-state b{color:#343a46}.mail-state p{max-width:360px;margin:0;font-size:12px;line-height:1.65}.mail-state.error{color:#a8071a;background:#fffafa}.mail-mobile-folder-button,.mail-mobile-back,.mail-mobile-close{display:none}
.mail-connect-modal{width:min(780px,calc(100vw - 32px))}.mail-provider-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:18px}.mail-provider{display:grid;gap:5px;min-height:72px;align-content:center;padding:11px;border:1px solid #d9dfe8;border-radius:9px;color:#4b5563;background:#fff;text-align:left;cursor:pointer}.mail-provider b{color:#161616}.mail-provider span{color:#7b8492;font-size:10px}.mail-provider.active{border-color:#1677ff;background:#eaf4ff;box-shadow:0 0 0 2px rgba(22,119,255,.1)}.mail-auth-options{display:flex;flex-wrap:wrap;gap:10px}.mail-auth-options label{display:flex;align-items:center;gap:7px;padding:10px 12px;border:1px solid #d9dfe8;border-radius:8px;background:#fafcff}.mail-google-oauth{padding:15px;border:1px solid #b7eb8f;border-radius:9px;color:#35653a;background:#f6ffed}
.mail-compose-modal{width:min(780px,calc(100vw - 32px))}.mail-compose-body{min-height:230px}.mail-file-picker{display:flex;min-height:46px;align-items:center;gap:12px;padding:6px;border:1px solid #d9dfe8;border-radius:8px;background:#fafcff;cursor:pointer}.mail-file-picker input{position:absolute;width:1px;height:1px;opacity:0}.mail-file-picker span{display:inline-flex;min-height:32px;align-items:center;gap:6px;padding:0 10px;border:1px solid #91caff;border-radius:6px;color:#0958d9;background:#e6f4ff;font-weight:800;font-size:12px}.mail-file-picker span svg{width:15px}.mail-file-picker small{overflow:hidden;color:#6b7280;text-overflow:ellipsis;white-space:nowrap}.mail-delete-modal{width:min(520px,calc(100vw - 32px))}
.mail-send-status{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:10px 14px;border:1px solid #bae0ff;border-radius:9px;background:#e6f4ff}.mail-send-status>div{flex:1}.mail-send-status b{display:block;font-size:13px}.mail-send-status p{margin:2px 0 0;color:#4b5563;font-size:11px}.mail-send-status.success{border-color:#b7eb8f;background:#f6ffed}.mail-send-status.error{border-color:#ffccc7;background:#fff2f0}.mail-send-status.success .mail-status-dot{background:#52c41a}.mail-send-status.error .mail-status-dot{background:#ff4d4f}
@media(max-width:1260px){.mail-workspace{grid-template-columns:210px minmax(330px,.9fr) minmax(360px,1.05fr)}.mail-list-toolbar{grid-template-columns:minmax(170px,1fr) auto}.mail-list-toolbar [type="date"]{display:none}}
@media(max-width:920px){.mail-workspace{grid-template-columns:190px minmax(300px,1fr)}.mail-detail-panel{display:none}.mail-workspace.pane-detail .mail-list-panel{display:none}.mail-workspace.pane-detail .mail-detail-panel{display:flex}.mail-workspace.pane-detail{grid-template-columns:190px minmax(0,1fr)}.mail-mobile-back{display:inline-flex;width:max-content;margin-bottom:9px;border:0;color:#0958d9;background:transparent;font-weight:800;cursor:pointer}}
@media(max-width:720px){.mail-workspace,.mail-workspace.pane-detail{min-height:calc(100vh - 170px);grid-template-columns:1fr}.mail-sidebar{display:none;border-right:0}.mail-list-panel{border-right:0}.mail-workspace.pane-folders .mail-sidebar{display:block}.mail-workspace.pane-folders .mail-list-panel,.mail-workspace.pane-folders .mail-detail-panel{display:none}.mail-workspace.pane-detail .mail-sidebar{display:none}.mail-mobile-folder-button,.mail-mobile-close{display:inline-flex;width:max-content;min-height:31px;align-items:center;padding:0 9px;border:1px solid #91caff;border-radius:6px;color:#0958d9;background:#e6f4ff;font-weight:800;cursor:pointer}.mail-mobile-close{margin-bottom:12px}.mail-list-toolbar{grid-template-columns:auto minmax(0,1fr)}.mail-list-toolbar .mail-check{grid-column:1/-1}.mail-row{grid-template-columns:20px minmax(82px,.65fr) minmax(130px,1.35fr) auto;padding-inline:9px}.mail-detail-panel{padding:15px}.mail-provider-grid{grid-template-columns:1fr 1fr}.mail-connect-modal .form-grid,.mail-compose-modal .form-grid{grid-template-columns:1fr}.mail-compose-modal .modal-foot{flex-wrap:wrap}.mail-compose-modal .modal-foot .btn{flex:1}.mail-detail-head h2{font-size:18px}}

/* 我的邮箱 · 第二版三栏工作区 */
.mail-status-strip{display:flex;min-height:46px;align-items:center;justify-content:space-between;gap:16px;margin:-4px 0 10px;padding:0 14px;border:1px solid #e6ebf2;border-radius:10px;background:#fff}.mail-status-strip>div,.mail-status-strip>small{display:flex;align-items:center;gap:9px}.mail-status-strip>div span:not(.mail-status-dot),.mail-status-strip>small{color:#778195;font-size:12px}.mail-status-strip>small svg{width:15px;height:15px;stroke:#52c41a}.mail-status-strip .mail-status-dot{background:#52c41a;box-shadow:0 0 0 4px #f0f9eb}
.mail-actionbar{display:flex;min-height:48px;align-items:center;justify-content:space-between;gap:14px;padding:6px 10px;border:1px solid #e6ebf2;border-bottom:0;border-radius:10px 10px 0 0;background:#fff}.mail-actionbar-primary,.mail-move-control{display:flex;align-items:center;gap:4px}.mail-toolbar-button{min-height:34px;padding:0 10px;border:1px solid transparent;border-radius:7px;color:#303746;background:transparent;font-size:12px;font-weight:700;cursor:pointer}.mail-toolbar-button:hover:not(:disabled){border-color:#d7e6ff;background:#f0f6ff}.mail-toolbar-button:disabled{color:#b7bec9;cursor:not-allowed}.mail-toolbar-button.danger-link:hover:not(:disabled){border-color:#ffd5d2;color:#cf1322;background:#fff2f0}.mail-toolbar-divider{width:1px;height:22px;margin:0 5px;background:#e7ebf0}.mail-move-control .filter{width:125px;height:34px}
.mail-workspace{min-height:calc(100vh - 275px);grid-template-columns:245px minmax(340px,390px) minmax(500px,1fr);border-radius:0 0 12px 12px;box-shadow:0 8px 24px rgba(31,50,78,.055)}
.mail-sidebar{padding:14px 12px;background:#fbfcfe}.mail-account-card{display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;align-items:center;padding:10px;border:1px solid #e7ebf1;border-radius:10px;background:#fff}.mail-account-avatar{display:grid;width:42px;height:42px;place-items:center;border-radius:12px;color:#1677ff;background:#eaf4ff;font-size:19px}.mail-account-card b,.mail-account-card small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-account-card b{font-size:13px}.mail-account-card small{margin-top:3px;color:#7b8492;font-size:10px}.mail-account-select{display:grid;gap:6px;margin-top:11px}.mail-account-select>span{color:#6d7685;font-size:11px;font-weight:700}.mail-account-select .form-input{min-height:38px}.mail-account-actions{justify-content:space-between;margin:8px 2px 14px}
.mail-folder-heading{display:flex;align-items:center;justify-content:space-between;padding:11px 7px 6px;border-top:1px solid #edf0f5}.mail-folder-heading b{font-size:12px}.mail-icon-action{display:grid;width:28px;height:28px;place-items:center;border:0;border-radius:7px;color:#1677ff;background:transparent;cursor:pointer}.mail-icon-action:hover{background:#eaf4ff}.mail-icon-action svg{width:16px;height:16px}.mail-folder-tree{padding:0 0 10px;border:0}.mail-folder{padding-left:calc(10px + var(--folder-depth,0) * 14px);color:#343b49}.mail-folder>span{overflow:hidden;white-space:nowrap}.mail-folder>span svg{flex:0 0 auto}.mail-folder>span:not(i){text-overflow:ellipsis}.mail-folder em{color:#949dab;font-size:10px;font-style:normal}.mail-folder-symbol{width:16px;color:#faad14;font-size:17px;text-align:center}.mail-folder-admin{display:flex;gap:12px;padding:0 10px 10px}.mail-folder-admin .text-button{font-size:11px}
.mail-sync-card{margin-top:5px;background:#fff}.mail-sync-card .btn{justify-self:start}
.mail-list-toolbar{grid-template-columns:auto minmax(0,1fr) auto auto auto;padding:10px;background:#fff}.mail-filter-toggle{min-height:34px;padding:0 9px;border:1px solid #e1e6ed;border-radius:7px;color:#5f6877;background:#fff;font-size:11px;font-weight:700;cursor:pointer}.mail-filter-toggle:hover,.mail-filter-toggle.active{border-color:#91caff;color:#0958d9;background:#eaf4ff}.mail-advanced-filters{display:none;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:9px 11px;border-bottom:1px solid #edf0f5;background:#fafcff}.mail-advanced-filters.open{display:grid}.mail-advanced-filters .filter{height:34px;min-width:0}.mail-list-head{padding:0 12px}.mail-list-head label{display:flex;align-items:center;gap:7px}
.mail-row{display:grid;min-height:88px;grid-template-columns:22px 26px minmax(0,1fr);gap:5px;padding:0 10px;border-bottom:1px solid #edf0f5;background:#fff}.mail-row:hover{background:#f8fbff}.mail-row.selected{box-shadow:inset 3px 0 #1677ff;background:#eaf4ff}.mail-row.unread{background:#fbfdff}.mail-row-check{display:grid;align-self:stretch;place-items:center;cursor:pointer}.mail-row-check input{position:absolute;opacity:0}.mail-row-check span{display:block;width:14px;height:14px;border:1px solid #c9d1dc;border-radius:4px;background:#fff}.mail-row-check input:checked+span{border-color:#1677ff;background:#1677ff;box-shadow:inset 0 0 0 3px #fff}.mail-row-star{align-self:center;border:0;color:#faad14;background:transparent;font-size:17px;cursor:pointer}.mail-row-open{display:grid;min-width:0;gap:4px;align-content:center;padding:10px 0;border:0;color:#343b49;background:transparent;text-align:left;cursor:pointer}.mail-row-line{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px}.mail-row-line time{flex:0 0 auto;color:#8992a0;font-size:10px}.mail-row.unread .mail-sender,.mail-row.unread .mail-subject b{color:#111827;font-weight:900}.mail-subject{display:flex;min-width:0;align-items:center;gap:6px}.mail-subject b{overflow:hidden;color:#2f3745;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.mail-subject i{display:inline-flex;color:#7b8492}.mail-subject svg{width:13px;height:13px}.mail-snippet{overflow:hidden;color:#808998;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
.mail-detail-panel{padding:20px 22px}.mail-detail-head{display:block}.mail-detail-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.mail-detail-badges{display:flex;gap:6px}.mail-detail-head h2{margin:9px 0 13px;font-size:22px}.mail-detail-star{border:0;color:#faad14;background:transparent;font-size:24px;cursor:pointer}.mail-address-card{display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px;padding:12px;border:1px solid #edf0f5;border-radius:9px;background:#fafcff}.mail-sender-avatar{display:grid;width:38px;height:38px;place-items:center;border-radius:50%;color:#0958d9;background:#dcecff;font-weight:900}.mail-address-card b{color:#202634;font-size:12px}.mail-address-card p,.mail-address-card time{margin:4px 0 0;color:#737d8d;font-size:10px;line-height:1.55}.mail-address-card strong{color:#4b5563}.mail-detail-actions{border-bottom:1px solid #edf0f5}.mail-body{border-top:0}.mail-section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.mail-section-heading h3{margin:0}.mail-section-heading span{padding:3px 8px;border-radius:999px;color:#6841c6;background:#f3edff;font-size:10px}.mail-attachment{grid-template-columns:auto minmax(0,1fr) auto}.mail-file-type{display:grid!important;width:36px;height:36px;place-items:center;border-radius:8px;color:#d4380d;background:#fff1f0;font-size:9px;font-weight:900}.mail-attachment-actions{display:flex;gap:10px}.mail-existing-attachments{display:grid;gap:6px}.mail-existing-attachment{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px 10px;border:1px solid #e6ebf2;border-radius:7px}.mail-existing-attachment span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-existing-attachment small{color:#a8071a}.mail-folder-modal{width:min(520px,calc(100vw - 32px))}
@media(max-width:1350px){.mail-workspace{grid-template-columns:220px minmax(320px,355px) minmax(420px,1fr)}.mail-actionbar{align-items:flex-start;flex-direction:column}.mail-move-control{align-self:flex-end;margin-top:-40px}}
@media(max-width:1050px){.mail-workspace{grid-template-columns:210px minmax(330px,1fr)}.mail-detail-panel{display:none}.mail-workspace.pane-detail .mail-list-panel{display:none}.mail-workspace.pane-detail .mail-detail-panel{display:flex}.mail-workspace.pane-detail{grid-template-columns:210px minmax(0,1fr)}.mail-mobile-back{display:inline-flex;width:max-content;margin-bottom:9px;border:0;color:#0958d9;background:transparent;font-weight:800;cursor:pointer}.mail-actionbar-primary{flex-wrap:wrap}.mail-move-control{margin-top:0}}
@media(max-width:720px){.mail-status-strip{align-items:flex-start;flex-direction:column;padding:10px 12px}.mail-status-strip>small{display:none}.mail-actionbar{display:none}.mail-workspace,.mail-workspace.pane-detail{min-height:calc(100vh - 190px);grid-template-columns:1fr;border-radius:10px}.mail-sidebar{display:none}.mail-workspace.pane-folders .mail-sidebar{display:block}.mail-workspace.pane-folders .mail-list-panel,.mail-workspace.pane-folders .mail-detail-panel{display:none}.mail-workspace.pane-detail .mail-list-panel{display:none}.mail-workspace.pane-detail .mail-detail-panel{display:flex}.mail-list-toolbar{grid-template-columns:auto minmax(0,1fr) auto}.mail-list-toolbar .mail-filter-toggle:nth-of-type(2),.mail-list-toolbar .mail-filter-toggle:nth-of-type(3){display:none}.mail-advanced-filters.open{grid-template-columns:1fr 1fr}.mail-row{grid-template-columns:20px 24px minmax(0,1fr)}.mail-detail-panel{padding:15px}.mail-address-card{padding:10px}.mail-detail-actions{gap:6px}.mail-detail-actions .btn{flex:1}.mail-attachment{grid-template-columns:auto minmax(0,1fr)}.mail-attachment-actions{grid-column:2}.mail-provider-grid{grid-template-columns:1fr 1fr}}

/* 邮件附件站内预览：图片和 PDF 使用短时授权读取为 Blob，不跳转新标签页。 */
.mail-attachment.is-previewable{border-color:#d6e7ff;background:#fbfdff}.mail-attachment.is-previewable .mail-file-type{color:#0958d9;background:#e6f4ff}.mail-attachment-preview-modal{width:min(980px,calc(100vw - 32px));overflow:hidden}.mail-attachment-preview-modal .modal-head h2{max-width:min(710px,70vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-attachment-preview-body{display:grid;min-height:360px;max-height:calc(100vh - 190px);place-items:center;overflow:auto;padding:18px;background:#f5f7fa}.mail-preview-image{display:block;max-width:100%;max-height:calc(100vh - 230px);object-fit:contain;border-radius:8px;background:#fff;box-shadow:0 8px 28px rgba(15,42,78,.14)}.mail-preview-pdf{width:100%;height:calc(100vh - 230px);min-height:480px;border:0;border-radius:8px;background:#fff}.mail-preview-state{display:grid;min-height:310px;place-items:center;align-content:center;gap:10px;color:#6b7280;text-align:center}.mail-preview-state b{color:#161616;font-size:15px}.mail-preview-state p{max-width:460px;margin:0;font-size:12px;line-height:1.7}.mail-preview-state.error{color:#a8071a}.mail-attachment-preview-modal .modal-foot{justify-content:space-between}
@media(max-width:720px){.mail-attachment-preview-modal{width:calc(100vw - 18px);max-height:calc(100vh - 18px)}.mail-attachment-preview-body{min-height:260px;max-height:calc(100vh - 170px);padding:10px}.mail-preview-image{max-height:calc(100vh - 210px)}.mail-preview-pdf{height:calc(100vh - 210px);min-height:360px}.mail-attachment-preview-modal .modal-foot{align-items:stretch;flex-direction:column}.mail-attachment-preview-modal .modal-foot .btn{width:100%}}

/* 邮箱三栏固定在当前视口内，文件夹、邮件列表和正文分别滚动。 */
.mail-workspace{height:calc(100dvh - 220px);min-height:560px;overflow:hidden}
.mail-sidebar,.mail-list,.mail-detail-panel{overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#b9c9dc transparent;scrollbar-gutter:stable;scrollbar-width:thin}
.mail-sidebar::-webkit-scrollbar,.mail-list::-webkit-scrollbar,.mail-detail-panel::-webkit-scrollbar{width:8px}
.mail-sidebar::-webkit-scrollbar-thumb,.mail-list::-webkit-scrollbar-thumb,.mail-detail-panel::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:#b9c9dc;background-clip:padding-box}
.mail-sidebar::-webkit-scrollbar-thumb:hover,.mail-list::-webkit-scrollbar-thumb:hover,.mail-detail-panel::-webkit-scrollbar-thumb:hover{background:#8ea8c4;background-clip:padding-box}
.mail-list-panel{height:100%;overflow:hidden}

/* 后端暂未提供 Content-ID，邮件图片按正文内图片区安全展示，不再混入附件列表。 */
.mail-inline-images{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:20px;padding-top:18px;border-top:1px solid #edf0f5}
.mail-inline-images.is-loading{display:flex;min-height:84px;align-items:center;justify-content:center;color:#6b7280;font-size:12px}
.mail-inline-image{display:grid;min-width:0;gap:7px;padding:8px;border:1px solid #e2e8f0;border-radius:10px;color:#475569;background:#f8fafc;text-align:left;cursor:zoom-in}
.mail-inline-image:hover{border-color:#91caff;background:#f0f7ff;box-shadow:0 5px 16px rgba(23,91,160,.1)}
.mail-inline-image img{display:block;width:100%;height:auto;max-height:440px;object-fit:contain;border-radius:7px;background:#fff}
.mail-inline-image span{overflow:hidden;padding:0 3px;font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.mail-inline-image.is-error{min-height:110px;place-items:center;align-content:center;color:#a8071a;cursor:pointer;text-align:center}
.mail-inline-image.is-error b{font-size:12px}

@media(max-width:720px){.mail-workspace,.mail-workspace.pane-detail{height:calc(100dvh - 190px);min-height:420px}.mail-inline-images{grid-template-columns:1fr}.mail-inline-image img{max-height:360px}}

/* 质量趋势图：折线和横轴共用完整容器宽度，避免固定 SVG 比例造成错位。 */
.quality-line-wrap{position:relative;padding-bottom:32px}
.quality-line{display:block;width:100%;height:100px}
.quality-line-values-below{position:relative;display:block;height:14px;margin-top:1px;color:#1f467d;font-size:9px;font-weight:500;font-variant-numeric:tabular-nums;line-height:1;text-align:center}
.quality-line-values-below span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.quality-line-values-below + .quality-chart-labels-absolute{margin-top:0;color:#7387a5;font-size:8px}
.quality-line text{font-weight:500}

/* 统一列表分页：所有长列表每页最多 20 条，并支持前后翻页和指定页跳转。 */
.list-pagination{display:flex;min-height:58px;align-items:center;justify-content:space-between;gap:16px;margin-top:14px;padding:10px 14px;border:1px solid #e3e9f1;border-radius:9px;background:#fff}.list-pagination-summary{color:#687386;font-size:12px}.list-pagination-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.list-page-jump{display:flex;align-items:center;gap:6px;color:#596579;font-size:12px;white-space:nowrap}.list-page-jump input{width:58px;height:32px;padding:0 7px;border:1px solid #ccd7e5;border-radius:6px;color:#161616;background:#fff;text-align:center;font-variant-numeric:tabular-nums}.list-page-jump input:focus{border-color:#69b1ff;outline:0;box-shadow:0 0 0 2px rgba(22,119,255,.1)}.supplier-list .list-pagination{margin-bottom:4px}.all-messages-modal .list-pagination{margin:12px 0 0}.calendar-agenda .list-pagination,.meeting-upload-panel .list-pagination,.detail-body .list-pagination{margin:12px 0 0}.knowledge-grid + .list-pagination{margin-top:16px}
.mail-pagination{flex-wrap:wrap}.mail-page-jump{display:flex;align-items:center;gap:5px;color:#596579;white-space:nowrap}.mail-page-jump input{width:48px;height:30px;border:1px solid #ccd7e5;border-radius:6px;text-align:center;font-variant-numeric:tabular-nums}
@media(max-width:720px){.list-pagination{align-items:stretch;flex-direction:column}.list-pagination-actions{justify-content:space-between;flex-wrap:wrap}.list-pagination-actions .btn{flex:1}.list-page-jump{order:3;width:100%;justify-content:center}.mail-pagination{gap:7px}.mail-page-jump{order:4;width:100%;justify-content:center}}
