:root { color-scheme: light; --bg: #f3efe6; --ink: #1b1712; --muted: #756c5f; --panel: rgba(255, 252, 245, 0.92); --line: rgba(52, 42, 31, 0.12); --primary: #183a37; --primary-2: #245b53; --accent: #c46a2b; --danger: #a63428; --ok: #236b43; --shadow: 0 24px 70px rgba(41, 32, 22, 0.13); font-family: "Avenir Next", "PingFang SC", "Microsoft YaHei", sans-serif; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; color: var(--ink); background: radial-gradient(circle at 15% 5%, rgba(196,106,43,0.20), transparent 28rem), radial-gradient(circle at 90% 12%, rgba(36,91,83,0.16), transparent 30rem), linear-gradient(135deg, #f7f0e4 0%, #ebe3d4 100%); } a { color: var(--primary-2); } button, input, select { font: inherit; } .app-shell { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 22px; max-width: 1480px; margin: 0 auto; padding: 24px; } .sidebar { position: sticky; top: 24px; height: calc(100vh - 48px); border: 1px solid var(--line); border-radius: 30px; padding: 22px; background: linear-gradient(160deg, rgba(24,58,55,0.96), rgba(31,39,34,0.94)); color: #fff9ec; box-shadow: var(--shadow); } .brand { display: flex; gap: 14px; align-items: center; margin-bottom: 34px; } .brand-mark { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 18px; background: #f0b15e; color: #1b1712; font-weight: 900; letter-spacing: -0.04em; } .brand h1 { margin: 0; font-size: 22px; letter-spacing: -0.04em; } .brand p { margin: 3px 0 0; color: rgba(255,249,236,0.68); font-size: 12px; } .side-nav { display: grid; gap: 8px; } .side-nav a { color: rgba(255,249,236,0.78); text-decoration: none; padding: 12px 14px; border-radius: 16px; } .side-nav a.active, .side-nav a:hover { color: #fff9ec; background: rgba(255,255,255,0.12); } .sidebar-note { position: absolute; left: 22px; right: 22px; bottom: 22px; display: grid; gap: 10px; } .main { display: grid; gap: 20px; min-width: 0; } .hero-panel, .panel { min-width: 0; border: 1px solid var(--line); border-radius: 30px; background: var(--panel); box-shadow: var(--shadow); } .hero-panel { display: flex; justify-content: space-between; gap: 24px; align-items: center; padding: 30px; overflow: hidden; position: relative; } .hero-panel::after { content: ""; position: absolute; inset: auto -80px -140px auto; width: 300px; height: 300px; border-radius: 50%; background: rgba(196,106,43,0.14); } .eyebrow { margin: 0 0 8px; color: var(--accent); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.12em; } h2 { margin: 0; font-size: 24px; letter-spacing: -0.04em; } .hero-copy { margin: 10px 0 0; max-width: 720px; color: var(--muted); line-height: 1.7; } .hero-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; z-index: 1; } .panel { padding: 24px; } .panel-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; } .muted { color: var(--muted); font-size: 13px; } .button, .log-actions button, .pager button, .action-btn { border: 0; border-radius: 14px; padding: 10px 16px; font-weight: 800; cursor: pointer; transition: transform .15s ease, box-shadow .15s ease, background .15s ease; } .button:hover, .log-actions button:hover, .pager button:hover, .action-btn:hover { transform: translateY(-1px); } .button.primary { background: var(--primary); color: #fff9ec; box-shadow: 0 10px 24px rgba(24,58,55,.24); } .button.secondary { background: #efe5d3; color: var(--ink); } .button.ghost { background: transparent; border: 1px solid var(--line); color: var(--ink); } .button.small { padding: 8px 12px; border-radius: 12px; } .button:disabled { opacity: .48; cursor: not-allowed; transform: none; } .chip { display: inline-flex; align-items: center; width: max-content; border-radius: 999px; padding: 5px 11px; font-size: 12px; font-weight: 800; } .chip.neutral, .chip.gray { background: rgba(255,255,255,.14); color: #fff9ec; } .chip.green { background: #dff3e6; color: var(--ok); } .chip.red { background: #f8ded9; color: var(--danger); } .chip.blue { background: #dce9ef; color: #245b72; } .config-tabs { display: flex; gap: 8px; padding: 6px; border-radius: 20px; background: #ede4d4; margin-bottom: 18px; overflow-x: auto; } .config-tab { border: 0; border-radius: 15px; background: transparent; color: var(--muted); padding: 10px 14px; font-weight: 900; white-space: nowrap; cursor: pointer; } .config-tab.active { background: #fffaf0; color: var(--primary); box-shadow: 0 8px 20px rgba(52,42,31,.10); } .tab-panel[hidden] { display: none; } .tab-panel { min-width: 0; } .field-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; } .field-grid > * { min-width: 0; } label { display: grid; gap: 7px; min-width: 0; color: #4f463a; font-size: 13px; font-weight: 800; } label.wide { grid-column: span 2; } input, select { min-width: 0; width: 100%; border: 1px solid rgba(52,42,31,.16); border-radius: 14px; background: #fffcf6; color: var(--ink); padding: 11px 12px; outline: none; } input:focus, select:focus { border-color: var(--primary-2); box-shadow: 0 0 0 4px rgba(36,91,83,.12); } .status-note { margin-top: 16px; border-radius: 18px; padding: 12px 14px; background: #f7efe0; color: var(--muted); font-size: 13px; } .stage-pill { border-radius: 18px; padding: 11px 14px; background: #fff4dc; color: #8a581f; font-weight: 800; max-width: 520px; } .toolbar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; } .filter { width: 190px; padding: 8px 10px; } .table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 22px; background: #fffaf0; } .table-wrap.compact { max-height: 300px; } table { width: 100%; min-width: 920px; border-collapse: collapse; font-size: 13px; } th, td { padding: 12px 13px; border-bottom: 1px solid rgba(52,42,31,.08); text-align: left; vertical-align: middle; } th { position: sticky; top: 0; z-index: 1; background: #f5ead8; color: #4d4032; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; } td code { font-size: 12px; word-break: break-all; } .account-library-note { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; border: 1px solid rgba(36,91,83,.12); border-radius: 18px; padding: 12px 14px; background: linear-gradient(90deg, rgba(36,91,83,.08), rgba(196,106,43,.08)); color: var(--muted); font-size: 13px; } .account-library-note strong { color: var(--primary); } .account-list { display: grid; gap: 12px; } .account-empty { border: 1px dashed rgba(52,42,31,.22); border-radius: 22px; padding: 24px; background: rgba(255,250,240,.72); color: var(--muted); text-align: center; } .account-card { display: grid; grid-template-columns: minmax(240px, 1.5fr) minmax(260px, 2fr) auto; gap: 16px; align-items: center; border: 1px solid var(--line); border-radius: 24px; padding: 16px; background: linear-gradient(135deg, rgba(255,250,240,.98), rgba(250,241,225,.92)); box-shadow: 0 12px 34px rgba(41,32,22,.08); } .account-card.has-error { border-color: rgba(166,52,40,.22); background: linear-gradient(135deg, rgba(255,250,240,.98), rgba(253,236,225,.94)); } .account-identity { min-width: 0; display: grid; gap: 9px; } .account-email { display: block; overflow: hidden; color: var(--ink); font-family: "SFMono-Regular", "Cascadia Code", Consolas, monospace; font-size: 13px; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; } .account-badges { display: flex; gap: 8px; flex-wrap: wrap; } .status-chip, .mini-chip { display: inline-flex; align-items: center; width: max-content; border-radius: 999px; padding: 5px 10px; font-size: 12px; font-weight: 900; } .status-chip.success { background: #dff3e6; color: var(--ok); } .status-chip.warning { background: #fff0c8; color: #7c5111; } .status-chip.danger { background: #f8ded9; color: var(--danger); } .status-chip.neutral { background: #e9e1d2; color: #554a3c; } .mini-chip { background: #dce9ef; color: #245b72; } .account-meta { min-width: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; } .meta-item { min-width: 0; display: grid; gap: 3px; } .meta-label { color: var(--muted); font-size: 11px; font-weight: 900; letter-spacing: .04em; } .meta-value { overflow: hidden; color: #3b3329; font-size: 13px; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; } .account-error { grid-column: 1 / -1; min-width: 0; } .error-summary { display: inline-block; max-width: 100%; overflow: hidden; border: 0; border-radius: 12px; padding: 8px 10px; background: rgba(166,52,40,.09); color: var(--danger); text-overflow: ellipsis; white-space: nowrap; cursor: help; } .error-popover { position: fixed; z-index: 50; max-width: min(520px, calc(100vw - 36px)); max-height: 260px; overflow: auto; border-radius: 18px; padding: 14px; background: #2b1712; color: #fff5ea; box-shadow: 0 22px 60px rgba(43,23,18,.28); white-space: pre-wrap; word-break: break-word; font-size: 12px; line-height: 1.55; } .action-btn { display: inline-block; margin: 3px; padding: 6px 10px; border-radius: 10px; font-size: 12px; text-decoration: none; white-space: nowrap; } .action-btn.detail { background: #eee2cf; color: var(--ink); } .action-btn.download { background: #ddf0e2; color: var(--ok); } .action-btn.recheck { background: #fff0c8; color: #7c5111; } .action-btn.retry-pay { background: #dce9ef; color: #1e5260; } .account-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; min-width: 150px; } .pager { display: flex; align-items: center; gap: 8px; margin-top: 14px; flex-wrap: wrap; } .pager button { background: #efe5d3; color: var(--ink); padding: 7px 12px; } .pager button.active { background: var(--primary); color: #fff9ec; } .pager .info { color: var(--muted); font-size: 13px; } .detail-box { margin-top: 14px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,250,240,.8); padding: 12px 14px; } .detail-box summary { cursor: pointer; color: var(--muted); font-weight: 800; } .detail-box pre { max-height: 280px; overflow: auto; margin: 12px 0 0; white-space: pre-wrap; word-break: break-word; font-size: 12px; } .log-dock { position: fixed; right: 22px; bottom: 22px; width: min(680px, calc(100vw - 44px)); height: 420px; z-index: 40; border: 1px solid rgba(255,255,255,.12); border-radius: 24px; overflow: hidden; background: #101411; color: #e6f1e8; box-shadow: 0 28px 80px rgba(16,20,17,.34); } .log-dock.collapsed { height: 58px; width: min(430px, calc(100vw - 44px)); } .log-dock header { height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; background: linear-gradient(90deg, #183a37, #26352c); } .log-dock header span { display: block; color: rgba(230,241,232,.65); font-size: 12px; margin-top: 2px; } .log-actions { display: flex; gap: 7px; } .log-actions button { padding: 7px 10px; border-radius: 10px; background: rgba(255,255,255,.12); color: #e6f1e8; } .log-dock pre { height: calc(100% - 58px); margin: 0; padding: 14px; overflow: auto; white-space: pre-wrap; word-break: break-word; font: 12px/1.55 "SFMono-Regular", "Cascadia Code", Consolas, monospace; } @media (max-width: 1040px) { .app-shell { grid-template-columns: 1fr; padding: 14px; } .sidebar { position: relative; top: 0; height: auto; } .sidebar-note { position: static; margin-top: 24px; } .field-grid { grid-template-columns: 1fr 1fr; } .hero-panel { align-items: flex-start; flex-direction: column; } .account-card { grid-template-columns: 1fr; align-items: stretch; } .account-actions { justify-content: flex-start; min-width: 0; } } @media (max-width: 720px) { .field-grid { grid-template-columns: 1fr; } label.wide { grid-column: auto; } .panel-head { flex-direction: column; align-items: flex-start; } .hero-actions, .toolbar { width: 100%; } .button, .toolbar select { flex: 1; } .account-library-note { align-items: flex-start; flex-direction: column; } .account-meta { grid-template-columns: 1fr; } .account-card { padding: 14px; border-radius: 20px; } }