diff options
Diffstat (limited to 'frontend/src/components/document/nodes/ContractBlock.css')
| -rw-r--r-- | frontend/src/components/document/nodes/ContractBlock.css | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/frontend/src/components/document/nodes/ContractBlock.css b/frontend/src/components/document/nodes/ContractBlock.css new file mode 100644 index 0000000..80edb74 --- /dev/null +++ b/frontend/src/components/document/nodes/ContractBlock.css @@ -0,0 +1,123 @@ +/* ============================================ + Contract Block - Inline contract reference + ============================================ */ + +.contract-block-wrapper { + margin: 1rem 0; + user-select: none; +} + +.contract-block { + background: #fafbff; + border: 1px solid #e2e5ef; + border-radius: 8px; + padding: 0.65rem 0.85rem; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + font-size: 13px; + color: #374151; + transition: box-shadow 0.2s ease, border-color 0.2s ease; + animation: contractBlockAppear 0.25s ease-out both; +} + +@keyframes contractBlockAppear { + from { + opacity: 0; + transform: translateY(4px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.contract-block:hover { + border-color: #c7cce0; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); +} + +.contract-block--error { + border-color: #fecaca; + background: #fef2f2; +} + +/* Header */ +.contract-block-header { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.contract-block-icon { + font-size: 1rem; + flex-shrink: 0; +} + +.contract-block-name { + font-weight: 600; + font-size: 0.88rem; + color: #1f2937; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.contract-block-phase-badge { + font-size: 0.68rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.03em; + padding: 0.1rem 0.4rem; + border-radius: 8px; + white-space: nowrap; + flex-shrink: 0; +} + +.contract-block-status-dot { + width: 8px; + height: 8px; + border-radius: 50%; + flex-shrink: 0; +} + +/* Meta */ +.contract-block-meta { + margin-top: 0.3rem; + padding-left: 1.5rem; +} + +.contract-block-type { + font-size: 0.75rem; + color: #9ca3af; + font-style: italic; +} + +.contract-block-error-msg { + margin-top: 0.25rem; + font-size: 0.78rem; + color: #dc2626; + padding-left: 1.5rem; +} + +/* Loading state */ +.contract-block-loading { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.4rem 0; + color: #9ca3af; + font-size: 0.82rem; +} + +.contract-block-spinner { + width: 14px; + height: 14px; + border: 2px solid #e5e7eb; + border-top-color: #6b7280; + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} |
