UNPKG

slidev-theme-hatch-corporate

Version:

A comprehensive Slidev theme for Hatch corporate presentations with advanced layouts and components

703 lines (616 loc) 16.4 kB
/* Hatch Corporate Slidev Theme */ /* Based on original Hatch corporate branding and design system */ /* Updated: Height overflow fixes applied - v1.1 */ :root { /* Hatch Corporate Color Palette */ --hatch-orange: #E84B37; /* Corporate header orange */ --hatch-orange-alt: #E75300; /* Corporate main orange */ --hatch-gray: #425563; /* Corporate dark grey */ --hatch-medium-gray: #595959; /* Corporate medium grey */ --hatch-light-gray: #f4f4f4; /* Corporate light gray */ --hatch-background: #f4f4f4; /* Corporate background */ --hatch-white: #FFFFFF; /* Corporate white */ /* Spacing System */ --spacing-sm: 10px; --spacing-md: 15px; --spacing-lg: 20px; --spacing-xl: 40px; /* Layout */ --header-height: 70px; --footer-height: 40px; /* Typography */ --font-family-sans: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; --font-family-serif: 'Playfair Display', serif; --font-family-mono: 'Fira Code', monospace; /* Slidev specific variables */ --slidev-theme-primary: var(--hatch-orange); --slidev-theme-secondary: var(--hatch-orange-alt); --slidev-theme-accent: var(--hatch-gray); } /* Global Styles */ html { font-family: var(--font-family-sans); font-feature-settings: 'kern'; } /* Slidev Layout Base */ .slidev-layout { font-family: var(--font-family-sans); color: var(--hatch-gray); background: var(--hatch-white); line-height: 1.6; } /* Typography Hierarchy */ .slidev-layout h1 { color: var(--hatch-orange) !important; font-size: 2.5rem; font-weight: 700; font-family: var(--font-family-serif); margin-bottom: 1.5rem; letter-spacing: -0.02em; } .slidev-layout h2 { color: var(--hatch-orange-alt) !important; font-size: 2rem; font-weight: 600; margin-bottom: 1.25rem; letter-spacing: -0.01em; } .slidev-layout h3 { color: var(--hatch-gray) !important; font-size: 1.5rem; font-weight: 600; margin-bottom: 1rem; } .slidev-layout h4 { color: var(--hatch-medium-gray) !important; font-size: 1.25rem; font-weight: 500; margin-bottom: 0.75rem; } .slidev-layout p { color: var(--hatch-medium-gray); font-size: 1.1rem; line-height: 1.7; margin-bottom: 1rem; } /* Lists */ .slidev-layout ul, .slidev-layout ol { color: var(--hatch-medium-gray); padding-left: 1.5rem; } .slidev-layout li { margin-bottom: 0.5rem; line-height: 1.6; } /* Links */ .slidev-layout a { color: var(--hatch-orange); text-decoration: none; border-bottom: 2px solid transparent; transition: border-color 0.3s ease; } .slidev-layout a:hover { border-bottom-color: var(--hatch-orange); } /* Code */ .slidev-layout code { background: var(--hatch-light-gray); color: var(--hatch-gray); padding: 0.2em 0.4em; border-radius: 4px; font-family: var(--font-family-mono); font-size: 0.9em; } .slidev-layout pre { background: var(--hatch-light-gray); border-left: 4px solid var(--hatch-orange); padding: 1rem; border-radius: 8px; overflow-x: auto; max-height: 300px; overflow-y: auto; } /* Hatch Header Component */ .hatch-header { background: var(--hatch-orange); border-bottom: 3px solid var(--hatch-orange); padding: var(--spacing-md) 2rem; position: fixed; top: 0; left: 0; right: 0; z-index: 100; display: flex; justify-content: center; align-items: center; font-size: 1rem; box-shadow: 0 4px 15px rgba(232, 75, 55, 0.15); height: var(--header-height); box-sizing: border-box; } .hatch-header .logo { color: var(--hatch-white); font-weight: bold; font-family: var(--font-family-serif); letter-spacing: 0.5px; font-size: 1.25rem; text-align: center; } /* Hide any date elements in header */ .hatch-header .date { display: none !important; } .hatch-header::after { display: none !important; } /* Hatch Footer Component */ .hatch-footer { background: var(--hatch-white); border-top: 3px solid var(--hatch-orange); padding: var(--spacing-sm) 2rem; position: fixed; bottom: 0; left: 0; right: 0; z-index: 100; display: flex; justify-content: space-between; align-items: center; font-size: 0.75rem; color: var(--hatch-medium-gray); height: var(--footer-height); box-sizing: border-box; box-shadow: 0 -4px 15px rgba(232, 75, 55, 0.1); } .hatch-footer .copyright { font-weight: 400; color: var(--hatch-medium-gray); } .hatch-footer .page-number { font-weight: 500; color: var(--hatch-medium-gray); text-align: center; } .hatch-footer .hatch-logo { font-weight: bold; color: var(--hatch-orange); font-family: var(--font-family-sans); letter-spacing: 1px; font-size: 0.8rem; } /* Content Areas with Header/Footer */ .hatch-content { padding: calc(var(--header-height) + 1rem) 2rem calc(var(--footer-height) + 1rem) 2rem; height: calc(100vh - var(--header-height) - var(--footer-height) - 2rem); max-height: calc(100vh - var(--header-height) - var(--footer-height) - 2rem); box-sizing: border-box; overflow-y: auto; overflow-x: hidden; } /* Title Slide Layout */ .hatch-title-slide { text-align: center; padding: calc(var(--header-height) + 2rem) 2rem calc(var(--footer-height) + 1rem) 2rem; display: flex; flex-direction: column; justify-content: center; height: calc(100vh - var(--header-height) - var(--footer-height) - 3rem); max-height: calc(100vh - var(--header-height) - var(--footer-height) - 3rem); box-sizing: border-box; overflow-y: auto; overflow-x: hidden; } .hatch-title-slide h1 { font-size: 3.5rem !important; margin-bottom: 1.5rem; } .hatch-title-slide h2 { font-size: 2rem !important; font-weight: 400; color: var(--hatch-medium-gray) !important; margin-bottom: 3rem; } /* Content Slide Layout */ .hatch-content-slide { padding: calc(var(--header-height) + 1rem) 2rem calc(var(--footer-height) + 1rem) 2rem; height: calc(100vh - var(--header-height) - var(--footer-height) - 2rem); max-height: calc(100vh - var(--header-height) - var(--footer-height) - 2rem); box-sizing: border-box; overflow-y: auto; overflow-x: hidden; } /* Buttons */ .hatch-btn { background: var(--hatch-orange); color: var(--hatch-white); border: none; padding: 0.75rem 2rem; border-radius: 6px; font-weight: 600; font-size: 1rem; cursor: pointer; transition: all 0.3s ease; display: inline-flex; align-items: center; gap: 0.5rem; text-decoration: none; } .hatch-btn:hover { background: var(--hatch-orange-alt); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(232, 75, 55, 0.3); } /* Cards and Containers */ .hatch-card { background: var(--hatch-white); border: 1px solid #e0e0e0; border-radius: 12px; padding: 1.5rem; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); transition: transform 0.3s ease, box-shadow 0.3s ease; height: fit-content; } .hatch-card:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12); } .hatch-card h3 { color: var(--hatch-orange) !important; margin-top: 0; margin-bottom: 1rem; } /* Grid Layouts */ .hatch-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: start; height: fit-content; } .hatch-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; align-items: start; height: fit-content; } /* Ensure grid items don't overflow */ .hatch-grid-2 > *, .hatch-grid-3 > * { max-height: 100%; overflow: hidden; } /* Tables */ .slidev-layout table { width: 100%; border-collapse: collapse; margin: 1rem 0; background: var(--hatch-white); border-radius: 8px; overflow: hidden; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); } .slidev-layout th { background: var(--hatch-orange); color: var(--hatch-white); padding: 1rem; text-align: left; font-weight: 600; } .slidev-layout td { padding: 1rem; border-bottom: 1px solid #e0e0e0; color: var(--hatch-medium-gray); } .slidev-layout tr:last-child td { border-bottom: none; } .slidev-layout tr:nth-child(even) td { background: #f8f9fa; } /* Mermaid Diagrams */ .slidev-layout .mermaid { display: flex; justify-content: center; align-items: center; margin: 2rem 0; background: var(--hatch-white); border-radius: 12px; padding: 2rem; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); border: 2px solid var(--hatch-light-gray); } .slidev-layout .mermaid svg { max-width: 100% !important; height: auto !important; background: var(--hatch-white); border-radius: 8px; } /* Mermaid timeline specific styling */ .slidev-layout .mermaid .timeline { font-family: var(--font-family-sans) !important; } .slidev-layout .mermaid .timeline-title { fill: var(--hatch-orange) !important; font-weight: 600 !important; font-size: 1.2rem !important; } .slidev-layout .mermaid .timeline-section { fill: var(--hatch-gray) !important; } .slidev-layout .mermaid .timeline-event { fill: var(--hatch-medium-gray) !important; } /* Override default Slidev styles to match Hatch theme */ .slidev-page { background: var(--hatch-white) !important; } /* 70 Years Badge - STUNNING Design */ .hatch-70-years-badge { position: relative; width: 280px; height: 280px; filter: drop-shadow(0 20px 40px rgba(0, 0, 0, 0.4)); } .badge-circle { width: 280px; height: 280px; border-radius: 50%; background: linear-gradient(135deg, #1E3A5F 0%, #2E5B8A 25%, #4A7BB0 50%, #2E5B8A 75%, #1E3A5F 100%); border: 8px solid #ffffff; display: flex; flex-direction: column; justify-content: center; align-items: center; cursor: pointer; transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); position: relative; z-index: 10; box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.3), 0 0 0 8px rgba(46, 91, 138, 0.2), 0 20px 60px rgba(46, 91, 138, 0.4), inset 0 4px 8px rgba(255, 255, 255, 0.3), inset 0 -4px 8px rgba(0, 0, 0, 0.2); overflow: hidden; } .badge-circle::before { content: ''; position: absolute; top: -12px; left: -12px; right: -12px; bottom: -12px; border-radius: 50%; background: conic-gradient(from 0deg, #E84B37, #E75300, #FFD700, #E75300, #E84B37, #E75300, #FFD700, #E75300, #E84B37); z-index: -1; opacity: 0; transition: all 0.6s ease; animation: rotate 8s linear infinite; } @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .badge-circle:hover { transform: scale(1.15) rotate(10deg); box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.5), 0 0 0 12px rgba(232, 75, 55, 0.3), 0 0 0 20px rgba(46, 91, 138, 0.2), 0 30px 80px rgba(46, 91, 138, 0.6), inset 0 4px 12px rgba(255, 255, 255, 0.4), inset 0 -4px 12px rgba(0, 0, 0, 0.3); } .badge-circle:hover::before { opacity: 1; animation-duration: 2s; } .badge-inner { position: relative; z-index: 5; transition: all 0.4s ease; display: flex; flex-direction: column; align-items: center; justify-content: center; } .badge-circle:hover .badge-inner { transform: perspective(200px) rotateY(15deg) rotateX(-10deg) scale(1.1); } /* External elements - Plus sign and Hatch logo OUTSIDE badge */ .badge-external-elements { position: absolute; bottom: -85px; right: 20px; display: flex; flex-direction: column; align-items: center; z-index: 15; } .plus-sign-external { font-size: 4rem; font-weight: 900; color: #ffffff; text-shadow: 0 4px 12px rgba(0, 0, 0, 0.6); margin-bottom: -10px; transition: all 0.3s ease; } .hatch-logo-external { font-size: 1.6rem; font-weight: 800; color: #ffffff; letter-spacing: 3px; text-shadow: 0 2px 8px rgba(0, 0, 0, 0.6); transition: all 0.3s ease; } .badge-section:hover .plus-sign-external, .badge-section:hover .hatch-logo-external { transform: scale(1.1); text-shadow: 0 6px 16px rgba(0, 0, 0, 0.8); } .years-text { font-size: 6rem; font-weight: 900; color: #ffffff !important; line-height: 0.8; font-family: var(--font-family-serif); text-shadow: 0 4px 8px rgba(0, 0, 0, 0.5), 0 0 20px rgba(255, 255, 255, 0.3), 0 0 40px rgba(46, 91, 138, 0.4); transform: perspective(200px) rotateX(0deg); transition: all 0.4s ease; } .badge-circle:hover .years-text { text-shadow: 0 6px 12px rgba(0, 0, 0, 0.6), 0 0 30px rgba(255, 255, 255, 0.5), 0 0 60px rgba(46, 91, 138, 0.6); } .years-label { font-size: 1.4rem; color: #ffffff; font-weight: 800; letter-spacing: 4px; margin-top: 8px; text-shadow: 0 2px 6px rgba(0, 0, 0, 0.4), 0 0 15px rgba(255, 255, 255, 0.2); transform: translateY(0); transition: all 0.4s ease; } .badge-circle:hover .years-label { transform: translateY(-4px); letter-spacing: 6px; text-shadow: 0 4px 8px rgba(0, 0, 0, 0.5), 0 0 20px rgba(255, 255, 255, 0.4); } /* Glow effect */ .badge-glow { position: absolute; top: 50%; left: 50%; width: 300px; height: 300px; border-radius: 50%; background: radial-gradient(circle, rgba(46, 91, 138, 0.4) 0%, transparent 70%); transform: translate(-50%, -50%); opacity: 0; transition: opacity 0.6s ease; z-index: -2; } .badge-circle:hover + .badge-glow, .hatch-70-years-badge:hover .badge-glow { opacity: 1; } /* Sparkle effect */ .badge-sparkle { position: absolute; top: 20%; right: 15%; width: 20px; height: 20px; background: radial-gradient(circle, #FFD700, transparent); border-radius: 50%; opacity: 0; transform: scale(0); transition: all 0.4s ease 0.2s; } .badge-circle:hover + .badge-glow + .badge-sparkle, .hatch-70-years-badge:hover .badge-sparkle { opacity: 1; transform: scale(1); animation: sparkle 2s ease-in-out infinite; } @keyframes sparkle { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.3; transform: scale(1.2); } } /* Enhanced Hover Tooltip - Positioned to left side */ .hover-tooltip { position: absolute; top: 50%; left: -400px; transform: translateY(-50%); background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%); color: var(--hatch-gray); padding: 20px; border-radius: 12px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); width: 280px; opacity: 0; visibility: hidden; transition: all 0.3s ease; z-index: 5; } .hatch-70-years-badge:hover .hover-tooltip { opacity: 1; visibility: visible; } .tooltip-arrow { position: absolute; bottom: -15px; right: 100px; width: 0; height: 0; border-left: 15px solid transparent; border-right: 15px solid transparent; border-top: 15px solid #ffffff; filter: drop-shadow(0 3px 6px rgba(0, 0, 0, 0.2)); } .tooltip-content h3 { color: #E84B37; font-size: 1.4rem; font-weight: 700; margin: 0 0 15px 0; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } .tooltip-content p { color: #2c3e50; font-size: 1rem; line-height: 1.6; margin: 0 0 15px 0; text-align: left; } .tooltip-footer { text-align: center; padding-top: 10px; border-top: 2px solid rgba(232, 75, 55, 0.2); } .tooltip-footer strong { color: #E84B37; font-size: 1.1rem; } .tooltip-footer a { color: #E84B37; text-decoration: none; font-weight: 700; transition: color 0.3s ease; } .tooltip-footer a:hover { color: #C73527; text-decoration: underline; } /* Responsive Design */ @media (max-width: 768px) { .hatch-header, .hatch-footer { padding: var(--spacing-sm) 1rem; font-size: 0.9rem; } .hatch-content, .hatch-title-slide, .hatch-content-slide { padding-left: 1rem; padding-right: 1rem; } .hatch-title-slide h1 { font-size: 2.5rem !important; } .hatch-title-slide h2 { font-size: 1.5rem !important; } .hatch-grid-2, .hatch-grid-3 { grid-template-columns: 1fr; gap: 1rem; } }