app.css 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. :root {
  2. --bg: #f5f7fa;
  3. --card: #ffffff;
  4. --line: #dde3ec;
  5. --text: #1f2937;
  6. --muted: #6b7280;
  7. --ok: #16a34a;
  8. --warn: #d97706;
  9. --err: #dc2626;
  10. --accent: #2563eb;
  11. }
  12. * { box-sizing: border-box; }
  13. body {
  14. margin: 0;
  15. font-family: "Segoe UI", "Microsoft YaHei", system-ui, sans-serif;
  16. background: var(--bg);
  17. color: var(--text);
  18. font-size: 14px;
  19. }
  20. header {
  21. background: #111827;
  22. color: #fff;
  23. padding: 14px 20px;
  24. }
  25. header h1 { margin: 0 0 8px; font-size: 18px; font-weight: 600; }
  26. .tag {
  27. font-size: 12px;
  28. font-weight: 400;
  29. background: #374151;
  30. padding: 2px 8px;
  31. border-radius: 10px;
  32. vertical-align: middle;
  33. }
  34. .banner { padding: 6px 10px; border-radius: 4px; background: #374151; font-size: 13px; }
  35. .banner.ok { background: #14532d; }
  36. .banner.warn { background: #78350f; }
  37. .banner.err { background: #7f1d1d; }
  38. nav {
  39. display: flex;
  40. gap: 4px;
  41. padding: 8px 20px 0;
  42. background: var(--card);
  43. border-bottom: 1px solid var(--line);
  44. flex-wrap: wrap;
  45. }
  46. nav button {
  47. border: 1px solid transparent;
  48. border-bottom: none;
  49. background: transparent;
  50. padding: 8px 14px;
  51. cursor: pointer;
  52. border-radius: 6px 6px 0 0;
  53. color: var(--muted);
  54. font-size: 13px;
  55. }
  56. nav button.active {
  57. background: var(--bg);
  58. border-color: var(--line);
  59. color: var(--accent);
  60. font-weight: 600;
  61. }
  62. .tab { display: none; padding: 16px 20px; }
  63. .tab.active { display: block; }
  64. .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
  65. @media (max-width: 1100px) { .grid2 { grid-template-columns: 1fr; } }
  66. .card {
  67. background: var(--card);
  68. border: 1px solid var(--line);
  69. border-radius: 8px;
  70. padding: 16px;
  71. }
  72. .card h2 { font-size: 15px; margin: 0 0 12px; }
  73. .card h3 { font-size: 13px; margin: 14px 0 6px; color: var(--muted); }
  74. label { display: block; margin-bottom: 10px; font-size: 13px; color: var(--muted); }
  75. select, input[type="text"], input[type="number"], textarea {
  76. width: 100%;
  77. margin-top: 4px;
  78. padding: 6px 8px;
  79. border: 1px solid var(--line);
  80. border-radius: 4px;
  81. font-family: inherit;
  82. font-size: 13px;
  83. color: var(--text);
  84. background: #fff;
  85. }
  86. textarea { font-family: Consolas, "Courier New", monospace; font-size: 12px; resize: vertical; }
  87. button {
  88. border: 1px solid var(--line);
  89. background: #fff;
  90. padding: 6px 14px;
  91. border-radius: 4px;
  92. cursor: pointer;
  93. font-size: 13px;
  94. }
  95. button:hover { border-color: var(--accent); color: var(--accent); }
  96. button.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
  97. button.primary:hover { opacity: .9; color: #fff; }
  98. button:disabled { opacity: .5; cursor: not-allowed; }
  99. .row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 10px 0; }
  100. .muted { color: var(--muted); font-size: 12px; }
  101. .warn { color: var(--warn); font-size: 12px; }
  102. .state { font-size: 12px; padding: 4px 0; }
  103. .state.ok { color: var(--ok); }
  104. .state.warn { color: var(--warn); }
  105. .state.err { color: var(--err); }
  106. .output {
  107. background: #0f172a;
  108. color: #d1e3ff;
  109. padding: 10px;
  110. border-radius: 6px;
  111. font-family: Consolas, "Courier New", monospace;
  112. font-size: 12px;
  113. max-height: 420px;
  114. overflow: auto;
  115. white-space: pre-wrap;
  116. word-break: break-all;
  117. }
  118. .output.small { max-height: 260px; }
  119. .layers { display: flex; gap: 8px; flex-wrap: wrap; margin: 8px 0; }
  120. .chip {
  121. background: #eef2ff;
  122. border: 1px solid #c7d2fe;
  123. color: #3730a3;
  124. border-radius: 12px;
  125. padding: 3px 10px;
  126. font-size: 12px;
  127. }
  128. .graph { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 12px 0; }
  129. .node {
  130. border: 1px solid var(--line);
  131. border-radius: 6px;
  132. padding: 8px 10px;
  133. background: #f8fafc;
  134. font-size: 12px;
  135. text-align: center;
  136. min-width: 110px;
  137. }
  138. .node.ok { border-color: #bbf7d0; background: #f0fdf4; }
  139. .node.no { border-color: #fecaca; background: #fef2f2; color: var(--err); }
  140. .arrow { color: var(--muted); }
  141. code { background: #eef2f7; padding: 1px 4px; border-radius: 3px; }