| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527 |
- :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; }
- }
|