/* Project Friction - Block Styles */ /* Styles for all 8 content block types rendered by BlockRenderer */ /* ── Shared block spacing ────────────────────────────────────────────────── */ .block { margin-bottom: 1.5rem; } /* ── Heading Block ───────────────────────────────────────────────────────── */ .block-heading-1 { font-size: 26px; font-weight: normal; color: var(--color-primary); font-family: var(--font-primary); border-bottom: 3px solid var(--theme-color, var(--color-accent)); padding-bottom: 0.5rem; margin-top: 0.5rem; margin-bottom: 1.25rem; } .block-heading-2 { font-size: 20px; font-weight: normal; color: var(--color-primary); font-family: var(--font-primary); border-bottom: 2px solid var(--color-gray); padding-bottom: 0.4rem; margin-top: 1.5rem; margin-bottom: 1rem; } .block-heading-3 { font-size: 16px; font-weight: 600; color: var(--color-secondary); font-family: var(--font-secondary); margin-top: 1rem; margin-bottom: 0.75rem; text-transform: uppercase; letter-spacing: 0.5px; } /* ── Paragraph Block ─────────────────────────────────────────────────────── */ .block-paragraph { font-size: 15px; line-height: 1.75; color: #2d3748; font-family: var(--font-secondary); margin-bottom: 1rem; } /* ── Image Block ─────────────────────────────────────────────────────────── */ .block-image { margin: 1.25rem 0; border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-md); } .block-image img { width: 100%; display: block; object-fit: cover; max-height: 320px; } .block-image figcaption { background: #f0f3f6; color: var(--color-dark-gray); font-size: 12px; font-family: var(--font-secondary); padding: 0.5rem 0.75rem; font-style: italic; border-top: 1px solid var(--color-gray); } /* ── Quote Block ─────────────────────────────────────────────────────────── */ /* Uses existing .quote-block, .quote-text, .quote-attribution from components.css */ /* ── Fact Briefing Panel ─────────────────────────────────────────────────── */ .block-fact-panel { margin: 1.25rem 0; } .block-fact-panel .fact-panel-list { margin: 0; padding: 0; } /* ── Timeline Card ───────────────────────────────────────────────────────── */ .block-timeline-card { background: var(--color-white); border: 1px solid var(--color-gray); border-radius: var(--radius-md); padding: 1rem 1.1rem; margin: 1.25rem 0; } .block-timeline-header { display: flex; align-items: flex-start; gap: 0.55rem; margin-bottom: 0.45rem; flex-wrap: wrap; } .block-timeline-date { background: var(--color-accent); color: var(--color-white); padding: 0.18rem 0.45rem; border-radius: var(--radius-sm); font-size: 12px; line-height: 1.2; font-weight: 600; font-family: var(--font-secondary); white-space: nowrap; margin-top: 0.05rem; } .block-timeline-title { margin: 0; color: var(--color-primary); font-size: 1.55rem; line-height: 1.2; font-family: var(--font-primary); flex: 1; min-width: 220px; } .block-timeline-text { margin: 0; margin-left: calc(0.45rem + 0.55rem + 52px); font-size: 1.1rem; line-height: 1.45; color: var(--color-primary); font-family: var(--font-primary); } @media (max-width: 640px) { .block-timeline-text { margin-left: 0; } } /* ── Gallery Block ───────────────────────────────────────────────────────── */ .block-gallery { margin: 1.25rem 0; } .gallery-empty { padding: 0.75rem; border: 1px dashed var(--color-gray); border-radius: var(--radius-sm); color: var(--color-dark-gray); font-family: var(--font-secondary); font-size: 13px; } .gallery-scroll { display: flex; gap: 0.75rem; overflow-x: auto; padding-bottom: 0.5rem; scrollbar-width: thin; scrollbar-color: var(--color-gray) transparent; } .gallery-scroll::-webkit-scrollbar { height: 4px; } .gallery-scroll::-webkit-scrollbar-thumb { background: var(--color-gray); border-radius: 4px; } .gallery-item { flex: 0 0 200px; border-radius: var(--radius-sm); overflow: hidden; box-shadow: var(--shadow-sm); position: relative; } .gallery-item img { width: 100%; height: 140px; object-fit: cover; display: block; } .gallery-item-caption { background: rgba(0, 0, 0, 0.7); color: #fff; font-size: 11px; font-family: var(--font-secondary); padding: 0.3rem 0.5rem; position: absolute; bottom: 0; left: 0; right: 0; } /* ── Carousel Gallery Mode ────────────────────────────────────────────────── */ .gallery-mode-carousel .gallery-carousel { position: relative; } .gallery-mode-carousel .gallery-slides { position: relative; min-height: 220px; border-radius: var(--radius-sm); overflow: hidden; box-shadow: var(--shadow-sm); background: #0f1720; } .gallery-mode-carousel .gallery-slide { display: none; margin: 0; position: relative; } .gallery-mode-carousel .gallery-slide.is-active { display: block; } .gallery-mode-carousel .gallery-slide img { width: 100%; height: 260px; object-fit: cover; display: block; } .gallery-slide-caption { position: absolute; left: 0; right: 0; bottom: 0; background: linear-gradient(to top, rgba(0,0,0,0.78), rgba(0,0,0,0)); color: #fff; font-size: 12px; line-height: 1.45; padding: 0.75rem; font-family: var(--font-secondary); } .gallery-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 34px; height: 34px; border: none; border-radius: var(--radius-full); background: rgba(0, 0, 0, 0.42); color: #fff; font-size: 24px; line-height: 1; cursor: pointer; } .gallery-nav:hover { background: rgba(0, 0, 0, 0.62); } .gallery-nav-prev { left: 0.5rem; } .gallery-nav-next { right: 0.5rem; } .gallery-dots { margin-top: 0.6rem; display: flex; justify-content: center; gap: 0.4rem; } .gallery-dot { width: 9px; height: 9px; border-radius: var(--radius-full); border: none; background: #cbd5e1; cursor: pointer; } .gallery-dot.is-active { background: var(--color-primary); } /* ── 4-Image Grid Block ──────────────────────────────────────────────────── */ .block-grid4 { margin: 1.25rem 0; } .grid4-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; } .grid4-item { position: relative; border-radius: var(--radius-sm); overflow: hidden; box-shadow: var(--shadow-sm); } .grid4-item img { width: 100%; height: 120px; object-fit: cover; display: block; transition: transform 0.2s ease; } .grid4-item:hover img { transform: scale(1.04); } .grid4-caption { background: rgba(0, 0, 0, 0.65); color: #fff; font-size: 10px; font-family: var(--font-secondary); padding: 0.25rem 0.4rem; position: absolute; bottom: 0; left: 0; right: 0; } /* ── Statistics Block ────────────────────────────────────────────────────── */ .block-statistics { margin: 1.25rem 0; } .block-stats-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.75rem; } /* ── Map Button Block ────────────────────────────────────────────────────── */ .block-map-button-wrap { margin: 0.75rem 0; } /* ── Section Content Container ───────────────────────────────────────────── */ .section-content-container { flex: 1; overflow-y: auto; padding: 1.5rem; }