/* * Theme: Default * Name: Default Theme * Description: Clean and simple theme suitable for any presentation * Author: Michael Mainguy (mike.mainguy@gmail.com) * Version: 0.1.0 */ :root { --theme-primary: #2563eb; --theme-secondary: #64748b; --theme-accent: #0ea5e9; --theme-background: #000000; --theme-text: #ffffff; --theme-text-secondary: #64748b; --theme-font-heading: 'Inter', system-ui, sans-serif; --theme-font-body: 'Inter', system-ui, sans-serif; --theme-font-code: 'JetBrains Mono', 'Consolas', monospace; --slide-padding: 5%; --content-max-width: 90%; } /* Base slide styling - works with global .slide-container classes */ .slide-container .slide-content, .slide { width: 100%; height: 100%; background: var(--theme-background); color: var(--theme-text); font-family: var(--theme-font-body); padding: var(--slide-padding); box-sizing: border-box; display: flex; flex-direction: column; position: relative; overflow: hidden; justify-content: center; align-items: center; /* Ensure content is properly centered within container */ text-align: center; } /* Master slide elements */ .master-slide { position: absolute; z-index: 1; } .master-slide.footer { bottom: 0; left: 0; right: 0; padding: 1rem; text-align: center; font-size: 0.875rem; opacity: 0.6; } /* Slot styles */ .slot { position: relative; border: 2px dashed transparent; min-height: 2rem; transition: border-color 0.2s ease; width: 100%; max-width: var(--content-max-width); margin: 0 auto; /* Ensure slot content inherits proper centering */ text-align: inherit; } #main-image { scale: .7; } .slot:hover, .slot.editing { border-color: var(--theme-accent); border-radius: 4px; } .slot.empty { border-color: var(--theme-secondary); opacity: 0.5; display: flex; align-items: center; justify-content: center; } .slot.empty::before { content: attr(data-placeholder); color: var(--theme-text-secondary); font-style: italic; } /* Text slots */ .slot[data-type="title"] { font-family: var(--theme-font-heading); font-weight: bold; line-height: 1.2; text-align: center; } .slot[data-type="subtitle"] { font-family: var(--theme-font-heading); line-height: 1.4; opacity: 0.8; text-align: center; } .content-slot { color: var(--theme-text-secondary); background-color: var(--theme-background); } .slot[data-type="text"] { line-height: 1.6; /* Text content can be left-aligned for readability */ text-align: left; } /* Image slots */ .slot[data-type="image"] { display: flex; align-items: center; justify-content: center; background: #f8fafc; border-radius: 8px; } .slot[data-type="image"] img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 4px; } /* Layout-specific styles */ /* Title slide layout */ .layout-title-slide, .slide-container .layout-title-slide { justify-content: center; align-items: center; text-align: center; } .layout-title-slide .slot[data-slot="title"] { font-size: clamp(2rem, 8vw, 4rem); margin-bottom: 2rem; width: 100%; max-width: 80%; color: var(--theme-primary); text-align: center; } .layout-title-slide .slot[data-slot="subtitle"] { font-size: clamp(1rem, 4vw, 2rem); color: var(--theme-text-secondary); width: 100%; max-width: 80%; text-align: center; } /* Content slide layout */ .layout-content-slide, .slide-container .layout-content-slide { justify-content: flex-start; align-items: stretch; /* Reset text alignment for content slides */ text-align: initial; } .layout-content-slide .slot[data-slot="title"] { font-size: clamp(1.5rem, 6vw, 2.5rem); margin-bottom: 2rem; padding-bottom: 1rem; border-bottom: 2px solid var(--theme-primary); text-align: center; width: 100%; } .layout-content-slide .slot[data-slot="subtitle"] { font-size: clamp(1rem, 2vw, .5rem); text-align: right; width: 50%; } .layout-content-slide .slot[data-slot="content"] { font-size: clamp(1rem, 2.5vw, 1.25rem); flex: 1; text-align: left; width: 100%; line-height: 1.6; /* Ensure content doesn't get too wide */ max-width: 100%; margin: 0 auto; } /* Two content blocks layout */ .layout-2-content-blocks, .slide-container .layout-2-content-blocks { justify-content: flex-start; align-items: stretch; /* Reset text alignment for two-column slides */ text-align: initial; } .layout-2-content-blocks .slot[data-slot="title"] { font-size: clamp(1.5rem, 5vw, 2.5rem); margin-bottom: 2rem; padding-bottom: 1rem; border-bottom: 2px solid var(--theme-primary); text-align: center; width: 100%; } .content-blocks-container { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; flex: 1; align-items: stretch; width: 100%; } .layout-2-content-blocks .slot[data-slot="content1"], .layout-2-content-blocks .slot[data-slot="content2"] { font-size: clamp(0.9rem, 2.2vw, 1.1rem); text-align: left; width: 100%; line-height: 1.6; padding: 1rem; background: rgba(255, 255, 255, 0.05); border-radius: 0.5rem; border: 1px solid rgba(255, 255, 255, 0.1); } /* Image slide layout */ .layout-image-slide, .slide-container .layout-image-slide { justify-content: flex-start; align-items: stretch; } .layout-image-slide .slot[data-slot="title"] { font-size: clamp(1.5rem, 6vw, 2.5rem); margin-bottom: 2rem; text-align: center; width: 100%; } .layout-image-slide .slot[data-slot="image"] { flex: 1; margin-top: 1rem; width: 100%; display: flex; align-items: center; justify-content: center; } /* Aspect ratio specific adjustments */ .slide-container.aspect-16-9 .slide-content, .slide-container.aspect-16-9 .slide { --slide-padding: 4%; --content-max-width: 85%; } .slide-container.aspect-4-3 .slide-content, .slide-container.aspect-4-3 .slide { --slide-padding: 6%; --content-max-width: 80%; } .slide-container.aspect-16-10 .slide-content, .slide-container.aspect-16-10 .slide { --slide-padding: 5%; --content-max-width: 85%; } /* Responsive adjustments */ @media (max-width: 768px) { :root { --slide-padding: 3%; --content-max-width: 95%; } .layout-title-slide .slot[data-slot="title"] { margin-bottom: 1rem; font-size: clamp(1.5rem, 6vw, 3rem); } .layout-content-slide .slot[data-slot="title"] { margin-bottom: 1rem; font-size: clamp(1.2rem, 5vw, 2rem); } .layout-image-slide .slot[data-slot="title"] { font-size: clamp(1.2rem, 5vw, 2rem); } /* Two content blocks responsive adjustments */ .content-blocks-container { grid-template-columns: 1fr; gap: 1rem; } .layout-2-content-blocks .slot[data-slot="content1"], .layout-2-content-blocks .slot[data-slot="content2"] { font-size: clamp(0.8rem, 2vw, 1rem); padding: 0.75rem; } } /* Print styles for presentations */ @media print { .slide { page-break-after: always; width: 100%; height: 100vh; } .slot { border: none !important; } .slot.empty::before { display: none; } }