/* Presentation Feature Styles Using rich dynamic backgrounds instead of flat colors. */ /* Modal Overlay & Structure */ #pres-modal { position: fixed; inset: 0; z-index: 10000; background: var(--bg-color, #121212); display: flex; flex-direction: column; } .pres-modal-header { height: 60px; display: flex; justify-content: space-between; align-items: center; padding: 0 24px; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(20px); border-bottom: 1px solid rgba(255, 255, 255, 0.05); } .pres-header-actions { display: flex; gap: 12px; align-items: center; } .pres-modal-body { flex: 1; display: flex; overflow: hidden; } /* Thumbnails (Left) */ .pres-thumbnails-pane { width: 240px; background: rgba(20, 20, 20, 0.8); border-right: 1px solid rgba(255, 255, 255, 0.05); display: flex; flex-direction: column; padding: 24px 16px; gap: 16px; overflow-y: auto; } .pres-thumbnail-wrapper { position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: 8px; overflow: hidden; cursor: pointer; border: 2px solid transparent; transition: all 0.3s ease; background: #000; opacity: 0.7; } .pres-thumbnail-wrapper:hover { opacity: 1; transform: scale(1.02); } .pres-thumbnail-wrapper.active { border-color: var(--pres-accent, #c183f0); opacity: 1; } .pres-thumbnail-scale { /* Scale down the actual slide to fit in thumbnail */ width: 1920px; height: 1080px; transform-origin: top left; } /* Stage (Center) */ .pres-stage-pane { flex: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #0a0a0a; position: relative; padding: 40px; overflow: hidden; } /* The actual 16:9 Slide */ .pres-slide-container { width: 100%; aspect-ratio: 16 / 9; background: var(--pres-bg, radial-gradient(circle at top right, #2a0845, #6441A5)); border-radius: 16px; box-shadow: 0 24px 64px rgba(0, 0, 0, 0.6); position: relative; overflow: hidden; display: flex; color: var(--text-primary, #fff); font-family: 'Inter', sans-serif; view-transition-name: slide-content; container-type: inline-size; } /* Add a rich aurora mesh overlay to all backgrounds to prevent flat colors */ .pres-slide-container::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at bottom left, rgba(255,255,255,0.05) 0%, transparent 60%), radial-gradient(ellipse at top right, rgba(0,0,0,0.3) 0%, transparent 50%); pointer-events: none; } /* Chat Sidebar (Right) - Reusing PDF modal styles mostly */ .pres-chat-pane { width: 400px; background: rgba(30, 30, 30, 0.6); backdrop-filter: blur(40px); border-left: 1px solid rgba(255, 255, 255, 0.05); display: flex; flex-direction: column; position: relative; } /* Presenter Mode (Fullscreen) */ body.pres-fullscreen #pres-modal { z-index: 99999; } body.pres-fullscreen .pres-modal-header, body.pres-fullscreen .pres-thumbnails-pane, body.pres-fullscreen .pres-chat-pane { display: none !important; } body.pres-fullscreen .pres-stage-pane { padding: 0; background: #000; } body.pres-fullscreen .pres-slide-container { border-radius: 0; max-width: none; width: 100vw; height: 100vh; } /* Slide Layouts & Elements */ .slide-content-wrapper { position: relative; z-index: 2; width: 100%; height: 100%; padding: 8%; display: flex; flex-direction: column; } .slide-layout-title { justify-content: center; align-items: center; text-align: center; } .slide-layout-title h1 { font-size: 6cqi; font-weight: 800; margin-bottom: 2cqi; line-height: 1.1; background: linear-gradient(to right, #fff, rgba(255,255,255,0.7)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .slide-layout-title h2 { font-size: 3cqi; font-weight: 400; color: var(--pres-accent, #c183f0); opacity: 0.9; } .slide-layout-title svg.lucide { width: 10cqi; height: 10cqi; color: var(--pres-accent, #c183f0); margin-bottom: 2cqi; filter: drop-shadow(0 0 32px rgba(193, 131, 240, 0.4)); } .slide-layout-split { flex-direction: row; justify-content: space-between; align-items: center; gap: 8%; } .slide-layout-split .slide-text-side { flex: 1; } .slide-layout-split .slide-visual-side { flex: 1; height: 100%; display: flex; align-items: center; justify-content: center; } /* Image Split Layout */ .slide-layout-image-split { flex-direction: row; justify-content: space-between; align-items: center; gap: 8%; } .slide-layout-image-split .slide-text-side { flex: 1.2; } .slide-layout-image-split .slide-visual-side { flex: 0.8; height: 100%; display: flex; align-items: center; justify-content: center; } .pres-image-wrapper { width: 100%; height: 100%; max-height: 70cqi; border-radius: 24px; overflow: hidden; box-shadow: 0 20px 40px rgba(0,0,0,0.4); border: 1px solid rgba(255,255,255,0.1); } .pres-image-wrapper img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; } .pres-image-wrapper:hover img { transform: scale(1.05); } /* Cover Layout */ .slide-layout-cover { padding: 0; justify-content: center; align-items: center; text-align: center; background-size: cover; background-position: center; } .slide-cover-overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(8px); display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 10%; z-index: 2; } .slide-cover-overlay h1 { font-size: 8cqi; font-weight: 800; margin-bottom: 2cqi; line-height: 1.1; color: white; text-shadow: 0 10px 30px rgba(0,0,0,0.8); } .slide-cover-overlay h2 { font-size: 4cqi; font-weight: 400; color: rgba(255,255,255,0.9); text-shadow: 0 5px 20px rgba(0,0,0,0.8); } .slide-cover-overlay blockquote { font-size: 5cqi; font-weight: 600; font-style: italic; color: white; text-shadow: 0 10px 30px rgba(0,0,0,0.8); } .slide-layout-quote { justify-content: center; align-items: center; text-align: center; } .slide-layout-quote blockquote { font-size: 4.5cqi; font-weight: 600; font-style: italic; line-height: 1.3; margin: 0; position: relative; } .slide-layout-quote blockquote::before { content: '"'; font-size: 12cqi; color: var(--pres-accent, #c183f0); opacity: 0.3; position: absolute; top: -5cqi; left: -4cqi; } /* Typography & Elements */ .slide-title { font-size: 4cqi; font-weight: 700; margin-bottom: 3cqi; color: var(--pres-accent, #c183f0); } .slide-bullets { list-style: none; padding: 0; margin: 0; } .slide-bullets li { font-size: 2.5cqi; line-height: 1.5; margin-bottom: 1.5cqi; display: flex; align-items: center; } .slide-bullets li::before { content: ''; display: inline-block; width: 1cqi; height: 1cqi; border-radius: 50%; background: var(--pres-accent, #c183f0); margin-right: 1.5cqi; } /* Staggered Entrance Animations */ .pres-slide-container.animating-in .slide-content-wrapper > * { animation: slideFadeIn 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; opacity: 0; transform: translateY(40px); } .pres-slide-container.animating-in .slide-content-wrapper > *:nth-child(1) { animation-delay: 0.1s; } .pres-slide-container.animating-in .slide-content-wrapper > *:nth-child(2) { animation-delay: 0.2s; } .pres-slide-container.animating-in .slide-content-wrapper > *:nth-child(3) { animation-delay: 0.3s; } .pres-slide-container.animating-in .slide-content-wrapper > *:nth-child(4) { animation-delay: 0.4s; } @keyframes slideFadeIn { to { opacity: 1; transform: translateY(0); } } /* View Transitions */ ::view-transition-old(slide-content) { animation: fade-out 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; } ::view-transition-new(slide-content) { animation: fade-in 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; } @keyframes fade-in { from { opacity: 0; transform: scale(0.98); } to { opacity: 1; transform: scale(1); } } @keyframes fade-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(1.02); } } /* Mermaid styling inside slides */ .pres-slide-container .mermaid { background: rgba(0, 0, 0, 0.4); padding: 32px; border-radius: 24px; border: 1px solid rgba(255, 255, 255, 0.1); width: 100%; } .pres-slide-container .mermaid svg { width: 100%; height: auto; max-height: 40cqi; } /* Responsive Mobile Layout */ @media (max-width: 900px) { .pres-modal-body { flex-direction: column; } .pres-thumbnails-pane { display: none; /* Hide thumbnails on small screens */ } .pres-stage-pane { padding: 16px; background: #000; } .pres-chat-pane { width: 100%; height: 350px; border-left: none; border-top: 1px solid rgba(255, 255, 255, 0.05); flex-shrink: 0; } .slide-layout-split, .slide-layout-image-split { flex-direction: column; justify-content: center; } }