| |
| :root { |
| --bg: #faf9f8; |
| --bg-warm: #f5f5f4; |
| --surface: #ffffff; |
| --surface-soft: #fafafa; |
| --border: #e5e4e2; |
| --border-soft: #e8e8e6; |
| --text: #2c2c2c; |
| --text-soft: #4a4845; |
| --muted: #71717a; |
| --success: #5a7d5c; |
| --error: #b85450; |
| --font-serif: 'Cormorant Garamond', Georgia, serif; |
| --font-sans: 'Outfit', system-ui, sans-serif; |
| --shadow-soft: 0 2px 12px rgba(44, 44, 44, 0.06); |
| --shadow-card: 0 4px 20px rgba(44, 44, 44, 0.08); |
| |
| --accent: #64748b; |
| --accent-hover: #475569; |
| --accent-soft: #94a3b8; |
| --accent-light: #f1f5f9; |
| --accent-focus: 100, 116, 139; |
| } |
|
|
| |
| .app[data-theme="gold"] { |
| --accent: #b8860b; |
| --accent-hover: #9a7209; |
| --accent-soft: #d4af37; |
| --accent-light: #f5ecd8; |
| --accent-focus: 184, 134, 11; |
| } |
|
|
| |
| .app[data-theme="silver"] { |
| --accent: #64748b; |
| --accent-hover: #475569; |
| --accent-soft: #94a3b8; |
| --accent-light: #f1f5f9; |
| --accent-focus: 100, 116, 139; |
| } |
|
|
| |
| .app[data-theme="rose-gold"] { |
| --accent: #b76e79; |
| --accent-hover: #9a5a64; |
| --accent-soft: #d4a5a5; |
| --accent-light: #faf0f2; |
| --accent-focus: 183, 110, 121; |
| } |
|
|
| |
| .app[data-theme="platinum"] { |
| --accent: #4a5568; |
| --accent-hover: #2d3748; |
| --accent-soft: #718096; |
| --accent-light: #edf2f7; |
| --accent-focus: 74, 85, 104; |
| } |
|
|
| |
| .app[data-theme="bronze"] { |
| --accent: #92400e; |
| --accent-hover: #78350f; |
| --accent-soft: #b45309; |
| --accent-light: #fef3c7; |
| --accent-focus: 146, 64, 14; |
| } |
|
|
| |
| .app[data-theme="emerald"] { |
| --accent: #047857; |
| --accent-hover: #065f46; |
| --accent-soft: #10b981; |
| --accent-light: #ecfdf5; |
| --accent-focus: 4, 120, 87; |
| } |
|
|
| |
| .app[data-theme="amethyst"] { |
| --accent: #6d28d9; |
| --accent-hover: #5b21b6; |
| --accent-soft: #8b5cf6; |
| --accent-light: #f5f3ff; |
| --accent-focus: 109, 40, 217; |
| } |
|
|
| |
| .app[data-theme="copper"] { |
| --accent: #c2410c; |
| --accent-hover: #9a3412; |
| --accent-soft: #ea580c; |
| --accent-light: #fff7ed; |
| --accent-focus: 194, 65, 12; |
| } |
|
|
| |
| .app[data-theme="champagne"] { |
| --accent: #a16207; |
| --accent-hover: #854d0e; |
| --accent-soft: #ca8a04; |
| --accent-light: #fefce8; |
| --accent-focus: 161, 98, 7; |
| } |
|
|
| * { |
| box-sizing: border-box; |
| } |
|
|
| body { |
| margin: 0; |
| min-height: 100vh; |
| background: var(--bg); |
| color: var(--text); |
| font-family: var(--font-sans); |
| font-weight: 400; |
| line-height: 1.5; |
| -webkit-font-smoothing: antialiased; |
| transition: background 680ms cubic-bezier(0.22, 0.61, 0.36, 1), color 520ms ease; |
| } |
|
|
| body.night-mode { |
| background-color: #050914; |
| background-image: url("https://wallpapercave.com/wp/wp9116743.jpg"); |
| background-size: cover; |
| background-position: center center; |
| background-repeat: no-repeat; |
| background-attachment: fixed; |
| } |
|
|
| #root { |
| min-height: 100vh; |
| } |
|
|
| h1, h2, h3 { |
| font-family: var(--font-serif); |
| font-weight: 500; |
| color: var(--text); |
| } |
|
|
| button { |
| font-family: var(--font-sans); |
| cursor: pointer; |
| } |
|
|
| a { |
| color: var(--accent); |
| text-decoration: none; |
| } |
|
|
| a:hover { |
| text-decoration: underline; |
| } |
|
|
| |
| .promo-strip { |
| background: linear-gradient(90deg, var(--accent) 0%, var(--accent-soft) 100%); |
| color: #fff; |
| text-align: center; |
| padding: 0.5rem 1rem; |
| font-size: 0.8rem; |
| font-weight: 500; |
| letter-spacing: 0.02em; |
| } |
|
|
| |
| .app { |
| position: relative; |
| max-width: 960px; |
| margin: 0 auto; |
| padding: 2rem 1.5rem; |
| transition: color 320ms ease; |
| } |
|
|
| .app::before { |
| content: ""; |
| position: fixed; |
| inset: -12%; |
| pointer-events: none; |
| z-index: -1; |
| opacity: 0; |
| background: |
| radial-gradient(40% 35% at 20% 15%, rgba(56, 189, 248, 0.2), transparent 70%), |
| radial-gradient(45% 40% at 85% 12%, rgba(99, 102, 241, 0.22), transparent 72%), |
| radial-gradient(55% 45% at 50% 85%, rgba(16, 185, 129, 0.12), transparent 78%); |
| transform: translateY(6px) scale(1.01); |
| transition: opacity 820ms cubic-bezier(0.22, 0.61, 0.36, 1), transform 820ms cubic-bezier(0.22, 0.61, 0.36, 1); |
| will-change: opacity, transform; |
| } |
|
|
| .app::after { |
| content: ""; |
| position: fixed; |
| inset: 0; |
| pointer-events: none; |
| z-index: -1; |
| opacity: 0; |
| background: |
| radial-gradient(circle at 12% 22%, rgba(255, 255, 255, 0.92) 0 1px, transparent 1.8px), |
| radial-gradient(circle at 24% 14%, rgba(255, 255, 255, 0.78) 0 1.2px, transparent 2px), |
| radial-gradient(circle at 36% 28%, rgba(255, 255, 255, 0.86) 0 1px, transparent 1.8px), |
| radial-gradient(circle at 52% 16%, rgba(255, 255, 255, 0.9) 0 1.1px, transparent 2px), |
| radial-gradient(circle at 66% 24%, rgba(255, 255, 255, 0.75) 0 1.2px, transparent 2px), |
| radial-gradient(circle at 78% 12%, rgba(255, 255, 255, 0.92) 0 1px, transparent 1.9px), |
| radial-gradient(circle at 88% 30%, rgba(255, 255, 255, 0.82) 0 1.1px, transparent 2px), |
| radial-gradient(circle at 18% 42%, rgba(255, 255, 255, 0.8) 0 1px, transparent 1.8px), |
| radial-gradient(circle at 42% 48%, rgba(255, 255, 255, 0.9) 0 1.2px, transparent 2px), |
| radial-gradient(circle at 61% 40%, rgba(255, 255, 255, 0.76) 0 1px, transparent 1.8px), |
| radial-gradient(circle at 83% 50%, rgba(255, 255, 255, 0.88) 0 1.1px, transparent 2px), |
| radial-gradient(circle at 72% 66%, rgba(255, 255, 255, 0.84) 0 1px, transparent 1.8px), |
| radial-gradient(circle at 28% 72%, rgba(255, 255, 255, 0.8) 0 1.1px, transparent 2px), |
| radial-gradient(circle at 50% 82%, rgba(255, 255, 255, 0.9) 0 1.2px, transparent 2px), |
| radial-gradient(circle at 86% 78%, rgba(255, 255, 255, 0.75) 0 1px, transparent 1.8px); |
| transition: opacity 900ms ease; |
| will-change: opacity, filter; |
| } |
|
|
| |
| .app.app--night { |
| --bg: #0b1220; |
| --bg-warm: #111827; |
| --surface: #0f172a; |
| --surface-soft: #111a2f; |
| --border: #263149; |
| --border-soft: #1f2a3f; |
| --text: #e5e7eb; |
| --text-soft: #cbd5e1; |
| --muted: #94a3b8; |
| --shadow-soft: 0 2px 14px rgba(0, 0, 0, 0.45); |
| --shadow-card: 0 6px 28px rgba(0, 0, 0, 0.5); |
| animation: night-enter 820ms cubic-bezier(0.22, 0.61, 0.36, 1); |
| } |
|
|
| .app.app--night::before { |
| opacity: 1; |
| transform: translateY(0) scale(1); |
| animation: night-ambient 14s ease-in-out infinite alternate; |
| } |
|
|
| .app.app--night::after { |
| opacity: 0.48; |
| animation: night-stars 8.5s ease-in-out infinite alternate; |
| } |
|
|
| .app.app--night .header-nav-link { |
| color: #93c5fd; |
| } |
|
|
| .app.app--night .header-nav-link:hover { |
| color: #bfdbfe; |
| } |
|
|
| .app.app--night .btn-logout { |
| color: #cbd5e1; |
| border-color: #334155; |
| } |
|
|
| .app.app--night .btn-logout:hover { |
| background: #1e293b; |
| color: #f8fafc; |
| } |
|
|
| .app.app--night .tagline { |
| color: #94a3b8; |
| } |
|
|
| .app.app--night .hero, |
| .app.app--night .card, |
| .app.app--night .promo-strip, |
| .app.app--night .session-restore-bar, |
| .app.app--night input, |
| .app.app--night select, |
| .app.app--night button { |
| animation: night-surface-rise 620ms cubic-bezier(0.22, 0.61, 0.36, 1); |
| } |
|
|
| .app.app--night .hero, |
| .app.app--night .template-step-card, |
| .app.app--night .card { |
| background: rgba(10, 17, 34, 0.32); |
| backdrop-filter: blur(4px); |
| -webkit-backdrop-filter: blur(4px); |
| border-color: rgba(148, 163, 184, 0.28); |
| } |
|
|
| .app.app--night .hero { |
| box-shadow: 0 8px 30px rgba(2, 6, 23, 0.28); |
| } |
|
|
| @keyframes night-enter { |
| 0% { |
| filter: brightness(1.03); |
| } |
| 100% { |
| filter: brightness(1); |
| } |
| } |
|
|
| @keyframes night-surface-rise { |
| 0% { |
| opacity: 0.88; |
| transform: translateY(3px) scale(0.998); |
| } |
| 100% { |
| opacity: 1; |
| transform: translateY(0) scale(1); |
| } |
| } |
|
|
| @keyframes night-ambient { |
| 0% { |
| filter: saturate(1) brightness(1); |
| transform: translateY(0) scale(1); |
| } |
| 100% { |
| filter: saturate(1.08) brightness(1.04); |
| transform: translateY(-10px) scale(1.015); |
| } |
| } |
|
|
| @keyframes night-stars { |
| 0% { |
| opacity: 0.4; |
| filter: brightness(0.98); |
| } |
| 50% { |
| opacity: 0.52; |
| filter: brightness(1.04); |
| } |
| 100% { |
| opacity: 0.46; |
| filter: brightness(1); |
| } |
| } |
|
|
| .header { |
| position: relative; |
| text-align: center; |
| margin-bottom: 2.5rem; |
| padding-bottom: 1.5rem; |
| border-bottom: 1px solid var(--border-soft); |
| } |
|
|
| .btn-logout { |
| position: absolute; |
| top: 0; |
| right: 0; |
| padding: 0.4rem 0.75rem; |
| font-size: 0.85rem; |
| color: var(--text-soft); |
| background: transparent; |
| border: 1px solid var(--border); |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-logout:hover { |
| background: var(--bg-warm); |
| color: var(--text); |
| } |
|
|
| .session-restore-bar { |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| gap: 0.5rem; |
| flex-wrap: wrap; |
| padding: 0.35rem 0.75rem; |
| margin-bottom: 0.5rem; |
| background: var(--bg-warm); |
| border: none; |
| border-radius: 6px; |
| font-size: 0.8rem; |
| color: var(--text-soft); |
| } |
|
|
| .session-restore-bar span { |
| margin-right: 0; |
| } |
|
|
| .btn-restore-session { |
| padding: 0.2rem 0.5rem; |
| font-size: 0.8rem; |
| font-weight: 500; |
| color: var(--accent); |
| background: transparent; |
| border: 1px solid var(--border); |
| border-radius: 4px; |
| cursor: pointer; |
| } |
|
|
| .btn-restore-session:hover { |
| background: var(--surface-soft); |
| border-color: var(--accent-soft); |
| } |
|
|
| .btn-dismiss-session { |
| padding: 0.2rem 0.5rem; |
| font-size: 0.8rem; |
| color: var(--text-muted, rgba(255, 255, 255, 0.5)); |
| background: transparent; |
| border: none; |
| border-radius: 4px; |
| cursor: pointer; |
| } |
|
|
| .btn-dismiss-session:hover { |
| color: var(--text-soft); |
| } |
|
|
| .header h1 { |
| font-size: 2.5rem; |
| letter-spacing: 0.12em; |
| margin: 0; |
| color: var(--text); |
| } |
|
|
| .tagline { |
| color: var(--muted); |
| font-size: 0.95rem; |
| margin: 0.5rem 0 0; |
| font-weight: 400; |
| } |
|
|
| .header-nav { |
| display: flex; |
| gap: 1rem; |
| margin-top: 0.75rem; |
| } |
|
|
| .header-nav-link { |
| color: var(--accent); |
| font-weight: 500; |
| text-decoration: none; |
| } |
|
|
| .variations-card { |
| display: flex; |
| flex-direction: column; |
| gap: 1rem; |
| } |
|
|
| .variations-controls { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); |
| gap: 0.85rem; |
| } |
|
|
| .variations-controls label { |
| display: flex; |
| flex-direction: column; |
| gap: 0.35rem; |
| font-size: 0.9rem; |
| color: var(--text-soft); |
| } |
|
|
| .variations-controls input[type="text"], |
| .variations-controls input[type="file"], |
| .variations-controls select { |
| border: 1px solid var(--border); |
| border-radius: 8px; |
| padding: 0.5rem 0.6rem; |
| background: var(--surface); |
| } |
|
|
| .variations-winning-preview { |
| width: min(220px, 100%); |
| border: 1px solid var(--border); |
| border-radius: 12px; |
| overflow: hidden; |
| background: var(--surface-soft); |
| } |
|
|
| .variations-winning-preview img { |
| width: 100%; |
| display: block; |
| object-fit: cover; |
| } |
|
|
| .variations-actions { |
| display: flex; |
| align-items: center; |
| gap: 0.75rem; |
| } |
|
|
| .header-nav-link:hover { |
| color: var(--accent-hover); |
| text-decoration: underline; |
| } |
|
|
| |
| .login-page .login-card { |
| max-width: 380px; |
| margin: 2rem auto 3rem; |
| } |
|
|
| .login-card h2 { |
| margin: 0 0 0.35rem; |
| font-size: 1.5rem; |
| } |
|
|
| .login-hint { |
| color: var(--muted); |
| font-size: 0.9rem; |
| margin: 0 0 1.25rem; |
| } |
|
|
| .login-form { |
| display: flex; |
| flex-direction: column; |
| gap: 1rem; |
| } |
|
|
| .login-form label { |
| display: flex; |
| flex-direction: column; |
| gap: 0.35rem; |
| } |
|
|
| .login-form .label-text { |
| font-size: 0.9rem; |
| font-weight: 500; |
| color: var(--text-soft); |
| } |
|
|
| .login-form input { |
| padding: 0.75rem 1rem; |
| border: 1px solid var(--border); |
| border-radius: 8px; |
| font-size: 1rem; |
| background: var(--surface); |
| color: var(--text); |
| } |
|
|
| .login-form input:focus { |
| outline: none; |
| border-color: var(--accent); |
| box-shadow: 0 0 0 3px rgba(var(--accent-focus, 100, 116, 139), 0.2); |
| } |
|
|
| .login-error { |
| color: var(--error); |
| font-size: 0.9rem; |
| margin: 0; |
| } |
|
|
| .btn-login { |
| padding: 0.75rem 1.25rem; |
| margin-top: 0.5rem; |
| background: var(--accent); |
| color: #fff; |
| border: none; |
| border-radius: 8px; |
| font-weight: 500; |
| font-size: 1rem; |
| cursor: pointer; |
| } |
|
|
| .btn-login:hover:not(:disabled) { |
| background: var(--accent-hover); |
| } |
|
|
| .btn-login:disabled { |
| opacity: 0.7; |
| cursor: not-allowed; |
| } |
|
|
| .hero { |
| position: relative; |
| background: var(--surface); |
| border: 1px solid var(--border); |
| border-radius: 12px; |
| padding: 1.75rem; |
| margin-bottom: 2rem; |
| box-shadow: var(--shadow-soft); |
| } |
|
|
| .hero-desc { |
| color: var(--text-soft); |
| font-size: 0.95rem; |
| margin: 0 0 1.25rem; |
| padding-right: 88px; |
| line-height: 1.6; |
| } |
|
|
| .studio-mode-switch { |
| display: inline-flex; |
| align-items: center; |
| margin-bottom: 1rem; |
| } |
|
|
| .studio-mode-switch--top-right { |
| position: absolute; |
| top: 1.2rem; |
| right: 1.25rem; |
| margin-bottom: 0; |
| transform: scale(0.86); |
| transform-origin: top right; |
| } |
|
|
| .studio-switch { |
| position: relative; |
| display: inline-block; |
| width: 60px; |
| height: 34px; |
| } |
|
|
| .studio-switch #studio-mode-input { |
| opacity: 0; |
| width: 0; |
| height: 0; |
| } |
|
|
| .studio-slider { |
| position: absolute; |
| cursor: pointer; |
| inset: 0; |
| background-color: #2196f3; |
| transition: 0.4s; |
| z-index: 0; |
| overflow: hidden; |
| } |
|
|
| .sun-moon { |
| position: absolute; |
| height: 26px; |
| width: 26px; |
| left: 4px; |
| bottom: 4px; |
| background-color: yellow; |
| transition: 0.4s; |
| } |
|
|
| .studio-switch #studio-mode-input:checked + .studio-slider { |
| background-color: black; |
| } |
|
|
| .studio-switch #studio-mode-input:focus + .studio-slider { |
| box-shadow: 0 0 1px #2196f3; |
| } |
|
|
| .studio-switch #studio-mode-input:checked + .studio-slider .sun-moon { |
| transform: translateX(26px); |
| background-color: white; |
| animation: rotate-center 0.6s ease-in-out both; |
| } |
|
|
| .moon-dot { |
| opacity: 0; |
| transition: 0.4s; |
| fill: gray; |
| } |
|
|
| .studio-switch #studio-mode-input:checked + .studio-slider .sun-moon .moon-dot { |
| opacity: 1; |
| } |
|
|
| .studio-slider.round { |
| border-radius: 34px; |
| } |
|
|
| .studio-slider.round .sun-moon { |
| border-radius: 50%; |
| } |
|
|
| #moon-dot-1 { |
| left: 10px; |
| top: 3px; |
| position: absolute; |
| width: 6px; |
| height: 6px; |
| z-index: 4; |
| } |
|
|
| #moon-dot-2 { |
| left: 2px; |
| top: 10px; |
| position: absolute; |
| width: 10px; |
| height: 10px; |
| z-index: 4; |
| } |
|
|
| #moon-dot-3 { |
| left: 16px; |
| top: 18px; |
| position: absolute; |
| width: 3px; |
| height: 3px; |
| z-index: 4; |
| } |
|
|
| #light-ray-1 { |
| left: -8px; |
| top: -8px; |
| position: absolute; |
| width: 43px; |
| height: 43px; |
| z-index: -1; |
| fill: white; |
| opacity: 10%; |
| } |
|
|
| #light-ray-2 { |
| left: -50%; |
| top: -50%; |
| position: absolute; |
| width: 55px; |
| height: 55px; |
| z-index: -1; |
| fill: white; |
| opacity: 10%; |
| } |
|
|
| #light-ray-3 { |
| left: -18px; |
| top: -18px; |
| position: absolute; |
| width: 60px; |
| height: 60px; |
| z-index: -1; |
| fill: white; |
| opacity: 10%; |
| } |
|
|
| .cloud-light { |
| position: absolute; |
| fill: #eee; |
| animation-name: cloud-move; |
| animation-duration: 6s; |
| animation-iteration-count: infinite; |
| } |
|
|
| .cloud-dark { |
| position: absolute; |
| fill: #ccc; |
| animation-name: cloud-move; |
| animation-duration: 6s; |
| animation-iteration-count: infinite; |
| animation-delay: 1s; |
| } |
|
|
| #cloud-1 { |
| left: 30px; |
| top: 15px; |
| width: 40px; |
| } |
|
|
| #cloud-2 { |
| left: 44px; |
| top: 10px; |
| width: 20px; |
| } |
|
|
| #cloud-3 { |
| left: 18px; |
| top: 24px; |
| width: 30px; |
| } |
|
|
| #cloud-4 { |
| left: 36px; |
| top: 18px; |
| width: 40px; |
| } |
|
|
| #cloud-5 { |
| left: 48px; |
| top: 14px; |
| width: 20px; |
| } |
|
|
| #cloud-6 { |
| left: 22px; |
| top: 26px; |
| width: 30px; |
| } |
|
|
| @keyframes cloud-move { |
| 0% { transform: translateX(0px); } |
| 40% { transform: translateX(4px); } |
| 80% { transform: translateX(-4px); } |
| 100% { transform: translateX(0px); } |
| } |
|
|
| .stars { |
| transform: translateY(-32px); |
| opacity: 0; |
| transition: 0.4s; |
| } |
|
|
| .star { |
| fill: white; |
| position: absolute; |
| transition: 0.4s; |
| animation-name: star-twinkle; |
| animation-duration: 2s; |
| animation-iteration-count: infinite; |
| } |
|
|
| .studio-switch #studio-mode-input:checked + .studio-slider .stars { |
| transform: translateY(0); |
| opacity: 1; |
| } |
|
|
| #star-1 { |
| width: 20px; |
| top: 2px; |
| left: 3px; |
| animation-delay: 0.3s; |
| } |
|
|
| #star-2 { |
| width: 6px; |
| top: 16px; |
| left: 3px; |
| } |
|
|
| #star-3 { |
| width: 12px; |
| top: 20px; |
| left: 10px; |
| animation-delay: 0.6s; |
| } |
|
|
| #star-4 { |
| width: 18px; |
| top: 0px; |
| left: 18px; |
| animation-delay: 1.3s; |
| } |
|
|
| @keyframes star-twinkle { |
| 0% { transform: scale(1); } |
| 40% { transform: scale(1.2); } |
| 80% { transform: scale(0.8); } |
| 100% { transform: scale(1); } |
| } |
|
|
| @keyframes rotate-center { |
| 0% { transform: translateX(26px) rotate(0deg); } |
| 100% { transform: translateX(26px) rotate(360deg); } |
| } |
|
|
| .input-row { |
| display: flex; |
| gap: 0.75rem; |
| flex-wrap: wrap; |
| } |
|
|
| .creative-flow-row { |
| display: flex; |
| align-items: center; |
| gap: 0.75rem; |
| flex-wrap: wrap; |
| margin-top: 1rem; |
| } |
|
|
| .creative-flow-label { |
| font-size: 0.9rem; |
| color: var(--text-soft); |
| white-space: nowrap; |
| } |
|
|
| .creative-flow-select { |
| padding: 0.6rem 0.85rem; |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| border-radius: 8px; |
| color: var(--text); |
| font-size: 0.9rem; |
| cursor: pointer; |
| min-width: 260px; |
| } |
|
|
| .creative-flow-select:hover:not(:disabled) { |
| border-color: var(--accent); |
| } |
|
|
| .creative-flow-select:disabled { |
| opacity: 0.7; |
| cursor: not-allowed; |
| } |
|
|
| .template-mode-panel { |
| margin-top: 1rem; |
| padding: 0; |
| border: 0; |
| border-radius: 0; |
| background: transparent; |
| } |
|
|
| .template-step-card { |
| background: var(--surface); |
| border: 1px solid var(--border); |
| border-radius: 12px; |
| padding: 0.9rem; |
| margin-top: 0.8rem; |
| } |
|
|
| .template-step-head { |
| display: flex; |
| gap: 0.65rem; |
| align-items: flex-start; |
| } |
|
|
| .template-step-head h3 { |
| margin: 0; |
| font-size: 0.95rem; |
| font-family: var(--font-sans); |
| font-weight: 600; |
| } |
|
|
| .template-step-head p { |
| margin: 0.2rem 0 0; |
| color: var(--text-soft); |
| font-size: 0.8rem; |
| font-family: var(--font-sans); |
| } |
|
|
| .template-step-badge { |
| width: 24px; |
| height: 24px; |
| border-radius: 999px; |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 0.78rem; |
| font-weight: 700; |
| color: #fff; |
| background: linear-gradient(135deg, var(--accent), var(--accent-hover)); |
| flex-shrink: 0; |
| } |
|
|
| .template-examples-grid { |
| margin-top: 0.75rem; |
| display: grid; |
| grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); |
| gap: 0.75rem; |
| } |
|
|
| .template-selection-actions { |
| grid-column: 1 / -1; |
| display: flex; |
| gap: 0.5rem; |
| } |
|
|
| .template-example-card { |
| border: 1px solid var(--border); |
| border-radius: 10px; |
| padding: 0.35rem; |
| background: var(--surface); |
| display: flex; |
| flex-direction: column; |
| gap: 0.35rem; |
| cursor: pointer; |
| transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease; |
| } |
|
|
| .template-example-card:hover:not(:disabled) { |
| transform: translateY(-2px); |
| border-color: var(--accent); |
| box-shadow: 0 10px 24px rgba(0, 0, 0, 0.14); |
| } |
|
|
| .template-example-card--active { |
| border-color: var(--accent); |
| box-shadow: 0 0 0 2px rgba(var(--accent-focus, 100, 116, 139), 0.3); |
| } |
|
|
| .template-example-card:disabled { |
| opacity: 0.7; |
| cursor: not-allowed; |
| } |
|
|
| .template-example-img { |
| width: 100%; |
| aspect-ratio: 1; |
| object-fit: cover; |
| border-radius: 8px; |
| } |
|
|
| .template-example-name { |
| font-size: 0.74rem; |
| color: var(--text-soft); |
| text-align: left; |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| padding: 0 0.15rem 0.2rem; |
| } |
|
|
| .template-upload-row { |
| justify-content: space-between; |
| } |
|
|
| .template-file-btn { |
| position: relative; |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| padding: 0.55rem 0.9rem; |
| border-radius: 8px; |
| border: 1px solid transparent; |
| background: var(--accent); |
| color: #fff; |
| font-weight: 600; |
| font-size: 0.84rem; |
| cursor: pointer; |
| } |
|
|
| .template-file-btn--secondary { |
| background: var(--surface); |
| color: var(--text); |
| border-color: var(--border); |
| } |
|
|
| .template-file-btn input { |
| position: absolute; |
| inset: 0; |
| opacity: 0; |
| cursor: pointer; |
| } |
|
|
| .template-controls-row { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); |
| gap: 0.75rem 1rem; |
| align-items: end; |
| } |
|
|
| .template-controls-row .creative-flow-row { |
| margin-top: 0.4rem; |
| } |
|
|
| .template-controls-row .creative-flow-select { |
| min-width: 130px; |
| } |
|
|
| .template-control-item { |
| display: flex; |
| align-items: center; |
| gap: 0.65rem; |
| } |
|
|
| .template-control-value { |
| font-size: 0.85rem; |
| color: var(--text); |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| border-radius: 999px; |
| padding: 0.25rem 0.55rem; |
| } |
|
|
| .template-preview-row { |
| margin-top: 0.5rem; |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); |
| gap: 0.75rem; |
| } |
|
|
| .template-generate-row { |
| margin-top: 0.9rem; |
| display: flex; |
| justify-content: flex-end; |
| } |
|
|
| .template-summary-row { |
| margin-top: 0.65rem; |
| display: flex; |
| gap: 0.5rem; |
| flex-wrap: wrap; |
| } |
|
|
| .template-summary-chip { |
| font-size: 0.78rem; |
| color: var(--text-soft); |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| border-radius: 999px; |
| padding: 0.28rem 0.6rem; |
| } |
|
|
| .template-results-card { |
| overflow: hidden; |
| } |
|
|
| .template-results-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(260px, 320px)); |
| gap: 1rem; |
| justify-content: start; |
| } |
|
|
| .template-result-item { |
| border: 1px solid var(--border); |
| border-radius: 12px; |
| overflow: hidden; |
| background: var(--surface); |
| } |
|
|
| .template-result-media { |
| background: var(--surface-soft); |
| min-height: 280px; |
| max-height: 420px; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| padding: 0.5rem; |
| } |
|
|
| .template-result-img { |
| max-width: 100%; |
| max-height: 400px; |
| width: auto; |
| height: auto; |
| display: block; |
| border-radius: 8px; |
| } |
|
|
| .template-result-meta { |
| padding: 0.55rem 0.75rem; |
| border-top: 1px solid var(--border-soft); |
| } |
|
|
| .template-result-id { |
| font-size: 0.82rem; |
| color: var(--text-soft); |
| font-weight: 600; |
| } |
|
|
| .template-preview-card { |
| background: var(--surface); |
| border: 1px solid var(--border); |
| border-radius: 10px; |
| padding: 0.5rem; |
| } |
|
|
| .template-preview-label { |
| display: inline-block; |
| margin-bottom: 0.35rem; |
| font-size: 0.76rem; |
| color: var(--text-soft); |
| } |
|
|
| .template-preview-img { |
| width: 100%; |
| aspect-ratio: 1; |
| object-fit: cover; |
| border-radius: 8px; |
| } |
|
|
| .target-audience-row { |
| display: flex; |
| align-items: center; |
| gap: 0.75rem; |
| flex-wrap: wrap; |
| margin-top: 1rem; |
| } |
|
|
| .target-audience-label { |
| font-size: 0.9rem; |
| color: var(--text-soft); |
| white-space: nowrap; |
| } |
|
|
| .target-audience-multiselect { |
| position: relative; |
| min-width: 220px; |
| max-width: 100%; |
| } |
|
|
| .target-audience-trigger { |
| width: 100%; |
| padding: 0.6rem 0.85rem; |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| border-radius: 8px; |
| color: var(--text); |
| font-size: 0.9rem; |
| text-align: left; |
| cursor: pointer; |
| transition: border-color 0.15s, box-shadow 0.15s; |
| } |
|
|
| .target-audience-trigger:hover:not(:disabled) { |
| border-color: var(--accent); |
| } |
|
|
| .target-audience-trigger:focus { |
| outline: none; |
| border-color: var(--accent); |
| box-shadow: 0 0 0 3px rgba(var(--accent-focus, 100, 116, 139), 0.2); |
| } |
|
|
| .target-audience-trigger:disabled { |
| opacity: 0.7; |
| cursor: not-allowed; |
| } |
|
|
| .target-audience-dropdown { |
| position: absolute; |
| top: 100%; |
| left: 0; |
| margin-top: 4px; |
| min-width: 320px; |
| max-width: 90vw; |
| max-height: 360px; |
| background: var(--surface); |
| border: 1px solid var(--border); |
| border-radius: 8px; |
| box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15); |
| z-index: 100; |
| display: flex; |
| flex-direction: column; |
| overflow: hidden; |
| } |
|
|
| .target-audience-actions { |
| display: flex; |
| gap: 0.5rem; |
| padding: 0.5rem 0.75rem; |
| border-bottom: 1px solid var(--border); |
| flex-shrink: 0; |
| } |
|
|
| .target-audience-action-btn { |
| padding: 0.35rem 0.6rem; |
| font-size: 0.8rem; |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| border-radius: 6px; |
| color: var(--text-soft); |
| cursor: pointer; |
| } |
|
|
| .target-audience-action-btn:hover { |
| color: var(--text); |
| border-color: var(--accent); |
| } |
|
|
| .target-audience-list { |
| overflow-y: auto; |
| padding: 0.5rem 0; |
| max-height: 300px; |
| } |
|
|
| .target-audience-option { |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| padding: 0.4rem 0.75rem; |
| font-size: 0.875rem; |
| color: var(--text); |
| cursor: pointer; |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
|
|
| .target-audience-option:hover { |
| background: var(--surface-soft); |
| } |
|
|
| .target-audience-option input { |
| flex-shrink: 0; |
| accent-color: var(--accent); |
| } |
|
|
| .url-input { |
| flex: 1; |
| min-width: 200px; |
| padding: 0.85rem 1rem; |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| border-radius: 8px; |
| color: var(--text); |
| font-size: 0.95rem; |
| } |
|
|
| .url-input::placeholder { |
| color: var(--muted); |
| } |
|
|
| .url-input:focus { |
| outline: none; |
| border-color: var(--accent); |
| box-shadow: 0 0 0 3px rgba(var(--accent-focus, 100, 116, 139), 0.2); |
| } |
|
|
| .btn-run { |
| padding: 0.85rem 1.75rem; |
| background: var(--accent); |
| color: #fff; |
| border: none; |
| border-radius: 8px; |
| font-weight: 500; |
| letter-spacing: 0.02em; |
| } |
|
|
| .btn-run:hover:not(:disabled) { |
| background: var(--accent-hover); |
| } |
|
|
| .btn-run:disabled { |
| opacity: 0.7; |
| cursor: not-allowed; |
| } |
|
|
| .error { |
| color: var(--error); |
| font-size: 0.9rem; |
| margin: 0.75rem 0 0; |
| } |
|
|
| .loading { |
| text-align: center; |
| padding: 1.25rem 1rem; |
| color: var(--muted); |
| } |
|
|
| .loading-step { |
| font-weight: 500; |
| color: var(--text); |
| font-size: 0.95rem; |
| margin: 0.35rem 0 0.15rem; |
| } |
|
|
| .loading-hint { |
| font-size: 0.8rem; |
| margin-top: 0.25rem; |
| color: var(--text-soft); |
| } |
|
|
| .spinner { |
| width: 28px; |
| height: 28px; |
| margin: 0 auto 0.5rem; |
| border: 2px solid var(--border); |
| border-top-color: var(--accent); |
| border-radius: 50%; |
| animation: spin 0.8s linear infinite; |
| } |
|
|
| @keyframes spin { |
| to { transform: rotate(360deg); } |
| } |
|
|
| .results { |
| display: flex; |
| flex-direction: column; |
| gap: 2rem; |
| } |
|
|
| .card { |
| background: var(--surface); |
| border: 1px solid var(--border); |
| border-radius: 12px; |
| padding: 1.5rem; |
| box-shadow: var(--shadow-soft); |
| } |
|
|
| .card h2 { |
| font-size: 1.5rem; |
| margin: 0 0 1rem; |
| padding-bottom: 0.6rem; |
| border-bottom: 1px solid var(--border-soft); |
| color: var(--text); |
| } |
|
|
| .product-grid { |
| display: grid; |
| grid-template-columns: 220px 1fr; |
| gap: 1.75rem; |
| align-items: start; |
| } |
|
|
| @media (max-width: 600px) { |
| .product-grid { |
| grid-template-columns: 1fr; |
| } |
| } |
|
|
| .product-gallery { |
| display: flex; |
| flex-direction: column; |
| gap: 0.5rem; |
| } |
|
|
| .product-gallery--multi { |
| flex-direction: row; |
| flex-wrap: wrap; |
| gap: 0.5rem; |
| } |
|
|
| .product-gallery--multi .product-img-wrap { |
| width: 70px; |
| height: 70px; |
| flex-shrink: 0; |
| } |
|
|
| .product-gallery--multi .product-img-wrap .product-img { |
| width: 100%; |
| height: 100%; |
| aspect-ratio: 1; |
| object-fit: cover; |
| cursor: pointer; |
| } |
|
|
| .product-gallery--many .product-img-wrap { |
| width: 56px; |
| height: 56px; |
| } |
|
|
| .product-gallery--many .product-img-wrap .product-img { |
| width: 100%; |
| height: 100%; |
| } |
|
|
| .product-img-wrap { |
| display: inline-block; |
| position: relative; |
| padding: 0; |
| border: 2px solid transparent; |
| border-radius: 12px; |
| background: none; |
| cursor: pointer; |
| transition: border-color 0.15s ease, box-shadow 0.15s ease; |
| } |
|
|
| .product-gallery:not(.product-gallery--multi) .product-img-wrap { |
| width: 100%; |
| } |
|
|
| .product-img-wrap:hover { |
| border-color: var(--border); |
| } |
|
|
| .product-img-wrap--selected { |
| border-color: var(--accent); |
| box-shadow: 0 0 0 1px var(--accent); |
| } |
|
|
| .product-img-wrap .product-img { |
| display: block; |
| } |
|
|
| .product-img-badge { |
| position: absolute; |
| bottom: 4px; |
| left: 4px; |
| font-size: 0.65rem; |
| font-weight: 600; |
| text-transform: uppercase; |
| letter-spacing: 0.02em; |
| color: var(--surface); |
| background: var(--accent); |
| padding: 2px 6px; |
| border-radius: 6px; |
| } |
|
|
| .product-gallery-note { |
| font-size: 0.75rem; |
| color: var(--muted); |
| margin: 0; |
| } |
|
|
| .product-img { |
| width: 100%; |
| aspect-ratio: 1; |
| object-fit: cover; |
| border-radius: 12px; |
| border: 1px solid var(--border-soft); |
| } |
|
|
| .product-meta h3 { |
| font-size: 1.35rem; |
| margin: 0 0 0.4rem; |
| color: var(--text); |
| } |
|
|
| .product-price { |
| color: var(--accent); |
| font-weight: 600; |
| font-size: 1.1rem; |
| margin: 0 0 0.35rem; |
| } |
|
|
| .product-category { |
| color: var(--muted); |
| font-size: 0.9rem; |
| margin: 0 0 0.75rem; |
| } |
|
|
| .product-desc { |
| font-size: 0.95rem; |
| color: var(--text-soft); |
| line-height: 1.55; |
| } |
|
|
| .analysis-grid { |
| display: grid; |
| gap: 1.25rem; |
| } |
|
|
| .analysis-block { |
| padding: 1rem 0; |
| border-bottom: 1px solid var(--border-soft); |
| } |
|
|
| .analysis-block:last-child { |
| border-bottom: none; |
| } |
|
|
| .analysis-block h4 { |
| font-family: var(--font-sans); |
| font-size: 0.75rem; |
| font-weight: 600; |
| text-transform: uppercase; |
| letter-spacing: 0.1em; |
| color: var(--accent); |
| margin: 0 0 0.5rem; |
| } |
|
|
| .analysis-block p, |
| .analysis-block ul { |
| margin: 0; |
| font-size: 0.95rem; |
| color: var(--text-soft); |
| } |
|
|
| .analysis-block ul { |
| padding-left: 1.25rem; |
| } |
|
|
| .analysis-block li { |
| margin-bottom: 0.4rem; |
| } |
|
|
| .pain-points, |
| .ad-angles { |
| margin-top: 0.5rem; |
| } |
|
|
| .ad-angles li { |
| margin-bottom: 0.6rem; |
| } |
|
|
| |
| .analysis-card--collapsed .analysis-preview { |
| margin-top: 0.5rem; |
| } |
| .analysis-preview-text { |
| margin: 0 0 0.5rem; |
| font-size: 0.95rem; |
| color: var(--text-soft); |
| line-height: 1.5; |
| } |
| .analysis-preview-meta { |
| margin: 0 0 0.75rem; |
| font-size: 0.8rem; |
| color: var(--text-muted, rgba(255, 255, 255, 0.5)); |
| } |
| .analysis-expand-btn, |
| .analysis-collapse-btn { |
| appearance: none; |
| background: none; |
| border: 1px solid var(--accent); |
| color: var(--accent); |
| font-size: 0.85rem; |
| padding: 0.4rem 0.75rem; |
| border-radius: 6px; |
| cursor: pointer; |
| font-family: inherit; |
| transition: background 0.2s, color 0.2s; |
| } |
| .analysis-expand-btn:hover, |
| .analysis-collapse-btn:hover { |
| background: var(--accent); |
| color: var(--bg); |
| } |
| .analysis-collapse-btn { |
| margin-top: 1rem; |
| display: block; |
| } |
|
|
| .creatives-flow-badge { |
| font-size: 0.85rem; |
| color: var(--accent); |
| margin: -0.25rem 0 0.5rem 0; |
| } |
|
|
| .creatives-hint { |
| font-size: 0.9rem; |
| color: var(--text-soft); |
| margin: 0 0 1rem; |
| } |
|
|
| .reference-image-section { |
| margin-top: 0.5rem; |
| margin-bottom: 1rem; |
| padding: 1rem; |
| background: var(--bg-warm); |
| border-radius: 8px; |
| border: 1px solid var(--border-soft); |
| } |
|
|
| .reference-image-section h4 { |
| font-size: 0.9rem; |
| font-weight: 600; |
| margin: 0 0 0.35rem; |
| color: var(--text); |
| } |
|
|
| .reference-hint { |
| font-size: 0.8rem; |
| color: var(--text-soft); |
| margin: 0 0 0.75rem; |
| } |
|
|
| .reference-image-row { |
| display: flex; |
| align-items: flex-start; |
| gap: 1rem; |
| flex-wrap: wrap; |
| } |
|
|
| .reference-thumb { |
| width: 80px; |
| height: 80px; |
| object-fit: cover; |
| border-radius: 8px; |
| border: 1px solid var(--border); |
| } |
|
|
| .reference-thumb-placeholder { |
| background: var(--border-soft); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 0.75rem; |
| color: var(--text-soft); |
| } |
|
|
| .reference-controls { |
| display: flex; |
| flex-direction: column; |
| gap: 0.5rem; |
| flex: 1; |
| min-width: 200px; |
| } |
|
|
| .reference-url-input { |
| padding: 0.5rem 0.75rem; |
| border: 1px solid var(--border); |
| border-radius: 6px; |
| background: var(--surface); |
| color: var(--text); |
| font-size: 0.85rem; |
| } |
|
|
| .reference-upload-btn { |
| display: inline-flex; |
| align-items: center; |
| padding: 0.4rem 0.75rem; |
| font-size: 0.85rem; |
| color: var(--accent); |
| cursor: pointer; |
| } |
|
|
| .reference-upload-btn span { |
| text-decoration: underline; |
| } |
|
|
| .btn-reference-use-product { |
| padding: 0.4rem 0.75rem; |
| font-size: 0.85rem; |
| background: var(--surface); |
| border: 1px solid var(--border); |
| border-radius: 6px; |
| color: var(--text); |
| cursor: pointer; |
| align-self: flex-start; |
| } |
|
|
| .btn-reference-use-product:hover { |
| background: var(--bg-warm); |
| } |
|
|
| .reference-error { |
| margin-top: 0.5rem; |
| font-size: 0.85rem; |
| } |
|
|
| .generate-ads-toolbar { |
| display: flex; |
| flex-wrap: wrap; |
| align-items: center; |
| gap: 1rem; |
| margin-bottom: 1rem; |
| padding: 1rem; |
| background: var(--bg-warm); |
| border-radius: 8px; |
| border: 1px solid var(--border-soft); |
| } |
|
|
| .toolbar-label { |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| font-size: 0.9rem; |
| font-weight: 500; |
| color: var(--text); |
| } |
|
|
| .toolbar-select { |
| padding: 0.5rem 0.75rem; |
| border: 1px solid var(--border); |
| border-radius: 6px; |
| background: var(--surface); |
| color: var(--text); |
| font-size: 0.9rem; |
| } |
|
|
| .btn-generate-ads { |
| padding: 0.6rem 1.25rem; |
| background: var(--accent); |
| color: #fff; |
| border: none; |
| border-radius: 8px; |
| font-weight: 500; |
| font-size: 0.9rem; |
| } |
|
|
| .btn-generate-ads:hover:not(:disabled) { |
| background: var(--accent-hover); |
| } |
|
|
| .btn-generate-ads:disabled { |
| opacity: 0.6; |
| cursor: not-allowed; |
| } |
|
|
| .creatives-select-actions { |
| display: flex; |
| gap: 0.5rem; |
| margin-bottom: 0.75rem; |
| } |
|
|
| .btn-select-all, |
| .btn-deselect-all { |
| padding: 0.35rem 0.65rem; |
| font-size: 0.85rem; |
| color: var(--accent); |
| background: transparent; |
| border: 1px solid var(--border); |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-select-all:hover:not(:disabled), |
| .btn-deselect-all:hover:not(:disabled) { |
| background: var(--accent-light); |
| border-color: var(--accent); |
| } |
|
|
| .btn-select-all:disabled, |
| .btn-deselect-all:disabled { |
| opacity: 0.5; |
| cursor: not-allowed; |
| } |
|
|
| .creatives-list { |
| display: flex; |
| flex-direction: column; |
| gap: 0.6rem; |
| } |
|
|
| .creative-item { |
| border: 1px solid var(--border); |
| border-radius: 10px; |
| overflow: hidden; |
| background: var(--surface); |
| } |
|
|
| .creative-item.product { |
| border-left: 4px solid var(--accent); |
| } |
|
|
| .creative-item.no-product { |
| border-left: 4px solid var(--muted); |
| } |
|
|
| .creative-checkbox { |
| width: 1.1rem; |
| height: 1.1rem; |
| flex-shrink: 0; |
| cursor: pointer; |
| accent-color: var(--accent); |
| } |
|
|
| .creative-header { |
| display: flex; |
| flex-wrap: wrap; |
| align-items: center; |
| gap: 0.75rem; |
| padding: 0.85rem 1rem; |
| cursor: pointer; |
| background: var(--surface-soft); |
| } |
|
|
| .creative-header:hover { |
| background: var(--accent-light); |
| } |
|
|
| .creative-id { |
| font-size: 0.8rem; |
| color: var(--muted); |
| } |
|
|
| .creative-concept { |
| font-weight: 500; |
| color: var(--text); |
| } |
|
|
| .creative-type, |
| .creative-category { |
| font-size: 0.78rem; |
| color: var(--muted); |
| padding: 0.25rem 0.5rem; |
| background: var(--bg-warm); |
| border-radius: 6px; |
| } |
|
|
| .creative-platform { |
| margin-left: auto; |
| font-size: 0.85rem; |
| color: var(--accent); |
| font-weight: 500; |
| } |
|
|
| .creative-detail { |
| padding: 1.25rem 1.25rem; |
| background: var(--surface); |
| border-top: 1px solid var(--border-soft); |
| } |
|
|
| .creative-detail h5 { |
| font-family: var(--font-sans); |
| font-size: 0.75rem; |
| font-weight: 600; |
| text-transform: uppercase; |
| letter-spacing: 0.08em; |
| color: var(--muted); |
| margin: 0 0 0.5rem; |
| } |
|
|
| .copy-block-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| gap: 0.75rem; |
| margin-bottom: 0.5rem; |
| } |
|
|
| .copy-block-header h5 { |
| margin: 0; |
| } |
|
|
| .btn-copy-copy { |
| padding: 0.35rem 0.6rem; |
| font-size: 0.8rem; |
| font-weight: 500; |
| color: var(--accent); |
| background: transparent; |
| border: 1px solid var(--accent); |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-copy-copy:hover { |
| background: var(--accent-light); |
| } |
|
|
| .copy-block .headline-serif { |
| font-family: var(--font-serif); |
| font-size: 1.15rem; |
| letter-spacing: 0.04em; |
| margin: 0 0 0.3rem; |
| color: var(--text); |
| } |
|
|
| .copy-block .headline-script { |
| font-family: var(--font-serif); |
| font-style: italic; |
| font-size: 1rem; |
| color: var(--accent); |
| margin: 0 0 0.5rem; |
| } |
|
|
| .copy-block .body-copy { |
| font-size: 0.95rem; |
| margin: 0 0 0.5rem; |
| color: var(--text-soft); |
| } |
|
|
| .price-copy { |
| font-weight: 600; |
| margin: 0 0 0.35rem; |
| color: var(--accent); |
| } |
|
|
| |
| .price-final { |
| text-decoration: none !important; |
| } |
|
|
| |
| .price-original { |
| margin-right: 0.35em; |
| } |
| .price-original-strikethrough { |
| text-decoration: line-through; |
| } |
| .price-original-slant { |
| position: relative; |
| display: inline-block; |
| } |
| .price-original-slant::after { |
| content: ''; |
| position: absolute; |
| left: -2px; |
| right: -2px; |
| top: 50%; |
| height: 1px; |
| background: currentColor; |
| transform: rotate(-10deg); |
| transform-origin: center; |
| opacity: 0.9; |
| } |
| .price-original-faded { |
| font-size: 0.85em; |
| opacity: 0.6; |
| font-weight: 500; |
| } |
| .price-original-small { |
| font-size: 0.88em; |
| text-decoration: line-through; |
| } |
| .price-original-double { |
| text-decoration: line-through; |
| text-decoration-style: double; |
| } |
|
|
| .cta-copy { |
| font-size: 0.9rem; |
| color: var(--accent); |
| font-weight: 500; |
| } |
|
|
| .cta-position-badge { |
| font-size: 0.8rem; |
| color: var(--muted); |
| font-weight: 400; |
| } |
|
|
| .prompt-block { |
| margin-top: 1rem; |
| } |
|
|
| .prompt-block p, |
| .prompt-block-hint { |
| font-size: 0.85rem; |
| color: var(--muted); |
| line-height: 1.5; |
| margin: 0 0 0.5rem; |
| } |
|
|
| .prompt-textarea { |
| width: 100%; |
| padding: 0.75rem; |
| border: 1px solid var(--border); |
| border-radius: 8px; |
| background: var(--surface); |
| color: var(--text); |
| font-family: var(--font-sans); |
| font-size: 0.9rem; |
| line-height: 1.5; |
| resize: vertical; |
| min-height: 6rem; |
| } |
|
|
| .prompt-textarea:focus { |
| outline: none; |
| border-color: var(--accent); |
| box-shadow: 0 0 0 2px rgba(var(--accent-focus, 100, 116, 139), 0.2); |
| } |
|
|
| .prompt-textarea::placeholder { |
| color: var(--muted); |
| } |
|
|
| .prompt-textarea-readonly { |
| resize: none; |
| cursor: default; |
| background: var(--bg-warm, var(--bg)); |
| } |
|
|
| .btn-open-edit-json { |
| margin-top: 1rem; |
| padding: 0.4rem 0.75rem; |
| font-size: 0.85rem; |
| font-weight: 500; |
| color: var(--accent); |
| background: transparent; |
| border: 1px solid var(--accent); |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-open-edit-json:hover { |
| background: var(--accent-light); |
| } |
|
|
| .edit-json-block { |
| margin-top: 1rem; |
| } |
|
|
| .edit-json-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| gap: 0.5rem; |
| margin-bottom: 0.5rem; |
| } |
|
|
| .edit-json-block .edit-json-header h5 { |
| margin: 0; |
| font-size: 0.9rem; |
| } |
|
|
| .btn-close-edit-json { |
| padding: 0.25rem 0.5rem; |
| font-size: 0.8rem; |
| color: var(--text-soft); |
| background: transparent; |
| border: 1px solid var(--border); |
| border-radius: 4px; |
| cursor: pointer; |
| } |
|
|
| .btn-close-edit-json:hover { |
| background: var(--bg-warm); |
| color: var(--text); |
| } |
|
|
| .edit-json-textarea { |
| width: 100%; |
| padding: 0.75rem; |
| border: 1px solid var(--border); |
| border-radius: 8px; |
| background: var(--surface-soft); |
| color: var(--text); |
| font-family: ui-monospace, monospace; |
| font-size: 0.8rem; |
| line-height: 1.45; |
| resize: vertical; |
| min-height: 200px; |
| } |
|
|
| .edit-json-actions { |
| display: flex; |
| align-items: center; |
| gap: 0.75rem; |
| margin-top: 0.5rem; |
| } |
|
|
| .btn-apply-json { |
| padding: 0.4rem 0.75rem; |
| font-size: 0.85rem; |
| font-weight: 500; |
| color: var(--accent); |
| background: transparent; |
| border: 1px solid var(--accent); |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-apply-json:hover { |
| background: var(--accent-light); |
| } |
|
|
| .edit-json-error { |
| font-size: 0.85rem; |
| color: var(--error); |
| } |
|
|
| .layout-notes { |
| margin-top: 0.75rem; |
| font-size: 0.88rem; |
| color: var(--muted); |
| } |
|
|
| .generated-ads-section { |
| margin-top: 2rem; |
| margin-bottom: 2rem; |
| padding-top: 1.5rem; |
| border-top: 1px solid var(--border-soft); |
| } |
|
|
| |
| .creatives-card > .generated-ads-section { |
| margin-top: 1rem; |
| margin-bottom: 2rem; |
| padding-top: 0; |
| border-top: none; |
| } |
|
|
| .generated-ads-section-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| gap: 1rem; |
| flex-wrap: wrap; |
| margin-bottom: 1rem; |
| } |
|
|
| .generated-ads-section-header h3 { |
| margin: 0; |
| } |
|
|
| .generated-ads-section h3 { |
| font-family: var(--font-serif); |
| font-size: 1.25rem; |
| color: var(--text); |
| } |
|
|
| .generated-ads-download-actions { |
| display: flex; |
| align-items: center; |
| gap: 0.75rem; |
| } |
|
|
| .btn-download-selected, |
| .btn-download-zip { |
| padding: 0.45rem 0.85rem; |
| font-size: 0.85rem; |
| font-weight: 500; |
| color: var(--accent); |
| background: transparent; |
| border: 1px solid var(--accent); |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-download-selected:hover:not(:disabled), |
| .btn-download-zip:hover:not(:disabled) { |
| background: var(--accent-light); |
| } |
|
|
| .btn-download-selected:disabled, |
| .btn-download-zip:disabled { |
| opacity: 0.6; |
| cursor: not-allowed; |
| } |
|
|
| .btn-download-selected:disabled { |
| border-color: var(--border); |
| color: var(--muted); |
| } |
|
|
| .btn-canva-connect { |
| padding: 0.45rem 0.85rem; |
| font-size: 0.85rem; |
| font-weight: 500; |
| color: #fff; |
| background: linear-gradient(135deg, #7c3aed 0%, #a855f7 100%); |
| border: none; |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-canva-connect:hover { |
| opacity: 0.95; |
| filter: brightness(1.05); |
| } |
|
|
| .fb-ad-canva-export { |
| padding: 0.5rem 1rem; |
| border-top: 1px solid var(--border); |
| } |
|
|
| .btn-export-canva { |
| padding: 0.35rem 0.65rem; |
| font-size: 0.8rem; |
| font-weight: 500; |
| color: #7c3aed; |
| background: transparent; |
| border: 1px solid rgba(124, 58, 237, 0.5); |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-export-canva:hover:not(:disabled) { |
| background: rgba(124, 58, 237, 0.1); |
| } |
|
|
| .btn-export-canva:disabled { |
| opacity: 0.6; |
| cursor: not-allowed; |
| } |
|
|
| .generated-ads-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); |
| gap: 1.5rem; |
| } |
|
|
| .generated-ad-card { |
| background: var(--surface); |
| border: 1px solid var(--border); |
| border-radius: 12px; |
| overflow: hidden; |
| box-shadow: var(--shadow-soft); |
| } |
|
|
| |
| .generated-ad-card.fb-ad-style { |
| background: var(--surface); |
| } |
|
|
| .fb-ad-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| padding: 1rem; |
| border-bottom: 1px solid var(--border-soft); |
| } |
|
|
| .fb-ad-brand { |
| display: flex; |
| align-items: center; |
| gap: 0.75rem; |
| } |
|
|
| .fb-ad-brand-logo { |
| width: 40px; |
| height: 40px; |
| border-radius: 50%; |
| background: var(--accent); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| color: white; |
| font-weight: 600; |
| font-size: 1.1rem; |
| flex-shrink: 0; |
| } |
|
|
| .fb-ad-brand-info { |
| display: flex; |
| flex-direction: column; |
| gap: 0.1rem; |
| } |
|
|
| .fb-ad-brand-name { |
| margin: 0; |
| font-size: 0.95rem; |
| font-weight: 600; |
| color: var(--text); |
| font-family: var(--font-sans); |
| } |
|
|
| .fb-ad-sponsored { |
| margin: 0; |
| font-size: 0.8rem; |
| color: var(--muted); |
| } |
|
|
| .fb-ad-select-checkbox { |
| display: flex; |
| align-items: center; |
| cursor: pointer; |
| } |
|
|
| .fb-ad-select-checkbox input[type="checkbox"] { |
| width: 1.1rem; |
| height: 1.1rem; |
| accent-color: var(--accent); |
| cursor: pointer; |
| } |
|
|
| .fb-ad-copy { |
| padding: 1rem; |
| border-bottom: 1px solid var(--border-soft); |
| } |
|
|
| .fb-ad-text { |
| margin: 0; |
| font-size: 0.9rem; |
| line-height: 1.5; |
| color: var(--text); |
| } |
|
|
| .fb-ad-img-wrap { |
| position: relative; |
| width: 100%; |
| overflow: hidden; |
| background: var(--border-soft); |
| cursor: pointer; |
| } |
|
|
| .fb-ad-img { |
| width: 100%; |
| height: auto; |
| display: block; |
| vertical-align: middle; |
| transition: transform 0.2s ease; |
| } |
|
|
| .fb-ad-img-wrap:hover .fb-ad-img { |
| transform: scale(1.02); |
| } |
|
|
| .fb-ad-img-overlay { |
| position: absolute; |
| bottom: 0; |
| left: 0; |
| right: 0; |
| padding: 1rem; |
| background: linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 100%); |
| } |
|
|
| .fb-ad-overlay-text { |
| margin: 0; |
| color: white; |
| font-size: 0.9rem; |
| font-weight: 500; |
| } |
|
|
| .fb-ad-cta { |
| padding: 1rem; |
| border-bottom: 1px solid var(--border-soft); |
| display: flex; |
| justify-content: center; |
| } |
|
|
| .fb-ad-cta-btn { |
| width: 100%; |
| padding: 0.65rem 1.25rem; |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| border-radius: 6px; |
| color: var(--text); |
| font-weight: 500; |
| font-size: 0.9rem; |
| cursor: pointer; |
| transition: background 0.2s ease; |
| } |
|
|
| .fb-ad-cta-btn:hover { |
| background: var(--border-soft); |
| } |
|
|
| .fb-ad-metadata { |
| padding: 1rem; |
| display: flex; |
| flex-direction: column; |
| gap: 0.75rem; |
| } |
|
|
| .fb-ad-status { |
| display: flex; |
| align-items: center; |
| } |
|
|
| .fb-ad-status-badge { |
| display: inline-flex; |
| align-items: center; |
| gap: 0.35rem; |
| font-size: 0.85rem; |
| font-weight: 500; |
| padding: 0.35rem 0.65rem; |
| border-radius: 6px; |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| } |
|
|
| .fb-ad-status-badge.active { |
| color: var(--success); |
| background: rgba(90, 125, 92, 0.1); |
| border-color: rgba(90, 125, 92, 0.2); |
| } |
|
|
| .fb-ad-status-badge svg { |
| flex-shrink: 0; |
| } |
|
|
| .fb-ad-details { |
| display: flex; |
| flex-direction: column; |
| gap: 0.5rem; |
| padding: 0.5rem 0; |
| } |
|
|
| .fb-ad-detail-row { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| margin: 0; |
| font-size: 0.85rem; |
| } |
|
|
| .fb-ad-detail-label { |
| color: var(--muted); |
| font-size: 0.85rem; |
| } |
|
|
| .fb-ad-detail-value { |
| color: var(--text); |
| font-weight: 500; |
| } |
|
|
| .fb-ad-platforms { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| margin-top: 0.25rem; |
| } |
|
|
| .fb-ad-platform-icons { |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| } |
|
|
| .fb-ad-platform-icons svg { |
| flex-shrink: 0; |
| } |
|
|
| .fb-ad-platform-text { |
| font-size: 0.8rem; |
| color: var(--text-soft); |
| padding: 0.2rem 0.4rem; |
| background: var(--border-soft); |
| border-radius: 4px; |
| } |
|
|
| .fb-ad-versions { |
| display: flex; |
| align-items: center; |
| gap: 0.4rem; |
| margin: 0.25rem 0 0; |
| font-size: 0.8rem; |
| color: var(--text-soft); |
| } |
|
|
| .fb-ad-versions svg { |
| flex-shrink: 0; |
| color: var(--muted); |
| } |
|
|
| .fb-ad-details-btn { |
| width: 100%; |
| padding: 0.65rem; |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| border-radius: 6px; |
| color: var(--text); |
| font-size: 0.85rem; |
| font-weight: 500; |
| cursor: pointer; |
| transition: all 0.2s ease; |
| } |
|
|
| .fb-ad-details-btn:hover { |
| background: var(--accent-light); |
| border-color: var(--accent); |
| color: var(--accent); |
| } |
|
|
| .generated-ad-error { |
| padding: 1rem; |
| font-size: 0.9rem; |
| color: var(--error); |
| } |
|
|
| .generated-ad-error .btn-retry-single { |
| margin-top: 0.5rem; |
| padding: 0.35rem 0.75rem; |
| font-size: 0.85rem; |
| background: var(--accent, #2563eb); |
| color: #fff; |
| border: none; |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .generated-ad-error .btn-retry-single:hover:not(:disabled) { |
| opacity: 0.9; |
| } |
|
|
| .generated-ad-error .btn-retry-single:disabled { |
| opacity: 0.6; |
| cursor: not-allowed; |
| } |
|
|
| |
| .gallery-card { |
| margin-bottom: 2rem; |
| } |
|
|
| .gallery-card h2 { |
| margin: 0 0 0.35rem; |
| } |
|
|
| .gallery-desc { |
| color: var(--muted); |
| font-size: 0.95rem; |
| margin: 0 0 1.25rem; |
| } |
|
|
| .gallery-loading { |
| color: var(--text-soft); |
| margin: 1rem 0; |
| } |
|
|
| .gallery-empty { |
| text-align: center; |
| padding: 2rem; |
| color: var(--text-soft); |
| } |
|
|
| .gallery-empty p { |
| margin: 0 0 0.5rem; |
| } |
|
|
| .btn-gallery-to-studio { |
| display: inline-block; |
| margin: 1rem 0; |
| padding: 0.6rem 1rem; |
| background: var(--accent); |
| color: #fff; |
| border-radius: 8px; |
| text-decoration: none; |
| font-weight: 500; |
| } |
|
|
| .btn-gallery-to-studio:hover { |
| background: var(--accent-hover); |
| } |
|
|
| .gallery-empty-hint { |
| font-size: 0.9rem; |
| color: var(--muted); |
| } |
|
|
| .gallery-toolbar { |
| display: flex; |
| flex-wrap: wrap; |
| align-items: center; |
| gap: 0.75rem; |
| margin-bottom: 1.25rem; |
| } |
|
|
| .gallery-select-all { |
| display: flex; |
| align-items: center; |
| gap: 0.35rem; |
| font-size: 0.9rem; |
| cursor: pointer; |
| } |
|
|
| .btn-gallery-delete-selected { |
| padding: 0.4rem 0.75rem; |
| font-size: 0.9rem; |
| color: var(--error); |
| background: transparent; |
| border: 1px solid var(--error); |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-gallery-delete-selected:hover:not(:disabled) { |
| background: rgba(184, 84, 80, 0.1); |
| } |
|
|
| .btn-gallery-delete-selected:disabled { |
| opacity: 0.5; |
| cursor: not-allowed; |
| } |
|
|
| .gallery-pagination { |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| gap: 1rem; |
| margin-top: 1.5rem; |
| padding-top: 1rem; |
| border-top: 1px solid var(--border); |
| } |
|
|
| .gallery-pagination-info { |
| font-size: 0.9rem; |
| color: var(--text-soft); |
| } |
|
|
| .btn-gallery-page { |
| padding: 0.5rem 1rem; |
| font-size: 0.9rem; |
| border-radius: 8px; |
| border: 1px solid var(--border); |
| background: var(--surface-soft); |
| color: var(--text); |
| cursor: pointer; |
| } |
|
|
| .btn-gallery-page:hover:not(:disabled) { |
| background: var(--border-soft); |
| } |
|
|
| .btn-gallery-page:disabled { |
| opacity: 0.5; |
| cursor: not-allowed; |
| } |
|
|
| .gallery-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); |
| gap: 1.25rem; |
| } |
|
|
| .gallery-item { |
| background: var(--surface-soft); |
| border: 1px solid var(--border); |
| border-radius: 10px; |
| overflow: hidden; |
| } |
|
|
| .gallery-item-img-wrap { |
| position: relative; |
| background: var(--border-soft); |
| } |
|
|
| .gallery-item-img { |
| width: 100%; |
| height: auto; |
| display: block; |
| vertical-align: middle; |
| } |
|
|
| .gallery-item-placeholder { |
| width: 100%; |
| min-height: 140px; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| color: var(--muted); |
| font-size: 0.9rem; |
| } |
|
|
| .gallery-item-checkbox { |
| position: absolute; |
| top: 0.5rem; |
| left: 0.5rem; |
| display: flex; |
| align-items: center; |
| gap: 0.35rem; |
| font-size: 0.8rem; |
| color: #fff; |
| background: rgba(0, 0, 0, 0.5); |
| padding: 0.25rem 0.5rem; |
| border-radius: 4px; |
| cursor: pointer; |
| } |
|
|
| .gallery-item-footer { |
| padding: 0.75rem; |
| } |
|
|
| .gallery-item-concept { |
| font-size: 0.9rem; |
| font-weight: 500; |
| margin: 0 0 0.25rem; |
| } |
|
|
| .gallery-item-product { |
| font-size: 0.8rem; |
| color: var(--muted); |
| margin: 0 0 0.25rem; |
| } |
|
|
| .gallery-item-date { |
| font-size: 0.8rem; |
| color: var(--text-soft); |
| margin: 0 0 0.5rem; |
| } |
|
|
| .gallery-item-actions { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 0.5rem; |
| } |
|
|
| .btn-gallery-correct, |
| .btn-gallery-download-one, |
| .btn-gallery-delete-one { |
| padding: 0.35rem 0.6rem; |
| font-size: 0.8rem; |
| border-radius: 6px; |
| cursor: pointer; |
| } |
|
|
| .btn-gallery-correct { |
| background: var(--accent-light); |
| color: var(--accent); |
| border: 1px solid var(--accent-soft); |
| } |
|
|
| .btn-gallery-correct:hover { |
| background: var(--accent-soft); |
| color: #fff; |
| } |
|
|
| .btn-gallery-download-one { |
| background: var(--accent); |
| color: #fff; |
| border: none; |
| } |
|
|
| .btn-gallery-download-one:hover:not(:disabled) { |
| background: var(--accent-hover); |
| } |
|
|
| .btn-gallery-delete-one { |
| background: transparent; |
| color: var(--error); |
| border: 1px solid var(--error); |
| } |
|
|
| .btn-gallery-delete-one:hover:not(:disabled) { |
| background: rgba(184, 84, 80, 0.1); |
| } |
|
|
| .btn-gallery-download-one:disabled, |
| .btn-gallery-delete-one:disabled { |
| opacity: 0.6; |
| cursor: not-allowed; |
| } |
|
|
| |
| .modal-overlay { |
| position: fixed; |
| inset: 0; |
| background: rgba(0, 0, 0, 0.5); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| z-index: 9000; |
| padding: 1rem; |
| } |
|
|
| .modal-content { |
| background: var(--surface); |
| border-radius: 12px; |
| box-shadow: var(--shadow-card); |
| max-width: 520px; |
| width: 100%; |
| max-height: 90vh; |
| overflow: auto; |
| } |
|
|
| .modal-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| padding: 1rem 1.25rem; |
| border-bottom: 1px solid var(--border); |
| } |
|
|
| .modal-header h3 { |
| margin: 0; |
| font-family: var(--font-serif); |
| font-size: 1.25rem; |
| } |
|
|
| .modal-close { |
| background: none; |
| border: none; |
| font-size: 1.5rem; |
| line-height: 1; |
| cursor: pointer; |
| color: var(--muted); |
| padding: 0.25rem; |
| } |
|
|
| .modal-close:hover { |
| color: var(--text); |
| } |
|
|
| .modal-body, |
| .modal-content form { |
| padding: 1.25rem; |
| } |
|
|
| .modal-loading { |
| text-align: center; |
| padding: 2rem 1.5rem; |
| } |
|
|
| .modal-loader-spinner { |
| width: 40px; |
| height: 40px; |
| margin: 0 auto 1rem; |
| border: 3px solid var(--border); |
| border-top-color: var(--accent); |
| border-radius: 50%; |
| animation: spin 0.8s linear infinite; |
| } |
|
|
| .modal-loader-text { |
| margin: 0; |
| font-weight: 500; |
| color: var(--text); |
| } |
|
|
| .modal-loader-hint { |
| margin: 0.35rem 0 0; |
| font-size: 0.875rem; |
| color: var(--muted); |
| } |
|
|
| .modal-desc { |
| color: var(--text-soft); |
| margin: 0 0 1rem; |
| font-size: 0.95rem; |
| } |
|
|
| .modal-field { |
| display: block; |
| margin-bottom: 1rem; |
| } |
|
|
| .modal-field span { |
| display: block; |
| margin-bottom: 0.35rem; |
| font-size: 0.9rem; |
| color: var(--text-soft); |
| } |
|
|
| .modal-field textarea { |
| width: 100%; |
| padding: 0.5rem 0.75rem; |
| border: 1px solid var(--border); |
| border-radius: 8px; |
| font-family: inherit; |
| font-size: 0.95rem; |
| } |
|
|
| .modal-checkbox { |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| } |
|
|
| .modal-checkbox input { |
| margin: 0; |
| } |
|
|
| .modal-actions { |
| display: flex; |
| gap: 0.75rem; |
| margin-top: 1.25rem; |
| flex-wrap: wrap; |
| } |
|
|
| .modal-preview-wrap { |
| margin: 1rem 0; |
| } |
|
|
| .modal-preview-wrap img { |
| max-width: 100%; |
| border-radius: 8px; |
| border: 1px solid var(--border); |
| } |
|
|
| .modal-compare-title { |
| margin: 0 0 0.75rem; |
| font-weight: 600; |
| color: var(--text); |
| } |
|
|
| .modal-compare { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 1.25rem; |
| margin: 1rem 0; |
| align-items: start; |
| } |
|
|
| .modal-compare > div, |
| .modal-compare-item { |
| text-align: center; |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| } |
|
|
| .modal-compare span, |
| .modal-compare-label { |
| display: block; |
| font-size: 0.9rem; |
| font-weight: 600; |
| color: var(--text-soft); |
| margin-bottom: 0.5rem; |
| } |
|
|
| .modal-compare img { |
| width: 100%; |
| max-width: 240px; |
| aspect-ratio: 1; |
| object-fit: cover; |
| border-radius: 8px; |
| border: 1px solid var(--border); |
| } |
|
|
| .modal-muted { |
| font-size: 0.85rem; |
| color: var(--muted); |
| margin: 0.5rem 0 0; |
| } |
|
|
| .btn-primary { |
| background: var(--accent); |
| color: #fff; |
| border: none; |
| padding: 0.5rem 1rem; |
| border-radius: 8px; |
| cursor: pointer; |
| font-weight: 500; |
| } |
|
|
| .btn-primary:hover:not(:disabled) { |
| background: var(--accent-hover); |
| } |
|
|
| .btn-secondary { |
| background: transparent; |
| color: var(--text-soft); |
| border: 1px solid var(--border); |
| padding: 0.5rem 1rem; |
| border-radius: 8px; |
| cursor: pointer; |
| } |
|
|
| .btn-secondary:hover { |
| background: var(--surface-soft); |
| } |
|
|
| |
| .image-lightbox-overlay { |
| position: fixed; |
| inset: 0; |
| background: rgba(0, 0, 0, 0.9); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| z-index: 9999; |
| cursor: pointer; |
| padding: 1rem; |
| } |
|
|
| .image-lightbox-img { |
| max-width: 95vw; |
| max-height: 95vh; |
| object-fit: contain; |
| cursor: default; |
| pointer-events: none; |
| } |
|
|
| .img-expandable { |
| cursor: pointer; |
| } |
|
|
| .footer { |
| text-align: center; |
| padding: 2.5rem 0; |
| color: var(--muted); |
| font-size: 0.85rem; |
| border-top: 1px solid var(--border-soft); |
| } |
|
|
| .footer-canva-link, |
| .gallery-canva-link { |
| margin: 0.5rem 0 0; |
| font-size: 0.7rem; |
| opacity: 0.6; |
| } |
|
|
| .link-canva-reconnect { |
| background: none; |
| border: none; |
| padding: 0; |
| font: inherit; |
| font-size: inherit; |
| color: var(--muted); |
| cursor: pointer; |
| text-decoration: underline; |
| text-underline-offset: 2px; |
| } |
|
|
| .link-canva-reconnect:hover { |
| color: var(--text); |
| opacity: 0.9; |
| } |
|
|