/* The photo essay and storytelling builder. */ /* Split out of admin.css (#533). Loaded from admin.css in a fixed order — later sheets override earlier ones, so the order there is the cascade. */ /* ── Photo Essay & Storytelling Builder ───────────────────────── */ .essay-block-editor { display: flex; flex-direction: column; gap: 1rem; } .essay-toolbar-sticky { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem; background: var(--admin-bg-raised, #1a1a1a); border: 1px solid var(--admin-border, #2e2e2e); border-radius: 10px; backdrop-filter: blur(8px); } .essay-toolbar-label { font-size: 0.8rem; font-weight: 600; color: var(--admin-text, #f0f0f0); margin-right: 0.5rem; } .essay-toolbar-divider { width: 1px; height: 20px; background: var(--admin-border, #2e2e2e); margin: 0 0.25rem; } .essay-block-card { background: var(--admin-bg-raised, #161616); border: 1px solid var(--admin-border, #2e2e2e); border-radius: 10px; padding: 1rem; display: flex; flex-direction: column; gap: 0.75rem; transition: border-color 0.15s ease, box-shadow 0.15s ease; } .essay-block-card:hover { border-color: var(--admin-border-hover, #444444); } .essay-block-card-header { display: flex; align-items: center; justify-content: space-between; padding-bottom: 0.5rem; border-bottom: 1px solid var(--admin-border, rgba(255, 255, 255, 0.06)); } .essay-block-badge { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.2rem 0.55rem; border-radius: 9999px; font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; background: var(--admin-bg-elevated, #222); color: var(--admin-text-secondary, #a0a0a0); border: 1px solid var(--admin-border, #2e2e2e); } /* Position prefix inside the chip, e.g. "3 · Quote". */ .essay-block-badge-index { color: var(--admin-text-muted); font-variant-numeric: tabular-nums; } .essay-block-badge-index::after { content: ' ·'; } /* The card's own hover state is enough of a highlight; the chip stays quiet. */ /* Drag handle and the card while it is carried (SortableBlocks.tsx). */ .essay-block-card-title { display: flex; align-items: center; gap: 6px; min-width: 0; } .essay-block-grip { display: inline-flex; align-items: center; padding: 2px; background: none; border: none; border-radius: 4px; color: var(--admin-text-muted); cursor: grab; touch-action: none; } .essay-block-grip:hover, .essay-block-grip:focus-visible { color: var(--admin-text); background: var(--admin-bg-elevated, rgba(255, 255, 255, 0.06)); outline: none; } .essay-block-grip:active, .essay-block-card.is-dragging .essay-block-grip { cursor: grabbing; } .essay-block-card.is-dragging { position: relative; z-index: 2; opacity: 0.85; box-shadow: 0 12px 32px rgba(0, 0, 0, 0.45); } .essay-block-card:hover .essay-block-badge { border-color: var(--admin-border-hover); color: var(--admin-text); } .essay-block-actions { display: flex; align-items: center; gap: 0.25rem; } /* Polished dark inputs for Essay Editor */ .essay-block-editor input[type='text'], .essay-block-editor textarea, .essay-block-editor select { background: var(--admin-bg-input, #111111) !important; border: 1px solid var(--admin-border, #2e2e2e) !important; border-radius: 6px !important; color: var(--admin-text, #f0f0f0) !important; font-size: 0.85rem !important; padding: 0.55rem 0.75rem !important; transition: border-color 0.15s !important; } /* The base rule used to carry `outline: none !important`, which removed the focus ring from these fields for good, not just on hover. It is gone; the ring is added on focus instead, with the same !important so it wins against the other !important declarations in this file. */ .essay-block-editor input[type='text']:focus-visible, .essay-block-editor textarea:focus-visible, .essay-block-editor select:focus-visible { outline: var(--admin-focus-ring) !important; outline-offset: 1px !important; border-color: var(--admin-border-focus, #888888) !important; } .essay-photo-card { display: flex; flex-direction: column; gap: 0.75rem; background: var(--admin-bg, #111111); padding: 0.85rem; border-radius: 8px; border: 1px solid var(--admin-border, #2e2e2e); } .essay-photo-preview-container { display: flex; gap: 1rem; align-items: flex-start; } .essay-photo-thumbnail { width: 120px; height: 80px; border-radius: 6px; background: var(--admin-bg-elevated, #222); object-fit: cover; border: 1px solid var(--admin-border, #333); flex-shrink: 0; } .essay-photo-empty { width: 120px; height: 80px; border-radius: 6px; background: var(--admin-bg-elevated, #1a1a1a); border: 1px dashed var(--admin-border, #333); display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--admin-text-muted, #707070); font-size: 0.75rem; gap: 4px; flex-shrink: 0; } .essay-photo-meta { flex: 1; display: flex; flex-direction: column; gap: 0.5rem; } .essay-pill-selector { display: inline-flex; background: var(--admin-bg-input, #000); padding: 2px; border-radius: 6px; border: 1px solid var(--admin-border, #2e2e2e); } .essay-pill-btn { padding: 0.25rem 0.65rem; border-radius: 4px; font-size: 0.75rem; font-weight: 500; border: none; background: transparent; color: var(--admin-text-muted, #888); cursor: pointer; transition: all 0.15s ease; } .essay-pill-btn.active { background: var(--admin-btn-primary-bg, #ffffff); color: var(--admin-btn-primary-text, #000000); }