|
|
|
|
|
:root { |
|
|
--primary-color: #7c2a4a; |
|
|
--header-height: 64px; |
|
|
--footer-height: 48px; |
|
|
--sidebar-width: 320px; |
|
|
} |
|
|
|
|
|
[data-theme="dark"] { |
|
|
--primary-color: #fca5a5; |
|
|
} |
|
|
|
|
|
|
|
|
.page { |
|
|
width: 892px; |
|
|
height: 1261px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
::-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-page-wrapper { |
|
|
background: white; |
|
|
box-shadow: 0 10px 30px rgba(0,0,0,0.3); |
|
|
} |
|
|
|
|
|
.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; |
|
|
} |
|
|
|
|
|
|
|
|
.transition-height { |
|
|
transition: height 0.3s ease-in-out; |
|
|
} |
|
|
|
|
|
|
|
|
.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; |
|
|
} |
|
|
|
|
|
@media print { |
|
|
.no-print { |
|
|
display: none !important; |
|
|
} |
|
|
.page { |
|
|
margin: 0 !important; |
|
|
box-shadow: none !important; |
|
|
page-break-after: always; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.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%); |
|
|
} |
|
|
|
|
|
|
|
|
.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; |
|
|
} |
|
|
|
|
|
|
|
|
.shadow-2xl.page { |
|
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); |
|
|
} |
|
|
|
|
|
|
|
|
.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); |
|
|
} |
|
|
|
|
|
|
|
|
@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 { |
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
.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 { |
|
|
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; } |
|
|
} |
|
|
|
|
|
|
|
|
@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-bg { |
|
|
background-attachment: fixed; |
|
|
background-position: center; |
|
|
background-size: cover; |
|
|
background-repeat: no-repeat; |
|
|
} |
|
|
|
|
|
|
|
|
@keyframes float { |
|
|
0% { transform: translateY(0px); } |
|
|
50% { transform: translateY(-20px); } |
|
|
100% { transform: translateY(0px); } |
|
|
} |
|
|
|
|
|
.floating { |
|
|
animation: float 6s ease-in-out infinite; |
|
|
} |
|
|
|
|
|
|
|
|
@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; |
|
|
} |
|
|
|
|
|
|
|
|
.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; |
|
|
} |
|
|
|
|
|
|
|
|
.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 { |
|
|
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); } |
|
|
} |
|
|
|
|
|
.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; |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
#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; |
|
|
} |
|
|
|
|
|
|
|
|
#sidebar-design label[for="layout-import"] { |
|
|
@apply cursor-pointer hover:bg-blue-50 dark:hover:bg-blue-900/30 transition-colors; |
|
|
} |
|
|
|
|
|
|
|
|
#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 { |
|
|
@apply font-mono text-sm; |
|
|
} |
|
|
|
|
|
|
|
|
@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; |
|
|
} |
|
|
|
|
|
|
|
|
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; } |
|
|
} |
|
|
|
|
|
|
|
|
#sidebar-design { |
|
|
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); |
|
|
} |
|
|
|
|
|
[data-theme="dark"] #sidebar-design { |
|
|
background: linear-gradient(135deg, #1e293b 0%, #334155 100%); |
|
|
} |
|
|
|
|
|
|
|
|
.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; |
|
|
} |
|
|
|
|
|
#template-view { |
|
|
perspective: 1000px; |
|
|
} |
|
|
|
|
|
#template-view > div { |
|
|
transform-style: preserve-3d; |
|
|
} |
|
|
|
|
|
|
|
|
#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); } |
|
|
} |
|
|
|
|
|
|
|
|
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%; } |
|
|
} |
|
|
|