diff --git a/.DS_Store b/.DS_Store index a75af8a..ea62dce 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/index.css b/index.css deleted file mode 100644 index 0c52521..0000000 --- a/index.css +++ /dev/null @@ -1,1393 +0,0 @@ -body { - font-family: 'Be Vietnam Pro', cursive; - transition: background-color 0.5s ease; - /* NEW: Add Polaroid theme variables */ - --polaroid-bg-color: #450A0A; - --polaroid-placeholder-color: #b45309; - --footer-bg-color: rgba(0, 0, 0, 0.8); -} - -.theme-sdvn { - background-color: #151523; - background-image: linear-gradient(to bottom, #5858e6, #151523); - /* OVERRIDE: Polaroid theme variables */ - --polaroid-bg-color: #1e1b4b; /* A deep indigo/purple */ - --polaroid-placeholder-color: #a5b4fc; /* A soft, light indigo */ - --footer-bg-color: rgba(30, 27, 75, 0.8); -} - -/* .theme-vietnam { - background-image: - url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3e%3cpath d='M50,5 L61.8,38.2 L98.2,38.2 L68.2,59.8 L79.6,92.7 L50,71.5 L20.4,92.7 L31.8,59.8 L1.8,38.2 L38.2,38.2 Z' fill='%23FFFF00' fill-opacity='0.15'/%3e%3c/svg%3e"), - radial-gradient(ellipse at bottom, #DA251D, #a21a14); - background-position: center, 0 0; - background-repeat: no-repeat, no-repeat; - background-size: 80vmin, cover; - background-attachment: fixed, fixed; - - --polaroid-bg-color: #450A0A; - --polaroid-placeholder-color: #b45309; - --footer-bg-color: rgba(69, 10, 10, 0.5); -} */ - -.theme-vietnam { - background-image: radial-gradient(ellipse at bottom, #c62921, #a21a14); - --polaroid-bg-color: #450A0A; /* bg-red-950 */ - --polaroid-placeholder-color: #b45309; /* text-yellow-700 */ - --footer-bg-color: rgba(69, 10, 10, 0.5); /* UPDATED: Increased transparency */ -} - -.theme-skyline { - background-color: #0052D4; /* Fallback color */ - background-image: linear-gradient(to left, #6FB1FC, #4364F7, #0052D4); - /* OVERRIDE: Polaroid theme variables */ - --polaroid-bg-color: #052e6c; /* A deep, rich blue */ - --polaroid-placeholder-color: #a7cffd; /* A soft, sky blue */ - --footer-bg-color: rgba(0, 82, 212, 0.5); /* UPDATED: Increased transparency */ -} - -/* NEW: Hidden Jaguar Theme */ -.theme-hidden-jaguar { - background-image: linear-gradient(to bottom, #0fd850 0%, #f9f047 100%); - --polaroid-bg-color: #14532d; - --polaroid-placeholder-color: #d9f99d; - --footer-bg-color: rgba(20, 83, 45, 0.6); -} - -/* NEW: Wide Matrix Theme */ -.theme-wide-matrix { - background-image: linear-gradient(to top, #fcc5e4 0%, #fda34b 15%, #ff7882 35%, #c8699e 52%, #7046aa 71%, #0c1db8 87%, #020f75 100%); - --polaroid-bg-color: #020f75; - --polaroid-placeholder-color: #fcc5e4; - --footer-bg-color: rgba(2, 15, 117, 0.6); -} - -/* === Additional Themes === */ -.theme-rainbow { - background-image: linear-gradient(to right, #0575E6, #00F260); - --polaroid-bg-color: #064e3b; - --polaroid-placeholder-color: #00F260; - --footer-bg-color: rgba(5, 150, 105, 0.6); -} - -.theme-soundcloud { - background-image: linear-gradient(to right, #f83600, #fe8c00); - --polaroid-bg-color: #7f1d1d; - --polaroid-placeholder-color: #fe8c00; - --footer-bg-color: rgba(127, 29, 29, 0.6); -} - -.theme-amin { - background-image: linear-gradient(to right, #4A00E0, #8E2DE2); - --polaroid-bg-color: #3b0764; - --polaroid-placeholder-color: #8E2DE2; - --footer-bg-color: rgba(59, 7, 100, 0.6); -} - - -.title-font { - font-family: 'Asimovian', sans-serif; -} - -/* .title-font { - font-family: 'Taviraj', serif; - font-weight: 300; - font-style: italic; -} */ -.sub-title-font { - font-family: 'Playwrite AU SA', cursive; -} -.base-font { - font-family: "Be Vietnam Pro", sans-serif; -} - -/* === NEW: Centralized Component Styles === */ - -/* --- Footer Theming --- */ -.footer-themed-bg { - background-color: var(--footer-bg-color); - transition: background-color 0.5s ease; -} - -/* --- NEW: Theme swatch styles --- */ -.theme-swatch { - width: 1rem; /* w-4 */ - height: 1rem; /* h-4 */ - border-radius: 9999px; /* rounded-full */ - border: 1px solid rgba(255, 255, 255, 0.3); - flex-shrink: 0; -} - -/* --- NEW: Custom Theme Dropdown styles --- */ -.theme-dropdown { - position: relative; -} - -.theme-dropdown-button { - display: inline-flex; - align-items: center; - gap: 0.5rem; /* gap-2 */ - background-color: rgba(0, 0, 0, 0.4); - border: 1px solid rgba(255, 255, 255, 0.2); - border-radius: 0.5rem; /* rounded-lg - Increased radius */ - padding: 0.375rem 0.75rem; /* py-1.5 px-3 - Increased padding */ - color: #E5E5E5; /* text-neutral-200 */ - transition: background-color 150ms; - min-width: 150px; - justify-content: space-between; -} - -.theme-dropdown-button:hover { - background-color: rgba(0, 0, 0, 0.6); -} - -.theme-dropdown-button:focus { - outline: 2px solid transparent; - outline-offset: 2px; - box-shadow: 0 0 0 2px #FBBF24; /* focus:ring-2 focus:ring-yellow-400 */ -} - -.theme-dropdown-panel { - position: absolute; - bottom: 100%; /* position above the button */ - margin-bottom: 0.5rem; /* mb-2, space between button and panel */ - left: 0; - right: 0; - background-color: rgba(23, 23, 23, 0.95); /* bg-neutral-900 @ 95% */ - backdrop-filter: blur(12px); - border: 1px solid rgba(255, 255, 255, 0.15); - border-radius: 0.75rem; /* rounded-xl - More rounded */ - z-index: 50; - list-style: none; - padding: 0.5rem; /* p-2 */ - max-height: 20rem; /* max-h-80 */ - overflow-y: auto; - box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5); /* Enhanced shadow */ -} - -/* Custom Scrollbar for Dropdown */ -.theme-dropdown-panel::-webkit-scrollbar { - width: 6px; -} -.theme-dropdown-panel::-webkit-scrollbar-track { - background: transparent; -} -.theme-dropdown-panel::-webkit-scrollbar-thumb { - background-color: #404040; /* neutral-700 */ - border-radius: 10px; -} - -.theme-dropdown-item { - display: flex; - align-items: center; - gap: 0.75rem; /* gap-3 */ - padding: 0.5rem 0.75rem; /* p-2 px-3 */ - cursor: pointer; - border-radius: 0.5rem; /* rounded-lg */ - color: #E5E5E5; /* text-neutral-200 */ - transition: background-color 150ms; - font-size: 0.875rem; -} - -.theme-dropdown-item:hover, .theme-dropdown-item[data-headlessui-state="active"] { - background-color: rgba(251, 191, 36, 0.2); /* bg-yellow-400/20 */ - color: #FBBF24; /* text-yellow-400 */ -} - - -/* --- Buttons --- */ -.btn { - font-family: "Be Vietnam Pro", sans-serif; - font-weight: 600; /* semibold */ - font-size: 1rem; /* text-base */ - text-align: center; - padding: 0.625rem 1.5rem; /* py-2.5 px-6 */ - border-radius: 0.5rem; /* rounded-lg */ - transition: transform 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease; - -webkit-tap-highlight-color: transparent; /* Remove tap highlight on mobile */ -} - -.btn:disabled { - opacity: 0.5; - cursor: not-allowed; - transform: none; -} - -.btn-primary { - color: #171717; /* neutral-900 */ - background-color: #FBBF24; /* bg-yellow-400 */ - border: 1px solid #FBBF24; - box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); /* shadow-sm */ -} -.btn-primary:hover:not(:disabled) { - transform: translateY(-2px); - background-color: #FCD34D; /* hover:bg-yellow-300 */ - border-color: #FCD34D; - box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); /* shadow-md */ -} -.btn-primary:disabled:hover { - background-color: #FBBF24; -} - -.btn-secondary { - color: #E5E5E5; /* text-neutral-200 */ - background-color: rgba(255, 255, 255, 0.1); - -webkit-backdrop-filter: blur(4px); /* backdrop-blur-sm */ - backdrop-filter: blur(4px); - border: 1px solid rgba(255, 255, 255, 0.2); - box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); -} -.btn-secondary:hover:not(:disabled) { - transform: translateY(-2px); - background-color: rgba(255, 255, 255, 0.2); - border-color: rgba(255, 255, 255, 0.3); - box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); -} - -.btn-back { - z-index: 20; - display: flex; - align-items: center; - gap: 0.5rem; - color: white; - background-color: rgba(255, 255, 255, 0.1); - -webkit-backdrop-filter: blur(4px); /* backdrop-blur-sm */ - backdrop-filter: blur(4px); - border: 1px solid rgba(255, 255, 255, 0.2); - padding: 0.5rem 1rem; /* py-2 px-4 */ - border-radius: 9999px; /* rounded-full */ - font-size: 0.875rem; /* text-sm */ - transition-property: background-color; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.btn-back:hover { - background-color: rgba(255, 255, 255, 0.2); -} - -.btn-search { - z-index: 20; - display: flex; - align-items: center; - justify-content: center; - color: white; - background-color: rgba(255, 255, 255, 0.1); - -webkit-backdrop-filter: blur(4px); - backdrop-filter: blur(4px); - border: 1px solid rgba(255, 255, 255, 0.2); - width: 2.25rem; /* h-9, w-9 */ - height: 2.25rem; - padding: 0; - border-radius: 9999px; /* rounded-full */ - transition: background-color 150ms; -} - -.btn-search:hover:not(:disabled) { - background-color: rgba(255, 255, 255, 0.2); -} - -.btn-search:disabled { - opacity: 0.5; - cursor: not-allowed; - transform: none; -} - -.btn-gallery { - z-index: 20; - display: flex; - align-items: center; - justify-content: center; - color: white; - background-color: rgba(255, 255, 255, 0.1); - -webkit-backdrop-filter: blur(4px); - backdrop-filter: blur(4px); - border: 1px solid rgba(255, 255, 255, 0.2); - width: 2.25rem; /* h-9, w-9 */ - height: 2.25rem; - padding: 0; - border-radius: 9999px; /* rounded-full */ - transition: background-color 150ms, opacity 150ms, transform 150ms; -} -.btn-gallery:hover:not(:disabled) { - background-color: rgba(255, 255, 255, 0.2); -} -.btn-gallery:disabled { - opacity: 0.5; - cursor: not-allowed; - transform: none; -} - -.btn-sm { - padding: 0.5rem 1.25rem; /* py-2 px-5 */ - font-size: 0.875rem; /* text-sm */ -} - -/* --- Home Screen App Card --- */ -.app-card { - background-color: rgba(0, 0, 0, 0.2); - -webkit-backdrop-filter: blur(4px); /* backdrop-blur-sm */ - backdrop-filter: blur(4px); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 2rem; - cursor: pointer; - transition: all 300ms; - flex-basis: 100%; - max-width: 420px; - /* NEW styles */ - position: relative; - overflow: hidden; - aspect-ratio: 16 / 9; -} - - -@media(min-width: 640px) { /* sm breakpoint */ - .app-card { - flex-basis: calc(50% - 0.75rem); /* for 2 columns with 1.5rem gap */ - max-width: none; /* Remove max-width for multi-column layouts */ - } -} - -@media(min-width: 1024px) { /* lg breakpoint */ - .app-card { - flex-basis: calc(25% - 1.125rem); /* for 4 columns with 1.5rem gap */ - } -} - -.app-card:hover { - background-color: rgba(0, 0, 0, 0.4); - border-color: rgba(251, 191, 36, 0.5); /* hover:border-yellow-400/50 */ - transform: translateY(-0.5rem); /* hover:-translate-y-2 */ -} - -/* --- Forms (Selects, Textareas) --- */ -.form-input { - width: 100%; - padding: 0.75rem; /* p-3 */ - background-color: rgba(0, 0, 0, 0.2); - border: 1px solid rgba(255, 255, 255, 0.15); /* Increased border visibility */ - border-radius: 0.5rem; /* rounded-lg */ - color: #E5E5E5; /* text-neutral-200 */ - transition: all 150ms; -} - -.form-input:focus { - outline: 2px solid transparent; - outline-offset: 2px; - box-shadow: 0 0 0 2px #FBBF24; /* focus:ring-2 focus:ring-yellow-400 */ - background-color: rgba(0, 0, 0, 0.4); -} - -.form-input::placeholder { - color: #A3A3A3; /* placeholder-neutral-400 */ -} - -/* --- UPDATED: Custom Select Styling to fix white/white issue and visuals --- */ -select.form-input { - appearance: none; /* Remove default arrow */ - -webkit-appearance: none; - -moz-appearance: none; - background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a3a3a3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right 0.75rem center; - background-size: 1rem; - padding-right: 2.5rem; /* Space for arrow */ - cursor: pointer; -} - -select.form-input option { - background-color: #171717; /* Dark background for options */ - color: #E5E5E5; /* Light text */ -} - -/* --- Polaroid Card --- */ -.polaroid-card { - background-color: #F5F5F5; /* bg-neutral-100 */ - padding: 1rem; /* !p-4 */ - padding-bottom: 4rem; /* !pb-16 */ - display: inline-flex; - flex-direction: column; - align-items: center; - justify-content: flex-start; - border-radius: 0.375rem; /* rounded-md */ - box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); /* shadow-lg */ - position: relative; -} - -.polaroid-image-container { - width: 100%; - background-color: var(--polaroid-bg-color); /* MODIFIED */ - box-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); /* shadow-inner */ - position: relative; - overflow: hidden; - transition: all 0.5s ease; - display: flex; - align-items: center; - justify-content: center; -} - -@media (min-width: 768px) { /* md */ - .polaroid-image-container { - height: 18rem; - width: auto; - } - .polaroid-image-container.has-image { - height: 27rem; /* 18rem * 1.5 */ - } -} - -/* Placeholder styles using CSS variables */ -.placeholder-icon-wrapper { - color: var(--polaroid-placeholder-color); - opacity: 0.4; - transition: opacity 0.3s ease, color 0.5s ease; -} - -.polaroid-image-container.group:hover .placeholder-icon-wrapper { - opacity: 0.6; -} - -.polaroid-caption { - font-family: 'Playwrite AU SA', cursive; - font-weight: 700; - font-size: 1.125rem; /* text-lg */ - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 0.25rem; /* pb-1 */ -} - -/* --- Modal --- */ -.modal-overlay { - position: fixed; - inset: 0; - background-color: rgba(0, 0, 0, 0.7); - z-index: 50; - display: flex; - align-items: center; - justify-content: center; - padding: 1rem; -} - -.modal-content { - background-color: rgba(38, 38, 38, 0.75); /* bg-neutral-800 @ 75% */ - -webkit-backdrop-filter: blur(12px); - backdrop-filter: blur(12px); - border: 1px solid rgba(255, 255, 255, 0.2); - border-radius: 0.5rem; /* rounded-lg */ - box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); /* shadow-2xl */ - padding: 1.5rem; /* p-6 */ - width: 100%; - max-width: 32rem; /* max-w-lg */ - margin-left: auto; - margin-right: auto; - display: flex; - flex-direction: column; - gap: 1rem; /* gap-4 */ -} - -.modal-textarea { - width: 100%; - height: 7rem; /* h-28 */ - padding: 0.75rem; /* p-3 */ - background-color: #171717; /* bg-neutral-900 */ - border: 1px solid #404040; /* border-neutral-700 */ - border-radius: 0.375rem; /* rounded-md */ - color: #E5E5E5; /* text-neutral-200 */ - transition: box-shadow 150ms; -} -.modal-textarea:focus { - outline: 2px solid transparent; - outline-offset: 2px; - box-shadow: 0 0 0 2px #FBBF24; /* focus:ring-2 focus:ring-yellow-400 */ -} -.modal-textarea::placeholder { - color: #737373; /* placeholder-neutral-500 */ -} - -/* --- NEW: Prompt Result Card --- */ -/* This is a polaroid-style card specifically for displaying text content like prompts. */ -.prompt-card { - background-color: #F5F5F5; /* bg-neutral-100 */ - padding: 1rem; /* p-4 */ - border-radius: 0.375rem; /* rounded-md */ - box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); /* shadow-lg */ - - /* Flexbox setup to enable scrolling content */ - display: flex; - flex-direction: column; - position: relative; /* For the copy button */ - overflow: hidden; /* Crucial to contain the flex children and enable inner scroll */ - - /* Ensure it doesn't shrink and takes available width */ - width: 100%; -} - -/* The scrollable content area within the prompt card */ -.prompt-card-content { - flex: 1 1 0%; /* flex-1 */ - min-height: 0; /* Crucial for allowing shrinkage in flexbox */ - overflow-y: auto; /* Enable vertical scrollbar when content overflows */ - padding-right: 0.5rem; /* Add some padding so text doesn't touch the scrollbar */ - max-height:350px; -} - -/* Custom scrollbar styling for a cleaner look */ -.prompt-card-content::-webkit-scrollbar { - width: 8px; -} - -.prompt-card-content::-webkit-scrollbar-track { - background: transparent; /* Make the track invisible */ -} - -.prompt-card-content::-webkit-scrollbar-thumb { - background-color: #a3a3a3; /* neutral-400 */ - border-radius: 10px; - /* Add padding around the thumb to make it appear thinner */ - border: 2px solid #F5F5F5; /* Use card background color for padding */ -} - -.prompt-card-content::-webkit-scrollbar-thumb:hover { - background-color: #737373; /* neutral-500 */ -} - - -/* --- NEW: Results View Actions --- */ -.results-actions { - display: flex; - flex-direction: column; - align-items: center; - gap: 1rem; - width: 100%; -} -.results-actions > * { /* Target buttons, etc. */ - width: 100%; -} - -@media(min-width: 640px) { /* sm breakpoint */ - .results-actions { - flex-direction: row; - flex-wrap: wrap; - justify-content: center; - width: auto; - padding: 0; - } - .results-actions > * { - width: auto; - max-width: none; - } -} -.results-actions > .btn { - padding: 0.375rem 1rem; /* py-1.5 px-4 */ - font-size: 0.875rem; /* text-sm */ - border-width: 1px; - box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); /* shadow-sm */ -} - -/* --- Pagination Controls --- */ -.pagination-nav { - display: flex; - align-items: center; - gap: 1rem; /* gap-4 */ - color: #D4D4D4; /* text-neutral-300 */ - font-family: "Be Vietnam Pro", sans-serif; - font-weight: 600; -} - -/* MODIFIED: Target only text buttons to avoid style conflicts with icon buttons */ -.pagination-nav button:not(.btn-search):not(.btn-gallery) { - color: white; - background-color: rgba(255, 255, 255, 0.1); - border: 1px solid rgba(255, 255, 255, 0.2); - padding: 0.5rem 1rem; /* py-2 px-4 */ - border-radius: 9999px; /* rounded-full */ - font-size: 0.875rem; /* text-sm */ - font-weight: 600; - transition: background-color 150ms; -} - -.pagination-nav button:not(.btn-search):not(.btn-gallery):hover:not(:disabled) { - background-color: rgba(255, 255, 255, 0.2); -} - -.pagination-nav button:not(.btn-search):not(.btn-gallery):disabled { - opacity: 0.5; - cursor: not-allowed; -} - -/* --- UPDATED: Searchable Dropdown --- */ -.searchable-dropdown-container { - position: relative; - width: 100%; -} - -.searchable-dropdown-list { - position: absolute; - top: calc(100% + 0.5rem); /* Push down slightly */ - left: 0; - right: 0; - z-index: 60; /* Higher than standard input */ - background-color: rgba(23, 23, 23, 0.95); /* bg-neutral-900 @ 95% */ - -webkit-backdrop-filter: blur(12px); - backdrop-filter: blur(12px); - border: 1px solid rgba(255, 255, 255, 0.15); - border-radius: 0.75rem; /* rounded-xl */ - max-height: 18rem; /* max-h-72 */ - overflow-y: auto; - list-style: none; - padding: 0.5rem; - box-shadow: 0 10px 30px -5px rgba(0, 0, 0, 0.6); /* Stronger shadow */ -} - -/* Custom scrollbar for dropdown list */ -.searchable-dropdown-list::-webkit-scrollbar { - width: 6px; -} -.searchable-dropdown-list::-webkit-scrollbar-track { - background: transparent; -} -.searchable-dropdown-list::-webkit-scrollbar-thumb { - background-color: #404040; /* neutral-700 */ - border-radius: 10px; -} -.searchable-dropdown-list::-webkit-scrollbar-thumb:hover { - background-color: #525252; /* neutral-600 */ -} - - -.searchable-dropdown-item { - padding: 0.5rem 0.75rem; /* py-2 px-3 */ - cursor: pointer; - color: #E5E5E5; /* text-neutral-200 */ - transition: background-color 150ms, color 150ms; - border-radius: 0.5rem; /* rounded-lg */ - font-size: 0.875rem; - margin-bottom: 0.125rem; -} - -.searchable-dropdown-item:hover, .searchable-dropdown-item.is-highlighted { - background-color: rgba(251, 191, 36, 0.2); /* bg-yellow-400/20 */ - color: #FBBF24; /* text-yellow-400 */ -} - -/* --- NEW: Searchable Dropdown Group Header --- */ -.searchable-dropdown-group-header { - padding: 0.75rem 0.75rem 0.25rem; - font-size: 0.75rem; /* text-xs */ - font-weight: 700; - color: #a3a3a3; /* neutral-400 */ - text-transform: uppercase; - /* background-color: #1f1f1f; REMOVED: Let transparency work */ - position: sticky; - top: 0; - z-index: 1; /* Keep it above items when scrolling */ - pointer-events: none; -} - -/* --- NEW: Slider --- */ -.slider-container { - position: relative; - padding: 0.75rem 0; /* py-3 */ -} - -.slider-track { - -webkit-appearance: none; - appearance: none; - width: 100%; - height: 0.5rem; /* h-2 */ - background-color: rgba(0, 0, 0, 0.4); - border-radius: 9999px; /* rounded-full */ - outline: none; - transition: opacity 0.2s; - cursor: pointer; -} - -.slider-track::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - width: 1rem; /* w-4 */ - height: 1rem; /* h-4 */ - background-color: #FBBF24; /* bg-yellow-400 */ - border-radius: 9999px; /* rounded-full */ - border: 2px solid #171717; /* border-neutral-900 */ - box-shadow: 0 0 0 1px #FBBF24; /* ring-1 ring-yellow-400 */ - cursor: pointer; - transition: transform 0.2s ease-in-out; -} -.slider-track::-webkit-slider-thumb:hover { - transform: scale(1.1); -} - -.slider-track::-moz-range-thumb { - width: 1rem; /* w-4 */ - height: 1rem; /* h-4 */ - background-color: #FBBF24; /* bg-yellow-400 */ - border-radius: 9999px; /* rounded-full */ - border: 2px solid #171717; /* border-neutral-900 */ - box-shadow: 0 0 0 1px #FBBF24; /* ring-1 ring-yellow-400 */ - cursor: pointer; - transition: transform 0.2s ease-in-out; -} -.slider-track::-moz-range-thumb:hover { - transform: scale(1.1); -} - - -.slider-labels { - display: flex; - justify-content: space-between; - margin-top: 0.75rem; /* mt-3 */ - padding: 0 0.5rem; /* px-2 to align with thumb edges */ -} - -.slider-label { - font-family: "Be Vietnam Pro", sans-serif; - font-size: 0.75rem; /* text-xs */ - color: #a3a3a3; /* text-neutral-400 */ - text-align: center; - flex: 1; - font-weight: 500; - transition: color 0.2s, font-weight 0.2s; -} - -.slider-label-active { - color: #FBBF24; /* text-yellow-400 */ - font-weight: 700; -} - -/* --- NEW: Gallery Modal (Pinterest Layout) --- */ -.gallery-grid { - flex-grow: 1; - overflow-y: auto; - column-count: 2; /* Default for mobile */ - column-gap: 0.75rem; /* gap-3 */ - padding: 0.25rem; -} -@media(min-width: 640px) { .gallery-grid { column-count: 3; } } -@media(min-width: 1024px) { .gallery-grid { column-count: 4; } } -@media(min-width: 1280px) { .gallery-grid { column-count: 5; } } - -.gallery-grid-item { - break-inside: avoid; - margin-bottom: 0.75rem; /* Vertical gap */ - border-radius: 0.25rem; /* rounded-sm */ - overflow: hidden; - cursor: pointer; - transition: transform 0.2s, box-shadow 0.2s; - position: relative; /* Needed for action buttons */ -} -.gallery-grid-item:hover { - transform: scale(1.02); - box-shadow: 0 0 10px rgba(251, 191, 36, 0.5); /* shadow-lg shadow-yellow-400/50 */ -} -.gallery-grid-item img, .gallery-grid-item video { - width: 100%; - height: auto; /* Allow natural aspect ratio */ - display: block; /* Remove any bottom space */ -} - -/* --- NEW: Gallery Thumbnail Actions --- */ -.thumbnail-actions { - position: absolute; - top: 0.5rem; /* top-2 */ - right: 0.5rem; /* right-2 */ - z-index: 10; - display: flex; - align-items: center; - gap: 0.5rem; /* gap-2 */ - opacity: 0; - transition-property: opacity, transform; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 200ms; - transform: translateY(0.25rem); /* Start slightly down */ -} - -.group:hover .thumbnail-actions { - opacity: 1; - transform: translateY(0); -} - -.thumbnail-action-btn { - padding: 0.5rem; /* p-2 */ - background-color: rgba(0, 0, 0, 0.6); - border-radius: 9999px; /* rounded-full */ - color: white; - transition: all 150ms; -} - -.thumbnail-action-btn:hover { - background-color: rgb(75 85 99); /* hover:bg-neutral-600 */ - transform: scale(1.1); -} - -.thumbnail-action-btn:focus { - outline: 2px solid transparent; - outline-offset: 2px; - box-shadow: 0 0 0 2px white; /* focus:ring-2 focus:ring-white */ -} - - -/* --- UPDATED: Gallery Lightbox --- */ -.gallery-lightbox { - position: fixed; - inset: 0; - z-index: 100; - display: flex; - align-items: center; - justify-content: center; -} -.gallery-lightbox-backdrop { - position: absolute; - inset: 0; - background-color: rgba(0,0,0,0.85); - -webkit-backdrop-filter: blur(8px); - backdrop-filter: blur(8px); - cursor: pointer; -} -.gallery-lightbox-img { - position: relative; - max-width: 90vw; - max-height: 85vh; - object-fit: contain; - border-radius: 0.5rem; /* rounded-lg */ - box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5); /* shadow-2xl */ -} -.lightbox-action-btn { - position: absolute; - top: 0.75rem; - right: 0.75rem; - z-index: 120; - background-color: rgba(0, 0, 0, 0.5); - border: 1px solid rgba(255, 255, 255, 0.2); - color: white; - width: 2.5rem; - height: 2.5rem; - border-radius: 9999px; - display: flex; - align-items: center; - justify-content: center; - transition: background-color 0.2s, transform 0.2s; - cursor: pointer; -} -.lightbox-action-btn:hover { - background-color: rgba(0, 0, 0, 0.7); - transform: scale(1.1); -} - -/* --- NEW: Image Editor Modal --- */ -.image-editor-modal-content { - max-height: 100vh; -} - -.image-editor-preview-container { - display: flex; - justify-content: center; - align-items: center; - background-color: rgba(0,0,0,0.3); - border-radius: 0.25rem; - flex-grow: 1; - min-height: 0; -} - -.image-editor-preview { - max-width: 100%; - max-height: 100%; - object-fit: contain; - display: block; -} - -/* --- NEW: Before-After Modal --- */ -.comparison-container { - position: relative; - width: 100%; - height: 100%; - overflow: hidden; - border-radius: 0.25rem; /* rounded-sm */ - user-select: none; -} -.comparison-image-wrapper { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -.comparison-image { - width: 100%; - height: 100%; - object-fit: contain; - pointer-events: none; -} -.comparison-slider-handle { - position: absolute; - top: 0; - bottom: 0; - width: 1px; - background-color: rgba(255, 255, 255, 0.9); - cursor: ew-resize; - pointer-events: none; - transform: translateX(-50%); - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 0 5px rgba(0,0,0,0.3); -} -.comparison-slider-handle::after { - content: ''; - width: 28px; - height: 28px; - background-color: rgba(255, 255, 255, 0.9); - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 9999px; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2.5'%3e%3cpath stroke-linecap='round' stroke-linejoin='round' d='M10 19l-7-7 7-7m4 14l7-7-7-7'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: center; - background-size: 65%; - box-shadow: 0 1px 3px rgba(0,0,0,0.2); -} -.comparison-range-input { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - -webkit-appearance: none; - appearance: none; - background: transparent; - cursor: ew-resize; - z-index: 10; -} -.comparison-range-input::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - width: 40px; - height: 100%; - background: transparent; -} -.comparison-range-input::-moz-range-thumb { - width: 40px; - height: 100%; - background: transparent; - border: 0; - border-radius: 0; -} - -/* --- NEW: Before-After Modal Sidebar Grid --- */ -.before-after-sidebar-grid { - flex-grow: 1; - overflow-y: auto; - column-count: 1; /* Default for mobile */ - column-gap: 0.75rem; /* gap-3 */ - padding: 0.25rem; -} -@media(min-width: 640px) { .before-after-sidebar-grid { column-count: 2; } } - -/* --- NEW: Layer Composer Infinite Canvas Background --- */ -.infinite-canvas-bg { - background-color: #22252a; /* A dark, slightly blue-gray */ - background-image: - linear-gradient(rgba(255, 255, 255, 0.07) 1px, transparent 1px), - linear-gradient(90deg, rgba(255, 255, 255, 0.07) 1px, transparent 1px); - background-size: 20px 20px; -} - -/* --- NEW: AI Process Logger --- */ -.ai-process-logger { - position: fixed; - bottom: 4.5rem; /* Above footer */ - right: 1.5rem; - width: 100%; - max-width: 24rem; /* max-w-md */ - background-color: rgba(30, 30, 30, 0.8); - -webkit-backdrop-filter: blur(8px); - backdrop-filter: blur(8px); - border: 1px solid rgba(255, 255, 255, 0.15); - border-radius: 0.75rem; /* rounded-xl */ - padding: 1rem; - z-index: 100; /* Above most other UI */ - box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2); - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -.ai-process-logger-header { - display: flex; - justify-content: space-between; - align-items: center; - padding-bottom: 0.5rem; - border-bottom: 1px solid rgba(255, 255, 255, 0.1); -} - -.ai-process-logger-title { - font-family: "Be Vietnam Pro", sans-serif; - font-weight: 700; - color: #FBBF24; /* text-yellow-400 */ -} - -.ai-process-logger-close { - padding: 0.25rem; - border-radius: 9999px; - color: #a3a3a3; /* neutral-400 */ - transition: background-color 0.2s; -} -.ai-process-logger-close:hover { - background-color: rgba(255, 255, 255, 0.1); - color: white; -} - -.ai-process-logger-content { - max-height: 15rem; /* max-h-60 */ - overflow-y: auto; - list-style-type: none; - padding: 0.5rem 0.25rem 0 0; - margin: 0; - display: flex; - flex-direction: column; - gap: 0.75rem; -} - -/* Custom scrollbar for logger */ -.ai-process-logger-content::-webkit-scrollbar { - width: 6px; -} -.ai-process-logger-content::-webkit-scrollbar-track { - background: transparent; -} -.ai-process-logger-content::-webkit-scrollbar-thumb { - background-color: #737373; /* neutral-500 */ - border-radius: 10px; -} - -.ai-process-logger-item { - font-size: 0.875rem; /* text-sm */ - line-height: 1.4; -} - -.log-item-info { - color: #d4d4d4; /* neutral-300 */ -} - -.log-item-spinner { - color: #d4d4d4; /* neutral-300 */ - display: flex; - align-items: center; - gap: 0.5rem; -} - -.log-item-prompt { - background-color: rgba(0, 0, 0, 0.3); - padding: 0.75rem; - border-radius: 0.375rem; /* rounded-md */ - border: 1px solid rgba(255, 255, 255, 0.1); - color: #e5e5e5; /* neutral-200 */ - position: relative; -} - -.log-item-prompt pre { - white-space: pre-wrap; - word-break: break-word; - font-family: monospace; -} - -.log-item-prompt .copy-btn { - position: absolute; - top: 0.5rem; - right: 0.5rem; - padding: 0.25rem; - background-color: rgba(255, 255, 255, 0.1); - border-radius: 9999px; - color: #a3a3a3; /* neutral-400 */ - transition: all 0.2s; -} -.log-item-prompt .copy-btn:hover { - background-color: rgba(255, 255, 255, 0.2); - color: white; -} - -.log-item-success { - color: #4ade80; /* green-400 */ - font-weight: 600; -} - -.log-item-error { - color: #f87171; /* red-400 */ - font-weight: 600; -} - -/* --- NEW: Toggle Switch --- */ -.switch { - position: relative; - display: inline-block; - width: 40px; /* smaller width */ - height: 22px; /* smaller height */ -} - -.switch input { - opacity: 0; - width: 0; - height: 0; -} - -.switch-slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #4b5563; /* gray-600 */ - transition: .4s; - border-radius: 22px; /* fully rounded */ -} - -.switch-slider:before { - position: absolute; - content: ""; - height: 16px; /* smaller knob */ - width: 16px; /* smaller knob */ - left: 3px; - bottom: 3px; - background-color: white; - transition: .4s; - border-radius: 50%; -} - -input:checked + .switch-slider { - background-color: #FBBF24; /* yellow-400 */ -} - -input:focus + .switch-slider { - box-shadow: 0 0 1px #FBBF24; -} - -input:checked + .switch-slider:before { - transform: translateX(18px); /* adjusted for new size */ -} - -/* --- NEW: Chatbot Markdown Styles --- */ -.chatbot-code-block { - position: relative; - background-color: #1a1a1a; - border-radius: 0.5rem; /* rounded-lg */ - border: 1px solid #333; - margin-top: 0.5rem; - margin-bottom: 0.5rem; - overflow: hidden; -} - -.chatbot-code-block .code-block-header { - display: flex; - justify-content: space-between; - align-items: center; - background-color: #2a2a2a; - padding: 0.25rem 0.75rem; - font-family: monospace; - font-size: 0.75rem; /* text-xs */ - color: #a3a3a3; /* neutral-400 */ -} - -.chatbot-code-block pre { - white-space: pre-wrap; - word-break: break-word; - font-family: monospace; - font-size: 0.875rem; /* text-sm */ - color: #e5e5e5; /* neutral-200 */ - padding: 0.75rem; -} - -.chatbot-code-block .copy-btn { - padding: 0.25rem; - border-radius: 9999px; /* rounded-full */ - color: #a3a3a3; /* neutral-400 */ - transition: all 0.2s; - cursor: pointer; -} - -.chatbot-code-block .copy-btn:hover { - background-color: rgba(255, 255, 255, 0.1); - color: white; -} - -/* Styles for comprehensive markdown */ -.chatbot-message > *:first-child { margin-top: 0; } -.chatbot-message > *:last-child { margin-bottom: 0; } -.chatbot-message p { margin-bottom: 0.5rem; } -.chatbot-message h1, -.chatbot-message h2, -.chatbot-message h3 { - font-weight: 700; - margin-top: 1rem; - margin-bottom: 0.5rem; - color: #FBBF24; /* yellow-400 */ -} -.chatbot-message h1 { font-size: 1.25em; } -.chatbot-message h2 { font-size: 1.1em; } -.chatbot-message h3 { font-size: 1.0em; } -.chatbot-message ul, -.chatbot-message ol { - margin-left: 0; - padding-left: 1.5rem; /* Indentation for lists */ - margin-bottom: 0.5rem; -} -.chatbot-message li { - margin-bottom: 0.25rem; -} -.chatbot-message blockquote { - border-left: 3px solid #737373; /* neutral-500 */ - padding-left: 1rem; - margin: 0.75rem 0; - color: #a3a3a3; /* neutral-400 */ - font-style: italic; -} -.chatbot-message a { - color: #FBBF24; /* yellow-400 */ - text-decoration: underline; - transition: color 0.2s; -} -.chatbot-message a:hover { - color: #FCD34D; /* yellow-300 */ -} -.chatbot-message hr { - border: 0; - border-top: 1px solid #404040; /* neutral-700 */ - margin: 1rem 0; -} - -/* NEW: Chatbot Send Button */ -.chatbot-send-btn { - position: absolute; - bottom: 0.75rem; /* 12px */ - right: 0.5rem; /* 8px */ - padding: 0.375rem; /* 6px */ - border-radius: 9999px; /* rounded-full */ - transition: all 150ms; - color: #a3a3a3; /* neutral-400 */ -} - -.chatbot-send-btn:not(:disabled) { - cursor: pointer; - color: #e5e5e5; /* neutral-200 */ -} - -.chatbot-send-btn:not(:disabled):hover { - background-color: rgba(251, 191, 36, 0.2); /* bg-yellow-400/20 */ - color: #FBBF24; /* text-yellow-400 */ -} - -.chatbot-send-btn:disabled { - opacity: 0.4; - cursor: not-allowed; -} - -/* --- NEW: Results View Horizontal Scrollbar --- */ -.results-scroll-container::-webkit-scrollbar { - height: 12px; - width: 8px; -} - -.results-scroll-container::-webkit-scrollbar-track { - background: rgba(0, 0, 0, 0.2); - border-radius: 10px; -} - -.results-scroll-container::-webkit-scrollbar-thumb { - background: rgba(251, 191, 36, 0.5); - border-radius: 10px; - border: 2px solid transparent; - background-clip: padding-box; -} - -.results-scroll-container::-webkit-scrollbar-thumb:hover { - background: rgba(251, 191, 36, 0.8); -} - -.results-scroll-container::-webkit-scrollbar:horizontal { - height: 12px; -} - -/* --- NEW: Storyboard Panel --- */ -.storyboard-panel { - display: flex; - flex-direction: column; - background-color: rgba(38, 38, 38, 0.7); /* neutral-800/70 */ - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 0.75rem; /* rounded-xl */ - overflow: hidden; - transition: box-shadow 0.2s; - min-height: 22.5rem; /* 360px */ -} -.storyboard-panel:hover { - box-shadow: 0 0 15px rgba(251, 191, 36, 0.2); -} -.storyboard-panel-image-container { - position: relative; - width: 100%; - background-color: #171717; /* neutral-900 */ - display: flex; - align-items: center; - justify-content: center; -} -.storyboard-panel-content { - padding: 0.75rem; /* p-3 */ - flex-grow: 1; - display: flex; - flex-direction: column; - min-height: 120px; /* Give it a minimum height */ -} -.storyboard-panel-description { - font-size: 0.75rem; /* text-xs */ - color: #d4d4d4; /* neutral-300 */ - overflow-y: auto; - padding-right: 0.25rem; - white-space: pre-wrap; - height: 120px; /* Fixed height */ -} -/* Custom scrollbar for description */ -.storyboard-panel-description::-webkit-scrollbar { width: 4px; } -.storyboard-panel-description::-webkit-scrollbar-track { background: transparent; } -.storyboard-panel-description::-webkit-scrollbar-thumb { background-color: #737373; border-radius: 4px; } - -.storyboard-panel-textarea { - width: 100%; - height: 90px; /* Fixed height */ - background-color: #171717; - border: 1px solid #404040; - border-radius: 0.375rem; - color: #e5e5e5; - font-size: 0.75rem; - padding: 0.5rem; - resize: none; -} -.storyboard-panel-textarea:focus { - outline: 2px solid transparent; - outline-offset: 2px; - box-shadow: 0 0 0 2px #FBBF24; -} - -.storyboard-panel-actions { - padding: 0 0.75rem 0.75rem; /* px-3 pb-3 */ -} - -/* --- NEW: Storyboard Scene Group --- */ -.storyboard-scene-group { - background-color: rgba(10, 10, 10, 0.2); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 1rem; /* rounded-2xl */ - padding: 0.5rem; /* p-2 */ - display: flex; - flex-direction: column; - gap: 1rem; /* gap-4 */ -} - -.storyboard-scene-group-title { - font-family: "Be Vietnam Pro", sans-serif; - font-weight: 700; /* bold */ - font-size: 1rem; /* text-lg */ - color: #FBBF24; /* text-yellow-400 */ - padding-bottom: 0.75rem; /* pb-3 */ - border-bottom: 1px solid rgba(255, 255, 255, 0.1); - margin-bottom: 0.5rem; /* mb-2 */ -} diff --git a/preview.jpeg b/preview.jpeg index e969f6d..53bb854 100644 Binary files a/preview.jpeg and b/preview.jpeg differ