/** * Goa-GEL Documentation Theme * Modern, clean design with government branding */ :root { /* Brand Colors - Inspired by Goa's vibrant culture */ --vp-c-brand-1: #6366f1; --vp-c-brand-2: #818cf8; --vp-c-brand-3: #4f46e5; --vp-c-brand-soft: rgba(99, 102, 241, 0.14); /* Accent Colors */ --goa-teal: #14b8a6; --goa-gold: #f59e0b; --goa-coral: #f43f5e; --goa-emerald: #10b981; /* Typography */ --vp-font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; --vp-font-family-mono: 'JetBrains Mono', 'Fira Code', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; /* Sizing */ --vp-layout-max-width: 1440px; } /* Dark Mode Adjustments */ .dark { --vp-c-brand-1: #818cf8; --vp-c-brand-2: #a5b4fc; --vp-c-brand-3: #6366f1; --vp-c-brand-soft: rgba(129, 140, 248, 0.16); } /* ============================================ HERO SECTION ============================================ */ .VPHero { padding-bottom: 64px !important; } .VPHero .name { background: linear-gradient(135deg, var(--vp-c-brand-1) 0%, var(--goa-teal) 50%, var(--goa-emerald) 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } .VPHero .text { font-size: 48px !important; line-height: 1.2 !important; font-weight: 700 !important; } .VPHero .tagline { font-size: 20px !important; color: var(--vp-c-text-2); max-width: 560px; } .VPHero .actions { gap: 16px !important; } .VPHero .action .VPButton { padding: 12px 28px !important; font-size: 16px !important; font-weight: 600 !important; border-radius: 12px !important; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important; } .VPHero .action .VPButton.brand { background: linear-gradient(135deg, var(--vp-c-brand-1) 0%, var(--vp-c-brand-3) 100%) !important; box-shadow: 0 4px 14px 0 rgba(99, 102, 241, 0.39) !important; } .VPHero .action .VPButton.brand:hover { transform: translateY(-2px) !important; box-shadow: 0 6px 20px 0 rgba(99, 102, 241, 0.5) !important; } .VPHero .action .VPButton.alt { border: 2px solid var(--vp-c-brand-1) !important; color: var(--vp-c-brand-1) !important; } .VPHero .action .VPButton.alt:hover { background: var(--vp-c-brand-soft) !important; } /* Hero Image */ .VPHero .image-container { transform: perspective(1000px) rotateY(-5deg) !important; transition: transform 0.5s ease !important; } .VPHero .image-container:hover { transform: perspective(1000px) rotateY(0deg) !important; } /* ============================================ NAVIGATION ============================================ */ .VPNav { backdrop-filter: saturate(180%) blur(20px); background: rgba(255, 255, 255, 0.8) !important; } .dark .VPNav { background: rgba(30, 30, 32, 0.85) !important; } .VPNavBar .title { font-weight: 700 !important; font-size: 18px !important; } .VPNavBarMenuLink { font-weight: 500 !important; transition: color 0.2s ease !important; } .VPNavBarMenuLink:hover { color: var(--vp-c-brand-1) !important; } .VPNavBarMenuLink.active { color: var(--vp-c-brand-1) !important; } /* ============================================ SIDEBAR ============================================ */ .VPSidebar { scrollbar-width: thin; scrollbar-color: var(--vp-c-divider) transparent; } .VPSidebar::-webkit-scrollbar { width: 6px; } .VPSidebar::-webkit-scrollbar-thumb { background: var(--vp-c-divider); border-radius: 3px; } .VPSidebarItem .text { transition: all 0.2s ease !important; } .VPSidebarItem.is-active > .item > .link > .text { color: var(--vp-c-brand-1) !important; font-weight: 600 !important; } .VPSidebarItem .indicator { background: linear-gradient(135deg, var(--vp-c-brand-1) 0%, var(--goa-teal) 100%) !important; width: 3px !important; border-radius: 3px !important; } /* ============================================ CONTENT AREA ============================================ */ .VPDoc { padding-bottom: 64px !important; } .vp-doc h1 { font-size: 2.5rem !important; font-weight: 800 !important; letter-spacing: -0.02em; background: linear-gradient(135deg, var(--vp-c-text-1) 0%, var(--vp-c-text-2) 100%); -webkit-background-clip: text; background-clip: text; } .vp-doc h2 { font-size: 1.75rem !important; font-weight: 700 !important; padding-bottom: 12px !important; border-bottom: 2px solid var(--vp-c-divider) !important; margin-top: 48px !important; } .vp-doc h3 { font-size: 1.35rem !important; font-weight: 600 !important; margin-top: 32px !important; } /* Links */ .vp-doc a { color: var(--vp-c-brand-1) !important; text-decoration: none !important; transition: all 0.2s ease !important; border-bottom: 1px solid transparent; } .vp-doc a:hover { border-bottom-color: var(--vp-c-brand-1); } /* Code Blocks */ .vp-doc div[class*='language-'] { border-radius: 12px !important; margin: 24px 0 !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1) !important; } .dark .vp-doc div[class*='language-'] { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important; } .vp-doc div[class*='language-'] pre { padding: 20px 24px !important; } /* Inline Code */ .vp-doc :not(pre) > code { background: var(--vp-c-brand-soft) !important; color: var(--vp-c-brand-1) !important; padding: 3px 8px !important; border-radius: 6px !important; font-size: 0.9em !important; font-weight: 500 !important; } /* Blockquotes */ .vp-doc blockquote { border-left: 4px solid var(--vp-c-brand-1) !important; background: var(--vp-c-brand-soft) !important; border-radius: 0 12px 12px 0 !important; padding: 16px 20px !important; margin: 24px 0 !important; } .vp-doc blockquote p { color: var(--vp-c-text-1) !important; } /* Tables */ .vp-doc table { border-radius: 12px !important; overflow: hidden !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important; } .vp-doc th { background: var(--vp-c-brand-soft) !important; font-weight: 600 !important; text-transform: uppercase; font-size: 0.85em !important; letter-spacing: 0.5px; } .vp-doc tr:hover { background: var(--vp-c-bg-soft) !important; } /* ============================================ FEATURE CARDS (Home Page) ============================================ */ .VPFeatures { margin-top: -32px !important; } .VPFeature { background: var(--vp-c-bg) !important; border: 1px solid var(--vp-c-divider) !important; border-radius: 16px !important; padding: 28px !important; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important; } .VPFeature:hover { transform: translateY(-4px) !important; box-shadow: 0 12px 24px rgba(0, 0, 0, 0.1) !important; border-color: var(--vp-c-brand-1) !important; } .dark .VPFeature:hover { box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3) !important; } .VPFeature .icon { font-size: 32px !important; margin-bottom: 12px !important; } .VPFeature .title { font-size: 18px !important; font-weight: 700 !important; color: var(--vp-c-text-1) !important; } .VPFeature .details { font-size: 14px !important; color: var(--vp-c-text-2) !important; line-height: 1.6 !important; } /* ============================================ CUSTOM CONTAINERS (Tips, Warnings, etc.) ============================================ */ .vp-doc .custom-block { border-radius: 12px !important; padding: 20px 24px !important; margin: 24px 0 !important; } .vp-doc .custom-block.info { background: rgba(59, 130, 246, 0.1) !important; border-left: 4px solid #3b82f6 !important; } .vp-doc .custom-block.tip { background: rgba(16, 185, 129, 0.1) !important; border-left: 4px solid var(--goa-emerald) !important; } .vp-doc .custom-block.warning { background: rgba(245, 158, 11, 0.1) !important; border-left: 4px solid var(--goa-gold) !important; } .vp-doc .custom-block.danger { background: rgba(244, 63, 94, 0.1) !important; border-left: 4px solid var(--goa-coral) !important; } .vp-doc .custom-block .custom-block-title { font-weight: 700 !important; font-size: 15px !important; text-transform: uppercase; letter-spacing: 0.5px; } /* ============================================ SEARCH ============================================ */ .VPLocalSearchBox .search-container { border-radius: 16px !important; overflow: hidden !important; } .VPLocalSearchBox .search-input-container { border-radius: 12px !important; } /* ============================================ FOOTER ============================================ */ .VPFooter { border-top: 1px solid var(--vp-c-divider) !important; padding: 32px 24px !important; } .VPFooter .message, .VPFooter .copyright { color: var(--vp-c-text-2) !important; font-size: 14px !important; } /* ============================================ RESPONSIVE ADJUSTMENTS ============================================ */ @media (max-width: 768px) { .VPHero .text { font-size: 32px !important; } .VPHero .tagline { font-size: 16px !important; } .vp-doc h1 { font-size: 2rem !important; } .vp-doc h2 { font-size: 1.5rem !important; } } /* ============================================ ANIMATIONS ============================================ */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .VPFeature { animation: fadeInUp 0.5s ease-out forwards; } .VPFeature:nth-child(1) { animation-delay: 0.1s; } .VPFeature:nth-child(2) { animation-delay: 0.2s; } .VPFeature:nth-child(3) { animation-delay: 0.3s; } .VPFeature:nth-child(4) { animation-delay: 0.4s; } .VPFeature:nth-child(5) { animation-delay: 0.5s; } .VPFeature:nth-child(6) { animation-delay: 0.6s; } /* ============================================ BADGE STYLES ============================================ */ .VPBadge { border-radius: 8px !important; font-weight: 600 !important; font-size: 12px !important; padding: 4px 10px !important; } .VPBadge.tip { background: var(--goa-emerald) !important; color: white !important; } .VPBadge.warning { background: var(--goa-gold) !important; color: white !important; } .VPBadge.danger { background: var(--goa-coral) !important; color: white !important; } /* ============================================ OUTLINE (Table of Contents) ============================================ */ .VPDocOutlineItem a { transition: all 0.2s ease !important; } .VPDocOutlineItem a:hover, .VPDocOutlineItem a.active { color: var(--vp-c-brand-1) !important; } .VPDocOutlineItem .outline-marker { background: var(--vp-c-brand-1) !important; } /* ============================================ PRINT STYLES ============================================ */ @media print { .VPNav, .VPSidebar, .VPDocOutlineDropdown, .VPDocAsideOutline, .VPFooter { display: none !important; } .VPDoc .container { max-width: 100% !important; padding: 0 !important; } }