Spaces:
Sleeping
Sleeping
| :root { | |
| --bg: #f6f7f4; | |
| --surface: #ffffff; | |
| --surface-2: #eef4f1; | |
| --surface-3: #fff7ed; | |
| --line: #d9ded8; | |
| --line-strong: #b8c2bd; | |
| --text: #17211d; | |
| --muted: #66736d; | |
| --soft: #8a948f; | |
| --teal: #0f766e; | |
| --teal-soft: #d9f3ee; | |
| --blue: #2563eb; | |
| --blue-soft: #dbeafe; | |
| --amber: #b45309; | |
| --amber-soft: #ffedd5; | |
| --red: #b91c1c; | |
| --red-soft: #fee2e2; | |
| --green: #15803d; | |
| --green-soft: #dcfce7; | |
| --ink: #111827; | |
| --shadow: 0 10px 30px rgba(23, 33, 29, 0.08); | |
| --radius: 8px; | |
| --font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; | |
| --mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace; | |
| } | |
| * { | |
| box-sizing: border-box; | |
| } | |
| body { | |
| margin: 0; | |
| min-height: 100vh; | |
| background: | |
| linear-gradient(180deg, rgba(15, 118, 110, 0.08), transparent 360px), | |
| var(--bg); | |
| color: var(--text); | |
| font-family: var(--font); | |
| } | |
| button, | |
| input, | |
| select { | |
| font: inherit; | |
| } | |
| button { | |
| cursor: pointer; | |
| } | |
| button:disabled { | |
| cursor: not-allowed; | |
| opacity: 0.55; | |
| } | |
| #app { | |
| min-height: 100vh; | |
| } | |
| .shell { | |
| display: grid; | |
| grid-template-rows: auto auto 1fr; | |
| gap: 14px; | |
| max-width: 1480px; | |
| min-height: 100vh; | |
| margin: 0 auto; | |
| padding: 18px; | |
| } | |
| .topbar { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 16px; | |
| } | |
| .brand { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| min-width: 280px; | |
| } | |
| .mark { | |
| display: grid; | |
| place-items: center; | |
| width: 42px; | |
| height: 42px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: var(--radius); | |
| background: var(--surface); | |
| box-shadow: var(--shadow); | |
| color: var(--teal); | |
| font-weight: 800; | |
| } | |
| .brand h1 { | |
| margin: 0; | |
| font-size: 21px; | |
| line-height: 1.1; | |
| letter-spacing: 0; | |
| } | |
| .brand p { | |
| margin: 4px 0 0; | |
| color: var(--muted); | |
| font-size: 12px; | |
| } | |
| .top-actions { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| justify-content: flex-end; | |
| } | |
| .panel, | |
| .commandbar { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: rgba(255, 255, 255, 0.92); | |
| box-shadow: var(--shadow); | |
| } | |
| .commandbar { | |
| display: grid; | |
| grid-template-columns: 1.1fr 0.8fr auto; | |
| gap: 12px; | |
| padding: 12px; | |
| align-items: end; | |
| } | |
| .fieldrow, | |
| .action-grid { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| align-items: end; | |
| } | |
| .field { | |
| display: grid; | |
| gap: 5px; | |
| min-width: 118px; | |
| } | |
| .field.compact { | |
| min-width: 88px; | |
| } | |
| .field.wide { | |
| min-width: 170px; | |
| } | |
| .field label, | |
| .section-title, | |
| .micro-label { | |
| color: var(--muted); | |
| font-size: 11px; | |
| font-weight: 700; | |
| letter-spacing: 0.03em; | |
| text-transform: uppercase; | |
| } | |
| select, | |
| input[type="number"], | |
| input[type="range"] { | |
| min-height: 36px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: var(--radius); | |
| background: #fff; | |
| color: var(--text); | |
| padding: 7px 9px; | |
| outline: none; | |
| } | |
| select:focus, | |
| input:focus { | |
| border-color: var(--teal); | |
| box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.14); | |
| } | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 36px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: var(--radius); | |
| background: var(--surface); | |
| color: var(--text); | |
| padding: 8px 12px; | |
| font-weight: 700; | |
| transition: transform 0.12s, border-color 0.12s, background 0.12s; | |
| } | |
| .btn:hover { | |
| transform: translateY(-1px); | |
| border-color: var(--teal); | |
| } | |
| .btn.primary { | |
| border-color: var(--teal); | |
| background: var(--teal); | |
| color: #fff; | |
| } | |
| .btn.blue { | |
| border-color: var(--blue); | |
| background: var(--blue); | |
| color: #fff; | |
| } | |
| .btn.warn { | |
| border-color: #f59e0b; | |
| background: var(--amber-soft); | |
| color: #7c2d12; | |
| } | |
| .btn.ghost { | |
| background: transparent; | |
| } | |
| .segmented { | |
| display: inline-flex; | |
| padding: 3px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: var(--surface-2); | |
| } | |
| .segmented button { | |
| min-height: 30px; | |
| border: 0; | |
| border-radius: 6px; | |
| background: transparent; | |
| color: var(--muted); | |
| padding: 6px 10px; | |
| font-weight: 800; | |
| } | |
| .segmented button.active { | |
| background: var(--surface); | |
| color: var(--teal); | |
| box-shadow: 0 1px 4px rgba(23, 33, 29, 0.14); | |
| } | |
| .main-grid { | |
| display: grid; | |
| grid-template-columns: minmax(320px, 0.9fr) minmax(420px, 1.25fr) minmax(340px, 0.95fr); | |
| gap: 14px; | |
| align-items: start; | |
| } | |
| .panel { | |
| overflow: hidden; | |
| } | |
| .panel-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| gap: 10px; | |
| min-height: 48px; | |
| padding: 12px 14px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .panel-header h2, | |
| .panel-header h3 { | |
| margin: 0; | |
| font-size: 14px; | |
| line-height: 1.2; | |
| } | |
| .panel-body { | |
| padding: 14px; | |
| } | |
| .metrics { | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: 8px; | |
| } | |
| .metric { | |
| padding: 10px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: var(--surface); | |
| } | |
| .metric strong { | |
| display: block; | |
| margin-top: 4px; | |
| font-size: 19px; | |
| } | |
| .badge { | |
| display: inline-flex; | |
| align-items: center; | |
| min-height: 22px; | |
| border-radius: 999px; | |
| padding: 3px 9px; | |
| background: var(--surface-2); | |
| color: var(--muted); | |
| font-size: 11px; | |
| font-weight: 800; | |
| white-space: nowrap; | |
| } | |
| .badge.live { | |
| background: var(--green-soft); | |
| color: var(--green); | |
| } | |
| .badge.sample { | |
| background: var(--amber-soft); | |
| color: var(--amber); | |
| } | |
| .badge.done { | |
| background: var(--red-soft); | |
| color: var(--red); | |
| } | |
| .world-map { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 10px; | |
| } | |
| .region-node { | |
| min-height: 118px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: var(--surface); | |
| padding: 11px; | |
| } | |
| .region-node.hot { | |
| border-color: #f97316; | |
| background: #fff7ed; | |
| } | |
| .region-top { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 8px; | |
| } | |
| .region-name { | |
| font-size: 18px; | |
| font-weight: 900; | |
| } | |
| .bar { | |
| height: 8px; | |
| border-radius: 999px; | |
| overflow: hidden; | |
| background: #e5e7eb; | |
| } | |
| .bar span { | |
| display: block; | |
| height: 100%; | |
| border-radius: inherit; | |
| background: var(--teal); | |
| } | |
| .bar.load span { | |
| background: #dc2626; | |
| } | |
| .bar.comp span { | |
| background: #16a34a; | |
| } | |
| .region-stats { | |
| display: grid; | |
| gap: 7px; | |
| } | |
| .statline { | |
| display: grid; | |
| grid-template-columns: 74px 1fr 42px; | |
| gap: 7px; | |
| align-items: center; | |
| color: var(--muted); | |
| font-size: 12px; | |
| } | |
| .resource-grid { | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: 8px; | |
| } | |
| .resource { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: var(--surface); | |
| padding: 10px; | |
| } | |
| .resource strong { | |
| display: block; | |
| margin-top: 4px; | |
| font-size: 18px; | |
| } | |
| .action-panel { | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .action-form { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .param-grid { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 8px; | |
| } | |
| .param-grid .full { | |
| grid-column: 1 / -1; | |
| } | |
| .council-stack { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .brain-card { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: var(--surface); | |
| padding: 12px; | |
| } | |
| .brain-head { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 10px; | |
| margin-bottom: 8px; | |
| } | |
| .brain-head h3 { | |
| margin: 0; | |
| font-size: 14px; | |
| } | |
| .brain-card p { | |
| margin: 7px 0 0; | |
| color: var(--muted); | |
| font-size: 12px; | |
| line-height: 1.45; | |
| } | |
| .decision { | |
| border: 1px solid #99f6e4; | |
| border-radius: var(--radius); | |
| background: #ecfdf5; | |
| padding: 12px; | |
| } | |
| .decision h3 { | |
| margin: 0 0 6px; | |
| font-size: 14px; | |
| } | |
| .timeline { | |
| display: grid; | |
| gap: 8px; | |
| max-height: 260px; | |
| overflow: auto; | |
| } | |
| .timeline-entry { | |
| display: grid; | |
| grid-template-columns: 44px 1fr auto; | |
| gap: 8px; | |
| align-items: center; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: var(--surface); | |
| padding: 9px; | |
| font-size: 12px; | |
| } | |
| .timeline-entry strong { | |
| font-family: var(--mono); | |
| } | |
| .timeline-entry.rejected { | |
| border-color: #fecaca; | |
| background: #fff1f2; | |
| } | |
| .replay-row { | |
| display: grid; | |
| grid-template-columns: auto 1fr auto; | |
| gap: 10px; | |
| align-items: center; | |
| } | |
| .empty { | |
| display: grid; | |
| place-items: center; | |
| min-height: 160px; | |
| border: 1px dashed var(--line-strong); | |
| border-radius: var(--radius); | |
| color: var(--muted); | |
| text-align: center; | |
| padding: 20px; | |
| } | |
| .tiny { | |
| color: var(--soft); | |
| font-size: 11px; | |
| line-height: 1.35; | |
| } | |
| .mono { | |
| font-family: var(--mono); | |
| } | |
| #toast-root { | |
| position: fixed; | |
| right: 16px; | |
| bottom: 16px; | |
| display: grid; | |
| gap: 8px; | |
| z-index: 20; | |
| } | |
| .toast { | |
| max-width: 360px; | |
| border-radius: var(--radius); | |
| background: var(--ink); | |
| color: #fff; | |
| padding: 11px 13px; | |
| box-shadow: var(--shadow); | |
| font-size: 13px; | |
| transition: opacity 0.2s, transform 0.2s; | |
| } | |
| .toast-error { | |
| background: var(--red); | |
| } | |
| .toast-success { | |
| background: var(--green); | |
| } | |
| .toast-out { | |
| opacity: 0; | |
| transform: translateY(4px); | |
| } | |
| @media (max-width: 1180px) { | |
| .main-grid, | |
| .commandbar { | |
| grid-template-columns: 1fr; | |
| } | |
| .metrics { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| } | |
| @media (max-width: 720px) { | |
| .shell { | |
| padding: 10px; | |
| } | |
| .topbar { | |
| align-items: flex-start; | |
| flex-direction: column; | |
| } | |
| .brand { | |
| min-width: 0; | |
| } | |
| .world-map, | |
| .resource-grid, | |
| .param-grid, | |
| .metrics { | |
| grid-template-columns: 1fr; | |
| } | |
| .replay-row { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |