/* 光湖密钥管理页 · 中文优先 · 思源黑体 / 系统中文兜底 · 暗底浅字 (跟 lighthouse-portal 一脉) */ * { box-sizing: border-box; } html, body { margin: 0; padding: 0; font-family: "Source Han Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif; background: #0e1014; color: #e6e8eb; min-height: 100vh; font-size: 14px; line-height: 1.55; } code, pre, kbd { font-family: "JetBrains Mono", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 0.9em; } .topbar { display: flex; align-items: center; justify-content: space-between; padding: 12px 22px; background: linear-gradient(180deg, #14171d 0%, #0e1014 100%); border-bottom: 1px solid #1c2027; position: sticky; top: 0; z-index: 5; } .brand { display: flex; align-items: center; gap: 10px; } .brand .dot { width: 10px; height: 10px; border-radius: 50%; background: #4cd97b; box-shadow: 0 0 12px #4cd97b88; } .brand-name { font-weight: 600; letter-spacing: 0.04em; } .sovereign { color: #6b7280; font-size: 11px; margin-left: 8px; } .badge { padding: 4px 10px; border-radius: 999px; background: #1c2027; color: #a1a8b3; font-size: 12px; } .badge.ok { background: #14391f; color: #5fe08a; } .badge.warn { background: #3a2a14; color: #f0b15c; } .badge.err { background: #3a1414; color: #f06060; } .page { max-width: 980px; margin: 0 auto; padding: 24px 22px 80px; } .intro h1 { font-size: 22px; font-weight: 600; margin: 8px 0 12px; border-left: 3px solid #4cd97b; padding-left: 10px; } .intro p { color: #b6bdc6; } .intro .sub { color: #8a93a0; font-size: 13px; } .loading-hint { text-align: center; color: #6b7280; padding: 40px 0; } .group { background: #14171d; border: 1px solid #1c2027; border-radius: 10px; margin: 18px 0; padding: 16px 18px 6px; } .group h2 { margin: 0 0 4px; font-size: 16px; font-weight: 600; display: flex; align-items: center; gap: 10px; } .group .group-tag { font-size: 11px; background: #1c2027; color: #8a93a0; padding: 2px 8px; border-radius: 4px; font-family: monospace; } .group .group-desc { color: #8a93a0; font-size: 12px; margin: 0 0 10px; } .group .group-subject { color: #6b7280; font-size: 11px; margin: 0 0 12px; border-bottom: 1px dashed #1c2027; padding-bottom: 8px; } .secret-row { display: grid; grid-template-columns: 1fr 320px auto; gap: 10px; align-items: start; padding: 10px 0; border-bottom: 1px dashed #1c2027; } .secret-row:last-child { border-bottom: 0; } .secret-meta { min-width: 0; } .secret-meta .name { font-family: monospace; font-size: 12px; color: #6b7280; } .secret-meta .label { font-weight: 500; font-size: 14px; color: #e6e8eb; margin: 2px 0 4px; display: flex; align-items: center; gap: 8px; } .secret-meta .level { font-size: 10px; padding: 1px 6px; border-radius: 3px; } .level.required { background: #3a1414; color: #f06060; } .level.required_on_stage { background: #3a2a14; color: #f0b15c; } .level.required_on_target { background: #3a2a14; color: #f0b15c; } .level.optional { background: #1c2027; color: #6b7280; } .secret-meta .hint { font-size: 12px; color: #8a93a0; margin: 2px 0 0; } .secret-meta .hint code { color: #b6bdc6; } .secret-input { display: flex; flex-direction: column; gap: 6px; } .secret-input input, .secret-input textarea { width: 100%; background: #0e1014; color: #e6e8eb; border: 1px solid #2a2f38; border-radius: 6px; padding: 8px 10px; font-family: monospace; font-size: 13px; resize: vertical; } .secret-input input:focus, .secret-input textarea:focus { outline: none; border-color: #4cd97b66; } .secret-input .masked { font-family: monospace; color: #5fe08a; font-size: 12px; } .secret-input .placeholder { color: #6b7280; font-size: 12px; font-style: italic; } .secret-actions { display: flex; flex-direction: column; gap: 6px; align-items: stretch; } button { background: #4cd97b; color: #0e1014; border: 0; border-radius: 6px; padding: 6px 14px; font-weight: 600; cursor: pointer; font-size: 12px; font-family: inherit; } button:hover { background: #5fe08a; } button.secondary { background: #2a2f38; color: #e6e8eb; } button.secondary:hover { background: #3a414c; } button.danger { background: #3a1414; color: #f06060; } button.danger:hover { background: #5a1414; } button:disabled { opacity: 0.5; cursor: not-allowed; } .group-action { margin: 12px 0 6px; padding: 12px; border: 1px dashed #4cd97b66; border-radius: 6px; background: #14391f33; } .group-action h3 { margin: 0 0 6px; font-size: 13px; font-weight: 600; color: #5fe08a; } .group-action p { margin: 0 0 8px; color: #b6bdc6; font-size: 12px; } .group-action button { width: 100%; padding: 10px; font-size: 13px; } .footer-note { margin-top: 32px; padding-top: 16px; border-top: 1px dashed #1c2027; color: #6b7280; font-size: 12px; } .footer-note code { color: #8a93a0; } .toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); background: #14171d; border: 1px solid #2a2f38; border-radius: 8px; padding: 12px 20px; max-width: 80vw; color: #e6e8eb; font-size: 13px; box-shadow: 0 4px 16px #0008; opacity: 0; pointer-events: none; transition: opacity 0.2s; white-space: pre-line; } .toast.show { opacity: 1; pointer-events: auto; } .toast.ok { border-color: #4cd97b66; } .toast.err { border-color: #f0606066; }