summaryrefslogtreecommitdiff
path: root/frontend/src/components/document/nodes/ContractBlock.css
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/components/document/nodes/ContractBlock.css')
-rw-r--r--frontend/src/components/document/nodes/ContractBlock.css123
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); }
+}