| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- :root {
- --bg: #f5f7fa;
- --card: #ffffff;
- --line: #dde3ec;
- --text: #1f2937;
- --muted: #6b7280;
- --ok: #16a34a;
- --warn: #d97706;
- --err: #dc2626;
- --accent: #2563eb;
- }
- * { box-sizing: border-box; }
- body {
- margin: 0;
- font-family: "Segoe UI", "Microsoft YaHei", system-ui, sans-serif;
- background: var(--bg);
- color: var(--text);
- font-size: 14px;
- }
- header {
- background: #111827;
- color: #fff;
- padding: 14px 20px;
- }
- header h1 { margin: 0 0 8px; font-size: 18px; font-weight: 600; }
- .tag {
- font-size: 12px;
- font-weight: 400;
- background: #374151;
- padding: 2px 8px;
- border-radius: 10px;
- vertical-align: middle;
- }
- .banner { padding: 6px 10px; border-radius: 4px; background: #374151; font-size: 13px; }
- .banner.ok { background: #14532d; }
- .banner.warn { background: #78350f; }
- .banner.err { background: #7f1d1d; }
- nav {
- display: flex;
- gap: 4px;
- padding: 8px 20px 0;
- background: var(--card);
- border-bottom: 1px solid var(--line);
- flex-wrap: wrap;
- }
- nav button {
- border: 1px solid transparent;
- border-bottom: none;
- background: transparent;
- padding: 8px 14px;
- cursor: pointer;
- border-radius: 6px 6px 0 0;
- color: var(--muted);
- font-size: 13px;
- }
- nav button.active {
- background: var(--bg);
- border-color: var(--line);
- color: var(--accent);
- font-weight: 600;
- }
- .tab { display: none; padding: 16px 20px; }
- .tab.active { display: block; }
- .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
- @media (max-width: 1100px) { .grid2 { grid-template-columns: 1fr; } }
- .card {
- background: var(--card);
- border: 1px solid var(--line);
- border-radius: 8px;
- padding: 16px;
- }
- .card h2 { font-size: 15px; margin: 0 0 12px; }
- .card h3 { font-size: 13px; margin: 14px 0 6px; color: var(--muted); }
- label { display: block; margin-bottom: 10px; font-size: 13px; color: var(--muted); }
- select, input[type="text"], input[type="number"], textarea {
- width: 100%;
- margin-top: 4px;
- padding: 6px 8px;
- border: 1px solid var(--line);
- border-radius: 4px;
- font-family: inherit;
- font-size: 13px;
- color: var(--text);
- background: #fff;
- }
- textarea { font-family: Consolas, "Courier New", monospace; font-size: 12px; resize: vertical; }
- button {
- border: 1px solid var(--line);
- background: #fff;
- padding: 6px 14px;
- border-radius: 4px;
- cursor: pointer;
- font-size: 13px;
- }
- button:hover { border-color: var(--accent); color: var(--accent); }
- button.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
- button.primary:hover { opacity: .9; color: #fff; }
- button:disabled { opacity: .5; cursor: not-allowed; }
- .row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 10px 0; }
- .muted { color: var(--muted); font-size: 12px; }
- .warn { color: var(--warn); font-size: 12px; }
- .state { font-size: 12px; padding: 4px 0; }
- .state.ok { color: var(--ok); }
- .state.warn { color: var(--warn); }
- .state.err { color: var(--err); }
- .output {
- background: #0f172a;
- color: #d1e3ff;
- padding: 10px;
- border-radius: 6px;
- font-family: Consolas, "Courier New", monospace;
- font-size: 12px;
- max-height: 420px;
- overflow: auto;
- white-space: pre-wrap;
- word-break: break-all;
- }
- .output.small { max-height: 260px; }
- .layers { display: flex; gap: 8px; flex-wrap: wrap; margin: 8px 0; }
- .chip {
- background: #eef2ff;
- border: 1px solid #c7d2fe;
- color: #3730a3;
- border-radius: 12px;
- padding: 3px 10px;
- font-size: 12px;
- }
- .graph { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 12px 0; }
- .node {
- border: 1px solid var(--line);
- border-radius: 6px;
- padding: 8px 10px;
- background: #f8fafc;
- font-size: 12px;
- text-align: center;
- min-width: 110px;
- }
- .node.ok { border-color: #bbf7d0; background: #f0fdf4; }
- .node.no { border-color: #fecaca; background: #fef2f2; color: var(--err); }
- .arrow { color: var(--muted); }
- code { background: #eef2f7; padding: 1px 4px; border-radius: 3px; }
|