:root { --primary-color: #7c2a4a; --header-height: 64px; --footer-height: 48px; --sidebar-width: 320px; } [data-theme="dark"] { --primary-color: #fca5a5; } /* Page Layout Specifics - Can't be fully done with Tailwind utilities */ .page { width: 892px; height: 1261px; /* Default white bg handled by class in HTML */ } /* Design Mode Styles */ body.design-mode .field { cursor: grab; border: 1px dashed #3b82f6 !important; background: rgba(59, 130, 246, 0.1); min-width: 20px; min-height: 1em; } body.design-mode .field:hover { background: rgba(59, 130, 246, 0.2); } body.design-mode .field.selected { border: 2px solid #10b981 !important; background: rgba(16, 185, 129, 0.1); z-index: 50; } body.design-mode .page { box-shadow: 0 0 0 1px #3b82f6; } /* Scrollbar Styling */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.1); } ::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.3); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.5); } .dark ::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.05); } .dark ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2); } /* PDF Canvas */ .pdf-page-wrapper { background: white; box-shadow: 0 10px 30px rgba(0,0,0,0.3); } /* Form Styles */ .form-input { @apply w-full px-3 py-2 border border-slate-300 dark:border-slate-600 rounded-lg bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors; } .btn-primary { @apply px-4 py-2 bg-gradient-to-r from-blue-600 to-indigo-600 text-white font-medium rounded-lg hover:shadow-lg hover:scale-[1.02] transition-all flex items-center gap-2; } .btn-secondary { @apply px-4 py-2 bg-slate-100 dark:bg-slate-700 text-slate-800 dark:text-slate-200 font-medium rounded-lg hover:bg-slate-200 dark:hover:bg-slate-600 transition-colors; } /* Utility transitions */ .transition-height { transition: height 0.3s ease-in-out; } /* File upload wrapper */ .file-upload-wrapper { position: relative; overflow: hidden; display: inline-block; width: 100%; } .file-upload-wrapper input[type=file] { position: absolute; left: 0; top: 0; opacity: 0; width: 100%; height: 100%; cursor: pointer; } /* Hide elements for print */ @media print { .no-print { display: none !important; } .page { margin: 0 !important; box-shadow: none !important; page-break-after: always; } } /* Creative enhancements */ .page { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); transform-style: preserve-3d; perspective: 1000px; } .page:hover { transform: translateY(-2px) rotateX(2deg); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3); } .field { transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); position: relative; } .field::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(45deg, transparent 30%, rgba(255,255,255,0.1) 50%, transparent 70%); transform: translateX(-100%); transition: transform 0.6s ease; } .field:hover::after { transform: translateX(100%); } /* Animated gradient background for pages */ .page::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); opacity: 0; transition: opacity 0.3s ease; z-index: -1; } body.design-mode .page:hover::before { opacity: 0.05; } /* Dynamic shadow effects */ .shadow-2xl.page { box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); } /* Floating animation for buttons */ .btn-primary, .btn-secondary, .action-btn, .icon-btn { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); transform: translateZ(0); } .btn-primary:hover, .btn-secondary:hover, .action-btn:hover, .icon-btn:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2); } .btn-primary:active, .btn-secondary:active, .action-btn:active, .icon-btn:active { transform: translateY(-1px) scale(1.02); } /* Rainbow gradient animation for special elements */ @keyframes rainbow { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .btn-primary { background: linear-gradient(45deg, #3b82f6, #8b5cf6, #ec4899, #f59e0b, #10b981); background-size: 400% 400%; animation: rainbow 8s ease infinite; } /* Neumorphic design for cards and containers */ .neumorphic { background: #e0e5ec; border-radius: 20px; box-shadow: 9px 9px 16px #a3b1c6, -9px -9px 16px #ffffff; } [data-theme="dark"] .neumorphic { background: #1a1f29; box-shadow: 9px 9px 16px #0d1016, -9px -9px 16px #272d42; } /* Glowing effect for interactive elements */ .glow { animation: glow 2s ease-in-out infinite alternate; } @keyframes glow { from { box-shadow: 0 0 5px rgba(59, 130, 246, 0.5); } to { box-shadow: 0 0 20px rgba(59, 130, 246, 0.9), 0 0 30px rgba(59, 130, 246, 0.6); } } /* Text shine effect */ .text-shine { background: linear-gradient(90deg, #667eea 0%, #764ba2 50%, #667eea 100%); background-size: 200% auto; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: shine 3s linear infinite; } @keyframes shine { to { background-position: 200% center; } } /* Morphing blob animation */ @keyframes morph { 0% { border-radius: 40% 60% 60% 40% / 60% 40% 60% 40%; } 50% { border-radius: 60% 40% 20% 80% / 80% 20% 60% 40%; } 100% { border-radius: 40% 60% 60% 40% / 60% 40% 60% 40%; } } .blob { animation: morph 8s ease-in-out infinite; background: linear-gradient(45deg, #3b82f6, #8b5cf6); transition: all 0.5s ease; } /* Parallax effect for backgrounds */ .parallax-bg { background-attachment: fixed; background-position: center; background-size: cover; background-repeat: no-repeat; } /* Animated particles effect */ @keyframes float { 0% { transform: translateY(0px); } 50% { transform: translateY(-20px); } 100% { transform: translateY(0px); } } .floating { animation: float 6s ease-in-out infinite; } /* Bounce animation for notifications */ @keyframes bounce { 0%, 20%, 53%, 80%, 100% { transform: translate3d(0, 0, 0); } 40%, 43% { transform: translate3d(0, -30px, 0); } 70% { transform: translate3d(0, -15px, 0); } 90% { transform: translate3d(0, -4px, 0); } } .bounce { animation: bounce 2s ease-in-out infinite; } /* Add these classes to your elements for creative effects */ .creative-title { @apply text-shine text-3xl font-bold; } .creative-card { @apply neumorphic p-6 hover:glow transition-all duration-300; } .creative-btn { @apply btn-primary floating; } /* Animated background patterns */ .pattern-dots { background-image: radial-gradient(circle at 1px 1px, rgba(255,255,255,0.15) 1px, transparent 0); background-size: 20px 20px; animation: slide 20s linear infinite; } @keyframes slide { 0% { background-position: 0 0; } 100% { background-position: 20px 20px; } } /* Glitch effect for special moments */ .glitch { animation: glitch 1s linear infinite; } @keyframes glitch { 2%,64% { transform: translate(2px, 0) skew(0deg); } 4%,60% { transform: translate(-2px, 0) skew(0deg); } 62% { transform: translate(0, 0) skew(5deg); } } /* Creative field styling */ .field { font-family: 'Comic Neue', cursive; font-weight: 700; background: linear-gradient(45deg, #f59e0b, #f97316); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; background-size: 200% 200%; animation: rainbow 3s ease infinite; } /* Design Mode Enhancement */ body.design-mode .field { cursor: grab; border: 1px dashed #3b82f6 !important; background: rgba(59, 130, 246, 0.1); min-width: 20px; min-height: 1em; } body.design-mode .field:hover { background: rgba(59, 130, 246, 0.2); } body.design-mode .field.selected { border: 2px solid #10b981 !important; background: rgba(16, 185, 129, 0.1); z-index: 50; } body.design-mode .page { box-shadow: 0 0 0 1px #3b82f6; } /* Layout Management Styles */ #sidebar-design .form-control { @apply w-full px-3 py-2 border border-slate-300 dark:border-slate-600 rounded-lg bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors; } #sidebar-design .form-control:focus { @apply border-blue-500 ring-2 ring-blue-500; } /* Import/Export buttons */ #sidebar-design label[for="layout-import"] { @apply cursor-pointer hover:bg-blue-50 dark:hover:bg-blue-900/30 transition-colors; } /* Property controls styling */ #field-controls .form-group { @apply mb-4; } #field-controls label { @apply block text-xs font-bold text-slate-500 dark:text-slate-400 uppercase mb-2; } #field-controls input[type="number"], #field-controls select, #field-controls input[type="color"] { @apply w-full; } /* Layout name input */ #layout-name-input { @apply font-mono text-sm; } /* Success feedback for saved layouts */ @keyframes saved-pulse { 0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); } 70% { box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); } 100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); } } .saved-indicator { animation: saved-pulse 1s; } /* Enhanced field selection */ body.design-mode .field.selected::before { content: ''; position: absolute; top: -4px; left: -4px; right: -4px; bottom: -4px; border: 2px solid #10b981; border-radius: 4px; pointer-events: none; animation: selected-glow 1s ease-in-out infinite alternate; } @keyframes selected-glow { from { opacity: 0.5; } to { opacity: 1; } } /* Make the design panel more prominent */ #sidebar-design { background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); } [data-theme="dark"] #sidebar-design { background: linear-gradient(135deg, #1e293b 0%, #334155 100%); } /* Usage examples styling */ .usage-example { @apply bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg p-4 mb-4; } .usage-example h4 { @apply font-bold text-blue-800 dark:text-blue-200 mb-2; } .usage-example code { @apply bg-slate-100 dark:bg-slate-800 px-2 py-1 rounded text-sm font-mono; } /* Make the template view more engaging */ #template-view { perspective: 1000px; } #template-view > div { transform-style: preserve-3d; } /* Add some creative transitions to the sidebar */ #sidebar { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); position: relative; overflow: hidden; } #sidebar::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%); animation: rotate 30s linear infinite; } @keyframes rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Make the navbar dynamic */ app-navbar::part(container) { background: linear-gradient(90deg, #ff6b6b, #4ecdc4, #45b7d1, #ff6b6b); background-size: 300% 100%; animation: gradientShift 8s ease infinite; } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }