Spaces:
Running
Running
Download css/skills.css from hongcoding/perch-design: direct link, hf CLI and curl.
- Browser
- Download file 8.39 kB
-
https://huggingface.co/spaces/hongcoding/perch-design/resolve/main/css/skills.css
- Command line
-
hf download hf://spaces/hongcoding/perch-design/css/skills.css
-
curl -L -o skills.css https://huggingface.co/spaces/hongcoding/perch-design/resolve/main/css/skills.css
8.39 kB
| /* Skill 技能系统(Phase 5C):技能中心页 + Composer 技能选择条。 | |
| Warm Paper 全令牌配色,遵循 design-system.md;无硬编码颜色。 */ | |
| /* ── Composer 技能选择条(输入框上方,可横向滚动) ─────────────────── */ | |
| .composer-skills { | |
| display: flex; | |
| gap: 8px; | |
| max-width: 760px; | |
| margin: 0 auto 10px; | |
| padding-bottom: 2px; | |
| overflow-x: auto; | |
| scrollbar-width: none; | |
| } | |
| .composer-skills::-webkit-scrollbar { | |
| display: none; | |
| } | |
| .skill-chip { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| flex: 0 0 auto; | |
| height: 28px; | |
| padding: 0 12px; | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-control); | |
| background: var(--bg); | |
| color: var(--text-secondary); | |
| font-family: var(--font-sans); | |
| font-size: 12.5px; | |
| line-height: 1; | |
| cursor: pointer; | |
| transition: | |
| background-color var(--dur) var(--ease), | |
| border-color var(--dur) var(--ease); | |
| } | |
| .skill-chip:hover { | |
| border-color: var(--accent); | |
| color: var(--text); | |
| } | |
| .skill-chip:focus-visible { | |
| outline: 2px solid var(--accent); | |
| outline-offset: 2px; | |
| } | |
| .skill-chip.is-selected { | |
| background: var(--accent-soft); | |
| border-color: var(--accent); | |
| color: var(--text); | |
| } | |
| /* 脚本技能置灰不可选:执行属于 Agent 面板的确认流程 */ | |
| .skill-chip.is-script { | |
| opacity: 0.55; | |
| cursor: not-allowed; | |
| } | |
| .skill-chip.is-script:hover { | |
| border-color: var(--border); | |
| color: var(--text-secondary); | |
| } | |
| /* ── 技能中心页 ───────────────────────────────────────────────────── */ | |
| .skills { | |
| flex: 1; | |
| min-width: 0; | |
| overflow-y: auto; | |
| padding: 36px 48px 48px; | |
| } | |
| .skills-head { | |
| display: flex; | |
| align-items: flex-end; | |
| justify-content: space-between; | |
| gap: 16px; | |
| margin-bottom: 20px; | |
| flex-wrap: wrap; | |
| } | |
| .skills-head h1 { | |
| font-size: 30px; | |
| } | |
| .skills-head-sub { | |
| max-width: 560px; | |
| margin: 6px 0 0; | |
| font-size: 13.5px; | |
| line-height: 1.7; | |
| color: var(--text-secondary); | |
| } | |
| .skills-import-btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| height: 40px; | |
| padding: 0 18px; | |
| border: none; | |
| border-radius: var(--radius-control); | |
| background: var(--accent); | |
| color: var(--bg); | |
| font-family: var(--font-sans); | |
| font-size: 14px; | |
| cursor: pointer; | |
| transition: opacity var(--dur) var(--ease); | |
| } | |
| .skills-import-btn:hover { | |
| opacity: 0.9; | |
| } | |
| .skills-import-btn:focus-visible { | |
| outline: 2px solid var(--accent); | |
| outline-offset: 2px; | |
| } | |
| .skills-import-btn:disabled { | |
| opacity: 0.6; | |
| cursor: default; | |
| } | |
| .skills-spin { | |
| animation: skills-rotate 1s linear infinite; | |
| } | |
| @keyframes skills-rotate { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .skills-spin { | |
| animation: none; | |
| } | |
| } | |
| .skills-notice { | |
| margin: 0 0 20px; | |
| padding: 10px 14px; | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-control); | |
| background: var(--accent-soft); | |
| font-size: 13px; | |
| line-height: 1.7; | |
| color: var(--text); | |
| } | |
| .skills-error { | |
| margin: 0 0 20px; | |
| font-size: 13px; | |
| color: var(--danger); | |
| } | |
| .skills-muted { | |
| margin: 24px 0 0; | |
| font-size: 13px; | |
| color: var(--text-secondary); | |
| } | |
| .skills-empty { | |
| margin: 56px 0; | |
| text-align: center; | |
| } | |
| .skills-empty-title { | |
| margin: 0; | |
| font-family: var(--font-serif); | |
| font-size: 24px; | |
| font-weight: 600; | |
| color: var(--text); | |
| } | |
| .skills-empty-sub { | |
| max-width: 420px; | |
| margin: 12px auto 0; | |
| font-size: 13.5px; | |
| line-height: 1.8; | |
| color: var(--text-secondary); | |
| } | |
| .skills-group { | |
| margin-bottom: 40px; | |
| } | |
| .skills-group-title { | |
| margin: 0; | |
| font-size: 19px; | |
| } | |
| .skills-group-hint { | |
| margin: 4px 0 16px; | |
| font-size: 13px; | |
| color: var(--text-secondary); | |
| } | |
| .skills-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); | |
| gap: 16px; | |
| } | |
| /* ── 技能卡片 ───────────────────────────────────────────────────── */ | |
| .skill-card { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| padding: 16px; | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-card); | |
| background: var(--bg-elevated); | |
| } | |
| .skill-card-head { | |
| display: flex; | |
| align-items: baseline; | |
| justify-content: space-between; | |
| gap: 10px; | |
| } | |
| .skill-name { | |
| margin: 0; | |
| font-family: var(--font-serif); | |
| font-size: 17px; | |
| font-weight: 600; | |
| letter-spacing: -0.01em; | |
| color: var(--text); | |
| } | |
| /* 状态徽章:与全站徽章同尺寸同字重(2px 8px / 12px / 500 / pill) */ | |
| .skill-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 4px; | |
| flex: 0 0 auto; | |
| padding: 2px 8px; | |
| border-radius: 999px; | |
| font-size: 12px; | |
| font-weight: 500; | |
| line-height: 1.5; | |
| white-space: nowrap; | |
| } | |
| /* 提示词 = 绿色(安全);脚本 = 黄色(确认级) */ | |
| .skill-badge.is-prompt { | |
| background: color-mix(in srgb, var(--success) 16%, transparent); | |
| color: var(--success); | |
| } | |
| .skill-badge.is-script { | |
| background: color-mix(in srgb, var(--warning) 18%, transparent); | |
| color: var(--warning); | |
| } | |
| .skill-desc { | |
| margin: 0; | |
| font-size: 13px; | |
| line-height: 1.7; | |
| color: var(--text-secondary); | |
| } | |
| .skill-script-note { | |
| margin: 0; | |
| font-size: 12px; | |
| line-height: 1.7; | |
| color: var(--text-tertiary); | |
| } | |
| .skill-card-foot { | |
| display: flex; | |
| gap: 8px; | |
| margin-top: auto; | |
| padding-top: 4px; | |
| } | |
| .skill-btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 5px; | |
| height: 28px; | |
| padding: 0 10px; | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-chip); | |
| background: transparent; | |
| color: var(--text-secondary); | |
| font-family: var(--font-sans); | |
| font-size: 12.5px; | |
| cursor: pointer; | |
| transition: | |
| border-color var(--dur) var(--ease), | |
| background-color var(--dur) var(--ease); | |
| } | |
| .skill-btn:hover { | |
| color: var(--text); | |
| border-color: var(--accent); | |
| } | |
| .skill-btn:focus-visible { | |
| outline: 2px solid var(--accent); | |
| outline-offset: 2px; | |
| } | |
| .skill-btn:disabled { | |
| opacity: 0.5; | |
| cursor: default; | |
| } | |
| .skill-btn:disabled:hover { | |
| color: var(--text-secondary); | |
| border-color: var(--border); | |
| } | |
| .skill-btn.is-primary { | |
| background: var(--accent); | |
| border-color: var(--accent); | |
| color: var(--bg); | |
| } | |
| .skill-btn.is-primary:hover { | |
| color: var(--bg); | |
| opacity: 0.9; | |
| } | |
| .skill-btn.is-danger:hover { | |
| color: var(--danger); | |
| border-color: var(--danger); | |
| } | |
| /* 删除的两段确认:armed 状态用危险色提醒「再点一次」 */ | |
| .skill-btn.is-danger.is-armed { | |
| color: var(--danger); | |
| border-color: var(--danger); | |
| background: color-mix(in srgb, var(--danger) 10%, transparent); | |
| } | |
| .skill-edit { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| } | |
| .skill-edit-input { | |
| width: 100%; | |
| padding: 8px 10px; | |
| border: 1px solid transparent; | |
| border-radius: var(--radius-control); | |
| background: var(--bg-sunken); | |
| color: var(--text); | |
| font-family: var(--font-sans); | |
| font-size: 13px; | |
| line-height: 1.7; | |
| resize: vertical; | |
| } | |
| .skill-edit-input:focus { | |
| outline: none; | |
| border-color: var(--accent); | |
| box-shadow: 0 0 0 3px var(--accent-soft); | |
| } | |
| .skill-edit-actions { | |
| display: flex; | |
| justify-content: flex-end; | |
| gap: 8px; | |
| } | |
| /* ── 拖拽导入蒙层 ───────────────────────────────────────────────── */ | |
| .skills-drag-overlay { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 40; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: var(--glass); | |
| } | |
| .skills-drag-card { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 40px 56px; | |
| border: 1px dashed var(--border); | |
| border-radius: var(--radius-float); | |
| background: var(--bg-elevated); | |
| color: var(--text-secondary); | |
| } | |
| .skills-drag-title { | |
| margin: 8px 0 0; | |
| font-family: var(--font-serif); | |
| font-size: 22px; | |
| font-weight: 600; | |
| color: var(--text); | |
| } | |
| .skills-drag-sub { | |
| margin: 0; | |
| font-size: 13px; | |
| color: var(--text-secondary); | |
| } | |
| @media (prefers-color-scheme: dark) { | |
| .skill-badge.is-prompt { | |
| background: color-mix(in srgb, var(--success) 22%, transparent); | |
| } | |
| .skill-badge.is-script { | |
| background: color-mix(in srgb, var(--warning) 22%, transparent); | |
| } | |
| .skills-import-btn { | |
| color: var(--bg); | |
| } | |
| } | |